void HandleQuestgiverStatusQuery(QuestGiverStatusQuery packet) { QuestGiverStatus questStatus = QuestGiverStatus.None; var questgiver = Global.ObjAccessor.GetObjectByTypeMask(GetPlayer(), packet.QuestGiverGUID, TypeMask.Unit | TypeMask.GameObject); if (!questgiver) { Log.outInfo(LogFilter.Network, "Error in CMSG_QUESTGIVER_STATUS_QUERY, called for non-existing questgiver {0}", packet.QuestGiverGUID.ToString()); return; } switch (questgiver.GetTypeId()) { case TypeId.Unit: if (!questgiver.ToCreature().IsHostileTo(GetPlayer())) // do not show quest status to enemies { questStatus = GetPlayer().GetQuestDialogStatus(questgiver); } break; case TypeId.GameObject: questStatus = GetPlayer().GetQuestDialogStatus(questgiver); break; default: Log.outError(LogFilter.Network, "QuestGiver called for unexpected type {0}", questgiver.GetTypeId()); break; } //inform client about status of quest GetPlayer().PlayerTalkClass.SendQuestGiverStatus(questStatus, packet.QuestGiverGUID); }
public void SendQuestGiverStatus(QuestGiverStatus questStatus, ObjectGuid npcGUID) { var packet = new QuestGiverStatusPkt(); packet.QuestGiver.Guid = npcGUID; packet.QuestGiver.Status = questStatus; _session.SendPacket(packet); }
public override bool Update() { if (!base.Update()) { return(false); } Flags = RefWoWUnit.Flags; Location = RefWoWUnit.Location; IsDead = RefWoWUnit.IsDead; UpdateHitPoints(); if (ObjectCacheManager.IsQuesting || IsQuestNpc) { CanInteract = RefWoWUnit.CanInteract; QuestGiverStatus = RefWoWUnit.QuestGiverStatus; } if (IsDead) { if (ShouldLoot) { Lootable = RefWoWUnit.Lootable; } if (TargetManager.CheckLootFlag(TargetManager.LootFlags.Skinning)) { Skinnable = RefWoWUnit.Skinnable; } } else { TargetGuid = RefWoWUnit.CurrentTargetGuid; if (ShouldKill) { InCombat = RefWoWUnit.Combat; CanSelect = RefWoWUnit.CanSelect; IsEvadeRunningBack = RefWoWUnit.IsEvadeRunningBack; Attackable = RefWoWUnit.Attackable; TaggedByMe = RefWoWUnit.TaggedByMe; IsTagged = RefWoWUnit.IsTagged; } } return(true); }
public QuestGiverInfo(ObjectGuid guid, QuestGiverStatus status) { Guid = guid; Status = status; }
/// <inheritdoc /> public SMSG_QUESTGIVER_STATUS_Payload([NotNull] ObjectGuid queryId, QuestGiverStatus status) : this() { QueryId = queryId ?? throw new ArgumentNullException(nameof(queryId)); Status = status; }
internal static bool UnitHasQuestGiverStatus(uint id, QuestGiverStatus status) { var unit = ObjectCacheManager.GetWoWUnits(id).FirstOrDefault(); return(unit != null && unit.IsValid && unit.RefWoWUnit.QuestGiverStatus == status); }