If the new JA2_Options.ini option GEARKITS_ALWAYS_AVAILABLE is TRUE (default: FALSE), a merc's gear kits are always available during the hiring process, even if they've been bought before.

For more info, see http://thepit.ja-galaxy-forum.com/index.php?t=msg&goto=358411&#msg_358411

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8704 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2019-10-31 23:43:43 +00:00
parent 130272bbe5
commit d0bfe95c78
4 changed files with 20 additions and 11 deletions
+3
View File
@@ -812,6 +812,9 @@ void LoadGameExternalOptions()
// Bob: externalized Slay's chance to leave
gGameExternalOptions.ubHourlyChanceSlayWillLeave = iniReader.ReadInteger("Recruitment Settings", "SLAY_HOURLY_CHANCE_TO_LEAVE", 15, 0, 100);
// Flugente: gear kits are always available, even if they've been bought before
gGameExternalOptions.fGearKitsAlwaysAvailable = iniReader.ReadBoolean("Recruitment Settings", "GEARKITS_ALWAYS_AVAILABLE", FALSE );
// anv: playable Speck
gGameExternalOptions.fEnableRecruitableSpeck = iniReader.ReadBoolean("Recruitment Settings", "RECRUITABLE_SPECK", TRUE);
// anv: John Kulba becomes recruitable as a merc after finishing escort quest
+3
View File
@@ -823,6 +823,9 @@ typedef struct
// Bob: % chance Slay will leave every hour if left alone in sector
UINT16 ubHourlyChanceSlayWillLeave;
// Flugente: gear kits are always available, even if they've been bought before
BOOLEAN fGearKitsAlwaysAvailable;
// anv: playable Speck
BOOLEAN fEnableRecruitableSpeck;
// anv: John Kulba becomes recruitable as a merc after finishing escort quest
+3 -3
View File
@@ -1553,7 +1553,7 @@ BOOLEAN DisplayMercsInventory(UINT8 ubMercID)
UINT8 ubColumnCount=0;
//if the mercs inventory has already been purchased, dont display the inventory
if( gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS )
if ( (gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) && !gGameExternalOptions.fGearKitsAlwaysAvailable )
return( TRUE );
if(gGameExternalOptions.gfUseNewStartingGearInterface)
@@ -5106,7 +5106,7 @@ void HandleAimMemberKeyBoardInput()
{
gbCurrentSoldier = gAimAvailability[AimMercArray[gbCurrentIndex]].ProfilId;
if (!(gMercProfiles[gbCurrentSoldier].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS))
if ( !(gMercProfiles[gbCurrentSoldier].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) || gGameExternalOptions.fGearKitsAlwaysAvailable )
{
for ( UINT8 i = INV_START_POS; i<NUM_INV_SLOTS; ++i )
{
@@ -5608,7 +5608,7 @@ void EnableWeaponKitSelectionButtons()
//tais: weaponbox gear selection buttons
if ( UsingNewInventorySystem() )
{
if ( !(gMercProfiles[gbCurrentSoldier].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS))
if ( !(gMercProfiles[gbCurrentSoldier].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) || gGameExternalOptions.fGearKitsAlwaysAvailable )
{
for(int i=0; i<NUM_MERCSTARTINGGEAR_KITS; ++i)
{
+11 -8
View File
@@ -442,7 +442,7 @@ void SelectMercsFaceRegionCallBack(MOUSE_REGION * pRegion, INT32 iReason )
//else try to hire the merc
else
{
if( gMercProfiles[ GetAvailableMercIDFromMERCArray( gubCurMercIndex ) ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS )
if ( (gMercProfiles[ GetAvailableMercIDFromMERCArray( gubCurMercIndex ) ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) && !gGameExternalOptions.fGearKitsAlwaysAvailable )
{
//bought gear before
fMercBuyEquipment = 0;
@@ -724,7 +724,7 @@ void BtnMercHireButtonCallback(GUI_BUTTON *btn,INT32 reason)
//else try to hire the merc
else
{
if( gMercProfiles[ GetAvailableMercIDFromMERCArray( gubCurMercIndex ) ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS )
if ( (gMercProfiles[ GetAvailableMercIDFromMERCArray( gubCurMercIndex ) ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) && !gGameExternalOptions.fGearKitsAlwaysAvailable )
{
//bought gear before
fMercBuyEquipment = 0;
@@ -1110,8 +1110,10 @@ void DisplayMercsStats( UINT8 ubMercID )
usPosY = usPosY + 145;
DrawTextToScreen( MercInfo[MERC_FILES_GEAR], MERC_STATS_SECOND_COL_X, usPosY, 0, MERC_STATS_FONT, MERC_STATIC_STATS_COLOR, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED);
if( (gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS ) && (!(gMercProfiles[ ubMercID ].ubMiscFlags2 & PROFILE_MISC_FLAG2_MERC_GEARKIT_UNPAID)))
if ( (gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS )
&& ( !(gMercProfiles[ ubMercID ].ubMiscFlags2 & PROFILE_MISC_FLAG2_MERC_GEARKIT_UNPAID) || gGameExternalOptions.fGearKitsAlwaysAvailable ) )
gMercProfiles[ ubMercID ].usOptionalGearCost = 0;
swprintf(NsString, L"+ ");
swprintf(sTemp, L"%d",gMercProfiles[ ubMercID ].usOptionalGearCost);
InsertCommasForDollarFigure( sTemp );
@@ -1408,7 +1410,7 @@ void HandleMercsFilesKeyBoardInput( )
else
{
//bought gear before
if( gMercProfiles[ GetAvailableMercIDFromMERCArray( gubCurMercIndex ) ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS )
if ( (gMercProfiles[ GetAvailableMercIDFromMERCArray( gubCurMercIndex ) ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) && !gGameExternalOptions.fGearKitsAlwaysAvailable )
{
fMercBuyEquipment = 0;
MercProcessHireAfterGear();
@@ -1446,7 +1448,7 @@ void HandleMercsFilesKeyBoardInput( )
{
UINT8 mercId = GetAvailableMercIDFromMERCArray( gubCurMercIndex );
if(!(gMercProfiles[mercId].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS))
if ( !(gMercProfiles[mercId].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) || gGameExternalOptions.fGearKitsAlwaysAvailable )
{
UINT8 kit = 0;
switch(InputEvent.usParam)
@@ -1610,7 +1612,7 @@ BOOLEAN DisplayMERCMercsInventory(UINT8 ubMercID)
UINT8 ubColumnCount=0;
//if the mercs inventory has already been purchased, dont display the inventory
if( gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS )
if ( (gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS && !gGameExternalOptions.fGearKitsAlwaysAvailable ) )
return( TRUE );
UINT16 wnameY = MERC_MEMBER_WEAPON_NAME_Y;
@@ -1728,7 +1730,8 @@ void EnableMercWeaponKitSelectionButtons()
BOOL buttonEnabled[NUM_MERCSTARTINGGEAR_KITS];
//tais: weaponbox gear selection buttons
if(UsingNewInventorySystem() == true) {
if(!(gMercProfiles[GetAvailableMercIDFromMERCArray( gubCurMercIndex )].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS)) {
if ( !(gMercProfiles[GetAvailableMercIDFromMERCArray( gubCurMercIndex )].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS) || gGameExternalOptions.fGearKitsAlwaysAvailable )
{
for(i=0; i<NUM_MERCSTARTINGGEAR_KITS; i++)
{
buttonEnabled[i] = FALSE;
@@ -1778,7 +1781,7 @@ void MercWeaponKitSelectionUpdate(UINT8 selectedInventory)
UINT8 ubMercID = GetAvailableMercIDFromMERCArray( gubCurMercIndex );
UINT32 uiLoop;
INT16 usItem;
if(!( gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS ))
if ( !( gMercProfiles[ ubMercID ].ubMiscFlags & PROFILE_MISC_FLAG_ALREADY_USED_ITEMS ) || gGameExternalOptions.fGearKitsAlwaysAvailable )
{
if(UsingNewInventorySystem() == true){
// Start by resetting all profile inventory values to 0