mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Merged revision(s) 6894 from branches/ja2_source_official_2014:
Fixes (by Buggler) - IMPPrejudice page not showing when reviewing in finish mode - Added message when minor traits are unselectable due to all IMP available slots taken up by major traits - Display message when pressing hotkey 'G' to toggle artificial merc light - refactor hotkey weapon switching and make function available in OIV too - hold ALT key to swap item instead of opening description box for valid attachment on cursor git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6895 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
+4
-2
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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] =
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user