Core/Creatures: Implemented serverside checks for UNIT_FLAG2_INTERACT_WHILE_HOSTILE and UNIT_FLAG3_ALLOW_INTERACTION_WHILE_IN_COMBAT

* Also stop sending npc flags for hostile creatures
Port From (https://github.com/TrinityCore/TrinityCore/commit/c2e36dea6c6af6139bf60454e9299447ec7d9897)
This commit is contained in:
hondacrx
2024-03-05 18:16:38 -05:00
parent 0325d8b523
commit e646b8008d
8 changed files with 125 additions and 39 deletions
+4 -18
View File
@@ -17,28 +17,14 @@ namespace Game
[WorldPacketHandler(ClientOpcodes.QuestGiverStatusQuery, Processing = PacketProcessing.Inplace)]
void HandleQuestgiverStatusQuery(QuestGiverStatusQuery packet)
{
QuestGiverStatus questStatus = QuestGiverStatus.None;
var questgiver = Global.ObjAccessor.GetObjectByTypeMask(GetPlayer(), packet.QuestGiverGUID, TypeMask.Unit | TypeMask.GameObject);
if (questgiver == null)
var questGiver = Global.ObjAccessor.GetObjectByTypeMask(GetPlayer(), packet.QuestGiverGUID, TypeMask.Unit | TypeMask.GameObject);
if (questGiver == null)
{
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;
}
QuestGiverStatus questStatus = _player.GetQuestDialogStatus(questGiver);
//inform client about status of quest
GetPlayer().PlayerTalkClass.SendQuestGiverStatus(questStatus, packet.QuestGiverGUID);
@@ -396,7 +382,7 @@ namespace Game
if (GetPlayer().GetQuestStatus(packet.QuestID) != QuestStatus.Complete)
return;
GetPlayer().PlayerTalkClass.SendQuestGiverOfferReward(quest, packet.QuestGiverGUID, true);
}