public static Container Mobile_CreateCorpseHandler(Mobile owner, HairInfo hair, FacialHairInfo facialhair, List <Item> initialContent, List <Item> equipItems)
{
bool shouldFillCorpse = true;
Corpse c = null;
if (owner == null)
{
return(c);
}
c = new Corpse(owner, hair, facialhair, shouldFillCorpse ? equipItems : new List <Item>());
if (c == null)
{
return(c);
}
owner.Corpse = c;
if (shouldFillCorpse)
{
for (int i = 0; i < initialContent.Count; ++i)
{
Item item = initialContent[i];
if (item == null)
{
continue;
}
c.DropItem(item);
}
}
else
{
c.Carved = true;
}
Point3D loc = owner.Location;
Map map = owner.Map;
if (map == null || map == Map.Internal)
{
loc = owner.LogoutLocation;
map = owner.LogoutMap;
}
c.MoveToWorld(loc, map);
//Creature or Player Ocean Corpse Advanced Decay Rate
if (!(c.Map == null || c.Map == Map.Internal))
{
if (c.Map.Tiles != null)
{
LandTile landTile = c.Map.Tiles.GetLandTile(c.X, c.Y);
StaticTile[] tiles = c.Map.Tiles.GetStaticTiles(c.X, c.Y, true);
bool landHasWater = false;
bool staticHasWater = false;
if ((landTile.ID >= 168 && landTile.ID <= 171) || (landTile.ID >= 310 && landTile.ID <= 311))
{
landHasWater = true;
}
for (int i = 0; i < tiles.Length; ++i)
{
StaticTile tile = tiles[i];
bool isWater = (tile.ID >= 0x1796 && tile.ID <= 0x17B2);
if (isWater)
{
staticHasWater = true;
}
}
if ((landHasWater || staticHasWater) && c.TotalItems == 0)
{
if (c.m_DecayTimer != null)
{
c.m_DecayTimer.Stop();
}
//Empty PlayerMobile is 30 Seconds Decay
if (c.Owner is PlayerMobile)
{
c.BeginDecay(TimeSpan.FromSeconds(30));
}
//Empty Creature is 10 Seconds Decay
else
{
c.BeginDecay(TimeSpan.FromSeconds(10));
}
}
}
}
return(c);
}