mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 17:27:36 +01:00
Scripts/Uldum: continue work on Uldum's intro event
This commit is contained in:
@@ -29,10 +29,70 @@
|
||||
|
||||
enum UldumIntro
|
||||
{
|
||||
SPELL_SUMMON_CAMERA_BUNNY = 86792,
|
||||
SPELL_PING_ALL_ACTORS_00 = 86843
|
||||
// Phase IDs
|
||||
PHASE_ENTRANCE_TO_ULDUM = 298,
|
||||
|
||||
// Spells
|
||||
SPELL_SUMMON_CAMERA_BUNNY = 86792,
|
||||
SPELL_PING_ALL_ACTORS_00 = 86843,
|
||||
SPELL_SUMMON_ADARRAH = 86751,
|
||||
SPELL_SUMMON_CARAVAN = 86752,
|
||||
SPELL_SUMMON_LADY_HUMPS = 86753,
|
||||
SPELL_SUMMON_PACK_MULE = 86754,
|
||||
SPELL_SUMMON_BUDDS_CAMEL = 86755,
|
||||
SPELL_SUMMON_SAMIRS_CAMEL = 86756,
|
||||
SPELL_SUMMON_MACKS_CAMEL = 86757,
|
||||
SPELL_SUMMON_ADARRAHS_CAMEL = 86758,
|
||||
SPELL_SUMMON_CLONED_IMAGE = 86782,
|
||||
SPELL_SUMMON_BEAM_TARGET_BUNNY = 86942,
|
||||
SPELL_SUMMON_BEAM_TARGET_BUNNY_02 = 86964
|
||||
};
|
||||
|
||||
// 86748 - Intialize Uldum Intro
|
||||
class spell_uldum_initialize_uldum_intro : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_uldum_initialize_uldum_intro);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_SUMMON_ADARRAH,
|
||||
SPELL_SUMMON_CARAVAN,
|
||||
SPELL_SUMMON_LADY_HUMPS,
|
||||
SPELL_SUMMON_PACK_MULE,
|
||||
SPELL_SUMMON_BUDDS_CAMEL,
|
||||
SPELL_SUMMON_SAMIRS_CAMEL,
|
||||
SPELL_SUMMON_MACKS_CAMEL,
|
||||
SPELL_SUMMON_ADARRAHS_CAMEL,
|
||||
SPELL_SUMMON_CLONED_IMAGE,
|
||||
SPELL_SUMMON_BEAM_TARGET_BUNNY
|
||||
});
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* target = GetHitUnit();
|
||||
PhasingHandler::AddPhase(target, PHASE_ENTRANCE_TO_ULDUM, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_ADARRAH, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_CARAVAN, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_LADY_HUMPS, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_PACK_MULE, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_BUDDS_CAMEL, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_SAMIRS_CAMEL, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_MACKS_CAMEL, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_ADARRAHS_CAMEL, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_CLONED_IMAGE, true);
|
||||
target->CastSpell(target, SPELL_SUMMON_BEAM_TARGET_BUNNY, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_uldum_initialize_uldum_intro::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
// 86848 - Master Ping all Actors
|
||||
class spell_uldum_master_ping_all_actors : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_uldum_master_ping_all_actors);
|
||||
@@ -53,6 +113,28 @@ class spell_uldum_master_ping_all_actors : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 86960 - Master Summon Beam Target 02
|
||||
class spell_uldum_master_summon_beam_target_02 : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_uldum_master_summon_beam_target_02);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SUMMON_BEAM_TARGET_BUNNY_02 });
|
||||
}
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_SUMMON_BEAM_TARGET_BUNNY_02, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_uldum_master_summon_beam_target_02::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
// 95747 - Player Summon Camera
|
||||
class spell_uldum_player_summon_camera : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_uldum_player_summon_camera);
|
||||
@@ -75,29 +157,47 @@ class spell_uldum_player_summon_camera : public SpellScript
|
||||
|
||||
enum UldumCameraBunny
|
||||
{
|
||||
PHASE_DEFAULT = 169,
|
||||
PHASE_ENTRANCE_TO_ULDUM = 298,
|
||||
// Spells
|
||||
SPELL_PING_CAMERA_00 = 86815,
|
||||
SPELL_PING_CAMERA_01 = 86943,
|
||||
SPELL_PING_CAMERA_02 = 86970,
|
||||
SPELL_PING_BEAM_TARGET = 86944,
|
||||
SPELL_INVISIBLE_BEAM = 86822,
|
||||
SPELL_MASTER_PING_ALL_ACTORS = 86848,
|
||||
SPELL_REVERSE_CAST_RIDE_VEHICLE = 82721,
|
||||
SPELL_REVERSE_CAST_RIDE_SEAT_2 = 82315,
|
||||
SPELL_REVERSE_CAST_RIDE_CAMERA_BUNNY_SEAT_3 = 84301,
|
||||
SPELL_FADE_TO_BLACK = 88267,
|
||||
SPELL_TELEPORT_CAMERA = 86952,
|
||||
SPELL_MASTER_SUMMON_BEAM_TARGET_02 = 86960,
|
||||
|
||||
SPELL_PING_CAMERA_00 = 86815,
|
||||
SPELL_PING_CAMERA_01 = 86943,
|
||||
SPELL_PING_BEAM_TARGET = 86944,
|
||||
SPELL_INVISIBLE_BEAM = 86822,
|
||||
SPELL_MASTER_PING_ALL_ACTORS = 86848,
|
||||
SPELL_REVERSE_CAST_RIDE_VEHICLE = 82721,
|
||||
// Events
|
||||
EVENT_MOVE_PATH_1 = 1,
|
||||
EVENT_PING_BEAM_TARGET = 2,
|
||||
EVENT_FADE_TO_BLACK_1 = 3,
|
||||
EVENT_TELEPORT_CAMERA_1 = 4,
|
||||
EVENT_TARGET_BEAM_BUNNY_2 = 5,
|
||||
|
||||
EVENT_MOVE_PATH_1 = 1,
|
||||
EVENT_PING_BEAM_TARGET = 2,
|
||||
// Move Points
|
||||
POINT_NONE = 0,
|
||||
|
||||
POINT_NONE = 0,
|
||||
// Spline Chains
|
||||
SPLINE_CHAIN_ID_CAMERA_PATH_1 = 1, // Uldum Camera Bunny 04 - Move behind next to the caravan
|
||||
SPLINE_CHAIN_ID_CAMERA_PATH_2 = 2, // Uldum Camera Bunny 04 - Move behind the caravan
|
||||
SPLINE_CHAIN_ID_CAMERA_PATH_3 = 3, // Uldum Camera Bunny 04 - Move along the statue
|
||||
SPLINE_CHAIN_ID_BEAM_TARGET_PATH_1 = 1, // Beam Target Bunny - Move up
|
||||
SPLINE_CHAIN_ID_BEAM_TARGET_2_PATH_1 = 1, // Beam Target Bunny 02 - Move down
|
||||
|
||||
SPLINE_CHAIN_ID_CAMERA_PATH_1 = 1,
|
||||
SPLINE_CHAIN_ID_CAMERA_PATH_2 = 2,
|
||||
SPLINE_CHAIN_ID_BEAM_TARGET_PATH_1 = 1
|
||||
// Ping Counter
|
||||
PING_INDEX_PING_ALL_ACTORS = 1, // 2nd ping spell - master ping all actors, get caster into the vehicle, schedule movement
|
||||
PING_INDEX_PING_BEAM_TARGET = 2 // 3rd ping spell - ping beam target in 3.6s
|
||||
};
|
||||
|
||||
struct npc_uldum_camera_bunny_04 : public ScriptedAI
|
||||
Position const TeleportGridPosition1 = { -8958.0f, -1658.0f };
|
||||
|
||||
struct npc_uldum_uldum_camera_bunny_04 : public ScriptedAI
|
||||
{
|
||||
npc_uldum_camera_bunny_04(Creature* creature) : ScriptedAI(creature)
|
||||
npc_uldum_uldum_camera_bunny_04(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
@@ -107,12 +207,6 @@ struct npc_uldum_camera_bunny_04 : public ScriptedAI
|
||||
_pingCount = 0;
|
||||
}
|
||||
|
||||
void InitializeAI() override
|
||||
{
|
||||
PhasingHandler::AddPhase(me, PHASE_DEFAULT, false);
|
||||
PhasingHandler::AddPhase(me, PHASE_ENTRANCE_TO_ULDUM, false);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* caster, SpellInfo const* spell) override
|
||||
{
|
||||
if (!caster)
|
||||
@@ -121,25 +215,29 @@ struct npc_uldum_camera_bunny_04 : public ScriptedAI
|
||||
switch (spell->Id)
|
||||
{
|
||||
case SPELL_PING_CAMERA_00:
|
||||
if (_pingCount == 1)
|
||||
if (_pingCount == PING_INDEX_PING_ALL_ACTORS)
|
||||
{
|
||||
DoCast(caster, SPELL_INVISIBLE_BEAM);
|
||||
DoCastSelf(SPELL_REVERSE_CAST_RIDE_VEHICLE, true);
|
||||
DoCastSelf(SPELL_MASTER_PING_ALL_ACTORS, true);
|
||||
_events.ScheduleEvent(EVENT_MOVE_PATH_1, 11s);
|
||||
}
|
||||
else if (_pingCount == 2)
|
||||
else if (_pingCount == PING_INDEX_PING_BEAM_TARGET)
|
||||
_events.ScheduleEvent(EVENT_PING_BEAM_TARGET, 3s + 600ms);
|
||||
|
||||
_pingCount++;
|
||||
break;
|
||||
case SPELL_PING_CAMERA_01:
|
||||
{
|
||||
me->CastStop();
|
||||
DoCast(caster, SPELL_INVISIBLE_BEAM, true);
|
||||
me->GetMotionMaster()->MoveAlongSplineChain(POINT_NONE, SPLINE_CHAIN_ID_CAMERA_PATH_2, true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
DoCast(caster, SPELL_INVISIBLE_BEAM);
|
||||
caster->GetMotionMaster()->MoveAlongSplineChain(POINT_NONE, SPLINE_CHAIN_ID_BEAM_TARGET_PATH_1, false);
|
||||
_events.ScheduleEvent(EVENT_FADE_TO_BLACK_1, 8s + 500ms);
|
||||
break;
|
||||
case SPELL_PING_CAMERA_02:
|
||||
_cameraBunnyGUID = caster->GetGUID();
|
||||
_events.ScheduleEvent(EVENT_TARGET_BEAM_BUNNY_2, 1s + 500ms);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -148,10 +246,7 @@ struct npc_uldum_camera_bunny_04 : public ScriptedAI
|
||||
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
|
||||
{
|
||||
if (spell->Id == SPELL_PING_BEAM_TARGET)
|
||||
{
|
||||
target->CastSpell(target, SPELL_PING_CAMERA_01);
|
||||
target->GetMotionMaster()->MoveAlongSplineChain(POINT_NONE, SPLINE_CHAIN_ID_BEAM_TARGET_PATH_1, true);
|
||||
}
|
||||
target->CastSpell(me, SPELL_PING_CAMERA_01, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -166,7 +261,29 @@ struct npc_uldum_camera_bunny_04 : public ScriptedAI
|
||||
me->GetMotionMaster()->MoveAlongSplineChain(POINT_NONE, SPLINE_CHAIN_ID_CAMERA_PATH_1, true);
|
||||
break;
|
||||
case EVENT_PING_BEAM_TARGET:
|
||||
DoCastSelf(SPELL_PING_BEAM_TARGET, true);
|
||||
DoCastAOE(SPELL_PING_BEAM_TARGET, true);
|
||||
break;
|
||||
case EVENT_FADE_TO_BLACK_1:
|
||||
// Pre-load grid to avoid getting stuck on the next location
|
||||
me->GetMap()->LoadGrid(TeleportGridPosition1.GetPositionX(), TeleportGridPosition1.GetPositionY());
|
||||
DoCastSelf(SPELL_FADE_TO_BLACK, true);
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_CAMERA_1, 1s);
|
||||
break;
|
||||
case EVENT_TELEPORT_CAMERA_1:
|
||||
me->CastStop();
|
||||
DoCastSelf(SPELL_REVERSE_CAST_RIDE_SEAT_2, true);
|
||||
DoCastSelf(SPELL_TELEPORT_CAMERA, true);
|
||||
DoCastSelf(SPELL_MASTER_SUMMON_BEAM_TARGET_02, true);
|
||||
DoCastSelf(SPELL_MASTER_PING_ALL_ACTORS, true);
|
||||
break;
|
||||
case EVENT_TARGET_BEAM_BUNNY_2:
|
||||
if (Creature* bunny = ObjectAccessor::GetCreature(*me, _cameraBunnyGUID))
|
||||
{
|
||||
DoCastSelf(SPELL_REVERSE_CAST_RIDE_CAMERA_BUNNY_SEAT_3, true);
|
||||
DoCast(bunny, SPELL_INVISIBLE_BEAM, true);
|
||||
me->GetMotionMaster()->MoveAlongSplineChain(POINT_NONE, SPLINE_CHAIN_ID_CAMERA_PATH_3, false);
|
||||
bunny->GetMotionMaster()->MoveAlongSplineChain(POINT_NONE, SPLINE_CHAIN_ID_BEAM_TARGET_2_PATH_1, false);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -177,6 +294,7 @@ struct npc_uldum_camera_bunny_04 : public ScriptedAI
|
||||
private:
|
||||
uint8 _pingCount;
|
||||
EventMap _events;
|
||||
ObjectGuid _cameraBunnyGUID;
|
||||
};
|
||||
|
||||
// Gobbles! Quest
|
||||
@@ -229,8 +347,10 @@ class spell_summon_schnottz : public SpellScript
|
||||
|
||||
void AddSC_uldum()
|
||||
{
|
||||
RegisterCreatureAI(npc_uldum_camera_bunny_04);
|
||||
RegisterCreatureAI(npc_uldum_uldum_camera_bunny_04);
|
||||
RegisterSpellScript(spell_uldum_initialize_uldum_intro);
|
||||
RegisterSpellScript(spell_uldum_master_ping_all_actors);
|
||||
RegisterSpellScript(spell_uldum_master_summon_beam_target_02);
|
||||
RegisterSpellScript(spell_uldum_player_summon_camera);
|
||||
RegisterSpellScript(spell_gobbles_initialize);
|
||||
RegisterSpellScript(spell_summon_schnottz);
|
||||
|
||||
Reference in New Issue
Block a user