mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 09:17:36 +01:00
Core/DB: Utgarde Keep - Codestyle and eventmap
This commit is contained in:
@@ -77,17 +77,16 @@ INSERT INTO `creature`(`guid`,`id`,`map`,`spawnmask`,`modelid`,`position_x`,`pos
|
||||
(125940,24849,574,3,22287,238.382,-353.086,188.785,1.29762,3600,35928,2);
|
||||
|
||||
-- Waypoint assignments
|
||||
INSERT IGNORE INTO `creature_addon`(`guid`) VALUES
|
||||
(125940),
|
||||
(125934),
|
||||
(125915),
|
||||
(125920),
|
||||
(125914),
|
||||
(125936),
|
||||
(125937),
|
||||
(125922);
|
||||
|
||||
UPDATE `creature_addon` SET `path_id`=`guid`*10 WHERE `guid` IN(125940,125934,125915,125920,125914,125936,125937,125922);
|
||||
DELETE FROM `creature_addon` WHERE `guid` IN(125940,125934,125915,125920,125914,125936,125937,125922);
|
||||
INSERT INTO `creature_addon`(`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`auras`) VALUES
|
||||
(125914,1259140,22657,50331648,1,'54775'),
|
||||
(125915,1259150,22657,50331648,1,'54775'),
|
||||
(125920,1259200,22657,50331648,1,'54775'),
|
||||
(125922,1259220,22657,50331648,1,'54775'),
|
||||
(125934,1259340,22657,50331648,1,'54775'),
|
||||
(125936,1259360,22657,50331648,1,'54775'),
|
||||
(125937,1259370,22657,50331648,1,'54775'),
|
||||
(125940,1259400,22657,50331648,1,'54775');
|
||||
|
||||
-- Waypoint data
|
||||
DELETE FROM `waypoint_data` WHERE `id` IN(1259400,1259340,1259150,1259200,1259140,1259360,1259370,1259220);
|
||||
|
||||
@@ -56,13 +56,16 @@ enum Events
|
||||
EVENT_DARK_SMASH,
|
||||
EVENT_DREADFUL_ROAR,
|
||||
EVENT_WOE_STRIKE,
|
||||
EVENT_SHADOW_AXE
|
||||
EVENT_SHADOW_AXE,
|
||||
EVENT_JUST_TRANSFORMED,
|
||||
EVENT_SUMMON_BANSHEE
|
||||
};
|
||||
|
||||
enum Phases
|
||||
{
|
||||
PHASE_HUMAN = 1,
|
||||
PHASE_UNDEAD,
|
||||
PHASE_EVENT
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -107,11 +110,6 @@ public:
|
||||
InstanceScript* instance;
|
||||
|
||||
bool bIsUndead;
|
||||
bool bEventInProgress;
|
||||
bool justTransformed;
|
||||
|
||||
uint32 uiSpawnResTimer;
|
||||
uint32 afterTransformTimer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -119,7 +117,6 @@ public:
|
||||
me->UpdateEntry(MOB_INGVAR_HUMAN);
|
||||
|
||||
bIsUndead = false;
|
||||
bEventInProgress = false;
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
@@ -132,10 +129,6 @@ public:
|
||||
events.ScheduleEvent(EVENT_ENRAGE, urand(7,14)*IN_MILLISECONDS, 0, PHASE_HUMAN);
|
||||
events.ScheduleEvent(EVENT_SMASH, urand(12,17)*IN_MILLISECONDS, 0, PHASE_HUMAN);
|
||||
|
||||
uiSpawnResTimer = 3000;
|
||||
afterTransformTimer = 2000;
|
||||
justTransformed = false;
|
||||
|
||||
if (instance)
|
||||
instance->SetData(DATA_INGVAR_EVENT, NOT_STARTED);
|
||||
}
|
||||
@@ -155,30 +148,21 @@ public:
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
// visuel hack end
|
||||
|
||||
bEventInProgress = true;
|
||||
bIsUndead = true;
|
||||
|
||||
events.SetPhase(PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_DARK_SMASH, urand(14,18)*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_DREADFUL_ROAR, urand(18,22)*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_WOE_STRIKE, urand(10,14)*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_SHADOW_AXE, 30*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.SetPhase(PHASE_EVENT);
|
||||
events.ScheduleEvent(EVENT_SUMMON_BANSHEE, 3 * IN_MILLISECONDS, 0, PHASE_EVENT);
|
||||
|
||||
DoScriptText(YELL_DEAD_1, me);
|
||||
}
|
||||
|
||||
if (bEventInProgress)
|
||||
{
|
||||
if (events.GetPhaseMask() & PHASE_EVENT)
|
||||
damage = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void StartZombiePhase()
|
||||
{
|
||||
bIsUndead = true;
|
||||
bEventInProgress = false;
|
||||
me->UpdateEntry(MOB_INGVAR_UNDEAD);
|
||||
justTransformed = true;
|
||||
events.ScheduleEvent(EVENT_JUST_TRANSFORMED, 2 * IN_MILLISECONDS, 0, PHASE_EVENT);
|
||||
|
||||
DoScriptText(YELL_AGGRO_2, me);
|
||||
}
|
||||
@@ -206,6 +190,15 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void ScheduleSecondPhase()
|
||||
{
|
||||
events.SetPhase(PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_DARK_SMASH, urand(14,18)*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_DREADFUL_ROAR, urand(18,22)*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_WOE_STRIKE, urand(10,14)*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
events.ScheduleEvent(EVENT_SHADOW_AXE, 30*IN_MILLISECONDS, 0, PHASE_UNDEAD);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
if (bIsUndead)
|
||||
@@ -216,39 +209,9 @@ public:
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim() && !justTransformed)
|
||||
if (!UpdateVictim() && !(events.GetPhaseMask() & PHASE_EVENT))
|
||||
return;
|
||||
|
||||
if (bEventInProgress)
|
||||
{
|
||||
if (uiSpawnResTimer)
|
||||
{
|
||||
if (uiSpawnResTimer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_SUMMON_BANSHEE); // Summons directly on caster position
|
||||
// DoCast(me, SPELL_SCOURG_RESURRECTION, true); // Not needed ?
|
||||
uiSpawnResTimer = 0;
|
||||
} else uiSpawnResTimer -= diff;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (justTransformed)
|
||||
{
|
||||
if (afterTransformTimer <= diff)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetInCombatWithZone();
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
justTransformed = false;
|
||||
afterTransformTimer = 2000;
|
||||
} else
|
||||
afterTransformTimer -= diff;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
@@ -275,6 +238,15 @@ public:
|
||||
DoCastVictim(SPELL_SMASH);
|
||||
events.ScheduleEvent(EVENT_SMASH, urand(12,16)*IN_MILLISECONDS, 0, PHASE_HUMAN);
|
||||
break;
|
||||
case EVENT_JUST_TRANSFORMED:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetInCombatWithZone();
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
ScheduleSecondPhase();
|
||||
return;
|
||||
case EVENT_SUMMON_BANSHEE:
|
||||
DoCast(me, SPELL_SUMMON_BANSHEE);
|
||||
return;
|
||||
// PHASE TWO
|
||||
case EVENT_DARK_SMASH:
|
||||
DoCastVictim(SPELL_DARK_SMASH);
|
||||
|
||||
Reference in New Issue
Block a user