fix(DB/SAI): Quest 9678 "The First Trial" (#9528)

This commit is contained in:
Malcrom
2021-12-11 09:27:29 -04:00
committed by GitHub
parent c69f1050be
commit 10ce7a7460
2 changed files with 88 additions and 8 deletions

View File

@@ -0,0 +1,21 @@
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1638753088438372219');
-- Fix Sangrias Stillblade for quest 9678 "The First Trial"
UPDATE `creature_template` SET `npcflag`=2, `unit_flags`=32768, `BaseAttackTime`=4000, `RangeAttackTime`=4000 WHERE `entry`=17716;
DELETE FROM `smart_scripts` WHERE `entryorguid`=17716 AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(17716,0,0,1,60,0,100,1,2000,2000,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Sangrias Stillblade - On Update - Say text 0 (No Repeat)'),
(17716,0,1,0,61,0,100,0,0,0,0,0,0,53,1,17716,0,9678,0,2,1,0,0,0,0,0,0,0,0,'Sangrias Stillblade - On Update - Load path (No Repeat)'),
(17716,0,2,0,9,0,100,1,8,25,0,0,0,11,22120,0,0,0,0,0,2,0,0,0,0,0,0,0,0,'Sangrias Stillblade - Within 8-25 Range - Cast ''Charge'' (No Repeat)'),
(17716,0,3,0,6,0,100,1,0,0,0,0,0,15,9678,0,0,0,0,0,16,0,0,0,0,0,0,0,0,'Sangrias Stillblade - On Death - Complete quest for player party'),
(17716,0,4,0,7,0,100,1,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Sangrias Stillblade - On Evade - despawn (No Repeat)');
DELETE FROM `waypoints` WHERE `entry`=17716;
INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`point_comment`) VALUES
(17716,1,8051.857,-7543.9897,149.69759,0,0, 'Sangrias Stillblade'),
(17716,2,8094.734,-7541.6343,151.74496,0,0, 'Sangrias Stillblade');
DELETE FROM `creature_text` WHERE `CreatureID`=17716;
INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
(17716,0,0, 'Defend yourself, youngling! We''ll see if there''s a Blood Knight in you, yet.',14,0,100,0,0,0,14365,0, 'Sangrias Stillblade say on attack');

View File

@@ -796,12 +796,15 @@ public:
};
/*######
## go_gilded_brazier (Paladin First Trail quest (9678))
## go_gilded_brazier (Paladin quest 9678 "The First Trial")
######*/
enum GildedBrazier
{
NPC_STILLBLADE = 17716,
EVENT_STILLBLADE_SPAWN = 1,
EVENT_RESET_BRAZIER = 2,
NPC_STILLBLADE = 17716,
QUEST_THE_FIRST_TRIAL = 9678
};
class go_gilded_brazier : public GameObjectScript
@@ -809,17 +812,73 @@ class go_gilded_brazier : public GameObjectScript
public:
go_gilded_brazier() : GameObjectScript("go_gilded_brazier") { }
bool OnGossipHello(Player* player, GameObject* go) override
struct go_gilded_brazierAI : public GameObjectAI
{
if (go->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
go_gilded_brazierAI(GameObject* go) : GameObjectAI(go)
{
if (player->GetQuestStatus(9678) == QUEST_STATUS_INCOMPLETE)
Initialize();
}
void Initialize()
{
_playerGUID.Clear();
}
bool GossipHello(Player* player, bool reportUse) override
{
if (reportUse)
return false;
if (me->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
{
if (Creature* Stillblade = player->SummonCreature(NPC_STILLBLADE, 8106.11f, -7542.06f, 151.775f, 3.02598f, TEMPSUMMON_DEAD_DESPAWN, 60000))
Stillblade->AI()->AttackStart(player);
if (player->GetQuestStatus(QUEST_THE_FIRST_TRIAL) == QUEST_STATUS_INCOMPLETE)
{
_playerGUID = player->GetGUID();
me->SetFlag(GAMEOBJECT_FLAGS, 1);
me->RemoveByteFlag(GAMEOBJECT_BYTES_1, 0, 1);
_events.ScheduleEvent(EVENT_STILLBLADE_SPAWN, 1000);
}
}
return true;
}
void UpdateAI(uint32 const diff) override
{
_events.Update(diff);
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_STILLBLADE_SPAWN:
{
if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID))
{
player->SummonCreature(NPC_STILLBLADE, 8032.587f, -7524.518f, 149.68073f, 6.161012172698974609f, TEMPSUMMON_DEAD_DESPAWN, 60000);
_events.ScheduleEvent(EVENT_RESET_BRAZIER, 4000);
}
break;
}
case EVENT_RESET_BRAZIER:
{
me->RemoveFlag(GAMEOBJECT_FLAGS, 1);
me->SetByteFlag(GAMEOBJECT_BYTES_1, 0, 1);
break;
}
default:
break;
}
}
}
return true;
private:
EventMap _events;
ObjectGuid _playerGUID;
};
GameObjectAI* GetAI(GameObject* go) const override
{
return new go_gilded_brazierAI(go);
}
};