mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
When taking/dropping corpse as object, use object's ubWireNetworkFlag and sRepairThreshold variables to store palette and camo status of corpse, instead of hardcoded flags.
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9240 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -2171,6 +2171,16 @@ BOOLEAN TakeCorpse( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel )
|
||||
GetPaletteRepIndexFromID(pCorpse->def.VestPal, &vestpal);
|
||||
GetPaletteRepIndexFromID(pCorpse->def.PantsPal, &pantspal);
|
||||
|
||||
// sevenfm: reuse object data to store non-standard palette values
|
||||
UINT32 uiFlag = 0;
|
||||
uiFlag += (headpal & 0xff);
|
||||
uiFlag += (skinpal & 0xff) << 8;
|
||||
uiFlag += (vestpal & 0xff) << 16;
|
||||
uiFlag += (pantspal & 0xff) << 24;
|
||||
gTempObject[0]->data.ubWireNetworkFlag = uiFlag;
|
||||
// sevenfm: store palette flags
|
||||
gTempObject[0]->data.sRepairThreshold = pCorpse->def.usFlags & (ROTTING_CORPSE_USE_STEALTH_PALETTE | ROTTING_CORPSE_USE_CAMO_PALETTE | ROTTING_CORPSE_USE_URBAN_CAMO_PALETTE | ROTTING_CORPSE_USE_DESERT_CAMO_PALETTE | ROTTING_CORPSE_USE_SNOW_CAMO_PALETTE);
|
||||
|
||||
switch ( headpal )
|
||||
{
|
||||
case 0:
|
||||
@@ -2335,67 +2345,93 @@ BOOLEAN AddCorpseFromObject(OBJECTTYPE* pObj, INT32 sGridNo, INT8 bLevel )
|
||||
|
||||
Corpse.sHeightAdjustment = 0;
|
||||
|
||||
// check the objects flagmask and set the corpse palette IDs accordingly
|
||||
UINT32 uiFlag = (*pObj)[0]->data.ubWireNetworkFlag;
|
||||
INT16 sCamoFlag = (*pObj)[0]->data.sRepairThreshold;
|
||||
|
||||
// Hair
|
||||
if ( (*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_BROWN )
|
||||
SET_PALETTEREP_ID( Corpse.HeadPal, "BROWNHEAD" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_BLACK )
|
||||
SET_PALETTEREP_ID( Corpse.HeadPal, "BLACKHEAD" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_WHITE )
|
||||
SET_PALETTEREP_ID( Corpse.HeadPal, "WHITEHEAD" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_BLOND )
|
||||
SET_PALETTEREP_ID( Corpse.HeadPal, "BLONDHEAD" );
|
||||
else
|
||||
SET_PALETTEREP_ID( Corpse.HeadPal, "REDHEAD" );
|
||||
if (uiFlag > 0)
|
||||
{
|
||||
// sevenfm: set values directly from stored IDs
|
||||
UINT8 headpal = (uiFlag & 0xff);
|
||||
UINT8 skinpal = ((uiFlag >> 8) & 0xff);
|
||||
UINT8 vestpal = ((uiFlag >> 16) & 0xff);
|
||||
UINT8 pantspal = ((uiFlag >> 24) & 0xff);
|
||||
|
||||
// Skin
|
||||
if ( (*pObj)[0]->data.sObjectFlag & CORPSE_SKIN_PINK )
|
||||
SET_PALETTEREP_ID( Corpse.SkinPal, "PINKSKIN" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_SKIN_TAN )
|
||||
SET_PALETTEREP_ID( Corpse.SkinPal, "TANSKIN" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_SKIN_DARK )
|
||||
SET_PALETTEREP_ID( Corpse.SkinPal, "DARKSKIN" );
|
||||
else
|
||||
SET_PALETTEREP_ID( Corpse.SkinPal, "BLACKSKIN" );
|
||||
SET_PALETTEREP_ID(Corpse.HeadPal, gpPalRep[headpal].ID);
|
||||
SET_PALETTEREP_ID(Corpse.SkinPal, gpPalRep[skinpal].ID);
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, gpPalRep[vestpal].ID);
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, gpPalRep[pantspal].ID);
|
||||
|
||||
// Vest
|
||||
if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_BROWN )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "BROWNVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_grey )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "greyVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_GREEN )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "GREENVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_JEAN )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "JEANVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_RED )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "REDVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_BLUE )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "BLUEVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_YELLOW )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "YELLOWVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_WHITE )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "WHITEVEST" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_BLACK )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "BLACKSHIRT" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_VEST_GYELLOW )
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "GYELLOWSHIRT" );
|
||||
// also restore camo status
|
||||
if (sCamoFlag > 0)
|
||||
{
|
||||
Corpse.usFlags |= sCamoFlag;
|
||||
}
|
||||
}
|
||||
else
|
||||
SET_PALETTEREP_ID( Corpse.VestPal, "PURPLESHIRT" );
|
||||
{
|
||||
// sevenfm: use default way for standard palette
|
||||
// check the objects flagmask and set the corpse palette IDs accordingly
|
||||
|
||||
// Pants
|
||||
if ( (*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_GREEN )
|
||||
SET_PALETTEREP_ID( Corpse.PantsPal, "GREENPANTS" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_JEAN )
|
||||
SET_PALETTEREP_ID( Corpse.PantsPal, "JEANPANTS" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_TAN )
|
||||
SET_PALETTEREP_ID( Corpse.PantsPal, "TANPANTS" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_BLACK )
|
||||
SET_PALETTEREP_ID( Corpse.PantsPal, "BLACKPANTS" );
|
||||
else if ( (*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_BLUE )
|
||||
SET_PALETTEREP_ID( Corpse.PantsPal, "BLUEPANTS" );
|
||||
else
|
||||
SET_PALETTEREP_ID( Corpse.PantsPal, "BEIGEPANTS" );
|
||||
// Hair
|
||||
if ((*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_BROWN)
|
||||
SET_PALETTEREP_ID(Corpse.HeadPal, "BROWNHEAD");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_BLACK)
|
||||
SET_PALETTEREP_ID(Corpse.HeadPal, "BLACKHEAD");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_WHITE)
|
||||
SET_PALETTEREP_ID(Corpse.HeadPal, "WHITEHEAD");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_HAIR_BLOND)
|
||||
SET_PALETTEREP_ID(Corpse.HeadPal, "BLONDHEAD");
|
||||
else
|
||||
SET_PALETTEREP_ID(Corpse.HeadPal, "REDHEAD");
|
||||
|
||||
// Skin
|
||||
if ((*pObj)[0]->data.sObjectFlag & CORPSE_SKIN_PINK)
|
||||
SET_PALETTEREP_ID(Corpse.SkinPal, "PINKSKIN");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_SKIN_TAN)
|
||||
SET_PALETTEREP_ID(Corpse.SkinPal, "TANSKIN");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_SKIN_DARK)
|
||||
SET_PALETTEREP_ID(Corpse.SkinPal, "DARKSKIN");
|
||||
else
|
||||
SET_PALETTEREP_ID(Corpse.SkinPal, "BLACKSKIN");
|
||||
|
||||
// Vest
|
||||
if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_BROWN)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "BROWNVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_grey)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "greyVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_GREEN)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "GREENVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_JEAN)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "JEANVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_RED)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "REDVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_BLUE)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "BLUEVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_YELLOW)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "YELLOWVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_WHITE)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "WHITEVEST");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_BLACK)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "BLACKSHIRT");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_VEST_GYELLOW)
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "GYELLOWSHIRT");
|
||||
else
|
||||
SET_PALETTEREP_ID(Corpse.VestPal, "PURPLESHIRT");
|
||||
|
||||
// Pants
|
||||
if ((*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_GREEN)
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, "GREENPANTS");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_JEAN)
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, "JEANPANTS");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_TAN)
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, "TANPANTS");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_BLACK)
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, "BLACKPANTS");
|
||||
else if ((*pObj)[0]->data.sObjectFlag & CORPSE_PANTS_BLUE)
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, "BLUEPANTS");
|
||||
else
|
||||
SET_PALETTEREP_ID(Corpse.PantsPal, "BEIGEPANTS");
|
||||
}
|
||||
|
||||
Corpse.ubDirection = NORTH;
|
||||
Corpse.uiTimeOfDeath = GetWorldTotalMin();
|
||||
|
||||
Reference in New Issue
Block a user