DB/Quest: Move "Gyromast's Revenge" to SAI

Closes #24034
This commit is contained in:
dr-j
2020-01-02 23:34:10 +01:00
committed by Killyana
parent 8c29c997e6
commit a04a80b906
2 changed files with 34 additions and 84 deletions

View File

@@ -0,0 +1,33 @@
--
UPDATE `creature_template` SET `gossip_menu_id`=230 WHERE `entry`=6669;
DELETE FROM `gossip_menu` WHERE `MenuID` IN (21208,230) AND `TextID` IN (718,758);
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES (230,718),(230,758);
DELETE FROM `gossip_menu_option` WHERE `MenuID`=230 AND `OptionID`=0;
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
(230, 0, 0, 'Turn the key to start the machine.', 2703, 1, 1, 0, 0, 0, 0, '', 0, 0);
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=230;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=230;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=6669;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(15, 230, 0, 0, 0, 9, 0, 2078, 0, 0, 0, 0, 0, '', 'Show gossip option if player has quest 2078 but not complete'),
(15, 230, 0, 0, 0, 2, 0, 7442, 1, 0, 0, 0, 0, '', 'Show gossip option if player has item 7442'),
(22, 11, 6669, 0, 0, 23, 1, 452, 0, 0, 1, 0, 0, '', 'The Threshwackonator 4100 SAI condition to despawns if in the wrong area'),
(14, 230, 758, 0, 0, 9, 0, 2078, 0, 0, 0, 0, 0, '', 'Show gossip text if player has quest 2078 but not complete'),
(14, 230, 758, 0, 0, 2, 0, 7442, 1, 0, 0, 0, 0, '', 'Show gossip text if player has item 7442');
UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=6669;
DELETE FROM `smart_scripts` WHERE `entryorguid`=6669 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`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(6669,0,0,1,62,0,100,0,230,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Gossip Option Selected - Close Gossip'),
(6669,0,1,2,61,0,100,0,0,0,0,0,81,0,0,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Gossip Option Selected - Set NPC Flags'),
(6669,0,2,3,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Gossip Option Selected - Say Line 0'),
(6669,0,3,4,61,0,100,0,0,0,0,0,29,0,0,0,0,0,0,7,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Gossip Option Selected - Follow Invoker'),
(6669,0,4,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Gossip Option Selected - Set Phase 1'),
(6669,0,5,6,75,0,100,1,0,6667,5,0,1,0,0,0,0,0,0,19,6667,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Creature 6667 within 5 yards - Say Line 0 on creature 6667'),
(6669,0,6,7,61,0,100,1,0,0,0,0,101,0,0,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Creature 6667 within 5 yards - Set Home Position'),
(6669,0,7,8,61,0,100,1,0,0,0,0,2,14,0,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Creature 6667 within 5 yards - Set hostile'),
(6669,0,8,0,61,0,100,0,0,0,0,0,22,2,0,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - On Creature 6667 within 5 yards - Set Phase 1'),
(6669,0,9,0,1,3,100,1,300000,300000,0,0,41,0,15,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - OOC (Phase 3) - Despawn after 5 minutes'),
(6669,0,10,0,1,3,100,1,3000,3000,0,0,41,0,15,0,0,0,0,1,0,0,0,0.0,0.0,0.0,0.0,'The Threshwackonator 4100 - OOC (Phase 3) - Despawn after 3 Secs');

View File

@@ -18,14 +18,13 @@
/* ScriptData
SDName: Darkshore
SD%Complete: 100
SDComment: Quest support: 731, 2078, 5321
SDComment: Quest support: 731, 5321
SDCategory: Darkshore
EndScriptData */
/* ContentData
npc_kerlonian
npc_prospector_remtravel
npc_threshwackonator
EndContentData */
#include "ScriptMgr.h"
@@ -303,90 +302,8 @@ public:
}
};
/*####
# npc_threshwackonator
####*/
enum Threshwackonator
{
EMOTE_START = 0,
SAY_AT_CLOSE = 0,
QUEST_GYROMAST_REV = 2078,
NPC_GELKAK = 6667
};
#define GOSSIP_ITEM_INSERT_KEY "[PH] Insert key"
class npc_threshwackonator : public CreatureScript
{
public:
npc_threshwackonator() : CreatureScript("npc_threshwackonator") { }
struct npc_threshwackonatorAI : public FollowerAI
{
npc_threshwackonatorAI(Creature* creature) : FollowerAI(creature) { }
void Reset() override { }
void MoveInLineOfSight(Unit* who) override
{
FollowerAI::MoveInLineOfSight(who);
if (!me->GetVictim() && !HasFollowState(STATE_FOLLOW_COMPLETE) && who->GetEntry() == NPC_GELKAK)
{
if (me->IsWithinDistInMap(who, 10.0f))
{
who->ToCreature()->AI()->Talk(SAY_AT_CLOSE, who);
DoAtEnd();
}
}
}
void DoAtEnd()
{
me->SetFaction(FACTION_MONSTER);
if (Player* pHolder = GetLeaderForFollower())
AttackStart(pHolder);
SetFollowComplete(true);
}
bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
{
uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
CloseGossipMenuFor(player);
Talk(EMOTE_START);
StartFollow(player);
}
return true;
}
bool GossipHello(Player* player) override
{
if (player->GetQuestStatus(QUEST_GYROMAST_REV) == QUEST_STATUS_INCOMPLETE)
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_INSERT_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID());
return true;
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_threshwackonatorAI(creature);
}
};
void AddSC_darkshore()
{
new npc_kerlonian();
new npc_prospector_remtravel();
new npc_threshwackonator();
}