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); }