New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DB/Gossip: Salanar the Horseman, constant gossip option #15603
Comments
I think this would require a script. For example, take a look at Sayge (14822), the fortune teller from the Darkmoon Faire. After clicking through a bunch of options he will cast a buff spell on the player. His |
Thanks for the tip. I found the script |
You just need this for the condition : DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9739 AND `ConditionValue1`=12687;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(15,9739,0,0,0,9,0,12687,0,0,0,0,0,'','Salanar the Horseman - on gossip select - Show gossip option only if player has accepted quest 12687, but not completed it.'); |
This can be easily done in SAI. Just have him cast http://www.wowhead.com/spell=52359 and close gossip on gossip option selected. |
Maybe this can help bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 /*action*/) override
{
if(player->GetQuestStatus(12687) == QUEST_STATUS_INCOMPLETE)
{
player->CLOSE_GOSSIP_MENU();
player->CastSpell(player, SPELL_REALM_OF_SHADOWS, false);
}
return true;
} |
Thanks for the tip, I guess that code belongs somewhere in https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp#L728-L807 Another thing I have noticed about that same quest, http://www.wowhead.com/quest=12687/into-the-realm-of-shadows, is that the level 55 version of Salanar the Horseman, NPC entry 28788, does not say his speech part before overtaking the stolen horse. The event just dismounts the player and removes the aura Anyway, I am testing your suggestion first: diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index b37d505..c056edc 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -773,8 +773,18 @@ public:
}
}
}
+ bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 /*action*/)
+ {
+ if(player->GetQuestStatus(12687) == QUEST_STATUS_INCOMPLETE)
+ {
+ player->CLOSE_GOSSIP_MENU();
+ player->CastSpell(player, SPELL_REALM_OF_SHADOWS, false);
+ }
+ return true;
+ }
+
void MoveInLineOfSight(Unit* who) override
{
ScriptedAI::MoveInLineOfSight(who); Edit: had to remove the keyword Edit 2: Nope, it compiled, but the code did not work in-game. It needs to be moved or changed. Edit 3: My mistake, I mistook |
Don't the Trinity standards require the quest ID be defined instead of hard coded?
|
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index eeb8bd9..1d5ae4a 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -729,8 +729,10 @@ class npc_dark_rider_of_acherus : public CreatureScript
## npc_salanar_the_horseman
######*/
-enum Spells_Salanar
+enum SalanarTheHorseMan
{
+ SALANAR_SAY = 0,
+ QUEST_INTO_REALMS_OF_SHADOWS = 12687,
SPELL_REALM_OF_SHADOWS = 52693,
SPELL_EFFECT_STOLEN_HORSE = 52263,
SPELL_DELIVER_STOLEN_HORSE = 52264,
@@ -747,6 +749,16 @@ public:
{
return new npc_salanar_the_horsemanAI(creature);
}
+
+ bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
+ {
+ if(player->GetQuestStatus(QUEST_INTO_REALMS_OF_SHADOWS) == QUEST_STATUS_INCOMPLETE)
+ {
+ player->CLOSE_GOSSIP_MENU();
+ player->CastSpell(player, SPELL_REALM_OF_SHADOWS, false);
+ }
+ return true;
+ }
struct npc_salanar_the_horsemanAI : public ScriptedAI
{
@@ -765,6 +777,7 @@ public:
charmer->RemoveAurasDueToSpell(SPELL_EFFECT_STOLEN_HORSE);
caster->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
caster->setFaction(35);
+ Talk(SALANAR_SAY);
DoCast(caster, SPELL_CALL_DARK_RIDER, true);
if (Creature* Dark_Rider = me->FindNearestCreature(28654, 15))
ENSURE_AI(npc_dark_rider_of_acherus::npc_dark_rider_of_acherusAI, Dark_Rider->AI())->InitDespawnHorse(caster);
@@ -785,9 +798,9 @@ public:
if (Player* player = charmer->ToPlayer())
{
// for quest Into the Realm of Shadows(12687)
- if (me->GetEntry() == 28788 && player->GetQuestStatus(12687) == QUEST_STATUS_INCOMPLETE)
+ if (me->GetEntry() == 28788 && player->GetQuestStatus(QUEST_INTO_REALMS_OF_SHADOWS) == QUEST_STATUS_INCOMPLETE)
{
- player->GroupEventHappens(12687, me);
+ player->GroupEventHappens(QUEST_INTO_REALMS_OF_SHADOWS, me);
charmer->RemoveAurasDueToSpell(SPELL_EFFECT_OVERTAKE);
if (Creature* creature = who->ToCreature())
{
Text: -- Salanar text
SET @ENTRY := 28788;
DELETE FROM creature_text WHERE entry = @ENTRY;
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(@ENTRY,0,0,'Impressive, death knight. Return to me in the world of the living for your reward.',12,0,100,0,0,28835,0,0,'Salanar the Horseman'); |
@MrSmite : Maybe that is true now, but it certainly doesn't seem like it used to be so. If you look at https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp#L787-L790, you will see that it is not defined like you suggested. @CreshandKesh : 👍 Thanks a lot for the update, very nice. I'll test it soon and see how it works. @Pitcrawler : SAI from @astrixoblix (m3 in #trinity), just a draft: http://pastebin.com/BWFVNgTv -- SAI for quest 12687 (into-the-realm-of-shadow) - Salanar the horseman
SET @SALANAR := 28653;
SET @GOSSIP := 9739;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@SALANAR 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
(@SALANAR, 0, 0, 10, 62, 0, 100, 0, @GOSSIP, 1, 0, 0, 11, 52359, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Salanar the horseman - On Gossip Select - Cast Spell Realm of Shadows'); |
Well, I didn't notice he already had a cpp script. So it's best to add the gossip script to it like suggested above. |
@tkrokli : I only suggested it because in the past when I've copied existing code I was asked to change it because "there's no point in perpetuating bad coding style" ;) @CreshandKesh Thanks for the update |
OK, so now I have tested the suggested patch from @CreshandKesh with some minor additions to improve on the coding style where [NPC 28788] was directly referred to with DB entry instead of being enumerated at the start of the script With this patch from CreshandKesh, the diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index b37d505..1b5cd31 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -729,8 +729,12 @@ class npc_dark_rider_of_acherus : public CreatureScript
## npc_salanar_the_horseman
######*/
-enum Spells_Salanar
+enum SalanarTheHorseMan
{
+ SALANAR_SAY = 0,
+ QUEST_INTO_REALM_OF_SHADOWS = 12687,
+ DARK_RIDER_OF_ACHERUS = 28654,
+ SALANAR_IN_REALM_OF_SHADOWS = 28788,
SPELL_REALM_OF_SHADOWS = 52693,
SPELL_EFFECT_STOLEN_HORSE = 52263,
SPELL_DELIVER_STOLEN_HORSE = 52264,
@@ -747,6 +751,16 @@ public:
{
return new npc_salanar_the_horsemanAI(creature);
}
+
+ bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
+ {
+ if(player->GetQuestStatus(QUEST_INTO_REALM_OF_SHADOWS) == QUEST_STATUS_INCOMPLETE)
+ {
+ player->CLOSE_GOSSIP_MENU();
+ player->CastSpell(player, SPELL_REALM_OF_SHADOWS, false);
+ }
+ return true;
+ }
struct npc_salanar_the_horsemanAI : public ScriptedAI
{
@@ -765,8 +779,9 @@ public:
charmer->RemoveAurasDueToSpell(SPELL_EFFECT_STOLEN_HORSE);
caster->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
caster->setFaction(35);
+ Talk(SALANAR_SAY);
DoCast(caster, SPELL_CALL_DARK_RIDER, true);
- if (Creature* Dark_Rider = me->FindNearestCreature(28654, 15))
+ if (Creature* Dark_Rider = me->FindNearestCreature(DARK_RIDER_OF_ACHERUS, 15))
ENSURE_AI(npc_dark_rider_of_acherus::npc_dark_rider_of_acherusAI, Dark_Rider->AI())->InitDespawnHorse(caster);
}
}
@@ -784,10 +799,9 @@ public:
{
if (Player* player = charmer->ToPlayer())
{
- // for quest Into the Realm of Shadows(12687)
- if (me->GetEntry() == 28788 && player->GetQuestStatus(12687) == QUEST_STATUS_INCOMPLETE)
+ if (me->GetEntry() == SALANAR_IN_REALM_OF_SHADOWS && player->GetQuestStatus(QUEST_INTO_REALM_OF_SHADOWS) == QUEST_STATUS_INCOMPLETE)
{
- player->GroupEventHappens(12687, me);
+ player->GroupEventHappens(QUEST_INTO_REALM_OF_SHADOWS, me);
charmer->RemoveAurasDueToSpell(SPELL_EFFECT_OVERTAKE);
if (Creature* creature = who->ToCreature())
{ -- Salanar the Horseman (NPC 28788) say line in Realm of Shadows
SET @ENTRY := 28788;
DELETE FROM `creature_text` WHERE `entry` = @ENTRY;
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
(@ENTRY,0,0,'Impressive, death knight. Return to me in the world of the living for your reward.',12,0,100,0,0,0,28835,0,'SALANAR_SAY');
-- Salanar the Horseman (NPC 28653) conditions for the gossip_menu_option to be shown for Into the Realm of Shadows
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9739 AND `ConditionValue1`=12687;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(15,9739,0,0,0,9,0,12687,0,0,0,0,0,'','Salanar the Horseman - on gossip select - Show gossip option only if player has accepted quest 12687, but not completed it.'); However, [Salanar the Horseman] does not say anything upon delivery of the [Acherus Deathcharger] (sub-issue unchanged), have I made any changes that I shouldn't have in the core script? Edit: Never mind my idea that I made any unlucky changes, I tested the unchanged C++ script now, just had to make a minor change in the SQL part for inserting the text into Anyway, I will try copying or moving the Edit 2: No luck, could not make the say line appear. Could there be anything worth looking at in the preceding script if (PhaseTimer <= diff)
{
switch (Phase)
{
case 0:
Talk(SAY_DARK_RIDER);
PhaseTimer = 5000;
Phase = 1;
break;
case 1:
if (Unit* target = ObjectAccessor::GetUnit(*me, TargetGUID))
DoCast(target, SPELL_DESPAWN_HORSE, true);
PhaseTimer = 3000;
Phase = 2;
break;
case 2:
me->SetVisible(false);
PhaseTimer = 2000;
Phase = 3;
break;
case 3:
me->DespawnOrUnsummon();
break;
default:
break;
}
} I don't know enough to tell what sort of code would make that mini-event happen. Sorry about that. |
@tkrokli, Try moving : Talk(SALANAR_SAY, player); below this line https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp#L789 |
@tkrokli Try this:
In the block for SPELL_DELIVER_STOLEN_HORSE, charmer refers to the player. Try adding that as a Talk() target and see if it works. In CreatureTextMgr::SendChat(), without a target the creature uses itself as a target. I don't know if this is correct or not but it seems strange that a creature would say something to itself. |
@CreshandKesh : Thank you for the updated suggestion. I did try to copy it there in addition to keeping it in your original line as well and also adding it to 2 more lines (though I have removed that info now because it did not seem to make any difference). I will test your new suggestion, to move it as just 1 insert (instead of using it in 3 or 4 lines) and see if that is where I went wrong. @MrSmite :
Now that is an interesting thought. I wonder if that is why the /say lines appear from the player char instead of the NPC, both in the quest event [The Endless Hunger] (quest 4 from the start) where the player targets the NPC and says lines like [ |
Sorry, no luck with any of your suggestions for where to put the line or how any of the 3 alternatives. Talk(SALANAR_SAY);
Talk(SALANAR_SAY, player);
Talk(SALANAR_SAY, charmer); But I think I have discovered why this doesn't work (or what is missing for it to work). None of the scripts in src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp refer to the built-in spells used to summon NPC 28788 (Salanar the Horseman). They seem to be used for the previous quest, GTP. [ [ [ [ Looking only at the spell enumerations (enums), it feels like the script stops halfway into the followup quest, [Into the Realm of Shadows]. Maybe we should add spells and script for the actual delivery?
Even so, it looks like these spells are already cast by the vehicle when clicking the toolbar button [1], but we are still stuck with NPC 28788 who does not react until the vehicle reaches 0 (zero) distance to the NPC, where he dismounts the player and removes aura 52693, [Realm of Shadows] I am going to test moving the say line down to this section to see if anything useful happens: void MoveInLineOfSight(Unit* who) override
{
ScriptedAI::MoveInLineOfSight(who);
if (who->GetTypeId() == TYPEID_UNIT && who->IsVehicle() && me->IsWithinDistInMap(who, 15.0f))
{
if (Unit* charmer = who->GetCharmer())
{
if (Player* player = charmer->ToPlayer())
{
if (me->GetEntry() == SALANAR_IN_REALM_OF_SHADOWS && player->GetQuestStatus(QUEST_INTO_REALM_OF_SHADOWS) == QUEST_STATUS_INCOMPLETE)
{
player->GroupEventHappens(QUEST_INTO_REALM_OF_SHADOWS, me);
Talk(SALANAR_SAY, charmer);
charmer->RemoveAurasDueToSpell(SPELL_EFFECT_OVERTAKE);
if (Creature* creature = who->ToCreature())
{
creature->DespawnOrUnsummon();
//creature->Respawn(true);
}
}
if (player->HasAura(SPELL_REALM_OF_SHADOWS))
player->RemoveAurasDueToSpell(SPELL_REALM_OF_SHADOWS);
}
}
}
}
|
If the text you're trying to make him say is (@ENTRY,0,0,'Impressive, death knight. Return to me in the world of the living for your reward.',12,0,100,0,0,28835,0,0,'Salanar the Horseman'); Then don't provide a target. Target should only be provided if there's any parser to receive it ($n, $c, $r etc). |
Thanks, I will test that. Although when I changed the end value in https://github.com/TrinityCore/TrinityCore/blob/3.3.5/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp#L781, if (who->GetTypeId() == TYPEID_UNIT && who->IsVehicle() && me->IsWithinDistInMap(who, 5.0f)) from Edit: The distance between the player character and NPC 28788 is |
SELECT `entry`,`name`,`gossip_menu_id`,`minlevel`,`maxlevel`,`exp`,`npcflag`,`speed_run`,`unit_flags`,`ScriptName`,`VerifiedBuild` FROM `creature_template` WHERE `name`= 'Salanar the Horseman';
Both NPC entry 28788 and NPC entry 28653 share the script @Pitcrawler : Maybe a SAI could be a better solution to have a separate script for "Realm of Shadows" Salanar the Horseman (entry 28788) and keep the core script for quest giver Salanar the Horseman, entry 28653 (lvl 80 elite). I will try to make one for the event where NPC 28788 walks up to the player character, pauses and says his text, before he dismounts the player and removes aura 52693. EDIT: "quick-n-dirty" attempt at lining up all the actions, used Keira2 for this simplistic and untested draft. Feel free to correct me, I haven't tested it yet (likely lots of mistakes on my part). -- Creating a new SmartAI script for [Creature] ENTRY 28788 (name: Salanar the Horseman)
-- Table `creature_template`
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28788;
-- Table `smart_scripts`
DELETE FROM `smart_scripts` WHERE (source_type = 0 AND entryorguid = 28788);
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
(28788, 0, 0, 0, 37, 0, 100, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 'Salanar the Horseman - On Initialize - Set Orientation Closest Player'),
(28788, 0, 1, 0, 54, 0, 100, 0, 0, 0, 0, 0, 46, 5, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 'Salanar the Horseman - On Just Summoned - Move Forward 5 Yards'),
(28788, 0, 2, 0, 58, 0, 100, 0, 0, 0, 0, 0, 5, 2, 0, 0, 0, 0, 0, 21, 5, 0, 0, 0, 0, 0, 0, 'Salanar the Horseman - On Waypoint Finished - Play Emote 2'),
(28788, 0, 3, 0, 9, 0, 100, 0, 0, 5, 0, 0, 1, 0, 0, 0, 0, 0, 0, 21, 5, 0, 0, 0, 0, 0, 0, 'Salanar the Horseman - Within 0-5 Range - Say Line 0'),
(28788, 0, 4, 0, 52, 0, 100, 0, 0, 28788, 0, 0, 11, 52267, 0, 0, 0, 0, 0, 21, 5, 0, 0, 0, 0, 0, 0, 'Salanar the Horseman - On Text 0 Over - Cast \'Despawn Horse\''),
(28788, 0, 5, 0, 52, 0, 100, 0, 0, 28788, 0, 0, 28, 52693, 0, 0, 0, 0, 0, 21, 5, 0, 0, 0, 0, 0, 0, 'Salanar the Horseman - On Text 0 Over - Remove Aura \'Realm of Shadows\''); |
Depends how the script is written. If written properly, it can look at the NPC (switch()) and do one thing for 28788 and another for 28653. |
OK, thanks for the feedback. |
I think this check is not required as there's already a condition on the DB: && player->GetQuestStatus(QUEST_INTO_REALM_OF_SHADOWS) == QUEST_STATUS_INCOMPLETE) |
OK, thanks for the suggestion. 👍 I will test it tomorrow night, when I'm back from other activities. Edit: I just tested removing that part of the code, but it failed to compile. Original line: if (me->GetEntry() == 28788 && player->GetQuestStatus(12687) == QUEST_STATUS_INCOMPLETE) Then after modifying the line, if me->GetEntry() == 28788 it did not compile due to missing semicolon or the if condition was invalid. It works if it is left unchanged. |
- Show gossip_menu_option 9739 only if quest 12687 is accepted & not completed - Cast spell 52693, SPELL_REALM_OF_SHADOWS, when gossip option is selected Core script by @CreshandKesh (with some modifications) SQL part by @CreshandKesh and @tkrokli, condition adjustment by @Killyana. Closes #15603 Closes #15657
- Show gossip_menu_option 9739 only if quest 12687 is accepted & not completed - Cast spell 52693, SPELL_REALM_OF_SHADOWS, when gossip option is selected Core script by @CreshandKesh (with some modifications) SQL part by @CreshandKesh and @tkrokli, condition adjustment by @Killyana. Closes TrinityCore#15603 Closes TrinityCore#15657
- Show gossip_menu_option 9739 only if quest 12687 is accepted & not completed - Cast spell 52693, SPELL_REALM_OF_SHADOWS, when gossip option is selected Core script by @CreshandKesh (with some modifications) SQL part by @CreshandKesh and @tkrokli, condition adjustment by @Killyana. Closes #15603 Closes #15657 (cherry picked from commit 359df54)
TrinityCore rev. 3f24853 2015-09-25 22:51:42 +0200 (3.3.5 branch) (Win64, Release)
http://www.wowhead.com/npc=28653/salanar-the-horseman
http://wotlk.openwow.com/npc=28653 (DK Quest giver NPC)
http://www.wowhead.com/quest=12687/into-the-realm-of-shadows
Salanar the Horseman in Scarlet Enclave/Death's Breach is constantly showing the gossip menu option
Salanar, I must return to the Realm of Shadows.
in all his gossip windows. This option is not supposed to show unless you have taken quest 12687, "Into the Realm of Shadows".Suggested SQL / DB fix to be inserted in the
conditions
table:Notice that I have based the 2 lines of values above on an already existing condition "Show gossip option only if player has taken quest 5247 but not complete", but I don't know if both of the lines are needed. This is my first attempt to suggest a solution based on conditions, suggested corrections are welcome.
Notice also that
gossip_menu_option
.menu_id
9739 does not work at all, neither with Quest 12687 accepted nor without it. I would have suggested a solution for that too, but I don't know how to connect a spell togossip_menu_option
.action_menu_id
(it should probably be posted as a separate issue).The text was updated successfully, but these errors were encountered: