mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Fixes by Shadooow:
- robot has no (dynamic) opinions anymore. For now I allowed other mercs to have opinion about robot, but that is also a bit odd - fixed Not Enough Action Points error triggering needlessly, when doing stuff like reloading ammo, using consumables or changing attachments in map screen during battle with mercs that are not in the sector where battle is occuring - fix for RPCs sometimes repeating last spoken line after victory in the sector git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9005 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1119,7 +1119,7 @@ void AddOpinionEvent( UINT8 usProfileA, UINT8 usProfileB, UINT8 usEvent, BOOLEAN
|
||||
|
||||
// we don't want any events for people not on our team or vehicles
|
||||
SOLDIERTYPE* pSoldier = FindSoldierByProfileID( usProfileA, TRUE );
|
||||
if ( !pSoldier || pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
|
||||
if ( !pSoldier || pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE || AM_A_ROBOT(pSoldier))
|
||||
return;
|
||||
|
||||
pSoldier = FindSoldierByProfileID( usProfileB, TRUE );
|
||||
@@ -1632,7 +1632,7 @@ void HandleDynamicOpinionsDailyRefresh( )
|
||||
for ( pSoldier = MercPtrs[bMercID]; bMercID <= bLastTeamID; ++bMercID, pSoldier++ )
|
||||
{
|
||||
if ( pSoldier->bActive && pSoldier->ubProfile != NO_PROFILE &&
|
||||
!(pSoldier->bAssignment == IN_TRANSIT ||
|
||||
!(pSoldier->bAssignment == IN_TRANSIT || AM_A_ROBOT(pSoldier) ||
|
||||
pSoldier->bAssignment == ASSIGNMENT_DEAD) )
|
||||
{
|
||||
// or each profile, check wether everyone else is a friend of someone else we hate
|
||||
@@ -1674,7 +1674,7 @@ void CheckForFriendsofHated( SOLDIERTYPE* pSoldier )
|
||||
SOLDIERTYPE* pThirdSoldier;
|
||||
|
||||
// make sure we ourselves aren't in transit
|
||||
if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD )
|
||||
if ( !pSoldier->bActive || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->bAssignment == IN_TRANSIT || pSoldier->bAssignment == ASSIGNMENT_DEAD )
|
||||
return;
|
||||
|
||||
bMercID = pSoldier->ubID;
|
||||
@@ -1835,7 +1835,7 @@ void HandleDynamicOpinionRetreat( )
|
||||
void HandleDynamicOpinionTeamDrinking( SOLDIERTYPE* pSoldier )
|
||||
{
|
||||
// need to be drunk for this
|
||||
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || pSoldier->newdrugs.drinkstaken <= 0.0 )
|
||||
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier) || pSoldier->newdrugs.drinkstaken <= 0.0 )
|
||||
return;
|
||||
|
||||
SOLDIERTYPE* pTeamSoldier = NULL;
|
||||
@@ -1873,7 +1873,7 @@ void HandleDynamicOpinionTeamDrinking( SOLDIERTYPE* pSoldier )
|
||||
|
||||
void HandleDynamicOpinionTeaching( SOLDIERTYPE* pSoldier, UINT8 ubStat )
|
||||
{
|
||||
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE )
|
||||
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier))
|
||||
return;
|
||||
|
||||
// because this code is as annoying as it is, ubStat has a different numbering than bTrainStat. The only reasonable explanation for that is that the designers decided to be jerks on purpose
|
||||
@@ -2079,7 +2079,7 @@ UINT8 HighestInventoryCoolness( SOLDIERTYPE* pSoldier )
|
||||
|
||||
void HandleDynamicOpinionChange( SOLDIERTYPE* pSoldier, UINT8 usEvent, BOOLEAN fOffender, BOOLEAN fStartDialogue )
|
||||
{
|
||||
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE )
|
||||
if ( !pSoldier || pSoldier->ubProfile == NO_PROFILE || AM_A_ROBOT(pSoldier))
|
||||
return;
|
||||
|
||||
// we might have to compare the soldier to other teammates, determine relevant values
|
||||
|
||||
+2
-3
@@ -933,9 +933,8 @@ BOOLEAN EnoughPoints( SOLDIERTYPE *pSoldier, INT16 sAPCost, INT32 iBPCost, BOOLE
|
||||
// AI guy on special move off map
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
// IN realtime.. only care about BPs
|
||||
if ( ( gTacticalStatus.uiFlags & REALTIME ) || !(gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||
if ( ( gTacticalStatus.uiFlags & REALTIME ) || !(gTacticalStatus.uiFlags & INCOMBAT ) || !pSoldier->bInSector)
|
||||
{
|
||||
sAPCost = 0;
|
||||
}
|
||||
@@ -1001,7 +1000,7 @@ void DeductPoints( SOLDIERTYPE *pSoldier, INT16 sAPCost, INT32 iBPCost, UINT8 ub
|
||||
}
|
||||
|
||||
// in real time, there IS no AP cost, (only breath cost)
|
||||
if (!(gTacticalStatus.uiFlags & TURNBASED) || !(gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||
if (!(gTacticalStatus.uiFlags & TURNBASED) || !(gTacticalStatus.uiFlags & INCOMBAT ) || !pSoldier->bInSector)
|
||||
{
|
||||
sAPCost = 0;
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ void HandleRPCDescription( )
|
||||
// OK, count how many rpc guys we have....
|
||||
// set up soldier ptr as first element in mercptrs list
|
||||
cnt2 = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
|
||||
if (gTacticalStatus.ubGuideDescriptionToUse != 100)
|
||||
{
|
||||
// run through list
|
||||
for ( pTeamSoldier = MercPtrs[cnt2]; cnt2 <= gTacticalStatus.Team[gbPlayerNum].bLastID; ++cnt2, pTeamSoldier++ )
|
||||
|
||||
Reference in New Issue
Block a user