public void Die(uint killer)
public void Die(uint killer) { if (MyClones.Count != 0) { foreach (var clone in MyClones) clone.RemoveThat(); MyClones.Clear(); } if (PlayerFlag == PlayerFlag.Player) { Owner.XPCount = 0; if (Owner.Booth != null) { Owner.Booth.Remove(); Owner.Booth = null; } } Killed = true; Hitpoints = 0; DeathStamp = Time32.Now; ToxicFogLeft = 0; if (Companion) { if (Hitpoints < 1) { Hitpoints = 0; AddFlag((ulong)MsgUpdate.Flags.Ghost | (ulong)MsgUpdate.Flags.Dead | (ulong)MsgUpdate.Flags.FadeAway); MsgInteract attack = new MsgInteract(true); attack.Attacked = UID; attack.InteractType = MsgInteract.Kill; attack.X = X; attack.Y = Y; MonsterInfo.SendScreen(attack); Owner.Map.RemoveEntity(this); Owner.Pet.RemovePet(pettype); } } if (PlayerFlag == PlayerFlag.Player) { Owner.Pet.ClearAll(); } if (PlayerFlag == PlayerFlag.Player) { if (Constants.PKFreeMaps.Contains(MapID)) goto Over; Over: AddFlag((ulong)MsgUpdate.Flags.Dead); AddFlag((ulong)MsgUpdate.Flags.Ghost); RemoveFlag((ulong)MsgUpdate.Flags.Fly); RemoveFlag((ulong)MsgUpdate.Flags.Ride); RemoveFlag((ulong)MsgUpdate.Flags.Cyclone); RemoveFlag((ulong)MsgUpdate.Flags.Superman); RemoveFlag((ulong)MsgUpdate.Flags.FatalStrike); RemoveFlag((ulong)MsgUpdate.Flags.FlashingName); RemoveFlag((ulong)MsgUpdate.Flags.ShurikenVortex); RemoveFlag((ulong)MsgUpdate.Flags.CastPray); RemoveFlag((ulong)MsgUpdate.Flags.Praying); RemoveFlag2((ulong)MsgUpdate.Flags2.Oblivion); RemoveFlag3((ulong)MsgUpdate.Flags3.SuperCyclone); RemoveFlag3((ulong)MsgUpdate.Flags3.DragonCyclone); RemoveFlag2((ulong)MsgUpdate.Flags2.AzureShield); RemoveFlag((ulong)MsgUpdate.Flags.GodlyShield); RemoveFlag2((ulong)MsgUpdate.Flags2.CarryingFlag); RemoveFlag3((ulong)MsgUpdate.Flags3.BackFire); RemoveFlag2((ulong)MsgUpdate.Flags2.EarthAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.FireAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.WaterAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.WoodAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.MetalAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.FendAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.TyrantAuraIcon); RemoveFlag2((ulong)MsgUpdate.Flags2.EarthAura); RemoveFlag2((ulong)MsgUpdate.Flags2.FireAura); RemoveFlag2((ulong)MsgUpdate.Flags2.WaterAura); RemoveFlag2((ulong)MsgUpdate.Flags2.WoodAura); RemoveFlag2((ulong)MsgUpdate.Flags2.MetalAura); RemoveFlag2((ulong)MsgUpdate.Flags2.FendAura); RemoveFlag2((ulong)MsgUpdate.Flags2.TyrantAura); RemoveFlag3((ulong)MsgUpdate.Flags3.WarriorEpicShield); RemoveFlag3((ulong)MsgUpdate.Flags3.FlameLayer); RemoveFlag3((ulong)MsgUpdate.Flags3.FlameLayer2); RemoveFlag3((ulong)MsgUpdate.Flags3.FlameLayer3); RemoveFlag3((ulong)MsgUpdate.Flags3.FlameLayer4); RemoveFlag3((ulong)MsgUpdate.Flags3.BladeFlurry); RemoveFlag4(MsgUpdate.Flags4.Omnipotence); RemoveFlag4(MsgUpdate.Flags4.RevengeTaill); RemoveFlag4(MsgUpdate.Flags4.ChillingSnow); RemoveFlag4(MsgUpdate.Flags4.FreezingPelter); RemoveFlag4((ulong)MsgUpdate.Flags4.RevengeTaill); RemoveFlag4(MsgUpdate.Flags4.HealingSnow); RemoveFlag4(MsgUpdate.Flags4.ShadowofChaser); RemoveFlag4(MsgUpdate.Flags4.ImmortalForce); if (ContainsFlag3((ulong)MsgUpdate.Flags3.AuroraLotus)) { AuroraLotusEnergy = 0; Lotus(AuroraLotusEnergy, (byte)MsgUpdate.DataType.AuroraLotus); } if (ContainsFlag3((ulong)MsgUpdate.Flags3.FlameLotus)) { FlameLotusEnergy = 0; Lotus(FlameLotusEnergy, (byte)MsgUpdate.DataType.FlameLotus); } Update(MsgName.Mode.Effect, "pie", true); MsgInteract Interact = new MsgInteract(true); Interact.InteractType = MsgInteract.Kill; Interact.X = X; Interact.Y = Y; Interact.Attacked = UID; Interact.Attacker = killer; Interact.Damage = 0; Owner.SendScreen(Interact, true); GodlyShield = false; Owner.removeAuraBonuses(Aura_actType, Aura_actPower, 1); Aura_isActive = false; Aura_actType = 0; Aura_actPower = 0; if (Body == 2005) { TransformationID = 99; } else if (Body == 1006) { TransformationID = 98; } Owner.Send(new MsgMapInfo() { BaseID = Owner.Map.BaseID, ID = Owner.Map.ID, Status = Database.MapsTable.MapInformations[Owner.Map.ID].Status, Weather = Database.MapsTable.MapInformations[Owner.Map.ID].Weather }); Owner.EndQualifier(); } else { Kernel.Maps[MapID].Floor[X, Y, MapObjType, this] = true; } if (PlayerFlag == PlayerFlag.Player) if (OnDeath != null) OnDeath(this); }