Fixed appearance validation

Implemented proper facial hair validation
Implemented transmog Set
fix interaction of spells like Shadowmeld with Threat reducing effects
This commit is contained in:
hondacrx
2017-08-24 18:01:44 -04:00
parent 7934d51702
commit 0707f9b377
71 changed files with 2968 additions and 632 deletions
+37 -7
View File
@@ -540,6 +540,11 @@ namespace Game.Entities
{
AddQuest(quest, questGiver);
foreach (QuestObjective obj in quest.Objectives)
if (obj.Type == QuestObjectiveType.CriteriaTree)
if (m_questObjectiveCriteriaMgr.HasCompletedObjective(obj))
KillCreditCriteriaTreeObjective(obj);
if (CanCompleteQuest(quest.Id))
CompleteQuest(quest.Id);
@@ -700,11 +705,20 @@ namespace Game.Entities
foreach (QuestObjective obj in quest.Objectives)
{
if (obj.Type == QuestObjectiveType.MinReputation || obj.Type == QuestObjectiveType.MaxReputation)
switch (obj.Type)
{
FactionRecord factionEntry = CliDB.FactionStorage.LookupByKey(obj.ObjectID);
if (factionEntry != null)
GetReputationMgr().SetVisible(factionEntry);
case QuestObjectiveType.MinReputation:
case QuestObjectiveType.MaxReputation:
FactionRecord factionEntry = CliDB.FactionStorage.LookupByKey(obj.ObjectID);
if (factionEntry != null)
GetReputationMgr().SetVisible(factionEntry);
break;
case QuestObjectiveType.CriteriaTree:
if (quest.HasFlagEx(QuestFlagsEx.ClearProgressOfCriteriaTreeObjectivesOnAccept))
m_questObjectiveCriteriaMgr.ResetCriteriaTree((uint)obj.ObjectID);
break;
default:
break;
}
}
@@ -1423,7 +1437,7 @@ namespace Game.Entities
public bool SatisfyQuestConditions(Quest qInfo, bool msg)
{
if (!Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.QuestAccept, qInfo.Id, this))
if (!Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.QuestAvailable, qInfo.Id, this))
{
if (msg)
{
@@ -1818,7 +1832,7 @@ namespace Game.Entities
if (quest == null)
continue;
if (!Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.QuestAccept, quest.Id, this))
if (!Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.QuestAvailable, quest.Id, this))
continue;
QuestStatus status = GetQuestStatus(questId);
@@ -1844,7 +1858,7 @@ namespace Game.Entities
if (quest == null)
continue;
if (!Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.QuestAccept, quest.Id, this))
if (!Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.QuestAvailable, quest.Id, this))
continue;
QuestStatus status = GetQuestStatus(questId);
@@ -2273,6 +2287,21 @@ namespace Game.Entities
}
}
public void KillCreditCriteriaTreeObjective(QuestObjective questObjective)
{
if (questObjective.Type != QuestObjectiveType.CriteriaTree)
return;
if (GetQuestStatus(questObjective.QuestID) == QuestStatus.Incomplete)
{
SetQuestObjectiveData(questObjective, 1);
SendQuestUpdateAddCreditSimple(questObjective);
if (CanCompleteQuest(questObjective.QuestID))
CompleteQuest(questObjective.QuestID);
}
}
public void TalkedToCreature(uint entry, ObjectGuid guid)
{
ushort addTalkCount = 1;
@@ -2579,6 +2608,7 @@ namespace Game.Entities
return false;
break;
case QuestObjectiveType.AreaTrigger:
case QuestObjectiveType.CriteriaTree:
if (GetQuestObjectiveData(quest, objective.StorageIndex) == 0)
return false;
break;