Merge branch 'master' into Playerbot
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "WorldStateDefines.h"
|
||||
|
||||
enum LightOfDawnSays
|
||||
{
|
||||
@@ -198,13 +199,6 @@ enum LightOfDawnEncounter
|
||||
ENCOUNTER_TOTAL_DEFENDERS = 300,
|
||||
ENCOUNTER_TOTAL_SCOURGE = 10000,
|
||||
|
||||
WORLD_STATE_DEFENDERS_COUNT = 3590,
|
||||
WORLD_STATE_SCOURGE_COUNT = 3591,
|
||||
WORLD_STATE_SOLDIERS_ENABLE = 3592,
|
||||
WORLD_STATE_COUNTDOWN_ENABLE = 3603,
|
||||
WORLD_STATE_COUNTDOWN_TIME = 3604,
|
||||
WORLD_STATE_EVENT_BEGIN_ENABLE = 3605,
|
||||
|
||||
ENCOUNTER_STATE_NONE = 0,
|
||||
ENCOUNTER_STATE_FIGHT = 1,
|
||||
ENCOUNTER_STATE_OUTRO = 2,
|
||||
@@ -343,7 +337,7 @@ public:
|
||||
if (creature->IsQuestGiver())
|
||||
player->PrepareQuestMenu(creature->GetGUID());
|
||||
|
||||
if (player->GetQuestStatus(12801) == QUEST_STATUS_INCOMPLETE && !creature->AI()->GetData(WORLD_STATE_SOLDIERS_ENABLE))
|
||||
if (player->GetQuestStatus(12801) == QUEST_STATUS_INCOMPLETE && !creature->AI()->GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE))
|
||||
AddGossipItemFor(player, 9795, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
||||
|
||||
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
|
||||
@@ -414,17 +408,17 @@ public:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case WORLD_STATE_DEFENDERS_COUNT:
|
||||
case WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT:
|
||||
return defendersRemaining;
|
||||
case WORLD_STATE_SCOURGE_COUNT:
|
||||
case WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT:
|
||||
return scourgeRemaining;
|
||||
case WORLD_STATE_SOLDIERS_ENABLE:
|
||||
case WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE:
|
||||
return me->IsAlive() && (startTimeRemaining || battleStarted);
|
||||
case WORLD_STATE_COUNTDOWN_ENABLE:
|
||||
case WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE:
|
||||
return me->IsAlive() && startTimeRemaining;
|
||||
case WORLD_STATE_COUNTDOWN_TIME:
|
||||
case WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME:
|
||||
return startTimeRemaining;
|
||||
case WORLD_STATE_EVENT_BEGIN_ENABLE:
|
||||
case WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE:
|
||||
return me->IsAlive() && !startTimeRemaining && battleStarted;
|
||||
}
|
||||
return 0;
|
||||
@@ -442,12 +436,12 @@ public:
|
||||
|
||||
void SendInitialWorldStates()
|
||||
{
|
||||
SendUpdateWorldState(WORLD_STATE_DEFENDERS_COUNT, GetData(WORLD_STATE_DEFENDERS_COUNT));
|
||||
SendUpdateWorldState(WORLD_STATE_SCOURGE_COUNT, GetData(WORLD_STATE_SCOURGE_COUNT));
|
||||
SendUpdateWorldState(WORLD_STATE_SOLDIERS_ENABLE, GetData(WORLD_STATE_SOLDIERS_ENABLE));
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_ENABLE, GetData(WORLD_STATE_COUNTDOWN_ENABLE));
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, GetData(WORLD_STATE_COUNTDOWN_TIME));
|
||||
SendUpdateWorldState(WORLD_STATE_EVENT_BEGIN_ENABLE, GetData(WORLD_STATE_EVENT_BEGIN_ENABLE));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SOLDIERS_ENABLE));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE));
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* cr) override
|
||||
@@ -482,12 +476,12 @@ public:
|
||||
if (creature->GetEntry() >= NPC_RAMPAGING_ABOMINATION)
|
||||
{
|
||||
--scourgeRemaining;
|
||||
SendUpdateWorldState(WORLD_STATE_SCOURGE_COUNT, GetData(WORLD_STATE_SCOURGE_COUNT));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_SCOURGE_COUNT));
|
||||
}
|
||||
else
|
||||
{
|
||||
--defendersRemaining;
|
||||
SendUpdateWorldState(WORLD_STATE_DEFENDERS_COUNT, GetData(WORLD_STATE_DEFENDERS_COUNT));
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT, GetData(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_DEFENDERS_COUNT));
|
||||
|
||||
if (defendersRemaining == 200)
|
||||
FinishFight();
|
||||
@@ -610,25 +604,25 @@ public:
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_START_COUNTDOWN_1:
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 4);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, 4);
|
||||
break;
|
||||
case EVENT_START_COUNTDOWN_2:
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 3);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, 3);
|
||||
break;
|
||||
case EVENT_START_COUNTDOWN_3:
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 2);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, 2);
|
||||
break;
|
||||
case EVENT_START_COUNTDOWN_4:
|
||||
Talk(SAY_LIGHT_OF_DAWN02);
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, 1);
|
||||
break;
|
||||
case EVENT_START_COUNTDOWN_5:
|
||||
battleStarted = ENCOUNTER_STATE_FIGHT;
|
||||
me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE);
|
||||
Talk(SAY_LIGHT_OF_DAWN04); // Wrong order in DB!
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_TIME, 0);
|
||||
SendUpdateWorldState(WORLD_STATE_COUNTDOWN_ENABLE, 0);
|
||||
SendUpdateWorldState(WORLD_STATE_EVENT_BEGIN_ENABLE, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_TIME, 0);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_COUNTDOWN_ENABLE, 0);
|
||||
SendUpdateWorldState(WORLD_STATE_BATTLE_FOR_LIGHTS_HOPE_EVENT_BEGIN_ENABLE, 1);
|
||||
break;
|
||||
case EVENT_START_COUNTDOWN_6:
|
||||
case EVENT_START_COUNTDOWN_7:
|
||||
|
||||
@@ -85,6 +85,8 @@ struct boss_brutallus : public BossAI
|
||||
Talk(YELL_AGGRO);
|
||||
BossAI::JustEngagedWith(who);
|
||||
|
||||
ScheduleEnrageTimer(SPELL_BERSERK, 6min, YELL_BERSERK);
|
||||
|
||||
ScheduleTimedEvent(11s, [&] {
|
||||
DoCastVictim(SPELL_METEOR_SLASH);
|
||||
}, 12s);
|
||||
@@ -98,11 +100,6 @@ struct boss_brutallus : public BossAI
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, true, -SPELL_BURN_DAMAGE))
|
||||
DoCast(target, SPELL_BURN);
|
||||
}, 20s);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
DoCastSelf(SPELL_BERSERK, true);
|
||||
Talk(YELL_BERSERK);
|
||||
}, 6min);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim) override
|
||||
|
||||
@@ -119,7 +119,7 @@ struct boss_sacrolash : public BossAI
|
||||
|
||||
scheduler.CancelGroup(GROUP_SPECIAL_ABILITY);
|
||||
ScheduleTimedEvent(20s, [&] {
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false);
|
||||
if (!target)
|
||||
target = me->GetVictim();
|
||||
|
||||
@@ -153,7 +153,14 @@ struct boss_sacrolash : public BossAI
|
||||
}, 8s, 12s);
|
||||
|
||||
scheduler.Schedule(36s, GROUP_SPECIAL_ABILITY, [this](TaskContext context) {
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
Unit* target = nullptr;
|
||||
if (Creature* alythess = instance->GetCreature(DATA_ALYTHESS))
|
||||
{
|
||||
std::list<Unit*> targets;
|
||||
alythess->AI()->SelectTargetList(targets, 6, SelectTargetMethod::MaxThreat, 0, 100.0f, true, false);
|
||||
if (!targets.empty())
|
||||
target = Acore::Containers::SelectRandomContainerElement(targets);
|
||||
}
|
||||
if (!target)
|
||||
target = me->GetVictim();
|
||||
Talk(EMOTE_SHADOW_NOVA, target);
|
||||
@@ -240,11 +247,11 @@ struct boss_alythess : public BossAI
|
||||
});
|
||||
|
||||
ScheduleTimedEvent(8s, 10s, [&] {
|
||||
me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, urand(4, 5), me, TRIGGERED_NONE);
|
||||
DoCast(SPELL_FLAME_SEAR);
|
||||
}, 8s, 10s);
|
||||
|
||||
ScheduleTimedEvent(20s, 26s, [&] {
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true, false);
|
||||
if (!target)
|
||||
target = me->GetVictim();
|
||||
DoCast(target, SPELL_SHADOW_NOVA);
|
||||
@@ -276,11 +283,18 @@ struct boss_alythess : public BossAI
|
||||
|
||||
// FLAME_SEAR Phase 1
|
||||
ScheduleTimedEvent(10s, 15s, [&] {
|
||||
me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, urand(4, 5), me, TRIGGERED_NONE);
|
||||
DoCast(SPELL_FLAME_SEAR);
|
||||
}, 10s, 15s);
|
||||
|
||||
scheduler.Schedule(20s, GROUP_SPECIAL_ABILITY, [this](TaskContext context) {
|
||||
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f);
|
||||
Unit* target = nullptr;
|
||||
if (Creature* sacrolash = instance->GetCreature(DATA_SACROLASH))
|
||||
{
|
||||
std::list<Unit*> targets;
|
||||
sacrolash->AI()->SelectTargetList(targets, 6, SelectTargetMethod::MaxThreat, 0, 100.0f, true, false);
|
||||
if (!targets.empty())
|
||||
target = Acore::Containers::SelectRandomContainerElement(targets);
|
||||
}
|
||||
if (!target)
|
||||
target = me->GetVictim();
|
||||
Talk(EMOTE_CONFLAGRATION, target);
|
||||
@@ -381,6 +395,22 @@ class spell_eredar_twins_handle_touch : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
class spell_eredar_twins_flame_sear : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_eredar_twins_flame_sear);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
Acore::Containers::RandomResize(targets,5);
|
||||
targets.remove(GetCaster()->GetVictim());
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_eredar_twins_flame_sear::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_eredar_twins_blaze : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_eredar_twins_blaze);
|
||||
@@ -466,6 +496,7 @@ void AddSC_boss_eredar_twins()
|
||||
RegisterSpellScriptWithArgs(spell_eredar_twins_apply_touch, "spell_eredar_twins_apply_flame_touched", SPELL_FLAME_TOUCHED);
|
||||
RegisterSpellScript(spell_eredar_twins_handle_touch);
|
||||
RegisterSpellScript(spell_eredar_twins_blaze);
|
||||
RegisterSpellScript(spell_eredar_twins_flame_sear);
|
||||
RegisterSpellScriptWithArgs(spell_eredar_twins_handle_touch_periodic, "spell_eredar_twins_handle_dark_touched_periodic", SPELL_DARK_TOUCHED, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
RegisterSpellScriptWithArgs(spell_eredar_twins_handle_touch_periodic, "spell_eredar_twins_handle_flame_touched_periodic", SPELL_FLAME_TOUCHED, EFFECT_2, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
RegisterSpellScriptWithArgs(spell_eredar_twins_handle_touch_periodic, "spell_eredar_twins_handle_flame_touched_flame_sear", SPELL_FLAME_TOUCHED, EFFECT_1, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
|
||||
@@ -108,8 +108,8 @@ const Position RightSideLanes[3] =
|
||||
|
||||
const Position RightSide = { 1458.5555f, 502.1995f, 59.899513f, 1.605702f };
|
||||
const Position LeftSide = { 1469.0642f, 729.5854f, 59.823853f, 4.6774f };
|
||||
const Position LandingRightPos = { 1476.77f, 665.094f, 20.6423f };
|
||||
const Position LandingLeftPos = { 1469.93f, 557.009f, 22.631699f };
|
||||
const Position LandingLeftPos = { 1476.77f, 665.094f, 20.6423f };
|
||||
const Position LandingRightPos = { 1469.93f, 557.009f, 22.631699f };
|
||||
|
||||
class CorruptTriggers : public BasicEvent
|
||||
{
|
||||
|
||||
@@ -79,6 +79,10 @@ enum Spells
|
||||
SPELL_SINISTER_REFLECTION_SUMMON = 45891,
|
||||
SPELL_SINISTER_REFLECTION_CLASS = 45893,
|
||||
SPELL_SINISTER_REFLECTION_CLONE = 45785,
|
||||
// TODO
|
||||
// These should be applied to target of SPELL_SINISTER_REFLECTION but not implemented
|
||||
//SPELL_SINISTER_COPY_WEAPON = 41054,
|
||||
//SPELL_SINISTER_COPY_OFFHAND_WEAPON = 45205,
|
||||
|
||||
// Misc
|
||||
SPELL_ANVEENA_ENERGY_DRAIN = 46410,
|
||||
@@ -270,9 +274,6 @@ struct boss_kiljaeden : public BossAI
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
Talk(SAY_KJ_REFLECTION);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
}, 1s);
|
||||
|
||||
scheduler.Schedule(1s+200ms, [this](TaskContext)
|
||||
@@ -313,9 +314,6 @@ struct boss_kiljaeden : public BossAI
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
Talk(SAY_KJ_REFLECTION);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
}, 1s);
|
||||
|
||||
scheduler.Schedule(1s + 200ms, [this](TaskContext)
|
||||
@@ -345,9 +343,6 @@ struct boss_kiljaeden : public BossAI
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
Talk(SAY_KJ_REFLECTION);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
me->CastCustomSpell(SPELL_SINISTER_REFLECTION, SPELLVALUE_MAX_TARGETS, 1, me, TRIGGERED_NONE);
|
||||
}, 1s);
|
||||
|
||||
me->m_Events.AddEventAtOffset([&] {
|
||||
@@ -530,6 +525,7 @@ struct boss_kiljaeden : public BossAI
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
BossAI::JustSummoned(summon);
|
||||
if (summon->GetEntry() == NPC_ARMAGEDDON_TARGET)
|
||||
{
|
||||
summon->SetCanFly(true);
|
||||
@@ -960,8 +956,14 @@ class spell_kiljaeden_sinister_reflection : public SpellScript
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
if (Unit* target = GetHitUnit())
|
||||
{
|
||||
target->CastSpell(target, SPELL_SINISTER_REFLECTION_SUMMON, true);
|
||||
//target->CastSpell(target, SPELL_SINISTER_REFLECTION_CLONE, true);
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
target->CastSpell(target, SPELL_SINISTER_REFLECTION_SUMMON, true);
|
||||
}
|
||||
// TODO implement these auras
|
||||
//target->AddAura(SPELL_SINISTER_COPY_WEAPON, target);
|
||||
//target->AddAura(SPELL_SINISTER_COPY_OFFHAND_WEAPON, target);
|
||||
target->CastSpell(target, SPELL_SINISTER_REFLECTION_CLONE, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "sunwell_plateau.h"
|
||||
#include "VMapFactory.h"
|
||||
#include "VMapMgr2.h"
|
||||
|
||||
enum Spells
|
||||
{
|
||||
@@ -43,7 +45,7 @@ enum Spells
|
||||
SPELL_ENTROPIUS_COSMETIC_SPAWN = 46223,
|
||||
SPELL_NEGATIVE_ENERGY_PERIODIC = 46284,
|
||||
SPELL_BLACK_HOLE = 46282,
|
||||
SPELL_DARKNESS = 46268,
|
||||
SPELL_DARKNESS = 46269,
|
||||
SPELL_SUMMON_DARK_FIEND_ENTROPIUS = 46263,
|
||||
|
||||
//Black Hole Spells
|
||||
@@ -166,13 +168,13 @@ struct boss_entropius : public ScriptedAI
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
ScheduleTimedEvent(10s, [&] {
|
||||
ScheduleTimedEvent(8s, 29s, [this]() {
|
||||
DoCastRandomTarget(SPELL_DARKNESS, 0, 50.0f, true, true);
|
||||
}, 15s);
|
||||
}, 8s, 29s);
|
||||
|
||||
ScheduleTimedEvent(15s, [&] {
|
||||
DoCastRandomTarget(SPELL_BLACK_HOLE, 0, 50.0f, true, true);
|
||||
}, 15s);
|
||||
ScheduleTimedEvent(14s, 29s, [this]() {
|
||||
DoCastRandomTarget(SPELL_BLACK_HOLE, 0, 50.0f, false, true);
|
||||
}, 14s, 29s);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -207,7 +209,54 @@ struct npc_dark_fiend : public ScriptedAI
|
||||
|
||||
me->m_Events.AddEventAtOffset([this]() {
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
if (Unit* target = SelectTargetFromPlayerList(200.0f, 0, true))
|
||||
Unit* target = nullptr;
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
{
|
||||
if (Creature* muru = instance->GetCreature(DATA_MURU))
|
||||
{
|
||||
if (muru->IsAlive() && !muru->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
|
||||
{
|
||||
std::list<HostileReference*> const& threatList = muru->GetThreatMgr().GetThreatList();
|
||||
std::vector<Unit*> validTargets;
|
||||
|
||||
for (HostileReference* ref : threatList)
|
||||
{
|
||||
if (Unit* unit = ObjectAccessor::GetUnit(*muru, ref->getUnitGuid()))
|
||||
{
|
||||
if (unit->IsPlayer() && unit->IsAlive() && unit->IsWithinDist(me, 50.0f))
|
||||
validTargets.push_back(unit);
|
||||
}
|
||||
}
|
||||
|
||||
if (!validTargets.empty())
|
||||
target = validTargets[urand(0, validTargets.size() - 1)];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Creature* entropius = me->FindNearestCreature(NPC_ENTROPIUS, 100.0f))
|
||||
{
|
||||
std::list<HostileReference*> const& threatList = entropius->GetThreatMgr().GetThreatList();
|
||||
std::vector<Unit*> validTargets;
|
||||
|
||||
for (HostileReference* ref : threatList)
|
||||
{
|
||||
if (Unit* unit = ObjectAccessor::GetUnit(*entropius, ref->getUnitGuid()))
|
||||
{
|
||||
if (unit->IsPlayer() && unit->IsAlive() && unit->IsWithinDist(me, 50.0f))
|
||||
{
|
||||
validTargets.push_back(unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!validTargets.empty())
|
||||
target = validTargets[urand(0, validTargets.size() - 1)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (target)
|
||||
{
|
||||
AttackStart(target);
|
||||
me->AddThreat(target, 100000.0f);
|
||||
@@ -253,8 +302,6 @@ struct npc_dark_fiend : public ScriptedAI
|
||||
me->DespawnOrUnsummon();
|
||||
}, 1s);
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -327,7 +374,7 @@ struct npc_singularity : public NullCreatureAI
|
||||
else
|
||||
{
|
||||
// No valid target found, check again soon
|
||||
context.Repeat(1s);
|
||||
context.Repeat();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -421,6 +468,28 @@ class spell_entropius_void_zone_visual_aura : public AuraScript
|
||||
class spell_entropius_black_hole_effect : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_entropius_black_hole_effect);
|
||||
float RaycastToObstacle(Unit* unit, float angle, float z, float maxDist = 20.0f)
|
||||
{
|
||||
float baseX = unit->GetPositionX();
|
||||
float baseY = unit->GetPositionY();
|
||||
float targetX = baseX + maxDist * cos(angle);
|
||||
float targetY = baseY + maxDist * sin(angle);
|
||||
float hitX, hitY, hitZ;
|
||||
if (VMAP::VMapFactory::createOrGetVMapMgr()->GetObjectHitPos(
|
||||
unit->GetMapId(),
|
||||
baseX, baseY, z,
|
||||
targetX, targetY, z,
|
||||
hitX, hitY, hitZ,
|
||||
0.0f))
|
||||
{
|
||||
return std::sqrt(
|
||||
std::pow(hitX - baseX, 2) +
|
||||
std::pow(hitY - baseY, 2) +
|
||||
std::pow(hitZ - z, 2)
|
||||
);
|
||||
}
|
||||
return maxDist;
|
||||
}
|
||||
|
||||
void HandlePull(SpellEffIndex effIndex)
|
||||
{
|
||||
@@ -428,21 +497,25 @@ class spell_entropius_black_hole_effect : public SpellScript
|
||||
Unit* target = GetHitUnit();
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
Position pos;
|
||||
if (target->GetDistance(GetCaster()) < 5.0f)
|
||||
{
|
||||
float o = frand(0, 2 * M_PI);
|
||||
pos.Relocate(GetCaster()->GetPositionX() + 8.0f * cos(o),
|
||||
GetCaster()->GetPositionY() + 8.0f * std::sin(o),
|
||||
GetCaster()->GetPositionZ() + frand(2.0f, 5.0f));
|
||||
float z = GetCaster()->GetPositionZ() + frand(1.0f, 2.0f);
|
||||
float safeDistance = RaycastToObstacle(GetCaster(), o, z, 10.0f);
|
||||
float actualDistance = std::min(8.0f, safeDistance * 0.8f);
|
||||
|
||||
pos.Relocate(
|
||||
GetCaster()->GetPositionX() + actualDistance * cos(o),
|
||||
GetCaster()->GetPositionY() + actualDistance * sin(o),
|
||||
z
|
||||
);
|
||||
}
|
||||
else
|
||||
pos.Relocate(GetCaster()->GetPositionX(), GetCaster()->GetPositionY(), GetCaster()->GetPositionZ() + 1.0f);
|
||||
|
||||
float speedXY = float(GetSpellInfo()->Effects[effIndex].MiscValue) * 0.1f;
|
||||
float speedZ = target->GetDistance(pos) / speedXY * 0.5f * Movement::gravity;
|
||||
|
||||
target->GetMotionMaster()->MoveJump(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), speedXY, speedZ);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,13 +19,12 @@
|
||||
#include "InstanceScript.h"
|
||||
#include "Player.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "zulaman.h"
|
||||
|
||||
enum Misc
|
||||
{
|
||||
RAND_VENDOR = 2,
|
||||
WORLDSTATE_SHOW_TIMER = 3104,
|
||||
WORLDSTATE_TIME_TO_SACRIFICE = 3106
|
||||
RAND_VENDOR = 2,
|
||||
};
|
||||
|
||||
// Chests spawn at bear/eagle/dragonhawk/lynx bosses
|
||||
@@ -175,8 +174,8 @@ public:
|
||||
{
|
||||
if (uint32 timer = GetPersistentData(DATA_TIMED_RUN))
|
||||
{
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, timer);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_TIME_TO_SACRIFICE, timer);
|
||||
}
|
||||
|
||||
scheduler.Schedule(1min, GROUP_TIMED_RUN, [this](TaskContext context)
|
||||
@@ -184,13 +183,13 @@ public:
|
||||
if (uint32 timer = GetPersistentData(DATA_TIMED_RUN))
|
||||
{
|
||||
--timer;
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, timer);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_TIME_TO_SACRIFICE, timer);
|
||||
StorePersistentData(DATA_TIMED_RUN, timer);
|
||||
context.Repeat();
|
||||
}
|
||||
else
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_SHOW_TIMER, 0);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -303,7 +302,7 @@ public:
|
||||
if (uint32 timer = GetPersistentData(DATA_TIMED_RUN))
|
||||
{
|
||||
StorePersistentData(DATA_TIMED_RUN, timer += 15);
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, timer);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_TIME_TO_SACRIFICE, timer);
|
||||
}
|
||||
SummonHostage(type);
|
||||
break;
|
||||
@@ -311,7 +310,7 @@ public:
|
||||
if (uint32 timer = GetPersistentData(DATA_TIMED_RUN))
|
||||
{
|
||||
StorePersistentData(DATA_TIMED_RUN, timer += 10);
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_TO_SACRIFICE, timer);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_TIME_TO_SACRIFICE, timer);
|
||||
}
|
||||
SummonHostage(type);
|
||||
break;
|
||||
@@ -328,7 +327,7 @@ public:
|
||||
if (GetPersistentData(DATA_TIMED_RUN) && AllBossesDone({ DATA_NALORAKK, DATA_AKILZON, DATA_JANALAI, DATA_HALAZZI }))
|
||||
{
|
||||
StorePersistentData(DATA_TIMED_RUN, 0);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_ZUL_AMAN_SHOW_TIMER, 0);
|
||||
}
|
||||
|
||||
CheckInstanceStatus();
|
||||
|
||||
@@ -37,6 +37,7 @@ EndContentData */
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "WorldStateDefines.h"
|
||||
|
||||
/*######
|
||||
## npc_lady_sylvanas_windrunner
|
||||
@@ -723,31 +724,6 @@ enum QuestMisc
|
||||
ZONE_UNDERCITY = 1497
|
||||
};
|
||||
|
||||
enum Worldstates
|
||||
{
|
||||
// Alliance
|
||||
WORLD_STATE_MANHUNT_COUNTDOWN_A = 3958,
|
||||
WORLD_STATE_MANHUNT_STARTS_A = 3966,
|
||||
WORLD_STATE_SEWERS_FIGHT_A = 3962,
|
||||
WORLD_STATE_SEWERS_DONE_A = 3964,
|
||||
WORLD_STATE_APOTHECARIUM_FIGHT_A = 3972,
|
||||
WORLD_STATE_APOTHECARIUM_DONE_A = 3971,
|
||||
WORLD_STATE_FAIL_A = 3963,
|
||||
|
||||
// Horde
|
||||
WORLD_STATE_BATTLE_COUNTDOWN_H = 3876,
|
||||
WORLD_STATE_BATTLE_START_H = 3875,
|
||||
WORLD_STATE_COURTYARD_FIGHT_H = 3885,
|
||||
WORLD_STATE_COURTYARD_DONE_H = 3886,
|
||||
WORLD_STATE_INNER_SANKTUM_FIGHT_H = 3887,
|
||||
WORLD_STATE_INNER_SANKTUM_DONE_H = 3888,
|
||||
WORLD_STATE_APOTHECARIUM_FIGHT_H = 3891, // unused
|
||||
WORLD_STATE_APOTHECARIUM_DONE_H = 3892, // unused
|
||||
WORLD_STATE_ROYAL_QUARTER_FIGHT_H = 3889,
|
||||
WORLD_STATE_ROYAL_QUARTER_DONE_H = 3890,
|
||||
WORLD_STATE_FAIL_H = 3878
|
||||
};
|
||||
|
||||
struct LocationXYZO {
|
||||
float x, y, z, o;
|
||||
};
|
||||
@@ -1131,13 +1107,13 @@ public:
|
||||
switch (summon->GetEntry())
|
||||
{
|
||||
case NPC_BLIGHTWORM:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_SEWERS_FIGHT_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_SEWERS_DONE_A, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_FIGHT_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_DONE_A, 1);
|
||||
bStepping = true;
|
||||
break;
|
||||
case NPC_PUTRESS:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_APOTHECARIUM_FIGHT_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_APOTHECARIUM_DONE_A, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_FIGHT_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_DONE_A, 1);
|
||||
bStepping = true;
|
||||
break;
|
||||
default:
|
||||
@@ -1536,7 +1512,7 @@ public:
|
||||
//Preparation
|
||||
case 0:
|
||||
me->setActive(true);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_MANHUNT_COUNTDOWN_A, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_COUNTDOWN_A, 1);
|
||||
Talk(WRYNN_SAY_PREP_1);
|
||||
JumpToNextStep(10 * IN_MILLISECONDS);
|
||||
break;
|
||||
@@ -1553,8 +1529,8 @@ public:
|
||||
JumpToNextStep(20 * IN_MILLISECONDS);
|
||||
break;
|
||||
case 4:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_MANHUNT_COUNTDOWN_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_MANHUNT_STARTS_A, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_COUNTDOWN_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_STARTS_A, 1);
|
||||
Talk(WRYNN_SAY_PREP_5);
|
||||
JumpToNextStep(10 * IN_MILLISECONDS);
|
||||
break;
|
||||
@@ -1600,8 +1576,8 @@ public:
|
||||
break;
|
||||
case 12:
|
||||
SetEscortPaused(false);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_MANHUNT_STARTS_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_SEWERS_FIGHT_A, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_STARTS_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_FIGHT_A, 1);
|
||||
JumpToNextStep(1 * IN_MILLISECONDS);
|
||||
break;
|
||||
case 13:
|
||||
@@ -1692,7 +1668,7 @@ public:
|
||||
JumpToNextStep(1.5 * IN_MILLISECONDS);
|
||||
break;
|
||||
case 30:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_APOTHECARIUM_FIGHT_A, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_FIGHT_A, 1);
|
||||
if (Creature* putress = ObjectAccessor::GetCreature(*me, putressGUID))
|
||||
putress->AI()->Talk(PUTRESS_SAY_1);
|
||||
if (Player* player = GetPlayerForEscort())
|
||||
@@ -2018,9 +1994,9 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_MANHUNT_STARTS_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_SEWERS_DONE_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_APOTHECARIUM_DONE_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_MANHUNT_STARTS_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_SEWERS_DONE_A, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_APOTHECARIUM_DONE_A, 0);
|
||||
me->DespawnOrUnsummon();
|
||||
break;
|
||||
}
|
||||
@@ -2471,14 +2447,14 @@ public:
|
||||
switch (summon->GetEntry())
|
||||
{
|
||||
case NPC_BLIGHT_ABBERATION:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_COURTYARD_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_COURTYARD_DONE_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COURTYARD_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COURTYARD_DONE_H, 1);
|
||||
bStepping = true;
|
||||
break;
|
||||
case NPC_KHANOK:
|
||||
{
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_DONE_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_INNER_SANCTUM_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_INNER_SANCTUM_DONE_H, 1);
|
||||
FollowThrall();
|
||||
SetEscortPaused(false);
|
||||
std::list<Creature*> SanktumList;
|
||||
@@ -2497,8 +2473,8 @@ public:
|
||||
}
|
||||
case NPC_VARIMATHRAS:
|
||||
{
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_DONE_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_ROYAL_QUARTER_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_ROYAL_QUARTER_DONE_H, 1);
|
||||
std::list<Creature*> ThroneList;
|
||||
me->GetCreatureListWithEntryInGrid(ThroneList, NPC_LEGION_OVERLORD, 1000.0f);
|
||||
me->GetCreatureListWithEntryInGrid(ThroneList, NPC_LEGION_INVADER, 1000.0f);
|
||||
@@ -2874,7 +2850,7 @@ public:
|
||||
break;
|
||||
case 36:
|
||||
Talk(THRALL_SAY_SANCTUM_1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_FIGHT_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_ROYAL_QUARTER_FIGHT_H, 1);
|
||||
break;
|
||||
case 46:
|
||||
SetHoldState(true);
|
||||
@@ -2951,7 +2927,7 @@ public:
|
||||
JumpToNextStep(3 * IN_MILLISECONDS);
|
||||
break;
|
||||
case 1:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_COUNTDOWN_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COUNTDOWN_H, 1);
|
||||
Talk(THRALL_SAY_PREP_1);
|
||||
JumpToNextStep(6 * IN_MILLISECONDS);
|
||||
break;
|
||||
@@ -2995,8 +2971,8 @@ public:
|
||||
break;
|
||||
// Start Event
|
||||
case 11:
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_COUNTDOWN_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_START_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COUNTDOWN_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_START_H, 1);
|
||||
Talk(THRALL_SAY_PREP_8);
|
||||
SetEscortPaused(false);
|
||||
bStepping = false;
|
||||
@@ -3108,8 +3084,8 @@ public:
|
||||
bStepping = false;
|
||||
SetRun(true);
|
||||
Talk(THRALL_SAY_COURTYARD_4);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_START_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_COURTYARD_FIGHT_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_START_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COURTYARD_FIGHT_H, 1);
|
||||
JumpToNextStep(0);
|
||||
break;
|
||||
case 28:
|
||||
@@ -3548,7 +3524,7 @@ public:
|
||||
}
|
||||
case 116:
|
||||
Talk(THRALL_SAY_SANCTUM_7);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_FIGHT_H, 1);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_ROYAL_QUARTER_FIGHT_H, 1);
|
||||
FollowThrall();
|
||||
SetEscortPaused(false);
|
||||
bStepping = false;
|
||||
@@ -3885,9 +3861,9 @@ public:
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
Talk(THRALL_SAY_THRONE_11);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_ROYAL_QUARTER_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_INNER_SANKTUM_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_COURTYARD_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_ROYAL_QUARTER_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_INNER_SANCTUM_FIGHT_H, 0);
|
||||
UpdateWorldState(me->GetMap(), WORLD_STATE_BATTLE_FOR_UNDERCITY_COURTYARD_FIGHT_H, 0);
|
||||
std::list<Creature*> HelperList;
|
||||
me->GetCreatureListWithEntryInGrid(HelperList, NPC_SYLVANAS, 100.0f);
|
||||
me->GetCreatureListWithEntryInGrid(HelperList, NPC_OVERLORD_SAURFANG, 100.0f);
|
||||
|
||||
@@ -24,6 +24,7 @@ void AddSC_event_love_in_the_air();
|
||||
void AddSC_event_midsummer_scripts();
|
||||
void AddSC_event_childrens_week();
|
||||
void AddSC_event_firework_show_scripts();
|
||||
void AddSC_event_noblegarden_scripts();
|
||||
|
||||
// The name of this function should match:
|
||||
// void Add${NameOfDirectory}Scripts()
|
||||
@@ -37,4 +38,5 @@ void AddEventsScripts()
|
||||
AddSC_event_midsummer_scripts();
|
||||
AddSC_event_childrens_week();
|
||||
AddSC_event_firework_show_scripts();
|
||||
AddSC_event_noblegarden_scripts();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Affero General Public License as published by the
|
||||
* Free Software Foundation; either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "Player.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
|
||||
enum eNoblegarden
|
||||
{
|
||||
SPELL_NOBLEGARDEN_BUNNY = 61734
|
||||
};
|
||||
|
||||
// 61712 Summon Noblegarden Bunny Controller
|
||||
class spell_summon_noblegarden_bunny_controller : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_summon_noblegarden_bunny_controller);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_NOBLEGARDEN_BUNNY });
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Player* player = GetHitPlayer())
|
||||
player->CastSpell(player, SPELL_NOBLEGARDEN_BUNNY, true);
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
if (roll_chance_i(5))
|
||||
return SPELL_CAST_OK;
|
||||
|
||||
return SPELL_FAILED_UNKNOWN;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_summon_noblegarden_bunny_controller::HandleDummy, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
OnCheckCast += SpellCheckCastFn(spell_summon_noblegarden_bunny_controller::CheckCast);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_event_noblegarden_scripts()
|
||||
{
|
||||
RegisterSpellScript(spell_summon_noblegarden_bunny_controller);
|
||||
}
|
||||
@@ -51,13 +51,6 @@ enum DataTypes
|
||||
DATA_BOSS_WAVE = 27
|
||||
};
|
||||
|
||||
enum HyjalWorldStateIds
|
||||
{
|
||||
WORLD_STATE_WAVES = 2842,
|
||||
WORLD_STATE_ENEMY = 2453,
|
||||
WORLD_STATE_ENEMYCOUNT = 2454
|
||||
};
|
||||
|
||||
enum HyjalCreaturesIds
|
||||
{
|
||||
// Trash Mobs summoned in waves
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Player.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "hyjal.h"
|
||||
|
||||
/* Battle of Mount Hyjal encounters:
|
||||
@@ -193,7 +194,7 @@ public:
|
||||
{
|
||||
if (_currentWave == 0 && _initialWaves)
|
||||
creature->SetReputationRewardDisabled(true);
|
||||
DoUpdateWorldState(WORLD_STATE_ENEMYCOUNT, ++_trash); // Update the instance wave count on new trash spawn
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_ENEMY_COUNT, ++_trash); // Update the instance wave count on new trash spawn
|
||||
_encounterNPCs.insert(creature->GetGUID()); // Used for despawning on wipe
|
||||
}
|
||||
break;
|
||||
@@ -231,7 +232,7 @@ public:
|
||||
{
|
||||
if (_bossWave != TO_BE_DECIDED)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_ENEMYCOUNT, --_trash); // Update the instance wave count on new trash death
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_ENEMY_COUNT, --_trash); // Update the instance wave count on new trash death
|
||||
_encounterNPCs.erase(creature->GetGUID()); // Used for despawning on wipe
|
||||
|
||||
if (_trash == 0) // It can reach negatives if trash spawned after a retreat are killed, it shouldn't affect anything. Also happens on retail
|
||||
@@ -406,7 +407,7 @@ public:
|
||||
|
||||
if (_bossWave != TO_BE_DECIDED)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_WAVES, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_WAVES, 0);
|
||||
scheduler.Schedule(30s, [this](TaskContext context)
|
||||
{
|
||||
if (IsEncounterInProgress())
|
||||
@@ -491,9 +492,9 @@ public:
|
||||
_trash = 0;
|
||||
_bossWave = TO_BE_DECIDED;
|
||||
_retreat = 0;
|
||||
DoUpdateWorldState(WORLD_STATE_WAVES, _currentWave);
|
||||
DoUpdateWorldState(WORLD_STATE_ENEMY, _trash);
|
||||
DoUpdateWorldState(WORLD_STATE_ENEMYCOUNT, _trash);
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_WAVES, _currentWave);
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_ENEMY, _trash);
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_ENEMY_COUNT, _trash);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -548,8 +549,8 @@ public:
|
||||
context.Repeat(timerptr[_currentWave]);
|
||||
if (++_currentWave < maxWaves && _bossWave != TO_BE_DECIDED)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_WAVES, _currentWave);
|
||||
DoUpdateWorldState(WORLD_STATE_ENEMY, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_WAVES, _currentWave);
|
||||
DoUpdateWorldState(WORLD_STATE_HYJAL_ENEMY, 1);
|
||||
}
|
||||
|
||||
context.SetGroup(CONTEXT_GROUP_WAVES);
|
||||
|
||||
+4
-3
@@ -23,6 +23,7 @@
|
||||
#include "ScriptedEscortAI.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "WorldStateDefines.h"
|
||||
|
||||
enum Says
|
||||
{
|
||||
@@ -924,7 +925,7 @@ public:
|
||||
break;
|
||||
case EVENT_ACTION_PHASE2+9:
|
||||
if (pInstance)
|
||||
pInstance->DoUpdateWorldState(WORLDSTATE_WAVE_COUNT, 0);
|
||||
pInstance->DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT, 0);
|
||||
|
||||
Talk(SAY_PHASE210);
|
||||
eventInRun = false;
|
||||
@@ -1274,7 +1275,7 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
|
||||
else // if (data == COS_PROGRESS_KILLED_SALRAMM)
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->DoUpdateWorldState(WORLDSTATE_WAVE_COUNT, 10);
|
||||
pInstance->DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT, 10);
|
||||
DoAction(ACTION_KILLED_SALRAMM);
|
||||
}
|
||||
break;
|
||||
@@ -1331,7 +1332,7 @@ void npc_arthas::npc_arthasAI::SendNextWave(uint32 entry)
|
||||
else
|
||||
SummonNextWave();
|
||||
|
||||
pInstance->DoUpdateWorldState(WORLDSTATE_WAVE_COUNT, waveGroupId + 1);
|
||||
pInstance->DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT, waveGroupId + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -73,15 +73,6 @@ enum GameObjects
|
||||
GO_PLAGUED_CRATE = 190095,
|
||||
};
|
||||
|
||||
enum WorldStatesCoT
|
||||
{
|
||||
WORLDSTATE_SHOW_CRATES = 3479,
|
||||
WORLDSTATE_CRATES_REVEALED = 3480,
|
||||
WORLDSTATE_WAVE_COUNT = 3504,
|
||||
WORLDSTATE_TIME_GUARDIAN = 3931,
|
||||
WORLDSTATE_TIME_GUARDIAN_SHOW = 3932,
|
||||
};
|
||||
|
||||
enum CrateSpells
|
||||
{
|
||||
SPELL_CRATES_CREDIT = 58109,
|
||||
|
||||
+15
-14
@@ -22,6 +22,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
#include "culling_of_stratholme.h"
|
||||
|
||||
@@ -57,11 +58,11 @@ public:
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_SHOW_CRATES, 0);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_CRATES_REVEALED, _crateCount);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_WAVE_COUNT, 0);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_TIME_GUARDIAN, 25);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_TIME_GUARDIAN_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_CULLING_OF_STRATHOLME_SHOW_CRATES, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_CULLING_OF_STRATHOLME_CRATES_REVEALED, _crateCount);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN, 25);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN_SHOW, 0);
|
||||
}
|
||||
|
||||
void OnPlayerEnter(Player* plr) override
|
||||
@@ -112,13 +113,13 @@ public:
|
||||
switch (type)
|
||||
{
|
||||
case DATA_SHOW_CRATES:
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_CRATES, data);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_SHOW_CRATES, data);
|
||||
return;
|
||||
case DATA_SHOW_INFINITE_TIMER:
|
||||
if (!instance->IsHeroic() || !_guardianTimer)
|
||||
return;
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_GUARDIAN_SHOW, data);
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_GUARDIAN, uint32(_guardianTimer / (MINUTE * IN_MILLISECONDS)));
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN_SHOW, data);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN, uint32(_guardianTimer / (MINUTE * IN_MILLISECONDS)));
|
||||
if (data == 0)
|
||||
{
|
||||
_guardianTimer = 0;
|
||||
@@ -128,10 +129,10 @@ public:
|
||||
instance->SummonCreature(NPC_INFINITE, EventPos[EVENT_SRC_CORRUPTOR]);
|
||||
return;
|
||||
case DATA_START_WAVES:
|
||||
DoUpdateWorldState(WORLDSTATE_WAVE_COUNT, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_WAVE_COUNT, 1);
|
||||
if (instance->IsHeroic())
|
||||
{
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_GUARDIAN_SHOW, true);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN_SHOW, true);
|
||||
_guardianTimer = 26 * MINUTE * IN_MILLISECONDS;
|
||||
if (!_infiniteGUID)
|
||||
instance->SummonCreature(NPC_INFINITE, EventPos[EVENT_SRC_CORRUPTOR]);
|
||||
@@ -151,7 +152,7 @@ public:
|
||||
SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_CRATES_FOUND);
|
||||
}
|
||||
|
||||
DoUpdateWorldState(WORLDSTATE_CRATES_REVEALED, _crateCount);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_CRATES_REVEALED, _crateCount);
|
||||
return;
|
||||
case DATA_ARTHAS_EVENT:
|
||||
// Start Event
|
||||
@@ -256,7 +257,7 @@ public:
|
||||
if (divAfter == 0)
|
||||
{
|
||||
_guardianTimer = 0;
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_GUARDIAN_SHOW, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN_SHOW, 0);
|
||||
|
||||
// Inform infinite we run out of time
|
||||
if (instance->IsHeroic() && _infiniteGUID)
|
||||
@@ -270,7 +271,7 @@ public:
|
||||
else if (divAfter == 1)
|
||||
ChromieWhisper(2);
|
||||
|
||||
DoUpdateWorldState(WORLDSTATE_TIME_GUARDIAN, divAfter);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_TIME_GUARDIAN, divAfter);
|
||||
SaveToDB();
|
||||
}
|
||||
}
|
||||
@@ -290,7 +291,7 @@ public:
|
||||
ChromieWhisper(0);
|
||||
|
||||
// hide crates count
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_CRATES, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_CULLING_OF_STRATHOLME_SHOW_CRATES, 0);
|
||||
_showCrateTimer = 0;
|
||||
_encounterState = COS_PROGRESS_CRATES_FOUND;
|
||||
}
|
||||
|
||||
+4
-3
@@ -19,6 +19,7 @@
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Player.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "old_hillsbrad.h"
|
||||
|
||||
static Position const instancePositions[INSTANCE_POSITIONS_COUNT] =
|
||||
@@ -70,7 +71,7 @@ public:
|
||||
CleanupInstance();
|
||||
|
||||
if (_encounterProgress < ENCOUNTER_PROGRESS_BARRELS)
|
||||
player->SendUpdateWorldState(WORLD_STATE_BARRELS_PLANTED, _barrelCount);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OLD_HILLSBRAD_BARRELS_PLANTED, _barrelCount);
|
||||
}
|
||||
|
||||
void CleanupInstance()
|
||||
@@ -153,7 +154,7 @@ public:
|
||||
if (_barrelCount >= 5 || _encounterProgress > ENCOUNTER_PROGRESS_NONE)
|
||||
return;
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_BARRELS_PLANTED, ++_barrelCount);
|
||||
DoUpdateWorldState(WORLD_STATE_OLD_HILLSBRAD_BARRELS_PLANTED, ++_barrelCount);
|
||||
if (_barrelCount == 5)
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_INITIAL_BARRELS_FLAME, 4000);
|
||||
@@ -237,7 +238,7 @@ public:
|
||||
orc->HandleEmoteCommand(EMOTE_ONESHOT_CHEER);
|
||||
|
||||
SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_BARRELS);
|
||||
DoUpdateWorldState(WORLD_STATE_BARRELS_PLANTED, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_OLD_HILLSBRAD_BARRELS_PLANTED, 0);
|
||||
break;
|
||||
}
|
||||
case EVENT_SUMMON_LIEUTENANT:
|
||||
|
||||
@@ -69,7 +69,6 @@ enum GobjectIds
|
||||
|
||||
enum MiscIds
|
||||
{
|
||||
WORLD_STATE_BARRELS_PLANTED = 2436,
|
||||
SKARLOC_MOUNT_MODEL = 18223,
|
||||
|
||||
ENCOUNTER_PROGRESS_NONE = 0,
|
||||
|
||||
+12
-11
@@ -18,6 +18,7 @@
|
||||
#include "InstanceMapScript.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Player.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "the_black_morass.h"
|
||||
|
||||
const Position PortalLocation[4] =
|
||||
@@ -180,9 +181,9 @@ public:
|
||||
CleanupInstance();
|
||||
}
|
||||
|
||||
player->SendUpdateWorldState(WORLD_STATE_BM, _eventStatus);
|
||||
player->SendUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent);
|
||||
player->SendUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift);
|
||||
player->SendUpdateWorldState(WORLD_STATE_BLACK_MORASS, _eventStatus);
|
||||
player->SendUpdateWorldState(WORLD_STATE_BLACK_MORASS_SHIELD, _shieldPercent);
|
||||
player->SendUpdateWorldState(WORLD_STATE_BLACK_MORASS_RIFT, _currentRift);
|
||||
}
|
||||
|
||||
void ScheduleNextPortal(Milliseconds time, Position lastPosition)
|
||||
@@ -219,7 +220,7 @@ public:
|
||||
|
||||
_availableRiftPositions.remove(spawnPos);
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_BM_RIFT, ++_currentRift);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS_RIFT, ++_currentRift);
|
||||
|
||||
instance->SummonCreature(NPC_TIME_RIFT, spawnPos);
|
||||
|
||||
@@ -318,9 +319,9 @@ public:
|
||||
{
|
||||
_eventStatus = EVENT_IN_PROGRESS;
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_BM, _eventStatus);
|
||||
DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent);
|
||||
DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS, _eventStatus);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS_SHIELD, _shieldPercent);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS_RIFT, _currentRift);
|
||||
|
||||
ScheduleNextPortal(3s, Position(0.0f, 0.0f, 0.0f, 0.0f));
|
||||
|
||||
@@ -339,7 +340,7 @@ public:
|
||||
_shieldPercent = 0;
|
||||
}
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS_SHIELD, _shieldPercent);
|
||||
|
||||
if (!_shieldPercent)
|
||||
{
|
||||
@@ -421,9 +422,9 @@ public:
|
||||
{
|
||||
CleanupInstance();
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_BM, _eventStatus);
|
||||
DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent);
|
||||
DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS, _eventStatus);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS_SHIELD, _shieldPercent);
|
||||
DoUpdateWorldState(WORLD_STATE_BLACK_MORASS_RIFT, _currentRift);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -40,13 +40,6 @@ enum DataTypes
|
||||
DATA_RIFT_NUMBER = 14
|
||||
};
|
||||
|
||||
enum WorldStateIds
|
||||
{
|
||||
WORLD_STATE_BM = 2541,
|
||||
WORLD_STATE_BM_SHIELD = 2540,
|
||||
WORLD_STATE_BM_RIFT = 2784
|
||||
};
|
||||
|
||||
enum EventStatus
|
||||
{
|
||||
EVENT_PREPARE = 0,
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "Vehicle.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "ruby_sanctum.h"
|
||||
|
||||
enum Texts
|
||||
@@ -715,8 +716,8 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
_instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_MATERIAL, _corporeality * 10);
|
||||
_instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TWILIGHT, 100 - _corporeality * 10);
|
||||
_instance->DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_MATERIAL, _corporeality * 10);
|
||||
_instance->DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TWILIGHT, 100 - _corporeality * 10);
|
||||
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_TWILIGHT_HALION)))
|
||||
{
|
||||
@@ -1272,9 +1273,9 @@ class spell_halion_twilight_division : public SpellScript
|
||||
if (GameObject* gobject = halion->FindNearestGameObject(GO_HALION_PORTAL_1, 100.0f))
|
||||
gobject->Delete();
|
||||
|
||||
instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TOGGLE, 1);
|
||||
instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_MATERIAL, 50);
|
||||
instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TWILIGHT, 50);
|
||||
instance->DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TOGGLE, 1);
|
||||
instance->DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_MATERIAL, 50);
|
||||
instance->DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TWILIGHT, 50);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
#include "ruby_sanctum.h"
|
||||
|
||||
@@ -208,9 +209,9 @@ public:
|
||||
halionController->AI()->DoAction(ACTION_INTRO_HALION);
|
||||
break;
|
||||
case DATA_HALION:
|
||||
DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TOGGLE, 0);
|
||||
DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TWILIGHT, 0);
|
||||
DoUpdateWorldState(WORLDSTATE_CORPOREALITY_MATERIAL, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TOGGLE, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TWILIGHT, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_MATERIAL, 0);
|
||||
HandleGameObject(FlameRingGUID, true);
|
||||
break;
|
||||
}
|
||||
@@ -221,9 +222,9 @@ public:
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override
|
||||
{
|
||||
packet.Worldstates.reserve(3);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_MATERIAL, 50);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_TWILIGHT, 50);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_TOGGLE, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_MATERIAL, 50);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TWILIGHT, 50);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_RUBY_SANCTUM_CORPOREALITY_TOGGLE, 0);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
@@ -95,13 +95,6 @@ enum GameObjectsIds
|
||||
GO_BURNING_TREE_4 = 203037
|
||||
};
|
||||
|
||||
enum WorldStatesRS
|
||||
{
|
||||
WORLDSTATE_CORPOREALITY_MATERIAL = 5049,
|
||||
WORLDSTATE_CORPOREALITY_TWILIGHT = 5050,
|
||||
WORLDSTATE_CORPOREALITY_TOGGLE = 5051
|
||||
};
|
||||
|
||||
enum InstanceSpell
|
||||
{
|
||||
SPELL_BERSERK = 26662,
|
||||
|
||||
+6
-5
@@ -20,6 +20,7 @@
|
||||
#include "InstanceMapScript.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "trial_of_the_crusader.h"
|
||||
|
||||
std::map<uint32, bool> validDedicatedInsanityItems;
|
||||
@@ -283,7 +284,7 @@ public:
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if (Player* plr = itr->GetSource())
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_TRIAL_OF_THE_CRUSADER_UI_COUNT, AttemptsLeft);
|
||||
}
|
||||
InstanceCleanup(true);
|
||||
SaveToDB();
|
||||
@@ -1379,11 +1380,11 @@ public:
|
||||
|
||||
if (instance->IsHeroic())
|
||||
{
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_SHOW, 1);
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_TRIAL_OF_THE_CRUSADER_UI_SHOW, 1);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_TRIAL_OF_THE_CRUSADER_UI_COUNT, AttemptsLeft);
|
||||
}
|
||||
else
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_SHOW, 0);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_TRIAL_OF_THE_CRUSADER_UI_SHOW, 0);
|
||||
|
||||
if (DoNeedCleanup(plr))
|
||||
{
|
||||
@@ -1555,7 +1556,7 @@ public:
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if (Player* plr = itr->GetSource())
|
||||
plr->SendUpdateWorldState(UPDATE_STATE_UI_COUNT, AttemptsLeft);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_TRIAL_OF_THE_CRUSADER_UI_COUNT, AttemptsLeft);
|
||||
}
|
||||
|
||||
if (instance->IsHeroic() && AttemptsLeft == 0 )
|
||||
|
||||
-6
@@ -379,12 +379,6 @@ enum eAchievementCriteria
|
||||
ACHIEV_CRITERIA_REALM_FIRST_GRAND_CRUSADER = 12350,
|
||||
};
|
||||
|
||||
enum euiWorldStates
|
||||
{
|
||||
UPDATE_STATE_UI_SHOW = 4390,
|
||||
UPDATE_STATE_UI_COUNT = 4389,
|
||||
};
|
||||
|
||||
const uint32 dIIc = 405;
|
||||
const uint32 dedicatedInsanityItems[405] =
|
||||
{
|
||||
|
||||
@@ -100,12 +100,6 @@ enum GameObjects
|
||||
GO_PORTAL_TO_DALARAN = 195682,
|
||||
};
|
||||
|
||||
enum HorWorldStates
|
||||
{
|
||||
WORLD_STATE_HOR_COUNTER = 4884,
|
||||
WORLD_STATE_HOR_WAVE_COUNT = 4882,
|
||||
};
|
||||
|
||||
enum BatteredHiltStatusFlags
|
||||
{
|
||||
BHSF_NONE = 0,
|
||||
|
||||
+6
-5
@@ -20,6 +20,7 @@
|
||||
#include "InstanceScript.h"
|
||||
#include "MapMgr.h"
|
||||
#include "Transport.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "halls_of_reflection.h"
|
||||
|
||||
class UtherBatteredHiltEvent : public BasicEvent
|
||||
@@ -435,7 +436,7 @@ public:
|
||||
c->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||
}
|
||||
WaveNumber = 0;
|
||||
DoUpdateWorldState(WORLD_STATE_HOR_COUNTER, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED, 0);
|
||||
|
||||
// give quest
|
||||
Map::PlayerList const& pl = instance->GetPlayers();
|
||||
@@ -803,8 +804,8 @@ public:
|
||||
if (WaveNumber >= 6)
|
||||
bFinished5Waves = true;
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_HOR_COUNTER, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_HOR_WAVE_COUNT, WaveNumber);
|
||||
DoUpdateWorldState(WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_HALLS_OF_REFLECTION_WAVE_COUNT, WaveNumber);
|
||||
HandleGameObject(GO_FrontDoorGUID, false);
|
||||
|
||||
// some of them could go back to spawn due to vanish, etc.
|
||||
@@ -869,8 +870,8 @@ public:
|
||||
if (!WaveNumber)
|
||||
return;
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_HOR_COUNTER, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_HOR_WAVE_COUNT, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_HALLS_OF_REFLECTION_WAVES_ENABLED, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_HALLS_OF_REFLECTION_WAVE_COUNT, 0);
|
||||
HandleGameObject(GO_FrontDoorGUID, true);
|
||||
|
||||
TrashCounter = NUM_OF_TRASH;
|
||||
|
||||
@@ -557,15 +557,6 @@ enum QuestsICC
|
||||
QUEST_A_FEAST_OF_SOULS = 24547
|
||||
};
|
||||
|
||||
enum WorldStatesICC
|
||||
{
|
||||
WORLDSTATE_SHOW_TIMER = 4903,
|
||||
WORLDSTATE_EXECUTION_TIME = 4904,
|
||||
WORLDSTATE_SHOW_ATTEMPTS = 4940,
|
||||
WORLDSTATE_ATTEMPTS_REMAINING = 4941,
|
||||
WORLDSTATE_ATTEMPTS_MAX = 4942,
|
||||
};
|
||||
|
||||
enum PutricideEventFlags
|
||||
{
|
||||
PUTRICIDE_EVENT_FLAG_FESTERGUT_VALVE = 1,
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "Transport.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSession.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "icecrown_citadel.h"
|
||||
|
||||
enum EventIds
|
||||
@@ -233,11 +234,11 @@ public:
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_SHOW_TIMER, BloodQuickeningState == IN_PROGRESS ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_SHOW_ATTEMPTS, 1); // instance->IsHeroic() ? 1 : 0
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
|
||||
packet.Worldstates.emplace_back(WORLDSTATE_ATTEMPTS_MAX, MaxHeroicAttempts);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, BloodQuickeningState == IN_PROGRESS ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_SHOW_ATTEMPTS, 1); // instance->IsHeroic() ? 1 : 0
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_REMAINING, HeroicAttempts);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_MAX, MaxHeroicAttempts);
|
||||
}
|
||||
|
||||
void OnPlayerAreaUpdate(Player* player, uint32 /*oldArea*/, uint32 newArea) override
|
||||
@@ -252,7 +253,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
player->SendUpdateWorldState(WORLDSTATE_SHOW_ATTEMPTS, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_SHOW_ATTEMPTS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1021,7 +1022,7 @@ public:
|
||||
if (drop && HeroicAttempts)
|
||||
{
|
||||
--HeroicAttempts;
|
||||
DoUpdateWorldState(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_ATTEMPTS_REMAINING, HeroicAttempts);
|
||||
SaveToDB();
|
||||
}
|
||||
if (HeroicAttempts)
|
||||
@@ -1350,13 +1351,13 @@ public:
|
||||
case IN_PROGRESS:
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
|
||||
BloodQuickeningMinutes = 30;
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
break;
|
||||
case DONE:
|
||||
Events.CancelEvent(EVENT_UPDATE_EXECUTION_TIME);
|
||||
BloodQuickeningMinutes = 0;
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1616,8 +1617,8 @@ public:
|
||||
if (BloodQuickeningState == IN_PROGRESS)
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
}
|
||||
|
||||
data >> WeeklyQuestId10;
|
||||
@@ -1695,13 +1696,13 @@ public:
|
||||
if (BloodQuickeningMinutes)
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 1min);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
}
|
||||
else
|
||||
{
|
||||
BloodQuickeningState = DONE;
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_ICECROWN_CITADEL_SHOW_TIMER, 0);
|
||||
if (Creature* bq = instance->GetCreature(BloodQueenLanaThelGUID))
|
||||
bq->AI()->DoAction(ACTION_KILL_MINCHAR);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "LFGMgr.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
#include "oculus.h"
|
||||
|
||||
@@ -112,13 +113,13 @@ public:
|
||||
{
|
||||
if (m_auiEncounter[DATA_DRAKOS] == DONE && m_auiEncounter[DATA_VAROS] != DONE)
|
||||
{
|
||||
player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT, 10 - CentrifugeCount);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_SHOW, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_AMOUNT, 10 - CentrifugeCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_SHOW, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_AMOUNT, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,8 +137,8 @@ public:
|
||||
m_auiEncounter[DATA_DRAKOS] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT, 10 - CentrifugeCount);
|
||||
DoUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_SHOW, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_AMOUNT, 10 - CentrifugeCount);
|
||||
|
||||
if (instance->IsHeroic())
|
||||
DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_MAKE_IT_COUNT_TIMED_EVENT);
|
||||
@@ -147,7 +148,7 @@ public:
|
||||
m_auiEncounter[DATA_VAROS] = data;
|
||||
if (data == DONE)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_SHOW, 0);
|
||||
|
||||
if (Creature* urom = instance->GetCreature(uiUromGUID))
|
||||
urom->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -178,7 +179,7 @@ public:
|
||||
if (CentrifugeCount < 10)
|
||||
{
|
||||
++CentrifugeCount;
|
||||
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT, 10 - CentrifugeCount);
|
||||
DoUpdateWorldState(WORLD_STATE_OCULUS_CENTRIFUGE_CONSTRUCT_AMOUNT, 10 - CentrifugeCount);
|
||||
}
|
||||
if (CentrifugeCount >= 10)
|
||||
if (Creature* varos = instance->GetCreature(uiVarosGUID))
|
||||
|
||||
@@ -97,12 +97,6 @@ enum AchievData
|
||||
CRITERIA_RUBY_VOID = 7323,
|
||||
};
|
||||
|
||||
enum OculusWorldStates
|
||||
{
|
||||
WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW = 3524,
|
||||
WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT = 3486
|
||||
};
|
||||
|
||||
enum MISC
|
||||
{
|
||||
POINT_MOVE_DRAKES
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "ScriptedCreature.h"
|
||||
#include "Transport.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
#include "ulduar.h"
|
||||
|
||||
@@ -173,8 +174,8 @@ public:
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override
|
||||
{
|
||||
packet.Worldstates.reserve(2);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ALGALON_TIMER_ENABLED, (m_algalonTimer && m_algalonTimer <= 60) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ALGALON_DESPAWN_TIMER, std::min<int32>(m_algalonTimer, 60));
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ULDUAR_ALGALON_TIMER_ENABLED, (m_algalonTimer && m_algalonTimer <= 60) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_ULDUAR_ALGALON_DESPAWN_TIMER, std::min<int32>(m_algalonTimer, 60));
|
||||
}
|
||||
|
||||
void OnPlayerEnter(Player* player) override
|
||||
@@ -769,15 +770,15 @@ public:
|
||||
SaveToDB();
|
||||
return;
|
||||
case DATA_DESPAWN_ALGALON:
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, 60);
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_ALGALON_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_ALGALON_DESPAWN_TIMER, 60);
|
||||
m_algalonTimer = 60;
|
||||
_events.RescheduleEvent(EVENT_UPDATE_ALGALON_TIMER, 1min);
|
||||
SaveToDB();
|
||||
return;
|
||||
case DATA_ALGALON_SUMMON_STATE:
|
||||
case DATA_ALGALON_DEFEATED:
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_ALGALON_TIMER_ENABLED, 0);
|
||||
m_algalonTimer = (type == DATA_ALGALON_DEFEATED ? TIMER_ALGALON_DEFEATED : TIMER_ALGALON_SUMMONED);
|
||||
_events.CancelEvent(EVENT_UPDATE_ALGALON_TIMER);
|
||||
SaveToDB();
|
||||
@@ -1148,8 +1149,8 @@ public:
|
||||
|
||||
if (m_algalonTimer && m_algalonTimer <= 60 && GetData(TYPE_ALGALON) != DONE)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, m_algalonTimer);
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_ALGALON_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_ALGALON_DESPAWN_TIMER, m_algalonTimer);
|
||||
}
|
||||
|
||||
data >> C_of_Ulduar_MASK;
|
||||
@@ -1190,7 +1191,7 @@ public:
|
||||
}
|
||||
|
||||
SaveToDB();
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, --m_algalonTimer);
|
||||
DoUpdateWorldState(WORLD_STATE_ULDUAR_ALGALON_DESPAWN_TIMER, --m_algalonTimer);
|
||||
if (m_algalonTimer)
|
||||
{
|
||||
_events.Repeat(1min);
|
||||
|
||||
@@ -276,10 +276,6 @@ enum UlduarMisc
|
||||
ACTION_TOWER_OF_FLAMES_DESTROYED = 3,
|
||||
ACTION_TOWER_OF_LIFE_DESTROYED = 4,
|
||||
|
||||
// Algalon the Observer
|
||||
WORLD_STATE_ALGALON_DESPAWN_TIMER = 4131,
|
||||
WORLD_STATE_ALGALON_TIMER_ENABLED = 4132,
|
||||
|
||||
EVENT_UPDATE_ALGALON_TIMER = 1,
|
||||
ACTION_FEEDS_ON_TEARS_FAILED = 0,
|
||||
ACTION_INIT_ALGALON = 1,
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "InstanceMapScript.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "violet_hold.h"
|
||||
|
||||
enum vYells
|
||||
@@ -235,7 +236,7 @@ public:
|
||||
CLEANED = false;
|
||||
InstanceCleanup();
|
||||
}
|
||||
DoUpdateWorldState(WORLD_STATE_VH_PRISON_STATE, (uint32)GateHealth);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_PRISON_STATE, (uint32)GateHealth);
|
||||
break;
|
||||
case DATA_RELEASE_BOSS:
|
||||
if (WaveCount == 6)
|
||||
@@ -253,7 +254,7 @@ public:
|
||||
m_auiEncounter[2] = DONE;
|
||||
EncounterStatus = DONE;
|
||||
HandleGameObject(GO_MainGateGUID, true);
|
||||
DoUpdateWorldState(WORLD_STATE_VH_SHOW, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_SHOW, 0);
|
||||
if (Creature* c = instance->GetCreature(NPC_SinclariGUID))
|
||||
{
|
||||
c->AI()->Talk(SAY_SINCLARI_COMPLETE);
|
||||
@@ -458,9 +459,9 @@ public:
|
||||
}
|
||||
GateHealth = 100;
|
||||
HandleGameObject(GO_MainGateGUID, false);
|
||||
DoUpdateWorldState(WORLD_STATE_VH_SHOW, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_VH_PRISON_STATE, (uint32)GateHealth);
|
||||
DoUpdateWorldState(WORLD_STATE_VH_WAVE_COUNT, (uint32)WaveCount);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_SHOW, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_PRISON_STATE, (uint32)GateHealth);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_WAVE_COUNT, (uint32)WaveCount);
|
||||
|
||||
for (ObjectGuid const& guid : GO_ActivationCrystalGUID)
|
||||
if (GameObject* go = instance->GetGameObject(guid))
|
||||
@@ -473,7 +474,7 @@ public:
|
||||
break;
|
||||
case EVENT_SUMMON_PORTAL:
|
||||
++WaveCount;
|
||||
DoUpdateWorldState(WORLD_STATE_VH_WAVE_COUNT, (uint32)WaveCount);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_WAVE_COUNT, (uint32)WaveCount);
|
||||
SetData(DATA_PORTAL_LOCATION, (GetData(DATA_PORTAL_LOCATION) + urand(1, 5)) % 6);
|
||||
if (Creature* c = instance->GetCreature(NPC_SinclariGUID))
|
||||
{
|
||||
@@ -527,12 +528,12 @@ public:
|
||||
|
||||
if (EncounterStatus == IN_PROGRESS)
|
||||
{
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VH_SHOW, 1);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VH_PRISON_STATE, (uint32)GateHealth);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VH_WAVE_COUNT, (uint32)WaveCount);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VIOLET_HOLD_SHOW, 1);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VIOLET_HOLD_PRISON_STATE, (uint32)GateHealth);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VIOLET_HOLD_WAVE_COUNT, (uint32)WaveCount);
|
||||
}
|
||||
else
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VH_SHOW, 0);
|
||||
plr->SendUpdateWorldState(WORLD_STATE_VIOLET_HOLD_SHOW, 0);
|
||||
|
||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, 5s);
|
||||
}
|
||||
@@ -625,7 +626,7 @@ public:
|
||||
}
|
||||
|
||||
// reinitialize variables and events
|
||||
DoUpdateWorldState(WORLD_STATE_VH_SHOW, 0);
|
||||
DoUpdateWorldState(WORLD_STATE_VIOLET_HOLD_SHOW, 0);
|
||||
EncounterStatus = NOT_STARTED;
|
||||
GateHealth = 100;
|
||||
WaveCount = 0;
|
||||
|
||||
@@ -89,13 +89,6 @@ enum Bosses
|
||||
BOSS_CYANIGOSA
|
||||
};
|
||||
|
||||
enum VHWorldStates
|
||||
{
|
||||
WORLD_STATE_VH_SHOW = 3816,
|
||||
WORLD_STATE_VH_PRISON_STATE = 3815,
|
||||
WORLD_STATE_VH_WAVE_COUNT = 3810,
|
||||
};
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CONTROL_CRYSTAL_ACTIVATION = 57804,
|
||||
|
||||
@@ -307,7 +307,7 @@ public:
|
||||
else
|
||||
{
|
||||
uint32 timer = wintergrasp->GetTimer() / 1000;
|
||||
player->SendUpdateWorldState(4354, GameTime::GetGameTime().count() + timer);
|
||||
player->SendUpdateWorldState(WORLD_STATE_BATTLEFIELD_WG_CLOCK_TEXTS, GameTime::GetGameTime().count() + timer);
|
||||
if (timer < 15 * MINUTE)
|
||||
{
|
||||
AddGossipItemFor(player, WG_GOSSIP_MENU_QUEUE, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSessionMgr.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
|
||||
OPvPCapturePointEP_EWT::OPvPCapturePointEP_EWT(OutdoorPvP* pvp)
|
||||
@@ -101,41 +102,41 @@ void OPvPCapturePointEP_EWT::ChangeState()
|
||||
void OPvPCapturePointEP_EWT::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
// send this too, sometimes it resets :S
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_EWT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(EP_EWT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_EWT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_EWT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_EWT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_EWT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_EASTWALLTOWER_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_EASTWALLTOWER_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_EWT::UpdateTowerState()
|
||||
{
|
||||
_pvp->SendUpdateWorldState(EP_EWT_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(EP_EWT_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(EP_EWT_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(EP_EWT_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(EP_EWT_N, bool(m_TowerState & EP_TS_N));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N, bool(m_TowerState & EP_TS_N));
|
||||
}
|
||||
|
||||
bool OPvPCapturePointEP_EWT::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -143,7 +144,7 @@ bool OPvPCapturePointEP_EWT::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointEP_EWT::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
@@ -244,41 +245,41 @@ void OPvPCapturePointEP_NPT::ChangeState()
|
||||
void OPvPCapturePointEP_NPT::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
// send this too, sometimes it resets :S
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_NPT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(EP_NPT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_NPT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_NPT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_NPT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_NPT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_NPT::UpdateTowerState()
|
||||
{
|
||||
_pvp->SendUpdateWorldState(EP_NPT_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(EP_NPT_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(EP_NPT_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(EP_NPT_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(EP_NPT_N, bool(m_TowerState & EP_TS_N));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N, bool(m_TowerState & EP_TS_N));
|
||||
}
|
||||
|
||||
bool OPvPCapturePointEP_NPT::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -286,7 +287,7 @@ bool OPvPCapturePointEP_NPT::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointEP_NPT::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
@@ -377,41 +378,41 @@ void OPvPCapturePointEP_CGT::ChangeState()
|
||||
void OPvPCapturePointEP_CGT::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
// send this too, sometimes it resets :S
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_CGT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(EP_CGT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_CGT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_CGT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_CGT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_CGT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_CGT::UpdateTowerState()
|
||||
{
|
||||
_pvp->SendUpdateWorldState(EP_CGT_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(EP_CGT_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(EP_CGT_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(EP_CGT_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(EP_CGT_N, bool(m_TowerState & EP_TS_N));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N, bool(m_TowerState & EP_TS_N));
|
||||
}
|
||||
|
||||
bool OPvPCapturePointEP_CGT::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -419,7 +420,7 @@ bool OPvPCapturePointEP_CGT::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointEP_CGT::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
@@ -515,41 +516,41 @@ void OPvPCapturePointEP_PWT::ChangeState()
|
||||
void OPvPCapturePointEP_PWT::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
// send this too, sometimes it resets :S
|
||||
SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_PWT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(EP_PWT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_PWT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_PWT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_PWT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(EP_PWT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
void OPvPCapturePointEP_PWT::UpdateTowerState()
|
||||
{
|
||||
_pvp->SendUpdateWorldState(EP_PWT_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(EP_PWT_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(EP_PWT_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(EP_PWT_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(EP_PWT_N, bool(m_TowerState & EP_TS_N));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_A, bool(m_TowerState & EP_TS_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H, bool(m_TowerState & EP_TS_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_A, bool(m_TowerState & EP_TS_N_A));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_H, bool(m_TowerState & EP_TS_N_H));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N, bool(m_TowerState & EP_TS_N));
|
||||
}
|
||||
|
||||
bool OPvPCapturePointEP_PWT::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -557,7 +558,7 @@ bool OPvPCapturePointEP_PWT::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointEP_PWT::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
@@ -647,8 +648,8 @@ bool OutdoorPvPEP::Update(uint32 diff)
|
||||
++m_AllianceTowersControlled;
|
||||
else if (EP_ControlsId[i] == TEAM_HORDE)
|
||||
++m_HordeTowersControlled;
|
||||
SendUpdateWorldState(EP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(EP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
BuffTeams();
|
||||
}
|
||||
return true;
|
||||
@@ -720,11 +721,11 @@ void OutdoorPvPEP::SetControlledState(uint32 index, TeamId teamId)
|
||||
void OutdoorPvPEP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(5);
|
||||
packet.Worldstates.emplace_back(EP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
packet.Worldstates.emplace_back(EP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(EP_UI_TOWER_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(EP_UI_TOWER_SLIDER_N, 100);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, 100);
|
||||
|
||||
for (OPvPCapturePointMap::iterator itr = _capturePoints.begin(); itr != _capturePoints.end(); ++itr)
|
||||
{
|
||||
@@ -734,35 +735,35 @@ void OutdoorPvPEP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSta
|
||||
|
||||
void OutdoorPvPEP::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_COUNT_A, 0);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_COUNT_H, 0);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_COUNT_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_COUNT_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_UI_TOWER_SLIDER_N, 0);
|
||||
|
||||
player->SendUpdateWorldState(EP_EWT_A, 0);
|
||||
player->SendUpdateWorldState(EP_EWT_H, 0);
|
||||
player->SendUpdateWorldState(EP_EWT_N, 0);
|
||||
player->SendUpdateWorldState(EP_EWT_N_A, 0);
|
||||
player->SendUpdateWorldState(EP_EWT_N_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_EASTWALLTOWER_N_H, 0);
|
||||
|
||||
player->SendUpdateWorldState(EP_PWT_A, 0);
|
||||
player->SendUpdateWorldState(EP_PWT_H, 0);
|
||||
player->SendUpdateWorldState(EP_PWT_N, 0);
|
||||
player->SendUpdateWorldState(EP_PWT_N_A, 0);
|
||||
player->SendUpdateWorldState(EP_PWT_N_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_PLAGUEWOODTOWER_N_H, 0);
|
||||
|
||||
player->SendUpdateWorldState(EP_NPT_A, 0);
|
||||
player->SendUpdateWorldState(EP_NPT_H, 0);
|
||||
player->SendUpdateWorldState(EP_NPT_N, 0);
|
||||
player->SendUpdateWorldState(EP_NPT_N_A, 0);
|
||||
player->SendUpdateWorldState(EP_NPT_N_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_NORTHPASSTOWER_N_H, 0);
|
||||
|
||||
player->SendUpdateWorldState(EP_CGT_A, 0);
|
||||
player->SendUpdateWorldState(EP_CGT_H, 0);
|
||||
player->SendUpdateWorldState(EP_CGT_N, 0);
|
||||
player->SendUpdateWorldState(EP_CGT_N_A, 0);
|
||||
player->SendUpdateWorldState(EP_CGT_N_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_EP_CROWNGUARDTOWER_N_H, 0);
|
||||
}
|
||||
|
||||
class OutdoorPvP_eastern_plaguelands : public OutdoorPvPScript
|
||||
|
||||
@@ -46,52 +46,6 @@ const uint32 EPBuffZones[EPBuffZonesNum] = {139, 2017, 2057};
|
||||
// EP_PWT_Taxi = 84
|
||||
//};
|
||||
|
||||
enum EP_EastwallTowerWorldStates
|
||||
{
|
||||
EP_EWT_A = 2354,
|
||||
EP_EWT_H = 2356,
|
||||
EP_EWT_N_A = 2359, // ally conquested
|
||||
EP_EWT_N_H = 2360,
|
||||
EP_EWT_N = 2361
|
||||
};
|
||||
|
||||
enum EP_NorthpassTowerWorldStates
|
||||
{
|
||||
EP_NPT_N = 2352,
|
||||
EP_NPT_N_A = 2362,
|
||||
EP_NPT_N_H = 2363,
|
||||
EP_NPT_A = 2372,
|
||||
EP_NPT_H = 2373
|
||||
};
|
||||
|
||||
enum EP_PlagewoodTowerWorldStates
|
||||
{
|
||||
EP_PWT_N_A = 2366,
|
||||
EP_PWT_N_H = 2353, //2367 not present! use neutral!
|
||||
EP_PWT_A = 2370,
|
||||
EP_PWT_H = 2371,
|
||||
EP_PWT_N = 2353
|
||||
};
|
||||
|
||||
enum EP_CrownGuardTowerWorldStates
|
||||
{
|
||||
EP_CGT_N_A = 2374,
|
||||
EP_CGT_N_H = 2375,
|
||||
EP_CGT_A = 2378,
|
||||
EP_CGT_H = 2379,
|
||||
EP_CGT_N = 2355
|
||||
};
|
||||
|
||||
enum EP_WorldStates
|
||||
{
|
||||
EP_UI_TOWER_SLIDER_DISPLAY = 2426,
|
||||
EP_UI_TOWER_SLIDER_POS = 2427,
|
||||
EP_UI_TOWER_SLIDER_N = 2428,
|
||||
|
||||
EP_UI_TOWER_COUNT_A = 2327,
|
||||
EP_UI_TOWER_COUNT_H = 2328
|
||||
};
|
||||
|
||||
enum EP_Summons
|
||||
{
|
||||
EP_EWT_COMMANDER = 0,
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "OutdoorPvPScript.h"
|
||||
#include "Player.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldStateDefines.h"
|
||||
|
||||
OutdoorPvPGH::OutdoorPvPGH()
|
||||
{
|
||||
@@ -39,9 +40,9 @@ bool OutdoorPvPGH::SetupOutdoorPvP()
|
||||
|
||||
void OutdoorPvPGH::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_N, 0);
|
||||
}
|
||||
|
||||
OPvPCapturePointGH::OPvPCapturePointGH(OutdoorPvP* pvp) : OPvPCapturePoint(pvp)
|
||||
@@ -52,29 +53,29 @@ OPvPCapturePointGH::OPvPCapturePointGH(OutdoorPvP* pvp) : OPvPCapturePoint(pvp)
|
||||
void OPvPCapturePointGH::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(3);
|
||||
packet.Worldstates.emplace_back(GH_UI_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(GH_UI_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(GH_UI_SLIDER_N, 20);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_GH_UI_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_GH_UI_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_GH_UI_SLIDER_N, 20);
|
||||
}
|
||||
|
||||
void OPvPCapturePointGH::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(GH_UI_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(GH_UI_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(GH_UI_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
bool OPvPCapturePointGH::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -82,7 +83,7 @@ bool OPvPCapturePointGH::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointGH::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(GH_UI_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_GH_UI_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,10 +26,6 @@ enum OutdoorPvPGHenum
|
||||
GH_HORDE_DEFENSE_EVENT = 66,
|
||||
|
||||
GH_ZONE = 394,
|
||||
|
||||
GH_UI_SLIDER_DISPLAY = 3466,
|
||||
GH_UI_SLIDER_POS = 3467,
|
||||
GH_UI_SLIDER_N = 3468,
|
||||
};
|
||||
|
||||
class Unit;
|
||||
|
||||
@@ -131,21 +131,21 @@ bool OutdoorPvPHP::Update(uint32 diff)
|
||||
TeamCastSpell(TEAM_ALLIANCE, -AllianceBuff);
|
||||
TeamCastSpell(TEAM_HORDE, -HordeBuff);
|
||||
}
|
||||
SendUpdateWorldState(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
void OutdoorPvPHP::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_DISPLAY_A, 0);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_DISPLAY_H, 0);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_COUNT_H, 0);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_COUNT_A, 0);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_N, 0);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_DISPLAY_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_DISPLAY_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
for (int i = 0; i < HP_TOWER_NUM; ++i)
|
||||
{
|
||||
player->SendUpdateWorldState(HP_MAP_N[i], 0);
|
||||
@@ -157,15 +157,15 @@ void OutdoorPvPHP::SendRemoveWorldStates(Player* player)
|
||||
void OutdoorPvPHP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(8);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_A, 1);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_H, 1);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_DISPLAY_A, 1);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_DISPLAY_H, 1);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(HP_UI_TOWER_SLIDER_N, 100);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N, 100);
|
||||
for (OPvPCapturePointMap::iterator itr = _capturePoints.begin(); itr != _capturePoints.end(); ++itr)
|
||||
{
|
||||
itr->second->FillInitialWorldStates(packet);
|
||||
@@ -269,12 +269,12 @@ void OPvPCapturePointHP::ChangeState()
|
||||
|
||||
void OPvPCapturePointHP::SendChangePhase()
|
||||
{
|
||||
SendUpdateWorldState(HP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(HP_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS, phase);
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
}
|
||||
|
||||
void OPvPCapturePointHP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
@@ -311,10 +311,10 @@ bool OPvPCapturePointHP::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -322,7 +322,7 @@ bool OPvPCapturePointHP::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointHP::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(HP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_HP_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define OUTDOOR_PVP_HP_
|
||||
|
||||
#include "OutdoorPvP.h"
|
||||
#include "WorldStateDefines.h"
|
||||
|
||||
#define OutdoorPvPHPBuffZonesNum 6
|
||||
// HP, citadel, ramparts, blood furnace, shattered halls, mag's lair
|
||||
@@ -46,24 +47,11 @@ const uint32 HP_CREDITMARKER[HP_TOWER_NUM] = {19032, 19028, 19029};
|
||||
|
||||
//const uint32 HP_CapturePointEvent_Leave[HP_TOWER_NUM] = {11403, 11395, 11387};
|
||||
|
||||
enum OutdoorPvPHPWorldStates
|
||||
{
|
||||
HP_UI_TOWER_DISPLAY_A = 0x9ba,
|
||||
HP_UI_TOWER_DISPLAY_H = 0x9b9,
|
||||
const uint32 HP_MAP_N[HP_TOWER_NUM] = {WORLD_STATE_OPVP_HP_BROKENHILL_N, WORLD_STATE_OPVP_HP_OVERLOOK_N, WORLD_STATE_OPVP_HP_STADIUM_N };
|
||||
|
||||
HP_UI_TOWER_COUNT_H = 0x9ae,
|
||||
HP_UI_TOWER_COUNT_A = 0x9ac,
|
||||
const uint32 HP_MAP_A[HP_TOWER_NUM] = {WORLD_STATE_OPVP_HP_BROKENHILL_A, WORLD_STATE_OPVP_HP_OVERLOOK_A, WORLD_STATE_OPVP_HP_STADIUM_A };
|
||||
|
||||
HP_UI_TOWER_SLIDER_N = 2475,
|
||||
HP_UI_TOWER_SLIDER_POS = 2474,
|
||||
HP_UI_TOWER_SLIDER_DISPLAY = 2473
|
||||
};
|
||||
|
||||
const uint32 HP_MAP_N[HP_TOWER_NUM] = {0x9b5, 0x9b2, 0x9a8};
|
||||
|
||||
const uint32 HP_MAP_A[HP_TOWER_NUM] = {0x9b3, 0x9b0, 0x9a7};
|
||||
|
||||
const uint32 HP_MAP_H[HP_TOWER_NUM] = {0x9b4, 0x9b1, 0x9a6};
|
||||
const uint32 HP_MAP_H[HP_TOWER_NUM] = {WORLD_STATE_OPVP_HP_BROKENHILL_H, WORLD_STATE_OPVP_HP_OVERLOOK_H, WORLD_STATE_OPVP_HP_STADIUM_H };
|
||||
|
||||
const uint32 HP_TowerArtKit_A[HP_TOWER_NUM] = {65, 62, 67};
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSessionMgr.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
|
||||
OutdoorPvPNA::OutdoorPvPNA()
|
||||
@@ -216,9 +217,9 @@ void OPvPCapturePointNA::FactionTakeOver(TeamId teamId)
|
||||
m_WyvernStateEast = WYVERN_NEU_HORDE;
|
||||
m_WyvernStateWest = WYVERN_NEU_HORDE;
|
||||
_pvp->TeamApplyBuff(TEAM_ALLIANCE, NA_CAPTURE_BUFF);
|
||||
_pvp->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
_pvp->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 1);
|
||||
_pvp->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 1);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_A));
|
||||
}
|
||||
else
|
||||
@@ -228,9 +229,9 @@ void OPvPCapturePointNA::FactionTakeOver(TeamId teamId)
|
||||
m_WyvernStateEast = WYVERN_NEU_ALLIANCE;
|
||||
m_WyvernStateWest = WYVERN_NEU_ALLIANCE;
|
||||
_pvp->TeamApplyBuff(TEAM_HORDE, NA_CAPTURE_BUFF);
|
||||
_pvp->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 1);
|
||||
_pvp->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
_pvp->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 1);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
sWorldSessionMgr->SendZoneText(NA_HALAA_GRAVEYARD_ZONE, sObjectMgr->GetAcoreStringForDBCLocale(LANG_OPVP_NA_CAPTURE_H));
|
||||
}
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
@@ -243,10 +244,10 @@ bool OPvPCapturePointNA::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -254,7 +255,7 @@ bool OPvPCapturePointNA::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointNA::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
@@ -311,75 +312,75 @@ void OPvPCapturePointNA::FillInitialWorldStates(WorldPackets::WorldState::InitWo
|
||||
packet.Worldstates.reserve(25);
|
||||
if (m_ControllingFaction == TEAM_ALLIANCE)
|
||||
{
|
||||
packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 1);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 1);
|
||||
}
|
||||
else if (m_ControllingFaction == TEAM_HORDE)
|
||||
{
|
||||
packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 1);
|
||||
packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 1);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
}
|
||||
|
||||
packet.Worldstates.emplace_back(NA_UI_GUARDS_MAX, NA_GUARDS_MAX);
|
||||
packet.Worldstates.emplace_back(NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_H, (m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_A, (m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_H, (m_WyvernStateNorth & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_A, (m_WyvernStateNorth & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_H, (m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_A, (m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_H, (m_WyvernStateSouth & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_A, (m_WyvernStateSouth & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_H, (m_WyvernStateWest & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_A, (m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_H, (m_WyvernStateWest & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_A, (m_WyvernStateWest & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_H, (m_WyvernStateEast & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_A, (m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_H, (m_WyvernStateEast & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_A, (m_WyvernStateEast & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_HALAA_NEUTRAL, (m_HalaaState & HALAA_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_HALAA_NEU_A, (m_HalaaState & HALAA_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_HALAA_NEU_H, (m_HalaaState & HALAA_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_HALAA_HORDE, (m_HalaaState & HALAA_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(NA_MAP_HALAA_ALLIANCE, (m_HalaaState & HALAA_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_GUARDS_MAX, NA_GUARDS_MAX);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_NEU_H, (m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_NEU_A, (m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_H, (m_WyvernStateNorth & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_A, (m_WyvernStateNorth & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_NEU_H, (m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_NEU_A, (m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_H, (m_WyvernStateSouth & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_A, (m_WyvernStateSouth & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_NEU_H, (m_WyvernStateWest & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_NEU_A, (m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_H, (m_WyvernStateWest & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_A, (m_WyvernStateWest & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_NEU_H, (m_WyvernStateEast & WYVERN_NEU_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_NEU_A, (m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_H, (m_WyvernStateEast & WYVERN_HORDE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_A, (m_WyvernStateEast & WYVERN_ALLIANCE) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_HALAA_NEUTRAL, (m_HalaaState & HALAA_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_HALAA_NEU_A, (m_HalaaState & HALAA_N_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_HALAA_NEU_H, (m_HalaaState & HALAA_N_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_HALAA_HORDE, (m_HalaaState & HALAA_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_NA_MAP_HALAA_ALLIANCE, (m_HalaaState & HALAA_A) != 0 ? 1 : 0);
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
player->SendUpdateWorldState(NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
player->SendUpdateWorldState(NA_UI_GUARDS_MAX, 0);
|
||||
player->SendUpdateWorldState(NA_UI_GUARDS_LEFT, 0);
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(NA_UI_TOWER_SLIDER_N, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_WEST_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_WYVERN_EAST_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_HALAA_NEUTRAL, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_HALAA_NEU_A, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_HALAA_NEU_H, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_HALAA_HORDE, 0);
|
||||
player->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_HORDE_GUARDS_SHOW, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_ALLIANCE_GUARDS_SHOW, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_MAX, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_POS, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_SLIDER_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_NEU_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_NEU_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_NEU_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_NEU_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_NEU_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_NEU_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_NEU_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_NEU_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_NEUTRAL, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_NEU_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_NEU_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_HORDE, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_ALLIANCE, 0);
|
||||
}
|
||||
|
||||
bool OutdoorPvPNA::Update(uint32 diff)
|
||||
@@ -640,7 +641,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
else
|
||||
m_capturable = false;
|
||||
// update the guard count for the players in zone
|
||||
_pvp->SendUpdateWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
}
|
||||
}
|
||||
else m_GuardCheckTimer -= diff;
|
||||
@@ -774,7 +775,7 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
}
|
||||
}
|
||||
else
|
||||
SendUpdateWorldState(NA_UI_TOWER_SLIDER_DISPLAY, 0); //Point is not capturable so we hide the slider
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_DISPLAY, 0); //Point is not capturable so we hide the slider
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -824,20 +825,20 @@ void OPvPCapturePointNA::ChangeState()
|
||||
void OPvPCapturePointNA::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(NA_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(NA_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(NA_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_NA_UI_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::UpdateHalaaWorldState()
|
||||
{
|
||||
_pvp->SendUpdateWorldState(NA_MAP_HALAA_NEUTRAL, uint32(bool(m_HalaaState & HALAA_N)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_HALAA_NEU_A, uint32(bool(m_HalaaState & HALAA_N_A)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_HALAA_NEU_H, uint32(bool(m_HalaaState & HALAA_N_H)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_HALAA_HORDE, uint32(bool(m_HalaaState & HALAA_H)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_HALAA_ALLIANCE, uint32(bool(m_HalaaState & HALAA_A)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_NEUTRAL, uint32(bool(m_HalaaState & HALAA_N)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_NEU_A, uint32(bool(m_HalaaState & HALAA_N_A)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_NEU_H, uint32(bool(m_HalaaState & HALAA_N_H)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_HORDE, uint32(bool(m_HalaaState & HALAA_H)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_HALAA_ALLIANCE, uint32(bool(m_HalaaState & HALAA_A)));
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::UpdateWyvernRoostWorldState(uint32 roost)
|
||||
@@ -845,28 +846,28 @@ void OPvPCapturePointNA::UpdateWyvernRoostWorldState(uint32 roost)
|
||||
switch (roost)
|
||||
{
|
||||
case NA_ROOST_S:
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_H, uint32(bool(m_WyvernStateSouth & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_NEU_A, uint32(bool(m_WyvernStateSouth & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_H, uint32(bool(m_WyvernStateSouth & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_SOUTH_A, uint32(bool(m_WyvernStateSouth & WYVERN_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_NEU_H, uint32(bool(m_WyvernStateSouth & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_NEU_A, uint32(bool(m_WyvernStateSouth & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_H, uint32(bool(m_WyvernStateSouth & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_SOUTH_A, uint32(bool(m_WyvernStateSouth & WYVERN_ALLIANCE)));
|
||||
break;
|
||||
case NA_ROOST_N:
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_H, uint32(bool(m_WyvernStateNorth & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_NEU_A, uint32(bool(m_WyvernStateNorth & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_H, uint32(bool(m_WyvernStateNorth & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_NORTH_A, uint32(bool(m_WyvernStateNorth & WYVERN_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_NEU_H, uint32(bool(m_WyvernStateNorth & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_NEU_A, uint32(bool(m_WyvernStateNorth & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_H, uint32(bool(m_WyvernStateNorth & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_NORTH_A, uint32(bool(m_WyvernStateNorth & WYVERN_ALLIANCE)));
|
||||
break;
|
||||
case NA_ROOST_W:
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_H, uint32(bool(m_WyvernStateWest & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_WEST_NEU_A, uint32(bool(m_WyvernStateWest & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_WEST_H, uint32(bool(m_WyvernStateWest & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_WEST_A, uint32(bool(m_WyvernStateWest & WYVERN_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_NEU_H, uint32(bool(m_WyvernStateWest & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_NEU_A, uint32(bool(m_WyvernStateWest & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_H, uint32(bool(m_WyvernStateWest & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_WEST_A, uint32(bool(m_WyvernStateWest & WYVERN_ALLIANCE)));
|
||||
break;
|
||||
case NA_ROOST_E:
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_H, uint32(bool(m_WyvernStateEast & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_EAST_NEU_A, uint32(bool(m_WyvernStateEast & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_EAST_H, uint32(bool(m_WyvernStateEast & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(NA_MAP_WYVERN_EAST_A, uint32(bool(m_WyvernStateEast & WYVERN_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_NEU_H, uint32(bool(m_WyvernStateEast & WYVERN_NEU_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_NEU_A, uint32(bool(m_WyvernStateEast & WYVERN_NEU_ALLIANCE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_H, uint32(bool(m_WyvernStateEast & WYVERN_HORDE)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_NA_MAP_WYVERN_EAST_A, uint32(bool(m_WyvernStateEast & WYVERN_ALLIANCE)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,44 +48,6 @@ const uint32 NA_GUARD_CHECK_TIME = 500; // every half second
|
||||
|
||||
const uint32 NA_HALAA_BOMB = 24538; // Item id Bomb throwed in Halaa
|
||||
|
||||
enum OutdoorPvPNAWorldStates
|
||||
{
|
||||
NA_UI_HORDE_GUARDS_SHOW = 2503,
|
||||
NA_UI_ALLIANCE_GUARDS_SHOW = 2502,
|
||||
NA_UI_GUARDS_MAX = 2493,
|
||||
NA_UI_GUARDS_LEFT = 2491,
|
||||
|
||||
NA_UI_TOWER_SLIDER_DISPLAY = 2495,
|
||||
NA_UI_TOWER_SLIDER_POS = 2494,
|
||||
NA_UI_TOWER_SLIDER_N = 2497,
|
||||
|
||||
NA_MAP_WYVERN_NORTH_NEU_H = 2762,
|
||||
NA_MAP_WYVERN_NORTH_NEU_A = 2662,
|
||||
NA_MAP_WYVERN_NORTH_H = 2663,
|
||||
NA_MAP_WYVERN_NORTH_A = 2664,
|
||||
|
||||
NA_MAP_WYVERN_SOUTH_NEU_H = 2760,
|
||||
NA_MAP_WYVERN_SOUTH_NEU_A = 2670,
|
||||
NA_MAP_WYVERN_SOUTH_H = 2668,
|
||||
NA_MAP_WYVERN_SOUTH_A = 2669,
|
||||
|
||||
NA_MAP_WYVERN_WEST_NEU_H = 2761,
|
||||
NA_MAP_WYVERN_WEST_NEU_A = 2667,
|
||||
NA_MAP_WYVERN_WEST_H = 2665,
|
||||
NA_MAP_WYVERN_WEST_A = 2666,
|
||||
|
||||
NA_MAP_WYVERN_EAST_NEU_H = 2763,
|
||||
NA_MAP_WYVERN_EAST_NEU_A = 2659,
|
||||
NA_MAP_WYVERN_EAST_H = 2660,
|
||||
NA_MAP_WYVERN_EAST_A = 2661,
|
||||
|
||||
NA_MAP_HALAA_NEUTRAL = 2671,
|
||||
NA_MAP_HALAA_NEU_A = 2676,
|
||||
NA_MAP_HALAA_NEU_H = 2677,
|
||||
NA_MAP_HALAA_HORDE = 2672,
|
||||
NA_MAP_HALAA_ALLIANCE = 2673
|
||||
};
|
||||
|
||||
const uint32 FLIGHT_NODES_NUM = 4;
|
||||
|
||||
// used to access the elements of Horde/AllyControlGOs
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSessionMgr.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
|
||||
OutdoorPvPSI::OutdoorPvPSI()
|
||||
@@ -42,23 +43,23 @@ OutdoorPvPSI::OutdoorPvPSI()
|
||||
void OutdoorPvPSI::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(3);
|
||||
packet.Worldstates.emplace_back(SI_GATHERED_A, m_Gathered_A);
|
||||
packet.Worldstates.emplace_back(SI_GATHERED_H, m_Gathered_H);
|
||||
packet.Worldstates.emplace_back(SI_SILITHYST_MAX, SI_MAX_RESOURCES);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_SI_GATHERED_A, m_Gathered_A);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_SI_GATHERED_H, m_Gathered_H);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_SI_SILITHYST_MAX, SI_MAX_RESOURCES);
|
||||
}
|
||||
|
||||
void OutdoorPvPSI::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(SI_GATHERED_A, 0);
|
||||
player->SendUpdateWorldState(SI_GATHERED_H, 0);
|
||||
player->SendUpdateWorldState(SI_SILITHYST_MAX, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_SI_GATHERED_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_SI_GATHERED_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_SI_SILITHYST_MAX, 0);
|
||||
}
|
||||
|
||||
void OutdoorPvPSI::UpdateWorldState()
|
||||
{
|
||||
SendUpdateWorldState(SI_GATHERED_A, m_Gathered_A);
|
||||
SendUpdateWorldState(SI_GATHERED_H, m_Gathered_H);
|
||||
SendUpdateWorldState(SI_SILITHYST_MAX, SI_MAX_RESOURCES);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_SI_GATHERED_A, m_Gathered_A);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_SI_GATHERED_H, m_Gathered_H);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_SI_SILITHYST_MAX, SI_MAX_RESOURCES);
|
||||
}
|
||||
|
||||
bool OutdoorPvPSI::SetupOutdoorPvP()
|
||||
|
||||
@@ -44,13 +44,6 @@ const uint32 SI_TURNIN_QUEST_CM_H = 18199;
|
||||
|
||||
const uint32 SI_SILITHYST_MOUND = 181597;
|
||||
|
||||
enum SI_WorldStates
|
||||
{
|
||||
SI_GATHERED_A = 2313,
|
||||
SI_GATHERED_H = 2314,
|
||||
SI_SILITHYST_MAX = 2317
|
||||
};
|
||||
|
||||
class OutdoorPvPSI : public OutdoorPvP
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -63,19 +63,19 @@ void OPvPCapturePointTF::FillInitialWorldStates(WorldPackets::WorldState::InitWo
|
||||
void OutdoorPvPTF::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(12);
|
||||
packet.Worldstates.emplace_back(TF_UI_TOWER_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(TF_UI_TOWER_SLIDER_N, 100);
|
||||
packet.Worldstates.emplace_back(TF_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS, 50);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N, 100);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
|
||||
packet.Worldstates.emplace_back(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
packet.Worldstates.emplace_back(TF_UI_TOWERS_CONTROLLED_DISPLAY, !m_IsLocked);
|
||||
packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
|
||||
packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
|
||||
packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_HOURS, hours_left);
|
||||
packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_NEUTRAL, (m_IsLocked && !m_HordeTowersControlled && !m_AllianceTowersControlled) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_HORDE, (m_IsLocked && (m_HordeTowersControlled > m_AllianceTowersControlled)) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_ALLIANCE, (m_IsLocked && (m_HordeTowersControlled < m_AllianceTowersControlled)) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, !m_IsLocked);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS, hours_left);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_NEUTRAL, (m_IsLocked && !m_HordeTowersControlled && !m_AllianceTowersControlled) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_HORDE, (m_IsLocked && (m_HordeTowersControlled > m_AllianceTowersControlled)) ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_ALLIANCE, (m_IsLocked && (m_HordeTowersControlled < m_AllianceTowersControlled)) ? 1 : 0);
|
||||
|
||||
for (OPvPCapturePointMap::iterator itr = _capturePoints.begin(); itr != _capturePoints.end(); ++itr)
|
||||
{
|
||||
@@ -85,21 +85,21 @@ void OutdoorPvPTF::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSta
|
||||
|
||||
void OutdoorPvPTF::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_POS, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_N, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_DISPLAY, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY, uint32(0));
|
||||
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_COUNT_H, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_COUNT_A, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
|
||||
|
||||
player->SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_LOCKED_TIME_HOURS, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS, uint32(0));
|
||||
|
||||
player->SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
player->SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
|
||||
for (int i = 0; i < TF_TOWER_NUM; ++i)
|
||||
{
|
||||
@@ -111,14 +111,14 @@ void OutdoorPvPTF::SendRemoveWorldStates(Player* player)
|
||||
|
||||
void OutdoorPvPTF::SaveRequiredWorldStates() const
|
||||
{
|
||||
sWorld->setWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
sWorld->setWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
|
||||
sWorld->setWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, m_IsLocked);
|
||||
sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, m_IsLocked);
|
||||
|
||||
// Save expiry as unix
|
||||
uint32 const lockExpireTime = GameTime::GetGameTime().count() + (m_LockTimer / IN_MILLISECONDS);
|
||||
sWorld->setWorldState(TF_UI_LOCKED_TIME_HOURS, lockExpireTime);
|
||||
sWorld->setWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS, lockExpireTime);
|
||||
}
|
||||
|
||||
void OutdoorPvPTF::ResetZoneToTeamControlled(TeamId team)
|
||||
@@ -144,8 +144,8 @@ void OutdoorPvPTF::ResetZoneToTeamControlled(TeamId team)
|
||||
dynamic_cast<OPvPCapturePointTF*>(tower)->ResetToTeamControlled(team);
|
||||
}
|
||||
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
}
|
||||
|
||||
void OPvPCapturePointTF::ResetToTeamControlled(TeamId team)
|
||||
@@ -185,10 +185,10 @@ bool OPvPCapturePointTF::HandlePlayerEnter(Player* player)
|
||||
{
|
||||
if (OPvPCapturePoint::HandlePlayerEnter(player))
|
||||
{
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS, phase);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -196,7 +196,7 @@ bool OPvPCapturePointTF::HandlePlayerEnter(Player* player)
|
||||
|
||||
void OPvPCapturePointTF::HandlePlayerLeave(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(TF_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY, 0);
|
||||
OPvPCapturePoint::HandlePlayerLeave(player);
|
||||
}
|
||||
|
||||
@@ -211,20 +211,20 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
TeamApplyBuff(TEAM_ALLIANCE, TF_CAPTURE_BUFF);
|
||||
m_IsLocked = true;
|
||||
m_JustLocked = true;
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(1));
|
||||
SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(1));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
|
||||
}
|
||||
else if (m_HordeTowersControlled == TF_TOWER_NUM)
|
||||
{
|
||||
TeamApplyBuff(TEAM_HORDE, TF_CAPTURE_BUFF);
|
||||
m_IsLocked = true;
|
||||
m_JustLocked = true;
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(1));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_HORDE, uint32(1));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -232,8 +232,8 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
TeamCastSpell(TEAM_HORDE, -TF_CAPTURE_BUFF);
|
||||
}
|
||||
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H, m_HordeTowersControlled);
|
||||
}
|
||||
|
||||
if (m_IsLocked)
|
||||
@@ -254,10 +254,10 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
ResetZoneToTeamControlled(TEAM_NEUTRAL);
|
||||
SaveRequiredWorldStates();
|
||||
|
||||
SendUpdateWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(1));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
SendUpdateWorldState(TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY, uint32(1));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_NEUTRAL, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_HORDE, uint32(0));
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_DISPLAY_ALLIANCE, uint32(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -267,9 +267,9 @@ bool OutdoorPvPTF::Update(uint32 diff)
|
||||
m_LockTimerUpdate = TF_LOCK_TIME_UPDATE;
|
||||
RecalculateClientUILockTime();
|
||||
|
||||
SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
|
||||
SendUpdateWorldState(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
|
||||
SendUpdateWorldState(TF_UI_LOCKED_TIME_HOURS, hours_left);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS, hours_left);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -335,7 +335,7 @@ bool OutdoorPvPTF::SetupOutdoorPvP()
|
||||
m_AllianceTowersControlled = 0;
|
||||
m_HordeTowersControlled = 0;
|
||||
|
||||
m_IsLocked = bool(sWorld->getWorldState(TF_UI_TOWERS_CONTROLLED_DISPLAY));
|
||||
m_IsLocked = bool(sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWERS_CONTROLLED_DISPLAY));
|
||||
m_JustLocked = false;
|
||||
m_LockTimer = TF_LOCK_TIME;
|
||||
m_LockTimerUpdate = 0;
|
||||
@@ -359,14 +359,14 @@ bool OutdoorPvPTF::SetupOutdoorPvP()
|
||||
{
|
||||
// Core shutdown while locked -- init from latest known data in WorldState
|
||||
// Convert from unix
|
||||
int32 const lockRemainingTime = int32((sWorld->getWorldState(TF_UI_LOCKED_TIME_HOURS) - GameTime::GetGameTime().count()) * IN_MILLISECONDS);
|
||||
int32 const lockRemainingTime = int32((sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_LOCKED_TIME_HOURS) - GameTime::GetGameTime().count()) * IN_MILLISECONDS);
|
||||
if (lockRemainingTime > 0)
|
||||
{
|
||||
m_LockTimer = lockRemainingTime;
|
||||
RecalculateClientUILockTime();
|
||||
|
||||
uint32 const hordeTowers = uint32(sWorld->getWorldState(TF_UI_TOWER_COUNT_H));
|
||||
uint32 const allianceTowers = uint32(sWorld->getWorldState(TF_UI_TOWER_COUNT_A));
|
||||
uint32 const hordeTowers = uint32(sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_H));
|
||||
uint32 const allianceTowers = uint32(sWorld->getWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_COUNT_A));
|
||||
TeamId const controllingTeam = hordeTowers > allianceTowers ? TEAM_HORDE : TEAM_ALLIANCE;
|
||||
|
||||
ResetZoneToTeamControlled(controllingTeam);
|
||||
@@ -462,12 +462,12 @@ void OPvPCapturePointTF::ChangeState()
|
||||
void OPvPCapturePointTF::SendChangePhase()
|
||||
{
|
||||
// send this too, sometimes the slider disappears, dunno why :(
|
||||
SendUpdateWorldState(TF_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_DISPLAY, 1);
|
||||
// send these updates to only the ones in this objective
|
||||
uint32 phase = (uint32)ceil((_value + _maxValue) / (2 * _maxValue) * 100.0f);
|
||||
SendUpdateWorldState(TF_UI_TOWER_SLIDER_POS, phase);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_POS, phase);
|
||||
// send this too, sometimes it resets :S
|
||||
SendUpdateWorldState(TF_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
SendUpdateWorldState(WORLD_STATE_OPVP_TF_UI_TOWER_SLIDER_N, _neutralValuePct);
|
||||
}
|
||||
|
||||
class OutdoorPvP_terokkar_forest : public OutdoorPvPScript
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#define OUTDOOR_PVP_TF_
|
||||
|
||||
#include "OutdoorPvP.h"
|
||||
#include "WorldStateDefines.h"
|
||||
|
||||
const uint8 OutdoorPvPTFBuffZonesNum = 5;
|
||||
|
||||
@@ -71,11 +72,11 @@ struct tf_tower_world_state
|
||||
|
||||
const tf_tower_world_state TFTowerWorldStates[TF_TOWER_NUM] =
|
||||
{
|
||||
{0xa79, 0xa7a, 0xa7b},
|
||||
{0xa7e, 0xa7d, 0xa7c},
|
||||
{0xa82, 0xa81, 0xa80},
|
||||
{0xa88, 0xa87, 0xa86},
|
||||
{0xa85, 0xa84, 0xa83}
|
||||
{WORLD_STATE_OPVP_TF_TOWER_NUM_00, WORLD_STATE_OPVP_TF_TOWER_NUM_01, WORLD_STATE_OPVP_TF_TOWER_NUM_02},
|
||||
{WORLD_STATE_OPVP_TF_TOWER_NUM_05, WORLD_STATE_OPVP_TF_TOWER_NUM_04, WORLD_STATE_OPVP_TF_TOWER_NUM_03},
|
||||
{WORLD_STATE_OPVP_TF_TOWER_NUM_08, WORLD_STATE_OPVP_TF_TOWER_NUM_07, WORLD_STATE_OPVP_TF_TOWER_NUM_06},
|
||||
{WORLD_STATE_OPVP_TF_TOWER_NUM_14, WORLD_STATE_OPVP_TF_TOWER_NUM_13, WORLD_STATE_OPVP_TF_TOWER_NUM_12},
|
||||
{WORLD_STATE_OPVP_TF_TOWER_NUM_11, WORLD_STATE_OPVP_TF_TOWER_NUM_10, WORLD_STATE_OPVP_TF_TOWER_NUM_09}
|
||||
};
|
||||
|
||||
//const uint32 TFTowerPlayerEnterEvents[TF_TOWER_NUM] =
|
||||
@@ -96,24 +97,6 @@ const tf_tower_world_state TFTowerWorldStates[TF_TOWER_NUM] =
|
||||
// 12500
|
||||
//};
|
||||
|
||||
enum TFWorldStates
|
||||
{
|
||||
TF_UI_TOWER_SLIDER_POS = 0xa41,
|
||||
TF_UI_TOWER_SLIDER_N = 0xa40,
|
||||
TF_UI_TOWER_SLIDER_DISPLAY = 0xa3f,
|
||||
|
||||
TF_UI_TOWER_COUNT_H = 0xa3e,
|
||||
TF_UI_TOWER_COUNT_A = 0xa3d,
|
||||
TF_UI_TOWERS_CONTROLLED_DISPLAY = 0xa3c,
|
||||
|
||||
TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT = 0x9d0,
|
||||
TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT = 0x9ce,
|
||||
TF_UI_LOCKED_TIME_HOURS = 0x9cd,
|
||||
TF_UI_LOCKED_DISPLAY_NEUTRAL = 0x9cc,
|
||||
TF_UI_LOCKED_DISPLAY_HORDE = 0xad0,
|
||||
TF_UI_LOCKED_DISPLAY_ALLIANCE = 0xacf
|
||||
};
|
||||
|
||||
enum TFTowerStates
|
||||
{
|
||||
TF_TOWERSTATE_N = 1,
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "World.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSessionMgr.h"
|
||||
#include "WorldStateDefines.h"
|
||||
#include "WorldStatePackets.h"
|
||||
|
||||
OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconType type)
|
||||
@@ -269,26 +270,26 @@ OPvPCapturePointZM_Graveyard::OPvPCapturePointZM_Graveyard(OutdoorPvP* pvp)
|
||||
|
||||
void OPvPCapturePointZM_Graveyard::UpdateTowerState()
|
||||
{
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_GRAVEYARD_N, uint32(bool(m_GraveyardState & ZM_GRAVEYARD_N)));
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_GRAVEYARD_H, uint32(bool(m_GraveyardState & ZM_GRAVEYARD_H)));
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_GRAVEYARD_A, uint32(bool(m_GraveyardState & ZM_GRAVEYARD_A)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_N, uint32(bool(m_GraveyardState & ZM_GRAVEYARD_N)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_H, uint32(bool(m_GraveyardState & ZM_GRAVEYARD_H)));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_A, uint32(bool(m_GraveyardState & ZM_GRAVEYARD_A)));
|
||||
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_READY, uint32(m_BothControllingFactionId == TEAM_ALLIANCE));
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_NOT_READY, uint32(m_BothControllingFactionId != TEAM_ALLIANCE));
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_READY, uint32(m_BothControllingFactionId == TEAM_HORDE));
|
||||
_pvp->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_NOT_READY, uint32(m_BothControllingFactionId != TEAM_HORDE));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY, uint32(m_BothControllingFactionId == TEAM_ALLIANCE));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_NOT_READY, uint32(m_BothControllingFactionId != TEAM_ALLIANCE));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_READY, uint32(m_BothControllingFactionId == TEAM_HORDE));
|
||||
_pvp->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_NOT_READY, uint32(m_BothControllingFactionId != TEAM_HORDE));
|
||||
}
|
||||
|
||||
void OPvPCapturePointZM_Graveyard::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.reserve(7);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_N, (m_GraveyardState & ZM_GRAVEYARD_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_H, (m_GraveyardState & ZM_GRAVEYARD_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_A, (m_GraveyardState & ZM_GRAVEYARD_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_READY, m_BothControllingFactionId == TEAM_ALLIANCE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_NOT_READY, m_BothControllingFactionId != TEAM_ALLIANCE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_READY, m_BothControllingFactionId == TEAM_HORDE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_NOT_READY, m_BothControllingFactionId != TEAM_HORDE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_N, (m_GraveyardState & ZM_GRAVEYARD_N) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_H, (m_GraveyardState & ZM_GRAVEYARD_H) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_A, (m_GraveyardState & ZM_GRAVEYARD_A) != 0 ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY, m_BothControllingFactionId == TEAM_ALLIANCE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_NOT_READY, m_BothControllingFactionId != TEAM_ALLIANCE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_READY, m_BothControllingFactionId == TEAM_HORDE ? 1 : 0);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_NOT_READY, m_BothControllingFactionId != TEAM_HORDE ? 1 : 0);
|
||||
}
|
||||
|
||||
void OPvPCapturePointZM_Graveyard::SetBeaconState(TeamId controlling_factionId)
|
||||
@@ -417,7 +418,7 @@ void OutdoorPvPZM::SetHordeTowersControlled(uint32 count)
|
||||
|
||||
void OutdoorPvPZM::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.emplace_back(ZM_WORLDSTATE_UNK_1, 1);
|
||||
packet.Worldstates.emplace_back(WORLD_STATE_OPVP_ZM_UNK, 1);
|
||||
for (OPvPCapturePointMap::iterator itr = _capturePoints.begin(); itr != _capturePoints.end(); ++itr)
|
||||
{
|
||||
itr->second->FillInitialWorldStates(packet);
|
||||
@@ -426,32 +427,32 @@ void OutdoorPvPZM::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSta
|
||||
|
||||
void OutdoorPvPZM::SendRemoveWorldStates(Player* player)
|
||||
{
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_SLIDER_N_W, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_SLIDER_POS_W, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_SLIDER_DISPLAY_W, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_SLIDER_N_E, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_SLIDER_POS_E, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_SLIDER_DISPLAY_E, 0);
|
||||
player->SendUpdateWorldState(ZM_WORLDSTATE_UNK_1, 1);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_EAST_N, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_EAST_H, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_EAST_A, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_WEST_N, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_WEST_H, 0);
|
||||
player->SendUpdateWorldState(ZM_UI_TOWER_WEST_A, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_TOWER_EAST_N, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_TOWER_EAST_H, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_TOWER_EAST_A, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_GRAVEYARD_H, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_GRAVEYARD_A, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_GRAVEYARD_N, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_TOWER_WEST_N, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_TOWER_WEST_H, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_TOWER_WEST_A, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_READY, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_NOT_READY, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_NOT_READY, 0);
|
||||
player->SendUpdateWorldState(ZM_MAP_ALLIANCE_FLAG_READY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_SLIDER_N_W, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_SLIDER_POS_W, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_SLIDER_DISPLAY_W, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_SLIDER_N_E, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_SLIDER_POS_E, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_SLIDER_DISPLAY_E, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UNK, 1);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_EAST_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_EAST_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_EAST_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_WEST_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_WEST_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_UI_TOWER_WEST_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_TOWER_EAST_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_TOWER_EAST_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_TOWER_EAST_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_GRAVEYARD_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_TOWER_WEST_N, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_TOWER_WEST_H, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_TOWER_WEST_A, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_READY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_HORDE_FLAG_NOT_READY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_NOT_READY, 0);
|
||||
player->SendUpdateWorldState(WORLD_STATE_OPVP_ZM_MAP_ALLIANCE_FLAG_READY, 0);
|
||||
}
|
||||
|
||||
class OutdoorPvP_zangarmarsh : public OutdoorPvPScript
|
||||
|
||||
@@ -122,41 +122,6 @@ const go_type ZMCapturePoints[ZM_NUM_BEACONS] =
|
||||
{182522, 530, 336.466f, 7340.26f, 41.4984f, -1.58825f, 0.0f, 0.0f, 0.71325f, -0.700909f}
|
||||
};
|
||||
|
||||
enum OutdoorPvPZMWorldStates
|
||||
{
|
||||
ZM_UI_TOWER_SLIDER_N_W = 2529,
|
||||
ZM_UI_TOWER_SLIDER_POS_W = 2528,
|
||||
ZM_UI_TOWER_SLIDER_DISPLAY_W = 2527,
|
||||
|
||||
ZM_UI_TOWER_SLIDER_N_E = 2535,
|
||||
ZM_UI_TOWER_SLIDER_POS_E = 2534,
|
||||
ZM_UI_TOWER_SLIDER_DISPLAY_E = 2533,
|
||||
|
||||
ZM_WORLDSTATE_UNK_1 = 2653,
|
||||
|
||||
ZM_UI_TOWER_EAST_N = 2560,
|
||||
ZM_UI_TOWER_EAST_H = 2559,
|
||||
ZM_UI_TOWER_EAST_A = 2558,
|
||||
ZM_UI_TOWER_WEST_N = 2557,
|
||||
ZM_UI_TOWER_WEST_H = 2556,
|
||||
ZM_UI_TOWER_WEST_A = 2555,
|
||||
|
||||
ZM_MAP_TOWER_EAST_N = 2652,
|
||||
ZM_MAP_TOWER_EAST_H = 2651,
|
||||
ZM_MAP_TOWER_EAST_A = 2650,
|
||||
ZM_MAP_GRAVEYARD_H = 2649,
|
||||
ZM_MAP_GRAVEYARD_A = 2648,
|
||||
ZM_MAP_GRAVEYARD_N = 2647,
|
||||
ZM_MAP_TOWER_WEST_N = 2646,
|
||||
ZM_MAP_TOWER_WEST_H = 2645,
|
||||
ZM_MAP_TOWER_WEST_A = 2644,
|
||||
|
||||
ZM_MAP_HORDE_FLAG_READY = 2658,
|
||||
ZM_MAP_HORDE_FLAG_NOT_READY = 2657,
|
||||
ZM_MAP_ALLIANCE_FLAG_NOT_READY = 2656,
|
||||
ZM_MAP_ALLIANCE_FLAG_READY = 2655
|
||||
};
|
||||
|
||||
enum ZM_TowerStateMask
|
||||
{
|
||||
ZM_TOWERSTATE_N = 1,
|
||||
|
||||
@@ -286,16 +286,7 @@ struct boss_kiggler_the_crazed : public ScriptedAI
|
||||
context.Repeat(7200ms, 20600ms);
|
||||
}).Schedule(23s, [this](TaskContext context)
|
||||
{
|
||||
//changed to work similarly to Ikiss poly
|
||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_GREATER_POLYMORPH);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, [&]
|
||||
(Unit* target) -> bool
|
||||
{
|
||||
return target && !target->IsImmunedToSpell(spellInfo);
|
||||
}))
|
||||
{
|
||||
DoCast(target, SPELL_GREATER_POLYMORPH);
|
||||
}
|
||||
DoCastVictim(SPELL_GREATER_POLYMORPH);
|
||||
context.Repeat(10900ms);
|
||||
}).Schedule(30s, [this](TaskContext context)
|
||||
{
|
||||
|
||||
@@ -679,8 +679,9 @@ class spell_pal_glyph_of_holy_light : public SpellScript
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
uint32 const maxTargets = GetSpellInfo()->MaxAffectedTargets;
|
||||
targets.remove(GetExplTargetUnit());
|
||||
|
||||
uint32 const maxTargets = GetSpellInfo()->MaxAffectedTargets;
|
||||
if (targets.size() > maxTargets)
|
||||
{
|
||||
targets.sort(Acore::HealthPctOrderPred());
|
||||
|
||||
@@ -28,21 +28,6 @@
|
||||
#include "Spell.h"
|
||||
|
||||
// Ours
|
||||
/*######
|
||||
## go_noblegarden_colored_egg
|
||||
######*/
|
||||
class go_noblegarden_colored_egg : public GameObjectScript
|
||||
{
|
||||
public:
|
||||
go_noblegarden_colored_egg() : GameObjectScript("go_noblegarden_colored_egg") { }
|
||||
|
||||
bool OnGossipHello(Player* player, GameObject* /*go*/) override
|
||||
{
|
||||
if (roll_chance_i(5))
|
||||
player->CastSpell(player, 61734, true); // SPELL NOBLEGARDEN BUNNY
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class go_seer_of_zebhalak : public GameObjectScript
|
||||
{
|
||||
@@ -1948,7 +1933,6 @@ public:
|
||||
void AddSC_go_scripts()
|
||||
{
|
||||
// Ours
|
||||
new go_noblegarden_colored_egg();
|
||||
new go_seer_of_zebhalak();
|
||||
new go_mistwhisper_treasure();
|
||||
new go_witherbark_totem_bundle();
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "TaskScheduler.h"
|
||||
#include "WaypointMgr.h"
|
||||
#include "World.h"
|
||||
#include "WorldStateDefines.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
|
||||
@@ -186,17 +187,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Stranglethorn Vale Fishing Extravaganza World States
|
||||
*/
|
||||
enum FishingExtravaganzaWorldStates
|
||||
{
|
||||
STV_FISHING_PREV_WIN_TIME = 197,
|
||||
STV_FISHING_HAS_WINNER = 198,
|
||||
STV_FISHING_ANNOUNCE_EVENT_BEGIN = 199,
|
||||
STV_FISHING_ANNOUNCE_POOLS_DESPAN = 200
|
||||
};
|
||||
|
||||
enum RiggleBassbait
|
||||
{
|
||||
RIGGLE_SAY_START = 0,
|
||||
@@ -222,13 +212,13 @@ public:
|
||||
npc_riggle_bassbaitAI(Creature* c) : ScriptedAI(c)
|
||||
{
|
||||
m_uiTimer = 0;
|
||||
auto prevWinTime = sWorld->getWorldState(STV_FISHING_PREV_WIN_TIME);
|
||||
auto prevWinTime = sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_PREV_WIN_TIME);
|
||||
if (GameTime::GetGameTime().count() - prevWinTime > DAY)
|
||||
{
|
||||
// reset all after 1 day
|
||||
sWorld->setWorldState(STV_FISHING_ANNOUNCE_EVENT_BEGIN, 1);
|
||||
sWorld->setWorldState(STV_FISHING_ANNOUNCE_POOLS_DESPAN, 0);
|
||||
sWorld->setWorldState(STV_FISHING_HAS_WINNER, 0);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN, 1);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 0);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,16 +226,16 @@ public:
|
||||
|
||||
void CheckTournamentState() const
|
||||
{
|
||||
if (sGameEventMgr->IsActiveEvent(EVENT_FISHING_TURN_INS) && !sWorld->getWorldState(STV_FISHING_HAS_WINNER))
|
||||
if (sGameEventMgr->IsActiveEvent(EVENT_FISHING_TURN_INS) && !sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER))
|
||||
{
|
||||
if (!me->IsQuestGiver())
|
||||
{
|
||||
me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
}
|
||||
if (sWorld->getWorldState(STV_FISHING_ANNOUNCE_EVENT_BEGIN))
|
||||
if (sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN))
|
||||
{
|
||||
me->AI()->Talk(RIGGLE_SAY_START);
|
||||
sWorld->setWorldState(STV_FISHING_ANNOUNCE_EVENT_BEGIN, 0);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_EVENT_BEGIN, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -258,14 +248,14 @@ public:
|
||||
if (sGameEventMgr->IsActiveEvent(EVENT_FISHING_POOLS))
|
||||
{
|
||||
// enable announcement: when pools despawn
|
||||
sWorld->setWorldState(STV_FISHING_ANNOUNCE_POOLS_DESPAN, 1);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sWorld->getWorldState(STV_FISHING_ANNOUNCE_POOLS_DESPAN))
|
||||
if (sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN))
|
||||
{
|
||||
me->AI()->Talk(RIGGLE_SAY_POOLS_END);
|
||||
sWorld->setWorldState(STV_FISHING_ANNOUNCE_POOLS_DESPAN, 0);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_ANNOUNCE_POOLS_DESPAWN, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -291,7 +281,7 @@ public:
|
||||
player->PrepareQuestMenu(creature->GetGUID());
|
||||
}
|
||||
|
||||
if (sWorld->getWorldState(STV_FISHING_HAS_WINNER))
|
||||
if (sWorld->getWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER))
|
||||
{
|
||||
SendGossipMenuFor(player, GOSSIP_EVENT_OVER, creature->GetGUID());
|
||||
}
|
||||
@@ -308,8 +298,8 @@ public:
|
||||
{
|
||||
creature->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER);
|
||||
creature->AI()->Talk(RIGGLE_SAY_WINNER, player);
|
||||
sWorld->setWorldState(STV_FISHING_PREV_WIN_TIME, GameTime::GetGameTime().count());
|
||||
sWorld->setWorldState(STV_FISHING_HAS_WINNER, 1);
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_PREV_WIN_TIME, GameTime::GetGameTime().count());
|
||||
sWorld->setWorldState(WORLD_STATE_STRANGLETHORN_VALE_FISHING_HAS_WINNER, 1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user