protected override void SetDeath(Unit killer)
        {
            Health = 0;

            States.Add((byte)CreatureState.Dead);

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

            AiInterface.ProcessCombatEnd();

            SetRespawnTimer();

            EvtInterface.RemoveEventNotify(EventName.OnReceiveDamage, OnReceiveDamage);

            if (!FlagGuard.Info.KeepLord)
            {
                _keep.OnKeepNpcAttacked(0);
                return;
            }

            /*Log.Info(_keep.Info.Name, (_keep.Realm == Realms.REALMS_REALM_ORDER ? "Order" : "Destruction") + " keep lord slain by " + killer.Name + " of " + (killer.Realm == Realms.REALMS_REALM_ORDER ? "Order" : "Destruction"));*/

            if (_keep.Realm == killer.Realm)
            {
                /*if (FlagGuard.Info.KeepLord)
                 *  Log.Info(_keep.Info.Name, (_keep.Realm == Realms.REALMS_REALM_ORDER ? "Order" : "Destruction") + " keep lord respawned.");*/
                _logger.Debug($"Kill request from own realm {killer.Name} {_keep.Realm}");
                FlagGuard.Creature = new KeepCreature(Spawn, FlagGuard, _keep);
                Region.AddObject(FlagGuard.Creature, Spawn.ZoneId);
                Destroy();
            }
            else
            {
                _keep.OnLordKilled();
            }
        }
Exemple #2
0
        public override void Update(long msTick)
        {
            if (PendingDisposal)
            {
                Dispose();
                return;
            }

            BuffInterface.Update(msTick);
            EvtInterface.Update(msTick);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        public override void Update(long msTick)
        {
            if (!_hasExploded && msTick > _nextCheckInterval)
            {
                foreach (var obj in ObjectsInRange)
                {
                    Unit victim = obj as Unit;

                    if (victim == null || victim.IsDead)
                    {
                        continue;
                    }

                    if (!(victim is Player) && !(victim is Creature))
                    {
                        continue;
                    }

                    if (victim.Realm != Owner.Realm && ObjectWithinRadiusFeet(victim, 30))
                    {
                        BuffInterface.NotifyCombatEvent((byte)BuffCombatEvents.Manual, null, victim);

                        _hasExploded = true;
                        return;
                    }
                }

                _nextCheckInterval = msTick + 1000;
            }

            if (PendingDisposal)
            {
                Dispose();
                return;
            }

            BuffInterface.Update(msTick);
            EvtInterface.Update(msTick);
        }
Exemple #5
0
        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;
            }
        }
 public override void Initialize(Unit caster, Unit target, ushort buffId, byte buffLevel, byte stackLevel, BuffInfo myBuffInfo, BuffInterface parentInterface)
 {
     base.Initialize(caster, target, buffId, buffLevel, stackLevel, myBuffInfo, parentInterface);
     previousPlayers.Add(target);
 }
Exemple #7
0
        public override void Initialize(Unit caster, Unit target, ushort buffId, byte buffLevel, byte stackLevel, BuffInfo myBuffInfo, BuffInterface parentInterface)
        {
            base.Initialize(caster, target, buffId, buffLevel, stackLevel, myBuffInfo, parentInterface);

            _myPlayer = caster as Player;

            switch (_buffInfo.AuraPropagation)
            {
            case "Group":
                _groupTargetList        = new Dictionary <Unit, NewBuff>();
                _groupPendingTargetList = new List <NewBuff>();
                break;

            case "Foe":
            case "Foe20":
            case "Foe30":
            case "Foe40":
            case "Foe250":
                _otherTargetList        = new Dictionary <Unit, AuraInfo>();
                _otherPendingTargetList = new List <NewBuff>();
                break;

            case "All":
                _groupTargetList        = new Dictionary <Unit, NewBuff>();
                _groupPendingTargetList = new List <NewBuff>();
                _otherTargetList        = new Dictionary <Unit, AuraInfo>();
                _otherPendingTargetList = new List <NewBuff>();
                break;

            case "HTL":
                _otherTargetList        = new Dictionary <Unit, AuraInfo>();
                _otherPendingTargetList = new List <NewBuff>();
                break;
            }

            _propInterval = Entry == 9251 || Entry == 1927 ? 250 : 1000;
        }