Compare commits

..

3 Commits

Author SHA1 Message Date
Grimfeather
c6d3f5277a Fix pre quest for Chaos and Destruction (#850) 2025-11-13 08:34:32 +01:00
Grimfeather
cbf82d1f7c Update README.md 2025-11-13 05:21:44 +01:00
Grimfeather
30139e0c88 Pvp officer room doors (#849) 2025-11-13 05:09:53 +01:00
7 changed files with 111 additions and 87 deletions

View File

@@ -44,7 +44,8 @@ This is handled by the client, so I have created an addon that will restore this
Special thanks to all contributors of the following projects who made this module possible:
* AzerothCore and TrinityCore, along with ancestors Mangos, etc.
* AzerothCore Progression Module for Vanilla content and scripts
* AzerothCore War Effort Module
* AzerothCore mod-war-effort
* AzerothCore mod-pvp-titles
* Wrath of the Vanilla Module for more Vanilla world adjustments
* Vmangos for Vanilla game and patch progression data
* Sogladev for many Naxx 40 scripts and data

View File

@@ -66,7 +66,7 @@ INSERT INTO `quest_template` (`ID`, `QuestType`, `QuestLevel`, `MinLevel`, `Ques
`TimeAllowed`, `AllowableRaces`, `LogTitle`, `LogDescription`, `QuestDescription`, `AreaDescription`, `QuestCompletionLog`, `RequiredNpcOrGo1`, `RequiredNpcOrGo2`, `RequiredNpcOrGo3`, `RequiredNpcOrGo4`, `RequiredNpcOrGoCount1`, `RequiredNpcOrGoCount2`, `RequiredNpcOrGoCount3`, `RequiredNpcOrGoCount4`, `RequiredItemId1`, `RequiredItemId2`, `RequiredItemId3`, `RequiredItemId4`, `RequiredItemId5`, `RequiredItemId6`,
`RequiredItemCount1`, `RequiredItemCount2`, `RequiredItemCount3`, `RequiredItemCount4`, `RequiredItemCount5`, `RequiredItemCount6`, `Unknown0`, `ObjectiveText1`, `ObjectiveText2`, `ObjectiveText3`, `ObjectiveText4`, `VerifiedBuild`) VALUES
(108743, 0, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 108744, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Simply Bang a Gong!', '', '', NULL, 'Return to The Scarab Gong in Silithus.', 0, 0, 0, 0, 0, 0, 0, 0, 9240, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '', '', '', '', 12340),
(108743, 0, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Simply Bang a Gong!', '', '', NULL, 'Return to The Scarab Gong in Silithus.', 0, 0, 0, 0, 0, 0, 0, 0, 9240, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '', '', '', '', 12340),
(108744, 2, 60, 60, 1377, 82, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 910, 7, 0, 609, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172800, 0, 'Chaos and Destruction', 'Kill the Colossus of Ashi, Regal and Zora.', '', '', 'Return to Jonathan the Revelator at the Scarab Gong.', 15740, 15741, 15742, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', '', NULL);
UPDATE `quest_template` SET `RewardNextQuest` = 108744 WHERE `ID` = 8743;
@@ -85,20 +85,28 @@ INSERT INTO `quest_offer_reward` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`,
DELETE FROM `quest_template_addon` WHERE `ID` IN (8743, 108743, 108744);
INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `RewardMailTemplateID`, `RewardMailDelay`,
`RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`) VALUES
(8743, 0, 0, 0, 8742, 108744, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0),
(108743, 0, 0, 0, 0, 108744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(108744, 0, 0, 0, 108743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
(8743, 0, 0, 0, 8742, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0),
(108743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(108744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `ConditionTypeOrReference` = 8 AND `SourceEntry` IN (108744);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`,
`ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
--
(19, 0, 108744, 0, 0, 8, 0, 8743, 0, 0, 0, 0, 0, '', 'Quest: Chaos and Destruction is only available after the player completes either 8743 or 108743'),
(19, 0, 108744, 0, 1, 8, 0, 108743, 0, 0, 0, 0, 0, '', 'Quest: Chaos and Destruction is only available after the player completes either 8743 or 108743');
UPDATE `quest_template` SET `QuestDescription` = '' WHERE `ID` = 108743;
-- Connect new 'Bang a Gong!' quest to the Scarab Gong in Silithus
DELETE FROM `gameobject_queststarter` WHERE `id` = 180717;
INSERT INTO `gameobject_queststarter` (`id`, `quest`) VALUES (180717, 8743), (180717, 108743), (180717, 108744);
DELETE FROM `gameobject_queststarter` WHERE `id` = 180717 AND `quest` IN (8743, 108743, 108744);
INSERT INTO `gameobject_queststarter` (`id`, `quest`) VALUES (180717, 8743), (180717, 108743);
DELETE FROM `gameobject_questender` WHERE `id` = 180717;
DELETE FROM `gameobject_questender` WHERE `id` = 180717 AND `quest` IN (8743, 108743);
INSERT INTO `gameobject_questender` (`id`, `quest`) VALUES (180717, 8743), (180717, 108743);
DELETE FROM `creature_questender` WHERE `id` = 15693;
DELETE FROM `creature_queststarter` WHERE `id` = 15693 AND `quest` = 108744;
INSERT INTO `creature_queststarter` (`id`, `quest`) VALUES (15693, 108744);
DELETE FROM `creature_questender` WHERE `id` = 15693 AND `quest` IN (8745, 108744);
INSERT INTO `creature_questender` (`id`, `quest`) VALUES (15693, 8745), (15693, 108744);

View File

@@ -197,7 +197,7 @@ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN (
/* Hide Rogg and his anvil + forge at the entrance of Orgrimmar until WotLK */
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `entry` = 37072;
UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN (347, 387);
UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN (347, 387); -- this needs a fix still, Rogg is currently aggressive while hidden.
/* Landro for TCG promotion in Booty Bay */
UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_aq' WHERE `entry` = 17249;
@@ -205,6 +205,3 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_aq' WHERE `entry` = 17249
/* Hide barber in Kalimdor/Eastern Kingdom/Outland until WotLK - disabled by default, because most players will expect barbers to be there */
/* UPDATE `creature` SET `ScriptName` = 'npc_ipp_wotlk' WHERE `map` IN (0, 1, 530) AND `id1` IN (29139, 29141, 29142, 29143, 29145);
UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `map` IN (0, 1, 530) AND `id` IN (190683, 190684, 190697, 190698, 190699, 190704, 190710, 190711, 190712, 191028, 191029, 191030); */
/* Hide training dummy in Kalimdor/Eastern Kingdom/Outland until WotLK - disabled by default, because most players will expect dummies to be there */
/* UPDATE `creature` SET `ScriptName` = 'npc_training_dummy_ipp_wotlk' WHERE `map` IN (0, 1, 530) AND `id1` IN (31144, 31146, 32666, 32667); */

View File

@@ -930,3 +930,15 @@ DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 23 AND `SourceGroup`
-- Update Vanilla ExtendedCost
UPDATE `npc_vendor` SET `ExtendedCost` = 0 WHERE `entry` IN (12777, 12792, 12799, 12805, 26394, 26396, 112781, 112783, 112785, 112793, 112794, 112795, 112796);
-- officer room doors
DELETE FROM `gameobject` WHERE `guid` IN (626262, 631660, 631661);
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`,
`rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES
--
(626262, 176576, 0, 1519, 1519, 1, 1, -8765.82, 403.164, 104.162, -0.898844, 0, 0, -0.434445, 0.900698, 900, 100, 1, 'gobject_ipp_pvp_closed', 0, NULL),
(631660, 176562, 1, 0, 0, 1, 1, 1634.87, -4247.86, 55.8397, 4.19752, 0, 0, -0.863835, 0.503774, 180, 0, 1, 'gobject_ipp_pvp_closed', NULL, NULL),
(631661, 176562, 1, 0, 0, 1, 1, 1634.87, -4247.86, 55.8397, 4.19752, 0, 0, -0.863835, 0.503774, 180, 0, 0, 'gobject_ipp_pvp_open', NULL, NULL);
-- I can't figure out why gate 31660 is not visible in Orgrimmar. something is blocking guid 31660 specifically. until someone figures it out, I created a new door. (631661)
UPDATE `gameobject` SET `state` = 0, `ScriptName` = 'gobject_ipp_pvp_open' WHERE `guid` = 26262;

View File

@@ -71,8 +71,9 @@ enum ProgressionQuestIDs
QUEST_WINTERFALL = 6241,
QUEST_THE_ANCIENT_LEAF = 7632,
MIGHT_OF_KALIMDOR = 8742,
BANG_A_GONG = 8743,
INTO_THE_BREACH = 10259,
BANG_A_GONG = 108743,
SIMPLY_BANG_A_GONG = 108743,
CHAOS_AND_DESTRUCTION = 108744
};

View File

@@ -236,6 +236,78 @@ public:
}
};
class gobject_ipp_pvp_closed : public GameObjectScript
{
public:
gobject_ipp_pvp_closed() : GameObjectScript("gobject_ipp_pvp_closed") { }
struct gobject_ipp_pvp_closedAI: GameObjectAI
{
explicit gobject_ipp_pvp_closedAI(GameObject* object) : GameObjectAI(object) { };
bool CanBeSeen(Player const* player) override
{
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
uint32 PVP_RANK5_QUEST = 66105;
if (player->IsGameMaster() || !sIndividualProgression->enabled || sIndividualProgression->isExcludedFromProgression(target))
{
return false;
}
if (target->GetQuestStatus(PVP_RANK5_QUEST) == QUEST_STATUS_REWARDED)
{
return false;
}
else
{
return true;
}
}
};
GameObjectAI* GetAI(GameObject* object) const override
{
return new gobject_ipp_pvp_closedAI(object);
}
};
class gobject_ipp_pvp_open : public GameObjectScript
{
public:
gobject_ipp_pvp_open() : GameObjectScript("gobject_ipp_pvp_open") { }
struct gobject_ipp_pvp_openAI: GameObjectAI
{
explicit gobject_ipp_pvp_openAI(GameObject* object) : GameObjectAI(object) { };
bool CanBeSeen(Player const* player) override
{
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
uint32 PVP_RANK5_QUEST = 66105;
if (player->IsGameMaster() || !sIndividualProgression->enabled || sIndividualProgression->isExcludedFromProgression(target))
{
return true;
}
if (target->GetQuestStatus(PVP_RANK5_QUEST) == QUEST_STATUS_REWARDED)
{
return true;
}
else
{
return false;
}
}
};
GameObjectAI* GetAI(GameObject* object) const override
{
return new gobject_ipp_pvp_openAI(object);
}
};
class npc_ipp_preaq : public CreatureScript
{
public:
@@ -675,74 +747,6 @@ public:
}
};
class npc_training_dummy_ipp_wotlk : public CreatureScript
{
public:
npc_training_dummy_ipp_wotlk() : CreatureScript("npc_training_dummy_ipp_wotlk") { }
struct npc_training_dummy_ipp_wotlkAI : ScriptedAI
{
/*explicit*/ npc_training_dummy_ipp_wotlkAI(Creature* creature) : ScriptedAI(creature)
{
me->SetCombatMovement(false);
me->ApplySpellImmune(0, 0, 98, true); // ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true)
}
uint32 resetTimer;
void Reset() override
{
me->CastSpell(me, 61204, true); // CastSpell(me, SPELL_STUN_PERMANENT, true)
resetTimer = 5000;
}
void EnterEvadeMode(EvadeReason why) override
{
if (!_EnterEvadeMode(why))
return;
Reset();
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
resetTimer = 5000;
damage = 0;
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
if (resetTimer <= diff)
{
EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
resetTimer = 5000;
}
else
resetTimer -= diff;
}
void MoveInLineOfSight(Unit* /*who*/) override { }
bool CanBeSeen(Player const* player) override
{
if (player->IsGameMaster() || !sIndividualProgression->enabled)
{
return true;
}
Player* target = ObjectAccessor::FindConnectedPlayer(player->GetGUID());
return sIndividualProgression->hasPassedProgression(target, PROGRESSION_TBC_TIER_5);
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_training_dummy_ipp_wotlkAI(creature);
}
};
// Add all scripts in one
void AddSC_mod_individual_progression_awareness()
{
@@ -754,6 +758,8 @@ void AddSC_mod_individual_progression_awareness()
new gobject_ipp_pre_tbc(); // Stormwind pvp room
new gobject_ipp_tbc();
new gobject_ipp_wotlk();
new gobject_ipp_pvp_closed(); // pvp officer doors
new gobject_ipp_pvp_open(); // pvp officer doors
new npc_ipp_preaq(); // Cenarion Hold NPCs
new npc_ipp_we(); // War Effort NPCs in cities
new npc_ipp_aq();
@@ -770,5 +776,4 @@ void AddSC_mod_individual_progression_awareness()
new npc_ipp_wotlk_totc();
new npc_ipp_wotlk_icc();
new npc_ipp_ds2();
// new npc_training_dummy_ipp_wotlk();
}

View File

@@ -279,14 +279,14 @@ public:
}
switch (quest->GetQuestId())
{
case MIGHT_OF_KALIMDOR:
case BANG_A_GONG:
if (!sIndividualProgression->disableDefaultProgression)
{
sIndividualProgression->UpdateProgressionState(player, PROGRESSION_PRE_AQ);
sIndividualProgression->UpdateProgressionQuests(player);
}
break;
case BANG_A_GONG:
case SIMPLY_BANG_A_GONG:
if (!sIndividualProgression->disableDefaultProgression)
{
sIndividualProgression->UpdateProgressionState(player, PROGRESSION_PRE_AQ);