From fb16fa4627d48c81dbac7a0e9cdde5b532585212 Mon Sep 17 00:00:00 2001 From: valsan-azerty-boi <52854501+valsan-azerty-boi@users.noreply.github.com> Date: Sun, 15 Jun 2025 21:05:06 +0200 Subject: [PATCH 1/2] dummies phasing + some adjustments --- sql/world/base/dungeon_onyxia.sql | 7 ++ sql/world/base/tbc_creatures.sql | 10 ++- sql/world/base/zone_dustwallow_marsh.sql | 6 ++ sql/world/base/zz_optional_aq_quest_nerf.sql | 4 +- sql/world/base/zz_optional_attunements.sql | 3 + .../base/zz_optional_vanilla_phasing.sql | 6 ++ src/IndividualProgressionAwarenessScripts.cpp | 71 ++++++++++++++++++- 7 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 sql/world/base/zone_dustwallow_marsh.sql diff --git a/sql/world/base/dungeon_onyxia.sql b/sql/world/base/dungeon_onyxia.sql index 9d93ff6..a870ec4 100644 --- a/sql/world/base/dungeon_onyxia.sql +++ b/sql/world/base/dungeon_onyxia.sql @@ -1052,3 +1052,10 @@ INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES (2848, 'onyxia_entrance_trigger'); UPDATE `gameobject` SET `spawnMask` = 7 WHERE `map` = 249; + +/* Classic onyxia head quest locale fix for non EN langs */ +/* Was set as Garrosh, correct warchief is Thrall */ +UPDATE `quest_template_locale` SET `Objectives` = 'Bringt Onyxias Kopf zu Thrall in Orgrimmar.' WHERE `ID` = 7490 AND `locale` = 'deDE'; +UPDATE `quest_template_locale` SET `Objectives` = 'LLeva la cabeza de Onyxia a Thrall a Orgrimmar.' WHERE `ID` = 7490 AND `locale` = 'esES'; +UPDATE `quest_template_locale` SET `Objectives` = 'LLeva la cabeza de Onyxia a Thrall a Orgrimmar.' WHERE `ID` = 7490 AND `locale` = 'esMX'; +UPDATE `quest_template_locale` SET `Objectives` = 'Apportez la tête de Onyxia à Thrall à Orgrimmar.' WHERE `ID` = 7490 AND `locale` = 'frFR'; diff --git a/sql/world/base/tbc_creatures.sql b/sql/world/base/tbc_creatures.sql index aa532bd..9221c41 100644 --- a/sql/world/base/tbc_creatures.sql +++ b/sql/world/base/tbc_creatures.sql @@ -12969,7 +12969,15 @@ UPDATE `creature_template` SET `ArmorModifier` = 0.978999 WHERE `entry`=23393; UPDATE `creature_template` SET `speed_walk` = 2.0, `speed_run` = 1.71429, `DamageModifier` = 32.0, `HealthModifier` = 90.0 WHERE `entry`=23394; /* Krixel Pinchwhistle */ -UPDATE `creature_template` SET `subname` = 'Arena Vendor', `speed_walk` = 1.1 WHERE `entry`=23396; +UPDATE `creature_template` SET `subname` = 'Arena Vendor', `speed_walk` = 1.1 WHERE `entry` = 23396; +UPDATE `creature_template_locale` SET Title = 'Arenaverkäufer' WHERE `entry` = 23396 AND `locale` = 'deDE'; +UPDATE `creature_template_locale` SET Title = 'Vendedor de arena' WHERE `entry` = 23396 AND `locale` = 'esES'; +UPDATE `creature_template_locale` SET Title = 'Vendedor de arena' WHERE `entry` = 23396 AND `locale` = 'esMX'; +UPDATE `creature_template_locale` SET Title = 'Vendeur de l''arène' WHERE `entry` = 23396 AND `locale` = 'frFR'; +UPDATE `creature_template_locale` SET Title = '2시즌 투기장 상인' WHERE `entry` = 23396 AND `locale` = 'koKR'; +UPDATE `creature_template_locale` SET Title = 'Продавец экипировки арены' WHERE `entry` = 23396 AND `locale` = 'ruRU'; +UPDATE `creature_template_locale` SET Title = '竞技场商人' WHERE `entry` = 23396 AND `locale` = 'zhCN'; +UPDATE `creature_template_locale` SET Title = '競技場商人' WHERE `entry` = 23396 AND `locale` = 'zhTW'; /* Illidari Blood Lord */ UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857, `DamageModifier` = 29.0, `HealthModifier` = 40.0 WHERE `entry`=23397; diff --git a/sql/world/base/zone_dustwallow_marsh.sql b/sql/world/base/zone_dustwallow_marsh.sql new file mode 100644 index 0000000..7fe615f --- /dev/null +++ b/sql/world/base/zone_dustwallow_marsh.sql @@ -0,0 +1,6 @@ +SET @CGUID := 670000; + +/* Old Vanilla Varian Wrynn Npc in Alcaz during Vanilla phases */ +DELETE FROM `creature` WHERE `id1` = 11699 AND `map` = 1; +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`, `Comment`) VALUES +(@CGUID+1, 11699, 0, 0, 1, 0, 0, 1, 1, 1, -2744.03, -4994.2, 8.26564, 0.0392587, 300, 0, 0, 4121, 0, 0, 0, 0, 0, 'npc_ipp_pre_naxx40', 0, 'Varian Wrynn in Alcaz (Vanilla)'); diff --git a/sql/world/base/zz_optional_aq_quest_nerf.sql b/sql/world/base/zz_optional_aq_quest_nerf.sql index 2699db8..dd4bda3 100644 --- a/sql/world/base/zz_optional_aq_quest_nerf.sql +++ b/sql/world/base/zz_optional_aq_quest_nerf.sql @@ -4,8 +4,8 @@ Increases the Rep for The Hand of the Righteous by 40 times, so only about 5 turn-ins are necessary instead of 200. Feel free to adjust to taste - divide RewardFactionOverride1 by 100 to get the amount of rep that would be awarded Sql edit example: 5 turn-ins = 800000 rep, 1 turn-in = 4000000 rep */ -UPDATE quest_template SET RewardFactionOverride1=800000, RewardFactionOverride2=0,RewardFactionOverride3=0,RewardFactionOverride4=0,RewardFactionOverride5=0 WHERE ID=8301; -UPDATE quest_template SET RewardFactionOverride1=800000, RewardFactionOverride2=0,RewardFactionOverride3=0,RewardFactionOverride4=0,RewardFactionOverride5=0 WHERE ID=8302; +UPDATE `quest_template` SET `RewardFactionOverride1` = 800000, `RewardFactionOverride2` = 0, `RewardFactionOverride3` = 0, `RewardFactionOverride4` = 0, `RewardFactionOverride5` = 0 WHERE `ID` = 8301; +UPDATE `quest_template` SET `RewardFactionOverride1` = 800000, `RewardFactionOverride2` = 0, `RewardFactionOverride3` = 0, `RewardFactionOverride4` = 0, `RewardFactionOverride5` = 0 WHERE `ID` = 8302; /* Revert drop rate for Nightmare_corruption to nerfed WotLK drop rate */ UPDATE `creature_loot_template` SET `Chance` = 100 WHERE `Item` = 21146; diff --git a/sql/world/base/zz_optional_attunements.sql b/sql/world/base/zz_optional_attunements.sql index a02ef94..5abc618 100644 --- a/sql/world/base/zz_optional_attunements.sql +++ b/sql/world/base/zz_optional_attunements.sql @@ -4,3 +4,6 @@ DELETE FROM `dungeon_access_requirements` WHERE `dungeon_access_id` IN (20, 26); INSERT INTO `dungeon_access_requirements` (`dungeon_access_id`, `requirement_type`, `requirement_id`, `requirement_note`, `faction`, `priority`, `leader_only`, `comment`) VALUES (20, 1, 8182, 'You must complete the quest "The Hand of Rastakhan" and be level 60 before entering Zul\'Gurub.', 2, NULL, 0, NULL), (26, 1, 7761, 'You must complete the quest "Blackhand\'s Command" and be level 60 before entering Blackwing Lair.', 2, NULL, 0, NULL); + +/* Optional attunement change intended when playing with bots (only the leader needs attunement) */ +-- UPDATE `dungeon_access_requirements` SET `leader_only` = 1; diff --git a/sql/world/base/zz_optional_vanilla_phasing.sql b/sql/world/base/zz_optional_vanilla_phasing.sql index 5e97e9c..9da3263 100644 --- a/sql/world/base/zz_optional_vanilla_phasing.sql +++ b/sql/world/base/zz_optional_vanilla_phasing.sql @@ -10,6 +10,8 @@ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_preaq' WHERE `map` = 0 AND ` /* 1.9 - AQ */ /* AQ meeting stone phased until pre-aq phase (at least) */ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_preaq' WHERE `map` = 1 AND `id` IN (185322); +/* Landro for TCG promotion in Booty Bay */ +UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_aq' WHERE `entry` = 17249; /* 1.11 - Naxxramas */ /* Naxx Vanilla meeting stone phased until appropriate phase */ @@ -40,6 +42,7 @@ UPDATE `creature_template` SET `ScriptName` = 'npc_ipp_tbc' WHERE `entry` IN ( 17218, -- Huraan, Southshore 17223, -- Ambassador Rualeth, Aerie Peak 17238, -- Anchorite Truuen, Western Plaguelands +21045, -- Landro Hired Bodyguard, Booty Bay 22931, -- Gorrim, Emerald Sanctuary, Flight Master 23131, -- Blood Knight Honor Guard, Orgrimmar 24366, -- Nizzle, Rebel Camp, Flight Master @@ -141,3 +144,6 @@ UPDATE `gameobject` SET `ScriptName` = 'gobject_ipp_wotlk' WHERE `guid` IN (347, /* 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); */ diff --git a/src/IndividualProgressionAwarenessScripts.cpp b/src/IndividualProgressionAwarenessScripts.cpp index 0358b28..e385d02 100644 --- a/src/IndividualProgressionAwarenessScripts.cpp +++ b/src/IndividualProgressionAwarenessScripts.cpp @@ -1,5 +1,5 @@ #include "IndividualProgression.h" - +#include "WorldState.h" class gobject_ipp_preaq : public GameObjectScript { @@ -675,6 +675,74 @@ 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() { @@ -702,4 +770,5 @@ 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(); } From 35935a2f39dda7954218dcdccdfe8c4b590aa79d Mon Sep 17 00:00:00 2001 From: Grimfeather <88028633+Grimfeather@users.noreply.github.com> Date: Mon, 16 Jun 2025 06:19:19 +0200 Subject: [PATCH 2/2] Update zone_dustwallow_marsh.sql --- sql/world/base/zone_dustwallow_marsh.sql | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sql/world/base/zone_dustwallow_marsh.sql b/sql/world/base/zone_dustwallow_marsh.sql index 7fe615f..31d0228 100644 --- a/sql/world/base/zone_dustwallow_marsh.sql +++ b/sql/world/base/zone_dustwallow_marsh.sql @@ -1,6 +1,4 @@ -SET @CGUID := 670000; - /* Old Vanilla Varian Wrynn Npc in Alcaz during Vanilla phases */ DELETE FROM `creature` WHERE `id1` = 11699 AND `map` = 1; 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`, `Comment`) VALUES -(@CGUID+1, 11699, 0, 0, 1, 0, 0, 1, 1, 1, -2744.03, -4994.2, 8.26564, 0.0392587, 300, 0, 0, 4121, 0, 0, 0, 0, 0, 'npc_ipp_pre_naxx40', 0, 'Varian Wrynn in Alcaz (Vanilla)'); +(611699, 11699, 0, 0, 1, 0, 0, 1, 1, 1, -2744.03, -4994.2, 8.26564, 0.0392587, 300, 0, 0, 4121, 0, 0, 0, 0, 0, 'npc_ipp_pre_naxx40', 0, 'Varian Wrynn in Alcaz (Vanilla)');