protected override void SetDeath(Unit killer) { Health = 0; PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECT_DEATH, 12); Out.WriteUInt16(Oid); Out.WriteByte(1); Out.WriteByte(0); Out.WriteUInt16(killer.IsPet() ? killer.GetPet().Owner.Oid : killer.Oid); Out.Fill(0, 6); DispatchPacket(Out, true); AbtInterface.Cancel(true); ScrInterface.OnDie(this); BuffInterface.RemoveBuffsOnDeath(); EvtInterface.Notify(EventName.OnDie, this, killer); Pet pet = killer as Pet; Player credited = (pet != null) ? pet.Owner : (killer as Player); if (credited != null) { HandleDeathRewards(credited); } ClearTrackedDamage(); _buildState = EConstructionState.Destroying; foreach (Player plr in _interactors) { plr.Palisade = null; } _interactors.Clear(); foreach (NewBuff buff in _interactionBuffs) { buff.BuffHasExpired = true; } _interactionBuffs.Clear(); GroundTarget gt = new GroundTarget(_constructor, new Point3D(WorldPosition), GameObjectService.GetGameObjectProto(23)); Region.AddObject(gt, Zone.ZoneId); gt.BuffInterface.QueueBuff(new BuffQueueInfo(_constructor, 40, AbilityMgr.GetBuffInfo(23762))); gt.SetExpiry(TCPManager.GetTimeStampMS() + 5000); }
protected override void SetDeath(Unit killer) { base.SetDeath(killer); Pet pet = killer as Pet; Player credited = (pet != null) ? pet.Owner : (killer as Player); if (credited != null) { HandleXPRenown(credited); } SiegeInterface.RemoveAllPlayers(); Health = 0; States.Add((byte)CreatureState.Dead); // Death State PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECT_DEATH, 12); Out.WriteUInt16(Oid); Out.WriteByte(1); Out.WriteByte(0); Out.WriteUInt16(killer.IsPet() ? killer.GetPet().Owner.Oid : killer.Oid); Out.Fill(0, 6); DispatchPacket(Out, true); switch (_type) { case SiegeType.OIL: EvtInterface.AddEvent(Destroy, 180000, 1); // Oil is replacable after 180 seconds break; case SiegeType.GTAOE: case SiegeType.SNIPER: EvtInterface.AddEvent(Destroy, 30000, 1); break; case SiegeType.RAM: EvtInterface.AddEvent(Destroy, 30000, 1); break; } }
protected override void SetDeath(Unit killer) { Health = 0; States.Add((byte)CreatureState.Dead); // Death State PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECT_DEATH, 12); Out.WriteUInt16(Oid); Out.WriteByte(1); Out.WriteByte(0); Out.WriteUInt16(killer.IsPet() ? killer.GetPet().Owner.Oid : killer.Oid); Out.Fill(0, 6); DispatchPacket(Out, true); AbtInterface.Cancel(true); ScrInterface.OnDie(this); BuffInterface.RemoveBuffsOnDeath(); EvtInterface.Notify(EventName.OnDie, this, killer); AiInterface.ProcessCombatEnd(); EvtInterface.AddEvent(RezUnit, 10000, 1); // Clear the object in 10 seconds. if (_ownerUILinked) { SendPetRemove(true); IPetCareerInterface petInterface = Owner.CrrInterface as IPetCareerInterface; petInterface?.Notify_PetDown(); _ownerUILinked = false; } }