mirror of
https://github.com/1dot13/source.git
synced 2026-08-26 14:30:26 +02:00
- Prisoners of war are now spawned in prison sectors. They have fitting dialogue etc. Harming them slightly lowers global loyalty.
- Prisoner system: added ini options that allow display of surrender strength sum, and externalised surrender strength modifier - Fix: wrong assignment string in strategic view git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5895 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -3970,17 +3970,11 @@ void AddStringsToMoveBox( void )
|
||||
// add OTHER soldiers (not on duty nor in a vehicle)
|
||||
if( IsSoldierSelectedForMovement( pSoldierMovingList[ iCount ] ) == TRUE )
|
||||
{
|
||||
if ( gGameExternalOptions.fUseXMLSquadNames )
|
||||
swprintf( sString, L" *%s ( %s )*", pSoldierMovingList[ iCount ]->name, SquadNames[ pSoldierMovingList[ iCount ]->bAssignment ].squadname );
|
||||
else
|
||||
swprintf( sString, L" *%s ( %s )*", pSoldierMovingList[ iCount ]->name, pAssignmentStrings[ pSoldierMovingList[ iCount ]->bAssignment ] );
|
||||
swprintf( sString, L" *%s ( %s )*", pSoldierMovingList[ iCount ]->name, pAssignmentStrings[ pSoldierMovingList[ iCount ]->bAssignment ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( gGameExternalOptions.fUseXMLSquadNames )
|
||||
swprintf( sString, L" %s ( %s )", pSoldierMovingList[ iCount ]->name, SquadNames[ pSoldierMovingList[ iCount ]->bAssignment ].squadname );
|
||||
else
|
||||
swprintf( sString, L" %s ( %s )", pSoldierMovingList[ iCount ]->name, pAssignmentStrings[ pSoldierMovingList[ iCount ]->bAssignment ] );
|
||||
swprintf( sString, L" %s ( %s )", pSoldierMovingList[ iCount ]->name, pAssignmentStrings[ pSoldierMovingList[ iCount ]->bAssignment ] );
|
||||
}
|
||||
AddMonoString(&hStringHandle, sString );
|
||||
}
|
||||
|
||||
@@ -1702,6 +1702,10 @@ void HandleGlobalLoyaltyEvent( UINT8 ubEventType, INT16 sSectorX, INT16 sSectorY
|
||||
case GLOBAL_LOYALTY_LOSE_SAM:
|
||||
iLoyaltyChange = -250;
|
||||
break;
|
||||
// Flugente: morale drop for torturing prisoners
|
||||
case GLOBAL_LOYALTY_PRISONERS_TORTURED:
|
||||
iLoyaltyChange = -25;
|
||||
break;
|
||||
|
||||
default:
|
||||
Assert(FALSE);
|
||||
|
||||
@@ -63,6 +63,8 @@ typedef enum
|
||||
GLOBAL_LOYALTY_GAIN_SAM,
|
||||
GLOBAL_LOYALTY_LOSE_SAM,
|
||||
GLOBAL_LOYALTY_QUEEN_BATTLE_WON,
|
||||
GLOBAL_LOYALTY_GRIZZLY_DEAD, // Flugente: I have no idea what the playn behind this is, but I found it in the lua script. It isn't used anywhere in the code though...
|
||||
GLOBAL_LOYALTY_PRISONERS_TORTURED, // Flugente: the player has attacked prisoners
|
||||
|
||||
} GlobalLoyaltyEventTypes;
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ typedef struct
|
||||
UINT8 sWaterType; // Food System
|
||||
UINT16 usNaturalDirt; // Dirt System
|
||||
UINT8 usCurfewValue; // Covert Ops
|
||||
UINT16 usPrisonRoomNumber[MAX_PRISON_ROOMS]; // Prisoner System
|
||||
UINT32 currentDepth;
|
||||
UINT32 maxReadDepth;
|
||||
} SectorNameParseData;
|
||||
@@ -86,6 +87,14 @@ SectorNameStartElementHandle(void *userData, const XML_Char *name, const char **
|
||||
SectorExternalData[x][1].usCurfewValue = 0;
|
||||
SectorExternalData[x][2].usCurfewValue = 0;
|
||||
SectorExternalData[x][3].usCurfewValue = 0;
|
||||
|
||||
for(UINT8 i = 0; i <MAX_PRISON_ROOMS; ++i)
|
||||
{
|
||||
SectorExternalData[x][0].usPrisonRoomNumber[i] = 0;
|
||||
SectorExternalData[x][1].usPrisonRoomNumber[i] = 0;
|
||||
SectorExternalData[x][2].usPrisonRoomNumber[i] = 0;
|
||||
SectorExternalData[x][3].usPrisonRoomNumber[i] = 0;
|
||||
}
|
||||
|
||||
if (Sector_Level == 0 )
|
||||
{
|
||||
@@ -135,7 +144,23 @@ SectorNameStartElementHandle(void *userData, const XML_Char *name, const char **
|
||||
strcmp(name, "szDetailedExploredName") == 0 ||
|
||||
strcmp(name, "sWaterType") == 0 ||
|
||||
strcmp(name, "usNaturalDirt") == 0 ||
|
||||
strcmp(name, "usCurfewValue") == 0 ))
|
||||
strcmp(name, "usCurfewValue") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber00") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber01") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber02") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber03") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber04") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber05") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber06") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber07") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber08") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber09") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber10") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber11") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber12") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber13") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber14") == 0 ||
|
||||
strcmp(name, "usPrisonRoomNumber15") == 0 ))
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT;
|
||||
|
||||
@@ -259,6 +284,12 @@ SectorNameEndElementHandle(void *userData, const XML_Char *name)
|
||||
SectorExternalData[ubSectorId][2].usCurfewValue = pData->usCurfewValue;
|
||||
SectorExternalData[ubSectorId][3].usCurfewValue = pData->usCurfewValue;
|
||||
|
||||
for(UINT8 i = 0; i <MAX_PRISON_ROOMS; ++i)
|
||||
{
|
||||
SectorExternalData[ubSectorId][0].usPrisonRoomNumber[i] = pData->usPrisonRoomNumber[i];
|
||||
pData->usPrisonRoomNumber[i] = 0;
|
||||
}
|
||||
|
||||
// clean up values afterwards
|
||||
pData->sWaterType = 0;
|
||||
pData->usNaturalDirt = 100;
|
||||
@@ -327,6 +358,86 @@ SectorNameEndElementHandle(void *userData, const XML_Char *name)
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usCurfewValue = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber00") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[0] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber01") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[1] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber02") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[2] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber03") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[3] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber04") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[4] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber05") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[5] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber06") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[6] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber07") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[7] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber08") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[8] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber09") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[9] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber10") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[10] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber11") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[11] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber12") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[12] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber13") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[13] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber14") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[14] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
else if(strcmp(name, "usPrisonRoomNumber15") == 0)
|
||||
{
|
||||
pData->curElement = SECTORNAME_ELEMENT_SECTOR;
|
||||
pData->usPrisonRoomNumber[15] = (UINT8) atoi(pData->szCharData);
|
||||
}
|
||||
|
||||
pData->maxReadDepth--;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user