Skinning a bloodcat yields a bloodcat pelt

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8659 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2019-02-04 20:05:12 +00:00
parent e7e268d957
commit 72c9e94cc2
2 changed files with 48 additions and 20 deletions
+45 -20
View File
@@ -2029,6 +2029,9 @@ BOOLEAN IsValidStripCorpse( ROTTING_CORPSE *pCorpse )
if ( pCorpse->def.ubType == ROTTING_STAGE2 || ((pCorpse->def.usFlags & ROTTING_CORPSE_NO_VEST) && (pCorpse->def.usFlags & ROTTING_CORPSE_NO_PANTS)) ) if ( pCorpse->def.ubType == ROTTING_STAGE2 || ((pCorpse->def.usFlags & ROTTING_CORPSE_NO_VEST) && (pCorpse->def.usFlags & ROTTING_CORPSE_NO_PANTS)) )
return( FALSE ); return( FALSE );
if ( pCorpse->def.ubType == BLOODCAT_DEAD )
return TRUE;
return( CorpseOkToDress(pCorpse) ); return( CorpseOkToDress(pCorpse) );
} }
@@ -2043,31 +2046,53 @@ BOOLEAN StripCorpse( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel )
// can this thing be stripped? // can this thing be stripped?
if ( IsValidStripCorpse( pCorpse ) ) if ( IsValidStripCorpse( pCorpse ) )
{ {
// determine which clothes to spawn if ( pCorpse->def.ubType == BLOODCAT_DEAD )
if ( !(pCorpse->def.usFlags & ROTTING_CORPSE_NO_VEST) )
{ {
UINT16 vestitem = 0; UINT16 peltitem = 232;
if ( GetFirstClothesItemWithSpecificData(&vestitem, pCorpse->def.VestPal, "blank") ) if ( !HasItemFlag( peltitem, SKIN_BLOODCAT ) )
{ GetFirstItemWithFlag( &peltitem, SKIN_BLOODCAT );
CreateItem( vestitem, 100, &gTempObject );
if ( !AutoPlaceObject( pSoldier, &gTempObject, FALSE ) )
AddItemToPool( pSoldier->sGridNo, &gTempObject, VISIBLE, bLevel, 0, -1 );
}
else
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
}
if ( !(pCorpse->def.usFlags & ROTTING_CORPSE_NO_PANTS) ) // status depends on whether the cat pellet has holes in it, and whether we might have a bit of knowledge about skinning
INT16 status = 70;
if ( ( pCorpse->def.usFlags & ROTTING_CORPSE_NO_VEST ) )
status -= 40;
if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, MELEE_NT ) )
status += 5;
if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, DOCTOR_NT ) )
status += 5;
CreateItem( peltitem, status + Random(20), &gTempObject );
if ( !AutoPlaceObject( pSoldier, &gTempObject, FALSE ) )
AddItemToPool( pSoldier->sGridNo, &gTempObject, VISIBLE, bLevel, 0, -1 );
}
else
{ {
UINT16 pantsitem = 0; // determine which clothes to spawn
if ( GetFirstClothesItemWithSpecificData(&pantsitem, "blank", pCorpse->def.PantsPal) ) if ( !( pCorpse->def.usFlags & ROTTING_CORPSE_NO_VEST ) )
{ {
CreateItem( pantsitem, 100, &gTempObject ); UINT16 vestitem = 0;
if ( !AutoPlaceObject( pSoldier, &gTempObject, FALSE ) ) if ( GetFirstClothesItemWithSpecificData( &vestitem, pCorpse->def.VestPal, "blank" ) )
AddItemToPool( pSoldier->sGridNo, &gTempObject, VISIBLE, bLevel, 0, -1 ); {
CreateItem( vestitem, 100, &gTempObject );
if ( !AutoPlaceObject( pSoldier, &gTempObject, FALSE ) )
AddItemToPool( pSoldier->sGridNo, &gTempObject, VISIBLE, bLevel, 0, -1 );
}
else
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
}
if ( !( pCorpse->def.usFlags & ROTTING_CORPSE_NO_PANTS ) )
{
UINT16 pantsitem = 0;
if ( GetFirstClothesItemWithSpecificData( &pantsitem, "blank", pCorpse->def.PantsPal ) )
{
CreateItem( pantsitem, 100, &gTempObject );
if ( !AutoPlaceObject( pSoldier, &gTempObject, FALSE ) )
AddItemToPool( pSoldier->sGridNo, &gTempObject, VISIBLE, bLevel, 0, -1 );
}
else
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
} }
else
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szCovertTextStr[STR_COVERT_NO_CLOTHES_ITEM] );
} }
// we took the clothes, mark this // we took the clothes, mark this
+3
View File
@@ -6288,6 +6288,9 @@ void SOLDIERTYPE::EVENT_SoldierGotHit( UINT16 usWeaponIndex, INT16 sDamage, INT1
case BLOODCAT: case BLOODCAT:
this->EVENT_InitNewSoldierAnim( BLOODCAT_HIT, 0, FALSE ); this->EVENT_InitNewSoldierAnim( BLOODCAT_HIT, 0, FALSE );
if ( Item[usWeaponIndex].usItemClass & ( IC_EXPLOSV | IC_BOBBY_GUN ) )
this->usSoldierFlagMask |= SOLDIER_DAMAGED_VEST;
return; return;
break; break;