fix(SAI/Script) Quest 8304 Dearest Natalia (#8717)

Redid quest to have proper gossip and use proper db gossip system.
This commit is contained in:
Malcrom
2021-10-26 17:39:25 -03:00
committed by GitHub
parent 8ebb7eff5d
commit 26456132c7
2 changed files with 33 additions and 117 deletions

View File

@@ -0,0 +1,33 @@
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1635047186151663471');
-- Quest 8304 Dearest Natalia
-- Rutgar Glyphshaper
UPDATE `creature_template` SET `gossip_menu_id`=6533, `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=15170;
DELETE FROM `smart_scripts` WHERE `entryorguid`=15170 AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_chance`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
(15170,0,0,1,62,100,6545,0,33,15222,7, 'Rutgar Glyphshaper - On Gossip Option Select - Killmonster credit Rutgar Questioned'),
(15170,0,1,0,61,100,0,0,72,0,7, 'Rutgar Glyphshaper - On Gossip Option Select - Close Gossip');
-- Gossip option fix
UPDATE `gossip_menu_option` SET `ActionMenuID`=6551 WHERE `MenuID`=6533;
-- Condition for source Gossip menu option condition type Quest taken
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=6533 AND `SourceEntry`=0 AND `SourceId`=0;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(15, 6533, 0, 0, 0, 9, 0, 8304, 0, 0, 0, 0, 0, '', 'Show gossip menu 6533 option id 0 if quest Dearest Natalia has been taken.');
-- Frankal Stonebridge
UPDATE `creature_template` SET `gossip_menu_id`=6534, `AIName`='SmartAI', `ScriptName`='' WHERE `entry`=15171;
DELETE FROM `smart_scripts` WHERE `entryorguid`=15171 AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_chance`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
(15171,0,0,1,62,100,6552,0,33,15221,7, 'Frankal Stonebridge - On Gossip Option Select - Killmonster credit Frankal Questioned'),
(15171,0,1,0,61,100,0,0,72,0,7, 'Frankal Stonebridge - On Gossip Option Select - Close Gossip');
-- Gossip option fix
UPDATE `gossip_menu_option` SET `OptionText`='Hello, Frankal. I''ve heard that you might have some information as to the whereabouts of Mistress Natalia Mar''alith.', `OptionBroadcastTextID`=10727, `ActionMenuID`=6558 WHERE `MenuID`=6534;
-- Condition for source Gossip menu option condition type Quest taken
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=6534 AND `SourceEntry`=0 AND `SourceId`=0;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(15, 6534, 0, 0, 0, 9, 0, 8304, 0, 0, 0, 0, 0, '', 'Show gossip menu 6534 option id 0 if quest Dearest Natalia has been taken.');

View File

@@ -37,122 +37,6 @@ EndContentData */
#include "Spell.h"
#include "SpellInfo.h"
/*###
## npcs_rutgar_and_frankal
###*/
//gossip item text best guess
#define GOSSIP_ITEM1 "I seek information about Natalia"
#define GOSSIP_ITEM2 "That sounds dangerous!"
#define GOSSIP_ITEM3 "What did you do?"
#define GOSSIP_ITEM4 "Who?"
#define GOSSIP_ITEM5 "Women do that. What did she demand?"
#define GOSSIP_ITEM6 "What do you mean?"
#define GOSSIP_ITEM7 "What happened next?"
#define GOSSIP_ITEM11 "Yes, please continue"
#define GOSSIP_ITEM12 "What language?"
#define GOSSIP_ITEM13 "The Priestess attacked you?!"
#define GOSSIP_ITEM14 "I should ask the monkey about this"
#define GOSSIP_ITEM15 "Then what..."
enum RutgarAndFrankal //trigger creatures to kill
{
TRIGGER_FRANKAL = 15221,
TRIGGER_RUTGAR = 15222
};
class npcs_rutgar_and_frankal : public CreatureScript
{
public:
npcs_rutgar_and_frankal() : CreatureScript("npcs_rutgar_and_frankal") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 7755, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 7756, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, 7757, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
SendGossipMenuFor(player, 7758, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 4:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
SendGossipMenuFor(player, 7759, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 5:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
SendGossipMenuFor(player, 7760, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 6:
SendGossipMenuFor(player, 7761, creature->GetGUID());
//'kill' our trigger to update quest status
player->KilledMonsterCredit(TRIGGER_RUTGAR);
break;
case GOSSIP_ACTION_INFO_DEF + 9:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM11, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
SendGossipMenuFor(player, 7762, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 10:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM12, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
SendGossipMenuFor(player, 7763, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 11:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM13, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
SendGossipMenuFor(player, 7764, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 12:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM14, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
SendGossipMenuFor(player, 7765, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 13:
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM15, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
SendGossipMenuFor(player, 7766, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 14:
SendGossipMenuFor(player, 7767, creature->GetGUID());
//'kill' our trigger to update quest status
player->KilledMonsterCredit(TRIGGER_FRANKAL);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(8304) == QUEST_STATUS_INCOMPLETE &&
creature->GetEntry() == 15170 &&
!player->GetReqKillOrCastCurrentCount(8304, TRIGGER_RUTGAR))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
if (player->GetQuestStatus(8304) == QUEST_STATUS_INCOMPLETE &&
creature->GetEntry() == 15171 &&
player->GetReqKillOrCastCurrentCount(8304, TRIGGER_RUTGAR))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
SendGossipMenuFor(player, 7754, creature->GetGUID());
return true;
}
};
/*####
# quest_a_pawn_on_the_eternal_board (Defines)
####*/
@@ -1453,6 +1337,5 @@ void AddSC_silithus()
new npc_anachronos_quest_trigger();
new npc_anachronos_the_ancient();
new npc_qiraj_war_spawn();
new npcs_rutgar_and_frankal();
new go_wind_stone();
}