Merge branch 'master' into Playerbot
This commit is contained in:
@@ -689,12 +689,9 @@ bool AuthSession::HandleReconnectProof()
|
||||
if (_accountInfo.Login.empty())
|
||||
return false;
|
||||
|
||||
BigNumber t1;
|
||||
t1.SetBinary(reconnectProof->R1, 16);
|
||||
|
||||
Acore::Crypto::SHA1 sha;
|
||||
sha.UpdateData(_accountInfo.Login);
|
||||
sha.UpdateData(t1.ToByteArray<16>());
|
||||
sha.UpdateData(reconnectProof->R1, 16);
|
||||
sha.UpdateData(_reconnectProof);
|
||||
sha.UpdateData(_sessionKey);
|
||||
sha.Finalize();
|
||||
|
||||
@@ -962,9 +962,19 @@ uint32 SmartAI::GetData(uint32 /*id*/) const
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SmartAI::SetData(uint32 id, uint32 value, Unit* invoker)
|
||||
void SmartAI::SetData(uint32 id, uint32 value, WorldObject* invoker)
|
||||
{
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, invoker, id, value);
|
||||
Unit* unit = nullptr;
|
||||
GameObject* gob = nullptr;
|
||||
|
||||
if (invoker)
|
||||
{
|
||||
unit = invoker->ToUnit();
|
||||
if (!unit)
|
||||
gob = invoker->ToGameObject();
|
||||
}
|
||||
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, unit, id, value, false, nullptr, gob);
|
||||
}
|
||||
|
||||
void SmartAI::SetGUID(ObjectGuid /*guid*/, int32 /*id*/)
|
||||
@@ -1132,7 +1142,7 @@ void SmartAI::MoveAway(float distance)
|
||||
}
|
||||
}
|
||||
|
||||
void SmartAI::SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker)
|
||||
void SmartAI::SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker)
|
||||
{
|
||||
if (invoker)
|
||||
GetScript()->mLastInvoker = invoker->GetGUID();
|
||||
@@ -1232,12 +1242,22 @@ void SmartGameObjectAI::Destroyed(Player* player, uint32 eventId)
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_DEATH, player, eventId, 0, false, nullptr, me);
|
||||
}
|
||||
|
||||
void SmartGameObjectAI::SetData(uint32 id, uint32 value, Unit* invoker)
|
||||
void SmartGameObjectAI::SetData(uint32 id, uint32 value, WorldObject* invoker)
|
||||
{
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, invoker, id, value);
|
||||
Unit* unit = nullptr;
|
||||
GameObject* gob = nullptr;
|
||||
|
||||
if (invoker)
|
||||
{
|
||||
unit = invoker->ToUnit();
|
||||
if (!unit)
|
||||
gob = invoker->ToGameObject();
|
||||
}
|
||||
|
||||
GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, unit, id, value, false, nullptr, gob);
|
||||
}
|
||||
|
||||
void SmartGameObjectAI::SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker)
|
||||
void SmartGameObjectAI::SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker)
|
||||
{
|
||||
if (invoker)
|
||||
GetScript()->mLastInvoker = invoker->GetGUID();
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
void StopFollow(bool complete);
|
||||
void MoveAway(float distance);
|
||||
|
||||
void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker);
|
||||
void SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker);
|
||||
SmartScript* GetScript() { return &mScript; }
|
||||
bool IsEscortInvokerInRange();
|
||||
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
|
||||
// Used in scripts to share variables
|
||||
void SetData(uint32 id, uint32 value) override { SetData(id, value, nullptr); }
|
||||
void SetData(uint32 id, uint32 value, Unit* invoker);
|
||||
void SetData(uint32 id, uint32 value, WorldObject* invoker);
|
||||
|
||||
// Used in scripts to share variables
|
||||
void SetGUID(ObjectGuid guid, int32 id = 0) override;
|
||||
@@ -274,8 +274,8 @@ public:
|
||||
bool QuestReward(Player* player, Quest const* quest, uint32 opt) override;
|
||||
void Destroyed(Player* player, uint32 eventId) override;
|
||||
void SetData(uint32 id, uint32 value) override { SetData(id, value, nullptr); }
|
||||
void SetData(uint32 id, uint32 value, Unit* invoker);
|
||||
void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker);
|
||||
void SetData(uint32 id, uint32 value, WorldObject* invoker);
|
||||
void SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker);
|
||||
void OnGameEvent(bool start, uint16 eventId) override;
|
||||
void OnStateChanged(uint32 state, Unit* unit) override;
|
||||
void EventInform(uint32 eventId) override;
|
||||
|
||||
@@ -167,21 +167,29 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
|
||||
if (unit)
|
||||
mLastInvoker = unit->GetGUID();
|
||||
else if (gob)
|
||||
mLastInvoker = gob->GetGUID();
|
||||
|
||||
if (Unit* tempInvoker = GetLastInvoker())
|
||||
if (WorldObject* tempInvoker = GetLastInvoker())
|
||||
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction: Invoker: {} ({})", tempInvoker->GetName(), tempInvoker->GetGUID().ToString());
|
||||
|
||||
bool isControlled = e.action.moveToPos.controlled > 0;
|
||||
|
||||
ObjectVector targets;
|
||||
GetTargets(targets, e, unit);
|
||||
WorldObject* invoker = nullptr;
|
||||
if (unit)
|
||||
invoker = unit;
|
||||
else if (gob)
|
||||
invoker = gob;
|
||||
|
||||
GetTargets(targets, e, invoker);
|
||||
|
||||
switch (e.GetActionType())
|
||||
{
|
||||
case SMART_ACTION_TALK:
|
||||
{
|
||||
Creature* talker = e.target.type == 0 ? me : nullptr;
|
||||
Unit* talkTarget = nullptr;
|
||||
WorldObject* talkTarget = nullptr;
|
||||
|
||||
for (WorldObject* target : targets)
|
||||
{
|
||||
@@ -232,7 +240,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
sCreatureTextMgr->SendChat(target->ToCreature(), uint8(e.action.simpleTalk.textGroupID), IsPlayer(GetLastInvoker()) ? GetLastInvoker() : 0);
|
||||
else if (IsPlayer(target) && me)
|
||||
{
|
||||
Unit* templastInvoker = GetLastInvoker();
|
||||
WorldObject* templastInvoker = GetLastInvoker();
|
||||
sCreatureTextMgr->SendChat(me, uint8(e.action.simpleTalk.textGroupID), IsPlayer(templastInvoker) ? templastInvoker : 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_NEUTRAL, false, target->ToPlayer());
|
||||
}
|
||||
|
||||
@@ -783,7 +791,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
case SMART_ACTION_INVOKER_CAST:
|
||||
{
|
||||
// Can be used for area trigger cast
|
||||
Unit* tempLastInvoker = GetLastInvoker(unit);
|
||||
WorldObject* tempLastInvoker = GetLastInvoker(unit);
|
||||
if (!tempLastInvoker)
|
||||
break;
|
||||
|
||||
@@ -798,11 +806,14 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
if (!IsUnit(target))
|
||||
continue;
|
||||
|
||||
if (!IsUnit(tempLastInvoker))
|
||||
continue;
|
||||
|
||||
if (!(e.action.cast.castFlags & SMARTCAST_AURA_NOT_PRESENT) || !target->ToUnit()->HasAura(e.action.cast.spell))
|
||||
{
|
||||
if (e.action.cast.castFlags & SMARTCAST_INTERRUPT_PREVIOUS)
|
||||
{
|
||||
tempLastInvoker->InterruptNonMeleeSpells(false);
|
||||
tempLastInvoker->ToUnit()->InterruptNonMeleeSpells(false);
|
||||
}
|
||||
|
||||
TriggerCastFlags triggerFlags = TRIGGERED_NONE;
|
||||
@@ -818,7 +829,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
}
|
||||
}
|
||||
|
||||
tempLastInvoker->CastSpell(target->ToUnit(), e.action.cast.spell, triggerFlags);
|
||||
tempLastInvoker->ToUnit()->CastSpell(target->ToUnit(), e.action.cast.spell, triggerFlags);
|
||||
LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_INVOKER_CAST: Invoker {} casts spell {} on target {} with castflags {}",
|
||||
tempLastInvoker->GetGUID().ToString(), e.action.cast.spell, target->GetGUID().ToString(), e.action.cast.castFlags);
|
||||
}
|
||||
@@ -1397,16 +1408,28 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
if (Creature* cTarget = target->ToCreature())
|
||||
{
|
||||
CreatureAI* ai = cTarget->AI();
|
||||
if (IsSmart(cTarget))
|
||||
ENSURE_AI(SmartAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me);
|
||||
// Make sure we check that the sender is either a creature or gameobject
|
||||
if (IsSmart(cTarget, true) && (me || go))
|
||||
{
|
||||
if (me)
|
||||
ENSURE_AI(SmartAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me);
|
||||
else
|
||||
ENSURE_AI(SmartAI, ai)->SetData(e.action.setData.field, e.action.setData.data, go);
|
||||
}
|
||||
else
|
||||
ai->SetData(e.action.setData.field, e.action.setData.data);
|
||||
}
|
||||
else if (GameObject* oTarget = target->ToGameObject())
|
||||
{
|
||||
GameObjectAI* ai = oTarget->AI();
|
||||
if (IsSmart(oTarget))
|
||||
ENSURE_AI(SmartGameObjectAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me);
|
||||
// Make sure we check that the sender is either a creature or gameobject
|
||||
if (IsSmart(oTarget, true) && (me || go))
|
||||
{
|
||||
if (me)
|
||||
ENSURE_AI(SmartGameObjectAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me);
|
||||
else
|
||||
ENSURE_AI(SmartGameObjectAI, ai)->SetData(e.action.setData.field, e.action.setData.data, go);
|
||||
}
|
||||
else
|
||||
ai->SetData(e.action.setData.field, e.action.setData.data);
|
||||
}
|
||||
@@ -2900,7 +2923,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
|
||||
if (e.action.setGuid.invokerGUID)
|
||||
{
|
||||
if (Unit* invoker = GetLastInvoker())
|
||||
if (WorldObject* invoker = GetLastInvoker())
|
||||
{
|
||||
guidToSend = invoker->GetGUID();
|
||||
}
|
||||
@@ -3318,12 +3341,12 @@ SmartScriptHolder SmartScript::CreateSmartEvent(SMART_EVENT e, uint32 event_flag
|
||||
return script;
|
||||
}
|
||||
|
||||
void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, Unit* invoker /*= nullptr*/) const
|
||||
void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, WorldObject* invoker /*= nullptr*/) const
|
||||
{
|
||||
Unit* scriptTrigger = nullptr;
|
||||
WorldObject* scriptTrigger = nullptr;
|
||||
if (invoker)
|
||||
scriptTrigger = invoker;
|
||||
else if (Unit* tempLastInvoker = GetLastInvoker())
|
||||
else if (WorldObject* tempLastInvoker = GetLastInvoker())
|
||||
scriptTrigger = tempLastInvoker;
|
||||
|
||||
WorldObject* baseObject = GetBaseObject();
|
||||
@@ -3399,8 +3422,9 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e,
|
||||
targets.push_back(scriptTrigger);
|
||||
break;
|
||||
case SMART_TARGET_ACTION_INVOKER_VEHICLE:
|
||||
if (scriptTrigger && scriptTrigger->GetVehicle() && scriptTrigger->GetVehicle()->GetBase())
|
||||
targets.push_back(scriptTrigger->GetVehicle()->GetBase());
|
||||
if (scriptTrigger && IsUnit(scriptTrigger))
|
||||
if (scriptTrigger->ToUnit()->GetVehicle() && scriptTrigger->ToUnit()->GetVehicle()->GetBase())
|
||||
targets.push_back(scriptTrigger->ToUnit()->GetVehicle()->GetBase());
|
||||
break;
|
||||
case SMART_TARGET_INVOKER_PARTY:
|
||||
if (scriptTrigger)
|
||||
@@ -4323,7 +4347,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
|
||||
if (e.event.dataSet.id != var0 || e.event.dataSet.value != var1)
|
||||
return;
|
||||
RecalcTimer(e, e.event.dataSet.cooldownMin, e.event.dataSet.cooldownMax);
|
||||
ProcessAction(e, unit, var0, var1);
|
||||
ProcessAction(e, unit, var0, var1, false, nullptr, gob);
|
||||
break;
|
||||
}
|
||||
case SMART_EVENT_PASSENGER_REMOVED:
|
||||
@@ -4352,11 +4376,16 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
|
||||
case SMART_EVENT_EVENT_PHASE_CHANGE:
|
||||
{
|
||||
if (!IsInPhase(e.event.eventPhaseChange.phasemask))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ProcessAction(e, GetLastInvoker());
|
||||
WorldObject* templastInvoker = GetLastInvoker();
|
||||
if (!templastInvoker)
|
||||
return;
|
||||
|
||||
if (!IsUnit(templastInvoker))
|
||||
return;
|
||||
|
||||
ProcessAction(e, templastInvoker->ToUnit());
|
||||
break;
|
||||
}
|
||||
case SMART_EVENT_GAME_EVENT_START:
|
||||
@@ -5178,14 +5207,14 @@ void SmartScript::SetScript9(SmartScriptHolder& e, uint32 entry)
|
||||
}
|
||||
}
|
||||
|
||||
Unit* SmartScript::GetLastInvoker(Unit* invoker) const
|
||||
WorldObject* SmartScript::GetLastInvoker(WorldObject* invoker) const
|
||||
{
|
||||
// Xinef: Look for invoker only on map of base object... Prevents multithreaded crashes
|
||||
if (GetBaseObject())
|
||||
return ObjectAccessor::GetUnit(*GetBaseObject(), mLastInvoker);
|
||||
return ObjectAccessor::GetWorldObject(*GetBaseObject(), mLastInvoker);
|
||||
// xinef: used for area triggers invoker cast
|
||||
else if (invoker)
|
||||
return ObjectAccessor::GetUnit(*invoker, mLastInvoker);
|
||||
return ObjectAccessor::GetWorldObject(*invoker, mLastInvoker);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ public:
|
||||
static void InitTimer(SmartScriptHolder& e);
|
||||
void ProcessAction(SmartScriptHolder& e, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr);
|
||||
void ProcessTimedAction(SmartScriptHolder& e, uint32 const& min, uint32 const& max, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr);
|
||||
void GetTargets(ObjectVector& targets, SmartScriptHolder const& e, Unit* invoker = nullptr) const;
|
||||
void GetTargets(ObjectVector& targets, SmartScriptHolder const& e, WorldObject* invoker = nullptr) const;
|
||||
void GetWorldObjectsInDist(ObjectVector& objects, float dist) const;
|
||||
void InstallTemplate(SmartScriptHolder const& e);
|
||||
static SmartScriptHolder CreateSmartEvent(SMART_EVENT e, uint32 event_flags, uint32 event_param1, uint32 event_param2, uint32 event_param3, uint32 event_param4, uint32 event_param5, uint32 event_param6, SMART_ACTION action, uint32 action_param1, uint32 action_param2, uint32 action_param3, uint32 action_param4, uint32 action_param5, uint32 action_param6, SMARTAI_TARGETS t, uint32 target_param1, uint32 target_param2, uint32 target_param3, uint32 target_param4, uint32 phaseMask);
|
||||
@@ -186,7 +186,7 @@ public:
|
||||
|
||||
//TIMED_ACTIONLIST (script type 9 aka script9)
|
||||
void SetScript9(SmartScriptHolder& e, uint32 entry);
|
||||
Unit* GetLastInvoker(Unit* invoker = nullptr) const;
|
||||
WorldObject* GetLastInvoker(WorldObject* invoker = nullptr) const;
|
||||
ObjectGuid mLastInvoker;
|
||||
typedef std::unordered_map<uint32, uint32> CounterMap;
|
||||
CounterMap mCounterList;
|
||||
|
||||
@@ -2473,10 +2473,15 @@ bool AchievementGlobalMgr::IsStatisticAchievement(AchievementEntry const* achiev
|
||||
|
||||
bool AchievementGlobalMgr::IsAverageCriteria(AchievementCriteriaEntry const* criteria) const
|
||||
{
|
||||
if ((sAchievementStore.LookupEntry(criteria->referredAchievement))->flags & ACHIEVEMENT_FLAG_AVERAGE)
|
||||
auto referencedAchievement = sAchievementStore.LookupEntry(criteria->referredAchievement);
|
||||
|
||||
if (!referencedAchievement)
|
||||
return false;
|
||||
|
||||
if (referencedAchievement->flags & ACHIEVEMENT_FLAG_AVERAGE)
|
||||
return true;
|
||||
|
||||
if (AchievementEntryList const* achRefList = GetAchievementByReferencedId(criteria->referredAchievement))
|
||||
if (AchievementEntryList const* achRefList = GetAchievementByReferencedId(referencedAchievement->ID))
|
||||
for (AchievementEntryList::const_iterator itr = achRefList->begin(); itr != achRefList->end(); ++itr)
|
||||
if ((*itr)->flags & ACHIEVEMENT_FLAG_AVERAGE)
|
||||
return true;
|
||||
|
||||
@@ -120,9 +120,8 @@ void BattlegroundAV::HandleKillUnit(Creature* unit, Player* killer)
|
||||
//spawn destroyed aura
|
||||
for (uint8 i = 0; i <= 9; i++)
|
||||
SpawnBGObject(BG_AV_OBJECT_BURN_BUILDING_ALLIANCE + i, RESPAWN_IMMEDIATELY);
|
||||
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
|
||||
if (creature)
|
||||
YellToAll(creature, GetAcoreString(LANG_BG_AV_A_CAPTAIN_DEAD), LANG_UNIVERSAL);
|
||||
if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
|
||||
creature->AI()->Talk(AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD);
|
||||
DelCreature(AV_CPLACE_TRIGGER16);
|
||||
}
|
||||
else if (entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN])
|
||||
@@ -139,9 +138,8 @@ void BattlegroundAV::HandleKillUnit(Creature* unit, Player* killer)
|
||||
//spawn destroyed aura
|
||||
for (uint8 i = 0; i <= 9; i++)
|
||||
SpawnBGObject(BG_AV_OBJECT_BURN_BUILDING_HORDE + i, RESPAWN_IMMEDIATELY);
|
||||
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
|
||||
if (creature)
|
||||
YellToAll(creature, GetAcoreString(LANG_BG_AV_H_CAPTAIN_DEAD), LANG_UNIVERSAL);
|
||||
if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
|
||||
creature->AI()->Talk(AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD);
|
||||
DelCreature(AV_CPLACE_TRIGGER18);
|
||||
}
|
||||
else if (entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_N_4] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_A_4] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_H_4])
|
||||
@@ -646,16 +644,9 @@ void BattlegroundAV::EventPlayerDestroyedPoint(BG_AV_Nodes node)
|
||||
}
|
||||
}
|
||||
}
|
||||
//send a nice message to all :)
|
||||
char buf[256];
|
||||
if (IsTower(node))
|
||||
snprintf(buf, sizeof(buf), GetAcoreString(LANG_BG_AV_TOWER_TAKEN), GetNodeName(node), (ownerId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE));
|
||||
else
|
||||
snprintf(buf, sizeof(buf), GetAcoreString(LANG_BG_AV_GRAVE_TAKEN), GetNodeName(node), (ownerId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE));
|
||||
|
||||
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
|
||||
if (creature)
|
||||
YellToAll(creature, buf, LANG_UNIVERSAL);
|
||||
if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
|
||||
creature->AI()->Talk(GetDefendString(node, ownerId));
|
||||
}
|
||||
|
||||
void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial)
|
||||
@@ -727,12 +718,8 @@ void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial)
|
||||
if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE)
|
||||
{
|
||||
m_Mine_Reclaim_Timer[mine] = AV_MINE_RECLAIM_TIMER;
|
||||
char buf[256];
|
||||
snprintf(buf, sizeof(buf), GetAcoreString(LANG_BG_AV_MINE_TAKEN), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE),
|
||||
GetAcoreString((mine == AV_NORTH_MINE) ? LANG_BG_AV_MINE_NORTH : LANG_BG_AV_MINE_SOUTH));
|
||||
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
|
||||
if (creature)
|
||||
YellToAll(creature, buf, LANG_UNIVERSAL);
|
||||
if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
|
||||
creature->AI()->Talk(GetMineString(mine, teamId));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -980,18 +967,12 @@ void BattlegroundAV::EventPlayerDefendsPoint(Player* player, uint32 object)
|
||||
SpawnBGObject(((teamId == TEAM_ALLIANCE) ? BG_AV_OBJECT_SNOW_EYECANDY_A : BG_AV_OBJECT_SNOW_EYECANDY_H) + i, RESPAWN_IMMEDIATELY);
|
||||
}
|
||||
}
|
||||
//send a nice message to all :)
|
||||
char buf[256];
|
||||
snprintf(buf, sizeof(buf), GetAcoreString((IsTower(node)) ? LANG_BG_AV_TOWER_DEFENDED : LANG_BG_AV_GRAVE_DEFENDED), GetNodeName(node), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE));
|
||||
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
|
||||
if (creature)
|
||||
YellToAll(creature, buf, LANG_UNIVERSAL);
|
||||
|
||||
if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
|
||||
creature->AI()->Talk(GetDefendString(node, teamId));
|
||||
|
||||
//update the statistic for the defending player
|
||||
UpdatePlayerScore(player, (IsTower(node)) ? SCORE_TOWERS_DEFENDED : SCORE_GRAVEYARDS_DEFENDED, 1);
|
||||
if (IsTower(node))
|
||||
PlaySoundToAll(AV_SOUND_BOTH_TOWER_DEFEND);
|
||||
else
|
||||
PlaySoundToAll((teamId == TEAM_ALLIANCE) ? AV_SOUND_ALLIANCE_GOOD : AV_SOUND_HORDE_GOOD);
|
||||
}
|
||||
|
||||
void BattlegroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object)
|
||||
@@ -1092,15 +1073,11 @@ void BattlegroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object)
|
||||
// xinef: change here is too late, AssaultNode(node, team);
|
||||
UpdateNodeWorldState(node);
|
||||
|
||||
//send a nice message to all :)
|
||||
char buf[256];
|
||||
snprintf(buf, sizeof(buf), (IsTower(node)) ? GetAcoreString(LANG_BG_AV_TOWER_ASSAULTED) : GetAcoreString(LANG_BG_AV_GRAVE_ASSAULTED), GetNodeName(node), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE));
|
||||
Creature* creature = GetBGCreature(AV_CPLACE_HERALD);
|
||||
if (creature)
|
||||
YellToAll(creature, buf, LANG_UNIVERSAL);
|
||||
if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD))
|
||||
creature->AI()->Talk(GetAttackString(node, teamId));
|
||||
|
||||
//update the statistic for the assaulting player
|
||||
UpdatePlayerScore(player, (IsTower(node)) ? SCORE_TOWERS_ASSAULTED : SCORE_GRAVEYARDS_ASSAULTED, 1);
|
||||
PlaySoundToAll((teamId == TEAM_ALLIANCE) ? AV_SOUND_ALLIANCE_ASSAULTS : AV_SOUND_HORDE_ASSAULTS);
|
||||
|
||||
player->KilledMonsterCredit((IsTower(node)) ? BG_AV_QUEST_CREDIT_TOWER : BG_AV_QUEST_CREDIT_GRAVEYARD);
|
||||
}
|
||||
@@ -1466,46 +1443,226 @@ bool BattlegroundAV::SetupBattleground()
|
||||
return true;
|
||||
}
|
||||
|
||||
char const* BattlegroundAV::GetNodeName(BG_AV_Nodes node)
|
||||
uint8 BattlegroundAV::GetAttackString(BG_AV_Nodes node, TeamId teamId)
|
||||
{
|
||||
uint8 strId = 0;
|
||||
switch (node)
|
||||
{
|
||||
case BG_AV_NODES_FIRSTAID_STATION:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_STORM_AID);
|
||||
case BG_AV_NODES_DUNBALDAR_SOUTH:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_DUN_S);
|
||||
case BG_AV_NODES_DUNBALDAR_NORTH:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_DUN_N);
|
||||
case BG_AV_NODES_STORMPIKE_GRAVE:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_STORMPIKE);
|
||||
case BG_AV_NODES_ICEWING_BUNKER:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_ICEWING);
|
||||
case BG_AV_NODES_STONEHEART_GRAVE:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_STONE);
|
||||
case BG_AV_NODES_STONEHEART_BUNKER:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_STONE);
|
||||
case BG_AV_NODES_SNOWFALL_GRAVE:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_SNOW);
|
||||
case BG_AV_NODES_ICEBLOOD_TOWER:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_ICE);
|
||||
case BG_AV_NODES_ICEBLOOD_GRAVE:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_ICE);
|
||||
case BG_AV_NODES_TOWER_POINT:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_POINT);
|
||||
case BG_AV_NODES_FROSTWOLF_GRAVE:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_FROST);
|
||||
case BG_AV_NODES_FROSTWOLF_ETOWER:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_FROST_E);
|
||||
case BG_AV_NODES_FROSTWOLF_WTOWER:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_TOWER_FROST_W);
|
||||
case BG_AV_NODES_FROSTWOLF_HUT:
|
||||
return GetAcoreString(LANG_BG_AV_NODE_GRAVE_FROST_HUT);
|
||||
default:
|
||||
LOG_ERROR("bg.battleground", "tried to get name for node {}", node);
|
||||
break;
|
||||
case BG_AV_NODES_FIRSTAID_STATION:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_DUNBALDAR_SOUTH:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_DUNBALDAR_NORTH:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_STORMPIKE_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_ICEWING_BUNKER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_STONEHEART_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_STONEHEART_BUNKER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_SNOWFALL_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_ICEBLOOD_TOWER:
|
||||
strId = AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_ICEBLOOD_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_TOWER_POINT:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_TOWER_POINT_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_TOWER_POINT_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_ETOWER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_WTOWER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_HUT:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
return strId;
|
||||
}
|
||||
|
||||
uint8 BattlegroundAV::GetDefendString(BG_AV_Nodes node, TeamId teamId)
|
||||
{
|
||||
uint8 strId = 0;
|
||||
switch (node)
|
||||
{
|
||||
case BG_AV_NODES_FIRSTAID_STATION:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_DUNBALDAR_SOUTH:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_DUNBALDAR_NORTH:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_STORMPIKE_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_ICEWING_BUNKER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_STONEHEART_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_STONEHEART_BUNKER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_SNOWFALL_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_ICEBLOOD_TOWER:
|
||||
strId = AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_ICEBLOOD_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_TOWER_POINT:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_TOWER_POINT_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_TOWER_POINT_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_GRAVE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_ETOWER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_WTOWER:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN;
|
||||
break;
|
||||
case BG_AV_NODES_FROSTWOLF_HUT:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return strId;
|
||||
}
|
||||
|
||||
uint8 BattlegroundAV::GetMineString(uint8 mineId, TeamId teamId)
|
||||
{
|
||||
uint8 strId = 0;
|
||||
switch (mineId)
|
||||
{
|
||||
case AV_NORTH_MINE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN;
|
||||
break;
|
||||
case AV_SOUTH_MINE:
|
||||
if (teamId == TEAM_ALLIANCE)
|
||||
strId = AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN;
|
||||
else
|
||||
strId = AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return strId;
|
||||
}
|
||||
|
||||
void BattlegroundAV::AssaultNode(BG_AV_Nodes node, TeamId teamId)
|
||||
|
||||
@@ -1645,6 +1645,78 @@ enum BG_AV_Objectives
|
||||
AV_OBJECTIVE_DEFEND_GRAVEYARD = 65
|
||||
};
|
||||
|
||||
enum BG_AV_HERALD
|
||||
{
|
||||
AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN = 1,
|
||||
AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK = 2,
|
||||
AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN = 3,
|
||||
AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK = 4,
|
||||
AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN = 5,
|
||||
AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK = 6,
|
||||
AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN = 7,
|
||||
AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK = 8,
|
||||
AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN = 9,
|
||||
AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK = 10,
|
||||
AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN = 11,
|
||||
AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK = 12,
|
||||
AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK = 13,
|
||||
AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN = 14,
|
||||
AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK = 15,
|
||||
AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN = 16,
|
||||
AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK = 17,
|
||||
AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN = 18,
|
||||
AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK = 19,
|
||||
AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN = 20,
|
||||
AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK = 21,
|
||||
AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN = 22,
|
||||
AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK = 23,
|
||||
AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN = 24,
|
||||
AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK = 25,
|
||||
AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN = 26,
|
||||
AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK = 27,
|
||||
AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN = 28,
|
||||
AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK = 29,
|
||||
AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN = 30,
|
||||
AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK = 31,
|
||||
AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN = 32,
|
||||
AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_ATTACK = 33,
|
||||
AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN = 34,
|
||||
AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK = 35,
|
||||
AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN = 36,
|
||||
AV_TEXT_H_HERALD_TOWER_POINT_ATTACK = 37,
|
||||
AV_TEXT_H_HERALD_TOWER_POINT_TAKEN = 38,
|
||||
AV_TEXT_A_HERALD_TOWER_POINT_ATTACK = 39,
|
||||
AV_TEXT_A_HERALD_TOWER_POINT_TAKEN = 40,
|
||||
AV_TEXT_H_HERALD_ICEBLOOD_BUNKER_ATTACK = 41,
|
||||
AV_TEXT_H_HERALD_ICEBLOOD_BUNKER_TAKEN = 42,
|
||||
AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK = 43,
|
||||
AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN = 44,
|
||||
AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN = 45,
|
||||
AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK = 46,
|
||||
AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN = 47,
|
||||
AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK = 48,
|
||||
AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN = 49,
|
||||
AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK = 50,
|
||||
AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN = 51,
|
||||
AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK = 52,
|
||||
AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN = 53,
|
||||
AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK = 54,
|
||||
AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN = 55,
|
||||
AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK = 56,
|
||||
AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN = 57,
|
||||
AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK = 58,
|
||||
AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN = 59,
|
||||
AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK = 60,
|
||||
AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN = 61,
|
||||
AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN = 62,
|
||||
AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN = 63,
|
||||
AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN = 64,
|
||||
AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD = 65,
|
||||
AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD = 66,
|
||||
AV_TEXT_A_HERALD_WIN = 67,
|
||||
AV_TEXT_H_HERALD_WIN = 68
|
||||
};
|
||||
|
||||
struct BG_AV_NodeInfo
|
||||
{
|
||||
BG_AV_States State;
|
||||
@@ -1766,9 +1838,12 @@ private:
|
||||
|
||||
BG_AV_Nodes GetNodeThroughObject(uint32 object);
|
||||
uint32 GetObjectThroughNode(BG_AV_Nodes node);
|
||||
char const* GetNodeName(BG_AV_Nodes node);
|
||||
bool IsTower(BG_AV_Nodes node) { return m_Nodes[node].Tower; }
|
||||
|
||||
uint8 GetAttackString(BG_AV_Nodes node, TeamId teamId);
|
||||
uint8 GetDefendString(BG_AV_Nodes node, TeamId teamId);
|
||||
uint8 GetMineString(uint8 mine, TeamId teamId);
|
||||
|
||||
/*mine*/
|
||||
void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial = false);
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "GameTime.h"
|
||||
#include "Log.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Player.h"
|
||||
#include "UpdateMask.h"
|
||||
#include "World.h"
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
#include "ItemTemplate.h"
|
||||
#include "LootMgr.h"
|
||||
#include "Unit.h"
|
||||
#include "UpdateMask.h"
|
||||
#include "World.h"
|
||||
#include <list>
|
||||
|
||||
|
||||
@@ -18,14 +18,11 @@
|
||||
#ifndef AZEROTHCORE_CREATUREDATA_H
|
||||
#define AZEROTHCORE_CREATUREDATA_H
|
||||
|
||||
#include "Cell.h"
|
||||
#include "Common.h"
|
||||
#include "DBCEnums.h"
|
||||
#include "DatabaseEnv.h"
|
||||
#include "ItemTemplate.h"
|
||||
#include "LootMgr.h"
|
||||
#include "Unit.h"
|
||||
#include "UpdateMask.h"
|
||||
#include "World.h"
|
||||
#include <list>
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "GameTime.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "Opcodes.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "Transport.h"
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#include "CellImpl.h"
|
||||
#include "CreatureAISelector.h"
|
||||
#include "DisableMgr.h"
|
||||
#include "DynamicTree.h"
|
||||
#include "GameObjectAI.h"
|
||||
#include "GameObjectModel.h"
|
||||
#include "GameTime.h"
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "Object.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "Unit.h"
|
||||
#include <array>
|
||||
|
||||
class GameObjectAI;
|
||||
class Transport;
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#ifndef _ITEMPROTOTYPE_H
|
||||
#define _ITEMPROTOTYPE_H
|
||||
|
||||
#include "Common.h"
|
||||
#include "SharedDefines.h"
|
||||
#include "WorldPacket.h"
|
||||
#include <unordered_map>
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
#include "UpdateFields.h"
|
||||
|
||||
class ElunaEventProcessor;
|
||||
|
||||
enum TempSummonType
|
||||
|
||||
@@ -23,9 +23,7 @@
|
||||
#include <deque>
|
||||
#include <functional>
|
||||
#include <list>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <type_traits>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
|
||||
#include "ByteBuffer.h"
|
||||
#include "Errors.h"
|
||||
#include "UpdateFields.h"
|
||||
|
||||
class UpdateMask
|
||||
{
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
#include "Formulas.h"
|
||||
#include "GameEventMgr.h"
|
||||
#include "GameGraveyard.h"
|
||||
#include "GameObjectAI.h"
|
||||
#include "GameTime.h"
|
||||
#include "GossipDef.h"
|
||||
#include "GridNotifiers.h"
|
||||
@@ -63,7 +62,6 @@
|
||||
#include "OutdoorPvPMgr.h"
|
||||
#include "Pet.h"
|
||||
#include "PetitionMgr.h"
|
||||
#include "QueryHolder.h"
|
||||
#include "QuestDef.h"
|
||||
#include "Realm.h"
|
||||
#include "ReputationMgr.h"
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#include "GroupReference.h"
|
||||
#include "InstanceSaveMgr.h"
|
||||
#include "Item.h"
|
||||
#include "KillRewarder.h"
|
||||
#include "MapReference.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Optional.h"
|
||||
@@ -38,7 +37,6 @@
|
||||
#include "QuestDef.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "TradeData.h"
|
||||
#include "Unit.h"
|
||||
#include "WorldSession.h"
|
||||
|
||||
@@ -20,9 +20,7 @@
|
||||
#include "ArenaTeam.h"
|
||||
#include "ArenaTeamMgr.h"
|
||||
#include "Battlefield.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "Battleground.h"
|
||||
#include "BattlegroundAV.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "Channel.h"
|
||||
#include "CharacterDatabaseCleaner.h"
|
||||
@@ -69,7 +67,6 @@
|
||||
#include "UpdateFieldFlags.h"
|
||||
#include "Util.h"
|
||||
#include "Vehicle.h"
|
||||
#include "Weather.h"
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#define __PLAYER_TAXI_H__
|
||||
|
||||
#include "DBCStructure.h"
|
||||
#include <vector>
|
||||
|
||||
class ByteBuffer;
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#ifndef __ACORE_SOCIALMGR_H
|
||||
#define __ACORE_SOCIALMGR_H
|
||||
|
||||
#include "Common.h"
|
||||
#include "DatabaseEnv.h"
|
||||
#include "ObjectGuid.h"
|
||||
#include <map>
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "ScriptMgr.h"
|
||||
#include "Spell.h"
|
||||
#include "Vehicle.h"
|
||||
#include "World.h"
|
||||
#include "WorldModel.h"
|
||||
|
||||
MotionTransport::MotionTransport() : Transport(), _transportInfo(nullptr), _isMoving(true), _pendingStop(false), _triggeredArrivalEvent(false), _triggeredDepartureEvent(false), _passengersLoaded(false), _delayedTeleport(false)
|
||||
|
||||
@@ -33,12 +33,10 @@
|
||||
#include "CreatureGroups.h"
|
||||
#include "DisableMgr.h"
|
||||
#include "DynamicVisibility.h"
|
||||
#include "Formulas.h"
|
||||
#include "GameObjectAI.h"
|
||||
#include "GameTime.h"
|
||||
#include "GridNotifiersImpl.h"
|
||||
#include "Group.h"
|
||||
#include "InstanceSaveMgr.h"
|
||||
#include "Log.h"
|
||||
#include "MapMgr.h"
|
||||
#include "MoveSpline.h"
|
||||
@@ -2343,7 +2341,7 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited)
|
||||
{
|
||||
// We're going to call functions which can modify content of the list during iteration over it's elements
|
||||
// Let's copy the list so we can prevent iterator invalidation
|
||||
AuraEffectList vSplitDamageFlatCopy(victim->GetAuraEffectsByType(SPELL_AURA_SPLIT_DAMAGE_FLAT));
|
||||
AuraEffectList vSplitDamageFlatCopy(victim->GetAuraEffectsByType(SPELL_AURA_SPLIT_DAMAGE_FLAT)); // Not used by any spell
|
||||
for (AuraEffectList::iterator itr = vSplitDamageFlatCopy.begin(); (itr != vSplitDamageFlatCopy.end()) && (dmgInfo.GetDamage() > 0); ++itr)
|
||||
{
|
||||
// Check if aura was removed during iteration - we don't need to work on such auras
|
||||
@@ -2358,6 +2356,13 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited)
|
||||
if (!caster || (caster == victim) || !caster->IsInWorld() || !caster->IsAlive())
|
||||
continue;
|
||||
|
||||
// Limit effect range to spell's cast range. (Only for single target auras, AreaAuras don't need it)
|
||||
// Ignore LOS attribute is only used for the cast portion of the spell
|
||||
SpellInfo const* splitSpellInfo = (*itr)->GetSpellInfo();
|
||||
if (!splitSpellInfo->Effects[(*itr)->GetEffIndex()].IsAreaAuraEffect())
|
||||
if (!caster->IsWithinDist(victim, splitSpellInfo->GetMaxRange(splitSpellInfo->IsPositive(), caster)))
|
||||
continue;
|
||||
|
||||
int32 splitDamage = (*itr)->GetAmount();
|
||||
|
||||
// absorb must be smaller than the damage itself
|
||||
@@ -2418,10 +2423,11 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited)
|
||||
if (!caster || (caster == victim) || !caster->IsInWorld() || !caster->IsAlive())
|
||||
continue;
|
||||
|
||||
// Xinef: Single Target splits require LoS
|
||||
// Limit effect range to spell's cast range. (Only for single target auras, AreaAuras don't need it)
|
||||
// Ignore LOS attribute is only used for the cast portion of the spell
|
||||
SpellInfo const* splitSpellInfo = (*itr)->GetSpellInfo();
|
||||
if (!splitSpellInfo->Effects[(*itr)->GetEffIndex()].IsAreaAuraEffect() && !splitSpellInfo->HasAttribute(SPELL_ATTR2_IGNORE_LINE_OF_SIGHT))
|
||||
if (!caster->IsWithinLOSInMap(victim) || !caster->IsWithinDist(victim, splitSpellInfo->GetMaxRange(splitSpellInfo->IsPositive(), caster)))
|
||||
if (!splitSpellInfo->Effects[(*itr)->GetEffIndex()].IsAreaAuraEffect())
|
||||
if (!caster->IsWithinDist(victim, splitSpellInfo->GetMaxRange(splitSpellInfo->IsPositive(), caster)))
|
||||
continue;
|
||||
|
||||
uint32 splitDamage = CalculatePct(dmgInfo.GetDamage(), (*itr)->GetAmount());
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "ItemTemplate.h"
|
||||
#include "MotionMaster.h"
|
||||
#include "Object.h"
|
||||
#include "Optional.h"
|
||||
#include "SpellAuraDefines.h"
|
||||
#include "SpellDefines.h"
|
||||
#include "ThreatMgr.h"
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "ObjectMgr.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "Unit.h"
|
||||
#include "Util.h"
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
#ifndef __ACORE_VEHICLE_H
|
||||
#define __ACORE_VEHICLE_H
|
||||
|
||||
#include "EventProcessor.h"
|
||||
#include "ObjectDefines.h"
|
||||
#include "Unit.h"
|
||||
#include "VehicleDefines.h"
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
|
||||
#include "Define.h"
|
||||
#include "Map.h"
|
||||
#include "Object.h"
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
#include "WorldSession.h"
|
||||
#include <iostream>
|
||||
|
||||
#include "SpellMgr.h"
|
||||
|
||||
class Player;
|
||||
//class Map;
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ void WorldSession::SendAuctionHello(ObjectGuid guid, Creature* unit)
|
||||
{
|
||||
if (GetPlayer()->GetLevel() < sWorld->getIntConfig(CONFIG_AUCTION_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_AUCTION_REQ), sWorld->getIntConfig(CONFIG_AUCTION_LEVEL_REQ));
|
||||
SendNotification(LANG_AUCTION_REQ, sWorld->getIntConfig(CONFIG_AUCTION_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if (sWorld->getBoolConfig(CONFIG_CHAT_MUTE_FIRST_LOGIN))
|
||||
if (sWorld->getBoolConfig(CONFIG_CHAT_MUTE_FIRST_LOGIN) && lang != LANG_ADDON)
|
||||
{
|
||||
uint32 minutes = sWorld->getIntConfig(CONFIG_CHAT_TIME_MUTE_FIRST_LOGIN);
|
||||
|
||||
@@ -164,7 +164,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
|
||||
if (sender->HasAura(1852) && type != CHAT_MSG_WHISPER)
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_GM_SILENCE), sender->GetName().c_str());
|
||||
SendNotification(LANG_GM_SILENCE, sender->GetName());
|
||||
recvData.rfinish();
|
||||
return;
|
||||
}
|
||||
@@ -296,7 +296,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
if (!_player->CanSpeak())
|
||||
{
|
||||
std::string timeStr = secsToTimeString(m_muteTime - GameTime::GetGameTime().count());
|
||||
SendNotification(GetAcoreString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());
|
||||
SendNotification(LANG_WAIT_BEFORE_SPEAKING, timeStr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -361,7 +361,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
|
||||
if (sender->GetLevel() < sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ));
|
||||
SendNotification(LANG_SAY_REQ, sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -387,7 +387,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
|
||||
if (sender->GetLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ) && receiver != sender)
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_WHISPER_REQ), sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ));
|
||||
SendNotification(LANG_WHISPER_REQ, sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -407,7 +407,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
// pussywizard: optimization
|
||||
if (GetPlayer()->HasAura(1852) && !receiver->IsGameMaster())
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_GM_SILENCE), GetPlayer()->GetName().c_str());
|
||||
SendNotification(LANG_GM_SILENCE, GetPlayer()->GetName());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -601,7 +601,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
{
|
||||
if (sender->GetLevel() < sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_CHANNEL_REQ), sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ));
|
||||
SendNotification(LANG_CHANNEL_REQ, sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -746,7 +746,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData)
|
||||
if (!GetPlayer()->CanSpeak())
|
||||
{
|
||||
std::string timeStr = secsToTimeString(m_muteTime - GameTime::GetGameTime().count());
|
||||
SendNotification(GetAcoreString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());
|
||||
SendNotification(LANG_WAIT_BEFORE_SPEAKING, timeStr);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData)
|
||||
|
||||
if (player->GetLevel() < sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_MAIL_SENDER_REQ), sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ));
|
||||
SendNotification(LANG_MAIL_SENDER_REQ, sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ void WorldSession::HandleGMTicketCreateOpcode(WorldPacket& recvData)
|
||||
|
||||
if (GetPlayer()->GetLevel() < sWorld->getIntConfig(CONFIG_TICKET_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_TICKET_REQ), sWorld->getIntConfig(CONFIG_TICKET_LEVEL_REQ));
|
||||
SendNotification(LANG_TICKET_REQ, sWorld->getIntConfig(CONFIG_TICKET_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -574,7 +574,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (GetPlayer()->GetLevel() < sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_TRADE_REQ), sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ));
|
||||
SendNotification(LANG_TRADE_REQ, sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -639,7 +639,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket)
|
||||
|
||||
if (pOther->GetLevel() < sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ))
|
||||
{
|
||||
SendNotification(GetAcoreString(LANG_TRADE_OTHER_REQ), sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ));
|
||||
SendNotification(LANG_TRADE_OTHER_REQ, sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -468,9 +468,20 @@ bool LootItem::AllowedForPlayer(Player const* player, ObjectGuid source) const
|
||||
}
|
||||
|
||||
// check quest requirements
|
||||
if (!(pProto->FlagsCu & ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && ((needs_quest || (pProto->StartQuest && player->GetQuestStatus(pProto->StartQuest) != QUEST_STATUS_NONE)) && !player->HasQuestForItem(itemid)))
|
||||
if (!(pProto->FlagsCu & ITEM_FLAGS_CU_IGNORE_QUEST_STATUS))
|
||||
{
|
||||
return false;
|
||||
// Don't drop quest items if the player is missing the relevant quest
|
||||
if (needs_quest && !player->HasQuestForItem(itemid))
|
||||
return false;
|
||||
|
||||
// for items that start quests
|
||||
if (pProto->StartQuest)
|
||||
{
|
||||
// Don't drop the item if the player has already finished the quest OR player already has the item in their inventory, and that item is unique OR the player has not finished a prerequisite quest
|
||||
uint32 prevQuestId = sObjectMgr->GetQuestTemplate(pProto->StartQuest) ? sObjectMgr->GetQuestTemplate(pProto->StartQuest)->GetPrevQuestId() : 0;
|
||||
if (player->GetQuestStatus(pProto->StartQuest) != QUEST_STATUS_NONE || (player->HasItemCount(itemid, pProto->MaxCount) && pProto->MaxCount) || (prevQuestId && !player->GetQuestRewardStatus(prevQuestId)))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!sScriptMgr->OnAllowedForPlayerLootCheck(player, source))
|
||||
|
||||
@@ -415,7 +415,12 @@ enum AcoreStrings
|
||||
LANG_COMMAND_RESET_ITEMS_ALL_BAGS = 372,
|
||||
// [END] reset items command strings
|
||||
|
||||
// Room for more level 2 373-399 not used
|
||||
// .aura stack
|
||||
LANG_COMMAND_AURASTACK_NO_AURA = 373,
|
||||
LANG_COMMAND_AURASTACK_NO_STACK = 374,
|
||||
LANG_COMMAND_AURASTACK_CANT_STACK = 375,
|
||||
|
||||
// Room for more level 2 376-399 not used
|
||||
|
||||
// level 3 chat
|
||||
LANG_SCRIPTS_RELOADED = 400,
|
||||
@@ -975,43 +980,7 @@ enum AcoreStrings
|
||||
LANG_DEBUG_AREATRIGGER_OFF = 1203,
|
||||
LANG_DEBUG_AREATRIGGER_REACHED = 1204,
|
||||
|
||||
// 1205-1299 - free
|
||||
|
||||
// 1300-1333
|
||||
// AV
|
||||
LANG_BG_AV_ALLY = 1300,
|
||||
LANG_BG_AV_HORDE = 1301,
|
||||
LANG_BG_AV_TOWER_TAKEN = 1302,
|
||||
LANG_BG_AV_TOWER_ASSAULTED = 1303,
|
||||
LANG_BG_AV_TOWER_DEFENDED = 1304,
|
||||
LANG_BG_AV_GRAVE_TAKEN = 1305,
|
||||
LANG_BG_AV_GRAVE_DEFENDED = 1306,
|
||||
LANG_BG_AV_GRAVE_ASSAULTED = 1307,
|
||||
|
||||
LANG_BG_AV_MINE_TAKEN = 1308,
|
||||
LANG_BG_AV_MINE_NORTH = 1309,
|
||||
LANG_BG_AV_MINE_SOUTH = 1310,
|
||||
|
||||
LANG_BG_AV_NODE_GRAVE_STORM_AID = 1311,
|
||||
LANG_BG_AV_NODE_TOWER_DUN_S = 1312,
|
||||
LANG_BG_AV_NODE_TOWER_DUN_N = 1313,
|
||||
LANG_BG_AV_NODE_GRAVE_STORMPIKE = 1314,
|
||||
LANG_BG_AV_NODE_TOWER_ICEWING = 1315,
|
||||
LANG_BG_AV_NODE_GRAVE_STONE = 1316,
|
||||
LANG_BG_AV_NODE_TOWER_STONE = 1317,
|
||||
LANG_BG_AV_NODE_GRAVE_SNOW = 1318,
|
||||
LANG_BG_AV_NODE_TOWER_ICE = 1319,
|
||||
LANG_BG_AV_NODE_GRAVE_ICE = 1320,
|
||||
LANG_BG_AV_NODE_TOWER_POINT = 1321,
|
||||
LANG_BG_AV_NODE_GRAVE_FROST = 1322,
|
||||
LANG_BG_AV_NODE_TOWER_FROST_E = 1323,
|
||||
LANG_BG_AV_NODE_TOWER_FROST_W = 1324,
|
||||
LANG_BG_AV_NODE_GRAVE_FROST_HUT = 1325,
|
||||
|
||||
// 1326-1330 - free
|
||||
|
||||
LANG_BG_AV_H_CAPTAIN_DEAD = 1331,
|
||||
LANG_BG_AV_A_CAPTAIN_DEAD = 1332,
|
||||
// 1205-1333 - free
|
||||
|
||||
//Player Ticket Strings
|
||||
LANG_TICKET_CLOSED = 1334,
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include "QueryHolder.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SocialMgr.h"
|
||||
#include "Tokenize.h"
|
||||
#include "Transport.h"
|
||||
#include "Vehicle.h"
|
||||
#include "WardenMac.h"
|
||||
@@ -813,37 +814,12 @@ bool WorldSession::DisallowHyperlinksAndMaybeKick(std::string_view str)
|
||||
return false;
|
||||
}
|
||||
|
||||
void WorldSession::SendNotification(const char* format, ...)
|
||||
void WorldSession::SendNotification(std::string_view str)
|
||||
{
|
||||
if (format)
|
||||
WorldPacket data(SMSG_NOTIFICATION, str.size() + 1);
|
||||
for (std::string_view line : Acore::Tokenize(str, '\n', true))
|
||||
{
|
||||
va_list ap;
|
||||
char szStr[1024];
|
||||
szStr[0] = '\0';
|
||||
va_start(ap, format);
|
||||
vsnprintf(szStr, 1024, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
WorldPacket data(SMSG_NOTIFICATION, (strlen(szStr) + 1));
|
||||
data << szStr;
|
||||
SendPacket(&data);
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::SendNotification(uint32 string_id, ...)
|
||||
{
|
||||
char const* format = GetAcoreString(string_id);
|
||||
if (format)
|
||||
{
|
||||
va_list ap;
|
||||
char szStr[1024];
|
||||
szStr[0] = '\0';
|
||||
va_start(ap, string_id);
|
||||
vsnprintf(szStr, 1024, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
WorldPacket data(SMSG_NOTIFICATION, (strlen(szStr) + 1));
|
||||
data << szStr;
|
||||
data << line.data();
|
||||
SendPacket(&data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -365,9 +365,19 @@ public:
|
||||
void ReadMovementInfo(WorldPacket& data, MovementInfo* mi);
|
||||
void WriteMovementInfo(WorldPacket* data, MovementInfo* mi);
|
||||
|
||||
void SendNotification(std::string_view str);
|
||||
template<typename... Args>
|
||||
void SendNotification(uint32 strId, Args&&... args)
|
||||
{
|
||||
SendNotification(Acore::StringFormatFmt(GetAcoreString(strId), std::forward<Args>(args)...));
|
||||
}
|
||||
template<typename... Args>
|
||||
void SendNotification(char const* fmt, Args&&... args)
|
||||
{
|
||||
SendNotification(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
void SendPacket(WorldPacket const* packet);
|
||||
void SendNotification(const char* format, ...) ATTR_PRINTF(2, 3);
|
||||
void SendNotification(uint32 string_id, ...);
|
||||
void SendPetNameInvalid(uint32 error, std::string const& name, DeclinedName* declinedName);
|
||||
void SendPartyResult(PartyOperation operation, std::string const& member, PartyResult res, uint32 val = 0);
|
||||
void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2, 3);
|
||||
|
||||
@@ -290,7 +290,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS] =
|
||||
&AuraEffect::HandleNoImmediateEffect, //227 SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE implemented in AuraEffect::PeriodicTick
|
||||
&AuraEffect::HandleNoImmediateEffect, //228 SPELL_AURA_DETECT_STEALTH stealth detection
|
||||
&AuraEffect::HandleNoImmediateEffect, //229 SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE
|
||||
&AuraEffect::HandleAuraModIncreaseHealth, //230 SPELL_AURA_MOD_INCREASE_HEALTH_2
|
||||
&AuraEffect::HandleAuraModIncreaseMaxHealth, //230 SPELL_AURA_MOD_INCREASE_HEALTH_2 only Blood Pact and Commanding Shout
|
||||
&AuraEffect::HandleNoImmediateEffect, //231 SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE
|
||||
&AuraEffect::HandleNoImmediateEffect, //232 SPELL_AURA_MECHANIC_DURATION_MOD implement in Unit::CalculateSpellDuration
|
||||
&AuraEffect::HandleUnused, //233 set model id to the one of the creature with id GetMiscValue() - clientside
|
||||
|
||||
@@ -3607,62 +3607,6 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_10_YARDS); // 10yd
|
||||
});
|
||||
|
||||
// Dragonmaw Race: All parts
|
||||
ApplySpellFix({
|
||||
40890 // Oldie's Rotten Pumpkin
|
||||
}, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION;
|
||||
spellInfo->Effects[EFFECT_0].TriggerSpell = 40905;
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
||||
});
|
||||
|
||||
// Trope's Slime Cannon
|
||||
ApplySpellFix({ 40909 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION;
|
||||
spellInfo->Effects[EFFECT_0].TriggerSpell = 40905;
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
||||
});
|
||||
|
||||
// Corlok's Skull Barrage
|
||||
ApplySpellFix({ 40894 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION;
|
||||
spellInfo->Effects[EFFECT_0].TriggerSpell = 40900;
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
||||
});
|
||||
|
||||
// Ichman's Blazing Fireball
|
||||
ApplySpellFix({ 40928 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION;
|
||||
spellInfo->Effects[EFFECT_0].TriggerSpell = 40929;
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
||||
});
|
||||
|
||||
// Mulverick's Great Balls of Lightning
|
||||
ApplySpellFix({ 40930 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION;
|
||||
spellInfo->Effects[EFFECT_0].TriggerSpell = 40931;
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
||||
});
|
||||
|
||||
// Sky Shatter
|
||||
ApplySpellFix({ 40945 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION;
|
||||
spellInfo->Effects[EFFECT_0].TriggerSpell = 41064;
|
||||
spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE;
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST);
|
||||
});
|
||||
|
||||
// Gauging the Resonant Frequency (10594)
|
||||
ApplySpellFix({ 37390 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
@@ -4834,6 +4778,12 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->AuraInterruptFlags &= ~AURA_INTERRUPT_FLAG_NOT_ABOVEWATER;
|
||||
});
|
||||
|
||||
// Molten Punch
|
||||
ApplySpellFix({ 40126 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->Effects[EFFECT_0].TargetB = SpellImplicitTargetInfo(TARGET_DEST_CASTER);
|
||||
});
|
||||
|
||||
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
SpellInfo* spellInfo = mSpellInfoMap[i];
|
||||
|
||||
@@ -87,12 +87,18 @@ public:
|
||||
|
||||
ChatCommandTable GetCommands() const override
|
||||
{
|
||||
static ChatCommandTable auraCommandTable =
|
||||
{
|
||||
{ "stack", HandleAuraStacksCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "", HandleAuraCommand, SEC_GAMEMASTER, Console::No }
|
||||
};
|
||||
|
||||
static ChatCommandTable commandTable =
|
||||
{
|
||||
{ "commentator", HandleCommentatorCommand, SEC_MODERATOR, Console::No },
|
||||
{ "dev", HandleDevCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "gps", HandleGPSCommand, SEC_MODERATOR, Console::No },
|
||||
{ "aura", HandleAuraCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "aura", auraCommandTable },
|
||||
{ "unaura", HandleUnAuraCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "appear", HandleAppearCommand, SEC_MODERATOR, Console::No },
|
||||
{ "summon", HandleSummonCommand, SEC_GAMEMASTER, Console::No },
|
||||
@@ -129,7 +135,7 @@ public:
|
||||
{ "cometome", HandleComeToMeCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "damage", HandleDamageCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "combatstop", HandleCombatStopCommand, SEC_GAMEMASTER, Console::Yes },
|
||||
{ "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes },
|
||||
{ "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes },
|
||||
{ "freeze", HandleFreezeCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "unfreeze", HandleUnFreezeCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "possess", HandlePossessCommand, SEC_GAMEMASTER, Console::No },
|
||||
@@ -653,6 +659,51 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleAuraStacksCommand(ChatHandler* handler, SpellInfo const* spell, int16 stacks)
|
||||
{
|
||||
if (!spell)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!SpellMgr::IsSpellValid(spell))
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!stacks)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_AURASTACK_NO_STACK);
|
||||
return false;
|
||||
}
|
||||
|
||||
Unit* target = handler->getSelectedUnit();
|
||||
if (!target)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_SELECT_CHAR_OR_CREATURE);
|
||||
return false;
|
||||
}
|
||||
|
||||
Aura* aur = target->GetAura(spell->Id);
|
||||
if (!aur)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_AURASTACK_NO_AURA, spell->Id);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!spell->StackAmount)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_AURASTACK_CANT_STACK, spell->Id);
|
||||
return false;
|
||||
}
|
||||
|
||||
aur->ModStackAmount(stacks);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleUnAuraCommand(ChatHandler* handler, Variant<SpellInfo const*, std::string_view> spells)
|
||||
{
|
||||
Unit* target = handler->getSelectedUnit();
|
||||
|
||||
@@ -279,7 +279,7 @@ public:
|
||||
|
||||
handler->PSendSysMessage("Connection peak: {}.", connPeak);
|
||||
handler->PSendSysMessage(LANG_UPTIME, secsToTimeString(GameTime::GetUptime().count()));
|
||||
handler->PSendSysMessage("Update time diff: {}ms. Last %d diffs summary:", sWorldUpdateTime.GetLastUpdateTime(), sWorldUpdateTime.GetDatasetSize());
|
||||
handler->PSendSysMessage("Update time diff: {}ms. Last {} diffs summary:", sWorldUpdateTime.GetLastUpdateTime(), sWorldUpdateTime.GetDatasetSize());
|
||||
handler->PSendSysMessage("|- Mean: {}ms", sWorldUpdateTime.GetAverageUpdateTime());
|
||||
handler->PSendSysMessage("|- Median: {}ms", sWorldUpdateTime.GetPercentile(50));
|
||||
handler->PSendSysMessage("|- Percentiles (95, 99, max): {}ms, {}ms, {}ms",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "blackfathom_deeps.h"
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "hyjal.h"
|
||||
@@ -145,32 +145,35 @@ struct npc_doomfire_spirit : public ScriptedAI
|
||||
{
|
||||
npc_doomfire_spirit(Creature* creature) : ScriptedAI(creature){ }
|
||||
|
||||
float const turnConstant = 0.785402f;
|
||||
float fAngle = urand(0, M_PI * 2);
|
||||
float const turnConstant = 0.785402f; // 45 degree turns, verified with sniffs
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
scheduler.CancelAll();
|
||||
ScheduleTimedEvent(0s, [&] {
|
||||
float nextOrientation = Position::NormalizeOrientation(me->GetOrientation() + irand(-1, 1) * turnConstant);
|
||||
Position pos = GetFirstRandomAngleCollisionPosition(8.f, nextOrientation); // both orientation and distance verified with sniffs
|
||||
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), nextOrientation);
|
||||
}, 1600ms);
|
||||
ScheduleUniqueTimedEvent(10ms, [&] {
|
||||
TryTeleportInDirection(1.f, M_PI, 1.f, true); //turns around and teleports 1 unit on spawn, assuming same logic as later teleports applies
|
||||
|
||||
fAngle = urand(0, M_PI * 2);
|
||||
ScheduleTimedEvent(10ms, [&] {
|
||||
float angle = irand(-1, 1) * turnConstant;
|
||||
TryTeleportInDirection(8.f, angle, 2.f, false);
|
||||
}, 1600ms);
|
||||
},1);
|
||||
}
|
||||
|
||||
Position GetFirstRandomAngleCollisionPosition(float dist, float angle)
|
||||
void TryTeleportInDirection(float dist, float angle, float step, bool alwaysturn)
|
||||
{
|
||||
Position pos;
|
||||
for (uint32 i = 0; i < 10; ++i)
|
||||
while (dist >= 0)
|
||||
{
|
||||
pos = me->WorldObject::GetFirstCollisionPosition(dist, angle);
|
||||
if (me->GetDistance(pos) > dist * 0.8f) // if at least 80% distance, good enough
|
||||
if (fabsf(dist - me->GetExactDist2d(pos)) < 0.001) // Account for small deviation
|
||||
break;
|
||||
angle += (M_PI / 5); // else try slightly different angle
|
||||
dist -= step; // Distance drops with each unsuccessful attempt
|
||||
}
|
||||
return pos;
|
||||
|
||||
if (dist || alwaysturn)
|
||||
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), Position::NormalizeOrientation(me->GetOrientation() + angle));
|
||||
else // Orientation does not change if not moving, verified with sniffs
|
||||
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), me->GetOrientation());
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -268,10 +271,10 @@ struct boss_archimonde : public BossAI
|
||||
Talk(SAY_AIR_BURST);
|
||||
DoCastRandomTarget(SPELL_AIR_BURST);
|
||||
}, 25s, 40s);
|
||||
ScheduleTimedEvent(25s, 35s, [&]
|
||||
ScheduleTimedEvent(8s, [&]
|
||||
{
|
||||
DoCastDoomFire();
|
||||
}, 20s);
|
||||
}, 8s);
|
||||
ScheduleTimedEvent(25s, 35s, [&]
|
||||
{
|
||||
DoCastRandomTarget(SPELL_GRIP_OF_THE_LEGION);
|
||||
@@ -400,7 +403,7 @@ struct boss_archimonde : public BossAI
|
||||
float angle = 2 * M_PI * rand() / RAND_MAX;
|
||||
float x = me->GetPositionX() + DOOMFIRE_OFFSET * cos(angle);
|
||||
float y = me->GetPositionY() + DOOMFIRE_OFFSET * sin(angle);
|
||||
Position spiritPosition = Position(x, y, me->GetPositionZ());
|
||||
Position spiritPosition = Position(x, y, me->GetPositionZ(), Position::NormalizeOrientation(angle + M_PI)); //spirit faces archimonde on spawn
|
||||
Position doomfirePosition = Position(x, y, me->GetPositionZ());
|
||||
if (Creature* doomfireSpirit = me->SummonCreature(CREATURE_DOOMFIRE_SPIRIT, spiritPosition, TEMPSUMMON_TIMED_DESPAWN, 27000))
|
||||
{
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#define DEF_HYJAL_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "GridNotifiers.h"
|
||||
|
||||
#define DataHeader "HY"
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "Chat.h"
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Player.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "hyjal.h"
|
||||
|
||||
@@ -18,8 +18,10 @@
|
||||
#include "the_black_morass.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "MoveSplineInit.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SmartAI.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
|
||||
enum medivhMisc
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#define DEF_THEBLACKMORASS_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "TBM"
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "maraudon.h"
|
||||
|
||||
@@ -20,10 +20,16 @@
|
||||
#include "CellImpl.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "GridNotifiersImpl.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
|
||||
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||
// however, for some reasons removing it would cause a damn linking issue
|
||||
// there is probably some underlying problem with imports which should properly addressed
|
||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||
#include "GridNotifiersImpl.h"
|
||||
|
||||
/*######
|
||||
## npc_belnistrasz for Quest 3525 "Extinguishing the Idol"
|
||||
######*/
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#define DEF_RAZORFEN_DOWNS_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "PassiveAI.h"
|
||||
|
||||
#define DataHeader "RFD"
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#include "GameObjectAI.h"
|
||||
#include "GameObjectScript.h"
|
||||
#include "MiscPackets.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellInfo.h"
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "wailing_caverns.h"
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
|
||||
#define DataHeader "WC"
|
||||
|
||||
#include "CreatureAI.h"
|
||||
|
||||
enum DataTypes
|
||||
{
|
||||
TYPE_LORD_COBRAHN = 0,
|
||||
|
||||
@@ -16,10 +16,12 @@
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "CellImpl.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "GridNotifiersImpl.h"
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "zulfarrak.h"
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "zulfarrak.h"
|
||||
#include "Cell.h"
|
||||
#include "CellImpl.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "GameObject.h"
|
||||
#include "GameObjectAI.h"
|
||||
@@ -28,6 +29,13 @@
|
||||
#include "ScriptSystem.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
|
||||
/// @todo: this import is not necessary for compilation and marked as unused by the IDE
|
||||
// however, for some reasons removing it would cause a damn linking issue
|
||||
// there is probably some underlying problem with imports which should properly addressed
|
||||
// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766
|
||||
#include "GridNotifiersImpl.h"
|
||||
|
||||
/* ScriptData
|
||||
SDName: Zulfarrak
|
||||
SD%Complete: 50
|
||||
@@ -40,8 +48,6 @@ npc_sergeant_bly
|
||||
npc_weegli_blastfuse
|
||||
EndContentData */
|
||||
|
||||
#include "GridNotifiersImpl.h"
|
||||
|
||||
/*######
|
||||
## npc_sergeant_bly
|
||||
######*/
|
||||
|
||||
@@ -18,9 +18,7 @@
|
||||
#ifndef DEF_ZULFARRACK_H
|
||||
#define DEF_ZULFARRACK_H
|
||||
|
||||
#include "CellImpl.h"
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "ZF"
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ EndContentData */
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellInfo.h"
|
||||
|
||||
/*####
|
||||
# npc_rizzle_sprysprocket
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "Group.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
/* ScriptData
|
||||
|
||||
@@ -31,7 +31,6 @@ npc_clintar_dreamwalker
|
||||
EndContentData */
|
||||
|
||||
#include "Cell.h"
|
||||
#include "CellImpl.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "GridNotifiersImpl.h"
|
||||
|
||||
@@ -19,9 +19,6 @@
|
||||
#define DEF_AZJOL_NERUB_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "AN"
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "azjol_nerub.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "azjol_nerub.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "azjol_nerub.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
DoorData const doorData[] =
|
||||
{
|
||||
|
||||
+20
-24
@@ -18,10 +18,12 @@
|
||||
#include "AreaTriggerScript.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "ruby_sanctum.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Texts
|
||||
{
|
||||
@@ -332,34 +334,28 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_baltharus_enervating_brand_trigger : public SpellScriptLoader
|
||||
class spell_baltharus_enervating_brand_trigger : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_baltharus_enervating_brand_trigger() : SpellScriptLoader("spell_baltharus_enervating_brand_trigger") { }
|
||||
PrepareSpellScript(spell_baltharus_enervating_brand_trigger);
|
||||
|
||||
class spell_baltharus_enervating_brand_trigger_SpellScript : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
PrepareSpellScript(spell_baltharus_enervating_brand_trigger_SpellScript);
|
||||
return ValidateSpellInfo({ SPELL_SIPHONED_MIGHT });
|
||||
}
|
||||
|
||||
void CheckDistance()
|
||||
{
|
||||
if (Unit* caster = GetOriginalCaster())
|
||||
if (Unit* target = GetHitUnit())
|
||||
if (target == GetCaster()
|
||||
// the spell has an unlimited range, so we need this check
|
||||
&& target->GetDistance2d(caster) <= 12.0f)
|
||||
target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnHit += SpellHitFn(spell_baltharus_enervating_brand_trigger_SpellScript::CheckDistance);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
void CheckDistance()
|
||||
{
|
||||
return new spell_baltharus_enervating_brand_trigger_SpellScript();
|
||||
if (Unit* caster = GetOriginalCaster())
|
||||
if (Unit* target = GetHitUnit())
|
||||
if (target == GetCaster()
|
||||
// the spell has an unlimited range, so we need this check
|
||||
&& target->GetDistance2d(caster) <= 12.0f)
|
||||
target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnHit += SpellHitFn(spell_baltharus_enervating_brand_trigger::CheckDistance);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -484,7 +480,7 @@ void AddSC_boss_baltharus_the_warborn()
|
||||
{
|
||||
new boss_baltharus_the_warborn();
|
||||
new npc_baltharus_the_warborn_clone();
|
||||
new spell_baltharus_enervating_brand_trigger();
|
||||
RegisterSpellScript(spell_baltharus_enervating_brand_trigger);
|
||||
new npc_xerestrasza();
|
||||
new at_baltharus_plateau();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+25
-41
@@ -19,6 +19,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "ruby_sanctum.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Texts
|
||||
{
|
||||
@@ -184,65 +185,48 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_saviana_conflagration_init : public SpellScriptLoader
|
||||
class spell_saviana_conflagration_init : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_saviana_conflagration_init() : SpellScriptLoader("spell_saviana_conflagration_init") { }
|
||||
PrepareSpellScript(spell_saviana_conflagration_init);
|
||||
|
||||
class spell_saviana_conflagration_init_SpellScript : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
PrepareSpellScript(spell_saviana_conflagration_init_SpellScript);
|
||||
return ValidateSpellInfo({ SPELL_FLAME_BEACON, SPELL_CONFLAGRATION_MISSLE });
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_FLAME_BEACON, true);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_CONFLAGRATION_MISSLE, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_init_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
return new spell_saviana_conflagration_init_SpellScript();
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_FLAME_BEACON, true);
|
||||
GetCaster()->CastSpell(GetHitUnit(), SPELL_CONFLAGRATION_MISSLE, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_init::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_saviana_conflagration_throwback : public SpellScriptLoader
|
||||
class spell_saviana_conflagration_throwback : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_saviana_conflagration_throwback() : SpellScriptLoader("spell_saviana_conflagration_throwback") { }
|
||||
PrepareSpellScript(spell_saviana_conflagration_throwback);
|
||||
|
||||
class spell_saviana_conflagration_throwback_SpellScript : public SpellScript
|
||||
void HandleScript(SpellEffIndex effIndex)
|
||||
{
|
||||
PrepareSpellScript(spell_saviana_conflagration_throwback_SpellScript);
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true);
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex effIndex)
|
||||
{
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_throwback_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
void Register() override
|
||||
{
|
||||
return new spell_saviana_conflagration_throwback_SpellScript();
|
||||
OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_throwback::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_saviana_ragefire()
|
||||
{
|
||||
new boss_saviana_ragefire();
|
||||
new spell_saviana_conflagration_init();
|
||||
new spell_saviana_conflagration_throwback();
|
||||
RegisterSpellScript(spell_saviana_conflagration_init);
|
||||
RegisterSpellScript(spell_saviana_conflagration_throwback);
|
||||
}
|
||||
|
||||
|
||||
+20
-25
@@ -23,6 +23,7 @@
|
||||
#include "TemporarySummon.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "ruby_sanctum.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
BossBoundaryData const boundaries =
|
||||
{
|
||||
@@ -244,41 +245,35 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_ruby_sanctum_rallying_shout : public SpellScriptLoader
|
||||
class spell_ruby_sanctum_rallying_shout : public SpellScript
|
||||
{
|
||||
public:
|
||||
spell_ruby_sanctum_rallying_shout() : SpellScriptLoader("spell_ruby_sanctum_rallying_shout") { }
|
||||
PrepareSpellScript(spell_ruby_sanctum_rallying_shout);
|
||||
|
||||
class spell_ruby_sanctum_rallying_shout_SpellScript : public SpellScript
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
PrepareSpellScript(spell_ruby_sanctum_rallying_shout_SpellScript);
|
||||
return ValidateSpellInfo({ SPELL_RALLY });
|
||||
}
|
||||
|
||||
void CountAllies()
|
||||
{
|
||||
uint32 count = GetSpell()->GetUniqueTargetInfo()->size();
|
||||
if (count == GetCaster()->GetAuraCount(SPELL_RALLY))
|
||||
return;
|
||||
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_RALLY);
|
||||
if (count > 0)
|
||||
GetCaster()->CastCustomSpell(SPELL_RALLY, SPELLVALUE_AURA_STACK, count, GetCaster(), true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterHit += SpellHitFn(spell_ruby_sanctum_rallying_shout_SpellScript::CountAllies);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
void CountAllies()
|
||||
{
|
||||
return new spell_ruby_sanctum_rallying_shout_SpellScript();
|
||||
uint32 count = GetSpell()->GetUniqueTargetInfo()->size();
|
||||
if (count == GetCaster()->GetAuraCount(SPELL_RALLY))
|
||||
return;
|
||||
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_RALLY);
|
||||
if (count > 0)
|
||||
GetCaster()->CastCustomSpell(SPELL_RALLY, SPELLVALUE_AURA_STACK, count, GetCaster(), true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterHit += SpellHitFn(spell_ruby_sanctum_rallying_shout::CountAllies);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_instance_ruby_sanctum()
|
||||
{
|
||||
new instance_ruby_sanctum();
|
||||
new spell_ruby_sanctum_rallying_shout();
|
||||
RegisterSpellScript(spell_ruby_sanctum_rallying_shout);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,14 +18,7 @@
|
||||
#ifndef RUBY_SANCTUM_H_
|
||||
#define RUBY_SANCTUM_H_
|
||||
|
||||
#include "Creature.h"
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "GameObjectAI.h"
|
||||
#include "Map.h"
|
||||
#include "Opcodes.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "RS"
|
||||
|
||||
|
||||
+1
@@ -15,6 +15,7 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "CombatAI.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
|
||||
-1
@@ -18,7 +18,6 @@
|
||||
#ifndef DEF_TOC_H
|
||||
#define DEF_TOC_H
|
||||
|
||||
#include "CombatAI.h"
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "TC"
|
||||
|
||||
+1
@@ -19,6 +19,7 @@
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "trial_of_the_crusader.h"
|
||||
|
||||
-1
@@ -20,7 +20,6 @@
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
|
||||
#define DataHeader "TCR"
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "drak_tharon_keep.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "drak_tharon_keep.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "drak_tharon_keep.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#define DEF_DRAK_THARON_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "DTK"
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "drak_tharon_keep.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
DoorData const doorData[] =
|
||||
{
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "halls_of_reflection.h"
|
||||
#include "ScriptedCreature.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "halls_of_reflection.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Yells
|
||||
{
|
||||
|
||||
@@ -18,7 +18,12 @@
|
||||
#include "halls_of_reflection.h"
|
||||
#include "AreaTriggerScript.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "MotionMaster.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
|
||||
enum Events
|
||||
|
||||
@@ -19,14 +19,7 @@
|
||||
#define DEF_HALLS_OF_REFLECTION_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "HOR"
|
||||
|
||||
|
||||
+1
@@ -19,6 +19,7 @@
|
||||
#include "MapMgr.h"
|
||||
#include "Transport.h"
|
||||
#include "halls_of_reflection.h"
|
||||
#include "InstanceScript.h"
|
||||
|
||||
class UtherBatteredHiltEvent : public BasicEvent
|
||||
{
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
#include "CreatureGroups.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuras.h"
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "Opcodes.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "gundrak.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "gundrak.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "gundrak.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum eSpells
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "gundrak.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#define DEF_GUNDRAK_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "GD"
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
|
||||
#include "icecrown_citadel.h"
|
||||
#include "AccountMgr.h"
|
||||
#include "AreaTriggerScript.h"
|
||||
#include "Cell.h"
|
||||
#include "CellImpl.h"
|
||||
|
||||
@@ -28,8 +28,6 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "CreatureScript.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "naxxramas.h"
|
||||
#include "SpellInfo.h"
|
||||
|
||||
using namespace Razuvious;
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
#define DEF_NAXXRAMAS_H
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "NAX"
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "InstanceMapScript.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
|
||||
@@ -18,8 +18,10 @@
|
||||
|
||||
#include "AchievementCriteriaScript.h"
|
||||
#include "CreatureScript.h"
|
||||
#include "MapReference.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "nexus.h"
|
||||
#include "Player.h"
|
||||
|
||||
enum eEnums
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user