From 9feb2308dfcd268c2a00ac53d836fc9b36b8ca16 Mon Sep 17 00:00:00 2001 From: Ovalord <1Don7H4v3@m41L.com> Date: Thu, 18 Jan 2018 14:59:10 +0100 Subject: [PATCH 001/178] Core/Reputation: make sure that we check all reputation fields for a valid repuation value before returning 0. Fixes some issues with ally-auras that require cataclysm repuation states --- src/server/game/Reputation/ReputationMgr.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index 4eec487662..a50f4fdf5d 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -93,7 +93,8 @@ int32 ReputationMgr::GetBaseReputation(FactionEntry const* factionEntry) const (factionEntry->BaseRepRaceMask[i] == 0 && factionEntry->BaseRepClassMask[i] != 0)) && (factionEntry->BaseRepClassMask[i] & classMask || - factionEntry->BaseRepClassMask[i] == 0)) + factionEntry->BaseRepClassMask[i] == 0 && + factionEntry->BaseRepValue[i] > 0)) return factionEntry->BaseRepValue[i]; } From 06e50dfb38f3f9aceeb5110833094b7f61ff7fe4 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 20 Jan 2018 10:09:16 +0100 Subject: [PATCH 002/178] DB/Quest: add Burning Blade Spellscroll loot By offl --- sql/updates/world/4.3.4/2018_01_20_00_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_01_20_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_20_00_world.sql b/sql/updates/world/4.3.4/2018_01_20_00_world.sql new file mode 100644 index 0000000000..743752c0f6 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_20_00_world.sql @@ -0,0 +1,4 @@ +-- Quest: The Burning Blade +DELETE FROM `creature_loot_template` WHERE `Item`= 52564; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Chance`,`QuestRequired`,`MinCount`,`MaxCount`) VALUES +(3196,52564,86,1,1,1),(3199,52564,64,1,1,1),(3195,52564,43,1,1,1); From eca82e2b65988cec7b317587316c7ec7ba6a98f6 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 20 Jan 2018 15:25:06 +0000 Subject: [PATCH 003/178] Update custom_2018_01_15_01_world.sql --- .../{custom_2018_01_15_01_world.sql => 2018_01_15_01_world.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sql/updates/world/4.3.4/{custom_2018_01_15_01_world.sql => 2018_01_15_01_world.sql} (100%) diff --git a/sql/updates/world/4.3.4/custom_2018_01_15_01_world.sql b/sql/updates/world/4.3.4/2018_01_15_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/custom_2018_01_15_01_world.sql rename to sql/updates/world/4.3.4/2018_01_15_01_world.sql From e9d10676c53c4d490650d2e34a47961e4bf42d67 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 20 Jan 2018 16:34:41 +0100 Subject: [PATCH 004/178] DB/Misc: Some Westfall Fixes By danaton --- .../world/4.3.4/2018_01_20_01_world.sql | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_01_20_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_20_01_world.sql b/sql/updates/world/4.3.4/2018_01_20_01_world.sql new file mode 100644 index 0000000000..bc1536de57 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_20_01_world.sql @@ -0,0 +1,63 @@ +/* creature */ +SET @CGUID := 251569; -- Set necessary +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+7; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(@CGUID+0,42560,0,40,109,1,1,169,0,0,0,-9855.52,1277.67,40.8733,5.64321,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+1,42403,0,40,109,1,1,169,0,0,0,-9854.61,1277.01,40.8672,5.54896,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+2,42386,0,40,109,1,1,169,0,32826,0,-9859.24,1279.61,41.0337,5.58039,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+3,42384,0,40,109,1,1,169,0,32819,0,-9861.03,1276.97,40.7707,0.110977,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+4,42384,0,40,109,1,1,169,0,32818,0,-9851.09,1273.94,41.0974,2.4279,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+5,42559,0,40,109,1,1,169,0,0,0,-9852.11,1274.83,41.0164,5.54593,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+6,42559,0,40,109,1,1,169,0,0,0,-9859.83,1276.11,40.7818,2.44651,120,0,0,0,0,0,0,0,0,'',18019), +(@CGUID+7,42558,0,40,109,1,1,169,0,0,0,-9854.99,1275.83,40.9068,1.43605,120,0,0,2865,0,0,0,0,0,'',18019); + +UPDATE `creature` SET `spawndist` = 3 , `MovementType` = 1 WHERE `guid` = 276241; +UPDATE `creature` SET `spawndist` = 3 , `MovementType` = 1 WHERE `guid` = 276239; +UPDATE `creature` SET `spawndist` = 3 , `MovementType` = 1 WHERE `guid` = 276262; +UPDATE `creature` SET `spawndist` = 3 , `MovementType` = 1 WHERE `guid` = 276256; + +/* creature addon */ +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+7; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+0,0,0,65536,0,0,0,0,0,29266), +(@CGUID+2,0,0,0,0,430,0,0,0,NULL), +(@CGUID+3,0,0,0,0,430,0,0,0,NULL), +(@CGUID+4,0,0,0,0,430,0,0,0,NULL), +(@CGUID+7,0,0,8,0,0,0,0,0,NULL); + +DELETE FROM `creature_addon` WHERE `guid` IN (349939, 349940, 349978, 349979, 349980, 349981, 349982, 349983); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(349939,0,0,0,1,333,0,0,0,NULL), +(349940,0,0,0,1,333,0,0,0,NULL), +(349978,0,0,0,1,333,0,0,0,NULL), +(349979,0,0,0,1,333,0,0,0,NULL), +(349980,0,0,0,1,333,0,0,0,NULL), +(349981,0,0,0,1,333,0,0,0,NULL), +(349982,0,0,0,1,333,0,0,0,NULL), +(349983,0,0,0,1,333,0,0,0,NULL); + +/* quest template addon */ +DELETE FROM `quest_template_addon` WHERE `ID` IN (26209, 26213, 26214, 26215, 26229, 26230, 26241, 26270, 26237, 26286, 26289, 26292, 26287, 26236, 26266); +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`) VALUES +(26209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(26215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(26213,0,0,0,26209,26215,-26213,0,0,0,0,0,0,0,0,0,0), +(26214,0,0,0,26209,26215,-26213,0,0,0,0,0,0,0,0,0,0), +(26229,0,0,0,26215,0,0,0,0,0,0,0,0,0,0,0,0), +(26230,0,0,0,26215,0,0,0,0,0,0,0,0,0,0,0,0), +(26241,0,0,0,26236,0,0,0,0,0,0,0,0,0,0,0,0), +(26270,0,0,0,26241,0,0,0,0,0,0,0,0,0,0,0,0), +(26237,0,0,0,26236,0,0,0,0,0,0,0,0,0,0,0,0), +(26286,0,0,0,26266,0,0,0,0,0,0,0,0,0,0,0,0), +(26289,0,0,0,26286,0,0,0,0,0,0,0,0,0,0,0,0), +(26292,0,0,0,26291,0,0,0,0,0,0,0,0,0,0,0,0), +(26287,0,0,0,26266,0,0,0,0,0,0,0,0,0,0,0,0), +(26236,0,0,0,26232,0,0,0,0,0,0,0,0,0,0,0,0), +(26266,0,0,0,26270,0,0,0,0,0,0,0,0,0,0,1,0); + +/* creature loot template */ +DELETE FROM `creature_loot_template` WHERE `Entry`=114 AND `Item`=57935; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(114,57935,0,8.75,0,1,0,1,1,NULL); +UPDATE `creature_loot_template` SET `QuestRequired` = 1 WHERE `Entry` = 42677 AND `Item` = 58118; + From 079f2002acde5df4d2864ab7ee243b8b97e837fc Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 21 Jan 2018 12:34:54 +0100 Subject: [PATCH 005/178] Core/SAI: Extended SMART_TARGET_VEHICLE_PASSENGER to allow specifying seat mask instead of single seat index (can now target all passengers) --- sql/updates/world/3.3.5/2018_01_16_00_world.sql | 3 +++ src/server/game/AI/SmartScripts/SmartScript.cpp | 10 +++++----- src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 +- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 sql/updates/world/3.3.5/2018_01_16_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_16_00_world.sql b/sql/updates/world/3.3.5/2018_01_16_00_world.sql new file mode 100644 index 0000000000..81d9eb5ec7 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_16_00_world.sql @@ -0,0 +1,3 @@ +-- +UPDATE `smart_scripts` SET `target_param1`=(1 << `target_param1`) WHERE `target_type`=29; +-- diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 866efa6c96..412fb638af 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3135,13 +3135,13 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder const& e, Unit* invoker /* } break; } - case SMART_TARGET_VEHICLE_ACCESSORY: + case SMART_TARGET_VEHICLE_PASSENGER: { if (me && me->IsVehicle()) - { - if (Unit* target = me->GetVehicleKit()->GetPassenger(e.target.vehicle.seat)) - l->push_back(target); - } + for (auto seatItr = me->GetVehicleKit()->Seats.begin(); seatItr != me->GetVehicleKit()->Seats.end(); ++seatItr) + if (!e.target.vehicle.seatMask || (e.target.vehicle.seatMask & (1 << seatItr->first))) + if (Unit* u = ObjectAccessor::GetUnit(*me, seatItr->second.Passenger.Guid)) + l->push_back(u); break; } case SMART_TARGET_POSITION: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index f4da44901f..988c12403f 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -454,7 +454,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) case SMART_TARGET_STORED: case SMART_TARGET_LOOT_RECIPIENTS: case SMART_TARGET_FARTHEST: - case SMART_TARGET_VEHICLE_ACCESSORY: + case SMART_TARGET_VEHICLE_PASSENGER: break; default: TC_LOG_ERROR("sql.sql", "SmartAIMgr: Not handled target_type(%u), Entry %d SourceType %u Event %u Action %u, skipped.", e.GetTargetType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType()); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 9778f824f6..756449a72a 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1217,7 +1217,7 @@ enum SMARTAI_TARGETS SMART_TARGET_CLOSEST_FRIENDLY = 26, // maxDist, playerOnly SMART_TARGET_LOOT_RECIPIENTS = 27, // all players that have tagged this creature (for kill credit) SMART_TARGET_FARTHEST = 28, // maxDist, playerOnly, isInLos - SMART_TARGET_VEHICLE_ACCESSORY = 29, // seat number (vehicle can target it's own accessory) + SMART_TARGET_VEHICLE_PASSENGER = 29, // seatMask (0 - all seats) SMART_TARGET_END = 30 }; @@ -1345,7 +1345,7 @@ struct SmartTarget struct { - uint32 seat; + uint32 seatMask; } vehicle; }; }; From ca4b8d98816d653dfec2eb81b8ea329eb8f321fe Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 21 Jan 2018 12:39:02 +0100 Subject: [PATCH 006/178] Scripts/Pit of Saron: Fixed Tyrannus not working after evade --- .../FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index 06e53a95f5..902f78e809 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -545,12 +545,12 @@ class spell_tyrannus_rimefang_icy_blast : public SpellScriptLoader } }; -class at_tyrannus_event_starter : public OnlyOnceAreaTriggerScript +class at_tyrannus_event_starter : public AreaTriggerScript { public: - at_tyrannus_event_starter() : OnlyOnceAreaTriggerScript("at_tyrannus_event_starter") { } + at_tyrannus_event_starter() : AreaTriggerScript("at_tyrannus_event_starter") { } - bool _OnTrigger(Player* player, const AreaTriggerEntry * /*at*/) override + bool OnTrigger(Player* player, const AreaTriggerEntry * /*at*/) override { InstanceScript* instance = player->GetInstanceScript(); if (player->IsGameMaster() || !instance) From 2eb11c7b7c8dfd50486f881789652d1ae3cf7e72 Mon Sep 17 00:00:00 2001 From: Keader Date: Tue, 16 Jan 2018 20:38:38 -0200 Subject: [PATCH 007/178] Scripts/Pit of Saron: Tyrannus followup fix new issue caused by 947cb6a453892c6002738b424d66ca19c102a533 --- .../FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index 902f78e809..920017b48b 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -556,7 +556,7 @@ class at_tyrannus_event_starter : public AreaTriggerScript if (player->IsGameMaster() || !instance) return false; - if (instance->GetBossState(DATA_TYRANNUS) != DONE) + if (instance->GetBossState(DATA_TYRANNUS) != IN_PROGRESS && instance->GetBossState(DATA_TYRANNUS) != DONE) if (Creature* tyrannus = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_TYRANNUS))) { tyrannus->AI()->DoAction(ACTION_START_INTRO); From 49c861d064bcb5d31a0c06867a9eb7f6f618ad86 Mon Sep 17 00:00:00 2001 From: ariel- Date: Tue, 16 Jan 2018 20:49:39 -0300 Subject: [PATCH 008/178] Core/Unit: check remaining instead of full duration for Bounced by DR auras --- src/server/game/Entities/Unit/Unit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f6d6b047aa..a805a71869 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4487,7 +4487,7 @@ bool Unit::HasStrongerAuraWithDR(SpellInfo const* auraSpellInfo, Unit* caster, b if (spellInfo->GetDiminishingReturnsGroupForSpell(triggered) != diminishGroup) continue; - int32 existingDuration = itr->second->GetBase()->GetMaxDuration(); + int32 existingDuration = itr->second->GetBase()->GetDuration(); int32 newDuration = auraSpellInfo->GetMaxDuration(); ApplyDiminishingToDuration(auraSpellInfo, triggered, newDuration, caster, level); if (newDuration > 0 && newDuration < existingDuration) From 3b5f3c2ebf69b0c9ace4a89f2f47880a6d0f5f90 Mon Sep 17 00:00:00 2001 From: sirikfoll Date: Wed, 17 Jan 2018 00:12:41 -0200 Subject: [PATCH 009/178] Scripts/Scarlet Enclave: Quest The Endless Hunger will work correctly after Unworthy Initiate Respawn Due to dynamic spawns, we need to be able to update the Npc GUID after the respawn, otherwise the quest can only be completed by the first player --- src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 72f5962456..2c014f5cbd 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -307,8 +307,7 @@ public: void SetGUID(ObjectGuid const& guid, int32 /*id*/) override { - if (!prisonerGUID) - prisonerGUID = guid; + prisonerGUID = guid; } ObjectGuid GetGUID(int32 /*id*/) const override From 13295bb20062f0b2e957bf377ef3367034be740b Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 21 Jan 2018 12:54:46 +0100 Subject: [PATCH 010/178] Core/CombatAI: Npcs with TurretAI will be able to attack again --- src/server/game/AI/CoreAI/CombatAI.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/game/AI/CoreAI/CombatAI.cpp b/src/server/game/AI/CoreAI/CombatAI.cpp index 2e42e18660..c6cdf4aea4 100644 --- a/src/server/game/AI/CoreAI/CombatAI.cpp +++ b/src/server/game/AI/CoreAI/CombatAI.cpp @@ -232,11 +232,11 @@ TurretAI::TurretAI(Creature* c) : CreatureAI(c) me->m_SightDistance = me->m_CombatDistance; } -bool TurretAI::CanAIAttack(const Unit* /*who*/) const +bool TurretAI::CanAIAttack(Unit const* who) const { /// @todo use one function to replace it - if (!me->IsWithinCombatRange(me->GetVictim(), me->m_CombatDistance) - || (m_minRange && me->IsWithinCombatRange(me->GetVictim(), m_minRange))) + if (!me->IsWithinCombatRange(who, me->m_CombatDistance) + || (m_minRange && me->IsWithinCombatRange(who, m_minRange))) return false; return true; } From d58ac3881cfccaf6ba84d12d0780fe9de61a0369 Mon Sep 17 00:00:00 2001 From: Moein Date: Thu, 18 Jan 2018 02:25:05 +0330 Subject: [PATCH 011/178] Scripts/Spells: quest "That's Abominable" (#21253) - scripted spell "Burst At The Seams" (59576) - added Pet Bar Closes #10876 --- .../world/3.3.5/2018_01_17_01_world.sql | 5 ++ src/server/scripts/Spells/spell_quest.cpp | 87 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_17_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_17_01_world.sql b/sql/updates/world/3.3.5/2018_01_17_01_world.sql new file mode 100644 index 0000000000..ccbcb0a450 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_17_01_world.sql @@ -0,0 +1,5 @@ +-- Reanimated Abomination Abilities +UPDATE `creature_template` SET `spell1` = 59564, `spell2` = 59576 WHERE `entry` = 31692; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_q13264_thats_abominable'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(59576, 'spell_q13264_thats_abominable'); diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 664dfbc20a..2e02e896e8 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1953,6 +1953,92 @@ class spell_q13086_cannons_target : public SpellScriptLoader } }; +enum ThatsAbominable +{ + QUEST_THATS_ABOMINABLE = 13264, + + NPC_ICY_GHOUL = 31142, + NPC_RISEN_ALLIANCE_SOLDIERS = 31205, + NPC_VICIOUS_GEIST = 31147, + NPC_RENIMATED_ABOMINATION = 31692, + + SPELL_ICY_GHOUL_CREDIT = 59591, // Credit for Icy Ghoul + SPELL_VICIOUS_GEISTS_CREDIT = 60042, // Credit for Vicious Geists + SPELL_RISEN_ALLIANCE_SOLDIERS_CREDIT = 60040, // Credit for Risen Alliance Soldiers +}; + +class spell_q13264_thats_abominable : public SpellScriptLoader +{ + public: + spell_q13264_thats_abominable() : SpellScriptLoader("spell_q13264_thats_abominable") { } + + class spell_q13264_thats_abominable_SpellScript : public SpellScript + { + PrepareSpellScript(spell_q13264_thats_abominable_SpellScript); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_ICY_GHOUL_CREDIT, + SPELL_VICIOUS_GEISTS_CREDIT, + SPELL_RISEN_ALLIANCE_SOLDIERS_CREDIT, + }); + } + + void HandleKnockBack(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + + if (Creature* creature = GetHitCreature()) + if (Unit* charmer = GetCaster()->GetCharmerOrOwner()) + if (Player* player = charmer->ToPlayer()) + if (player->GetQuestStatus(QUEST_THATS_ABOMINABLE) == QUEST_STATUS_INCOMPLETE) + if (GiveCreditIfValid(player, creature)) + creature->KillSelf(); + } + + bool GiveCreditIfValid(Player* player, Creature* creature) + { + uint32 entry = creature->GetEntry(); + + switch(entry) + { + case NPC_ICY_GHOUL: + player->CastSpell(player, SPELL_ICY_GHOUL_CREDIT, true); + return true; + case NPC_VICIOUS_GEIST: + player->CastSpell(player, SPELL_VICIOUS_GEISTS_CREDIT, true); + return true; + case NPC_RISEN_ALLIANCE_SOLDIERS: + player->CastSpell(player, SPELL_RISEN_ALLIANCE_SOLDIERS_CREDIT, true); + return true; + } + + return false; + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (Creature* creature = GetCaster()->ToCreature()) { + creature->KillSelf(); + creature->DespawnOrUnsummon(); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q13264_thats_abominable_SpellScript::HandleKnockBack, EFFECT_1, SPELL_EFFECT_KNOCK_BACK); + OnEffectHitTarget += SpellEffectFn(spell_q13264_thats_abominable_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_q13264_thats_abominable_SpellScript(); + } +}; + enum BurstAtTheSeams { NPC_DRAKKARI_CHIEFTAINK = 29099, @@ -2836,6 +2922,7 @@ void AddSC_quest_spell_scripts() new spell_q12847_summon_soul_moveto_bunny(); new spell_q13011_bear_flank_master(); new spell_q13086_cannons_target(); + new spell_q13264_thats_abominable(); new spell_q12690_burst_at_the_seams(); new spell_q12308_escape_from_silverbrook_summon_worgen(); new spell_q12308_escape_from_silverbrook(); From ae8616bd52dc2d4c1ed38ddcbed0f0d285d85521 Mon Sep 17 00:00:00 2001 From: Treeston Date: Thu, 18 Jan 2018 16:29:50 +0100 Subject: [PATCH 012/178] DB/Quest: Allow starting Amphitheater of Anguish (12932) without having completed The Champion's Call (12974) --- sql/updates/world/3.3.5/2018_01_18_01_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_18_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_18_01_world.sql b/sql/updates/world/3.3.5/2018_01_18_01_world.sql new file mode 100644 index 0000000000..70b72d7790 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_18_01_world.sql @@ -0,0 +1,3 @@ +-- amphitheater of anguish (12932) should be startable without completing "The Champion's Call!" (12974) +UPDATE `quest_template` SET `RewardNextQuest`=12932 WHERE `ID`=12974; +UPDATE `quest_template_addon` SET `PrevQuestID`=0 WHERE `ID`=12932; From 7997bebf9e65a542d1faab7a9fd3cf37cc217b3f Mon Sep 17 00:00:00 2001 From: Treeston Date: Thu, 18 Jan 2018 16:47:31 +0100 Subject: [PATCH 013/178] Scripts/AzjolNerub: Missing nullptr check in Hadronox. Closes #21258. --- .../scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index dcddc1f2e6..bf3cb0a41d 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -366,7 +366,7 @@ public: // Safeguard to prevent Hadronox dying to NPCs void DamageTaken(Unit* who, uint32& damage) override { - if (!who->IsControlledByPlayer() && me->HealthBelowPct(70)) + if ((!who || !who->IsControlledByPlayer()) && me->HealthBelowPct(70)) { if (me->HealthBelowPctDamaged(5, damage)) damage = 0; From f2a3a356bec298198caaedb4281e5f443e22b26f Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 18 Jan 2018 16:08:24 -0300 Subject: [PATCH 014/178] Core/Auras: define and implement attribute SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK Closes #20148 --- src/server/game/Miscellaneous/SharedDefines.h | 2 +- src/server/game/Spells/Auras/SpellAuras.cpp | 48 +++++++++++-------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 1d83a13e8d..92792c951e 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -438,7 +438,7 @@ enum SpellAttr2 enum SpellAttr3 { SPELL_ATTR3_UNK0 = 0x00000001, // 0 - SPELL_ATTR3_UNK1 = 0x00000002, // 1 + SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK = 0x00000002, // 1 Ignores subclass mask check when checking proc SPELL_ATTR3_UNK2 = 0x00000004, // 2 SPELL_ATTR3_BLOCKABLE_SPELL = 0x00000008, // 3 Only dmg class melee in 3.1.3 SPELL_ATTR3_IGNORE_RESURRECTION_TIMER = 0x00000010, // 4 you don't have to wait to be resurrected with these spells diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 0786250b72..04f4f4f91d 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1803,31 +1803,37 @@ uint8 Aura::GetProcEffectMask(AuraApplication* aurApp, ProcEventInfo& eventInfo, Unit* target = aurApp->GetTarget(); if (IsPassive() && target->GetTypeId() == TYPEID_PLAYER) { - if (GetSpellInfo()->EquippedItemClass == ITEM_CLASS_WEAPON) + if (!GetSpellInfo()->HasAttribute(SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK)) { - if (target->ToPlayer()->IsInFeralForm()) - return 0; - - if (DamageInfo* damageInfo = eventInfo.GetDamageInfo()) + Item* item = nullptr; + if (GetSpellInfo()->EquippedItemClass == ITEM_CLASS_WEAPON) { - WeaponAttackType attType = damageInfo->GetAttackType(); - Item* item = nullptr; - if (attType == BASE_ATTACK) - item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND); - else if (attType == OFF_ATTACK) - item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); - else - item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_RANGED); - - if (!item || item->IsBroken() || item->GetTemplate()->Class != ITEM_CLASS_WEAPON || !((1 << item->GetTemplate()->SubClass) & GetSpellInfo()->EquippedItemSubClassMask)) + if (target->ToPlayer()->IsInFeralForm()) return 0; + + if (DamageInfo const* damageInfo = eventInfo.GetDamageInfo()) + { + switch (damageInfo->GetAttackType()) + { + case BASE_ATTACK: + item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND); + break; + case OFF_ATTACK: + item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); + break; + default: + item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_RANGED); + break; + } + } } - } - else if (GetSpellInfo()->EquippedItemClass == ITEM_CLASS_ARMOR) - { - // Check if player is wearing shield - Item* item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); - if (!item || item->IsBroken() || item->GetTemplate()->Class != ITEM_CLASS_ARMOR || !((1 << item->GetTemplate()->SubClass) & GetSpellInfo()->EquippedItemSubClassMask)) + else if (GetSpellInfo()->EquippedItemClass == ITEM_CLASS_ARMOR) + { + // Check if player is wearing shield + item = target->ToPlayer()->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); + } + + if (!item || item->IsBroken() || !item->IsFitToSpellRequirements(GetSpellInfo())) return 0; } } From c7a62f99d3fb75b198215158f542489776e8ed8f Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 18 Jan 2018 16:09:34 -0300 Subject: [PATCH 015/178] Core/Auras: Don't remove shield only dependant auras on disarm Closes #19782 --- src/server/game/Entities/Player/Player.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e096c0302d..56cecdd224 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -24130,22 +24130,32 @@ bool Player::HasItemFitToSpellRequirements(SpellInfo const* spellInfo, Item cons } case ITEM_CLASS_ARMOR: { + // most used check: shield only + if (spellInfo->EquippedItemSubClassMask & ((1 << ITEM_SUBCLASS_ARMOR_BUCKLER) | (1 << ITEM_SUBCLASS_ARMOR_SHIELD))) + { + if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND)) + if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) + return true; + + // special check to filter things like Shield Wall, the aura is not permanent and must stay even without required item + if (!spellInfo->IsPassive()) + { + for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + if (spellInfo->Effects[i].IsAura()) + return true; + } + } + // tabard not have dependent spells for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_MAINHAND; ++i) if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, i)) if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) return true; - // shields can be equipped to offhand slot - if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND)) - if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) - return true; - // ranged slot can have some armor subclasses if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_RANGED)) if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) return true; - break; } default: From cbb321a55e1c0643f30a52e700773bef2c4c3169 Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 18 Jan 2018 18:34:37 -0300 Subject: [PATCH 016/178] DB/Spell: Magma Totem shouldn't generate threat By Jildor, closes #21178 --- sql/updates/world/3.3.5/2018_01_18_02_world_335.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_18_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_18_02_world_335.sql b/sql/updates/world/3.3.5/2018_01_18_02_world_335.sql new file mode 100644 index 0000000000..3c801f0959 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_18_02_world_335.sql @@ -0,0 +1,9 @@ +DELETE FROM `spell_custom_attr` WHERE `entry` IN (8187,10579,10580,10581,25550,58732,58735); +INSERT INTO `spell_custom_attr` (`entry`,`attributes`) VALUES +(8187, 0x10), +(10579,0x10), +(10580,0x10), +(10581,0x10), +(25550,0x10), +(58732,0x10), +(58735,0x10); From fd92fa7451aaec6e037f3f4abc3a3545ac59b3b8 Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 18 Jan 2018 19:14:09 -0300 Subject: [PATCH 017/178] Core/Auras: fixed EquippedItemClass check follow-up to 29c3b7d8f60c18e52ec22fec6de9abc3dc468166 --- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 04f4f4f91d..0ac8777176 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1801,7 +1801,7 @@ uint8 Aura::GetProcEffectMask(AuraApplication* aurApp, ProcEventInfo& eventInfo, // do that only for passive spells /// @todo this needs to be unified for all kinds of auras Unit* target = aurApp->GetTarget(); - if (IsPassive() && target->GetTypeId() == TYPEID_PLAYER) + if (IsPassive() && target->GetTypeId() == TYPEID_PLAYER && GetSpellInfo()->EquippedItemClass != -1) { if (!GetSpellInfo()->HasAttribute(SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK)) { From 0ebfa28623dbcc3ef5064570039501ff9f19ae48 Mon Sep 17 00:00:00 2001 From: tje3d Date: Sat, 20 Jan 2018 18:00:50 +0100 Subject: [PATCH 018/178] DB/Quest: A Rough Ride & The Black Knight's Orders Closes #21248 Closes #21249 --- sql/updates/world/3.3.5/2018_01_20_00_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_20_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_20_00_world.sql b/sql/updates/world/3.3.5/2018_01_20_00_world.sql new file mode 100644 index 0000000000..e65560f3b0 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_20_00_world.sql @@ -0,0 +1,4 @@ +-- A Rough Ride +UPDATE `smart_scripts` SET `target_type` = 23 WHERE `entryorguid` = 28308 and `id` IN (2,3); +-- Black Knights Order +UPDATE `smart_scripts` SET `target_type` = 23 WHERE `entryorguid` = 33519 and `id` IN (1,2); From 3ac066856b9f6f19d2f005996cb6a7e203d23cd2 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 21 Jan 2018 13:23:38 +0100 Subject: [PATCH 019/178] Rename files --- .../2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql} | 0 .../2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql} | 0 .../2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql} | 0 ...018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql} | 2 ++ .../2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql} | 0 5 files changed, 2 insertions(+) rename sql/updates/world/{3.3.5/2018_01_16_00_world.sql => 4.3.4/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_01_17_01_world.sql => 4.3.4/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_01_18_01_world.sql => 4.3.4/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_01_18_02_world_335.sql => 4.3.4/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql} (97%) rename sql/updates/world/{3.3.5/2018_01_20_00_world.sql => 4.3.4/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_01_16_00_world.sql b/sql/updates/world/4.3.4/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_16_00_world.sql rename to sql/updates/world/4.3.4/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_17_01_world.sql b/sql/updates/world/4.3.4/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_17_01_world.sql rename to sql/updates/world/4.3.4/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_18_01_world.sql b/sql/updates/world/4.3.4/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_18_01_world.sql rename to sql/updates/world/4.3.4/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_18_02_world_335.sql b/sql/updates/world/4.3.4/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql similarity index 97% rename from sql/updates/world/3.3.5/2018_01_18_02_world_335.sql rename to sql/updates/world/4.3.4/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql index 3c801f0959..dbb5bcf79a 100644 --- a/sql/updates/world/3.3.5/2018_01_18_02_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql @@ -1,3 +1,4 @@ +/* DELETE FROM `spell_custom_attr` WHERE `entry` IN (8187,10579,10580,10581,25550,58732,58735); INSERT INTO `spell_custom_attr` (`entry`,`attributes`) VALUES (8187, 0x10), @@ -7,3 +8,4 @@ INSERT INTO `spell_custom_attr` (`entry`,`attributes`) VALUES (25550,0x10), (58732,0x10), (58735,0x10); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_20_00_world.sql b/sql/updates/world/4.3.4/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_20_00_world.sql rename to sql/updates/world/4.3.4/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql From 7be63043066f0fb3d1fa316cdbfc10a62790e7c8 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 12:28:42 +0100 Subject: [PATCH 020/178] Core/Spells: Removed outdated mechanic (spell downranking coef penalty) --- src/server/game/Entities/Unit/Unit.cpp | 32 ++--------- src/server/game/Entities/Unit/Unit.h | 1 - src/server/game/Texts/ChatTextBuilder.cpp | 59 +++++++++++++++++++++ src/server/scripts/Spells/spell_warlock.cpp | 1 - 4 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 src/server/game/Texts/ChatTextBuilder.cpp diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a805a71869..f440472f54 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2262,22 +2262,6 @@ uint32 Unit::CalculateDamage(WeaponAttackType attType, bool normalized, bool add return urand(uint32(minDamage), uint32(maxDamage)); } -float Unit::CalculateLevelPenalty(SpellInfo const* spellProto) const -{ - if (spellProto->SpellLevel <= 0 || spellProto->SpellLevel >= spellProto->MaxLevel) - return 1.0f; - - float LvlPenalty = 0.0f; - - if (spellProto->SpellLevel < 20) - LvlPenalty = (20.0f - spellProto->SpellLevel) * 3.75f; - float LvlFactor = (float(spellProto->SpellLevel) + 6.0f) / float(getLevel()); - if (LvlFactor > 1.0f) - LvlFactor = 1.0f; - - return AddPct(LvlFactor, -LvlPenalty); -} - void Unit::SendMeleeAttackStart(Unit* victim) { WorldPacket data(SMSG_ATTACKSTART, 8 + 8); @@ -6545,15 +6529,13 @@ uint32 Unit::SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uin if (!bonus || coeff < 0) coeff = CalculateDefaultCoefficient(spellProto, damagetype) * int32(stack); - float factorMod = CalculateLevelPenalty(spellProto) * stack; - if (Player* modOwner = GetSpellModOwner()) { coeff *= 100.0f; modOwner->ApplySpellMod(spellProto->Id, coeff); coeff /= 100.0f; } - DoneTotal += int32(DoneAdvertisedBenefit * coeff * factorMod); + DoneTotal += int32(DoneAdvertisedBenefit * coeff * stack); } float tmpDamage = (int32(pdamage) + DoneTotal); @@ -6839,7 +6821,6 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui if (!bonus || coeff < 0) coeff = CalculateDefaultCoefficient(spellProto, damagetype) * int32(stack); - float factorMod = CalculateLevelPenalty(spellProto) * stack; // level penalty still applied on Taken bonus - is it blizzlike? if (Player* modOwner = GetSpellModOwner()) { @@ -6847,7 +6828,7 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui modOwner->ApplySpellMod(spellProto->Id, coeff); coeff /= 100.0f; } - TakenTotal += int32(TakenAdvertisedBenefit * coeff * factorMod); + TakenTotal += int32(TakenAdvertisedBenefit * coeff * stack); } } @@ -7263,7 +7244,6 @@ uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, ui // Check for table values SpellBonusEntry const* bonus = sSpellMgr->GetSpellBonusData(spellProto->Id); float coeff = 0; - float factorMod = 1.0f; if (bonus) { if (damagetype == DOT) @@ -7294,8 +7274,6 @@ uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, ui if (!bonus || coeff < 0) coeff = CalculateDefaultCoefficient(spellProto, damagetype) * int32(stack) * 1.88f; // As wowwiki says: C = (Cast Time / 3.5) * 1.88 (for healing spells) - factorMod *= CalculateLevelPenalty(spellProto) * stack; - if (Player* modOwner = GetSpellModOwner()) { coeff *= 100.0f; @@ -7303,7 +7281,7 @@ uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, ui coeff /= 100.0f; } - DoneTotal += int32(DoneAdvertisedBenefit * coeff * factorMod); + DoneTotal += int32(DoneAdvertisedBenefit * coeff * stack); } for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) @@ -7454,7 +7432,6 @@ uint32 Unit::SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, u // Check for table values SpellBonusEntry const* bonus = sSpellMgr->GetSpellBonusData(spellProto->Id); float coeff = 0; - float factorMod = 1.0f; if (bonus) coeff = (damagetype == DOT) ? bonus->dot_damage : bonus->direct_damage; else @@ -7473,7 +7450,6 @@ uint32 Unit::SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, u if (!bonus || coeff < 0) coeff = CalculateDefaultCoefficient(spellProto, damagetype) * int32(stack) * 1.88f; // As wowwiki says: C = (Cast Time / 3.5) * 1.88 (for healing spells) - factorMod *= CalculateLevelPenalty(spellProto) * int32(stack); if (Player* modOwner = GetSpellModOwner()) { coeff *= 100.0f; @@ -7481,7 +7457,7 @@ uint32 Unit::SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, u coeff /= 100.0f; } - TakenTotal += int32(TakenAdvertisedBenefit * coeff * factorMod); + TakenTotal += int32(TakenAdvertisedBenefit * coeff * stack); } AuraEffectList const& mHealingGet= GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_RECEIVED); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 408fb5743c..e8ab2baa4f 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2090,7 +2090,6 @@ class TC_GAME_API Unit : public WorldObject int32 ModSpellDuration(SpellInfo const* spellProto, Unit const* target, int32 duration, bool positive, uint32 effectMask); void ModSpellCastTime(SpellInfo const* spellProto, int32& castTime, Spell* spell = NULL); void ModSpellDurationTime(SpellInfo const* spellProto, int32& castTime, Spell* spell = NULL); - float CalculateLevelPenalty(SpellInfo const* spellProto) const; void addFollower(FollowerReference* pRef) { m_FollowingRefManager.insertFirst(pRef); } void removeFollower(FollowerReference* /*pRef*/) { /* nothing to do yet */ } diff --git a/src/server/game/Texts/ChatTextBuilder.cpp b/src/server/game/Texts/ChatTextBuilder.cpp new file mode 100644 index 0000000000..8d989c9c28 --- /dev/null +++ b/src/server/game/Texts/ChatTextBuilder.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2008-2018 TrinityCore + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "ChatTextBuilder.h" +#include "Chat.h" +#include "ObjectMgr.h" +#include + +void Trinity::BroadcastTextBuilder::operator()(WorldPacket& data, LocaleConstant locale) const +{ + BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); + ChatHandler::BuildChatPacket(data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _gender) : "", _achievementId, "", locale); +} + +size_t Trinity::BroadcastTextBuilder::operator()(WorldPacket* data, LocaleConstant locale) const +{ + BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); + return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _gender) : "", _achievementId, "", locale); +} + +void Trinity::CustomChatTextBuilder::operator()(WorldPacket& data, LocaleConstant locale) const +{ + ChatHandler::BuildChatPacket(data, _msgType, _language, _source, _target, _text, 0, "", locale); +} + +void Trinity::TrinityStringChatBuilder::operator()(WorldPacket& data, LocaleConstant locale) const +{ + char const* text = sObjectMgr->GetTrinityString(_textId, locale); + + if (_args) + { + // we need copy va_list before use or original va_list will corrupted + va_list ap; + va_copy(ap, *_args); + + static size_t const BufferSize = 2048; + char strBuffer[BufferSize]; + vsnprintf(strBuffer, BufferSize, text, ap); + va_end(ap); + + ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _source, _target, strBuffer, 0, "", locale); + } + else + ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _source, _target, text, 0, "", locale); +} diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 80715de783..bc26f2e37d 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -1109,7 +1109,6 @@ class spell_warl_shadow_ward : public SpellScriptLoader float bonus = 0.8068f; bonus *= caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()); - bonus *= caster->CalculateLevelPenalty(GetSpellInfo()); amount += int32(bonus); } From aa1032bd1739b514bef3fbc4c840a74cfa2669ef Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 13:07:51 +0100 Subject: [PATCH 021/178] missing part --- src/server/scripts/Spells/spell_mage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 57af21af00..0ac73c90ff 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -495,7 +495,6 @@ class spell_mage_fire_frost_ward : public SpellScriptLoader float bonus = 0.8068f; bonus *= caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()); - bonus *= caster->CalculateLevelPenalty(GetSpellInfo()); amount += int32(bonus); } From a6835c5872e603e8aa3e7800c6781d77bb79b994 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 13:12:31 +0100 Subject: [PATCH 022/178] missing part --- src/server/scripts/Spells/spell_priest.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index d8f6ad4314..6b44155e25 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -920,7 +920,6 @@ class spell_pri_power_word_shield : public SpellScriptLoader // Improved PW: Shield: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :) // Improved PW: Shield is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage bonus = caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), bonus); - bonus *= caster->CalculateLevelPenalty(GetSpellInfo()); amount += int32(bonus); From 615a99703580fb6af241697477474d59c2c4cdd2 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 13:49:25 +0100 Subject: [PATCH 023/178] Warnings fix --- src/server/game/Reputation/ReputationMgr.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index a50f4fdf5d..b54045f810 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -91,10 +91,10 @@ int32 ReputationMgr::GetBaseReputation(FactionEntry const* factionEntry) const { if ((factionEntry->BaseRepRaceMask[i] & raceMask || (factionEntry->BaseRepRaceMask[i] == 0 && - factionEntry->BaseRepClassMask[i] != 0)) && + factionEntry->BaseRepClassMask[i] != 0)) && (factionEntry->BaseRepClassMask[i] & classMask || - factionEntry->BaseRepClassMask[i] == 0 && - factionEntry->BaseRepValue[i] > 0)) + (factionEntry->BaseRepClassMask[i] == 0 && + factionEntry->BaseRepValue[i] > 0))) return factionEntry->BaseRepValue[i]; } From 836511923517eaffc8079f9db42a224c7ea0c775 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 16:00:38 +0100 Subject: [PATCH 024/178] Core/Battleground: Dropped battleground texts from trinity_string and replaced them with proper BroadcastText --- .../world/4.3.4/2018_01_27_00_world.sql | 5 + .../game/AI/SmartScripts/SmartScript.cpp | 4 +- .../game/Achievements/AchievementMgr.cpp | 4 +- src/server/game/Battlegrounds/Arena.cpp | 9 +- src/server/game/Battlegrounds/Arena.h | 8 + .../game/Battlegrounds/Battleground.cpp | 166 +++++------------- src/server/game/Battlegrounds/Battleground.h | 19 +- .../game/Battlegrounds/BattlegroundMgr.cpp | 1 + .../Battlegrounds/Zones/BattlegroundAB.cpp | 64 ++----- .../game/Battlegrounds/Zones/BattlegroundAB.h | 30 +++- .../Battlegrounds/Zones/BattlegroundAV.cpp | 13 +- .../game/Battlegrounds/Zones/BattlegroundAV.h | 10 ++ .../Battlegrounds/Zones/BattlegroundEY.cpp | 54 ++---- .../game/Battlegrounds/Zones/BattlegroundEY.h | 46 ++++- .../Battlegrounds/Zones/BattlegroundIC.cpp | 60 ++++--- .../game/Battlegrounds/Zones/BattlegroundIC.h | 49 ++++-- .../Battlegrounds/Zones/BattlegroundSA.cpp | 14 +- .../game/Battlegrounds/Zones/BattlegroundSA.h | 9 + .../Battlegrounds/Zones/BattlegroundWS.cpp | 51 ++---- .../game/Battlegrounds/Zones/BattlegroundWS.h | 17 ++ src/server/game/Entities/Unit/Unit.cpp | 5 +- src/server/game/Handlers/PetitionsHandler.cpp | 3 +- src/server/game/Miscellaneous/Language.h | 131 +------------- src/server/game/Texts/ChatTextBuilder.h | 49 +++--- 24 files changed, 351 insertions(+), 470 deletions(-) create mode 100644 sql/updates/world/4.3.4/2018_01_27_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_00_world.sql b/sql/updates/world/4.3.4/2018_01_27_00_world.sql new file mode 100644 index 0000000000..adb43a5478 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_27_00_world.sql @@ -0,0 +1,5 @@ +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 600 AND 704; +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 724 AND 726; +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 753 AND 755; +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 1205 AND 1333; +DELETE FROM `trinity_string` WHERE `entry` BETWEEN 10056 AND 10066; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 412fb638af..bc53b0dcf9 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -787,7 +787,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (e.action.fleeAssist.withEmote) { - Trinity::BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_FLEE_FOR_ASSIST); + Trinity::BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_FLEE_FOR_ASSIST, me->getGender()); sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE); } TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_FLEE_FOR_ASSIST: Creature %u DoFleeToGetAssistance", me->GetGUID().GetCounter()); @@ -1074,7 +1074,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u (*itr)->ToCreature()->CallForHelp((float)e.action.callHelp.range); if (e.action.callHelp.withEmote) { - Trinity::BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_CALL_FOR_HELP); + Trinity::BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_CALL_FOR_HELP, me->getGender()); sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE); } TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction: SMART_ACTION_CALL_FOR_HELP: Creature %u, target: %u", me->GetGUID().GetCounter(), (*itr)->GetGUID().GetCounter()); diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 652a36c9bd..2f14432b57 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -869,7 +869,7 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievemen if (Guild* guild = sGuildMgr->GetGuildById(GetOwner()->GetGuildId())) { - Trinity::BroadcastTextBuilder _builder(GetOwner(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetOwner(), achievement->ID); + Trinity::BroadcastTextBuilder _builder(GetOwner(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetOwner()->getGender(), _owner, achievement->ID); Trinity::LocalizedPacketDo _localizer(_builder); guild->BroadcastWorker(_localizer, GetOwner()); } @@ -887,7 +887,7 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievemen // if player is in world he can tell his friends about new achievement else if (GetOwner()->IsInWorld()) { - Trinity::BroadcastTextBuilder _builder(GetOwner(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetOwner(), achievement->ID); + Trinity::BroadcastTextBuilder _builder(GetOwner(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, GetOwner()->getGender(), _owner, achievement->ID); Trinity::LocalizedPacketDo _localizer(_builder); Trinity::PlayerDistWorker> _worker(GetOwner(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer); Cell::VisitWorldObjects(GetOwner(), _worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY)); diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp index a739507d4b..40f345806e 100644 --- a/src/server/game/Battlegrounds/Arena.cpp +++ b/src/server/game/Battlegrounds/Arena.cpp @@ -20,7 +20,6 @@ #include "ArenaTeamMgr.h" #include "GuildMgr.h" #include "Guild.h" -#include "Language.h" #include "ObjectAccessor.h" #include "Player.h" #include "World.h" @@ -33,10 +32,10 @@ Arena::Arena() StartDelayTimes[BG_STARTING_EVENT_THIRD] = BG_START_DELAY_15S; StartDelayTimes[BG_STARTING_EVENT_FOURTH] = BG_START_DELAY_NONE; - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_ARENA_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_ARENA_THIRTY_SECONDS; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_ARENA_FIFTEEN_SECONDS; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_ARENA_HAS_BEGUN; + StartMessageIds[BG_STARTING_EVENT_FIRST] = ARENA_TEXT_START_ONE_MINUTE; + StartMessageIds[BG_STARTING_EVENT_SECOND] = ARENA_TEXT_START_THIRTY_SECONDS; + StartMessageIds[BG_STARTING_EVENT_THIRD] = ARENA_TEXT_START_FIFTEEN_SECONDS; + StartMessageIds[BG_STARTING_EVENT_FOURTH] = ARENA_TEXT_START_BATTLE_HAS_BEGUN; } void Arena::AddPlayer(Player* player) diff --git a/src/server/game/Battlegrounds/Arena.h b/src/server/game/Battlegrounds/Arena.h index dc4dc662bd..3e09c0158e 100644 --- a/src/server/game/Battlegrounds/Arena.h +++ b/src/server/game/Battlegrounds/Arena.h @@ -20,6 +20,14 @@ #include "Battleground.h" +enum ArenaBroadcastTexts +{ + ARENA_TEXT_START_ONE_MINUTE = 15740, + ARENA_TEXT_START_THIRTY_SECONDS = 15741, + ARENA_TEXT_START_FIFTEEN_SECONDS = 15739, + ARENA_TEXT_START_BATTLE_HAS_BEGUN = 15742, +}; + enum ArenaSpellIds { SPELL_ALLIANCE_GOLD_FLAG = 32724, diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index f79aeec076..c3c7eb6a0d 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -22,7 +22,7 @@ #include "BattlegroundScore.h" #include "Creature.h" #include "CreatureTextMgr.h" -#include "Chat.h" +#include "ChatTextBuilder.h" #include "Formulas.h" #include "GridNotifiersImpl.h" #include "Group.h" @@ -38,72 +38,6 @@ #include "Transport.h" #include "GameTime.h" -namespace Trinity -{ - class BattlegroundChatBuilder - { - public: - BattlegroundChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, va_list* args = NULL) - : _msgtype(msgtype), _textId(textId), _source(source), _args(args) { } - - void operator()(WorldPacket& data, LocaleConstant loc_idx) - { - char const* text = sObjectMgr->GetTrinityString(_textId, loc_idx); - if (_args) - { - // we need copy va_list before use or original va_list will corrupted - va_list ap; - va_copy(ap, *_args); - - char str[2048]; - vsnprintf(str, 2048, text, ap); - va_end(ap); - - do_helper(data, &str[0]); - } - else - do_helper(data, text); - } - - private: - void do_helper(WorldPacket& data, char const* text) - { - ChatHandler::BuildChatPacket(data, _msgtype, LANG_UNIVERSAL, _source, _source, text); - } - - ChatMsg _msgtype; - uint32 _textId; - Player const* _source; - va_list* _args; - }; - - class Battleground2ChatBuilder - { - public: - Battleground2ChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, uint32 arg1, uint32 arg2) - : _msgtype(msgtype), _textId(textId), _source(source), _arg1(arg1), _arg2(arg2) { } - - void operator()(WorldPacket& data, LocaleConstant loc_idx) - { - char const* text = sObjectMgr->GetTrinityString(_textId, loc_idx); - char const* arg1str = _arg1 ? sObjectMgr->GetTrinityString(_arg1, loc_idx) : ""; - char const* arg2str = _arg2 ? sObjectMgr->GetTrinityString(_arg2, loc_idx) : ""; - - char str[2048]; - snprintf(str, 2048, text, arg1str, arg2str); - - ChatHandler::BuildChatPacket(data, _msgtype, LANG_UNIVERSAL, _source, _source, str); - } - - private: - ChatMsg _msgtype; - uint32 _textId; - Player const* _source; - uint32 _arg1; - uint32 _arg2; - }; -} // namespace Trinity - template void Battleground::BroadcastWorker(Do& _do) { @@ -175,11 +109,11 @@ Battleground::Battleground() StartDelayTimes[BG_STARTING_EVENT_SECOND] = BG_START_DELAY_1M; StartDelayTimes[BG_STARTING_EVENT_THIRD] = BG_START_DELAY_30S; StartDelayTimes[BG_STARTING_EVENT_FOURTH] = BG_START_DELAY_NONE; - //we must set to some default existing values - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_WS_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_WS_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_WS_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_WS_HAS_BEGUN; + + StartMessageIds[BG_STARTING_EVENT_FIRST] = BG_TEXT_START_TWO_MINUTES; + StartMessageIds[BG_STARTING_EVENT_SECOND] = BG_TEXT_START_ONE_MINUTE; + StartMessageIds[BG_STARTING_EVENT_THIRD] = BG_TEXT_START_HALF_MINUTE; + StartMessageIds[BG_STARTING_EVENT_FOURTH] = BG_TEXT_BATTLE_HAS_BEGUN; } Battleground::~Battleground() @@ -498,19 +432,22 @@ inline void Battleground::_ProcessJoin(uint32 diff) StartingEventCloseDoors(); SetStartDelayTime(StartDelayTimes[BG_STARTING_EVENT_FIRST]); // First start warning - 2 or 1 minute - SendMessageToAll(StartMessageIds[BG_STARTING_EVENT_FIRST], CHAT_MSG_BG_SYSTEM_NEUTRAL); + if (StartMessageIds[BG_STARTING_EVENT_FIRST]) + SendBroadcastText(StartMessageIds[BG_STARTING_EVENT_FIRST], CHAT_MSG_BG_SYSTEM_NEUTRAL); } // After 1 minute or 30 seconds, warning is signaled else if (GetStartDelayTime() <= StartDelayTimes[BG_STARTING_EVENT_SECOND] && !(m_Events & BG_STARTING_EVENT_2)) { m_Events |= BG_STARTING_EVENT_2; - SendMessageToAll(StartMessageIds[BG_STARTING_EVENT_SECOND], CHAT_MSG_BG_SYSTEM_NEUTRAL); + if (StartMessageIds[BG_STARTING_EVENT_SECOND]) + SendBroadcastText(StartMessageIds[BG_STARTING_EVENT_SECOND], CHAT_MSG_BG_SYSTEM_NEUTRAL); } // After 30 or 15 seconds, warning is signaled else if (GetStartDelayTime() <= StartDelayTimes[BG_STARTING_EVENT_THIRD] && !(m_Events & BG_STARTING_EVENT_3)) { m_Events |= BG_STARTING_EVENT_3; - SendMessageToAll(StartMessageIds[BG_STARTING_EVENT_THIRD], CHAT_MSG_BG_SYSTEM_NEUTRAL); + if (StartMessageIds[BG_STARTING_EVENT_THIRD]) + SendBroadcastText(StartMessageIds[BG_STARTING_EVENT_THIRD], CHAT_MSG_BG_SYSTEM_NEUTRAL); } // Delay expired (after 2 or 1 minute) else if (GetStartDelayTime() <= 0 && !(m_Events & BG_STARTING_EVENT_4)) @@ -519,7 +456,8 @@ inline void Battleground::_ProcessJoin(uint32 diff) StartingEventOpenDoors(); - SendWarningToAll(StartMessageIds[BG_STARTING_EVENT_FOURTH]); + if (StartMessageIds[BG_STARTING_EVENT_FOURTH]) + SendBroadcastText(StartMessageIds[BG_STARTING_EVENT_FOURTH], CHAT_MSG_BG_SYSTEM_NEUTRAL); SetStatus(STATUS_IN_PROGRESS); SetStartDelayTime(StartDelayTimes[BG_STARTING_EVENT_FOURTH]); @@ -666,10 +604,23 @@ void Battleground::SendChatMessage(Creature* source, uint8 textId, WorldObject* sCreatureTextMgr->SendChat(source, textId, target); } -void Battleground::PlaySoundToAll(uint32 SoundID) +void Battleground::SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const* target) +{ + if (!sObjectMgr->GetBroadcastText(id)) + { + TC_LOG_ERROR("bg.battleground", "Battleground::SendBroadcastText: `broadcast_text` (ID: %u) was not found", id); + return; + } + + Trinity::BroadcastTextBuilder builder(nullptr, msgType, id, GENDER_MALE, target); + Trinity::LocalizedPacketDo localizer(builder); + BroadcastWorker(localizer); +} + +void Battleground::PlaySoundToAll(uint32 soundID) { WorldPacket data; - sBattlegroundMgr->BuildPlaySoundPacket(&data, SoundID); + sBattlegroundMgr->BuildPlaySoundPacket(&data, soundID); SendPacketToAll(&data); } @@ -742,12 +693,12 @@ void Battleground::EndBattleground(uint32 winner) { RemoveFromBGFreeSlotQueue(); - int32 winmsg_id = 0; bool guildAwarded = false; if (winner == ALLIANCE) { - winmsg_id = isBattleground() ? LANG_BG_A_WINS : LANG_ARENA_GOLD_WINS; + if (isBattleground()) + SendBroadcastText(BG_TEXT_ALLIANCE_WINS, CHAT_MSG_BG_SYSTEM_NEUTRAL); PlaySoundToAll(SOUND_ALLIANCE_WINS); // alliance wins sound @@ -755,7 +706,8 @@ void Battleground::EndBattleground(uint32 winner) } else if (winner == HORDE) { - winmsg_id = isBattleground() ? LANG_BG_H_WINS : LANG_ARENA_GREEN_WINS; + if (isBattleground()) + SendBroadcastText(BG_TEXT_HORDE_WINS, CHAT_MSG_BG_SYSTEM_NEUTRAL); PlaySoundToAll(SOUND_HORDE_WINS); // horde wins sound @@ -896,9 +848,6 @@ void Battleground::EndBattleground(uint32 winner) player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND, 1); } - - if (winmsg_id) - SendMessageToAll(winmsg_id, CHAT_MSG_BG_SYSTEM_NEUTRAL); } uint32 Battleground::GetBonusHonorFromKill(uint32 kills) const @@ -1700,17 +1649,17 @@ bool Battleground::AddSpiritGuide(uint32 type, Position const& pos, TeamId teamI return AddSpiritGuide(type, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teamId); } -void Battleground::SendMessageToAll(uint32 entry, ChatMsg type, Player const* source) +void Battleground::SendMessageToAll(uint32 entry, ChatMsg msgType, Player const* source) { if (!entry) return; - Trinity::BattlegroundChatBuilder bg_builder(type, entry, source); - Trinity::LocalizedPacketDo bg_do(bg_builder); - BroadcastWorker(bg_do); + Trinity::TrinityStringChatBuilder builder(nullptr, msgType, entry, source); + Trinity::LocalizedPacketDo localizer(builder); + BroadcastWorker(localizer); } -void Battleground::PSendMessageToAll(uint32 entry, ChatMsg type, Player const* source, ...) +void Battleground::PSendMessageToAll(uint32 entry, ChatMsg msgType, Player const* source, ...) { if (!entry) return; @@ -1718,46 +1667,13 @@ void Battleground::PSendMessageToAll(uint32 entry, ChatMsg type, Player const* s va_list ap; va_start(ap, source); - Trinity::BattlegroundChatBuilder bg_builder(type, entry, source, &ap); - Trinity::LocalizedPacketDo bg_do(bg_builder); - BroadcastWorker(bg_do); + Trinity::TrinityStringChatBuilder builder(nullptr, msgType, entry, source, &ap); + Trinity::LocalizedPacketDo localizer(builder); + BroadcastWorker(localizer); va_end(ap); } -void Battleground::SendWarningToAll(uint32 entry, ...) -{ - if (!entry) - return; - - std::map localizedPackets; - for (BattlegroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr) - if (Player* player = _GetPlayer(itr, "SendWarningToAll")) - { - if (localizedPackets.find(player->GetSession()->GetSessionDbLocaleIndex()) == localizedPackets.end()) - { - char const* format = sObjectMgr->GetTrinityString(entry, player->GetSession()->GetSessionDbLocaleIndex()); - - char str[1024]; - va_list ap; - va_start(ap, entry); - vsnprintf(str, 1024, format, ap); - va_end(ap); - - ChatHandler::BuildChatPacket(localizedPackets[player->GetSession()->GetSessionDbLocaleIndex()], CHAT_MSG_RAID_BOSS_EMOTE, LANG_UNIVERSAL, NULL, NULL, str); - } - - player->SendDirectMessage(&localizedPackets[player->GetSession()->GetSessionDbLocaleIndex()]); - } -} - -void Battleground::SendMessage2ToAll(uint32 entry, ChatMsg type, Player const* source, uint32 arg1, uint32 arg2) -{ - Trinity::Battleground2ChatBuilder bg_builder(type, entry, source, arg1, arg2); - Trinity::LocalizedPacketDo bg_do(bg_builder); - BroadcastWorker(bg_do); -} - void Battleground::EndNow() { RemoveFromBGFreeSlotQueue(); diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 382b775c9a..d8daaf8050 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -59,6 +59,17 @@ enum BattlegroundCriteriaId BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH, }; +enum BattlegroundBroadcastTexts +{ + BG_TEXT_ALLIANCE_WINS = 10633, + BG_TEXT_HORDE_WINS = 10634, + + BG_TEXT_START_TWO_MINUTES = 18193, + BG_TEXT_START_ONE_MINUTE = 18194, + BG_TEXT_START_HALF_MINUTE = 18195, + BG_TEXT_BATTLE_HAS_BEGUN = 18196, +}; + enum BattlegroundSounds { SOUND_HORDE_WINS = 8454, @@ -357,10 +368,11 @@ class TC_GAME_API Battleground // Packet Transfer // method that should fill worldpacket with actual world states (not yet implemented for all battlegrounds!) virtual void FillInitialWorldStates(WorldPacket& /*data*/) { } - void SendPacketToTeam(uint32 TeamID, WorldPacket* packet, Player* sender = NULL, bool self = true); + void SendPacketToTeam(uint32 TeamID, WorldPacket* packet, Player* sender = nullptr, bool self = true); void SendPacketToAll(WorldPacket* packet); - void SendChatMessage(Creature* source, uint8 textId, WorldObject* target = NULL); + void SendChatMessage(Creature* source, uint8 textId, WorldObject* target = nullptr); + void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const* target = nullptr); template void BroadcastWorker(Do& _do); @@ -380,9 +392,6 @@ class TC_GAME_API Battleground void SendMessageToAll(uint32 entry, ChatMsg type, Player const* source = NULL); void PSendMessageToAll(uint32 entry, ChatMsg type, Player const* source, ...); - // specialized version with 2 string id args - void SendMessage2ToAll(uint32 entry, ChatMsg type, Player const* source, uint32 strId1 = 0, uint32 strId2 = 0); - // Raid Group Group* GetBgRaid(uint32 TeamID) const { return TeamID == ALLIANCE ? m_BgRaids[TEAM_ALLIANCE] : m_BgRaids[TEAM_HORDE]; } void SetBgRaid(uint32 TeamID, Group* bg_raid); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 182218af93..3087e7be70 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -37,6 +37,7 @@ #include "BattlegroundTP.h" #include "BattlegroundBFG.h" #include "Chat.h" +#include "Language.h" #include "Map.h" #include "MapManager.h" #include "Player.h" diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index c9669271da..36f6e19c68 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -20,7 +20,6 @@ #include "WorldPacket.h" #include "BattlegroundMgr.h" #include "Creature.h" -#include "Language.h" #include "Player.h" #include "Util.h" #include "WorldSession.h" @@ -52,11 +51,6 @@ BattlegroundAB::BattlegroundAB() m_HonorTics = 0; m_ReputationTics = 0; - - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_AB_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_AB_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_AB_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_AB_HAS_BEGUN; } BattlegroundAB::~BattlegroundAB() { } @@ -98,19 +92,17 @@ void BattlegroundAB::PostUpdateImpl(uint32 diff) // create new occupied banner _CreateBanner(node, BG_AB_NODE_TYPE_OCCUPIED, teamIndex, true); _SendNodeUpdate(node); - _NodeOccupied(node, (teamIndex == 0) ? ALLIANCE:HORDE); + _NodeOccupied(node, (teamIndex == TEAM_ALLIANCE) ? ALLIANCE : HORDE); // Message to chatlog - if (teamIndex == 0) + if (teamIndex == TEAM_ALLIANCE) { - // FIXME: team and node names not localized - SendMessage2ToAll(LANG_BG_AB_NODE_TAKEN, CHAT_MSG_BG_SYSTEM_ALLIANCE, NULL, LANG_BG_AB_ALLY, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextAllianceTaken, CHAT_MSG_BG_SYSTEM_ALLIANCE); PlaySoundToAll(BG_AB_SOUND_NODE_CAPTURED_ALLIANCE); } else { - // FIXME: team and node names not localized - SendMessage2ToAll(LANG_BG_AB_NODE_TAKEN, CHAT_MSG_BG_SYSTEM_HORDE, NULL, LANG_BG_AB_HORDE, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextHordeTaken, CHAT_MSG_BG_SYSTEM_HORDE); PlaySoundToAll(BG_AB_SOUND_NODE_CAPTURED_HORDE); } } @@ -152,9 +144,9 @@ void BattlegroundAB::PostUpdateImpl(uint32 diff) if (!m_IsInformedNearVictory && m_TeamScores[team] > BG_AB_WARNING_NEAR_VICTORY_SCORE) { if (team == TEAM_ALLIANCE) - SendMessageToAll(LANG_BG_AB_A_NEAR_VICTORY, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_AB_TEXT_ALLIANCE_NEAR_VICTORY, CHAT_MSG_BG_SYSTEM_NEUTRAL); else - SendMessageToAll(LANG_BG_AB_H_NEAR_VICTORY, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_AB_TEXT_HORDE_NEAR_VICTORY, CHAT_MSG_BG_SYSTEM_NEUTRAL); PlaySoundToAll(BG_AB_SOUND_NEAR_VICTORY); m_IsInformedNearVictory = true; } @@ -299,21 +291,6 @@ void BattlegroundAB::_DelBanner(uint8 node, uint8 type, uint8 teamIndex) SpawnBGObject(obj, RESPAWN_ONE_DAY); } -int32 BattlegroundAB::_GetNodeNameId(uint8 node) -{ - switch (node) - { - case BG_AB_NODE_STABLES: return LANG_BG_AB_NODE_STABLES; - case BG_AB_NODE_BLACKSMITH: return LANG_BG_AB_NODE_BLACKSMITH; - case BG_AB_NODE_FARM: return LANG_BG_AB_NODE_FARM; - case BG_AB_NODE_LUMBER_MILL:return LANG_BG_AB_NODE_LUMBER_MILL; - case BG_AB_NODE_GOLD_MINE: return LANG_BG_AB_NODE_GOLD_MINE; - default: - ABORT(); - } - return 0; -} - void BattlegroundAB::FillInitialWorldStates(WorldPacket& data) { const uint8 plusArray[] = {0, 2, 3, 0, 1}; @@ -461,11 +438,10 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ _SendNodeUpdate(node); m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME; - // FIXME: team and node names not localized - if (teamIndex == 0) - SendMessage2ToAll(LANG_BG_AB_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node), LANG_BG_AB_ALLY); + if (teamIndex == TEAM_ALLIANCE) + SendBroadcastText(ABNodes[node].TextAllianceClaims, CHAT_MSG_BG_SYSTEM_ALLIANCE, source); else - SendMessage2ToAll(LANG_BG_AB_NODE_CLAIMED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node), LANG_BG_AB_HORDE); + SendBroadcastText(ABNodes[node].TextHordeClaims, CHAT_MSG_BG_SYSTEM_HORDE, source); sound = BG_AB_SOUND_NODE_CLAIMED; } @@ -485,11 +461,10 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ _SendNodeUpdate(node); m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME; - // FIXME: node names not localized if (teamIndex == TEAM_ALLIANCE) - SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextAllianceAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, source); else - SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextHordeAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, source); } // If contested, change back to occupied else @@ -503,13 +478,12 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ _CreateBanner(node, BG_AB_NODE_TYPE_OCCUPIED, teamIndex, true); _SendNodeUpdate(node); m_NodeTimers[node] = 0; - _NodeOccupied(node, (teamIndex == TEAM_ALLIANCE) ? ALLIANCE:HORDE); + _NodeOccupied(node, (teamIndex == TEAM_ALLIANCE) ? ALLIANCE : HORDE); - // FIXME: node names not localized if (teamIndex == TEAM_ALLIANCE) - SendMessage2ToAll(LANG_BG_AB_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextAllianceDefended, CHAT_MSG_BG_SYSTEM_ALLIANCE, source); else - SendMessage2ToAll(LANG_BG_AB_NODE_DEFENDED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextHordeDefended, CHAT_MSG_BG_SYSTEM_HORDE, source); } sound = (teamIndex == TEAM_ALLIANCE) ? BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE : BG_AB_SOUND_NODE_ASSAULTED_HORDE; } @@ -527,11 +501,10 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ _NodeDeOccupied(node); m_NodeTimers[node] = BG_AB_FLAG_CAPTURING_TIME; - // FIXME: node names not localized if (teamIndex == TEAM_ALLIANCE) - SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_ALLIANCE, source, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextAllianceAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, source); else - SendMessage2ToAll(LANG_BG_AB_NODE_ASSAULTED, CHAT_MSG_BG_SYSTEM_HORDE, source, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextHordeAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, source); sound = (teamIndex == TEAM_ALLIANCE) ? BG_AB_SOUND_NODE_ASSAULTED_ALLIANCE : BG_AB_SOUND_NODE_ASSAULTED_HORDE; } @@ -539,11 +512,10 @@ void BattlegroundAB::EventPlayerClickedOnFlag(Player* source, GameObject* /*targ // If node is occupied again, send "X has taken the Y" msg. if (m_Nodes[node] >= BG_AB_NODE_TYPE_OCCUPIED) { - // FIXME: team and node names not localized if (teamIndex == TEAM_ALLIANCE) - SendMessage2ToAll(LANG_BG_AB_NODE_TAKEN, CHAT_MSG_BG_SYSTEM_ALLIANCE, NULL, LANG_BG_AB_ALLY, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextAllianceTaken, CHAT_MSG_BG_SYSTEM_ALLIANCE); else - SendMessage2ToAll(LANG_BG_AB_NODE_TAKEN, CHAT_MSG_BG_SYSTEM_HORDE, NULL, LANG_BG_AB_HORDE, _GetNodeNameId(node)); + SendBroadcastText(ABNodes[node].TextHordeTaken, CHAT_MSG_BG_SYSTEM_HORDE); } PlaySoundToAll(sound); } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h index 7587f3fda8..05f589d475 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.h @@ -152,6 +152,34 @@ enum BG_AB_BattlegroundNodes BG_AB_ALL_NODES_COUNT = 7 // all nodes (dynamic and static) }; +enum BG_AB_BroadcastTexts +{ + BG_AB_TEXT_ALLIANCE_NEAR_VICTORY = 10598, + BG_AB_TEXT_HORDE_NEAR_VICTORY = 10599, +}; + +struct ABNodeInfo +{ + uint32 NodeId; + uint32 TextAllianceAssaulted; + uint32 TextHordeAssaulted; + uint32 TextAllianceTaken; + uint32 TextHordeTaken; + uint32 TextAllianceDefended; + uint32 TextHordeDefended; + uint32 TextAllianceClaims; + uint32 TextHordeClaims; +}; + +ABNodeInfo const ABNodes[BG_AB_DYNAMIC_NODES_COUNT] = +{ + { BG_AB_NODE_STABLES, 10199, 10200, 10203, 10204, 10201, 10202, 10286, 10287 }, + { BG_AB_NODE_BLACKSMITH, 10211, 10212, 10213, 10214, 10215, 10216, 10290, 10291 }, + { BG_AB_NODE_FARM, 10217, 10218, 10219, 10220, 10221, 10222, 10288, 10289 }, + { BG_AB_NODE_LUMBER_MILL, 10224, 10225, 10226, 10227, 10228, 10229, 10284, 10285 }, + { BG_AB_NODE_GOLD_MINE, 10230, 10231, 10232, 10233, 10234, 10235, 10282, 10283 } +}; + enum BG_AB_NodeStatus { BG_AB_NODE_TYPE_NEUTRAL = 0, @@ -315,8 +343,6 @@ class BattlegroundAB : public Battleground void _NodeOccupied(uint8 node, Team team); void _NodeDeOccupied(uint8 node); - int32 _GetNodeNameId(uint8 node); - /* Nodes info: 0: neutral 1: ally contested diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 30ca2f94a6..d6bf87e458 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -22,7 +22,6 @@ #include "WorldPacket.h" #include "GameObject.h" -#include "Language.h" #include "Player.h" #include "ScriptedCreature.h" #include "WorldSession.h" @@ -50,10 +49,9 @@ BattlegroundAV::BattlegroundAV() for (BG_AV_Nodes i = BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i) InitNode(i, 0, false); - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_AV_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_AV_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_AV_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_AV_HAS_BEGUN; + StartMessageIds[BG_STARTING_EVENT_SECOND] = BG_AV_TEXT_START_ONE_MINUTE; + StartMessageIds[BG_STARTING_EVENT_THIRD] = BG_AV_TEXT_START_HALF_MINUTE; + StartMessageIds[BG_STARTING_EVENT_FOURTH] = BG_AV_TEXT_BATTLE_HAS_BEGUN; } BattlegroundAV::~BattlegroundAV() { } @@ -263,7 +261,10 @@ void BattlegroundAV::UpdateScore(uint16 team, int16 points) } else if (!m_IsInformedNearVictory[teamindex] && m_Team_Scores[teamindex] < SEND_MSG_NEAR_LOSE) { - SendMessageToAll(teamindex == TEAM_HORDE?LANG_BG_AV_H_NEAR_LOSE:LANG_BG_AV_A_NEAR_LOSE, teamindex == TEAM_HORDE ? CHAT_MSG_BG_SYSTEM_HORDE : CHAT_MSG_BG_SYSTEM_ALLIANCE); + if (teamindex == TEAM_ALLIANCE) + SendBroadcastText(BG_AV_TEXT_ALLIANCE_NEAR_LOSE, CHAT_MSG_BG_SYSTEM_ALLIANCE); + else + SendBroadcastText(BG_AV_TEXT_HORDE_NEAR_LOSE, CHAT_MSG_BG_SYSTEM_HORDE); PlaySoundToAll(AV_SOUND_NEAR_VICTORY); m_IsInformedNearVictory[teamindex] = true; } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h index 6e54a5b3ed..c63f544782 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h @@ -55,6 +55,16 @@ enum SharedActions ACTION_BUFF_YELL = -30001 }; +enum BG_AV_BroadcastTexts +{ + BG_AV_TEXT_START_ONE_MINUTE = 10638, + BG_AV_TEXT_START_HALF_MINUTE = 10639, + BG_AV_TEXT_BATTLE_HAS_BEGUN = 10640, + + BG_AV_TEXT_ALLIANCE_NEAR_LOSE = 23210, + BG_AV_TEXT_HORDE_NEAR_LOSE = 23211 +}; + enum BG_AV_Sounds { /// @todo: get out if there comes a sound when neutral team captures mine diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index b7a72e26f9..03e0a4e58c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -20,7 +20,6 @@ #include "WorldPacket.h" #include "BattlegroundMgr.h" #include "Creature.h" -#include "Language.h" #include "Player.h" #include "Util.h" #include "ObjectAccessor.h" @@ -63,11 +62,6 @@ BattlegroundEY::BattlegroundEY() for (uint8 i = 0; i < 2 * EY_POINTS_MAX; ++i) m_CurrentPointPlayersCount[i] = 0; - - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_EY_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_EY_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_EY_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_EY_HAS_BEGUN; } BattlegroundEY::~BattlegroundEY() { } @@ -292,16 +286,6 @@ void BattlegroundEY::UpdatePointStatuses() void BattlegroundEY::UpdateTeamScore(uint32 Team) { uint32 score = GetTeamScore(Team); - /// @todo there should be some sound played when one team is near victory!! - and define variables - /*if (!m_IsInformedNearVictory && score >= BG_EY_WARNING_NEAR_VICTORY_SCORE) - { - if (Team == ALLIANCE) - SendMessageToAll(LANG_BG_EY_A_NEAR_VICTORY, CHAT_MSG_BG_SYSTEM_NEUTRAL); - else - SendMessageToAll(LANG_BG_EY_H_NEAR_VICTORY, CHAT_MSG_BG_SYSTEM_NEUTRAL); - PlaySoundToAll(BG_EY_SOUND_NEAR_VICTORY); - m_IsInformedNearVictory = true; - }*/ if (score >= BG_EY_MAX_TEAM_SCORE) { @@ -578,7 +562,7 @@ void BattlegroundEY::RespawnFlag(bool send_message) if (send_message) { - SendMessageToAll(LANG_BG_EY_RESETED_FLAG, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_EY_TEXT_FLAG_RESET, CHAT_MSG_BG_SYSTEM_NEUTRAL); PlaySoundToAll(BG_EY_SOUND_FLAG_RESET); // flags respawned sound... } @@ -639,9 +623,9 @@ void BattlegroundEY::EventPlayerDroppedFlag(Player* player) UpdateWorldState(NETHERSTORM_FLAG_STATE_ALLIANCE, BG_EY_FLAG_STATE_WAIT_RESPAWN); if (player->GetTeam() == ALLIANCE) - SendMessageToAll(LANG_BG_EY_DROPPED_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, NULL); + SendBroadcastText(BG_EY_TEXT_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_ALLIANCE); else - SendMessageToAll(LANG_BG_EY_DROPPED_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, NULL); + SendBroadcastText(BG_EY_TEXT_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_HORDE); } void BattlegroundEY::EventPlayerClickedOnFlag(Player* player, GameObject* target_obj) @@ -671,9 +655,9 @@ void BattlegroundEY::EventPlayerClickedOnFlag(Player* player, GameObject* target player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT); if (player->GetTeam() == ALLIANCE) - PSendMessageToAll(LANG_BG_EY_HAS_TAKEN_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, NULL, player->GetName().c_str()); + SendBroadcastText(BG_EY_TEXT_TAKEN_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); else - PSendMessageToAll(LANG_BG_EY_HAS_TAKEN_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, NULL, player->GetName().c_str()); + SendBroadcastText(BG_EY_TEXT_TAKEN_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, player); } void BattlegroundEY::EventTeamLostPoint(Player* player, uint32 Point) @@ -712,10 +696,9 @@ void BattlegroundEY::EventTeamLostPoint(Player* player, uint32 Point) m_PointState[Point] = EY_POINT_NO_OWNER; if (Team == ALLIANCE) - SendMessageToAll(m_LosingPointTypes[Point].MessageIdAlliance, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); + SendBroadcastText(m_LosingPointTypes[Point].MessageIdAlliance, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); else - SendMessageToAll(m_LosingPointTypes[Point].MessageIdHorde, CHAT_MSG_BG_SYSTEM_HORDE, player); - + SendBroadcastText(m_LosingPointTypes[Point].MessageIdHorde, CHAT_MSG_BG_SYSTEM_HORDE, player); UpdatePointsIcons(Team, Point); UpdatePointsCount(Team); @@ -755,9 +738,9 @@ void BattlegroundEY::EventTeamCapturedPoint(Player* player, uint32 Point) m_PointState[Point] = EY_POINT_UNDER_CONTROL; if (Team == ALLIANCE) - SendMessageToAll(m_CapturingPointTypes[Point].MessageIdAlliance, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); + SendBroadcastText(m_CapturingPointTypes[Point].MessageIdAlliance, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); else - SendMessageToAll(m_CapturingPointTypes[Point].MessageIdHorde, CHAT_MSG_BG_SYSTEM_HORDE, player); + SendBroadcastText(m_CapturingPointTypes[Point].MessageIdHorde, CHAT_MSG_BG_SYSTEM_HORDE, player); if (BgCreatures[Point]) DelCreature(Point); @@ -798,27 +781,22 @@ void BattlegroundEY::EventPlayerCapturedFlag(Player* player, uint32 BgObjectType player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT); if (player->GetTeam() == ALLIANCE) + { + SendBroadcastText(BG_EY_TEXT_ALLIANCE_CAPTURED_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); PlaySoundToAll(BG_EY_SOUND_FLAG_CAPTURED_ALLIANCE); + } else + { + SendBroadcastText(BG_EY_TEXT_HORDE_CAPTURED_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, player); PlaySoundToAll(BG_EY_SOUND_FLAG_CAPTURED_HORDE); + } SpawnBGObject(BgObjectType, RESPAWN_IMMEDIATELY); m_FlagsTimer = BG_EY_FLAG_RESPAWN_TIME; m_FlagCapturedBgObjectType = BgObjectType; - uint8 team_id = 0; - if (player->GetTeam() == ALLIANCE) - { - team_id = TEAM_ALLIANCE; - SendMessageToAll(LANG_BG_EY_CAPTURED_FLAG_A, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); - } - else - { - team_id = TEAM_HORDE; - SendMessageToAll(LANG_BG_EY_CAPTURED_FLAG_H, CHAT_MSG_BG_SYSTEM_HORDE, player); - } - + uint8 team_id = player->GetTeam() == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE; if (m_TeamPointsCount[team_id] > 0) AddPoints(player->GetTeam(), BG_EY_FlagPoints[m_TeamPointsCount[team_id] - 1]); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h index 100d456080..0e14db82c8 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.h @@ -21,7 +21,6 @@ #include "Battleground.h" #include "BattlegroundScore.h" -#include "Language.h" #include "Object.h" enum BG_EY_Misc @@ -248,6 +247,35 @@ enum BG_EY_Objectives EY_OBJECTIVE_CAPTURE_FLAG = 183 }; +enum BG_EY_BroadcastTexts +{ + BG_EY_TEXT_ALLIANCE_TAKEN_FEL_REAVER_RUINS = 17828, + BG_EY_TEXT_HORDE_TAKEN_FEL_REAVER_RUINS = 17829, + BG_EY_TEXT_ALLIANCE_LOST_FEL_REAVER_RUINS = 17835, + BG_EY_TEXT_HORDE_LOST_FEL_REAVER_RUINS = 17836, + + BG_EY_TEXT_ALLIANCE_TAKEN_BLOOD_ELF_TOWER = 17819, + BG_EY_TEXT_HORDE_TAKEN_BLOOD_ELF_TOWER = 17823, + BG_EY_TEXT_ALLIANCE_LOST_BLOOD_ELF_TOWER = 17831, + BG_EY_TEXT_HORDE_LOST_BLOOD_ELF_TOWER = 17832, + + BG_EY_TEXT_ALLIANCE_TAKEN_DRAENEI_RUINS = 17826, + BG_EY_TEXT_HORDE_TAKEN_DRAENEI_RUINS = 17827, + BG_EY_TEXT_ALLIANCE_LOST_DRAENEI_RUINS = 17833, + BG_EY_TEXT_HORDE_LOST_DRAENEI_RUINS = 17834, + + BG_EY_TEXT_ALLIANCE_TAKEN_MAGE_TOWER = 17824, + BG_EY_TEXT_HORDE_TAKEN_MAGE_TOWER = 17825, + BG_EY_TEXT_ALLIANCE_LOST_MAGE_TOWER = 17837, + BG_EY_TEXT_HORDE_LOST_MAGE_TOWER = 17838, + + BG_EY_TEXT_TAKEN_FLAG = 18359, + BG_EY_TEXT_FLAG_DROPPED = 18361, + BG_EY_TEXT_FLAG_RESET = 18364, + BG_EY_TEXT_ALLIANCE_CAPTURED_FLAG = 18375, + BG_EY_TEXT_HORDE_CAPTURED_FLAG = 18384, +}; + struct BattlegroundEYPointIconsStruct { BattlegroundEYPointIconsStruct(uint32 _WorldStateControlIndex, uint32 _WorldStateAllianceControlledIndex, uint32 _WorldStateHordeControlledIndex) @@ -310,17 +338,17 @@ const BattlegroundEYPointIconsStruct m_PointsIconStruct[EY_POINTS_MAX] = }; const BattlegroundEYLosingPointStruct m_LosingPointTypes[EY_POINTS_MAX] = { - BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_FEL_REAVER_CENTER, BG_EY_OBJECT_A_BANNER_FEL_REAVER_CENTER, LANG_BG_EY_HAS_LOST_A_F_RUINS, BG_EY_OBJECT_H_BANNER_FEL_REAVER_CENTER, LANG_BG_EY_HAS_LOST_H_F_RUINS), - BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_BLOOD_ELF_CENTER, BG_EY_OBJECT_A_BANNER_BLOOD_ELF_CENTER, LANG_BG_EY_HAS_LOST_A_B_TOWER, BG_EY_OBJECT_H_BANNER_BLOOD_ELF_CENTER, LANG_BG_EY_HAS_LOST_H_B_TOWER), - BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_DRAENEI_RUINS_CENTER, BG_EY_OBJECT_A_BANNER_DRAENEI_RUINS_CENTER, LANG_BG_EY_HAS_LOST_A_D_RUINS, BG_EY_OBJECT_H_BANNER_DRAENEI_RUINS_CENTER, LANG_BG_EY_HAS_LOST_H_D_RUINS), - BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_MAGE_TOWER_CENTER, BG_EY_OBJECT_A_BANNER_MAGE_TOWER_CENTER, LANG_BG_EY_HAS_LOST_A_M_TOWER, BG_EY_OBJECT_H_BANNER_MAGE_TOWER_CENTER, LANG_BG_EY_HAS_LOST_H_M_TOWER) + BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_FEL_REAVER_CENTER, BG_EY_OBJECT_A_BANNER_FEL_REAVER_CENTER, BG_EY_TEXT_ALLIANCE_LOST_FEL_REAVER_RUINS, BG_EY_OBJECT_H_BANNER_FEL_REAVER_CENTER, BG_EY_TEXT_HORDE_LOST_FEL_REAVER_RUINS), + BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_BLOOD_ELF_CENTER, BG_EY_OBJECT_A_BANNER_BLOOD_ELF_CENTER, BG_EY_TEXT_ALLIANCE_LOST_BLOOD_ELF_TOWER, BG_EY_OBJECT_H_BANNER_BLOOD_ELF_CENTER, BG_EY_TEXT_HORDE_LOST_BLOOD_ELF_TOWER), + BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_DRAENEI_RUINS_CENTER, BG_EY_OBJECT_A_BANNER_DRAENEI_RUINS_CENTER, BG_EY_TEXT_ALLIANCE_LOST_DRAENEI_RUINS, BG_EY_OBJECT_H_BANNER_DRAENEI_RUINS_CENTER, BG_EY_TEXT_HORDE_LOST_DRAENEI_RUINS), + BattlegroundEYLosingPointStruct(BG_EY_OBJECT_N_BANNER_MAGE_TOWER_CENTER, BG_EY_OBJECT_A_BANNER_MAGE_TOWER_CENTER, BG_EY_TEXT_ALLIANCE_LOST_MAGE_TOWER, BG_EY_OBJECT_H_BANNER_MAGE_TOWER_CENTER, BG_EY_TEXT_HORDE_LOST_MAGE_TOWER) }; const BattlegroundEYCapturingPointStruct m_CapturingPointTypes[EY_POINTS_MAX] = { - BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_FEL_REAVER_CENTER, BG_EY_OBJECT_A_BANNER_FEL_REAVER_CENTER, LANG_BG_EY_HAS_TAKEN_A_F_RUINS, BG_EY_OBJECT_H_BANNER_FEL_REAVER_CENTER, LANG_BG_EY_HAS_TAKEN_H_F_RUINS, EY_GRAVEYARD_FEL_REAVER), - BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_BLOOD_ELF_CENTER, BG_EY_OBJECT_A_BANNER_BLOOD_ELF_CENTER, LANG_BG_EY_HAS_TAKEN_A_B_TOWER, BG_EY_OBJECT_H_BANNER_BLOOD_ELF_CENTER, LANG_BG_EY_HAS_TAKEN_H_B_TOWER, EY_GRAVEYARD_BLOOD_ELF), - BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_DRAENEI_RUINS_CENTER, BG_EY_OBJECT_A_BANNER_DRAENEI_RUINS_CENTER, LANG_BG_EY_HAS_TAKEN_A_D_RUINS, BG_EY_OBJECT_H_BANNER_DRAENEI_RUINS_CENTER, LANG_BG_EY_HAS_TAKEN_H_D_RUINS, EY_GRAVEYARD_DRAENEI_RUINS), - BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_MAGE_TOWER_CENTER, BG_EY_OBJECT_A_BANNER_MAGE_TOWER_CENTER, LANG_BG_EY_HAS_TAKEN_A_M_TOWER, BG_EY_OBJECT_H_BANNER_MAGE_TOWER_CENTER, LANG_BG_EY_HAS_TAKEN_H_M_TOWER, EY_GRAVEYARD_MAGE_TOWER) + BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_FEL_REAVER_CENTER, BG_EY_OBJECT_A_BANNER_FEL_REAVER_CENTER, BG_EY_TEXT_ALLIANCE_TAKEN_FEL_REAVER_RUINS, BG_EY_OBJECT_H_BANNER_FEL_REAVER_CENTER, BG_EY_TEXT_HORDE_TAKEN_FEL_REAVER_RUINS, EY_GRAVEYARD_FEL_REAVER), + BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_BLOOD_ELF_CENTER, BG_EY_OBJECT_A_BANNER_BLOOD_ELF_CENTER, BG_EY_TEXT_ALLIANCE_TAKEN_BLOOD_ELF_TOWER, BG_EY_OBJECT_H_BANNER_BLOOD_ELF_CENTER, BG_EY_TEXT_HORDE_TAKEN_BLOOD_ELF_TOWER, EY_GRAVEYARD_BLOOD_ELF), + BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_DRAENEI_RUINS_CENTER, BG_EY_OBJECT_A_BANNER_DRAENEI_RUINS_CENTER, BG_EY_TEXT_ALLIANCE_TAKEN_DRAENEI_RUINS, BG_EY_OBJECT_H_BANNER_DRAENEI_RUINS_CENTER, BG_EY_TEXT_HORDE_TAKEN_DRAENEI_RUINS, EY_GRAVEYARD_DRAENEI_RUINS), + BattlegroundEYCapturingPointStruct(BG_EY_OBJECT_N_BANNER_MAGE_TOWER_CENTER, BG_EY_OBJECT_A_BANNER_MAGE_TOWER_CENTER, BG_EY_TEXT_ALLIANCE_TAKEN_MAGE_TOWER, BG_EY_OBJECT_H_BANNER_MAGE_TOWER_CENTER, BG_EY_TEXT_HORDE_TAKEN_MAGE_TOWER, EY_GRAVEYARD_MAGE_TOWER) }; struct BattlegroundEYScore final : public BattlegroundScore diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index 6db5c73a4f..075377d4e6 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -19,7 +19,6 @@ #include "Player.h" #include "Battleground.h" #include "BattlegroundIC.h" -#include "Language.h" #include "WorldPacket.h" #include "GameObject.h" #include "ObjectMgr.h" @@ -32,11 +31,6 @@ BattlegroundIC::BattlegroundIC() BgObjects.resize(MAX_NORMAL_GAMEOBJECTS_SPAWNS + MAX_AIRSHIPS_SPAWNS + MAX_HANGAR_TELEPORTERS_SPAWNS + MAX_FORTRESS_TELEPORTERS_SPAWNS + MAX_HANGAR_TELEPORTER_EFFECTS_SPAWNS + MAX_FORTRESS_TELEPORTER_EFFECTS_SPAWNS); BgCreatures.resize(MAX_NORMAL_NPCS_SPAWNS + MAX_WORKSHOP_SPAWNS + MAX_DOCKS_SPAWNS + MAX_SPIRIT_GUIDES_SPAWNS + MAX_HANGAR_NPCS_SPAWNS); - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_IC_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_IC_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_IC_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_IC_HAS_BEGUN; - for (uint8 i = 0; i < 2; ++i) factionReinforcements[i] = MAX_REINFORCEMENTS; @@ -192,7 +186,10 @@ void BattlegroundIC::PostUpdateImpl(uint32 diff) UpdateNodeWorldState(&nodePoint[i]); HandleCapturedNodes(&nodePoint[i], false); - SendMessage2ToAll(LANG_BG_IC_TEAM_HAS_TAKEN_NODE, CHAT_MSG_BG_SYSTEM_NEUTRAL, NULL, (nodePoint[i].faction == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE), nodePoint[i].string); + if (nodePoint[i].faction == TEAM_ALLIANCE) + SendBroadcastText(ICNodes[i].TextAllianceTaken, CHAT_MSG_BG_SYSTEM_ALLIANCE); + else + SendBroadcastText(ICNodes[i].TextHordeTaken, CHAT_MSG_BG_SYSTEM_HORDE); nodePoint[i].needChange = false; nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; @@ -414,13 +411,6 @@ void BattlegroundIC::HandleKillPlayer(Player* player, Player* killer) EndBattleground(killer->GetTeam()); } -void BattlegroundIC::EndBattleground(uint32 winner) -{ - SendMessage2ToAll(LANG_BG_IC_TEAM_WINS, CHAT_MSG_BG_SYSTEM_NEUTRAL, NULL, (winner == ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE)); - - Battleground::EndBattleground(winner); -} - void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target_obj) { if (GetStatus() != STATUS_IN_PROGRESS) @@ -458,15 +448,23 @@ void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target UpdatePlayerScore(player, SCORE_BASES_ASSAULTED, 1); - SendMessage2ToAll(LANG_BG_IC_TEAM_ASSAULTED_NODE_1, CHAT_MSG_BG_SYSTEM_NEUTRAL, player, nodePoint[i].string); - SendMessage2ToAll(LANG_BG_IC_TEAM_ASSAULTED_NODE_2, CHAT_MSG_BG_SYSTEM_NEUTRAL, player, nodePoint[i].string, (player->GetTeamId() == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE)); + if (nodePoint[i].faction == TEAM_ALLIANCE) + SendBroadcastText(ICNodes[i].TextAssaulted, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); + else + SendBroadcastText(ICNodes[i].TextAssaulted, CHAT_MSG_BG_SYSTEM_HORDE, player); + HandleContestedNodes(&nodePoint[i]); } else if (nextBanner == nodePoint[i].banners[BANNER_A_CONTROLLED] || nextBanner == nodePoint[i].banners[BANNER_H_CONTROLLED]) // if we are going to spawn the definitve faction banner, we dont need the timer anymore { nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; nodePoint[i].needChange = false; - SendMessage2ToAll(LANG_BG_IC_TEAM_DEFENDED_NODE, CHAT_MSG_BG_SYSTEM_NEUTRAL, player, nodePoint[i].string); + + if (nodePoint[i].faction == TEAM_ALLIANCE) + SendBroadcastText(ICNodes[i].TextDefended, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); + else + SendBroadcastText(ICNodes[i].TextDefended, CHAT_MSG_BG_SYSTEM_HORDE, player); + HandleCapturedNodes(&nodePoint[i], true); UpdatePlayerScore(player, SCORE_BASES_DEFENDED, 1); } @@ -809,26 +807,36 @@ void BattlegroundIC::DestroyGate(Player* player, GameObject* go) GetBGObject(BG_IC_GO_ALLIANCE_BANNER)->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); } - uint32 lang_entry = 0; - + uint32 textId; + ChatMsg msgType; switch (go->GetEntry()) { case GO_HORDE_GATE_1: - lang_entry = LANG_BG_IC_NORTH_GATE_DESTROYED; + textId = BG_IC_TEXT_FRONT_GATE_HORDE_DESTROYED; + msgType = CHAT_MSG_BG_SYSTEM_ALLIANCE; break; case GO_HORDE_GATE_2: - case GO_ALLIANCE_GATE_1: - lang_entry = LANG_BG_IC_WEST_GATE_DESTROYED; + textId = BG_IC_TEXT_WEST_GATE_HORDE_DESTROYED; + msgType = CHAT_MSG_BG_SYSTEM_ALLIANCE; break; case GO_HORDE_GATE_3: + textId = BG_IC_TEXT_EAST_GATE_HORDE_DESTROYED; + msgType = CHAT_MSG_BG_SYSTEM_ALLIANCE; + break; + case GO_ALLIANCE_GATE_1: + textId = BG_IC_TEXT_WEST_GATE_ALLIANCE_DESTROYED; + msgType = CHAT_MSG_BG_SYSTEM_HORDE; + break; case GO_ALLIANCE_GATE_2: - lang_entry = LANG_BG_IC_EAST_GATE_DESTROYED; + textId = BG_IC_TEXT_EAST_GATE_ALLIANCE_DESTROYED; + msgType = CHAT_MSG_BG_SYSTEM_HORDE; break; case GO_ALLIANCE_GATE_3: - lang_entry = LANG_BG_IC_SOUTH_GATE_DESTROYED; + textId = BG_IC_TEXT_FRONT_GATE_ALLIANCE_DESTROYED; + msgType = CHAT_MSG_BG_SYSTEM_HORDE; break; default: - break; + return; } if (go->GetEntry() == GO_HORDE_GATE_1 || go->GetEntry() == GO_HORDE_GATE_2 || go->GetEntry() == GO_HORDE_GATE_3) @@ -842,7 +850,7 @@ void BattlegroundIC::DestroyGate(Player* player, GameObject* go) TC_LOG_ERROR("bg.battleground", "Isle of Conquest: There was an error spawning creature %u", BG_IC_NpcSpawnlocs[BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE].entry); } - SendMessage2ToAll(lang_entry, CHAT_MSG_BG_SYSTEM_NEUTRAL, NULL, (player->GetTeamId() == TEAM_ALLIANCE ? LANG_BG_IC_HORDE_KEEP : LANG_BG_IC_ALLIANCE_KEEP)); + SendBroadcastText(textId, msgType); } WorldSafeLocsEntry const* BattlegroundIC::GetClosestGraveYard(Player* player) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h index bab8035788..c30847282f 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h @@ -21,7 +21,6 @@ #include "Battleground.h" #include "BattlegroundScore.h" -#include "Language.h" #include "Object.h" const uint32 BG_IC_Factions[2] = @@ -847,6 +846,36 @@ Position const BG_IC_SpiritGuidePos[MAX_NODE_TYPES+2] = {1148.65f, -1250.98f, 16.60f, 1.74f}, // last resort horde }; +enum ICBroadcastTexts +{ + BG_IC_TEXT_FRONT_GATE_HORDE_DESTROYED = 35409, + BG_IC_TEXT_FRONT_GATE_ALLIANCE_DESTROYED = 35410, + BG_IC_TEXT_WEST_GATE_HORDE_DESTROYED = 35411, + BG_IC_TEXT_WEST_GATE_ALLIANCE_DESTROYED = 35412, + BG_IC_TEXT_EAST_GATE_HORDE_DESTROYED = 35413, + BG_IC_TEXT_EAST_GATE_ALLIANCE_DESTROYED = 35414 +}; + +struct ICNodeInfo +{ + uint32 NodeId; + uint32 TextAssaulted; + uint32 TextDefended; + uint32 TextAllianceTaken; + uint32 TextHordeTaken; +}; + +ICNodeInfo const ICNodes[MAX_NODE_TYPES] = +{ + { NODE_TYPE_REFINERY, 35377, 35378, 35379, 35380 }, + { NODE_TYPE_QUARRY, 35373, 35374, 35375, 35376 }, + { NODE_TYPE_DOCKS, 35365, 35366, 35367, 35368 }, + { NODE_TYPE_HANGAR, 35369, 35370, 35371, 35372 }, + { NODE_TYPE_WORKSHOP, 35278, 35286, 35279, 35280 }, + { NODE_TYPE_GRAVEYARD_A, 35461, 35459, 35463, 35466 }, + { NODE_TYPE_GRAVEYARD_H, 35462, 35460, 35464, 35465 } +}; + // I.E: Hangar, Quarry, Graveyards .. etc struct ICNodePoint { @@ -860,18 +889,17 @@ struct ICNodePoint uint32 last_entry; // the last gameobject_entry uint32 worldStates[5]; // the worldstates that represent the node in the map ICNodeState nodeState; - uint32 string; }; -const ICNodePoint nodePointInitial[7] = +const ICNodePoint nodePointInitial[MAX_NODE_TYPES] = { - {BG_IC_GO_REFINERY_BANNER, GO_REFINERY_BANNER, TEAM_NEUTRAL, NODE_TYPE_REFINERY, {GO_ALLIANCE_BANNER_REFINERY, GO_ALLIANCE_BANNER_REFINERY_CONT, GO_HORDE_BANNER_REFINERY, GO_HORDE_BANNER_REFINERY_CONT}, false, 0, 0, {BG_IC_REFINERY_UNCONTROLLED, BG_IC_REFINERY_CONFLICT_A, BG_IC_REFINERY_CONFLICT_H, BG_IC_REFINERY_CONTROLLED_A, BG_IC_REFINERY_CONTROLLED_H}, NODE_STATE_UNCONTROLLED, LANG_BG_IC_REFINERY}, - {BG_IC_GO_QUARRY_BANNER, GO_QUARRY_BANNER, TEAM_NEUTRAL, NODE_TYPE_QUARRY, {GO_ALLIANCE_BANNER_QUARRY, GO_ALLIANCE_BANNER_QUARRY_CONT, GO_HORDE_BANNER_QUARRY, GO_HORDE_BANNER_QUARRY_CONT}, false, 0, 0, {BG_IC_QUARRY_UNCONTROLLED, BG_IC_QUARRY_CONFLICT_A, BG_IC_QUARRY_CONFLICT_H, BG_IC_QUARRY_CONTROLLED_A, BG_IC_QUARRY_CONTROLLED_H}, NODE_STATE_UNCONTROLLED, LANG_BG_IC_QUARRY}, - {BG_IC_GO_DOCKS_BANNER, GO_DOCKS_BANNER, TEAM_NEUTRAL, NODE_TYPE_DOCKS, {GO_ALLIANCE_BANNER_DOCK, GO_ALLIANCE_BANNER_DOCK_CONT, GO_HORDE_BANNER_DOCK, GO_HORDE_BANNER_DOCK_CONT}, false, 0, 0, {BG_IC_DOCKS_UNCONTROLLED, BG_IC_DOCKS_CONFLICT_A, BG_IC_DOCKS_CONFLICT_H, BG_IC_DOCKS_CONTROLLED_A, BG_IC_DOCKS_CONTROLLED_H}, NODE_STATE_UNCONTROLLED, LANG_BG_IC_DOCKS}, - {BG_IC_GO_HANGAR_BANNER, GO_HANGAR_BANNER, TEAM_NEUTRAL, NODE_TYPE_HANGAR, {GO_ALLIANCE_BANNER_HANGAR, GO_ALLIANCE_BANNER_HANGAR_CONT, GO_HORDE_BANNER_HANGAR, GO_HORDE_BANNER_HANGAR_CONT}, false, 0, 0, {BG_IC_HANGAR_UNCONTROLLED, BG_IC_HANGAR_CONFLICT_A, BG_IC_HANGAR_CONFLICT_H, BG_IC_HANGAR_CONTROLLED_A, BG_IC_HANGAR_CONTROLLED_H}, NODE_STATE_UNCONTROLLED, LANG_BG_IC_HANGAR}, - {BG_IC_GO_WORKSHOP_BANNER, GO_WORKSHOP_BANNER, TEAM_NEUTRAL, NODE_TYPE_WORKSHOP, {GO_ALLIANCE_BANNER_WORKSHOP, GO_ALLIANCE_BANNER_WORKSHOP_CONT, GO_HORDE_BANNER_WORKSHOP, GO_HORDE_BANNER_WORKSHOP_CONT}, false, 0, 0, {BG_IC_WORKSHOP_UNCONTROLLED, BG_IC_WORKSHOP_CONFLICT_A, BG_IC_WORKSHOP_CONFLICT_H, BG_IC_WORKSHOP_CONTROLLED_A, BG_IC_WORKSHOP_CONTROLLED_H}, NODE_STATE_UNCONTROLLED, LANG_BG_IC_WORKSHOP}, - {BG_IC_GO_ALLIANCE_BANNER, GO_ALLIANCE_BANNER, TEAM_ALLIANCE, NODE_TYPE_GRAVEYARD_A, {GO_ALLIANCE_BANNER_GRAVEYARD_A, GO_ALLIANCE_BANNER_GRAVEYARD_A_CONT, GO_HORDE_BANNER_GRAVEYARD_A, GO_HORDE_BANNER_GRAVEYARD_A_CONT}, false, 0, 0, {BG_IC_ALLIANCE_KEEP_UNCONTROLLED, BG_IC_ALLIANCE_KEEP_CONFLICT_A, BG_IC_ALLIANCE_KEEP_CONFLICT_H, BG_IC_ALLIANCE_KEEP_CONTROLLED_A, BG_IC_ALLIANCE_KEEP_CONTROLLED_H}, NODE_STATE_CONTROLLED_A, LANG_BG_IC_ALLIANCE_KEEP}, - {BG_IC_GO_HORDE_BANNER, GO_HORDE_BANNER, TEAM_HORDE, NODE_TYPE_GRAVEYARD_H, {GO_ALLIANCE_BANNER_GRAVEYARD_H, GO_ALLIANCE_BANNER_GRAVEYARD_H_CONT, GO_HORDE_BANNER_GRAVEYARD_H, GO_HORDE_BANNER_GRAVEYARD_H_CONT}, false, 0, 0, {BG_IC_HORDE_KEEP_UNCONTROLLED, BG_IC_HORDE_KEEP_CONFLICT_A, BG_IC_HORDE_KEEP_CONFLICT_H, BG_IC_HORDE_KEEP_CONTROLLED_A, BG_IC_HORDE_KEEP_CONTROLLED_H}, NODE_STATE_CONTROLLED_H, LANG_BG_IC_HORDE_KEEP} + {BG_IC_GO_REFINERY_BANNER, GO_REFINERY_BANNER, TEAM_NEUTRAL, NODE_TYPE_REFINERY, {GO_ALLIANCE_BANNER_REFINERY, GO_ALLIANCE_BANNER_REFINERY_CONT, GO_HORDE_BANNER_REFINERY, GO_HORDE_BANNER_REFINERY_CONT}, false, 0, 0, {BG_IC_REFINERY_UNCONTROLLED, BG_IC_REFINERY_CONFLICT_A, BG_IC_REFINERY_CONFLICT_H, BG_IC_REFINERY_CONTROLLED_A, BG_IC_REFINERY_CONTROLLED_H}, NODE_STATE_UNCONTROLLED}, + {BG_IC_GO_QUARRY_BANNER, GO_QUARRY_BANNER, TEAM_NEUTRAL, NODE_TYPE_QUARRY, {GO_ALLIANCE_BANNER_QUARRY, GO_ALLIANCE_BANNER_QUARRY_CONT, GO_HORDE_BANNER_QUARRY, GO_HORDE_BANNER_QUARRY_CONT}, false, 0, 0, {BG_IC_QUARRY_UNCONTROLLED, BG_IC_QUARRY_CONFLICT_A, BG_IC_QUARRY_CONFLICT_H, BG_IC_QUARRY_CONTROLLED_A, BG_IC_QUARRY_CONTROLLED_H}, NODE_STATE_UNCONTROLLED}, + {BG_IC_GO_DOCKS_BANNER, GO_DOCKS_BANNER, TEAM_NEUTRAL, NODE_TYPE_DOCKS, {GO_ALLIANCE_BANNER_DOCK, GO_ALLIANCE_BANNER_DOCK_CONT, GO_HORDE_BANNER_DOCK, GO_HORDE_BANNER_DOCK_CONT}, false, 0, 0, {BG_IC_DOCKS_UNCONTROLLED, BG_IC_DOCKS_CONFLICT_A, BG_IC_DOCKS_CONFLICT_H, BG_IC_DOCKS_CONTROLLED_A, BG_IC_DOCKS_CONTROLLED_H}, NODE_STATE_UNCONTROLLED}, + {BG_IC_GO_HANGAR_BANNER, GO_HANGAR_BANNER, TEAM_NEUTRAL, NODE_TYPE_HANGAR, {GO_ALLIANCE_BANNER_HANGAR, GO_ALLIANCE_BANNER_HANGAR_CONT, GO_HORDE_BANNER_HANGAR, GO_HORDE_BANNER_HANGAR_CONT}, false, 0, 0, {BG_IC_HANGAR_UNCONTROLLED, BG_IC_HANGAR_CONFLICT_A, BG_IC_HANGAR_CONFLICT_H, BG_IC_HANGAR_CONTROLLED_A, BG_IC_HANGAR_CONTROLLED_H}, NODE_STATE_UNCONTROLLED}, + {BG_IC_GO_WORKSHOP_BANNER, GO_WORKSHOP_BANNER, TEAM_NEUTRAL, NODE_TYPE_WORKSHOP, {GO_ALLIANCE_BANNER_WORKSHOP, GO_ALLIANCE_BANNER_WORKSHOP_CONT, GO_HORDE_BANNER_WORKSHOP, GO_HORDE_BANNER_WORKSHOP_CONT}, false, 0, 0, {BG_IC_WORKSHOP_UNCONTROLLED, BG_IC_WORKSHOP_CONFLICT_A, BG_IC_WORKSHOP_CONFLICT_H, BG_IC_WORKSHOP_CONTROLLED_A, BG_IC_WORKSHOP_CONTROLLED_H}, NODE_STATE_UNCONTROLLED}, + {BG_IC_GO_ALLIANCE_BANNER, GO_ALLIANCE_BANNER, TEAM_ALLIANCE, NODE_TYPE_GRAVEYARD_A, {GO_ALLIANCE_BANNER_GRAVEYARD_A, GO_ALLIANCE_BANNER_GRAVEYARD_A_CONT, GO_HORDE_BANNER_GRAVEYARD_A, GO_HORDE_BANNER_GRAVEYARD_A_CONT}, false, 0, 0, {BG_IC_ALLIANCE_KEEP_UNCONTROLLED, BG_IC_ALLIANCE_KEEP_CONFLICT_A, BG_IC_ALLIANCE_KEEP_CONFLICT_H, BG_IC_ALLIANCE_KEEP_CONTROLLED_A, BG_IC_ALLIANCE_KEEP_CONTROLLED_H}, NODE_STATE_CONTROLLED_A}, + {BG_IC_GO_HORDE_BANNER, GO_HORDE_BANNER, TEAM_HORDE, NODE_TYPE_GRAVEYARD_H, {GO_ALLIANCE_BANNER_GRAVEYARD_H, GO_ALLIANCE_BANNER_GRAVEYARD_H_CONT, GO_HORDE_BANNER_GRAVEYARD_H, GO_HORDE_BANNER_GRAVEYARD_H_CONT}, false, 0, 0, {BG_IC_HORDE_KEEP_UNCONTROLLED, BG_IC_HORDE_KEEP_CONFLICT_A, BG_IC_HORDE_KEEP_CONFLICT_H, BG_IC_HORDE_KEEP_CONTROLLED_A, BG_IC_HORDE_KEEP_CONTROLLED_H}, NODE_STATE_CONTROLLED_H} }; enum HonorRewards @@ -935,7 +963,6 @@ class BattlegroundIC : public Battleground void SpawnLeader(uint32 teamid); void HandleKillUnit(Creature* unit, Player* killer) override; void HandleKillPlayer(Player* player, Player* killer) override; - void EndBattleground(uint32 winner) override; void EventPlayerClickedOnFlag(Player* source, GameObject* /*target_obj*/) override; void DestroyGate(Player* player, GameObject* go) override; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index a52235a723..1abd3211dd 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -19,7 +19,6 @@ #include "BattlegroundSA.h" #include "GameObject.h" #include "GameTime.h" -#include "Language.h" #include "ObjectMgr.h" #include "Player.h" #include "ScriptedCreature.h" @@ -27,10 +26,7 @@ BattlegroundSA::BattlegroundSA() { - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_SA_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_SA_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_SA_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = 0; + StartMessageIds[BG_STARTING_EVENT_FOURTH] = 0; // handle by Kanrethad BgObjects.resize(BG_SA_MAXOBJ); BgCreatures.resize(BG_SA_MAXNPC + BG_SA_MAX_GY); @@ -320,7 +316,7 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) { SignaledRoundTwo = true; InitSecondRound = false; - SendMessageToAll(LANG_BG_SA_ROUND_TWO_ONE_MINUTE, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_SA_TEXT_ROUND_TWO_START_ONE_MINUTE, CHAT_MSG_BG_SYSTEM_NEUTRAL); } } else @@ -377,7 +373,7 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) if (!SignaledRoundTwoHalfMin) { SignaledRoundTwoHalfMin = true; - SendMessageToAll(LANG_BG_SA_ROUND_TWO_START_HALF_MINUTE, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_SA_TEXT_ROUND_TWO_START_HALF_MINUTE, CHAT_MSG_BG_SYSTEM_NEUTRAL); } } StartShips(); @@ -894,9 +890,9 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker) if (clicker->GetTeamId() == Attackers) { if (clicker->GetTeamId() == TEAM_ALLIANCE) - SendMessageToAll(LANG_BG_SA_ALLIANCE_CAPTURED_RELIC, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_ALLIANCE); else - SendMessageToAll(LANG_BG_SA_HORDE_CAPTURED_RELIC, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_HORDE); if (Status == BG_SA_ROUND_ONE) { diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h index 7d72a697f7..fc26bc2115 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h @@ -482,6 +482,15 @@ float const BG_SA_GYOrientation[BG_SA_MAX_GY] = 6.148f, // defender last GY }; +enum BG_SA_BroadcastTexts +{ + BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL = 28944, + BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL = 28945, + + BG_SA_TEXT_ROUND_TWO_START_ONE_MINUTE = 29448, + BG_SA_TEXT_ROUND_TWO_START_HALF_MINUTE = 29449 +}; + struct GateInfo { uint8 GateId; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index 94f8094fe6..405d6c7ba2 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -18,7 +18,6 @@ #include "BattlegroundWS.h" #include "GameObject.h" -#include "Language.h" #include "Object.h" #include "BattlegroundMgr.h" #include "Player.h" @@ -45,10 +44,10 @@ BattlegroundWS::BattlegroundWS() BgObjects.resize(BG_WS_OBJECT_MAX); BgCreatures.resize(BG_CREATURES_MAX_WS); - StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_WS_START_TWO_MINUTES; - StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_WS_START_ONE_MINUTE; - StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_WS_START_HALF_MINUTE; - StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_WS_HAS_BEGUN; + StartMessageIds[BG_STARTING_EVENT_SECOND] = BG_WS_TEXT_START_ONE_MINUTE; + StartMessageIds[BG_STARTING_EVENT_THIRD] = BG_WS_TEXT_START_HALF_MINUTE; + StartMessageIds[BG_STARTING_EVENT_FOURTH] = BG_WS_TEXT_BATTLE_HAS_BEGUN; + _flagSpellForceTimer = 0; _bothFlagsKept = false; _flagDebuffState = 0; @@ -248,7 +247,7 @@ void BattlegroundWS::RespawnFlag(uint32 Team, bool captured) //when map_update will be allowed for battlegrounds this code will be useless SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_IMMEDIATELY); SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_IMMEDIATELY); - SendMessageToAll(LANG_BG_WS_F_PLACED, CHAT_MSG_BG_SYSTEM_NEUTRAL); + SendBroadcastText(BG_WS_TEXT_FLAGS_PLACED, CHAT_MSG_BG_SYSTEM_NEUTRAL); PlaySoundToAll(BG_WS_SOUND_FLAGS_RESPAWNED); // flag respawned sound... } _bothFlagsKept = false; @@ -261,16 +260,11 @@ void BattlegroundWS::RespawnFlagAfterDrop(uint32 team) RespawnFlag(team, false); if (team == ALLIANCE) - { SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_IMMEDIATELY); - SendMessageToAll(LANG_BG_WS_ALLIANCE_FLAG_RESPAWNED, CHAT_MSG_BG_SYSTEM_NEUTRAL); - } else - { SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_IMMEDIATELY); - SendMessageToAll(LANG_BG_WS_HORDE_FLAG_RESPAWNED, CHAT_MSG_BG_SYSTEM_NEUTRAL); - } + SendBroadcastText(BG_WS_TEXT_FLAGS_PLACED, CHAT_MSG_BG_SYSTEM_NEUTRAL); PlaySoundToAll(BG_WS_SOUND_FLAGS_RESPAWNED); if (GameObject* obj = GetBgMap()->GetGameObject(GetDroppedFlagGUID(team))) @@ -335,9 +329,9 @@ void BattlegroundWS::EventPlayerCapturedFlag(Player* player) SpawnBGObject(BG_WS_OBJECT_A_FLAG, BG_WS_FLAG_RESPAWN_TIME); if (player->GetTeam() == ALLIANCE) - SendMessageToAll(LANG_BG_WS_CAPTURED_HF, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); + SendBroadcastText(BG_WS_TEXT_CAPTURED_HORDE_FLAG, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); else - SendMessageToAll(LANG_BG_WS_CAPTURED_AF, CHAT_MSG_BG_SYSTEM_HORDE, player); + SendBroadcastText(BG_WS_TEXT_CAPTURED_ALLIANCE_FLAG, CHAT_MSG_BG_SYSTEM_HORDE, player); UpdateFlagState(player->GetTeam(), 1); // flag state none UpdateTeamScore(player->GetTeamId()); @@ -445,12 +439,12 @@ void BattlegroundWS::EventPlayerDroppedFlag(Player* player) if (player->GetTeam() == ALLIANCE) { - SendMessageToAll(LANG_BG_WS_DROPPED_HF, CHAT_MSG_BG_SYSTEM_HORDE, player); + SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_HORDE, player); UpdateWorldState(BG_WS_FLAG_UNK_HORDE, uint32(-1)); } else { - SendMessageToAll(LANG_BG_WS_DROPPED_AF, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); + SendBroadcastText(BG_WS_TEXT_ALLIANCE_FLAG_DROPPED, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, uint32(-1)); } @@ -463,15 +457,11 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target if (GetStatus() != STATUS_IN_PROGRESS) return; - int32 message_id = 0; - ChatMsg type = CHAT_MSG_BG_SYSTEM_NEUTRAL; - //alliance flag picked up from base if (player->GetTeam() == HORDE && GetFlagState(ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE && BgObjects[BG_WS_OBJECT_A_FLAG] == target_obj->GetGUID()) { - message_id = LANG_BG_WS_PICKEDUP_AF; - type = CHAT_MSG_BG_SYSTEM_HORDE; + SendBroadcastText(BG_WS_TEXT_ALLIANCE_FLAG_PICKED_UP, CHAT_MSG_BG_SYSTEM_HORDE, player); PlaySoundToAll(BG_WS_SOUND_ALLIANCE_FLAG_PICKED_UP); SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_ONE_DAY); SetAllianceFlagPicker(player->GetGUID()); @@ -489,8 +479,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target if (player->GetTeam() == ALLIANCE && GetFlagState(HORDE) == BG_WS_FLAG_STATE_ON_BASE && BgObjects[BG_WS_OBJECT_H_FLAG] == target_obj->GetGUID()) { - message_id = LANG_BG_WS_PICKEDUP_HF; - type = CHAT_MSG_BG_SYSTEM_ALLIANCE; + SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_PICKED_UP, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); PlaySoundToAll(BG_WS_SOUND_HORDE_FLAG_PICKED_UP); SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_ONE_DAY); SetHordeFlagPicker(player->GetGUID()); @@ -510,8 +499,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target { if (player->GetTeam() == ALLIANCE) { - message_id = LANG_BG_WS_RETURNED_AF; - type = CHAT_MSG_BG_SYSTEM_ALLIANCE; + SendBroadcastText(BG_WS_TEXT_ALLIANCE_FLAG_RETURNED, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); UpdateFlagState(HORDE, BG_WS_FLAG_STATE_WAIT_RESPAWN); RespawnFlag(ALLIANCE, false); SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_IMMEDIATELY); @@ -521,8 +509,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target } else { - message_id = LANG_BG_WS_PICKEDUP_AF; - type = CHAT_MSG_BG_SYSTEM_HORDE; + SendBroadcastText(BG_WS_TEXT_ALLIANCE_FLAG_PICKED_UP, CHAT_MSG_BG_SYSTEM_HORDE, player); PlaySoundToAll(BG_WS_SOUND_ALLIANCE_FLAG_PICKED_UP); SpawnBGObject(BG_WS_OBJECT_A_FLAG, RESPAWN_ONE_DAY); SetAllianceFlagPicker(player->GetGUID()); @@ -545,8 +532,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target { if (player->GetTeam() == HORDE) { - message_id = LANG_BG_WS_RETURNED_HF; - type = CHAT_MSG_BG_SYSTEM_HORDE; + SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_RETURNED, CHAT_MSG_BG_SYSTEM_HORDE, player); UpdateFlagState(ALLIANCE, BG_WS_FLAG_STATE_WAIT_RESPAWN); RespawnFlag(HORDE, false); SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_IMMEDIATELY); @@ -556,8 +542,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target } else { - message_id = LANG_BG_WS_PICKEDUP_HF; - type = CHAT_MSG_BG_SYSTEM_ALLIANCE; + SendBroadcastText(BG_WS_TEXT_HORDE_FLAG_PICKED_UP, CHAT_MSG_BG_SYSTEM_ALLIANCE, player); PlaySoundToAll(BG_WS_SOUND_HORDE_FLAG_PICKED_UP); SpawnBGObject(BG_WS_OBJECT_H_FLAG, RESPAWN_ONE_DAY); SetHordeFlagPicker(player->GetGUID()); @@ -574,10 +559,6 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target //target_obj->Delete(); } - if (!message_id) - return; - - SendMessageToAll(message_id, type, player); player->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT); } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h index 589179047b..88bc385456 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h @@ -31,6 +31,23 @@ enum BG_WS_TimerOrScore BG_WS_SPELL_BRUTAL_TIME = 900000 }; +enum BG_WS_BroadcastTexts +{ + BG_WS_TEXT_START_ONE_MINUTE = 10015, + BG_WS_TEXT_START_HALF_MINUTE = 10016, + BG_WS_TEXT_BATTLE_HAS_BEGUN = 10014, + + BG_WS_TEXT_CAPTURED_HORDE_FLAG = 9801, + BG_WS_TEXT_CAPTURED_ALLIANCE_FLAG = 9802, + BG_WS_TEXT_FLAGS_PLACED = 9803, + BG_WS_TEXT_ALLIANCE_FLAG_PICKED_UP = 9804, + BG_WS_TEXT_ALLIANCE_FLAG_DROPPED = 9805, + BG_WS_TEXT_HORDE_FLAG_PICKED_UP = 9807, + BG_WS_TEXT_HORDE_FLAG_DROPPED = 9806, + BG_WS_TEXT_ALLIANCE_FLAG_RETURNED = 9808, + BG_WS_TEXT_HORDE_FLAG_RETURNED = 9809, +}; + enum BG_WS_Sound { BG_WS_SOUND_FLAG_CAPTURED_ALLIANCE = 8173, diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f440472f54..8fd3df2a7c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -24,6 +24,7 @@ #include "Battleground.h" #include "BattlegroundScore.h" #include "CellImpl.h" +#include "Chat.h" #include "ChatTextBuilder.h" #include "ConditionMgr.h" #include "CreatureAI.h" @@ -14512,11 +14513,11 @@ void Unit::Talk(uint32 textId, ChatMsg msgType, float textRange, WorldObject con { if (!sObjectMgr->GetBroadcastText(textId)) { - TC_LOG_ERROR("entities.unit", "WorldObject::MonsterText: `broadcast_text` was not %u found", textId); + TC_LOG_ERROR("entities.unit", "WorldObject::MonsterText: `broadcast_text` (ID: %u) was not found", textId); return; } - Trinity::BroadcastTextBuilder builder(this, msgType, textId, target); + Trinity::BroadcastTextBuilder builder(this, msgType, textId, getGender(), target); Trinity::LocalizedPacketDo localizer(builder); Trinity::PlayerDistWorker > worker(this, textRange, localizer); Cell::VisitWorldObjects(this, worker, textRange); diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp index 05153d7b69..f0837c517a 100644 --- a/src/server/game/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Handlers/PetitionsHandler.cpp @@ -17,7 +17,6 @@ */ #include "Common.h" -#include "Language.h" #include "WorldPacket.h" #include "WorldSession.h" #include "World.h" @@ -105,7 +104,7 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recvData) /// @todo find correct opcode if (_player->getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) { - SendNotification(LANG_ARENA_ONE_TOOLOW, sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); + SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", _player->GetName(), ERR_ARENA_TEAM_TARGET_TOO_LOW_S); return; } diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 88a00419c5..75f0fbacb5 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -635,80 +635,7 @@ enum TrinityStrings // End Level 3 list, continued at 1100 - // Battleground - LANG_BG_A_WINS = 600, - LANG_BG_H_WINS = 601, - - LANG_BG_WS_START_TWO_MINUTES = 753, - LANG_BG_WS_START_ONE_MINUTE = 602, - LANG_BG_WS_START_HALF_MINUTE = 603, - LANG_BG_WS_HAS_BEGUN = 604, - - LANG_BG_WS_CAPTURED_HF = 605, - LANG_BG_WS_CAPTURED_AF = 606, - LANG_BG_WS_DROPPED_HF = 607, - LANG_BG_WS_DROPPED_AF = 608, - LANG_BG_WS_RETURNED_AF = 609, - LANG_BG_WS_RETURNED_HF = 610, - LANG_BG_WS_PICKEDUP_HF = 611, - LANG_BG_WS_PICKEDUP_AF = 612, - LANG_BG_WS_F_PLACED = 613, - LANG_BG_WS_ALLIANCE_FLAG_RESPAWNED = 614, - LANG_BG_WS_HORDE_FLAG_RESPAWNED = 615, - - LANG_BG_EY_START_TWO_MINUTES = 755, - LANG_BG_EY_START_ONE_MINUTE = 636, - LANG_BG_EY_START_HALF_MINUTE = 637, - LANG_BG_EY_HAS_BEGUN = 638, - - LANG_BG_AB_ALLY = 650, - LANG_BG_AB_HORDE = 651, - LANG_BG_AB_NODE_STABLES = 652, - LANG_BG_AB_NODE_BLACKSMITH = 653, - LANG_BG_AB_NODE_FARM = 654, - LANG_BG_AB_NODE_LUMBER_MILL = 655, - LANG_BG_AB_NODE_GOLD_MINE = 656, - LANG_BG_AB_NODE_TAKEN = 657, - LANG_BG_AB_NODE_DEFENDED = 658, - LANG_BG_AB_NODE_ASSAULTED = 659, - LANG_BG_AB_NODE_CLAIMED = 660, - - LANG_BG_AB_START_TWO_MINUTES = 754, - LANG_BG_AB_START_ONE_MINUTE = 661, - LANG_BG_AB_START_HALF_MINUTE = 662, - LANG_BG_AB_HAS_BEGUN = 663, - LANG_BG_AB_A_NEAR_VICTORY = 664, - LANG_BG_AB_H_NEAR_VICTORY = 665, - LANG_BG_MARK_BY_MAIL = 666, - - LANG_BG_EY_HAS_TAKEN_A_M_TOWER = 667, - LANG_BG_EY_HAS_TAKEN_H_M_TOWER = 668, - LANG_BG_EY_HAS_TAKEN_A_D_RUINS = 669, - LANG_BG_EY_HAS_TAKEN_H_D_RUINS = 670, - LANG_BG_EY_HAS_TAKEN_A_B_TOWER = 671, - LANG_BG_EY_HAS_TAKEN_H_B_TOWER = 672, - LANG_BG_EY_HAS_TAKEN_A_F_RUINS = 673, - LANG_BG_EY_HAS_TAKEN_H_F_RUINS = 674, - LANG_BG_EY_HAS_LOST_A_M_TOWER = 675, - LANG_BG_EY_HAS_LOST_H_M_TOWER = 676, - LANG_BG_EY_HAS_LOST_A_D_RUINS = 677, - LANG_BG_EY_HAS_LOST_H_D_RUINS = 678, - LANG_BG_EY_HAS_LOST_A_B_TOWER = 679, - LANG_BG_EY_HAS_LOST_H_B_TOWER = 680, - LANG_BG_EY_HAS_LOST_A_F_RUINS = 681, - LANG_BG_EY_HAS_LOST_H_F_RUINS = 682, - LANG_BG_EY_HAS_TAKEN_FLAG = 683, - LANG_BG_EY_CAPTURED_FLAG_A = 684, - LANG_BG_EY_CAPTURED_FLAG_H = 685, - LANG_BG_EY_DROPPED_FLAG = 686, - LANG_BG_EY_RESETED_FLAG = 687, - - LANG_ARENA_ONE_TOOLOW = 700, - LANG_ARENA_ONE_MINUTE = 701, - LANG_ARENA_THIRTY_SECONDS = 702, - LANG_ARENA_FIFTEEN_SECONDS = 703, - LANG_ARENA_HAS_BEGUN = 704, - + // 600-704 - free LANG_WAIT_BEFORE_SPEAKING = 705, LANG_NOT_EQUIPPED_ITEM = 706, LANG_PLAYER_DND = 707, @@ -730,9 +657,7 @@ enum TrinityStrings LANG_ARENA_GROUP_TOO_LARGE = 721, // "Your group is too large for this arena. Please regroup to join." LANG_ARENA_YOUR_TEAM_ONLY = 722, // "Your group has members not in your arena team. Please regroup to join." LANG_ARENA_NOT_ENOUGH_PLAYERS = 723, // "Your group does not have enough players to join this match." - LANG_ARENA_GOLD_WINS = 724, // "The Gold Team wins!" - LANG_ARENA_GREEN_WINS = 725, // "The Green Team wins!" -// = 726, not used + // 724-726 - free LANG_BG_GROUP_OFFLINE_MEMBER = 727, // "Your group has an offline member. Please remove him before joining." LANG_BG_GROUP_MIXED_FACTION = 728, // "Your group has players from the opposing faction. You can't join the battleground as a group." LANG_BG_GROUP_MIXED_LEVELS = 729, // "Your group has players from different battleground brakets. You can't join as group." @@ -760,14 +685,12 @@ enum TrinityStrings LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING = 750, // "Not enough players. This game will close in %u mins." LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING_SECS = 751, // "Not enough players. This game will close in %u seconds." // = 752, see LANG_PINFO_ACC_IP -// LANG_BG_WS_START_TWO_MINUTES = 753, - defined above -// LANG_BG_AB_START_TWO_MINUTES = 754, - defined above -// LANG_BG_EY_START_TWO_MINUTES = 755, - defined above - // Room for BG/ARENA = 773-784, 788-799 not used + // Room for BG/ARENA = 773-784 LANG_ARENA_TESTING = 785, LANG_AUTO_ANN = 786, LANG_ANNOUNCE_COLOR = 787, + // 788-799 - free // in game strings LANG_PET_INVALID_NAME = 800, @@ -1010,42 +933,7 @@ enum TrinityStrings LANG_DEBUG_AREATRIGGER_OFF = 1203, LANG_DEBUG_AREATRIGGER_REACHED = 1204, - // Isle of Conquest - LANG_BG_IC_START_TWO_MINUTES = 1205, - LANG_BG_IC_START_ONE_MINUTE = 1206, - LANG_BG_IC_START_HALF_MINUTE = 1207, - LANG_BG_IC_HAS_BEGUN = 1208, - LANG_BG_IC_ALLIANCE_KEEP = 1209, - LANG_BG_IC_HORDE_KEEP = 1210, - LANG_BG_IC_TEAM_WINS = 1211, - LANG_BG_IC_WEST_GATE_DESTROYED = 1212, - LANG_BG_IC_EAST_GATE_DESTROYED = 1213, - LANG_BG_IC_SOUTH_GATE_DESTROYED = 1214, - LANG_BG_IC_NORTH_GATE_DESTROYED = 1215, - LANG_BG_IC_TEAM_ASSAULTED_NODE_1 = 1216, - LANG_BG_IC_TEAM_DEFENDED_NODE = 1217, - LANG_BG_IC_TEAM_ASSAULTED_NODE_2 = 1218, - LANG_BG_IC_TEAM_HAS_TAKEN_NODE = 1219, - LANG_BG_IC_WORKSHOP = 1220, - LANG_BG_IC_DOCKS = 1221, - LANG_BG_IC_REFINERY = 1222, - LANG_BG_IC_QUARRY = 1223, - LANG_BG_IC_HANGAR = 1224, - // 1225-1299 - LANG_BG_IC_ALLIANCE = 1300, - LANG_BG_IC_HORDE = 1301, - - // 1302-1325 - // AV - LANG_BG_AV_START_ONE_MINUTE = 1326, - LANG_BG_AV_START_HALF_MINUTE = 1327, - LANG_BG_AV_HAS_BEGUN = 1328, - LANG_BG_AV_A_NEAR_LOSE = 1329, - LANG_BG_AV_H_NEAR_LOSE = 1330, - // 1331-1332 - LANG_BG_AV_START_TWO_MINUTES = 1333, - // FREE IDS 1334-1999 - + // 1205-1999 - free // Ticket Strings 2000-2030 LANG_COMMAND_TICKETNEW = 2000, LANG_COMMAND_TICKETUPDATED = 2001, @@ -1204,14 +1092,7 @@ enum TrinityStrings LANG_OPVP_ZM_GOSSIP_ALLIANCE = 10054, LANG_OPVP_ZM_GOSSIP_HORDE = 10055, - LANG_BG_SA_START_TWO_MINUTES = 10056, - LANG_BG_SA_START_ONE_MINUTE = 10057, - LANG_BG_SA_START_HALF_MINUTE = 10058, - // unused 10059-10062 - LANG_BG_SA_ALLIANCE_CAPTURED_RELIC = 10063, //The Alliance captured the titan portal! - LANG_BG_SA_HORDE_CAPTURED_RELIC = 10064, //The Horde captured the titan portal! - LANG_BG_SA_ROUND_TWO_ONE_MINUTE = 10065, //Round 2 of the Battle for the Strand of the Ancients begins in 1 minute. - LANG_BG_SA_ROUND_TWO_START_HALF_MINUTE = 10066, //Round 2 begins in 30 seconds. Prepare yourselves! + // 10056-10066 - free // Use for custom patches 11000-11999 LANG_AUTO_BROADCAST = 11000, diff --git a/src/server/game/Texts/ChatTextBuilder.h b/src/server/game/Texts/ChatTextBuilder.h index 71c403332f..08b80c28ee 100644 --- a/src/server/game/Texts/ChatTextBuilder.h +++ b/src/server/game/Texts/ChatTextBuilder.h @@ -18,33 +18,29 @@ #ifndef __CHATTEXT_BUILDER_H #define __CHATTEXT_BUILDER_H -#include "Chat.h" -#include "ObjectMgr.h" +#include "Common.h" +#include "SharedDefines.h" +#include + +class WorldObject; +class WorldPacket; namespace Trinity { class BroadcastTextBuilder { public: - BroadcastTextBuilder(Unit const* obj, ChatMsg msgType, uint32 textId, WorldObject const* target = nullptr, uint32 achievementId = 0) - : _source(obj), _msgType(msgType), _textId(textId), _target(target), _achievementId(achievementId) { } + BroadcastTextBuilder(WorldObject const* obj, ChatMsg msgType, uint32 textId, uint8 gender, WorldObject const* target = nullptr, uint32 achievementId = 0) + : _source(obj), _msgType(msgType), _textId(textId), _gender(gender), _target(target), _achievementId(achievementId) { } - void operator()(WorldPacket& data, LocaleConstant locale) - { - BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); - ChatHandler::BuildChatPacket(data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _source->getGender()) : "", _achievementId, "", locale); - } - - size_t operator()(WorldPacket* data, LocaleConstant locale) const - { - BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); - return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _source->getGender()) : "", _achievementId, "", locale); - } + void operator()(WorldPacket& data, LocaleConstant locale) const; + size_t operator()(WorldPacket* data, LocaleConstant locale) const; private: - Unit const* _source; + WorldObject const* _source; ChatMsg _msgType; uint32 _textId; + uint8 _gender; WorldObject const* _target; uint32 _achievementId; }; @@ -55,10 +51,7 @@ namespace Trinity CustomChatTextBuilder(WorldObject const* obj, ChatMsg msgType, std::string const& text, Language language = LANG_UNIVERSAL, WorldObject const* target = nullptr) : _source(obj), _msgType(msgType), _text(text), _language(language), _target(target) { } - void operator()(WorldPacket& data, LocaleConstant locale) - { - ChatHandler::BuildChatPacket(data, _msgType, _language, _source, _target, _text, 0, "", locale); - } + void operator()(WorldPacket& data, LocaleConstant locale) const; private: WorldObject const* _source; @@ -67,6 +60,22 @@ namespace Trinity Language _language; WorldObject const* _target; }; + + class TrinityStringChatBuilder + { + public: + TrinityStringChatBuilder(WorldObject const* obj, ChatMsg msgType, uint32 textId, WorldObject const* target = nullptr, va_list* args = nullptr) + : _source(obj), _msgType(msgType), _textId(textId), _target(target), _args(args) { } + + void operator()(WorldPacket& data, LocaleConstant locale) const; + + private: + WorldObject const* _source; + ChatMsg _msgType; + uint32 _textId; + WorldObject const* _target; + va_list* _args; + }; } // namespace Trinity From ee54de51a8e9ef24269f709bb6ba0ebab36f0be8 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 16:13:13 +0100 Subject: [PATCH 025/178] Scripts/Outland: Fix logical error in Hellfire event in Honor Hold --- .../Outland/zone_hellfire_peninsula.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index 273fa0dc33..5dd183dbdb 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -1044,10 +1044,11 @@ public: enum WatchCommanderLeonus { SAY_COVER = 0, - EVENT_LEONUS_TALK = 1, - EVENT_INFERNAL_RAIN_ATTACK = 2, - EVENT_FEAR_CONTROLLER_CAST = 3, - EVENT_ACTIVE_FALSE = 4, + EVENT_START = 1, + EVENT_LEONUS_TALK = 2, + EVENT_INFERNAL_RAIN_ATTACK = 3, + EVENT_FEAR_CONTROLLER_CAST = 4, + EVENT_ACTIVE_FALSE = 5, NPC_INFERNAL_RAIN = 18729, SPELL_INFERNAL_RAIN = 33814, NPC_FEAR_CONTROLLER = 19393, @@ -1061,9 +1062,7 @@ struct npc_watch_commander_leonus : public ScriptedAI void Reset() override { _events.Reset(); - _events.ScheduleEvent(EVENT_LEONUS_TALK, Minutes(2), Minutes(10)); - _events.ScheduleEvent(EVENT_INFERNAL_RAIN_ATTACK, Minutes(2), Minutes(10)); - _events.ScheduleEvent(EVENT_FEAR_CONTROLLER_CAST, Minutes(2), Minutes(10)); + _events.ScheduleEvent(EVENT_START, Minutes(2), Minutes(10)); } void SetData(uint32 /*type*/, uint32 data) override @@ -1086,6 +1085,11 @@ struct npc_watch_commander_leonus : public ScriptedAI { switch (eventId) { + case EVENT_START: + _events.ScheduleEvent(EVENT_LEONUS_TALK, Minutes(2), Minutes(10)); + _events.ScheduleEvent(EVENT_INFERNAL_RAIN_ATTACK, Minutes(2), Minutes(10)); + _events.ScheduleEvent(EVENT_FEAR_CONTROLLER_CAST, Minutes(2), Minutes(10)); + break; case EVENT_LEONUS_TALK: Talk(SAY_COVER); me->HandleEmoteCommand(EMOTE_ONESHOT_SHOUT); From f1598e6e77a729a41978311dedbafa0e38368416 Mon Sep 17 00:00:00 2001 From: offl Date: Sun, 21 Jan 2018 22:09:30 +0100 Subject: [PATCH 026/178] DB/Creature: set correct 3.3.5a faction for Argent Guard Thaelrid - he was incorrectly set up with faction 80 (Darnassus), a Cataclysm value - he should now be able to hand out quest ID 6561, Blackfathom Villainy. by offl Closes #21287 --- sql/updates/world/3.3.5/2018_01_21_02_world_335.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_21_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_21_02_world_335.sql b/sql/updates/world/3.3.5/2018_01_21_02_world_335.sql new file mode 100644 index 0000000000..2493bb5222 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_21_02_world_335.sql @@ -0,0 +1,2 @@ +-- Argent Guard Thaelrid +UPDATE `creature_template` SET `faction`=794 WHERE `entry`=4787; From b705a16631b1f3ad15a1ae895e3a0b48826fc045 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 16:16:51 +0100 Subject: [PATCH 027/178] Core/Misc: 2 comment corrections in Language.h --- src/server/game/Miscellaneous/Language.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 75f0fbacb5..43d34d220f 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -923,18 +923,18 @@ enum TrinityStrings LANG_GROUP_ROLE_CHANGED = 1186, LANG_LEADER_CANNOT_BE_ASSISTANT = 1187, LANG_BAN_EXISTS = 1188, - // Room for more level 3 1189-1198 not used + // Room for more level 3 1189-1199 not used // Debug commands - LANG_GUILD_INFO_LEVEL = 1999, // LANG_DO_NOT_USE_6X_DEBUG_AREATRIGGER_LEFT -- unused on 3.3.5a LANG_CINEMATIC_NOT_EXIST = 1200, LANG_MOVIE_NOT_EXIST = 1201, LANG_DEBUG_AREATRIGGER_ON = 1202, LANG_DEBUG_AREATRIGGER_OFF = 1203, LANG_DEBUG_AREATRIGGER_REACHED = 1204, - // 1205-1999 - free + // 1205-1998 - free // Ticket Strings 2000-2030 + LANG_GUILD_INFO_LEVEL = 1999, // LANG_DO_NOT_USE_6X_DEBUG_AREATRIGGER_LEFT -- unused on 3.3.5a LANG_COMMAND_TICKETNEW = 2000, LANG_COMMAND_TICKETUPDATED = 2001, LANG_COMMAND_TICKETPLAYERABANDON = 2002, From c9048596827de87a0d0f0880a79a8b8180dad2ce Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 16:27:52 +0100 Subject: [PATCH 028/178] Core/Spells: fix Spirit of Redemption --- src/server/game/Entities/Unit/Unit.cpp | 35 +++++++------------ .../game/Spells/Auras/SpellAuraEffects.cpp | 3 -- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 8fd3df2a7c..a7f84306a6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11483,31 +11483,22 @@ void Unit::Kill(Unit* victim, bool durabilityLoss) if (Player* killerPlayer = GetCharmerOrOwnerPlayerOrPlayerItself()) killerPlayer->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS, 1, 0, 0, victim); - // if talent known but not triggered (check priest class for speedup check) + // if talent known but not triggered bool spiritOfRedemption = false; - if (victim->GetTypeId() == TYPEID_PLAYER && victim->getClass() == CLASS_PRIEST) + if (AuraEffect const* aurEff = victim->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_PRIEST, 0, 0, 0x200)) { - AuraEffectList const& dummyAuras = victim->GetAuraEffectsByType(SPELL_AURA_DUMMY); - for (AuraEffectList::const_iterator itr = dummyAuras.begin(); itr != dummyAuras.end(); ++itr) - { - if ((*itr)->GetSpellInfo()->SpellIconID == 1654) - { - AuraEffect const* aurEff = *itr; - // save value before aura remove - uint32 ressSpellId = victim->GetUInt32Value(PLAYER_SELF_RES_SPELL); - if (!ressSpellId) - ressSpellId = victim->ToPlayer()->GetResurrectionSpellId(); - // Remove all expected to remove at death auras (most important negative case like DoT or periodic triggers) - victim->RemoveAllAurasOnDeath(); - // restore for use at real death - victim->SetUInt32Value(PLAYER_SELF_RES_SPELL, ressSpellId); + // save value before aura remove + uint32 ressSpellId = victim->GetUInt32Value(PLAYER_SELF_RES_SPELL); + if (!ressSpellId) + ressSpellId = victim->ToPlayer()->GetResurrectionSpellId(); + // Remove all expected to remove at death auras (most important negative case like DoT or periodic triggers) + victim->RemoveAllAurasOnDeath(); + // restore for use at real death + victim->SetUInt32Value(PLAYER_SELF_RES_SPELL, ressSpellId); - // FORM_SPIRITOFREDEMPTION and related auras - victim->CastSpell(victim, 27827, true, NULL, aurEff); - spiritOfRedemption = true; - break; - } - } + // FORM_SPIRITOFREDEMPTION and related auras + victim->CastSpell(victim, 27827, aurEff); + spiritOfRedemption = true; } if (!spiritOfRedemption) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index edfa5525dc..68c1b44ae6 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1657,9 +1657,6 @@ void AuraEffect::HandleSpiritOfRedemption(AuraApplication const* aurApp, uint8 m { if (target->GetTypeId() == TYPEID_PLAYER) { - // disable breath/etc timers - target->ToPlayer()->StopMirrorTimers(); - // set stand state (expected in this form) if (!target->IsStandState()) target->SetStandState(UNIT_STAND_STATE_STAND); From 8d0647da5d8b270282d4a5bd6e24641882e65123 Mon Sep 17 00:00:00 2001 From: ariel- Date: Tue, 23 Jan 2018 11:38:48 -0300 Subject: [PATCH 029/178] DB/Spell: Fix Lifebloom coefficient Closes #21297 --- sql/updates/world/3.3.5/2018_01_23_00_world_335.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_23_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_23_00_world_335.sql b/sql/updates/world/3.3.5/2018_01_23_00_world_335.sql new file mode 100644 index 0000000000..6c643caf72 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_23_00_world_335.sql @@ -0,0 +1,2 @@ +UPDATE `spell_bonus_data` SET `direct_bonus`=0 WHERE `entry`=33763; +UPDATE `spell_bonus_data` SET `direct_bonus`=0.51623296 WHERE `entry`=33778; From 36b29d3a3d59059cb3b1a3239d19140a561b17c3 Mon Sep 17 00:00:00 2001 From: ariel- Date: Tue, 23 Jan 2018 23:20:09 -0300 Subject: [PATCH 030/178] DB/Spell: remove hacky, ancient serverside spell Added in a687c867e9127f816c6ffde36000f6e2474f80e7, back when proc cooldown handling was way different --- sql/updates/world/3.3.5/2018_01_24_00_world.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sql/updates/world/3.3.5/2018_01_24_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_24_00_world.sql b/sql/updates/world/3.3.5/2018_01_24_00_world.sql new file mode 100644 index 0000000000..8c564d2d91 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_24_00_world.sql @@ -0,0 +1 @@ +DELETE FROM `spell_dbc` WHERE `Id`=100000; From 767c52abdfd7d14c47598d60bf7587d50a51d719 Mon Sep 17 00:00:00 2001 From: Dr-J Date: Wed, 24 Jan 2018 19:19:09 +0000 Subject: [PATCH 031/178] DB/Creature: Apothecary Keever Updating my previous script for this as my prior work was no longer working as intended, was no longer in sync with spawn of caged human and when this changed to squirrel, toad, rabbit, sheep only the name of the npc changed the the appearance never changed, deleting the permament spawn of caged human Apothecary Keever after he casts the teleport spell --- .../world/3.3.5/2018_01_24_03_world.sql | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_24_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_24_03_world.sql b/sql/updates/world/3.3.5/2018_01_24_03_world.sql new file mode 100644 index 0000000000..1603566e5f --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_24_03_world.sql @@ -0,0 +1,51 @@ +UPDATE `smart_scripts` SET `event_param3`=240000, `event_param4`=240000 WHERE `entryorguid`=5734 AND `source_type`=0 AND `id`=0 AND `link`=0; +DELETE FROM `creature` WHERE `guid`=45218; + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=5736; +DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid`=573400 ; + +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 +(573400, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 0'), +(573400, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 11, 7794, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Cast Teleport'), +(573400, 9, 2, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Kneel'), +(573400, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 12, 5736, 8, 0, 0, 0, 0, 8, 0, 0, 0, 1400.85, 363.242, -84.868, 1.11701, 'Apothecary Keever - Script - Spawn Caged Human Male'), +(573400, 9, 4, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Stand'), +(573400, 9, 5, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 1'), +(573400, 9, 6, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 2'), +(573400, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Kneel'), +(573400, 9, 8, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 5736, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Set Data 1 1 on Caged Human'), +(573400, 9, 9, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 3'), +(573400, 9, 10, 0, 0, 0, 100, 0, 13000, 13000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 4'), +(573400, 9, 11, 0, 0, 0, 100, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Stand'), +(573400, 9, 12, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 5'), +(573400, 9, 13, 0, 0, 0, 100, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Kneel'), +(573400, 9, 14, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, 5742, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Set Data 2 2 on Caged Toad'), +(573400, 9, 15, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 6'), +(573400, 9, 16, 0, 0, 0, 100, 0, 13000, 13000, 0, 0, 1, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 7'), +(573400, 9, 17, 0, 0, 0, 100, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Stand'), +(573400, 9, 18, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 8'), +(573400, 9, 19, 0, 0, 0, 100, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Kneel'), +(573400, 9, 20, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 3, 3, 0, 0, 0, 0, 19, 5739, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Set Data 3 3 on Caged Squirrel'), +(573400, 9, 21, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 6'), +(573400, 9, 22, 0, 0, 0, 100, 0, 13000, 13000, 0, 0, 1, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 7'), +(573400, 9, 23, 0, 0, 0, 100, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Stand'), +(573400, 9, 24, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 11, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 8'), +(573400, 9, 25, 0, 0, 0, 100, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Kneel'), +(573400, 9, 26, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 4, 4, 0, 0, 0, 0, 19, 5741, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Set Data 4 4 on Caged Rabbit'), +(573400, 9, 27, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 12, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 6'), +(573400, 9, 28, 0, 0, 0, 100, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Stand'), +(573400, 9, 29, 0, 0, 0, 100, 0, 13000, 13000, 0, 0, 1, 13, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 7'), +(573400, 9, 30, 0, 0, 0, 100, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Kneel'), +(573400, 9, 31, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 45, 5, 5, 0, 0, 0, 0, 19, 5743, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Set Data 5 5 on Caged Sheep'), +(573400, 9, 32, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 14, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Say Line 8'), +(573400, 9, 33, 0, 0, 0, 100, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Apothecary Keever - Script - Stand'), +(5736, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 36, 5742, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 1 1 Change Entry to Caged Toad'), +(5736, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 3, 5742, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 1 1 Change Entry to Caged Toad'), +(5736, 0, 2, 3, 38, 0, 100, 0, 2, 2, 0, 0, 36, 5739, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 2 2 Change Entry to Caged Sqirrel'), +(5736, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 3, 5739, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 1 1 Change Entry to Caged Squirrel'), +(5736, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 36, 5741, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 3 3 Change Entry to Caged Rabbit'), +(5736, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 3, 5741, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 1 1 Change Entry to Caged Rabbit'), +(5736, 0, 6, 7, 38, 0, 100, 0, 4, 4, 0, 0, 36, 5743, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 4 4 Change Entry to Caged Sheep'), +(5736, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 3, 5743, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 1 1 Change Entry to Caged Sheep'), +(5736, 0, 8, 9, 38, 0, 100, 0, 5, 5, 0, 0, 11, 7670, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 5 5 Cast Explode'), +(5736, 0, 9, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 1000, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Caged Human Male - On Data Set 5 5 - Run Script'); From 28306add2e5c576a713be79047654461ec40e53d Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 14:57:12 +0100 Subject: [PATCH 032/178] DB/Quest: The End of the Deserters (11134) - fix quest credit cast by ZenoX92 Closes #21293 --- sql/updates/world/3.3.5/2018_01_25_02_world_335.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_02_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_02_world_335.sql new file mode 100644 index 0000000000..e52cd25de0 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_02_world_335.sql @@ -0,0 +1,12 @@ +-- Gavis Greyshield +DELETE FROM `smart_scripts` WHERE `entryorguid`= 23941 AND `source_type`= 0; +DELETE FROM `smart_scripts` WHERE `entryorguid`= 2394100 AND `source_type`= 9; +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 +(23941, 0,0,0, 2,0,100, 1, 0, 15,0,0, 11, 42660,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - Between 0-15% Health - Cast 'Gavis Greyshield Credit' (No Repeat)"), +(23941, 0,1,2, 2,0,100, 1, 0, 15,0,0, 80,2394100,2,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - Between 0-15% Health - Run Script (No Repeat)"), +(23941, 0,2,3,61,0,100,512, 0, 0,0,0, 2, 35,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - Between 0-15% Health - Set Faction 35"), +(23941, 0,3,4,61,0,100,512, 0, 0,0,0, 24, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - Between 0-15% Health - Evade"), +(23941, 0,4,0,61,0,100,512, 0, 0,0,0,103, 1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - Between 0-15% Health - Set Root On"), +(2394100,9,0,0, 0,0,100, 0, 1000, 1000,0,0, 1, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - On Script - Say Line 0"), +(2394100,9,1,0, 0,0,100, 0, 4000, 4000,0,0, 1, 1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - On Script - Say Line 1"), +(2394100,9,2,0, 0,0,100, 0,10000,10000,0,0, 41, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - On Script - Despawn"); From 850b558fd967d8e4ed2d59009bee0b7950e349f0 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:41:06 +0100 Subject: [PATCH 033/178] DB/Conditions: Master Smith Burninate Closes #21298 --- sql/updates/world/3.3.5/2018_01_25_03_world.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_03_world.sql b/sql/updates/world/3.3.5/2018_01_25_03_world.sql new file mode 100644 index 0000000000..8a5dac2a53 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_03_world.sql @@ -0,0 +1,5 @@ +-- Master Smith Burninate --> Fix gossip conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=5962; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14,5962,7121,0,0,8,0,7722,0,0,0,0,0,"","Show gossip text 7121 if player has quest 'What the Flux?' rewarded"), +(14,5962,7121,0,0,5,0,59,128,0,0,0,0,"","Show gossip text 7121 if player is exalted with Thorium Brotherhood"); From 483ea2ced08aebb8431eb427dd6420019e1d014b Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:42:48 +0100 Subject: [PATCH 034/178] DB/Gossip: Call to Arms! (Gameobject) Closes #21299 --- sql/updates/world/3.3.5/2018_01_25_04_world_335.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_04_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_04_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_04_world_335.sql new file mode 100644 index 0000000000..3b228de52a --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_04_world_335.sql @@ -0,0 +1,2 @@ +-- Call to Arms! --> Fix Gossip Text +UPDATE `gossip_menu` SET `TextID`=7274 WHERE `MenuID`=6121; From eba551f985066894387d5e815fa452b012bbae41 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:44:09 +0100 Subject: [PATCH 035/178] DB/Gossip: Primal Torntusk Closes #21300 --- sql/updates/world/3.3.5/2018_01_25_05_world_335.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_05_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_05_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_05_world_335.sql new file mode 100644 index 0000000000..dbdcd1a6e5 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_05_world_335.sql @@ -0,0 +1,6 @@ +-- Primal Torntusk --> Add Gossip Text +UPDATE `creature_template` SET `gossip_menu_id`=6084 WHERE `entry`=14736; + +DELETE FROM `gossip_menu` WHERE `MenuID`=6084; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(6084,7238,0); From 74ebc9a4de5980e082095961bd3884f957b4a23f Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:46:18 +0100 Subject: [PATCH 036/178] DB/Gossip: Fallen Hero of the Horde Closes #21301 --- .../world/3.3.5/2018_01_25_06_world_335.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_06_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_06_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_06_world_335.sql new file mode 100644 index 0000000000..714f7f4455 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_06_world_335.sql @@ -0,0 +1,20 @@ +-- Fallen Hero of the Horde --> Fix gossip texts +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=840; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14,840,1451,0,1,9,0,2801,0,0,0,0,0,"","Show gossip text 1451 if player has quest 'A Tale of Sorrow' taken"); + +DELETE FROM `gossip_menu` WHERE `MenuID` IN (841, 842); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(841,1392,0), +(842,1411,0); + +UPDATE `gossip_menu_option` SET `OptionText`="Why are you here?", `OptionBroadcastTextID`=3582, `ActionMenuID`=841 WHERE `MenuID`=840 AND `OptionID`=0; +DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (841, 842); +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(841,0,0,"Continue with your story.",3601,1,1,842,0,0,0,"",0,0), +(842,0,0,"Tragic...",3830,1,1,0,0,0,0,"",0,0); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=7572 AND `source_type`=0 AND `id` IN (0,1); +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 +(7572,0,0,2,62,0,100,512,842,0,0,0,26,2784,0,0,0,0,0,7,0,0,0,0,0,0,0,"Fallen Hero of the Horde - On Gossip Option 0 Selected - Quest Credit 'Fall From Grace'"), +(7572,0,1,2,62,0,100,512,881,0,0,0,26,2801,0,0,0,0,0,7,0,0,0,0,0,0,0,"Fallen Hero of the Horde - On Gossip Option 0 Selected - Quest Credit 'A Tale of Sorrow'"); From fc0ba8871f3cdde72eb22cb7df8f8f11f412de5a Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:49:15 +0100 Subject: [PATCH 037/178] DB/Gossip: Samuel Hawke, Rutherford Twing, Illiyana Moonblaze & Kelm Hargunth Closes #21302 --- .../world/3.3.5/2018_01_25_07_world_335.sql | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_07_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_07_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_07_world_335.sql new file mode 100644 index 0000000000..89c3ab1618 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_07_world_335.sql @@ -0,0 +1,18 @@ +UPDATE `creature_template` SET `gossip_menu_id`=6522, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=15127; -- Samuel Hawke +UPDATE `creature_template` SET `gossip_menu_id`=6521, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=15126; -- Rutherford Twing +UPDATE `creature_template` SET `gossip_menu_id`=6142, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=14753; -- Illiyana Moonblaze +UPDATE `creature_template` SET `gossip_menu_id`=6141, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=14754; -- Kelm Hargunth + +DELETE FROM `gossip_menu` WHERE `MenuID` IN (6521,6522,6141,6142); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(6522,7724,0), -- Samuel Hawke +(6521,7723,0), -- Rutherford Twing +(6142,7295,0), -- Illiyana Moonblaze +(6141,7294,0); -- Kelm Hargunth + +DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (6521,6522,6141,6142); +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(6522,0,1,"What goods have I earned the right to purchase from the League of Arathor?",10625,3,128,0,0,0,0,"",0,0), -- Samuel Hawke +(6521,0,1,"What goods have I earned the right to purchase from the Defilers?",10623,3,128,0,0,0,0,"",0,0), -- Rutherford Twing +(6142,0,1,"What goods have I earned the right to purchase for use in Warsong Gulch?",10021,3,128,0,0,0,0,"",0,0), -- Illiyana Moonblaze +(6141,0,1,"What goods have I earned the right to purchase for use in Warsong Gulch?",10019,3,128,0,0,0,0,"",0,0); -- Kelm Hargunth From 0c93c2ea97198f8607813ffa8d30b852de7dbff5 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:50:37 +0100 Subject: [PATCH 038/178] DB/Conditions: Kalaran Windblade Closes #21303 --- sql/updates/world/3.3.5/2018_01_25_08_world_335.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_08_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_08_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_08_world_335.sql new file mode 100644 index 0000000000..bdf979dfa8 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_08_world_335.sql @@ -0,0 +1,2 @@ +-- Kalaran Windblade --> Fix condition +UPDATE `conditions` SET `NegativeCondition`=1 WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=1323 AND `ConditionTypeOrReference`=2; From b3dfe150eb954d8273021ca9935c9a536be87cdb Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:51:41 +0100 Subject: [PATCH 039/178] DB/Quest: The Torch of Retribution Closes #21304 --- .../world/3.3.5/2018_01_25_09_world_335.sql | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_09_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_09_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_09_world_335.sql new file mode 100644 index 0000000000..35d4cba031 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_09_world_335.sql @@ -0,0 +1,28 @@ +-- Quest "The Torch of Retribution" +DELETE FROM `smart_scripts` WHERE `entryorguid`=847900 AND `source_type`=9; +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 +(847900,9,0,0,0,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Close Gossip"), +(847900,9,1,0,0,0,100,0,0,0,0,0,83,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Remove Npc Flags Gossip & Questgiver"), +(847900,9,2,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Say Line 0"), +(847900,9,3,0,0,0,100,0,0,0,0,0,17,69,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Set Emote State 69"), +(847900,9,4,0,0,0,100,0,10000,10000,0,0,11,12511,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Cast 'Torch Combine'"), +(847900,9,5,0,0,0,100,0,8000,8000,0,0,11,12511,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Cast 'Torch Combine'"), +(847900,9,6,0,0,0,100,0,7000,7000,0,0,11,12511,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Cast 'Torch Combine'"), +(847900,9,7,0,0,0,100,0,10000,10000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Say Line 1"), +(847900,9,8,0,0,0,100,0,7000,7000,0,0,17,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Set Emote State 0"), +(847900,9,9,0,0,0,100,0,1000,1000,0,0,11,12512,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Cast 'Kalaran Conjures Torch'"), +(847900,9,10,0,0,0,100,0,1000,1000,0,0,70,180,0,0,0,0,0,14,24166,149410,0,0,0,0,0,"Kalaran Windblade - On Script - Respawn Light of Retribution"), +(847900,9,11,0,0,0,100,0,0,0,0,0,70,180,0,0,0,0,0,14,16762,149047,0,0,0,0,0,"Kalaran Windblade - On Script - Respawn Torch of Retribution"), +(847900,9,12,0,0,0,100,0,3000,3000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Say Line 2"), +(847900,9,13,0,0,0,100,0,0,0,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Set Flag Standstate Kneel"), +(847900,9,14,0,0,0,100,0,2000,2000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Say Line 3"), +(847900,9,15,0,0,0,100,0,2000,2000,0,0,15,3453,0,0,0,0,0,7,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Quest Credit 'The Torch of Retribution'"), +(847900,9,16,0,0,0,100,0,2000,2000,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Remove Flag Standstate Kneel"), +(847900,9,17,0,0,0,100,0,0,0,0,0,82,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Script - Add Npc Flags Gossip & Questgiver"); + +DELETE FROM `creature_text` WHERE `CreatureID`=8479; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(8479,0,0,"%s chants in an unknown tongue.",16,0,100,0,0,0,4447,0,"Kalaran Windblade"), +(8479,1,0,"Be patient, $n. The torch is almost complete.",12,0,100,1,0,0,4448,0,"Kalaran Windblade"), +(8479,2,0,"%s falls to one knee. He looks exhausted.",16,0,100,0,0,0,4449,0,"Kalaran Windblade"), +(8479,3,0,"It is done...",12,0,100,0,0,0,4450,0,"Kalaran Windblade"); From 7c401fa15dfea7d542b06502a2bd41b4d9789cfc Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:53:10 +0100 Subject: [PATCH 040/178] DB/Quest: The Key to Freedom Closes #21305 --- .../world/3.3.5/2018_01_25_10_world_335.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_10_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_10_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_10_world_335.sql new file mode 100644 index 0000000000..0709ffc34e --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_10_world_335.sql @@ -0,0 +1,22 @@ +-- Quest "The Key to Freedom" +-- Wooden Outhouse +DELETE FROM `smart_scripts` WHERE `entryorguid`=173265 AND `source_type`=1 AND `id` IN (1,2,3); +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 +(173265,1,1,0,20,0,100,0,4451,0,0,0,64,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Goodsteel Ledger - On Quest 'The Key to Freedom' Finished - Store Targetlist"), +(173265,1,2,0,20,0,100,0,4451,0,0,0,12,9876,3,30000,0,0,0,8,0,0,0,-7026.11,-1784.73,265.782,2.11562,"Goodsteel Ledger - On Quest 'The Key to Freedom' Finished - Summon Creature 'Locheed'"), +(173265,1,3,0,20,0,100,0,4451,0,0,0,100,1,0,0,0,0,0,19,9876,0,0,0,0,0,0,"Goodsteel Ledger - On Quest 'The Key to Freedom' Finished - Send Targetlist to Locheed"); + +-- Locheed +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=9876; +DELETE FROM `smart_scripts` WHERE `entryorguid`=9876 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=987600 AND `source_type`=9; +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 +(9876,0,0,0,11,0,100,0,0,0,0,0,80,987600,0,0,0,0,0,1,0,0,0,0,0,0,0,"Locheed - On Respawn - Run Script"), +(987600,9,0,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,12,1,0,0,0,0,0,0,"Locheed - On Respawn - Say Line 0"), +(987600,9,1,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,12,1,0,0,0,0,0,0,"Locheed - On Respawn - Say Line 1"), +(987600,9,2,0,0,0,100,0,6000,6000,0,0,69,0,0,0,0,0,0,8,0,0,0,-7165.31,-1802.59,272.783,3.01882,"Locheed - On Respawn - Move to Position"); + +DELETE FROM `creature_text` WHERE `CreatureID`=9876; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(9876,0,0,"Ach! Thank you so much, $n! I'm free! Finally!",12,0,100,4,0,0,5407,0,"Locheed"), +(9876,1,0,"You take care of yourself! I'm gettin' out o' here.",12,0,100,5,0,0,5408,0,"Locheed"); From e6bc29f77c252ab18874382d47dc93a5e4c69f4b Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:54:36 +0100 Subject: [PATCH 041/178] DB/Quest: Set Them Ablaze! Closes #21306 --- .../world/3.3.5/2018_01_25_11_world_335.sql | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_11_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_11_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_11_world_335.sql new file mode 100644 index 0000000000..4bc2045cfe --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_11_world_335.sql @@ -0,0 +1,47 @@ +-- Quest "Set Them Ablaze!" +-- Squire Maltrake +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8509; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8509 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 +(8509,0,0,0,20,0,100,0,3463,0,0,0,45,1,1,0,0,0,0,19,8479,0,0,0,0,0,0,"Squire Maltrake - On Quest 'Set Them Ablaze!' Finished - Set Data to Kalaran Windblade"); + +-- Kalaran Windblade +DELETE FROM `smart_scripts` WHERE `entryorguid`=8479 AND `source_type`=0 AND `id` IN (7,8); +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 +(8479,0,7,0,38,0,100,0,1,1,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Data Set - Despawn"), +(8479,0,8,0,38,0,100,0,1,1,0,0,12,8480,3,68000,0,0,0,1,0,0,0,0,0,0,0,"Kalaran Windblade - On Data Set - Summon Creature 'Kalaran the Deceiver'"); + +-- Kalaran the Deceiver +UPDATE `creature_template` SET `AIName`="SmartAI", `InhabitType`=7, `speed_run`=2 WHERE `entry`=8480; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8480 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=848000 AND `source_type`=9; +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 +(8480,0,0,0,54,0,100,0,0,0,0,0,80,848000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - Just Summoned - Run Script"), +(848000,9,0,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 0"), +(848000,9,1,0,0,0,100,0,3000,3000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 1"), +(848000,9,2,0,0,0,100,0,4000,4000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 2"), +(848000,9,3,0,0,0,100,0,6000,6000,0,0,1,0,0,0,0,0,0,19,8509,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 0 (Squire Maltrake)"), +(848000,9,4,0,0,0,100,0,2000,2000,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,4.65994,"Kalaran the Deceiver - On Script - Set Orientation"), +(848000,9,5,0,0,0,100,0,3000,3000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 3"), +(848000,9,6,0,0,0,100,0,3000,3000,0,0,1,4,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 4"), +(848000,9,7,0,0,0,100,0,9000,9000,0,0,1,5,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 5"), +(848000,9,8,0,0,0,100,0,5000,5000,0,0,1,1,0,0,0,0,0,19,8509,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 1 (Squire Maltrake)"), +(848000,9,9,0,0,0,100,0,3000,3000,0,0,1,6,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 6"), +(848000,9,10,0,0,0,100,0,4000,4000,0,0,1,7,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 7"), +(848000,9,11,0,0,0,100,0,5000,5000,0,0,1,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kalaran the Deceiver - On Script - Say Line 8"), +(848000,9,12,0,0,0,100,0,6000,6000,0,0,69,0,0,0,0,0,0,8,0,0,0,-6879.3,-1187.34,293.384,0,"Kalaran the Deceiver - On Script - Move to Position"); + +-- Texts +DELETE FROM `creature_text` WHERE `CreatureID` IN (8480, 8509); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(8480,0,0,"Glorious, indeed, Maltrake. It looks as if my plan worked perfectly. Wouldn't you say so, mortal?",12,0,100,0,0,0,4456,0,"Kalaran the Deceiver"), +(8480,1,0,"%s lets loose a reptilian laugh... at least you think it's a laugh.",16,0,100,0,0,0,4458,0,"Kalaran the Deceiver"), +(8480,2,0,"You would not have helped the legion of Blackrock had we just asked for your assistance, now would you?",12,0,100,0,0,0,4457,0,"Kalaran the Deceiver"), +(8480,3,0,"SILENCE FOOL!",12,0,100,0,0,0,4460,0,"Kalaran the Deceiver"), +(8480,4,0,"They will live, if only to see the fruits of their labor: the destruction and chaos that will surely ensue as the legion of Blackrock invade the gorge.",12,0,100,0,0,0,4461,0,"Kalaran the Deceiver"), +(8480,5,0,"I leave you now, mortals. Alive and with these trinkets. Maltrake! Present them with the trinkets!",12,0,100,0,0,0,4462,0,"Kalaran the Deceiver"), +(8480,6,0,"Oh yes, the molt - do not lose it. There are those of my kin in the Burning Steppes that would craft items that only the molt of the black Dragonflight could fortify.",12,0,100,0,0,0,4463,0,"Kalaran the Deceiver"), +(8480,7,0,"%s begins to flap his massive wings faster. He is preparing for flight.",16,0,100,0,0,0,4464,0,"Kalaran the Deceiver"), +(8480,8,0,"The legion of Blackrock comes, dwarflings! We shall scorch the earth and set fire to the heavens. None shall survive...",14,0,100,0,0,0,4465,0,"Kalaran the Deceiver"), +(8509,0,0,"What will we do with them, master? They are of no use to us anymore.",12,0,100,6,0,0,4459,0,"Squire Maltrake"), +(8509,1,0,"Right away, master!",12,0,100,2,0,0,4468,0,"Squire Maltrake"); From 92f6b8fea3f47fb10273a65ca1ae88d799c083d6 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 25 Jan 2018 18:56:22 +0100 Subject: [PATCH 042/178] DB/SAI: Searing Gorge Closes #21307 --- .../world/3.3.5/2018_01_25_12_world_335.sql | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_25_12_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_12_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_12_world_335.sql new file mode 100644 index 0000000000..550e002f4a --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_25_12_world_335.sql @@ -0,0 +1,140 @@ +-- Glassweb Spider +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5856; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5856 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 +(5856,0,0,0,25,0,100,0,0,0,0,0,11,13299,0,0,0,0,0,1,0,0,0,0,0,0,0,"Glassweb Spider - On Reset - Cast Poison Proc"), +(5856,0,1,0,9,0,100,0,0,20,8000,11000,11,745,0,0,0,0,0,2,0,0,0,0,0,0,0,"Glassweb Spider - Within 0-20 Range - Cast Web"); + +-- Shleipnarr +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8280; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8280 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 +(8280,0,0,0,0,0,100,0,3000,4000,12000,15000,11,13321,0,0,0,0,0,5,0,0,0,0,0,0,0,"Shleipnarr - In Combat - Cast Mana Burn"), +(8280,0,1,0,0,0,100,0,8000,10000,25000,32000,11,7399,0,0,0,0,0,5,0,0,0,0,0,0,0,"Shleipnarr - In Combat - Cast Terrify"); + +-- Dark Iron Geologist +UPDATE `smart_scripts` SET `event_param3`=3000, `event_param4`=5000 WHERE `entryorguid`=5839 AND `source_type`=0 AND `id`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5839 AND `source_type`=0 AND `id`=1; +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 +(5839,0,1,0,9,0,100,0,5,30,12000,14000,11,8858,0,0,0,0,0,2,0,0,0,0,0,0,0,"Dark Iron Geologist - Within 5-30 Range - Cast Bomb"); + +-- Magma Elemental +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5855; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5855 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 +(5855,0,0,0,0,0,100,0,5000,9000,12000,16000,11,11970,2,0,0,0,0,2,0,0,0,0,0,0,0,"Magma Elemental - In Combat - Cast Fire Nova"); + +-- Heavy War Golem +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5854; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5854 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 +(5854,0,0,0,9,0,100,0,0,5,13000,19000,11,12612,0,0,0,0,0,1,0,0,0,0,0,0,0,"Heavy War Golem - Within 0-5 Range - Cast Stomp"), +(5854,0,1,0,0,0,100,0,5000,8000,11000,17000,11,5568,0,0,0,0,0,1,0,0,0,0,0,0,0,"Heavy War Golem - In Combat - Cast Trample"); + +-- Inferno Elemental +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5852; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5852 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 +(5852,0,0,0,0,0,100,0,6000,9000,11000,14000,11,10733,0,0,0,0,0,2,0,0,0,0,0,0,0,"Inferno Elemental - In Combat - Cast Flame Spray"); + +-- Margol the Rager +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5833; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5833 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 +(5833,0,0,0,0,0,100,0,3000,5000,8000,14000,11,15549,0,0,0,0,0,2,0,0,0,0,0,0,0,"Margol the Rager - In Combat - Cast Chained Bolt"), +(5833,0,1,0,0,0,100,0,8000,12000,16000,20000,11,8147,0,0,0,0,0,1,0,0,0,0,0,0,0,"Margol the Rager - In Combat - Cast Thunderclap"); + +-- Rekk'tilac +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8277; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8277 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 +(8277,0,0,0,0,0,100,0,7000,9000,16000,18000,11,3583,2,0,0,0,0,2,0,0,0,0,0,0,0,"Rekk'tilac - In Combat - Cast Deadly Poison"); + +-- Scald +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8281; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8281 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 +(8281,0,0,0,0,0,100,0,3000,5000,14000,16000,11,11962,0,0,0,0,0,2,0,0,0,0,0,0,0,"Scald - In Combat - Cast Immolate"); + +-- Greater Lava Spider +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5858; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5858 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 +(5858,0,0,0,0,0,100,0,1000,5000,7000,13000,11,11985,0,0,0,0,0,2,0,0,0,0,0,0,0,"Greater Lava Spider - In Combat - Cast Fireball"); + +-- Slave Worker +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5843; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5843 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 +(5843,0,0,0,0,0,100,0,5000,7000,12000,15000,11,11971,0,0,0,0,0,2,0,0,0,0,0,0,0,"Slave Worker - In Combat - Cast Sunder Armor"), +(5843,0,1,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Slave Worker - Between 0-15% Health - Flee For Assist (No Repeat)"); + +-- Smoldar +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8278; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8278 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 +(8278,0,0,0,0,0,100,0,7000,9000,17000,19000,11,5213,0,0,0,0,0,2,0,0,0,0,0,0,0,"Smoldar - In Combat - Cast Molten Metal"); + +-- Twilight Fire Guard +UPDATE `creature_template` SET `unit_class`=2, `AIName`="SmartAI" WHERE `entry`=5861; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5861 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 +(5861,0,0,0,0,0,100,0,4000,12000,18000,22000,11,11988,0,0,0,0,0,1,0,0,0,0,0,0,0,"Twilight Fire Guard - In Combat - Cast Fireball Volley"), +(5861,0,1,0,4,0,100,0,0,0,0,0,11,18968,0,0,0,0,0,1,0,0,0,0,0,0,0,"Twilight Fire Guard - On Aggro - Cast Fire Shield"); + +-- Twilight Dark Shaman +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5860; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5860 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 +(5860,0,0,0,0,0,100,0,3000,5000,10000,14000,11,11824,0,0,0,0,0,2,0,0,0,0,0,0,0,"Twilight Dark Shaman - In Combat - Cast Shock"), +(5860,0,1,0,0,0,100,0,7000,9000,15000,25000,11,7289,32,0,0,0,0,5,0,0,0,0,0,0,0,"Twilight Dark Shaman - In Combat - Cast Shrink"), +(5860,0,2,0,14,0,100,0,700,40,16000,20000,11,11986,0,0,0,0,0,7,0,0,0,0,0,0,0,"Twilight Dark Shaman - On Aggro - Cast Healing Wave"); + +-- Twilight Geomancer +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5862; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5862 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 +(5862,0,0,0,0,0,100,0,0,0,3000,5000,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,"Twilight Geomancer - In Combat - Cast Fireball"), +(5862,0,1,0,0,0,100,0,7000,11000,18000,24000,11,11990,0,0,0,0,0,5,0,0,0,0,0,0,0,"Twilight Geomancer - In Combat - Cast Rain of Fire"), +(5862,0,2,0,0,0,100,0,9000,13000,15000,19000,11,11436,0,0,0,0,0,5,0,0,0,0,0,0,0,"Twilight Geomancer - In Combat - Cast Slow"); + +-- Twilight Idolater +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8419; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8419 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 +(8419,0,0,0,0,0,100,0,0,0,3000,5000,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,"Twilight Idolater - In Combat - Cast Fireball"), +(8419,0,1,0,0,0,100,0,6000,9000,18000,22000,11,11962,0,0,0,0,0,5,0,0,0,0,0,0,0,"Twilight Idolater - In Combat - Cast Immolate"); + +-- Highlord Mastrogonde +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8282; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8282 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 +(8282,0,0,0,0,0,100,0,0,0,3000,5000,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,"Highlord Mastrogonde - In Combat - Cast Shadow Bolt"), +(8282,0,1,0,0,0,100,0,8000,14000,21000,25000,11,11639,0,0,0,0,0,5,0,0,0,0,0,0,0,"Highlord Mastrogonde - In Combat - Cast Shadow Word: Pain"), +(8282,0,2,0,0,0,100,0,6000,9000,15000,18000,11,13323,0,0,0,0,0,6,0,0,0,0,0,0,0,"Highlord Mastrogonde - In Combat - Cast Polymorph"), +(8282,0,3,0,2,0,100,0,0,50,50000,70000,11,11974,0,0,0,0,0,1,0,0,0,0,0,0,0,"Slave Worker - Between 0-50% Health - Cast Power Word: Shield"); + +-- Slave Master Blackheart +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8283; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8283 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 +(8283,0,0,0,0,0,100,0,0,0,2000,3000,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,"Slave Master Blackheart - In Combat - Cast Shoot"), +(8283,0,1,0,9,0,100,0,0,20,8000,9000,11,6533,0,0,0,0,0,2,0,0,0,0,0,0,0,"Slave Master Blackheart - Within 0-20 Range - Cast Net"); + +-- Incendosaur +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=9318; +DELETE FROM `smart_scripts` WHERE `entryorguid`=9318 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 +(9318,0,0,0,0,0,100,0,5000,9000,12000,16000,11,11985,0,0,0,0,0,2,0,0,0,0,0,0,0,"Incendosaur - In Combat - Cast Fireball"); + +-- Overseer Maltorius +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=14621; +DELETE FROM `smart_scripts` WHERE `entryorguid`=14621 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 +(14621,0,0,0,0,0,100,0,0,0,3000,5000,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,"Overseer Maltorius - In Combat - Cast Shadow Bolt"), +(14621,0,1,0,0,0,100,0,4000,12000,16000,22000,11,11639,0,0,0,0,0,5,0,0,0,0,0,0,0,"Overseer Maltorius - In Combat - Cast Shadow Word: Pain"), +(14621,0,2,0,0,0,100,0,6000,9000,13000,16000,11,13323,0,0,0,0,0,6,0,0,0,0,0,0,0,"Overseer Maltorius - In Combat - Cast Polymorph"), +(14621,0,3,0,2,0,100,0,0,50,40000,60000,11,11974,0,0,0,0,0,1,0,0,0,0,0,0,0,"Overseer Maltorius - Between 0-50% Health - Cast Power Word: Shield"); + +-- Fix bytes2 for some creatures +UPDATE `creature_addon` SET `bytes2`=2 WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id` IN (8283,8566)); From e6f5e5255c2e8880056bafb19a70e1963b165558 Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 25 Jan 2018 20:29:32 +0100 Subject: [PATCH 043/178] DB: Rename 2018_01_25_03_world.sql --- .../{2018_01_25_03_world.sql => 2018_01_25_03_world_335.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sql/updates/world/3.3.5/{2018_01_25_03_world.sql => 2018_01_25_03_world_335.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_01_25_03_world.sql b/sql/updates/world/3.3.5/2018_01_25_03_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_25_03_world.sql rename to sql/updates/world/3.3.5/2018_01_25_03_world_335.sql From a96b25f3d22e1e2cc8b7e4df908d5bc1f64a1785 Mon Sep 17 00:00:00 2001 From: Killyana Date: Fri, 26 Jan 2018 22:51:02 +0100 Subject: [PATCH 044/178] DB/Quest: Territorial Trespass Ref #20771 --- sql/updates/world/3.3.5/2018_01_26_00_world.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_01_26_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_26_00_world.sql b/sql/updates/world/3.3.5/2018_01_26_00_world.sql new file mode 100644 index 0000000000..4753dd2d84 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_01_26_00_world.sql @@ -0,0 +1,12 @@ +-- +DELETE FROM `event_scripts` WHERE `id` = 19714; +INSERT INTO `event_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES +(19714,0,9,5272,60,0,0,0,0,0), +(19714,0,9,5273,60,0,0,0,0,0), +(19714,0,9,5274,60,0,0,0,0,0), +(19714,0,9,5271,60,0,0,0,0,0), +(19714,0,9,5275,60,0,0,0,0,0), +(19714,0,10,30461,600000,0,6947.48,-859.518,1147.6,5.67487); +UPDATE `gameobject` SET `position_z`=1066.73991 WHERE `guid`=5275; +UPDATE `gameobject` SET `position_z`=1067.04003 WHERE `guid`=5274; + From e3de814ecaedb28f6ec9f74ca61ae0786fbc6c18 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 27 Jan 2018 16:52:01 +0100 Subject: [PATCH 045/178] Rename files --- sql/updates/world/3.3.5/2018_01_21_02_world_335.sql | 2 -- sql/updates/world/3.3.5/2018_01_23_00_world_335.sql | 2 -- sql/updates/world/3.3.5/2018_01_25_04_world_335.sql | 2 -- sql/updates/world/3.3.5/2018_01_25_08_world_335.sql | 2 -- ...2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql | 2 ++ ...2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql | 2 ++ .../2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql} | 0 .../2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql} | 0 ...018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql} | 2 ++ ...018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql} | 2 ++ ...2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql | 2 ++ ...018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql} | 2 ++ ...018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql} | 2 ++ ...018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql} | 2 ++ ...2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql | 2 ++ ...018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql} | 2 ++ ...018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql} | 2 ++ ...018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql} | 2 ++ ...018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql} | 2 ++ .../2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql} | 0 20 files changed, 26 insertions(+), 8 deletions(-) delete mode 100644 sql/updates/world/3.3.5/2018_01_21_02_world_335.sql delete mode 100644 sql/updates/world/3.3.5/2018_01_23_00_world_335.sql delete mode 100644 sql/updates/world/3.3.5/2018_01_25_04_world_335.sql delete mode 100644 sql/updates/world/3.3.5/2018_01_25_08_world_335.sql create mode 100644 sql/updates/world/4.3.4/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql create mode 100644 sql/updates/world/4.3.4/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql rename sql/updates/world/{3.3.5/2018_01_24_00_world.sql => 4.3.4/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_01_24_03_world.sql => 4.3.4/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_01_25_02_world_335.sql => 4.3.4/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_01_25_03_world_335.sql => 4.3.4/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql} (99%) create mode 100644 sql/updates/world/4.3.4/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql rename sql/updates/world/{3.3.5/2018_01_25_05_world_335.sql => 4.3.4/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql} (97%) rename sql/updates/world/{3.3.5/2018_01_25_06_world_335.sql => 4.3.4/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_01_25_07_world_335.sql => 4.3.4/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql} (99%) create mode 100644 sql/updates/world/4.3.4/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql rename sql/updates/world/{3.3.5/2018_01_25_09_world_335.sql => 4.3.4/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_01_25_10_world_335.sql => 4.3.4/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_01_25_11_world_335.sql => 4.3.4/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_01_25_12_world_335.sql => 4.3.4/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_01_26_00_world.sql => 4.3.4/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_01_21_02_world_335.sql b/sql/updates/world/3.3.5/2018_01_21_02_world_335.sql deleted file mode 100644 index 2493bb5222..0000000000 --- a/sql/updates/world/3.3.5/2018_01_21_02_world_335.sql +++ /dev/null @@ -1,2 +0,0 @@ --- Argent Guard Thaelrid -UPDATE `creature_template` SET `faction`=794 WHERE `entry`=4787; diff --git a/sql/updates/world/3.3.5/2018_01_23_00_world_335.sql b/sql/updates/world/3.3.5/2018_01_23_00_world_335.sql deleted file mode 100644 index 6c643caf72..0000000000 --- a/sql/updates/world/3.3.5/2018_01_23_00_world_335.sql +++ /dev/null @@ -1,2 +0,0 @@ -UPDATE `spell_bonus_data` SET `direct_bonus`=0 WHERE `entry`=33763; -UPDATE `spell_bonus_data` SET `direct_bonus`=0.51623296 WHERE `entry`=33778; diff --git a/sql/updates/world/3.3.5/2018_01_25_04_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_04_world_335.sql deleted file mode 100644 index 3b228de52a..0000000000 --- a/sql/updates/world/3.3.5/2018_01_25_04_world_335.sql +++ /dev/null @@ -1,2 +0,0 @@ --- Call to Arms! --> Fix Gossip Text -UPDATE `gossip_menu` SET `TextID`=7274 WHERE `MenuID`=6121; diff --git a/sql/updates/world/3.3.5/2018_01_25_08_world_335.sql b/sql/updates/world/3.3.5/2018_01_25_08_world_335.sql deleted file mode 100644 index bdf979dfa8..0000000000 --- a/sql/updates/world/3.3.5/2018_01_25_08_world_335.sql +++ /dev/null @@ -1,2 +0,0 @@ --- Kalaran Windblade --> Fix condition -UPDATE `conditions` SET `NegativeCondition`=1 WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=1323 AND `ConditionTypeOrReference`=2; diff --git a/sql/updates/world/4.3.4/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql new file mode 100644 index 0000000000..3452a04b70 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql @@ -0,0 +1,2 @@ +-- Argent Guard Thaelrid +-- UPDATE `creature_template` SET `faction`=794 WHERE `entry`=4787; diff --git a/sql/updates/world/4.3.4/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql new file mode 100644 index 0000000000..8ee9b4885b --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql @@ -0,0 +1,2 @@ +-- UPDATE `spell_bonus_data` SET `direct_bonus`=0 WHERE `entry`=33763; +-- UPDATE `spell_bonus_data` SET `direct_bonus`=0.51623296 WHERE `entry`=33778; diff --git a/sql/updates/world/3.3.5/2018_01_24_00_world.sql b/sql/updates/world/4.3.4/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_24_00_world.sql rename to sql/updates/world/4.3.4/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_24_03_world.sql b/sql/updates/world/4.3.4/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_24_03_world.sql rename to sql/updates/world/4.3.4/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_01_25_02_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_02_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql index e52cd25de0..1dd809df38 100644 --- a/sql/updates/world/3.3.5/2018_01_25_02_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql @@ -1,3 +1,4 @@ +/* -- Gavis Greyshield DELETE FROM `smart_scripts` WHERE `entryorguid`= 23941 AND `source_type`= 0; DELETE FROM `smart_scripts` WHERE `entryorguid`= 2394100 AND `source_type`= 9; @@ -10,3 +11,4 @@ INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type (2394100,9,0,0, 0,0,100, 0, 1000, 1000,0,0, 1, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - On Script - Say Line 0"), (2394100,9,1,0, 0,0,100, 0, 4000, 4000,0,0, 1, 1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - On Script - Say Line 1"), (2394100,9,2,0, 0,0,100, 0,10000,10000,0,0, 41, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gavis Greyshield - On Script - Despawn"); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_25_03_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_03_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql index 8a5dac2a53..2c11a148f5 100644 --- a/sql/updates/world/3.3.5/2018_01_25_03_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql @@ -1,5 +1,7 @@ +/* -- Master Smith Burninate --> Fix gossip conditions DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=5962; INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES (14,5962,7121,0,0,8,0,7722,0,0,0,0,0,"","Show gossip text 7121 if player has quest 'What the Flux?' rewarded"), (14,5962,7121,0,0,5,0,59,128,0,0,0,0,"","Show gossip text 7121 if player is exalted with Thorium Brotherhood"); +*/ diff --git a/sql/updates/world/4.3.4/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql new file mode 100644 index 0000000000..fbc42a249f --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql @@ -0,0 +1,2 @@ +-- Call to Arms! --> Fix Gossip Text +-- UPDATE `gossip_menu` SET `TextID`=7274 WHERE `MenuID`=6121; diff --git a/sql/updates/world/3.3.5/2018_01_25_05_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql similarity index 97% rename from sql/updates/world/3.3.5/2018_01_25_05_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql index dbdcd1a6e5..65efd6f680 100644 --- a/sql/updates/world/3.3.5/2018_01_25_05_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql @@ -1,6 +1,8 @@ +/* -- Primal Torntusk --> Add Gossip Text UPDATE `creature_template` SET `gossip_menu_id`=6084 WHERE `entry`=14736; DELETE FROM `gossip_menu` WHERE `MenuID`=6084; INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES (6084,7238,0); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_25_06_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_06_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql index 714f7f4455..bc0d4505cd 100644 --- a/sql/updates/world/3.3.5/2018_01_25_06_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql @@ -1,3 +1,4 @@ +/* -- Fallen Hero of the Horde --> Fix gossip texts DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup`=840; INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES @@ -18,3 +19,4 @@ DELETE FROM `smart_scripts` WHERE `entryorguid`=7572 AND `source_type`=0 AND `id 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 (7572,0,0,2,62,0,100,512,842,0,0,0,26,2784,0,0,0,0,0,7,0,0,0,0,0,0,0,"Fallen Hero of the Horde - On Gossip Option 0 Selected - Quest Credit 'Fall From Grace'"), (7572,0,1,2,62,0,100,512,881,0,0,0,26,2801,0,0,0,0,0,7,0,0,0,0,0,0,0,"Fallen Hero of the Horde - On Gossip Option 0 Selected - Quest Credit 'A Tale of Sorrow'"); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_25_07_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_07_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql index 89c3ab1618..47fa298787 100644 --- a/sql/updates/world/3.3.5/2018_01_25_07_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql @@ -1,3 +1,4 @@ +/* UPDATE `creature_template` SET `gossip_menu_id`=6522, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=15127; -- Samuel Hawke UPDATE `creature_template` SET `gossip_menu_id`=6521, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=15126; -- Rutherford Twing UPDATE `creature_template` SET `gossip_menu_id`=6142, `npcflag`=4227, `type_flags`=134217728 WHERE `entry`=14753; -- Illiyana Moonblaze @@ -16,3 +17,4 @@ INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionTex (6521,0,1,"What goods have I earned the right to purchase from the Defilers?",10623,3,128,0,0,0,0,"",0,0), -- Rutherford Twing (6142,0,1,"What goods have I earned the right to purchase for use in Warsong Gulch?",10021,3,128,0,0,0,0,"",0,0), -- Illiyana Moonblaze (6141,0,1,"What goods have I earned the right to purchase for use in Warsong Gulch?",10019,3,128,0,0,0,0,"",0,0); -- Kelm Hargunth +*/ diff --git a/sql/updates/world/4.3.4/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql new file mode 100644 index 0000000000..9d1772c50a --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql @@ -0,0 +1,2 @@ +-- Kalaran Windblade --> Fix condition +-- UPDATE `conditions` SET `NegativeCondition`=1 WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=1323 AND `ConditionTypeOrReference`=2; diff --git a/sql/updates/world/3.3.5/2018_01_25_09_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_09_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql index 35d4cba031..451585d774 100644 --- a/sql/updates/world/3.3.5/2018_01_25_09_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "The Torch of Retribution" DELETE FROM `smart_scripts` WHERE `entryorguid`=847900 AND `source_type`=9; 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 @@ -26,3 +27,4 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan (8479,1,0,"Be patient, $n. The torch is almost complete.",12,0,100,1,0,0,4448,0,"Kalaran Windblade"), (8479,2,0,"%s falls to one knee. He looks exhausted.",16,0,100,0,0,0,4449,0,"Kalaran Windblade"), (8479,3,0,"It is done...",12,0,100,0,0,0,4450,0,"Kalaran Windblade"); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_25_10_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_10_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql index 0709ffc34e..7bf7f8618c 100644 --- a/sql/updates/world/3.3.5/2018_01_25_10_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "The Key to Freedom" -- Wooden Outhouse DELETE FROM `smart_scripts` WHERE `entryorguid`=173265 AND `source_type`=1 AND `id` IN (1,2,3); @@ -20,3 +21,4 @@ DELETE FROM `creature_text` WHERE `CreatureID`=9876; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES (9876,0,0,"Ach! Thank you so much, $n! I'm free! Finally!",12,0,100,4,0,0,5407,0,"Locheed"), (9876,1,0,"You take care of yourself! I'm gettin' out o' here.",12,0,100,5,0,0,5408,0,"Locheed"); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_25_11_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_11_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql index 4bc2045cfe..f1b5792ab4 100644 --- a/sql/updates/world/3.3.5/2018_01_25_11_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "Set Them Ablaze!" -- Squire Maltrake UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8509; @@ -45,3 +46,4 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan (8480,8,0,"The legion of Blackrock comes, dwarflings! We shall scorch the earth and set fire to the heavens. None shall survive...",14,0,100,0,0,0,4465,0,"Kalaran the Deceiver"), (8509,0,0,"What will we do with them, master? They are of no use to us anymore.",12,0,100,6,0,0,4459,0,"Squire Maltrake"), (8509,1,0,"Right away, master!",12,0,100,2,0,0,4468,0,"Squire Maltrake"); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_25_12_world_335.sql b/sql/updates/world/4.3.4/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_01_25_12_world_335.sql rename to sql/updates/world/4.3.4/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql index 550e002f4a..209000b370 100644 --- a/sql/updates/world/3.3.5/2018_01_25_12_world_335.sql +++ b/sql/updates/world/4.3.4/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql @@ -1,3 +1,4 @@ +/* -- Glassweb Spider UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5856; DELETE FROM `smart_scripts` WHERE `entryorguid`=5856 AND `source_type`=0; @@ -138,3 +139,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ -- Fix bytes2 for some creatures UPDATE `creature_addon` SET `bytes2`=2 WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id` IN (8283,8566)); +*/ diff --git a/sql/updates/world/3.3.5/2018_01_26_00_world.sql b/sql/updates/world/4.3.4/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_01_26_00_world.sql rename to sql/updates/world/4.3.4/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql From fdbbc081e4ec8769823f6b74a69e03cec3747170 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 29 Jan 2018 15:47:16 +0100 Subject: [PATCH 046/178] DB/Creature: Delete incorrectly spawned Gharsul the Remorseless --- sql/updates/world/4.3.4/2018_01_29_00_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_01_29_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_29_00_world.sql b/sql/updates/world/4.3.4/2018_01_29_00_world.sql new file mode 100644 index 0000000000..06383902c4 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_29_00_world.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `creature` WHERE `guid`=86933; From bfd7dcf815f2959cabec0deea6971674038f95c9 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Mon, 29 Jan 2018 18:22:59 +0100 Subject: [PATCH 047/178] DB/Creature: Delete perm spam of temp creature --- sql/updates/world/4.3.4/2018_01_29_01_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_01_29_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_29_01_world.sql b/sql/updates/world/4.3.4/2018_01_29_01_world.sql new file mode 100644 index 0000000000..0f2d8b5164 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_01_29_01_world.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `creature` WHERE `guid` = 326468; + From 5658af802e7f895286b558017a5db3b13261b78c Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 2 Feb 2018 22:30:33 +0100 Subject: [PATCH 048/178] DB/Misc: Some Westfall Fixes By kilyana --- .../world/4.3.4/2018_02_02_00_world.sql | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_02_02_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_02_00_world.sql b/sql/updates/world/4.3.4/2018_02_02_00_world.sql new file mode 100644 index 0000000000..c0fc329887 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_02_00_world.sql @@ -0,0 +1,25 @@ +-- +UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=42562; +UPDATE `creature_template` SET `unit_flags`=`unit_flags`|33536 WHERE `entry` IN (42560); +DELETE FROM `creature` WHERE `id`IN (42403,42402,42401,42399); + +SET @CGUID := 251569; +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+7; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(@CGUID+0,42560,0,40,109,1,169,0,0,0,-9855.679, 1277.568, 40.96358,5.427974,120,0,0,0,0,0,0,0,0,'',0), +(@CGUID+1,42386,0,40,109,1,169,0,0,0,-9851.216, 1273.403, 41.19444,2.583087,120,0,0,0,0,0,0,0,0,'',0), +(@CGUID+2,42384,0,40,109,1,169,0,0,0,-9859.457, 1279.47, 41.09737,5.480334,120,0,0,0,0,0,0,0,0,'',0), +(@CGUID+3,42384,0,40,109,1,169,0,0,0,-9861.16, 1276.556, 40.83781,0.122173,120,0,0,0,0,0,0,0,0,'',0), +(@CGUID+4,42559,0,40,109,1,169,0,0,0,-9852.603, 1274.115, 41.0983,5.88176,120,0,0,0,0,0,0,0,0,'',0), +(@CGUID+5,42559,0,40,109,1,169,0,0,0,-9859.658, 1275.504, 40.86245,2.373648,120,0,0,0,0,0,0,0,0,'',0), +(@CGUID+6,42558,0,40,109,1,169,0,0,0,-9855.285, 1275.561, 40.97787,1.413717,120,0,0,0,0,0,0,0,0,'',0); + +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+7; +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `auras`) VALUES +(@CGUID+0,0,0,65536,1,0,0,0,0,'79343 79372 29266'), +(@CGUID+1,0,0,65536,1,431,0,0,0,'79343'), +(@CGUID+2,0,0,65536,1,431,0,0,0,'79343'), +(@CGUID+3,0,0,65536,1,431,0,0,0,'79343'), +(@CGUID+4,0,0,65536,1,0,0,0,0,'79343'), +(@CGUID+5,0,0,65536,1,0,0,0,0,'79343'), +(@CGUID+6,0,0,65544,1,0,0,0,0,'79343'); From ef39c181a887df568c5acb6e0650d5e41bb6439a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 2 Feb 2018 23:34:22 +0100 Subject: [PATCH 049/178] DB/Gameobject: Spawn go for quest Livin' the life By Kilyana --- sql/updates/world/4.3.4/2018_02_02_01_world.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_02_02_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_02_01_world.sql b/sql/updates/world/4.3.4/2018_02_02_01_world.sql new file mode 100644 index 0000000000..6ca8a8bc87 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_02_01_world.sql @@ -0,0 +1,5 @@ +-- +SET @OGUID := 200630; +DELETE FROM `gameobject` WHERE `guid`=@OGUID; +INSERT INTO `gameobject` (`guid`,`id`,`map`,`zoneId`,`areaId`,`spawnMask`,`PhaseId`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES +(@OGUID,203957, 0, 40, 111, 1, 169, -9848.62, 1390.5, 38.0731, 3.92641, 0, 0, 0.92399, -0.382416, 300, 255, 1); From 61038943f8d7642d6d8b89cea56741c57efc6f95 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 4 Feb 2018 14:36:06 +0100 Subject: [PATCH 050/178] DB/Loot: Redo Prowler table and remove exploit By Teppic1 --- sql/updates/world/4.3.4/2018_02_04_00_world.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 sql/updates/world/4.3.4/2018_02_04_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_04_00_world.sql b/sql/updates/world/4.3.4/2018_02_04_00_world.sql new file mode 100644 index 0000000000..631eba4b7e --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_04_00_world.sql @@ -0,0 +1,9 @@ +DELETE FROM `creature_loot_template` WHERE `Entry`=118; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(118, 2672, 0, 85, 0, 1, 0, 1, 1, NULL), -- Stringy wolf meat +(118, 62328, 0, 85, 0, 1, 1, 1, 1, NULL), -- Shed fur +(118, 3299, 0, 15, 0, 1, 1, 1, 1, NULL), -- Fractured canine +(118, 24073, 24073, 2, 0, 1, 2, 1, 1, NULL), -- Junk +(118, 24074, 24074, 1, 0, 1, 2, 1, 1, NULL), -- Greens ilvl 10-11 +(118, 24075, 24075, 0.5, 0, 1, 2, 1, 1, NULL), -- Greens ilvl 12-13 +(118, 11111, 11111, 0.1, 0, 1, 0, 1, 1, NULL); -- Bags From 23ff9e8d123393db396f094e2cb7e51810eb7763 Mon Sep 17 00:00:00 2001 From: Ovalord <1Don7H4v3@m41L.com> Date: Wed, 7 Feb 2018 11:13:45 +0100 Subject: [PATCH 051/178] Core/Spells: fixed a logic mistake that was interrupting channeled spells due to movement --- src/server/game/Entities/Unit/Unit.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a7f84306a6..bc4c080e19 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3072,17 +3072,17 @@ int32 Unit::GetCurrentSpellCastTime(uint32 spell_id) const bool Unit::IsMovementPreventedByCasting() const { // can always move when not casting - if (!HasUnitState(UNIT_STATE_CASTING)) - return false; + if (HasUnitState(UNIT_STATE_CASTING)) + return true; // channeled spells during channel stage (after the initial cast timer) allow movement with a specific spell attribute if (Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]) if (spell->getState() != SPELL_STATE_FINISHED && spell->IsChannelActive()) - if (spell->GetSpellInfo()->IsMoveAllowedChannel()) - return false; + if (!spell->GetSpellInfo()->IsMoveAllowedChannel()) + return true; // prohibit movement for all other spell casts - return true; + return false; } bool Unit::isInFrontInMap(Unit const* target, float distance, float arc) const From 3b1913a739a19300f9ef1d82f6dd5954d5add9a2 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 8 Feb 2018 20:13:53 +0000 Subject: [PATCH 052/178] Revert "Core/Spells: fixed a logic mistake that was interrupting channeled spells due to movement" This reverts merge request !107 --- src/server/game/Entities/Unit/Unit.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index bc4c080e19..a7f84306a6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3072,17 +3072,17 @@ int32 Unit::GetCurrentSpellCastTime(uint32 spell_id) const bool Unit::IsMovementPreventedByCasting() const { // can always move when not casting - if (HasUnitState(UNIT_STATE_CASTING)) - return true; + if (!HasUnitState(UNIT_STATE_CASTING)) + return false; // channeled spells during channel stage (after the initial cast timer) allow movement with a specific spell attribute if (Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]) if (spell->getState() != SPELL_STATE_FINISHED && spell->IsChannelActive()) - if (!spell->GetSpellInfo()->IsMoveAllowedChannel()) - return true; + if (spell->GetSpellInfo()->IsMoveAllowedChannel()) + return false; // prohibit movement for all other spell casts - return false; + return true; } bool Unit::isInFrontInMap(Unit const* target, float distance, float arc) const From 7182f5ddd1eae074ea96ee457a683453a4f4764b Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Sun, 4 Feb 2018 14:40:04 +0100 Subject: [PATCH 053/178] DB/Loot: Reference template 24078 corrections Closes #21345 --- .../world/3.3.5/2018_02_04_01_world_335.sql | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_04_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_04_01_world_335.sql b/sql/updates/world/3.3.5/2018_02_04_01_world_335.sql new file mode 100644 index 0000000000..bc35f5d806 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_04_01_world_335.sql @@ -0,0 +1,29 @@ +-- Remove unique items from reference table 24078 +DELETE FROM `reference_loot_template` WHERE `Entry`=24078 AND `Item` IN (899, 1391, 1440, 1446, 1469, 1473, 1929, 1930, 1936, 1943, 1944, 1945, 1951, 2020, 4290, 10400, 10401, 10402); + +-- Add former items from reference table 24078 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (899, 1391, 1440, 1446, 1469, 1473, 1929, 1930, 1936, 1943, 1944, 1945, 1951, 2020, 4290, 10400, 10401, 10402); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(217, 899, 0.1, 0, "Venom Web Spider - Venom Web Fang"), +(453, 1391, 0.1, 0, "Riverpaw Mystic - Riverpaw Mystic Staff"), +(446, 1440, 0.1, 0, "Redridge Basher - Gnoll Skull Basher"), +(440, 1446, 0.1, 0, "Blackrock Grunt - Blackrock Boots"), +(578, 1469, 0.1, 0, "Murloc Scout - Scimitar of Atun"), +(14270, 1469, 1, 0, "Squiddic - Scimitar of Atun"), +(545, 1473, 0.1, 0, "Murloc Tidecaller - Riverside Staff"), +(1729, 1929, 0.1, 0, "Defias Evoker - Silk-threaded Trousers"), +(4418, 1929, 0.1, 0, "Defias Wizard - Silk-threaded Trousers"), +(598, 1930, 0.1, 0, "Defias Miner - Stonemason Cloak"), +(622, 1936, 0.1, 0, "Goblin Engineer - Goblin Screwdriver"), +(3947, 1943, 0.1, 0, "Goblin Shipbuilder - Goblin Mail Leggings"), +(1731, 1944, 0.1, 0, "Goblin Craftsman - Metalworking Gloves"), +(641, 1945, 0.1, 0, "Goblin Woodcarver - Woodworking Gloves"), +(657, 1951, 0.1, 0, "Defias Pirate - Blackwater Cutlass"), +(1732, 1951, 0.1, 0, "Defias Squallshaper - Blackwater Cutlass"), +(539, 2020, 0.1, 0, "Pygmy Venom Web Spider - Hollowfang Blade"), +(832, 4290, 0.5, 0, "Dust Devil - Dust Bowl"), +(634, 10400, 0.5, 2, "Defias Overseer - Blackened Defias Leggings"), +(4417, 10400, 0.5, 2, "Defias Taskmaster - Blackened Defias Leggings"), +(634, 10401, 0.5, 2, "Defias Overseer - Blackened Defias Gloves"), +(4417, 10401, 0.5, 2, "Defias Taskmaster - Blackened Defias Gloves"), +(4416, 10402, 0.5, 0, "Defias Strip Miner - Blackened Defias Boots"); From 57314740daec56091db2a58bb80a42b4906207fa Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 4 Feb 2018 21:47:45 +0100 Subject: [PATCH 054/178] Core/AI: Fix assertion triggered with PetAI derived scripts (#21254) * Core/AI: Fix assertion triggered with PetAI derived scripts Fix an assertion triggered when spawning through ".npc add" or from SQL db table a Creature with AI set to a custom AI inheriting from PetAI. --- src/server/game/AI/AIException.cpp | 23 +++++++++++++ src/server/game/AI/AIException.h | 40 +++++++++++++++++++++++ src/server/game/AI/CoreAI/PetAI.cpp | 17 ++++++---- src/server/game/AI/CreatureAISelector.cpp | 13 ++++++-- 4 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 src/server/game/AI/AIException.cpp create mode 100644 src/server/game/AI/AIException.h diff --git a/src/server/game/AI/AIException.cpp b/src/server/game/AI/AIException.cpp new file mode 100644 index 0000000000..ce3d601302 --- /dev/null +++ b/src/server/game/AI/AIException.cpp @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2008-2018 TrinityCore + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "AIException.h" + +InvalidAIException::InvalidAIException(char const* _message) +{ + message().assign(_message); +} diff --git a/src/server/game/AI/AIException.h b/src/server/game/AI/AIException.h new file mode 100644 index 0000000000..265e5dddb5 --- /dev/null +++ b/src/server/game/AI/AIException.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2008-2018 TrinityCore + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef TRINITY_AIEXCEPTION_H +#define TRINITY_AIEXCEPTION_H + +#include "Define.h" +#include +#include + +class TC_GAME_API InvalidAIException : public std::exception +{ +public: + InvalidAIException(char const* _message); + ~InvalidAIException() throw() { } + + char const* what() const noexcept override { return msg_.c_str(); } + +protected: + std::string & message() throw() { return msg_; } + +private: + std::string msg_; +}; + +#endif diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index 2283616df7..1068f2334f 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -17,17 +17,20 @@ */ #include "PetAI.h" +#include "AIException.h" +#include "Creature.h" #include "Errors.h" +#include "Group.h" +#include "Log.h" +#include "MotionMaster.h" +#include "ObjectAccessor.h" #include "Pet.h" #include "Player.h" #include "Spell.h" -#include "ObjectAccessor.h" #include "SpellHistory.h" -#include "SpellMgr.h" -#include "Creature.h" -#include "Util.h" -#include "Group.h" #include "SpellInfo.h" +#include "SpellMgr.h" +#include "Util.h" int32 PetAI::Permissible(Creature const* creature) { @@ -43,6 +46,8 @@ int32 PetAI::Permissible(Creature const* creature) PetAI::PetAI(Creature* c) : CreatureAI(c), i_tracker(TIME_INTERVAL_LOOK) { + if (!me->GetCharmInfo()) + throw InvalidAIException("Creature doesn't have a valid charm info"); UpdateAllies(); } @@ -152,7 +157,7 @@ void PetAI::UpdateAI(uint32 diff) if (!spellInfo) continue; - if (me->GetCharmInfo() && me->GetSpellHistory()->HasGlobalCooldown(spellInfo)) + if (me->GetSpellHistory()->HasGlobalCooldown(spellInfo)) continue; // check spell cooldown diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp index 17a9431a94..88fedcda68 100644 --- a/src/server/game/AI/CreatureAISelector.cpp +++ b/src/server/game/AI/CreatureAISelector.cpp @@ -16,6 +16,7 @@ * with this program. If not, see . */ +#include "AIException.h" #include "Creature.h" #include "CreatureAISelector.h" #include "CreatureAIFactory.h" @@ -84,8 +85,16 @@ namespace FactorySelector return ASSERT_NOTNULL(sCreatureAIRegistry->GetRegistryItem("PetAI"))->Create(creature); // scriptname in db - if (CreatureAI* scriptedAI = sScriptMgr->GetCreatureAI(creature)) - return scriptedAI; + try + { + if (CreatureAI* scriptedAI = sScriptMgr->GetCreatureAI(creature)) + return scriptedAI; + } + catch (InvalidAIException const& e) + { + TC_LOG_ERROR("entities.unit", "Exception trying to assign script '%s' to Creature (Entry: %u), this Creature will have a default AI. Exception message: %s", + creature->GetScriptName().c_str(), creature->GetEntry(), e.what()); + } return SelectFactory(creature)->Create(creature); } From 8e5c1d012d4e8316071eb11d6cb65564286f26f2 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 4 Feb 2018 21:54:06 +0100 Subject: [PATCH 055/178] Core/Misc: Fix no-pch build --- src/server/game/AI/CreatureAISelector.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp index 88fedcda68..ec0e1d213b 100644 --- a/src/server/game/AI/CreatureAISelector.cpp +++ b/src/server/game/AI/CreatureAISelector.cpp @@ -26,6 +26,7 @@ #include "GameObject.h" #include "GameObjectAIFactory.h" +#include "Log.h" #include "ScriptMgr.h" namespace FactorySelector From 136ea0023be7eb8a6204e7795e0cf8ba3d77d391 Mon Sep 17 00:00:00 2001 From: Killyana Date: Sun, 4 Feb 2018 23:17:12 +0100 Subject: [PATCH 056/178] DB/Loot: Fix fishing loots for some areas Closes #11251 --- .../world/3.3.5/2018_02_04_02_world.sql | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_04_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_04_02_world.sql b/sql/updates/world/3.3.5/2018_02_04_02_world.sql new file mode 100644 index 0000000000..014a52c778 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_04_02_world.sql @@ -0,0 +1,55 @@ +-- +DELETE FROM `reference_loot_template` WHERE `entry`=11001; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`) VALUES +(11001, 118, 0.5 , 0, 1, 1, 1, 1), +(11001, 159, 0.1 , 0, 1, 1, 1, 1), +(11001, 774, 0.1 , 0, 1, 1, 1, 1), +(11001, 1423, 0.1 , 0, 1, 1, 1, 1), +(11001, 2407, 0.1 , 0, 1, 1, 1, 1), +(11001, 2455, 0.5 , 0, 1, 1, 1, 1), +(11001, 2589, 0.5 , 0, 1, 1, 1, 1), +(11001, 4540, 0.1 , 0, 1, 1, 1, 1), +(11001, 4565, 0.1 , 0, 1, 1, 1, 1), +(11001, 4757, 0.1 , 0, 1, 1, 1, 1), +(11001, 4775, 0.1 , 0, 1, 1, 1, 1), +(11001, 4814, 0.1 , 0, 1, 1, 1, 1), +(11001, 5523, 0.1 , 0, 1, 1, 1, 1), +(11001, 6289, 30 , 0, 1, 1, 1, 1), +(11001, 6291, 36 , 0, 1, 1, 1, 1), +(11001, 6292, 0.5 , 0, 1, 1, 1, 1), +(11001, 6294, 0.5 , 0, 1, 1, 1, 1), +(11001, 6295, 0.1 , 0, 1, 1, 1, 1), +(11001, 6303, 15 , 0, 1, 1, 1, 1), +(11001, 6308, 0.5 , 0, 1, 1, 1, 1), +(11001, 6356, 2 , 0, 1, 1, 1, 1), +(11001, 6358, 0.1 , 0, 1, 1, 1, 1), +(11001, 6361, 0.1 , 0, 1, 1, 1, 1), +(11001, 6643, 0.1 , 0, 1, 1, 1, 1), +(11001, 6889, 0.1 , 0, 1, 1, 1, 1), +(11001, 7096, 0.1 , 0, 1, 1, 1, 1), +(11001, 7097, 0.1 , 0, 1, 1, 1, 1), +(11001, 20812, 0.1, 0, 1, 1, 1, 1), +(11001, 20813, 0.1, 0, 1, 1, 1, 1), +(11001, 20847, 0.1, 0, 1, 1, 1, 1), +(11001, 20848, 0.1, 0, 1, 1, 1, 1), +(11001, 21002, 0.1, 0, 1, 1, 1, 1), +(11001, 21004, 0.1, 0, 1, 1, 1, 1), +(11001, 21006, 0.1, 0, 1, 1, 1, 1), +(11001, 21008, 0.1, 0, 1, 1, 1, 1), +(11001, 21009, 0.1, 0, 1, 1, 1, 1), +(11001, 21011, 0.1, 0, 1, 1, 1, 1), +(11001, 21013, 0.1, 0, 1, 1, 1, 1), +(11001, 21014, 0.1, 0, 1, 1, 1, 1), +(11001, 21019, 0.1, 0, 1, 1, 1, 1), +(11001, 23333, 0.1, 0, 1, 1, 1, 1), +(11001, 27668, 0.1, 0, 1, 1, 1, 1), +(11001, 45190, 2 , 0, 1, 1, 1, 1), +(11001, 45194, 2 , 0, 1, 1, 1, 1), +(11001, 45195, 0.1, 0, 1, 1, 1, 1), +(11001, 45196, 2 , 0, 1, 1, 1, 1), +(11001, 45197, 0.1, 0, 1, 1, 1, 1), +(11001, 45198, 2 , 0, 1, 1, 1, 1), +(11001, 45199, 0.1, 0, 1, 1, 1, 1), +(11001, 45200, 2 , 0, 1, 1, 1, 1), +(11001, 45201, 0.1, 0, 1, 1, 1, 1), +(11001, 45202, 0.1, 0, 1, 1, 1, 1); From 23af4f93bac2660b14fae48ec70fa6e5b35f03ba Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 4 Feb 2018 22:07:10 -0300 Subject: [PATCH 057/178] Core/Spells: remove duplicated LowerPlayerDamageReq call on reflected spells - It is already called at Unit::DealDamage --- src/server/game/Spells/Spell.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 41dcff51fd..3556220abf 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2362,11 +2362,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) else if (missInfo == SPELL_MISS_REFLECT) // In case spell reflect from target, do all effect on caster (if hit) { if (target->reflectResult == SPELL_MISS_NONE) // If reflected spell hit caster -> do all effect on him - { spellHitTarget = m_caster; - if (m_caster->GetTypeId() == TYPEID_UNIT) - m_caster->ToCreature()->LowerPlayerDamageReq(target->damage); - } } bool enablePvP = false; // need to check PvP state before spell effects, but act on it afterwards From 6dc6cc7608e41d5743ffde9e44740aefc1b114b1 Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 4 Feb 2018 22:47:53 -0300 Subject: [PATCH 058/178] Core/Spells: fix logic error causing near teleports to drop combat for players Closes #21362 --- src/server/game/Spells/SpellEffects.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 52aac213a6..406de6f722 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -901,19 +901,17 @@ void Spell::EffectTeleportUnits(SpellEffIndex /*effIndex*/) } // Init dest coordinates - uint32 mapid = destTarget->GetMapId(); - if (mapid == MAPID_INVALID) - mapid = unitTarget->GetMapId(); - float x, y, z, orientation; - destTarget->GetPosition(x, y, z, orientation); - if (!orientation && m_targets.GetUnitTarget()) - orientation = m_targets.GetUnitTarget()->GetOrientation(); - TC_LOG_DEBUG("spells", "Spell::EffectTeleportUnits - teleport unit to %u %f %f %f %f\n", mapid, x, y, z, orientation); + WorldLocation targetDest(*destTarget); + if (targetDest.GetMapId() == MAPID_INVALID) + targetDest.m_mapId = unitTarget->GetMapId(); - if (unitTarget->GetTypeId() == TYPEID_PLAYER) - unitTarget->ToPlayer()->TeleportTo(mapid, x, y, z, orientation, unitTarget == m_caster ? TELE_TO_SPELL | TELE_TO_NOT_LEAVE_COMBAT : 0); - else if (mapid == unitTarget->GetMapId()) - unitTarget->NearTeleportTo(x, y, z, orientation, unitTarget == m_caster); + if (!targetDest.GetOrientation() && m_targets.GetUnitTarget()) + targetDest.SetOrientation(m_targets.GetUnitTarget()->GetOrientation()); + + if (targetDest.GetMapId() == unitTarget->GetMapId()) + unitTarget->NearTeleportTo(targetDest, unitTarget == m_caster); + else if (unitTarget->GetTypeId() == TYPEID_PLAYER) + unitTarget->ToPlayer()->TeleportTo(targetDest, unitTarget == m_caster ? TELE_TO_SPELL : 0); else { TC_LOG_ERROR("spells", "Spell::EffectTeleportUnits - spellId %u attempted to teleport creature to a different map.", m_spellInfo->Id); @@ -921,6 +919,7 @@ void Spell::EffectTeleportUnits(SpellEffIndex /*effIndex*/) } // post effects for TARGET_DEST_DB + /// @todo: awful hacks, move this to spellscripts switch (m_spellInfo->Id) { // Dimensional Ripper - Everlook From afed7f04256c6f26780e7347fbc618993e4e2e33 Mon Sep 17 00:00:00 2001 From: ariel- Date: Mon, 5 Feb 2018 13:45:52 -0300 Subject: [PATCH 059/178] Core/Channel: properly notify client about invalid channel names Closes #16190 --- src/server/game/Chat/Channels/ChannelMgr.cpp | 3 ++- src/server/game/Handlers/ChannelHandler.cpp | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index dbb3a32b04..3deb2ee722 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -16,8 +16,9 @@ * with this program. If not, see . */ -#include "Channel.h" #include "ChannelMgr.h" +#include "Channel.h" +#include "DBCStores.h" #include "Player.h" #include "World.h" #include "WorldSession.h" diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp index ab056bddb5..8546d6099f 100644 --- a/src/server/game/Handlers/ChannelHandler.cpp +++ b/src/server/game/Handlers/ChannelHandler.cpp @@ -54,11 +54,13 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) return; } - if (channelName.empty()) - return; - - if (isdigit(channelName[0])) + if (channelName.empty() || isdigit(channelName[0])) + { + WorldPacket data(SMSG_CHANNEL_NOTIFY, 1 + channelName.size()); + data << uint8(CHAT_INVALID_NAME_NOTICE) << channelName; + SendPacket(&data); return; + } if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam())) if (Channel* channel = cMgr->GetJoinChannel(channelId, channelName, zone)) From a97171c8c06a47ba1d4c7846ffdb053f5f85384c Mon Sep 17 00:00:00 2001 From: ariel- Date: Mon, 5 Feb 2018 14:43:11 -0300 Subject: [PATCH 060/178] Core/ScriptSystem: AfterHit hook can't modify damage/healing, so log it - Also added const to getter members --- src/server/game/Spells/SpellScript.cpp | 60 ++++++++++++++++---------- src/server/game/Spells/SpellScript.h | 43 +++++++++--------- 2 files changed, 60 insertions(+), 43 deletions(-) diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index 5c81eb0bce..eada49fb87 100644 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -393,6 +393,22 @@ bool SpellScript::IsInTargetHook() const } return false; } + +bool SpellScript::IsInModifiableHook() const +{ + // after hit hook executed after damage/healing is already done + // modifying it at this point has no effect + switch (m_currentScriptState) + { + case SPELL_SCRIPT_HOOK_EFFECT_LAUNCH_TARGET: + case SPELL_SCRIPT_HOOK_EFFECT_HIT_TARGET: + case SPELL_SCRIPT_HOOK_BEFORE_HIT: + case SPELL_SCRIPT_HOOK_HIT: + return true; + } + return false; +} + bool SpellScript::IsInHitPhase() const { return (m_currentScriptState >= HOOK_SPELL_HIT_START && m_currentScriptState < HOOK_SPELL_HIT_END); @@ -403,22 +419,22 @@ bool SpellScript::IsInEffectHook() const return (m_currentScriptState >= SPELL_SCRIPT_HOOK_EFFECT_LAUNCH && m_currentScriptState <= SPELL_SCRIPT_HOOK_EFFECT_HIT_TARGET); } -Unit* SpellScript::GetCaster() +Unit* SpellScript::GetCaster() const { return m_spell->GetCaster(); } -Unit* SpellScript::GetOriginalCaster() +Unit* SpellScript::GetOriginalCaster() const { return m_spell->GetOriginalCaster(); } -SpellInfo const* SpellScript::GetSpellInfo() +SpellInfo const* SpellScript::GetSpellInfo() const { return m_spell->GetSpellInfo(); } -WorldLocation const* SpellScript::GetExplTargetDest() +WorldLocation const* SpellScript::GetExplTargetDest() const { if (m_spell->m_targets.HasDst()) return m_spell->m_targets.GetDstPos(); @@ -430,27 +446,27 @@ void SpellScript::SetExplTargetDest(WorldLocation& loc) m_spell->m_targets.SetDst(loc); } -WorldObject* SpellScript::GetExplTargetWorldObject() +WorldObject* SpellScript::GetExplTargetWorldObject() const { return m_spell->m_targets.GetObjectTarget(); } -Unit* SpellScript::GetExplTargetUnit() +Unit* SpellScript::GetExplTargetUnit() const { return m_spell->m_targets.GetUnitTarget(); } -GameObject* SpellScript::GetExplTargetGObj() +GameObject* SpellScript::GetExplTargetGObj() const { return m_spell->m_targets.GetGOTarget(); } -Item* SpellScript::GetExplTargetItem() +Item* SpellScript::GetExplTargetItem() const { return m_spell->m_targets.GetItemTarget(); } -Unit* SpellScript::GetHitUnit() +Unit* SpellScript::GetHitUnit() const { if (!IsInTargetHook()) { @@ -460,7 +476,7 @@ Unit* SpellScript::GetHitUnit() return m_spell->unitTarget; } -Creature* SpellScript::GetHitCreature() +Creature* SpellScript::GetHitCreature() const { if (!IsInTargetHook()) { @@ -473,7 +489,7 @@ Creature* SpellScript::GetHitCreature() return NULL; } -Player* SpellScript::GetHitPlayer() +Player* SpellScript::GetHitPlayer() const { if (!IsInTargetHook()) { @@ -486,7 +502,7 @@ Player* SpellScript::GetHitPlayer() return NULL; } -Item* SpellScript::GetHitItem() +Item* SpellScript::GetHitItem() const { if (!IsInTargetHook()) { @@ -496,7 +512,7 @@ Item* SpellScript::GetHitItem() return m_spell->itemTarget; } -GameObject* SpellScript::GetHitGObj() +GameObject* SpellScript::GetHitGObj() const { if (!IsInTargetHook()) { @@ -506,7 +522,7 @@ GameObject* SpellScript::GetHitGObj() return m_spell->gameObjTarget; } -WorldLocation* SpellScript::GetHitDest() +WorldLocation* SpellScript::GetHitDest() const { if (!IsInEffectHook()) { @@ -516,7 +532,7 @@ WorldLocation* SpellScript::GetHitDest() return m_spell->destTarget; } -int32 SpellScript::GetHitDamage() +int32 SpellScript::GetHitDamage() const { if (!IsInTargetHook()) { @@ -528,7 +544,7 @@ int32 SpellScript::GetHitDamage() void SpellScript::SetHitDamage(int32 damage) { - if (!IsInTargetHook()) + if (!IsInModifiableHook()) { TC_LOG_ERROR("scripts", "Script: `%s` Spell: `%u`: function SpellScript::SetHitDamage was called, but function has no effect in current hook!", m_scriptName->c_str(), m_scriptSpellId); return; @@ -536,7 +552,7 @@ void SpellScript::SetHitDamage(int32 damage) m_spell->m_damage = damage; } -int32 SpellScript::GetHitHeal() +int32 SpellScript::GetHitHeal() const { if (!IsInTargetHook()) { @@ -548,7 +564,7 @@ int32 SpellScript::GetHitHeal() void SpellScript::SetHitHeal(int32 heal) { - if (!IsInTargetHook()) + if (!IsInModifiableHook()) { TC_LOG_ERROR("scripts", "Script: `%s` Spell: `%u`: function SpellScript::SetHitHeal was called, but function has no effect in current hook!", m_scriptName->c_str(), m_scriptSpellId); return; @@ -556,7 +572,7 @@ void SpellScript::SetHitHeal(int32 heal) m_spell->m_healing = heal; } -Aura* SpellScript::GetHitAura() +Aura* SpellScript::GetHitAura() const { if (!IsInTargetHook()) { @@ -624,7 +640,7 @@ void SpellScript::SetEffectValue(int32 value) m_spell->damage = value; } -Item* SpellScript::GetCastItem() +Item* SpellScript::GetCastItem() const { return m_spell->m_CastItem; } @@ -634,7 +650,7 @@ void SpellScript::CreateItem(uint32 effIndex, uint32 itemId) m_spell->DoCreateItem(effIndex, itemId); } -SpellInfo const* SpellScript::GetTriggeringSpell() +SpellInfo const* SpellScript::GetTriggeringSpell() const { return m_spell->m_triggeredByAuraSpell; } @@ -656,7 +672,7 @@ void SpellScript::SetCustomCastResultMessage(SpellCustomErrors result) m_spell->m_customError = result; } -SpellValue const* SpellScript::GetSpellValue() +SpellValue const* SpellScript::GetSpellValue() const { return m_spell->m_spellValue; } diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index acd070e11a..625fd89c6e 100644 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -276,6 +276,7 @@ class TC_GAME_API SpellScript : public _SpellScript void _FinishScriptCall(); bool IsInCheckCastHook() const; bool IsInTargetHook() const; + bool IsInModifiableHook() const; bool IsInHitPhase() const; bool IsInEffectHook() const; private: @@ -356,10 +357,10 @@ class TC_GAME_API SpellScript : public _SpellScript // methods allowing interaction with Spell object // // methods useable during all spell handling phases - Unit* GetCaster(); - Unit* GetOriginalCaster(); - SpellInfo const* GetSpellInfo(); - SpellValue const* GetSpellValue(); + Unit* GetCaster() const; + Unit* GetOriginalCaster() const; + SpellInfo const* GetSpellInfo() const; + SpellValue const* GetSpellValue() const; // methods useable after spell is prepared // accessors to the explicit targets of the spell @@ -373,48 +374,48 @@ class TC_GAME_API SpellScript : public _SpellScript // - ImplicitTargetXX set to TARGET_XXX_TARGET_YYY, _TARGET_ here means that explicit target is used by the effect, so spell needs one too // returns: WorldLocation which was selected as a spell destination or NULL - WorldLocation const* GetExplTargetDest(); + WorldLocation const* GetExplTargetDest() const; void SetExplTargetDest(WorldLocation& loc); // returns: WorldObject which was selected as an explicit spell target or NULL if there's no target - WorldObject* GetExplTargetWorldObject(); + WorldObject* GetExplTargetWorldObject() const; // returns: Unit which was selected as an explicit spell target or NULL if there's no target - Unit* GetExplTargetUnit(); + Unit* GetExplTargetUnit() const; // returns: GameObject which was selected as an explicit spell target or NULL if there's no target - GameObject* GetExplTargetGObj(); + GameObject* GetExplTargetGObj() const; // returns: Item which was selected as an explicit spell target or NULL if there's no target - Item* GetExplTargetItem(); + Item* GetExplTargetItem() const; // methods useable only during spell hit on target, or during spell launch on target: // returns: target of current effect if it was Unit otherwise NULL - Unit* GetHitUnit(); + Unit* GetHitUnit() const; // returns: target of current effect if it was Creature otherwise NULL - Creature* GetHitCreature(); + Creature* GetHitCreature() const; // returns: target of current effect if it was Player otherwise NULL - Player* GetHitPlayer(); + Player* GetHitPlayer() const; // returns: target of current effect if it was Item otherwise NULL - Item* GetHitItem(); + Item* GetHitItem() const; // returns: target of current effect if it was GameObject otherwise NULL - GameObject* GetHitGObj(); + GameObject* GetHitGObj() const; // returns: destination of current effect - WorldLocation* GetHitDest(); + WorldLocation* GetHitDest() const; // setter/getter for for damage done by spell to target of spell hit // returns damage calculated before hit, and real dmg done after hit - int32 GetHitDamage(); + int32 GetHitDamage() const; void SetHitDamage(int32 damage); void PreventHitDamage() { SetHitDamage(0); } // setter/getter for for heal done by spell to target of spell hit // returns healing calculated before hit, and real dmg done after hit - int32 GetHitHeal(); + int32 GetHitHeal() const; void SetHitHeal(int32 heal); void PreventHitHeal() { SetHitHeal(0); } - Spell* GetSpell() { return m_spell; } + Spell* GetSpell() const { return m_spell; } // returns current spell hit target aura - Aura* GetHitAura(); + Aura* GetHitAura() const; // prevents applying aura on current spell hit target void PreventHitAura(); @@ -434,13 +435,13 @@ class TC_GAME_API SpellScript : public _SpellScript void SetEffectValue(int32 value); // returns: cast item if present. - Item* GetCastItem(); + Item* GetCastItem() const; // Creates item. Calls Spell::DoCreateItem method. void CreateItem(uint32 effIndex, uint32 itemId); // Returns SpellInfo from the spell that triggered the current one - SpellInfo const* GetTriggeringSpell(); + SpellInfo const* GetTriggeringSpell() const; // finishes spellcast prematurely with selected error message void FinishCast(SpellCastResult result, uint32* param1 = nullptr, uint32* param2 = nullptr); From 6c6249851780e74c71aec5bc334277f768547208 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 10 Feb 2018 11:51:28 +0100 Subject: [PATCH 061/178] pre-cp --- src/server/game/Entities/Creature/Creature.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index ea27e28a9a..1e01f49529 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -511,7 +511,7 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma bool IsEvadingAttacks() const { return IsInEvadeMode() || CanNotReachTarget(); } bool AIM_Destroy(); - bool AIM_Initialize(CreatureAI* ai = NULL); + bool AIM_Initialize(CreatureAI* ai = nullptr); void Motion_Initialize(); CreatureAI* AI() const { return reinterpret_cast(i_AI); } From c385edb12dffae5fa317a37a3fa76412914f0d48 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 5 Feb 2018 20:52:19 +0100 Subject: [PATCH 062/178] Core/Scripts: Fixed ENSURE_AI assertion failures when used in Reset()/InitializeAI() hooks with hotswap Updates #20727 --- src/server/game/Entities/Creature/Creature.cpp | 13 ++++++++++++- src/server/game/Entities/Creature/Creature.h | 2 ++ src/server/game/Scripting/ScriptMgr.cpp | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 832b29db25..f1d832cd48 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -833,7 +833,7 @@ bool Creature::AIM_Destroy() return true; } -bool Creature::AIM_Initialize(CreatureAI* ai) +bool Creature::AIM_Create(CreatureAI* ai /*= nullptr*/) { // make sure nothing can change the AI during AI update if (m_AI_locked) @@ -847,12 +847,23 @@ bool Creature::AIM_Initialize(CreatureAI* ai) Motion_Initialize(); i_AI = ai ? ai : FactorySelector::SelectAI(this); +} +void Creature::AI_InitializeAndEnable() +{ IsAIEnabled = true; i_AI->InitializeAI(); // Initialize vehicle if (GetVehicleKit()) GetVehicleKit()->Reset(); +} + +bool Creature::AIM_Initialize(CreatureAI* ai) +{ + if (!AIM_Create(ai)) + return false; + + AI_InitializeAndEnable(); return true; } diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 1e01f49529..eb500405d9 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -511,6 +511,8 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma bool IsEvadingAttacks() const { return IsInEvadeMode() || CanNotReachTarget(); } bool AIM_Destroy(); + bool AIM_Create(CreatureAI* ai = nullptr); + void AI_InitializeAndEnable(); bool AIM_Initialize(CreatureAI* ai = nullptr); void Motion_Initialize(); diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index d63cc74b92..80d4a12d4e 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -416,7 +416,7 @@ class CreatureGameObjectScriptRegistrySwapHooks if (creature->IsAlive()) creature->ClearUnitState(UNIT_STATE_EVADE); - bool const created = creature->AIM_Initialize(); + bool const created = creature->AIM_Create(); ASSERT(created, "Creating the AI should never fail here!"); (void)created; @@ -427,6 +427,7 @@ class CreatureGameObjectScriptRegistrySwapHooks if (!creature->IsAlive()) return; + creature->AI_InitializeAndEnable(); creature->AI()->EnterEvadeMode(); // Cast a dummy visual spell asynchronously here to signal From bf2d223cc33b8e252caf3e7332036a5459bc2639 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 5 Feb 2018 21:08:09 +0100 Subject: [PATCH 063/178] Build fix --- src/server/game/Entities/Creature/Creature.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index f1d832cd48..9a037781be 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -847,6 +847,7 @@ bool Creature::AIM_Create(CreatureAI* ai /*= nullptr*/) Motion_Initialize(); i_AI = ai ? ai : FactorySelector::SelectAI(this); + return true; } void Creature::AI_InitializeAndEnable() From 855a0bbaf0794d16d837224d50976cab2fb68e4f Mon Sep 17 00:00:00 2001 From: sirikfoll Date: Mon, 5 Feb 2018 21:27:13 -0200 Subject: [PATCH 064/178] Scripts/Magisters Terrace: Removed not allowed ENSURE_AI call from constructor Closes #20727 --- .../MagistersTerrace/boss_priestess_delrissa.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 1756dcc938..5ef6262be0 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -360,7 +360,6 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI { Initialize(); instance = creature->GetInstanceScript(); - AcquireGUIDs(); } void Initialize() @@ -384,6 +383,7 @@ struct boss_priestess_lackey_commonAI : public ScriptedAI void Reset() override { Initialize(); + AcquireGUIDs(); // in case she is not alive and Reset was for some reason called, respawn her (most likely party wipe after killing her) if (Creature* pDelrissa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DELRISSA))) From 9fdb4c0a4d7368e011773cbb3862dfa76d362a15 Mon Sep 17 00:00:00 2001 From: ariel- Date: Tue, 6 Feb 2018 13:59:08 -0300 Subject: [PATCH 065/178] Core/Scripts: fix non-functional Celestial Planetarium Access GO - Client only sends CMSG_GAMEOBJ_REPORT_USE for this one Closes #19982 --- .../Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index aea63dff76..9c99c9a176 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -979,7 +979,7 @@ class go_celestial_planetarium_access : public GameObjectScript { } - bool GossipHello(Player* player) override + bool OnReportUse(Player* player) override { if (me->HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE)) return true; From 2f8361d3206a3c328b243987d81f85ecb6c2f995 Mon Sep 17 00:00:00 2001 From: Keader Date: Thu, 8 Feb 2018 10:05:08 -0300 Subject: [PATCH 066/178] Core/Scripts: Fixed possible crashs related with JustDied --- .../BlackwingLair/boss_nefarian.cpp | 2 +- .../EasternKingdoms/Karazhan/boss_midnight.cpp | 4 ++-- .../MagistersTerrace/boss_vexallus.cpp | 3 ++- .../EasternKingdoms/ScarletEnclave/chapter1.cpp | 2 +- .../EasternKingdoms/ScarletEnclave/chapter2.cpp | 3 ++- .../ShadowfangKeep/boss_apothecary_hummel.cpp | 4 ++-- .../Stratholme/boss_order_of_silver_hand.cpp | 2 +- .../EasternKingdoms/Uldaman/boss_archaedas.cpp | 2 +- .../EscapeFromDurnholdeKeep/old_hillsbrad.cpp | 4 ++-- .../Kalimdor/WailingCaverns/wailing_caverns.cpp | 2 +- .../scripts/Kalimdor/zone_bloodmyst_isle.cpp | 7 +++++++ src/server/scripts/Kalimdor/zone_silithus.cpp | 4 ++-- .../AzjolNerub/boss_krikthir_the_gatewatcher.cpp | 4 ++-- .../TrialOfTheCrusader/boss_anubarak_trial.cpp | 3 ++- .../boss_blood_queen_lana_thel.cpp | 4 ++++ .../IcecrownCitadel/boss_lady_deathwhisper.cpp | 8 ++++++++ .../Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 6 +++--- .../Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp | 4 ++-- .../Northrend/VioletHold/boss_cyanigosa.cpp | 4 ++-- .../scripts/Northrend/VioletHold/boss_erekem.cpp | 4 ++-- .../Northrend/VioletHold/boss_ichoron.cpp | 4 ++-- .../Northrend/VioletHold/boss_lavanthor.cpp | 5 ----- .../scripts/Northrend/VioletHold/boss_moragg.cpp | 5 ----- .../scripts/Northrend/VioletHold/boss_xevozz.cpp | 4 ++-- .../Northrend/VioletHold/boss_zuramat.cpp | 4 ++-- .../scripts/Northrend/zone_borean_tundra.cpp | 16 +++++++++------- .../scripts/Northrend/zone_howling_fjord.cpp | 6 +++--- .../scripts/Northrend/zone_wintergrasp.cpp | 2 +- .../BloodFurnace/boss_kelidan_the_breaker.cpp | 3 +++ .../boss_vazruden_the_herald.cpp | 3 +++ .../ShatteredHalls/shattered_halls.cpp | 2 +- .../Outland/TempestKeep/Eye/boss_kaelthas.cpp | 4 ++-- .../Mechanar/boss_mechano_lord_capacitus.cpp | 2 +- .../scripts/Outland/zone_shadowmoon_valley.cpp | 3 +++ 35 files changed, 82 insertions(+), 59 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index 549aaf7d17..fd6704bcdc 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -431,7 +431,7 @@ public: Talk(SAY_RANDOM); } - void JustDied(Unit* /*Killer*/) override + void JustDied(Unit* /*killer*/) override { _JustDied(); Talk(SAY_DEATH); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index 9c77230e48..1717205a6c 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -198,13 +198,13 @@ public: } } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); if (Unit* midnight = ObjectAccessor::GetUnit(*me, _midnightGUID)) midnight->KillSelf(); - BossAI::JustDied(killer); + _JustDied(); } void SetGUID(ObjectGuid const& guid, int32 id) override diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index 6ff76c94e8..15e28f8e43 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -207,7 +207,8 @@ class npc_pure_energy : public CreatureScript void JustDied(Unit* killer) override { - killer->CastSpell(killer, SPELL_ENERGY_FEEDBACK, true); + if (killer) + killer->CastSpell(killer, SPELL_ENERGY_FEEDBACK, true); me->RemoveAurasDueToSpell(SPELL_PURE_ENERGY_PASSIVE); } }; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 2c014f5cbd..257f6c40ba 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -866,7 +866,7 @@ public: void JustDied(Unit* killer) override { Creature* deathcharger = me->FindNearestCreature(28782, 30); - if (!deathcharger) + if (!deathcharger || !killer) return; if (killer->GetTypeId() == TYPEID_PLAYER && deathcharger->GetTypeId() == TYPEID_UNIT && deathcharger->IsVehicle()) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 7e51397a1c..913db196e1 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -549,7 +549,8 @@ public: void JustDied(Unit* killer) override { Talk(SAY_VALROTH_DEATH); - killer->CastSpell(me, SPELL_SUMMON_VALROTH_REMAINS, true); + if (killer) + killer->CastSpell(me, SPELL_SUMMON_VALROTH_REMAINS, true); } }; diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp index fa34bf45b5..ecd4614476 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp @@ -315,7 +315,7 @@ class npc_apothecary_frye : public CreatureScript { npc_apothecary_fryeAI(Creature* creature) : npc_apothecary_genericAI(creature, FryeMovePos) { } - void JustDied(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_FRYE_DEATH); } @@ -343,7 +343,7 @@ class npc_apothecary_baxter : public CreatureScript _events.ScheduleEvent(EVENT_CHAIN_REACTION, Seconds(12)); } - void JustDied(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { _events.Reset(); Talk(SAY_BAXTER_DEATH); diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp index 1103f0da89..5a5f2334d9 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp @@ -129,7 +129,7 @@ public: break; } - if (instance->GetData(TYPE_SH_QUEST)) + if (killer && instance->GetData(TYPE_SH_QUEST)) { if (Player* player = killer->ToPlayer()) player->KilledMonsterCredit(SH_QUEST_CREDIT); diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index c2602dda1c..a066f29652 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -372,7 +372,7 @@ class npc_stonekeepers : public CreatureScript DoMeleeAttackIfReady(); } - void JustDied(Unit* /*attacker*/) override + void JustDied(Unit* /*killer*/) override { DoCast (me, SPELL_SELF_DESTRUCT, true); instance->SetData(DATA_STONE_KEEPERS, IN_PROGRESS); // activate next stonekeeper diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 73ac4cfd18..b250721e37 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -528,12 +528,12 @@ public: { Talk(SAY_TH_RANDOM_KILL); } - void JustDied(Unit* slayer) override + void JustDied(Unit* killer) override { instance->SetData(TYPE_THRALL_EVENT, FAIL); // Don't do a yell if he kills self (if player goes too far or at the end). - if (slayer == me) + if (killer == me) return; Talk(SAY_TH_RANDOM_DIE); diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp index 25ba260c2f..230f4ee0a0 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp @@ -172,7 +172,7 @@ public: Talk(SAY_ATTACKED, who); } - void JustDied(Unit* /*slayer*/) override + void JustDied(Unit* /*killer*/) override { instance->SetData(DATA_NARALEX_EVENT, FAIL); instance->SetData(DATA_NARALEX_PART1, FAIL); diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index 6fa3352245..dbdc2752c6 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -67,6 +67,9 @@ public: void JustDied(Unit* killer) override { + if (!killer) + return; + uint32 spawnCreatureID = 0; switch (urand(0, 2)) @@ -261,6 +264,10 @@ public: { me->SetObjectScale(1.0f); _events.Reset(); + + if (!killer) + return; + if (Creature* legoso = me->FindNearestCreature(NPC_LEGOSO, SIZE_OF_GRIDS)) { Group* group = me->GetLootRecipientGroup(); diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 157e37dcbf..41093297d5 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -684,7 +684,7 @@ public: } void JustEngagedWith(Unit* /*who*/) override { } - void JustDied(Unit* /*slayer*/) override; + void JustDied(Unit* /*killer*/) override; void UpdateAI(uint32 diff) override { @@ -920,7 +920,7 @@ public: }; -void npc_qiraj_war_spawn::npc_qiraj_war_spawnAI::JustDied(Unit* /*slayer*/) +void npc_qiraj_war_spawn::npc_qiraj_war_spawnAI::JustDied(Unit* /*killer*/) { me->RemoveCorpse(); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index b32dc1d4e4..067a60021e 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -173,10 +173,10 @@ class boss_krik_thir : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { summons.clear(); - BossAI::JustDied(killer); + _JustDied(); Talk(SAY_DEATH); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index ccc4714e87..fe2bdd35bf 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -476,7 +476,8 @@ class npc_swarm_scarab : public CreatureScript void JustDied(Unit* killer) override { - DoCast(killer, SPELL_TRAITOR_KING); + if (killer) + DoCast(killer, SPELL_TRAITOR_KING); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index e6a842ea34..9bd0d48a45 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -198,6 +198,10 @@ class boss_blood_queen_lana_thel : public CreatureScript DoCastAOE(SPELL_BLOOD_INFUSION_CREDIT, true); CleanAuras(); + + if (!killer) + return; + // Blah, credit the quest if (_creditBloodQuickening) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 1c92cbc128..a0dfbf3c47 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -363,6 +363,10 @@ class boss_lady_deathwhisper : public CreatureScript darnavan->SetReactState(REACT_PASSIVE); darnavan->m_Events.AddEvent(new DaranavanMoveEvent(*darnavan), darnavan->m_Events.CalculateTime(10000)); darnavan->AI()->Talk(SAY_DARNAVAN_RESCUED); + + if (!killer) + return; + if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) { if (Group* group = owner->GetGroup()) @@ -883,6 +887,10 @@ class npc_darnavan : public CreatureScript void JustDied(Unit* killer) override { _events.Reset(); + + if (!killer) + return; + if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) { if (Group* group = owner->GetGroup()) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index ece8443c6d..c1e0cd8d7b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -435,7 +435,7 @@ class boss_mimiron : public CreatureScript events.ScheduleEvent(EVENT_INTRO_1, 1500); } - void JustDied(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { instance->SetBossState(BOSS_MIMIRON, DONE); events.Reset(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index cc16588c3b..429bcdb6c0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1146,7 +1146,7 @@ class npc_thorim_pre_phase : public CreatureScript SetCombatMovement(false); } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { if (Creature* thorim = _instance->GetCreature(BOSS_THORIM)) thorim->AI()->DoAction(ACTION_INCREASE_PREADDS_COUNT); @@ -1405,7 +1405,7 @@ class npc_runic_colossus : public CreatureScript } } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { // open the Runic Door _instance->HandleGameObject(_instance->GetGuidData(DATA_RUNIC_DOOR), true); @@ -1516,7 +1516,7 @@ class npc_ancient_rune_giant : public CreatureScript _events.ScheduleEvent(EVENT_RUNE_DETONATION, 25000); } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { // opem the Stone Door _instance->HandleGameObject(_instance->GetGuidData(DATA_STONE_DOOR), true); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index 2f56df7406..a063663f74 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -528,13 +528,13 @@ class boss_voice_of_yogg_saron : public CreatureScript events.ScheduleEvent(EVENT_EXTINGUISH_ALL_LIFE, 900000); // 15 minutes } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { // don't despawn Yogg-Saron's corpse, remove him from SummonList! if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON)) summons.Despawn(yogg); - BossAI::JustDied(killer); + _JustDied(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 99fcf9cfd3..49139c9c2b 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -63,10 +63,10 @@ class boss_cyanigosa : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void MoveInLineOfSight(Unit* /*who*/) override { } diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 964ee11d94..453e947fa8 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -90,10 +90,10 @@ class boss_erekem : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } bool CheckGuardAuras(Creature* guard) const diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 4450dfe98d..4788524ba5 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -162,10 +162,10 @@ class boss_ichoron : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void JustSummoned(Creature* summon) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 9309276f05..2a2bf14330 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -52,11 +52,6 @@ class boss_lavanthor : public CreatureScript instance->SetData(DATA_HANDLE_CELLS, DATA_LAVANTHOR); } - void JustDied(Unit* killer) override - { - BossAI::JustDied(killer); - } - void UpdateAI(uint32 diff) override { if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index bfaf7d972b..45ac551d94 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -59,11 +59,6 @@ class boss_moragg : public CreatureScript instance->SetData(DATA_HANDLE_CELLS, DATA_MORAGG); } - void JustDied(Unit* killer) override - { - BossAI::JustDied(killer); - } - void UpdateAI(uint32 diff) override { if (!UpdateVictim()) diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 4d00e558e4..7d08c7127c 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -113,10 +113,10 @@ class boss_xevozz : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void SpellHit(Unit* /*who*/, SpellInfo const* spell) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index fec6547710..3bb8756981 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -103,10 +103,10 @@ class boss_zuramat : public CreatureScript return 0; } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void KilledUnit(Unit* victim) override diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 56870ec2ba..f933cc5de8 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -366,9 +366,10 @@ public: void JustDied(Unit* killer) override { + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); - if (!player) - return; if (player->GetQuestStatus(QUEST_TAKEN_BY_THE_SCOURGE) == QUEST_STATUS_INCOMPLETE) { @@ -1270,9 +1271,9 @@ public: leryssa->ClearUnitState(UNIT_STATE_STUNNED); leryssa->SetWalk(false); leryssa->GetMotionMaster()->MovePoint(0, 3722.114502f, 3564.201660f, 477.441437f); - - if (Player* player = killer->ToPlayer()) - player->RewardPlayerAndGroupAtEvent(NPC_PRINCE_VALANAR, 0); + + if (killer && killer->GetTypeId() == TYPEID_PLAYER) + killer->ToPlayer()->RewardPlayerAndGroupAtEvent(NPC_PRINCE_VALANAR, 0); } }; @@ -1941,9 +1942,10 @@ public: void JustDied(Unit* killer) override { + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); - if (!player) - return; if (player->GetQuestStatus(QUEST_YOU_RE_NOT_SO_BIG_NOW) == QUEST_STATUS_INCOMPLETE && (me->HasAura(SPELL_AURA_NOTSOBIG_1) || me->HasAura(SPELL_AURA_NOTSOBIG_2) || diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index c1848464bd..ff8449cbd5 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -636,11 +636,11 @@ public: void JustDied(Unit* killer) override { + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); - if (!player) - return; - if (roll_chance_i(20)) { player->CastSpell(me, SPELL_SUMMON_FREED_MIST_WHISPER_SCOUT, true); diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index 3b0a90be56..c057b08fca 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -405,7 +405,7 @@ class npc_wg_give_promotion_credit : public CreatureScript void JustDied(Unit* killer) override { - if (killer->GetTypeId() != TYPEID_PLAYER) + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) return; BattlefieldWG* wintergrasp = static_cast(sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)); diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index b95b94b540..912fcfe50b 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -308,6 +308,9 @@ class npc_shadowmoon_channeler : public CreatureScript void JustDied(Unit* killer) override { + if (!killer) + return; + if (Creature* Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100)) ENSURE_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerDied(killer); } diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp index bee72bf775..35f6a423a9 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp @@ -484,6 +484,9 @@ class npc_hellfire_sentry : public CreatureScript void JustDied(Unit* killer) override { + if (!killer) + return; + if (Creature* herald = me->FindNearestCreature(NPC_VAZRUDEN_HERALD, 150)) ENSURE_AI(boss_vazruden_the_herald::boss_vazruden_the_heraldAI, herald->AI())->SentryDownBy(killer); } diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp index 5f95314e9f..a4f508f0da 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp @@ -102,7 +102,7 @@ class boss_shattered_executioner : public CreatureScript void JustSummoned(Creature*) override { } // avoid despawn of prisoners on death/reset - void JustDied(Unit*) override + void JustDied(Unit* /*killer*/) override { _JustDied(); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index da4402ec5b..3f4aed13e7 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -647,10 +647,10 @@ class boss_kaelthas : public CreatureScript } } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); - BossAI::JustDied(killer); + _JustDied(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp index 415e9a54a6..8487a15195 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp @@ -93,7 +93,7 @@ class boss_mechano_lord_capacitus : public CreatureScript Talk(YELL_KILL); } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { _JustDied(); Talk(YELL_DEATH); diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index fb89bf4019..21710c50b0 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -971,6 +971,9 @@ public: void JustDied(Unit* killer) override { + if (!killer) + return; + switch (killer->GetTypeId()) { case TYPEID_UNIT: From a162d421ce49521974be3d74ddf09ff2cc7287f4 Mon Sep 17 00:00:00 2001 From: Keader Date: Thu, 8 Feb 2018 10:16:19 -0300 Subject: [PATCH 067/178] Core/Scripts: Fixed tabs issues introduced in 5bef3e426aea37b0e7555f146037c58e7be6352d --- .../EasternKingdoms/MagistersTerrace/boss_vexallus.cpp | 5 ----- .../EasternKingdoms/ScarletEnclave/chapter2.cpp | 2 +- src/server/scripts/Northrend/zone_howling_fjord.cpp | 6 +++--- .../BloodFurnace/boss_kelidan_the_breaker.cpp | 10 +++++----- .../HellfireRamparts/boss_vazruden_the_herald.cpp | 6 +++--- src/server/scripts/Outland/zone_shadowmoon_valley.cpp | 6 +++--- 6 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index 15e28f8e43..94cf59f5b9 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -82,11 +82,6 @@ class boss_vexallus : public CreatureScript Talk(SAY_KILL); } - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - } - void JustEngagedWith(Unit* /*who*/) override { Talk(SAY_AGGRO); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index 913db196e1..193a31325d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -549,7 +549,7 @@ public: void JustDied(Unit* killer) override { Talk(SAY_VALROTH_DEATH); - if (killer) + if (killer) killer->CastSpell(me, SPELL_SUMMON_VALROTH_REMAINS, true); } }; diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index ff8449cbd5..b9f409f6e0 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -636,9 +636,9 @@ public: void JustDied(Unit* killer) override { - if (!killer || killer->GetTypeId() != TYPEID_PLAYER) - return; - + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); if (roll_chance_i(20)) diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index 912fcfe50b..9750180525 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -308,11 +308,11 @@ class npc_shadowmoon_channeler : public CreatureScript void JustDied(Unit* killer) override { - if (!killer) - return; - - if (Creature* Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100)) - ENSURE_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerDied(killer); + if (!killer) + return; + + if (Creature* Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100)) + ENSURE_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerDied(killer); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp index 35f6a423a9..5f77ffe9c6 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp @@ -484,9 +484,9 @@ class npc_hellfire_sentry : public CreatureScript void JustDied(Unit* killer) override { - if (!killer) - return; - + if (!killer) + return; + if (Creature* herald = me->FindNearestCreature(NPC_VAZRUDEN_HERALD, 150)) ENSURE_AI(boss_vazruden_the_herald::boss_vazruden_the_heraldAI, herald->AI())->SentryDownBy(killer); } diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 21710c50b0..f3184bf780 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -971,9 +971,9 @@ public: void JustDied(Unit* killer) override { - if (!killer) - return; - + if (!killer) + return; + switch (killer->GetTypeId()) { case TYPEID_UNIT: From f177fa33223241bc571b0f1b5966b54d8409dfc6 Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Thu, 8 Feb 2018 17:25:03 +0100 Subject: [PATCH 068/178] DB/Loot: Reference template 24060 corrections Closes #21363 --- .../world/3.3.5/2018_02_08_00_world_335.sql | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_00_world_335.sql new file mode 100644 index 0000000000..5046c17523 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_00_world_335.sql @@ -0,0 +1,23 @@ +-- Remove unique items from reference table 24060, as well as removing Agile Boots (4788) which is sold only and does not drop +DELETE FROM `reference_loot_template` WHERE `Entry`=24060 AND `Item` IN (1218, 1220, 1296, 1300, 1448, 1460, 1934, 2021, 2166, 2167, 2168, 3018, 3227, 4788, 4949, 5182, 5183); + +-- Add former items from reference table 24060 to their proper NPCs, as well as removing 4788 which is sold only and does not drop +DELETE FROM `creature_loot_template` WHERE `Item` IN (1218, 1220, 1296, 1300, 1448, 1460, 1934, 2021, 2166, 2167, 2168, 3018, 3227, 4788, 4949, 5182, 5183); +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Chance`,`GroupId`,`Comment`) VALUES +(445, 1218, 0.1, 0, "Redridge Alpha - Heavy Gnoll War Club"), +(580, 1220, 0.1, 0, "Redridge Drudger - Lupine Axe"), +(437, 1296, 0.1, 0, "Blackrock Renegade - Blackrock Mace"), +(4065, 1296, 0.1, 0, "Blackrock Sentry - Blackrock Mace"), +(436, 1300, 0.1, 0, "Blackrock Shadowcaster - Lesser Staff of the Spire"), +(485, 1448, 0.1, 0, "Blackrock Outrunner - Blackrock Gauntlets"), +(434, 1460, 0.1, 0, "Rabid Shadowhide Gnoll - Shadowhide Two-handed Sword"), +(636, 1934, 0.1, 0, "Defias Blackguard - Stonemason Trousers"), +(569, 2021, 0.1, 0, "Green Recluse - Green Carapace Shield"), +(626, 2166, 2, 2, "Foreman Thistlenettle - Foreman's Leggings"), +(626, 2167, 2, 2, "Foreman Thistlenettle - Foreman's Gloves"), +(626, 2168, 2, 2, "Foreman Thistlenettle - Foreman's Boots"), +(521, 3018, 2, 2, "Lupos - Hide of Lupos"), +(521, 3227, 2, 2, "Lupos - Nightbane Staff"), +(7170, 4949, 100, 0, "Thragomm - Orcish Cleaver"), +(3398, 5182, 2, 2, "Gesharahan - Shiver Blade"), +(3398, 5183, 2, 2, "Gesharahan - Pulsating Hydra Heart"); From 63a15d90623ad9f48def87e289fcd5bf59fd0d38 Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Thu, 8 Feb 2018 17:25:49 +0100 Subject: [PATCH 069/178] DB/Loot: Dun Morogh - Coldridge Valley loot tables redone Closes #21364 --- .../world/3.3.5/2018_02_08_01_world_335.sql | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_01_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_01_world_335.sql new file mode 100644 index 0000000000..f3359f34e7 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_01_world_335.sql @@ -0,0 +1,85 @@ +-- Ragged Timber Wolf +DELETE FROM `creature_loot_template` WHERE `Entry`=704; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(704, 750, 0, 100, 1, 1, 0, 1, 1, "Tough Wolf Meat (quest)"), +(704, 4865, 0, 20, 0, 1, 1, 1, 2, "Ruined Pelt"), +(704, 3300, 0, 30, 0, 1, 1, 1, 2, "Rabbit's Foot"), +(704, 7074, 0, 20, 0, 1, 1, 1, 2, "Chipped Claw"), +(704, 7073, 0, 30, 0, 1, 1, 1, 2, "Broken Fang"), +(704, 24073, 24073, 1, 0, 1, 0, 1, 1, "Junk"), +(704, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); + +-- Ragged Young Wolf +DELETE FROM `creature_loot_template` WHERE `Entry`=705; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(705, 750, 0, 100, 1, 1, 0, 1, 1, "Tough Wolf Meat (quest)"), +(705, 4865, 0, 20, 0, 1, 1, 1, 2, "Ruined Pelt"), +(705, 3300, 0, 30, 0, 1, 1, 1, 2, "Rabbit's Foot"), +(705, 7074, 0, 20, 0, 1, 1, 1, 2, "Chipped Claw"), +(705, 7073, 0, 30, 0, 1, 1, 1, 2, "Broken Fang"), +(705, 24073, 24073, 1, 0, 1, 0, 1, 1, "Junk"), +(705, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); + +-- Frostmane Troll Whelp +DELETE FROM `creature_loot_template` WHERE `Entry`=706; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(706, 117, 0, 15, 0, 1, 0, 1, 1, "Tough Jerky"), +(706, 159, 0, 10, 0, 1, 0, 1, 1, "Refreshing Spring Water"), +(706, 2108, 0, 1, 0, 1, 0, 1, 1, "Frostmane Leather Vest (unique)"), +(706, 24073, 24073, 5, 0, 1, 0, 1, 1, "Junk"), +(706, 11111, 11111, 0.5, 0, 1, 0, 1, 1, "Bags"); + +-- Rockjaw Trogg +DELETE FROM `creature_loot_template` WHERE `Entry`=707; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(707, 117, 0, 15, 0, 1, 0, 1, 1, "Tough Jerky"), +(707, 159, 0, 10, 0, 1, 0, 1, 1, "Refreshing Spring Water"), +(707, 24073, 24073, 5, 0, 1, 0, 1, 1, "Junk"), +(707, 11111, 11111, 0.5, 0, 1, 0, 1, 1, "Bags"); + +-- Small Crag Boar +DELETE FROM `creature_loot_template` WHERE `Entry`=708; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(708, 117, 0, 30, 0, 1, 0, 1, 2, "Tough Jerky"), +(708, 771, 0, 30, 0, 1, 1, 1, 2, "Chipped Boar Tusk"), +(708, 4865, 0, 35, 0, 1, 1, 1, 2, "Ruined Pelt"), +(708, 7098, 0, 35, 0, 1, 1, 1, 2, "Splintered Tusk"), +(708, 24073, 24073, 2, 0, 1, 0, 1, 1, "Junk"), +(708, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); + +-- Burly Rockjaw Trogg +DELETE FROM `creature_loot_template` WHERE `Entry`=724; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(724, 117, 0, 15, 0, 1, 0, 1, 1, "Tough Jerky"), +(724, 159, 0, 10, 0, 1, 0, 1, 1, "Refreshing Spring Water"), +(724, 2787, 0, 1, 0, 1, 0, 1, 1, "Trogg Dagger (unique)"), +(724, 24073, 24073, 5, 0, 1, 0, 1, 1, "Junk"), +(724, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); + +-- Grik'nir the Cold +DELETE FROM `creature_loot_template` WHERE `Entry`=808; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(808, 117, 0, 15, 0, 1, 0, 1, 1, "Tough Jerky"), +(808, 159, 0, 10, 0, 1, 0, 1, 1, "Refreshing Spring Water"), +(808, 2004, 0, 100, 1, 1, 0, 1, 1, "Grelin Whitebeard's Journal (quest)"), +(808, 2109, 0, 1, 0, 1, 0, 1, 1, "Frostmane Chain Vest (unique)"), +(808, 24073, 24073, 35, 0, 1, 0, 1, 1, "Junk"), +(808, 11111, 11111, 1, 0, 1, 0, 1, 1, "Bags"); + +-- Frostmane Novice +DELETE FROM `creature_loot_template` WHERE `Entry`=946; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(946, 117, 0, 15, 0, 1, 0, 1, 1, "Tough Jerky"), +(946, 159, 0, 10, 0, 1, 0, 1, 1, "Refreshing Spring Water"), +(946, 2110, 0, 1, 0, 1, 0, 1, 1, "Light Magesmith Robe (unique)"), +(946, 24073, 24073, 5, 0, 1, 0, 1, 1, "Junk"), +(946, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); + +-- Rockjaw Raider +DELETE FROM `creature_loot_template` WHERE `Entry`=1718; +INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES +(1718, 117, 0, 15, 0, 1, 0, 1, 1, "Tough Jerky"), +(1718, 159, 0, 10, 0, 1, 0, 1, 1, "Refreshing Spring Water"), +(1718, 2054, 0, 1, 0, 1, 0, 1, 1, "Trogg Hand Axe (unique)"), +(1718, 24073, 24073, 5, 0, 1, 0, 1, 1, "Junk"), +(1718, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); From 15e908faf99cea352ed5e137e15dfafb18dc1186 Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Thu, 8 Feb 2018 17:26:38 +0100 Subject: [PATCH 070/178] DB/Loot: Reference template 24062 corrections Closes #21368 --- .../world/3.3.5/2018_02_08_02_world_335.sql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_02_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_02_world_335.sql new file mode 100644 index 0000000000..717cec62c0 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_02_world_335.sql @@ -0,0 +1,14 @@ +-- Remove unique items from reference table 24062 +DELETE FROM `reference_loot_template` WHERE `Entry`=24062 AND `Item` IN (880, 1299, 1457, 1458, 2175, 1462, 1461, 1459, 3018, 3227); + +-- Add former items from reference table 24062 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (880, 1299, 1457, 1458, 2175, 1462, 1461, 1459); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(202, 880, 0.1, 0, "Skeletal Horror - Staff of Horrors"), +(436, 1299, 0.1, 0, "Blackrock Shadowcaster - Lesser Belt of the Spire"), +(433, 1457, 0.1, 0, "Shadowhide Gnoll - Shadowhide Mace"), +(432, 1458, 0.1, 0, "Shadowhide Brute - Shadowhide Maul"), +(568, 2175, 0.1, 0, "Shadowhide Warrior - Shadowhide Battle Axe"), +(429, 1462, 0.1, 0, "Shadowhide Darkweaver - Ring of the Shadow"), +(431, 1461, 0.1, 0, "Shadowhide Slayer - Slayer's Battle Axe"), +(579, 1459, 0.1, 0, "Shadowhide Assassin - Shadowhide Scalper"); From 770bb364a168aa0b59f58bdbc32387ac5e69e48b Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Thu, 8 Feb 2018 17:28:33 +0100 Subject: [PATCH 071/178] DB/Loot: Set up correct rare drops for Shadowfang Keep exclusive items Closes #21382 --- .../world/3.3.5/2018_02_08_03_world_335.sql | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_03_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_03_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_03_world_335.sql new file mode 100644 index 0000000000..2d7c7378b6 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_03_world_335.sql @@ -0,0 +1,39 @@ +-- Create new reference loot template for Shadowfang Keep +SET @ENTRY := 1055; -- need a new id + +DELETE FROM `reference_loot_template` WHERE `Entry`=@ENTRY; +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(@ENTRY, 1318, 0, 1, "Night Reaver"), +(@ENTRY, 1482, 0, 1, "Shadowfang"), +(@ENTRY, 1483, 0, 1, "Face Smasher"), +(@ENTRY, 1484, 0, 1, "Witching Stave"), +(@ENTRY, 1489, 0, 1, "Gloomshroud Armor"), +(@ENTRY, 1935, 0, 1, "Assassin's Blade"), +(@ENTRY, 1974, 0, 1, "Mindthrust Bracers"), +(@ENTRY, 2205, 0, 1, "Duskbringer"), +(@ENTRY, 2292, 0, 1, "Necrology Robes"), +(@ENTRY, 2807, 0, 1, "Guillotine Axe"), +(@ENTRY, 3194, 0, 1, "Black Malice"); + +-- Remove all SFK exclusive items from direct drops from NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN +(1318, 1482, 1483, 1484, 1489, 1935, 1974, 2205, 2292, 2807, 3194); + +-- Add SFK reference template for non-boss NPCs +DELETE FROM `creature_loot_template` WHERE `Reference` = @ENTRY; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `Comment`) VALUES +(2529, @ENTRY, @ENTRY, 0.1, "Son of Arugal - SFK Rares"), +(3851, @ENTRY, @ENTRY, 0.1, "Shadowfang Whitescalp - SFK Rares"), +(3853, @ENTRY, @ENTRY, 0.1, "Shadowfang Moonwalker - SFK Rares"), +(3854, @ENTRY, @ENTRY, 0.1, "Shadowfang Wolfguard - SFK Rares"), +(3855, @ENTRY, @ENTRY, 0.1, "Shadowfang Darksoul - SFK Rares"), +(3857, @ENTRY, @ENTRY, 0.1, "Shadowfang Glutton - SFK Rares"), +(3859, @ENTRY, @ENTRY, 0.1, "Shadowfang Ragetooth - SFK Rares"), +(3861, @ENTRY, @ENTRY, 0.1, "Bleak Worg - SFK Rares"), +(3862, @ENTRY, @ENTRY, 0.1, "Slavering Worg - SFK Rares"), +(3863, @ENTRY, @ENTRY, 0.1, "Lupine Horror - SFK Rares"), +(3866, @ENTRY, @ENTRY, 0.1, "Vile Bat - SFK Rares"), +(3868, @ENTRY, @ENTRY, 0.1, "Blood Seeker - SFK Rares"), +(3873, @ENTRY, @ENTRY, 0.1, "Tormented Officer - SFK Rares"), +(3875, @ENTRY, @ENTRY, 0.1, "Haunted Servitor - SFK Rares"), +(3877, @ENTRY, @ENTRY, 0.1, "Wailing Guardsman - SFK Rares"); From 7f37e5886e06288fe319cd105f1880e096db2a2f Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 8 Feb 2018 17:29:51 +0100 Subject: [PATCH 072/178] DB/SAI: Living Storm, Land Rager & Gusting Vortex Closes #21376 --- .../world/3.3.5/2018_02_08_04_world_335.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_04_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_04_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_04_world_335.sql new file mode 100644 index 0000000000..bf4ac574ee --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_04_world_335.sql @@ -0,0 +1,22 @@ +-- Living Storm +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=9397; +DELETE FROM `smart_scripts` WHERE `entryorguid`=9397 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 +(9397,0,0,0,16,0,100,0,12550,1,5000,5000,11,12550,0,0,0,0,0,1,0,0,0,0,0,0,0,"Living Storm - On Friendly Unit Missing Buff 'Lightning Shield' - Cast Lightning Shield"); + +-- Land Rager +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5465; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5465 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 +(5465,0,0,0,2,0,100,1,0,50,0,0,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,"Land Rager - Between 0-50% Health - Cast Enrage (No Repeat)"), +(5465,0,1,0,2,0,100,1,0,50,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Land Rager - Between 0-50% Health - Say Line 0 (No Repeat)"); + +DELETE FROM `creature_text` WHERE `CreatureID`=5465; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5465,0,0,"%s becomes enraged!",16,0,100,0,0,0,10677,0,"Land Rager"); + +-- Gusting Vortex +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8667; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8667 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 +(8667,0,0,0,0,0,100,0,8000,11000,22000,26000,11,6982,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gusting Vortex - In Combat - Cast Gust of Wind"); From e54268094268a7c06bd17fe5937df4a138c3d604 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 8 Feb 2018 17:31:12 +0100 Subject: [PATCH 073/178] DB/Quest: Tran'rek (breadcrumb quest) Closes #21373 --- sql/updates/world/3.3.5/2018_02_08_05_world_335.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_05_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_05_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_05_world_335.sql new file mode 100644 index 0000000000..07134fb590 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_05_world_335.sql @@ -0,0 +1,6 @@ +-- BreadCrumb Quest "Tran'rek" +UPDATE `quest_template_addon` SET `PrevQuestID`=0 WHERE `ID`=2865; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry` IN (2864,2865); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(19,0,2864,0,0,14,0,2865,0,0,0,0,0,"","Quest 'Tran'rek' can only be taken if quest 'Scarab Shells' is not taken"), +(19,0,2865,0,0,28,0,2864,0,0,1,0,0,"","Quest 'Scarab Shells' can only be taken if quest 'Tran'rek' is not completed"); From e17a835a4b126abff376a721bcc9b6f8d2b9101d Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 8 Feb 2018 17:31:45 +0100 Subject: [PATCH 074/178] DB/Misc: Feralas Quest Emotes (Horde) Closes #21372 --- .../world/3.3.5/2018_02_08_06_world_335.sql | 219 ++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_06_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_06_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_06_world_335.sql new file mode 100644 index 0000000000..4714d0f5e0 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_06_world_335.sql @@ -0,0 +1,219 @@ +-- Quest "A Threat in Feralas" +DELETE FROM `quest_details` WHERE `ID`=2981; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2981,1,1,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=2981; + +-- Quest "The Ogres of Feralas" +DELETE FROM `quest_details` WHERE `ID`=2975; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2975,5,0,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=2975; + +-- Quest "The Ogres of Feralas (Part 2)" +DELETE FROM `quest_details` WHERE `ID`=2980; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2980,1,0,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=2 WHERE `ID`=2980; + +-- Quest "The Gordunni Scroll" +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=2978; + +-- Quest "Dark Ceremony" +DELETE FROM `quest_details` WHERE `ID`=2979; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2979,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=2979; + +-- Quest "The Gordunni Orb" +DELETE FROM `quest_details` WHERE `ID`=3002; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3002,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6 WHERE `ID`=3002; +UPDATE `quest_offer_reward` SET `Emote1`=5 WHERE `ID`=3002; + +-- Quest "A New Cloak's Sheen" +DELETE FROM `quest_details` WHERE `ID`=2973; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2973,2,1,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=1, `EmoteOnIncomplete`=1 WHERE `ID`=2973; +UPDATE `quest_offer_reward` SET `Emote1`=11 WHERE `ID`=2973; + +-- Quest "A Grim Discovery" +DELETE FROM `quest_details` WHERE `ID`=2974; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2974,5,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=1, `EmoteOnIncomplete`=1 WHERE `ID`=2974; + +-- Quest "A Grim Discovery (Part 2)" +DELETE FROM `quest_details` WHERE `ID`=2976; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2976,5,1,1,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=5, `Emote2`=1 WHERE `ID`=2976; + +-- Quest "A Strange Request" +DELETE FROM `quest_details` WHERE `ID`=3121; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3121,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=3121; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=3121; + +-- Quest "Return to Witch Doctor Uzer'i" +DELETE FROM `quest_details` WHERE `ID`=3122; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3122,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=3122; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=3122; + +-- Quest "Natural Materials" +DELETE FROM `quest_details` WHERE `ID`=3128; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3128,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=3128; +UPDATE `quest_offer_reward` SET `Emote1`=4 WHERE `ID`=3128; + +-- Quest "War on the Woodpaw" +DELETE FROM `quest_details` WHERE `ID`=2862; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2862,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=5, `EmoteOnIncomplete`=5 WHERE `ID`=2862; +UPDATE `quest_offer_reward` SET `Emote1`=21 WHERE `ID`=2862; + +-- Quest "Alpha Strike" +DELETE FROM `quest_details` WHERE `ID`=2863; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2863,1,0,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=66 WHERE `ID`=2863; + +-- Quest "Woodpaw Investigation" +DELETE FROM `quest_details` WHERE `ID`=2902; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2902,1,1,0,0,0,0,0,0,0); + +-- Quest "The Battle Plans" +UPDATE `quest_request_items` SET `EmoteOnComplete`=6 WHERE `ID`=2903; + +-- Quest "Stinglasher" +DELETE FROM `quest_details` WHERE `ID`=7731; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7731,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=7731; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=7731; + +-- Quest "Zukk'ash Infestation" +DELETE FROM `quest_details` WHERE `ID`=7730; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7730,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=7730; +UPDATE `quest_offer_reward` SET `Emote1`=4 WHERE `ID`=7730; + +-- Quest "Zukk'ash Report" +DELETE FROM `quest_details` WHERE `ID`=7732; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7732,1,1,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=7732; +UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=1 WHERE `ID`=7732; + +-- Quest "The Mark of Quality" +DELETE FROM `quest_details` WHERE `ID`=2822; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(2822,1,1,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=2822; +UPDATE `quest_offer_reward` SET `Emote1`=5 WHERE `ID`=2822; + +-- Quest "Gordunni Cobalt" +UPDATE `quest_request_items` SET `EmoteOnComplete`=5, `EmoteOnIncomplete`=5 WHERE `ID`=2987; + +-- Quest "Testing the Vessel" +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=3123; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=3123; + +-- Quest "Hippogryph Muisek" +DELETE FROM `quest_details` WHERE `ID`=3124; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3124,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=3124; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=3124; + +-- Quest "Faerie Dragon Muisek" +DELETE FROM `quest_details` WHERE `ID`=3125; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3125,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=3125; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=3125; + +-- Quest "Treant Muisek" +DELETE FROM `quest_details` WHERE `ID`=3126; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3126,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=3126; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=3126; + +-- Quest "Mountain Giant Muisek" +DELETE FROM `quest_details` WHERE `ID`=3127; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3127,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=6, `EmoteOnIncomplete`=6 WHERE `ID`=3127; +UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=4 WHERE `ID`=3127; + +-- Quest "Weapons of Spirit" +DELETE FROM `quest_details` WHERE `ID`=3129; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3129,1,0,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=4 WHERE `ID`=3129; + +-- Quest "Dark Heart" +DELETE FROM `quest_details` WHERE `ID`=3062; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3062,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnComplete`=0 WHERE `ID`=3062; +UPDATE `quest_offer_reward` SET `Emote1`=2, `EmoteDelay1`=1000 WHERE `ID`=3062; + +-- Quest "Vengeance on the Northspring" +DELETE FROM `quest_details` WHERE `ID`=3063; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(3063,1,0,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=2 WHERE `ID`=3063; + +-- Quest "The Strength of Corruption" +DELETE FROM `quest_details` WHERE `ID`=4120; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(4120,1,0,0,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=4120; + +-- Quest "Improved Quality" +DELETE FROM `quest_details` WHERE `ID`=7734; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7734,1,0,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnIncomplete`=5 WHERE `ID`=7734; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=7734; + +-- Quest "Perfect Yeti Hide" +UPDATE `quest_request_items` SET `EmoteOnComplete`=6 WHERE `ID`=7738; +UPDATE `quest_offer_reward` SET `Emote1`=1 WHERE `ID`=7738; + +-- Quest "Zapped Giants" +UPDATE `quest_request_items` SET `EmoteOnIncomplete`=6 WHERE `ID`=7003; +UPDATE `quest_offer_reward` SET `Emote1`=4 WHERE `ID`=7003; + +-- Quest "Again With the Zapped Giants" +DELETE FROM `quest_details` WHERE `ID`=7725; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7725,1,1,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnIncomplete`=6 WHERE `ID`=7725; +UPDATE `quest_offer_reward` SET `Emote1`=4 WHERE `ID`=7725; + +-- Quest "Fuel for the Zapping" +UPDATE `quest_request_items` SET `EmoteOnIncomplete`=6 WHERE `ID`=7721; + +-- Quest "Refuel for the Zapping" +DELETE FROM `quest_details` WHERE `ID`=7726; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7726,1,1,0,0,0,0,0,0,0); +UPDATE `quest_request_items` SET `EmoteOnIncomplete`=6 WHERE `ID`=7726; + +-- Quest "Elven Legends" +DELETE FROM `quest_details` WHERE `ID`=7481; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(7481,1,1,1,0,0,0,0,0,0); +UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=6 WHERE `ID`=7481; From f96c30d92c22b8f869660fba32d8c097ff8cca6d Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 8 Feb 2018 17:34:00 +0100 Subject: [PATCH 075/178] DB/Quest: Weapons of Spirit Closes #21371 --- .../world/3.3.5/2018_02_08_07_world_335.sql | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_07_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_07_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_07_world_335.sql new file mode 100644 index 0000000000..d032ad62a5 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_07_world_335.sql @@ -0,0 +1,31 @@ +-- Witch Doctor Uzer'i +DELETE FROM `creature_text` WHERE `CreatureID`=8115 AND `GroupID` IN (2,3); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(8115,2,0,"%s gathers the materials together and begins to work.",16,0,100,0,0,0,4175,0,"Witch Doctor Uzer'i"), +(8115,3,0,"I have completed the weapons, $n.",12,0,100,1,0,0,4176,0,"Witch Doctor Uzer'i"); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=8115 AND `source_type`=0 AND `id` IN (1,2,3); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (811501,811502,811503) AND `source_type`=9; +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 +(8115,0,1,0,19,0,100,0,3129,0,0,0,80,811501,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Quest 'Weapons of Spirit' Taken - Run Script"), +(8115,0,2,0,40,0,100,0,3,8115,0,0,80,811502,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Waypoint 3 Reached - Run Script"), +(8115,0,3,0,40,0,100,0,6,8115,0,0,80,811503,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Waypoint 6 Reached - Run Script"), +(811501,9,0,0,0,0,100,0,0,0,0,0,83,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Remove Npc Flag Questgiver+Gossip"), +(811501,9,1,0,0,0,100,0,1000,1000,0,0,53,1,8115,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Start Waypoint"), +(811502,9,0,0,0,0,100,0,0,0,0,0,54,16000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Pause Waypoint"), +(811502,9,1,0,0,0,100,0,500,500,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,1.75709,"Witch Doctor Uzer'i - On Script - Set Orientation"), +(811502,9,2,0,0,0,100,0,1000,1000,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Set Flag Standstate Kneel"), +(811502,9,3,0,0,0,100,0,0,0,0,0,1,2,0,0,0,0,0,7,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Say Line 2"), +(811502,9,4,0,0,0,100,0,13000,13000,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Remove Flag Standstate Kneel"), +(811503,9,0,0,0,0,100,0,500,500,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,4.72984,"Witch Doctor Uzer'i - On Script - Set Orientation"), +(811503,9,1,0,0,0,100,0,0,0,0,0,1,3,0,0,0,0,0,7,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Say Line 3"), +(811503,9,2,0,0,0,100,0,0,0,0,0,82,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Uzer'i - On Script - Add Npc Flag Questgiver+Gossip"); + +DELETE FROM `waypoints` WHERE `entry`=8115; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(8115,1,-4375.1,259.339,26.584,""), +(8115,2,-4378.28,255.898,26.3856,""), +(8115,3,-4383,256.683,25.8833,""), +(8115,4,-4378.28,255.898,26.3856,""), +(8115,5,-4375.1,259.339,26.584,""), +(8115,6,-4375.68,269.717,25.4947,""); From 882930d448291136a6f43cbb0a0241b8b5c98e23 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 8 Feb 2018 17:34:38 +0100 Subject: [PATCH 076/178] DB/Quest: Zapped Giants Closes #21370 --- .../world/3.3.5/2018_02_08_08_world_335.sql | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_08_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_08_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_08_world_335.sql new file mode 100644 index 0000000000..c985af6e20 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_08_world_335.sql @@ -0,0 +1,25 @@ +-- Quest "Zapped Giants" +-- Cliff Giant +DELETE FROM `smart_scripts` WHERE `entryorguid`=5358 AND `source_type`=0 AND `id`=2; +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 +(5358,0,2,0,8,0,100,512,23359,0,0,0,3,14640,0,0,0,0,0,1,0,0,0,0,0,0,0,"Cliff Giant - On Spellhit 'Transmogrify!' - Morph to 'Zapped Cliff Giant'"); + +-- Land Walker +DELETE FROM `smart_scripts` WHERE `entryorguid`=5357 AND `source_type`=0 AND `id`=2; +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 +(5357,0,2,0,8,0,100,512,23359,0,0,0,3,14604,0,0,0,0,0,1,0,0,0,0,0,0,0,"Land Walker - On Spellhit 'Transmogrify!' - Morph to 'Zapped Land Walker'"); + +-- Shore Strider +DELETE FROM `smart_scripts` WHERE `entryorguid`=5359 AND `source_type`=0 AND `id`=1; +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 +(5359,0,1,0,8,0,100,512,23359,0,0,0,3,14603,0,0,0,0,0,1,0,0,0,0,0,0,0,"Shore Strider - On Spellhit 'Transmogrify!' - Morph to 'Zapped Shore Strider'"); + +-- Deep Strider +DELETE FROM `smart_scripts` WHERE `entryorguid`=5360 AND `source_type`=0 AND `id`=1; +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 +(5360,0,1,0,8,0,100,512,23359,0,0,0,3,14639,0,0,0,0,0,1,0,0,0,0,0,0,0,"Deep Strider - On Spellhit 'Transmogrify!' - Morph to 'Zapped Deep Strider'"); + +-- Wave Strider +DELETE FROM `smart_scripts` WHERE `entryorguid`=5361 AND `source_type`=0 AND `id`=1; +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 +(5361,0,1,0,8,0,100,512,23359,0,0,0,3,14638,0,0,0,0,0,1,0,0,0,0,0,0,0,"Wave Strider - On Spellhit 'Transmogrify!' - Morph to 'Zapped Wave Strider'"); From 1fe757d16c9f8c396134c55fd8879115c455016a Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Thu, 8 Feb 2018 17:35:56 +0100 Subject: [PATCH 077/178] DB/Gossip: Zorbin Fandazzle Closes #21369 --- sql/updates/world/3.3.5/2018_02_08_09_world_335.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_09_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_09_world_335.sql b/sql/updates/world/3.3.5/2018_02_08_09_world_335.sql new file mode 100644 index 0000000000..6369e7e1a3 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_09_world_335.sql @@ -0,0 +1,11 @@ +-- Zorbin Fandazzle --> Add gossip conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=11361; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14,11361,7116,0,0,8,0,7003,0,0,0,0,0,"","Show gossip text 5444 if quest 'Zapped Giants' is rewarded"), +(14,11361,7116,0,0,8,0,7721,0,0,0,0,0,"","Show gossip text 5444 if quest 'Fuel for the Zapping' is rewarded"), +(15,11361,0,0,0,8,0,7003,0,0,0,0,0,"","Show gossip option if quest 'Zapped Giants' is rewarded"), +(15,11361,0,0,0,8,0,7721,0,0,0,0,0,"","Show gossip option if quest 'Fuel for the Zapping' is rewarded"); + +DELETE FROM `gossip_menu_option` WHERE `MenuID`=11361; +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(11361,0,1,"Got anything interesting for sale, Zorbin?",9817,3,128,0,0,0,0,"",0,0); From 696304ab11754ee57a3ee091ec6823e1ddb56604 Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 8 Feb 2018 22:26:58 +0100 Subject: [PATCH 078/178] DB/Creature: Remove Tamed Sporebat spawns, summoned as pets by other npcs --- sql/updates/world/3.3.5/2018_02_08_10_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_08_10_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_10_world.sql b/sql/updates/world/3.3.5/2018_02_08_10_world.sql new file mode 100644 index 0000000000..ae24d4fd45 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_08_10_world.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `creature` WHERE `id` IN (18201); +DELETE FROM `creature_addon` WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id` IN (18201)); From c14a2284ab0104a1c27dc4bd66643ec765abd77a Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 8 Feb 2018 23:14:07 +0100 Subject: [PATCH 079/178] DB: Fix the previous commit --- sql/updates/world/3.3.5/2018_02_08_10_world.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/updates/world/3.3.5/2018_02_08_10_world.sql b/sql/updates/world/3.3.5/2018_02_08_10_world.sql index ae24d4fd45..24d0f839e1 100644 --- a/sql/updates/world/3.3.5/2018_02_08_10_world.sql +++ b/sql/updates/world/3.3.5/2018_02_08_10_world.sql @@ -1,3 +1,3 @@ -- -DELETE FROM `creature` WHERE `id` IN (18201); DELETE FROM `creature_addon` WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id` IN (18201)); +DELETE FROM `creature` WHERE `id` IN (18201); From 6363bc77b8331cf8eab10ea00b368b85c9c337c8 Mon Sep 17 00:00:00 2001 From: Treeston Date: Fri, 9 Feb 2018 18:07:57 +0100 Subject: [PATCH 080/178] Game/AI: InvalidAIException internal cleanup --- src/server/game/AI/AIException.cpp | 23 ----------------------- src/server/game/AI/AIException.h | 9 ++------- 2 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 src/server/game/AI/AIException.cpp diff --git a/src/server/game/AI/AIException.cpp b/src/server/game/AI/AIException.cpp deleted file mode 100644 index ce3d601302..0000000000 --- a/src/server/game/AI/AIException.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 2008-2018 TrinityCore - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -#include "AIException.h" - -InvalidAIException::InvalidAIException(char const* _message) -{ - message().assign(_message); -} diff --git a/src/server/game/AI/AIException.h b/src/server/game/AI/AIException.h index 265e5dddb5..d012a4cc5f 100644 --- a/src/server/game/AI/AIException.h +++ b/src/server/game/AI/AIException.h @@ -25,16 +25,11 @@ class TC_GAME_API InvalidAIException : public std::exception { public: - InvalidAIException(char const* _message); - ~InvalidAIException() throw() { } - + InvalidAIException(char const* msg) : msg_(msg) {} char const* what() const noexcept override { return msg_.c_str(); } -protected: - std::string & message() throw() { return msg_; } - private: - std::string msg_; + std::string const msg_; }; #endif From 563de5bf204255a0814cfdb2e86c12cfc4c93d66 Mon Sep 17 00:00:00 2001 From: Keader Date: Fri, 9 Feb 2018 16:02:00 -0200 Subject: [PATCH 081/178] Scripts/Icecrown Citadel: Fixed Sindragosa spawn after grid unload ty sirikfoll :) --- .../scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 58eb328ddf..47178a4007 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -1621,12 +1621,12 @@ public: } }; -class at_sindragosa_lair : public OnlyOnceAreaTriggerScript +class at_sindragosa_lair : public AreaTriggerScript { public: - at_sindragosa_lair() : OnlyOnceAreaTriggerScript("at_sindragosa_lair") { } + at_sindragosa_lair() : AreaTriggerScript("at_sindragosa_lair") { } - bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override + bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override { if (InstanceScript* instance = player->GetInstanceScript()) { From e208de2a7293ce91076c50d6cdd59c58fe6d7da1 Mon Sep 17 00:00:00 2001 From: Killyana Date: Fri, 9 Feb 2018 23:19:02 +0100 Subject: [PATCH 082/178] DB/Creature: Arcatraz Sentinel Updates #21156 --- sql/updates/world/3.3.5/2018_02_09_01_world.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_09_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_09_01_world.sql b/sql/updates/world/3.3.5/2018_02_09_01_world.sql new file mode 100644 index 0000000000..4b5d7be403 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_09_01_world.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_template` SET `RegenHealth`=0 WHERE `entry` IN (20869, 21586); +UPDATE `creature` SET `curhealth`=62315 WHERE `id` IN (20869); +DELETE FROM `smart_scripts` WHERE `entryorguid`=20869 AND `source_type`=0 AND `id`=4; +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 +(20869, 0, 4, 0, 4, 0, 100, 0, 0, 0, 0, 0, 28, 31261, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Arcatraz Sentinel - On aggro - remove aura'); From 9818296c27452a40271d967e6ade83e2ff2f084d Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 10 Feb 2018 12:17:24 +0100 Subject: [PATCH 083/178] rename files --- .../2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql} | 0 .../2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql} | 0 .../2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql} | 0 .../2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql} | 0 .../2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql} | 0 .../2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql} | 0 .../2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql} | 0 .../2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql} | 0 .../2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql} | 0 .../2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql} | 0 .../2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql} | 0 .../2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql} | 0 .../2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql} | 0 .../2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql} | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename sql/updates/world/{3.3.5/2018_02_04_01_world_335.sql => 4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_04_02_world.sql => 4.3.4/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_00_world_335.sql => 4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_01_world_335.sql => 4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_02_world_335.sql => 4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_03_world_335.sql => 4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_04_world_335.sql => 4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_05_world_335.sql => 4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_06_world_335.sql => 4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_07_world_335.sql => 4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_08_world_335.sql => 4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_09_world_335.sql => 4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_08_10_world.sql => 4.3.4/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_09_01_world.sql => 4.3.4/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_02_04_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_04_01_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_04_02_world.sql b/sql/updates/world/4.3.4/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_04_02_world.sql rename to sql/updates/world/4.3.4/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_00_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_00_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_01_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_02_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_02_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_03_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_03_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_04_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_04_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_05_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_05_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_06_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_06_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_07_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_07_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_08_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_08_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_09_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_09_world_335.sql rename to sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_08_10_world.sql b/sql/updates/world/4.3.4/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_08_10_world.sql rename to sql/updates/world/4.3.4/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_09_01_world.sql b/sql/updates/world/4.3.4/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_09_01_world.sql rename to sql/updates/world/4.3.4/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql From 104aa66912ad0c9c5e7b97b93866292f0b509268 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 10 Feb 2018 12:18:56 +0100 Subject: [PATCH 084/178] missing part --- ...2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql | 2 ++ ...2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql | 2 ++ ...2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql | 2 ++ ...2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql | 2 ++ ...2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql | 2 ++ ...2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql | 2 ++ ...2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql | 2 ++ ...2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql | 2 ++ ...2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql | 2 ++ ...2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql | 2 ++ ...2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql | 2 ++ 11 files changed, 22 insertions(+) diff --git a/sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql index bc35f5d806..f035e77f2f 100644 --- a/sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql @@ -1,3 +1,4 @@ +/* -- Remove unique items from reference table 24078 DELETE FROM `reference_loot_template` WHERE `Entry`=24078 AND `Item` IN (899, 1391, 1440, 1446, 1469, 1473, 1929, 1930, 1936, 1943, 1944, 1945, 1951, 2020, 4290, 10400, 10401, 10402); @@ -27,3 +28,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Com (634, 10401, 0.5, 2, "Defias Overseer - Blackened Defias Gloves"), (4417, 10401, 0.5, 2, "Defias Taskmaster - Blackened Defias Gloves"), (4416, 10402, 0.5, 0, "Defias Strip Miner - Blackened Defias Boots"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql index 5046c17523..cadd583c72 100644 --- a/sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql @@ -1,3 +1,4 @@ +/* -- Remove unique items from reference table 24060, as well as removing Agile Boots (4788) which is sold only and does not drop DELETE FROM `reference_loot_template` WHERE `Entry`=24060 AND `Item` IN (1218, 1220, 1296, 1300, 1448, 1460, 1934, 2021, 2166, 2167, 2168, 3018, 3227, 4788, 4949, 5182, 5183); @@ -21,3 +22,4 @@ INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Chance`,`GroupId`,`Comment (7170, 4949, 100, 0, "Thragomm - Orcish Cleaver"), (3398, 5182, 2, 2, "Gesharahan - Shiver Blade"), (3398, 5183, 2, 2, "Gesharahan - Pulsating Hydra Heart"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql index f3359f34e7..5df88215c5 100644 --- a/sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql @@ -1,3 +1,4 @@ +/* -- Ragged Timber Wolf DELETE FROM `creature_loot_template` WHERE `Entry`=704; INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES @@ -83,3 +84,4 @@ INSERT INTO `creature_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`Quest (1718, 2054, 0, 1, 0, 1, 0, 1, 1, "Trogg Hand Axe (unique)"), (1718, 24073, 24073, 5, 0, 1, 0, 1, 1, "Junk"), (1718, 11111, 11111, 0.1, 0, 1, 0, 1, 1, "Bags"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql index 717cec62c0..8b03cf27af 100644 --- a/sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql @@ -1,3 +1,4 @@ +/* -- Remove unique items from reference table 24062 DELETE FROM `reference_loot_template` WHERE `Entry`=24062 AND `Item` IN (880, 1299, 1457, 1458, 2175, 1462, 1461, 1459, 3018, 3227); @@ -12,3 +13,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Com (429, 1462, 0.1, 0, "Shadowhide Darkweaver - Ring of the Shadow"), (431, 1461, 0.1, 0, "Shadowhide Slayer - Slayer's Battle Axe"), (579, 1459, 0.1, 0, "Shadowhide Assassin - Shadowhide Scalper"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql index 2d7c7378b6..52d1cce48a 100644 --- a/sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql @@ -1,3 +1,4 @@ +/* -- Create new reference loot template for Shadowfang Keep SET @ENTRY := 1055; -- need a new id @@ -37,3 +38,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `C (3873, @ENTRY, @ENTRY, 0.1, "Tormented Officer - SFK Rares"), (3875, @ENTRY, @ENTRY, 0.1, "Haunted Servitor - SFK Rares"), (3877, @ENTRY, @ENTRY, 0.1, "Wailing Guardsman - SFK Rares"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql index bf4ac574ee..edbd3a87cd 100644 --- a/sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql @@ -1,3 +1,4 @@ +/* -- Living Storm UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=9397; DELETE FROM `smart_scripts` WHERE `entryorguid`=9397 AND `source_type`=0; @@ -20,3 +21,4 @@ UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8667; DELETE FROM `smart_scripts` WHERE `entryorguid`=8667 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 (8667,0,0,0,0,0,100,0,8000,11000,22000,26000,11,6982,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gusting Vortex - In Combat - Cast Gust of Wind"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql index 07134fb590..9312d8d981 100644 --- a/sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql @@ -1,6 +1,8 @@ +/* -- BreadCrumb Quest "Tran'rek" UPDATE `quest_template_addon` SET `PrevQuestID`=0 WHERE `ID`=2865; DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry` IN (2864,2865); INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES (19,0,2864,0,0,14,0,2865,0,0,0,0,0,"","Quest 'Tran'rek' can only be taken if quest 'Scarab Shells' is not taken"), (19,0,2865,0,0,28,0,2864,0,0,1,0,0,"","Quest 'Scarab Shells' can only be taken if quest 'Tran'rek' is not completed"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql index 4714d0f5e0..8e877ef84a 100644 --- a/sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "A Threat in Feralas" DELETE FROM `quest_details` WHERE `ID`=2981; INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES @@ -217,3 +218,4 @@ DELETE FROM `quest_details` WHERE `ID`=7481; INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES (7481,1,1,1,0,0,0,0,0,0); UPDATE `quest_offer_reward` SET `Emote1`=1, `Emote2`=6 WHERE `ID`=7481; +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql index d032ad62a5..46e637012b 100644 --- a/sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql @@ -1,3 +1,4 @@ +/* -- Witch Doctor Uzer'i DELETE FROM `creature_text` WHERE `CreatureID`=8115 AND `GroupID` IN (2,3); INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES @@ -29,3 +30,4 @@ INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `positi (8115,4,-4378.28,255.898,26.3856,""), (8115,5,-4375.1,259.339,26.584,""), (8115,6,-4375.68,269.717,25.4947,""); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql index c985af6e20..f5098d7e1d 100644 --- a/sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "Zapped Giants" -- Cliff Giant DELETE FROM `smart_scripts` WHERE `entryorguid`=5358 AND `source_type`=0 AND `id`=2; @@ -23,3 +24,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ DELETE FROM `smart_scripts` WHERE `entryorguid`=5361 AND `source_type`=0 AND `id`=1; 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 (5361,0,1,0,8,0,100,512,23359,0,0,0,3,14638,0,0,0,0,0,1,0,0,0,0,0,0,0,"Wave Strider - On Spellhit 'Transmogrify!' - Morph to 'Zapped Wave Strider'"); +*/ diff --git a/sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql b/sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql index 6369e7e1a3..cb75285a1b 100644 --- a/sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql @@ -1,3 +1,4 @@ +/* -- Zorbin Fandazzle --> Add gossip conditions DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=11361; INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES @@ -9,3 +10,4 @@ INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry DELETE FROM `gossip_menu_option` WHERE `MenuID`=11361; INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES (11361,0,1,"Got anything interesting for sale, Zorbin?",9817,3,128,0,0,0,0,"",0,0); +*/ From d1df97db238c8e6d4092cbe0798889912278dc42 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 10 Feb 2018 16:07:56 +0100 Subject: [PATCH 085/178] Shared/Database: Improve dead-lock error handling Improve dead-lock error handling in async transactions by retrying the transaction for up to 60 seconds instead of just 5 times --- .../database/Database/DatabaseWorkerPool.cpp | 1 + src/server/database/Database/Transaction.cpp | 25 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/server/database/Database/DatabaseWorkerPool.cpp b/src/server/database/Database/DatabaseWorkerPool.cpp index a001954d09..4661cd5244 100644 --- a/src/server/database/Database/DatabaseWorkerPool.cpp +++ b/src/server/database/Database/DatabaseWorkerPool.cpp @@ -238,6 +238,7 @@ void DatabaseWorkerPool::DirectCommitTransaction(SQLTransaction& transaction) /// @todo More elegant way if (errorCode == ER_LOCK_DEADLOCK) { + //todo: handle multiple sync threads deadlocking in a similar way as async threads uint8 loopBreaker = 5; for (uint8 i = 0; i < loopBreaker; ++i) { diff --git a/src/server/database/Database/Transaction.cpp b/src/server/database/Database/Transaction.cpp index a8cb502e68..f3345f762d 100644 --- a/src/server/database/Database/Transaction.cpp +++ b/src/server/database/Database/Transaction.cpp @@ -15,12 +15,19 @@ * with this program. If not, see . */ -#include "DatabaseEnv.h" +#include "Log.h" #include "Transaction.h" +#include "MySQLConnection.h" +#include "PreparedStatement.h" +#include "Timer.h" #include +#include +#include std::mutex TransactionTask::_deadlockLock; +#define DEADLOCK_MAX_RETRY_TIME_MS 60000 + //- Append a raw ad-hoc query to the transaction void Transaction::Append(const char* sql) { @@ -72,12 +79,22 @@ bool TransactionTask::Execute() if (errorCode == ER_LOCK_DEADLOCK) { + std::ostringstream threadIdStream; + threadIdStream << std::this_thread::get_id(); + std::string threadId = threadIdStream.str(); + // Make sure only 1 async thread retries a transaction so they don't keep dead-locking each other std::lock_guard lock(_deadlockLock); - uint8 loopBreaker = 5; // Handle MySQL Errno 1213 without extending deadlock to the core itself - for (uint8 i = 0; i < loopBreaker; ++i) - if (!m_conn->ExecuteTransaction(m_trans)) + + for (uint32 loopDuration = 0, startMSTime = getMSTime(); loopDuration <= DEADLOCK_MAX_RETRY_TIME_MS; loopDuration = GetMSTimeDiffToNow(startMSTime)) + { + if (!m_conn->ExecuteTransaction(m_trans)) return true; + + TC_LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: %u ms, Thread Id: %s", loopDuration, threadId.c_str()); + } + + TC_LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: %s", threadId.c_str()); } // Clean up now. From 0ed2e8e6072811c80fcb0f184a84bcdb37843100 Mon Sep 17 00:00:00 2001 From: Killyana Date: Sat, 10 Feb 2018 20:42:12 +0100 Subject: [PATCH 086/178] DB: Fix some DB errors Ref https://github.com/TrinityCore/TrinityCore/commit/3acd9a7c4f7f4372b27f0e1a15c18b00435c9a03 --- sql/updates/world/3.3.5/2018_02_10_00_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_10_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_10_00_world.sql b/sql/updates/world/3.3.5/2018_02_10_00_world.sql new file mode 100644 index 0000000000..ad19973dc2 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_10_00_world.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `spawn_group` WHERE `spawnId` IN (64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993) AND `spawnType`=0 AND `groupId`=2; From 1e4197d7adf0354c53df96aeab3798aa45ee305e Mon Sep 17 00:00:00 2001 From: Killyana Date: Sat, 10 Feb 2018 21:10:51 +0100 Subject: [PATCH 087/178] DB/SAI: Mire Hydra --- sql/updates/world/3.3.5/2018_02_10_01_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_10_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_10_01_world.sql b/sql/updates/world/3.3.5/2018_02_10_01_world.sql new file mode 100644 index 0000000000..f8d0d34852 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_10_01_world.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `smart_scripts` WHERE `entryorguid`=18213 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 +(18213, 0, 0, 0, 0, 0, 100, 0, 1000, 2000, 3400, 5800, 11, 39419, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, "Mire Hydra - IC - Cast 'Poison Spit'"); From 53728216b694f4dde877cd46447a0916aad28164 Mon Sep 17 00:00:00 2001 From: Jildor Date: Sun, 11 Feb 2018 13:15:09 +0100 Subject: [PATCH 088/178] Whitespace cleanup in Transaction.cpp Removing white space after commit 54b0b8f5ead41f936b12e97d1b4fbacd9b89ab53 --- src/server/database/Database/Transaction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/database/Database/Transaction.cpp b/src/server/database/Database/Transaction.cpp index f3345f762d..929653d210 100644 --- a/src/server/database/Database/Transaction.cpp +++ b/src/server/database/Database/Transaction.cpp @@ -85,10 +85,10 @@ bool TransactionTask::Execute() // Make sure only 1 async thread retries a transaction so they don't keep dead-locking each other std::lock_guard lock(_deadlockLock); - + for (uint32 loopDuration = 0, startMSTime = getMSTime(); loopDuration <= DEADLOCK_MAX_RETRY_TIME_MS; loopDuration = GetMSTimeDiffToNow(startMSTime)) { - if (!m_conn->ExecuteTransaction(m_trans)) + if (!m_conn->ExecuteTransaction(m_trans)) return true; TC_LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: %u ms, Thread Id: %s", loopDuration, threadId.c_str()); From 46467499f341d092ba06b6defc2bcc4f02706ca6 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 11 Feb 2018 15:53:30 +0100 Subject: [PATCH 089/178] Scripting/Obsidian Sanctum: Fix crash Fix crash caused by calling Reset() in constructor (which is not allowed) --- .../ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp index fa5359a9fd..14a16d60f9 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp @@ -980,7 +980,6 @@ public: { npc_twilight_whelpAI(Creature* creature) : ScriptedAI(creature) { - Reset(); } void Reset() override From bee461eda8602c6a949ccbc6a7c7d565c447f3ab Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 11 Feb 2018 17:43:12 +0100 Subject: [PATCH 090/178] Core/Player: Add some asserts Assert PlayerInfo for race/class pair in a few Player functions --- src/server/game/Entities/Player/Player.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 56cecdd224..ca8299a169 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22698,6 +22698,7 @@ void Player::ReportedAfkBy(Player* reporter) WorldLocation Player::GetStartPosition() const { PlayerInfo const* info = sObjectMgr->GetPlayerInfo(getRace(), getClass()); + ASSERT(info); uint32 mapId = info->mapId; if (getClass() == CLASS_DEATH_KNIGHT && HasSpell(50977)) mapId = 0; @@ -23407,6 +23408,7 @@ void Player::LearnCustomSpells() // learn default race/class spells PlayerInfo const* info = sObjectMgr->GetPlayerInfo(getRace(), getClass()); + ASSERT(info); for (PlayerCreateInfoSpells::const_iterator itr = info->customSpells.begin(); itr != info->customSpells.end(); ++itr) { uint32 tspell = *itr; @@ -23423,6 +23425,7 @@ void Player::LearnDefaultSkills() { // learn default race/class skills PlayerInfo const* info = sObjectMgr->GetPlayerInfo(getRace(), getClass()); + ASSERT(info); for (PlayerCreateInfoSkills::const_iterator itr = info->skills.begin(); itr != info->skills.end(); ++itr) { uint32 skillId = itr->SkillId; From bfcdb9e7f9c1906c276beb2019b5c03ca46db7fe Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 11 Feb 2018 19:49:22 -0300 Subject: [PATCH 091/178] DB/Spell: fix Unstable Affliction and Vampiric Touch dispel double dipping from SP Closes #21393 --- sql/updates/world/3.3.5/2018_02_11_00_world_335.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 sql/updates/world/3.3.5/2018_02_11_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_11_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_11_00_world_335.sql new file mode 100644 index 0000000000..498c89eab1 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_11_00_world_335.sql @@ -0,0 +1 @@ +DELETE FROM `spell_bonus_data` WHERE `entry` IN (31117, 64085); From 2388415edd25f5c8fb4cf71c104b8c9c2c17c52d Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 11 Feb 2018 20:42:06 -0300 Subject: [PATCH 092/178] Core/Spells: require phasemask set for periodic damage procflag Closes #21379 --- sql/updates/world/3.3.5/2018_02_11_01_world_335.sql | 1 + src/server/game/Spells/SpellMgr.cpp | 4 ++-- src/server/game/Spells/SpellMgr.h | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 sql/updates/world/3.3.5/2018_02_11_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_11_01_world_335.sql b/sql/updates/world/3.3.5/2018_02_11_01_world_335.sql new file mode 100644 index 0000000000..e2e2b3a0ba --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_11_01_world_335.sql @@ -0,0 +1 @@ +UPDATE `spell_proc` SET `SpellPhaseMask` = `SpellPhaseMask`|0x2 WHERE `SpellId` IN (-19572, 28716, -31656, 37603, 38394, 40438, 40478, 45054, -47195, -47245, -48539, -49217, 54754, 56218, -56636, 57870, 60061, 60170, 60176, 60487, 61188, 64752, 64824, 64914, 67209, 67356, 67361, 67365, 70664, 70730, 70841, 70854, 71174, 71176, 71178, 71198, 71606, 71637); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 86a1afc275..a85827b6dd 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -540,7 +540,7 @@ bool SpellMgr::CanSpellTriggerProcOnEvent(SpellProcEntry const& procEntry, ProcE return false; // check spell family name/flags (if set) for spells - if (eventInfo.GetTypeMask() & (PERIODIC_PROC_FLAG_MASK | SPELL_PROC_FLAG_MASK)) + if (eventInfo.GetTypeMask() & SPELL_PROC_FLAG_MASK) { if (SpellInfo const* eventSpellInfo = eventInfo.GetSpellInfo()) if (!eventSpellInfo->IsAffected(procEntry.SpellFamilyName, procEntry.SpellFamilyMask)) @@ -1670,7 +1670,7 @@ void SpellMgr::LoadSpellProcs() TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u doesn't have any `ProcFlags` value defined, proc will not be triggered.", spellInfo->Id); if (procEntry.SpellTypeMask & ~PROC_SPELL_TYPE_MASK_ALL) TC_LOG_ERROR("sql.sql", "`spell_proc` table entry for spellId %u has wrong `SpellTypeMask` set: %u", spellInfo->Id, procEntry.SpellTypeMask); - if (procEntry.SpellTypeMask && !(procEntry.ProcFlags & (SPELL_PROC_FLAG_MASK | PERIODIC_PROC_FLAG_MASK))) + if (procEntry.SpellTypeMask && !(procEntry.ProcFlags & SPELL_PROC_FLAG_MASK)) TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u has `SpellTypeMask` value defined, but it will not be used for the defined `ProcFlags` value.", spellInfo->Id); if (!procEntry.SpellPhaseMask && procEntry.ProcFlags & REQ_SPELL_PHASE_PROC_FLAG_MASK) TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u doesn't have any `SpellPhaseMask` value defined, but it is required for the defined `ProcFlags` value. Proc will not be triggered.", spellInfo->Id); diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index b870cf5638..4bfbb2474b 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -165,10 +165,9 @@ enum ProcFlags | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG | PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG | PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS | PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS | PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG | PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG + | PROC_FLAG_DONE_PERIODIC | PROC_FLAG_TAKEN_PERIODIC | PROC_FLAG_DONE_TRAP_ACTIVATION, - PERIODIC_PROC_FLAG_MASK = PROC_FLAG_DONE_PERIODIC | PROC_FLAG_TAKEN_PERIODIC, - DONE_HIT_PROC_FLAG_MASK = PROC_FLAG_DONE_MELEE_AUTO_ATTACK | PROC_FLAG_DONE_RANGED_AUTO_ATTACK | PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS | PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG From d5a77f6b794aa7a245573744b74c66fc41e46bde Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 01:21:15 +0100 Subject: [PATCH 093/178] Core/Auras: fix periodic ticks proc after previous commit --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 68c1b44ae6..ee69d861ae 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5654,7 +5654,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const caster->DealDamage(target, damage, &cleanDamage, DOT, GetSpellInfo()->GetSchoolMask(), GetSpellInfo(), true); - caster->ProcSkillsAndAuras(target, procAttacker, procVictim, PROC_SPELL_TYPE_DAMAGE, PROC_SPELL_PHASE_NONE, hitMask, nullptr, &damageInfo, nullptr); + caster->ProcSkillsAndAuras(target, procAttacker, procVictim, PROC_SPELL_TYPE_DAMAGE, PROC_SPELL_PHASE_HIT, hitMask, nullptr, &damageInfo, nullptr); } void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) const @@ -5747,7 +5747,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c int32 new_damage = caster->DealDamage(target, damage, &cleanDamage, DOT, GetSpellInfo()->GetSchoolMask(), GetSpellInfo(), false); if (caster->IsAlive()) { - caster->ProcSkillsAndAuras(target, procAttacker, procVictim, PROC_SPELL_TYPE_DAMAGE, PROC_SPELL_PHASE_NONE, hitMask, nullptr, &damageInfo, nullptr); + caster->ProcSkillsAndAuras(target, procAttacker, procVictim, PROC_SPELL_TYPE_DAMAGE, PROC_SPELL_PHASE_HIT, hitMask, nullptr, &damageInfo, nullptr); float gainMultiplier = GetSpellInfo()->Effects[GetEffIndex()].CalcValueMultiplier(caster); @@ -5758,7 +5758,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c caster->HealBySpell(healInfo); caster->getHostileRefManager().threatAssist(caster, healInfo.GetEffectiveHeal() * 0.5f, GetSpellInfo()); - caster->ProcSkillsAndAuras(caster, PROC_FLAG_DONE_PERIODIC, PROC_FLAG_TAKEN_PERIODIC, PROC_SPELL_TYPE_HEAL, PROC_SPELL_PHASE_NONE, hitMask, nullptr, nullptr, &healInfo); + caster->ProcSkillsAndAuras(caster, PROC_FLAG_DONE_PERIODIC, PROC_FLAG_TAKEN_PERIODIC, PROC_SPELL_TYPE_HEAL, PROC_SPELL_PHASE_HIT, hitMask, nullptr, nullptr, &healInfo); } } @@ -5789,7 +5789,7 @@ void AuraEffect::HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster) HealInfo healInfo(caster, target, damage, GetSpellInfo(), GetSpellInfo()->GetSchoolMask()); caster->HealBySpell(healInfo); - caster->ProcSkillsAndAuras(target, PROC_FLAG_DONE_PERIODIC, PROC_FLAG_TAKEN_PERIODIC, PROC_SPELL_TYPE_HEAL, PROC_SPELL_PHASE_NONE, PROC_HIT_NORMAL, nullptr, nullptr, &healInfo); + caster->ProcSkillsAndAuras(target, PROC_FLAG_DONE_PERIODIC, PROC_FLAG_TAKEN_PERIODIC, PROC_SPELL_TYPE_HEAL, PROC_SPELL_PHASE_HIT, PROC_HIT_NORMAL, nullptr, nullptr, &healInfo); } void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const @@ -5917,7 +5917,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const uint32 hitMask = crit ? PROC_HIT_CRITICAL : PROC_HIT_NORMAL; // ignore item heals if (!haveCastItem) - caster->ProcSkillsAndAuras(target, procAttacker, procVictim, PROC_SPELL_TYPE_HEAL, PROC_SPELL_PHASE_NONE, hitMask, nullptr, nullptr, &healInfo); + caster->ProcSkillsAndAuras(target, procAttacker, procVictim, PROC_SPELL_TYPE_HEAL, PROC_SPELL_PHASE_HIT, hitMask, nullptr, nullptr, &healInfo); } void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) const @@ -6099,7 +6099,7 @@ void AuraEffect::HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) con caster->DealSpellDamage(&damageInfo, true); DamageInfo dotDamageInfo(damageInfo, DOT, BASE_ATTACK, hitMask); - caster->ProcSkillsAndAuras(target, procAttacker, procVictim, spellTypeMask, PROC_SPELL_PHASE_NONE, hitMask, nullptr, &dotDamageInfo, nullptr); + caster->ProcSkillsAndAuras(target, procAttacker, procVictim, spellTypeMask, PROC_SPELL_PHASE_HIT, hitMask, nullptr, &dotDamageInfo, nullptr); } void AuraEffect::HandleBreakableCCAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo) From e6888f72e067631876362fa6be7728fe471deeb5 Mon Sep 17 00:00:00 2001 From: ariel- Date: Sun, 11 Feb 2018 21:10:56 -0300 Subject: [PATCH 094/178] Core/Scripts: implemented Combined Toxins proc only from poisons --- .../world/3.3.5/2018_02_11_02_world_335.sql | 3 +++ .../AzjolNerub/Ahnkahet/instance_ahnkahet.cpp | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_11_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_11_02_world_335.sql b/sql/updates/world/3.3.5/2018_02_11_02_world_335.sql new file mode 100644 index 0000000000..5a98c0da86 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_11_02_world_335.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_combined_toxins'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(56584, 'spell_combined_toxins'); diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp index b30cc5c4b8..433ae77c16 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp @@ -280,7 +280,26 @@ class instance_ahnkahet : public InstanceMapScript } }; +// 56584 - Combined Toxins +class spell_combined_toxins : public AuraScript +{ + PrepareAuraScript(spell_combined_toxins); + + bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + // only procs on poisons (damage class check to exclude stuff like Envenom) + SpellInfo const* spellInfo = eventInfo.GetSpellInfo(); + return (spellInfo && spellInfo->Dispel == DISPEL_POISON && spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MELEE); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_combined_toxins::CheckProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_DAMAGE); + } +}; + void AddSC_instance_ahnkahet() { new instance_ahnkahet(); + RegisterAuraScript(spell_combined_toxins); } From 7c9b62eac85b0d08c8b1cbad845ebed6fb40cea2 Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 12 Feb 2018 02:58:23 +0100 Subject: [PATCH 095/178] DB/Quest: fix Territorial Trespass SmartScript to use proper target type (tag #20310) --- sql/updates/world/3.3.5/2018_02_12_00_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_12_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_12_00_world.sql b/sql/updates/world/3.3.5/2018_02_12_00_world.sql new file mode 100644 index 0000000000..8349cbe23c --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_12_00_world.sql @@ -0,0 +1,2 @@ +-- SAI target fix for Territorial Trespass (13051) +update `smart_scripts` set `target_type`=23 where (`source_type`=0 and `entryorguid`=30461 and `id`=2) or (`source_type`=9 and `entryorguid`=3046200 and `id` in (1,4)); From 302599decdf3afca4df9afb65c9433ddb0a813df Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 12 Feb 2018 02:58:51 +0100 Subject: [PATCH 096/178] Scripts/ScarletEnclave: fix Massacre at Light's Point mine cart escort to work again (tag #20310) --- .../ScarletEnclave/chapter1.cpp | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 257f6c40ba..115c921f82 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -1056,11 +1056,6 @@ class npc_scarlet_miner_cart : public CreatureScript if (Creature* miner = ObjectAccessor::GetCreature(*me, _minerGUID)) { me->SetWalk(false); - - // Not 100% correct, but movement is smooth. Sometimes miner walks faster - // than normal, this speed is fast enough to keep up at those times. - me->SetSpeedRate(MOVE_RUN, 1.25f); - me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0); } } @@ -1110,25 +1105,21 @@ class npc_scarlet_miner : public CreatureScript { npc_scarlet_minerAI(Creature* creature) : npc_escortAI(creature) { - Initialize(); me->SetReactState(REACT_PASSIVE); } - void Initialize() + void InitializeAI() override { - carGUID.Clear(); IntroTimer = 0; IntroPhase = 0; + carGUID.Clear(); + playerGUID.Clear(); } uint32 IntroTimer; uint32 IntroPhase; ObjectGuid carGUID; - - void Reset() override - { - Initialize(); - } + ObjectGuid playerGUID; void IsSummonedBy(Unit* summoner) override { @@ -1170,9 +1161,12 @@ class npc_scarlet_miner : public CreatureScript void SetGUID(ObjectGuid const& guid, int32 /*id*/) override { - InitWaypoint(); - Start(false, false, guid); - SetDespawnAtFar(false); + playerGUID = guid; + } + + void Reset() override + { + EscortAI::Reset(); } void WaypointReached(uint32 waypointId) override @@ -1202,6 +1196,16 @@ class npc_scarlet_miner : public CreatureScript } } + void JustAppeared() override + { + EscortAI::JustAppeared(); + if (!playerGUID) + return; + InitWaypoint(); + Start(false, false, playerGUID); + SetDespawnAtFar(false); + } + void UpdateAI(uint32 diff) override { if (IntroPhase) From c83d9d3a4b0496caf89c0b5e1dcf34d720ee36b6 Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 12 Feb 2018 03:08:34 +0100 Subject: [PATCH 097/178] Scripts/AzjolNerub: Hadronox is a big spider mommy, and needs more room to pet her spider pets properly. Hopefully this'll reduce the number of evades happening during the encounter. Tag #20310. --- .../scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index bf3cb0a41d..6ef9fc9e0f 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -218,7 +218,7 @@ public: bool CanAIAttack(Unit const* target) const override { // Prevent Hadronox from going too far from her current home position - if (!target->IsControlledByPlayer() && target->GetDistance(me->GetHomePosition()) > 20.0f) + if (!target->IsControlledByPlayer() && target->GetDistance(me->GetHomePosition()) > 70.0f) return false; return BossAI::CanAIAttack(target); } From daa7c79f7e55cde6a19440e8ed882c0753aeceb4 Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 12 Feb 2018 03:23:54 +0100 Subject: [PATCH 098/178] Revert "Scripts/ScarletEnclave: fix Massacre at Light's Point mine cart escort to work again (tag #20310)" This reverts commit 6ff71dffbb774b8ea715053cd9223edc5c67bb0f. --- .../ScarletEnclave/chapter1.cpp | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 115c921f82..257f6c40ba 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -1056,6 +1056,11 @@ class npc_scarlet_miner_cart : public CreatureScript if (Creature* miner = ObjectAccessor::GetCreature(*me, _minerGUID)) { me->SetWalk(false); + + // Not 100% correct, but movement is smooth. Sometimes miner walks faster + // than normal, this speed is fast enough to keep up at those times. + me->SetSpeedRate(MOVE_RUN, 1.25f); + me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0); } } @@ -1105,21 +1110,25 @@ class npc_scarlet_miner : public CreatureScript { npc_scarlet_minerAI(Creature* creature) : npc_escortAI(creature) { + Initialize(); me->SetReactState(REACT_PASSIVE); } - void InitializeAI() override + void Initialize() { + carGUID.Clear(); IntroTimer = 0; IntroPhase = 0; - carGUID.Clear(); - playerGUID.Clear(); } uint32 IntroTimer; uint32 IntroPhase; ObjectGuid carGUID; - ObjectGuid playerGUID; + + void Reset() override + { + Initialize(); + } void IsSummonedBy(Unit* summoner) override { @@ -1161,12 +1170,9 @@ class npc_scarlet_miner : public CreatureScript void SetGUID(ObjectGuid const& guid, int32 /*id*/) override { - playerGUID = guid; - } - - void Reset() override - { - EscortAI::Reset(); + InitWaypoint(); + Start(false, false, guid); + SetDespawnAtFar(false); } void WaypointReached(uint32 waypointId) override @@ -1196,16 +1202,6 @@ class npc_scarlet_miner : public CreatureScript } } - void JustAppeared() override - { - EscortAI::JustAppeared(); - if (!playerGUID) - return; - InitWaypoint(); - Start(false, false, playerGUID); - SetDespawnAtFar(false); - } - void UpdateAI(uint32 diff) override { if (IntroPhase) From 54316a0b999db3ed86dd90e5797665549715d857 Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 12 Feb 2018 03:47:31 +0100 Subject: [PATCH 099/178] Scripts/CoT4: Stratholme Residents should no longer rudely interrupt Arthas by punching him in the face while he's giving a righteous sermon on his reasons for wiping them all out. --- sql/updates/world/3.3.5/2018_02_12_01_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_12_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_12_01_world.sql b/sql/updates/world/3.3.5/2018_02_12_01_world.sql new file mode 100644 index 0000000000..4ff4dafec0 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_12_01_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra`=2 WHERE `entry`=28167; From 3a4035bb8dbc13a163bbd16e49bf87bf76141fdf Mon Sep 17 00:00:00 2001 From: ariel- Date: Mon, 12 Feb 2018 00:17:34 -0300 Subject: [PATCH 100/178] Core/Spells: add log on load about improper use of attribute PROC_ATTR_REQ_SPELLMOD --- src/server/game/Spells/SpellMgr.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index a85827b6dd..dfb6dfaff2 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1685,6 +1685,24 @@ void SpellMgr::LoadSpellProcs() for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) if ((procEntry.AttributesMask & (PROC_ATTR_DISABLE_EFF_0 << i)) && !spellInfo->Effects[i].IsAura()) TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u has Attribute PROC_ATTR_DISABLE_EFF_%u, but effect %u is not an aura effect", spellInfo->Id, static_cast(i), static_cast(i)); + if (procEntry.AttributesMask & PROC_ATTR_REQ_SPELLMOD) + { + bool found = false; + for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + { + if (!spellInfo->Effects[i].IsAura()) + continue; + + if (spellInfo->Effects[i].ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER || spellInfo->Effects[i].ApplyAuraName == SPELL_AURA_ADD_FLAT_MODIFIER) + { + found = true; + break; + } + } + + if (!found) + TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u has Attribute PROC_ATTR_REQ_SPELLMOD, but spell has no spell mods. Proc will not be triggered", spellInfo->Id); + } mSpellProcMap[spellInfo->Id] = procEntry; From 9f0f00257ee8fa2876d2382a615573dd515aaf23 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 01:38:48 +0100 Subject: [PATCH 101/178] Core/Scripts: fix nopch --- .../Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp index 433ae77c16..88576ff9bc 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp @@ -16,9 +16,14 @@ */ #include "ScriptMgr.h" -#include "ScriptedCreature.h" -#include "InstanceScript.h" +#include "AreaBoundary.h" #include "ahnkahet.h" +#include "Creature.h" +#include "GameObject.h" +#include "InstanceScript.h" +#include "Map.h" +#include "SpellInfo.h" +#include "SpellScript.h" DoorData const doorData[] = { From 6d90944f02dffed4a84e6446fe791d0b12b3faea Mon Sep 17 00:00:00 2001 From: Wilcalaf Date: Mon, 12 Feb 2018 22:38:08 +0200 Subject: [PATCH 102/178] Archaedas should properly start now when clicking on the altar. (#21401) --- src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index 48b8fbc30c..4920b7fb29 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -257,6 +257,8 @@ class instance_uldaman : public InstanceMapScript { archaedas->RemoveAura(SPELL_FREEZE_ANIM); archaedas->CastSpell(archaedas, SPELL_ARCHAEDAS_AWAKEN, false); + archaedas->SetFaction(FACTION_TITAN); + archaedas->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); whoWokeuiArchaedasGUID = target; } } From bbe9aa23b053914e54ff1609cafaff12512be7a5 Mon Sep 17 00:00:00 2001 From: ariel- Date: Mon, 12 Feb 2018 19:32:59 -0300 Subject: [PATCH 103/178] Core/Spells: fix Vampiric touch dispel effect inheriting damage done pct twice --- src/server/game/Spells/SpellMgr.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index dfb6dfaff2..2c474523b3 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3221,6 +3221,14 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_INITIAL_AGGRO; }); + // Vampiric Touch (dispel effect) + ApplySpellFix({ 64085 }, [](SpellInfo* spellInfo) + { + // copy from similar effect of Unstable Affliction (31117) + spellInfo->AttributesEx4 |= SPELL_ATTR4_FIXED_DAMAGE; + spellInfo->AttributesEx6 |= SPELL_ATTR6_LIMIT_PCT_DAMAGE_MODS; + }); + // Improved Devouring Plague ApplySpellFix({ 63675 }, [](SpellInfo* spellInfo) { From 7638a2c93068d7916de7dcf300f77fcdddf95b20 Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Tue, 13 Feb 2018 01:26:40 +0100 Subject: [PATCH 104/178] DB/Loot: Reference template 24064 corrections Closes #21385 --- .../world/3.3.5/2018_02_13_00_world_335.sql | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql new file mode 100644 index 0000000000..c991c6b155 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql @@ -0,0 +1,26 @@ +-- Remove unique items from reference table 24064 +DELETE FROM `reference_loot_template` WHERE `Entry`=24064 AND `Item` IN (911, 920, 1076, 1406, 1455, 1459, 1461, 1462, 2034, 2232, 3429); + +-- Add former items from reference table 24064 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (911, 920, 1076, 1406, 1455, 2034, 2232, 3429); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`) VALUES +(889, 911, 0.1, 0, "Splinter Fist Ogre - Ironwood Treebranch"), +(215, 920, 0.1, 0, "Defias Night Runner - Wicked Spiked Mace"), +(909, 920, 0.1, 0, "Defias Night Blade - Wicked Spiked Mace"), +(1706, 1076, 1, 0, "Defias Prisoner - Defias Renegade Ring"), +(1711, 1076, 1, 0, "Defias Convict - Defias Renegade Ring"), +(1715, 1076, 1, 0, "Defias Insurgent - Defias Renegade Ring"), +(1708, 1076, 1, 0, "Defias Inmate - Defias Renegade Ring"), +(1707, 1076, 1, 0, "Defias Captive - Defias Renegade Ring"), +(544, 1406, 0.1, 0, "Murloc Nightcrawler - Pearl-encrusted Spear"), +(435, 1455, 0.1, 0, "Blackrock Champion - Blackrock Champion's Axe"), +(4464, 1455, 0.1, 0, "Blackrock Gladiator - Blackrock Champion's Axe"), +(4809, 2034, 1, 0, "Twilight Acolyte - Scholarly Robes"), +(4811, 2034, 1, 0, "Twilight Aquamancer - Scholarly Robes"), +(4810, 2034, 1, 0, "Twilight Reaver - Scholarly Robes"), +(4814, 2034, 1, 0, "Twilight Elementalist - Scholarly Robes"), +(4813, 2034, 1, 0, "Twilight Shadowmage - Scholarly Robes"), +(4812, 2034, 1, 0, "Twilight Loreseeker - Scholarly Robes"), +(205, 2232, 0.1, 0, "Nightbane Dark Runner - Dark Runner Boots"), +(2427, 3429, 1, 0, "Jailor Eston - Guardsman Belt"), +(2428, 3429, 1, 0, "Jailor Marlgen - Guardsman Belt"); From 5b1703f82eeb49bbabe49e51c7f8edaa08cb7d2a Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 13 Feb 2018 01:28:07 +0100 Subject: [PATCH 105/178] SAI/Quest: Sabotage Closes #20881 --- sql/updates/world/3.3.5/2018_02_13_01_world.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_01_world.sql b/sql/updates/world/3.3.5/2018_02_13_01_world.sql new file mode 100644 index 0000000000..e2efbd4b0e --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_01_world.sql @@ -0,0 +1,6 @@ +-- +UPDATE `smart_scripts` SET `target_type`=23 WHERE `source_type`=9 AND `entryorguid`=2878000 AND `id` IN (6); +DELETE FROM `smart_scripts` WHERE `entryorguid`=2878000 AND `source_type`=9 AND `id` IN (7,8); +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 +(2878000, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 20, 190731, 15, 0, 0, 0, 0, 0, "Explosive Charges Bunny - On Script - despawn gob"), +(2878000, 9, 8, 0, 0, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 20, 190732, 15, 0, 0, 0, 0, 0, "Explosive Charges Bunny - On Script - despawn gob"); From 3cf55bd2c10b6e4bfd60175d3310f24ff523598e Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 13 Feb 2018 01:55:03 +0100 Subject: [PATCH 106/178] DB: Add a missing action_param to the previous commit Gobs always requires respawn time with the action 41, otherwise they will never respawn --- sql/updates/world/3.3.5/2018_02_13_02_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_02_world.sql b/sql/updates/world/3.3.5/2018_02_13_02_world.sql new file mode 100644 index 0000000000..713a4d5d89 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_02_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `action_param1`=180 WHERE `source_type`=9 AND `entryorguid`=2878000 AND `id` IN (7); From bdfcfacf713f3ec0775b794219aff6f55092b304 Mon Sep 17 00:00:00 2001 From: tkrokli Date: Tue, 13 Feb 2018 07:58:49 +0100 Subject: [PATCH 107/178] DB/Loot: add missing column name to 2018_02_13_00_world_335.sql Error message upon loading the original file into DB: - ERROR 1136 (21S01) at line 6: Column count doesn't match value count at row 1 Closes #21407 --- sql/updates/world/3.3.5/2018_02_13_00_world_335.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql index c991c6b155..828f0c7083 100644 --- a/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql +++ b/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql @@ -3,7 +3,7 @@ DELETE FROM `reference_loot_template` WHERE `Entry`=24064 AND `Item` IN (911, 92 -- Add former items from reference table 24064 to their proper NPCs DELETE FROM `creature_loot_template` WHERE `Item` IN (911, 920, 1076, 1406, 1455, 2034, 2232, 3429); -INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`) VALUES +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES (889, 911, 0.1, 0, "Splinter Fist Ogre - Ironwood Treebranch"), (215, 920, 0.1, 0, "Defias Night Runner - Wicked Spiked Mace"), (909, 920, 0.1, 0, "Defias Night Blade - Wicked Spiked Mace"), From 9ce54f06fd69ba14ea22b6b18f790f0a5cb171b2 Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 13 Feb 2018 16:15:27 +0100 Subject: [PATCH 108/178] DB/SAI: Fix wrong event type for npcs summoned by Flight Master Closes #21244 --- sql/updates/world/3.3.5/2018_02_13_03_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_03_world.sql b/sql/updates/world/3.3.5/2018_02_13_03_world.sql new file mode 100644 index 0000000000..32c53176b5 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_03_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `event_type`=1 WHERE `entryorguid`IN (9297,9521, 9526,9527) AND `source_type`=0 AND `id`=1; From 74b7ac101ab140db353525adaa4ae32b0c311611 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 02:08:56 +0100 Subject: [PATCH 109/178] =?UTF-8?q?Scripts/SmartAI:=20SMART=5FTARGET=5FINV?= =?UTF-8?q?OKER=20cleanup=20step=201.=20The=20core=20will=20n=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ow log errors on start-up if SMART_TARGET_INVOKER abuse is found, but will continue to load the scripts as deprecated for now. Note that a lot of these scripts may either not currently work, not work reliably, or may be prone to breaking unexpectedly when core internals change. SMART_TARGET_INVOKER is undefined behavior on any event that doesn't directly specify its invoker. (We are considering options for allowing INVOKER to make sense in timed action lists in a reliable fashion, so they are exempted at this time.) --- .../world/3.3.5/2018_02_13_04_world.sql | 2 + src/server/game/AI/SmartScripts/SmartAI.cpp | 5 +- .../game/AI/SmartScripts/SmartScript.cpp | 2 +- .../game/AI/SmartScripts/SmartScriptMgr.cpp | 61 ++++++++++++++++++- .../game/AI/SmartScripts/SmartScriptMgr.h | 4 +- 5 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 sql/updates/world/3.3.5/2018_02_13_04_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_04_world.sql b/sql/updates/world/3.3.5/2018_02_13_04_world.sql new file mode 100644 index 0000000000..2a99ff63b5 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_04_world.sql @@ -0,0 +1,2 @@ +-- SMART_ACTION_FLEE_FOR_ASSIST (25) does not need a target +UPDATE `smart_scripts` SET `target_type`=0 WHERE `action_type`=25; diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 98105373c2..530cfe043e 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -891,7 +891,8 @@ void SmartAI::StopFollow(bool complete) if (!complete) return; - if (Player* player = ObjectAccessor::GetPlayer(*me, mFollowGuid)) + Player* player = ObjectAccessor::GetPlayer(*me, mFollowGuid); + if (player) { if (!mFollowCreditType) player->RewardPlayerAndGroupAtEvent(mFollowCredit, me); @@ -901,7 +902,7 @@ void SmartAI::StopFollow(bool complete) SetDespawnTime(5000); StartDespawn(); - GetScript()->ProcessEventsFor(SMART_EVENT_FOLLOW_COMPLETED); + GetScript()->ProcessEventsFor(SMART_EVENT_FOLLOW_COMPLETED, player); } void SmartAI::SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index bc53b0dcf9..048f619b83 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3330,7 +3330,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui uint32 count = me->EnsureVictim()->GetAuraCount(e.event.aura.spell); if (count < e.event.aura.count) return; - ProcessTimedAction(e, e.event.aura.repeatMin, e.event.aura.repeatMax); + ProcessTimedAction(e, e.event.aura.repeatMin, e.event.aura.repeatMax, me->GetVictim()); break; } case SMART_EVENT_CHARMED: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 988c12403f..f0f5f9d5c8 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -380,6 +380,54 @@ void SmartAIMgr::LoadSmartAIFromDB() UnLoadHelperStores(); } +/*static*/ bool SmartAIMgr::EventHasInvoker(SMART_EVENT event) +{ + switch (event) + { // white list of events that actually have an invoker passed to them + case SMART_EVENT_AGGRO: + case SMART_EVENT_DEATH: + case SMART_EVENT_KILL: + case SMART_EVENT_SUMMONED_UNIT: + case SMART_EVENT_SPELLHIT: + case SMART_EVENT_SPELLHIT_TARGET: + case SMART_EVENT_DAMAGED: + case SMART_EVENT_RECEIVE_HEAL: + case SMART_EVENT_RECEIVE_EMOTE: + case SMART_EVENT_JUST_SUMMONED: + case SMART_EVENT_DAMAGED_TARGET: + case SMART_EVENT_SUMMON_DESPAWNED: + case SMART_EVENT_PASSENGER_BOARDED: + case SMART_EVENT_PASSENGER_REMOVED: + case SMART_EVENT_GOSSIP_HELLO: + case SMART_EVENT_GOSSIP_SELECT: + case SMART_EVENT_ACCEPTED_QUEST: + case SMART_EVENT_REWARD_QUEST: + case SMART_EVENT_FOLLOW_COMPLETED: + case SMART_EVENT_ON_SPELLCLICK: + case SMART_EVENT_GO_LOOT_STATE_CHANGED: + case SMART_EVENT_AREATRIGGER_ONTRIGGER: + case SMART_EVENT_IC_LOS: + case SMART_EVENT_OOC_LOS: + case SMART_EVENT_DISTANCE_CREATURE: + case SMART_EVENT_FRIENDLY_HEALTH: + case SMART_EVENT_FRIENDLY_HEALTH_PCT: + case SMART_EVENT_FRIENDLY_IS_CC: + case SMART_EVENT_FRIENDLY_MISSING_BUFF: + case SMART_EVENT_ACTION_DONE: + case SMART_EVENT_TARGET_HEALTH_PCT: + case SMART_EVENT_TARGET_MANA_PCT: + case SMART_EVENT_RANGE: + case SMART_EVENT_VICTIM_CASTING: + case SMART_EVENT_TARGET_BUFFED: + case SMART_EVENT_IS_BEHIND_TARGET: + case SMART_EVENT_INSTANCE_PLAYER_ENTER: + case SMART_EVENT_TRANSPORT_ADDCREATURE: + return true; + default: + return false; + } +} + bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) { if (std::abs(e.target.o) > 2 * float(M_PI)) @@ -433,6 +481,16 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) } break; } + case SMART_TARGET_ACTION_INVOKER: + case SMART_TARGET_ACTION_INVOKER_VEHICLE: + case SMART_TARGET_INVOKER_PARTY: + if (e.GetScriptType() != SMART_SCRIPT_TYPE_TIMED_ACTIONLIST && e.GetEventType() != SMART_EVENT_LINK && !EventHasInvoker(e.event.type)) + { + TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u has invoker target, but action does not provide any invoker!", e.entryOrGuid, e.GetScriptType(), e.GetEventType(), e.GetActionType()); + // allow this to load for now + // return false; + } + break; case SMART_TARGET_PLAYER_RANGE: case SMART_TARGET_SELF: case SMART_TARGET_VICTIM: @@ -440,11 +498,8 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder const& e) case SMART_TARGET_HOSTILE_LAST_AGGRO: case SMART_TARGET_HOSTILE_RANDOM: case SMART_TARGET_HOSTILE_RANDOM_NOT_TOP: - case SMART_TARGET_ACTION_INVOKER: - case SMART_TARGET_INVOKER_PARTY: case SMART_TARGET_POSITION: case SMART_TARGET_NONE: - case SMART_TARGET_ACTION_INVOKER_VEHICLE: case SMART_TARGET_OWNER_OR_SUMMONER: case SMART_TARGET_THREAT_LIST: case SMART_TARGET_CLOSEST_GAMEOBJECT: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 756449a72a..bc9e5f1705 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1188,7 +1188,7 @@ enum SMARTAI_TEMPLATE enum SMARTAI_TARGETS { - SMART_TARGET_NONE = 0, // NONE, defaulting to invoket + SMART_TARGET_NONE = 0, // NONE SMART_TARGET_SELF = 1, // Self cast SMART_TARGET_VICTIM = 2, // Our current target (ie: highest aggro) SMART_TARGET_HOSTILE_SECOND_AGGRO = 3, // Second highest aggro, maxdist, playerOnly, powerType + 1 @@ -1673,6 +1673,8 @@ class TC_GAME_API SmartAIMgr //event stores SmartAIEventMap mEventMap[SMART_SCRIPT_TYPE_MAX]; + static bool EventHasInvoker(SMART_EVENT event); + bool IsEventValid(SmartScriptHolder& e); bool IsTargetValid(SmartScriptHolder const& e); From 3e055551c60768f91c0baa27efc42554f50c29f1 Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 13 Feb 2018 17:08:50 +0100 Subject: [PATCH 110/178] DB/SAI: Runed Stone Giant --- sql/updates/world/3.3.5/2018_02_13_05_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_05_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_05_world.sql b/sql/updates/world/3.3.5/2018_02_13_05_world.sql new file mode 100644 index 0000000000..403eb6212f --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_05_world.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `smart_scripts` WHERE `entryorguid` = 24329 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 +(24329, 0, 0, 0, 8, 0, 100, 512, 43666, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Runed Stone Giant - On spell hit - Despawn"); From a3a3b763540b92beab40856b0296b90f540fffa4 Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 13 Feb 2018 17:25:35 +0100 Subject: [PATCH 111/178] DB/Quest: Rescue from Town Square Closes #20102 --- sql/updates/world/3.3.5/2018_02_13_06_world.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_06_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_06_world.sql b/sql/updates/world/3.3.5/2018_02_13_06_world.sql new file mode 100644 index 0000000000..ace7471404 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_06_world.sql @@ -0,0 +1,3 @@ +-- +UPDATE `smart_scripts` SET `target_type`=7 WHERE `entryorguid` IN (27370) AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN (2735900) AND `source_type`=9 AND `id`=4; From 140cdb4185f01d056bc5ee3a03be8231b1071f2c Mon Sep 17 00:00:00 2001 From: Killyana Date: Tue, 13 Feb 2018 17:29:31 +0100 Subject: [PATCH 112/178] DB/Condition: Placing Beacon Torch Closes #21244 --- sql/updates/world/3.3.5/2018_02_13_07_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_13_07_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_07_world.sql b/sql/updates/world/3.3.5/2018_02_13_07_world.sql new file mode 100644 index 0000000000..1afb5c37cf --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_13_07_world.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `conditions` WHERE `SourceEntry` = 17016 AND `SourceTypeOrReferenceId`=13; From 0aacb75d738261af6ab2d2ca0e9e73e6175aa1c6 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 02:21:09 +0100 Subject: [PATCH 113/178] Scripts/TheBarrens: Fix "The Escape" (863) --- .../scripts/Kalimdor/zone_the_barrens.cpp | 82 ++++++++----------- 1 file changed, 36 insertions(+), 46 deletions(-) diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index d108f8859f..bc134faeb0 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -535,25 +535,13 @@ public: IsPostEvent = false; PostEventTimer = 1000; PostEventCount = 0; + me->SetReactState(REACT_DEFENSIVE); } bool IsPostEvent; uint32 PostEventTimer; uint32 PostEventCount; - void Reset() override - { - if (!HasEscortState(STATE_ESCORT_ESCORTING)) - { - if (me->GetStandState() == UNIT_STAND_STATE_DEAD) - me->SetStandState(UNIT_STAND_STATE_STAND); - - IsPostEvent = false; - PostEventTimer = 1000; - PostEventCount = 0; - } - } - void WaypointReached(uint32 waypointId) override { switch (waypointId) @@ -607,43 +595,44 @@ public: void UpdateEscortAI(uint32 Diff) override { - if (!UpdateVictim()) + if (UpdateVictim()) { - if (IsPostEvent) - { - if (PostEventTimer <= Diff) - { - switch (PostEventCount) - { - case 0: - Talk(SAY_PROGRESS_2); - break; - case 1: - Talk(SAY_PROGRESS_3); - break; - case 2: - Talk(SAY_END); - break; - case 3: - if (Player* player = GetPlayerForEscort()) - { - player->GroupEventHappens(QUEST_ESCAPE, me); - me->SummonCreature(NPC_PILOT_WIZZ, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 180000); - } - break; - } - - ++PostEventCount; - PostEventTimer = 5000; - } - else - PostEventTimer -= Diff; - } - + DoMeleeAttackIfReady(); return; } - DoMeleeAttackIfReady(); + if (!IsPostEvent) + return; + + if (PostEventTimer > Diff) + { + PostEventTimer -= Diff; + return; + } + + switch (PostEventCount) + { + case 0: + Talk(SAY_PROGRESS_2); + break; + case 1: + Talk(SAY_PROGRESS_3); + break; + case 2: + Talk(SAY_END); + break; + case 3: + if (Player* player = GetPlayerForEscort()) + { + player->GroupEventHappens(QUEST_ESCAPE, me); + me->DespawnOrUnsummon(Minutes(3)); + me->SummonCreature(NPC_PILOT_WIZZ, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 180000); + } + break; + } + + ++PostEventCount; + PostEventTimer = 5000; } void QuestAccept(Player* player, Quest const* quest) override @@ -652,6 +641,7 @@ public: { me->SetFaction(FACTION_RATCHET); Talk(SAY_START); + SetDespawnAtEnd(false); Start(true, false, player->GetGUID()); } } From 79d9bb1ad546ad6cd125743cece4b5ec22e0f23b Mon Sep 17 00:00:00 2001 From: Killyana Date: Wed, 14 Feb 2018 01:03:03 +0100 Subject: [PATCH 114/178] DB: Fixing a typo from a previous commit Ref https://github.com/TrinityCore/TrinityCore/commit/9f59fb54fc16e06f81a1e99df4076c939bdb3339 --- sql/updates/world/3.3.5/2018_02_14_00_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_14_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_00_world.sql b/sql/updates/world/3.3.5/2018_02_14_00_world.sql new file mode 100644 index 0000000000..6139607d98 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_14_00_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `action_param1`=0, `action_param2`=180 WHERE `source_type`=9 AND `entryorguid`=2878000 AND `id` IN (7); From 0858a2a8f9ad8b467cf827e45fbeb7662f60f69c Mon Sep 17 00:00:00 2001 From: Killyana Date: Wed, 14 Feb 2018 18:34:42 +0100 Subject: [PATCH 115/178] DB/SAI: Update SAI that was using threat list target on aggro target_type 2, 3, 4, 5, 6 musn't be used with the event 4 --- sql/updates/world/3.3.5/2018_02_14_08_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_14_08_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_08_world.sql b/sql/updates/world/3.3.5/2018_02_14_08_world.sql new file mode 100644 index 0000000000..f5d3bf5b3a --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_14_08_world.sql @@ -0,0 +1,4 @@ +-- +UPDATE `smart_scripts` SET `target_type`=7 WHERE `event_type` IN (4) AND `target_type`=2; +UPDATE `smart_scripts` SET `target_type`=16 WHERE `event_type` IN (4) AND `target_type`=5; +UPDATE `smart_scripts` SET `event_type`=0 WHERE `entryorguid`=18701 AND `source_type`=0 AND `id`=1; From 3d0535ba38e5753055e47dfbb8e322b12742faf6 Mon Sep 17 00:00:00 2001 From: Killyana Date: Wed, 14 Feb 2018 19:22:45 +0100 Subject: [PATCH 116/178] DB: Fix some DB errors related to wrong SAI target --- sql/updates/world/3.3.5/2018_02_14_01_world.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_14_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_01_world.sql b/sql/updates/world/3.3.5/2018_02_14_01_world.sql new file mode 100644 index 0000000000..097e645368 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_14_01_world.sql @@ -0,0 +1,5 @@ +-- +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=32495 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=20405 AND `source_type`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=32357 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=2 WHERE `event_type`=0 AND `target_type`=7 AND `source_type`=0; From 12b9563b4e18592a5f3dd659a52d0e3ec9f8288f Mon Sep 17 00:00:00 2001 From: tkrokli Date: Wed, 14 Feb 2018 19:51:00 +0100 Subject: [PATCH 117/178] DB/updates: files renamed in chronological order These files were wrongly named and would be read in the wrong order when applied on local DB. --- .../3.3.5/{2018_02_14_08_world.sql => 2018_02_14_02_world.sql} | 0 .../3.3.5/{2018_02_14_01_world.sql => 2018_02_14_03_world.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename sql/updates/world/3.3.5/{2018_02_14_08_world.sql => 2018_02_14_02_world.sql} (100%) rename sql/updates/world/3.3.5/{2018_02_14_01_world.sql => 2018_02_14_03_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_02_14_08_world.sql b/sql/updates/world/3.3.5/2018_02_14_02_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_14_08_world.sql rename to sql/updates/world/3.3.5/2018_02_14_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_01_world.sql b/sql/updates/world/3.3.5/2018_02_14_03_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_14_01_world.sql rename to sql/updates/world/3.3.5/2018_02_14_03_world.sql From 4721d9814bb940bce24c5eae351eaffdd86ed802 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 03:26:36 +0100 Subject: [PATCH 118/178] Core/Scripts: Fixed some delayed enrage --- .../TheBlackMorass/boss_chrono_lord_deja.cpp | 4 ++-- .../RubySanctum/boss_baltharus_the_warborn.cpp | 4 ++-- .../RubySanctum/boss_general_zarithrian.cpp | 4 ++-- .../ChamberOfAspects/RubySanctum/boss_halion.cpp | 5 ++++- .../Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp | 4 ++-- .../Outland/BlackTemple/boss_gurtogg_bloodboil.cpp | 4 ++-- .../scripts/Outland/BlackTemple/boss_illidari_council.cpp | 4 ++-- .../Outland/BlackTemple/boss_reliquary_of_souls.cpp | 4 ++-- .../scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp | 4 ++-- .../HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp | 8 ++++---- 10 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp index a967f15445..46f60b4747 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp @@ -106,11 +106,11 @@ public: if (!UpdateVictim()) return; + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index 79d40b29f2..0c6fe7ba38 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -182,11 +182,11 @@ class boss_baltharus_the_warborn : public CreatureScript if (!events.IsInPhase(PHASE_INTRO)) me->SetHealth(instance->GetData(DATA_BALTHARUS_SHARED_HEALTH)); + events.Update(diff); + if (!events.IsInPhase(PHASE_INTRO) && me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp index 4559cf170f..1c3541e110 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp @@ -123,11 +123,11 @@ class boss_general_zarithrian : public CreatureScript if (!UpdateVictim()) return; + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index e30194e204..d8e00e49ac 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -311,11 +311,14 @@ class boss_halion : public CreatureScript if (events.IsInPhase(PHASE_TWO)) return; - if (!UpdateVictim() || me->HasUnitState(UNIT_STATE_CASTING)) + if (!UpdateVictim()) return; events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp index ed16b6728a..2b452ff3cb 100644 --- a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp +++ b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp @@ -79,11 +79,11 @@ public: if (!UpdateVictim()) return; + _events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - _events.Update(diff); - while (uint32 eventId = _events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp index dad4878247..2fa63fa5ff 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp @@ -180,11 +180,11 @@ public: if (!UpdateVictim()) return; + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp index da5a92fcff..85f2efca14 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp @@ -206,11 +206,11 @@ public: if (!UpdateVictim()) return; + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index 7dcdc907f1..252270eeaa 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -262,11 +262,11 @@ public: if (!UpdateVictim()) return; + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 9d6c27144c..4a40496fec 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -172,11 +172,11 @@ public: if (!events.IsInPhase(PHASE_INTRO) && !UpdateVictim()) return; + events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index d6a6ab3888..f4dd961f19 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -218,11 +218,14 @@ class boss_magtheridon : public CreatureScript void UpdateAI(uint32 diff) override { - if (me->HasUnitState(UNIT_STATE_CASTING)) + if (!events.IsInPhase(PHASE_BANISH) && !UpdateVictim()) return; events.Update(diff); + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) @@ -291,9 +294,6 @@ class boss_magtheridon : public CreatureScript return; } - if (!UpdateVictim()) - return; - DoMeleeAttackIfReady(); } From 66334459a61813ac1858c28b189cf93875d1540c Mon Sep 17 00:00:00 2001 From: ariel- Date: Wed, 14 Feb 2018 23:10:41 -0300 Subject: [PATCH 119/178] Core/Spells: fixed server being too overzealous with autoshot - Interrupting it when casting another spell and switching targets Ref #21390 --- src/server/game/Spells/Spell.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 3556220abf..10e3772da7 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2989,7 +2989,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered m_caster->m_Events.AddEvent(Event, m_caster->m_Events.CalculateTime(1)); //Prevent casting at cast another spell (ServerSide check) - if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->IsNonMeleeSpellCast(false, true, true) && m_cast_count) + if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->IsNonMeleeSpellCast(false, true, true, m_spellInfo->Id == 75) && m_cast_count) { SendCastResult(SPELL_FAILED_SPELL_IN_PROGRESS); finish(false); From 66a01f2d69b4cb91da0a82fe8d37015c21a928de Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 03:30:18 +0100 Subject: [PATCH 120/178] Core/Handlers: fix bogus check that skipped CMSG_CAST_SPELL packet under certain conditions, missing a target change --- src/server/game/Handlers/SpellHandler.cpp | 24 ++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 003fae7891..23e202579d 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -403,15 +403,6 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) // Check possible spell cast overrides spellInfo = caster->GetCastSpellInfo(spellInfo); - // Client is resending autoshot cast opcode when other spell is cast during shoot rotation - // Skip it to prevent "interrupt" message - if (spellInfo->IsAutoRepeatRangedSpell() && caster->GetCurrentSpell(CURRENT_AUTOREPEAT_SPELL) - && caster->GetCurrentSpell(CURRENT_AUTOREPEAT_SPELL)->m_spellInfo == spellInfo) - { - recvPacket.rfinish(); - return; - } - // can't use our own spells when we're in possession of another unit, if (_player->isPossessing()) { @@ -424,6 +415,21 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) targets.Read(recvPacket, caster); HandleClientCastFlags(recvPacket, castFlags, targets); + // Client is resending autoshot cast opcode when other spell is cast during shoot rotation + // Skip it to prevent "interrupt" message + // Also check targets! target may have changed and we need to interrupt current spell + if (spellInfo->IsAutoRepeatRangedSpell()) + { + if (Spell* spell = caster->GetCurrentSpell(CURRENT_AUTOREPEAT_SPELL)) + { + if (spell->m_spellInfo == spellInfo && spell->m_targets.GetUnitTargetGUID() == targets.GetUnitTargetGUID()) + { + recvPacket.rfinish(); + return; + } + } + } + // auto-selection buff level base at target level (in spellInfo) if (targets.GetUnitTarget()) { From 1f7391a6b16fed840eb187e43976553c34fb5310 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 03:44:27 +0100 Subject: [PATCH 121/178] Scripts/Commands: add AI/ScriptName to .gobject info --- src/server/game/Miscellaneous/Language.h | 2 +- src/server/scripts/Commands/cs_gobject.cpp | 2 ++ src/server/scripts/Commands/cs_npc.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 43d34d220f..d4440de644 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1000,7 +1000,7 @@ enum TrinityStrings LANG_GOINFO_LOOTID = 5028, LANG_COMMAND_LOOKUP_MAX_RESULTS = 5029, LANG_UNAUTHORIZED = 5030, - LANG_NPCINFO_AIINFO = 5031, + LANG_OBJECTINFO_AIINFO = 5031, LANG_COMMAND_NO_BATTLEGROUND_FOUND = 5032, LANG_COMMAND_NO_ACHIEVEMENT_CRITERIA_FOUND = 5033, LANG_COMMAND_NO_OUTDOOR_PVP_FORUND = 5034, diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index aa3d71eacc..3ad0901731 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -613,6 +613,8 @@ public: if (GameObjectTemplateAddon const* addon = sObjectMgr->GetGameObjectTemplateAddon(entry)) handler->PSendSysMessage(LANG_GOINFO_ADDON, addon->faction, addon->flags); + handler->PSendSysMessage(LANG_OBJECTINFO_AIINFO, gameObjectInfo->AIName.c_str(), sObjectMgr->GetScriptName(gameObjectInfo->ScriptId).c_str()); + if (GameObjectDisplayInfoEntry const* modelInfo = sGameObjectDisplayInfoStore.LookupEntry(displayId)) handler->PSendSysMessage(LANG_GOINFO_MODEL, modelInfo->maxX, modelInfo->maxY, modelInfo->maxZ, modelInfo->minX, modelInfo->minY, modelInfo->minZ); diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index febfea8855..250d6c798c 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -734,7 +734,7 @@ public: handler->PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor()); handler->PSendSysMessage(LANG_NPCINFO_POSITION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); - handler->PSendSysMessage(LANG_NPCINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str()); + handler->PSendSysMessage(LANG_OBJECTINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str()); handler->PSendSysMessage(LANG_NPCINFO_FLAGS_EXTRA, cInfo->flags_extra); for (uint8 i = 0; i < FLAGS_EXTRA_COUNT; ++i) if (cInfo->flags_extra & flagsExtra[i].Value) From 25675405b20134475668d014a4b897b0e0ba4f32 Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 15 Feb 2018 13:53:41 -0300 Subject: [PATCH 122/178] Core/Auras: skip target map update for one world tick if owner is not yet in world Closes #21426 --- src/server/game/Spells/Auras/SpellAuras.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 0ac8777176..71d846db4b 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -496,6 +496,10 @@ void Aura::UpdateTargetMap(Unit* caster, bool apply) m_updateTargetMapInterval = UPDATE_TARGET_MAP_INTERVAL; + // skip update if owner is not in world! + if (!GetOwner()->IsInWorld()) + return; + // fill up to date target list // target, effMask std::unordered_map targets; From 097c6b97fc32faaa5a0c4e066bd20928c974fae3 Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 15 Feb 2018 19:08:53 +0100 Subject: [PATCH 123/178] DB/SAI: Fix some DB errors related to the event "on text over" used with "invoker target" --- sql/updates/world/3.3.5/2018_02_15_01_world.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_15_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_01_world.sql b/sql/updates/world/3.3.5/2018_02_15_01_world.sql new file mode 100644 index 0000000000..fa60c65725 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_15_01_world.sql @@ -0,0 +1,11 @@ +-- +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `event_type`=52 AND `source_type`=0 AND `action_type`=11 AND `action_param1`=63010 AND `target_type`=7; +UPDATE smart_scripts SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN (3328500, 3374500) AND `source_type`=9 AND `id`=10; +DELETE FROM `smart_scripts` WHERE `entryorguid` = 4488 AND `source_type` = 0 AND id IN (20,21,22,23); +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 +(4488,0, 20, 0, 62,0,100,0, 4764, 0,0,0, 64, 1, 0,0,0,0,0, 7, 0, 0,0,0,0,0,0,'Parqual Fintallas - On Gossip Option 0 Selected - Store target'), +(4488,0, 21, 0, 62,0,100,0, 4764, 1,0,0, 64, 1, 0,0,0,0,0, 7, 0, 0,0,0,0,0,0,'Parqual Fintallas - On Gossip Option 1 Selected - Store target'), +(4488,0, 22, 0, 62,0,100,0, 4764, 2,0,0, 64, 1, 0,0,0,0,0, 7, 0, 0,0,0,0,0,0,'Parqual Fintallas - On Gossip Option 2 Selected - Store target'), +(4488,0, 23, 0, 62,0,100,0, 4764, 3,0,0, 64, 1, 0,0,0,0,0, 7, 0, 0,0,0,0,0,0,'Parqual Fintallas - On Gossip Option 3 Selected - Store target'); +UPDATE smart_scripts SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN (4488) AND `source_type`=0 AND `id`IN (3,4,9,13); +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (18417) AND `source_type`=0 AND `id`IN (6); From f65dc90ba75b31845316b409b6396c35914e0009 Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 15 Feb 2018 20:32:23 +0100 Subject: [PATCH 124/178] DB/SAI: Fix some DB errors related to the event "health pct" used with "invoker target" --- sql/updates/world/3.3.5/2018_02_15_02_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_15_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_02_world.sql b/sql/updates/world/3.3.5/2018_02_15_02_world.sql new file mode 100644 index 0000000000..afea607109 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_15_02_world.sql @@ -0,0 +1,4 @@ +-- +UPDATE `smart_scripts` SET `target_type`=1 WHERE `action_type`=39; +UPDATE `smart_scripts` SET `target_type`=2 WHERE `target_type`=7 AND `event_type`=2 AND `event_flags`=1 AND `event_param2`=30 AND `action_type`=1; +UPDATE `smart_scripts` SET `target_type`=24 WHERE `target_type`=7 AND `event_type`=2 AND `action_type` IN (33,85); From 0b4d30b423b95fc46275e378a6e5f765531d7396 Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 15 Feb 2018 22:02:44 +0100 Subject: [PATCH 125/178] DB: Fix mode DB errors --- sql/updates/world/3.3.5/2018_02_15_03_world.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_15_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_03_world.sql b/sql/updates/world/3.3.5/2018_02_15_03_world.sql new file mode 100644 index 0000000000..72c8613c57 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_15_03_world.sql @@ -0,0 +1,11 @@ +-- +UPDATE `smart_scripts` SET `target_type`=24 WHERE `target_type`=16 AND `event_type`=2 AND `action_type` IN (33,15,11); +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=13197 AND `source_type`=0 AND `id`=11; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=16977 AND `source_type`=0 AND `id`=14; +UPDATE `smart_scripts` SET `target_type`=18, `target_param1`=25 WHERE `target_type`=7 AND `event_type`=7 AND `action_type` IN (6); +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=25773 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=19480 AND `source_type`=0 AND `id`=2; +UPDATE `smart_scripts` SET `event_type`=4 WHERE `entryorguid`=18400 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=28444 AND `source_type`=0 AND `id`=1; +UPDATE `smart_scripts` SET `event_type`=10, `event_param1`=1, `event_param1`=20 WHERE `entryorguid`=19283 AND `source_type`=0 AND `id`=3; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid`=27202 AND `source_type`=0 AND `id`=6; From 1e3c9c0ade92734bb8fc3a8e3cf1a05fa906e656 Mon Sep 17 00:00:00 2001 From: Killyana Date: Thu, 15 Feb 2018 22:43:35 +0100 Subject: [PATCH 126/178] DB: Fix last part of DB errors --- sql/updates/world/3.3.5/2018_02_15_04_world.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_15_04_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_04_world.sql b/sql/updates/world/3.3.5/2018_02_15_04_world.sql new file mode 100644 index 0000000000..262e0c7b03 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_15_04_world.sql @@ -0,0 +1,11 @@ +-- +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (25321,25322) AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (30154) AND `source_type`=0 AND `id`=4; +UPDATE `smart_scripts` SET `target_type`=23 WHERE `entryorguid` IN (25401) AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (22423) AND `source_type`=0 AND `id`=9; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (14354) AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (13197) AND `source_type`=0 AND `id`=9; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (16769) AND `source_type`=0 AND `id`=9; +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (16769) AND `source_type`=0 AND `id`=4; +UPDATE `smart_scripts` SET `target_type`=21, target_param1=30 WHERE `entryorguid` IN (15420) AND `source_type`=0 AND `id`=3; +UPDATE `smart_scripts` SET `target_type`=21, target_param1=30 WHERE `entryorguid` IN (3584) AND `source_type`=0 AND `id`=2; From ade258873e9792edf7d7fcb3a7dfd8a2f54d2bec Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 03:49:47 +0100 Subject: [PATCH 127/178] Scripts/TotC: Reduce Twin Val'kyr berserk timer from 10 minutes to 8 minutes on normal mode (match DBM). --- .../CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index a83e26ba74..536160a34d 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -276,7 +276,7 @@ struct boss_twin_baseAI : public BossAI DoCast(me, SurgeSpellId); events.ScheduleEvent(EVENT_TWIN_SPIKE, 20 * IN_MILLISECONDS); - events.ScheduleEvent(EVENT_BERSERK, IsHeroic() ? 6 * MINUTE*IN_MILLISECONDS : 10 * MINUTE*IN_MILLISECONDS); + events.ScheduleEvent(EVENT_BERSERK, IsHeroic() ? 6 * MINUTE*IN_MILLISECONDS : 8 * MINUTE*IN_MILLISECONDS); if (IsHeroic()) events.ScheduleEvent(EVENT_TOUCH, urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS)); } From ca5e3445b89f6f0db59dade0d0b4df9183a9ed9c Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 04:05:47 +0100 Subject: [PATCH 128/178] Core/SAI: Add an action_param3 to "summon gob" to control when the object will despawn 0 - For despawn when creature dies or time runs out 1 - For despawn after time --- src/server/game/AI/SmartScripts/SmartScript.cpp | 4 ++-- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 + src/server/game/Entities/Object/Object.cpp | 4 ++-- src/server/game/Entities/Object/Object.h | 8 +++++++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 048f619b83..d7c0e07910 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1333,7 +1333,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u // continue; Position pos = (*itr)->GetPositionWithOffset(Position(e.target.x, e.target.y, e.target.z, e.target.o)); - GetBaseObject()->SummonGameObject(e.action.summonGO.entry, pos, G3D::Quat(), e.action.summonGO.despawnTime); + GetBaseObject()->SummonGameObject(e.action.summonGO.entry, pos, G3D::Quat(), e.action.summonGO.despawnTime, GOSummonType(e.action.summonGO.summonType)); } delete targets; @@ -1342,7 +1342,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (e.GetTargetType() != SMART_TARGET_POSITION) break; - GetBaseObject()->SummonGameObject(e.action.summonGO.entry, Position(e.target.x, e.target.y, e.target.z, e.target.o), G3D::Quat(), e.action.summonGO.despawnTime); + GetBaseObject()->SummonGameObject(e.action.summonGO.entry, Position(e.target.x, e.target.y, e.target.z, e.target.o), G3D::Quat(), e.action.summonGO.despawnTime, GOSummonType(e.action.summonGO.summonType)); break; } case SMART_ACTION_KILL_UNIT: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index bc9e5f1705..a00f2bfbd6 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -838,6 +838,7 @@ struct SmartAction { uint32 entry; uint32 despawnTime; + uint32 summonType; } summonGO; struct diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 66a9a642fb..59e17e4a4a 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2176,7 +2176,7 @@ TempSummon* WorldObject::SummonCreature(uint32 id, float x, float y, float z, fl return SummonCreature(id, pos, spwtype, despwtime, 0); } -GameObject* WorldObject::SummonGameObject(uint32 entry, Position const& pos, G3D::Quat const& rot, uint32 respawnTime) +GameObject* WorldObject::SummonGameObject(uint32 entry, Position const& pos, G3D::Quat const& rot, uint32 respawnTime, GOSummonType summonType) { if (!IsInWorld()) return nullptr; @@ -2199,7 +2199,7 @@ GameObject* WorldObject::SummonGameObject(uint32 entry, Position const& pos, G3D go->CopyPhaseFrom(this); go->SetRespawnTime(respawnTime); - if (GetTypeId() == TYPEID_PLAYER || GetTypeId() == TYPEID_UNIT) //not sure how to handle this + if (GetTypeId() == TYPEID_PLAYER || (GetTypeId() == TYPEID_UNIT && summonType == GO_SUMMON_TIMED_OR_CORPSE_DESPAWN)) //not sure how to handle this ToUnit()->AddGameObject(go); else go->SetSpawnedByDefault(false); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index a2e8e276d4..142e2689b8 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -446,6 +446,12 @@ class TC_GAME_API MapObject } }; +enum GOSummonType +{ + GO_SUMMON_TIMED_OR_CORPSE_DESPAWN = 0, // despawns after a specified time OR when the summoner dies + GO_SUMMON_TIMED_DESPAWN = 1 // despawns after a specified time +}; + class TC_GAME_API WorldObject : public Object, public WorldLocation { protected: @@ -584,7 +590,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation TempSummon* SummonCreature(uint32 id, Position const& pos, TempSummonType spwtype = TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime = 0, uint32 vehId = 0) const; TempSummon* SummonCreature(uint32 id, float x, float y, float z, float ang = 0, TempSummonType spwtype = TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime = 0) const; - GameObject* SummonGameObject(uint32 entry, Position const& pos, G3D::Quat const& rot, uint32 respawnTime /* s */); + GameObject* SummonGameObject(uint32 entry, Position const& pos, G3D::Quat const& rot, uint32 respawnTime /* s */, GOSummonType summonType = GO_SUMMON_TIMED_OR_CORPSE_DESPAWN); GameObject* SummonGameObject(uint32 entry, float x, float y, float z, float ang, G3D::Quat const& rot, uint32 respawnTime /* s */); Creature* SummonTrigger(float x, float y, float z, float ang, uint32 dur, CreatureAI* (*GetAI)(Creature*) = NULL); void SummonCreatureGroup(uint8 group, std::list* list = NULL); From 0b8101ba2f193200b6d4ee4642efa5e8f27dbae5 Mon Sep 17 00:00:00 2001 From: Killyana Date: Fri, 16 Feb 2018 02:22:36 +0100 Subject: [PATCH 129/178] DB/SAI: Chief Plaguebringer Harris --- sql/updates/world/3.3.5/2018_02_16_00_world.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_16_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_16_00_world.sql b/sql/updates/world/3.3.5/2018_02_16_00_world.sql new file mode 100644 index 0000000000..35cdaf23c5 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_16_00_world.sql @@ -0,0 +1,12 @@ +-- Chief Plaguebringer Harris SAI +SET @ENTRY := 24251; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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 +(@ENTRY,0,0,0,0,0,100,0,4000,8000,10000,12000,11,16432,0,0,0,0,0,5,0,0,0,0,0,0,0,"Chief Plaguebringer Harris - In Combat - Cast 'Plague Mist'"), +(@ENTRY,0,1,0,0,0,100,0,6000,8000,10000,15000,11,34095,0,0,0,0,0,5,0,0,0,0,0,0,0,"Chief Plaguebringer Harris - In Combat - Cast 'Throw Proximity Bomb'"), +(@ENTRY,0,2,0,2,0,100,1,10,15,0,0,11,5782,0,0,0,0,0,5,0,0,0,0,0,0,0,"Chief Plaguebringer Harris - Between 10-15% Health - Cast 'Fear'"); + +DELETE FROM `creature_text` WHERE `CreatureID`=24251 AND `GroupID`=0 AND `ID`=2; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(24251, 0, 2, "Steady your hand, you fool! Those are rare components you're spilling on the floor!", 14, 0, 100, 0, 0, 0, 23100, 0, "Chief Plaguebringer Harris"); From 5fc15396cc6ebbefbd911b2a9c2819003a6316b9 Mon Sep 17 00:00:00 2001 From: Keader Date: Thu, 15 Feb 2018 22:53:04 -0300 Subject: [PATCH 130/178] DB/Creature: Fixed number of Laughing Skull summoned on Yogg Saron --- sql/updates/world/3.3.5/2018_02_16_01_world.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_16_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_16_01_world.sql b/sql/updates/world/3.3.5/2018_02_16_01_world.sql new file mode 100644 index 0000000000..c125033507 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_16_01_world.sql @@ -0,0 +1,13 @@ +DELETE FROM `creature_summon_groups` WHERE `summonerId`=33890 AND `entry`=33990; -- Laughing Skull +INSERT INTO `creature_summon_groups` (`summonerId`,`summonerType`,`groupId`,`entry`,`position_x`,`position_y`,`position_z`,`orientation`,`summonType`,`summonTime`) VALUES +(33890,0,0,33990,2063.156,27.95839,244.2707,5.288348,3,60000), -- Chambers of Aspects +(33890,0,0,33990,2061.257,-53.8788,239.8633,2.478368,3,60000), +(33890,0,0,33990,2109.908,29.33236,239.8817,0.1919862,3,60000), +(33890,0,0,33990,2135.219,-41.44271,239.8027,5.846853,3,60000), +(33890,0,1,33990,1932.213,-93.62798,240.073,4.852015,3,60000), -- Icecrown Citadel +(33890,0,1,33990,1905.937,-133.1651,240.073,5.77704,3,60000), +(33890,0,1,33990,1948.668,-152.4481,240.073,1.919862,3,60000), +(33890,0,1,33990,1992.463,-131.2119,240.073,3.455752,3,60000), +(33890,0,2,33990,1917.492,91.10191,239.7496,0.5235988,3,60000), -- Stormwind Keep +(33890,0,2,33990,1918.132,73.82926,241.7929,2.600541,3,60000), +(33890,0,2,33990,1922.55,54.68001,241.1263,0.1919862,3,60000); From f91813fd79f385629adba24decba262999b3ee25 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 04:18:00 +0100 Subject: [PATCH 131/178] rename files --- sql/updates/world/3.3.5/2018_02_10_00_world.sql | 2 -- sql/updates/world/3.3.5/2018_02_11_00_world_335.sql | 1 - sql/updates/world/3.3.5/2018_02_11_01_world_335.sql | 1 - .../2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql | 2 ++ .../2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql} | 0 ...2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql | 1 + ...2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql | 1 + ...018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql} | 2 ++ .../2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql} | 0 .../2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql} | 0 ...018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql} | 2 ++ .../2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql} | 0 .../2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql} | 0 .../2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql} | 0 .../2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql} | 0 .../2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql} | 0 .../2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql} | 0 .../2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql} | 0 .../2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql} | 0 .../2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql} | 0 .../2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql} | 0 .../2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql} | 0 .../2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql} | 0 .../2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql} | 0 .../2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql} | 0 .../2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql} | 0 .../2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql} | 0 27 files changed, 8 insertions(+), 4 deletions(-) delete mode 100644 sql/updates/world/3.3.5/2018_02_10_00_world.sql delete mode 100644 sql/updates/world/3.3.5/2018_02_11_00_world_335.sql delete mode 100644 sql/updates/world/3.3.5/2018_02_11_01_world_335.sql create mode 100644 sql/updates/world/4.3.4/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql rename sql/updates/world/{3.3.5/2018_02_10_01_world.sql => 4.3.4/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql} (100%) create mode 100644 sql/updates/world/4.3.4/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql create mode 100644 sql/updates/world/4.3.4/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql rename sql/updates/world/{3.3.5/2018_02_11_02_world_335.sql => 4.3.4/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql} (96%) rename sql/updates/world/{3.3.5/2018_02_12_00_world.sql => 4.3.4/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_12_01_world.sql => 4.3.4/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_00_world_335.sql => 4.3.4/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_13_01_world.sql => 4.3.4/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_02_world.sql => 4.3.4/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_03_world.sql => 4.3.4/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_04_world.sql => 4.3.4/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_05_world.sql => 4.3.4/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_06_world.sql => 4.3.4/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_13_07_world.sql => 4.3.4/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_14_00_world.sql => 4.3.4/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_14_02_world.sql => 4.3.4/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_14_03_world.sql => 4.3.4/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_15_01_world.sql => 4.3.4/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_15_02_world.sql => 4.3.4/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_15_03_world.sql => 4.3.4/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_15_04_world.sql => 4.3.4/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_16_00_world.sql => 4.3.4/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_16_01_world.sql => 4.3.4/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_02_10_00_world.sql b/sql/updates/world/3.3.5/2018_02_10_00_world.sql deleted file mode 100644 index ad19973dc2..0000000000 --- a/sql/updates/world/3.3.5/2018_02_10_00_world.sql +++ /dev/null @@ -1,2 +0,0 @@ --- -DELETE FROM `spawn_group` WHERE `spawnId` IN (64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993) AND `spawnType`=0 AND `groupId`=2; diff --git a/sql/updates/world/3.3.5/2018_02_11_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_11_00_world_335.sql deleted file mode 100644 index 498c89eab1..0000000000 --- a/sql/updates/world/3.3.5/2018_02_11_00_world_335.sql +++ /dev/null @@ -1 +0,0 @@ -DELETE FROM `spell_bonus_data` WHERE `entry` IN (31117, 64085); diff --git a/sql/updates/world/3.3.5/2018_02_11_01_world_335.sql b/sql/updates/world/3.3.5/2018_02_11_01_world_335.sql deleted file mode 100644 index e2e2b3a0ba..0000000000 --- a/sql/updates/world/3.3.5/2018_02_11_01_world_335.sql +++ /dev/null @@ -1 +0,0 @@ -UPDATE `spell_proc` SET `SpellPhaseMask` = `SpellPhaseMask`|0x2 WHERE `SpellId` IN (-19572, 28716, -31656, 37603, 38394, 40438, 40478, 45054, -47195, -47245, -48539, -49217, 54754, 56218, -56636, 57870, 60061, 60170, 60176, 60487, 61188, 64752, 64824, 64914, 67209, 67356, 67361, 67365, 70664, 70730, 70841, 70854, 71174, 71176, 71178, 71198, 71606, 71637); diff --git a/sql/updates/world/4.3.4/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql b/sql/updates/world/4.3.4/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql new file mode 100644 index 0000000000..ca0346de02 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql @@ -0,0 +1,2 @@ +-- +-- DELETE FROM `spawn_group` WHERE `spawnId` IN (64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993) AND `spawnType`=0 AND `groupId`=2; diff --git a/sql/updates/world/3.3.5/2018_02_10_01_world.sql b/sql/updates/world/4.3.4/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_10_01_world.sql rename to sql/updates/world/4.3.4/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql b/sql/updates/world/4.3.4/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql new file mode 100644 index 0000000000..f6ab39a914 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql @@ -0,0 +1 @@ +-- DELETE FROM `spell_bonus_data` WHERE `entry` IN (31117, 64085); diff --git a/sql/updates/world/4.3.4/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql new file mode 100644 index 0000000000..28a1ad70e2 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql @@ -0,0 +1 @@ +-- UPDATE `spell_proc` SET `SpellPhaseMask` = `SpellPhaseMask`|0x2 WHERE `SpellId` IN (-19572, 28716, -31656, 37603, 38394, 40438, 40478, 45054, -47195, -47245, -48539, -49217, 54754, 56218, -56636, 57870, 60061, 60170, 60176, 60487, 61188, 64752, 64824, 64914, 67209, 67356, 67361, 67365, 70664, 70730, 70841, 70854, 71174, 71176, 71178, 71198, 71606, 71637); diff --git a/sql/updates/world/3.3.5/2018_02_11_02_world_335.sql b/sql/updates/world/4.3.4/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql similarity index 96% rename from sql/updates/world/3.3.5/2018_02_11_02_world_335.sql rename to sql/updates/world/4.3.4/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql index 5a98c0da86..bffc51359f 100644 --- a/sql/updates/world/3.3.5/2018_02_11_02_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql @@ -1,3 +1,5 @@ +/* DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_combined_toxins'; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (56584, 'spell_combined_toxins'); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_12_00_world.sql b/sql/updates/world/4.3.4/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_12_00_world.sql rename to sql/updates/world/4.3.4/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_12_01_world.sql b/sql/updates/world/4.3.4/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_12_01_world.sql rename to sql/updates/world/4.3.4/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql b/sql/updates/world/4.3.4/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_13_00_world_335.sql rename to sql/updates/world/4.3.4/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql index 828f0c7083..8b78a708f1 100644 --- a/sql/updates/world/3.3.5/2018_02_13_00_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql @@ -1,3 +1,4 @@ +/* -- Remove unique items from reference table 24064 DELETE FROM `reference_loot_template` WHERE `Entry`=24064 AND `Item` IN (911, 920, 1076, 1406, 1455, 1459, 1461, 1462, 2034, 2232, 3429); @@ -24,3 +25,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Com (205, 2232, 0.1, 0, "Nightbane Dark Runner - Dark Runner Boots"), (2427, 3429, 1, 0, "Jailor Eston - Guardsman Belt"), (2428, 3429, 1, 0, "Jailor Marlgen - Guardsman Belt"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_13_01_world.sql b/sql/updates/world/4.3.4/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_01_world.sql rename to sql/updates/world/4.3.4/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_02_world.sql b/sql/updates/world/4.3.4/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_02_world.sql rename to sql/updates/world/4.3.4/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_03_world.sql b/sql/updates/world/4.3.4/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_03_world.sql rename to sql/updates/world/4.3.4/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_04_world.sql b/sql/updates/world/4.3.4/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_04_world.sql rename to sql/updates/world/4.3.4/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_05_world.sql b/sql/updates/world/4.3.4/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_05_world.sql rename to sql/updates/world/4.3.4/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_06_world.sql b/sql/updates/world/4.3.4/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_06_world.sql rename to sql/updates/world/4.3.4/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_13_07_world.sql b/sql/updates/world/4.3.4/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_13_07_world.sql rename to sql/updates/world/4.3.4/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_00_world.sql b/sql/updates/world/4.3.4/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_14_00_world.sql rename to sql/updates/world/4.3.4/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_02_world.sql b/sql/updates/world/4.3.4/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_14_02_world.sql rename to sql/updates/world/4.3.4/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_14_03_world.sql b/sql/updates/world/4.3.4/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_14_03_world.sql rename to sql/updates/world/4.3.4/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_01_world.sql b/sql/updates/world/4.3.4/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_15_01_world.sql rename to sql/updates/world/4.3.4/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_02_world.sql b/sql/updates/world/4.3.4/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_15_02_world.sql rename to sql/updates/world/4.3.4/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_03_world.sql b/sql/updates/world/4.3.4/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_15_03_world.sql rename to sql/updates/world/4.3.4/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_15_04_world.sql b/sql/updates/world/4.3.4/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_15_04_world.sql rename to sql/updates/world/4.3.4/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_16_00_world.sql b/sql/updates/world/4.3.4/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_16_00_world.sql rename to sql/updates/world/4.3.4/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_16_01_world.sql b/sql/updates/world/4.3.4/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_16_01_world.sql rename to sql/updates/world/4.3.4/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql From 6f014c638cd182c9fe2bb7b7debb65d724a208d8 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Fri, 16 Feb 2018 04:47:06 +0100 Subject: [PATCH 132/178] TDB 4.3.4.27 2018/02/16 --- revision_data.h.in.cmake | 2 +- sql/base/auth_database.sql | 3 ++- sql/base/characters_database.sql | 3 ++- .../4.3.4/auth/26_2018_02_16}/2018_01_15_00_auth.sql | 0 .../characters/26_2018_02_16}/2018_01_15_00_characters.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_15_00_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_15_01_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_20_00_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_20_01_world.sql | 0 .../2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql | 0 .../2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql | 0 .../2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql | 0 ...018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql | 0 .../2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_27_00_world.sql | 0 ...018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql | 0 ...018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql | 0 .../2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql | 0 .../2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql | 0 ...018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql | 0 ...018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql | 0 ...018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql | 0 ...018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql | 0 ...018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql | 0 ...018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql | 0 ...018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql | 0 ...018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql | 0 ...018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql | 0 ...018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql | 0 ...018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql | 0 .../2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_29_00_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_01_29_01_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_02_02_00_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_02_02_01_world.sql | 0 .../4.3.4/world/26_2018_02_16}/2018_02_04_00_world.sql | 0 ...018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql | 0 .../2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql | 0 ...018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql | 0 ...018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql | 0 ...018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql | 0 ...018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql | 0 ...018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql | 0 ...018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql | 0 ...018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql | 0 ...018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql | 0 ...018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql | 0 ...018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql | 0 .../2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql | 0 .../2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql | 0 .../2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql | 0 .../2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql | 0 ...018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql | 0 ...018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql | 0 ...018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql | 0 .../2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql | 0 .../2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql | 0 ...018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql | 0 .../2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql | 0 .../2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql | 0 .../2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql | 0 .../2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql | 0 .../2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql | 0 .../2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql | 0 .../2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql | 0 .../2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql | 0 .../2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql | 0 .../2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql | 0 .../2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql | 0 .../2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql | 0 .../2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql | 0 .../2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql | 0 .../2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql | 0 .../2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql | 0 sql/updates/auth/4.3.4/2018_02_16_00_auth.sql | 2 ++ sql/updates/characters/4.3.4/2018_02_16_00_characters.sql | 2 ++ sql/updates/world/4.3.4/2018_02_16_24_world.sql | 3 +++ 77 files changed, 12 insertions(+), 3 deletions(-) rename sql/{updates/auth/4.3.4 => old/4.3.4/auth/26_2018_02_16}/2018_01_15_00_auth.sql (100%) rename sql/{updates/characters/4.3.4 => old/4.3.4/characters/26_2018_02_16}/2018_01_15_00_characters.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_15_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_15_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_20_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_20_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_29_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_01_29_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_02_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_02_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_04_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql (100%) rename sql/{updates/world/4.3.4 => old/4.3.4/world/26_2018_02_16}/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql (100%) create mode 100644 sql/updates/auth/4.3.4/2018_02_16_00_auth.sql create mode 100644 sql/updates/characters/4.3.4/2018_02_16_00_characters.sql create mode 100644 sql/updates/world/4.3.4/2018_02_16_24_world.sql diff --git a/revision_data.h.in.cmake b/revision_data.h.in.cmake index 4422f549d2..99ad8bfe12 100644 --- a/revision_data.h.in.cmake +++ b/revision_data.h.in.cmake @@ -7,7 +7,7 @@ #define _SOURCE_DIRECTORY R"(@CMAKE_SOURCE_DIR@)" #define _BUILD_DIRECTORY R"(@BUILDDIR@)" #define _MYSQL_EXECUTABLE R"(@MYSQL_EXECUTABLE@)" - #define _FULL_DATABASE "TDB_full_world_434.26_2018_01_15.sql" + #define _FULL_DATABASE "TDB_full_world_434.27_2018_02_16.sql" #define VER_COMPANYNAME_STR "TrinityCore Developers" #define VER_LEGALCOPYRIGHT_STR "(c)2008-2018 TrinityCore" #define VER_FILEVERSION 0,0,0 diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index d6c676c974..4b4bcc6f29 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -2000,7 +2000,8 @@ INSERT INTO `updates` VALUES ('2017_11_16_00_auth.sql','A53D70B4DB8686AB3A0B0E62471717F4F3902ADD','ARCHIVED','2017-11-16 01:40:04',0), ('2017_12_17_00_auth.sql','E2EC5999D5305FC12EA576D08EFB95D1660DCF4D','ARCHIVED','2017-12-17 01:40:04',0), ('2018_01_06_00_auth.sql','CD9B826B9D95697DC412DEF780E814FA3991D6CD','ARCHIVED','2018-01-06 01:40:04',0), -('2018_01_15_00_auth.sql','1C5C28490B27D86EBC14F6034AA4D34E66D5545D','ARCHIVED','2018-01-15 01:40:04',0); +('2018_01_15_00_auth.sql','1C5C28490B27D86EBC14F6034AA4D34E66D5545D','ARCHIVED','2018-01-15 01:40:04',0), +('2018_02_16_00_auth.sql','1AAD2FC649CBE8093ECE5908EBBBB31EC326166A','ARCHIVED','2018-02-16 01:40:04',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index a3227a8208..b5fa46f8c5 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -2875,7 +2875,8 @@ INSERT INTO `updates` VALUES ('2017_11_26_00_characters.sql','4609CDC122E0A7F27A09C2605B329A06FC7FB7C2','ARCHIVED','2017-11-27 00:00:00',0), ('2017_11_28_00_characters.sql','6FF1F84B8985ADFC7FF97F0BF8E53403CF13C320','ARCHIVED','2017-11-28 00:00:00',0), ('2017_12_17_00_characters.sql','937E8F51DC74AC41FF8F213CE36C69DDEB878D6A','ARCHIVED','2017-12-17 00:00:00',0), -('2018_01_15_00_characters.sql','43C8E4549E1AA9610B377BC7139C88C63D0DC193','ARCHIVED','2018-01-15 00:00:00',0); +('2018_01_15_00_characters.sql','43C8E4549E1AA9610B377BC7139C88C63D0DC193','ARCHIVED','2018-01-15 00:00:00',0), +('2018_02_16_00_characters.sql','F1254689CE8A0B0AF149E557830287FF583B8D91','ARCHIVED','2018-02-16 00:00:00',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/4.3.4/2018_01_15_00_auth.sql b/sql/old/4.3.4/auth/26_2018_02_16/2018_01_15_00_auth.sql similarity index 100% rename from sql/updates/auth/4.3.4/2018_01_15_00_auth.sql rename to sql/old/4.3.4/auth/26_2018_02_16/2018_01_15_00_auth.sql diff --git a/sql/updates/characters/4.3.4/2018_01_15_00_characters.sql b/sql/old/4.3.4/characters/26_2018_02_16/2018_01_15_00_characters.sql similarity index 100% rename from sql/updates/characters/4.3.4/2018_01_15_00_characters.sql rename to sql/old/4.3.4/characters/26_2018_02_16/2018_01_15_00_characters.sql diff --git a/sql/updates/world/4.3.4/2018_01_15_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_15_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_15_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_15_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_15_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_15_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_15_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_15_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_20_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_20_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_20_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_20_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_20_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_20_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_20_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_20_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_21_00_world_from_335_was_2018_01_16_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_21_01_world_from_335_was_2018_01_17_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_21_02_world_from_335_was_2018_01_18_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_21_03_world_from_335_was_2018_01_18_02_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_21_04_world_from_335_was_2018_01_20_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_01_world_from_335_was_2018_01_21_02_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_02_world_from_335_was_2018_01_23_00_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_03_world_from_335_was_2018_01_24_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_04_world_from_335_was_2018_01_24_03_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_05_world_from_335_was_2018_01_25_02_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_06_world_from_335_was_2018_01_25_03_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_07_world_from_335_was_2018_01_25_04_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_08_world_from_335_was_2018_01_25_05_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_09_world_from_335_was_2018_01_25_06_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_10_world_from_335_was_2018_01_25_07_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_11_world_from_335_was_2018_01_25_08_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_12_world_from_335_was_2018_01_25_09_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_13_world_from_335_was_2018_01_25_10_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_14_world_from_335_was_2018_01_25_11_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_15_world_from_335_was_2018_01_25_12_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_27_16_world_from_335_was_2018_01_26_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_29_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_29_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_29_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_29_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_01_29_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_01_29_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_01_29_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_01_29_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_02_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_02_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_02_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_02_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_02_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_02_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_02_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_02_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_04_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_04_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_04_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_04_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_00_world_from_335_was_2018_02_04_01_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_01_world_from_335_was_2018_02_04_02_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_02_world_from_335_was_2018_02_08_00_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_03_world_from_335_was_2018_02_08_01_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_04_world_from_335_was_2018_02_08_02_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_05_world_from_335_was_2018_02_08_03_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_06_world_from_335_was_2018_02_08_04_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_07_world_from_335_was_2018_02_08_05_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_08_world_from_335_was_2018_02_08_06_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_09_world_from_335_was_2018_02_08_07_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_10_world_from_335_was_2018_02_08_08_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_11_world_from_335_was_2018_02_08_09_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_12_world_from_335_was_2018_02_08_10_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_10_13_world_from_335_was_2018_02_09_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_00_world_from_335_was_2018_02_10_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_01_world_from_335_was_2018_02_10_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_02_world_from_335_was_2018_02_11_00_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_03_world_from_335_was_2018_02_11_01_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_04_world_from_335_was_2018_02_11_02_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_05_world_from_335_was_2018_02_12_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_06_world_from_335_was_2018_02_12_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_07_world_from_335_was_2018_02_13_00_world_335.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_08_world_from_335_was_2018_02_13_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_09_world_from_335_was_2018_02_13_02_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_10_world_from_335_was_2018_02_13_03_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_11_world_from_335_was_2018_02_13_04_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_12_world_from_335_was_2018_02_13_05_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_13_world_from_335_was_2018_02_13_06_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_14_world_from_335_was_2018_02_13_07_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_15_world_from_335_was_2018_02_14_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_16_world_from_335_was_2018_02_14_02_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_17_world_from_335_was_2018_02_14_03_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_18_world_from_335_was_2018_02_15_01_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_19_world_from_335_was_2018_02_15_02_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_20_world_from_335_was_2018_02_15_03_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_21_world_from_335_was_2018_02_15_04_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_22_world_from_335_was_2018_02_16_00_world.sql diff --git a/sql/updates/world/4.3.4/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql b/sql/old/4.3.4/world/26_2018_02_16/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql similarity index 100% rename from sql/updates/world/4.3.4/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql rename to sql/old/4.3.4/world/26_2018_02_16/2018_02_16_23_world_from_335_was_2018_02_16_01_world.sql diff --git a/sql/updates/auth/4.3.4/2018_02_16_00_auth.sql b/sql/updates/auth/4.3.4/2018_02_16_00_auth.sql new file mode 100644 index 0000000000..a053031111 --- /dev/null +++ b/sql/updates/auth/4.3.4/2018_02_16_00_auth.sql @@ -0,0 +1,2 @@ +-- TDB 4.3.4-27 auth database +UPDATE `updates` SET `state`='ARCHIVED'; diff --git a/sql/updates/characters/4.3.4/2018_02_16_00_characters.sql b/sql/updates/characters/4.3.4/2018_02_16_00_characters.sql new file mode 100644 index 0000000000..20ee966b26 --- /dev/null +++ b/sql/updates/characters/4.3.4/2018_02_16_00_characters.sql @@ -0,0 +1,2 @@ +-- TDB 4.3.4-27 characters database +UPDATE `updates` SET `state`='ARCHIVED'; diff --git a/sql/updates/world/4.3.4/2018_02_16_24_world.sql b/sql/updates/world/4.3.4/2018_02_16_24_world.sql new file mode 100644 index 0000000000..4a03ca9c83 --- /dev/null +++ b/sql/updates/world/4.3.4/2018_02_16_24_world.sql @@ -0,0 +1,3 @@ +UPDATE `version` SET `db_version`='TDB 434.27', `cache_id`=27 LIMIT 1; + +UPDATE `updates` SET `state`='ARCHIVED'; From a858e9937e9bab7615417f72e8913e2ab41ce699 Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 15 Feb 2018 23:58:20 -0300 Subject: [PATCH 133/178] Core/Auras: remove obsolete check that was preventing some auras to proc even if they met conditions otherwise --- src/server/game/Spells/Auras/SpellAuras.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 71d846db4b..19989c2cd3 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1795,12 +1795,6 @@ uint8 Aura::GetProcEffectMask(AuraApplication* aurApp, ProcEventInfo& eventInfo, // this is needed because this is the last moment in which you can prevent aura charge drop on proc // and possibly a way to prevent default checks (if there're going to be any) - // Aura added by spell can't trigger from self (prevent drop charges/do triggers) - // But except periodic and kill triggers (can triggered from self) - if (SpellInfo const* spellInfo = eventInfo.GetSpellInfo()) - if (spellInfo->Id == GetId() && !(eventInfo.GetTypeMask() & (PROC_FLAG_TAKEN_PERIODIC | PROC_FLAG_KILL))) - return 0; - // Check if current equipment meets aura requirements // do that only for passive spells /// @todo this needs to be unified for all kinds of auras From 70a30770d838fd8f9a571814e60c8dc692e4013d Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 17 Feb 2018 16:11:01 +0100 Subject: [PATCH 134/178] Core/Scripts: implemented Fungal Decay & Tail Sting --- .../world/3.3.5/2018_02_16_02_world.sql | 8 ++ src/server/scripts/Spells/spell_generic.cpp | 114 ++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_16_02_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_16_02_world.sql b/sql/updates/world/3.3.5/2018_02_16_02_world.sql new file mode 100644 index 0000000000..ac6733d105 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_16_02_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (32065, 36659); +INSERT INTO `spell_proc` (`SpellId`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `ProcsPerMinute`, `Chance`, `Cooldown`, `Charges`) VALUES +(32065, 0x0, 0, 0x00000000, 0x00000000, 0x00000000, 0x80000, 0x1, 0x0, 0x0, 0x0, 0, 0, 0, 0), +(36659, 0x0, 0, 0x00000000, 0x00000000, 0x00000000, 0x80000, 0x1, 0x0, 0x0, 0x0, 0, 0, 0, 0); +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_gen_decay_over_time_fungal_decay','spell_gen_decay_over_time_tail_sting'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(32065, 'spell_gen_decay_over_time_fungal_decay'), +(36659, 'spell_gen_decay_over_time_tail_sting'); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 90f599c870..6de9a63ba3 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1324,6 +1324,118 @@ class spell_gen_dalaran_disguise : public SpellScriptLoader } }; +class spell_gen_decay_over_time : public SpellScriptLoader +{ + public: + spell_gen_decay_over_time(char const* name) : SpellScriptLoader(name) { } + + SpellScript* GetSpellScript() const override + { + return new spell_gen_decay_over_time_SpellScript(); + } + + private: + class spell_gen_decay_over_time_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_decay_over_time_SpellScript); + + void ModAuraStack() + { + if (Aura* aur = GetHitAura()) + aur->SetStackAmount(static_cast(GetSpellInfo()->StackAmount)); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_gen_decay_over_time_SpellScript::ModAuraStack); + } + }; + + protected: + class spell_gen_decay_over_time_AuraScript : public AuraScript + { + protected: + PrepareAuraScript(spell_gen_decay_over_time_AuraScript); + + bool CheckProc(ProcEventInfo& eventInfo) + { + return (eventInfo.GetSpellInfo() == GetSpellInfo()); + } + + void Decay(ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + ModStackAmount(-1); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_gen_decay_over_time_AuraScript::CheckProc); + OnProc += AuraProcFn(spell_gen_decay_over_time_AuraScript::Decay); + } + + ~spell_gen_decay_over_time_AuraScript() = default; + }; + + ~spell_gen_decay_over_time() = default; +}; + +enum FungalDecay +{ + // found in sniffs, there is no duration entry we can possibly use + AURA_DURATION = 12600 +}; + +// 32065 - Fungal Decay +class spell_gen_decay_over_time_fungal_decay : public spell_gen_decay_over_time +{ + public: + spell_gen_decay_over_time_fungal_decay() : spell_gen_decay_over_time("spell_gen_decay_over_time_fungal_decay") { } + + class spell_gen_decay_over_time_fungal_decay_AuraScript : public spell_gen_decay_over_time_AuraScript + { + PrepareAuraScript(spell_gen_decay_over_time_fungal_decay_AuraScript); + + void ModDuration(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + // only on actual reapply, not on stack decay + if (GetDuration() == GetMaxDuration()) + { + SetMaxDuration(AURA_DURATION); + SetDuration(AURA_DURATION); + } + } + + void Register() override + { + spell_gen_decay_over_time_AuraScript::Register(); + OnEffectApply += AuraEffectApplyFn(spell_gen_decay_over_time_fungal_decay_AuraScript::ModDuration, EFFECT_0, SPELL_AURA_MOD_DECREASE_SPEED, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_gen_decay_over_time_fungal_decay_AuraScript(); + } +}; + +// 36659 - Tail Sting +class spell_gen_decay_over_time_tail_sting : public spell_gen_decay_over_time +{ + public: + spell_gen_decay_over_time_tail_sting() : spell_gen_decay_over_time("spell_gen_decay_over_time_tail_sting") { } + + class spell_gen_decay_over_time_tail_sting_AuraScript : public spell_gen_decay_over_time_AuraScript + { + PrepareAuraScript(spell_gen_decay_over_time_tail_sting_AuraScript); + }; + + AuraScript* GetAuraScript() const override + { + return new spell_gen_decay_over_time_tail_sting_AuraScript(); + } +}; + enum DefendVisuals { SPELL_VISUAL_SHIELD_1 = 63130, @@ -4277,6 +4389,8 @@ void AddSC_generic_spell_scripts() new spell_gen_creature_permanent_feign_death(); new spell_gen_dalaran_disguise("spell_gen_sunreaver_disguise"); new spell_gen_dalaran_disguise("spell_gen_silver_covenant_disguise"); + new spell_gen_decay_over_time_fungal_decay(); + new spell_gen_decay_over_time_tail_sting(); new spell_gen_defend(); new spell_gen_despawn_self(); new spell_gen_divine_storm_cd_reset(); From 3292925319e09c1f3fd8b04496767443b5491920 Mon Sep 17 00:00:00 2001 From: ariel- Date: Fri, 16 Feb 2018 03:02:10 -0300 Subject: [PATCH 135/178] Core/Events: update holiday code and remove misleading log (event date is the one from game_event) - add siign to DBC struct member CalendarFilterType as it was being used as such - kill localtime usage as it's deprecated Closes #18542 --- src/server/game/DataStores/DBCStructure.h | 2 +- src/server/game/Events/GameEventMgr.cpp | 39 +++++++++++++++-------- src/server/game/Events/GameEventMgr.h | 6 ++-- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h index 952cb2767b..b06220cecf 100644 --- a/src/server/game/DataStores/DBCStructure.h +++ b/src/server/game/DataStores/DBCStructure.h @@ -1346,7 +1346,7 @@ struct HolidaysEntry //uint32 holidayDescriptionId; // 50 m_holidayDescriptionID (HolidayDescriptions.dbc) char* TextureFilename; // 51 m_textureFilename uint32 Priority; // 52 m_priority - uint32 CalendarFilterType; // 53 m_calendarFilterType (-1 = Fishing Contest, 0 = Unk, 1 = Darkmoon Festival, 2 = Yearly holiday) + int32 CalendarFilterType; // 53 m_calendarFilterType (-1 = Fishing Contest, 0 = Unk, 1 = Darkmoon Festival, 2 = Yearly holiday) //uint32 flags; // 54 m_flags (0 = Darkmoon Faire, Fishing Contest and Wotlk Launch, rest is 1) }; diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 72790a87a8..2afac887fc 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -943,7 +943,6 @@ void GameEventMgr::LoadHolidayDates() // 0 1 2 QueryResult result = WorldDatabase.Query("SELECT id, date_id, date_value FROM holiday_dates"); - if (!result) { TC_LOG_INFO("server.loading", ">> Loaded 0 holiday dates. DB table `holiday_dates` is empty."); @@ -968,7 +967,10 @@ void GameEventMgr::LoadHolidayDates() continue; } entry->Date[dateId] = fields[2].GetUInt32(); - modifiedHolidays.insert(entry->Id); + + auto itr = std::lower_bound(modifiedHolidays.begin(), modifiedHolidays.end(), entry->Id); + if (itr == modifiedHolidays.end() || *itr != entry->Id) + modifiedHolidays.insert(itr, entry->Id); ++count; } while (result->NextRow()); @@ -1720,7 +1722,6 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event) return; HolidaysEntry const* holiday = sHolidaysStore.LookupEntry(event.holiday_id); - if (!holiday->Date[0] || !holiday->Duration[0]) // Invalid definitions { TC_LOG_ERROR("sql.sql", "Missing date or duration for holiday %u.", event.holiday_id); @@ -1731,7 +1732,7 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event) event.length = holiday->Duration[stageIndex] * HOUR / MINUTE; time_t stageOffset = 0; - for (int i = 0; i < stageIndex; ++i) + for (uint8 i = 0; i < stageIndex; ++i) stageOffset += holiday->Duration[i] * HOUR; switch (holiday->CalendarFilterType) @@ -1751,20 +1752,23 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event) if (holiday->Looping) { event.occurence = 0; - for (int i = 0; i < MAX_HOLIDAY_DURATIONS && holiday->Duration[i]; ++i) + for (uint8 i = 0; i < MAX_HOLIDAY_DURATIONS && holiday->Duration[i]; ++i) event.occurence += holiday->Duration[i] * HOUR / MINUTE; } bool singleDate = ((holiday->Date[0] >> 24) & 0x1F) == 31; // Events with fixed date within year have - 1 - time_t curTime = time(nullptr); - for (int i = 0; i < MAX_HOLIDAY_DATES && holiday->Date[i]; ++i) + time_t curTime = GameTime::GetGameTime(); + for (uint8 i = 0; i < MAX_HOLIDAY_DATES && holiday->Date[i]; ++i) { uint32 date = holiday->Date[i]; tm timeInfo; if (singleDate) - timeInfo.tm_year = localtime(&curTime)->tm_year - 1; // First try last year (event active through New Year) + { + localtime_r(&curTime, &timeInfo); + timeInfo.tm_year -= 1; // First try last year (event active through New Year) + } else timeInfo.tm_year = ((date >> 24) & 0x1F) + 100; @@ -1776,22 +1780,31 @@ void GameEventMgr::SetHolidayEventTime(GameEventData& event) timeInfo.tm_wday = 0; timeInfo.tm_yday = 0; timeInfo.tm_isdst = -1; - tm tmCopy = timeInfo; + // try to get next start time (skip past dates) time_t startTime = mktime(&timeInfo); if (curTime < startTime + event.length * MINUTE) { event.start = startTime + stageOffset; - return; + break; } else if (singleDate) { - tmCopy.tm_year = localtime(&curTime)->tm_year; // This year + tm tmCopy; + localtime_r(&curTime, &tmCopy); + int year = tmCopy.tm_year; // This year + tmCopy = timeInfo; + tmCopy.tm_year = year; + event.start = mktime(&tmCopy) + stageOffset; - return; + break; + } + else + { + // date is due and not a singleDate event, try with next DBC date (modified by holiday_dates) + // if none is found we don't modify start date and use the one in game_event } } - TC_LOG_ERROR("sql.sql", "No suitable start date found for holiday %u.", event.holiday_id); } bool IsHolidayActive(HolidayIds id) diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h index de1f09dc24..e77295e32c 100644 --- a/src/server/game/Events/GameEventMgr.h +++ b/src/server/game/Events/GameEventMgr.h @@ -121,9 +121,8 @@ class TC_GAME_API GameEventMgr bool StartEvent(uint16 event_id, bool overwrite = false); void StopEvent(uint16 event_id, bool overwrite = false); void HandleQuestComplete(uint32 quest_id); // called on world event type quest completions - void HandleWorldEventGossip(Player* player, Creature* c); uint32 GetNPCFlag(Creature* cr); - uint32 GetNpcTextId(uint32 guid); + private: void SendWorldStateUpdate(Player* player, uint16 event_id); void AddActiveEvent(uint16 event_id) { m_ActiveEvents.insert(event_id); } @@ -177,10 +176,11 @@ class TC_GAME_API GameEventMgr GameEventNPCFlagMap mGameEventNPCFlags; ActiveEvents m_ActiveEvents; bool isSystemInit; + public: GameEventGuidMap mGameEventCreatureGuids; GameEventGuidMap mGameEventGameobjectGuids; - std::set modifiedHolidays; + std::vector modifiedHolidays; }; #define sGameEventMgr GameEventMgr::instance() From cbe84fa13052b5dccc7e95d821d8cdaa3305bdd2 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 17 Feb 2018 17:45:03 +0100 Subject: [PATCH 136/178] Core/Entities: remove grid-wide visibility from setActive and implement another method for it --- src/server/game/Battlefield/Battlefield.cpp | 2 ++ src/server/game/Entities/Object/Object.cpp | 16 ++++++++++++---- src/server/game/Entities/Object/Object.h | 3 +++ .../BlackwingLair/boss_nefarian.cpp | 1 + .../BlackwingLair/instance_blackwing_lair.cpp | 1 + .../EasternKingdoms/Karazhan/boss_nightbane.cpp | 1 + .../EasternKingdoms/Karazhan/karazhan.cpp | 1 + .../ScarletEnclave/zone_the_scarlet_enclave.cpp | 1 + .../SunwellPlateau/boss_brutallus.cpp | 1 + .../SunwellPlateau/boss_kiljaeden.cpp | 4 ++++ .../BattleForMountHyjal/hyjalAI.cpp | 8 ++++++++ .../EscapeFromDurnholdeKeep/old_hillsbrad.cpp | 1 + .../Kalimdor/OnyxiasLair/boss_onyxia.cpp | 1 + .../Kalimdor/WailingCaverns/wailing_caverns.cpp | 1 + .../instance_obsidian_sanctum.cpp | 3 +++ .../RubySanctum/boss_baltharus_the_warborn.cpp | 1 + .../RubySanctum/boss_halion.cpp | 1 + .../RubySanctum/ruby_sanctum.cpp | 2 ++ .../IcecrownCitadel/boss_sindragosa.cpp | 7 +++++++ .../IcecrownCitadel/boss_the_lich_king.cpp | 2 ++ .../IcecrownCitadel/icecrown_citadel.cpp | 14 ++++++++++++++ .../instance_icecrown_citadel.cpp | 5 +++-- .../Northrend/Naxxramas/boss_four_horsemen.cpp | 1 + .../scripts/Northrend/Naxxramas/boss_noth.cpp | 1 + .../Northrend/Naxxramas/boss_thaddius.cpp | 17 +++++++++++++++++ .../Ulduar/Ulduar/boss_algalon_the_observer.cpp | 1 + .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 1 + .../UtgardeKeep/UtgardePinnacle/boss_skadi.cpp | 1 + .../SerpentShrine/instance_serpent_shrine.cpp | 4 ++++ 29 files changed, 97 insertions(+), 6 deletions(-) diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index a703c70d30..c93b72804d 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -787,6 +787,7 @@ Creature* Battlefield::SpawnCreature(uint32 entry, Position const& pos) // Set creature in world map->AddToMap(creature); creature->setActive(true); + creature->SetFarVisible(true); return creature; } @@ -812,6 +813,7 @@ GameObject* Battlefield::SpawnGameObject(uint32 entry, Position const& pos, G3D: // Add to world map->AddToMap(go); go->setActive(true); + go->SetFarVisible(true); return go; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 59e17e4a4a..cd10148bbb 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1193,8 +1193,8 @@ void MovementInfo::OutDebug() } WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), LastUsedScriptID(0), -m_name(""), m_isActive(false), m_isWorldObject(isWorldObject), m_zoneScript(NULL), -m_transport(NULL), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_currMap(NULL), m_InstanceId(0), +m_name(""), m_isActive(false), m_isFarVisible(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), +m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), _dbPhase(0), m_notifyflags(0), m_executed_notifies(0), m_aiAnimKitId(0), m_movementAnimKitId(0), m_meleeAnimKitId(0) { @@ -1254,6 +1254,14 @@ void WorldObject::setActive(bool on) } } +void WorldObject::SetFarVisible(bool on) +{ + if (GetTypeId() == TYPEID_PLAYER) + return; + + m_isFarVisible = on; +} + void WorldObject::CleanupsBeforeDelete(bool /*finalCleanup*/) { if (IsInWorld()) @@ -1704,7 +1712,7 @@ float WorldObject::GetGridActivationRange() const float WorldObject::GetVisibilityRange() const { - if (isActiveObject() && !ToPlayer()) + if (IsFarVisible() && !ToPlayer()) return MAX_VISIBILITY_DISTANCE; else return GetMap()->GetVisibilityRange(); @@ -1716,7 +1724,7 @@ float WorldObject::GetSightRange(const WorldObject* target) const { if (ToPlayer()) { - if (target && target->isActiveObject() && !target->ToPlayer()) + if (target && target->IsFarVisible() && !target->ToPlayer()) return MAX_VISIBILITY_DISTANCE; else if (ToPlayer()->GetCinematicMgr()->IsOnCinematic()) return DEFAULT_VISIBILITY_INSTANCE; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 142e2689b8..27788e2330 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -632,6 +632,8 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation bool isActiveObject() const { return m_isActive; } void setActive(bool isActiveObject); + bool IsFarVisible() const { return m_isFarVisible; } + void SetFarVisible(bool on); void SetWorldObject(bool apply); bool IsPermanentWorldObject() const { return m_isWorldObject; } bool IsWorldObject() const; @@ -668,6 +670,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation protected: std::string m_name; bool m_isActive; + bool m_isFarVisible; const bool m_isWorldObject; ZoneScript* m_zoneScript; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index fd6704bcdc..a622583e54 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -348,6 +348,7 @@ public: if (Creature* nefarian = me->SummonCreature(NPC_NEFARIAN, NefarianLoc[0])) { nefarian->setActive(true); + nefarian->SetFarVisible(true); nefarian->SetCanFly(true); nefarian->SetDisableGravity(true); nefarian->CastSpell((Unit*)NULL, SPELL_SHADOWFLAME_INITIAL); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp index 4496e017f8..0ed7e25f6d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp @@ -252,6 +252,7 @@ public: { nefarius->SetPhaseMask(1, true); nefarius->setActive(true); + nefarius->SetFarVisible(true); nefarius->Respawn(); nefarius->GetMotionMaster()->MoveTargetedHome(); } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index 30f5e6d011..6289fb2bfb 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -153,6 +153,7 @@ public: Talk(EMOTE_SUMMON); events.SetPhase(PHASE_INTRO); me->setActive(true); + me->SetFarVisible(true); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->GetMotionMaster()->MoveAlongSplineChain(POINT_INTRO_START, SPLINE_CHAIN_INTRO_START, false); HandleTerraceDoors(false); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index 86a7f5a548..f6ddb2c1f7 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -558,6 +558,7 @@ public: { arca->GetMotionMaster()->MovePoint(0, -11010.82f, -1761.18f, 156.47f); arca->setActive(true); + arca->SetFarVisible(true); arca->InterruptNonMeleeSpells(true); arca->SetSpeedRate(MOVE_FLIGHT, 2.0f); } diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp index bed8c4b25c..bdad7f9a17 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp @@ -67,6 +67,7 @@ public: void Reset() override { me->setActive(true); + me->SetFarVisible(true); me->SetVisible(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->SetCanFly(true); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index 6bd77a8101..eabb1d1c32 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -151,6 +151,7 @@ public: { Madrigosa->Respawn(); Madrigosa->setActive(true); + Madrigosa->SetFarVisible(true); IsIntro = true; Madrigosa->SetMaxHealth(me->GetMaxHealth()); Madrigosa->SetHealth(me->GetMaxHealth()); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 1cebe7c96d..935a85b7a4 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -260,6 +260,7 @@ public: me->SetDisableGravity(true); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->setActive(true); + me->SetFarVisible(true); for (uint8 i = 0; i < 4; ++i) if (GameObject* pOrb = GetOrb(i)) @@ -307,6 +308,7 @@ public: pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES); pOrb->SetFaction(FACTION_FRIENDLY); pOrb->setActive(true); + pOrb->SetFarVisible(true); pOrb->Refresh(); } } @@ -319,6 +321,7 @@ public: pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES); pOrb->SetFaction(FACTION_FRIENDLY); pOrb->setActive(true); + pOrb->SetFarVisible(true); pOrb->Refresh(); OrbsEmpowered = (OrbsEmpowered+1)%4; @@ -350,6 +353,7 @@ public: { pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES); pOrb->setActive(true); + pOrb->SetFarVisible(true); pOrb->Refresh(); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index 82e652f526..71a733d2f1 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -383,6 +383,7 @@ void hyjalAI::SummonedCreatureDespawn(Creature* summoned) void hyjalAI::Reset() { me->setActive(true); + me->SetFarVisible(true); Initialize(); @@ -503,6 +504,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3]) creature->SetWalk(false); creature->setActive(true); + creature->SetFarVisible(true); switch (entry) { case NECROMANCER: @@ -1027,6 +1029,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true; ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i; unit->setActive(true); + unit->SetFarVisible(true); } } for (uint8 i = 0; i < 3; ++i)//summon 3 abominations @@ -1039,6 +1042,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true; ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i; unit->setActive(true); + unit->SetFarVisible(true); } } for (uint8 i = 0; i < 5; ++i)//summon 5 gargoyles @@ -1051,6 +1055,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true; ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i; unit->setActive(true); + unit->SetFarVisible(true); } } break; @@ -1068,6 +1073,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true; ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i; unit->setActive(true); + unit->SetFarVisible(true); } } for (uint8 i = 0; i < 25; ++i)//summon 25 ghouls @@ -1080,6 +1086,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true; ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i; unit->setActive(true); + unit->SetFarVisible(true); } } for (uint8 i = 0; i < 5; ++i)//summon 5 abominations @@ -1092,6 +1099,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true; ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i; unit->setActive(true); + unit->SetFarVisible(true); } } break; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index b250721e37..dadf3d5524 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -209,6 +209,7 @@ public: instance = creature->GetInstanceScript(); HadMount = false; me->setActive(true); + me->SetFarVisible(true); } void Initialize() diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 4f0b6ed852..4d89d8f94b 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -182,6 +182,7 @@ public: break; case NPC_LAIRGUARD: summoned->setActive(true); + summoned->SetFarVisible(true); break; } summons.Summon(summoned); diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp index 230f4ee0a0..8427061b6c 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp @@ -82,6 +82,7 @@ public: currentEvent = 0; eventProgress = 0; me->setActive(true); + me->SetFarVisible(true); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp index 67063e471a..f4e926bf3d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp @@ -54,14 +54,17 @@ public: case NPC_TENEBRON: tenebronGUID = creature->GetGUID(); creature->setActive(true); + creature->SetFarVisible(true); break; case NPC_SHADRON: shadronGUID = creature->GetGUID(); creature->setActive(true); + creature->SetFarVisible(true); break; case NPC_VESPERON: vesperonGUID = creature->GetGUID(); creature->setActive(true); + creature->SetFarVisible(true); break; } } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index 0c6fe7ba38..30a6eb7bd4 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -90,6 +90,7 @@ class boss_baltharus_the_warborn : public CreatureScript { case ACTION_INTRO_BALTHARUS: me->setActive(true); + me->SetFarVisible(true); events.ScheduleEvent(EVENT_INTRO_TALK, Seconds(7), 0, PHASE_INTRO); break; case ACTION_CLONE: diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index d8e00e49ac..a20c1bd55a 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -1083,6 +1083,7 @@ class npc_meteor_strike : public CreatureScript { DoCastSelf(SPELL_METEOR_STRIKE_FIRE_AURA_2, true); me->setActive(true); + me->SetFarVisible(true); _events.ScheduleEvent(EVENT_SPAWN_METEOR_FLAME, Milliseconds(500)); } } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp index df89c790d5..73ce04363e 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp @@ -77,6 +77,7 @@ class npc_xerestrasza : public CreatureScript if (action == ACTION_BALTHARUS_DEATH) { me->setActive(true); + me->SetFarVisible(true); _isIntro = false; Talk(SAY_XERESTRASZA_EVENT); @@ -131,6 +132,7 @@ class npc_xerestrasza : public CreatureScript me->SetFlag(UNIT_NPC_FLAGS, GOSSIP_OPTION_QUESTGIVER); Talk(SAY_XERESTRASZA_EVENT_7); me->setActive(false); + me->SetFarVisible(true); break; default: break; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 47178a4007..e97f447c7e 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -276,6 +276,7 @@ class boss_sindragosa : public CreatureScript instance->SetBossState(DATA_SINDRAGOSA, IN_PROGRESS); me->SetCombatPulseDelay(5); me->setActive(true); + me->SetFarVisible(true); DoZoneInCombat(); } @@ -313,6 +314,7 @@ class boss_sindragosa : public CreatureScript return; me->setActive(true); + me->SetFarVisible(true); me->SetCanFly(true); me->SetDisableGravity(true); me->SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); @@ -347,6 +349,7 @@ class boss_sindragosa : public CreatureScript { case POINT_FROSTWYRM_LAND: me->setActive(false); + me->SetFarVisible(true); me->SetCanFly(false); me->SetDisableGravity(false); me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); @@ -701,6 +704,7 @@ class npc_spinestalker : public CreatureScript return; me->setActive(true); + me->SetFarVisible(true); me->SetSpeedRate(MOVE_FLIGHT, 2.0f); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); float moveTime = me->GetExactDist(&SpinestalkerFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f); @@ -719,6 +723,7 @@ class npc_spinestalker : public CreatureScript return; me->setActive(false); + me->SetFarVisible(true); me->SetCanFly(false); me->SetDisableGravity(false); me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); @@ -838,6 +843,7 @@ class npc_rimefang : public CreatureScript return; me->setActive(true); + me->SetFarVisible(true); me->SetSpeedRate(MOVE_FLIGHT, 2.0f); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); float moveTime = me->GetExactDist(&RimefangFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f); @@ -856,6 +862,7 @@ class npc_rimefang : public CreatureScript return; me->setActive(false); + me->SetFarVisible(true); me->SetCanFly(false); me->SetDisableGravity(false); me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 3b770c46f5..f6e6967b41 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -1053,6 +1053,7 @@ class boss_the_lich_king : public CreatureScript triggers.sort(Trinity::ObjectDistanceOrderPred(terenas, true)); Creature* spawner = triggers.front(); spawner->setActive(true); + spawner->SetFarVisible(true); spawner->CastSpell(spawner, SPELL_SUMMON_SPIRIT_BOMB_1, true); // summons bombs randomly spawner->CastSpell(spawner, SPELL_SUMMON_SPIRIT_BOMB_2, true); // summons bombs on players spawner->m_Events.AddEvent(new TriggerWickedSpirit(spawner), spawner->m_Events.CalculateTime(3000)); @@ -1739,6 +1740,7 @@ class npc_terenas_menethil : public CreatureScript { case ACTION_FROSTMOURNE_INTRO: me->setActive(true); + me->SetFarVisible(false); if (!IsHeroic()) me->SetHealth(me->GetMaxHealth() / 2); DoCast(me, SPELL_LIGHTS_FAVOR); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 113ec50a14..35b8aa0ad5 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -418,12 +418,16 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript if (Creature* factionNPC = me->FindNearestCreature(_instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? NPC_SE_HIGH_OVERLORD_SAURFANG : NPC_SE_MURADIN_BRONZEBEARD, 50.0f)) { me->setActive(true); + me->SetFarVisible(true); _theLichKing = theLichKing->GetGUID(); theLichKing->setActive(true); + theLichKing->SetFarVisible(true); _bolvarFordragon = bolvarFordragon->GetGUID(); bolvarFordragon->setActive(true); + bolvarFordragon->SetFarVisible(true); _factionNPC = factionNPC->GetGUID(); factionNPC->setActive(true); + factionNPC->SetFarVisible(true); } } } @@ -515,6 +519,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript { bolvarFordragon->AI()->Talk(SAY_BOLVAR_INTRO_1); bolvarFordragon->setActive(false); + bolvarFordragon->SetFarVisible(false); } break; case EVENT_LK_INTRO_5: @@ -522,6 +527,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript { theLichKing->AI()->Talk(SAY_LK_INTRO_5); theLichKing->setActive(false); + theLichKing->SetFarVisible(false); } break; case EVENT_SAURFANG_INTRO_1: @@ -835,6 +841,7 @@ class boss_sister_svalna : public CreatureScript break; case ACTION_START_GAUNTLET: me->setActive(true); + me->SetFarVisible(true); _isEventInProgress = true; me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); events.ScheduleEvent(EVENT_SVALNA_START, 25000); @@ -847,6 +854,7 @@ class boss_sister_svalna : public CreatureScript break; case ACTION_RESET_EVENT: me->setActive(false); + me->SetFarVisible(false); Reset(); break; default: @@ -870,6 +878,7 @@ class boss_sister_svalna : public CreatureScript _isEventInProgress = false; me->setActive(false); + me->SetFarVisible(false); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); me->SetDisableGravity(false); me->SetHover(false); @@ -1001,6 +1010,7 @@ class npc_crok_scourgebane : public CreatureScript _events.ScheduleEvent(EVENT_CROK_INTRO_3, 14000); _events.ScheduleEvent(EVENT_START_PATHING, 37000); me->setActive(true); + me->SetFarVisible(true); for (uint32 i = 0; i < 4; ++i) if (Creature* crusader = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_CAPTAIN_ARNATH + i))) crusader->AI()->DoAction(ACTION_START_GAUNTLET); @@ -1010,6 +1020,7 @@ class npc_crok_scourgebane : public CreatureScript _isEventActive = false; _isEventDone = _instance->GetBossState(DATA_SISTER_SVALNA) == DONE; me->setActive(false); + me->SetFarVisible(false); _aliveTrash.clear(); _currentWPid = 0; } @@ -1027,6 +1038,7 @@ class npc_crok_scourgebane : public CreatureScript { _isEventActive = false; me->setActive(false); + me->SetFarVisible(false); Talk(SAY_CROK_FINAL_WP); if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA))) svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS); @@ -1056,6 +1068,7 @@ class npc_crok_scourgebane : public CreatureScript { _isEventActive = false; me->setActive(false); + me->SetFarVisible(false); Talk(SAY_CROK_FINAL_WP); if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA))) svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS); @@ -1280,6 +1293,7 @@ struct npc_argent_captainAI : public ScriptedAI } me->setActive(true); + me->SetFarVisible(true); } else if (action == ACTION_RESET_EVENT) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 004ec13e8d..919a4ad4d2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -990,9 +990,10 @@ class instance_icecrown_citadel : public InstanceMapScript // set the platform as active object to dramatically increase visibility range // note: "active" gameobjects do not block grid unloading if (GameObject* precipice = instance->GetGameObject(ArthasPrecipiceGUID)) - precipice->setActive(state == IN_PROGRESS); + precipice->SetFarVisible(state == IN_PROGRESS); + if (GameObject* platform = instance->GetGameObject(ArthasPlatformGUID)) - platform->setActive(state == IN_PROGRESS); + platform->SetFarVisible(state == IN_PROGRESS); if (instance->IsHeroic()) { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index 4e3ec1bd14..89d0542eaf 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -226,6 +226,7 @@ struct boss_four_horsemen_baseAI : public BossAI cBoss->SetReactState(REACT_PASSIVE); cBoss->AttackStop(); // clear initial target that was set on enter combat cBoss->setActive(true); + cBoss->SetFarVisible(true); for (Map::PlayerList::const_iterator it = players.begin(); it != players.end(); ++it) { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 09904dd9bb..2dd4cf5450 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -163,6 +163,7 @@ public: { summons.Summon(summon); summon->setActive(true); + summon->SetFarVisible(true); summon->AI()->DoZoneInCombat(nullptr, 250.0f); // specify range to cover entire room - default 50yd is not enough } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 77d47b892d..dc50bf69b0 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -221,10 +221,17 @@ public: { _JustDied(); me->setActive(false); + me->SetFarVisible(false); if (Creature* stalagg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_STALAGG))) + { stalagg->setActive(false); + stalagg->SetFarVisible(false); + } if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN))) + { feugen->setActive(false); + feugen->SetFarVisible(false); + } Talk(SAY_DEATH); } @@ -262,11 +269,18 @@ public: instance->SetBossState(BOSS_THADDIUS, IN_PROGRESS); me->setActive(true); + me->SetFarVisible(true); DoZoneInCombat(); if (Creature* stalagg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_STALAGG))) + { stalagg->setActive(true); + stalagg->SetFarVisible(true); + } if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN))) + { feugen->setActive(true); + feugen->SetFarVisible(true); + } break; case ACTION_FEUGEN_DIED: if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN))) @@ -335,6 +349,7 @@ public: stalagg->AI()->DoAction(ACTION_BEGIN_RESET_ENCOUNTER); me->setActive(false); + me->SetFarVisible(false); } void ResetEncounter() @@ -525,6 +540,7 @@ public: coil->SetGoState(GO_STATE_READY); me->DespawnOrUnsummon(); me->setActive(false); + me->SetFarVisible(false); } void ResetEncounter() @@ -794,6 +810,7 @@ public: coil->SetGoState(GO_STATE_READY); me->DespawnOrUnsummon(); me->setActive(false); + me->SetFarVisible(false); } void ResetEncounter() diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index 9c99c9a176..2d395eab00 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -407,6 +407,7 @@ class boss_algalon_the_observer : public CreatureScript brann->AI()->DoAction(ACTION_FINISH_INTRO); me->setActive(true); + me->SetFarVisible(true); DoZoneInCombat(); introDelay = 26000; summons.DespawnEntry(NPC_AZEROTH); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 429bcdb6c0..ca07a8b117 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1131,6 +1131,7 @@ class npc_thorim_pre_phase : public CreatureScript npc_thorim_pre_phaseAI(Creature* creature) : npc_thorim_trashAI(creature) { me->setActive(true); // prevent grid unload + me->SetFarVisible(true); } void Reset() override diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 578637611e..9af1b2044b 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -361,6 +361,7 @@ public: init.Launch(); me->setActive(true); + me->SetFarVisible(true); me->SetCanFly(true); me->SetDisableGravity(true); me->SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp index 408b6b422a..71810ff2a5 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp @@ -191,18 +191,22 @@ class instance_serpent_shrine : public InstanceMapScript case 184568: ControlConsole = go->GetGUID(); go->setActive(true); + go->SetFarVisible(true); break; case 184203: BridgePart[0] = go->GetGUID(); go->setActive(true); + go->SetFarVisible(true); break; case 184204: BridgePart[1] = go->GetGUID(); go->setActive(true); + go->SetFarVisible(true); break; case 184205: BridgePart[2] = go->GetGUID(); go->setActive(true); + go->SetFarVisible(true); break; default: break; From c238fd1017d03ae44a053d2403a4ad3693f407d3 Mon Sep 17 00:00:00 2001 From: Cannix Date: Sat, 17 Feb 2018 16:46:26 +0100 Subject: [PATCH 137/178] Core/Spells: Execute item casts immediately instead (#21396) --- src/server/game/Spells/Spell.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 10e3772da7..34b5b1a0f7 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3115,12 +3115,11 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered if (!(_triggeredCastFlags & TRIGGERED_IGNORE_GCD)) TriggerGlobalCooldown(); - //item: first cast may destroy item and second cast causes crash // commented out !m_spellInfo->StartRecoveryTime, it forces instant spells with global cooldown to be processed in spell::update // as a result a spell that passed CheckCast and should be processed instantly may suffer from this delayed process // the easiest bug to observe is LoS check in AddUnitTarget, even if spell passed the CheckCast LoS check the situation can change in spell::update // because target could be relocated in the meantime, making the spell fly to the air (no targets can be registered, so no effects processed, nothing in combat log) - if (!m_casttime && /*!m_spellInfo->StartRecoveryTime && */!m_castItemGUID && GetCurrentContainer() == CURRENT_GENERIC_SPELL) + if (!m_casttime && /*!m_spellInfo->StartRecoveryTime && */ GetCurrentContainer() == CURRENT_GENERIC_SPELL) cast(true); } } From 28a4f1e099d19f13968b9066fd8be7e9beeb09e9 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 17 Feb 2018 17:48:21 +0100 Subject: [PATCH 138/178] rename file --- .../2018_02_17_00_world_from_335_was_2018_02_16_02_world.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sql/updates/world/{3.3.5/2018_02_16_02_world.sql => 4.3.4/2018_02_17_00_world_from_335_was_2018_02_16_02_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_02_16_02_world.sql b/sql/updates/world/4.3.4/2018_02_17_00_world_from_335_was_2018_02_16_02_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_16_02_world.sql rename to sql/updates/world/4.3.4/2018_02_17_00_world_from_335_was_2018_02_16_02_world.sql From c20af5267c509eea387fa606d75682513983bd77 Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Sat, 17 Feb 2018 21:06:01 +0100 Subject: [PATCH 139/178] DB/Loot: Reference template 24068 corrections Closes #21416 --- .../world/3.3.5/2018_02_17_00_world_335.sql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_17_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_17_00_world_335.sql new file mode 100644 index 0000000000..4bb884d99b --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_00_world_335.sql @@ -0,0 +1,14 @@ +-- +-- Remove unique items from reference table 24068 +DELETE FROM `reference_loot_template` WHERE `Entry`=24068 AND `Item` IN (897, 1351, 2015, 2017, 3053, 3336, 4723); +-- Add former items from reference table 24068 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (897, 1351, 2015, 2017, 3053, 3336, 4723); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(206, 897, 0.1, 0, "Nightbane Vile Fang - Madwolf Bracers"), +(3808, 1351, 0.1, 0, "Forsaken Dark Stalker - Fingerbone Bracers"), +(570, 2015, 1, 0, "Brain Eater - Black Metal War Axe"), +(785, 2017, 1, 0, "Skeletal Warder - Glowing Leather Bracers"), +(2344, 3053, 2.5, 0, "Dun Garok Mountaineer - Humbert's Chestpiece"), +(2368, 3336, 0.1, 0, "Daggerspine Shorestalker - Flesh Piercer"), +(2370, 3336, 0.1, 0, "Daggerspine Screamer - Flesh Piercer"), +(2346, 4723, 2.5, 0, "Dun Garok Priest - Humbert's Pants"); From 0e9a0decafa89241d921d2c9bd9a08d1b530d453 Mon Sep 17 00:00:00 2001 From: Teppic1 Date: Sat, 17 Feb 2018 21:13:23 +0100 Subject: [PATCH 140/178] DB/Loot: Reference template 24066 corrections Closes #21409 --- .../world/3.3.5/2018_02_17_01_world_335.sql | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_17_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_01_world_335.sql b/sql/updates/world/3.3.5/2018_02_17_01_world_335.sql new file mode 100644 index 0000000000..97fc90e52b --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_01_world_335.sql @@ -0,0 +1,15 @@ +-- +-- Remove unique items from reference table 24066 +DELETE FROM `reference_loot_template` WHERE `Entry`=24066 AND `Item` IN (886, 1077, 2013, 2227, 2233, 2566, 3204, 3569, 6315); +-- Add former items from reference table 24066 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (886, 1077, 2013, 2227, 2233, 2566, 3204, 3569, 6315); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(210, 886, 0.1, 0, "Bone Chewer - Black Metal Shortsword"), +(910, 1077, 0.1, 0, "Defias Enchanter - Defias Mage Ring"), +(787, 2013, 0.1, 0, "Skeletal Healer - Cryptbone Staff"), +(892, 2227, 0.1, 0, "Splinter Fist Taskmaster - Heavy Ogre War Axe"), +(533, 2233, 0.1, 0, "Nightbane Shadow Weaver - Shadow Weaver Leggings"), +(397, 2566, 1.5, 0, "Morganth - Sacrificial Robes"), +(2372, 3204, 0.1, 0, "Mudsnout Gnoll - Deepwood Bracers"), +(4517, 3569, 1.5, 0, "Death's Head Priest - Vicar's Robe"), +(6523, 6315, 0.1, 0, "Dark Iron Rifleman - Steelarrow Crossbow"); From 3adfc66859c8a5bb013cf2c027c49457c4146f3a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 18 Feb 2018 17:58:58 +0100 Subject: [PATCH 141/178] Core/Scripts: implement Drain Mana breaking some auras on hit --- .../world/3.3.5/2018_02_17_02_world_335.sql | 4 +++ src/server/scripts/Spells/spell_generic.cpp | 19 ++++++++++++ src/server/scripts/Spells/spell_priest.cpp | 29 ------------------- 3 files changed, 23 insertions(+), 29 deletions(-) create mode 100644 sql/updates/world/3.3.5/2018_02_17_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_02_world_335.sql b/sql/updates/world/3.3.5/2018_02_17_02_world_335.sql new file mode 100644 index 0000000000..5ff208273e --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_02_world_335.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_mana_burn','spell_gen_clear_fear_poly'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(5138, 'spell_gen_clear_fear_poly'), +(8129, 'spell_gen_clear_fear_poly'); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 6de9a63ba3..0189d95339 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -922,6 +922,24 @@ enum Clone SPELL_NIGHTMARE_FIGMENT_MIRROR_IMAGE = 57528 }; +// 5138 - Drain Mana +// 8129 - Mana Burn +class spell_gen_clear_fear_poly : public SpellScript +{ + PrepareSpellScript(spell_gen_clear_fear_poly); + + void HandleAfterHit() + { + if (Unit* unitTarget = GetHitUnit()) + unitTarget->RemoveAurasWithMechanic((1 << MECHANIC_FEAR) | (1 << MECHANIC_POLYMORPH)); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_gen_clear_fear_poly::HandleAfterHit); + } +}; + class spell_gen_clone : public SpellScriptLoader { public: @@ -4380,6 +4398,7 @@ void AddSC_generic_spell_scripts() new spell_gen_burning_depths_necrolyte_image(); new spell_gen_cannibalize(); new spell_gen_chaos_blast(); + RegisterSpellScript(spell_gen_clear_fear_poly); new spell_gen_clone(); new spell_gen_clone_weapon(); new spell_gen_clone_weapon_aura(); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 6b44155e25..0a5b3277d5 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -628,34 +628,6 @@ class spell_pri_lightwell_renew : public SpellScriptLoader } }; -// 8129 - Mana Burn -class spell_pri_mana_burn : public SpellScriptLoader -{ - public: - spell_pri_mana_burn() : SpellScriptLoader("spell_pri_mana_burn") { } - - class spell_pri_mana_burn_SpellScript : public SpellScript - { - PrepareSpellScript(spell_pri_mana_burn_SpellScript); - - void HandleAfterHit() - { - if (Unit* unitTarget = GetHitUnit()) - unitTarget->RemoveAurasWithMechanic((1 << MECHANIC_FEAR) | (1 << MECHANIC_POLYMORPH)); - } - - void Register() override - { - AfterHit += SpellHitFn(spell_pri_mana_burn_SpellScript::HandleAfterHit); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_pri_mana_burn_SpellScript; - } -}; - // 28305 - Mana Leech (Passive) (Priest Pet Aura) class spell_pri_mana_leech : public SpellScriptLoader { @@ -1303,7 +1275,6 @@ void AddSC_priest_spell_scripts() new spell_pri_guardian_spirit(); new spell_pri_leap_of_faith_effect_trigger(); new spell_pri_lightwell_renew(); - new spell_pri_mana_burn(); new spell_pri_mana_leech(); new spell_pri_mind_sear(); new spell_pri_pain_and_suffering_proc(); From e219b3f94084d20de667ade024df2e950f1fb2ea Mon Sep 17 00:00:00 2001 From: ariel- Date: Sat, 17 Feb 2018 17:50:05 -0300 Subject: [PATCH 142/178] Core/Auras: fixed Drain Mana breaking early if caster has Mana Feed talent but no active pet --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index ee69d861ae..1757ee95a2 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5969,14 +5969,13 @@ void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) con target->AddThreat(caster, float(gainedAmount) * 0.5f, GetSpellInfo()->GetSchoolMask(), GetSpellInfo()); } - // Drain Mana - if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK - && m_spellInfo->SpellFamilyFlags[0] & 0x00000010) + // Drain Mana - Mana Feed effect + if (caster->GetGuardianPet() && m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK && m_spellInfo->SpellFamilyFlags[0] & 0x00000010) { int32 manaFeedVal = 0; - if (AuraEffect const* aurEff = GetBase()->GetEffect(1)) + if (AuraEffect const* aurEff = GetBase()->GetEffect(EFFECT_1)) manaFeedVal = aurEff->GetAmount(); - // Mana Feed - Drain Mana + if (manaFeedVal > 0) { int32 feedAmount = CalculatePct(gainedAmount, manaFeedVal); From 12756609feb3d104a14ce6b95fafe3692621f78c Mon Sep 17 00:00:00 2001 From: Killyana Date: Sat, 17 Feb 2018 22:08:01 +0100 Subject: [PATCH 143/178] DB/SAI: Fix text target related to Battle at Valhalas quests --- sql/updates/world/3.3.5/2018_02_17_03_world.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_17_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_03_world.sql b/sql/updates/world/3.3.5/2018_02_17_03_world.sql new file mode 100644 index 0000000000..e06a081832 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_03_world.sql @@ -0,0 +1,5 @@ +-- +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN (31135,3113500,3113501,3113502,3113503,3113504,3113505,3113506) AND `source_type` IN (0,9) AND `target_type`=7; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (31135) AND `source_type`=0 AND `id`=42; +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 +(31135, 0, 42, 0, 19, 0, 100, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "Geirrvif - On quest taken - Store target"); From d22969c42230729b18b60ba54ce6d9f293a97e6a Mon Sep 17 00:00:00 2001 From: Killyana Date: Sat, 17 Feb 2018 22:26:22 +0100 Subject: [PATCH 144/178] DB/SAI: Fix text target related to The Ring of Blood quests --- sql/updates/world/3.3.5/2018_02_17_04_world.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_17_04_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_04_world.sql b/sql/updates/world/3.3.5/2018_02_17_04_world.sql new file mode 100644 index 0000000000..bd8643534e --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_04_world.sql @@ -0,0 +1,6 @@ +-- +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN (18471) AND `source_type` IN (0) AND `target_type`=7 AND `action_type`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (18471) AND `source_type`=0 AND `id`=28; +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 +(18471, 0, 28, 0, 19, 0, 100, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "Gurgthock - On quest taken - Store target"); + From 3cd5030e3ef06f6a5b66e0598c00408e9252cc6d Mon Sep 17 00:00:00 2001 From: Killyana Date: Sat, 17 Feb 2018 22:33:38 +0100 Subject: [PATCH 145/178] DB/SAI: Fix text target related to The Amphitheater of Anguish quests --- sql/updates/world/3.3.5/2018_02_17_05_world.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_17_05_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_05_world.sql b/sql/updates/world/3.3.5/2018_02_17_05_world.sql new file mode 100644 index 0000000000..bcf0b3fc68 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_05_world.sql @@ -0,0 +1,5 @@ +-- +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid` IN (30007) AND `source_type` IN (0) AND `target_type`=7 AND `action_type`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (30007) AND `source_type`=0 AND `id`=20; +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 +(30007, 0, 20, 0, 19, 0, 100, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, "Gurgthock - On quest taken - Store target"); From 263617f81fb2e05c2e9bec05f739ee37ee524a94 Mon Sep 17 00:00:00 2001 From: sirikfoll Date: Sat, 17 Feb 2018 20:11:37 -0200 Subject: [PATCH 146/178] Scripts/Icecrown Citadel: Prevent Lady Deathwhisper movement during first phase. --- .../IcecrownCitadel/boss_lady_deathwhisper.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index a0dfbf3c47..b2a058469c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -286,10 +286,10 @@ class boss_lady_deathwhisper : public CreatureScript return; } + _phase = PHASE_ONE; me->SetCombatPulseDelay(5); me->setActive(true); DoZoneInCombat(); - _phase = PHASE_ONE; scheduler.CancelGroup(GROUP_INTRO); // phase-independent events scheduler @@ -363,10 +363,10 @@ class boss_lady_deathwhisper : public CreatureScript darnavan->SetReactState(REACT_PASSIVE); darnavan->m_Events.AddEvent(new DaranavanMoveEvent(*darnavan), darnavan->m_Events.CalculateTime(10000)); darnavan->AI()->Talk(SAY_DARNAVAN_RESCUED); - + if (!killer) return; - + if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) { if (Group* group = owner->GetGroup()) @@ -887,10 +887,10 @@ class npc_darnavan : public CreatureScript void JustDied(Unit* killer) override { _events.Reset(); - + if (!killer) return; - + if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) { if (Group* group = owner->GetGroup()) From c4342a775689c73d85a8d59df1c2885936fe0a61 Mon Sep 17 00:00:00 2001 From: Killyana Date: Sat, 17 Feb 2018 23:23:21 +0100 Subject: [PATCH 147/178] DB/SAI: Fix text target related to Sasha quests --- sql/updates/world/3.3.5/2018_02_17_06_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_17_06_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_06_world.sql b/sql/updates/world/3.3.5/2018_02_17_06_world.sql new file mode 100644 index 0000000000..34de419964 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_17_06_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `target_type`=1 WHERE `entryorguid` IN (26935,2693501,2693500) AND `source_type` IN (0,9) AND `target_type`=7 AND `action_type`=1; From 4a7089b10a4f2dec2445933583ece93ad82cc2de Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 17 Feb 2018 23:26:50 +0100 Subject: [PATCH 148/178] Core/Misc: ASSERT() cleanup Move some functions calls out of ASSERT() calls. ASSERT() should only apply checks without modifying any object and without having any side effect. --- src/server/game/DataStores/DBCStores.cpp | 6 ++++-- src/server/game/Entities/Vehicle/Vehicle.cpp | 5 ++++- src/server/game/Groups/Group.cpp | 3 ++- src/server/game/Tools/PlayerDump.cpp | 9 ++++++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp index e71768912f..240dc156ed 100644 --- a/src/server/game/DataStores/DBCStores.cpp +++ b/src/server/game/DataStores/DBCStores.cpp @@ -524,7 +524,8 @@ void LoadDBCStores(const std::string& dataPath) ASSERT(namesProfanity->Language < TOTAL_LOCALES || namesProfanity->Language == -1); std::wstring wname; - ASSERT(Utf8toWStr(namesProfanity->Name, wname)); + bool conversionResult = Utf8toWStr(namesProfanity->Name, wname); + ASSERT(conversionResult); if (namesProfanity->Language != -1) NamesProfaneValidators[namesProfanity->Language].emplace_back(wname, Trinity::regex::perl | Trinity::regex::icase | Trinity::regex::optimize); @@ -541,7 +542,8 @@ void LoadDBCStores(const std::string& dataPath) ASSERT(namesReserved->Language < TOTAL_LOCALES || namesReserved->Language == -1); std::wstring wname; - ASSERT(Utf8toWStr(namesReserved->Name, wname)); + bool conversionResult = Utf8toWStr(namesReserved->Name, wname); + ASSERT(conversionResult); if (namesReserved->Language != -1) NamesReservedValidators[namesReserved->Language].emplace_back(wname, Trinity::regex::perl | Trinity::regex::icase | Trinity::regex::optimize); diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index e39aef40ce..0fd8ec92ed 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -862,7 +862,10 @@ bool VehicleJoinEvent::Execute(uint64, uint32) if (Target->GetBase()->GetTypeId() == TYPEID_UNIT && Passenger->GetTypeId() == TYPEID_PLAYER && Seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_CAN_CONTROL) - ASSERT(Target->GetBase()->SetCharmedBy(Passenger, CHARM_TYPE_VEHICLE)); // SMSG_CLIENT_CONTROL + { + bool charmedByResult = Target->GetBase()->SetCharmedBy(Passenger, CHARM_TYPE_VEHICLE); // SMSG_CLIENT_CONTROL + ASSERT(charmedByResult); + } Passenger->SendClearTarget(); // SMSG_BREAK_TARGET Passenger->SetControlled(true, UNIT_STATE_ROOT); // SMSG_FORCE_ROOT - In some cases we send SMSG_SPLINE_MOVE_ROOT here (for creatures) diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index d3a7d21687..11e32cd749 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -152,7 +152,8 @@ bool Group::Create(Player* leader) Group::ConvertLeaderInstancesToGroup(leader, this, false); - ASSERT(AddMember(leader)); // If the leader can't be added to a new group because it appears full, something is clearly wrong. + bool addMemberResult = AddMember(leader); + ASSERT(addMemberResult); // If the leader can't be added to a new group because it appears full, something is clearly wrong. } else if (!AddMember(leader)) return false; diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index af05314e4d..1057f8fec1 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -169,10 +169,12 @@ std::vector CharacterTables; inline bool StringsEqualCaseInsensitive(std::string const& left, std::string const& right) { std::string upperLeftString = left; - ASSERT(Utf8ToUpperOnlyLatin(upperLeftString)); + bool leftResult = Utf8ToUpperOnlyLatin(upperLeftString); + ASSERT(leftResult); std::string upperRightString = right; - ASSERT(Utf8ToUpperOnlyLatin(upperRightString)); + bool rightResult = Utf8ToUpperOnlyLatin(upperRightString); + ASSERT(rightResult); return upperLeftString == upperRightString; } @@ -271,7 +273,8 @@ void PlayerDump::InitializeTables() TableField f; f.FieldName = columnName; - ASSERT(Utf8ToUpperOnlyLatin(columnName)); + bool toUpperResult = Utf8ToUpperOnlyLatin(columnName); + ASSERT(toUpperResult); t.TableFields.emplace_back(std::move(f)); } while (result->NextRow()); From bb70a60ba710e687cc6b3e03c08700de3b1069b1 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sat, 17 Feb 2018 23:29:34 +0100 Subject: [PATCH 149/178] Core/Misc: Add PERFORMANCE_PROFILING CMake option Add a new CMake option called PERFORMANCE_PROFILING that should be used only when profiling the performance. This option is unsupported, do not report any issue happening when enabling this option. --- cmake/showoptions.cmake | 7 +++++++ src/common/Debugging/Errors.h | 5 +++++ src/common/Logging/Log.h | 6 ++++-- src/common/Metric/Metric.h | 5 ++++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake index f87c51e6e5..7127c96bb0 100644 --- a/cmake/showoptions.cmake +++ b/cmake/showoptions.cmake @@ -105,6 +105,13 @@ if ( HELGRIND ) add_definitions(-DHELGRIND) endif() +if ( PERFORMANCE_PROFILING ) + message("") + message(" *** PERFORMANCE_PROFILING - WARNING!") + message(" *** Please note that this is for PERFORMANCE PROFILING only! Do NOT report any issue when enabling this configuration!") + add_definitions(-DPERFORMANCE_PROFILING) +endif() + if (BUILD_SHARED_LIBS) message("") message(" *** WITH_DYNAMIC_LINKING - INFO!") diff --git a/src/common/Debugging/Errors.h b/src/common/Debugging/Errors.h index 867040ed82..ecb8284e9d 100644 --- a/src/common/Debugging/Errors.h +++ b/src/common/Debugging/Errors.h @@ -52,7 +52,12 @@ namespace Trinity #define WPWarning(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END #define WPAbort() ASSERT_BEGIN do { Trinity::Abort(__FILE__, __LINE__, __FUNCTION__); } while(0) ASSERT_END +#ifdef PERFORMANCE_PROFILING +#define ASSERT(cond, ...) ((void)0) +#else #define ASSERT WPAssert +#endif + #define ABORT WPAbort template inline T* ASSERT_NOTNULL(T* pointer) diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h index bd91866784..fe84a4cc6b 100644 --- a/src/common/Logging/Log.h +++ b/src/common/Logging/Log.h @@ -166,8 +166,10 @@ inline bool Log::ShouldLog(std::string const& type, LogLevel level) const } \ } -#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS -void check_args(const char*, ...) ATTR_PRINTF(1, 2); +#ifdef PERFORMANCE_PROFILING +#define TC_LOG_MESSAGE_BODY(filterType__, level__, ...) ((void)0) +#elif TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS +void check_args(char const*, ...) ATTR_PRINTF(1, 2); void check_args(std::string const&, ...); // This will catch format errors on build time diff --git a/src/common/Metric/Metric.h b/src/common/Metric/Metric.h index 91a0210c90..ec95f20eec 100644 --- a/src/common/Metric/Metric.h +++ b/src/common/Metric/Metric.h @@ -116,7 +116,10 @@ public: #define sMetric Metric::instance() -#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS +#ifdef PERFORMANCE_PROFILING +#define TC_METRIC_EVENT(category, title, description) ((void)0) +#define TC_METRIC_VALUE(category, value) ((void)0) +#elif TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS #define TC_METRIC_EVENT(category, title, description) \ do { \ if (sMetric->IsEnabled()) \ From be2a17f191a59abd0787549a506dfab395fc1d26 Mon Sep 17 00:00:00 2001 From: Wilcalaf Date: Sun, 18 Feb 2018 04:02:58 +0200 Subject: [PATCH 150/178] Scripts/Nexus: Fixed a rare bug when sometimes Magus telestra managed to die while invisible preventing players from looting. (#21436) --- .../scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index 90b7bdf37c..a0d3e876f2 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -150,7 +150,7 @@ public: void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); - + me->SetVisible(true); instance->SetBossState(DATA_MAGUS_TELESTRA, DONE); } From 86f03d79cc9d36bc615960faadfd43c83ce0305d Mon Sep 17 00:00:00 2001 From: jackpoz Date: Sun, 18 Feb 2018 12:20:25 +0100 Subject: [PATCH 151/178] Core/Spells: Revert SPELL_ATTR2_IGNORE_ITEM_CHECK to unknown Revert SPELL_ATTR2_IGNORE_ITEM_CHECK to unknown, too many spells unrelated to items have this attribute and the current handling was causing exploits with "Mote of Water" and other elements. Fix #19547 --- src/server/game/Miscellaneous/SharedDefines.h | 2 +- src/server/game/Spells/Spell.cpp | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 92792c951e..b6b8ffaf6b 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -429,7 +429,7 @@ enum SpellAttr2 SPELL_ATTR2_UNK25 = 0x02000000, // 25 SPELL_ATTR2_UNAFFECTED_BY_AURA_SCHOOL_IMMUNE = 0x04000000, // 26 unaffected by school immunity SPELL_ATTR2_UNK27 = 0x08000000, // 27 - SPELL_ATTR2_IGNORE_ITEM_CHECK = 0x10000000, // 28 Spell is cast without checking item requirements (charges/reagents/totem) + SPELL_ATTR2_UNK28 = 0x10000000, // 28 SPELL_ATTR2_CANT_CRIT = 0x20000000, // 29 Spell can't crit SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC = 0x40000000, // 30 spell can trigger even if triggered SPELL_ATTR2_FOOD_BUFF = 0x80000000 // 31 Food or Drink Buff (like Well Fed) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 34b5b1a0f7..a5a0f23725 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6306,9 +6306,6 @@ SpellCastResult Spell::CheckItems(uint32* param1 /*= nullptr*/, uint32* param2 / if (!player) return SPELL_CAST_OK; - if (m_spellInfo->HasAttribute(SPELL_ATTR2_IGNORE_ITEM_CHECK)) - return SPELL_CAST_OK; - if (!m_CastItem) { if (m_castItemGUID) From e3423b4298d150ba470278105146765beff09cb4 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 18 Feb 2018 18:39:07 +0100 Subject: [PATCH 152/178] Core/DBUpdater: Improve message when base SQL file is missing --- src/server/database/Updater/DBUpdater.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/database/Updater/DBUpdater.cpp b/src/server/database/Updater/DBUpdater.cpp index 3d3576d986..6922be3688 100644 --- a/src/server/database/Updater/DBUpdater.cpp +++ b/src/server/database/Updater/DBUpdater.cpp @@ -287,10 +287,12 @@ bool DBUpdater::Populate(DatabaseWorkerPool& pool) } case LOCATION_DOWNLOAD: { + const char* filename = base.filename().generic_string().c_str(); + const char* workdir = boost::filesystem::current_path().generic_string().c_str(); TC_LOG_ERROR("sql.updates", ">> File \"%s\" is missing, download it from \"https://t.me/trinitycorelegacy\"" \ " Mirror: \"https://github.com/TrinityCoreLegacy/TrinityCore/releases\"" \ - " uncompress it and place the file TDB_full_world_(a_variable_name).sql where your worldserver binary is located.", base.filename().generic_string().c_str()); - break; + " uncompress it and place the file \"%s\" in the directory \"%s\".", filename, filename, workdir); + break; } } return false; From 4b5dcbf74bccde198c3e1b48fbf642664fa88de5 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 18 Feb 2018 19:01:43 +0100 Subject: [PATCH 153/178] rename files --- ...018_02_18_00_world_from_335_was_2018_02_17_00_world_335.sql} | 2 ++ ...018_02_18_01_world_from_335_was_2018_02_17_01_world_335.sql} | 2 ++ ...018_02_18_02_world_from_335_was_2018_02_17_02_world_335.sql} | 2 ++ .../2018_02_18_03_world_from_335_was_2018_02_17_03_world.sql} | 0 .../2018_02_18_04_world_from_335_was_2018_02_17_04_world.sql} | 0 .../2018_02_18_05_world_from_335_was_2018_02_17_05_world.sql} | 0 .../2018_02_18_06_world_from_335_was_2018_02_17_06_world.sql} | 0 7 files changed, 6 insertions(+) rename sql/updates/world/{3.3.5/2018_02_17_00_world_335.sql => 4.3.4/2018_02_18_00_world_from_335_was_2018_02_17_00_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_17_01_world_335.sql => 4.3.4/2018_02_18_01_world_from_335_was_2018_02_17_01_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_17_02_world_335.sql => 4.3.4/2018_02_18_02_world_from_335_was_2018_02_17_02_world_335.sql} (97%) rename sql/updates/world/{3.3.5/2018_02_17_03_world.sql => 4.3.4/2018_02_18_03_world_from_335_was_2018_02_17_03_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_17_04_world.sql => 4.3.4/2018_02_18_04_world_from_335_was_2018_02_17_04_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_17_05_world.sql => 4.3.4/2018_02_18_05_world_from_335_was_2018_02_17_05_world.sql} (100%) rename sql/updates/world/{3.3.5/2018_02_17_06_world.sql => 4.3.4/2018_02_18_06_world_from_335_was_2018_02_17_06_world.sql} (100%) diff --git a/sql/updates/world/3.3.5/2018_02_17_00_world_335.sql b/sql/updates/world/4.3.4/2018_02_18_00_world_from_335_was_2018_02_17_00_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_17_00_world_335.sql rename to sql/updates/world/4.3.4/2018_02_18_00_world_from_335_was_2018_02_17_00_world_335.sql index 4bb884d99b..89ff8c5dea 100644 --- a/sql/updates/world/3.3.5/2018_02_17_00_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_18_00_world_from_335_was_2018_02_17_00_world_335.sql @@ -1,3 +1,4 @@ +/* -- -- Remove unique items from reference table 24068 DELETE FROM `reference_loot_template` WHERE `Entry`=24068 AND `Item` IN (897, 1351, 2015, 2017, 3053, 3336, 4723); @@ -12,3 +13,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Com (2368, 3336, 0.1, 0, "Daggerspine Shorestalker - Flesh Piercer"), (2370, 3336, 0.1, 0, "Daggerspine Screamer - Flesh Piercer"), (2346, 4723, 2.5, 0, "Dun Garok Priest - Humbert's Pants"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_17_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_18_01_world_from_335_was_2018_02_17_01_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_17_01_world_335.sql rename to sql/updates/world/4.3.4/2018_02_18_01_world_from_335_was_2018_02_17_01_world_335.sql index 97fc90e52b..4c94f1e5a9 100644 --- a/sql/updates/world/3.3.5/2018_02_17_01_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_18_01_world_from_335_was_2018_02_17_01_world_335.sql @@ -1,3 +1,4 @@ +/* -- -- Remove unique items from reference table 24066 DELETE FROM `reference_loot_template` WHERE `Entry`=24066 AND `Item` IN (886, 1077, 2013, 2227, 2233, 2566, 3204, 3569, 6315); @@ -13,3 +14,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Com (2372, 3204, 0.1, 0, "Mudsnout Gnoll - Deepwood Bracers"), (4517, 3569, 1.5, 0, "Death's Head Priest - Vicar's Robe"), (6523, 6315, 0.1, 0, "Dark Iron Rifleman - Steelarrow Crossbow"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_17_02_world_335.sql b/sql/updates/world/4.3.4/2018_02_18_02_world_from_335_was_2018_02_17_02_world_335.sql similarity index 97% rename from sql/updates/world/3.3.5/2018_02_17_02_world_335.sql rename to sql/updates/world/4.3.4/2018_02_18_02_world_from_335_was_2018_02_17_02_world_335.sql index 5ff208273e..54fb7cd580 100644 --- a/sql/updates/world/3.3.5/2018_02_17_02_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_18_02_world_from_335_was_2018_02_17_02_world_335.sql @@ -1,4 +1,6 @@ +/* DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_mana_burn','spell_gen_clear_fear_poly'); INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (5138, 'spell_gen_clear_fear_poly'), (8129, 'spell_gen_clear_fear_poly'); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_17_03_world.sql b/sql/updates/world/4.3.4/2018_02_18_03_world_from_335_was_2018_02_17_03_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_17_03_world.sql rename to sql/updates/world/4.3.4/2018_02_18_03_world_from_335_was_2018_02_17_03_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_04_world.sql b/sql/updates/world/4.3.4/2018_02_18_04_world_from_335_was_2018_02_17_04_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_17_04_world.sql rename to sql/updates/world/4.3.4/2018_02_18_04_world_from_335_was_2018_02_17_04_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_05_world.sql b/sql/updates/world/4.3.4/2018_02_18_05_world_from_335_was_2018_02_17_05_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_17_05_world.sql rename to sql/updates/world/4.3.4/2018_02_18_05_world_from_335_was_2018_02_17_05_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_17_06_world.sql b/sql/updates/world/4.3.4/2018_02_18_06_world_from_335_was_2018_02_17_06_world.sql similarity index 100% rename from sql/updates/world/3.3.5/2018_02_17_06_world.sql rename to sql/updates/world/4.3.4/2018_02_18_06_world_from_335_was_2018_02_17_06_world.sql From 987689ce807f90d81ed185e5e6901aed5db1ef80 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:03:33 +0100 Subject: [PATCH 154/178] DB/Gossip: Jediga Closes #21440 --- sql/updates/world/3.3.5/2018_02_19_01_world_335.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_01_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_01_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_01_world_335.sql new file mode 100644 index 0000000000..d06c226d3e --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_01_world_335.sql @@ -0,0 +1,5 @@ +-- Jediga --> Add Gossip Text +UPDATE `creature_template` SET `gossip_menu_id`=4722 WHERE `entry`=8587; +DELETE FROM `gossip_menu` WHERE `MenuID`=4722; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(4722,2036,0); From 7ab8a8746051a1ee3863aada71bce12302c78573 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:04:35 +0100 Subject: [PATCH 155/178] DB/Gossip: J.D. Collie Closes #21442 --- .../world/3.3.5/2018_02_19_02_world_335.sql | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_02_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_02_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_02_world_335.sql new file mode 100644 index 0000000000..889d31f533 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_02_world_335.sql @@ -0,0 +1,29 @@ +-- J.D. Collie gossip options and conditions +DELETE FROM `gossip_menu` WHERE `MenuID`=2184 AND `TextID`=2833; +DELETE FROM `gossip_menu` WHERE `MenuID` IN (2200,2202,2203,2204); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(2184,2833,0), +(2200,2834,0), +(2202,2836,0), +(2203,2837,0), +(2204,2838,0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=2184; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14,2184,2833,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2833 if quest 'Making Sense of It' is rewarded"), +(15,2184,0,0,0,8,0,4321,0,0,0,0,0,"","Show gossip option 0 if quest 'Making Sense of It' is rewarded"), +(15,2184,1,0,0,8,0,4321,0,0,0,0,0,"","Show gossip option 1 if quest 'Making Sense of It' is rewarded"), +(15,2184,2,0,0,8,0,4321,0,0,0,0,0,"","Show gossip option 2 if quest 'Making Sense of It' is rewarded"), +(15,2184,3,0,0,8,0,4321,0,0,0,0,0,"","Show gossip option 3 if quest 'Making Sense of It' is rewarded"), +(15,2184,3,0,0,2,0,11482,1,1,1,0,0,"","Show gossip option 3 if player does not have item 'Crystal Pylon User's Manual'"); + +DELETE FROM `gossip_menu_option` WHERE `MenuID`=2184; +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(2184,0,0,"Tell me more about the Eastern Crystal Pylon.",5186,1,1,2200,0,0,0,"",0,0), +(2184,1,0,"Tell me more about the Northern Crystal Pylon.",5188,1,1,2202,0,0,0,"",0,0), +(2184,2,0,"Tell me more about the Western Crystal Pylon.",5190,1,1,2203,0,0,0,"",0,0), +(2184,3,0,"I lost my Crystal Pylon User's Manual and need another one.",5191,1,1,2204,0,0,0,"",0,0); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=9117 AND `source_type`=0 AND `id`=1; +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 +(9117,0,1,0,62,0,100,0,2184,3,0,0,85,15211,0,0,0,0,0,7,0,0,0,0,0,0,0,"J.D. Collie - On Gossip Option 3 Selected - Invoker Cast 'Create Pylon User's Manual'"); From 0c81e81e984d56a7652119e61d800b0985f51131 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:05:38 +0100 Subject: [PATCH 156/178] DB/Creature: A-Me 01 Closes #21443 --- sql/updates/world/3.3.5/2018_02_19_03_world_335.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_03_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_03_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_03_world_335.sql new file mode 100644 index 0000000000..1542db02d8 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_03_world_335.sql @@ -0,0 +1,2 @@ +-- Add Standstate Dead to A-Me 01 +UPDATE `creature_addon` SET `bytes1`=7 WHERE `guid`=24268; From 82d7be5649ab3593b31bbce783a8ee8c623bd486 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:34:24 +0100 Subject: [PATCH 157/178] DB/Creature: Un'Goro Thunderer Closes #21444 --- .../world/3.3.5/2018_02_19_04_world_335.sql | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_04_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_04_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_04_world_335.sql new file mode 100644 index 0000000000..326c64f6a5 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_04_world_335.sql @@ -0,0 +1,15 @@ +-- Un'Goro Thunderer +DELETE FROM `smart_scripts` WHERE `entryorguid`=-24081 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=651600 AND `source_type`=9; +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 +(-24081,0,0,0,0,0,100,0,5000,5000,9000,15000,11,12553,0,0,0,0,0,2,0,0,0,0,0,0,0,"Un'Goro Thunderer - In Combat - Cast 'Shock'"), +(-24081,0,1,0,1,0,100,0,15000,30000,150000,180000,80,651600,0,0,0,0,0,1,0,0,0,0,0,0,0,"Un'Goro Thunderer - Out of Combat - Run Script"), +(-24081,0,2,0,4,0,100,0,0,0,0,0,91,7,0,0,0,0,0,1,0,0,0,0,0,0,0,"Un'Goro Thunderer - On Aggro - Remove Flag Standstate Dead"), +(651600,9,0,0,0,0,100,0,0,0,0,0,90,7,0,0,0,0,0,1,0,0,0,0,0,0,0,"Un'Goro Thunderer - On Script - Set Flag Standstate Dead"), +(651600,9,1,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Un'Goro Thunderer - On Script - Say Line 0"), +(651600,9,2,0,0,0,100,0,60000,60000,0,0,91,7,0,0,0,0,0,1,0,0,0,0,0,0,0,"Un'Goro Thunderer - On Script - Remove Flag Standstate Dead"); + +DELETE FROM `creature_text` WHERE `CreatureID`=6516; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(6516,0,0,"%s looks tired. He then yawns and lies down next to A-Me 01.",16,0,100,0,0,0,5045,0,"Un'Goro Thunderer"), +(6516,0,1,"%s snores loudly and cuddles up next to A-Me 01.",16,0,100,0,0,0,5046,0,"Un'Goro Thunderer"); From 235399a29d495e176b9bde3e887b6e369ae05fe5 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:35:08 +0100 Subject: [PATCH 158/178] DB/Gossip: Karna Remtravel Closes #21445 --- sql/updates/world/3.3.5/2018_02_19_05_world_335.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_05_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_05_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_05_world_335.sql new file mode 100644 index 0000000000..ed057ab405 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_05_world_335.sql @@ -0,0 +1,12 @@ +-- Karna Remtravel --> Add Gossip Option +DELETE FROM `gossip_menu` WHERE `MenuID`=2082; +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(2082,2735,0); + +DELETE FROM `gossip_menu_option` WHERE `MenuID`=2081; +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(2081,0,0,"Do you have any mithril casings?",5049,1,1,2082,0,0,0,"",0,0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=2081; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(15,2081,0,0,0,9,0,4244,0,0,0,0,0,"","Show gossip option if quest 'Chasing A-Me 01 (Part 2)' is taken"); From f4c6f5dbd60d4356ae48b39c22219070f6024c0d Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:35:52 +0100 Subject: [PATCH 159/178] DB/Gossip: Northern Crystal Pylon, Eastern Crystal Pylon & Western Crystal Pylon Closes #21446 --- sql/updates/world/3.3.5/2018_02_19_06_world_335.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_06_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_06_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_06_world_335.sql new file mode 100644 index 0000000000..564162ccc8 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_06_world_335.sql @@ -0,0 +1,5 @@ +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup` IN (2177,2178,2179); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14,2177,2933,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2933 if quest 'Making Sense of It' is rewarded"), -- Northern Crystal Pylon +(14,2178,2933,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2933 if quest 'Making Sense of It' is rewarded"), -- Eastern Crystal Pylon +(14,2179,2933,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2933 if quest 'Making Sense of It' is rewarded"); -- Western Crystal Pylon From e6ad0759a4b5ef810fa3601e48b96fae074d38bd Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:36:37 +0100 Subject: [PATCH 160/178] DB/Gossip: Torwa Pathfinder Closes #21447 --- sql/updates/world/3.3.5/2018_02_19_07_world_335.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_07_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_07_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_07_world_335.sql new file mode 100644 index 0000000000..d89b24140c --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_07_world_335.sql @@ -0,0 +1,9 @@ +-- Torwa Pathfinder --> Add gossip option and conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=2188; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(14,2188,2821,0,0,8,0,4290,0,0,0,0,0,"","Show gossip text 2821 if quest 'The Fare of Lar'korwi' is rewarded"), +(15,2188,0,0,0,8,0,4290,0,0,0,0,0,"","Show gossip option if quest 'The Fare of Lar'korwi' is rewarded"); + +DELETE FROM `gossip_menu_option` WHERE `MenuID`=2188; +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(2188,0,0,"Who is this Lar'korwi you spoke of?",5187,1,1,2201,0,0,0,"",0,0); From 7b0723d2d9d66c4f4f056555d70c5bfbccc1f530 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:44:19 +0100 Subject: [PATCH 161/178] DB/Quest: Nothing But The Truth (Part 2) Closes #21448 --- .../world/3.3.5/2018_02_19_08_world_335.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_08_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_08_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_08_world_335.sql new file mode 100644 index 0000000000..000d9c7e70 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_08_world_335.sql @@ -0,0 +1,21 @@ +-- Apothecary Faustin +DELETE FROM `creature_text` WHERE `CreatureID`=5414; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5414,0,0,"The serum will only take a few minutes to prepare, $n.",12,0,100,1,0,0,1848,0,"Apothecary Faustin"), +(5414,1,0,"Almost done...",12,0,100,0,0,0,1849,0,"Apothecary Faustin"), +(5414,2,0,"At last, the serum is complete, $n. Now, come closer. We must talk.",12,0,100,1,0,0,1850,0,"Apothecary Faustin"); + +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5414; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5414 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=541400 AND `source_type`=9; +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 +(5414,0,0,0,20,0,100,0,1383,0,0,0,80,541400,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Quest 'Nothing But The Truth (Part 2)' Finished - Run Script"), +(541400,9,0,0,0,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Remove Npc Flag Questgiver"), +(541400,9,1,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Say Line 0"), +(541400,9,2,0,0,0,100,0,4000,4000,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,6.23291,"Apothecary Faustin - On Script - Set Orientation"), +(541400,9,3,0,0,0,100,0,1000,1000,0,0,17,69,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Set Emote State 69"), +(541400,9,4,0,0,0,100,0,15000,15000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Say Line 1"), +(541400,9,5,0,0,0,100,0,8000,8000,0,0,17,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Set Emote State 0"), +(541400,9,6,0,0,0,100,0,1000,1000,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,3.14159,"Apothecary Faustin - On Script - Set Orientation"), +(541400,9,7,0,0,0,100,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Say Line 2"), +(541400,9,8,0,0,0,100,0,0,0,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Add Npc Flag Questgiver"); From 6be598cf9de5302457e5a0de9fcb452a8f48a3fa Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:45:00 +0100 Subject: [PATCH 162/178] DB/Quest: The Corruption Abroad (Breadcrumb quest) Closes #21449 --- sql/updates/world/3.3.5/2018_02_19_09_world_335.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_09_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_09_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_09_world_335.sql new file mode 100644 index 0000000000..88647b9d81 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_09_world_335.sql @@ -0,0 +1,6 @@ +-- Breadcrumb Quest "The Corruption Abroad" +UPDATE `quest_template_addon` SET `PrevQuestID`=0 WHERE `ID`=1275; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry` IN (3765,1275); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(19,0,3765,0,0,14,0,1275,0,0,0,0,0,"","Quest 'The Corruption Abroad' can only be taken if quest 'Researching the Corruption' is not taken"), +(19,0,1275,0,0,28,0,3765,0,0,1,0,0,"","Quest 'Researching the Corruption' can only be taken if quest 'The Corruption Abroad' is not completed"); From d9ac5bdc3264a056e3f5bec3e72f6f82e0fc2c22 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:45:32 +0100 Subject: [PATCH 163/178] DB/Quest: The Temple of Atal'Hakkar Closes #21450 --- .../world/3.3.5/2018_02_19_10_world_335.sql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_10_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_10_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_10_world_335.sql new file mode 100644 index 0000000000..ab06d7651c --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_10_world_335.sql @@ -0,0 +1,14 @@ +-- Fel'zerul +DELETE FROM `creature_text` WHERE `CreatureID`=1443; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(1443,0,0,"I hereby destroy these instruments of evil! For the Horde!",14,1,100,15,0,0,1949,0,"Fel'zerul"); + +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=1443; +DELETE FROM `smart_scripts` WHERE `entryorguid`=1443 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=144300 AND `source_type`=9; +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 +(1443,0,0,0,20,0,100,0,1445,0,0,0,80,144300,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Quest 'The Temple of Atal'Hakkar' Finished - Run Script"), +(144300,9,0,0,0,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Remove Npc Flag Questgiver"), +(144300,9,1,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Say Line 0"), +(144300,9,2,0,0,0,100,0,4000,4000,0,0,11,7437,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Cast 'Break Stuff'"), +(144300,9,3,0,0,0,100,0,3000,3000,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Add Npc Flag Questgiver"); From 817b760ec01fdbd5a0ab7c8efc10488eaa40ba08 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 19:46:10 +0100 Subject: [PATCH 164/178] DB/SAI: Blasted Lands Closes #21451 --- .../world/3.3.5/2018_02_19_11_world_335.sql | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_11_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_11_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_11_world_335.sql new file mode 100644 index 0000000000..5b1d938db4 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_11_world_335.sql @@ -0,0 +1,111 @@ +-- Starving Snickerfang +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5984; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5984 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 +(5984,0,0,0,0,0,100,0,5000,8000,21000,24000,11,7367,0,0,0,0,0,2,0,0,0,0,0,0,0,"Starving Snickerfang - In Combat - Cast 'Infected Bite'"); + +-- Snickerfang Hyena +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5985; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5985 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 +(5985,0,0,0,0,0,100,0,5000,8000,21000,24000,11,7367,0,0,0,0,0,2,0,0,0,0,0,0,0,"Snickerfang Hyena - In Combat - Cast 'Infected Bite'"); + +-- Ashmane Boar +DELETE FROM `smart_scripts` WHERE `entryorguid`=5992 AND `source_type`=0 AND `id` IN (0,1); +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 +(5992,0,0,0,25,0,100,0,0,0,0,0,11,12898,0,0,0,0,0,1,0,0,0,0,0,0,0,"Ashmane Boar - On Reset - Cast 'Smoke Aura Visual'"), +(5992,0,1,0,0,0,100,0,3000,3000,3000,3000,11,11351,0,0,0,0,0,1,0,0,0,0,0,0,0,"Ashmane Boar - In Combat - Cast 'Fire Shield'"); + +-- Redstone Basilisk +UPDATE `smart_scripts` SET `event_param1`=8000, `event_param2`=15000, `event_param3`=17000, `event_param4`=24000 WHERE `entryorguid`=5990 AND `source_type`=0 AND `id`=0; + +-- Redstone Crystalhide +UPDATE `smart_scripts` SET `event_param1`=7000, `event_param2`=9000, `event_param3`=16000, `event_param4`=20000, `target_type`=5 WHERE `entryorguid`=5991 AND `source_type`=0 AND `id`=0; + +-- Wretched Lost One +UPDATE `smart_scripts` SET `event_param1`=11000, `event_param2`=13000, `event_param3`=16000, `event_param4`=19000 WHERE `entryorguid`=5979 AND `source_type`=0 AND `id`=1; + +-- Shadowsworn Thug +DELETE FROM `smart_scripts` WHERE `entryorguid`=6005 AND `source_type`=0 AND `id` IN (1,2); +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 +(6005,0,1,0,25,0,100,0,0,0,0,0,11,8876,0,0,0,0,0,1,0,0,0,0,0,0,0,"Shadowsworn Thug - On Reset - Cast 'Thrash'"), +(6005,0,2,0,0,0,100,0,8000,12000,14000,18000,11,8646,0,0,0,0,0,2,0,0,0,0,0,0,0,"Shadowsworn Thug - In Combat - Cast 'Snap Kick'"); + +-- Scorpok Stinger +DELETE FROM `smart_scripts` WHERE `entryorguid`=5988 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 +(5988,0,0,0,0,0,100,0,7000,9000,14000,18000,11,5416,0,0,0,0,0,2,0,0,0,0,0,0,0,"Scorpok Stinger - In Combat - Cast 'Venom Sting'"); + +-- Dreadmaul Ogre +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5974; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5974 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 +(5974,0,0,0,0,0,100,0,5000,11000,28000,34000,11,11960,0,0,0,0,0,2,0,0,0,0,0,0,0,"Dreadmaul Ogre - In Combat - Cast 'Curse of the Dreadmaul'"), +(5974,0,1,0,4,0,15,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dreadmaul Ogre - On Aggro - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=5974; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5974,0,0,"Raaar!!! Me smash $r!",12,0,100,0,0,0,1925,0,"Dreadmaul Ogre"), +(5974,0,1,"Me smash! You die!",12,0,100,0,0,0,1926,0,"Dreadmaul Ogre"), +(5974,0,2,"I'll crush you!",12,0,100,0,0,0,1927,0,"Dreadmaul Ogre"); + +-- Dreadmaul Brute +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5976; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5976 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 +(5976,0,0,0,0,0,100,0,5000,11000,28000,34000,11,11960,0,0,0,0,0,2,0,0,0,0,0,0,0,"Dreadmaul Brute - In Combat - Cast 'Curse of the Dreadmaul'"), +(5976,0,1,0,4,0,15,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dreadmaul Brute - On Aggro - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=5976; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5976,0,0,"Raaar!!! Me smash $r!",12,0,100,0,0,0,1925,0,"Dreadmaul Brute"), +(5976,0,1,"Me smash! You die!",12,0,100,0,0,0,1926,0,"Dreadmaul Brute"), +(5976,0,2,"I'll crush you!",12,0,100,0,0,0,1927,0,"Dreadmaul Brute"); + +-- Dreadmaul Ogre Mage +DELETE FROM `smart_scripts` WHERE `entryorguid`=5975 AND `source_type`=0 AND `id`=2; +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 +(5975,0,2,0,4,0,15,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dreadmaul Ogre Mage - On Aggro - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=5975; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5975,0,0,"Raaar!!! Me smash $r!",12,0,100,0,0,0,1925,0,"Dreadmaul Ogre Mage"), +(5975,0,1,"Me smash! You die!",12,0,100,0,0,0,1926,0,"Dreadmaul Ogre Mage"), +(5975,0,2,"I'll crush you!",12,0,100,0,0,0,1927,0,"Dreadmaul Ogre Mage"); + +-- Dreadmaul Warlock +UPDATE `smart_scripts` SET `action_param2`=32 WHERE `entryorguid`=5978 AND `source_type`=0 AND `id`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid`=5978 AND `source_type`=0 AND `id`=2; +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 +(5978,0,2,0,4,0,15,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dreadmaul Warlock - On Aggro - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=5978; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5978,0,0,"Raaar!!! Me smash $r!",12,0,100,0,0,0,1925,0,"Dreadmaul Warlock"), +(5978,0,1,"Me smash! You die!",12,0,100,0,0,0,1926,0,"Dreadmaul Warlock"), +(5978,0,2,"I'll crush you!",12,0,100,0,0,0,1927,0,"Dreadmaul Warlock"); + +-- Dreadmaul Mauler +DELETE FROM `smart_scripts` WHERE `entryorguid`=5977 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 +(5977,0,0,0,25,0,100,0,0,0,0,0,11,8876,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dreadmaul Mauler - On Reset - Cast 'Thrash'"), +(5977,0,1,0,4,0,15,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dreadmaul Mauler - On Aggro - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=5977; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(5977,0,0,"Raaar!!! Me smash $r!",12,0,100,0,0,0,1925,0,"Dreadmaul Mauler"), +(5977,0,1,"Me smash! You die!",12,0,100,0,0,0,1926,0,"Dreadmaul Mauler"), +(5977,0,2,"I'll crush you!",12,0,100,0,0,0,1927,0,"Dreadmaul Mauler"); + +-- Felbeast +UPDATE `smart_scripts` SET `event_param1`=4000, `event_param2`=8000, `event_param3`=18000, `event_param4`=24000 WHERE `entryorguid`=8675 AND `source_type`=0 AND `id`=0; + +-- Akubar the Seer +UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=8298 AND `source_type`=0 AND `id` IN (1,2); + +-- Shadowsworn Warlock +UPDATE `smart_scripts` SET `action_param2`=32 WHERE `entryorguid`=6008 AND `source_type`=0 AND `id`=2; + +-- Shadowsworn Dreadweaver +UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=6009 AND `source_type`=0 AND `id`=1; +UPDATE `smart_scripts` SET `action_param2`=32 WHERE `entryorguid`=6009 AND `source_type`=0 AND `id`=2; From 5b1dcaf35a7d07b00d2b7979ad17a6ac3f9dd901 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 20:09:40 +0100 Subject: [PATCH 165/178] DB/SAI: Un'Goro Crater Closes #21452 --- .../world/3.3.5/2018_02_19_12_world_335.sql | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_12_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_12_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_12_world_335.sql new file mode 100644 index 0000000000..f139618a01 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_12_world_335.sql @@ -0,0 +1,79 @@ +-- Ravasaur Runner +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6506; +DELETE FROM `smart_scripts` WHERE `entryorguid`=6506 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 +(6506,0,0,0,25,0,100,0,0,0,0,0,11,3417,0,0,0,0,0,1,0,0,0,0,0,0,0,"Ravasaur Runner - On Reset - Cast 'Thrash'"), +(6506,0,1,0,4,0,100,0,0,0,0,0,11,6268,0,0,0,0,0,1,0,0,0,0,0,0,0,"Ravasaur Runner - On Aggro - Cast 'Rushing Charge'"); + +-- Venomhide Ravasaur +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6508; +DELETE FROM `smart_scripts` WHERE `entryorguid`=6508 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 +(6508,0,0,0,25,0,100,0,0,0,0,0,11,14108,0,0,0,0,0,1,0,0,0,0,0,0,0,"Venomhide Ravasaur - On Reset - Cast 'Venomhide Poison'"); + +-- Muculent Ooze +DELETE FROM `smart_scripts` WHERE `entryorguid`=6556 AND `source_type`=0 AND `id`=1; +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 +(6556,0,1,0,25,0,100,0,0,0,0,0,11,14133,0,0,0,0,0,1,0,0,0,0,0,0,0,"Muculent Ooze - On Reset - Cast 'Muculent Fever Proc'"); + +-- Primal Ooze +DELETE FROM `smart_scripts` WHERE `entryorguid`=6557 AND `source_type`=0 AND `id` IN (8,9); +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 +(6557,0,8,0,2,0,100,1,0,30,0,0,11,14146,0,0,0,0,0,1,0,0,0,0,0,0,0,"Primal Ooze - Between 0-30% Health - Cast 'Clone' (No Repeat)"), +(6557,0,9,0,2,0,100,1,0,30,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Primal Ooze - Between 0-30% Health - Say Line 0 (No Repeat)"); + +DELETE FROM `creature_text` WHERE `CreatureID`=6557; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(6557,0,0,"%s begins to make a copy of itself!",16,0,100,0,0,0,2082,0,"Primal Ooze"); + +-- Cloned Ooze +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=9477; +DELETE FROM `smart_scripts` WHERE `entryorguid`=9477 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 +(9477,0,0,0,54,0,100,0,0,0,0,0,49,0,0,0,0,0,0,21,30,0,0,0,0,0,0,"Cloned Ooze - Just Summoned - Start Attacking"); + +-- Glutinous Ooze +DELETE FROM `smart_scripts` WHERE `entryorguid`=6559 AND `source_type`=0 AND `id`=2; +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 +(6559,0,2,0,6,0,100,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Glutinous Ooze - On Just Died - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=6559; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(6559,0,0,"%s explodes into chunks of acidic slime!",16,0,100,0,0,0,4838,0,"Glutinous Ooze"); + +-- Gorishi Wasp +DELETE FROM `smart_scripts` WHERE `entryorguid`=6551 AND `source_type`=0 AND `id`=1; +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 +(6551,0,1,0,25,0,100,0,0,0,0,0,11,13299,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gorishi Wasp - On Reset - Cast 'Poison Proc'"); + +-- Gorishi Worker +DELETE FROM `smart_scripts` WHERE `entryorguid`=6552 AND `source_type`=0 AND `id`=1; +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 +(6552,0,1,0,2,0,100,1,0,50,0,0,39,20,1,0,0,0,0,1,0,0,0,0,0,0,0,"Gorishi Worker - Between 0-30% Health - Call For Help (No Repeat)"); + +-- Gorishi Reaver +DELETE FROM `smart_scripts` WHERE `entryorguid`=6553 AND `source_type`=0 AND `id`=1; +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 +(6553,0,1,0,0,0,100,0,8000,12000,21000,25000,11,8137,0,0,0,0,0,2,0,0,0,0,0,0,0,"Gorishi Reaver - In Combat - Cast 'Silithid Pox'"); + +-- Gorishi Stinger +DELETE FROM `smart_scripts` WHERE `entryorguid`=6554 AND `source_type`=0 AND `id`=1; +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 +(6554,0,1,0,25,0,100,0,0,0,0,0,11,8601,0,0,0,0,0,1,0,0,0,0,0,0,0,"Gorishi Stinger - On Reset - Cast 'Slowing Poison'"); + +-- Gorishi Tunneler +DELETE FROM `smart_scripts` WHERE `entryorguid`=6555 AND `source_type`=0 AND `id`=1; +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 +(6555,0,1,0,0,0,100,0,8000,12000,21000,25000,11,8137,0,0,0,0,0,2,0,0,0,0,0,0,0,"Gorishi Tunneler - In Combat - Cast 'Silithid Pox'"); + +-- Blazing Invader +UPDATE `creature_template` SET `unit_class`=2, `AIName`="SmartAI" WHERE `entry`=14460; +DELETE FROM `smart_scripts` WHERE `entryorguid`=14460 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 +(14460,0,0,0,0,0,100,0,7000,13000,19000,24000,11,23039,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blazing Invader - In Combat - Cast 'Blast Wave'"); + +-- Living Blaze +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6521; +DELETE FROM `smart_scripts` WHERE `entryorguid`=6521 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 +(6521,0,0,0,0,0,100,0,3000,3000,3000,3000,11,11351,0,0,0,0,0,1,0,0,0,0,0,0,0,"Living Blaze - In Combat - Cast 'Fire Shield'"); From 740f20042720ee9afc106a7f451b9813accebfeb Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 20:11:06 +0100 Subject: [PATCH 166/178] DB/Quest: Improve some quest outro events Closes #21453 --- .../world/3.3.5/2018_02_19_13_world_335.sql | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_13_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_13_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_13_world_335.sql new file mode 100644 index 0000000000..7189475f3a --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_13_world_335.sql @@ -0,0 +1,70 @@ +-- Quest "Forsaken Diseases" +DELETE FROM `smart_scripts` WHERE `entryorguid`=384801 AND `source_type`=9; +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 +(384801,9,0,0,0,0,100,0,0,0,0,0,103,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Set Rooted On"), +(384801,9,1,0,0,0,100,0,0,0,0,0,83,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Remove Questgiver+Gossip npcflag"), +(384801,9,2,0,0,0,100,0,1000,1000,0,0,11,6355,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Cast 'Drink Disease Bottle'"), +(384801,9,3,0,0,0,100,0,2500,2500,0,0,1,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Say Line 1"), +(384801,9,4,0,0,0,100,0,0,0,0,0,17,64,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Set Emote State 64"), +(384801,9,5,0,0,0,100,0,4500,4500,0,0,1,2,0,0,0,0,0,7,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Say Line 2"), +(384801,9,6,0,0,0,100,0,3000,3000,0,0,17,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Set Emote State 0"), +(384801,9,7,0,0,0,100,0,1000,1000,0,0,1,3,0,0,0,0,0,7,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Say Line 3"), +(384801,9,8,0,0,0,100,0,2000,2000,0,0,82,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Add Questgiver+Gossip npcflag"), +(384801,9,9,0,0,0,100,0,10000,10000,0,0,103,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kayneth Stillwind - On Script - Set Rooted Off"); + +-- Quest "Parts for Kravel" +UPDATE `creature_addon` SET `bytes1`=0 WHERE `guid`=21570; + +DELETE FROM `smart_scripts` WHERE `entryorguid`=445200 AND `source_type`=9; +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 +(445200,9,0,0,0,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Remove Npc Flag Questgiver"), +(445200,9,1,0,0,0,100,0,1000,1000,0,0,90,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Set Flag Standstate Kneel"), +(445200,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Say Line 0"), +(445200,9,3,0,0,0,100,0,1000,1000,0,0,50,19878,10,0,0,0,0,8,0,0,0,-6232.5,-3855.12,-58.75,3.97786,"Kravel Koalbeard - On Script - Summon Gameobject 'Parts Crate'"), +(445200,9,4,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Say Line 1"), +(445200,9,5,0,0,0,100,0,2000,2000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Say Line 2"), +(445200,9,6,0,0,0,100,0,2000,2000,0,0,91,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Remove Flag Standstate Kneel"), +(445200,9,7,0,0,0,100,0,2000,2000,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kravel Koalbeard - On Script - Add Npc Flag Questgiver"); + +-- Quest "Skull Rock" +UPDATE `smart_scripts` SET `action_param1`=4947, `comment`="Margoz - On Script - Cast 'Magic Backlash'" WHERE `entryorguid`=320800 AND `source_type`=9 AND `id`=4; +UPDATE `creature_text` SET `Sound`=6527 WHERE `CreatureID`=3208 AND `GroupID`=1; + +-- Quest "Dark Storms" +UPDATE `creature_text` SET `Emote`=15 WHERE `CreatureID`=3142 AND `GroupID`=0; + +-- Quest "Headhunting" +UPDATE `smart_scripts` SET `event_param1`=6000, `event_param2`=6000 WHERE `entryorguid`=249700 AND `source_type`=9 AND `id`=3; +UPDATE `smart_scripts` SET `event_param1`=8000, `event_param2`=8000 WHERE `entryorguid`=249700 AND `source_type`=9 AND `id`=4; + +-- Quest "Bloodscalp Clan Heads" +DELETE FROM `smart_scripts` WHERE `entryorguid`=2076 AND `source_type`=1 AND `id`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid`=207600 AND `source_type`=9; +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 +(2076,1,1,0,20,0,100,0,584,0,0,0,64,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Bubbling Cauldron - On Quest 'Bloodscalp Clan Heads' Finished - Store Targetlist"), +(207600,9,0,0,0,0,100,0,0,0,0,0,105,16,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bubbling Cauldron - On Script - Add Gameobject Flag"), +(207600,9,1,0,0,0,100,0,0,0,0,0,100,1,0,0,0,0,0,19,2519,0,0,0,0,0,0,"Bubbling Cauldron - On Script - Send Target"), +(207600,9,2,0,0,0,100,0,0,0,0,0,45,1,1,0,0,0,0,19,2519,0,0,0,0,0,0,"Bubbling Cauldron - On Script - Set Data"), +(207600,9,3,0,0,0,100,0,11000,11000,0,0,106,16,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bubbling Cauldron - On Script - Remove Gameobject Flag"); + +DELETE FROM `creature_text` WHERE `CreatureID`=2497 AND `GroupID` IN (3,4,5); +DELETE FROM `creature_text` WHERE `CreatureID`=2519 AND `GroupID` IN (5,6,7); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(2519,5,0,"Ah, good $n. Now let us see what tale these heads tell...",12,1,100,1,0,0,735,0,"Kin'weelay"), +(2519,6,0,"%s begins chanting...",16,0,100,0,0,0,736,0,"Kin'weelay"), +(2519,7,0,"There, $n. You may now speak to the Bloodscalp chief and his witchdoctor.",12,1,100,1,0,0,740,0,"Kin'weelay"); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=2497 AND `source_type`=0 AND `id`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid`=249701 AND `source_type`=9; +DELETE FROM `smart_scripts` WHERE `entryorguid`=2519 AND `source_type`=0 AND `id`=2; +DELETE FROM `smart_scripts` WHERE `entryorguid`=251902 AND `source_type`=9; +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 +(2519,0,2,0,38,0,100,0,1,1,0,0,80,251902,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Data Set - Run Script"), +(251902,9,0,0,0,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Script - Remove Npc Flag Questgiver"), +(251902,9,1,0,0,0,100,0,0,0,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,0.661932,"Kin'weelay - On Script - Set Orientation"), +(251902,9,2,0,0,0,100,0,0,0,0,0,1,5,0,0,0,0,0,12,1,0,0,0,0,0,0,"Kin'weelay - On Script - Say Line 5"), +(251902,9,3,0,0,0,100,0,4000,4000,0,0,1,6,0,0,0,0,0,12,1,0,0,0,0,0,0,"Kin'weelay - On Script - Say Line 6"), +(251902,9,4,0,0,0,100,0,0,0,0,0,11,3644,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Script - Cast 'Speak with Heads'"), +(251902,9,5,0,0,0,100,0,7000,7000,0,0,1,7,0,0,0,0,0,12,1,0,0,0,0,0,0,"Kin'weelay - On Script - Say Line 7"), +(251902,9,6,0,0,0,100,0,5000,5000,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Script - Add Npc Flag Questgiver"), +(251902,9,7,0,0,0,100,0,5000,5000,0,0,66,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Script - Set Orientation"); From 0ff1d0eb8893e6d2b74b9994853b0eb4ea3c79d2 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 20:12:54 +0100 Subject: [PATCH 167/178] DB/SAI: Arkkoran Clacker Closes #21454 --- sql/updates/world/3.3.5/2018_02_19_14_world_335.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_14_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_14_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_14_world_335.sql new file mode 100644 index 0000000000..4f1c721c73 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_14_world_335.sql @@ -0,0 +1,5 @@ +-- Arkkoran Clacker +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6135; +DELETE FROM `smart_scripts` WHERE `entryorguid`=6135 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 +(6135,0,0,0,2,0,100,1,0,50,0,0,39,30,1,0,0,0,0,1,0,0,0,0,0,0,0,"Arkkoran Clacker - Between 0-50% Health - Call For Help (No Repeat)"); From 1e43675dfda0aa3a1b1f34ae5bea31112c26ace3 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 20:13:47 +0100 Subject: [PATCH 168/178] DB/Quest: Improve some quest events (Part 2) Closes #21456 --- .../world/3.3.5/2018_02_19_15_world_335.sql | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_15_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_15_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_15_world_335.sql new file mode 100644 index 0000000000..b3b244105a --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_15_world_335.sql @@ -0,0 +1,98 @@ +-- Quest "How Big a Threat? (Part 2)" +UPDATE `creature_text` SET `Emote`=6 WHERE `CreatureID`=3693 AND `GroupID`=0; +UPDATE `creature_text` SET `Emote`=5 WHERE `CreatureID`=3693 AND `GroupID`=1; +UPDATE `creature_text` SET `Emote`=1 WHERE `CreatureID`=3693 AND `GroupID` IN (2,4,5,6); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=369500 AND `source_type`=9; +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 +(369500,9,0,0,0,0,100,0,0,0,0,0,54,40000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grimclaw - On Script - Pause Waypoint for 40 seconds"), +(369500,9,1,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grimclaw - On Script - Talk 0"), +(369500,9,2,0,0,0,100,0,3000,3000,0,0,1,1,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Talk 1 (Terenthis)"), +(369500,9,3,0,0,0,100,0,5000,5000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grimclaw - On Script - Talk 1"), +(369500,9,4,0,0,0,100,0,5000,5000,0,0,1,2,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Talk 2 (Terenthis)"), +(369500,9,5,0,0,0,100,0,4000,4000,0,0,1,3,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Talk 3 (Terenthis)"), +(369500,9,6,0,0,0,100,0,1000,1000,0,0,86,6238,0,19,3693,0,0,1,0,0,0,0,0,0,0,"Grimclaw - On Script - Cross Cast 'Speak with Animals'"), +(369500,9,7,0,0,0,100,0,2000,2000,0,0,1,4,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Talk 4 (Terenthis)"), +(369500,9,8,0,0,0,100,0,5000,5000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grimclaw - On Script - Talk 2"), +(369500,9,9,0,0,0,100,0,5000,5000,0,0,1,5,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Talk 5 (Terenthis)"), +(369500,9,10,0,0,0,100,0,7000,7000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grimclaw - On Script - Talk 3"), +(369500,9,11,0,0,0,100,0,5000,5000,0,0,1,6,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Talk 6 (Terenthis)"), +(369500,9,12,0,0,0,100,0,1000,1000,0,0,82,3,0,0,0,0,0,19,3693,0,0,0,0,0,0,"Grimclaw - On Script - Add Questgiver+Gossip npcflag (Terenthis)"); + +-- Quest "A Lost Master (Part 1)" +UPDATE `creature_text` SET `Emote`=1 WHERE `CreatureID`=3693 AND `GroupID` IN (8,9); +UPDATE `smart_scripts` SET `event_param1`=6000, `event_param2`=6000 WHERE `entryorguid`=369302 AND `source_type`=9 AND `id`=4; + +-- Quest "A Lost Master (Part 2)" +DELETE FROM `smart_scripts` WHERE `entryorguid`=369303 AND `source_type`=9; +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 +(369303,9,0,0,0,0,100,0,0,0,0,0,1,10,0,0,0,0,0,7,0,0,0,0,0,0,0,"Terenthis - On Script - Say Line 10"), +(369303,9,1,0,0,0,100,0,0,0,0,0,11,6236,0,0,0,0,0,7,0,0,0,0,0,0,0,"Terenthis - On Script - Cast 'Form of the Moonstalker'"), +(369303,9,2,0,0,0,100,0,2000,2000,0,0,1,11,0,0,0,0,0,7,0,0,0,0,0,0,0,"Terenthis - On Script - Say Line 11"); + +-- Quest "Escape Through Stealth" / "Escape Through Stealth" +UPDATE `creature_text` SET `Emote`=2 WHERE `CreatureID`=3694 AND `GroupID` IN (1,3); +UPDATE `creature_text` SET `Emote`=1 WHERE `CreatureID`=3694 AND `GroupID` IN (0,2); +UPDATE `creature_text` SET `Emote`=1 WHERE `CreatureID`=3693 AND `GroupID`=7; + +-- Quest "Cave Mushrooms" +DELETE FROM `smart_scripts` WHERE `entryorguid`=3583 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=358300 AND `source_type`=9; +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 +(3583,0,0,0,19,0,100,0,947,0,0,0,80,358300,0,0,0,0,0,1,0,0,0,0,0,0,0,"Barithras Moonshade - On Quest 'Cave Mushrooms' Taken - Run Script"), +(358300,9,0,0,0,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Barithras Moonshade - On Quest 'Cave Mushrooms' Taken - Say Line 1"), +(358300,9,1,0,0,0,100,0,4000,4000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Barithras Moonshade - On Quest 'Cave Mushrooms' Taken - Say Line 0"); + +-- Quest "Goblin Invaders" +DELETE FROM `smart_scripts` WHERE `entryorguid`=404900 AND `source_type`=9; +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 +(404900,9,0,0,0,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Seereth Stonebreak - On Script - Remove Npc Flag Questgiver"), +(404900,9,1,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Seereth Stonebreak - On Script - Say Line 0"), +(404900,9,2,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Seereth Stonebreak - On Script - Say Line 1"), +(404900,9,3,0,0,0,100,0,0,0,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Seereth Stonebreak - On Script - Add Npc Flag Questgiver"); + +-- Quest "Jin'Zil's Forest Magic" +UPDATE `creature_text` SET `Emote`=15 WHERE `CreatureID`=3995 AND `GroupID`=0; +UPDATE `creature_text` SET `Emote`=11 WHERE `CreatureID`=3995 AND `GroupID`=1; + +DELETE FROM `waypoints` WHERE `entry` IN (3995,3681); +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(3995,1,-270.459,-396.037,17.1122,""), +(3995,2,-270.305,-398.913,17.0809,""), +(3995,3,-272.921,-400.553,17.4664,""), +(3995,4,-277.705,-397.426,18.2977,""), +(3995,5,-277.037,-394.406,18.493,""), +(3995,6,-275.021,-393.218,17.9251,""), +(3995,7,-272.48,-394.084,17.2051,""), +(3681,1,-265.345,-393.202,16.9917,""), +(3681,2,-241.765,-376.753,17.8912,""), +(3681,3,-194.646,-335.997,10.0757,""); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=3995 AND `source_type`=0 AND `id` IN (1,2,3,4); -- Witch Doctor Jin'Zil +DELETE FROM `smart_scripts` WHERE `entryorguid`=399500 AND `source_type`=9; +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 +(3995,0,1,0,40,0,100,0,4,3995,0,0,54,8000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Waypoint 4 Reached - Pause Waypoint"), +(3995,0,2,0,40,0,100,0,4,3995,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,0.406747,"Witch Doctor Jin'Zil - On Waypoint 4 Reached - Set Orientation"), +(3995,0,3,0,40,0,100,0,7,3995,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,6.19592,"Witch Doctor Jin'Zil - On Waypoint 7 Reached - Set Orientation"), +(3995,0,4,0,40,0,100,0,7,3995,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Waypoint 7 Reached - Add Npc Flag Questgiver"), +(399500,9,0,0,0,0,100,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Remove Npc Flag Questgiver"), +(399500,9,1,0,0,0,100,0,0,0,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,4.0078,"Witch Doctor Jin'Zil - On Script - Set Orientation"), +(399500,9,2,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Say Line 0"), +(399500,9,3,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Say Line 1"), +(399500,9,4,0,0,0,100,0,0,0,0,0,86,6584,0,9,4072,0,30,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Cross Cast 'Jin'Zil's Curse'"), +(399500,9,5,0,0,0,100,0,4000,4000,0,0,53,0,3995,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Start Waypoint"), +(399500,9,6,0,0,0,100,0,6000,6000,0,0,51,0,0,0,0,0,0,9,4072,0,30,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Kill Target"), +(399500,9,7,0,0,0,100,0,1000,1000,0,0,45,1,1,0,0,0,0,9,3681,0,30,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Set Data"), +(399500,9,8,0,0,0,100,0,2000,2000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Witch Doctor Jin'Zil - On Script - Say Line 2"); + +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=4072; -- Prisoner of Jin'Zil +DELETE FROM `smart_scripts` WHERE `entryorguid`=4072 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 +(4072,0,0,0,6,0,100,0,0,0,0,0,12,3681,3,30000,0,0,0,1,0,0,0,0,0,0,0,"Prisoner of Jin'Zil - On Just Died - Summon Creature 'Wisp'"), +(4072,0,1,0,6,0,100,0,0,0,0,0,41,5000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Prisoner of Jin'Zil - On Just Died - Despawn In 5000 ms"); + +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=3681; -- Wisp +DELETE FROM `smart_scripts` WHERE `entryorguid`=3681 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 +(3681,0,0,0,38,0,100,0,1,1,0,0,53,1,3681,0,0,0,0,1,0,0,0,0,0,0,0,"Wisp - On Data Set - Start Waypoint"), +(3681,0,1,0,40,0,100,0,3,3681,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Wisp - On Waypoint Reached - Despawn"); From dc6e930be77287df681c273793a5d64303333451 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 20:14:37 +0100 Subject: [PATCH 169/178] DB/Quest: Betrayed (Part 3) Closes #21458 --- .../world/3.3.5/2018_02_19_16_world_335.sql | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_16_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_16_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_16_world_335.sql new file mode 100644 index 0000000000..b1da9c5017 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_16_world_335.sql @@ -0,0 +1,32 @@ +-- Blood Elf Defender +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8581; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8581 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=858100 AND `source_type`=9; +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 +(8581,0,0,0,0,0,100,0,7000,12000,11000,14000,11,12169,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blood Elf Defender - In Combat - Cast 'Shield Block'"), +(8581,0,1,0,0,0,100,0,5000,9000,8000,13000,11,12170,0,0,0,0,0,2,0,0,0,0,0,0,0,"Blood Elf Defender - In Combat - Cast 'Revenge'"), +(8581,0,2,0,11,0,100,0,0,0,0,0,80,858100,2,0,0,0,0,1,0,0,0,0,0,0,0,"Blood Elf Defender - On Respawn - Run Script"), +(858100,9,0,0,0,0,100,0,0,0,0,0,11,51347,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blood Elf Defender - On Script - Cast 'Teleport Visual Only'"), +(858100,9,1,0,0,0,100,0,2000,2000,0,0,49,0,0,0,0,0,0,21,50,0,0,0,0,0,0,"Blood Elf Defender - On Script - Start Attacking"), +(858100,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blood Elf Defender - On Script - Say Line 0"), +(858100,9,3,0,0,0,100,0,10000,10000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blood Elf Defender - On Script - Say Line 1"), +(858100,9,4,0,0,0,100,0,6000,6000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blood Elf Defender - On Script - Say Line 2"); + +DELETE FROM `creature_text` WHERE `CreatureID`=8581; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(8581,0,0,"Who dares?! I will destroy you!",12,0,100,0,0,0,4502,0,"Blood Elf Defender"), +(8581,1,0,"Mistress!! They seek to destroy your work!!",12,0,100,0,0,0,4491,0,"Blood Elf Defender"), +(8581,2,0,"Ha! Now your death is ensured!",12,0,100,0,0,0,4492,0,"Blood Elf Defender"); + +-- Magus Rimtori +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8578; +DELETE FROM `smart_scripts` WHERE `entryorguid`=8578 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 +(8578,0,0,0,0,0,100,0,0,0,3000,5000,11,20823,64,0,0,0,0,2,0,0,0,0,0,0,0,"Magus Rimtori - In Combat - Cast 'Fireball'"), +(8578,0,1,0,9,0,100,0,0,8,13000,16000,11,11831,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magus Rimtori - Within 0-8 Range - Cast 'Frost Nova'"), +(8578,0,2,0,11,0,100,0,0,0,0,0,11,51347,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magus Rimtori - On Respawn - Cast 'Teleport Visual Only'"), +(8578,0,3,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magus Rimtori - On Aggro - Say Line 0"); + +DELETE FROM `creature_text` WHERE `CreatureID`=8578; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(8578,0,0,"You dare! Now feel my wrath!",14,0,100,0,0,0,4495,0,"Magus Rimtori"); From f4f3aa60a38d65dbca0dc84d8a3af0992e49f084 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Mon, 19 Feb 2018 20:20:36 +0100 Subject: [PATCH 170/178] DB: Mordent Evenshade and Sentinel Stillbough event Closes #10124 --- .../world/3.3.5/2018_02_19_17_world_335.sql | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_17_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_17_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_17_world_335.sql new file mode 100644 index 0000000000..b00c9ad746 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_17_world_335.sql @@ -0,0 +1,49 @@ +-- Mordent Evenshade & Sentinel Stillbough +DELETE FROM `creature_text` WHERE `CreatureID` IN (36479,36481); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(36479,0,0,"Sentinel, I would speak with your High Priestess.",12,7,100,1,0,0,36428,0,"Archmage Mordent Evenshade"), +(36479,1,0,"Must I? I doubt Tyrande has more pressing business.",12,7,100,6,0,0,36429,0,"Archmage Mordent Evenshade"), +(36479,2,0,"The lure of power is great. Mistakes were made.",12,7,100,1,0,0,36430,0,"Archmage Mordent Evenshade"), +(36479,3,0,"I will not return until I am heard. There is too much at stake.",12,7,100,5,0,0,36431,0,"Archmage Mordent Evenshade"), +(36479,4,0,"There is change on the wind, and we cannot ignore it. I have traveled from the dust and ruin of the past to come to an accord.",12,7,100,1,0,0,36432,0,"Archmage Mordent Evenshade"), +(36479,5,0,"The time may soon come when the kaldorei require the knowledge and skill we have to offer.",12,7,100,1,0,0,36433,0,"Archmage Mordent Evenshade"), +(36479,6,0,"I will wait, Sentinel... but I will have my audience.",12,7,100,1,0,0,36434,0,"Archmage Mordent Evenshade"), +(36479,7,0,"%s looks over at the moonwell with a sigh.",16,0,100,0,0,0,36440,0,"Archmage Mordent Evenshade"), +(36479,8,0,"Calm yourself, Sentinel. I do not seek to use it. I am merely... remembering.",12,7,100,1,0,0,36435,0,"Archmage Mordent Evenshade"), +(36479,9,0,"Enough. I have been apart from this for centuries. The well within this temple may be a pale spectre of the Well of Eternity, but it still holds the same... beauty. Purity.",12,7,100,1,0,0,36436,0,"Archmage Mordent Evenshade"), +(36479,10,0,"I had forgotten.",12,7,100,0,0,0,36437,0,"Archmage Mordent Evenshade"), +(36479,11,0,"I do not believe admiration and wistful thoughts are against the societal norm.",12,7,100,6,0,0,36438,0,"Archmage Mordent Evenshade"), +(36479,12,0,"You were the one who challenged me for merely looking. I still await my audience with Tyrande.",12,7,100,1,0,0,36439,0,"Archmage Mordent Evenshade"), +(36481,0,0,"You must wait for an audience.",12,7,100,25,0,0,36446,0,"Sentinel Stillbough"), +(36481,1,0,"You show some nerve coming to Teldrassil, Highborne. Your kind are unwelcome here. We have not forgotten the War of the Ancients or the minds behind it.",12,7,100,1,0,0,36447,0,"Sentinel Stillbough"), +(36481,2,0,"And we would not see those mistakes repeated. Return to your exile.",12,7,100,5,0,0,36448,0,"Sentinel Stillbough"), +(36481,3,0,"Take your gaze off the moonwell, exile. The power within is not yours to wield.",12,7,100,5,0,0,36449,0,"Sentinel Stillbough"), +(36481,4,0,"Recalling your treachery?",12,7,100,6,0,0,36450,0,"Sentinel Stillbough"), +(36481,5,0,"Watch yourself, Highborne.",12,7,100,25,0,0,36451,0,"Sentinel Stillbough"), +(36481,6,0,"In good time.",12,7,100,1,0,0,36452,0,"Sentinel Stillbough"); + +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=36479; +DELETE FROM `smart_scripts` WHERE `entryorguid`=36479 AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (3647900,3647901) AND `source_type`=9; +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 +(36479,0,0,0,1,0,100,0,5000,15000,150000,180000,87,3647900,3647901,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - Out of Combat - Run Random Script"), +(3647900,9,0,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 0"), +(3647900,9,1,0,0,0,100,0,4000,4000,0,0,1,0,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 0 (Sentinel Stillbough)"), +(3647900,9,2,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 1"), +(3647900,9,3,0,0,0,100,0,4000,4000,0,0,1,1,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 1 (Sentinel Stillbough)"), +(3647900,9,4,0,0,0,100,0,8000,8000,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 2"), +(3647900,9,5,0,0,0,100,0,4000,4000,0,0,1,2,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 2 (Sentinel Stillbough)"), +(3647900,9,6,0,0,0,100,0,5000,5000,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 3"), +(3647900,9,7,0,0,0,100,0,5000,5000,0,0,1,4,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 4"), +(3647900,9,8,0,0,0,100,0,7000,7000,0,0,1,5,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 5"), +(3647900,9,9,0,0,0,100,0,6000,6000,0,0,1,6,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 6"), +(3647901,9,0,0,0,0,100,0,0,0,0,0,1,7,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 7"), +(3647901,9,1,0,0,0,100,0,4000,4000,0,0,1,3,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 3 (Sentinel Stillbough)"), +(3647901,9,2,0,0,0,100,0,5000,5000,0,0,1,8,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 8"), +(3647901,9,3,0,0,0,100,0,5000,5000,0,0,1,4,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 4 (Sentinel Stillbough)"), +(3647901,9,4,0,0,0,100,0,3000,3000,0,0,1,9,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 9"), +(3647901,9,5,0,0,0,100,0,10000,10000,0,0,1,10,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 10"), +(3647901,9,6,0,0,0,100,0,3000,3000,0,0,1,11,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 11"), +(3647901,9,7,0,0,0,100,0,5000,5000,0,0,1,5,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 5 (Sentinel Stillbough)"), +(3647901,9,8,0,0,0,100,0,3000,3000,0,0,1,12,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 12"), +(3647901,9,9,0,0,0,100,0,6000,6000,0,0,1,6,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 6 (Sentinel Stillbough)"); From b97671072a6ca330b664b3d3ad6a68cf6e86001e Mon Sep 17 00:00:00 2001 From: Teppic Date: Mon, 19 Feb 2018 20:21:57 +0100 Subject: [PATCH 171/178] DB/Loot: Reference template 24048 & 24050 corrections Closes #21457 --- .../world/3.3.5/2018_02_19_18_world_335.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_19_18_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_19_18_world_335.sql b/sql/updates/world/3.3.5/2018_02_19_18_world_335.sql new file mode 100644 index 0000000000..7f82dfa474 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_19_18_world_335.sql @@ -0,0 +1,21 @@ +-- Remove unique items from reference table 24048 +DELETE FROM `reference_loot_template` WHERE `Entry`=24048 AND `Item` IN (1297, 2234, 4462, 4724); + +-- Add former items from reference table 24048 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (1297, 2234, 4462, 4724); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(2553, 1297, 0.1, 0, "Witherbark Shadowcaster - Robes of the Shadowcaster"), +(2577, 1297, 0.1, 0, "Dark Iron Shadowcaster - Robes of the Shadowcaster"), +(920, 2234, 0.1, 0, "Nightbane Tainted One - Nightwalker Armor"), +(503, 4462, 5, 0, "Lord Malathrom - Cloak of Rot"), +(2345, 4724, 2.5, 0, "Dun Garok Rifleman - Humbert's Helm"); + +-- Remove unique items from reference table 24050 +DELETE FROM `reference_loot_template` WHERE `Entry`=24050 AND `Item` IN (1998, 3341); + +-- Add former items from reference table 24050 to their proper NPCs +DELETE FROM `creature_loot_template` WHERE `Item` IN (1998, 3341); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Comment`) VALUES +(697, 1998, 0.1, 0, "Bloodscalp Shaman - Bloodscalp Channeling Staff"), +(2562, 3341, 0.1, 0, "Boulderfist Ogre - Gauntlets of Ogre Strength"), +(2564, 3341, 0.1, 0, "Boulderfist Enforcer - Gauntlets of Ogre Strength"); From 2686cbaf636fbf519d373df6099ee1f291c43fd9 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Tue, 20 Feb 2018 05:00:41 +0100 Subject: [PATCH 172/178] rename files --- ...018_02_20_00_world_from_335_was_2018_02_19_01_world_335.sql} | 2 ++ ...018_02_20_01_world_from_335_was_2018_02_19_02_world_335.sql} | 2 ++ ...018_02_20_02_world_from_335_was_2018_02_19_03_world_335.sql} | 2 ++ ...018_02_20_03_world_from_335_was_2018_02_19_04_world_335.sql} | 2 ++ ...018_02_20_04_world_from_335_was_2018_02_19_05_world_335.sql} | 2 ++ ...018_02_20_05_world_from_335_was_2018_02_19_06_world_335.sql} | 2 ++ ...018_02_20_06_world_from_335_was_2018_02_19_07_world_335.sql} | 2 ++ ...018_02_20_07_world_from_335_was_2018_02_19_08_world_335.sql} | 2 ++ ...018_02_20_08_world_from_335_was_2018_02_19_09_world_335.sql} | 2 ++ ...018_02_20_09_world_from_335_was_2018_02_19_10_world_335.sql} | 2 ++ ...018_02_20_10_world_from_335_was_2018_02_19_11_world_335.sql} | 2 ++ ...018_02_20_11_world_from_335_was_2018_02_19_12_world_335.sql} | 2 ++ ...018_02_20_12_world_from_335_was_2018_02_19_13_world_335.sql} | 2 ++ ...018_02_20_13_world_from_335_was_2018_02_19_14_world_335.sql} | 2 ++ ...018_02_20_14_world_from_335_was_2018_02_19_15_world_335.sql} | 2 ++ ...018_02_20_15_world_from_335_was_2018_02_19_16_world_335.sql} | 2 ++ ...018_02_20_16_world_from_335_was_2018_02_19_17_world_335.sql} | 2 ++ ...018_02_20_17_world_from_335_was_2018_02_19_18_world_335.sql} | 2 ++ 18 files changed, 36 insertions(+) rename sql/updates/world/{3.3.5/2018_02_19_01_world_335.sql => 4.3.4/2018_02_20_00_world_from_335_was_2018_02_19_01_world_335.sql} (97%) rename sql/updates/world/{3.3.5/2018_02_19_02_world_335.sql => 4.3.4/2018_02_20_01_world_from_335_was_2018_02_19_02_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_03_world_335.sql => 4.3.4/2018_02_20_02_world_from_335_was_2018_02_19_03_world_335.sql} (93%) rename sql/updates/world/{3.3.5/2018_02_19_04_world_335.sql => 4.3.4/2018_02_20_03_world_from_335_was_2018_02_19_04_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_05_world_335.sql => 4.3.4/2018_02_20_04_world_from_335_was_2018_02_19_05_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_06_world_335.sql => 4.3.4/2018_02_20_05_world_from_335_was_2018_02_19_06_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_07_world_335.sql => 4.3.4/2018_02_20_06_world_from_335_was_2018_02_19_07_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_08_world_335.sql => 4.3.4/2018_02_20_07_world_from_335_was_2018_02_19_08_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_09_world_335.sql => 4.3.4/2018_02_20_08_world_from_335_was_2018_02_19_09_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_10_world_335.sql => 4.3.4/2018_02_20_09_world_from_335_was_2018_02_19_10_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_11_world_335.sql => 4.3.4/2018_02_20_10_world_from_335_was_2018_02_19_11_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_12_world_335.sql => 4.3.4/2018_02_20_11_world_from_335_was_2018_02_19_12_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_13_world_335.sql => 4.3.4/2018_02_20_12_world_from_335_was_2018_02_19_13_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_14_world_335.sql => 4.3.4/2018_02_20_13_world_from_335_was_2018_02_19_14_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_15_world_335.sql => 4.3.4/2018_02_20_14_world_from_335_was_2018_02_19_15_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_16_world_335.sql => 4.3.4/2018_02_20_15_world_from_335_was_2018_02_19_16_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_17_world_335.sql => 4.3.4/2018_02_20_16_world_from_335_was_2018_02_19_17_world_335.sql} (99%) rename sql/updates/world/{3.3.5/2018_02_19_18_world_335.sql => 4.3.4/2018_02_20_17_world_from_335_was_2018_02_19_18_world_335.sql} (99%) diff --git a/sql/updates/world/3.3.5/2018_02_19_01_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_00_world_from_335_was_2018_02_19_01_world_335.sql similarity index 97% rename from sql/updates/world/3.3.5/2018_02_19_01_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_00_world_from_335_was_2018_02_19_01_world_335.sql index d06c226d3e..6709e1f7ad 100644 --- a/sql/updates/world/3.3.5/2018_02_19_01_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_00_world_from_335_was_2018_02_19_01_world_335.sql @@ -1,5 +1,7 @@ +/* -- Jediga --> Add Gossip Text UPDATE `creature_template` SET `gossip_menu_id`=4722 WHERE `entry`=8587; DELETE FROM `gossip_menu` WHERE `MenuID`=4722; INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES (4722,2036,0); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_02_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_01_world_from_335_was_2018_02_19_02_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_02_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_01_world_from_335_was_2018_02_19_02_world_335.sql index 889d31f533..8369203405 100644 --- a/sql/updates/world/3.3.5/2018_02_19_02_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_01_world_from_335_was_2018_02_19_02_world_335.sql @@ -1,3 +1,4 @@ +/* -- J.D. Collie gossip options and conditions DELETE FROM `gossip_menu` WHERE `MenuID`=2184 AND `TextID`=2833; DELETE FROM `gossip_menu` WHERE `MenuID` IN (2200,2202,2203,2204); @@ -27,3 +28,4 @@ INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionTex DELETE FROM `smart_scripts` WHERE `entryorguid`=9117 AND `source_type`=0 AND `id`=1; 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 (9117,0,1,0,62,0,100,0,2184,3,0,0,85,15211,0,0,0,0,0,7,0,0,0,0,0,0,0,"J.D. Collie - On Gossip Option 3 Selected - Invoker Cast 'Create Pylon User's Manual'"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_03_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_02_world_from_335_was_2018_02_19_03_world_335.sql similarity index 93% rename from sql/updates/world/3.3.5/2018_02_19_03_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_02_world_from_335_was_2018_02_19_03_world_335.sql index 1542db02d8..d48da9c541 100644 --- a/sql/updates/world/3.3.5/2018_02_19_03_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_02_world_from_335_was_2018_02_19_03_world_335.sql @@ -1,2 +1,4 @@ +/* -- Add Standstate Dead to A-Me 01 UPDATE `creature_addon` SET `bytes1`=7 WHERE `guid`=24268; +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_04_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_03_world_from_335_was_2018_02_19_04_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_04_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_03_world_from_335_was_2018_02_19_04_world_335.sql index 326c64f6a5..b8957f2e19 100644 --- a/sql/updates/world/3.3.5/2018_02_19_04_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_03_world_from_335_was_2018_02_19_04_world_335.sql @@ -1,3 +1,4 @@ +/* -- Un'Goro Thunderer DELETE FROM `smart_scripts` WHERE `entryorguid`=-24081 AND `source_type`=0; DELETE FROM `smart_scripts` WHERE `entryorguid`=651600 AND `source_type`=9; @@ -13,3 +14,4 @@ DELETE FROM `creature_text` WHERE `CreatureID`=6516; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES (6516,0,0,"%s looks tired. He then yawns and lies down next to A-Me 01.",16,0,100,0,0,0,5045,0,"Un'Goro Thunderer"), (6516,0,1,"%s snores loudly and cuddles up next to A-Me 01.",16,0,100,0,0,0,5046,0,"Un'Goro Thunderer"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_05_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_04_world_from_335_was_2018_02_19_05_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_05_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_04_world_from_335_was_2018_02_19_05_world_335.sql index ed057ab405..da6ec529df 100644 --- a/sql/updates/world/3.3.5/2018_02_19_05_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_04_world_from_335_was_2018_02_19_05_world_335.sql @@ -1,3 +1,4 @@ +/* -- Karna Remtravel --> Add Gossip Option DELETE FROM `gossip_menu` WHERE `MenuID`=2082; INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES @@ -10,3 +11,4 @@ INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionTex DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=2081; INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES (15,2081,0,0,0,9,0,4244,0,0,0,0,0,"","Show gossip option if quest 'Chasing A-Me 01 (Part 2)' is taken"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_06_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_05_world_from_335_was_2018_02_19_06_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_06_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_05_world_from_335_was_2018_02_19_06_world_335.sql index 564162ccc8..615600586b 100644 --- a/sql/updates/world/3.3.5/2018_02_19_06_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_05_world_from_335_was_2018_02_19_06_world_335.sql @@ -1,5 +1,7 @@ +/* DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=14 AND `SourceGroup` IN (2177,2178,2179); INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES (14,2177,2933,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2933 if quest 'Making Sense of It' is rewarded"), -- Northern Crystal Pylon (14,2178,2933,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2933 if quest 'Making Sense of It' is rewarded"), -- Eastern Crystal Pylon (14,2179,2933,0,0,8,0,4321,0,0,0,0,0,"","Show gossip text 2933 if quest 'Making Sense of It' is rewarded"); -- Western Crystal Pylon +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_07_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_06_world_from_335_was_2018_02_19_07_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_07_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_06_world_from_335_was_2018_02_19_07_world_335.sql index d89b24140c..684a5934fa 100644 --- a/sql/updates/world/3.3.5/2018_02_19_07_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_06_world_from_335_was_2018_02_19_07_world_335.sql @@ -1,3 +1,4 @@ +/* -- Torwa Pathfinder --> Add gossip option and conditions DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=2188; INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES @@ -7,3 +8,4 @@ INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry DELETE FROM `gossip_menu_option` WHERE `MenuID`=2188; INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES (2188,0,0,"Who is this Lar'korwi you spoke of?",5187,1,1,2201,0,0,0,"",0,0); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_08_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_07_world_from_335_was_2018_02_19_08_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_08_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_07_world_from_335_was_2018_02_19_08_world_335.sql index 000d9c7e70..3c91bb10a8 100644 --- a/sql/updates/world/3.3.5/2018_02_19_08_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_07_world_from_335_was_2018_02_19_08_world_335.sql @@ -1,3 +1,4 @@ +/* -- Apothecary Faustin DELETE FROM `creature_text` WHERE `CreatureID`=5414; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES @@ -19,3 +20,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (541400,9,6,0,0,0,100,0,1000,1000,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,3.14159,"Apothecary Faustin - On Script - Set Orientation"), (541400,9,7,0,0,0,100,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Say Line 2"), (541400,9,8,0,0,0,100,0,0,0,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Apothecary Faustin - On Script - Add Npc Flag Questgiver"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_09_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_08_world_from_335_was_2018_02_19_09_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_09_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_08_world_from_335_was_2018_02_19_09_world_335.sql index 88647b9d81..d12c62e2cb 100644 --- a/sql/updates/world/3.3.5/2018_02_19_09_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_08_world_from_335_was_2018_02_19_09_world_335.sql @@ -1,6 +1,8 @@ +/* -- Breadcrumb Quest "The Corruption Abroad" UPDATE `quest_template_addon` SET `PrevQuestID`=0 WHERE `ID`=1275; DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry` IN (3765,1275); INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES (19,0,3765,0,0,14,0,1275,0,0,0,0,0,"","Quest 'The Corruption Abroad' can only be taken if quest 'Researching the Corruption' is not taken"), (19,0,1275,0,0,28,0,3765,0,0,1,0,0,"","Quest 'Researching the Corruption' can only be taken if quest 'The Corruption Abroad' is not completed"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_10_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_09_world_from_335_was_2018_02_19_10_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_10_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_09_world_from_335_was_2018_02_19_10_world_335.sql index ab06d7651c..a8a48eb645 100644 --- a/sql/updates/world/3.3.5/2018_02_19_10_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_09_world_from_335_was_2018_02_19_10_world_335.sql @@ -1,3 +1,4 @@ +/* -- Fel'zerul DELETE FROM `creature_text` WHERE `CreatureID`=1443; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES @@ -12,3 +13,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (144300,9,1,0,0,0,100,0,1000,1000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Say Line 0"), (144300,9,2,0,0,0,100,0,4000,4000,0,0,11,7437,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Cast 'Break Stuff'"), (144300,9,3,0,0,0,100,0,3000,3000,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fel'zerul - On Script - Add Npc Flag Questgiver"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_11_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_10_world_from_335_was_2018_02_19_11_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_11_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_10_world_from_335_was_2018_02_19_11_world_335.sql index 5b1d938db4..ee1e3dc812 100644 --- a/sql/updates/world/3.3.5/2018_02_19_11_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_10_world_from_335_was_2018_02_19_11_world_335.sql @@ -1,3 +1,4 @@ +/* -- Starving Snickerfang UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=5984; DELETE FROM `smart_scripts` WHERE `entryorguid`=5984 AND `source_type`=0; @@ -109,3 +110,4 @@ UPDATE `smart_scripts` SET `action_param2`=32 WHERE `entryorguid`=6008 AND `sour -- Shadowsworn Dreadweaver UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=6009 AND `source_type`=0 AND `id`=1; UPDATE `smart_scripts` SET `action_param2`=32 WHERE `entryorguid`=6009 AND `source_type`=0 AND `id`=2; +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_12_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_11_world_from_335_was_2018_02_19_12_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_12_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_11_world_from_335_was_2018_02_19_12_world_335.sql index f139618a01..ae08d6f629 100644 --- a/sql/updates/world/3.3.5/2018_02_19_12_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_11_world_from_335_was_2018_02_19_12_world_335.sql @@ -1,3 +1,4 @@ +/* -- Ravasaur Runner UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6506; DELETE FROM `smart_scripts` WHERE `entryorguid`=6506 AND `source_type`=0; @@ -77,3 +78,4 @@ UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6521; DELETE FROM `smart_scripts` WHERE `entryorguid`=6521 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 (6521,0,0,0,0,0,100,0,3000,3000,3000,3000,11,11351,0,0,0,0,0,1,0,0,0,0,0,0,0,"Living Blaze - In Combat - Cast 'Fire Shield'"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_13_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_12_world_from_335_was_2018_02_19_13_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_13_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_12_world_from_335_was_2018_02_19_13_world_335.sql index 7189475f3a..72adbfad5a 100644 --- a/sql/updates/world/3.3.5/2018_02_19_13_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_12_world_from_335_was_2018_02_19_13_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "Forsaken Diseases" DELETE FROM `smart_scripts` WHERE `entryorguid`=384801 AND `source_type`=9; 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 @@ -68,3 +69,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (251902,9,5,0,0,0,100,0,7000,7000,0,0,1,7,0,0,0,0,0,12,1,0,0,0,0,0,0,"Kin'weelay - On Script - Say Line 7"), (251902,9,6,0,0,0,100,0,5000,5000,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Script - Add Npc Flag Questgiver"), (251902,9,7,0,0,0,100,0,5000,5000,0,0,66,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kin'weelay - On Script - Set Orientation"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_14_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_13_world_from_335_was_2018_02_19_14_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_14_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_13_world_from_335_was_2018_02_19_14_world_335.sql index 4f1c721c73..3186e80103 100644 --- a/sql/updates/world/3.3.5/2018_02_19_14_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_13_world_from_335_was_2018_02_19_14_world_335.sql @@ -1,5 +1,7 @@ +/* -- Arkkoran Clacker UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=6135; DELETE FROM `smart_scripts` WHERE `entryorguid`=6135 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 (6135,0,0,0,2,0,100,1,0,50,0,0,39,30,1,0,0,0,0,1,0,0,0,0,0,0,0,"Arkkoran Clacker - Between 0-50% Health - Call For Help (No Repeat)"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_15_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_14_world_from_335_was_2018_02_19_15_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_15_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_14_world_from_335_was_2018_02_19_15_world_335.sql index b3b244105a..d01dcb19fd 100644 --- a/sql/updates/world/3.3.5/2018_02_19_15_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_14_world_from_335_was_2018_02_19_15_world_335.sql @@ -1,3 +1,4 @@ +/* -- Quest "How Big a Threat? (Part 2)" UPDATE `creature_text` SET `Emote`=6 WHERE `CreatureID`=3693 AND `GroupID`=0; UPDATE `creature_text` SET `Emote`=5 WHERE `CreatureID`=3693 AND `GroupID`=1; @@ -96,3 +97,4 @@ DELETE FROM `smart_scripts` WHERE `entryorguid`=3681 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 (3681,0,0,0,38,0,100,0,1,1,0,0,53,1,3681,0,0,0,0,1,0,0,0,0,0,0,0,"Wisp - On Data Set - Start Waypoint"), (3681,0,1,0,40,0,100,0,3,3681,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Wisp - On Waypoint Reached - Despawn"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_16_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_15_world_from_335_was_2018_02_19_16_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_16_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_15_world_from_335_was_2018_02_19_16_world_335.sql index b1da9c5017..52db751a92 100644 --- a/sql/updates/world/3.3.5/2018_02_19_16_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_15_world_from_335_was_2018_02_19_16_world_335.sql @@ -1,3 +1,4 @@ +/* -- Blood Elf Defender UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=8581; DELETE FROM `smart_scripts` WHERE `entryorguid`=8581 AND `source_type`=0; @@ -30,3 +31,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ DELETE FROM `creature_text` WHERE `CreatureID`=8578; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES (8578,0,0,"You dare! Now feel my wrath!",14,0,100,0,0,0,4495,0,"Magus Rimtori"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_17_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_16_world_from_335_was_2018_02_19_17_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_17_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_16_world_from_335_was_2018_02_19_17_world_335.sql index b00c9ad746..f8b9777ea0 100644 --- a/sql/updates/world/3.3.5/2018_02_19_17_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_16_world_from_335_was_2018_02_19_17_world_335.sql @@ -1,3 +1,4 @@ +/* -- Mordent Evenshade & Sentinel Stillbough DELETE FROM `creature_text` WHERE `CreatureID` IN (36479,36481); INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES @@ -47,3 +48,4 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (3647901,9,7,0,0,0,100,0,5000,5000,0,0,1,5,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 5 (Sentinel Stillbough)"), (3647901,9,8,0,0,0,100,0,3000,3000,0,0,1,12,0,0,0,0,0,1,0,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 12"), (3647901,9,9,0,0,0,100,0,6000,6000,0,0,1,6,0,0,0,0,0,19,36481,0,0,0,0,0,0,"Archmage Mordent Evenshade - On Script - Say Line 6 (Sentinel Stillbough)"); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_19_18_world_335.sql b/sql/updates/world/4.3.4/2018_02_20_17_world_from_335_was_2018_02_19_18_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_19_18_world_335.sql rename to sql/updates/world/4.3.4/2018_02_20_17_world_from_335_was_2018_02_19_18_world_335.sql index 7f82dfa474..0fd35b2d54 100644 --- a/sql/updates/world/3.3.5/2018_02_19_18_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_20_17_world_from_335_was_2018_02_19_18_world_335.sql @@ -1,3 +1,4 @@ +/* -- Remove unique items from reference table 24048 DELETE FROM `reference_loot_template` WHERE `Entry`=24048 AND `Item` IN (1297, 2234, 4462, 4724); @@ -19,3 +20,4 @@ INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Chance`, `GroupId`, `Com (697, 1998, 0.1, 0, "Bloodscalp Shaman - Bloodscalp Channeling Staff"), (2562, 3341, 0.1, 0, "Boulderfist Ogre - Gauntlets of Ogre Strength"), (2564, 3341, 0.1, 0, "Boulderfist Enforcer - Gauntlets of Ogre Strength"); +*/ From f2f574fbdd78632ab4e0a6706ec21999a5ac4250 Mon Sep 17 00:00:00 2001 From: ariel- Date: Wed, 21 Feb 2018 10:33:50 -0300 Subject: [PATCH 173/178] DB/Spells: fix proc regression with Missile Barrage Closes #21466 --- sql/updates/world/3.3.5/2018_02_21_00_world_335.sql | 1 + src/server/game/Spells/SpellMgr.cpp | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_21_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_21_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_21_00_world_335.sql new file mode 100644 index 0000000000..c52db66c24 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_21_00_world_335.sql @@ -0,0 +1 @@ +UPDATE `spell_proc` SET `ProcFlags`=65536 WHERE `SpellId`=44401; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 2c474523b3..bebe00d53e 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2886,6 +2886,13 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AttributesEx4 |= SPELL_ATTR4_FIXED_DAMAGE; }); + // Missile Barrage + ApplySpellFix({ 44401 }, [](SpellInfo* spellInfo) + { + // should be consumed before Clearcasting + spellInfo->Priority = 100; + }); + // Howl of Azgalor ApplySpellFix({ 31344 }, [](SpellInfo* spellInfo) { From ca312ced054616078cc70f3662217cca44ab41f0 Mon Sep 17 00:00:00 2001 From: Treeston Date: Wed, 21 Feb 2018 20:54:00 +0100 Subject: [PATCH 174/178] DB/SpawnGroup: Reserve group IDs 52 through 56 for Culling of Stratholme rewrite --- sql/updates/world/3.3.5/2018_02_21_01_world.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_21_01_world.sql diff --git a/sql/updates/world/3.3.5/2018_02_21_01_world.sql b/sql/updates/world/3.3.5/2018_02_21_01_world.sql new file mode 100644 index 0000000000..e29c989981 --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_21_01_world.sql @@ -0,0 +1,8 @@ +-- +DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN 52 AND 56; +INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES +(52, "Culling of Stratholme - Chromie (middle)", 4), +(53, "Culling of Stratholme - Crate Helpers", 4), +(54, "Culling of Stratholme - Undead - Gauntlet", 4), +(55, "Culling of Stratholme - Undead", 4), +(56, "Culling of Stratholme - Stratholme residents", 4); From 30e0c87ff9e0e118e8747d2a6a044b4e2752d9eb Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 22 Feb 2018 01:35:01 -0300 Subject: [PATCH 175/178] Core/Auras: restrict target map update only to area auras as player requires to have auras registered on load Closes #21472 --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 1 - src/server/game/Spells/Auras/SpellAuras.cpp | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 1757ee95a2..fc4f8f0ff2 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1676,7 +1676,6 @@ void AuraEffect::HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool return; Unit* target = aurApp->GetTarget(); - if (target->GetTypeId() != TYPEID_PLAYER) return; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 19989c2cd3..077d51eef9 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -496,10 +496,6 @@ void Aura::UpdateTargetMap(Unit* caster, bool apply) m_updateTargetMapInterval = UPDATE_TARGET_MAP_INTERVAL; - // skip update if owner is not in world! - if (!GetOwner()->IsInWorld()) - return; - // fill up to date target list // target, effMask std::unordered_map targets; @@ -2329,6 +2325,10 @@ void UnitAura::FillTargetMap(std::unordered_map& targets, Unit* ca units.push_back(GetUnitOwner()); else { + // skip area update if owner is not in world! + if (!GetUnitOwner()->IsInWorld()) + continue; + float radius = GetSpellInfo()->Effects[effIndex].CalcRadius(caster); if (!GetUnitOwner()->HasUnitState(UNIT_STATE_ISOLATED)) From 7bc51fe29e94aedb67e9158152f9618fa71ca128 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 24 Feb 2018 13:26:26 +0100 Subject: [PATCH 176/178] Revert "DB/Spells: fix proc regression with Missile Barrage" This reverts commit 640dd138a5916a54808b9c1a363e87026d1af184. --- sql/updates/world/3.3.5/2018_02_21_00_world_335.sql | 1 - src/server/game/Spells/SpellMgr.cpp | 7 ------- 2 files changed, 8 deletions(-) delete mode 100644 sql/updates/world/3.3.5/2018_02_21_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_21_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_21_00_world_335.sql deleted file mode 100644 index c52db66c24..0000000000 --- a/sql/updates/world/3.3.5/2018_02_21_00_world_335.sql +++ /dev/null @@ -1 +0,0 @@ -UPDATE `spell_proc` SET `ProcFlags`=65536 WHERE `SpellId`=44401; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index bebe00d53e..2c474523b3 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2886,13 +2886,6 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AttributesEx4 |= SPELL_ATTR4_FIXED_DAMAGE; }); - // Missile Barrage - ApplySpellFix({ 44401 }, [](SpellInfo* spellInfo) - { - // should be consumed before Clearcasting - spellInfo->Priority = 100; - }); - // Howl of Azgalor ApplySpellFix({ 31344 }, [](SpellInfo* spellInfo) { From 8c01eb89a5557a546b81f8d5b6d706b888d5f769 Mon Sep 17 00:00:00 2001 From: ZenoX92 Date: Fri, 23 Feb 2018 08:11:39 +0100 Subject: [PATCH 177/178] DB/Text: Flight Master NPC racial language on Aggro * Many or all Flight Masters / Wind Rider Masters yelled in Dwarvish before this change. Closes #21413 --- .../world/3.3.5/2018_02_23_00_world_335.sql | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 sql/updates/world/3.3.5/2018_02_23_00_world_335.sql diff --git a/sql/updates/world/3.3.5/2018_02_23_00_world_335.sql b/sql/updates/world/3.3.5/2018_02_23_00_world_335.sql new file mode 100644 index 0000000000..c8952e7cdb --- /dev/null +++ b/sql/updates/world/3.3.5/2018_02_23_00_world_335.sql @@ -0,0 +1,116 @@ +-- Aggro text for Flight Masters +DELETE FROM `creature_text` WHERE `CreatureID` IN (37915,31426,30271,29762,27344,26876,26877,26878,26879,26880,26881,26844,26845,26846,26847,26848,26850,26852,26853,26602,26566,25288,24366,24155,24061,24032,23859,23736,22936,22935,22485,21107,20762,20234,19558,19317,19181,18953,18942,18931,18937,18939,18809,18807,18808,18791,18788,18789,18785,17555,17554,16822,16587,16227,16192,16189,15178,15177,13177,12740,12636,12617,12616,12596,12578,12577,11901,11900,11899,11139,11138,10897,10378,8610,8609,8020,8019,7824,7823,4267,3841,3838,2995,4551,2389,2226,6726,6026,4317,4314,3615,3305,352,523,931,1571,2299,2409,2432,2835,2859,2941,4319,4321,4407,6706,1387,2861,3310,4312,2851,2858); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(352,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Dungar Longdrink"), +(523,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Thor"), +(931,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Ariena Stormfeather"), +(1571,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Shellei Brondir"), +(2299,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Borgus Stoutarm"), +(2409,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Felicia Maline"), +(2432,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Darla Harris"), +(2835,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Cedrik Prose"), +(2859,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Gyll"), +(2941,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Lanie Reed"), +(4319,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Thyssiana"), +(4321,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Baldruc"), +(4407,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Teloren"), +(6706,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Baritanas Skyriver"), +(7823,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Bera Stonehammer"), +(8609,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Alexandra Constantine"), +(10897,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Sindrayl"), +(11138,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Maethrya"), +(12577,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Jarrodenus"), +(12578,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Mishellena"), +(12596,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Bibilfaz Featherwhistle"), +(12617,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Khaelyn Steelwing"), +(15177,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Cloud Skydancer"), +(16822,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Flightmaster Krill Bitterhue"), +(17554,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Laando"), +(17555,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Stephanos"), +(18785,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Kuma"), +(18788,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Munci"), +(18789,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Furgu"), +(18809,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Furnan Skysoar"), +(18931,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Amish Wildhammer"), +(18937,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Amerun Leafshade"), +(18939,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Brubeck Stormfoot"), +(19181,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Lemla Hopewing"), +(20234,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Runetog Wildhammer"), +(21107,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Rip Pedalslam"), +(22485,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Halu"), +(22935,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Suralais Farwind"), +(22936,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Auhula"), +(23736,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Pricilla Winterwind"), +(23859,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Greer Orehammer"), +(24061,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"James Ormsby"), +(24366,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Nizzle"), +(26602,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Kara Thricestar"), +(26876,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Samuel Clearbook"), +(26877,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Derek Rammel"), +(26878,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Rodney Wells"), +(26879,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Tomas Riverwell"), +(26880,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Vana Grey"), +(26881,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Palena Silvercloud"), +(30271,0,0,"Guards! Help me!",14,7,100,0,0,0,4566,0,"Galendror Whitewing"), +(1387,0,0,"Grunts! Attack!",14,1,100,0,0,0,4558,0,"Thysta"), +(2861,0,0,"Grunts! Attack!",14,1,100,0,0,0,4558,0,"Gorrik"), +(3310,0,0,"Grunts! Attack!",14,1,100,0,0,0,4558,0,"Doras"), +(4312,0,0,"Grunts! Attack!",14,1,100,0,0,0,4558,0,"Tharm"), +(2851,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Urda"), +(2858,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Gringer"), +(3305,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Grisha"), +(3615,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Devrak"), +(4314,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Gorkas"), +(6026,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Breyk"), +(6726,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Thalon"), +(7824,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Bulkrek Ragefist"), +(8610,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Kroum"), +(10378,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Omusa Thunderhorn"), +(11139,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Yugrek"), +(11899,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Shardi"), +(11900,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Shardi"), +(11901,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Andruk"), +(12616,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Vhulgra"), +(12636,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Georgia"), +(12740,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Faustron"), +(13177,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Vahgruk"), +(15178,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Runk Windtamer"), +(16189,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Skymaster Sunwing"), +(16192,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Skymistress Gloaming"), +(16587,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Barley"), +(18791,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Du'ga"), +(18807,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Kerna"), +(18808,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Gursha"), +(18942,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Innalia"), +(18953,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Unoke Tenderhoof"), +(19317,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Drek'Gol"), +(19558,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Amilya Airheart"), +(20762,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Gur'zil"), +(24032,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Celea Frozenmane"), +(24155,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Tobias Sarkhoff"), +(25288,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Turida Coldwind"), +(26566,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Narzun Skybreaker"), +(26844,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Lilleth Radescu"), +(26845,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Junter Weiss"), +(26846,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Kareg"), +(26847,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Omu Spiritbreeze"), +(26848,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Kimbiza"), +(26850,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Numo Spiritbreeze"), +(26852,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Kragh"), +(26853,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Makki Wintergale"), +(27344,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Bat Handler Adeline"), +(29762,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Hyeyoung Parka"), +(31426,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Doras"), +(37915,0,0,"Guards!",14,1,100,0,0,0,4561,0,"Timothy Cunningham"), +(2226,0,0,"Intruders! Attack the intruders!",14,33,100,0,0,0,4569,0,"Karos Razok"), +(2389,0,0,"Intruders! Attack the intruders!",14,33,100,0,0,0,4569,0,"Zarise"), +(4551,0,0,"Intruders! Attack the intruders!",14,33,100,0,0,0,4569,0,"Michael Garrett"), +(2995,0,0,"You will not defile our sacred land!",14,3,100,0,0,0,4560,0,"Tal"), +(4317,0,0,"You will not defile our sacred land!",14,3,100,0,0,0,4560,0,"Nyse"), +(8020,0,0,"You will not defile our sacred land!",14,3,100,0,0,0,4560,0,"Shyn"), +(3838,0,0,"Sentinels, come to my defense!",14,2,100,0,0,0,4562,0,"Vesprystus"), +(3841,0,0,"Sentinels, come to my defense!",14,2,100,0,0,0,4562,0,"Caylais Moonfeather"), +(4267,0,0,"Sentinels, come to my defense!",14,2,100,0,0,0,4562,0,"Daelyshia"), +(8019,0,0,"Sentinels, come to my defense!",14,2,100,0,0,0,4562,0,"Fyldren Moonfeather"); + +DELETE FROM `smart_scripts` WHERE `entryorguid`=16227 AND `source_type`=0 AND `id`=2; -- Bragok doesn't talk on aggro From 8ad35cb9fa5d2d7f72445735c4d9e54c08f2c93b Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sat, 24 Feb 2018 13:50:29 +0100 Subject: [PATCH 178/178] rename files --- ...018_02_24_00_world_from_335_was_2018_02_21_01_world.sql} | 2 ++ ...02_24_01_world_from_335_was_2018_02_23_00_world_335.sql} | 2 ++ src/server/database/Updater/DBUpdater.cpp | 6 +++--- 3 files changed, 7 insertions(+), 3 deletions(-) rename sql/updates/world/{3.3.5/2018_02_21_01_world.sql => 4.3.4/2018_02_24_00_world_from_335_was_2018_02_21_01_world.sql} (98%) rename sql/updates/world/{3.3.5/2018_02_23_00_world_335.sql => 4.3.4/2018_02_24_01_world_from_335_was_2018_02_23_00_world_335.sql} (99%) diff --git a/sql/updates/world/3.3.5/2018_02_21_01_world.sql b/sql/updates/world/4.3.4/2018_02_24_00_world_from_335_was_2018_02_21_01_world.sql similarity index 98% rename from sql/updates/world/3.3.5/2018_02_21_01_world.sql rename to sql/updates/world/4.3.4/2018_02_24_00_world_from_335_was_2018_02_21_01_world.sql index e29c989981..f2491b086b 100644 --- a/sql/updates/world/3.3.5/2018_02_21_01_world.sql +++ b/sql/updates/world/4.3.4/2018_02_24_00_world_from_335_was_2018_02_21_01_world.sql @@ -1,3 +1,4 @@ +/* -- DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN 52 AND 56; INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES @@ -6,3 +7,4 @@ INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES (54, "Culling of Stratholme - Undead - Gauntlet", 4), (55, "Culling of Stratholme - Undead", 4), (56, "Culling of Stratholme - Stratholme residents", 4); +*/ diff --git a/sql/updates/world/3.3.5/2018_02_23_00_world_335.sql b/sql/updates/world/4.3.4/2018_02_24_01_world_from_335_was_2018_02_23_00_world_335.sql similarity index 99% rename from sql/updates/world/3.3.5/2018_02_23_00_world_335.sql rename to sql/updates/world/4.3.4/2018_02_24_01_world_from_335_was_2018_02_23_00_world_335.sql index c8952e7cdb..970dacb8b2 100644 --- a/sql/updates/world/3.3.5/2018_02_23_00_world_335.sql +++ b/sql/updates/world/4.3.4/2018_02_24_01_world_from_335_was_2018_02_23_00_world_335.sql @@ -1,3 +1,4 @@ +/* -- Aggro text for Flight Masters DELETE FROM `creature_text` WHERE `CreatureID` IN (37915,31426,30271,29762,27344,26876,26877,26878,26879,26880,26881,26844,26845,26846,26847,26848,26850,26852,26853,26602,26566,25288,24366,24155,24061,24032,23859,23736,22936,22935,22485,21107,20762,20234,19558,19317,19181,18953,18942,18931,18937,18939,18809,18807,18808,18791,18788,18789,18785,17555,17554,16822,16587,16227,16192,16189,15178,15177,13177,12740,12636,12617,12616,12596,12578,12577,11901,11900,11899,11139,11138,10897,10378,8610,8609,8020,8019,7824,7823,4267,3841,3838,2995,4551,2389,2226,6726,6026,4317,4314,3615,3305,352,523,931,1571,2299,2409,2432,2835,2859,2941,4319,4321,4407,6706,1387,2861,3310,4312,2851,2858); INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES @@ -114,3 +115,4 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan (8019,0,0,"Sentinels, come to my defense!",14,2,100,0,0,0,4562,0,"Fyldren Moonfeather"); DELETE FROM `smart_scripts` WHERE `entryorguid`=16227 AND `source_type`=0 AND `id`=2; -- Bragok doesn't talk on aggro +*/ diff --git a/src/server/database/Updater/DBUpdater.cpp b/src/server/database/Updater/DBUpdater.cpp index 6922be3688..0edaed763b 100644 --- a/src/server/database/Updater/DBUpdater.cpp +++ b/src/server/database/Updater/DBUpdater.cpp @@ -287,11 +287,11 @@ bool DBUpdater::Populate(DatabaseWorkerPool& pool) } case LOCATION_DOWNLOAD: { - const char* filename = base.filename().generic_string().c_str(); - const char* workdir = boost::filesystem::current_path().generic_string().c_str(); + std::string const filename = base.filename().generic_string(); + std::string const workdir = boost::filesystem::current_path().generic_string().c_str(); TC_LOG_ERROR("sql.updates", ">> File \"%s\" is missing, download it from \"https://t.me/trinitycorelegacy\"" \ " Mirror: \"https://github.com/TrinityCoreLegacy/TrinityCore/releases\"" \ - " uncompress it and place the file \"%s\" in the directory \"%s\".", filename, filename, workdir); + " uncompress it and place the file \"%s\" in the directory \"%s\".", filename.c_str(), filename.c_str(), workdir.c_str()); break; } }