mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 10:56:38 +01:00
Scripts/ZA:
* improved Vol'jin's intro script * added some waypoints for some trash npcs
This commit is contained in:
108
sql/updates/world/4.3.4/2020_09_02_00_world.sql
Normal file
108
sql/updates/world/4.3.4/2020_09_02_00_world.sql
Normal file
@@ -0,0 +1,108 @@
|
||||
UPDATE `creature` SET `modelid`= 31736 WHERE `id`= 52924;
|
||||
|
||||
SET @PATH := 52924 * 100;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, 117.73489, 1662.7703, 42.021564, 0, 0, 1, 0, 100, 0),
|
||||
(@PATH, 2, 132.13078, 1645.1361, 42.021576, 0, 0, 1, 0, 100, 0);
|
||||
|
||||
SET @PATH := 52924 * 100 + 1;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, 122.48868, 1639.4692, 42.1047, 0, 0, 1, 0, 100, 0);
|
||||
|
||||
SET @PATH := 52924 * 100 + 2;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, 121.03993, 1672.1962, 42.02157, 0, 0, 1, 0, 100, 0);
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`= 24363;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `comment`) VALUES
|
||||
(24363, 0, 0, 'Da spirits gonna feast today! Begin da ceremonies, sacrifice da prisoners... make room for our new guests!', 14, 0, 100, 0, 0, 12053, 23253, 'Hex Lord Malacrass'),
|
||||
(24363, 1, 0, 'Don\'t be shy. Thousands have come before you. Ya not be alone in your service.', 14, 0, 100, 0, 0, 12055, 23317, 'Hex Lord Malacrass'),
|
||||
(24363, 2, 0, 'Ya gonna fail, strangers. Many try before you, but dey only make us stronger!', 14, 0, 100, 0, 0, 12056, 23318, 'Hex Lord Malacrass');
|
||||
UPDATE `creature_text` SET `TextRange`= 3 WHERE `CreatureID`= 24363;
|
||||
|
||||
-- Pathing for Entry: 23774 'TDB FORMAT'
|
||||
SET @NPC := 339492;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`= 0, `MovementType`= 2, `position_x`= -180.443, `position_y`= 1242.61, `position_z`= 2.1280074 WHERE `guid`= @NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`= @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (@NPC, @PATH, 0, 0, 1, 0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, -180.443, 1242.61, 2.1280074, 4.729842185974121093, 3672, 1, 0, 100, 0),
|
||||
(@PATH, 2, -204.02148, 1247.1338, 1.448443, 0, 217, 1, 0, 100, 0),
|
||||
(@PATH, 3, -204.02148, 1247.1338, 1.4484429, 5.672319889068603515, 4484, 1, 0, 100, 0),
|
||||
(@PATH, 4, -200.48438, 1242.8473, 1.0690485, 0, 411, 1, 0, 100, 0),
|
||||
(@PATH, 5, -200.48438, 1242.8473, 1.0690485, 0.593411922454833984, 422, 1, 0, 100, 0),
|
||||
(@PATH, 6, -200.48438, 1242.8473, 1.0690485, 0.209439516067504882, 3437, 1, 0, 100, 0),
|
||||
(@PATH, 7, -190.551, 1236.19, 0.49617147, 0, 3863, 1, 0, 100, 0),
|
||||
(@PATH, 8, -180.443, 1242.61, 2.1280074, 0, 0, 1, 0, 100, 0);
|
||||
-- 0x2041004700173780001C8700007ECDE7 .go xyz -180.443 1242.61 2.1280074
|
||||
|
||||
-- Pathing for Entry: 23774 'TDB FORMAT'
|
||||
SET @NPC := 329126;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`= 0, `MovementType`= 2, `position_x`= -222.16797, `position_y`= 1131.9479, `position_z`= -1.6283163 WHERE `guid`= @NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`= @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (@NPC, @PATH, 0, 0, 1, 0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, -222.16797, 1131.9479, -1.6283163, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 2, -211.82857, 1136.8333, -1.9116962, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 3, -210.5931, 1146.4077, -1.9181659, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 4, -225.59148, 1148.1578, -1.8781269, 0, 0, 0, 0, 100, 0);
|
||||
-- 0x2041004700173780001C8700007ECDE8 .go xyz -222.16797 1131.9479 -1.6283163
|
||||
|
||||
-- Pathing for Entry: 23774 'TDB FORMAT'
|
||||
SET @NPC := 339142;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`= 0, `MovementType`= 2, `position_x`= -165.23297, `position_y`= 1113.8899, `position_z`= 0.12499935 WHERE `guid`= @NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`= @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (@NPC, @PATH, 0, 0, 1, 0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, -165.23297, 1113.8899, 0.12499935, 0, 367, 0, 0, 100, 0),
|
||||
(@PATH, 2, -171.59407, 1116.7018, 0.124147296, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 3, -181.63933, 1117.8892, 0.124147296, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 4, -196.2499, 1109.3352, 0.2491473, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 5, -217.72395, 1108.2024, -0.14772546, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 6, -213.77246, 1131.3308, -1.8509725, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 7, -216.44846, 1156.3108, -1.9116962, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 8, -206.4719, 1176.8019, -0.5678997, 0, 10263, 0, 0, 100, 0),
|
||||
(@PATH, 9, -203.00826, 1155.8253, -0.9969013, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 10, -197.7297, 1135.4039, -0.9588605, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 11, -184.39062, 1120.7157, 0.124147296, 0, 0, 0, 0, 100, 0);
|
||||
-- 0x2041004700173780001C8700007ECDE9 .go xyz -165.23297 1113.8899 0.12499935
|
||||
|
||||
-- Pathing for Entry: 23774 'TDB FORMAT'
|
||||
SET @NPC := 339082;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`= 0, `MovementType`= 2, `position_x`= -217.07715, `position_y`= 1126.6138, `position_z`= -1.8509725 WHERE `guid`= @NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`= @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (@NPC, @PATH, 0, 0, 1, 0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, -217.07715, 1126.6138, -1.8509725, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 2, -208.20735, 1130.927, -1.7259725, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 3, -208.23557, 1120.8994, -1.5033163, 0, 0, 0, 0, 100, 0);
|
||||
-- 0x2041004700173780001C870000FECDE7 .go xyz -217.07715 1126.6138 -1.8509725
|
||||
|
||||
-- Pathing for Entry: 23774 'TDB FORMAT'
|
||||
SET @NPC := 339132;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`= 0, `MovementType`= 2, `position_x`= -198.46822, `position_y`= 1154.9237, `position_z`= -0.3548566 WHERE `guid`= @NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`= @NPC;
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES (@NPC, @PATH, 0, 0, 1, 0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(@PATH, 1, -198.46822, 1154.9237, -0.3548566, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 2, -208.29861, 1163.7311, -1.2200458, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 3, -226.81152, 1160.5486, -1.9116962, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 4, -233.97852, 1148.4395, -0.98271775, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 5, -226.84235, 1119.8912, -0.37563074, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 6, -209.14638, 1109.8043, -0.62514246, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 7, -187.0677, 1114.8241, 0.124147296, 0, 0, 0, 0, 100, 0),
|
||||
(@PATH, 8, -197.60515, 1131.2767, -0.8668195, 0, 0, 0, 0, 100, 0);
|
||||
-- 0x2041004700173780001C870000FECDE8 .go xyz -198.46822 1154.9237 -0.3548566
|
||||
@@ -50,6 +50,11 @@ DoorData const doorData[] =
|
||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||
};
|
||||
|
||||
enum HexlordMalacrassTriggerTexts
|
||||
{
|
||||
SAY_SPEEDRUN_STARTED = 0
|
||||
};
|
||||
|
||||
Position const AmanishiGuardianDistanceCheckPos = { 120.223f, 1585.766f, 43.43f };
|
||||
Position const AmanishiSavageDistanceCheckPos = { 122.176f, 1528.203f, 21.233f };
|
||||
|
||||
@@ -77,6 +82,13 @@ public:
|
||||
packet.Worldstates.emplace_back(uint32(WORLD_STATE_ZULAMAN_TIMER), uint32(_remainingSpeedRunTime));
|
||||
}
|
||||
|
||||
void Load(char const* /*data*/) override
|
||||
{
|
||||
// If players enter the instance after a soft-reset, the speedrun is failed
|
||||
if (_speedRunState == IN_PROGRESS)
|
||||
_speedRunState = FAIL;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
{
|
||||
InstanceScript::OnCreatureCreate(creature);
|
||||
@@ -120,6 +132,11 @@ public:
|
||||
{
|
||||
_remainingSpeedRunTime = 15;
|
||||
_speedRunState = IN_PROGRESS;
|
||||
|
||||
if (Creature* trigger = GetCreature(DATA_HEXLORD_MALACRASS_TRIGGER))
|
||||
if (trigger->IsAIEnabled)
|
||||
trigger->AI()->Talk(SAY_SPEEDRUN_STARTED);
|
||||
|
||||
DoUpdateWorldState(WORLD_STATE_ZULAMAN_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ZULAMAN_TIMER, _remainingSpeedRunTime);
|
||||
events.ScheduleEvent(EVENT_UPDATE_SPEED_RUN_TIMER, 1min);
|
||||
@@ -227,13 +244,6 @@ public:
|
||||
{
|
||||
data >> _speedRunState;
|
||||
data >> _remainingSpeedRunTime;
|
||||
|
||||
if (_speedRunState == IN_PROGRESS && _remainingSpeedRunTime)
|
||||
{
|
||||
events.ScheduleEvent(EVENT_UPDATE_SPEED_RUN_TIMER, 1min);
|
||||
DoUpdateWorldState(WORLD_STATE_ZULAMAN_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ZULAMAN_TIMER, _remainingSpeedRunTime);
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
@@ -52,31 +52,26 @@ enum VoljinEvents
|
||||
EVENT_DISMOUNT_VOLJIN = 1,
|
||||
EVENT_REMOVE_GOSSIP_FLAG,
|
||||
EVENT_SAY_FOLLOW_ME,
|
||||
EVENT_MOVE_TO_GONG_1,
|
||||
EVENT_MOVE_TO_GONG_2,
|
||||
EVENT_MOVE_TO_GONG,
|
||||
EVENT_FACE_TO_GONG,
|
||||
EVENT_SAY_GONG_INSTRUCTIONS,
|
||||
EVENT_BANGING_THE_GONG,
|
||||
EVENT_MAKE_GONG_SELECTABLE,
|
||||
EVENT_FAIL_GONG_EVENT,
|
||||
EVENT_MOVE_TO_ROOM_CENTER,
|
||||
EVENT_MOVE_HOME,
|
||||
EVENT_FACE_HOME,
|
||||
EVENT_RESET_NPC_FLAGS,
|
||||
EVENT_MOVE_TO_CENTER,
|
||||
EVENT_MAKE_GONG_UNSELECTABLE,
|
||||
EVENT_TALK_TO_AMANI,
|
||||
EVENT_OPEN_MASSIVE_GATE,
|
||||
EVENT_TALK_WARN_PLAYERS,
|
||||
EVENT_START_SPEED_RUN
|
||||
};
|
||||
|
||||
enum VoljinMovePoints
|
||||
enum VoljinWaypointData
|
||||
{
|
||||
POINT_HOME = 1,
|
||||
POINT_INTRO_1 = 2,
|
||||
POINT_INTRO_2 = 3,
|
||||
POINT_INTRO_3 = 4
|
||||
PATH_ID_VOLJIN_INTRO_1 = NPC_VOLJIN * 100,
|
||||
PATH_ID_VOLJIN_INTRO_2 = NPC_VOLJIN * 100 + 1,
|
||||
PATH_ID_VOLJIN_INTRO_3 = NPC_VOLJIN * 100 + 2,
|
||||
};
|
||||
|
||||
enum VoljinMisc
|
||||
@@ -85,37 +80,41 @@ enum VoljinMisc
|
||||
MOUNT_DISPLAY_ID_RAPTOR = 29261
|
||||
};
|
||||
|
||||
Position const VoljinIntroWaypoint[4] =
|
||||
enum VoljinGossip
|
||||
{
|
||||
{ 117.7349f, 1662.77f, 42.02156f, 0.0f },
|
||||
{ 132.14f, 1645.143f, 42.02158f, 0.0f },
|
||||
{ 121.8901f, 1639.118f, 42.23253f, 0.0f },
|
||||
{ 122.618f, 1639.546f, 42.11659f, 0.0f }
|
||||
GOSSIP_MENU_ID_ZANDALARI_MUST_BE_STOPPED = 12797,
|
||||
GOSSIP_NPC_TEXT_ZANDALARI_MUST_BE_STOPPED = 17988,
|
||||
GOSSIP_MENU_OPTION_OPEN_GATES = 0
|
||||
};
|
||||
|
||||
Position const VoljinIntroPosition1 = { 117.7349f, 1662.77f, 42.02156f };
|
||||
Position const VoljinIntroPosition2 = { 132.14f, 1645.143f, 42.02158f };
|
||||
Position const VoljinIntroPosition3 = { 122.6202f, 1639.547f, 42.16251f };
|
||||
Position const VoljinHomePosition = { 121.0399f, 1672.196f, 42.02157f };
|
||||
|
||||
struct npc_zulaman_voljin : public ScriptedAI
|
||||
{
|
||||
npc_zulaman_voljin(Creature* creature) : ScriptedAI(creature), _instance(me->GetInstanceScript())
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
npc_zulaman_voljin(Creature* creature) : ScriptedAI(creature),
|
||||
_instance(me->GetInstanceScript()), _restarted(false), _started(false), _actionTriggered(false) { }
|
||||
|
||||
void Initialize()
|
||||
void JustAppeared() override
|
||||
{
|
||||
_restarted = false;
|
||||
_started = false;
|
||||
_actionTriggered = false;
|
||||
me->SetDisplayId(me->GetCreatureTemplate()->Modelid1);
|
||||
|
||||
if (_instance->GetData(DATA_ZULAMAN_SPEEDRUN_STATE) != NOT_STARTED)
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
bool GossipHello(Player* player) override
|
||||
{
|
||||
// Vol'jin stops for 4 seconds when talking to him during his intro.
|
||||
me->PauseMovement(4 * IN_MILLISECONDS, MOTION_SLOT_IDLE);
|
||||
|
||||
if (me->IsQuestGiver())
|
||||
player->PrepareQuestMenu(me->GetGUID());
|
||||
|
||||
if (_instance->GetData(DATA_ZULAMAN_SPEEDRUN_STATE) == NOT_STARTED && !_started)
|
||||
AddGossipItemFor(player, GOSSIP_MENU_ID_ZANDALARI_MUST_BE_STOPPED, GOSSIP_MENU_OPTION_OPEN_GATES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 0);
|
||||
|
||||
SendGossipMenuFor(player, GOSSIP_NPC_TEXT_ZANDALARI_MUST_BE_STOPPED, me->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override
|
||||
{
|
||||
if (_started)
|
||||
@@ -130,7 +129,6 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
_events.ScheduleEvent(EVENT_DISMOUNT_VOLJIN, 1s);
|
||||
_events.ScheduleEvent(EVENT_REMOVE_GOSSIP_FLAG, 3s);
|
||||
_events.ScheduleEvent(EVENT_SAY_FOLLOW_ME, 4s);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -152,7 +150,14 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
if (!_actionTriggered)
|
||||
{
|
||||
_events.CancelEvent(EVENT_FAIL_GONG_EVENT);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_CENTER, 1s);
|
||||
_instance->SetData(DATA_TRIGGER_AMANISHI_GUARDIANS, IN_PROGRESS);
|
||||
me->RemoveAurasDueToSpell(SPELL_BANGING_THE_GONG);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, 0);
|
||||
me->GetMotionMaster()->MovePath(PATH_ID_VOLJIN_INTRO_2, false);
|
||||
|
||||
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
|
||||
gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
|
||||
_actionTriggered = true;
|
||||
}
|
||||
break;
|
||||
@@ -161,6 +166,28 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void WaypointReached(uint32 pointId, uint32 pathId) override
|
||||
{
|
||||
switch (pathId)
|
||||
{
|
||||
// The points Ids are based on Vol'jin's waypoint_data waypoints. Do not touch!
|
||||
case PATH_ID_VOLJIN_INTRO_1:
|
||||
if (pointId == 2)
|
||||
_events.ScheduleEvent(EVENT_FACE_TO_GONG, 400ms);
|
||||
break;
|
||||
case PATH_ID_VOLJIN_INTRO_2:
|
||||
if (pointId == 1)
|
||||
_events.ScheduleEvent(EVENT_TALK_TO_AMANI, 1ms);
|
||||
break;
|
||||
case PATH_ID_VOLJIN_INTRO_3:
|
||||
if (pointId == 1)
|
||||
_events.ScheduleEvent(EVENT_FACE_HOME, 1ms);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
_events.Update(diff);
|
||||
@@ -170,6 +197,7 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_DISMOUNT_VOLJIN:
|
||||
me->SetSpeed(MOVE_RUN, 8.f); // Yes, this really happens in sniffs.
|
||||
me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
|
||||
break;
|
||||
case EVENT_REMOVE_GOSSIP_FLAG:
|
||||
@@ -178,13 +206,11 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
case EVENT_SAY_FOLLOW_ME:
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
|
||||
Talk(SAY_INTRO_1, player);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_GONG_1, 1s);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_GONG, 1s);
|
||||
break;
|
||||
case EVENT_MOVE_TO_GONG_1:
|
||||
me->GetMotionMaster()->MovePoint(POINT_INTRO_1, VoljinIntroPosition1);
|
||||
break;
|
||||
case EVENT_MOVE_TO_GONG_2:
|
||||
me->GetMotionMaster()->MovePoint(POINT_INTRO_2, VoljinIntroPosition2);
|
||||
case EVENT_MOVE_TO_GONG:
|
||||
me->GetMotionMaster()->MovePath(PATH_ID_VOLJIN_INTRO_1, false);
|
||||
break;
|
||||
case EVENT_FACE_TO_GONG:
|
||||
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
|
||||
@@ -198,12 +224,9 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
case EVENT_BANGING_THE_GONG:
|
||||
DoCastSelf(SPELL_BANGING_THE_GONG);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, ITEM_DISPLAY_ID_MACE);
|
||||
_events.ScheduleEvent(EVENT_MAKE_GONG_SELECTABLE, 400ms);
|
||||
_events.ScheduleEvent(EVENT_FAIL_GONG_EVENT, 1min + 3s);
|
||||
break;
|
||||
case EVENT_MAKE_GONG_SELECTABLE:
|
||||
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
|
||||
gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
_events.ScheduleEvent(EVENT_FAIL_GONG_EVENT, 1min + 3s);
|
||||
break;
|
||||
case EVENT_FAIL_GONG_EVENT:
|
||||
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
|
||||
@@ -215,7 +238,7 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
_events.ScheduleEvent(EVENT_MOVE_HOME, 2s + 200ms);
|
||||
break;
|
||||
case EVENT_MOVE_HOME:
|
||||
me->GetMotionMaster()->MovePoint(POINT_HOME, VoljinHomePosition);
|
||||
me->GetMotionMaster()->MovePath(PATH_ID_VOLJIN_INTRO_3, false);
|
||||
break;
|
||||
case EVENT_FACE_HOME:
|
||||
me->SetFacingTo(4.782202f);
|
||||
@@ -229,18 +252,7 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
me->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, MOUNT_DISPLAY_ID_RAPTOR);
|
||||
break;
|
||||
case EVENT_RESET_NPC_FLAGS:
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
break;
|
||||
case EVENT_MOVE_TO_CENTER:
|
||||
_instance->SetData(DATA_TRIGGER_AMANISHI_GUARDIANS, IN_PROGRESS);
|
||||
me->RemoveAurasDueToSpell(SPELL_BANGING_THE_GONG);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, 0);
|
||||
me->GetMotionMaster()->MovePoint(POINT_INTRO_3, VoljinIntroPosition3);
|
||||
_events.ScheduleEvent(EVENT_MAKE_GONG_UNSELECTABLE, 400ms);
|
||||
break;
|
||||
case EVENT_MAKE_GONG_UNSELECTABLE:
|
||||
if (GameObject* gong = _instance->GetGameObject(DATA_STRANGE_GONG))
|
||||
gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
break;
|
||||
case EVENT_TALK_TO_AMANI:
|
||||
me->SetFacingTo(4.747295f);
|
||||
@@ -266,30 +278,6 @@ struct npc_zulaman_voljin : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void MovementInform(uint32 movementType, uint32 pointId) override
|
||||
{
|
||||
if (movementType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
switch (pointId)
|
||||
{
|
||||
case POINT_HOME:
|
||||
_events.ScheduleEvent(EVENT_FACE_HOME, 1ms);
|
||||
break;
|
||||
case POINT_INTRO_1:
|
||||
_events.ScheduleEvent(EVENT_MOVE_TO_GONG_2, 1ms);
|
||||
break;
|
||||
case POINT_INTRO_2:
|
||||
_events.ScheduleEvent(EVENT_FACE_TO_GONG, 800ms);
|
||||
break;
|
||||
case POINT_INTRO_3:
|
||||
_events.ScheduleEvent(EVENT_TALK_TO_AMANI, 1ms);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
InstanceScript* _instance;
|
||||
EventMap _events;
|
||||
|
||||
@@ -41,7 +41,7 @@ enum ZADataTypes
|
||||
DATA_MASSIVE_GATE,
|
||||
DATA_ZULAMAN_SPEEDRUN_STATE,
|
||||
DATA_TRIGGER_AMANISHI_GUARDIANS,
|
||||
DATA_TRIGGER_AMANISHI_SAVAGES,
|
||||
DATA_TRIGGER_AMANISHI_SAVAGES
|
||||
};
|
||||
|
||||
enum ZACreatureIds
|
||||
|
||||
Reference in New Issue
Block a user