Scripts/Uldaman: Instance update

- Fixup Boss Ironaya
- Add the freeze animation for minions and archaedas
- Fix attack target for minions who wake up

(cherry picked from commit 9cb4cb52d8)
This commit is contained in:
Kittnz
2015-04-24 23:11:02 +02:00
committed by Shauren
parent ec567f1c41
commit c094e49e74
3 changed files with 43 additions and 17 deletions

View File

@@ -41,14 +41,17 @@ enum Says
enum Spells
{
SPELL_GROUND_TREMOR = 6524,
SPELL_ARCHAEDAS_AWAKEN = 10347,
SPELL_BOSS_OBJECT_VISUAL = 11206,
SPELL_BOSS_AGGRO = 10340,
SPELL_SUB_BOSS_AGGRO = 11568,
SPELL_AWAKEN_VAULT_WALKER = 10258,
SPELL_AWAKEN_EARTHEN_GUARDIAN = 10252,
SPELL_SELF_DESTRUCT = 9874
SPELL_GROUND_TREMOR = 6524,
SPELL_ARCHAEDAS_AWAKEN = 10347,
SPELL_BOSS_OBJECT_VISUAL = 11206,
SPELL_BOSS_AGGRO = 10340,
SPELL_SUB_BOSS_AGGRO = 11568,
SPELL_AWAKEN_VAULT_WALKER = 10258,
SPELL_AWAKEN_EARTHEN_GUARDIAN = 10252,
SPELL_SELF_DESTRUCT = 9874,
SPELL_FREEZE_ANIM = 16245,
SPELL_MINION_FREEZE_ANIM = 10255
};
class boss_archaedas : public CreatureScript
@@ -96,6 +99,7 @@ class boss_archaedas : public CreatureScript
me->setFaction(35);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
me->AddAura(SPELL_FREEZE_ANIM, me);
}
void ActivateMinion(ObjectGuid uiGuid, bool flag)
@@ -109,6 +113,7 @@ class boss_archaedas : public CreatureScript
minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
minion->setFaction(14);
minion->RemoveAura(SPELL_MINION_FREEZE_ANIM);
}
}
@@ -258,6 +263,7 @@ class npc_archaedas_minions : public CreatureScript
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
me->RemoveAllAuras();
me->AddAura(SPELL_MINION_FREEZE_ANIM, me);
}
void EnterCombat(Unit* /*who*/) override
@@ -297,7 +303,7 @@ class npc_archaedas_minions : public CreatureScript
{
bWakingUp = false;
bAmIAwake = true;
// AttackStart(ObjectAccessor::GetUnit(*me, instance->GetGuidData(0))); // whoWokeArchaedasGUID
AttackStart(ObjectAccessor::GetUnit(*me, instance->GetGuidData(0))); // whoWokeArchaedasGUID
return; // dont want to continue until we finish the AttackStart method
}
@@ -346,6 +352,7 @@ class npc_stonekeepers : public CreatureScript
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
me->RemoveAllAuras();
me->AddAura(SPELL_MINION_FREEZE_ANIM, me);
}
void EnterCombat(Unit* /*who*/) override

View File

@@ -66,10 +66,7 @@ class boss_ironaya : public CreatureScript
Initialize();
}
void EnterCombat(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
}
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 uiDiff) override
{

View File

@@ -18,7 +18,7 @@
/* ScriptData
SDName: instance_uldaman
SD%Complete: 99
SD%Complete: 80%
SDComment: Need some cosmetics updates when archeadas door are closing (Guardians Waypoints).
SDCategory: Uldaman
EndScriptData */
@@ -31,6 +31,8 @@ enum Spells
{
SPELL_ARCHAEDAS_AWAKEN = 10347,
SPELL_AWAKEN_VAULT_WALKER = 10258,
SPELL_FREEZE_ANIM = 16245,
SPELL_MINION_FREEZE_ANIM = 10255
};
enum Events
@@ -38,6 +40,15 @@ enum Events
EVENT_SUB_BOSS_AGGRO = 2228
};
const float IronayaPoint[4] = { -231.228f, 246.6135f, -49.01617f, 0.0f };
enum StoneKeepers
{
GUID_STONEKEEPER_1 = 27554,
GUID_STONEKEEPER_2 = 27794,
GUID_STONEKEEPER_3 = 28368
};
class instance_uldaman : public InstanceMapScript
{
public:
@@ -136,9 +147,9 @@ class instance_uldaman : public InstanceMapScript
{
creature->setFaction(35);
creature->RemoveAllAuras();
//creature->RemoveFlag (UNIT_FIELD_FLAGS, UNIT_FLAG_ANIMATION_FROZEN);
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
creature->AddAura(SPELL_MINION_FREEZE_ANIM, creature);
}
void SetDoor(ObjectGuid guid, bool open)
@@ -171,6 +182,8 @@ class instance_uldaman : public InstanceMapScript
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
target->setFaction(14);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
target->RemoveAura(SPELL_MINION_FREEZE_ANIM);
return; // only want the first one we find
}
// if we get this far than all four are dead so open the door
@@ -190,11 +203,13 @@ class instance_uldaman : public InstanceMapScript
Creature* target = instance->GetCreature(*i);
if (!target || !target->IsAlive() || target->getFaction() == 14)
continue;
archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true);
target->CastSpell(target, SPELL_ARCHAEDAS_AWAKEN, true);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
target->setFaction(14);
target->RemoveAura(SPELL_MINION_FREEZE_ANIM);
archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true);
target->CastSpell(target, SPELL_ARCHAEDAS_AWAKEN, true);
return; // only want the first one we find
}
}
@@ -241,6 +256,7 @@ class instance_uldaman : public InstanceMapScript
if (ObjectAccessor::GetUnit(*archaedas, target))
{
archaedas->RemoveAura(SPELL_FREEZE_ANIM);
archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN, false);
whoWokeuiArchaedasGUID = target;
}
@@ -255,6 +271,12 @@ class instance_uldaman : public InstanceMapScript
ironaya->setFaction(415);
ironaya->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
ironaya->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
ironaya->GetMotionMaster()->Clear();
ironaya->GetMotionMaster()->MovePoint(0, IronayaPoint[0], IronayaPoint[1], IronayaPoint[2]);
ironaya->SetHomePosition(IronayaPoint[0], IronayaPoint[1], IronayaPoint[2], IronayaPoint[3]);
ironaya->AI()->Talk(SAY_AGGRO);
}
void RespawnMinions()