Convert to SoldierID

This commit is contained in:
Asdow
2024-11-17 19:41:34 +02:00
parent 74d752d452
commit 9532fbfe2c
6 changed files with 112 additions and 113 deletions
+1 -1
View File
@@ -5434,7 +5434,7 @@ UINT32 MapScreenHandle(void)
// make him continue talking // make him continue talking
ContinueDialogue( MercPtrs[ gpCurrentTalkingFace->ubSoldierID ], FALSE ); ContinueDialogue( gpCurrentTalkingFace->ubSoldierID, FALSE );
// reset diabled flag // reset diabled flag
//gpCurrentTalkingFace->fDisabled = FALSE; //gpCurrentTalkingFace->fDisabled = FALSE;
+2 -2
View File
@@ -1992,7 +1992,7 @@ BOOLEAN SpecialCharacterDialogueEventWithExtraParam( UINT32 uiSpecialEventFlag,
} }
extern INT8 gbSelectedArmsDealerID; extern INT8 gbSelectedArmsDealerID;
extern UINT16 gusIDOfCivTrader; extern SoldierID gusIDOfCivTrader;
BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32 iFaceIndex, UINT8 bUIHandlerID, BOOLEAN fFromSoldier ) BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32 iFaceIndex, UINT8 bUIHandlerID, BOOLEAN fFromSoldier )
{ {
@@ -2107,7 +2107,7 @@ BOOLEAN ExecuteCharacterDialogue( UINT8 ubCharacterNum, UINT16 usQuoteNum, INT32
&& iFaceIndex == -1 && iFaceIndex == -1
&& gusIDOfCivTrader != NOBODY ) && gusIDOfCivTrader != NOBODY )
{ {
SOLDIERTYPE* pShopkeeper = MercPtrs[gusIDOfCivTrader]; SOLDIERTYPE* pShopkeeper = gusIDOfCivTrader;
if ( pShopkeeper ) if ( pShopkeeper )
{ {
+90 -91
View File
@@ -129,7 +129,7 @@ INT32 InitSoldierFace( SOLDIERTYPE *pSoldier )
} }
INT32 InitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags ) INT32 InitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags )
{ {
UINT32 uiBlinkFrequency; UINT32 uiBlinkFrequency;
UINT32 uiExpressionFrequency; UINT32 uiExpressionFrequency;
@@ -182,7 +182,7 @@ void SetPalettes(HVOBJECT *hVObject, UINT32 uiIndex)
(*hVObject)->pShades[FLASH_PORTRAIT_GRAYSHADE] = Create16BPPPaletteShaded(Pal, 255, 255, 255, FALSE); (*hVObject)->pShades[FLASH_PORTRAIT_GRAYSHADE] = Create16BPPPaletteShaded(Pal, 255, 255, 255, FALSE);
} }
INT32 InternalInitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ) INT32 InternalInitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency )
{ {
FACETYPE *pFace; FACETYPE *pFace;
VOBJECT_DESC VObjectDesc; VOBJECT_DESC VObjectDesc;
@@ -554,15 +554,14 @@ void DeleteFace( INT32 iFaceIndex )
} }
void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT16 ubSoldierID, UINT16 usFaceX, UINT16 usFaceY ) void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, SoldierID ubSoldierID, UINT16 usFaceX, UINT16 usFaceY )
{ {
if( ubSoldierID == NOBODY ) if( ubSoldierID >= NOBODY )
{ {
return; return;
} }
SetAutoFaceActive( uiDisplayBuffer, uiRestoreBuffer, MercPtrs[ ubSoldierID ]->iFaceIndex, usFaceX, usFaceY ); SetAutoFaceActive( uiDisplayBuffer, uiRestoreBuffer, ubSoldierID->iFaceIndex, usFaceX, usFaceY );
} }
void GetFaceRelativeCoordinates( FACETYPE *pFace, UINT16 *pusEyesX, UINT16 *pusEyesY, UINT16 *pusMouthX, UINT16 *pusMouthY ) void GetFaceRelativeCoordinates( FACETYPE *pFace, UINT16 *pusEyesX, UINT16 *pusEyesY, UINT16 *pusMouthX, UINT16 *pusMouthY )
@@ -753,17 +752,17 @@ void InternalSetAutoFaceActive( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer,
// Are we a soldier? // Are we a soldier?
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
pFace->bOldSoldierLife = MercPtrs[ pFace->ubSoldierID ]->stats.bLife; pFace->bOldSoldierLife = pFace->ubSoldierID->stats.bLife;
} }
} }
void SetAutoFaceInActiveFromSoldier( UINT16 ubSoldierID ) void SetAutoFaceInActiveFromSoldier( SoldierID ubSoldierID )
{ {
// Check for valid soldier // Check for valid soldier
CHECKV( ubSoldierID != NOBODY ); CHECKV( ubSoldierID != NOBODY );
SetAutoFaceInActive( MercPtrs[ ubSoldierID ]->iFaceIndex ); SetAutoFaceInActive( ubSoldierID->iFaceIndex );
} }
@@ -795,7 +794,7 @@ void SetAutoFaceInActive(INT32 iFaceIndex )
// //
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
pSoldier = MercPtrs[ pFace->ubSoldierID ]; pSoldier = pFace->ubSoldierID;
// IF we are in tactical // IF we are in tactical
if ( pSoldier->bAssignment == iCurrentTacticalSquad && guiCurrentScreen == GAME_SCREEN ) if ( pSoldier->bAssignment == iCurrentTacticalSquad && guiCurrentScreen == GAME_SCREEN )
@@ -948,11 +947,11 @@ void BlinkAutoFace( INT32 iFaceIndex )
// CHECK IF BUDDY IS DEAD, UNCONSCIOUS, ASLEEP, OR POW! // CHECK IF BUDDY IS DEAD, UNCONSCIOUS, ASLEEP, OR POW!
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, FALSE); uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, FALSE);
if ( ( MercPtrs[ pFace->ubSoldierID ]->stats.bLife < OKLIFE ) || if ( ( pFace->ubSoldierID->stats.bLife < OKLIFE ) ||
( MercPtrs[ pFace->ubSoldierID ]->flags.fMercAsleep == TRUE ) || ( pFace->ubSoldierID->flags.fMercAsleep == TRUE ) ||
( MercPtrs[ pFace->ubSoldierID ]->bAssignment == ASSIGNMENT_POW ) ) ( pFace->ubSoldierID->bAssignment == ASSIGNMENT_POW ) )
{ {
return; return;
} }
@@ -1088,13 +1087,13 @@ void HandleFaceHilights( FACETYPE *pFace, UINT32 uiBuffer, INT16 sFaceX, INT16 s
{ {
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
if ( MercPtrs[ pFace->ubSoldierID ]->stats.bLife >= OKLIFE ) if ( pFace->ubSoldierID->stats.bLife >= OKLIFE )
{ {
// Lock buffer // Lock buffer
pDestBuf = LockVideoSurface( uiBuffer, &uiDestPitchBYTES ); pDestBuf = LockVideoSurface( uiBuffer, &uiDestPitchBYTES );
SetClippingRegionAndImageWidth( uiDestPitchBYTES, sFaceX-2, sFaceY-1, sFaceX + pFace->usFaceWidth + 4, sFaceY + pFace->usFaceHeight + 4 ); SetClippingRegionAndImageWidth( uiDestPitchBYTES, sFaceX-2, sFaceY-1, sFaceX + pFace->usFaceWidth + 4, sFaceY + pFace->usFaceHeight + 4 );
if ( MercPtrs[ pFace->ubSoldierID ]->bStealthMode ) if ( pFace->ubSoldierID->bStealthMode )
{ {
usLineColor = Get16BPPColor( FROMRGB( 158, 158, 12 ) ); usLineColor = Get16BPPColor( FROMRGB( 158, 158, 12 ) );
} }
@@ -1237,7 +1236,7 @@ void MouthAutoFace( INT32 iFaceIndex )
// Set shade // Set shade
if (pFace->ubSoldierID != NOBODY) if (pFace->ubSoldierID != NOBODY)
{ {
uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, FALSE); uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, FALSE);
} }
HandleRenderFaceAdjustments( pFace, TRUE, FALSE, 0, pFace->usFaceX, pFace->usFaceY, pFace->usEyesX, pFace->usEyesY, uiFaceShade); HandleRenderFaceAdjustments( pFace, TRUE, FALSE, 0, pFace->usFaceX, pFace->usFaceY, pFace->usEyesX, pFace->usEyesY, uiFaceShade);
@@ -1363,12 +1362,12 @@ UINT32 GetFaceShade(SOLDIERTYPE *pSoldier, FACETYPE *pFace, BOOLEAN fExternBlit)
return FLASH_PORTRAIT_NOSHADE; return FLASH_PORTRAIT_NOSHADE;
} }
BOOLEAN RenderAutoFaceFromSoldier( UINT16 ubSoldierID ) BOOLEAN RenderAutoFaceFromSoldier( SoldierID ubSoldierID )
{ {
// Check for valid soldier // Check for valid soldier
CHECKF( ubSoldierID != NOBODY ); CHECKF( ubSoldierID != NOBODY );
return( RenderAutoFace( MercPtrs[ ubSoldierID ]->iFaceIndex ) ); return( RenderAutoFace( ubSoldierID->iFaceIndex ) );
} }
//---------------------------------------LEGION------------------------------- //---------------------------------------LEGION-------------------------------
@@ -1629,16 +1628,16 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
// BLIT HATCH // BLIT HATCH
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
pSoldier = MercPtrs[ pFace->ubSoldierID ]; pSoldier = pFace->ubSoldierID;
UINT8 faceProfileId = gMercProfiles[pSoldier->ubProfile].ubFaceIndex; UINT8 faceProfileId = gMercProfiles[pSoldier->ubProfile].ubFaceIndex;
BOOLEAN isIMP = gMercProfiles[pSoldier->ubProfile].Type == PROFILETYPE_IMP; BOOLEAN isIMP = gMercProfiles[pSoldier->ubProfile].Type == PROFILETYPE_IMP;
if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_GEAR] && MercPtrs[pFace->ubSoldierID]->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE)) if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_GEAR] && pSoldier->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE))
{ {
if (MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem > 0) if (pSoldier->inv[HELMETPOS].usItem > 0)
{ {
uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem; uiFaceItemOne = pSoldier->inv[HELMETPOS].usItem;
if (uiFaceItemOne != NONE && zNewFaceGear[uiFaceItemOne].Type == 1) //back if (uiFaceItemOne != NONE && zNewFaceGear[uiFaceItemOne].Type == 1) //back
{ {
@@ -1648,17 +1647,17 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
// this section chooses the pictures for gas mask and NV goggles if the ini setting "SHOW_TACTICAL_FACE_GEAR" is TRUE // this section chooses the pictures for gas mask and NV goggles if the ini setting "SHOW_TACTICAL_FACE_GEAR" is TRUE
// and the merc actually wears something to be shown // and the merc actually wears something to be shown
if (MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem + MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem > 0) if (pSoldier->inv[HEAD1POS].usItem + pSoldier->inv[HEAD2POS].usItem > 0)
{ {
// WANNE: Removed the limitation // WANNE: Removed the limitation
// silversurfer: don't overwrite icons if they shall be shown! // silversurfer: don't overwrite icons if they shall be shown!
//if ( !gGameSettings.fOptions[ SHOW_TACTICAL_FACE_ICONS ] ) //if ( !gGameSettings.fOptions[ SHOW_TACTICAL_FACE_ICONS ] )
{ {
uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem; uiFaceItemOne = pSoldier->inv[HEAD1POS].usItem;
uiFaceItemTwo = MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem; uiFaceItemTwo = pSoldier->inv[HEAD2POS].usItem;
uiFaceOne = MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem; uiFaceOne = pSoldier->inv[HEAD1POS].usItem;
uiFaceTwo = MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem; uiFaceTwo = pSoldier->inv[HEAD2POS].usItem;
// check first face slot // check first face slot
if (uiFaceItemOne != NONE) if (uiFaceItemOne != NONE)
@@ -1797,11 +1796,11 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
} }
if (MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem > 0) if (pSoldier->inv[HELMETPOS].usItem > 0)
// dirty hack for IMPs because they don't have pictures for face gear // dirty hack for IMPs because they don't have pictures for face gear
// && ( MercPtrs[ pFace->ubSoldierID ]->ubProfile < 51 || MercPtrs[ pFace->ubSoldierID ]->ubProfile > 56 ) // && ( pSoldier->ubProfile < 51 || pSoldier->ubProfile > 56 )
{ {
uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HELMETPOS].usItem; uiFaceItemOne = pSoldier->inv[HELMETPOS].usItem;
if (uiFaceItemOne != NONE) if (uiFaceItemOne != NONE)
{ {
@@ -1815,7 +1814,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
//------------------------------------end of tactical face gear----------------------------- //------------------------------------end of tactical face gear-----------------------------
} }
if ( (MercPtrs[pFace->ubSoldierID]->stats.bLife < CONSCIOUSNESS || MercPtrs[pFace->ubSoldierID]->flags.fDeadPanel ) ) if ( (pSoldier->stats.bLife < CONSCIOUSNESS || pSoldier->flags.fDeadPanel ) )
{ {
// Blit Closed eyes here! // Blit Closed eyes here!
BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL );
@@ -1824,14 +1823,14 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL );
} }
if( MercPtrs[ pFace->ubSoldierID ]->flags.fMercAsleep == TRUE ) if( pSoldier->flags.fMercAsleep == TRUE )
{ {
// blit eyes closed // blit eyes closed
BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 1, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL );
} }
// Flugente: frozen soldiers are, well, frozen // Flugente: frozen soldiers are, well, frozen
if ( MercPtrs[pFace->ubSoldierID]->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] ) if ( pSoldier->usSkillCooldown[SOLDIER_COOLDOWN_CRYO] )
{ {
// Blit Closed eyes here! // Blit Closed eyes here!
BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 2, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( uiRenderBuffer, pFace->uiVideoObject, 2, usEyesX, usEyesY, VO_BLT_SRCTRANSPARENCY, NULL );
@@ -1905,7 +1904,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
if ( MercPtrs[ pFace->ubSoldierID ]->bInSector && ( ( ( gTacticalStatus.ubCurrentTeam != OUR_TEAM ) || !OK_INTERRUPT_MERC( MercPtrs[ pFace->ubSoldierID ] ) ) && !gfHiddenInterrupt ) || ( ( gfSMDisableForItems && !gfInItemPickupMenu ) && gusSMCurrentMerc == pFace->ubSoldierID && gsCurInterfacePanel == SM_PANEL ) ) if ( pSoldier->bInSector && ( ( ( gTacticalStatus.ubCurrentTeam != OUR_TEAM ) || !OK_INTERRUPT_MERC( pSoldier ) ) && !gfHiddenInterrupt ) || ( ( gfSMDisableForItems && !gfInItemPickupMenu ) && gusSMCurrentMerc == pSoldier && gsCurInterfacePanel == SM_PANEL ) )
{ {
// Blit hatch! // Blit hatch!
BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL ); BltVideoObjectFromIndex( uiRenderBuffer, guiHATCH, 0, sFaceX, sFaceY, VO_BLT_SRCTRANSPARENCY, NULL );
@@ -1913,12 +1912,12 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
// sevenfm: only show for alive soldiers, no face icons for big faces // sevenfm: only show for alive soldiers, no face icons for big faces
if (MercPtrs[pFace->ubSoldierID]->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE)) if (pSoldier->stats.bLife > 0 && !(pFace->uiFlags & FACE_BIGFACE))
{ {
// Check if a robot and is not controlled.... // Check if a robot and is not controlled....
if (MercPtrs[pFace->ubSoldierID]->flags.uiStatusFlags & SOLDIER_ROBOT) if (pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT)
{ {
if (!MercPtrs[pFace->ubSoldierID]->CanRobotBeControlled()) if (!pSoldier->CanRobotBeControlled())
{ {
// Not controlled robot // Not controlled robot
sIconIndex = 5; sIconIndex = 5;
@@ -1926,7 +1925,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
} }
if (MercPtrs[pFace->ubSoldierID]->ControllingRobot()) if (pSoldier->ControllingRobot())
{ {
// controlling robot // controlling robot
sIconIndex = 4; sIconIndex = 4;
@@ -1939,10 +1938,10 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
// this section chooses the icons for face gear if the ini setting "SHOW_TACTICAL_FACE_ICONS" is TRUE // this section chooses the icons for face gear if the ini setting "SHOW_TACTICAL_FACE_ICONS" is TRUE
// and the merc actually wears something to be shown // and the merc actually wears something to be shown
if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_ICONS] && if (gGameSettings.fOptions[TOPTION_SHOW_TACTICAL_FACE_ICONS] &&
(MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem + MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem) > 0) (pSoldier->inv[HEAD1POS].usItem + pSoldier->inv[HEAD2POS].usItem) > 0)
{ {
uiFaceItemOne = MercPtrs[pFace->ubSoldierID]->inv[HEAD1POS].usItem; uiFaceItemOne = pSoldier->inv[HEAD1POS].usItem;
uiFaceItemTwo = MercPtrs[pFace->ubSoldierID]->inv[HEAD2POS].usItem; uiFaceItemTwo = pSoldier->inv[HEAD2POS].usItem;
//MM: fixing the hardcoded craziness here... //MM: fixing the hardcoded craziness here...
// check first face slot // check first face slot
@@ -2050,20 +2049,20 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
// If blind... // If blind...
if (MercPtrs[pFace->ubSoldierID]->bBlindedCounter > 0) if (pSoldier->bBlindedCounter > 0)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 6); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 6);
bNumRightIcons++; bNumRightIcons++;
} }
// Flugente: add drug symbol if drugged (without alcohol) // Flugente: add drug symbol if drugged (without alcohol)
if (MercDrugged(MercPtrs[pFace->ubSoldierID])) if (MercDrugged(pSoldier))
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 7); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 7);
bNumRightIcons++; bNumRightIcons++;
} }
if (GetDrunkLevel(MercPtrs[pFace->ubSoldierID]) != SOBER) if (GetDrunkLevel(pSoldier) != SOBER)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 8); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 8);
bNumRightIcons++; bNumRightIcons++;
@@ -2072,13 +2071,13 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
// Flugente: food system - symbols used if hungry or thirsty // Flugente: food system - symbols used if hungry or thirsty
if (UsingFoodSystem()) if (UsingFoodSystem())
{ {
if (MercPtrs[pFace->ubSoldierID]->bDrinkLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold) if (pSoldier->bDrinkLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 9); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 9);
bNumRightIcons++; bNumRightIcons++;
} }
if (MercPtrs[pFace->ubSoldierID]->bFoodLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold) if (pSoldier->bFoodLevel < FoodMoraleMods[FOOD_MERC_START_SHOW_HUNGER_SYMBOL].bThreshold)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 10); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 10);
bNumRightIcons++; bNumRightIcons++;
@@ -2094,7 +2093,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
UINT16 ubID2 = 0; UINT16 ubID2 = 0;
UINT16 ubGunSlot2 = 0; UINT16 ubGunSlot2 = 0;
UINT16 ubFaceSlot2 = 0; UINT16 ubFaceSlot2 = 0;
if (MercPtrs[pFace->ubSoldierID]->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2)) if (pSoldier->IsFeedingExternal(&ubID1, &ubGunSlot1, &ubFaceSlot1, &ubID2, &ubGunSlot2, &ubFaceSlot2))
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 11); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 11);
bNumRightIcons++; bNumRightIcons++;
@@ -2102,33 +2101,33 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
// Flugente: add an icon if we are currently in disguise // Flugente: add an icon if we are currently in disguise
if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER)) if (pSoldier->usSoldierFlagMask & (SOLDIER_COVERT_CIV | SOLDIER_COVERT_SOLDIER))
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 12); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 12);
bNumRightIcons++; bNumRightIcons++;
} }
// Flugente: add an icon if we are performing a multi-turn action // Flugente: add an icon if we are performing a multi-turn action
if (MercPtrs[pFace->ubSoldierID]->GetMultiTurnAction() == MTA_HACK) if (pSoldier->GetMultiTurnAction() == MTA_HACK)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 30); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 30);
bNumRightIcons++; bNumRightIcons++;
} }
else if (MercPtrs[pFace->ubSoldierID]->GetMultiTurnAction() > MTA_NONE) else if (pSoldier->GetMultiTurnAction() > MTA_NONE)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 14); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 14);
bNumRightIcons++; bNumRightIcons++;
} }
// Flugente: icons for radio operator actions (not the assignment) // Flugente: icons for radio operator actions (not the assignment)
if (MercPtrs[pFace->ubSoldierID]->bAssignment != RADIO_SCAN) if (pSoldier->bAssignment != RADIO_SCAN)
{ {
if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask & (SOLDIER_RADIO_OPERATOR_SCANNING | SOLDIER_RADIO_OPERATOR_LISTENING)) if (pSoldier->usSoldierFlagMask & (SOLDIER_RADIO_OPERATOR_SCANNING | SOLDIER_RADIO_OPERATOR_LISTENING))
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 19); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 19);
bNumRightIcons++; bNumRightIcons++;
} }
else if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask & SOLDIER_RADIO_OPERATOR_JAMMING) else if (pSoldier->usSoldierFlagMask & SOLDIER_RADIO_OPERATOR_JAMMING)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 20); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 20);
bNumRightIcons++; bNumRightIcons++;
@@ -2136,9 +2135,9 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
// Flugente: spotter // Flugente: spotter
if (MercPtrs[pFace->ubSoldierID]->usSkillCounter[SOLDIER_COUNTER_SPOTTER] > 0) if (pSoldier->usSkillCounter[SOLDIER_COUNTER_SPOTTER] > 0)
{ {
if (MercPtrs[pFace->ubSoldierID]->IsSpotting()) if (pSoldier->IsSpotting())
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 24); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 24);
bNumRightIcons++; bNumRightIcons++;
@@ -2151,21 +2150,21 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
// Flugente: focus trait // Flugente: focus trait
if (MercPtrs[pFace->ubSoldierID]->usSoldierFlagMask2 & SOLDIER_TRAIT_FOCUS) if (pSoldier->usSoldierFlagMask2 & SOLDIER_TRAIT_FOCUS)
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 17); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 17);
bNumRightIcons++; bNumRightIcons++;
} }
// Flugente: disease // Flugente: disease
if (MercPtrs[pFace->ubSoldierID]->HasDisease(TRUE, FALSE, TRUE)) if (pSoldier->HasDisease(TRUE, FALSE, TRUE))
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 28); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 28);
bNumRightIcons++; bNumRightIcons++;
} }
// Flugente: drag stuff // Flugente: drag stuff
if (MercPtrs[pFace->ubSoldierID]->IsDragging()) if (pSoldier->IsDragging())
{ {
DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 31); DoRightIcon(uiRenderBuffer, pFace, sFaceX, sFaceY, bNumRightIcons, 31);
++bNumRightIcons; ++bNumRightIcons;
@@ -2178,7 +2177,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
case DOCTOR_MILITIA: case DOCTOR_MILITIA:
sIconIndex_Assignment = 1; sIconIndex_Assignment = 1;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
sPtsAvailable = CalculateHealingPointsForDoctor(MercPtrs[pFace->ubSoldierID], &usMaximumPts, FALSE); sPtsAvailable = CalculateHealingPointsForDoctor(pSoldier, &usMaximumPts, FALSE);
fShowCustomText = TRUE; fShowCustomText = TRUE;
@@ -2201,8 +2200,8 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
sIconIndex_Assignment = 2; sIconIndex_Assignment = 2;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
// show current health / maximum health // show current health / maximum health
sPtsAvailable = MercPtrs[pFace->ubSoldierID]->stats.bLife; sPtsAvailable = pSoldier->stats.bLife;
usMaximumPts = MercPtrs[pFace->ubSoldierID]->stats.bLifeMax; usMaximumPts = pSoldier->stats.bLifeMax;
fShowNumber = TRUE; fShowNumber = TRUE;
fShowMaximum = TRUE; fShowMaximum = TRUE;
break; break;
@@ -2218,27 +2217,27 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
fShowNumber = TRUE; fShowNumber = TRUE;
fShowMaximum = TRUE; fShowMaximum = TRUE;
switch (MercPtrs[pFace->ubSoldierID]->bAssignment) switch (pSoldier->bAssignment)
{ {
case(TRAIN_SELF) : case(TRAIN_SELF) :
sPtsAvailable = GetSoldierTrainingPts(MercPtrs[pFace->ubSoldierID], MercPtrs[pFace->ubSoldierID]->bTrainStat, &usMaximumPts); sPtsAvailable = GetSoldierTrainingPts(pSoldier, pSoldier->bTrainStat, &usMaximumPts);
break; break;
case(TRAIN_BY_OTHER) : case(TRAIN_BY_OTHER) :
sPtsAvailable = GetSoldierStudentPts(MercPtrs[pFace->ubSoldierID], MercPtrs[pFace->ubSoldierID]->bTrainStat, &usMaximumPts); sPtsAvailable = GetSoldierStudentPts(pSoldier, pSoldier->bTrainStat, &usMaximumPts);
break; break;
case(TRAIN_TOWN) : case(TRAIN_TOWN) :
case DRILL_MILITIA: case DRILL_MILITIA:
sPtsAvailable = GetTownTrainPtsForCharacter(MercPtrs[pFace->ubSoldierID], &usMaximumPts); sPtsAvailable = GetTownTrainPtsForCharacter(pSoldier, &usMaximumPts);
// divide both amounts by 10 to make the displayed numbers a little more user-palatable (smaller) // divide both amounts by 10 to make the displayed numbers a little more user-palatable (smaller)
sPtsAvailable = (sPtsAvailable + 5) / 10; sPtsAvailable = (sPtsAvailable + 5) / 10;
usMaximumPts = (usMaximumPts + 5) / 10; usMaximumPts = (usMaximumPts + 5) / 10;
break; break;
case(TRAIN_TEAMMATE) : case(TRAIN_TEAMMATE) :
sPtsAvailable = GetBonusTrainingPtsDueToInstructor(MercPtrs[pFace->ubSoldierID], NULL, MercPtrs[pFace->ubSoldierID]->bTrainStat, &usMaximumPts); sPtsAvailable = GetBonusTrainingPtsDueToInstructor(pSoldier, NULL, pSoldier->bTrainStat, &usMaximumPts);
break; break;
case TRAIN_WORKERS: case TRAIN_WORKERS:
fShowMaximum = FALSE; fShowMaximum = FALSE;
sPtsAvailable = GetTrainWorkerPts(MercPtrs[pFace->ubSoldierID]); sPtsAvailable = GetTrainWorkerPts(pSoldier);
break; break;
} }
break; break;
@@ -2249,24 +2248,24 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
// Show repair points if merc has a toolkit in his hand. Otherwise show cleaning points. // Show repair points if merc has a toolkit in his hand. Otherwise show cleaning points.
if (ItemIsToolkit(pSoldier->inv[HANDPOS].usItem)) if (ItemIsToolkit(pSoldier->inv[HANDPOS].usItem))
sPtsAvailable = CalculateRepairPointsForRepairman(MercPtrs[pFace->ubSoldierID], &usMaximumPts, FALSE); sPtsAvailable = CalculateRepairPointsForRepairman(pSoldier, &usMaximumPts, FALSE);
else else
sPtsAvailable = CalculateCleaningPointsForRepairman(MercPtrs[pFace->ubSoldierID], &usMaximumPts); sPtsAvailable = CalculateCleaningPointsForRepairman(pSoldier, &usMaximumPts);
fShowNumber = TRUE; fShowNumber = TRUE;
fShowMaximum = TRUE; fShowMaximum = TRUE;
// check if we are repairing a vehicle // check if we are repairing a vehicle
if (Menptr[pFace->ubSoldierID].bVehicleUnderRepairID != -1) if (pSoldier->bVehicleUnderRepairID != -1)
{ {
// reduce to a multiple of VEHICLE_REPAIR_POINTS_DIVISOR. This way skill too low will show up as 0 repair pts. // reduce to a multiple of VEHICLE_REPAIR_POINTS_DIVISOR. This way skill too low will show up as 0 repair pts.
sPtsAvailable -= (sPtsAvailable % VEHICLE_REPAIR_POINTS_DIVISOR); sPtsAvailable -= (sPtsAvailable % VEHICLE_REPAIR_POINTS_DIVISOR);
usMaximumPts -= (usMaximumPts % VEHICLE_REPAIR_POINTS_DIVISOR); usMaximumPts -= (usMaximumPts % VEHICLE_REPAIR_POINTS_DIVISOR);
} }
else if (Menptr[pFace->ubSoldierID].flags.fFixingSAMSite) else if (pSoldier->flags.fFixingSAMSite)
{ {
sPtsAvailable = (sPtsAvailable / SAM_SITE_REPAIR_DIVISOR); sPtsAvailable = (sPtsAvailable / SAM_SITE_REPAIR_DIVISOR);
INT16 sector = CALCULATE_STRATEGIC_INDEX(Menptr[pFace->ubSoldierID].sSectorX, Menptr[pFace->ubSoldierID].sSectorY); INT16 sector = CALCULATE_STRATEGIC_INDEX(pSoldier->sSectorX, pSoldier->sSectorY);
usMaximumPts = 100 - StrategicMap[sector].bSAMCondition; usMaximumPts = 100 - StrategicMap[sector].bSAMCondition;
} }
@@ -2336,7 +2335,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
case DISEASE_DOCTOR_SECTOR: case DISEASE_DOCTOR_SECTOR:
sIconIndex_Assignment = 1; sIconIndex_Assignment = 1;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
sPtsAvailable = CalculateHealingPointsForDoctor(MercPtrs[pFace->ubSoldierID], &usMaximumPts, FALSE); sPtsAvailable = CalculateHealingPointsForDoctor(pSoldier, &usMaximumPts, FALSE);
fShowNumber = TRUE; fShowNumber = TRUE;
fShowMaximum = TRUE; fShowMaximum = TRUE;
@@ -2348,15 +2347,15 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
case FORTIFICATION: case FORTIFICATION:
sIconIndex_Assignment = 14; sIconIndex_Assignment = 14;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
sPtsAvailable = (INT16)(MercPtrs[pFace->ubSoldierID]->GetConstructionPoints()); sPtsAvailable = (INT16)(pSoldier->GetConstructionPoints());
fShowNumber = TRUE; fShowNumber = TRUE;
fShowMaximum = TRUE; fShowMaximum = TRUE;
{ {
if (MercPtrs[pFace->ubSoldierID]->bSectorZ) if (pSoldier->bSectorZ)
{ {
UNDERGROUND_SECTORINFO *pSectorInfo; UNDERGROUND_SECTORINFO *pSectorInfo;
pSectorInfo = FindUnderGroundSector(MercPtrs[pFace->ubSoldierID]->sSectorX, MercPtrs[pFace->ubSoldierID]->sSectorY, MercPtrs[pFace->ubSoldierID]->bSectorZ); pSectorInfo = FindUnderGroundSector(pSoldier->sSectorX, pSoldier->sSectorY, pSoldier->bSectorZ);
if (pSectorInfo) if (pSectorInfo)
usMaximumPts = (INT16)(pSectorInfo->dFortification_MaxPossible); usMaximumPts = (INT16)(pSectorInfo->dFortification_MaxPossible);
@@ -2364,7 +2363,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
else else
{ {
SECTORINFO *pSectorInfo; SECTORINFO *pSectorInfo;
pSectorInfo = &SectorInfo[SECTOR(MercPtrs[pFace->ubSoldierID]->sSectorX, MercPtrs[pFace->ubSoldierID]->sSectorY)]; pSectorInfo = &SectorInfo[SECTOR(pSoldier->sSectorX, pSoldier->sSectorY)];
if (pSectorInfo) if (pSectorInfo)
usMaximumPts = (INT16)(pSectorInfo->dFortification_MaxPossible); usMaximumPts = (INT16)(pSectorInfo->dFortification_MaxPossible);
@@ -2384,8 +2383,8 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
else else
{ {
bPtsAvailable = MercPtrs[pFace->ubSoldierID]->GetIntelGain(); bPtsAvailable = pSoldier->GetIntelGain();
usMaximumPts = (UINT16)(MercPtrs[pFace->ubSoldierID]->GetUncoverRisk()); usMaximumPts = (UINT16)(pSoldier->GetUncoverRisk());
swprintf(sString, L"%4.2f/%d%%%%", bPtsAvailable, usMaximumPts); swprintf(sString, L"%4.2f/%d%%%%", bPtsAvailable, usMaximumPts);
@@ -2397,7 +2396,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
sIconIndex_Assignment = 35; sIconIndex_Assignment = 35;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
fShowCustomText = TRUE; fShowCustomText = TRUE;
bPtsAvailable = MercPtrs[pFace->ubSoldierID]->GetBurialPoints(&usMaximumPts); bPtsAvailable = pSoldier->GetBurialPoints(&usMaximumPts);
swprintf(sString, L"%3.1f/%d", bPtsAvailable, usMaximumPts); swprintf(sString, L"%3.1f/%d", bPtsAvailable, usMaximumPts);
break; break;
@@ -2406,8 +2405,8 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
sIconIndex_Assignment = 36; sIconIndex_Assignment = 36;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
fShowCustomText = TRUE; fShowCustomText = TRUE;
sPtsAvailable = (INT16)MercPtrs[pFace->ubSoldierID]->GetAdministrationPoints(); sPtsAvailable = (INT16)pSoldier->GetAdministrationPoints();
bPtsAvailable = GetAdministrationPercentage(MercPtrs[pFace->ubSoldierID]->sSectorX, MercPtrs[pFace->ubSoldierID]->sSectorY); bPtsAvailable = GetAdministrationPercentage(pSoldier->sSectorX, pSoldier->sSectorY);
swprintf(sString, L"%d/%3.1f", sPtsAvailable, bPtsAvailable); swprintf(sString, L"%d/%3.1f", sPtsAvailable, bPtsAvailable);
break; break;
@@ -2416,7 +2415,7 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
sIconIndex_Assignment = 34; sIconIndex_Assignment = 34;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
fShowCustomText = TRUE; fShowCustomText = TRUE;
sPtsAvailable = (INT16)MercPtrs[pFace->ubSoldierID]->GetExplorationPoints(); sPtsAvailable = (INT16)pSoldier->GetExplorationPoints();
// we only show our points, not how far we are with the task, lest the player deduct how many items there are to find in the first place // we only show our points, not how far we are with the task, lest the player deduct how many items there are to find in the first place
swprintf( sString, L"%d", sPtsAvailable ); swprintf( sString, L"%d", sPtsAvailable );
@@ -2424,14 +2423,14 @@ void HandleRenderFaceAdjustments( FACETYPE *pFace, BOOLEAN fDisplayBuffer, BOOLE
} }
// Check for being serviced... // Check for being serviced...
if (MercPtrs[pFace->ubSoldierID]->ubServicePartner != NOBODY) if (pSoldier->ubServicePartner != NOBODY)
{ {
// Doctor... // Doctor...
sIconIndex_Assignment = 1; sIconIndex_Assignment = 1;
fDoIcon_Assignment = TRUE; fDoIcon_Assignment = TRUE;
} }
if (MercPtrs[pFace->ubSoldierID]->ubServiceCount != 0) if (pSoldier->ubServiceCount != 0)
{ {
// Patient // Patient
sIconIndex_Assignment = 2; sIconIndex_Assignment = 2;
@@ -2622,7 +2621,7 @@ BOOLEAN RenderAutoFace( INT32 iFaceIndex )
// Set shade // Set shade
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, FALSE); uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, FALSE);
SetFaceShade(pFace, uiFaceShade); SetFaceShade(pFace, uiFaceShade);
} }
@@ -2655,12 +2654,12 @@ BOOLEAN RenderAutoFace( INT32 iFaceIndex )
} }
BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT16 ubSoldierID, INT16 sX, INT16 sY ) BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, SoldierID ubSoldierID, INT16 sX, INT16 sY )
{ {
// Check for valid soldier // Check for valid soldier
CHECKF( ubSoldierID != NOBODY ); CHECKF( ubSoldierID != NOBODY );
return( ExternRenderFace( uiBuffer, MercPtrs[ ubSoldierID ]->iFaceIndex, sX, sY ) ); return( ExternRenderFace( uiBuffer, ubSoldierID->iFaceIndex, sX, sY ) );
} }
@@ -2686,7 +2685,7 @@ BOOLEAN ExternRenderFace( UINT32 uiBuffer, INT32 iFaceIndex, INT16 sX, INT16 sY
UINT32 uiFaceShade = FLASH_PORTRAIT_NOSHADE; UINT32 uiFaceShade = FLASH_PORTRAIT_NOSHADE;
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
uiFaceShade = GetFaceShade(MercPtrs[pFace->ubSoldierID], pFace, TRUE); uiFaceShade = GetFaceShade(pFace->ubSoldierID, pFace, TRUE);
SetFaceShade(pFace, uiFaceShade); SetFaceShade(pFace, uiFaceShade);
} }
@@ -2848,7 +2847,7 @@ void HandleAutoFaces( )
if ( pFace->ubSoldierID != NOBODY ) if ( pFace->ubSoldierID != NOBODY )
{ {
// Get Life now // Get Life now
pSoldier = MercPtrs[ pFace->ubSoldierID ]; pSoldier = pFace->ubSoldierID;
bLife = pSoldier->stats.bLife; bLife = pSoldier->stats.bLife;
bInSector = pSoldier->bInSector; bInSector = pSoldier->bInSector;
bAPs = pSoldier->bActionPoints; bAPs = pSoldier->bActionPoints;
+5 -5
View File
@@ -295,7 +295,7 @@ INT32 giSKIMessageBox=-1;
INT8 gbSelectedArmsDealerID = -1; //Contains the enum value for the currently selected arms dealer INT8 gbSelectedArmsDealerID = -1; //Contains the enum value for the currently selected arms dealer
// Flugente: while we're trading, store the ID of non-NPC dealers // Flugente: while we're trading, store the ID of non-NPC dealers
UINT16 gusIDOfCivTrader = NOBODY; SoldierID gusIDOfCivTrader = NOBODY;
//the quote that is in progress, in certain circumstances, we don't want queuing of related but different quotes //the quote that is in progress, in certain circumstances, we don't want queuing of related but different quotes
INT32 giShopKeepDialogueEventinProgress = - 1; INT32 giShopKeepDialogueEventinProgress = - 1;
@@ -770,7 +770,7 @@ BOOLEAN EnterShopKeeperInterface()
SOLDIERTYPE* pShopkeeper = NULL; SOLDIERTYPE* pShopkeeper = NULL;
if ( gusIDOfCivTrader != NOBODY ) if ( gusIDOfCivTrader != NOBODY )
pShopkeeper = MercPtrs[gusIDOfCivTrader]; pShopkeeper = gusIDOfCivTrader;
else else
pShopkeeper = FindSoldierByProfileID( armsDealerInfo[gbSelectedArmsDealerID].ubShopKeeperID, FALSE ); pShopkeeper = FindSoldierByProfileID( armsDealerInfo[gbSelectedArmsDealerID].ubShopKeeperID, FALSE );
@@ -1027,7 +1027,7 @@ BOOLEAN EnterShopKeeperInterface()
{ {
//add the item back to the current PC into the slot it came from //add the item back to the current PC into the slot it came from
//ADB screw slot, slot is (used to be, before it was deleted) only ever, so autoplace it //ADB screw slot, slot is (used to be, before it was deleted) only ever, so autoplace it
AutoPlaceObject(&Menptr[ gpSMCurrentMerc->ubID ], &gItemToAdd.ItemObject, FALSE); AutoPlaceObject(gpSMCurrentMerc->ubID, &gItemToAdd.ItemObject, FALSE);
} }
//Clear the contents of the structure //Clear the contents of the structure
@@ -1472,7 +1472,7 @@ BOOLEAN RenderShopKeeperInterface()
// Flugente: if this is a non-NPC dealer, we instead show their body in their current animation // Flugente: if this is a non-NPC dealer, we instead show their body in their current animation
else if ( gusIDOfCivTrader != NOBODY ) else if ( gusIDOfCivTrader != NOBODY )
{ {
SOLDIERTYPE* pSoldier = MercPtrs[gusIDOfCivTrader]; SOLDIERTYPE* pSoldier = gusIDOfCivTrader;
if ( pSoldier ) if ( pSoldier )
{ {
@@ -2457,7 +2457,7 @@ void EnterShopKeeperInterfaceScreen( UINT8 ubArmsDealer )
} }
// Flugente: set up shopkeeper with a non-NPC // Flugente: set up shopkeeper with a non-NPC
void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, UINT16 aMercID ) void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, SoldierID aMercID )
{ {
gusIDOfCivTrader = aMercID; gusIDOfCivTrader = aMercID;
+1 -1
View File
@@ -97,7 +97,7 @@ bool RepairmanItemQsortCompare(INVENTORY_IN_SLOT& pInvSlot1, INVENTORY_IN_SLOT&
void EnterShopKeeperInterfaceScreen( UINT8 ubArmsDealer ); void EnterShopKeeperInterfaceScreen( UINT8 ubArmsDealer );
// Flugente: set up shopkeeper with a non-NPC // Flugente: set up shopkeeper with a non-NPC
void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, UINT16 aMercID ); void EnterShopKeeperInterfaceScreen_NonNPC( INT8 ubArmsDealerID, SoldierID aMercID );
void EnableDisableShopkeeperButtons(UINT32 uiCurrentItemDescriptionScreen, int bpAction); void EnableDisableShopkeeperButtons(UINT32 uiCurrentItemDescriptionScreen, int bpAction);
+13 -13
View File
@@ -104,7 +104,7 @@ typedef struct
typedef struct typedef struct
{ {
UINT32 uiFlags; // Basic flags UINT32 uiFlags; // Basic flags
INT32 iID; INT32 iID;
BOOLEAN fAllocated; //Allocated or not BOOLEAN fAllocated; //Allocated or not
BOOLEAN fTalking; //Set to true if face is talking ( can be sitting for user input to esc ) BOOLEAN fTalking; //Set to true if face is talking ( can be sitting for user input to esc )
BOOLEAN fAnimatingTalking; // Set if the face is animating right now BOOLEAN fAnimatingTalking; // Set if the face is animating right now
@@ -119,12 +119,12 @@ typedef struct
BOOLEAN fFinishTalking; // A flag to indicate we want to delay after speech done BOOLEAN fFinishTalking; // A flag to indicate we want to delay after speech done
INT32 iVideoOverlay; // Value for video overlay ( not used too much ) INT32 iVideoOverlay; // Value for video overlay ( not used too much )
UINT32 uiSoundID; // Sound ID if one being played UINT32 uiSoundID; // Sound ID if one being played
UINT16 ubSoldierID; // SoldierID if one specified SoldierID ubSoldierID; // SoldierID if one specified
UINT8 ubCharacterNum; // Profile ID num UINT8 ubCharacterNum; // Profile ID num
UINT16 usFaceX; // X location to render face UINT16 usFaceX; // X location to render face
UINT16 usFaceY; // Y location to render face UINT16 usFaceY; // Y location to render face
@@ -137,7 +137,7 @@ typedef struct
BOOLEAN fDisplayTextOver; // Boolean indicating to display text on face BOOLEAN fDisplayTextOver; // Boolean indicating to display text on face
BOOLEAN fOldDisplayTextOver; // OLD Boolean indicating to display text on face BOOLEAN fOldDisplayTextOver; // OLD Boolean indicating to display text on face
BOOLEAN fCanHandleInactiveNow; BOOLEAN fCanHandleInactiveNow;
wchar_t zDisplayText[ 30 ]; // String of text that can be displayed wchar_t zDisplayText[ 30 ]; // String of text that can be displayed
UINT16 usEyesX; UINT16 usEyesX;
UINT16 usEyesY; UINT16 usEyesY;
@@ -162,10 +162,10 @@ typedef struct
UINT32 uiExpressionFrequency; UINT32 uiExpressionFrequency;
UINT32 uiStopOverlayTimer; UINT32 uiStopOverlayTimer;
UINT8 ubExpression; UINT8 ubExpression;
INT8 bOldSoldierLife; INT8 bOldSoldierLife;
INT16 bOldActionPoints; INT16 bOldActionPoints;
BOOLEAN fOldHandleUIHatch; BOOLEAN fOldHandleUIHatch;
BOOLEAN fOldShowHighlight; BOOLEAN fOldShowHighlight;
INT8 bOldAssignment; INT8 bOldAssignment;
@@ -200,14 +200,14 @@ extern FACETYPE gFacesData[ NUM_FACE_SLOTS ];
// FACE HANDLING // FACE HANDLING
// //
// Faces are done like this: Call // Faces are done like this: Call
INT32 InitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags ); INT32 InitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags );
// The first parameter is the profile ID and the second is the soldier ID ( which for most cases // The first parameter is the profile ID and the second is the soldier ID ( which for most cases
// will be NOBODY if the face is not created from a SOLDIERTYPE ) // will be NOBODY if the face is not created from a SOLDIERTYPE )
// This function allocates a slot in the table for the face, loads it's STI file, sets some // This function allocates a slot in the table for the face, loads it's STI file, sets some
// values for X,Y locations of eyes from the profile. Does not mkae the face visible or anything like that // values for X,Y locations of eyes from the profile. Does not mkae the face visible or anything like that
// INternal init face, called if you don;t want to give a profile ID ( send NO_PROFILE ) for ID // INternal init face, called if you don;t want to give a profile ID ( send NO_PROFILE ) for ID
INT32 InternalInitFace( UINT8 usMercProfileID, UINT16 ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency ); INT32 InternalInitFace( UINT8 usMercProfileID, SoldierID ubSoldierID, UINT32 uiInitFlags, INT32 iFaceFileID, UINT32 uiBlinkFrequency, UINT32 uiExpressionFrequency );
// Removes the face from the internal table, deletes any memory allocated if any. // Removes the face from the internal table, deletes any memory allocated if any.
@@ -279,10 +279,10 @@ void HandleTalkingAutoFaces( );
// Same Functions but taking soldier ID first to get profile ID // Same Functions but taking soldier ID first to get profile ID
INT32 InitSoldierFace( SOLDIERTYPE *pSoldier ); INT32 InitSoldierFace( SOLDIERTYPE *pSoldier );
void DeleteSoldierFace( SOLDIERTYPE *pSoldier ); void DeleteSoldierFace( SOLDIERTYPE *pSoldier );
void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, UINT16 ubSoldierID, UINT16 usFaceX, UINT16 usFaceY ); void SetAutoFaceActiveFromSoldier( UINT32 uiDisplayBuffer, UINT32 uiRestoreBuffer, SoldierID ubSoldierID, UINT16 usFaceX, UINT16 usFaceY );
void SetAutoFaceInActiveFromSoldier( UINT16 ubSoldierID ); void SetAutoFaceInActiveFromSoldier( SoldierID ubSoldierID );
BOOLEAN RenderAutoFaceFromSoldier( UINT16 ubSoldierID ); BOOLEAN RenderAutoFaceFromSoldier( SoldierID ubSoldierID );
BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, UINT16 ubSoldierID, INT16 sX, INT16 sY ); BOOLEAN ExternRenderFaceFromSoldier( UINT32 uiBuffer, SoldierID ubSoldierID, INT16 sX, INT16 sY );