mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +00:00
fix(Scripts/ShatteredHalls): Add scripts & spawn for quest "Imprisoned in the citadel" (#21114)
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
-- Spawn alliance quest giver for Shattered Halls Imprisoned in the Citadel quest
|
||||||
|
DELETE FROM `creature` WHERE (`id1` = 17288) AND (`guid` IN (151300));
|
||||||
|
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||||
|
(151300, 17288, 0, 0, 540, 37114, 3714, 2, 1, 0, 120.88, 252.78, -14.57, 0.82, 7200, 0, 0, 6104, 0, 0, 2, 0, 0, '', 0);
|
||||||
@@ -67,6 +67,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||||
TeamIdInInstance = player->GetTeamId();
|
TeamIdInInstance = player->GetTeamId();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnCreatureCreate(Creature* creature) override
|
void OnCreatureCreate(Creature* creature) override
|
||||||
@@ -84,22 +85,26 @@ public:
|
|||||||
case NPC_SHATTERED_EXECUTIONER:
|
case NPC_SHATTERED_EXECUTIONER:
|
||||||
if (RescueTimer > 25 * MINUTE * IN_MILLISECONDS)
|
if (RescueTimer > 25 * MINUTE * IN_MILLISECONDS)
|
||||||
creature->AddLootMode(2);
|
creature->AddLootMode(2);
|
||||||
executionerGUID = creature->GetGUID();
|
ExecutionerGUID = creature->GetGUID();
|
||||||
break;
|
break;
|
||||||
case NPC_RIFLEMAN_BROWNBEARD:
|
case NPC_RIFLEMAN_BROWNBEARD:
|
||||||
if (TeamIdInInstance == TEAM_HORDE)
|
if (TeamIdInInstance == TEAM_HORDE)
|
||||||
creature->UpdateEntry(NPC_KORAG_PROUDMANE);
|
creature->UpdateEntry(NPC_KORAG_PROUDMANE);
|
||||||
prisonerGUID[0] = creature->GetGUID();
|
PrisonerGUID[0] = creature->GetGUID();
|
||||||
break;
|
break;
|
||||||
case NPC_CAPTAIN_ALINA:
|
case NPC_CAPTAIN_ALINA:
|
||||||
if (TeamIdInInstance == TEAM_HORDE)
|
if (TeamIdInInstance == TEAM_HORDE)
|
||||||
creature->UpdateEntry(NPC_CAPTAIN_BONESHATTER);
|
creature->UpdateEntry(NPC_CAPTAIN_BONESHATTER);
|
||||||
prisonerGUID[1] = creature->GetGUID();
|
PrisonerGUID[1] = creature->GetGUID();
|
||||||
break;
|
break;
|
||||||
case NPC_PRIVATE_JACINT:
|
case NPC_PRIVATE_JACINT:
|
||||||
if (TeamIdInInstance == TEAM_HORDE)
|
if (TeamIdInInstance == TEAM_HORDE)
|
||||||
creature->UpdateEntry(NPC_SCOUT_ORGARR);
|
creature->UpdateEntry(NPC_SCOUT_ORGARR);
|
||||||
prisonerGUID[2] = creature->GetGUID();
|
PrisonerGUID[2] = creature->GetGUID();
|
||||||
|
break;
|
||||||
|
case NPC_RANDY_WHIZZLESPROCKET:
|
||||||
|
if (TeamIdInInstance == TEAM_HORDE)
|
||||||
|
creature->UpdateEntry(NPC_DRISELLA);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
InstanceScript::OnCreatureCreate(creature);
|
InstanceScript::OnCreatureCreate(creature);
|
||||||
@@ -126,9 +131,9 @@ public:
|
|||||||
case DATA_PRISONER_1:
|
case DATA_PRISONER_1:
|
||||||
case DATA_PRISONER_2:
|
case DATA_PRISONER_2:
|
||||||
case DATA_PRISONER_3:
|
case DATA_PRISONER_3:
|
||||||
return prisonerGUID[data - DATA_PRISONER_1];
|
return PrisonerGUID[data - DATA_PRISONER_1];
|
||||||
case DATA_EXECUTIONER:
|
case DATA_EXECUTIONER:
|
||||||
return executionerGUID;
|
return ExecutionerGUID;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
@@ -144,22 +149,22 @@ public:
|
|||||||
{
|
{
|
||||||
DoRemoveAurasDueToSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_1);
|
DoRemoveAurasDueToSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_1);
|
||||||
DoCastSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_2);
|
DoCastSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_2);
|
||||||
if (Creature* prisoner = instance->GetCreature(prisonerGUID[0]))
|
if (Creature* prisoner = instance->GetCreature(PrisonerGUID[0]))
|
||||||
Unit::Kill(prisoner, prisoner);
|
Unit::Kill(prisoner, prisoner);
|
||||||
if (Creature* executioner = instance->GetCreature(executionerGUID))
|
if (Creature* executioner = instance->GetCreature(ExecutionerGUID))
|
||||||
executioner->RemoveLootMode(2);
|
executioner->RemoveLootMode(2);
|
||||||
}
|
}
|
||||||
else if ((RescueTimer / IN_MILLISECONDS) == 15 * MINUTE)
|
else if ((RescueTimer / IN_MILLISECONDS) == 15 * MINUTE)
|
||||||
{
|
{
|
||||||
DoRemoveAurasDueToSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_2);
|
DoRemoveAurasDueToSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_2);
|
||||||
DoCastSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_3);
|
DoCastSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_3);
|
||||||
if (Creature* prisoner = instance->GetCreature(prisonerGUID[1]))
|
if (Creature* prisoner = instance->GetCreature(PrisonerGUID[1]))
|
||||||
Unit::Kill(prisoner, prisoner);
|
Unit::Kill(prisoner, prisoner);
|
||||||
}
|
}
|
||||||
else if ((RescueTimer / IN_MILLISECONDS) == 0)
|
else if ((RescueTimer / IN_MILLISECONDS) == 0)
|
||||||
{
|
{
|
||||||
DoRemoveAurasDueToSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_3);
|
DoRemoveAurasDueToSpellOnPlayers(SPELL_KARGATHS_EXECUTIONER_3);
|
||||||
if (Creature* prisoner = instance->GetCreature(prisonerGUID[2]))
|
if (Creature* prisoner = instance->GetCreature(PrisonerGUID[2]))
|
||||||
Unit::Kill(prisoner, prisoner);
|
Unit::Kill(prisoner, prisoner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -176,8 +181,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ObjectGuid executionerGUID;
|
ObjectGuid ExecutionerGUID;
|
||||||
ObjectGuid prisonerGUID[3];
|
ObjectGuid PrisonerGUID[3];
|
||||||
uint32 RescueTimer;
|
uint32 RescueTimer;
|
||||||
TeamId TeamIdInInstance;
|
TeamId TeamIdInInstance;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -66,6 +66,11 @@ enum CreatureIds
|
|||||||
NPC_KORAG_PROUDMANE = 17295,
|
NPC_KORAG_PROUDMANE = 17295,
|
||||||
NPC_CAPTAIN_BONESHATTER = 17296,
|
NPC_CAPTAIN_BONESHATTER = 17296,
|
||||||
NPC_SCOUT_ORGARR = 17297,
|
NPC_SCOUT_ORGARR = 17297,
|
||||||
|
|
||||||
|
//Drisella
|
||||||
|
NPC_DRISELLA = 17294,
|
||||||
|
// Randy Whizzlesprocket
|
||||||
|
NPC_RANDY_WHIZZLESPROCKET = 17288,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GameobjectIds
|
enum GameobjectIds
|
||||||
|
|||||||
Reference in New Issue
Block a user