Skip to content

Commit 9ed8350

Browse files
authored
fix(Scripts/VioletHold): Sinclari gossip order, crystals being spamma… (#22195)
1 parent d2be121 commit 9ed8350

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
--
2+
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 58152) AND (`SourceId` = 0) AND (`ElseGroup` = 18) AND (`ConditionTypeOrReference` = 31);
3+
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
4+
(13, 1, 58152, 0, 18, 31, 0, 3, 29321, 0, 0, 0, 0, '', 'Defense System - Arcane Lightning - Ichor Globule');

src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,11 @@ class instance_violet_hold : public InstanceMapScript
218218
{
219219
EncounterStatus = IN_PROGRESS;
220220
if (Creature* c = instance->GetCreature(NPC_SinclariGUID))
221+
{
222+
c->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
221223
c->AI()->Talk(SAY_SINCLARI_LEAVING);
224+
/// @todo: Missing orientation for Sinclari's movement and "interaction" animation with the nearby crystal.
225+
}
222226
events.RescheduleEvent(EVENT_GUARDS_FALL_BACK, 4s);
223227
}
224228
break;
@@ -451,6 +455,7 @@ class instance_violet_hold : public InstanceMapScript
451455
{
452456
if (Creature* c = instance->GetCreature(NPC_SinclariGUID))
453457
{
458+
c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
454459
c->AI()->Talk(SAY_SINCLARI_DOOR_LOCK);
455460
}
456461
if (Creature* c = instance->GetCreature(NPC_DoorSealGUID))
@@ -568,7 +573,13 @@ class instance_violet_hold : public InstanceMapScript
568573
}
569574

570575
// reset positions of Sinclari and Guards
571-
if (Creature* c = instance->GetCreature(NPC_SinclariGUID)) { c->DespawnOrUnsummon(); c->SetRespawnTime(3); }
576+
if (Creature* c = instance->GetCreature(NPC_SinclariGUID))
577+
{
578+
c->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP);
579+
c->DespawnOrUnsummon();
580+
c->SetRespawnTime(3);
581+
}
582+
572583
for (uint8 i = 0; i < 4; ++i)
573584
if (Creature* c = instance->GetCreature(NPC_GuardGUID[i]))
574585
{

src/server/scripts/Northrend/VioletHold/violet_hold.cpp

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,15 @@
2727
#include "SpellScriptLoader.h"
2828

2929
/// @todo: Missing Sinclari Trigger announcements (32204) Look at its creature_text for more info.
30-
/// @todo: Activation Crystals (go_vh_activation_crystal) (193611) are spammable, should be a 1 time use per crystal.
3130

3231
enum Texts
3332
{
34-
GOSSIP_MENU_START_EVENT = 9998,
35-
GOSSIP_MENU_ITEM = 9997,
33+
GOSSIP_MENU_START_1 = 9997,
34+
GOSSIP_MENU_START_2 = 9998,
3635
GOSSIP_MENU_LATE_JOIN = 10275,
3736

3837
NPC_TEXT_SINCLARI_IN = 13853,
39-
NPC_TEXT_SINCLARI_ITEM = 13854,
38+
NPC_TEXT_SINCLARI_START = 13854,
4039
NPC_TEXT_SINCLARI_DONE = 13910,
4140
NPC_TEXT_SINCLARI_LATE_JOIN = 14271,
4241
};
@@ -53,7 +52,11 @@ class go_vh_activation_crystal : public GameObjectScript
5352
bool OnGossipHello(Player* /*player*/, GameObject* go) override
5453
{
5554
if (InstanceScript* pInstance = go->GetInstanceScript())
55+
{
5656
pInstance->SetData(DATA_ACTIVATE_DEFENSE_SYSTEM, 1);
57+
go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
58+
}
59+
5760
return true;
5861
}
5962
};
@@ -73,8 +76,7 @@ class npc_vh_sinclari : public CreatureScript
7376
switch (pInstance->GetData(DATA_ENCOUNTER_STATUS))
7477
{
7578
case NOT_STARTED:
76-
AddGossipItemFor(player, GOSSIP_MENU_ITEM, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
77-
AddGossipItemFor(player, GOSSIP_MENU_START_EVENT, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
79+
AddGossipItemFor(player, GOSSIP_MENU_START_1, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
7880
SendGossipMenuFor(player, NPC_TEXT_SINCLARI_IN, creature->GetGUID());
7981
break;
8082
case IN_PROGRESS:
@@ -94,13 +96,14 @@ class npc_vh_sinclari : public CreatureScript
9496
switch (uiAction)
9597
{
9698
case GOSSIP_ACTION_INFO_DEF+1:
99+
AddGossipItemFor(player, GOSSIP_MENU_START_2, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
100+
SendGossipMenuFor(player, NPC_TEXT_SINCLARI_START, creature->GetGUID());
101+
break;
102+
case GOSSIP_ACTION_INFO_DEF+2:
97103
CloseGossipMenuFor(player);
98104
if (InstanceScript* pInstance = creature->GetInstanceScript())
99105
pInstance->SetData(DATA_START_INSTANCE, 1);
100106
break;
101-
case GOSSIP_ACTION_INFO_DEF+2:
102-
SendGossipMenuFor(player, NPC_TEXT_SINCLARI_ITEM, creature->GetGUID());
103-
break;
104107
case GOSSIP_ACTION_INFO_DEF+3:
105108
player->NearTeleportTo(playerTeleportPosition.GetPositionX(), playerTeleportPosition.GetPositionY(), playerTeleportPosition.GetPositionZ(), playerTeleportPosition.GetOrientation(), true);
106109
CloseGossipMenuFor(player);

0 commit comments

Comments
 (0)