Merged revision(s) 7634 from branches/ja2_source_official_2014:

Fix: NPCs could be handcuffed. This is useless as long as there are no routines that handle their removal and interrogation.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7635 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2014-11-02 03:11:19 +00:00
parent eee078af6d
commit 7a61eec3e0
4 changed files with 15 additions and 6 deletions
+1 -1
View File
@@ -1248,7 +1248,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
}
// Flugente: handcuffing people
if ( gGameExternalOptions.fAllowPrisonerSystem && HasItemFlag(usHandItem, HANDCUFFS ) )
if ( gGameExternalOptions.fAllowPrisonerSystem && HasItemFlag( usHandItem, HANDCUFFS ) && pTargetSoldier && pTargetSoldier->CanBeHandcuffed( ) )
{
// ATE: AI CANNOT GO THROUGH HERE!
INT32 usMapPos;
+11 -1
View File
@@ -16170,6 +16170,16 @@ BOOLEAN SOLDIERTYPE::FreePrisoner( )
return FALSE;
}
// can this guy be handcuffed?
BOOLEAN SOLDIERTYPE::CanBeHandcuffed( )
{
// if this is an enemy that has not already been captured, and is not a NPC, we can handcuff and thus capture him
if ( this->bTeam == ENEMY_TEAM && !(this->usSoldierFlagMask & SOLDIER_POW) && this->ubProfile == NO_PROFILE )
return TRUE;
return FALSE;
}
// Flugente: scuba gear
BOOLEAN SOLDIERTYPE::UsesScubaGear( )
{
@@ -19829,7 +19839,7 @@ void SOLDIERTYPE::EVENT_SoldierHandcuffPerson( INT32 sGridNo, UINT8 ubDirection
UINT8 ubPerson = WhoIsThere2( sGridNo, this->pathing.bLevel );
if ( ubPerson != NOBODY && MercPtrs[ubPerson]->bTeam == ENEMY_TEAM && !(MercPtrs[ubPerson]->usSoldierFlagMask & SOLDIER_POW) )
if ( ubPerson != NOBODY && MercPtrs[ubPerson]->CanBeHandcuffed( ) )
{
// we found someone we can handcuff
SOLDIERTYPE* pSoldier = MercPtrs[ubPerson];
+1
View File
@@ -1769,6 +1769,7 @@ public:
BOOLEAN CanProcessPrisoners();
UINT32 GetSurrenderStrength();
BOOLEAN FreePrisoner(); // used for an enemy liberating fellow prisoners
BOOLEAN CanBeHandcuffed(); // can this guy be handcuffed?
// Flugente: scuba gear
BOOLEAN UsesScubaGear();
+2 -4
View File
@@ -2253,11 +2253,9 @@ UINT8 HandleHandcuffCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 uiCurso
{
// is there a person here?
UINT8 usSoldierIndex = WhoIsThere2( sGridNo, pSoldier->pathing.bLevel );
if ( usSoldierIndex != NOBODY )
if ( usSoldierIndex != NOBODY && MercPtrs[usSoldierIndex]->CanBeHandcuffed( ) )
{
// no handcuffing if the guy is already caught...
if ( !(MercPtrs[usSoldierIndex]->usSoldierFlagMask & SOLDIER_POW) )
return( HANDCUFF_GREY_UICURSOR );
return( HANDCUFF_GREY_UICURSOR );
}
}