- 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:
Wanne
2006-11-05 21:21:51 +00:00
parent f072ee19ce
commit f839dcbe73
10 changed files with 49 additions and 19 deletions
BIN
View File
Binary file not shown.
+6 -6
View File
@@ -1782,10 +1782,10 @@ INT8 AimMemberHireMerc()
//if we succesfully hired the merc
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
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_20_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
//display a warning saying u cant hire more than 18 mercs
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
return(FALSE);
}
else if( bReturnCode == MERC_HIRE_FAILED )
@@ -4167,10 +4167,10 @@ BOOLEAN QuickHireMerc()
SetFlagToForceHireMerc( TRUE );
bReturnCode = HireMerc( &HireMercStruct );
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
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_20_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
//display a warning saying u cant hire more than 18 mercs
DoLapTopMessageBox( MSG_BOX_LAPTOP_DEFAULT, AimPopUpText[ AIM_MEMBER_ALREADY_HAVE_18_MERCS ], LAPTOP_SCREEN, MSG_BOX_FLAG_OK, NULL);
return(FALSE);
}
else if( bReturnCode == MERC_HIRE_FAILED )
+29 -4
View File
@@ -383,16 +383,27 @@ void HandleTextEvent( UINT32 uiKey )
void ProcessPlayerInputActivationString( void )
{
// prcess string to see if it matches activation string
if( NumberOfMercsOnPlayerTeam() >= 18 )
return;
char charPlayerActivationString[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 ) )
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)
{
// 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 ) )
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 (LoadImpCharacter( IMP_MERC_FILENAME ) == TRUE)
@@ -424,6 +442,13 @@ void ProcessPlayerInputActivationString( void )
// Madd: load characters by name
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 (LoadImpCharacter( charPlayerActivationString ) == TRUE)
+1 -1
View File
@@ -650,7 +650,7 @@ BOOLEAN MercFilesHireMerc(UINT8 ubMercID)
bReturnCode = HireMerc( &HireMercStruct );
//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);
return(FALSE);
+1 -1
View File
@@ -336,7 +336,7 @@ void StrategicPromoteMilitiaInSector(INT16 sMapX, INT16 sMapY, UINT8 ubCurrentRa
SECTORINFO *pSectorInfo = &( SectorInfo[ SECTOR( sMapX, sMapY ) ] );
// 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
if( pSectorInfo->ubNumberOfCivsAtLevel[ ubCurrentRank ] < ubHowMany )
+2 -2
View File
@@ -1063,9 +1063,9 @@ UINT32 UIHandleNewMerc( UI_EVENT *pUIEvent )
{
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
{
+1 -1
View File
@@ -92,7 +92,7 @@ INT8 HireMerc( MERC_HIRE_STRUCT *pHireMerc)
return( MERC_HIRE_FAILED );
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
// they will be updated again just before arrival...
+1 -1
View File
@@ -7,7 +7,7 @@
//
// 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_OK 1
+7 -2
View File
@@ -2343,6 +2343,13 @@ void AddSoldierInitListMilitiaOnEdge( UINT8 ubStrategicInsertionCode, UINT8 ubNu
UINT8 ubCurrSlot;
UINT8 ubTotalSoldiers;
UINT8 bDesiredDirection=0;
ubTotalSoldiers = ubNumGreen + ubNumReg + ubNumElites;
// WANNE: If we have no militia soldiers -> exit!
if (ubTotalSoldiers == 0)
return;
switch( ubStrategicInsertionCode )
{
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 );
#endif
ubTotalSoldiers = ubNumGreen + ubNumReg + ubNumElites;
ChooseMapEdgepoints( &MapEdgepointInfo, ubStrategicInsertionCode, (UINT8)(ubNumGreen + ubNumReg + ubNumElites) );
ubCurrSlot = 0;
while( ubTotalSoldiers )
+1 -1
View File
@@ -987,7 +987,7 @@ enum
AIM_MEMBER_LEAVE_MSG,
AIM_MEMBER_DEAD,
AIM_MEMBER_ALREADY_HAVE_20_MERCS,
AIM_MEMBER_ALREADY_HAVE_18_MERCS,
AIM_MEMBER_PRERECORDED_MESSAGE,
AIM_MEMBER_MESSAGE_RECORDED,