- 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:
Flugente
2013-03-05 01:02:59 +00:00
parent ca20403bc4
commit 36f7399d3b
23 changed files with 319 additions and 13 deletions
+19 -1
View File
@@ -3824,6 +3824,15 @@ void HandleNPCTeamMemberDeath( SOLDIERTYPE *pSoldierOld )
HandleMurderOfCivilian( pSoldierOld, pSoldierOld->flags.fIntendedTarget );
}
}
// Flugente: if this was a prisoner of war, reduce their sector count by 1
if ( pSoldierOld->bSoldierFlagMask & SOLDIER_POW_PRISON )
{
// get sector
SECTORINFO *pSector = &SectorInfo[ SECTOR( gWorldSectorX, gWorldSectorY ) ];
if ( pSector )
pSector->uiNumberOfPrisonersOfWar = max(0, pSector->uiNumberOfPrisonersOfWar - 1);
}
}
else if ( pSoldierOld->bTeam == MILITIA_TEAM )
{
@@ -8604,6 +8613,11 @@ BOOLEAN ProcessImplicationsOfPCAttack( SOLDIERTYPE * pSoldier, SOLDIERTYPE ** pp
}
}
}
// Flugente: if we attack prisoners, the local support might wane, as we turned out to be cruel oppressors, not liberators
else if ( (pTarget->bTeam == CIV_TEAM) && (pTarget->ubCivilianGroup == POW_PRISON_CIV_GROUP) )
{
HandleGlobalLoyaltyEvent( GLOBAL_LOYALTY_PRISONERS_TORTURED, gWorldSectorX, gWorldSectorY, gbWorldSectorZ );
}
else if (pTarget->bTeam == CREATURE_TEAM && pTarget->ubBodyType == BLOODCAT && pTarget->aiData.bNeutral)
{
// Attacked a bloodcat.
@@ -10130,8 +10144,12 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
}
}
// print out values
if ( gGameExternalOptions.fDisplaySurrenderSValues )
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"PlayerStrength : %d Enemystrength: %6.0f", playersidestrength, gGameExternalOptions.fSurrenderMultiplier * enemysidestrength );
// perhaps this can be fleshed out more, for now, let's see if this is acceptable behaviour
if ( playersidestrength >= 6 * enemysidestrength )
if ( playersidestrength >= gGameExternalOptions.fSurrenderMultiplier * enemysidestrength )
{
// it is enough to simply set all soldiers to captured
firstid = gTacticalStatus.Team[ ENEMY_TEAM ].bFirstID;