diff --git a/Laptop/IMP Disability Trait.cpp b/Laptop/IMP Disability Trait.cpp index 71b2771b..3d96b514 100644 --- a/Laptop/IMP Disability Trait.cpp +++ b/Laptop/IMP Disability Trait.cpp @@ -412,12 +412,13 @@ void BtnIMPDisabilityTraitFinishCallback(GUI_BUTTON *btn,INT32 reason) btn->uiFlags|=(BUTTON_CLICKED_ON); //if we are just reviewing the page - if( iCurrentProfileMode == IMP__FINISH ) - { - //go back tot he done screen - iCurrentImpPage = IMP_FINISH; - } - else + //if( iCurrentProfileMode == IMP__FINISH ) + //{ + //go back to the done screen + iCurrentImpPage = IMP_PREJUDICE; + fButtonPendingFlag = TRUE; + //} + /*else { iCurrentImpPage = IMP_PREJUDICE; @@ -431,7 +432,7 @@ void BtnIMPDisabilityTraitFinishCallback(GUI_BUTTON *btn,INT32 reason) else iCurrentProfileMode = IMP__FINISH; } - } + }*/ } } diff --git a/Laptop/IMP Minor Trait.cpp b/Laptop/IMP Minor Trait.cpp index 73d6b27d..8db89cc1 100644 --- a/Laptop/IMP Minor Trait.cpp +++ b/Laptop/IMP Minor Trait.cpp @@ -303,9 +303,14 @@ void BtnIMPMinorTraitAnswerCallback(GUI_BUTTON *btn,INT32 reason) { // btn->uiFlags|=(BUTTON_CLICKED_ON); - INT32 iMinorTrait = MSYS_GetBtnUserData( btn, 0 ); + if( NumAvailableMinorTraits() > 0 ) + { + INT32 iMinorTrait = MSYS_GetBtnUserData( btn, 0 ); - HandleIMPMinorTraitAnswers( iMinorTrait ); + HandleIMPMinorTraitAnswers( iMinorTrait ); + } + else + DoLapTopMessageBox( MSG_BOX_IMP_STYLE, pImpPopUpStrings[ 12 ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL); } } @@ -568,19 +573,7 @@ INT8 NumAvailableMinorTraits() bNumMinorTraits = gSkillTraitValues.ubMaxNumberOfTraitsForIMP - bNumMajorTraits; - bNumMinorTraits = max( 1, bNumMinorTraits ); - - //if ( bNumMajorTraits == 0 ) - // bNumMinorTraits = 3; - //else if ( bNumMajorTraits == 1 ) - // bNumMinorTraits = 2; - //else if ( bNumMajorTraits == 2 ) - // bNumMinorTraits = 1; - //else - //{ - // Assert( 0 ); - // bNumMinorTraits = 0; - //} + bNumMinorTraits = max( 0, bNumMinorTraits ); return(bNumMinorTraits); } diff --git a/Laptop/IMP Prejudice.cpp b/Laptop/IMP Prejudice.cpp index a3d78c72..36ecdb66 100644 --- a/Laptop/IMP Prejudice.cpp +++ b/Laptop/IMP Prejudice.cpp @@ -375,7 +375,7 @@ void BtnIMPPrejudiceFinishCallback(GUI_BUTTON *btn,INT32 reason) //go back tot he done screen iCurrentImpPage = IMP_FINISH; } - // Flugente: setting determines wether we see the background page + // Flugente: setting determines whether we see the background page else { // we finished this -> write down our choices @@ -409,7 +409,7 @@ void BtnIMPPrejudiceFinishCallback(GUI_BUTTON *btn,INT32 reason) BOOLEAN CameBackToPrejudicePageButNotFinished() { //if we are in a page that comes after this one - if( iCurrentProfileMode == IMP__ATTRIBUTES ) + if( iCurrentProfileMode == IMP__ATTRIBUTES || iCurrentProfileMode == IMP__PERSONALITY ) { return( TRUE ); } diff --git a/Tactical/Interface Panels.cpp b/Tactical/Interface Panels.cpp index 3c4b3906..58663f0b 100644 --- a/Tactical/Interface Panels.cpp +++ b/Tactical/Interface Panels.cpp @@ -3574,7 +3574,7 @@ BOOLEAN UIHandleItemPlacement( UINT8 ubHandPos, UINT16 usOldItemIndex, UINT16 us } //Jenilee -INT32 uiLastHandPos = -1; +INT32 iLastHandPos = -1; #define SLOT_NONE 0 #define SLOT_HANDS 1 @@ -3636,7 +3636,7 @@ UINT16 uiOIVSlotType[NUM_INV_SLOTS] = { 0, 0, 0, 0, 0, 0 //49-54 }; -UINT32 GetInvMovementCost(OBJECTTYPE* pObj, UINT32 old_pos, UINT32 new_pos) +UINT16 GetInvMovementCost(OBJECTTYPE* pObj, INT16 old_pos, INT16 new_pos) { if (!(gTacticalStatus.uiFlags & INCOMBAT) || //Not in combat (old_pos == -1 || new_pos == -1)|| //Either position is invalid @@ -3724,7 +3724,7 @@ UINT32 GetInvMovementCost(OBJECTTYPE* pObj, UINT32 old_pos, UINT32 new_pos) void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) { UINT32 uiHandPos; - // Copyies of values + // Copies of values UINT16 usOldItemIndex, usNewItemIndex; UINT16 usItemPrevInItemPointer; UINT16 usCostToMoveItem = 0; //Jenilee @@ -3826,7 +3826,7 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) usOldItemIndex = gpSMCurrentMerc->inv[ uiHandPos ].usItem; //Jenilee: remember our last selected slot - uiLastHandPos = uiHandPos; + iLastHandPos = uiHandPos; // move item into the mouse cursor @@ -3859,7 +3859,7 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) return; if (INV_AP_COST) //Jenilee: determine the cost of moving this item around in our inventory - usCostToMoveItem = GetInvMovementCost(gpItemPointer, uiLastHandPos, uiHandPos); + usCostToMoveItem = GetInvMovementCost(gpItemPointer, iLastHandPos, uiHandPos); // Flugente: backgrounds usCostToMoveItem = (usCostToMoveItem * (100 + gpSMCurrentMerc->GetBackgroundValue(BG_INVENTORY))) / 100; @@ -3867,14 +3867,14 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) if ( ( usCostToMoveItem == 0 ) || ( gpSMCurrentMerc->bActionPoints >= usCostToMoveItem ) ) { fOKToGo = TRUE; - //uiLastHandPos = uiHandPos;//dnl ch66 070913 this should be set after we move item + //iLastHandPos = uiHandPos;//dnl ch66 070913 this should be set after we move item } else //we dont have enough APs to move it to this slot, show a warning message { // silversurfer: What if our old slot is occupied now (could happen when we swap items)? // We will be stuck with an item at the hand cursor and nowhere to put it -> bad. :-( // So let's check if our old slot is empty and if it is not allow item placement anyway. - if ( gpSMCurrentMerc->inv[ uiLastHandPos ].usItem == NULL ) + if ( gpSMCurrentMerc->inv[ iLastHandPos ].usItem == NULL ) { ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[NOT_ENOUGH_APS_STR]); fOKToGo = FALSE; @@ -3958,8 +3958,13 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) return; } + // hold ALT key to swap valid attachment item instead + if ( _KeyDown(ALT) ) + { + // do nothing + } // we allow attaching on items in any slot - if ( ValidAttachment( usNewItemIndex, &(gpSMCurrentMerc->inv[uiHandPos]) ) ) + else if ( ValidAttachment( usNewItemIndex, &(gpSMCurrentMerc->inv[uiHandPos]) ) ) { // it's an attempt to attach; bring up the inventory panel if ( !InItemDescriptionBox( ) ) @@ -4029,7 +4034,7 @@ void SMInvClickCallback( MOUSE_REGION * pRegion, INT32 iReason ) // try to place the item in the cursor into this inventory slot if ( UIHandleItemPlacement( (UINT8) uiHandPos, usOldItemIndex, usNewItemIndex, fDeductPoints ) ) { - uiLastHandPos = uiHandPos;//dnl ch66 070913 + iLastHandPos = uiHandPos;//dnl ch66 070913 //Jenilee: pay the price //just make sure to handle that if we are putting it back in the SAME slot, the cost should be 0!!! gpSMCurrentMerc->bActionPoints -= usCostToMoveItem; diff --git a/Tactical/Interface Panels.h b/Tactical/Interface Panels.h index 1254b0f6..e1d3676e 100644 --- a/Tactical/Interface Panels.h +++ b/Tactical/Interface Panels.h @@ -168,4 +168,7 @@ extern UINT8 gubDescBoxLine; // Record how many lines there are for the current item in the Advanced tab. 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 \ No newline at end of file diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 0e4927cc..47ed0865 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -92,6 +92,7 @@ #include "Debug Control.h" #include "LOS.h" // added by SANDRO #include "CampaignStats.h" // added by Flugente +#include "Interface Panels.h" #endif #include "ub_config.h" @@ -16291,16 +16292,35 @@ void SOLDIERTYPE::TakeNewBombFromIventory(UINT16 item) // Flugente: switch hand item for gunsling weapon, or pistol, or knife void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) { - // NIV-only - if ( !UsingNewInventorySystem() ) - return; + UINT8 pocketsearch, retrieveslot, handobjstorageslot; + BOOLEAN handCanMove, searchitemCanMove; // The slot we move our hand object from and the new object to is obviously always HANDPOS + // first pocket to search in OIV & NIV + if ( UsingNewInventorySystem() ) + pocketsearch = GUNSLINGPOCKPOS; + else + pocketsearch = BIGPOCK1POS; + // The second slot is the one from where we retrieve the object we search - UINT8 retrieveslot = GUNSLINGPOCKPOS; + if ( UsingNewInventorySystem() ) + retrieveslot = GUNSLINGPOCKPOS; + else // search for gun in OIV + { + for(UINT8 i = pocketsearch; i < NUM_INV_SLOTS; ++i) + { + // we use the first gun we can find + if ( this->inv[i].exists() && Item[this->inv[i].usItem].usItemClass & IC_GUN && this->inv[i].ubNumberOfObjects == 1 ) + { + retrieveslot = i; + break; + } + } + } + // The third slot is where we put our hand item into - UINT8 handobjstorageslot = HANDPOS; + handobjstorageslot = HANDPOS; // if we swap knifes or sidearms, we search for any such item if we do not already have it in our hands. If we do, we instead search for a gun to switch if ( fKnife ) @@ -16308,7 +16328,7 @@ void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) // if we already have a knife in hand, search for a gun instead if ( this->inv[HANDPOS].exists() && Item[this->inv[HANDPOS].usItem].usItemClass & IC_BLADE ) { - for(UINT8 i = GUNSLINGPOCKPOS; i < NUM_INV_SLOTS; ++i) + for(UINT8 i = pocketsearch; i < NUM_INV_SLOTS; ++i) { // we use the first gun we can find if ( this->inv[i].exists() && Item[this->inv[i].usItem].usItemClass & IC_GUN && this->inv[i].ubNumberOfObjects == 1 ) @@ -16321,7 +16341,7 @@ void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) // search for a knife else { - for(UINT8 i = GUNSLINGPOCKPOS; i < NUM_INV_SLOTS; ++i) + for(UINT8 i = pocketsearch; i < NUM_INV_SLOTS; ++i) { // take first blade if ( this->inv[i].exists() && Item[this->inv[i].usItem].usItemClass & IC_BLADE && this->inv[i].ubNumberOfObjects == 1 ) @@ -16334,10 +16354,11 @@ void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) } else if ( fSideArm ) { - // if we already have a sidearm in hand, search for a gun tat isn't a sidearm instead - if ( this->inv[HANDPOS].exists() && Item[this->inv[HANDPOS].usItem].usItemClass & IC_GUN && Weapon[ Item[ this->inv[HANDPOS].usItem ].ubClassIndex ].ubWeaponClass == HANDGUNCLASS ) + // if we already have a sidearm in hand, search for a gun that isn't a sidearm instead + if ( this->inv[HANDPOS].exists() && Item[this->inv[HANDPOS].usItem].usItemClass & IC_GUN + && Weapon[ Item[ this->inv[HANDPOS].usItem ].ubClassIndex ].ubWeaponClass == HANDGUNCLASS ) { - for(UINT8 i = GUNSLINGPOCKPOS; i < NUM_INV_SLOTS; ++i) + for(UINT8 i = pocketsearch; i < NUM_INV_SLOTS; ++i) { // we use the first gun we can find if ( this->inv[i].exists() && Item[this->inv[i].usItem].usItemClass & IC_GUN && Weapon[ Item[ this->inv[i].usItem ].ubClassIndex ].ubWeaponClass != HANDGUNCLASS && this->inv[i].ubNumberOfObjects == 1 ) @@ -16350,9 +16371,9 @@ void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) // search for a sidearm else { - for(UINT8 i = GUNSLINGPOCKPOS; i < NUM_INV_SLOTS; ++i) + for(UINT8 i = pocketsearch; i < NUM_INV_SLOTS; ++i) { - // take first blade + // take first handgun if ( this->inv[i].exists() && Item[this->inv[i].usItem].usItemClass & IC_GUN && Weapon[ Item[ this->inv[i].usItem ].ubClassIndex ].ubWeaponClass == HANDGUNCLASS && this->inv[i].ubNumberOfObjects == 1 ) { retrieveslot = i; @@ -16363,9 +16384,9 @@ void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) } // search a slot to put our hand object into - for(UINT8 i = GUNSLINGPOCKPOS; i < NUM_INV_SLOTS; ++i) + for(UINT8 i = pocketsearch; i < NUM_INV_SLOTS; ++i) { - // take first slot that hadn item would fit + // take first slot that hand item would fit if ( CanItemFitInPosition(this, &this->inv[HANDPOS], i, FALSE) ) { if ( i == retrieveslot || !this->inv[i].exists() ) @@ -16376,77 +16397,34 @@ void SOLDIERTYPE::SwitchWeapons( BOOLEAN fKnife, BOOLEAN fSideArm ) } } - BOOLEAN handcanMove = (CanItemFitInPosition(this, &this->inv[HANDPOS], handobjstorageslot, FALSE) || (this->inv[HANDPOS].exists() == false && this->inv[SECONDHANDPOS].exists() == false)); - BOOLEAN searchitemCanMove = (CanItemFitInPosition(this, &this->inv[retrieveslot], HANDPOS, FALSE) || this->inv[retrieveslot].exists() == false); - - if(Item[this->inv[retrieveslot].usItem].twohanded && this->inv[SECONDHANDPOS].exists() == true) - handcanMove = FALSE; + // check both items can be moved + // check HANDPOS item that cannot be moved to inventory + if( handobjstorageslot == HANDPOS && this->inv[HANDPOS].exists() == true ) + handCanMove = FALSE; + else + handCanMove = (CanItemFitInPosition(this, &this->inv[HANDPOS], handobjstorageslot, FALSE) || (this->inv[HANDPOS].exists() == false && this->inv[SECONDHANDPOS].exists() == false)); - if( handcanMove == TRUE && searchitemCanMove == TRUE) + if( Item[this->inv[retrieveslot].usItem].twohanded && this->inv[SECONDHANDPOS].exists() == true ) + searchitemCanMove = FALSE; + else + searchitemCanMove = (CanItemFitInPosition(this, &this->inv[retrieveslot], HANDPOS, FALSE) || this->inv[retrieveslot].exists() == false); + + // execute swap + if( handCanMove == TRUE && searchitemCanMove == TRUE) { if (gGameOptions.fInventoryCostsAP) { - UINT8 APCost = 0; - UINT8 APTotalCost = 0; - if (gGameExternalOptions.uWeightDivisor != 0) - { - // we need to determine moving costs according to slots - INT16 fromretrieve = uiNIVSlotType[retrieveslot]; - INT16 tohand = uiNIVSlotType[HANDPOS]; - INT16 fromhand = uiNIVSlotType[HANDPOS]; - INT16 tostorage = uiNIVSlotType[handobjstorageslot]; + UINT16 APTotalCost = 0; + + if (this->inv[retrieveslot].exists()) + APTotalCost += GetInvMovementCost(&this->inv[retrieveslot], retrieveslot, HANDPOS); - //If these 2 arrays are initiated outside the function, APBPConstants will not have been initialized, and all values will be 0 - INT16 uiAPCostFromSlot[12] = - { - APBPConstants[AP_INV_FROM_NONE], - APBPConstants[AP_INV_FROM_HANDS], - APBPConstants[AP_INV_FROM_EQUIPMENT], - APBPConstants[AP_INV_FROM_VEST], - APBPConstants[AP_INV_FROM_RIG], - APBPConstants[AP_INV_FROM_CPACK], - APBPConstants[AP_INV_FROM_BPACK], - APBPConstants[AP_INV_FROM_SLING], - APBPConstants[AP_INV_FROM_KNIFE], - APBPConstants[AP_INV_FROM_FACE], - APBPConstants[AP_INV_FROM_BIG_POCKET], - APBPConstants[AP_INV_FROM_SMALL_POCKET] - }; - INT16 uiAPCostToSlot[12] = - { - APBPConstants[AP_INV_TO_NONE], - APBPConstants[AP_INV_TO_HANDS], - APBPConstants[AP_INV_TO_EQUIPMENT], - APBPConstants[AP_INV_TO_VEST], - APBPConstants[AP_INV_TO_RIG], - APBPConstants[AP_INV_TO_CPACK], - APBPConstants[AP_INV_TO_BPACK], - APBPConstants[AP_INV_TO_SLING], - APBPConstants[AP_INV_TO_KNIFE], - APBPConstants[AP_INV_TO_FACE], - APBPConstants[AP_INV_TO_BIG_POCKET], - APBPConstants[AP_INV_TO_SMALL_POCKET] - }; - - if (this->inv[retrieveslot].exists()) - { - APCost = ( uiAPCostFromSlot[ fromretrieve ] + uiAPCostToSlot [ tohand ] ); - INT16 weight = (int)((Item[this->inv[retrieveslot].usItem].ubWeight) / gGameExternalOptions.uWeightDivisor); - APCost += DynamicAdjustAPConstants(weight, weight); - APTotalCost += __min(APCost, APBPConstants[AP_INV_MAX_COST]); - } - if (this->inv[HANDPOS].exists()) - { - APCost = ( uiAPCostFromSlot [ fromhand ] + uiAPCostToSlot [ tostorage ] ); - INT16 weight = (int)((Item[this->inv[HANDPOS].usItem].ubWeight) / gGameExternalOptions.uWeightDivisor); - APCost += DynamicAdjustAPConstants(weight, weight); - APTotalCost += __min(APCost, APBPConstants[AP_INV_MAX_COST]); - } - } + if (this->inv[HANDPOS].exists()) + APTotalCost += GetInvMovementCost(&this->inv[HANDPOS], HANDPOS, handobjstorageslot); if (this->bActionPoints >= APTotalCost) { - // SANDRO - I dared to change this to use the apropriate function, as that function is actually important for IIS + // SANDRO - I dared to change this to use the appropriate function, as that function is actually important for IIS //pSoldier->bActionPoints -= APTotalCost; DeductPoints( this, APTotalCost, 0 ); @@ -20353,9 +20331,15 @@ void HandlePlayerTogglingLightEffects( BOOLEAN fToggleValue ) { //Toggle light status if ( gGameSettings.fOptions[ TOPTION_MERC_CASTS_LIGHT ] ) + { gGameSettings.fOptions[ TOPTION_MERC_CASTS_LIGHT ] = FALSE; + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_MERC_CASTS_LIGHT_OFF ] ); + } else + { gGameSettings.fOptions[ TOPTION_MERC_CASTS_LIGHT ] = TRUE; + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_MERC_CASTS_LIGHT_ON ] ); + } } //Update all the mercs in the sector diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index b156963f..64bf3644 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -3245,13 +3245,13 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) { gGameSettings.fOptions[ TOPTION_TRACKING_MODE ] = FALSE; - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_TACKING_MODE_OFF ] ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_TRACKING_MODE_OFF ] ); } else { gGameSettings.fOptions[ TOPTION_TRACKING_MODE ] = TRUE; - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_TACKING_MODE_ON ] ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_TRACKING_MODE_ON ] ); } } else @@ -3521,7 +3521,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) case 'K': // Flugente: reworked this //CHRISL: Swap gunsling - if ( gusSelectedSoldier != NOBODY && UsingNewInventorySystem() == true) + if ( gusSelectedSoldier != NOBODY ) { SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; diff --git a/Utils/Text.h b/Utils/Text.h index dbd48c91..394816f2 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -415,8 +415,8 @@ enum MSG_ENTERING_LEVEL, MSG_LEAVING_BASEMENT, MSG_DASH_S, // the old 's - MSG_TACKING_MODE_OFF, - MSG_TACKING_MODE_ON, + MSG_TRACKING_MODE_OFF, + MSG_TRACKING_MODE_ON, MSG_3DCURSOR_OFF, MSG_3DCURSOR_ON, MSG_SQUAD_ACTIVE, @@ -461,6 +461,8 @@ enum MSG_WINDOWED_MODE_RELEASE_MOUSE, // 105 MSG_FORMATIONS_ON, // 106 MSG_FORMATIONS_OFF, // 107 + MSG_MERC_CASTS_LIGHT_ON, + MSG_MERC_CASTS_LIGHT_OFF, TEXT_NUM_MSG, }; diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 780ea7b9..5269e194 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -3950,8 +3950,9 @@ STR16 pImpPopUpStrings[] = L"无法从磁盘上读入I.M.P.人物数据。", L"你已经达到I.M.P.人物上限。", L"你已经达到I.M.P.该性别人物上限。", - L"你无法支付此I.M.P.人物的费用。", + L"你无法支付此I.M.P.人物的费用。", // 10 L"新的I.M.P.人物加入了你的队伍。", + L"You have already selected the maximum number of traits.", // TODO.Translate }; @@ -5961,7 +5962,7 @@ STR16 pMessageStrings[] = L"榴弹发射器点射时使用准星光标(可以扫射)", L"榴弹发射器连发时使用弹道光标(不可以扫射", //"Grenade Bursts use Trajectory Cursor (Spread fire disabled)", L"开启敌兵装备提示", // Changed from Drop All On - SANDRO - L"关闭敌兵装备提示", // Changed from Drop All Off - 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 @@ -5970,7 +5971,7 @@ STR16 pMessageStrings[] = L"离开战斗", L"强制回合制模式启动,进入战斗", L"自动储存成功。", - L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved.//84 + L"..\\SavedGames\\MP_SavedGames", //The name of the directory where games are saved L"客户端", //"Client", L"旧携行系统不能与新附件系统同时使用.", @@ -5993,6 +5994,8 @@ STR16 pMessageStrings[] = L"鼠标已释放,鼠标移动范围不再受限于游戏窗口内部区域。", // 105 L"保持佣兵间距开启", L"保持佣兵间距关闭", + L"Artificial Merc Light ON", // TODO.Translate + L"Artificial Merc Light OFF", }; diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index acabbf4e..1133dbcf 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -3946,8 +3946,9 @@ STR16 pImpPopUpStrings[] = 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.", + 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 }; @@ -5966,7 +5967,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -6001,6 +6002,8 @@ STR16 pMessageStrings[] = 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", }; diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index bc14e34b..a1b389ed 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -3949,8 +3949,9 @@ STR16 pImpPopUpStrings[] = 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.", + 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.", }; @@ -5960,7 +5961,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -5969,7 +5970,7 @@ STR16 pMessageStrings[] = 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.//84 + 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 @@ -5992,6 +5993,8 @@ STR16 pMessageStrings[] = 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", }; diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index f2940ac1..81538a99 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -3950,8 +3950,9 @@ STR16 pImpPopUpStrings[] = 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.", + L"Vous n'avez pas les moyens.", // 10 L"Le nouvel IMP a rejoint votre escouade.", + L"You have already selected the maximum number of traits.", // TODO.Translate }; @@ -5965,7 +5966,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -5998,6 +5999,8 @@ STR16 pMessageStrings[] = 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"Artificial Merc Light ON", // TODO.Translate + L"Artificial Merc Light OFF", }; diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 6e4bdc96..ccb429cf 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -3902,8 +3902,9 @@ STR16 pImpPopUpStrings[] = 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.", + 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 }; // button labels used on the IMP site @@ -5799,7 +5800,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -5807,7 +5808,7 @@ STR16 pMessageStrings[] = L"Normaler Rundenmodus", L"Verlasse Kampfmodus", L"Erzwungener Rundenmodus ist aktiv, gehe in Kampfmodus", - L"Spiel erfolgreich in Position End Turn Auto Save gespeichert.", // 83 + L"Spiel erfolgreich in Position End Turn Auto Save gespeichert.", L"..\\Spielstände\\MP_Spielstände", //The name of the directory where games are saved. L"Client", @@ -5831,6 +5832,8 @@ STR16 pMessageStrings[] = 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", }; CHAR16 ItemPickupHelpPopup[][40] = diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index c62bf5e2..796064cc 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -3940,8 +3940,9 @@ STR16 pImpPopUpStrings[] = 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.", + 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 }; @@ -5951,7 +5952,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -5986,6 +5987,8 @@ STR16 pMessageStrings[] = 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", }; diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 27c1f807..fa66ca9a 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -3959,8 +3959,9 @@ STR16 pImpPopUpStrings[] = 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.", + 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 }; @@ -5973,7 +5974,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -6007,6 +6008,8 @@ STR16 pMessageStrings[] = 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", }; diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 2bc701bc..4443cd4f 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -3948,8 +3948,9 @@ STR16 pImpPopUpStrings[] = L"Не могу загрузить I.M.P.-персонаж с диска.", L"Вы достигли максимального количества I.M.P.-персонажей.", L"У вас в команде уже есть три I.M.P.-персонажа того же пола.", - L"Вы не можете позволить себе такой I.M.P.-персонаж.", + L"Вы не можете позволить себе такой I.M.P.-персонаж.", // 10 L"Новый I.M.P.-персонаж присоединился к команде.", + L"You have already selected the maximum number of traits.", // TODO.Translate }; @@ -5959,7 +5960,7 @@ STR16 pMessageStrings[] = L"Очереди из гранат используют курсор стрельбы очередями (стрельба по площадям возможна)", L"Очереди из гранат используют курсор метания (стрельба по площадям не возможна)", L"Включены подписи к солдатам", // Changed from Drop All On (Enabled Soldier Tooltips) - L"Отключены подписи к солдатам", // Changed from Drop All Off (Disabled Soldier Tooltips) + L"Отключены подписи к солдатам", // 80 // Changed from Drop All Off (Disabled Soldier Tooltips) L"Гранатометы стреляют под обычным углом", L"Гранатометы стреляют навесом", // forced turn mode strings @@ -5991,6 +5992,8 @@ STR16 pMessageStrings[] = 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", }; diff --git a/Utils/_TaiwaneseText.cpp b/Utils/_TaiwaneseText.cpp index f544d163..6af8a9a4 100644 --- a/Utils/_TaiwaneseText.cpp +++ b/Utils/_TaiwaneseText.cpp @@ -3953,8 +3953,9 @@ STR16 pImpPopUpStrings[] = 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.", + 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.", }; @@ -5968,7 +5969,7 @@ STR16 pMessageStrings[] = 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", // Changed from Drop All Off - 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 @@ -5979,11 +5980,8 @@ STR16 pMessageStrings[] = 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", - - // 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) @@ -6003,6 +6001,8 @@ STR16 pMessageStrings[] = 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", };