diff --git a/Tactical/Animation Control.cpp b/Tactical/Animation Control.cpp index 8cc392a1..49ed02e3 100644 --- a/Tactical/Animation Control.cpp +++ b/Tactical/Animation Control.cpp @@ -3210,7 +3210,12 @@ INT8 GetBodyTypePaletteSubstitutionCode( SOLDIERTYPE *pSoldier, UINT8 ubBodyType } // Check for cammo... - if ( ( pSoldier->bCamo + pSoldier->wornCamo ) > 50 ) + if ( GetWornStealth(pSoldier) >= 50 ) + { + strcpy( zColFilename, "ANIMS\\steath.col" ); + return( 1 ); + } + else if ( ( pSoldier->bCamo + pSoldier->wornCamo ) >= 50 ) { strcpy( zColFilename, "ANIMS\\camo.COL" ); return( 1 ); diff --git a/Tactical/Items.cpp b/Tactical/Items.cpp index bdce1399..8198fe0d 100644 --- a/Tactical/Items.cpp +++ b/Tactical/Items.cpp @@ -7086,14 +7086,16 @@ void ApplyEquipmentBonuses(SOLDIERTYPE * pSoldier) if ( oldCamo != newCamo ) { pSoldier->wornCamo = newCamo; - if ( pSoldier->bInSector) - CreateSoldierPalettes( pSoldier ); - - fInterfacePanelDirty = DIRTYLEVEL2; if ( newCamo > oldCamo && pSoldier->bTeam == OUR_TEAM ) DoMercBattleSound( pSoldier, BATTLE_SOUND_COOL1 ); } + + //Madd: do this regardless of camo. This will need to be called to do custom part colours and new overlays anyway. + if ( pSoldier->bInSector) + CreateSoldierPalettes( pSoldier ); + + fInterfacePanelDirty = DIRTYLEVEL2; } UINT16 GetFirstExplosiveOfType(UINT16 expType) diff --git a/Tactical/Rotting Corpses.cpp b/Tactical/Rotting Corpses.cpp index 30b115b7..6e22597c 100644 --- a/Tactical/Rotting Corpses.cpp +++ b/Tactical/Rotting Corpses.cpp @@ -705,6 +705,11 @@ BOOLEAN CreateCorpsePalette( ROTTING_CORPSE *pCorpse ) strcpy( zColFilename, "ANIMS\\camo.COL" ); bBodyTypePalette = 1; } + else if ( pCorpse->def.usFlags & ROTTING_CORPSE_USE_STEALTH_PALETTE ) + { + strcpy( zColFilename, "ANIMS\\stealth.col" ); + bBodyTypePalette = 1; + } if ( bBodyTypePalette == -1 ) { @@ -790,7 +795,11 @@ BOOLEAN TurnSoldierIntoCorpse( SOLDIERTYPE *pSoldier, BOOLEAN fRemoveMerc, BOOLE SET_PALETTEREP_ID ( Corpse.SkinPal, pSoldier->SkinPal ); SET_PALETTEREP_ID ( Corpse.PantsPal, pSoldier->PantsPal ); - if ( pSoldier->bCamo != 0 ) + if ( GetWornStealth(pSoldier) >= 50 ) + { + Corpse.usFlags |= ROTTING_CORPSE_USE_STEALTH_PALETTE; + } + else if ( pSoldier->bCamo >= 50 ) { Corpse.usFlags |= ROTTING_CORPSE_USE_CAMMO_PALETTE; } diff --git a/Tactical/Rotting Corpses.h b/Tactical/Rotting Corpses.h index 5ddeb4cb..5a0fa375 100644 --- a/Tactical/Rotting Corpses.h +++ b/Tactical/Rotting Corpses.h @@ -80,6 +80,7 @@ enum RottingCorpseDefines #define ROTTING_CORPSE_USE_WEST_ENTRY_POINT 0x10 //Find the spot closest to the west entry grid #define ROTTING_CORPSE_USE_CAMMO_PALETTE 0x20 //We use cammo palette here.... #define ROTTING_CORPSE_VEHICLE 0x40 //Vehicle Corpse +#define ROTTING_CORPSE_USE_STEALTH_PALETTE 0x80 //We use stealth palette here.... typedef struct {