public void Update(SNpcOccupierInfo message) { if (message.HasReset) { AggroRegistered.Remove(message.NPC); return; } if (!AggroRegistered.Contains(message.NPC)) { // Add a arbitrary dummy damage to auto start fight timer on aggro AggroRegistered.Add(message.NPC); UpdateDamageTracker(new SkillResult(0, false, true, false, HotDotDatabase.Enraged, message.Target, message.NPC, message.Time, EntityTracker, PlayerTracker)); } }
public void HadleNpcOccupierInfo(SNpcOccupierInfo message) { if (!message.HasReset) { return; } _bosses.RemoveAll(boss => boss.Id == message.NPC); _bossHps.Remove(message.NPC); if (_bosses.Count == 0) { _fightStarted = null; } UpdatePresence(); }
public void UpdateEntities(SNpcOccupierInfo npcOccupierResult) { PacketProcessor.Instance.AbnormalityTracker.Update(npcOccupierResult); if (!npcOccupierResult.HasReset) { Debug.WriteLine("S_NPC_OCCUPIER_INFO: NPC = " + npcOccupierResult.NPC + "; target = " + npcOccupierResult.Target + " ; Engager = " + npcOccupierResult.Engager); return; } var entity = PacketProcessor.Instance.EntityTracker.GetOrNull(npcOccupierResult.NPC); if (!(entity is NpcEntity)) { return; } var npcEntity = entity as NpcEntity; if (npcEntity.Info.Boss) { _toDelete.Add(entity); } }
public NpcOccupierResult(SNpcOccupierInfo message) { HasReset = message.Target == EntityId.Empty; Npc = message.NPC; }