mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
- bugfix: CTDs after you have placed your mercs before the attacking occurs
- added notification when you try to create a new IMP and you already have the maxium number of mercs (18) in your team. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@619 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1782,10 +1782,10 @@ INT8 AimMemberHireMerc()
|
|||||||
|
|
||||||
//if we succesfully hired the merc
|
//if we succesfully hired the merc
|
||||||
bReturnCode = HireMerc( &HireMercStruct );
|
bReturnCode = HireMerc( &HireMercStruct );
|
||||||
if( bReturnCode == MERC_HIRE_OVER_20_MERCS_HIRED )
|
if( bReturnCode == MERC_HIRE_OVER_18_MERCS_HIRED )
|
||||||
{
|
{
|
||||||
//display a warning saying u cant hire more then 20 mercs
|
//display a warning saying u cant hire more than 18 mercs
|
||||||
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_20_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
else if( bReturnCode == MERC_HIRE_FAILED )
|
else if( bReturnCode == MERC_HIRE_FAILED )
|
||||||
@@ -4167,10 +4167,10 @@ BOOLEAN QuickHireMerc()
|
|||||||
SetFlagToForceHireMerc( TRUE );
|
SetFlagToForceHireMerc( TRUE );
|
||||||
bReturnCode = HireMerc( &HireMercStruct );
|
bReturnCode = HireMerc( &HireMercStruct );
|
||||||
SetFlagToForceHireMerc( FALSE );
|
SetFlagToForceHireMerc( FALSE );
|
||||||
if( bReturnCode == MERC_HIRE_OVER_20_MERCS_HIRED )
|
if( bReturnCode == MERC_HIRE_OVER_18_MERCS_HIRED )
|
||||||
{
|
{
|
||||||
//display a warning saying u cant hire more then 20 mercs
|
//display a warning saying u cant hire more than 18 mercs
|
||||||
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_20_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
else if( bReturnCode == MERC_HIRE_FAILED )
|
else if( bReturnCode == MERC_HIRE_FAILED )
|
||||||
|
|||||||
+29
-4
@@ -383,16 +383,27 @@ void HandleTextEvent( UINT32 uiKey )
|
|||||||
void ProcessPlayerInputActivationString( void )
|
void ProcessPlayerInputActivationString( void )
|
||||||
{
|
{
|
||||||
// prcess string to see if it matches activation string
|
// prcess string to see if it matches activation string
|
||||||
|
|
||||||
if( NumberOfMercsOnPlayerTeam() >= 18 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
char charPlayerActivationString[32];
|
char charPlayerActivationString[32];
|
||||||
wcstombs(charPlayerActivationString,pPlayerActivationString,32);
|
wcstombs(charPlayerActivationString,pPlayerActivationString,32);
|
||||||
|
|
||||||
|
BOOLEAN freeMercSlot = TRUE;
|
||||||
|
|
||||||
|
// WANNE: Check total number of hired mercs
|
||||||
|
if( NumberOfMercsOnPlayerTeam() >= 18 )
|
||||||
|
{
|
||||||
|
freeMercSlot = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
//Madd multiple imps if( ( ( wcscmp(pPlayerActivationString, L"XEP624") == 0 ) || ( wcscmp(pPlayerActivationString, L"xep624") == 0 ) )&&( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) &&( LaptopSaveInfo.gfNewGameLaptop < 2 ) )
|
//Madd multiple imps if( ( ( wcscmp(pPlayerActivationString, L"XEP624") == 0 ) || ( wcscmp(pPlayerActivationString, L"xep624") == 0 ) )&&( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) &&( LaptopSaveInfo.gfNewGameLaptop < 2 ) )
|
||||||
if( ( ( wcscmp(pPlayerActivationString, L"XEP624") == 0 ) || ( wcscmp(pPlayerActivationString, L"xep624") == 0 ) ) &&( LaptopSaveInfo.gfNewGameLaptop < 2 ) )
|
if( ( ( wcscmp(pPlayerActivationString, L"XEP624") == 0 ) || ( wcscmp(pPlayerActivationString, L"xep624") == 0 ) ) &&( LaptopSaveInfo.gfNewGameLaptop < 2 ) )
|
||||||
{
|
{
|
||||||
|
// WANNE: Check total number of hired mercs
|
||||||
|
if( freeMercSlot == FALSE )
|
||||||
|
{
|
||||||
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (GetFilledIMPSlots(-1) < gGameExternalOptions.iMaxIMPCharacters)
|
if (GetFilledIMPSlots(-1) < gGameExternalOptions.iMaxIMPCharacters)
|
||||||
{
|
{
|
||||||
// Kaiden: Need to reset skills, attributes and personalities with the new UB Method.
|
// Kaiden: Need to reset skills, attributes and personalities with the new UB Method.
|
||||||
@@ -408,6 +419,13 @@ void ProcessPlayerInputActivationString( void )
|
|||||||
//Madd multiple imps else if( ( wcscmp(pPlayerActivationString, L"90210") == 0 ) && ( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) )
|
//Madd multiple imps else if( ( wcscmp(pPlayerActivationString, L"90210") == 0 ) && ( LaptopSaveInfo.fIMPCompletedFlag == FALSE ) )
|
||||||
else if( wcscmp(pPlayerActivationString, L"90210") == 0 )
|
else if( wcscmp(pPlayerActivationString, L"90210") == 0 )
|
||||||
{
|
{
|
||||||
|
// WANNE: Check total number of hired mercs
|
||||||
|
if( freeMercSlot == FALSE )
|
||||||
|
{
|
||||||
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (GetFilledIMPSlots(-1) < gGameExternalOptions.iMaxIMPCharacters)
|
if (GetFilledIMPSlots(-1) < gGameExternalOptions.iMaxIMPCharacters)
|
||||||
{
|
{
|
||||||
if (LoadImpCharacter( IMP_MERC_FILENAME ) == TRUE)
|
if (LoadImpCharacter( IMP_MERC_FILENAME ) == TRUE)
|
||||||
@@ -424,6 +442,13 @@ void ProcessPlayerInputActivationString( void )
|
|||||||
// Madd: load characters by name
|
// Madd: load characters by name
|
||||||
else if ( ImpExists( charPlayerActivationString ) )
|
else if ( ImpExists( charPlayerActivationString ) )
|
||||||
{
|
{
|
||||||
|
// WANNE: Check total number of hired mercs
|
||||||
|
if( freeMercSlot == FALSE )
|
||||||
|
{
|
||||||
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (GetFilledIMPSlots(-1) < gGameExternalOptions.iMaxIMPCharacters)
|
if (GetFilledIMPSlots(-1) < gGameExternalOptions.iMaxIMPCharacters)
|
||||||
{
|
{
|
||||||
if (LoadImpCharacter( charPlayerActivationString ) == TRUE)
|
if (LoadImpCharacter( charPlayerActivationString ) == TRUE)
|
||||||
|
|||||||
@@ -650,7 +650,7 @@ BOOLEAN MercFilesHireMerc(UINT8 ubMercID)
|
|||||||
|
|
||||||
bReturnCode = HireMerc( &HireMercStruct );
|
bReturnCode = HireMerc( &HireMercStruct );
|
||||||
//already have 20 mercs on the team
|
//already have 20 mercs on the team
|
||||||
if( bReturnCode == MERC_HIRE_OVER_20_MERCS_HIRED )
|
if( bReturnCode == MERC_HIRE_OVER_18_MERCS_HIRED )
|
||||||
{
|
{
|
||||||
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, MercInfo[ MERC_FILES_HIRE_TO_MANY_PEOPLE_WARNING ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, MercInfo[ MERC_FILES_HIRE_TO_MANY_PEOPLE_WARNING ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRa
|
|||||||
SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] );
|
SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] );
|
||||||
|
|
||||||
// damn well better have that many around to promote!
|
// damn well better have that many around to promote!
|
||||||
Assert(pSectorInfo->ubNumberOfCivsAtLevel[ ubCurrentRank ] >= ubHowMany);
|
//Assert(pSectorInfo->ubNumberOfCivsAtLevel[ ubCurrentRank ] >= ubHowMany);
|
||||||
|
|
||||||
//KM : July 21, 1999 patch fix
|
//KM : July 21, 1999 patch fix
|
||||||
if( pSectorInfo->ubNumberOfCivsAtLevel[ ubCurrentRank ] < ubHowMany )
|
if( pSectorInfo->ubNumberOfCivsAtLevel[ ubCurrentRank ] < ubHowMany )
|
||||||
|
|||||||
@@ -1063,9 +1063,9 @@ UINT32 UIHandleNewMerc( UI_EVENT *pUIEvent )
|
|||||||
{
|
{
|
||||||
ScreenMsg( FONT_ORANGE, MSG_BETAVERSION, L"Merc hire failed: Either already hired or dislikes you." );
|
ScreenMsg( FONT_ORANGE, MSG_BETAVERSION, L"Merc hire failed: Either already hired or dislikes you." );
|
||||||
}
|
}
|
||||||
else if( bReturnCode == MERC_HIRE_OVER_20_MERCS_HIRED )
|
else if( bReturnCode == MERC_HIRE_OVER_18_MERCS_HIRED )
|
||||||
{
|
{
|
||||||
ScreenMsg( FONT_ORANGE, MSG_BETAVERSION, L"Can't hire more than 20 mercs." );
|
ScreenMsg( FONT_ORANGE, MSG_BETAVERSION, L"Can't hire more than 18 mercs." );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc)
|
|||||||
return( MERC_HIRE_FAILED );
|
return( MERC_HIRE_FAILED );
|
||||||
|
|
||||||
if( NumberOfMercsOnPlayerTeam() >= 18 )
|
if( NumberOfMercsOnPlayerTeam() >= 18 )
|
||||||
return( MERC_HIRE_OVER_20_MERCS_HIRED );
|
return( MERC_HIRE_OVER_18_MERCS_HIRED );
|
||||||
|
|
||||||
// ATE: if we are to use landing zone, update to latest value
|
// ATE: if we are to use landing zone, update to latest value
|
||||||
// they will be updated again just before arrival...
|
// they will be updated again just before arrival...
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
//
|
//
|
||||||
// Used with the HireMerc function
|
// Used with the HireMerc function
|
||||||
//
|
//
|
||||||
#define MERC_HIRE_OVER_20_MERCS_HIRED -1
|
#define MERC_HIRE_OVER_18_MERCS_HIRED -1
|
||||||
#define MERC_HIRE_FAILED 0
|
#define MERC_HIRE_FAILED 0
|
||||||
#define MERC_HIRE_OK 1
|
#define MERC_HIRE_OK 1
|
||||||
|
|
||||||
|
|||||||
@@ -2343,6 +2343,13 @@ void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNu
|
|||||||
UINT8 ubCurrSlot;
|
UINT8 ubCurrSlot;
|
||||||
UINT8 ubTotalSoldiers;
|
UINT8 ubTotalSoldiers;
|
||||||
UINT8 bDesiredDirection=0;
|
UINT8 bDesiredDirection=0;
|
||||||
|
|
||||||
|
ubTotalSoldiers = ubNumGreen + ubNumReg + ubNumElites;
|
||||||
|
|
||||||
|
// WANNE: If we have no militia soldiers -> exit!
|
||||||
|
if (ubTotalSoldiers == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
switch( ubStrategicInsertionCode )
|
switch( ubStrategicInsertionCode )
|
||||||
{
|
{
|
||||||
case INSERTION_CODE_NORTH: bDesiredDirection = SOUTHEAST; break;
|
case INSERTION_CODE_NORTH: bDesiredDirection = SOUTHEAST; break;
|
||||||
@@ -2355,8 +2362,6 @@ void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNu
|
|||||||
ScreenMsg( FONT_RED, MSG_INTERFACE, L"Militia reinforcements have arrived! (%d admins, %d troops, %d elite)", ubNumGreen, ubNumReg, ubNumElites );
|
ScreenMsg( FONT_RED, MSG_INTERFACE, L"Militia reinforcements have arrived! (%d admins, %d troops, %d elite)", ubNumGreen, ubNumReg, ubNumElites );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ubTotalSoldiers = ubNumGreen + ubNumReg + ubNumElites;
|
|
||||||
|
|
||||||
ChooseMapEdgepoints( &MapEdgepointInfo, ubStrategicInsertionCode, (UINT8)(ubNumGreen + ubNumReg + ubNumElites) );
|
ChooseMapEdgepoints( &MapEdgepointInfo, ubStrategicInsertionCode, (UINT8)(ubNumGreen + ubNumReg + ubNumElites) );
|
||||||
ubCurrSlot = 0;
|
ubCurrSlot = 0;
|
||||||
while( ubTotalSoldiers )
|
while( ubTotalSoldiers )
|
||||||
|
|||||||
+1
-1
@@ -987,7 +987,7 @@ enum
|
|||||||
AIM_MEMBER_LEAVE_MSG,
|
AIM_MEMBER_LEAVE_MSG,
|
||||||
AIM_MEMBER_DEAD,
|
AIM_MEMBER_DEAD,
|
||||||
|
|
||||||
AIM_MEMBER_ALREADY_HAVE_20_MERCS,
|
AIM_MEMBER_ALREADY_HAVE_18_MERCS,
|
||||||
|
|
||||||
AIM_MEMBER_PRERECORDED_MESSAGE,
|
AIM_MEMBER_PRERECORDED_MESSAGE,
|
||||||
AIM_MEMBER_MESSAGE_RECORDED,
|
AIM_MEMBER_MESSAGE_RECORDED,
|
||||||
|
|||||||
Reference in New Issue
Block a user