From 7092c565b34de48e4eebb747e71f748d8044c177 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 29 Apr 2021 12:54:52 +0200 Subject: [PATCH 001/108] fix(DB/Creature): Add some immunities to ToC (#5436) --- .../pending_db_world/rev_1619295401445296600.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619295401445296600.sql diff --git a/data/sql/updates/pending_db_world/rev_1619295401445296600.sql b/data/sql/updates/pending_db_world/rev_1619295401445296600.sql new file mode 100644 index 0000000000..3a90ac68c2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619295401445296600.sql @@ -0,0 +1,11 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619295401445296600'); + +UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`| +1| -- MECHANIC_CHARM +16| -- MECHANIC_FEAR +64| -- MECHANIC_ROOT +512| -- MECHANIC_SLEEP +4096| -- MECHANIC_FREEZE +65536| -- MECHANIC_POLYMORPH +536870912 -- MECHANIC_SAPPED +WHERE `entry` IN (34701, 34705, 34657); From 5ab6ad0894630f159268889504365182173fc881 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 11:25:55 +0000 Subject: [PATCH 002/108] chore(DB): import pending SQL update file Referenced commit(s): 7092c565b34de48e4eebb747e71f748d8044c177 --- data/sql/updates/db_world/2021_04_29_00.sql | 36 +++++++++++++++++++ .../rev_1619295401445296600.sql | 11 ------ 2 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 data/sql/updates/db_world/2021_04_29_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619295401445296600.sql diff --git a/data/sql/updates/db_world/2021_04_29_00.sql b/data/sql/updates/db_world/2021_04_29_00.sql new file mode 100644 index 0000000000..fe5fcef415 --- /dev/null +++ b/data/sql/updates/db_world/2021_04_29_00.sql @@ -0,0 +1,36 @@ +-- DB update 2021_04_27_01 -> 2021_04_29_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_27_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_27_01 2021_04_29_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619295401445296600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619295401445296600'); + +UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`| +1| -- MECHANIC_CHARM +16| -- MECHANIC_FEAR +64| -- MECHANIC_ROOT +512| -- MECHANIC_SLEEP +4096| -- MECHANIC_FREEZE +65536| -- MECHANIC_POLYMORPH +536870912 -- MECHANIC_SAPPED +WHERE `entry` IN (34701, 34705, 34657); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619295401445296600.sql b/data/sql/updates/pending_db_world/rev_1619295401445296600.sql deleted file mode 100644 index 3a90ac68c2..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619295401445296600.sql +++ /dev/null @@ -1,11 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619295401445296600'); - -UPDATE `creature_template` SET `mechanic_immune_mask`=`mechanic_immune_mask`| -1| -- MECHANIC_CHARM -16| -- MECHANIC_FEAR -64| -- MECHANIC_ROOT -512| -- MECHANIC_SLEEP -4096| -- MECHANIC_FREEZE -65536| -- MECHANIC_POLYMORPH -536870912 -- MECHANIC_SAPPED -WHERE `entry` IN (34701, 34705, 34657); From 7fa1cb1c1ad24023a8f5f7e9ccc3f05f8ba80489 Mon Sep 17 00:00:00 2001 From: Kargatum Date: Thu, 29 Apr 2021 20:07:03 +0700 Subject: [PATCH 003/108] fix(Core/Player): correct add guid for packet SMSG_CLIENT_CONTROL_UPDATE (#5540) --- src/server/game/Entities/Player/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index adcdc73a26..54a49d189c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -24857,7 +24857,7 @@ void Player::ResurectUsingRequestData() void Player::SetClientControl(Unit* target, bool allowMove, bool packetOnly /*= false*/) { WorldPacket data(SMSG_CLIENT_CONTROL_UPDATE, target->GetPackGUID().size() + 1); - data.append(target->GetPackGUID()); + data << target->GetPackGUID(); data << uint8((allowMove && !target->HasUnitState(UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED)) ? 1 : 0); GetSession()->SendPacket(&data); From eb1c196855e9eecc8c2bcc868caa8a447dc485e1 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Thu, 29 Apr 2021 15:41:20 +0200 Subject: [PATCH 004/108] fix(Core/Spells): SPELL_AURA_DAMAGE_SHIELD auras should be modified by absorbs and resistance. (#5418) --- src/server/game/Entities/Unit/Unit.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index d79c8371fe..0dd4f31e24 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1612,8 +1612,12 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) if (Unit* caster = (*dmgShieldItr)->GetCaster()) damage = this->SpellDamageBonusTaken(caster, i_spellProto, damage, SPELL_DIRECT_DAMAGE); - // No Unit::CalcAbsorbResist here - opcode doesn't send that data - this damage is probably not affected by that - Unit::DealDamageMods(this, damage, nullptr); + uint32 absorb = 0; + uint32 resist = 0; + Unit::CalcAbsorbResist(victim, this, i_spellProto->GetSchoolMask(), SPELL_DIRECT_DAMAGE, damage, &absorb, &resist, i_spellProto); + damage -= absorb + resist; + + Unit::DealDamageMods(this, damage, &absorb); // TODO: Move this to a packet handler WorldPacket data(SMSG_SPELLDAMAGESHIELD, (8 + 8 + 4 + 4 + 4 + 4)); @@ -1623,7 +1627,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) data << uint32(damage); // Damage int32 overkill = int32(damage) - int32(GetHealth()); data << uint32(overkill > 0 ? overkill : 0); // Overkill - data << uint32(i_spellProto->SchoolMask); + data << uint32(i_spellProto->GetSchoolMask()); victim->SendMessageToSet(&data, true); Unit::DealDamage(victim, this, damage, 0, SPELL_DIRECT_DAMAGE, i_spellProto->GetSchoolMask(), i_spellProto, true); From 086b8f9dac23305961a07613088f4e60ab498361 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Thu, 29 Apr 2021 15:41:50 +0200 Subject: [PATCH 005/108] fix(Core/Loot): Fixed looting personal items while being in master loot group. (#5389) --- src/server/game/Entities/Player/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 54a49d189c..1a3da37c2e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25843,7 +25843,7 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot) // Xinef: exploit protection, dont allow to loot normal items if player is not master loot and not below loot threshold // Xinef: only quest, ffa and conditioned items - if (!item->is_underthreshold && !GetLootGUID().IsItem() && GetGroup() && GetGroup()->GetLootMethod() == MASTER_LOOT && GetGUID() != GetGroup()->GetMasterLooterGuid()) + if (!item->is_underthreshold && loot->roundRobinPlayer && !GetLootGUID().IsItem() && GetGroup() && GetGroup()->GetLootMethod() == MASTER_LOOT && GetGUID() != GetGroup()->GetMasterLooterGuid()) if (qitem == nullptr && ffaitem == nullptr && conditem == nullptr) { SendLootRelease(GetLootGUID()); From e8742d40549ddbe544c292e0011de8ffb9637418 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Thu, 29 Apr 2021 15:56:31 +0200 Subject: [PATCH 006/108] fix(DB/Pets): Added `casterGuid` as a primary key to `pet_aura` table. (#5423) --- .../pending_db_characters/rev_1619247484235757300.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_characters/rev_1619247484235757300.sql diff --git a/data/sql/updates/pending_db_characters/rev_1619247484235757300.sql b/data/sql/updates/pending_db_characters/rev_1619247484235757300.sql new file mode 100644 index 0000000000..daaa3cb862 --- /dev/null +++ b/data/sql/updates/pending_db_characters/rev_1619247484235757300.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_characters` (`sql_rev`) VALUES ('1619247484235757300'); + +ALTER TABLE `pet_aura` +DROP PRIMARY KEY, +ADD PRIMARY KEY (`guid`, `casterGuid`, `spell`, `effectMask`); From a8248cb9e96052769965c826beee69ec1e9d5c75 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 14:20:53 +0000 Subject: [PATCH 007/108] chore(DB): import pending SQL update file Referenced commit(s): e8742d40549ddbe544c292e0011de8ffb9637418 --- .../updates/db_characters/2021_04_29_00.sql | 30 +++++++++++++++++++ .../rev_1619247484235757300.sql | 5 ---- 2 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/db_characters/2021_04_29_00.sql delete mode 100644 data/sql/updates/pending_db_characters/rev_1619247484235757300.sql diff --git a/data/sql/updates/db_characters/2021_04_29_00.sql b/data/sql/updates/db_characters/2021_04_29_00.sql new file mode 100644 index 0000000000..fc0f5cdd62 --- /dev/null +++ b/data/sql/updates/db_characters/2021_04_29_00.sql @@ -0,0 +1,30 @@ +-- DB update 2021_04_27_00 -> 2021_04_29_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_characters' AND COLUMN_NAME = '2021_04_27_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_characters CHANGE COLUMN 2021_04_27_00 2021_04_29_00 bit; +SELECT sql_rev INTO OK FROM version_db_characters WHERE sql_rev = '1619247484235757300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_characters` (`sql_rev`) VALUES ('1619247484235757300'); + +ALTER TABLE `pet_aura` +DROP PRIMARY KEY, +ADD PRIMARY KEY (`guid`, `casterGuid`, `spell`, `effectMask`); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_characters/rev_1619247484235757300.sql b/data/sql/updates/pending_db_characters/rev_1619247484235757300.sql deleted file mode 100644 index daaa3cb862..0000000000 --- a/data/sql/updates/pending_db_characters/rev_1619247484235757300.sql +++ /dev/null @@ -1,5 +0,0 @@ -INSERT INTO `version_db_characters` (`sql_rev`) VALUES ('1619247484235757300'); - -ALTER TABLE `pet_aura` -DROP PRIMARY KEY, -ADD PRIMARY KEY (`guid`, `casterGuid`, `spell`, `effectMask`); From c3eddd37b23e520cad2b1d33490bb9387a85763a Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Thu, 29 Apr 2021 18:25:57 +0200 Subject: [PATCH 008/108] fix(DB): Stranglethorn Vale Chest Pooling 2 (#5509) --- .../rev_1619604388715021734.sql | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619604388715021734.sql diff --git a/data/sql/updates/pending_db_world/rev_1619604388715021734.sql b/data/sql/updates/pending_db_world/rev_1619604388715021734.sql new file mode 100644 index 0000000000..a173d1ac78 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619604388715021734.sql @@ -0,0 +1,39 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619604388715021734'); + +SET +@POOL = 11654, +@POOLSIZE = 10, +@POOLDESC = 'Treasures - Stranglethorn Vale', +@RESPAWN = 900, +@GUID = '11651,11676,11693,11695,11704,11806,12157,12185,29256,85723,85724,85725,85726,85730,85732,85873,85875,87388'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,@POOLDESC); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(11651,@POOL,0,@POOLDESC), +(11676,@POOL,0,@POOLDESC), +(11693,@POOL,0,@POOLDESC), +(11695,@POOL,0,@POOLDESC), +(11704,@POOL,0,@POOLDESC), +(11806,@POOL,0,@POOLDESC), +(12157,@POOL,0,@POOLDESC), +(12185,@POOL,0,@POOLDESC), +(29256,@POOL,0,@POOLDESC), +(85723,@POOL,0,@POOLDESC), +(85724,@POOL,0,@POOLDESC), +(85725,@POOL,0,@POOLDESC), +(85726,@POOL,0,@POOLDESC), +(85730,@POOL,0,@POOLDESC), +(85732,@POOL,0,@POOLDESC), +(85873,@POOL,0,@POOLDESC), +(85875,@POOL,0,@POOLDESC), +(87388,@POOL,0,@POOLDESC); + + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); + From b05c9f449a53e5d058de9c8a9c2a0940df0bf5a3 Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Thu, 29 Apr 2021 18:26:11 +0200 Subject: [PATCH 009/108] fix(DB): Chest Pooling in Arathi Highlands (#5499) --- .../rev_1619544112777738648.sql | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619544112777738648.sql diff --git a/data/sql/updates/pending_db_world/rev_1619544112777738648.sql b/data/sql/updates/pending_db_world/rev_1619544112777738648.sql new file mode 100644 index 0000000000..a6bf199004 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619544112777738648.sql @@ -0,0 +1,35 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619544112777738648'); + +SET +@POOL = 11655, +@POOLSIZE = 5, +@POOLDESC = 'Treasures - Arathi Highlands', +@RESPAWN = 900, +@GUID = '16648,100067,16950,85851,100068,16946,87385,85710,16794,16949,100070,16978,16789,16977'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,@POOLDESC); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(16648,@POOL,0,'Solid Chest, Arathi Highlands, node 1'), +(100067,@POOL,0,'Solid Chest, Arathi Highlands, node 2'), +(16950,@POOL,0,'Solid Chest, Arathi Highlands, node 3'), +(85851,@POOL,0,'Solid Chest, Arathi Highlands, node 4'), +(100068,@POOL,0,'Solid Chest, Arathi Highlands, node 5'), +(16946,@POOL,0,'Solid Chest, Arathi Highlands, node 6'), +(87385,@POOL,0,'Solid Chest, Arathi Highlands, node 7'), +(85710,@POOL,0,'Solid Chest, Arathi Highlands, node 8'), +(16794,@POOL,0,'Solid Chest, Arathi Highlands, node 9'), +(16949,@POOL,0,'Solid Chest, Arathi Highlands, node 10'), +(100070,@POOL,0,'Solid Chest, Arathi Highlands, node 11'), +(16978,@POOL,0,'Solid Chest, Arathi Highlands, node 12'), +(16789,@POOL,0,'Solid Chest, Arathi Highlands, node 13'), +(16977,@POOL,0,'Solid Chest, Arathi Highlands, node 14'); + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); +UPDATE `gameobject` SET `zoneId`= '45' WHERE FIND_IN_SET (`guid`,@GUID); + From 4c7661c41db8dd0bde1d8a5d8ff65a99337077c9 Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Thu, 29 Apr 2021 18:26:21 +0200 Subject: [PATCH 010/108] fix(DB): Chest Pooling in Desolace (#5500) --- .../rev_1619547017987840005.sql | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619547017987840005.sql diff --git a/data/sql/updates/pending_db_world/rev_1619547017987840005.sql b/data/sql/updates/pending_db_world/rev_1619547017987840005.sql new file mode 100644 index 0000000000..9aa3c6b1d6 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619547017987840005.sql @@ -0,0 +1,36 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619547017987840005'); + +SET +@POOL = 11656, +@POOLSIZE = 5, +@POOLDESC = 'Treasures - Desolace', +@RESPAWN = 900, +@GUID = '30169,85697,30170,85853,30171,85852,85712,30178,85863,30183,85713,85862,30182,30184,85861'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,@POOLDESC); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(30169,@POOL,0,'Solid Chest, Desolace, node 1'), +(85697,@POOL,0,'Solid Chest, Desolace, node 2'), +(30170,@POOL,0,'Solid Chest, Desolace, node 3'), +(85853,@POOL,0,'Solid Chest, Desolace, node 4'), +(30171,@POOL,0,'Solid Chest, Desolace, node 5'), +(85852,@POOL,0,'Solid Chest, Desolace, node 6'), +(85712,@POOL,0,'Solid Chest, Desolace, node 7'), +(30178,@POOL,0,'Solid Chest, Desolace, node 8'), +(85863,@POOL,0,'Solid Chest, Desolace, node 9'), +(30183,@POOL,0,'Solid Chest, Desolace, node 10'), +(85713,@POOL,0,'Solid Chest, Desolace, node 11'), +(85862,@POOL,0,'Solid Chest, Desolace, node 12'), +(30182,@POOL,0,'Solid Chest, Desolace, node 13'), +(30184,@POOL,0,'Solid Chest, Desolace, node 14'), +(85861,@POOL,0,'Solid Chest, Desolace, node 15'); + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); +UPDATE `gameobject` SET `zoneId`= '405' WHERE FIND_IN_SET (`guid`,@GUID); + From eb1cecba9463fe0d45909cba6a2f9329e4c68c91 Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Thu, 29 Apr 2021 18:26:33 +0200 Subject: [PATCH 011/108] fix(DB): Add Pooling to the Herbs in Burning Steppes (#5505) --- .../rev_1619550059726252710.sql | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619550059726252710.sql diff --git a/data/sql/updates/pending_db_world/rev_1619550059726252710.sql b/data/sql/updates/pending_db_world/rev_1619550059726252710.sql new file mode 100644 index 0000000000..dcd53fa713 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619550059726252710.sql @@ -0,0 +1,155 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619550059726252710'); + +SET +@POOL = 50003, +@POOLSIZE = 40, +@RESPAWN = 60, +@GUID = '4527,6810,6829,6830,19259,19285,19286,19296,19299,19315,19316,19321,19324,19339,19340,19346,19361,19362,19366,19367,19387,19388,19395,19407,19408,19426,19430,19433,19470,19475,19484,19493,19494,19510,19516,19520,19554,19566,19577,19596,19597,19624,19625,19634,19640,19641,19642,19643,19652,19653,29585,33419,39952,39954,63632,86416,87305, +16028,16042,16052,16054,16058,16059,16068,16069,16082,16106,16131,16155,16192,16225,16226,16227,39957,39958,87177, +4525,6823,6857,6873,18944,18954,18955,18958,18961,18962,18963,18970,18979,19018,19020,19024,19025,19034,19039,19042,19049,19051,19096,19109,19114,19150,19180,19194,19217,19226, +4600,6832,19666,19668,19688,19714,19723,19737,19742,19757,19760,19774,19779,19803,19806,19814,19818,19819,19820,19821,19832,19865,29584,35301,39955,65277'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,'MASTER Herbs Burning Steppes zone 46'); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(4527,@POOL,0,'Dreamfoil zone 46, node 1'), +(6810,@POOL,0,'Dreamfoil zone 46, node 2'), +(6829,@POOL,0,'Dreamfoil zone 46, node 3'), +(6830,@POOL,0,'Dreamfoil zone 46, node 4'), +(19259,@POOL,0,'Dreamfoil zone 46, node 5'), +(19285,@POOL,0,'Dreamfoil zone 46, node 6'), +(19286,@POOL,0,'Dreamfoil zone 46, node 7'), +(19296,@POOL,0,'Dreamfoil zone 46, node 8'), +(19299,@POOL,0,'Dreamfoil zone 46, node 9'), +(19315,@POOL,0,'Dreamfoil zone 46, node 10'), +(19316,@POOL,0,'Dreamfoil zone 46, node 11'), +(19321,@POOL,0,'Dreamfoil zone 46, node 12'), +(19324,@POOL,0,'Dreamfoil zone 46, node 13'), +(19339,@POOL,0,'Dreamfoil zone 46, node 14'), +(19340,@POOL,0,'Dreamfoil zone 46, node 15'), +(19346,@POOL,0,'Dreamfoil zone 46, node 16'), +(19361,@POOL,0,'Dreamfoil zone 46, node 17'), +(19362,@POOL,0,'Dreamfoil zone 46, node 18'), +(19366,@POOL,0,'Dreamfoil zone 46, node 19'), +(19367,@POOL,0,'Dreamfoil zone 46, node 20'), +(19387,@POOL,0,'Dreamfoil zone 46, node 21'), +(19388,@POOL,0,'Dreamfoil zone 46, node 22'), +(19395,@POOL,0,'Dreamfoil zone 46, node 23'), +(19407,@POOL,0,'Dreamfoil zone 46, node 24'), +(19408,@POOL,0,'Dreamfoil zone 46, node 25'), +(19426,@POOL,0,'Dreamfoil zone 46, node 26'), +(19430,@POOL,0,'Dreamfoil zone 46, node 27'), +(19433,@POOL,0,'Dreamfoil zone 46, node 28'), +(19470,@POOL,0,'Dreamfoil zone 46, node 29'), +(19475,@POOL,0,'Dreamfoil zone 46, node 30'), +(19484,@POOL,0,'Dreamfoil zone 46, node 31'), +(19493,@POOL,0,'Dreamfoil zone 46, node 32'), +(19494,@POOL,0,'Dreamfoil zone 46, node 33'), +(19510,@POOL,0,'Dreamfoil zone 46, node 34'), +(19516,@POOL,0,'Dreamfoil zone 46, node 35'), +(19520,@POOL,0,'Dreamfoil zone 46, node 36'), +(19554,@POOL,0,'Dreamfoil zone 46, node 37'), +(19566,@POOL,0,'Dreamfoil zone 46, node 38'), +(19577,@POOL,0,'Dreamfoil zone 46, node 39'), +(19596,@POOL,0,'Dreamfoil zone 46, node 40'), +(19597,@POOL,0,'Dreamfoil zone 46, node 41'), +(19624,@POOL,0,'Dreamfoil zone 46, node 42'), +(19625,@POOL,0,'Dreamfoil zone 46, node 43'), +(19634,@POOL,0,'Dreamfoil zone 46, node 44'), +(19640,@POOL,0,'Dreamfoil zone 46, node 45'), +(19641,@POOL,0,'Dreamfoil zone 46, node 46'), +(19642,@POOL,0,'Dreamfoil zone 46, node 47'), +(19643,@POOL,0,'Dreamfoil zone 46, node 48'), +(19652,@POOL,0,'Dreamfoil zone 46, node 49'), +(19653,@POOL,0,'Dreamfoil zone 46, node 50'), +(29585,@POOL,0,'Dreamfoil zone 46, node 51'), +(33419,@POOL,0,'Dreamfoil zone 46, node 52'), +(39952,@POOL,0,'Dreamfoil zone 46, node 53'), +(39954,@POOL,0,'Dreamfoil zone 46, node 54'), +(63632,@POOL,0,'Dreamfoil zone 46, node 55'), +(86416,@POOL,0,'Dreamfoil zone 46, node 56'), +(87305,@POOL,0,'Dreamfoil zone 46, node 57'), +(16028,@POOL,0,'Sungrass zone 46, node 1'), +(16042,@POOL,0,'Sungrass zone 46, node 2'), +(16052,@POOL,0,'Sungrass zone 46, node 3'), +(16054,@POOL,0,'Sungrass zone 46, node 4'), +(16058,@POOL,0,'Sungrass zone 46, node 5'), +(16059,@POOL,0,'Sungrass zone 46, node 6'), +(16068,@POOL,0,'Sungrass zone 46, node 7'), +(16069,@POOL,0,'Sungrass zone 46, node 8'), +(16082,@POOL,0,'Sungrass zone 46, node 9'), +(16106,@POOL,0,'Sungrass zone 46, node 10'), +(16131,@POOL,0,'Sungrass zone 46, node 11'), +(16155,@POOL,0,'Sungrass zone 46, node 12'), +(16192,@POOL,0,'Sungrass zone 46, node 13'), +(16225,@POOL,0,'Sungrass zone 46, node 14'), +(16226,@POOL,0,'Sungrass zone 46, node 15'), +(16227,@POOL,0,'Sungrass zone 46, node 16'), +(39957,@POOL,0,'Sungrass zone 46, node 17'), +(39958,@POOL,0,'Sungrass zone 46, node 18'), +(87177,@POOL,0,'Sungrass zone 46, node 19'), +(4525,@POOL,0,'Golden Sansam zone 46, node 1'), +(6823,@POOL,0,'Golden Sansam zone 46, node 2'), +(6857,@POOL,0,'Golden Sansam zone 46, node 3'), +(6873,@POOL,0,'Golden Sansam zone 46, node 4'), +(18944,@POOL,0,'Golden Sansam zone 46, node 5'), +(18954,@POOL,0,'Golden Sansam zone 46, node 6'), +(18955,@POOL,0,'Golden Sansam zone 46, node 7'), +(18958,@POOL,0,'Golden Sansam zone 46, node 8'), +(18961,@POOL,0,'Golden Sansam zone 46, node 9'), +(18962,@POOL,0,'Golden Sansam zone 46, node 10'), +(18963,@POOL,0,'Golden Sansam zone 46, node 11'), +(18970,@POOL,0,'Golden Sansam zone 46, node 12'), +(18979,@POOL,0,'Golden Sansam zone 46, node 13'), +(19018,@POOL,0,'Golden Sansam zone 46, node 14'), +(19020,@POOL,0,'Golden Sansam zone 46, node 15'), +(19024,@POOL,0,'Golden Sansam zone 46, node 16'), +(19025,@POOL,0,'Golden Sansam zone 46, node 17'), +(19034,@POOL,0,'Golden Sansam zone 46, node 18'), +(19039,@POOL,0,'Golden Sansam zone 46, node 19'), +(19042,@POOL,0,'Golden Sansam zone 46, node 20'), +(19049,@POOL,0,'Golden Sansam zone 46, node 21'), +(19051,@POOL,0,'Golden Sansam zone 46, node 22'), +(19096,@POOL,0,'Golden Sansam zone 46, node 23'), +(19109,@POOL,0,'Golden Sansam zone 46, node 24'), +(19114,@POOL,0,'Golden Sansam zone 46, node 25'), +(19150,@POOL,0,'Golden Sansam zone 46, node 26'), +(19180,@POOL,0,'Golden Sansam zone 46, node 27'), +(19194,@POOL,0,'Golden Sansam zone 46, node 28'), +(19217,@POOL,0,'Golden Sansam zone 46, node 29'), +(19226,@POOL,0,'Golden Sansam zone 46, node 30'), +(4600,@POOL,0,'Mountain Silversage zone 46, node 1'), +(6832,@POOL,0,'Mountain Silversage zone 46, node 2'), +(19666,@POOL,0,'Mountain Silversage zone 46, node 3'), +(19668,@POOL,0,'Mountain Silversage zone 46, node 4'), +(19688,@POOL,0,'Mountain Silversage zone 46, node 5'), +(19714,@POOL,0,'Mountain Silversage zone 46, node 6'), +(19723,@POOL,0,'Mountain Silversage zone 46, node 7'), +(19737,@POOL,0,'Mountain Silversage zone 46, node 8'), +(19742,@POOL,0,'Mountain Silversage zone 46, node 9'), +(19757,@POOL,0,'Mountain Silversage zone 46, node 10'), +(19760,@POOL,0,'Mountain Silversage zone 46, node 11'), +(19774,@POOL,0,'Mountain Silversage zone 46, node 12'), +(19779,@POOL,0,'Mountain Silversage zone 46, node 13'), +(19803,@POOL,0,'Mountain Silversage zone 46, node 14'), +(19806,@POOL,0,'Mountain Silversage zone 46, node 15'), +(19814,@POOL,0,'Mountain Silversage zone 46, node 16'), +(19818,@POOL,0,'Mountain Silversage zone 46, node 17'), +(19819,@POOL,0,'Mountain Silversage zone 46, node 18'), +(19820,@POOL,0,'Mountain Silversage zone 46, node 19'), +(19821,@POOL,0,'Mountain Silversage zone 46, node 20'), +(19832,@POOL,0,'Mountain Silversage zone 46, node 21'), +(19865,@POOL,0,'Mountain Silversage zone 46, node 22'), +(29584,@POOL,0,'Mountain Silversage zone 46, node 23'), +(35301,@POOL,0,'Mountain Silversage zone 46, node 24'), +(39955,@POOL,0,'Mountain Silversage zone 46, node 25'), +(65277,@POOL,0,'Mountain Silversage zone 46, node 26'); + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); +UPDATE `gameobject` SET `zoneId`= '46' WHERE FIND_IN_SET (`guid`,@GUID); + From d79a05314e96dd41443fa0810acd0a79da142646 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 18:37:54 +0000 Subject: [PATCH 012/108] chore(DB): import pending SQL update file Referenced commit(s): eb1cecba9463fe0d45909cba6a2f9329e4c68c91 --- .../2021_04_29_01.sql} | 25 +++++++++++++++++++ .../2021_04_29_02.sql} | 25 +++++++++++++++++++ .../2021_04_29_03.sql} | 25 +++++++++++++++++++ .../2021_04_29_04.sql} | 25 +++++++++++++++++++ 4 files changed, 100 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619544112777738648.sql => db_world/2021_04_29_01.sql} (68%) rename data/sql/updates/{pending_db_world/rev_1619547017987840005.sql => db_world/2021_04_29_02.sql} (67%) rename data/sql/updates/{pending_db_world/rev_1619550059726252710.sql => db_world/2021_04_29_03.sql} (91%) rename data/sql/updates/{pending_db_world/rev_1619604388715021734.sql => db_world/2021_04_29_04.sql} (62%) diff --git a/data/sql/updates/pending_db_world/rev_1619544112777738648.sql b/data/sql/updates/db_world/2021_04_29_01.sql similarity index 68% rename from data/sql/updates/pending_db_world/rev_1619544112777738648.sql rename to data/sql/updates/db_world/2021_04_29_01.sql index a6bf199004..24620d34d7 100644 --- a/data/sql/updates/pending_db_world/rev_1619544112777738648.sql +++ b/data/sql/updates/db_world/2021_04_29_01.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_29_00 -> 2021_04_29_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_29_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_29_00 2021_04_29_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619544112777738648'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619544112777738648'); SET @@ -33,3 +49,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); UPDATE `gameobject` SET `zoneId`= '45' WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619547017987840005.sql b/data/sql/updates/db_world/2021_04_29_02.sql similarity index 67% rename from data/sql/updates/pending_db_world/rev_1619547017987840005.sql rename to data/sql/updates/db_world/2021_04_29_02.sql index 9aa3c6b1d6..5773769ce6 100644 --- a/data/sql/updates/pending_db_world/rev_1619547017987840005.sql +++ b/data/sql/updates/db_world/2021_04_29_02.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_29_01 -> 2021_04_29_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_29_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_29_01 2021_04_29_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619547017987840005'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619547017987840005'); SET @@ -34,3 +50,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); UPDATE `gameobject` SET `zoneId`= '405' WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619550059726252710.sql b/data/sql/updates/db_world/2021_04_29_03.sql similarity index 91% rename from data/sql/updates/pending_db_world/rev_1619550059726252710.sql rename to data/sql/updates/db_world/2021_04_29_03.sql index dcd53fa713..b51c007243 100644 --- a/data/sql/updates/pending_db_world/rev_1619550059726252710.sql +++ b/data/sql/updates/db_world/2021_04_29_03.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_29_02 -> 2021_04_29_03 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_29_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_29_02 2021_04_29_03 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619550059726252710'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619550059726252710'); SET @@ -153,3 +169,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); UPDATE `gameobject` SET `zoneId`= '46' WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619604388715021734.sql b/data/sql/updates/db_world/2021_04_29_04.sql similarity index 62% rename from data/sql/updates/pending_db_world/rev_1619604388715021734.sql rename to data/sql/updates/db_world/2021_04_29_04.sql index a173d1ac78..eb5f3d229f 100644 --- a/data/sql/updates/pending_db_world/rev_1619604388715021734.sql +++ b/data/sql/updates/db_world/2021_04_29_04.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_29_03 -> 2021_04_29_04 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_29_03'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_29_03 2021_04_29_04 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619604388715021734'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619604388715021734'); SET @@ -37,3 +53,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE -- Respawn rates of gameobjects UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 94785abb8cadbe0ecc9a277871dcf550b6202a05 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Fri, 30 Apr 2021 00:04:43 +0200 Subject: [PATCH 013/108] feat(CI): Issue Labeler (#5543) --- .github/workflows/issue-labeler.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/issue-labeler.yml diff --git a/.github/workflows/issue-labeler.yml b/.github/workflows/issue-labeler.yml new file mode 100644 index 0000000000..a846175add --- /dev/null +++ b/.github/workflows/issue-labeler.yml @@ -0,0 +1,15 @@ +on: + issues: + types: [opened] + +jobs: + issue_labeler: + if: github.repository == 'azerothcore/azerothcore-wotlk' + runs-on: ubuntu-latest + name: Issue Labeler + steps: + - name: Issue Labeler + id: issue-labeler + uses: azerothcore/GitHub-Actions@issue-labeler-1.0.1 + with: + token: ${{ secrets.GITHUB_TOKEN }} From 19f06fa0b23af0a27b953ee41f9fdfe8bdc59a68 Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Fri, 30 Apr 2021 01:02:00 +0200 Subject: [PATCH 014/108] fix(DB): Chest Pooling in Tanaris (#5530) * Fix: Chest Pooling in Tanaris * Add ZoneId --- .../rev_1619641851979377067.sql | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619641851979377067.sql diff --git a/data/sql/updates/pending_db_world/rev_1619641851979377067.sql b/data/sql/updates/pending_db_world/rev_1619641851979377067.sql new file mode 100644 index 0000000000..10ec3aeb19 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619641851979377067.sql @@ -0,0 +1,44 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619641851979377067'); + +SET +@POOL = 11659, +@POOLSIZE = 5, +@POOLDESC = 'Treasures - Tanaris', +@RESPAWN = 900, +@GUID = '87386,11755,14618,85709,85714,13632,85864,85706,9096,14619,14931,40758,40772,40796,85718,85721,85722,85734,85735'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,@POOLDESC); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(87386,@POOL,0,'Solid Chest, Tanaris, node 1'), +(17298,@POOL,0,'Solid Chest, Tanaris, node 2'), +(17299,@POOL,0,'Solid Chest, Tanaris, node 3'), +(17300,@POOL,0,'Solid Chest, Tanaris, node 4'), +(17329,@POOL,0,'Solid Chest, Tanaris, node 5'), +(17330,@POOL,0,'Solid Chest, Tanaris, node 6'), +(17331,@POOL,0,'Solid Chest, Tanaris, node 7'), +(85717,@POOL,0,'Solid Chest, Tanaris, node 8'), +(85720,@POOL,0,'Solid Chest, Tanaris, node 9'), +(85729,@POOL,0,'Solid Chest, Tanaris, node 10'), +(85731,@POOL,0,'Solid Chest, Tanaris, node 11'), +(85733,@POOL,0,'Solid Chest, Tanaris, node 12'), +(85736,@POOL,0,'Solid Chest, Tanaris, node 13'), +(85737,@POOL,0,'Solid Chest, Tanaris, node 14'), +(85738,@POOL,0,'Solid Chest, Tanaris, node 15'), +(85781,@POOL,0,'Solid Chest, Tanaris, node 16'), +(85782,@POOL,0,'Solid Chest, Tanaris, node 17'), +(85783,@POOL,0,'Solid Chest, Tanaris, node 18'), +(85784,@POOL,0,'Solid Chest, Tanaris, node 19'), +(85895,@POOL,0,'Solid Chest, Tanaris, node 20'), +(85896,@POOL,0,'Solid Chest, Tanaris, node 21'); + + + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); +UPDATE `gameobject` SET `zoneId`= '440' WHERE FIND_IN_SET (`guid`,@GUID); + From cf6118fb9af1e1602d0da133ae6a2285752bf992 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 29 Apr 2021 23:03:36 +0000 Subject: [PATCH 015/108] chore(DB): import pending SQL update file Referenced commit(s): 19f06fa0b23af0a27b953ee41f9fdfe8bdc59a68 --- .../2021_04_29_05.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619641851979377067.sql => db_world/2021_04_29_05.sql} (71%) diff --git a/data/sql/updates/pending_db_world/rev_1619641851979377067.sql b/data/sql/updates/db_world/2021_04_29_05.sql similarity index 71% rename from data/sql/updates/pending_db_world/rev_1619641851979377067.sql rename to data/sql/updates/db_world/2021_04_29_05.sql index 10ec3aeb19..15c1f45a9a 100644 --- a/data/sql/updates/pending_db_world/rev_1619641851979377067.sql +++ b/data/sql/updates/db_world/2021_04_29_05.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_29_04 -> 2021_04_29_05 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_29_04'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_29_04 2021_04_29_05 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619641851979377067'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619641851979377067'); SET @@ -42,3 +58,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); UPDATE `gameobject` SET `zoneId`= '440' WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 0b87bb0ddf542768b40d54d65d0e3b0cb6cf1e48 Mon Sep 17 00:00:00 2001 From: Emir Date: Fri, 30 Apr 2021 02:59:09 +0200 Subject: [PATCH 016/108] fix(Script/Instance) [Deadmines] Smite Slam (#5373) --- .../pending_db_world/rev_1618986200217539600.sql | 3 +++ .../EasternKingdoms/Deadmines/boss_mr_smite.cpp | 15 ++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1618986200217539600.sql diff --git a/data/sql/updates/pending_db_world/rev_1618986200217539600.sql b/data/sql/updates/pending_db_world/rev_1618986200217539600.sql new file mode 100644 index 0000000000..243348e365 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1618986200217539600.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618986200217539600'); +DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 646) AND (`Index` IN (3)); + diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp index 5fb5046ee7..c8c702b62d 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp @@ -6,7 +6,7 @@ #include "ScriptedCreature.h" #include "ScriptMgr.h" -enum Spels +enum Spells { SPELL_SMITE_STOMP = 6432, SPELL_SMITE_SLAM = 6435, @@ -73,10 +73,6 @@ public: events.Update(diff); switch (events.ExecuteEvent()) { - case EVENT_SMITE_SLAM: - me->CastSpell(me->GetVictim(), SPELL_SMITE_SLAM, false); - events.ScheduleEvent(EVENT_SMITE_SLAM, 15000); - break; case EVENT_CHECK_HEALTH1: if (me->HealthBelowPct(67) && !health67) { @@ -107,6 +103,15 @@ public: } events.ScheduleEvent(EVENT_CHECK_HEALTH2, 500); break; + case EVENT_SMITE_SLAM: + if (me->HealthBelowPct(33)) + { + me->CastSpell(me->GetVictim(), SPELL_SMITE_SLAM, false); + events.ScheduleEvent(EVENT_SMITE_SLAM, 6000); + break; + } + events.ScheduleEvent(EVENT_SMITE_SLAM, 500); + break; case EVENT_SWAP_WEAPON1: me->LoadEquipment(EQUIP_TWO_SWORDS); me->SetCanDualWield(true); From 3f343830fb61aad9ba12c0c908b6b18fc9eafd83 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 30 Apr 2021 01:00:47 +0000 Subject: [PATCH 017/108] chore(DB): import pending SQL update file Referenced commit(s): 0b87bb0ddf542768b40d54d65d0e3b0cb6cf1e48 --- data/sql/updates/db_world/2021_04_30_00.sql | 28 +++++++++++++++++++ .../rev_1618986200217539600.sql | 3 -- 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/db_world/2021_04_30_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1618986200217539600.sql diff --git a/data/sql/updates/db_world/2021_04_30_00.sql b/data/sql/updates/db_world/2021_04_30_00.sql new file mode 100644 index 0000000000..7b50fd4d59 --- /dev/null +++ b/data/sql/updates/db_world/2021_04_30_00.sql @@ -0,0 +1,28 @@ +-- DB update 2021_04_29_05 -> 2021_04_30_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_29_05'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_29_05 2021_04_30_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1618986200217539600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618986200217539600'); +DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 646) AND (`Index` IN (3)); + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1618986200217539600.sql b/data/sql/updates/pending_db_world/rev_1618986200217539600.sql deleted file mode 100644 index 243348e365..0000000000 --- a/data/sql/updates/pending_db_world/rev_1618986200217539600.sql +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618986200217539600'); -DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 646) AND (`Index` IN (3)); - From 4d0121e9cc94ab255fc7b5d8b2ad8008b16ca55a Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Fri, 30 Apr 2021 10:44:44 +0200 Subject: [PATCH 018/108] fix(DB): Alterac Mountains Chest Pooling (#5522) * Fix: Alterac Mountains Chest Pooling * Missed the blank line * Add better descriptions * Add ZoneId --- .../rev_1619629615739305133.sql | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619629615739305133.sql diff --git a/data/sql/updates/pending_db_world/rev_1619629615739305133.sql b/data/sql/updates/pending_db_world/rev_1619629615739305133.sql new file mode 100644 index 0000000000..9d70549a77 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619629615739305133.sql @@ -0,0 +1,27 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619629615739305133'); + +SET +@POOL = 11657, +@POOLSIZE = 5, +@POOLDESC = 'Treasures - Alterac Mountains', +@RESPAWN = 900, +@GUID = '33304,33206,33207,33200,33193,33208'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,@POOLDESC); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(33304,@POOL,0,'Solid Chest, Alterac Mountains, node 1'), +(33206,@POOL,0,'Solid Chest, Alterac Mountains, node 2'), +(33207,@POOL,0,'Solid Chest, Alterac Mountains, node 3'), +(33200,@POOL,0,'Solid Chest, Alterac Mountains, node 4'), +(33193,@POOL,0,'Solid Chest, Alterac Mountains, node 5'), +(33208,@POOL,0,'Solid Chest, Alterac Mountains, node 6'); + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); +UPDATE `gameobject` SET `zoneId`= '36' WHERE FIND_IN_SET (`guid`,@GUID); + From 2202013166ad0dd5ab546b11f9d03ed26e2fb4ce Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 30 Apr 2021 08:46:31 +0000 Subject: [PATCH 019/108] chore(DB): import pending SQL update file Referenced commit(s): 4d0121e9cc94ab255fc7b5d8b2ad8008b16ca55a --- .../2021_04_30_01.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619629615739305133.sql => db_world/2021_04_30_01.sql} (60%) diff --git a/data/sql/updates/pending_db_world/rev_1619629615739305133.sql b/data/sql/updates/db_world/2021_04_30_01.sql similarity index 60% rename from data/sql/updates/pending_db_world/rev_1619629615739305133.sql rename to data/sql/updates/db_world/2021_04_30_01.sql index 9d70549a77..b5ccec55ab 100644 --- a/data/sql/updates/pending_db_world/rev_1619629615739305133.sql +++ b/data/sql/updates/db_world/2021_04_30_01.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_30_00 -> 2021_04_30_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_30_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_30_00 2021_04_30_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619629615739305133'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619629615739305133'); SET @@ -25,3 +41,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); UPDATE `gameobject` SET `zoneId`= '36' WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From ff8287ec357671c98f7d85ead5a6da1b8146ccfb Mon Sep 17 00:00:00 2001 From: Hacki95 <62942638+Hacki95@users.noreply.github.com> Date: Fri, 30 Apr 2021 12:02:23 +0200 Subject: [PATCH 020/108] fix(DB): Chest Pooling in Dustwallow Marsh (#5527) * Fix: Chest Pooling in Dustwallow Marsh * Add better description * Add ZoneId --- .../rev_1619635493647808718.sql | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619635493647808718.sql diff --git a/data/sql/updates/pending_db_world/rev_1619635493647808718.sql b/data/sql/updates/pending_db_world/rev_1619635493647808718.sql new file mode 100644 index 0000000000..5201414b65 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619635493647808718.sql @@ -0,0 +1,41 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619635493647808718'); + +SET +@POOL = 11658, +@POOLSIZE = 6, +@POOLDESC = 'Treasures - Dustwallow Marsh', +@RESPAWN = 900, +@GUID = '87386,11755,14618,85709,85714,13632,85864,85706,9096,14619,14931,40758,40772,40796,85718,85721,85722,85734,85735'; + +-- Create pool(s) +DELETE FROM `pool_template` WHERE `entry`=@POOL; +INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES (@POOL,@POOLSIZE,@POOLDESC); + +-- Add gameobjects to pools +DELETE FROM `pool_gameobject` WHERE FIND_IN_SET (`guid`,@GUID); +INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUES +(87386,@POOL,0,'Solid Chest, Dustwallow Marsh, node 1'), +(11755,@POOL,0,'Solid Chest, Dustwallow Marsh, node 2'), +(14618,@POOL,0,'Solid Chest, Dustwallow Marsh, node 3'), +(85709,@POOL,0,'Solid Chest, Dustwallow Marsh, node 4'), +(85714,@POOL,0,'Solid Chest, Dustwallow Marsh, node 5'), +(13632,@POOL,0,'Solid Chest, Dustwallow Marsh, node 6'), +(85864,@POOL,0,'Solid Chest, Dustwallow Marsh, node 7'), +(85706,@POOL,0,'Solid Chest, Dustwallow Marsh, node 8'), +(9096,@POOL,0,'Solid Chest, Dustwallow Marsh, node 9'), +(14619,@POOL,0,'Solid Chest, Dustwallow Marsh, node 10'), +(14931,@POOL,0,'Solid Chest, Dustwallow Marsh, node 11'), +(40758,@POOL,0,'Solid Chest, Dustwallow Marsh, node 12'), +(40772,@POOL,0,'Solid Chest, Dustwallow Marsh, node 13'), +(40796,@POOL,0,'Solid Chest, Dustwallow Marsh, node 14'), +(85718,@POOL,0,'Solid Chest, Dustwallow Marsh, node 15'), +(85721,@POOL,0,'Solid Chest, Dustwallow Marsh, node 16'), +(85722,@POOL,0,'Solid Chest, Dustwallow Marsh, node 17'), +(85734,@POOL,0,'Solid Chest, Dustwallow Marsh, node 18'), +(85735,@POOL,0,'Solid Chest, Dustwallow Marsh, node 19'); + + +-- Respawn rates of gameobjects +UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); +UPDATE `gameobject` SET `zoneId`= '15' WHERE FIND_IN_SET (`guid`,@GUID); + From 633105cf486ce3c351cc79f0e2b034b9664aa911 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 30 Apr 2021 10:03:55 +0000 Subject: [PATCH 021/108] chore(DB): import pending SQL update file Referenced commit(s): ff8287ec357671c98f7d85ead5a6da1b8146ccfb --- .../2021_04_30_02.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619635493647808718.sql => db_world/2021_04_30_02.sql} (72%) diff --git a/data/sql/updates/pending_db_world/rev_1619635493647808718.sql b/data/sql/updates/db_world/2021_04_30_02.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1619635493647808718.sql rename to data/sql/updates/db_world/2021_04_30_02.sql index 5201414b65..237dd95331 100644 --- a/data/sql/updates/pending_db_world/rev_1619635493647808718.sql +++ b/data/sql/updates/db_world/2021_04_30_02.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_30_01 -> 2021_04_30_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_30_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_30_01 2021_04_30_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619635493647808718'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619635493647808718'); SET @@ -39,3 +55,12 @@ INSERT INTO `pool_gameobject` (`guid`,`pool_entry`,`chance`,`description`) VALUE UPDATE `gameobject` SET `spawntimesecs`=@RESPAWN WHERE FIND_IN_SET (`guid`,@GUID); UPDATE `gameobject` SET `zoneId`= '15' WHERE FIND_IN_SET (`guid`,@GUID); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From e29acf44d03793f4f12193dd0f7622ea5ddf6938 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Fri, 30 Apr 2021 14:01:36 +0200 Subject: [PATCH 022/108] feat(Core/Creature): Create & use CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH (#5360) Co-Authored-By: offl <11556157+offl@users.noreply.github.com> Co-authored-by: offl <11556157+offl@users.noreply.github.com> --- .../rev_1618838895076900900.sql | 401 ++++++++++++++++++ .../game/Entities/Creature/Creature.cpp | 4 +- src/server/game/Entities/Creature/Creature.h | 5 +- 3 files changed, 406 insertions(+), 4 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1618838895076900900.sql diff --git a/data/sql/updates/pending_db_world/rev_1618838895076900900.sql b/data/sql/updates/pending_db_world/rev_1618838895076900900.sql new file mode 100644 index 0000000000..e1ee18a2c6 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1618838895076900900.sql @@ -0,0 +1,401 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618838895076900900'); + +UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 0x00010000 WHERE `entry` IN +(68, -- Stormwind City Guard +1756, -- Stormwind Royal Guard +2614, -- Air Force Alarm Bot (Alliance) +2615, -- Air Force Alarm Bot (Horde) +3083, -- Honor Guard +3084, -- Bluffwatcher +3296, -- Orgrimmar Grunt +3502, -- Ratchet Bruiser +4262, -- Darnassus Sentinel +4624, -- Booty Bay Bruiser +4979, -- Theramore Guard +5326, -- Coast Crawl Clacker +5595, -- Ironforge Guard +5624, -- Undercity Guardian +6086, -- Auberdine Sentinel +7975, -- Mulgore Protector +7980, -- Deathguard Elite +9460, -- Gadgetzan Bruiser +10038, -- Night Watch Guard +11099, -- Argent Guard +11102, -- Argent Rider +11190, -- Everlook Bruiser +11194, -- Argent Defender +11822, -- Moonglade Warden +12786, -- Guard Quine +12787, -- Guard Hammon +12797, -- Grunt Korf +12798, -- Grunt Bek'rah +13839, -- Royal Dreadguard +14304, -- Kor'kron Elite +14363, -- Thief Catcher Shadowdelve +14365, -- Thief Catcher Farmountain +14367, -- Thief Catcher Thunderbrew +14375, -- Scout Stronghand +14376, -- Scout Manslayer +14377, -- Scout Tharr +14378, -- Huntress Skymane +14379, -- Huntress Ravenoak +14380, -- Huntress Leafrunner +14402, -- Seeker Cromwell +14403, -- Seeker Nahr +14404, -- Seeker Thompson +14423, -- Officer Jaxon +14438, -- Officer Pomeroy +14439, -- Officer Brady +14440, -- Hunter Sagewind +14441, -- Hunter Ragetotem +14442, -- Hunter Thunderhorn +14876, -- Zandalar Headshrinker +14911, -- Zandalar Enforcer +15184, -- Cenarion Hold Infantry +15187, -- Cenarion Emissary Jademoon +15188, -- Cenarion Emissary Blackhoof +15241, -- Gryphon Rider Guard +15242, -- Bat Rider Guard +15371, -- Sunstrider Guardian +15495, -- Nighthaven Defender +15724, -- Drunken Bruiser +15961, -- Lunar Festival Sentinel +16096, -- Steamwheedle Bruiser +16124, -- Unrelenting Trainee +16125, -- Unrelenting Death Knight +16126, -- Unrelenting Rider +16127, -- Spectral Trainee +16139, -- Cenarion Hold Reservist +16148, -- Spectral Death Knight +16150, -- Spectral Rider +16221, -- Silvermoon Guardian +16222, -- Silvermoon City Guardian +16228, -- Argent Dawn Infantry +16229, -- Injured Argent Dawn Infantry +16378, -- Argent Sentry +16432, -- Undercity Elite Guardian +16541, -- Ghostlands Guardian +16580, -- Thrallmar Grunt +16733, -- Exodar Peacekeeper +16842, -- Honor Hold Defender +16921, -- Ammen Vale Guardian +17282, -- Falcon Watch Ranger +17307, -- Vazruden the Herald +17537, -- Vazruden +17549, -- Blood Watch Peacekeeper +17765, -- Alliance Silithyst Sentinel +17766, -- Horde Silithyst Sentinel +17855, -- Expedition Warden +18038, -- Azuremyst Peacekeeper +18099, -- Gordawg +18100, -- Incineratus +18101, -- Aborius +18102, -- Kalandrios +18126, -- Expedition Scout +18139, -- Sporeggar Preserver +18194, -- Expedition Preserver +18488, -- Telaari Watcher +18489, -- Garadar Defender +18568, -- Scryer Arcane Guardian +18758, -- Telhamat Protector +18909, -- Zabra'jin Guard +18910, -- Swamprat Guard +18922, -- Telredor Guard +18943, -- Orebor Harborage Defender +18973, -- Stonebreaker Grunt +18989, -- Stonebreaker Guard +18999, -- Allerian Defender +19071, -- Telaari Elekk Rider +19353, -- Wildhammer Guard +19362, -- Kor'kron Defender +19449, -- Thunderlord Grunt +19500, -- Sylvanaar Sentinel +19504, -- Scryer Guardian +19529, -- Stormspire Nexus-Guard +19541, -- Netherstorm Agent +19687, -- Shattrath City Peacekeeper +19688, -- Scryer Vault Guardian +20447, -- Protectorate Vanguard +20484, -- Area 52 Big Bruiser +20485, -- Area 52 Bruiser +20556, -- Stormwind Marine +20672, -- Royal Guard +20674, -- Shield of Velen +21045, -- Hired Bodyguard +21081, -- Mok'Nathal Hunter +21115, -- Station Guard +21361, -- Designer Island Orc Trainee [PH] +21448, -- Gadgetzan Sniper +21857, -- Inner Demon +21858, -- Sha'tar Vindicator +21974, -- Air Force Alarm Bot (Area 52) +21976, -- Area 52 Death Machine +21977, -- Gadgetzan Air Strike Caller +21986, -- Altar of Sha'tar Vindicator +21993, -- Air Force Guard Post (Horde - Bat Rider) +21996, -- Air Force Guard Post (Alliance - Gryphon) +21997, -- Air Force Guard Post (Goblin - Area 52 - Zeppelin) +21999, -- Air Force Trip Wire - Rooftop (Alliance) +22001, -- Air Force Trip Wire - Rooftop (Horde) +22002, -- Air Force Trip Wire - Ground (Horde) +22003, -- Air Force Trip Wire - Ground (Alliance) +22063, -- Air Force Trip Wire - Rooftop (Goblin - Area 52) +22064, -- Stormspire Drake +22065, -- Air Force Guard Post (Ethereal - Stormspire) +22066, -- Air Force Guard Post (Scryer - Dragonhawk) +22067, -- Scryer Dragonhawk +22068, -- Air Force Trip Wire - Rooftop (Ethereal - Stormspire) +22069, -- Air Force Alarm Bot (Stormspire) +22070, -- Air Force Trip Wire - Rooftop (Scryer) +22071, -- Air Force Alarm Bot (Scryer) +22077, -- Aldor Gryphon Guard +22078, -- Air Force Alarm Bot (Aldor) +22079, -- Air Force Guard Post (Aldor - Gryphon) +22080, -- Air Force Trip Wire - Rooftop (Aldor) +22086, -- Air Force Alarm Bot (Sporeggar) +22087, -- Air Force Guard Post (Sporeggar - Sporebat) +22088, -- Air Force Trip Wire - Rooftop (Sporeggar) +22089, -- Toshley Flying Machine +22090, -- Air Force Guard Post (Toshley's Station - Flying Machine) +22122, -- Cenarion Storm Crow +22124, -- Air Force Alarm Bot (Cenarion) +22125, -- Air Force Guard Post (Cenarion - Stormcrow) +22126, -- Air Force Trip Wire - Rooftop (Cenarion Expedition) +22151, -- Ruuan Weald Sister +22206, -- Expedition Druid +22369, -- Dread Relic Thrall +22407, -- Caravan Defender +22410, -- Expedition Outrider +22453, -- Injured Sha'tar Vindicator +22456, -- Oakun +22462, -- Vindicator Haylen +22494, -- Cosmowrench Bruiser +22923, -- Simon Game Bunny +23095, -- Supremus Punch Invis Stalker +23115, -- Ogri'la Peacekeeper +23146, -- Dragonmaw Enforcer +23257, -- Skyguard Windcharger +23377, -- Skyguard Ace +23636, -- Mudsprocket Bruiser +23681, -- Captain Averen +23719, -- Investigator Asric +23721, -- Concert Bruiser +23739, -- Valgarde Defender +23779, -- Vengeance Landing Deathguard +23835, -- Sergeant Amelyn +23842, -- Westguard Defender +23900, -- Theramore Marksman +23949, -- Lieutenant Nath +23950, -- Lieutenant Khand +23951, -- Lieutenant Aden +24031, -- Camp Winterhoof Brave +24050, -- Wildervar Sentry +24136, -- Feather Vortex +24159, -- Amani Eagle +24225, -- Amani'shi Warrior +24841, -- Marine Halters +24842, -- Marine Anderson +24994, -- Shattered Sun Sentry +24996, -- Mariner Bladewhisper +24997, -- Mariner Swiftstar +24998, -- Mariner Farsight +25007, -- Mariner Evenmist +25013, -- Sentinel Brightgrass +25014, -- Sentinel Winterdew +25021, -- Mariner Moonblade +25022, -- Mariner Stillwake +25023, -- Mariner Everwatch +25024, -- Mariner Softsong +25053, -- Mariner Farseeker +25054, -- Mariner Keenstar +25055, -- Mariner Frostnight +25056, -- Mariner Stillglider +25079, -- Deathguard Fowles +25080, -- Grunt Umgor +25081, -- Grunt Ounda +25083, -- Deathguard Lawson +25106, -- Watcher Du'una +25107, -- Watcher Umjin +25145, -- Budd's Bodyguard +25175, -- Shattered Sun Dragonhawk +25236, -- Unrestrained Dragonhawk +25242, -- Warsong Battleguard +25253, -- Valiance Keep Footman +25359, -- Force-Commander Steeljaw +25373, -- Shadowsword Soulbinder +25483, -- Shadowsword Manafiend +25484, -- Shadowsword Assassin +25485, -- Shadowsword Deathbringer +25486, -- Shadowsword Vanquisher +25506, -- Shadowsword Lifeshaper +25808, -- D.E.H.T.A. Enforcer +25819, -- D.E.H.T.A. Enforcer +25837, -- Shadowsword Commander +25992, -- Big Bruiser +26157, -- Taunka'le Brave +26217, -- Westfall Brigade Footman +26231, -- Saragosa +26253, -- Shattered Sun Peacekeeper +26310, -- Malygos +26379, -- Overlord Agmar +26448, -- Stars' Rest Sentinel +27035, -- Venomspite Deathguard +27073, -- Bor'gorok Battleguard +27126, -- Camp Oneqwah Brave +27167, -- Kamagua Spearman +27170, -- Amber Ledge Warmage +27173, -- Warmage Calandra +27175, -- Transitus Shield Warmage +27178, -- Moa'ki Warrior +27189, -- Unu'pe Spearman +27904, -- Warmage Watkins +27906, -- Warmage Hollister +27952, -- Wyrmrest Protector Visual (Red) +27953, -- Wyrmrest Protector +27954, -- Wyrmrest Protector Visual (Green) +27955, -- Wyrmrest Protector Visual (Bronze) +28250, -- Wyrmrest Protector Visual (Black) +28251, -- Wyrmrest Protector Visual (Blue) +28252, -- Wyrmrest Protector Visual (Nether) +28801, -- Argent Stand Defender +28818, -- Light's Breach Defender +28863, -- Zim'Torga Guardian +28865, -- Ebon Watch Guardian +29202, -- Knight of the Ebon Blade +29292, -- Art Peshkov +29293, -- Daniel Kramer +29294, -- Candace Thomas +29295, -- Meghan Dawson +29617, -- Valiance Keep Defender +29712, -- Stormwind Harbor Guard +29729, -- Frostborn Axemaster +29910, -- K3 Bruiser +29942, -- Warsong Hold Grunt +29960, -- Earthen Stoneguard +29973, -- Tunka'lo Brave +30058, -- Warden of the Chamber +30059, -- Wyrmrest Warden Visual (Bronze) +30072, -- Wyrmrest Warden Visual (Red) +30073, -- Wyrmrest Warden Visual (Green) +30076, -- Wyrmrest Warden Visual (Blue) +30077, -- Wyrmrest Warden Visual (Black) +30189, -- Crusader of Virtue +30208, -- Stormforged Ambusher +30222, -- Stormforged Infiltrator +30312, -- Shadow Vault Boneguard +30344, -- High Captain Justin Bartlett +30352, -- Skybreaker Marine +30431, -- Veteran Crusader Aliocha Segard +30433, -- Aedan Moran +30611, -- Greela "The Grunt" Crankchain +30621, -- Twisted Visage +30622, -- Twisted Visage +30623, -- Twisted Visage +30624, -- Twisted Visage +30625, -- Twisted Visage +30672, -- Crusader of Virtue +30737, -- Nesingwary Game Warden +30755, -- Kor'kron Reaver +30824, -- Sky-Reaver Korm Blackscar +30833, -- Vindicator Maraad +31033, -- Crusader of Virtue +31563, -- Warsong Battleguard +31708, -- Deathguard Barth +31715, -- Deathguard Hicks +31726, -- Grunt Gritch +31727, -- Grunt Grikee +32369, -- Warmage Sarina +32371, -- Warmage Halister +32372, -- Warmage Ilsudria +32373, -- Gatekeeper Melindra +32374, -- Librarian Belleford +32375, -- Warmage Yurias +32476, -- Copperpot Goon +32523, -- Johnny Yes +32524, -- Willy Maybe +32573, -- Valgarde Captive +32722, -- Warmage Lukems +32724, -- Warmage Mumplina +32875, -- Iron Honor Guard +32957, -- Dark Rune Acolyte +33069, -- Darkmoon Bruiser +33110, -- Dark Rune Acolyte +33113, -- Flame Leviathan +33125, -- Iron Honor Guard +33429, -- Boneguard Lieutenant +33543, -- Sunreaver Guardian +33559, -- Darnassus Valiant +33643, -- Silver Covenant Guardian +33698, -- Argent Peacekeeper +33738, -- Darnassus Champion +33780, -- Argent Watchman +34127, -- Boneguard Commander +34179, -- Argent Peacekeeper +34505, -- Copperpot Goon +34800, -- Snobold Vassal +34915, -- Stormforged Marauder +35314, -- Orgrimmar Champion +35322, -- Stormwind Royal Guard +35323, -- Sen'jin Champion +35325, -- Thunder Bluff Champion +35326, -- Silvermoon Champion +35327, -- Undercity Champion +35328, -- Stormwind Champion +35329, -- Ironforge Champion +35330, -- Exodar Champion +35331, -- Gnomeregan Champion +35332, -- Darnassus Champion +35460, -- Kor'kron Elite +35587, -- Argent Peacekeeper +36164, -- Kor'kron Reaver +36166, -- 7th Legion Marine +36213, -- Kor'kron Overseer +36217, -- Overseer Kraggosh +36224, -- Dark Ranger Clea +36225, -- Dark Ranger Anya +36226, -- Dark Ranger Cyndia +36273, -- Bragor Bloodfist +36431, -- Dark Iron Guard +36481, -- Sentinel Stillbough +36517, -- Aleric Hawkins +36619, -- Bone Spike +36656, -- Silver Covenant Sentinel +36657, -- Sunreaver War Mage +36913, -- Eye of the Lich King +37063, -- Stormwind City Guard +37068, -- Spiritual Reflection +37107, -- Spiritual Reflection +37182, -- High Captain Justin Bartlett +37509, -- Shattered Sun Sentry +37693, -- Commander Aliocha Segard [Icecrown Raid] +37699, -- RN Test Honor Guard +37700, -- RN Test Royal Guard +37775, -- Ironforge Guard +37781, -- Sunwell Honor Guard +37790, -- Darnassus Sentinel +37798, -- Exodar Peacekeeper +37800, -- Silvermoon City Guardian +37825, -- Kor'kron Overseer +37831, -- [PH] Captain +37833, -- Sky-Reaver Korm Blackscar +37860, -- Bluffwatcher +37869, -- Orgrimmar Grunt +38164, -- [PH] Captain (Orgrimmar) +38248, -- Impaling Spear +38332, -- Ball of Flame +38451, -- Ball of Inferno Flame +38711, -- Bone Spike +38712, -- Bone Spike +38825, -- Aerin +38830, -- [PH] Grimtotem Protector +38831, -- Slain Bluffwatcher +38839, -- Dark Iron Guard +38843, -- [PH] Grimtotem Collector +38846, -- [PH] Slain Druid +38870, -- [DND] Dark Iron Guard Move To Bunny +38877, -- Dark Iron Citizen +39158, -- Phalanx 2.0 +39934, -- Zeppelin Sentry +40138, -- Stormwind City Guard (Corpse) +-- Difficulties +18434,18435,29985,29986,29987,29988,29990,30264,30798,31476,31477,31478,31479,31480,33160,33161,33163,33164,34003,35441,37611,38233,38970,38973,35442,38459,38971,38974,35443,38460,38972,38975); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index e00bfe2348..d40716982e 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2236,8 +2236,8 @@ bool Creature::_IsTargetAcceptable(const Unit* target) const if (target->HasUnitState(UNIT_STATE_DIED)) { - // guards can detect fake death - if (IsGuard() && target->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH)) + // some creatures can detect fake death + if (CanIgnoreFeignDeath() && target->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH)) return true; else return false; diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index de79c537db..3072e7ca59 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -44,7 +44,7 @@ enum CreatureFlagsExtra : uint32 CREATURE_FLAG_EXTRA_IGNORE_COMBAT = 0x00002000, CREATURE_FLAG_EXTRA_WORLDEVENT = 0x00004000, // custom flag for world event creatures (left room for merging) CREATURE_FLAG_EXTRA_GUARD = 0x00008000, // Creature is guard - CREATURE_FLAG_EXTRA_UNUSED_17 = 0x00010000, + CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH = 0x00010000, // creature ignores feign death CREATURE_FLAG_EXTRA_NO_CRIT = 0x00020000, // creature can't do critical strikes CREATURE_FLAG_EXTRA_NO_SKILL_GAINS = 0x00040000, // creature won't increase weapon skills CREATURE_FLAG_EXTRA_OBEYS_TAUNT_DIMINISHING_RETURNS = 0x00080000, // Taunt is subject to diminishing returns on this creature @@ -62,7 +62,7 @@ enum CreatureFlagsExtra : uint32 CREATURE_FLAG_EXTRA_UNUSED_32 = 0x80000000, // Masks - CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_10 | CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_17 | + CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_10 | CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_22 | CREATURE_FLAG_EXTRA_UNUSED_25 | CREATURE_FLAG_EXTRA_UNUSED_26 | CREATURE_FLAG_EXTRA_UNUSED_27 | CREATURE_FLAG_EXTRA_UNUSED_28 | CREATURE_FLAG_EXTRA_UNUSED_32), CREATURE_FLAG_EXTRA_DB_ALLOWED = (0xFFFFFFFF & ~(CREATURE_FLAG_EXTRA_UNUSED | CREATURE_FLAG_EXTRA_DUNGEON_BOSS)) @@ -635,6 +635,7 @@ public: bool HasSearchedAssistance() { return m_AlreadySearchedAssistance; } bool CanAssistTo(const Unit* u, const Unit* enemy, bool checkfaction = true) const; bool _IsTargetAcceptable(const Unit* target) const; + bool CanIgnoreFeignDeath() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_IGNORE_FEIGN_DEATH) != 0; } bool _CanDetectFeignDeathOf(const Unit* target) const; // pussywizard // pussywizard: updated at faction change, disable move in line of sight if actual faction is not hostile to anyone From e13567cd80fc9f80ffadff2eb508efe7f92dafaa Mon Sep 17 00:00:00 2001 From: Kargatum Date: Fri, 30 Apr 2021 20:32:33 +0700 Subject: [PATCH 023/108] fix(Core/Guild): disable invite if players diff factions (#5519) --- src/server/game/Guilds/Guild.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 41b03c6a1c..5022cc61f6 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -1517,7 +1517,7 @@ void Guild::HandleInviteMember(WorldSession* session, std::string const& name) if (pInvitee->GetSocial()->HasIgnore(player->GetGUID())) return; - if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && pInvitee->GetTeamId() != player->GetTeamId()) + if (!sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GUILD) && pInvitee->GetTeamId(true) != player->GetTeamId(true)) { SendCommandResult(session, GUILD_COMMAND_INVITE, ERR_GUILD_NOT_ALLIED, name); return; From 632883538c74abaf19e70daa233effe8f4a33f32 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 30 Apr 2021 13:34:11 +0000 Subject: [PATCH 024/108] chore(DB): import pending SQL update file Referenced commit(s): e13567cd80fc9f80ffadff2eb508efe7f92dafaa --- .../2021_04_30_03.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1618838895076900900.sql => db_world/2021_04_30_03.sql} (94%) diff --git a/data/sql/updates/pending_db_world/rev_1618838895076900900.sql b/data/sql/updates/db_world/2021_04_30_03.sql similarity index 94% rename from data/sql/updates/pending_db_world/rev_1618838895076900900.sql rename to data/sql/updates/db_world/2021_04_30_03.sql index e1ee18a2c6..e435a914c1 100644 --- a/data/sql/updates/pending_db_world/rev_1618838895076900900.sql +++ b/data/sql/updates/db_world/2021_04_30_03.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_30_02 -> 2021_04_30_03 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_30_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_30_02 2021_04_30_03 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1618838895076900900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618838895076900900'); UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 0x00010000 WHERE `entry` IN @@ -399,3 +415,12 @@ UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 0x00010000 WHERE 40138, -- Stormwind City Guard (Corpse) -- Difficulties 18434,18435,29985,29986,29987,29988,29990,30264,30798,31476,31477,31478,31479,31480,33160,33161,33163,33164,34003,35441,37611,38233,38970,38973,35442,38459,38971,38974,35443,38460,38972,38975); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From adad43a15c7eea584190b1186522d1fc271d008d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 30 Apr 2021 17:03:02 +0200 Subject: [PATCH 025/108] fix(Core/Misc): Memleaks fixes. Part I. (#5546) --- src/server/game/Battlefield/Battlefield.cpp | 15 +++++----- src/server/game/Entities/Unit/Unit.cpp | 28 +++++++++---------- src/server/game/Entities/Unit/Unit.h | 2 +- src/server/game/Globals/ObjectMgr.cpp | 7 +++-- src/server/game/Maps/Map.cpp | 16 ++++++----- src/server/game/Movement/MotionMaster.cpp | 6 ++-- .../RandomMovementGenerator.cpp | 9 ++++++ .../RandomMovementGenerator.h | 1 + .../TargetedMovementGenerator.h | 4 +-- 9 files changed, 51 insertions(+), 37 deletions(-) diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index fe741f0026..f23a908207 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -787,7 +787,14 @@ Creature* Battlefield::SpawnCreature(uint32 entry, float x, float y, float z, fl if (!map) { LOG_ERROR("server", "Battlefield::SpawnCreature: Can't create creature entry: %u map not found", entry); - return 0; + return nullptr; + } + + CreatureTemplate const* cinfo = sObjectMgr->GetCreatureTemplate(entry); + if (!cinfo) + { + LOG_ERROR("sql.sql", "Battlefield::SpawnCreature: entry %u does not exist.", entry); + return nullptr; } Creature* creature = new Creature(true); @@ -801,12 +808,6 @@ Creature* Battlefield::SpawnCreature(uint32 entry, float x, float y, float z, fl creature->setFaction(BattlefieldFactions[teamId]); creature->SetHomePosition(x, y, z, o); - CreatureTemplate const* cinfo = sObjectMgr->GetCreatureTemplate(entry); - if (!cinfo) - { - LOG_ERROR("sql.sql", "Battlefield::SpawnCreature: entry %u does not exist.", entry); - return nullptr; - } // force using DB speeds -- do we really need this? creature->SetSpeed(MOVE_WALK, cinfo->speed_walk); creature->SetSpeed(MOVE_RUN, cinfo->speed_run); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 0dd4f31e24..fa401436c5 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2234,24 +2234,24 @@ void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extr } } -Position* Unit::GetMeleeAttackPoint(Unit* attacker) +bool Unit::GetMeleeAttackPoint(Unit* attacker, Position& pos) { if (!attacker) { - return nullptr; + return false; } AttackerSet attackers = getAttackers(); if (attackers.size() <= 1) // if the attackers are not more than one { - return nullptr; + return false; } float meleeReach = GetExactDist2d(attacker); if (meleeReach <= 0) { - return nullptr; + return false; } float minAngle = 0; @@ -2263,17 +2263,13 @@ Position* Unit::GetMeleeAttackPoint(Unit* attacker) for (const auto& otherAttacker: attackers) { // if the otherAttacker is not valid, skip - if (!otherAttacker || - otherAttacker->GetGUID() == attacker->GetGUID() || - !otherAttacker->IsWithinMeleeRange(this) || - otherAttacker->isMoving() - ) + if (!otherAttacker || otherAttacker->GetGUID() == attacker->GetGUID() || + !otherAttacker->IsWithinMeleeRange(this) || otherAttacker->isMoving()) { continue; } float curretAngle = atan(attacker->GetExactDist2d(otherAttacker) / meleeReach); - if (minAngle == 0 || curretAngle < minAngle) { minAngle = curretAngle; @@ -2284,7 +2280,9 @@ Position* Unit::GetMeleeAttackPoint(Unit* attacker) } if (!validAttackers || !refUnit) - return nullptr; + { + return false; + } float contactDist = attackerSize + refUnit->GetCollisionRadius(); float requiredAngle = atan(contactDist / meleeReach); @@ -2296,7 +2294,7 @@ Position* Unit::GetMeleeAttackPoint(Unit* attacker) if (attackersAngle > angleTollerance) { - return nullptr; + return false; } double angle = atan(contactDist / meleeReach); @@ -2316,11 +2314,13 @@ Position* Unit::GetMeleeAttackPoint(Unit* attacker) if (!GetMap()->CanReachPositionAndGetValidCoords(this, x, y, z, true, true)) { - return nullptr; + return false; } } - return new Position(x,y,z); + pos.Relocate(x, y, z); + + return true; } void Unit::HandleProcExtraAttackFor(Unit* victim) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index f7d25cdee1..602e141410 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1467,7 +1467,7 @@ public: bool AttackStop(); void RemoveAllAttackers(); [[nodiscard]] AttackerSet const& getAttackers() const { return m_attackers; } - [[nodiscard]] Position* GetMeleeAttackPoint(Unit* attacker); + [[nodiscard]] bool GetMeleeAttackPoint(Unit* attacker, Position& pos); [[nodiscard]] bool isAttackingPlayer() const; [[nodiscard]] Unit* GetVictim() const { return m_attacking; } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 759480b648..477c5e091e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -423,14 +423,15 @@ void ObjectMgr::LoadGossipMenuItemsLocales() uint16 MenuID = fields[0].GetUInt16(); uint16 OptionID = fields[1].GetUInt16(); std::string LocaleName = fields[2].GetString(); - std::string OptionText = fields[3].GetString(); - std::string BoxText = fields[4].GetString(); - GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[MAKE_PAIR32(MenuID, OptionID)]; LocaleConstant locale = GetLocaleByName(LocaleName); if (locale == LOCALE_enUS) continue; + std::string OptionText = fields[3].GetString(); + std::string BoxText = fields[4].GetString(); + + GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[MAKE_PAIR32(MenuID, OptionID)]; AddLocaleString(OptionText, locale, data.OptionText); AddLocaleString(BoxText, locale, data.BoxText); } while (result->NextRow()); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 9797fbff68..8607572062 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3721,23 +3721,23 @@ bool Map::CheckCollisionAndGetValidCoords(const WorldObject* source, float start bool isWaterNext = IsInWater(destX, destY, destZ); - PathGenerator* path = new PathGenerator(source); + PathGenerator path(source); // Use a detour raycast to get our first collision point - path->SetUseRaycast(true); - bool result = path->CalculatePath(startX, startY, startZ, destX, destY, destZ, false); + path.SetUseRaycast(true); + bool result = path.CalculatePath(startX, startY, startZ, destX, destY, destZ, false); const Unit* unit = source->ToUnit(); - bool notOnGround = path->GetPathType() & PATHFIND_NOT_USING_PATH + bool notOnGround = path.GetPathType() & PATHFIND_NOT_USING_PATH || isWaterNext || (unit && unit->IsFlying()); // Check for valid path types before we proceed - if (!result || (!notOnGround && path->GetPathType() & ~(PATHFIND_NORMAL | PATHFIND_SHORTCUT | PATHFIND_INCOMPLETE | PATHFIND_FARFROMPOLY_END))) + if (!result || (!notOnGround && path.GetPathType() & ~(PATHFIND_NORMAL | PATHFIND_SHORTCUT | PATHFIND_INCOMPLETE | PATHFIND_FARFROMPOLY_END))) { return false; } - G3D::Vector3 endPos = path->GetPath().back(); + G3D::Vector3 endPos = path.GetPath().back(); destX = endPos.x; destY = endPos.y; destZ = endPos.z; @@ -3790,7 +3790,9 @@ bool Map::CheckCollisionAndGetValidCoords(const WorldObject* source, float start if (gridHeight > INVALID_HEIGHT) { destZ = gridHeight + unit->GetHoverHeight(); - } else { + } + else + { return false; } } diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index b1e6b33a0f..146ef47fb2 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -364,14 +364,14 @@ void MotionMaster::MoveCircleTarget(Unit* target) return; } - Position* point = target->GetMeleeAttackPoint(_owner); - if (point == nullptr) + Position pos; + if (!target->GetMeleeAttackPoint(_owner, pos)) { return; } Movement::MoveSplineInit init(_owner); - init.MoveTo(point->m_positionX, point->m_positionY, point->m_positionZ, false); + init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), false); init.SetWalk(true); init.SetFacing(target); init.Launch(); diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp index 39ac661cd9..a106f0a428 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp @@ -13,6 +13,15 @@ #include "Spell.h" #include "Util.h" +template +RandomMovementGenerator::~RandomMovementGenerator() { } + +template<> +RandomMovementGenerator::~RandomMovementGenerator() +{ + delete _pathGenerator; +} + template<> void RandomMovementGenerator::_setRandomLocation(Creature* creature) { diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h index 8428ab2085..b768b48916 100644 --- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h @@ -34,6 +34,7 @@ public: for (uint8 i = 0; i < RANDOM_POINTS_NUMBER; ++i) _validPointsVector[RANDOM_POINTS_NUMBER].push_back(i); } + ~RandomMovementGenerator(); void _setRandomLocation(T*); void DoInitialize(T*); diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h index 97f3834370..13b64ea707 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -29,7 +29,7 @@ class ChaseMovementGenerator : public MovementGeneratorMedium range = {}, std::optional angle = {}) : TargetedMovementGeneratorBase(target), i_path(nullptr), i_recheckDistance(0), i_recalculateTravel(true), _range(range), _angle(angle) {} - ~ChaseMovementGenerator() {} + ~ChaseMovementGenerator() { delete i_path; } MovementGeneratorType GetMovementGeneratorType() { return CHASE_MOTION_TYPE; } @@ -65,7 +65,7 @@ class FollowMovementGenerator : public MovementGeneratorMedium Date: Fri, 30 Apr 2021 10:09:28 -0700 Subject: [PATCH 026/108] chore(CI): move docker build to separate workflow (#5548) --- .github/README.md | 1 + .github/workflows/core_build.yml | 38 --------------------- .github/workflows/docker_build.yml | 54 ++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/docker_build.yml diff --git a/.github/README.md b/.github/README.md index 939a2010a6..29ebb6ec6f 100644 --- a/.github/README.md +++ b/.github/README.md @@ -4,6 +4,7 @@ [![core-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Acore-build+branch%3Amaster+event%3Apush) [![windows-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/windows-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Awindows-build+branch%3Amaster+event%3Apush) [![macos-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/macos-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Amacos-build+branch%3Amaster+event%3Apush) +[![docker-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/docker-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Adocker-build+branch%3Amaster+event%3Apush) [![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=40032087)](https://www.bountysource.com/teams/azerothcore/bounties "Put money on issues or get paid for fixing them") [![StackOverflow](http://img.shields.io/badge/stackoverflow-azerothcore-blue.svg)](https://stackoverflow.com/questions/tagged/azerothcore?sort=newest "Ask / browse questions here") [![Discord](https://img.shields.io/discord/217589275766685707.svg)](https://discord.gg/gkt4y2x "Our community hub on Discord") diff --git a/.github/workflows/core_build.yml b/.github/workflows/core_build.yml index 9a67d4dff5..2a50454911 100644 --- a/.github/workflows/core_build.yml +++ b/.github/workflows/core_build.yml @@ -81,41 +81,3 @@ jobs: run: source ./apps/ci/ci-error-check.sh - name: Run unit tests run: source ./apps/ci/ci-run-unit-tests.sh - - docker-build-n-deploy: - strategy: - fail-fast: true - runs-on: ubuntu-20.04 - if: github.repository == 'azerothcore/azerothcore-wotlk' - env: - DOCKER_EXTENDS_BIND: abstract-no-bind - DOCKER_BUILD_WORLD_TARGET: worldserver - DOCKER_BUILD_AUTH_TARGET: authserver - steps: - - name: Extract branch name - shell: bash - run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" - id: extract_branch - - uses: actions/checkout@v2 - - name: Configure - run: | - docker --version - docker-compose --version - - name: Build - #env: - # DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} - run: | - docker-compose --profile all build - - name: Login to Docker Hub - if: ${{ steps.extract_branch.outputs.branch == 'master' }} - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Deploy - #env: - # DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} - if: ${{ steps.extract_branch.outputs.branch == 'master' }} - run: | - docker-compose --profile all push - diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml new file mode 100644 index 0000000000..602e219f88 --- /dev/null +++ b/.github/workflows/docker_build.yml @@ -0,0 +1,54 @@ +name: docker-build +on: + push: + branches: + - '**' # matches every branch + - '!coverity_scan' # excludes coverity_scan + pull_request: + +jobs: + docker-build-n-deploy: + strategy: + fail-fast: true + runs-on: ubuntu-20.04 + if: github.repository == 'azerothcore/azerothcore-wotlk' + env: + DOCKER_EXTENDS_BIND: abstract-no-bind + DOCKER_BUILD_WORLD_TARGET: worldserver + DOCKER_BUILD_AUTH_TARGET: authserver + COMPOSE_DOCKER_CLI_BUILD: 1 + DOCKER_BUILDKIT: 1 + BUILDKIT_INLINE_CACHE: 1 + + steps: + - name: Extract branch name + shell: bash + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + id: extract_branch + + - uses: actions/checkout@v2 + + - name: Configure + run: | + docker --version + docker-compose --version + + - name: Build + #env: + # DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} + run: | + docker-compose --profile all build + + - name: Login to Docker Hub + if: ${{ steps.extract_branch.outputs.branch == 'master' }} + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Deploy + #env: + # DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} + if: ${{ steps.extract_branch.outputs.branch == 'master' }} + run: | + docker-compose --profile all push From 6389d2eb190b0aaa9c4c399c5dd0f51e7dda9c06 Mon Sep 17 00:00:00 2001 From: Stifler82 Date: Fri, 30 Apr 2021 19:59:31 +0100 Subject: [PATCH 027/108] fix(DB/GameObj-Spawn/CreaturesSAI): EPL chest in Tyr's hand (#5187) --- .../rev_1617859274362409300.sql | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1617859274362409300.sql diff --git a/data/sql/updates/pending_db_world/rev_1617859274362409300.sql b/data/sql/updates/pending_db_world/rev_1617859274362409300.sql new file mode 100644 index 0000000000..3e356375c7 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1617859274362409300.sql @@ -0,0 +1,47 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1617859274362409300'); + +DELETE FROM `gameobject` WHERE (`id` = 153454); +INSERT INTO `gameobject` VALUES +(45734,153454,0,0,0,1,1,3003.64,-4886.26,108.384,0.506145,0,0,0.25038,0.968148,300,100,1,'',0), +(45910,153454,0,0,0,1,1,3191.12,-4639.98,119.947,-2.94961,0,0,0.995396,-0.095846,300,100,1,'',0), +(45915,153454,0,0,0,1,1,2544.61,-3704.67,179.64,0.244346,0,0,0.121869,0.992546,300,100,1,'',0), +(45931,153454,0,0,0,1,1,2601.59,-5512.31,158.713,-0.034907,0,0,0.017452,-0.999848,300,100,1,'',0), +(45933,153454,0,0,0,1,1,1753.27,-5410.36,113.525,-0.366519,0,0,0.182236,-0.983255,300,100,1,'',0), +(45938,153454,0,0,0,1,1,1829.56,-5210.25,113.105,-1.06465,0,0,0.507538,-0.861629,300,100,1,'',0), +(49088,153454,1,0,0,1,1,6417.92,-4281.62,666.034,-0.750491,0,0,0.366501,-0.930418,300,100,1,'',0), +(49089,153454,1,0,0,1,1,6520.67,-3264.04,574.942,2.93215,0,0,0.994522,0.104528,300,100,1,'',0), +(49090,153454,1,0,0,1,1,6796.87,-2666.08,544.784,2.96706,0,0,0.996195,0.087156,300,100,1,'',0), +(49091,153454,1,0,0,1,1,6796.38,-5150.05,732.103,-2.07694,0,0,0.861629,-0.507538,300,100,1,'',0), +(85796,153454,1,0,0,1,1,6491.73,-3132.61,570.651,-1.16937,0,0,0,1,300,255,1,'',0), +(85797,153454,0,0,0,1,1,1599.41,-5315.48,91.1041,2.23402,0,0,0,1,300,255,1,'',0), +(85798,153454,1,0,0,1,1,6863.55,-5118.35,695.735,-2.33874,0,0,0,1,300,255,1,'',0), +(85799,153454,1,0,0,1,1,6779,-5047.81,722.833,-0.90757,0,0,0,1,300,255,1,'',0), +(85800,153454,1,0,0,1,1,6830.53,-3584.34,718.537,0.95993,0,0,0,1,300,255,1,'',0), +(85801,153454,1,0,0,1,1,6843.18,-2482.17,561.01,-1.98967,0,0,0,1,300,255,1,'',0), +(85802,153454,1,0,0,1,1,6617.37,-4081.4,662.525,1.50098,0,0,0,1,300,255,1,'',0), +(85803,153454,1,0,0,1,1,6834.71,-5028.53,691.339,-1.67551,0,0,0,1,300,255,1,'',0), +(87393,153454,1,0,0,1,1,6313.62,-2395.13,556.702,-2.75761,0,0,0,1,300,255,1,'',0), +(100086,153454,0,0,0,1,1,1608.74,-5415.46,76.3989,0.663223,0,0,0,0,300,0,1,'',0); + +DELETE FROM `pool_gameobject` WHERE (`guid` IN (45734, 45910, 45915, 45931, 45933, 45938, 85797, 100086)); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` IN (9449, 9447, 9452)); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 9449); +INSERT INTO `smart_scripts` VALUES +(9449, 0, 0, 0, 0, 0, 100, 0, 0, 0, 3400, 4800, 0, 11, 15587, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Cleric - In Combat - Cast \'Mind Blast\''), +(9449, 0, 1, 0, 74, 0, 100, 0, 0, 40, 25000, 35000, 0, 11, 15587, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Cleric - On Friendly Between 0-40% Health - Cast \'Mind Blast\''), +(9449, 0, 2, 0, 2, 0, 100, 1, 0, 15, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Cleric - Between 0-15% Health - Flee For Assist (No Repeat)'), +(9449, 0, 3, 0, 1, 0, 100, 0, 100, 100, 3000, 3000, 0, 49, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Cleric - Out of Combat - Start Attacking'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 9447); +INSERT INTO `smart_scripts` VALUES +(9447, 0, 0, 0, 0, 0, 100, 0, 4000, 7000, 7000, 11000, 0, 11, 14518, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Warder - In Combat - Cast \'Crusader Strike\''), +(9447, 0, 1, 0, 2, 0, 100, 0, 0, 50, 15000, 22000, 0, 11, 15493, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Warder - Between 0-50% Health - Cast \'Holy Light\''), +(9447, 0, 2, 0, 1, 0, 100, 0, 100, 100, 3000, 3000, 0, 49, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Warder - Out of Combat - Start Attacking'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 9452); +INSERT INTO `smart_scripts` VALUES +(9452, 0, 0, 0, 0, 0, 100, 0, 0, 0, 3400, 4800, 0, 11, 25055, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Enchanter - In Combat - Cast \'Arcane Bolt\''), +(9452, 0, 1, 0, 0, 0, 100, 0, 7000, 10000, 18000, 22000, 0, 11, 15970, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Enchanter - In Combat - Cast \'Sleep\''), +(9452, 0, 2, 0, 1, 0, 100, 0, 100, 100, 3000, 3000, 0, 49, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Enchanter - Out of Combat - Start Attacking'); From 599e6834a1a852d3c5601c82a0aeffc1ff7c771c Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 30 Apr 2021 19:01:00 +0000 Subject: [PATCH 028/108] chore(DB): import pending SQL update file Referenced commit(s): 6389d2eb190b0aaa9c4c399c5dd0f51e7dda9c06 --- .../2021_04_30_04.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1617859274362409300.sql => db_world/2021_04_30_04.sql} (84%) diff --git a/data/sql/updates/pending_db_world/rev_1617859274362409300.sql b/data/sql/updates/db_world/2021_04_30_04.sql similarity index 84% rename from data/sql/updates/pending_db_world/rev_1617859274362409300.sql rename to data/sql/updates/db_world/2021_04_30_04.sql index 3e356375c7..691a6adf34 100644 --- a/data/sql/updates/pending_db_world/rev_1617859274362409300.sql +++ b/data/sql/updates/db_world/2021_04_30_04.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_30_03 -> 2021_04_30_04 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_30_03'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_30_03 2021_04_30_04 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1617859274362409300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1617859274362409300'); DELETE FROM `gameobject` WHERE (`id` = 153454); @@ -45,3 +61,12 @@ INSERT INTO `smart_scripts` VALUES (9452, 0, 0, 0, 0, 0, 100, 0, 0, 0, 3400, 4800, 0, 11, 25055, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Enchanter - In Combat - Cast \'Arcane Bolt\''), (9452, 0, 1, 0, 0, 0, 100, 0, 7000, 10000, 18000, 22000, 0, 11, 15970, 1, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Enchanter - In Combat - Cast \'Sleep\''), (9452, 0, 2, 0, 1, 0, 100, 0, 100, 100, 3000, 3000, 0, 49, 0, 0, 0, 0, 0, 0, 21, 10, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Enchanter - Out of Combat - Start Attacking'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From bcdbca6fd497f6d93ac6284d1c658e0ada8ae38c Mon Sep 17 00:00:00 2001 From: Emir Date: Sat, 1 May 2021 01:03:11 +0200 Subject: [PATCH 029/108] Fix(DB/Smart_scripts) Ambassador Sunsorrow (#5364) * fix(DB/Gameobject)### TITLE * fix(DB/Smart_scripts) * fix build --- .../updates/pending_db_world/rev_1619821428598508300.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619821428598508300.sql diff --git a/data/sql/updates/pending_db_world/rev_1619821428598508300.sql b/data/sql/updates/pending_db_world/rev_1619821428598508300.sql new file mode 100644 index 0000000000..f0231840ca --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619821428598508300.sql @@ -0,0 +1,9 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619821428598508300'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 16287; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 16287) AND (`source_type` = 0) AND (`id` IN (0, 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(16287, 0, 0, 1, 62, 0, 100, 0, 7178, 0, 0, 0, 0, 56, 30632, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Sunsorrow - On Gossip Option 0 Selected - Add Item \'Lament of the Highborne\' 1 Time'), +(16287, 0, 1, 0, 61, 0, 100, 0, 7178, 0, 0, 0, 0, 98, 7178, 10378, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Sunsorrow - On Gossip Option 0 Selected - Send Gossip'), +(16287, 0, 2, 0, 64, 0, 100, 0, 0, 0, 0, 0, 0, 98, 7178, 8458, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Sunsorrow - On Gossip Hello - Send Gossip'); From 1cbf22c42a03b657f08722a9b1a88ef2f2423aa3 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 30 Apr 2021 23:08:44 +0000 Subject: [PATCH 030/108] chore(DB): import pending SQL update file Referenced commit(s): bcdbca6fd497f6d93ac6284d1c658e0ada8ae38c --- .../2021_04_30_05.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619821428598508300.sql => db_world/2021_04_30_05.sql} (63%) diff --git a/data/sql/updates/pending_db_world/rev_1619821428598508300.sql b/data/sql/updates/db_world/2021_04_30_05.sql similarity index 63% rename from data/sql/updates/pending_db_world/rev_1619821428598508300.sql rename to data/sql/updates/db_world/2021_04_30_05.sql index f0231840ca..a5d3d97570 100644 --- a/data/sql/updates/pending_db_world/rev_1619821428598508300.sql +++ b/data/sql/updates/db_world/2021_04_30_05.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_30_04 -> 2021_04_30_05 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_30_04'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_30_04 2021_04_30_05 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619821428598508300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619821428598508300'); UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 16287; @@ -7,3 +23,12 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (16287, 0, 0, 1, 62, 0, 100, 0, 7178, 0, 0, 0, 0, 56, 30632, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Sunsorrow - On Gossip Option 0 Selected - Add Item \'Lament of the Highborne\' 1 Time'), (16287, 0, 1, 0, 61, 0, 100, 0, 7178, 0, 0, 0, 0, 98, 7178, 10378, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Sunsorrow - On Gossip Option 0 Selected - Send Gossip'), (16287, 0, 2, 0, 64, 0, 100, 0, 0, 0, 0, 0, 0, 98, 7178, 8458, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Sunsorrow - On Gossip Hello - Send Gossip'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 5ee7fed0a82e5dff246d19633417544f4817a3cb Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Fri, 30 Apr 2021 19:50:31 -0600 Subject: [PATCH 031/108] feat(DB/smart_scripts): Add SAI for Icecrown's creatures (#5385) --- .../rev_1618990113391357800.sql | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1618990113391357800.sql diff --git a/data/sql/updates/pending_db_world/rev_1618990113391357800.sql b/data/sql/updates/pending_db_world/rev_1618990113391357800.sql new file mode 100644 index 0000000000..1a19991ae0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1618990113391357800.sql @@ -0,0 +1,147 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618990113391357800'); + +-- Scourge Soulbinder +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32284; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32284; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32284, 0, 0, 0, 0, 0, 100, 0, 0, 0, 2500, 3000, 0, 11, 60814, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Scourge Soulbinder - In Combat CMC - Cast 'Frost Blast'"), +(32284, 0, 1, 0, 0, 0, 100, 0, 9000, 14000, 14000, 20000, 0, 11, 22744, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Scourge Soulbinder - In Combat - Cast 'Chains of Ice'"), +(32284, 0, 2, 0, 0, 0, 100, 0, 12600, 25200, 16700, 32300, 0, 11, 17620, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Scourge Soulbinder - In Combat - Cast 'Drain Life'"); + +-- Pustulent Colossus +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32482; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32482; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32482, 0, 0, 0, 0, 0, 100, 0, 10000, 15000, 10000, 15000, 0, 11, 28405, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Pustulent Colossus - In Combat - Cast 'Knockback'"), +(32482, 0, 1, 0, 0, 0, 100, 0, 5000, 10000, 10000, 15000, 0, 11, 63546, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Pustulent Colossus - In Combat - Cast 'Stomp'"); + +-- Corp'rethar Guardian https://www.youtube.com/watch?v=RwVs6nKQIws +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32280; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32280; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32280, 0, 0, 0, 0, 0, 100, 0, 10000, 10000, 20000, 25000, 0, 11, 54378, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Corp'rethar Guardian - In Combat - Cast 'Mortal Wound'"), +(32280, 0, 1, 0, 0, 0, 100, 0, 5000, 5000, 20000, 25000, 0, 11, 60927, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Corp'rethar Guardian - In Combat - Cast 'Infected Bite'"); + +-- Bone Sentinel +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32299; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32299; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32299, 0, 0, 0, 0, 0, 100, 0, 7000, 9000, 9000, 11000, 0, 11, 32736, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Bone Sentinel - In Combat - Cast 'Mortal Strike'"); + +-- Bone Guard +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32479; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32479; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32479, 0, 0, 0, 0, 0, 100, 0, 7000, 9000, 9000, 11000, 0, 11, 32736, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Bone Guard - In Combat - Cast 'Mortal Strike'"); + +-- Frostbrood Skytalon +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31137; +DELETE FROM `smart_scripts` WHERE `entryorguid` = 31137 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 +(31137, 0, 0, 0, 0, 0, 100, 0, 0, 5000, 5000, 15000, 11, 60667, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, "Frostbrood Skytalon - In Combat - Cast 'Frost Breath'"); + +-- Necrotic Webspinner +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31747; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 31747; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(31747, 0, 0, 0, 0, 0, 100, 0, 2000, 6000, 12000, 16000, 0, 11, 744, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Necrotic Webspinner - In Combat - Cast 'Poison'"), +(31747, 0, 1, 0, 0, 0, 100, 0, 1000, 3000, 10000, 15000, 0, 11, 745, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Necrotic Webspinner - In Combat - Cast 'Web'"); + +-- Frostbrood Matriarch +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32492; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32492; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32492, 0, 0, 0, 0, 0, 100, 0, 4000, 7000, 10000, 20000, 0, 11, 60667, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Frostbrood Matriarch - In Combat - Cast 'Frost Breath'"); + +-- Vargul Wanderer +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32505; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32505; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32505, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 36788, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Vargul Wanderer - On aggro - Cast 'Diminish Soul'"); + +-- Ravaged Ghoul +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32502; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32502; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32502, 0, 0, 0, 0, 0, 100, 0, 2000, 5000, 7000, 11000, 0, 11, 60873, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Ravaged Ghoul - In Combat - Cast 'Festering Bite'"), +(32502, 0, 1, 0, 0, 0, 100, 0, 6300, 15200, 16700, 22300, 0, 11, 60872, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Ravaged Ghoul - In Combat - Cast 'Ravenous Claw'"); + +-- Harbinger of Horror +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32278; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 32278; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32278, 0, 0, 0, 0, 0, 100, 0, 9250, 12500, 16500, 23000, 0, 11, 18099, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Harbinger of Horror - In Combat - Cast 'Chill Nova'"), +(32278, 0, 1, 0, 0, 0, 100, 0, 4300, 7200, 11700, 13500, 0, 11, 60924, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Harbinger of Horror - In Combat - Cast 'Lich Slap'"), +(32278, 0, 2, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 18100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Harbinger of Horror - On aggro - Cast 'Frost Armor'"), +(32278, 0, 3, 0, 0, 0, 100, 0, 2000, 8000, 2000, 8000, 0, 11, 61747, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Harbinger of Horror - In Combat - Cast 'Frostbolt'"), +(32278, 0, 4, 0, 0, 0, 100, 0, 7500, 12500, 9500, 17250, 0, 11, 12096, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, "Harbinger of Horror - In Combat - Cast 'Fear'"); + +-- Master Summoner Zarod +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 30746; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 30746; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(30746, 0, 0, 0, 0, 0, 100, 0, 9250, 12500, 16500, 23000, 0, 11, 11831, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Master Summoner Zarod - In Combat - Cast 'Frost Nova'"), +(30746, 0, 1, 0, 0, 0, 100, 0, 5300, 9200, 11700, 13500, 0, 11, 28873, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Master Summoner Zarod - In Combat - Cast 'Lich Slap'"), +(30746, 0, 2, 0, 0, 0, 100, 0, 2000, 5000, 2000, 5000, 0, 11, 9672, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Master Summoner Zarod - In Combat - Cast 'Frostbolt'"); + +-- Update castFlags for Spiked Ghoul +UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=30597 AND `source_type`=0 AND `id`=0 AND `link`=0; +UPDATE `smart_scripts` SET `action_param2`=0 WHERE `entryorguid`=30597 AND `source_type`=0 AND `id`=1 AND `link`=0; + +-- Chained Abomination +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 30689; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 30689; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(30689, 0, 0, 0, 0, 0, 100, 0, 4250, 7750, 9500, 13250, 0, 11, 15496, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Chained Abomination - In Combat - Cast 'Cleave'"), +(30689, 0, 1, 0, 0, 0, 100, 0, 2500, 5000, 2500, 5000, 0, 11, 50335, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Chained Abomination - In Combat - Cast 'Scourge Hook'"); + +-- Bone Giant +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31815; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 31815; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(31815, 0, 0, 0, 0, 0, 100, 0, 3500, 5750, 7500, 9250, 0, 11, 36405, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Bone Giant - In Combat - Cast 'Stomp'"); + +-- Decomposed Ghoul | https://youtu.be/bK7krvoUMnY?t=60 +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31812; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 31812; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(31812, 0, 0, 0, 0, 0, 100, 0, 2500, 2500, 120000, 120000, 0, 11, 15716, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Decomposed Ghoul - In Combat - Cast 'Enrage'"), +(31812, 0, 1, 0, 0, 0, 100, 0, 5500, 7200, 11750, 17250, 0, 11, 12097, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Decomposed Ghoul - In Combat - Cast 'Pierce Armor'"); + +-- Frostskull Magus +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31813; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` = 31813; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(31813, 0, 0, 0, 0, 0, 100, 0, 1000, 2000, 3000, 5000, 0, 11, 20297, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Frostskull Magus - In Combat - Cast 'Frostbolt'"); + +-- Fallen Hero's Spirit +DELETE FROM `smart_scripts` WHERE `entryorguid`=32149 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32149, 0, 2, 0, 0, 0, 100, 0, 3000, 5200, 9200, 11500, 0, 11, 11976, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Fallen Hero's Spirit - In Combat - Cast 'Strike'"); + +-- Saronite Shaper +DELETE FROM `smart_scripts` WHERE `entryorguid`=31255 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(31255, 0, 0, 0, 0, 0, 100, 0, 5200, 9500, 11750, 16250, 0, 11, 60960, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "Saronite Shaper - In Combat - Cast 'War Stomp'"); + +-- Skeletal Runesmith +DELETE FROM `smart_scripts` WHERE `entryorguid`=30921 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(30921, 0, 1, 0, 0, 0, 100, 0, 3200, 7500, 9750, 13250, 0, 11, 46202, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Skeletal Runesmith - In Combat - Cast 'Pierce Armor'"); + +-- Animated Laborer +DELETE FROM `smart_scripts` WHERE `entryorguid`=32267 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(32267, 0, 0, 0, 0, 0, 100, 0, 3200, 5500, 7750, 13250, 0, 11, 48374, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Animated Laborer - In Combat - Cast 'Puncture Wound'"); + +-- Risen Laborer +DELETE FROM `smart_scripts` WHERE `entryorguid`=30949 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(30949, 0, 1, 0, 0, 0, 100, 0, 3200, 5500, 7750, 13250, 0, 11, 48374, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Risen Laborer - In Combat - Cast 'Puncture Wound'"); + +-- Reanimated Miner +DELETE FROM `smart_scripts` WHERE `entryorguid`=31843 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(31843, 0, 0, 0, 0, 0, 100, 0, 3200, 5500, 7750, 13250, 0, 11, 48374, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Reanimated Miner - In Combat - Cast 'Puncture Wound'"), +(31843, 0, 1, 0, 0, 0, 100, 0, 6500, 8250, 11500, 16250, 0, 11, 43104, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Reanimated Miner - In Combat - Cast 'Deep Wound'"); + From 414296af0693933609ebcf46d709309576fc7328 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 1 May 2021 01:54:18 +0000 Subject: [PATCH 032/108] chore(DB): import pending SQL update file Referenced commit(s): 5ee7fed0a82e5dff246d19633417544f4817a3cb --- .../2021_05_01_00.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1618990113391357800.sql => db_world/2021_05_01_00.sql} (96%) diff --git a/data/sql/updates/pending_db_world/rev_1618990113391357800.sql b/data/sql/updates/db_world/2021_05_01_00.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1618990113391357800.sql rename to data/sql/updates/db_world/2021_05_01_00.sql index 1a19991ae0..21345ad1ac 100644 --- a/data/sql/updates/pending_db_world/rev_1618990113391357800.sql +++ b/data/sql/updates/db_world/2021_05_01_00.sql @@ -1,3 +1,19 @@ +-- DB update 2021_04_30_05 -> 2021_05_01_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_04_30_05'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_04_30_05 2021_05_01_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1618990113391357800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618990113391357800'); -- Scourge Soulbinder @@ -145,3 +161,12 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_ (31843, 0, 0, 0, 0, 0, 100, 0, 3200, 5500, 7750, 13250, 0, 11, 48374, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Reanimated Miner - In Combat - Cast 'Puncture Wound'"), (31843, 0, 1, 0, 0, 0, 100, 0, 6500, 8250, 11500, 16250, 0, 11, 43104, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, "Reanimated Miner - In Combat - Cast 'Deep Wound'"); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From f70ed8b8cad9d24ca68744da07599412893ab856 Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Sat, 1 May 2021 07:03:59 +0200 Subject: [PATCH 033/108] fix(Core): fix chests not despawning when opened in group (2) (#5387) * fix(Core): fix chests not despawning when opened in group * fix(Core): fix crashes in pr #5371 * Replaced nullptr checks * Used if with initializer instead of separate scope --- src/server/game/Entities/GameObject/GameObject.cpp | 1 + src/server/game/Groups/Group.cpp | 10 ++++++++++ src/server/game/Loot/LootMgr.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 1c0d4ea152..e74cf20b58 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -58,6 +58,7 @@ GameObject::GameObject() : WorldObject(false), MovableMapObject(), m_lootGenerationTime = 0; ResetLootMode(); // restore default loot mode + loot.sourceGameObject = this; m_stationaryPosition.Relocate(0.0f, 0.0f, 0.0f, 0.0f); } diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index bc4f39d9ac..335df3d6de 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1493,6 +1493,16 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap) item->is_blocked = false; } + if (Loot* loot = roll->getLoot(); loot && loot->isLooted() && loot->sourceGameObject) + { + const GameObjectTemplate* goInfo = loot->sourceGameObject->GetGOInfo(); + if (goInfo && goInfo->type == GAMEOBJECT_TYPE_CHEST) + { + // Deactivate chest if the last item was rolled in group + loot->sourceGameObject->SetLootState(GO_JUST_DEACTIVATED); + } + } + RollId.erase(rollI); delete roll; } diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index f55ca83e81..8f98c6b627 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -111,6 +111,7 @@ enum LootSlotType class Player; class LootStore; class ConditionMgr; +class GameObject; struct Loot; struct LootStoreItem @@ -313,6 +314,7 @@ struct Loot // GUID of container that holds this loot (item_instance.entry), set for items that can be looted ObjectGuid containerGUID; + GameObject* sourceGameObject{nullptr}; Loot(uint32 _gold = 0) : gold(_gold) { } ~Loot() { clear(); } From 52f6f2f15b5c63243e8bf8bdec8db21c671510d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Sat, 1 May 2021 14:18:29 +0200 Subject: [PATCH 034/108] fix(Core/Unit): potential crash + extract duplicated code (#5303) --- src/server/game/Entities/Unit/Unit.cpp | 75 +++++++++++++------------- src/server/game/Entities/Unit/Unit.h | 2 + 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index fa401436c5..b28228f01a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11241,25 +11241,7 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui if (spellProto->ValidateAttribute6SpellDamageMods(caster, *i, damagetype == DOT)) AddPct(TakenTotalMod, (*i)->GetAmount()); - // .. taken pct: dummy auras - AuraEffectList const& mDummyAuras = GetAuraEffectsByType(SPELL_AURA_DUMMY); - for (AuraEffectList::const_iterator i = mDummyAuras.begin(); i != mDummyAuras.end(); ++i) - { - switch ((*i)->GetSpellInfo()->SpellIconID) - { - // Cheat Death - case 2109: - if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) - { - // Patch 2.4.3: The resilience required to reach the 90% damage reduction cap - // is 22.5% critical strike damage reduction, or 444 resilience. - // To calculate for 90%, we multiply the 100% by 4 (22.5% * 4 = 90%) - float mod = -1.0f * GetMeleeCritDamageReduction(400); - AddPct(TakenTotalMod, std::max(mod, float((*i)->GetAmount()))); - } - break; - } - } + TakenTotalMod = processDummyAuras(TakenTotalMod); // From caster spells if (caster) @@ -11354,6 +11336,41 @@ uint32 Unit::SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, ui return uint32(std::max(tmpDamage, 0.0f)); } +float Unit::processDummyAuras(float TakenTotalMod) const +{ + // note: old code coming from TC, just extracted here to remove the code duplication + solve potential crash + // see: https://github.com/TrinityCore/TrinityCore/commit/c85710e148d75450baedf6632b9ca6fd40b4148e + + // .. taken pct: dummy auras + auto const& mDummyAuras = GetAuraEffectsByType(SPELL_AURA_DUMMY); + for (auto i = mDummyAuras.begin(); i != mDummyAuras.end(); ++i) + { + if (!(*i) || !(*i)->GetSpellInfo()) + { + continue; + } + + if (auto spellIconId = (*i)->GetSpellInfo()->SpellIconID) + { + switch (spellIconId) + { + // Cheat Death + case 2109: + if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) + { + // Patch 2.4.3: The resilience required to reach the 90% damage reduction cap + // is 22.5% critical strike damage reduction, or 444 resilience. + // To calculate for 90%, we multiply the 100% by 4 (22.5% * 4 = 90%) + float mod = -1.0f * GetMeleeCritDamageReduction(400); + AddPct(TakenTotalMod, std::max(mod, float((*i)->GetAmount()))); + } + break; + } + } + } + return TakenTotalMod; +} + int32 Unit::SpellBaseDamageBonusDone(SpellSchoolMask schoolMask) { int32 DoneAdvertisedBenefit = 0; @@ -12591,25 +12608,7 @@ uint32 Unit::MeleeDamageBonusTaken(Unit* attacker, uint32 pdamage, WeaponAttackT } } - // .. taken pct: dummy auras - AuraEffectList const& mDummyAuras = GetAuraEffectsByType(SPELL_AURA_DUMMY); - for (AuraEffectList::const_iterator i = mDummyAuras.begin(); i != mDummyAuras.end(); ++i) - { - switch ((*i)->GetSpellInfo()->SpellIconID) - { - // Cheat Death - case 2109: - if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) - { - // Patch 2.4.3: The resilience required to reach the 90% damage reduction cap - // is 22.5% critical strike damage reduction, or 444 resilience. - // To calculate for 90%, we multiply the 100% by 4 (22.5% * 4 = 90%) - float mod = -1.0f * GetMeleeCritDamageReduction(400); - AddPct(TakenTotalMod, std::max(mod, float((*i)->GetAmount()))); - } - break; - } - } + TakenTotalMod = processDummyAuras(TakenTotalMod); // .. taken pct: class scripts /*AuraEffectList const& mclassScritAuras = GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 602e141410..f6e7414f75 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2620,6 +2620,8 @@ private: uint32 _oldFactionId; ///< faction before charm bool m_petCatchUp; + + float processDummyAuras(float TakenTotalMod) const; }; namespace acore From 46c9aa6f3a500e8ce7f052236972369b53bf3924 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sat, 1 May 2021 17:07:15 +0200 Subject: [PATCH 035/108] fix(Script/Command): HandleAddItemCommand (#5412) * fix(Core/Command): Additem * Update cs_misc.cpp --- src/server/scripts/Commands/cs_misc.cpp | 28 +++++++++++-------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 02dbaecafa..95f45e4632 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1541,15 +1541,19 @@ public: // Subtract if (count < 0) { - if (!playerTarget->HasItemCount(itemId, 0)) + // Only have scam check on player accounts + if (playerTarget->GetSession()->GetSecurity() == SEC_PLAYER) { - // output that player don't have any items to destroy - handler->PSendSysMessage(LANG_REMOVEITEM_FAILURE, handler->GetNameLink(playerTarget).c_str(), itemId); - } - else if (!playerTarget->HasItemCount(itemId, -count)) - { - // output that player don't have as many items that you want to destroy - handler->PSendSysMessage(LANG_REMOVEITEM_ERROR, handler->GetNameLink(playerTarget).c_str(), itemId); + if (!playerTarget->HasItemCount(itemId, 0)) + { + // output that player don't have any items to destroy + handler->PSendSysMessage(LANG_REMOVEITEM_FAILURE, handler->GetNameLink(playerTarget).c_str(), itemId); + } + else if (!playerTarget->HasItemCount(itemId, -count)) + { + // output that player don't have as many items that you want to destroy + handler->PSendSysMessage(LANG_REMOVEITEM_ERROR, handler->GetNameLink(playerTarget).c_str(), itemId); + } } else { @@ -1561,14 +1565,6 @@ public: return true; } - /* [AC] Sunwell hack - if (handler->GetSession()->GetSecurity() < SEC_ADMINISTRATOR) - { - handler->PSendSysMessage("You may only remove items. Adding items is available for higher GMLevel."); - return false; - } - */ - // Adding items uint32 noSpaceForCount = 0; From 752595dccf98f0fc63cdbdd269542859f4506549 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sat, 1 May 2021 19:18:29 +0200 Subject: [PATCH 036/108] fix(Core/TotemAI): Totems should not attack neutral unless owner is in combat (#5434) --- src/server/game/AI/CoreAI/TotemAI.cpp | 6 ++++++ src/server/game/Grids/Notifiers/GridNotifiers.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp index 2fd9044642..a6e81dd920 100644 --- a/src/server/game/AI/CoreAI/TotemAI.cpp +++ b/src/server/game/AI/CoreAI/TotemAI.cpp @@ -76,6 +76,12 @@ void TotemAI::UpdateAI(uint32 /*diff*/) me->VisitNearbyObject(max_range, checker); } + + if (!victim && me->GetCharmerOrOwnerOrSelf()->IsInCombat()) + { + victim = me->GetCharmerOrOwnerOrSelf()->GetVictim(); + } + // If have target if (victim) { diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 84f4b27610..1b97b7fe06 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -931,7 +931,7 @@ namespace acore bool operator()(Unit* u) { if (u->isTargetableForAttack(true, i_funit) && i_obj->IsWithinDistInMap(u, i_range) && - !i_funit->IsFriendlyTo(u) && i_funit->CanSeeOrDetect(u)) + (i_funit->IsInCombatWith(u) || i_funit->IsHostileTo(u)) && i_obj->CanSeeOrDetect(u)) { i_range = i_obj->GetDistance(u); // use found unit range as new range limit for next check return true; From 3cf6b3a79ebc8ffde2da95e6d7cf402bcf18c75e Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Sat, 1 May 2021 21:42:31 +0200 Subject: [PATCH 037/108] fix(DB/spell_dbc): Fix Eye of Eternity exit portal (#5468) --- .../updates/pending_db_world/rev_1619378758243963900.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619378758243963900.sql diff --git a/data/sql/updates/pending_db_world/rev_1619378758243963900.sql b/data/sql/updates/pending_db_world/rev_1619378758243963900.sql new file mode 100644 index 0000000000..074a68122f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619378758243963900.sql @@ -0,0 +1,6 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619378758243963900'); + +INSERT IGNORE INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`Field227`,`Field228`,`Field229`,`SpellDescriptionVariableID`,`SpellDifficultyID`) + VALUES (60474,0,0,0,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,25,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,"Exit Portal","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712172,"","","","","","","","","","","","","","","","",16712188,"","","","","","","","","","","","","","","","",16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0); + +UPDATE spell_dbc SET `AttributesEx6` = `AttributesEx6` | 4096 WHERE `ID` = 60474; -- Add SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE From 4d602b42e4957b8130ff8409d3043a39879ffd6a Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 1 May 2021 20:33:46 +0000 Subject: [PATCH 038/108] chore(DB): import pending SQL update file Referenced commit(s): 3cf6b3a79ebc8ffde2da95e6d7cf402bcf18c75e --- .../2021_05_01_01.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619378758243963900.sql => db_world/2021_05_01_01.sql} (87%) diff --git a/data/sql/updates/pending_db_world/rev_1619378758243963900.sql b/data/sql/updates/db_world/2021_05_01_01.sql similarity index 87% rename from data/sql/updates/pending_db_world/rev_1619378758243963900.sql rename to data/sql/updates/db_world/2021_05_01_01.sql index 074a68122f..3c67baf314 100644 --- a/data/sql/updates/pending_db_world/rev_1619378758243963900.sql +++ b/data/sql/updates/db_world/2021_05_01_01.sql @@ -1,6 +1,31 @@ +-- DB update 2021_05_01_00 -> 2021_05_01_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_01_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_01_00 2021_05_01_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619378758243963900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619378758243963900'); INSERT IGNORE INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`Field227`,`Field228`,`Field229`,`SpellDescriptionVariableID`,`SpellDifficultyID`) VALUES (60474,0,0,0,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,5,0,0,1,0,0,0,0,0,0,0,0,0,0,0,25,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,"Exit Portal","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712172,"","","","","","","","","","","","","","","","",16712188,"","","","","","","","","","","","","","","","",16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0); UPDATE spell_dbc SET `AttributesEx6` = `AttributesEx6` | 4096 WHERE `ID` = 60474; -- Add SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 61c87a8ab795b00b182036999c2c953f456670ac Mon Sep 17 00:00:00 2001 From: Kargatum Date: Sun, 2 May 2021 07:06:55 +0700 Subject: [PATCH 039/108] feat(Core/Config): add abort message if config incorrect (#5438) --- src/common/Configuration/Config.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/common/Configuration/Config.cpp b/src/common/Configuration/Config.cpp index c191f1be9c..777d59bedd 100644 --- a/src/common/Configuration/Config.cpp +++ b/src/common/Configuration/Config.cpp @@ -45,9 +45,11 @@ namespace throw ConfigException(acore::StringFormat("Config::LoadFile: Failed open file '%s'", file.c_str())); uint32 count = 0; + uint32 lineNumber = 0; while (in.good()) { + lineNumber++; std::string line; std::getline(in, line); @@ -67,7 +69,9 @@ namespace auto const equal_pos = line.find('='); if (equal_pos == std::string::npos || equal_pos == line.length()) - return; + { + ABORT_MSG("> Config::LoadFile: Failure to read line number %u. Don't use only whitespace lines", lineNumber); + } auto entry = acore::String::Trim(line.substr(0, equal_pos), in.getloc()); auto value = acore::String::Trim(line.substr(equal_pos + 1), in.getloc()); From d33640242d403fbb2c1fc1d7c3dec3a11436bf31 Mon Sep 17 00:00:00 2001 From: Caishen-cc <81451494+Caishen-cc@users.noreply.github.com> Date: Sat, 1 May 2021 20:51:53 -0400 Subject: [PATCH 040/108] fix(DB/creature_loot_template): a few rare npcs (#5449) --- .../rev_1619355377341877915.sql | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619355377341877915.sql diff --git a/data/sql/updates/pending_db_world/rev_1619355377341877915.sql b/data/sql/updates/pending_db_world/rev_1619355377341877915.sql new file mode 100644 index 0000000000..d432ac99ab --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619355377341877915.sql @@ -0,0 +1,59 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619355377341877915'); + +# select max(entry) from reference_loot_template; 526760, using 526760 + 20 + +# Create new unified reference loot template containing loot from 24037, 24039, 24041 +INSERT INTO `reference_loot_template` +SELECT 526780, + rlt.Item, + rlt.Reference, + rlt.Chance, + rlt.QuestRequired, + rlt.LootMode, + rlt.GroupId, + rlt.MinCount, + rlt.MaxCount, + rlt.Comment +FROM (SELECT DISTINCT Item, + Reference, + Chance, + QuestRequired, + LootMode, + GroupId, + MinCount, + MaxCount, + Comment + FROM `reference_loot_template` + WHERE `Entry` in (24037, 24039, 24041)) AS rlt; + +# 2779 Prince Nazjak +# 5356 Snarler +# 8211 Old Cliff Jumper +# 14491 Kurmokk +# 14448 Molt Thorn +# 14492 Verifonix +# 14224 7:XT + +# Remove old references for the above-mentioned rares +DELETE +FROM `creature_loot_template` +where `Reference` in (24037, 24039, 24041) + and `Chance` = 1 + and `Entry` in + (2779, + 5356, + 8211, + 14491, + 14448, + 14492, + 14224); + +# Insert new reference template with 100% chance to guarantee green drop from a rare +INSERT INTO `creature_loot_template` VALUES + (2779, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Prince Nazjak - (ReferenceTable)'), + (5356, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Snarler - (ReferenceTable)'), + (8211, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Old Cliff Jumper - (ReferenceTable)'), + (14491, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Kurmokk - (ReferenceTable)'), + (14448, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Molt Thorn - (ReferenceTable)'), + (14492, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Verifonix - (ReferenceTable)'), + (14224, 526780, 526780, 100, 0, 1, 1, 1, 1, '7:XT - (ReferenceTable)'); From aee1351f1282cb0e6ee902b19423a4210fed056e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 2 May 2021 00:53:23 +0000 Subject: [PATCH 041/108] chore(DB): import pending SQL update file Referenced commit(s): d33640242d403fbb2c1fc1d7c3dec3a11436bf31 --- .../2021_05_02_00.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619355377341877915.sql => db_world/2021_05_02_00.sql} (72%) diff --git a/data/sql/updates/pending_db_world/rev_1619355377341877915.sql b/data/sql/updates/db_world/2021_05_02_00.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1619355377341877915.sql rename to data/sql/updates/db_world/2021_05_02_00.sql index d432ac99ab..e6e7f1d4d4 100644 --- a/data/sql/updates/pending_db_world/rev_1619355377341877915.sql +++ b/data/sql/updates/db_world/2021_05_02_00.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_01_01 -> 2021_05_02_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_01_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_01_01 2021_05_02_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619355377341877915'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619355377341877915'); # select max(entry) from reference_loot_template; 526760, using 526760 + 20 @@ -57,3 +73,12 @@ INSERT INTO `creature_loot_template` VALUES (14448, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Molt Thorn - (ReferenceTable)'), (14492, 526780, 526780, 100, 0, 1, 1, 1, 1, 'Verifonix - (ReferenceTable)'), (14224, 526780, 526780, 100, 0, 1, 1, 1, 1, '7:XT - (ReferenceTable)'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From b71a5b6f94ac9654d7cf1b9b956479fd84dd59b8 Mon Sep 17 00:00:00 2001 From: Patrick Lewis Date: Sun, 2 May 2021 05:09:42 -0700 Subject: [PATCH 042/108] fix(CI): change on: push to only run on master branch (#5591) --- .github/workflows/codestyle.yml | 1 - .github/workflows/core_build.yml | 3 +-- .github/workflows/docker_build.yml | 3 +-- .github/workflows/issue-labeler.yml | 1 + .github/workflows/macos_build.yml | 3 +-- .github/workflows/windows_build.yml | 3 +-- 6 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/codestyle.yml b/.github/workflows/codestyle.yml index ed76d020fd..3d1c5e33a0 100644 --- a/.github/workflows/codestyle.yml +++ b/.github/workflows/codestyle.yml @@ -1,6 +1,5 @@ name: check-codestyle on: - push: pull_request: jobs: diff --git a/.github/workflows/core_build.yml b/.github/workflows/core_build.yml index 2a50454911..cf1d66979d 100644 --- a/.github/workflows/core_build.yml +++ b/.github/workflows/core_build.yml @@ -2,8 +2,7 @@ name: core-build on: push: branches: - - '**' # matches every branch - - '!coverity_scan' # excludes coverity_scan + - 'master' pull_request: jobs: diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index 602e219f88..8c0ae6600f 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -2,8 +2,7 @@ name: docker-build on: push: branches: - - '**' # matches every branch - - '!coverity_scan' # excludes coverity_scan + - 'master' pull_request: jobs: diff --git a/.github/workflows/issue-labeler.yml b/.github/workflows/issue-labeler.yml index a846175add..e91fda799b 100644 --- a/.github/workflows/issue-labeler.yml +++ b/.github/workflows/issue-labeler.yml @@ -1,3 +1,4 @@ +name: "Issue Labeler" on: issues: types: [opened] diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 9bfbbf97f3..032a865a34 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -2,8 +2,7 @@ name: macos-build on: push: branches: - - '**' # matches every branch - - '!coverity_scan' # excludes coverity_scan + - 'master' pull_request: jobs: diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index fccaf6fc7c..f7e98035dc 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -2,8 +2,7 @@ name: windows-build on: push: branches: - - '**' # matches every branch - - '!coverity_scan' # excludes coverity_scan + - 'master' pull_request: jobs: From 719b541e10ce2194c4b1282a0631f088f4317780 Mon Sep 17 00:00:00 2001 From: Raelorasz <82320853+Raelorasz@users.noreply.github.com> Date: Sun, 2 May 2021 17:06:43 +0200 Subject: [PATCH 043/108] fix(DB/creature): Adjust z position of creature in Wailing Caverns (#5465) --- data/sql/updates/pending_db_world/rev_1619372140124620500.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619372140124620500.sql diff --git a/data/sql/updates/pending_db_world/rev_1619372140124620500.sql b/data/sql/updates/pending_db_world/rev_1619372140124620500.sql new file mode 100644 index 0000000000..b95128275f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619372140124620500.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619372140124620500'); + +UPDATE `creature` SET `position_z`='-70.95' WHERE `guid`=87125; From f8abece0d56964b0109ccee6dac31a911b39dfff Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 2 May 2021 15:08:09 +0000 Subject: [PATCH 044/108] chore(DB): import pending SQL update file Referenced commit(s): 719b541e10ce2194c4b1282a0631f088f4317780 --- data/sql/updates/db_world/2021_05_02_01.sql | 28 +++++++++++++++++++ .../rev_1619372140124620500.sql | 3 -- 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_02_01.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619372140124620500.sql diff --git a/data/sql/updates/db_world/2021_05_02_01.sql b/data/sql/updates/db_world/2021_05_02_01.sql new file mode 100644 index 0000000000..a8b57880c0 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_02_01.sql @@ -0,0 +1,28 @@ +-- DB update 2021_05_02_00 -> 2021_05_02_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_02_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_02_00 2021_05_02_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619372140124620500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619372140124620500'); + +UPDATE `creature` SET `position_z`='-70.95' WHERE `guid`=87125; + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619372140124620500.sql b/data/sql/updates/pending_db_world/rev_1619372140124620500.sql deleted file mode 100644 index b95128275f..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619372140124620500.sql +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619372140124620500'); - -UPDATE `creature` SET `position_z`='-70.95' WHERE `guid`=87125; From 36c82f4c6150f29c4bf3754ee0d28779b7fe0199 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Sun, 2 May 2021 16:44:12 -0600 Subject: [PATCH 045/108] fix(DB/gameobject): Adjust gob position for some Copper Vein nodes (#5602) --- .../updates/pending_db_world/rev_1619976848278136900.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619976848278136900.sql diff --git a/data/sql/updates/pending_db_world/rev_1619976848278136900.sql b/data/sql/updates/pending_db_world/rev_1619976848278136900.sql new file mode 100644 index 0000000000..11c6f4a8f9 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619976848278136900.sql @@ -0,0 +1,8 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619976848278136900'); + +-- Durotar | GUID 4815 | issue #5571 +UPDATE `gameobject` SET `position_x`=-246.69, `position_y`=-5237.25, `position_z`=2.6372 WHERE `guid`=4815; + +-- Thousand Needles | GUID 5365 | issue #5584 +UPDATE `gameobject` SET `position_x`=-4859.25, `position_y`=-1798.27, `position_z`=-41.880 WHERE `guid`=5365; + From 445131ee3884cc7972528d81acbdec77324c1354 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 2 May 2021 22:45:44 +0000 Subject: [PATCH 046/108] chore(DB): import pending SQL update file Referenced commit(s): 36c82f4c6150f29c4bf3754ee0d28779b7fe0199 --- data/sql/updates/db_world/2021_05_02_02.sql | 33 +++++++++++++++++++ .../rev_1619976848278136900.sql | 8 ----- 2 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_02_02.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619976848278136900.sql diff --git a/data/sql/updates/db_world/2021_05_02_02.sql b/data/sql/updates/db_world/2021_05_02_02.sql new file mode 100644 index 0000000000..c6dc14f08d --- /dev/null +++ b/data/sql/updates/db_world/2021_05_02_02.sql @@ -0,0 +1,33 @@ +-- DB update 2021_05_02_01 -> 2021_05_02_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_02_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_02_01 2021_05_02_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619976848278136900'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619976848278136900'); + +-- Durotar | GUID 4815 | issue #5571 +UPDATE `gameobject` SET `position_x`=-246.69, `position_y`=-5237.25, `position_z`=2.6372 WHERE `guid`=4815; + +-- Thousand Needles | GUID 5365 | issue #5584 +UPDATE `gameobject` SET `position_x`=-4859.25, `position_y`=-1798.27, `position_z`=-41.880 WHERE `guid`=5365; + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619976848278136900.sql b/data/sql/updates/pending_db_world/rev_1619976848278136900.sql deleted file mode 100644 index 11c6f4a8f9..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619976848278136900.sql +++ /dev/null @@ -1,8 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619976848278136900'); - --- Durotar | GUID 4815 | issue #5571 -UPDATE `gameobject` SET `position_x`=-246.69, `position_y`=-5237.25, `position_z`=2.6372 WHERE `guid`=4815; - --- Thousand Needles | GUID 5365 | issue #5584 -UPDATE `gameobject` SET `position_x`=-4859.25, `position_y`=-1798.27, `position_z`=-41.880 WHERE `guid`=5365; - From 12d00fffb66e3915989933fbf0bd5531dc688788 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Sun, 2 May 2021 17:22:31 -0600 Subject: [PATCH 047/108] fix(DB/smart_scripts): SetInCombatWithZone at spawn for Haunting Spirit (#5568) --- .../updates/pending_db_world/rev_1619833153329665400.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619833153329665400.sql diff --git a/data/sql/updates/pending_db_world/rev_1619833153329665400.sql b/data/sql/updates/pending_db_world/rev_1619833153329665400.sql new file mode 100644 index 0000000000..3722aa0fa7 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619833153329665400.sql @@ -0,0 +1,7 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619833153329665400'); + +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=4958; +DELETE FROM `smart_scripts` WHERE `entryorguid`=4958 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4958, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Haunting Spirit - On spawn - Set in combat with zone'); + From 8e0bffa80b04be91769363ab9af2d5c49103045d Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 2 May 2021 23:23:59 +0000 Subject: [PATCH 048/108] chore(DB): import pending SQL update file Referenced commit(s): 12d00fffb66e3915989933fbf0bd5531dc688788 --- .../2021_05_02_03.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619833153329665400.sql => db_world/2021_05_02_03.sql} (53%) diff --git a/data/sql/updates/pending_db_world/rev_1619833153329665400.sql b/data/sql/updates/db_world/2021_05_02_03.sql similarity index 53% rename from data/sql/updates/pending_db_world/rev_1619833153329665400.sql rename to data/sql/updates/db_world/2021_05_02_03.sql index 3722aa0fa7..4eb9b06471 100644 --- a/data/sql/updates/pending_db_world/rev_1619833153329665400.sql +++ b/data/sql/updates/db_world/2021_05_02_03.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_02_02 -> 2021_05_02_03 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_02_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_02_02 2021_05_02_03 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619833153329665400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619833153329665400'); UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=4958; @@ -5,3 +21,12 @@ DELETE FROM `smart_scripts` WHERE `entryorguid`=4958 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES (4958, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Haunting Spirit - On spawn - Set in combat with zone'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 87a35b6569aec800d4cf1bc172ef3875bab2940a Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 3 May 2021 03:25:50 +0200 Subject: [PATCH 049/108] fix(Core/GameObjects): Gameobject rotation and moving actions not updating to client (#5223) --- .../Database/Implementation/WorldDatabase.cpp | 1 + .../Database/Implementation/WorldDatabase.h | 1 + .../game/Entities/GameObject/GameObject.cpp | 14 ++++- .../game/Entities/GameObject/GameObject.h | 4 +- src/server/scripts/Commands/cs_gobject.cpp | 55 ++++++++++++++----- 5 files changed, 57 insertions(+), 18 deletions(-) diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp index d5f015bbdc..398cd53f52 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.cpp +++ b/src/server/database/Database/Implementation/WorldDatabase.cpp @@ -80,6 +80,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_DEL_DISABLES, "DELETE FROM disables WHERE entry = ? AND sourceType = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA, "UPDATE creature SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, "UPDATE gameobject SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(WORLD_INS_GAMEOBJECT_ADDON, "INSERT INTO gameobject_addon (guid, invisibilityType, invisibilityValue) VALUES (?, 0, 0)", CONNECTION_ASYNC); // 0: uint8 PrepareStatement(WORLD_SEL_REQ_XP, "SELECT Experience FROM player_xp_for_level WHERE Level = ?", CONNECTION_SYNCH); } diff --git a/src/server/database/Database/Implementation/WorldDatabase.h b/src/server/database/Database/Implementation/WorldDatabase.h index 7e3600f7dd..f00ef5b1c2 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.h +++ b/src/server/database/Database/Implementation/WorldDatabase.h @@ -102,6 +102,7 @@ enum WorldDatabaseStatements WORLD_UPD_CREATURE_ZONE_AREA_DATA, WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, WORLD_SEL_REQ_XP, + WORLD_INS_GAMEOBJECT_ADDON, MAX_WORLDDATABASE_STATEMENTS }; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index e74cf20b58..22aef69c45 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -845,7 +845,7 @@ void GameObject::getFishLootJunk(Loot* fishloot, Player* loot_owner) } } -void GameObject::SaveToDB() +void GameObject::SaveToDB(bool saveAddon /*= false*/) { // this should only be used when the gameobject has already been loaded // preferably after adding to map, because mapid may not be valid otherwise @@ -856,10 +856,10 @@ void GameObject::SaveToDB() return; } - SaveToDB(GetMapId(), data->spawnMask, data->phaseMask); + SaveToDB(GetMapId(), data->spawnMask, data->phaseMask, saveAddon); } -void GameObject::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask) +void GameObject::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask, bool saveAddon /*= false*/) { const GameObjectTemplate* goI = GetGOInfo(); @@ -914,6 +914,14 @@ void GameObject::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask) stmt->setUInt8(index++, uint8(GetGoState())); trans->Append(stmt); + if (saveAddon && !sObjectMgr->GetGameObjectAddon(m_spawnId)) + { + index = 0; + stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GAMEOBJECT_ADDON); + stmt->setUInt32(index++, m_spawnId); + trans->Append(stmt); + } + WorldDatabase.CommitTransaction(trans); } diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index aa88c63bcf..6c34692b71 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -759,8 +759,8 @@ public: // overwrite WorldObject function for proper name localization [[nodiscard]] std::string const& GetNameForLocaleIdx(LocaleConstant locale_idx) const override; - void SaveToDB(); - void SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask); + void SaveToDB(bool saveAddon = false); + void SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask, bool saveAddon = false); bool LoadFromDB(ObjectGuid::LowType guid, Map* map) { return LoadGameObjectFromDB(guid, map, false); } bool LoadGameObjectFromDB(ObjectGuid::LowType guid, Map* map, bool addToMap = true); void DeleteFromDB(); diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index f04081d5e4..05b31cdd2c 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -402,12 +402,25 @@ public: oz = player->GetOrientation(); } - object->SetWorldRotationAngles(oz, oy, ox); - object->DestroyForNearbyPlayers(); - object->UpdateObjectVisibility(); + Map* map = object->GetMap(); - object->SaveToDB(); - object->Refresh(); + object->Relocate(object->GetPositionX(), object->GetPositionY(), object->GetPositionZ(), oz); + object->SetWorldRotationAngles(oz, oy, ox); + + object->SaveToDB(true); + + // Generate a completely new spawn with new guid + // 3.3.5a client caches recently deleted objects and brings them back to life + // when CreateObject block for this guid is received again + // however it entirely skips parsing that block and only uses already known location + object->Delete(); + + object = new GameObject(); + if (!object->LoadGameObjectFromDB(guidLow, map)) + { + delete object; + return false; + } handler->PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, object->GetSpawnId(), object->GetGOInfo()->name.c_str(), object->GetSpawnId(), oz, oy, ox); @@ -438,12 +451,10 @@ public: char* toY = strtok(nullptr, " "); char* toZ = strtok(nullptr, " "); + Position pos; if (!toX) { - Player* player = handler->GetSession()->GetPlayer(); - object->GetMap()->GameObjectRelocation(object, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), object->GetOrientation()); - object->DestroyForNearbyPlayers(); - object->UpdateObjectVisibility(); + pos = handler->GetSession()->GetPlayer()->GetPosition(); } else { @@ -461,13 +472,31 @@ public: return false; } - object->GetMap()->GameObjectRelocation(object, x, y, z, object->GetOrientation()); - object->DestroyForNearbyPlayers(); - object->UpdateObjectVisibility(); + pos.Relocate(x, y, z); } + Map* map = object->GetMap(); + + pos.SetOrientation(object->GetOrientation()); + object->Relocate(pos); + + // update which cell has this gameobject registered for loading + sObjectMgr->RemoveGameobjectFromGrid(guidLow, object->GetGOData()); object->SaveToDB(); - object->Refresh(); + sObjectMgr->AddGameobjectToGrid(guidLow, object->GetGOData()); + + // Generate a completely new spawn with new guid + // 3.3.5a client caches recently deleted objects and brings them back to life + // when CreateObject block for this guid is received again + // however it entirely skips parsing that block and only uses already known location + object->Delete(); + + object = new GameObject(); + if (!object->LoadGameObjectFromDB(guidLow, map)) + { + delete object; + return false; + } handler->PSendSysMessage(LANG_COMMAND_MOVEOBJMESSAGE, object->GetSpawnId(), object->GetGOInfo()->name.c_str(), object->GetSpawnId()); From 4440a456757472917abd4d6741a44fe9547a9a6f Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Sun, 2 May 2021 21:02:27 -0600 Subject: [PATCH 050/108] fix(DB/creature): Adjust position for Syndicate Thief (#5566) --- data/sql/updates/pending_db_world/rev_1619831876563624700.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619831876563624700.sql diff --git a/data/sql/updates/pending_db_world/rev_1619831876563624700.sql b/data/sql/updates/pending_db_world/rev_1619831876563624700.sql new file mode 100644 index 0000000000..7a1b1862a1 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619831876563624700.sql @@ -0,0 +1,4 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619831876563624700'); + +UPDATE `creature` SET `position_x`=-1685.18, `position_y`=-1798.30, `position_z`=82.851 WHERE `guid`=14569; + From c72be439f46d946efba789b5de70b6589b54f394 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 3 May 2021 03:03:56 +0000 Subject: [PATCH 051/108] chore(DB): import pending SQL update file Referenced commit(s): 4440a456757472917abd4d6741a44fe9547a9a6f --- data/sql/updates/db_world/2021_05_03_00.sql | 29 +++++++++++++++++++ .../rev_1619831876563624700.sql | 4 --- 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_03_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619831876563624700.sql diff --git a/data/sql/updates/db_world/2021_05_03_00.sql b/data/sql/updates/db_world/2021_05_03_00.sql new file mode 100644 index 0000000000..388523c0eb --- /dev/null +++ b/data/sql/updates/db_world/2021_05_03_00.sql @@ -0,0 +1,29 @@ +-- DB update 2021_05_02_03 -> 2021_05_03_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_02_03'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_02_03 2021_05_03_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619831876563624700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619831876563624700'); + +UPDATE `creature` SET `position_x`=-1685.18, `position_y`=-1798.30, `position_z`=82.851 WHERE `guid`=14569; + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619831876563624700.sql b/data/sql/updates/pending_db_world/rev_1619831876563624700.sql deleted file mode 100644 index 7a1b1862a1..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619831876563624700.sql +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619831876563624700'); - -UPDATE `creature` SET `position_x`=-1685.18, `position_y`=-1798.30, `position_z`=82.851 WHERE `guid`=14569; - From 741fb7f99eda113ee6c1315f8bafbc96ef017719 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Sun, 2 May 2021 22:19:00 -0600 Subject: [PATCH 052/108] fix(DB/gameobject): Adjust position for Bruiseweed with GUID 3799 (#5567) --- data/sql/updates/pending_db_world/rev_1619832333662216000.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619832333662216000.sql diff --git a/data/sql/updates/pending_db_world/rev_1619832333662216000.sql b/data/sql/updates/pending_db_world/rev_1619832333662216000.sql new file mode 100644 index 0000000000..c050095a04 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619832333662216000.sql @@ -0,0 +1,4 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619832333662216000'); + +UPDATE `gameobject` SET `position_x`=-1657.946, `position_y`=-1781.432, `position_z`=80.497 WHERE `guid`=3799; + From ca1f518b7fed75deec51392df81e03da305c61bb Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 3 May 2021 04:20:30 +0000 Subject: [PATCH 053/108] chore(DB): import pending SQL update file Referenced commit(s): 741fb7f99eda113ee6c1315f8bafbc96ef017719 --- data/sql/updates/db_world/2021_05_03_01.sql | 29 +++++++++++++++++++ .../rev_1619832333662216000.sql | 4 --- 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_03_01.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619832333662216000.sql diff --git a/data/sql/updates/db_world/2021_05_03_01.sql b/data/sql/updates/db_world/2021_05_03_01.sql new file mode 100644 index 0000000000..c89efc1a42 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_03_01.sql @@ -0,0 +1,29 @@ +-- DB update 2021_05_03_00 -> 2021_05_03_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_03_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_03_00 2021_05_03_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619832333662216000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619832333662216000'); + +UPDATE `gameobject` SET `position_x`=-1657.946, `position_y`=-1781.432, `position_z`=80.497 WHERE `guid`=3799; + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619832333662216000.sql b/data/sql/updates/pending_db_world/rev_1619832333662216000.sql deleted file mode 100644 index c050095a04..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619832333662216000.sql +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619832333662216000'); - -UPDATE `gameobject` SET `position_x`=-1657.946, `position_y`=-1781.432, `position_z`=80.497 WHERE `guid`=3799; - From de23266f04e549e363df6bf89281364d382669a3 Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Mon, 3 May 2021 13:14:22 +0200 Subject: [PATCH 054/108] fix(Core/Battlegrounds): fix Warsong Gulch flags not capping when standing on capture area (#5482) * fix(Core/Battlegrounds): fix Warsong Gulch flags not capping when standing on capture area * Added BG_WS_Trigger enum * add missing brackets --- .../Battlegrounds/Zones/BattlegroundWS.cpp | 40 +++++++++++++++---- .../game/Battlegrounds/Zones/BattlegroundWS.h | 16 ++++++++ 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index 3399feb48d..f7907b7350 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -142,6 +142,26 @@ void BattlegroundWS::RespawnFlagAfterDrop(TeamId teamId) _bgEvents.CancelEvent(BG_WS_EVENT_BOTH_FLAGS_KEPT10); _bgEvents.CancelEvent(BG_WS_EVENT_BOTH_FLAGS_KEPT15); RemoveAssaultAuras(); + + CheckFlagKeeperInArea(teamId == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE); +} + +void BattlegroundWS::CheckFlagKeeperInArea(TeamId teamId) +{ + if (GetStatus() != STATUS_IN_PROGRESS || GetFlagState(teamId) != BG_WS_FLAG_STATE_ON_PLAYER) + { + return; + } + + uint32 triggerId = teamId == TEAM_ALLIANCE ? BG_WS_TRIGGER_HORDE_FLAG_SPAWN : BG_WS_TRIGGER_ALLIANCE_FLAG_SPAWN; + AreaTrigger const* areaTrigger = sObjectMgr->GetAreaTrigger(triggerId); + if (Player* player = ObjectAccessor::GetPlayer(FindBgMap(), GetFlagPickerGUID(teamId))) + { + if (areaTrigger && player->IsInAreaTriggerRadius(areaTrigger)) + { + HandleAreaTrigger(player, triggerId); + } + } } void BattlegroundWS::EventPlayerCapturedFlag(Player* player) @@ -287,6 +307,8 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* gameOb _bgEvents.CancelEvent(BG_WS_EVENT_BOTH_FLAGS_KEPT10); _bgEvents.CancelEvent(BG_WS_EVENT_BOTH_FLAGS_KEPT15); RemoveAssaultAuras(); + + CheckFlagKeeperInArea(TEAM_HORDE); return; } else @@ -318,6 +340,8 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* gameOb _bgEvents.CancelEvent(BG_WS_EVENT_BOTH_FLAGS_KEPT10); _bgEvents.CancelEvent(BG_WS_EVENT_BOTH_FLAGS_KEPT15); RemoveAssaultAuras(); + + CheckFlagKeeperInArea(TEAM_ALLIANCE); return; } else @@ -354,11 +378,11 @@ void BattlegroundWS::HandleAreaTrigger(Player* player, uint32 trigger) switch (trigger) { - case 3646: // Alliance Flag spawn + case BG_WS_TRIGGER_ALLIANCE_FLAG_SPAWN: // Alliance Flag spawn if (GetFlagState(TEAM_ALLIANCE) == BG_WS_FLAG_STATE_ON_BASE && GetFlagPickerGUID(TEAM_HORDE) == player->GetGUID()) EventPlayerCapturedFlag(player); break; - case 3647: // Horde Flag spawn + case BG_WS_TRIGGER_HORDE_FLAG_SPAWN: // Horde Flag spawn if (GetFlagState(TEAM_HORDE) == BG_WS_FLAG_STATE_ON_BASE && GetFlagPickerGUID(TEAM_ALLIANCE) == player->GetGUID()) EventPlayerCapturedFlag(player); break; @@ -366,12 +390,12 @@ void BattlegroundWS::HandleAreaTrigger(Player* player, uint32 trigger) case 3688: // Not used case 4628: // Not used case 4629: // Not used - case 3686: // Alliance elixir of speed spawn - case 3687: // Horde elixir of speed spawn - case 3706: // Alliance elixir of regeneration spawn - case 3708: // Horde elixir of regeneration spawn - case 3707: // Alliance elixir of berserk spawn - case 3709: // Horde elixir of berserk spawn + case BG_WS_TRIGGER_ALLIANCE_ELIXIR_SPEED_SPAWN: // Alliance elixir of speed spawn + case BG_WS_TRIGGER_HORDE_ELIXIR_SPEED_SPAWN: // Horde elixir of speed spawn + case BG_WS_TRIGGER_ALLIANCE_ELIXIR_REGEN_SPAWN: // Alliance elixir of regeneration spawn + case BG_WS_TRIGGER_HORDE_ELIXIR_REGEN_SPAWN: // Horde elixir of regeneration spawn + case BG_WS_TRIGGER_ALLIANCE_ELIXIR_BERSERK_SPAWN: // Alliance elixir of berserk spawn + case BG_WS_TRIGGER_HORDE_ELIXIR_BERSERK_SPAWN: // Horde elixir of berserk spawn break; } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h index 31c55431c8..46f9d91dd5 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.h @@ -135,6 +135,21 @@ enum BG_WS_Objectives WS_EVENT_START_BATTLE = 8563 }; +enum BG_WS_Trigger +{ + BG_WS_TRIGGER_ALLIANCE_FLAG_SPAWN = 3646, + BG_WS_TRIGGER_HORDE_FLAG_SPAWN = 3647, + + BG_WS_TRIGGER_ALLIANCE_ELIXIR_SPEED_SPAWN = 3686, + BG_WS_TRIGGER_HORDE_ELIXIR_SPEED_SPAWN = 3687, + + BG_WS_TRIGGER_ALLIANCE_ELIXIR_REGEN_SPAWN = 3706, + BG_WS_TRIGGER_HORDE_ELIXIR_REGEN_SPAWN = 3708, + + BG_WS_TRIGGER_ALLIANCE_ELIXIR_BERSERK_SPAWN = 3707, + BG_WS_TRIGGER_HORDE_ELIXIR_BERSERK_SPAWN = 3709, +}; + struct BattlegroundWGScore : public BattlegroundScore { BattlegroundWGScore(Player* player): BattlegroundScore(player), FlagCaptures(0), FlagReturns(0) { } @@ -163,6 +178,7 @@ public: void SetFlagPicker(ObjectGuid guid, TeamId teamId) { _flagKeepers[teamId] = guid; } void RespawnFlagAfterDrop(TeamId teamId); uint8 GetFlagState(TeamId teamId) const { return _flagState[teamId]; } + void CheckFlagKeeperInArea(TeamId teamId); /* Battleground Events */ void EventPlayerDroppedFlag(Player* player) override; From 24ed28ff934418cc36c3679fa3b7cacb4e1a31af Mon Sep 17 00:00:00 2001 From: Caishen-cc <81451494+Caishen-cc@users.noreply.github.com> Date: Mon, 3 May 2021 10:53:13 -0400 Subject: [PATCH 055/108] fix(DB/creature_loot_template): Fix loot tables for a few rare npcs 2 (#5452) * fix(DB/creature_loot_template): Fix loot tables for a few rare npcs 2 * codestyle Co-authored-by: otanikotani --- .../rev_1619363905724595186.sql | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619363905724595186.sql diff --git a/data/sql/updates/pending_db_world/rev_1619363905724595186.sql b/data/sql/updates/pending_db_world/rev_1619363905724595186.sql new file mode 100644 index 0000000000..7e42e265d9 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619363905724595186.sql @@ -0,0 +1,62 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619363905724595186'); + +-- select max(entry) from reference_loot_template; 526760, using 526760 + 30 + +-- Create new unified reference loot template containing loot from 24037, 24039, 24041, 24056 +INSERT INTO `reference_loot_template` +SELECT 526790, + rlt.Item, + rlt.Reference, + rlt.Chance, + rlt.QuestRequired, + rlt.LootMode, + rlt.GroupId, + rlt.MinCount, + rlt.MaxCount, + rlt.Comment +FROM (SELECT DISTINCT Item, + Reference, + Chance, + QuestRequired, + LootMode, + GroupId, + MinCount, + MaxCount, + Comment + FROM `reference_loot_template` + WHERE `Entry` IN (24037, 24039, 24041, 24056)) AS rlt; + +-- 763 Lost One Chieftain +-- 2605 Zalas Witherbark +-- 2604 Molok the Crusher +-- 14234 Hayoc +-- 14226 Kaskk +-- 2744 Shadowforge Commander + +-- Remove old references for the above-mentioned rares +DELETE +FROM `creature_loot_template` +WHERE `Reference` IN (24037, 24039, 24041, 24056) + AND `Chance` = 1 + AND `Entry` IN + (763, + 2605, + 2604, + 14234, + 14226, + 2744); + +-- Insert new reference template with 100% chance to guarantee green drop from a rare +INSERT INTO `creature_loot_template` VALUES +(763, 526780, 526790, 100, 0, 1, 1, 1, 1, 'Lost One Chieftain - (ReferenceTable)'), +(2605, 526780, 526790, 100, 0, 1, 1, 1, 1, 'Zalas Witherbark - (ReferenceTable)'), +(2604, 526780, 526790, 100, 0, 1, 1, 1, 1, 'Molok the Crusher - (ReferenceTable)'), +(14234, 526780, 526790, 100, 0, 1, 1, 1, 1, 'Hayoc - (ReferenceTable)'), +(14226, 526780, 526790, 100, 0, 1, 1, 1, 1, 'Kaskk - (ReferenceTable)'), +(2744, 526780, 526790, 100, 0, 1, 1, 1, 1, 'Shadowforge Commander - (ReferenceTable)'); + +-- Extra - cleanup Shadowforge Commander references as those are loot tables of too low level +DELETE +FROM `creature_loot_template` +WHERE `Reference` IN (24068, 24077, 24060) + AND `Entry` = 2744; From b5ba7ba9a1d9e7a5b64148d88ed9d7cea01156a2 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 3 May 2021 14:54:50 +0000 Subject: [PATCH 056/108] chore(DB): import pending SQL update file Referenced commit(s): 24ed28ff934418cc36c3679fa3b7cacb4e1a31af --- .../2021_05_03_02.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619363905724595186.sql => db_world/2021_05_03_02.sql} (73%) diff --git a/data/sql/updates/pending_db_world/rev_1619363905724595186.sql b/data/sql/updates/db_world/2021_05_03_02.sql similarity index 73% rename from data/sql/updates/pending_db_world/rev_1619363905724595186.sql rename to data/sql/updates/db_world/2021_05_03_02.sql index 7e42e265d9..d21de982c2 100644 --- a/data/sql/updates/pending_db_world/rev_1619363905724595186.sql +++ b/data/sql/updates/db_world/2021_05_03_02.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_03_01 -> 2021_05_03_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_03_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_03_01 2021_05_03_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619363905724595186'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619363905724595186'); -- select max(entry) from reference_loot_template; 526760, using 526760 + 30 @@ -60,3 +76,12 @@ DELETE FROM `creature_loot_template` WHERE `Reference` IN (24068, 24077, 24060) AND `Entry` = 2744; + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 292439ca88d1d422031278945aa6aef3182f78b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefano=20Borz=C3=AC?= Date: Mon, 3 May 2021 21:01:36 +0200 Subject: [PATCH 057/108] fix(DB/creature): move location, add path (#5486) --- .../rev_1619468769521968763.sql | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619468769521968763.sql diff --git a/data/sql/updates/pending_db_world/rev_1619468769521968763.sql b/data/sql/updates/pending_db_world/rev_1619468769521968763.sql new file mode 100644 index 0000000000..6a83c3579b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619468769521968763.sql @@ -0,0 +1,56 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619468769521968763'); + +DELETE FROM `creature` WHERE (`id` = 511) AND (`guid` IN (4444)); +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(4444, 511, 0, 0, 0, 1, 1, 828, 1, -11012, -1350.91, 53.658, 5.70029, 300, 0, 0, 787, 0, 2, 0, 0, 0, '', 0); + +DELETE FROM `creature_addon` WHERE (`guid` IN (4444)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `isLarge`, `auras`) VALUES +(4444, 44440, 0, 0, 4097, 0, 0, NULL); + +DELETE FROM `waypoint_data` WHERE `id` = 44440; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(44440,1,-11012,-1350.91,53.658,0,0,0,0,100,0), +(44440,2,-11008.1,-1349.59,53.658,0,0,0,0,100,0), +(44440,3,-11004.2,-1348.28,53.658,0,0,0,0,100,0), +(44440,4,-11002,-1347.52,53.658,0,0,0,0,100,0), +(44440,5,-11002,-1347.52,53.658,0,0,0,0,100,0), +(44440,6,-11007.7,-1347.67,53.908,0,0,0,0,100,0), +(44440,7,-11003.4,-1346.67,53.908,0,0,0,0,100,0), +(44440,8,-11005.2,-1349.33,53.908,0,0,0,0,100,0), +(44440,9,-11004.7,-1350.54,53.658,0,0,0,0,100,0), +(44440,10,-11000.4,-1348.08,53.908,0,0,0,0,100,0), +(44440,11,-11000.5,-1348.3,53.908,0,0,0,0,100,0), +(44440,12,-11003,-1351.5,53.908,0,0,0,0,100,0), +(44440,13,-11001.4,-1349.49,53.908,0,0,0,0,100,0), +(44440,14,-11000.5,-1348.37,53.908,0,0,0,0,100,0), +(44440,15,-10998.5,-1350.32,53.908,0,0,0,0,100,0), +(44440,16,-11003.1,-1351.9,53.908,0,0,0,0,100,0), +(44440,17,-11003.5,-1347.61,53.908,0,0,0,0,100,0), +(44440,18,-11003,-1348.9,53.658,0,0,0,0,100,0), +(44440,19,-11005,-1349.43,53.908,0,0,0,0,100,0), +(44440,20,-11005.3,-1349.96,53.908,0,0,0,0,100,0), +(44440,21,-11008.6,-1352.75,53.908,0,0,0,0,100,0), +(44440,22,-11011.2,-1349.45,53.658,0,0,0,0,100,0), +(44440,23,-11008.1,-1347.37,53.908,0,0,0,0,100,0), +(44440,24,-10999.8,-1347.31,53.908,0,0,0,0,100,0), +(44440,25,-11000.1,-1347.87,53.908,0,0,0,0,100,0), +(44440,26,-11001,-1348.77,53.908,0,0,0,0,100,0), +(44440,27,-11002.3,-1350.48,53.658,0,0,0,0,100,0), +(44440,28,-11007.4,-1355.68,53.9021,0,0,0,0,100,0), +(44440,29,-11008.2,-1349.79,53.908,0,0,0,0,100,0), +(44440,30,-10999.2,-1339.94,53.659,0,0,0,0,100,0), +(44440,31,-10991,-1325.43,51.8941,0,0,0,0,100,0), +(44440,32,-10974.7,-1319.76,52.2399,0,0,0,0,100,0), +(44440,33,-10967.6,-1304.02,52.8301,0,0,0,0,100,0), +(44440,34,-10951.6,-1294.9,53.0798,0,0,0,0,100,0), +(44440,35,-10975.7,-1278.12,52.9166,0,0,0,0,100,0), +(44440,36,-10995.9,-1278.58,52.5571,0,0,0,0,100,0), +(44440,37,-11003.2,-1291.67,53.3562,0,0,0,0,100,0), +(44440,38,-11011.8,-1287.97,52.9221,0,0,0,0,100,0), +(44440,39,-11028.2,-1302.74,52.3512,0,0,0,0,100,0), +(44440,40,-11031.2,-1319.99,53.39,0,0,0,0,100,0), +(44440,41,-11023.3,-1327.44,53.1966,0,0,0,0,100,0), +(44440,42,-11012.7,-1317.23,53.104,0,0,0,0,100,0), +(44440,43,-10992.5,-1326.81,51.8687,0,0,0,0,100,0), +(44440,44,-10999.9,-1342.19,53.6589,0,0,0,0,100,0); From 82c80b626f030af4dd8d4e8a49cd24f98e550037 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 3 May 2021 19:09:06 +0000 Subject: [PATCH 058/108] chore(DB): import pending SQL update file Referenced commit(s): 292439ca88d1d422031278945aa6aef3182f78b0 --- .../2021_05_03_03.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619468769521968763.sql => db_world/2021_05_03_03.sql} (81%) diff --git a/data/sql/updates/pending_db_world/rev_1619468769521968763.sql b/data/sql/updates/db_world/2021_05_03_03.sql similarity index 81% rename from data/sql/updates/pending_db_world/rev_1619468769521968763.sql rename to data/sql/updates/db_world/2021_05_03_03.sql index 6a83c3579b..7fbb1ac91f 100644 --- a/data/sql/updates/pending_db_world/rev_1619468769521968763.sql +++ b/data/sql/updates/db_world/2021_05_03_03.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_03_02 -> 2021_05_03_03 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_03_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_03_02 2021_05_03_03 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619468769521968763'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619468769521968763'); DELETE FROM `creature` WHERE (`id` = 511) AND (`guid` IN (4444)); @@ -54,3 +70,12 @@ INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z` (44440,42,-11012.7,-1317.23,53.104,0,0,0,0,100,0), (44440,43,-10992.5,-1326.81,51.8687,0,0,0,0,100,0), (44440,44,-10999.9,-1342.19,53.6589,0,0,0,0,100,0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 1d919f8448e185a34b4f7451fc4b0350722a5a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefano=20Borz=C3=AC?= Date: Tue, 4 May 2021 00:18:04 +0200 Subject: [PATCH 059/108] fix(DB/Gameobject): duplicate or wrong spawns (#5258) * fix(DB/Gameobject): duplicate or wrong spawns * Update rev_1618177302172059302.sql --- .../updates/pending_db_world/rev_1618177302172059302.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1618177302172059302.sql diff --git a/data/sql/updates/pending_db_world/rev_1618177302172059302.sql b/data/sql/updates/pending_db_world/rev_1618177302172059302.sql new file mode 100644 index 0000000000..019e231526 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1618177302172059302.sql @@ -0,0 +1,9 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618177302172059302'); + +DELETE FROM `gameobject` WHERE `id`=2046 AND `guid`=8871; +DELETE FROM `pool_gameobject` WHERE `guid` IN (8871); + + +DELETE FROM `gameobject` WHERE (`id` = 1623) AND (`guid` IN (4214)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES +(4214, 1623, 0, 0, 0, 1, 1, -581.555237, -2028.706299, 69.566879, 4.984, 0, 0, 0, 0, 60, 100, 1, '', 0); From 6fd37810ec077b233bacab0bdedcf8e284d7a587 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 4 May 2021 00:02:41 +0000 Subject: [PATCH 060/108] chore(DB): import pending SQL update file Referenced commit(s): 1d919f8448e185a34b4f7451fc4b0350722a5a93 --- data/sql/updates/db_world/2021_05_04_00.sql | 34 +++++++++++++++++++ .../rev_1618177302172059302.sql | 9 ----- 2 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_04_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1618177302172059302.sql diff --git a/data/sql/updates/db_world/2021_05_04_00.sql b/data/sql/updates/db_world/2021_05_04_00.sql new file mode 100644 index 0000000000..ffce28927f --- /dev/null +++ b/data/sql/updates/db_world/2021_05_04_00.sql @@ -0,0 +1,34 @@ +-- DB update 2021_05_03_03 -> 2021_05_04_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_03_03'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_03_03 2021_05_04_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1618177302172059302'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618177302172059302'); + +DELETE FROM `gameobject` WHERE `id`=2046 AND `guid`=8871; +DELETE FROM `pool_gameobject` WHERE `guid` IN (8871); + + +DELETE FROM `gameobject` WHERE (`id` = 1623) AND (`guid` IN (4214)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES +(4214, 1623, 0, 0, 0, 1, 1, -581.555237, -2028.706299, 69.566879, 4.984, 0, 0, 0, 0, 60, 100, 1, '', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1618177302172059302.sql b/data/sql/updates/pending_db_world/rev_1618177302172059302.sql deleted file mode 100644 index 019e231526..0000000000 --- a/data/sql/updates/pending_db_world/rev_1618177302172059302.sql +++ /dev/null @@ -1,9 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618177302172059302'); - -DELETE FROM `gameobject` WHERE `id`=2046 AND `guid`=8871; -DELETE FROM `pool_gameobject` WHERE `guid` IN (8871); - - -DELETE FROM `gameobject` WHERE (`id` = 1623) AND (`guid` IN (4214)); -INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES -(4214, 1623, 0, 0, 0, 1, 1, -581.555237, -2028.706299, 69.566879, 4.984, 0, 0, 0, 0, 60, 100, 1, '', 0); From 91e90dd4dab87f3d692f161d8e1972defba9fa82 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Mon, 3 May 2021 19:09:07 -0600 Subject: [PATCH 061/108] fix(DB/gameobject): Adjust XYZ pos for multiple mining nodes in STV (#5616) --- .../updates/pending_db_world/rev_1620068494045251800.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1620068494045251800.sql diff --git a/data/sql/updates/pending_db_world/rev_1620068494045251800.sql b/data/sql/updates/pending_db_world/rev_1620068494045251800.sql new file mode 100644 index 0000000000..0e84a4a0a5 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1620068494045251800.sql @@ -0,0 +1,6 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620068494045251800'); + +UPDATE `gameobject` SET `position_x`=-11422.49, `position_y`=11.69, `position_z`=45.235 WHERE `guid`=34036; +UPDATE `gameobject` SET `position_x`=-11547.95, `position_y`=-178.38, `position_z`=15.896 WHERE `guid`=65255; +UPDATE `gameobject` SET `position_x`=-12039.91, `position_y`=-289.09, `position_z`=25.124 WHERE `guid`=11969; + From f4b5c28fd4379f839dc95605bef45dd3fbdf1a73 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 4 May 2021 01:10:34 +0000 Subject: [PATCH 062/108] chore(DB): import pending SQL update file Referenced commit(s): 91e90dd4dab87f3d692f161d8e1972defba9fa82 --- data/sql/updates/db_world/2021_05_04_01.sql | 31 +++++++++++++++++++ .../rev_1620068494045251800.sql | 6 ---- 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_04_01.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1620068494045251800.sql diff --git a/data/sql/updates/db_world/2021_05_04_01.sql b/data/sql/updates/db_world/2021_05_04_01.sql new file mode 100644 index 0000000000..75fbcc0ec9 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_04_01.sql @@ -0,0 +1,31 @@ +-- DB update 2021_05_04_00 -> 2021_05_04_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_00 2021_05_04_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1620068494045251800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620068494045251800'); + +UPDATE `gameobject` SET `position_x`=-11422.49, `position_y`=11.69, `position_z`=45.235 WHERE `guid`=34036; +UPDATE `gameobject` SET `position_x`=-11547.95, `position_y`=-178.38, `position_z`=15.896 WHERE `guid`=65255; +UPDATE `gameobject` SET `position_x`=-12039.91, `position_y`=-289.09, `position_z`=25.124 WHERE `guid`=11969; + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1620068494045251800.sql b/data/sql/updates/pending_db_world/rev_1620068494045251800.sql deleted file mode 100644 index 0e84a4a0a5..0000000000 --- a/data/sql/updates/pending_db_world/rev_1620068494045251800.sql +++ /dev/null @@ -1,6 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620068494045251800'); - -UPDATE `gameobject` SET `position_x`=-11422.49, `position_y`=11.69, `position_z`=45.235 WHERE `guid`=34036; -UPDATE `gameobject` SET `position_x`=-11547.95, `position_y`=-178.38, `position_z`=15.896 WHERE `guid`=65255; -UPDATE `gameobject` SET `position_x`=-12039.91, `position_y`=-289.09, `position_z`=25.124 WHERE `guid`=11969; - From f96c52813e6dfc12a56e7b602dcf9b6e1b73b235 Mon Sep 17 00:00:00 2001 From: KiK0 Date: Tue, 4 May 2021 01:32:41 -0700 Subject: [PATCH 063/108] feat(DB/Locales):missing esES & esMX quest locales (#5483) --- .../rev_1619464428492037100.sql | 369 ++++++++++++++++++ .../rev_1619465221289722800.sql | 363 +++++++++++++++++ .../rev_1619465312157331200.sql | 366 +++++++++++++++++ 3 files changed, 1098 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619464428492037100.sql create mode 100644 data/sql/updates/pending_db_world/rev_1619465221289722800.sql create mode 100644 data/sql/updates/pending_db_world/rev_1619465312157331200.sql diff --git a/data/sql/updates/pending_db_world/rev_1619464428492037100.sql b/data/sql/updates/pending_db_world/rev_1619464428492037100.sql new file mode 100644 index 0000000000..95e6c00beb --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619464428492037100.sql @@ -0,0 +1,369 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619464428492037100'); + +-- 8823 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8823 +SET @ID := 8823; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Orgrimmar. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Orgrimmar. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8824 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8824 +SET @ID := 8824; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Entrañas. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Entrañas. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8825 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8825 +SET @ID := 8825; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Cima del Trueno. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Cima del Trueno. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8826 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8826 +SET @ID := 8826; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en la tribu Lanza Negra. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en la tribu Lanza Negra. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- Regalos del invierno +-- 8827, 8828 +-- https://es.wowhead.com/quest=8827 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8827, 8828) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8827, 'esES', '¡Oh, hola! Solo puedes haber venido por una razón: para abrir tus regalos del Festival de Invierno.$B$BNo, no te preocupes, el Gran Padre Invierno no se ha olvidado de su $r $c $gfavorito:favorita;. Mira debajo del árbol y encontrarás tus regalos.$B$BEn estos días de generosidad, ¿no crees que a tus amigos les gustaría tener alguno de los excelentes productos de los Pastos de Bosquehumeante?', 0), +(8828, 'esES', '¡Oh, hola! Solo puedes haber venido por una razón: para abrir tus regalos del Festival de Invierno.$B$BNo, no te preocupes, el Gran Padre Invierno no se ha olvidado de su $r $c $gfavorito:favorita;. Mira debajo del árbol y encontrarás tus regalos.$B$BEn estos días de generosidad, ¿no crees que a tus amigos les gustaría tener alguno de los excelentes productos de los Pastos de Bosquehumeante?', 0), +(8827, 'esMX', '¡Oh, hola! Solo puedes haber venido por una razón: para abrir tus regalos del Festival de Invierno.$B$BNo, no te preocupes, el Gran Padre Invierno no se ha olvidado de su $r $c $gfavorito:favorita;. Mira debajo del árbol y encontrarás tus regalos.$B$BEn estos días de generosidad, ¿no crees que a tus amigos les gustaría tener alguno de los excelentes productos de los Pastos de Bosquehumeante?', 0), +(8828, 'esMX', '¡Oh, hola! Solo puedes haber venido por una razón: para abrir tus regalos del Festival de Invierno.$B$BNo, no te preocupes, el Gran Padre Invierno no se ha olvidado de su $r $c $gfavorito:favorita;. Mira debajo del árbol y encontrarás tus regalos.$B$BEn estos días de generosidad, ¿no crees que a tus amigos les gustaría tener alguno de los excelentes productos de los Pastos de Bosquehumeante?', 0); +-- 8829 El último engaño +-- https://es.classic.wowhead.com/quest=8829 +SET @ID := 8829; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, creo que esto será suficiente. Lo confeccionaré con los colores usados por los emisarios del Martillo Crepuscular. Rezo a Elune para que mis habilidades puedan engañar a nuestros enemigos una vez más.$B$BPero no te preocupes por eso, has hecho tu parte y por eso serás $grecompensado:recompensada; apropiadamente. Eres $gun aliado:una aliada; leal y $gdigno:digna;, $n.', 0), +(@ID, 'esMX', 'Sí, creo que esto será suficiente. Lo confeccionaré con los colores usados por los emisarios del Martillo Crepuscular. Rezo a Elune para que mis habilidades puedan engañar a nuestros enemigos una vez más.$B$BPero no te preocupes por eso, has hecho tu parte y por eso serás $grecompensado:recompensada; apropiadamente. Eres $gun aliado:una aliada; leal y $gdigno:digna;, $n.', 0); +-- 8830 Un sello de honor +-- https://es.classic.wowhead.com/quest=8830 +SET @ID := 8830; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Para aquellos aventureros que solo tengan un sello de honor, lo cambiaré por una pequeña cantidad de reconocimiento con Ventormenta.$B$BTen en cuenta que es mejor entregar una pila de diez sellos a la vez; tus esfuerzos recibirán un mayor reconocimiento al hacerlo. Ofrecemos un intercambio de sello único como servicio para aquellos que no tienen suficiente para una pila completa de diez.$B$BDicho esto, estoy lista para ayudarte si aún desea entregar un solo sello.', 0), +(@ID, 'esMX', 'Para aquellos aventureros que solo tengan un sello de honor, lo cambiaré por una pequeña cantidad de reconocimiento con Ventormenta.$B$BTen en cuenta que es mejor entregar una pila de diez sellos a la vez; tus esfuerzos recibirán un mayor reconocimiento al hacerlo. Ofrecemos un intercambio de sello único como servicio para aquellos que no tienen suficiente para una pila completa de diez.$B$BDicho esto, estoy lista para ayudarte si aún desea entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus acciones se han guardado en los registros y se te reconoce debidamente por tus esfuerzos. Sigue con el buen trabajo, $n.$B$BSi tienes más sellos para entregar, entonces puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus acciones se han guardado en los registros y se te reconoce debidamente por tus esfuerzos. Sigue con el buen trabajo, $n.$B$BSi tienes más sellos para entregar, entonces puedo seguir ayudándote.', 0); +-- 8831 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8831 +SET @ID := 8831; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Ventormenta. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Ventormenta. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8832 Un sello de honor +-- https://es.classic.wowhead.com/quest=8832 +SET @ID := 8832; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Entrañas.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Entrañas.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8833 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8833 +SET @ID := 8833; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Entrañas. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Entrañas. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8834 Un sello de honor +-- https://es.classic.wowhead.com/quest=8834 +SET @ID := 8834; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Forjaz.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Forjaz.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8835 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8835 +SET @ID := 8835; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Forjaz. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Forjaz. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8836 Un sello de honor +-- https://es.classic.wowhead.com/quest=8836 +SET @ID := 8836; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Darnassus.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Darnassus.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8837 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8837 +SET @ID := 8837; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Darnassus. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Darnassus. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8838 Un sello de honor +-- https://es.classic.wowhead.com/quest=8838 +SET @ID := 8838; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con los Exiliados de Gnomeregan.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con los Exiliados de Gnomeregan.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8839 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8839 +SET @ID := 8839; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas entre los Exiliados de Gnomeregan. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas entre los Exiliados de Gnomeregan. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8840 Un sello de honor +-- https://es.classic.wowhead.com/quest=8840 +SET @ID := 8840; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Orgrimmar.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Orgrimmar.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8841 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8841 +SET @ID := 8841; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Orgrimmar. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Orgrimmar. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8842 Un sello de honor +-- https://es.classic.wowhead.com/quest=8842 +SET @ID := 8842; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Cima del Trueno.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Cima del Trueno.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8843 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8843 +SET @ID := 8843; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Cima del Trueno. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Cima del Trueno. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8844 Un sello de honor +-- https://es.classic.wowhead.com/quest=8844 +SET @ID := 8844; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con la tribu Lanza Negra.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con la tribu Lanza Negra.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8845 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8845 +SET @ID := 8845; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en la tribu Lanza Negra. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en la tribu Lanza Negra. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son los aventureros como tú, $n, los que marcan la diferencia.$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8857 Los secretos de los Colosos: Ashi +-- https://es.classic.wowhead.com/quest=8857 +SET @ID := 8857; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Sí? ¿Qué llevas ahí?', 0), +(@ID, 'esMX', '¿Sí? ¿Qué llevas ahí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Qué magnífica coraza! ¡Buen trabajo!', 0), +(@ID, 'esMX', '¡Qué magnífica coraza! ¡Buen trabajo!', 0); +-- 8858 Los secretos de los Colosos: Regal +-- https://es.classic.wowhead.com/quest=8858 +SET @ID := 8858; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Mmm...', 0), +(@ID, 'esMX', 'Mmm...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Magnífico; con esto se podría crear una armadura excelente. Ten, la recompensa prometida.', 0), +(@ID, 'esMX', 'Magnífico; con esto se podría crear una armadura excelente. Ten, la recompensa prometida.', 0); +-- 8859 Los secretos de los Colosos: Zora +-- https://es.classic.wowhead.com/quest=8859 +SET @ID := 8859; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eso que llevas parece pesado.', 0), +(@ID, 'esMX', 'Eso que llevas parece pesado.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Justo a tiempo! ¡Buen trabajo!', 0), +(@ID, 'esMX', '¡Justo a tiempo! ¡Buen trabajo!', 0); +-- 8861 ¡Las fiestas de Año Nuevo! +-- https://es.classic.wowhead.com/quest=8861 +SET @ID := 8861; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buen día, $n! ¿Viniste a Cima del Trueno para nuestras celebraciones? ¿O estás aquí para descansar entre cacerías?', 0), +(@ID, 'esMX', '¡Buen día, $n! ¿Viniste a Cima del Trueno para nuestras celebraciones? ¿O estás aquí para descansar entre cacerías?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Oh muy bien! ¡Estos suministros ayudarán a alimentar a nuestra gente para celebrar el año nuevo!$B$BGracias, $n. Estoy en deuda contigo. Por favor, toma estas monedas... y sigue mi consejo: bebe con entusiasmo de los barriles de afuera y únete a nuestros juerguistas en un baile de celebración.', 0), +(@ID, 'esMX', '¡Oh muy bien! ¡Estos suministros ayudarán a alimentar a nuestra gente para celebrar el año nuevo!$B$BGracias, $n. Estoy en deuda contigo. Por favor, toma estas monedas... y sigue mi consejo: bebe con entusiasmo de los barriles de afuera y únete a nuestros juerguistas en un baile de celebración.', 0); +-- 8862 Vela de Elune +-- https://es.classic.wowhead.com/quest=8862 +SET @ID := 8862; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'La vela de Elune es un artefacto de gran reverencia para los discípulos del Festival Lunar. ¡Guardada dentro de la vela está la verdadera luz de la luna, lista para ser desatada!$B$BEsta luz es inofensiva para la mayoría de las criaturas, pero encontrarás que Omen y sus secuaces se queman y deslumbran con ella.', 0), +(@ID, 'esMX', 'La vela de Elune es un artefacto de gran reverencia para los discípulos del Festival Lunar. ¡Guardada dentro de la vela está la verdadera luz de la luna, lista para ser desatada!$B$BEsta luz es inofensiva para la mayoría de las criaturas, pero encontrarás que Omen y sus secuaces se queman y deslumbran con ella.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, acepto estas monedas de linaje. Por favor, llévate la vela de Elune con mi bendición. Además, disfruta de estos fuegos artificiales de cortesía.$B$BQue tu Festival Lunar sea jubiloso y lleno de alegría, $n.$B$BY si eliges enfrentarte a Omen y sus secuaces, encontrarás la vela de Elune bastante útil...', 0), +(@ID, 'esMX', 'Muy bien, acepto estas monedas de linaje. Por favor, llévate la vela de Elune con mi bendición. Además, disfruta de estos fuegos artificiales de cortesía.$B$BQue tu Festival Lunar sea jubiloso y lleno de alegría, $n.$B$BY si eliges enfrentarte a Omen y sus secuaces, encontrarás la vela de Elune bastante útil...', 0); +-- 8863 Albóndigas festivas +-- https://es.classic.wowhead.com/quest=8863 +SET @ID := 8863; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente, disfruta de estas albóndigas con mis cumplidos. Si bien no son más que una pequeña muestra de agradecimiento por el honor que te has traído a ti $gmismo:misma; a través de tus acciones, creo que las disfrutarás de todos modos.$B$BSi tienes más monedas de linaje, estoy listo para ofrecerte una amplia gama de artículos a cambio.', 0), +(@ID, 'esMX', 'Excelente, disfruta de estas albóndigas con mis cumplidos. Si bien no son más que una pequeña muestra de agradecimiento por el honor que te has traído a ti $gmismo:misma; a través de tus acciones, creo que las disfrutarás de todos modos.$B$BSi tienes más monedas de linaje, estoy listo para ofrecerte una amplia gama de artículos a cambio.', 0); +-- 8864 Vestidos para el Festival Lunar +-- https://es.classic.wowhead.com/quest=8864 +SET @ID := 8864; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tengo una selección de vestidos que te pueden interesar. Estos vestidos se han usado en el pasado durante el Festival Lunar, y la selección que tengo hoy es quizás la mejor que he visto. Cada uno está hecho a mano únicamente con los componentes más finos y suaves.$B$BA cambio de algunas monedas de linaje, te dejaré elegir uno de los tres estilos que tengo y lo podrás conservar como tuyo. ¿Esto es aceptable para ti?', 0), +(@ID, 'esMX', 'Tengo una selección de vestidos que te pueden interesar. Estos vestidos se han usado en el pasado durante el Festival Lunar, y la selección que tengo hoy es quizás la mejor que he visto. Cada uno está hecho a mano únicamente con los componentes más finos y suaves.$B$BA cambio de algunas monedas de linaje, te dejaré elegir uno de los tres estilos que tengo y lo podrás conservar como tuyo. ¿Esto es aceptable para ti?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, acepto estas monedas de linaje. Por favor, llévate tu vestido con mi bendición. Además, disfruta de estos fuegos artificiales de cortesía.$B$BComo has honrado a tus mayores, me honras a mí con tu mera presencia. Gracias, y que tu Festival Lunar sea feliz.', 0), +(@ID, 'esMX', 'Muy bien, acepto estas monedas de linaje. Por favor, llévate tu vestido con mi bendición. Además, disfruta de estos fuegos artificiales de cortesía.$B$BComo has honrado a tus mayores, me honras a mí con tu mera presencia. Gracias, y que tu Festival Lunar sea feliz.', 0); +-- 8865 Trajes pantalón para el Festival Lunar +-- https://es.classic.wowhead.com/quest=8865 +SET @ID := 8865; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me complace informarte que tengo una excelente selección de pantalones festivos disponibles para que los poseas... pero solo a cambio de monedas de linaje. Si la moda es importante para ti, ¡esto es lo que estás buscando! Te aseguro que no encontrarás pantalones como estos en ningún otro lugar.$B$BA cambio de algunas monedas de linaje, te dejaré elegir uno de los tres estilos que tengo y será tuyo. ¿Esto es aceptable para ti?', 0), +(@ID, 'esMX', 'Me complace informarte que tengo una excelente selección de pantalones festivos disponibles para que los poseas... pero solo a cambio de monedas de linaje. Si la moda es importante para ti, ¡esto es lo que estás buscando! Te aseguro que no encontrarás pantalones como estos en ningún otro lugar.$B$BA cambio de algunas monedas de linaje, te dejaré elegir uno de los tres estilos que tengo y será tuyo. ¿Esto es aceptable para ti?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, acepto estas monedas de linaje. Por favor, llévate tu pantalón con mi bendición. Además, disfruta de estos fuegos artificiales de cortesía.$B$BSi tienes más monedas de linaje para comerciar, vuelve a hablar conmigo. Ofreceré varios artículos durante todo el Festival Lunar.', 0), +(@ID, 'esMX', 'Muy bien, acepto estas monedas de linaje. Por favor, llévate tu pantalón con mi bendición. Además, disfruta de estos fuegos artificiales de cortesía.$B$BSi tienes más monedas de linaje para comerciar, vuelve a hablar conmigo. Ofreceré varios artículos durante todo el Festival Lunar.', 0); +-- 8866 Barbabronce el Ancestro +-- https://es.wowhead.com/quest=8866 +SET @ID := 8866; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(@ID, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0); +-- 8867 Fuegos artificiales lunares +-- https://es.wowhead.com/quest=8867 +SET @ID := 8867; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Fuegos artificiales lunares disparados', `ObjectiveText2` = 'Cohetes lunares disparados', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Encontraste los lanzacohetes, $n?', 0), +(@ID, 'esMX', '¿Encontraste los lanzacohetes, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bien hecho, $n.$B$BAhora que ya estás metido en el ambiente, ¿por qué no aceptas esta invitación al Festival Lunar?$B$BEs una celebración fantástica si tienes algo de tiempo. Hay comida, bebida, se cuentan cuentos y... claro, ¡hay más fuegos artificiales!$B$BAbre la invitación cuando estés dentro del círculo de La Gran Luz de Luna y serás transportado directamente al Claro de la Luna.', 0), +(@ID, 'esMX', 'Bien hecho, $n.$B$BAhora que ya estás metido en el ambiente, ¿por qué no aceptas esta invitación al Festival Lunar?$B$BEs una celebración fantástica si tienes algo de tiempo. Hay comida, bebida, se cuentan cuentos y... claro, ¡hay más fuegos artificiales!$B$BAbre la invitación cuando estés dentro del círculo de La Gran Luz de Luna y serás transportado directamente al Claro de la Luna.', 0); +-- 8868 La bendición de Elune +-- https://es.wowhead.com/quest=8868 +SET @ID := 8868; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $n. Augurio no puede morir porque tiene la bendición de Elune, pero al menos reposará tranquilo un año más.$B$BBrindemos por el poder de Augurio, por el tuyo, $n, y porque has dado un poco de paz al héroe.', 0), +(@ID, 'esMX', 'Buen trabajo, $n. Augurio no puede morir porque tiene la bendición de Elune, pero al menos reposará tranquilo un año más.$B$BBrindemos por el poder de Augurio, por el tuyo, $n, y porque has dado un poco de paz al héroe.', 0); +-- El Festival Lunar +-- 8870, 8871, 8872, 8873, 8874, 8875 +-- https://es.classic.wowhead.com/quest=8870 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8870, 8871, 8872, 8873, 8874, 8875) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8870, 'esES', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8871, 'esES', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8872, 'esES', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8873, 'esES', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8874, 'esES', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8875, 'esES', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8870, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8871, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8872, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8873, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8874, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), +(8875, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0); diff --git a/data/sql/updates/pending_db_world/rev_1619465221289722800.sql b/data/sql/updates/pending_db_world/rev_1619465221289722800.sql new file mode 100644 index 0000000000..f01ec5c60b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619465221289722800.sql @@ -0,0 +1,363 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619465221289722800'); + +-- 8778 ¡La Brigada de Forjaz necesita explosivos! +-- https://es.classic.wowhead.com/quest=8778 +SET @ID := 8778; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Ah, sí! ¡Estos serán útiles! ¡Muchas gracias, $n!', 0), +(@ID, 'esMX', '¡Ah, sí! ¡Estos serán útiles! ¡Muchas gracias, $n!', 0); +-- Materiales de visión +-- 8779, 8807 +-- https://es.classic.wowhead.com/quest=8779 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8779, 8807) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8779, 'esES', '¿Tienes algo para mí, $n?', 0), +(8807, 'esES', '¿Tienes algo para mí, $n?', 0), +(8779, 'esMX', '¿Tienes algo para mí, $n?', 0), +(8807, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8779, 8807) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8779, 'esES', 'Pues sí... ¡serán de gran ayuda! Estos materiales son muy difíciles de conseguir en el desierto, $n. Gracias.', 0), +(8807, 'esES', 'Pues sí... ¡serán de gran ayuda! Estos materiales son muy difíciles de conseguir en el desierto, $n. Gracias.', 0), +(8779, 'esMX', 'Pues sí... ¡serán de gran ayuda! Estos materiales son muy difíciles de conseguir en el desierto, $n. Gracias.', 0), +(8807, 'esMX', 'Pues sí... ¡serán de gran ayuda! Estos materiales son muy difíciles de conseguir en el desierto, $n. Gracias.', 0); +-- 8780 Refuerzos para armadura para el campo de batalla +-- https://es.classic.wowhead.com/quest=8780 +SET @ID := 8780; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias, se las daré a los muchachos.', 0), +(@ID, 'esMX', 'Gracias, se las daré a los muchachos.', 0); +-- 8781 Armas para el campo de batalla +-- https://es.classic.wowhead.com/quest=8781 +SET @ID := 8781; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Oh, excelente! Ya no tendré que escuchar quejas sobre cuchillas desafiladas. Gracias, $n.', 0), +(@ID, 'esMX', '¡Oh, excelente! Ya no tendré que escuchar quejas sobre cuchillas desafiladas. Gracias, $n.', 0); +-- 8782 Suministros para uniformes +-- https://es.classic.wowhead.com/quest=8782 +SET @ID := 8782; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, los necesitábamos. Se agradece tu trabajo, $n.', 0), +(@ID, 'esMX', 'Ah, los necesitábamos. Se agradece tu trabajo, $n.', 0); +-- Materiales encantados +-- 8783, 8809 +-- https://es.classic.wowhead.com/quest=8783 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8783, 8809) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8783, 'esES', '¿Tienes algo para mí, $n?', 0), +(8809, 'esES', '¿Tienes algo para mí, $n?', 0), +(8783, 'esMX', '¿Tienes algo para mí, $n?', 0), +(8809, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8783, 8809) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8783, 'esES', 'Ah, sí. Estos materiales son de excelente calidad. Gracias, $n.', 0), +(8809, 'esES', 'Ah, sí. Estos materiales son de excelente calidad. Gracias, $n.', 0), +(8783, 'esMX', 'Ah, sí. Estos materiales son de excelente calidad. Gracias, $n.', 0), +(8809, 'esMX', 'Ah, sí. Estos materiales son de excelente calidad. Gracias, $n.', 0); +-- 8784 Los secretos de los qiraji +-- https://es.classic.wowhead.com/quest=8784 +SET @ID := 8784; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Estás brillante! Sé lo que eso significa...', 0), +(@ID, 'esMX', '¡Estás brillante! Sé lo que eso significa...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un hallazgo extraordinario, $n. ¡Sencillamente maravilloso! Con esto seguro que lograremos penetrar en las perversas mentes de nuestro enemigo.', 0), +(@ID, 'esMX', 'Un hallazgo extraordinario, $n. ¡Sencillamente maravilloso! Con esto seguro que lograremos penetrar en las perversas mentes de nuestro enemigo.', 0); +-- 8785 ¡La Legión de Orgrimmar necesita mojo! +-- https://es.classic.wowhead.com/quest=8785 +SET @ID := 8785; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes mis materiales, $n?', 0), +(@ID, 'esMX', '¿Tienes mis materiales, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, sí. ¡Justo lo que necesitaba! Haré un brebaje especial con esto. ¡Al silítido no le gustará nada!', 0), +(@ID, 'esMX', 'Ah, sí. ¡Justo lo que necesitaba! Haré un brebaje especial con esto. ¡Al silítido no le gustará nada!', 0); +-- 8786 Armas para el campo de batalla +-- https://es.classic.wowhead.com/quest=8786 +SET @ID := 8786; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo. Estábamos escasos de esto, $n.', 0), +(@ID, 'esMX', 'Excelente trabajo. Estábamos escasos de esto, $n.', 0); +-- 8787 Refuerzos para armadura para el campo de batalla +-- https://es.classic.wowhead.com/quest=8787 +SET @ID := 8787; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, sí... se los distribuiré a las tropas, $n. ¡La Legión de Orgrimmar te lo agradece!', 0), +(@ID, 'esMX', 'Ah, sí... se los distribuiré a las tropas, $n. ¡La Legión de Orgrimmar te lo agradece!', 0); +-- 8789 Armamentos imperiales qiraji +-- https://es.classic.wowhead.com/quest=8789 +SET @ID := 8789; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Busca lo que te he pedido. Te convertirás en algo más grande que la suma de tus partes, $gcampeón:campeona;.', 0), +(@ID, 'esMX', 'Busca lo que te he pedido. Te convertirás en algo más grande que la suma de tus partes, $gcampeón:campeona;.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Imbuidas de elementium, estas armas atravesarán a los qiraji y a su dios con increíble facilidad.', 0), +(@ID, 'esMX', 'Imbuidas de elementium, estas armas atravesarán a los qiraji y a su dios con increíble facilidad.', 0); +-- 8790 Atavío imperial qiraji +-- https://es.classic.wowhead.com/quest=8790 +SET @ID := 8790; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los abatirás y nos liberarás de estas cadenas.', 0), +(@ID, 'esMX', 'Los abatirás y nos liberarás de estas cadenas.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Usa bien el objeto, $n. Haz que sientan el dolor que tanto les gusta infligir a los demás.', 0), +(@ID, 'esMX', 'Usa bien el objeto, $n. Haz que sientan el dolor que tanto les gusta infligir a los demás.', 0); +-- 8791 La caída de Osirio +-- https://es.classic.wowhead.com/quest=8791 +SET @ID := 8791; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, $n, ¡has regresado! Y $genterito:enterita;, si se me permite añadir. ¿Qué nuevas traes de Ahn\'Qiraj?', 0), +(@ID, 'esMX', 'Ah, $n, ¡has regresado! Y $genterito:enterita;, si se me permite añadir. ¿Qué nuevas traes de Ahn\'Qiraj?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Recibe mis más elevados elogios y el objeto de poder que prefieras, $n. Le has prestado un gran servicio al pueblo de Kalimdor.', 0), +(@ID, 'esMX', 'Recibe mis más elevados elogios y el objeto de poder que prefieras, $n. Le has prestado un gran servicio al pueblo de Kalimdor.', 0); +-- ¡La Horda te necesita! +-- 8792, 8793, 8794, 10500 +-- https://es.classic.wowhead.com/quest=8792 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8792, 8793, 8794, 10500) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8792, 'esES', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(8793, 'esES', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(8794, 'esES', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(10500, 'esES', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(8792, 'esMX', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(8793, 'esMX', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(8794, 'esMX', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0), +(10500, 'esMX', '¡Throm\'ka, $c! Es bueno ver a tantos miembros de la Horda, como tú, $n, salir a prestar tu apoyo para sentar las bases de la próxima Guerra de Ahn\'Qiraj. El esfuerzo aquí garantizará la victoria contra los silítidos y sus malvados amos escondidos dentro de Ahn\'Qiraj.$B$BAhora que estás aquí, asegúrese de hablar con los diversos recolectores y ofrecer tu ayuda para reunir los materiales que necesitan.', 0); +-- 8798 Un yeti propio +-- https://es.classic.wowhead.com/quest=8798 +SET @ID := 8798; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Vaya! ¡¿Sabes qué?! ¡Tú también eres $gingeniero:ingeniera;! Como me ayudaste a darles una lección a mis amigos, ¡voy a enseñarte a hacer tu propio yeti mecánico! ¡Ahora la diversión no va a parar nunca y podrás asustar a quien quieras! Siempre que puedas conseguir los componentes, claro.$B$B¿Qué dices, $n? ¿Quieres aprender los secretos para hacer un yeti mecánico?', 0), +(@ID, 'esMX', '¡Vaya! ¡¿Sabes qué?! ¡Tú también eres $gingeniero:ingeniera;! Como me ayudaste a darles una lección a mis amigos, ¡voy a enseñarte a hacer tu propio yeti mecánico! ¡Ahora la diversión no va a parar nunca y podrás asustar a quien quieras! Siempre que puedas conseguir los componentes, claro.$B$B¿Qué dices, $n? ¿Quieres aprender los secretos para hacer un yeti mecánico?', 0); +-- 8800 Equipamiento de Cenarius +-- https://es.classic.wowhead.com/quest=8800 +SET @ID := 8800; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Kaldon te ha enviado? Muy bien, veamos lo que podemos hacer por ti.', 0), +(@ID, 'esMX', '¿Kaldon te ha enviado? Muy bien, veamos lo que podemos hacer por ti.', 0); +-- 8801 El legado de C'Thun +-- https://es.classic.wowhead.com/quest=8801 +SET @ID := 8801; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B$gSeñor:Señona; $n, nos has liberado de sus garras.', 0), +(@ID, 'esMX', '$B$B$gSeñor:Señona; $n, nos has liberado de sus garras.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Abandonaremos este lugar, $gseñor:señora; $n, cuando estemos seguros de que el mal que lo impregna ha quedado completamente destruido. Tu viaje de leyenda casi toca a su fin.', 0), +(@ID, 'esMX', 'Abandonaremos este lugar, $gseñor:señora; $n, cuando estemos seguros de que el mal que lo impregna ha quedado completamente destruido. Tu viaje de leyenda casi toca a su fin.', 0); +-- 8802 La salvación de Kalimdor +-- https://es.classic.wowhead.com/quest=8802 +SET @ID := 8802; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡$gSeñor:Señora; $n! Se acabó...', 0), +(@ID, 'esMX', '¡$gSeñor:Señora; $n! Se acabó...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El Maestro ha dejado esto para ti, $gCampeón:Campeona;. Desde el alijo intemporal: una colección de artefactos de diferentes épocas; tú eliges.', 0), +(@ID, 'esMX', 'El Maestro ha dejado esto para ti, $gCampeón:Campeona;. Desde el alijo intemporal: una colección de artefactos de diferentes épocas; tú eliges.', 0); +-- 8803 Un obsequio festivo +-- https://es.wowhead.com/quest=8803 +SET @ID := 8803; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'La nota de este regalo dice:$B$BPara $n:$B$Bcon la esperanza de que te ayude a repartir calor y felicidad por todo Azeroth.$B$BDe parte del Gran Padre Invierno.', 0), +(@ID, 'esMX', 'La nota de este regalo dice:$B$BPara $n:$B$Bcon la esperanza de que te ayude a repartir calor y felicidad por todo Azeroth.$B$BDe parte del Gran Padre Invierno.', 0); +-- Material de supervivencia en el desierto +-- 8804, 8805, 8806 +-- https://es.classic.wowhead.com/quest=8804 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8804, 8805, 8806) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8804, 'esES', '¿Tienes algo para mí, $n?', 0), +(8805, 'esES', '¿Tienes algo para mí, $n?', 0), +(8806, 'esES', '¿Tienes algo para mí, $n?', 0), +(8804, 'esMX', '¿Tienes algo para mí, $n?', 0), +(8805, 'esMX', '¿Tienes algo para mí, $n?', 0), +(8806, 'esMX', '¿Tienes algo para mí, $n?', 0); +-- 8808 Suministros para uniformes +-- https://es.classic.wowhead.com/quest=8808 +SET @ID := 8808; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, las necesitábamos. Se agradece tu trabajo, $n.', 0), +(@ID, 'esMX', 'Ah, las necesitábamos. Se agradece tu trabajo, $n.', 0); +-- 8811 Un sello de honor +-- https://es.classic.wowhead.com/quest=8811 +SET @ID := 8811; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Ventormenta.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Ventormenta.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8812 Un sello de honor +-- https://es.classic.wowhead.com/quest=8812 +SET @ID := 8812; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Forjaz.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Forjaz.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8813 Un sello de honor +-- https://es.classic.wowhead.com/quest=8813 +SET @ID := 8813; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Darnassus.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Darnassus.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8814 Un sello de honor +-- https://es.classic.wowhead.com/quest=8814 +SET @ID := 8814; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con los Exiliados de Gnomeregan.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con los Exiliados de Gnomeregan.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8815 Un sello de honor +-- https://es.classic.wowhead.com/quest=8815 +SET @ID := 8815; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Orgrimmar.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Orgrimmar.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8816 Un sello de honor +-- https://es.classic.wowhead.com/quest=8816 +SET @ID := 8816; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Entrañas.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Entrañas.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8817 Un sello de honor +-- https://es.classic.wowhead.com/quest=8817 +SET @ID := 8817; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Cima del Trueno.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con Cima del Trueno.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8818 Un sello de honor +-- https://es.classic.wowhead.com/quest=8818 +SET @ID := 8818; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con la tribu Lanza Negra.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0), +(@ID, 'esMX', 'Si los aventureros solo tienen un sello de honor, se les entrega a cambio una pequeña cantidad de reputación con la tribu Lanza Negra.$B$BPor favor, no olvides que es mejor entregarme diez sellos al mismo tiempo, tus esfuerzos se verán mejor recompensados. Permitimos el intercambio de un solo sello como servicio para aquellos que no pueden completar un juego de diez.$B$BDicho esto, ya puedo ayudarte si sigues queriendo entregar un solo sello.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0), +(@ID, 'esMX', 'Muy bien, tus hazañas han sido registradas y tus esfuerzos han sido debidamente reconocidos. Sigue haciéndolo así, $c.$B$BSi tienes más sellos que entregar puedo seguir ayudándote.', 0); +-- 8819 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8819 +SET @ID := 8819; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Ventormenta. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Ventormenta. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8820 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8820 +SET @ID := 8820; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Forjaz. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Forjaz. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8821 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8821 +SET @ID := 8821; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Darnassus. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas en Darnassus. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); +-- 8822 Diez sellos de honor +-- https://es.classic.wowhead.com/quest=8822 +SET @ID := 8822; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas entre los Exiliados de Gnomeregan. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0), +(@ID, 'esMX', 'Acepto sellos de honor de los aventureros que los han conseguido cumpliendo con su deber. Por cada diez que me entregues me aseguraré de que tus hazañas sean reconocidas y admiradas entre los Exiliados de Gnomeregan. También acepto sellos de uno en uno, pero a cambio de un nivel mucho menor de reputación. Estamos mucho más interesados en las hazañas ligadas a un compromiso duradero... pero ningún acto queda ignorado.$B$BDicho esto, me encantaría tener tus sellos si estás $glisto:lista; para entregar un paquete.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), +(@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); diff --git a/data/sql/updates/pending_db_world/rev_1619465312157331200.sql b/data/sql/updates/pending_db_world/rev_1619465312157331200.sql new file mode 100644 index 0000000000..3474e3114e --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619465312157331200.sql @@ -0,0 +1,366 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619465312157331200'); + +-- 8731 Servicio de campo +-- https://es.classic.wowhead.com/quest=8731 +SET @ID := 8731; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has completado tu servicio de campo, $n? El Capitán Machacacráneos está fuera de Colmen\'Regal.', 0), +(@ID, 'esMX', '¿Has completado tu servicio de campo, $n? El Capitán Machacacráneos está fuera de Colmen\'Regal.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Puedo decir que Krug tiene poca habilidad para el papeleo. ¡Lo firmó con sangre silítida!$B$BMuy bien, $n. He preparado un conjunto de tareas que deberían hacer un buen uso de tus habilidades como $c.$B$BCon tus continuos esfuerzos los de otros como tú, ¡nuestro enemigo pronto será aplastado!', 0), +(@ID, 'esMX', 'Puedo decir que Krug tiene poca habilidad para el papeleo. ¡Lo firmó con sangre silítida!$B$BMuy bien, $n. He preparado un conjunto de tareas que deberían hacer un buen uso de tus habilidades como $c.$B$BCon tus continuos esfuerzos los de otros como tú, ¡nuestro enemigo pronto será aplastado!', 0); +-- 8732 Documentación de instrucción de campo +-- https://es.classic.wowhead.com/quest=8732 +SET @ID := 8732; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Supongo que quiere esos papeles firmados, ', 0), +(@ID, 'esMX', 'Supongo que quiere esos papeles firmados, ', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, supongo que esa pequeña escaramuza pasará a ser un deber de campo hoy en día. Llévalos de regreso a Fuerte Cenarion, estoy seguro de que tendrán un trabajo a tu medida.$B$B¡Márchate!', 0), +(@ID, 'esMX', 'Sí, supongo que esa pequeña escaramuza pasará a ser un deber de campo hoy en día. Llévalos de regreso a Fuerte Cenarion, estoy seguro de que tendrán un trabajo a tu medida.$B$B¡Márchate!', 0); +-- 8733 Eranikus, el Tirano del Sueño +-- https://es.classic.wowhead.com/quest=8733 +SET @ID := 8733; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'La brizna está en silencio excepto por un suave zumbido. Curiosamente, es capaz de comunicarse contigo a través de pensamientos.', 0), +(@ID, 'esMX', 'La brizna está en silencio excepto por un suave zumbido. Curiosamente, es capaz de comunicarse contigo a través de pensamientos.', 0); +-- 8734 Tyrande y Remulos +-- https://es.classic.wowhead.com/quest=8734 +SET @ID := 8734; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sería imposible sacar a Eranikus del Sueño si se negaba. Sin embargo, sus intenciones requieren que entre en nuestro mundo. Busca destruir la manifestación viviente de Malfurion. Hacer esto significaría el fin de uno de los aliados más poderosos del Sueño. La Pesadilla consumiría por completo todo lo que queda si Malfurion cayera...', 0), +(@ID, 'esMX', 'Sería imposible sacar a Eranikus del Sueño si se negaba. Sin embargo, sus intenciones requieren que entre en nuestro mundo. Busca destruir la manifestación viviente de Malfurion. Hacer esto significaría el fin de uno de los aliados más poderosos del Sueño. La Pesadilla consumiría por completo todo lo que queda si Malfurion cayera...', 0); +-- 8735 La corrupción de Pesadilla +-- https://es.classic.wowhead.com/quest=8735 +SET @ID := 8735; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '', 0), +(@ID, 'esMX', '', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Estas $gpreparado:preparada;? ¿Está el mundo preparado para lo que vamos a invocar? No lo sé... estoy obligado por el deber hacia Malfurion. Deber y honor...', 0), +(@ID, 'esMX', '¿Estas $gpreparado:preparada;? ¿Está el mundo preparado para lo que vamos a invocar? No lo sé... estoy obligado por el deber hacia Malfurion. Deber y honor...', 0); +-- 8736 La Pesadilla se manifiesta +-- https://es.classic.wowhead.com/quest=8736 +SET @ID := 8736; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Está redimido, $n. Ahora regresa al Sueño para corregir lo que solo él ha hecho mal. Eranikus será un poderoso aliado para Malfurion y mi padre.$B$BEste armamento que me dio la propia Ysera es para ti, $n. Harías bien en utilizarlo en tus batallas contra los qiraji.', 0), +(@ID, 'esMX', 'Está redimido, $n. Ahora regresa al Sueño para corregir lo que solo él ha hecho mal. Eranikus será un poderoso aliado para Malfurion y mi padre.$B$BEste armamento que me dio la propia Ysera es para ti, $n. Harías bien en utilizarlo en tus batallas contra los qiraji.', 0); +-- 8737 Templario azur +-- https://es.classic.wowhead.com/quest=8737 +SET @ID := 8737; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has terminado tu tarea, $n?', 0), +(@ID, 'esMX', '¿Has terminado tu tarea, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $n. Aquí está tu próxima tarea.', 0), +(@ID, 'esMX', 'Buen trabajo, $n. Aquí está tu próxima tarea.', 0); +-- 8738 Informe de exploración de Colmen'Regal +-- https://es.classic.wowhead.com/quest=8738 +SET @ID := 8738; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Encontrarás al Explorador Landion dentro de Colmen\'Regal. ¡Date prisa, $n! El tiempo es esencial.', 0), +(@ID, 'esMX', 'Encontrarás al Explorador Landion dentro de Colmen\'Regal. ¡Date prisa, $n! El tiempo es esencial.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Apreciamos mucho tus esfuerzos, $n. Leeré estos informes de exploración de inmediato, siéntete libre de repasar tu próxima tarea.', 0), +(@ID, 'esMX', 'Apreciamos mucho tus esfuerzos, $n. Leeré estos informes de exploración de inmediato, siéntete libre de repasar tu próxima tarea.', 0); +-- 8739 Informe de exploración de Colmen'Ashi +-- https://es.classic.wowhead.com/quest=8739 +SET @ID := 8739; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Encontrarás al Explorador Jalia dentro de Colmen\'Ashi. ¡Date prisa, $n! El tiempo es esencial.', 0), +(@ID, 'esMX', 'Encontrarás al Explorador Jalia dentro de Colmen\'Ashi. ¡Date prisa, $n! El tiempo es esencial.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Apreciamos mucho tus esfuerzos, $n. Leeré estos informes de exploración de inmediato, siéntete libre de repasar tu próxima tarea.', 0), +(@ID, 'esMX', 'Apreciamos mucho tus esfuerzos, $n. Leeré estos informes de exploración de inmediato, siéntete libre de repasar tu próxima tarea.', 0); +-- 8740 Los merodeadores Crepusculares +-- https://es.classic.wowhead.com/quest=8740 +SET @ID := 8740; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has terminado tu tarea, $n?', 0), +(@ID, 'esMX', '¿Has terminado tu tarea, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bien hecho, $n. Los merodeadores crepusculares estaban causando un número inaceptable de bajas en nuestras patrullas. Aquí está su próxima tarea.', 0), +(@ID, 'esMX', 'Bien hecho, $n. Los merodeadores crepusculares estaban causando un número inaceptable de bajas en nuestras patrullas. Aquí está su próxima tarea.', 0); +-- 8741 El regreso del Campeón +-- https://es.classic.wowhead.com/quest=8741 +SET @ID := 8741; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tus obras serán conocidas por todos, $gcampeón:campeona;. Cantarán tus alabanzas desde Orgrimmar hasta los confines de los Mares del Sur. Todos sabrán $gdel campeón:de la campeona; del Vuelo de Bronce, $n.', 0), +(@ID, 'esMX', 'Tus obras serán conocidas por todos, $gcampeón:campeona;. Cantarán tus alabanzas desde Orgrimmar hasta los confines de los Mares del Sur. Todos sabrán $gdel campeón:de la campeona; del Vuelo de Bronce, $n.', 0); +-- 8742 El poder de Kalimdor +-- https://es.classic.wowhead.com/quest=8742 +SET @ID := 8742; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Han pasado mil años y, tal como estaba predestinado, $guno:una; está frente a mí. $gUno:Una; que guiará a su pueblo a una nueva era.$B$BEl Dios Antiguo tiembla, $n. Oh, sí, teme tu fe. Rompe la profecía de C\'Thun.$B$BSabe que vienes, $gcampeón:campeona;, y que contigo viene el poder de Kalimdor. Solo tienes que avisarme cuando estés $gpreparado:preparada; y te concederé el Cetro de las arenas movedizas.', 0), +(@ID, 'esMX', 'Han pasado mil años y, tal como estaba predestinado, $guno:una; está frente a mí. $gUno:Una; que guiará a su pueblo a una nueva era.$B$BEl Dios Antiguo tiembla, $n. Oh, sí, teme tu fe. Rompe la profecía de C\'Thun.$B$BSabe que vienes, $gcampeón:campeona;, y que contigo viene el poder de Kalimdor. Solo tienes que avisarme cuando estés $gpreparado:preparada; y te concederé el Cetro de las arenas movedizas.', 0); +-- 8743 Golpear el gong +-- https://es.classic.wowhead.com/quest=8743 +SET @ID := 8743; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El Gong de Escarabajo se cierne inquietantemente ante ti. Ármate, $n; porque una vez que suene el Gong, se abrirán las puertas de Ahn\'Qiraj.$B$BDe las fauces debilitadas de la bestia solo puede venir el caos y la destrucción. ¡Defiende a tu pueblo!', 0), +(@ID, 'esMX', 'El Gong de Escarabajo se cierne inquietantemente ante ti. Ármate, $n; porque una vez que suene el Gong, se abrirán las puertas de Ahn\'Qiraj.$B$BDe las fauces debilitadas de la bestia solo puede venir el caos y la destrucción. ¡Defiende a tu pueblo!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Del suelo cerca del gong brota un cristal especial. Quizás el favor de la Prole.', 0), +(@ID, 'esMX', 'Del suelo cerca del gong brota un cristal especial. Quizás el favor de la Prole.', 0); +-- 8744 Un presente envuelto con cuidado +-- https://es.wowhead.com/quest=8744 +SET @ID := 8744; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'La etiqueta de este regalo dice:$B$BPara $n:$B$B¡Que pases unas dulces y felices fiestas del Gran Invierno!', 0), +(@ID, 'esMX', 'La etiqueta de este regalo dice:$B$BPara $n:$B$B¡Que pases unas dulces y felices fiestas del Gran Invierno!', 0); +-- Metzen el reno +-- 8746, 8762 +-- https://es.classic.wowhead.com/quest=8746 +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Rescata al reno Metzen', `VerifiedBuild` = 0 WHERE `id` IN(8746, 8762) AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8746, 8762) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8746, 'esES', '¿Conseguiste localizar a Metzen con las notas que te di? No quiero ni pensar en cómo lo estarán tratando... ¡Pero no podemos pagar el rescate!', 0), +(8762, 'esES', '¿Conseguiste localizar a Metzen con las notas que te di? No quiero ni pensar en cómo lo estarán tratando... ¡Pero no podemos pagar el rescate!', 0), +(8746, 'esMX', '¿Conseguiste localizar a Metzen con las notas que te di? No quiero ni pensar en cómo lo estarán tratando... ¡Pero no podemos pagar el rescate!', 0), +(8762, 'esMX', '¿Conseguiste localizar a Metzen con las notas que te di? No quiero ni pensar en cómo lo estarán tratando... ¡Pero no podemos pagar el rescate!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8746, 8762) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8746, 'esES', '¡Bravo!$B$BMetzen ya está a salvo en los establos de Papá Invierno. ¡Sabía que el polvo funcionaría! Has salvado el Festival de Invierno y a Pastos de Bosquehumeante, $n.$B$BAcepta esto como prueba de gratitud; te gustará. ¡Feliz Festival de Invierno!', 0), +(8762, 'esES', '¡Bravo!$B$BMetzen ya está a salvo en los establos de Papá Invierno. ¡Sabía que el polvo funcionaría! Has salvado el Festival de Invierno y a Pastos de Bosquehumeante, $n.$B$BAcepta esto como prueba de gratitud; te gustará. ¡Feliz Festival de Invierno!', 0), +(8746, 'esMX', '¡Bravo!$B$BMetzen ya está a salvo en los establos de Papá Invierno. ¡Sabía que el polvo funcionaría! Has salvado el Festival de Invierno y a Pastos de Bosquehumeante, $n.$B$BAcepta esto como prueba de gratitud; te gustará. ¡Feliz Festival de Invierno!', 0), +(8762, 'esMX', '¡Bravo!$B$BMetzen ya está a salvo en los establos de Papá Invierno. ¡Sabía que el polvo funcionaría! Has salvado el Festival de Invierno y a Pastos de Bosquehumeante, $n.$B$BAcepta esto como prueba de gratitud; te gustará. ¡Feliz Festival de Invierno!', 0); +-- El camino del protector +-- 8747, 8752, 8757 +-- https://es.classic.wowhead.com/quest=8747 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8747, 8752, 8757) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8747, 'esES', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8752, 'esES', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8757, 'esES', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8747, 'esMX', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8752, 'esMX', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8757, 'esMX', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8747, 8752, 8757) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8747, 'esES', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8752, 'esES', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8757, 'esES', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8747, 'esMX', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8752, 'esMX', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0), +(8757, 'esMX', 'Impresionante, $gpequeño:pequeña;. Has pasado por muchos problemas para ganarte el favor del Vuelo de Bronce. Se nota tu dedicación.$B$BEl Sello del Vuelo de Bronce, ofrecerá una protección superior contra las fuerzas del mal.$B$BTen cuidado, una vez que hayas elegido tu camino, no tendrás nada en caso de que cambies de opinión.', 0); +-- El camino del protector +-- 8748, 8753, 8758 +-- https://es.classic.wowhead.com/quest=8748 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8748, 8753, 8758) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8748, 'esES', 'Se ha reconocido su continua defensa de los niños de Kalimdor. Dame tu anillo de sello para que pueda potenciar sus poderes.', 0), +(8753, 'esES', 'Se ha reconocido su continua defensa de los niños de Kalimdor. Dame tu anillo de sello para que pueda potenciar sus poderes.', 0), +(8758, 'esES', 'Se ha reconocido su continua defensa de los niños de Kalimdor. Dame tu anillo de sello para que pueda potenciar sus poderes.', 0), +(8748, 'esMX', 'Se ha reconocido su continua defensa de los niños de Kalimdor. Dame tu anillo de sello para que pueda potenciar sus poderes.', 0), +(8753, 'esMX', 'Se ha reconocido su continua defensa de los niños de Kalimdor. Dame tu anillo de sello para que pueda potenciar sus poderes.', 0), +(8758, 'esMX', 'Se ha reconocido su continua defensa de los niños de Kalimdor. Dame tu anillo de sello para que pueda potenciar sus poderes.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8748, 8753, 8758) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8748, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8753, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8758, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8748, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8753, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8758, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0); +-- El camino del protector +-- 8749, 8754, 8759 +-- https://es.classic.wowhead.com/quest=8749 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8749, 8754, 8759) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8749, 'esES', 'Honras a los de mi especie, $n. ¡Derriba a los enemigos de Kalimdor! Muéstrales lo que significa desfigurar la tierra de la eterna luz de las estrellas.$B$BHas obtenido otra mejora. Dame tu anillo de sello para que pueda reforzar su poder.', 0), +(8754, 'esES', 'Honras a los de mi especie, $n. ¡Derriba a los enemigos de Kalimdor! Muéstrales lo que significa desfigurar la tierra de la eterna luz de las estrellas.$B$BHas obtenido otra mejora. Dame tu anillo de sello para que pueda reforzar su poder.', 0), +(8759, 'esES', 'Honras a los de mi especie, $n. ¡Derriba a los enemigos de Kalimdor! Muéstrales lo que significa desfigurar la tierra de la eterna luz de las estrellas.$B$BHas obtenido otra mejora. Dame tu anillo de sello para que pueda reforzar su poder.', 0), +(8749, 'esMX', 'Honras a los de mi especie, $n. ¡Derriba a los enemigos de Kalimdor! Muéstrales lo que significa desfigurar la tierra de la eterna luz de las estrellas.$B$BHas obtenido otra mejora. Dame tu anillo de sello para que pueda reforzar su poder.', 0), +(8754, 'esMX', 'Honras a los de mi especie, $n. ¡Derriba a los enemigos de Kalimdor! Muéstrales lo que significa desfigurar la tierra de la eterna luz de las estrellas.$B$BHas obtenido otra mejora. Dame tu anillo de sello para que pueda reforzar su poder.', 0), +(8759, 'esMX', 'Honras a los de mi especie, $n. ¡Derriba a los enemigos de Kalimdor! Muéstrales lo que significa desfigurar la tierra de la eterna luz de las estrellas.$B$BHas obtenido otra mejora. Dame tu anillo de sello para que pueda reforzar su poder.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8749, 8754, 8759) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8749, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8754, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8759, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8749, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8754, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8759, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0); +-- El camino del protector +-- 8750, 8755, 8760 +-- https://es.classic.wowhead.com/quest=8750 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8750, 8755, 8760) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8750, 'esES', 'Una dedicación de esta magnitud es una rareza. Has demostrado que tu voluntad es inquebrantable, $n. Serás $grecompensado:recompensada; por tu inquebrantable vigilancia de nuestro mundo.$B$BDame tu anillo de sello para que pueda fortalecer su encantamiento.', 0), +(8755, 'esES', 'Una dedicación de esta magnitud es una rareza. Has demostrado que tu voluntad es inquebrantable, $n. Serás $grecompensado:recompensada; por tu inquebrantable vigilancia de nuestro mundo.$B$BDame tu anillo de sello para que pueda fortalecer su encantamiento.', 0), +(8760, 'esES', 'Una dedicación de esta magnitud es una rareza. Has demostrado que tu voluntad es inquebrantable, $n. Serás $grecompensado:recompensada; por tu inquebrantable vigilancia de nuestro mundo.$B$BDame tu anillo de sello para que pueda fortalecer su encantamiento.', 0), +(8750, 'esMX', 'Una dedicación de esta magnitud es una rareza. Has demostrado que tu voluntad es inquebrantable, $n. Serás $grecompensado:recompensada; por tu inquebrantable vigilancia de nuestro mundo.$B$BDame tu anillo de sello para que pueda fortalecer su encantamiento.', 0), +(8755, 'esMX', 'Una dedicación de esta magnitud es una rareza. Has demostrado que tu voluntad es inquebrantable, $n. Serás $grecompensado:recompensada; por tu inquebrantable vigilancia de nuestro mundo.$B$BDame tu anillo de sello para que pueda fortalecer su encantamiento.', 0), +(8760, 'esMX', 'Una dedicación de esta magnitud es una rareza. Has demostrado que tu voluntad es inquebrantable, $n. Serás $grecompensado:recompensada; por tu inquebrantable vigilancia de nuestro mundo.$B$BDame tu anillo de sello para que pueda fortalecer su encantamiento.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8750, 8755, 8760) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8750, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8755, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8760, 'esES', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8750, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8755, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0), +(8760, 'esMX', 'Tu ascenso en el rango de la Prole es de lo más impresionante, $n. ¡Que nunca te desvíes del camino del protector!', 0); +-- 8751 El protector de Kalimdor +-- https://es.wowhead.com/quest=8751 +SET @ID := 8751; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Nunca había visto tanta tenacidad! El Vuelo Bronce te concede un último encantamiento. ¡El mismísimo Atemporal así lo ha pedido!$B$BDame tu sello para que pueda hacer los ajustes necesarios.', 0), +(@ID, 'esMX', '¡Nunca había visto tanta tenacidad! El Vuelo Bronce te concede un último encantamiento. ¡El mismísimo Atemporal así lo ha pedido!$B$BDame tu sello para que pueda hacer los ajustes necesarios.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Arriba, $gprotector:protectora; de Kalimdor! ¡Levántate y obtén tu reconocimiento!', 0), +(@ID, 'esMX', '¡Arriba, $gprotector:protectora; de Kalimdor! ¡Levántate y obtén tu reconocimiento!', 0); +-- 8756 El conquistador qiraji +-- https://es.classic.wowhead.com/quest=8756 +SET @ID := 8756; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Nunca había visto tanta tenacidad! El Vuelo de Bronce te otorga un encantamiento final. ¡El Atemporal mismo lo ha pedido así!$B$BEntrégame tu anillo de sello para que pueda hacer los ajustes necesarios.', 0), +(@ID, 'esMX', '¡Nunca había visto tanta tenacidad! El Vuelo de Bronce te otorga un encantamiento final. ¡El Atemporal mismo lo ha pedido así!$B$BEntrégame tu anillo de sello para que pueda hacer los ajustes necesarios.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Levántate, $gconquistador:conquistadora; Qiraji! ¡Levántate y sé $greconocido:reconocida;!', 0), +(@ID, 'esMX', '¡Levántate, $gconquistador:conquistadora; Qiraji! ¡Levántate y sé $greconocido:reconocida;!', 0); +-- 8761 El gran convocador +-- https://es.classic.wowhead.com/quest=8761 +SET @ID := 8761; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Nunca había visto tanta tenacidad! El Vuelo Bronce te concede un último encantamiento. ¡El mismísimo Atemporal así lo ha pedido!$B$BDame tu sello para que pueda hacer los ajustes necesarios.', 0), +(@ID, 'esMX', '¡Nunca había visto tanta tenacidad! El Vuelo Bronce te concede un último encantamiento. ¡El mismísimo Atemporal así lo ha pedido!$B$BDame tu sello para que pueda hacer los ajustes necesarios.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Arriba, gran $gconvocador:convocadora;! ¡Yérguete y obtén tu reconocimiento!', 0), +(@ID, 'esMX', '¡Arriba, gran $gconvocador:convocadora;! ¡Yérguete y obtén tu reconocimiento!', 0); +-- Cambio de ruta: protector, nunca más +-- 8764, 8765, 8766 +-- https://es.classic.wowhead.com/quest=8764 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8764, 8765, 8766) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8764, 'esES', '$gCampeón:Campeona;, si decides caminar por otro camino, regálame tu anillo de sello y una montaña de escarabajos de nuestros enemigos en Ahn\'Qiraj.', 0), +(8765, 'esES', '$gCampeón:Campeona;, si decides caminar por otro camino, regálame tu anillo de sello y una montaña de escarabajos de nuestros enemigos en Ahn\'Qiraj.', 0), +(8766, 'esES', '$gCampeón:Campeona;, si decides caminar por otro camino, regálame tu anillo de sello y una montaña de escarabajos de nuestros enemigos en Ahn\'Qiraj.', 0), +(8764, 'esMX', '$gCampeón:Campeona;, si decides caminar por otro camino, regálame tu anillo de sello y una montaña de escarabajos de nuestros enemigos en Ahn\'Qiraj.', 0), +(8765, 'esMX', '$gCampeón:Campeona;, si decides caminar por otro camino, regálame tu anillo de sello y una montaña de escarabajos de nuestros enemigos en Ahn\'Qiraj.', 0), +(8766, 'esMX', '$gCampeón:Campeona;, si decides caminar por otro camino, regálame tu anillo de sello y una montaña de escarabajos de nuestros enemigos en Ahn\'Qiraj.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8764, 8765, 8766) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8764, 'esES', 'Está bien, $n. Si cambias de opinión, estaré aquí para ayudarte.', 0), +(8765, 'esES', 'Está bien, $n. Si cambias de opinión, estaré aquí para ayudarte.', 0), +(8766, 'esES', 'Está bien, $n. Si cambias de opinión, estaré aquí para ayudarte.', 0), +(8764, 'esMX', 'Está bien, $n. Si cambias de opinión, estaré aquí para ayudarte.', 0), +(8765, 'esMX', 'Está bien, $n. Si cambias de opinión, estaré aquí para ayudarte.', 0), +(8766, 'esMX', 'Está bien, $n. Si cambias de opinión, estaré aquí para ayudarte.', 0); +-- Un obsequio ligeramente agitado +-- 8767, 8788 +-- https://es.classic.wowhead.com/quest=8767 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8767, 8788) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8767, 'esES', 'Parece que han agitado este regalo un par de veces. Su etiqueta dice:$B$BPara $gun:una; $r $c muy especial.', 0), +(8788, 'esES', 'Parece que han agitado este regalo un par de veces. Su etiqueta dice:$B$BPara $gun:una; $r $c muy especial.', 0), +(8767, 'esMX', 'Parece que han agitado este regalo un par de veces. Su etiqueta dice:$B$BPara $gun:una; $r $c muy especial.', 0), +(8788, 'esMX', 'Parece que han agitado este regalo un par de veces. Su etiqueta dice:$B$BPara $gun:una; $r $c muy especial.', 0); +-- 8768 Un presente con envoltorio alegre +-- https://es.wowhead.com/quest=8768 +SET @ID := 8768; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El regalo está envuelto con motivos propios de estas fiestas y tiene tu nombre.$B$BEspera, ¿no acaba de moverse?', 0), +(@ID, 'esMX', 'El regalo está envuelto con motivos propios de estas fiestas y tiene tu nombre.$B$BEspera, ¿no acaba de moverse?', 0); +-- 8769 Un presente que hace tic tac +-- https://es.classic.wowhead.com/quest=8769 +SET @ID := 8769; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tus amigos de los Pastos de Bosquehumeante te desean unas felices Fiestas del Gran Invierno.', 0), +(@ID, 'esMX', 'Tus amigos de los Pastos de Bosquehumeante te desean unas felices Fiestas del Gran Invierno.', 0); +-- 8770 Objetivo: los defensores Colmen'Ashi +-- https://es.classic.wowhead.com/quest=8770 +SET @ID := 8770; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Tu diligencia es tan notable como siempre.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Tu diligencia es tan notable como siempre.', 0); +-- 8771 Objetivo: los acecharenas Colmen'Ashi +-- https://es.classic.wowhead.com/quest=8771 +SET @ID := 8771; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Se ha notado tu participación en el ataque a Colmen\'Ashi.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Se ha notado tu participación en el ataque a Colmen\'Ashi.', 0); +-- 8772 Objetivo: los oteadores de Colmen'Zora +-- https://es.classic.wowhead.com/quest=8772 +SET @ID := 8772; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Se ha notado tu participación en el ataque a Colmen\'Zora.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Se ha notado tu participación en el ataque a Colmen\'Zora.', 0); +-- 8773 Objetivo: los atracadores de Colmen'Zora +-- https://es.classic.wowhead.com/quest=8773 +SET @ID := 8773; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Escuché cosas buenas sobre tu participación en el ataque de Colmen\'Zora. Siguen con el buen trabajo y la victoria pronto será nuestra.', 0), +(@ID, 'esMX', 'Escuché cosas buenas sobre tu participación en el ataque de Colmen\'Zora. Siguen con el buen trabajo y la victoria pronto será nuestra.', 0); +-- Objetivo: los emboscadores Colmen'Regal +-- 8774, 8775, 8776, 8777 +-- https://es.classic.wowhead.com/quest=8774 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8774, 8775, 8776, 8777) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8774, 'esES', '¿Tienes algo que decirme, $n?', 0), +(8775, 'esES', '¿Tienes algo que decirme, $n?', 0), +(8776, 'esES', '¿Tienes algo que decirme, $n?', 0), +(8777, 'esES', '¿Tienes algo que decirme, $n?', 0), +(8774, 'esMX', '¿Tienes algo que decirme, $n?', 0), +(8775, 'esMX', '¿Tienes algo que decirme, $n?', 0), +(8776, 'esMX', '¿Tienes algo que decirme, $n?', 0), +(8777, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8774, 8775, 8776, 8777) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8774, 'esES', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8775, 'esES', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8776, 'esES', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8777, 'esES', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8774, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8775, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8776, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), +(8777, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0); From 71e20bf29258a36ee3cdf8a7e42f0fe9070f4fbe Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 4 May 2021 08:34:14 +0000 Subject: [PATCH 064/108] chore(DB): import pending SQL update file Referenced commit(s): f96c52813e6dfc12a56e7b602dcf9b6e1b73b235 --- .../2021_05_04_02.sql} | 25 +++++++++++++++++++ .../2021_05_04_03.sql} | 25 +++++++++++++++++++ .../2021_05_04_04.sql} | 25 +++++++++++++++++++ 3 files changed, 75 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619464428492037100.sql => db_world/2021_05_04_02.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1619465221289722800.sql => db_world/2021_05_04_03.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1619465312157331200.sql => db_world/2021_05_04_04.sql} (98%) diff --git a/data/sql/updates/pending_db_world/rev_1619464428492037100.sql b/data/sql/updates/db_world/2021_05_04_02.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1619464428492037100.sql rename to data/sql/updates/db_world/2021_05_04_02.sql index 95e6c00beb..3e3ea24e67 100644 --- a/data/sql/updates/pending_db_world/rev_1619464428492037100.sql +++ b/data/sql/updates/db_world/2021_05_04_02.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_04_01 -> 2021_05_04_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_01 2021_05_04_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619464428492037100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619464428492037100'); -- 8823 Diez sellos de honor @@ -367,3 +383,12 @@ INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `Verified (8873, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), (8874, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0), (8875, 'esMX', 'Te doy la bienvenida, $n. ¿Vienes a unirte a nuestras celebraciones?', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619465221289722800.sql b/data/sql/updates/db_world/2021_05_04_03.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1619465221289722800.sql rename to data/sql/updates/db_world/2021_05_04_03.sql index f01ec5c60b..70e557dca0 100644 --- a/data/sql/updates/pending_db_world/rev_1619465221289722800.sql +++ b/data/sql/updates/db_world/2021_05_04_03.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_04_02 -> 2021_05_04_03 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_02 2021_05_04_03 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619465221289722800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619465221289722800'); -- 8778 ¡La Brigada de Forjaz necesita explosivos! @@ -361,3 +377,12 @@ DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0), (@ID, 'esMX', '¡Excelente! El esfuerzo que has hecho para ganar estos sellos no es pequeño, y tus servicios serán debidamente reconocidos. Son $glos aventureros:las aventureras; como tú, $n, $glos:las; que marcan la diferencia..$B$BHazme saber si tienes más sellos que entregar. Será un placer ayudarte siempre que necesites hacer un intercambio.', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619465312157331200.sql b/data/sql/updates/db_world/2021_05_04_04.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1619465312157331200.sql rename to data/sql/updates/db_world/2021_05_04_04.sql index 3474e3114e..130f5be0a5 100644 --- a/data/sql/updates/pending_db_world/rev_1619465312157331200.sql +++ b/data/sql/updates/db_world/2021_05_04_04.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_04_03 -> 2021_05_04_04 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_03'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_03 2021_05_04_04 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619465312157331200'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619465312157331200'); -- 8731 Servicio de campo @@ -364,3 +380,12 @@ INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `Verified (8775, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), (8776, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0), (8777, 'esMX', 'Excelente trabajo, $n. Tu participación en el ataque a Colmen\'Regal ha sido notoria.', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 28f9c8657731270792c22f776d965965a43d935f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefano=20Borz=C3=AC?= Date: Tue, 4 May 2021 10:46:48 +0200 Subject: [PATCH 065/108] fix(DB/game_event_gameobject): link to brewfest 2 gameobjects (#5487) --- .../updates/pending_db_world/rev_1619469854375537568.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619469854375537568.sql diff --git a/data/sql/updates/pending_db_world/rev_1619469854375537568.sql b/data/sql/updates/pending_db_world/rev_1619469854375537568.sql new file mode 100644 index 0000000000..49ea76babc --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619469854375537568.sql @@ -0,0 +1,6 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619469854375537568'); + +DELETE FROM `game_event_gameobject` WHERE `guid` IN (59183, 59184); +INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES +(24, 59183), +(24, 59184); From a1b0c4541762320867aa7e7150c942224c18753d Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 4 May 2021 08:48:24 +0000 Subject: [PATCH 066/108] chore(DB): import pending SQL update file Referenced commit(s): 28f9c8657731270792c22f776d965965a43d935f --- data/sql/updates/db_world/2021_05_04_05.sql | 31 +++++++++++++++++++ .../rev_1619469854375537568.sql | 6 ---- 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_04_05.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619469854375537568.sql diff --git a/data/sql/updates/db_world/2021_05_04_05.sql b/data/sql/updates/db_world/2021_05_04_05.sql new file mode 100644 index 0000000000..61aaf6bf0c --- /dev/null +++ b/data/sql/updates/db_world/2021_05_04_05.sql @@ -0,0 +1,31 @@ +-- DB update 2021_05_04_04 -> 2021_05_04_05 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_04'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_04 2021_05_04_05 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619469854375537568'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619469854375537568'); + +DELETE FROM `game_event_gameobject` WHERE `guid` IN (59183, 59184); +INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES +(24, 59183), +(24, 59184); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619469854375537568.sql b/data/sql/updates/pending_db_world/rev_1619469854375537568.sql deleted file mode 100644 index 49ea76babc..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619469854375537568.sql +++ /dev/null @@ -1,6 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619469854375537568'); - -DELETE FROM `game_event_gameobject` WHERE `guid` IN (59183, 59184); -INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES -(24, 59183), -(24, 59184); From f6c6123d85d467134ee24565c9d98efdfc3a0c41 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Tue, 4 May 2021 11:35:24 +0200 Subject: [PATCH 067/108] feat(docker): production images, integrated ccache and many other improvements (#5551) --- .devcontainer/devcontainer.json | 3 +- .dockerignore | 13 +- .github/workflows/core_build.yml | 2 +- .github/workflows/docker_build.yml | 58 +++++- .gitignore | 10 +- .vscode/extensions.json | 3 +- .vscode/tasks.json | 68 ++++++- apps/bash_shared/defines.sh | 2 + apps/ci/ci-compile.sh | 7 +- apps/compiler/compiler.sh | 14 +- apps/compiler/includes/functions.sh | 47 +++++ apps/docker/Dockerfile | 113 +++++++++++- .../docker/docker-build-dev.sh | 10 +- apps/docker/docker-build-prod.sh | 5 + apps/docker/docker-cmd.ts | 98 +++++++--- .../git_tools/subrepo-update.sh | 2 +- apps/installer/includes/functions.sh | 9 +- apps/installer/includes/os_configs/debian.sh | 12 +- apps/installer/includes/os_configs/ubuntu.sh | 4 +- apps/installer/includes/os_configs/windows.sh | 2 +- bin/README.md | 6 +- bin/acore-docker-update | 7 - conf/dist/config.sh | 21 ++- conf/dist/env.ac | 2 + docker-compose.yml | 168 +++++++++++++++--- env/docker/bin/.gitkeep | 0 src/cmake/compiler/clang/settings.cmake | 6 + var/ccache/.gitkeep | 0 var/docker/build/.gitkeep | 0 var/docker/ccache/.gitkeep | 0 var/extractors/dbc/.gitkeep | 0 var/extractors/maps/.gitkeep | 0 var/extractors/mmaps/.gitkeep | 0 var/extractors/vmaps/.gitkeep | 0 34 files changed, 569 insertions(+), 123 deletions(-) rename bin/acore-docker-build => apps/docker/docker-build-dev.sh (54%) mode change 100755 => 100644 create mode 100755 apps/docker/docker-build-prod.sh rename bin/acore-subrepo-update => apps/git_tools/subrepo-update.sh (99%) delete mode 100644 bin/acore-docker-update create mode 100644 env/docker/bin/.gitkeep create mode 100644 var/ccache/.gitkeep create mode 100644 var/docker/build/.gitkeep create mode 100644 var/docker/ccache/.gitkeep create mode 100644 var/extractors/dbc/.gitkeep create mode 100644 var/extractors/maps/.gitkeep create mode 100644 var/extractors/mmaps/.gitkeep create mode 100644 var/extractors/vmaps/.gitkeep diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ea659ebfe1..ed955ab619 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -33,7 +33,8 @@ "mhutchie.git-graph", "github.vscode-pull-request-github", "eamodio.gitlens", - "cschlosser.doxdocgen" + "cschlosser.doxdocgen", + "sanaajani.taskrunnercode" ], // Use 'forwardPorts' to make a list of ports inside the container available locally. diff --git a/.dockerignore b/.dockerignore index 44c4511bc4..ea6c901b71 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,13 +1,20 @@ /cmake-build-debug/* /build*/ /var/* +!/var/build/.gitkeep +!/var/ccache/.gitkeep /env/dist/* +!/env/dist/.gitkeep /env/user/* -/env/docker/data/* -/env/docker/logs/* -/env/docker/etc/* +/env/docker/* +!/env/docker/bin/.gitkeep +!/env/docker/data/.gitkeep !/env/docker/etc/authserver.conf.dockerdist !/env/docker/etc/worldserver.conf.dockerdist +!/env/docker/logs/.gitkeep /.env* .idea !.gitkeep + +# do not ignore the ccache folder (used by the ci) +!/var/docker/ccache diff --git a/.github/workflows/core_build.yml b/.github/workflows/core_build.yml index cf1d66979d..90ede0c88c 100644 --- a/.github/workflows/core_build.yml +++ b/.github/workflows/core_build.yml @@ -59,7 +59,7 @@ jobs: - name: Cache uses: actions/cache@v2 with: - path: /home/runner/.ccache + path: var/ccache key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules:${{ github.ref }}:${{ github.sha }} restore-keys: | ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.modules }}-modules:${{ github.ref }} diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index 8c0ae6600f..de3c053c98 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -12,9 +12,6 @@ jobs: runs-on: ubuntu-20.04 if: github.repository == 'azerothcore/azerothcore-wotlk' env: - DOCKER_EXTENDS_BIND: abstract-no-bind - DOCKER_BUILD_WORLD_TARGET: worldserver - DOCKER_BUILD_AUTH_TARGET: authserver COMPOSE_DOCKER_CLI_BUILD: 1 DOCKER_BUILDKIT: 1 BUILDKIT_INLINE_CACHE: 1 @@ -29,14 +26,37 @@ jobs: - name: Configure run: | + sudo rm -rf /usr/share/dotnet docker --version docker-compose --version - - name: Build + # TODO: make it work + # - uses: whoan/docker-build-with-cache-action@v5 + # with: + # image_tag: master + # username: ${{ secrets.DOCKERHUB_USERNAME }} + # password: ${{ secrets.DOCKERHUB_TOKEN }} + # compose_file: docker-compose.yml + + # before cache + # needed to avoid ccache injected into these images + - name: Build Dev + env: + #DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} + DOCKER_EXTENDS_BIND: abstract-no-bind + DOCKER_CLIENT_TIMEOUT: 400 + COMPOSE_HTTP_TIMEOUT: 400 + run: | + export DOCKER_USER_ID=$(id -u) + export DOCKER_GROUP_ID=$(id -u) + docker-compose --profile dev --profile local build --parallel + + - name: Deploy Dev #env: # DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} + if: ${{ steps.extract_branch.outputs.branch == 'master' }} run: | - docker-compose --profile all build + docker-compose --profile dev --profile local push - name: Login to Docker Hub if: ${{ steps.extract_branch.outputs.branch == 'master' }} @@ -45,9 +65,33 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Deploy + - name: Cache + uses: actions/cache@v2 + with: + path: var/docker/ccache + key: ccache:ubuntu-20.04:clang:without-modules:${{ github.ref }}:${{ github.sha }} + restore-keys: | + ccache:ubuntu-20.04:clang:without-modules:${{ github.ref }} + ccache:ubuntu-20.04:clang:without-modules + + - name: Build Production images + env: + #DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} + DOCKER_EXTENDS_BIND: abstract-no-bind + DOCKER_AC_BUILD_TARGET: build + DOCKER_CLIENT_TIMEOUT: 220 + COMPOSE_HTTP_TIMEOUT: 220 + run: | + export DOCKER_USER_ID=$(id -u) + export DOCKER_GROUP_ID=$(id -u) + docker-compose --profile build --profile prod build --parallel + docker-compose run --no-deps --name build ac-build echo "image created" + docker cp build:/azerothcore/var/ccache var/docker/ + echo "ccache exported" + + - name: Deploy Production images #env: # DOCKER_IMAGE_TAG: ${{ steps.extract_branch.outputs.branch }} if: ${{ steps.extract_branch.outputs.branch == 'master' }} run: | - docker-compose --profile all push + docker-compose --profile prod push diff --git a/.gitignore b/.gitignore index ca628ad590..e1881f3ac7 100644 --- a/.gitignore +++ b/.gitignore @@ -9,13 +9,17 @@ !/modules/*.sh /build*/ /var/* +!/var/build/.gitkeep +!/var/ccache/.gitkeep /env/dist/* +!/env/dist/.gitkeep /env/user/* -/env/docker/data/* -/env/docker/logs/* -/env/docker/etc/* +/env/docker/* +!/env/docker/bin/.gitkeep +!/env/docker/data/.gitkeep !/env/docker/etc/authserver.conf.dockerdist !/env/docker/etc/worldserver.conf.dockerdist +!/env/docker/logs/.gitkeep /.env* /apps/joiner /deps/deno diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f78da7e8aa..a03767c6f8 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -10,6 +10,7 @@ "mhutchie.git-graph", "github.vscode-pull-request-github", "eamodio.gitlens", - "cschlosser.doxdocgen" + "cschlosser.doxdocgen", + "sanaajani.taskrunnercode" ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index eeba203d70..fab16be001 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,7 +2,51 @@ "version": "2.0.0", "tasks": [ { - "label": "build", + "label": "AzerothCore: Dashboard", + "type": "shell", + "command": "./acore.sh", + "group": "none", + "presentation": { + "reveal": "always", + "panel": "new" + }, + "problemMatcher": [] + }, + { + "label": "AzerothCore: Import/update database", + "type": "shell", + "command": "./acore.sh db-assembler import-all", + "group": "build", + "presentation": { + "reveal": "always", + "panel": "new" + }, + "problemMatcher": [] + }, + { + "label": "AzerothCore: download client-data", + "type": "shell", + "command": "./acore.sh client-data", + "group": "none", + "presentation": { + "reveal": "always", + "panel": "new" + }, + "problemMatcher": [] + }, + { + "label": "AzerothCore: Clean build", + "type": "shell", + "command": "./acore.sh compiler clean", + "group": "build", + "presentation": { + "reveal": "always", + "panel": "new" + }, + "problemMatcher": [] + }, + { + "label": "AzerothCore: Build", "type": "shell", "command": "./acore.sh compiler build", "group": { @@ -14,6 +58,28 @@ "panel": "new" }, "problemMatcher": [] + }, + { + "label": "AzerothCore: Run authserver (restarter)", + "type": "shell", + "command": "./acore.sh run-authserver", + "group": "none", + "presentation": { + "reveal": "always", + "panel": "new" + }, + "problemMatcher": [] + }, + { + "label": "AzerothCore: Run worldserver (restarter)", + "type": "shell", + "command": "./acore.sh run-worldserver", + "group": "none", + "presentation": { + "reveal": "always", + "panel": "new" + }, + "problemMatcher": [] } ] } diff --git a/apps/bash_shared/defines.sh b/apps/bash_shared/defines.sh index ed5f3733c9..4f5372215c 100644 --- a/apps/bash_shared/defines.sh +++ b/apps/bash_shared/defines.sh @@ -24,3 +24,5 @@ AC_PATH_CONF="$AC_PATH_ROOT/conf" AC_PATH_MODULES="$AC_PATH_ROOT/modules" AC_PATH_DEPS="$AC_PATH_ROOT/deps" + +AC_PATH_VAR="$AC_PATH_ROOT/var" diff --git a/apps/ci/ci-compile.sh b/apps/ci/ci-compile.sh index 4058fb20eb..e19023aeb8 100755 --- a/apps/ci/ci-compile.sh +++ b/apps/ci/ci-compile.sh @@ -3,9 +3,6 @@ set -e echo "compile core" -export CCACHE_CPP2=true -export CCACHE_MAXSIZE='500MB' -export CCACHE_COMPRESS=1 -ccache -s +export AC_CCACHE=true ./acore.sh "compiler" "all" -ccache -s + diff --git a/apps/compiler/compiler.sh b/apps/compiler/compiler.sh index 168323ea44..140d5fa974 100755 --- a/apps/compiler/compiler.sh +++ b/apps/compiler/compiler.sh @@ -18,7 +18,7 @@ function run_option() { fi } -function comp_quit() { +function comp_quit() { exit 0 } @@ -26,15 +26,17 @@ comp_options=( "build: Configure and compile" "clean: Clean build files" "configure: Run CMake" - "compile: Compile only" + "compile: Compile only" "all: clean, configure and compile" + "ccacheClean: Clean ccache files, normally not needed" "quit: Close this menu") comp_functions=( - "comp_build" - "comp_clean" - "comp_configure" + "comp_build" + "comp_clean" + "comp_configure" "comp_compile" "comp_all" + "comp_ccacheClean" "comp_quit") PS3='[ Please enter your choice ]: ' @@ -50,7 +52,7 @@ function _switch() { echo "Available commands:" printf '%s\n' "${options[@]}" ;; - *) + *) run_option $_reply $_opt ;; esac diff --git a/apps/compiler/includes/functions.sh b/apps/compiler/includes/functions.sh index 1e3c83c6ba..7c5ea483a1 100644 --- a/apps/compiler/includes/functions.sh +++ b/apps/compiler/includes/functions.sh @@ -8,6 +8,40 @@ function comp_clean() { [ -d "$DIRTOCLEAN" ] && rm -rf $PATTERN } +function comp_ccacheEnable() { + [ "$AC_CCACHE" != true ] && return + + export CCACHE_MAXSIZE=${CCACHE_MAXSIZE:-'1000MB'} + #export CCACHE_DEPEND=true + export CCACHE_SLOPPINESS=${CCACHE_SLOPPINESS:-pch_defines,time_macros,include_file_mtime} + export CCACHE_CPP2=${CCACHE_CPP2:-true} # optimization for clang + export CCACHE_COMPRESS=${CCACHE_COMPRESS:-1} + export CCACHE_COMPRESSLEVEL=${CCACHE_COMPRESSLEVEL:-9} + #export CCACHE_NODIRECT=true + + export CCUSTOMOPTIONS="$CCUSTOMOPTIONS -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" +} + +function comp_ccacheClean() { + [ "$AC_CCACHE" != true ] && echo "ccache is disabled" && return + + echo "Cleaning ccache" + ccache -C + ccache -s +} + +function comp_ccacheResetStats() { + [ "$AC_CCACHE" != true ] && return + + ccache -zc +} + +function comp_ccacheShowStats() { + [ "$AC_CCACHE" != true ] && return + + ccache -s +} + function comp_configure() { CWD=$(pwd) @@ -16,6 +50,7 @@ function comp_configure() { echo "Build path: $BUILDPATH" echo "DEBUG info: $CDEBUG" echo "Compilation type: $CTYPE" + echo "CCache: $AC_CCACHE" # -DCMAKE_BUILD_TYPE=$CCTYPE disable optimization "slow and huge amount of ram" # -DWITH_COREDEBUG=$CDEBUG compiled with debug information @@ -28,6 +63,8 @@ function comp_configure() { DCONF="-DCONF_DIR=$CONFDIR" fi + comp_ccacheEnable + cmake $SRCPATH -DCMAKE_INSTALL_PREFIX=$BINPATH $DCONF -DSERVERS=$CSERVERS \ -DSCRIPTS=$CSCRIPTS \ -DBUILD_TESTING=$CBUILD_TESTING \ @@ -49,11 +86,21 @@ function comp_compile() { cd $BUILDPATH + comp_ccacheResetStats + time make -j $MTHREADS make -j $MTHREADS install + comp_ccacheShowStats + cd $CWD + if [ $DOCKER = 1 ]; then + echo "Generating confs..." + cp -n "env/dist/etc/worldserver.conf.dockerdist" "env/dist/etc/worldserver.conf" + cp -n "env/dist/etc/authserver.conf.dockerdist" "env/dist/etc/authserver.conf" + fi + runHooks "ON_AFTER_BUILD" } diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile index 863d7ba51a..b639d84f73 100644 --- a/apps/docker/Dockerfile +++ b/apps/docker/Dockerfile @@ -1,3 +1,5 @@ +#syntax=docker/dockerfile:1.2 + #================================================================ # # DEV: Stage used for the development environment @@ -41,10 +43,11 @@ RUN addgroup --gid $GROUP_ID acore && \ echo 'acore ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers # must be created to set the correct permissions on them +RUN mkdir -p /azerothcore/env/dist/bin RUN mkdir -p /azerothcore/env/dist/data RUN mkdir -p /azerothcore/env/dist/logs RUN mkdir -p /azerothcore/env/dist/etc -RUN mkdir -p /azerothcore/var/build +RUN mkdir -p /azerothcore/var/build/obj # Correct permissions for non-root operations RUN chown -R $DOCKER_USER:$DOCKER_USER /home/acore @@ -157,9 +160,28 @@ CMD ./acore.sh run-worldserver #================================================================= FROM base as build +ARG DOCKER_USER=acore + LABEL description="AC Image used by the build stage to generate production images" -RUN bash bin/acore-docker-build +RUN mkdir -p /azerothcore/env/etc/ + +# check if we have ccache files available outside +COPY --chown=$DOCKER_USER:$DOCKER_USER var/docker/ccache /azerothcore/var/ccache +COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/authserver.conf.dockerdist /azerothcore/env/dist/etc/authserver.conf.dockerdist +COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/worldserver.conf.dockerdist /azerothcore/env/dist/etc/worldserver.conf.dockerdist + +# install eluna +RUN git clone --depth=1 --branch=master --recursive https://github.com/azerothcore/mod-eluna-lua-engine.git /azerothcore/modules/mod-eluna-lua-engine + +ENV USER_CONF_PATH=/azerothcore/apps/docker/config-docker.sh +ENV CTYPE=RelWithDebInfo +ENV AC_CCACHE=true +ENV CCACHE_CPP2=true +ENV CSCRIPTPCH=OFF +ENV CCOREPCH=OFF +ENV CTOOLS=ON +RUN bash apps/docker/docker-build-prod.sh #================================================================ # @@ -169,7 +191,7 @@ RUN bash bin/acore-docker-build #================================================================= FROM authserver-local as authserver -LABEL description="AC Production ready authserver" +LABEL description="AC Production: authserver" ARG DOCKER_USER=acore @@ -184,14 +206,95 @@ COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/au #================================================================= FROM worldserver-local as worldserver -LABEL description="AC Production ready worldserver" +LABEL description="AC Production: worldserver" ARG DOCKER_USER=acore +RUN mkdir -p /azerothcore/env/dist/bin/lua_scripts COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/etc /azerothcore/env/dist/etc COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/worldserver /azerothcore/env/dist/bin/worldserver +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/lua_scripts /azerothcore/env/dist/bin/lua_scripts + +#================================================================ +# +# CLIENT DATA +# +#================================================================= + +FROM ubuntu:20.04 as client-data +ARG USER_ID=1000 +ARG GROUP_ID=1000 +ARG DOCKER_USER=acore + +LABEL description="AC Production: client-data" + +RUN apt-get update && apt-get install -y tzdata curl unzip && rm -rf /var/lib/apt/lists/* ; + +# set timezone environment variable +ENV TZ=Etc/UTC + +# set noninteractive mode so tzdata doesn't ask to set timezone on install +ENV DEBIAN_FRONTEND=noninteractive + +RUN addgroup --gid $GROUP_ID acore && \ + adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID acore && \ + passwd -d acore && \ + echo 'acore ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers ENV DATAPATH=/azerothcore/env/dist/data +ENV DATAPATH_ZIP=/tmp/data.zip -RUN /azerothcore/acore.sh client-data +RUN --mount=type=bind,target=/azerothcore-temp,readwrite /azerothcore-temp/acore.sh client-data + +RUN apt-get remove --purge -y tzdata curl unzip && apt-get autoremove -y + +RUN chown -R $DOCKER_USER:$DOCKER_USER /azerothcore + +USER $DOCKER_USER + +#================================================================ +# +# TOOLS +# +#================================================================= + +FROM ubuntu:20.04 as tools +ARG USER_ID=1000 +ARG GROUP_ID=1000 +ARG DOCKER_USER=acore + +LABEL description="AC Production: tools" + +# List of timezones: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones + +# set timezone environment variable +ENV TZ=Etc/UTC + +# set noninteractive mode so tzdata doesn't ask to set timezone on install +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y libmysqlclient-dev libace-dev libssl-dev libbz2-dev sudo && rm -rf /var/lib/apt/lists/* ; + +# Create a non-root user +RUN addgroup --gid $GROUP_ID acore && \ + adduser --disabled-password --gecos '' --uid $USER_ID --gid $GROUP_ID acore && \ + passwd -d acore && \ + echo 'acore ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers + +RUN mkdir -p /azerothcore/env/client/ +RUN chown -R $DOCKER_USER:$DOCKER_USER /azerothcore + +USER $DOCKER_USER + +WORKDIR /azerothcore/env/client/ + +RUN mkdir -p /azerothcore/env/client/dbc +RUN mkdir -p /azerothcore/env/client/maps +RUN mkdir -p /azerothcore/env/client/mmaps +RUN mkdir -p /azerothcore/env/client/vmaps + +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/mapextractor /azerothcore/env/client/mapextractor +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/mmaps_generator /azerothcore/env/client/mmaps_generator +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/vmap4assembler /azerothcore/env/client/vmap4assembler +COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/vmap4extractor /azerothcore/env/client/vmap4extractor diff --git a/bin/acore-docker-build b/apps/docker/docker-build-dev.sh old mode 100755 new mode 100644 similarity index 54% rename from bin/acore-docker-build rename to apps/docker/docker-build-dev.sh index efe890d445..830f5b2f4d --- a/bin/acore-docker-build +++ b/apps/docker/docker-build-dev.sh @@ -1,12 +1,10 @@ #!/usr/bin/env bash -cd /azerothcore +CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -bash acore.sh compiler build +IMPORT_DB=$1 -echo "Generating confs..." -cp -n "env/dist/etc/worldserver.conf.dockerdist" "env/dist/etc/worldserver.conf" -cp -n "env/dist/etc/authserver.conf.dockerdist" "env/dist/etc/authserver.conf" +source "$CUR_PATH/docker-build-prod.sh" echo "Fixing EOL..." # using -n (new file mode) should also fix the issue @@ -17,4 +15,4 @@ do dos2unix -n $file $file done - +[[ $IMPORT_DB != 0 ]] && bash acore.sh db-assembler import-all || true diff --git a/apps/docker/docker-build-prod.sh b/apps/docker/docker-build-prod.sh new file mode 100755 index 0000000000..07a42474b4 --- /dev/null +++ b/apps/docker/docker-build-prod.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cd /azerothcore + +bash acore.sh compiler build diff --git a/apps/docker/docker-cmd.ts b/apps/docker/docker-cmd.ts index 8fdd94e886..512f1eb00c 100644 --- a/apps/docker/docker-cmd.ts +++ b/apps/docker/docker-cmd.ts @@ -7,6 +7,12 @@ import { const program = new Command(); +const env = { + COMPOSE_DOCKER_CLI_BUILD: "1", + DOCKER_BUILDKIT: "1", + BUILDKIT_INLINE_CACHE: "1", +}; + program .name("acore.sh docker") .description("Shell scripts for docker") @@ -16,85 +22,125 @@ shellCommandFactory( "start:app", "Startup the authserver and worldserver apps", ["docker-compose --profile app up"], + env, ); shellCommandFactory( "start:app:d", "Startup the authserver and worldserver apps in detached mode", ["docker-compose --profile app up -d"], + env, ); shellCommandFactory("build", "Build the authserver and worldserver", [ - "docker-compose --profile all build", + "docker-compose --profile local build --parallel", "docker image prune -f", - "docker-compose run --rm ac-build bash bin/acore-docker-update", -]); - -shellCommandFactory( - "build:clean", - "Clean and run build", - [ - "docker-compose --profile all build", - "docker image prune -f", - `docker-compose run --rm ac-build bash acore.sh compiler clean`, - "docker-compose run --rm ac-build bash bin/acore-docker-update", - ], -); + "docker-compose run --rm ac-build bash apps/docker/docker-build-dev.sh", +], env); shellCommandFactory( "build:nocache", "Build the authserver and worldserver without docker cache", [ - "docker-compose --profile all build --no-cache", + "docker-compose --profile local build --no-cache --parallel", "docker image prune -f", - "docker-compose run --rm ac-build bash bin/acore-docker-update", + "docker-compose run --rm ac-build bash apps/docker/docker-build-dev.sh", ], + env, ); shellCommandFactory( "build:compile", "Run the compilation process only, without rebuilding all docker images and importing db", [ - "docker-compose build ac-build", + "docker-compose build --parallel ac-build", "docker image prune -f", - "docker-compose run --rm ac-build bash acore.sh compiler build", + "docker-compose run --rm ac-build bash apps/docker/docker-build-dev.sh 0", ], + env, +); + +shellCommandFactory( + "clean:build", + "Clean build files", + [ + "docker image prune -f", + `docker-compose run --rm ac-build bash acore.sh compiler clean`, + ], + env, ); shellCommandFactory( "client-data", "Download client data inside the ac-data volume", - ["docker-compose run --rm ac-worldserver bash acore.sh client-data"], + ["docker-compose run --rm ac-build bash acore.sh client-data"], + env, ); shellCommandFactory( "db-import", "Create and upgrade the database with latest updates", ["docker-compose run --rm ac-build bash acore.sh db-assembler import-all"], + env, ); shellCommandFactory( "dev:up", - "Start the dev server container", - ["docker-compose up ac-dev-server"], + "Start the dev server container in background", + ["docker-compose up -d ac-dev-server"], + env, ); shellCommandFactory( "dev:build", "Build using the dev server, it uses volumes to compile which can be faster on linux & WSL", ["docker-compose run --rm ac-dev-server bash acore.sh compiler build"], + env, ); shellCommandFactory( "dev:dash [args...]", "Execute acore dashboard within a running ac-dev-server", ["docker-compose run --rm ac-dev-server bash acore.sh"], + env, ); shellCommandFactory( "dev:shell [args...]", "Open an interactive shell within the dev server", ["docker-compose run --rm ac-dev-server bash"], + env, +); + +shellCommandFactory( + "prod:build", + "Build producion services", + [ + "docker-compose --profile prod build --parallel", + "docker image prune -f", + ], + env, +); + +shellCommandFactory( + "prod:pull", + "Pull production services from the remote registry", + ["docker-compose --profile prod pull"], + env, +); + +shellCommandFactory( + "prod:up", + "Start production services (foreground)", + ["docker-compose --profile prod-app up"], + env, +); + +shellCommandFactory( + "prod:up:d", + "Start production services (background)", + ["docker-compose --profile prod-app up -d"], + env, ); program @@ -125,7 +171,7 @@ program if (!services) { console.error("No services available!"); - return + return; } services.pop(); @@ -144,8 +190,8 @@ program } if (!selService) { - console.log(`Service ${service} is not available`) - return; + console.log(`Service ${service} is not available`); + return; } command = `docker attach ${selService.split(" ")[0]}`; @@ -185,7 +231,7 @@ while (true) { const command = await Input.prompt({ message: "Enter the command:", }); - console.log(command) + console.log(command); await program.parseAsync(command.split(" ")); } else { await program.parseAsync(Deno.args); @@ -204,6 +250,7 @@ function shellCommandFactory( name: string, description: string, commands: string[], + env?: { [key: string]: string }, ): Command { return program .command(name) @@ -231,6 +278,7 @@ function shellCommandFactory( const shellCmd = run({ cmd, cwd: process.cwd(), + env: { ...process.env, ...env }, }); const status = await shellCmd.status(); diff --git a/bin/acore-subrepo-update b/apps/git_tools/subrepo-update.sh similarity index 99% rename from bin/acore-subrepo-update rename to apps/git_tools/subrepo-update.sh index bc05e4a042..2dd4616f0e 100755 --- a/bin/acore-subrepo-update +++ b/apps/git_tools/subrepo-update.sh @@ -15,7 +15,7 @@ ####################### set -e -ROOT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/../" +ROOT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/../../" # update all submodules git submodule update --init --recursive git submodule foreach git pull origin master diff --git a/apps/installer/includes/functions.sh b/apps/installer/includes/functions.sh index 1204362e7a..68317faa60 100644 --- a/apps/installer/includes/functions.sh +++ b/apps/installer/includes/functions.sh @@ -227,6 +227,7 @@ function inst_download_client_data { # first check if it's defined in env, otherwise use the default local path="${DATAPATH:-$AC_BINPATH_FULL}" + local zipPath="${DATAPATH_ZIP:-"$DATAPATH/data.zip"}" dataVersionFile="$path/data-version" @@ -240,9 +241,9 @@ function inst_download_client_data { return fi - echo "Downloading client data in: $path/data.zip ..." - curl -L https://github.com/wowgaming/client-data/releases/download/$VERSION/data.zip > "$path/data.zip" \ - && echo "unzip downloaded file..." && unzip -q -o "$path/data.zip" -d "$path/" \ - && echo "Remove downloaded file" && rm "$path/data.zip" \ + echo "Downloading client data in: $zipPath ..." + curl -L https://github.com/wowgaming/client-data/releases/download/$VERSION/data.zip > "$zipPath" \ + && echo "unzip downloaded file in $path..." && unzip -q -o "$zipPath" -d "$path/" \ + && echo "Remove downloaded file" && rm "$zipPath" \ && echo "INSTALLED_VERSION=$VERSION" > "$dataVersionFile" } diff --git a/apps/installer/includes/os_configs/debian.sh b/apps/installer/includes/os_configs/debian.sh index cfe5b40dbd..35346491ff 100644 --- a/apps/installer/includes/os_configs/debian.sh +++ b/apps/installer/includes/os_configs/debian.sh @@ -6,12 +6,12 @@ DEBIAN_VERSION=$(lsb_release -sr) sudo apt-get update -y +sudo apt-get install -y gdbserver gdb unzip curl libace-6.* libace-dev \ + libncurses-dev libreadline-dev clang g++ \ + gcc git cmake make ccache + if [[ $DEBIAN_VERSION -eq "10" ]]; then - sudo apt-get install -y git cmake make gcc g++ clang default-libmysqlclient-dev \ - libssl-dev libbz2-dev libreadline-dev libncurses-dev mariadb-server \ - libace-6.* libace-dev curl unzip gdb gdbserver + sudo apt-get install -y default-libmysqlclient-dev libssl-dev libreadline-dev libncurses-dev mariadb-server else # Debian 8 and 9 should work using this - sudo apt-get install -y git cmake make gcc g++ clang libmysqlclient-dev \ - libssl1.0-dev libbz2-dev libreadline-dev libncurses-dev \ - mysql-server libace-6.* libace-dev curl unzip gdb gdbserver + sudo apt-get install -y libmysqlclient-dev libssl1.0-dev mysql-server fi diff --git a/apps/installer/includes/os_configs/ubuntu.sh b/apps/installer/includes/os_configs/ubuntu.sh index d37b9c0b3a..45955eec60 100644 --- a/apps/installer/includes/os_configs/ubuntu.sh +++ b/apps/installer/includes/os_configs/ubuntu.sh @@ -8,12 +8,12 @@ UBUNTU_VERSION=$(lsb_release -sr); sudo apt-get update -y # shared deps -sudo apt-get -y install make cmake clang curl unzip libmysqlclient-dev libace-dev +sudo apt-get -y install make cmake clang curl unzip libmysqlclient-dev libace-dev ccache if [[ $CONTINUOUS_INTEGRATION || $DOCKER ]]; then sudo apt-get -y install build-essential libtool cmake-data openssl libgoogle-perftools-dev \ libssl-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev mysql-client \ - libncurses5-dev ccache curl unzip + libncurses5-dev else sudo apt-get install -y git gcc g++ gdb gdbserver \ libssl-dev libbz2-dev libreadline-dev libncurses-dev \ diff --git a/apps/installer/includes/os_configs/windows.sh b/apps/installer/includes/os_configs/windows.sh index 9a5e13f6da..95a80cbf1c 100644 --- a/apps/installer/includes/os_configs/windows.sh +++ b/apps/installer/includes/os_configs/windows.sh @@ -11,7 +11,7 @@ echo "!!README!!: Please install openssl and mysql libraries manually following # microsoft-build-tools # mysql 5.6 -choco install -y --skip-checksums cmake git git.install microsoft-build-tools +choco install -y --skip-checksums cmake git git.install microsoft-build-tools ccache choco install -y --skip-checksums mysql --version 5.6.12 echo "!!README!!: Please remember to install openssl and mysql libraries manually following our wiki" diff --git a/bin/README.md b/bin/README.md index 81af2e053f..bbc5785e83 100644 --- a/bin/README.md +++ b/bin/README.md @@ -1,7 +1,9 @@ +The following folder contains scripts aliases. Do not implement scripts here. + All bash script here must be compatible with following environments: -- *linux*: bash 4.x +- *linux*: bash 4.x -- *windows*: git for windows 2.9.3 +- *windows*: git for windows 2.9.3 - *osx* diff --git a/bin/acore-docker-update b/bin/acore-docker-update deleted file mode 100644 index 0b91b50fb6..0000000000 --- a/bin/acore-docker-update +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -CUR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -source "$CUR_PATH/acore-docker-build" - -bash acore.sh db-assembler import-all diff --git a/conf/dist/config.sh b/conf/dist/config.sh index d6bd5534b8..38730109f0 100644 --- a/conf/dist/config.sh +++ b/conf/dist/config.sh @@ -3,7 +3,7 @@ SRCPATH="$AC_PATH_ROOT" # absolute path where build files must be stored -BUILDPATH="$AC_PATH_ROOT/var/build/obj" +BUILDPATH=${BUILDPATH:-"$AC_PATH_VAR/build/obj"} # absolute path where azerothcore will be installed # NOTE: on linux the binaries are stored in a subfolder (/bin) @@ -27,6 +27,7 @@ BINPATH="$AC_PATH_ROOT/env/dist" # by the AC dashboard # default: the system will use binpath by default # DATAPATH="$BINPATH/bin" +# DATAPATH_ZIP="$DATAPATH/data.zip" ############################################## # @@ -45,7 +46,7 @@ CCOMPILERCXX="/usr/bin/clang++" # how many thread must be used for compilation ( leave zero to use all available ) -MTHREADS=0 +MTHREADS=${MTHREADS:-0} # enable/disable warnings during compilation CWARNINGS=ON # enable/disable some debug informations ( it's not a debug compilation ) @@ -63,12 +64,12 @@ CSCRIPTS=${CSCRIPTS:-ON} # compile unit tests CBUILD_TESTING=OFF # compile server -CSERVERS=ON +CSERVERS=${CSERVERS:-ON} # compile tools -CTOOLS=OFF +CTOOLS=${CTOOLS:-OFF} # use precompiled headers ( fatest compilation but not optimized if you change headers often ) -CSCRIPTPCH=ON -CCOREPCH=ON +CSCRIPTPCH=${CSCRIPTPCH:-ON} +CCOREPCH=${CCOREPCH:-ON} # enable/disable extra logs CEXTRA_LOGS=0 @@ -79,7 +80,13 @@ CDISABLED_AC_MODULES="" # you can add your custom definitions here ( -D ) # example: CCUSTOMOPTIONS=" -DWITH_PERFTOOLS=ON -DENABLE_EXTRA_LOGS=ON" # -CCUSTOMOPTIONS="" +CCUSTOMOPTIONS=${CCUSTOMOPTIONS:-''} + +# Enable ccache to speedup +# recompilations +# +AC_CCACHE=${AC_CCACHE:-false} +export CCACHE_DIR=${CCACHE_DIR:-"$AC_PATH_VAR/ccache"} ############################################## diff --git a/conf/dist/env.ac b/conf/dist/env.ac index 3e2b2a1907..b4029d7d9d 100644 --- a/conf/dist/env.ac +++ b/conf/dist/env.ac @@ -8,8 +8,10 @@ DATAPATH=/azerothcore/env/dist/data # # COMPILER # + CTYPE=RelWithDebInfo CSCRIPTS=ON +AC_CCACHE=true # # DATABASE diff --git a/docker-compose.yml b/docker-compose.yml index 3102b4cd8a..f245feaa70 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,16 @@ x-networks: &networks networks: - ac-network +x-cache-from: &cache-from + cache_from: + - acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-master} + - acore/ac-wotlk-authserver-local:${DOCKER_IMAGE_TAG:-master} + - acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master} + - acore/ac-wotlk-worldserver-local:${DOCKER_IMAGE_TAG:-master} + - acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master} + - acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-master} + #- acore/ac-wotlk-client-data-server:${DOCKER_IMAGE_TAG:-master} + x-ac-shared-conf: &ac-shared-conf <<: *networks working_dir: /azerothcore @@ -23,11 +33,9 @@ services: image: local/azerothcore/abstract-bind volumes: - .:/azerothcore/ - # env dir shared between services - # we cannot use /env/dist to avoid permission issues - - ac-env:/azerothcore/env # expose some dist folder outside allowing the host to use them - ${DOCKER_VOL_CONF:-./conf}:/azerothcore/conf + - ${DOCKER_VOL_BIN:-ac-bin}:/azerothcore/env/dist/bin - ${DOCKER_VOL_ETC:-./env/docker/etc}:/azerothcore/env/dist/etc # [osxfs optimization]: https://stackoverflow.com/a/63437557/1964544 - ${DOCKER_VOL_LOGS:-./env/docker/logs}:/azerothcore/env/dist/logs:delegated @@ -42,7 +50,7 @@ services: #======================= # -# Applications +# DATABASE # #======================= @@ -67,6 +75,11 @@ services: timeout: 10s retries: 40 +#======================= +# +# APP Services +# +#======================= ac-worldserver: <<: *ac-shared-conf @@ -74,7 +87,7 @@ services: stdin_open: true tty: true command: ./acore.sh run-worldserver - image: acore/worldserver:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally + image: acore/ac-wotlk-worldserver-local:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} @@ -82,44 +95,40 @@ services: privileged: true build: context: . - target: ${DOCKER_BUILD_WORLD_TARGET:-worldserver-local} + target: worldserver-local dockerfile: ./apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} - cache_from: - - acore/authserver:${DOCKER_IMAGE_TAG:-master} - - acore/dev-server:${DOCKER_IMAGE_TAG:-master} + <<: *cache-from ports: - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 - profiles: [all, app, worldserver] + profiles: [local, app, worldserver] ac-authserver: <<: *ac-shared-conf extends: ${DOCKER_EXTENDS_BIND:-abstract-bind} tty: true command: ./acore.sh run-authserver - image: acore/authserver:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally + image: acore/ac-wotlk-authserver-local:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally restart: unless-stopped env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} user: ${DOCKER_USER:-acore} build: context: . - target: ${DOCKER_BUILD_AUTH_TARGET:-authserver-local} + target: authserver-local dockerfile: ./apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} - cache_from: - - acore/worldserver:${DOCKER_IMAGE_TAG:-master} - - acore/dev-server:${DOCKER_IMAGE_TAG:-master} + <<: *cache-from ports: - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 - profiles: [all, app, authserver] + profiles: [local, app, authserver] #====================== # @@ -129,33 +138,34 @@ services: ac-build: <<: *ac-shared-conf extends: ${DOCKER_EXTENDS_BIND:-abstract-bind} - image: acore/dev-server:${DOCKER_IMAGE_TAG:-master} + image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master} build: context: . - target: dev + target: ${DOCKER_AC_BUILD_TARGET:-dev} dockerfile: ./apps/docker/Dockerfile args: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} - cache_from: - - acore/dev-server:${DOCKER_IMAGE_TAG:-master} + <<: *cache-from env_file: ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} working_dir: /azerothcore/ volumes: - - ac-build:/azerothcore/var/build + - ${DOCKER_VOL_BUILD:-ac-build}:/azerothcore/var/build + # with this conf you can use an external path for it (useful for CI) + - ${DOCKER_VOL_CCACHE:-ac-ccache}:/azerothcore/var/ccache # use internal copied files instead of volumes - /azerothcore/src - /azerothcore/data - /azerothcore/modules - profiles: [all, build] + profiles: [local, build] ac-dev-server: <<: *ac-shared-conf extends: ${DOCKER_EXTENDS_BIND:-abstract-bind} tty: true - image: acore/dev-server:${DOCKER_IMAGE_TAG:-master} + image: acore/ac-wotlk-dev-server:${DOCKER_IMAGE_TAG:-master} build: context: . target: dev @@ -164,8 +174,7 @@ services: USER_ID: ${DOCKER_USER_ID:-1000} GROUP_ID: ${DOCKER_GROUP_ID:-1000} DOCKER_USER: ${DOCKER_USER:-acore} - cache_from: - - acore/dev-server:${DOCKER_IMAGE_TAG:-master} + <<: *cache-from security_opt: - seccomp:unconfined env_file: @@ -179,16 +188,116 @@ services: - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 volumes: - ac-build-dev:/azerothcore/var/build - profiles: [all, dev] + - ac-ccache-dev:/azerothcore/var/ccache + # this is not the directory of the extracted data! It's the client folder used by the extractors + - ${DOCKER_CLIENT_DATA_FOLDER:-./var/client}:/azerothcore/env/dist/bin/Data + profiles: [dev] + +#====================== +# +# Production services +# +#====================== + + ac-worldserver-prod: + <<: *ac-shared-conf + stdin_open: true + tty: true + command: ./acore.sh run-worldserver + image: acore/ac-wotlk-worldserver:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally + restart: unless-stopped + env_file: + ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} + user: ${DOCKER_USER:-acore} + privileged: true + build: + context: . + target: worldserver + dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + <<: *cache-from + ports: + - ${DOCKER_WORLD_EXTERNAL_PORT:-8085}:8085 + - ${DOCKER_SOAP_EXTERNAL_PORT:-7878}:7878 + volumes: + - ${DOCKER_VOL_LOGS:-./env/docker/logs}:/azerothcore/env/dist/logs:delegated + volumes_from: + - ac-client-data-server:ro depends_on: - ac-database: - condition: service_healthy + - ac-client-data-server + profiles: [prod, prod-app, prod-worldserver] + + ac-authserver-prod: + <<: *ac-shared-conf + tty: true + command: ./acore.sh run-authserver + image: acore/ac-wotlk-authserver:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally + restart: unless-stopped + env_file: + ${DOCKER_AC_ENV_FILE:-conf/dist/env.ac} + user: ${DOCKER_USER:-acore} + build: + context: . + target: authserver + dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + <<: *cache-from + volumes: + - ${DOCKER_VOL_LOGS:-./env/docker/logs}:/azerothcore/env/dist/logs:delegated + ports: + - ${DOCKER_AUTH_EXTERNAL_PORT:-3724}:3724 + profiles: [prod, prod-app, prod-authserver] + + ac-client-data-server: + image: acore/ac-wotlk-client-data:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally + user: ${DOCKER_USER:-acore} + build: + context: . + target: client-data + dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + <<: *cache-from + volumes: + - /azerothcore/env/dist/data + profiles: [prod, prod-app, clientdata] + + ac-tools: + image: acore/ac-wotlk-tools:${DOCKER_IMAGE_TAG:-master} # name of the generated image after built locally + user: ${DOCKER_USER:-acore} + build: + context: . + target: tools + dockerfile: ./apps/docker/Dockerfile + args: + USER_ID: ${DOCKER_USER_ID:-1000} + GROUP_ID: ${DOCKER_GROUP_ID:-1000} + DOCKER_USER: ${DOCKER_USER:-acore} + <<: *cache-from + working_dir: /azerothcore/env/client/ + volumes: + - ${DOCKER_CLIENT_DATA_FOLDER:-./var/client}:/azerothcore/env/client/Data + - ${DOCKER_VOL_TOOLS_DBC:-./var/extractors/dbc}:/azerothcore/env/client/dbc + - ${DOCKER_VOL_TOOLS_MAPS:-./var/extractors/maps}:/azerothcore/env/client/maps + - ${DOCKER_VOL_TOOLS_VMAPS:-./var/extractors/vmaps}:/azerothcore/env/client/vmaps + - ${DOCKER_VOL_TOOLS_MMAPS:-./var/extractors/mmaps}:/azerothcore/env/client/mmaps + profiles: [prod, tools] volumes: ac-database: - ac-env: + ac-bin: ac-build-dev: ac-build: + ac-ccache-dev: + ac-ccache: ac-proj: # not used, but you can use them by setting # the DOCKER_VOL_* env variabiles @@ -196,6 +305,7 @@ volumes: ac-etc: ac-logs: ac-client-data: + ac-client-data-prod: networks: ac-network: diff --git a/env/docker/bin/.gitkeep b/env/docker/bin/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cmake/compiler/clang/settings.cmake b/src/cmake/compiler/clang/settings.cmake index fecfb2edc4..b3eb165f60 100644 --- a/src/cmake/compiler/clang/settings.cmake +++ b/src/cmake/compiler/clang/settings.cmake @@ -3,6 +3,12 @@ # Copyright (C) 2008-2019 TrinityCore # +if ((USE_COREPCH OR USE_SCRIPTPCH) AND (CMAKE_C_COMPILER_LAUNCHER STREQUAL "ccache" OR CMAKE_CXX_COMPILER_LAUNCHER STREQUAL "ccache")) + message(STATUS "Clang: disable pch timestamp when ccache and pch enabled") + # TODO: for ccache https://github.com/ccache/ccache/issues/539 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -fno-pch-timestamp") +endif() + # Set build-directive (used in core to tell which buildtype we used) target_compile_definitions(acore-compile-option-interface INTERFACE diff --git a/var/ccache/.gitkeep b/var/ccache/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/var/docker/build/.gitkeep b/var/docker/build/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/var/docker/ccache/.gitkeep b/var/docker/ccache/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/var/extractors/dbc/.gitkeep b/var/extractors/dbc/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/var/extractors/maps/.gitkeep b/var/extractors/maps/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/var/extractors/mmaps/.gitkeep b/var/extractors/mmaps/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/var/extractors/vmaps/.gitkeep b/var/extractors/vmaps/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 From 9102b425266703c65f6a4b19676dfafbeff8fb48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefano=20Borz=C3=AC?= Date: Tue, 4 May 2021 11:54:36 +0200 Subject: [PATCH 068/108] fix(DB/creature_formations): hezrul bodyguards path and formations (#5528) --- .../pending_db_world/rev_1619636650124390405.sql | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619636650124390405.sql diff --git a/data/sql/updates/pending_db_world/rev_1619636650124390405.sql b/data/sql/updates/pending_db_world/rev_1619636650124390405.sql new file mode 100644 index 0000000000..30b40ed2e5 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619636650124390405.sql @@ -0,0 +1,15 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619636650124390405'); + +DELETE FROM `waypoint_data` WHERE `id` IN (139910, 139920); +DELETE FROM `creature_addon` WHERE (`guid` IN (13991, 13992)); + +DELETE FROM `creature` WHERE (`id` = 3397) AND (`guid` IN (13991, 13992)); +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(13991, 3397, 1, 0, 0, 1, 1, 9447, 1, -1168.06, -2040.54, 92.2584, 0.481264, 275, 0, 1, 235, 295, 0, 0, 0, 0, '', 0), +(13992, 3397, 1, 0, 0, 1, 1, 9447, 1, -1168.91, -2043.24, 92.2584, 0.481511, 275, 0, 1, 235, 295, 0, 0, 0, 0, '', 0); + +DELETE FROM `creature_formations` WHERE `leaderGUID`=13990; +INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`groupAI`,`point_1`,`point_2`) VALUES +(13990,13990,0,0,515,0,0), +(13990,13991,3,80,515,0,0), +(13990,13992,3,280,515,0,0); From 7910918d2fd47d29d2b6b819b2f56f44aedad5e4 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Tue, 4 May 2021 12:27:46 +0200 Subject: [PATCH 069/108] hotfix(docker): login before push --- .github/workflows/docker_build.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index de3c053c98..74542b3d27 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -38,6 +38,14 @@ jobs: # password: ${{ secrets.DOCKERHUB_TOKEN }} # compose_file: docker-compose.yml + - name: Login to Docker Hub + if: ${{ steps.extract_branch.outputs.branch == 'master' }} + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # before cache # needed to avoid ccache injected into these images - name: Build Dev @@ -58,13 +66,6 @@ jobs: run: | docker-compose --profile dev --profile local push - - name: Login to Docker Hub - if: ${{ steps.extract_branch.outputs.branch == 'master' }} - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Cache uses: actions/cache@v2 with: From f8b817a8fef40cc4f66ef534f1a15d7c7ab0808f Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 4 May 2021 11:34:59 +0000 Subject: [PATCH 070/108] chore(DB): import pending SQL update file Referenced commit(s): 7910918d2fd47d29d2b6b819b2f56f44aedad5e4 --- .../2021_05_04_06.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619636650124390405.sql => db_world/2021_05_04_06.sql} (59%) diff --git a/data/sql/updates/pending_db_world/rev_1619636650124390405.sql b/data/sql/updates/db_world/2021_05_04_06.sql similarity index 59% rename from data/sql/updates/pending_db_world/rev_1619636650124390405.sql rename to data/sql/updates/db_world/2021_05_04_06.sql index 30b40ed2e5..24f6bfad94 100644 --- a/data/sql/updates/pending_db_world/rev_1619636650124390405.sql +++ b/data/sql/updates/db_world/2021_05_04_06.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_04_05 -> 2021_05_04_06 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_05'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_05 2021_05_04_06 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619636650124390405'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619636650124390405'); DELETE FROM `waypoint_data` WHERE `id` IN (139910, 139920); @@ -13,3 +29,12 @@ INSERT INTO `creature_formations` (`leaderGUID`,`memberGUID`,`dist`,`angle`,`gro (13990,13990,0,0,515,0,0), (13990,13991,3,80,515,0,0), (13990,13992,3,280,515,0,0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 44ecd5a4cb043b2660fb861a342453c9700aa601 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 4 May 2021 15:21:29 +0200 Subject: [PATCH 071/108] chore(template): Make them less intimidating (#5569) --- .github/ISSUE_TEMPLATE/bug_report.md | 93 +++++++--------------------- pull_request_template.md | 49 ++++----------- 2 files changed, 34 insertions(+), 108 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 89d0cd999c..0424dab5ec 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -7,91 +7,40 @@ assignees: '' --- - +[//]: # (IF YOU DO NOT FILL THIS TEMPLATE OUT, WE WILL CLOSE YOUR ISSUE) +[//]: # (You should always read how to properly fill out the bug report before continuing. https://www.azerothcore.org/wiki/issue-tracker-standards) +[//]: # (For issues containing a fix, please create a Pull Request following this tutorial: https://www.azerothcore.org/wiki/How-to-create-a-PR) - +**CURRENT BEHAVIOUR:** +[//]: # (If this is a crash report you should post the crashlog. Upload it to https://gist.github.com/) +**EXPECTED BLIZZLIKE BEHAVIOUR:** +[//]: # (What should happen instead) -## CURRENT BEHAVIOUR: - +**SOURCE:** +[//]: # (If you can, include a source that can strengthen your claim) - - - -## EXPECTED BLIZZLIKE BEHAVIOUR: - - - - - -## SOURCE: - - - - - -## STEPS TO REPRODUCE THE PROBLEM: - +**STEPS TO REPRODUCE THE PROBLEM:** +[//]: # (Describe in a detailed step-by-step order how to reproduce the issue) 1. 2. 3. -## EXTRA NOTES: - +**EXTRA NOTES:** +[//]: # (Any extra notes that can help solve the issue) +**AC HASH/COMMIT:** +[//]: # (Always include the exact hash/commit you are using. Never write "latest"!) +**OPERATING SYSTEM:** +[//]: # (Which OS are you running) +**MODULES:** +[//]: # (Are you using any modules? List them here) -## AC HASH/COMMIT: - - - - - -## OPERATING SYSTEM: - - - - - -## MODULES: - - - - - -## CUSTOMIZATIONS: - - - - +**CUSTOMIZATIONS:** +[//]: # (Do you have any other customizations? List them here) - +[//]: # (First of all, THANK YOU for your contribution.) ## Changes Proposed: - - - ## Issues Addressed: +[//]: # (If your fix has a relating issue, link it below) - Closes - - ## SOURCE: - - +[//]: # (If you can, include a source that can strengthen your claim) ## Tests Performed: - +[//]: # (Does it build without errors? Did you test in-game? What did you test? On which OS did you test? Describe any other tests performed) - - ## How to Test the Changes: - +[//]: # (Describe in a detailed step-by-step order how to test the changes) +1. +2. +3. ## Known Issues and TODO List: - +[//]: # (Is there anything else left to do after this PR?) + +- [ ] - [ ] -- [ ] - -## Target Branch(es): -- [x] Master - - - - - - - - +[//]: # (If you intend to contribute repeatedly to our project, it is a good idea to join our discord channel. We set ranks for our contributors and give them access to special resources or knowledge: https://discord.com/invite/DasJqPba) +[//]: # (Do not remove the instructions below about testing, they will help users to test your PR) ## How to Test AzerothCore PRs When a PR is ready to be tested, it will be marked as **[WAITING TO BE TESTED]**. From 367f3f53affbe40ddb4c72e121ee919ffcb29ef5 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 4 May 2021 15:32:45 +0200 Subject: [PATCH 072/108] docs(template): fix comment (#5634) --- .github/ISSUE_TEMPLATE/bug_report.md | 24 ++++++++++++------------ pull_request_template.md | 16 ++++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0424dab5ec..11bd83499c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -7,40 +7,40 @@ assignees: '' --- -[//]: # (IF YOU DO NOT FILL THIS TEMPLATE OUT, WE WILL CLOSE YOUR ISSUE) -[//]: # (You should always read how to properly fill out the bug report before continuing. https://www.azerothcore.org/wiki/issue-tracker-standards) -[//]: # (For issues containing a fix, please create a Pull Request following this tutorial: https://www.azerothcore.org/wiki/How-to-create-a-PR) + **CURRENT BEHAVIOUR:** -[//]: # (If this is a crash report you should post the crashlog. Upload it to https://gist.github.com/) + **EXPECTED BLIZZLIKE BEHAVIOUR:** -[//]: # (What should happen instead) + **SOURCE:** -[//]: # (If you can, include a source that can strengthen your claim) + **STEPS TO REPRODUCE THE PROBLEM:** -[//]: # (Describe in a detailed step-by-step order how to reproduce the issue) + 1. 2. 3. **EXTRA NOTES:** -[//]: # (Any extra notes that can help solve the issue) + **AC HASH/COMMIT:** -[//]: # (Always include the exact hash/commit you are using. Never write "latest"!) + **OPERATING SYSTEM:** -[//]: # (Which OS are you running) + **MODULES:** -[//]: # (Are you using any modules? List them here) + **CUSTOMIZATIONS:** -[//]: # (Do you have any other customizations? List them here) + ## Changes Proposed: - - ## Issues Addressed: -[//]: # (If your fix has a relating issue, link it below) + - Closes ## SOURCE: -[//]: # (If you can, include a source that can strengthen your claim) + ## Tests Performed: -[//]: # (Does it build without errors? Did you test in-game? What did you test? On which OS did you test? Describe any other tests performed) + - - ## How to Test the Changes: -[//]: # (Describe in a detailed step-by-step order how to test the changes) + 1. 2. 3. ## Known Issues and TODO List: -[//]: # (Is there anything else left to do after this PR?) + - [ ] - [ ] -[//]: # (If you intend to contribute repeatedly to our project, it is a good idea to join our discord channel. We set ranks for our contributors and give them access to special resources or knowledge: https://discord.com/invite/DasJqPba) -[//]: # (Do not remove the instructions below about testing, they will help users to test your PR) + ## How to Test AzerothCore PRs When a PR is ready to be tested, it will be marked as **[WAITING TO BE TESTED]**. From 01f188fcf5d5b17bbdb0a009139871dd490361a4 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Tue, 4 May 2021 18:41:55 +0200 Subject: [PATCH 073/108] fix(docker): reduced client-data image of 200% --- apps/docker/Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile index b639d84f73..954972fcde 100644 --- a/apps/docker/Dockerfile +++ b/apps/docker/Dockerfile @@ -244,12 +244,10 @@ RUN addgroup --gid $GROUP_ID acore && \ ENV DATAPATH=/azerothcore/env/dist/data ENV DATAPATH_ZIP=/tmp/data.zip -RUN --mount=type=bind,target=/azerothcore-temp,readwrite /azerothcore-temp/acore.sh client-data +RUN --mount=type=bind,target=/azerothcore-temp,readwrite /azerothcore-temp/acore.sh client-data && chown -R $DOCKER_USER:$DOCKER_USER /azerothcore RUN apt-get remove --purge -y tzdata curl unzip && apt-get autoremove -y -RUN chown -R $DOCKER_USER:$DOCKER_USER /azerothcore - USER $DOCKER_USER #================================================================ From 545a045273b8cea9dfcf8e51e263732d1f7c281a Mon Sep 17 00:00:00 2001 From: Kargatum Date: Wed, 5 May 2021 00:30:52 +0700 Subject: [PATCH 074/108] chore(Core/SharedDefines): move SharedDefines.h to shared lib (#5518) - Part #5397 --- src/server/{game/Miscellaneous => shared}/SharedDefines.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/server/{game/Miscellaneous => shared}/SharedDefines.h (100%) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/shared/SharedDefines.h similarity index 100% rename from src/server/game/Miscellaneous/SharedDefines.h rename to src/server/shared/SharedDefines.h From 74a54b49277797e6ad063c67d068d66856f363a9 Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Tue, 4 May 2021 22:36:36 +0200 Subject: [PATCH 075/108] fix(DB/broadcast_text): fix Stormwind guard Shaman trainer text (#5537) * fix(DB/broadcast_text): fix stormwind guard shaman trainer text * remove BroadcastTextID instead of changing broadcast_text --- data/sql/updates/pending_db_world/rev_1619681545150953400.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619681545150953400.sql diff --git a/data/sql/updates/pending_db_world/rev_1619681545150953400.sql b/data/sql/updates/pending_db_world/rev_1619681545150953400.sql new file mode 100644 index 0000000000..1911b7e251 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619681545150953400.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619681545150953400'); + +UPDATE `npc_text` SET `BroadcastTextID0` = 0 WHERE `ID` = 10106 AND `BroadcastTextID0` = 18360; -- Unlink incorrect broadcast text from Stormwind guard (Class Trainer > Shaman) From e25e75d34263a597ac8240d5f45beca3aa962e7e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 4 May 2021 20:38:10 +0000 Subject: [PATCH 076/108] chore(DB): import pending SQL update file Referenced commit(s): 74a54b49277797e6ad063c67d068d66856f363a9 --- data/sql/updates/db_world/2021_05_04_07.sql | 28 +++++++++++++++++++ .../rev_1619681545150953400.sql | 3 -- 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_04_07.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619681545150953400.sql diff --git a/data/sql/updates/db_world/2021_05_04_07.sql b/data/sql/updates/db_world/2021_05_04_07.sql new file mode 100644 index 0000000000..6fd5b1ac06 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_04_07.sql @@ -0,0 +1,28 @@ +-- DB update 2021_05_04_06 -> 2021_05_04_07 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_06'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_06 2021_05_04_07 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619681545150953400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619681545150953400'); + +UPDATE `npc_text` SET `BroadcastTextID0` = 0 WHERE `ID` = 10106 AND `BroadcastTextID0` = 18360; -- Unlink incorrect broadcast text from Stormwind guard (Class Trainer > Shaman) + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619681545150953400.sql b/data/sql/updates/pending_db_world/rev_1619681545150953400.sql deleted file mode 100644 index 1911b7e251..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619681545150953400.sql +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619681545150953400'); - -UPDATE `npc_text` SET `BroadcastTextID0` = 0 WHERE `ID` = 10106 AND `BroadcastTextID0` = 18360; -- Unlink incorrect broadcast text from Stormwind guard (Class Trainer > Shaman) From cc0192ad028309d9e65bf71eed07e4cf8cff8049 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Wed, 5 May 2021 00:08:52 -0600 Subject: [PATCH 077/108] fix(DB/creature): Adjust spawn time for Saltscale murlocs (#5614) --- .../updates/pending_db_world/rev_1620067514646031100.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1620067514646031100.sql diff --git a/data/sql/updates/pending_db_world/rev_1620067514646031100.sql b/data/sql/updates/pending_db_world/rev_1620067514646031100.sql new file mode 100644 index 0000000000..4a2f5b73ae --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1620067514646031100.sql @@ -0,0 +1,9 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620067514646031100'); + +UPDATE `creature` SET `spawntimesecs`=300 WHERE `id` IN ( +877, -- Saltscale Forager +879, -- Saltscale Hunter +871, -- Saltscale Warrior +873, -- Saltscale Oracle +875); -- Saltscale Tide Lord + From d0ea033f3d787043cec5067b5fc196e7863770a8 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 5 May 2021 06:10:37 +0000 Subject: [PATCH 078/108] chore(DB): import pending SQL update file Referenced commit(s): cc0192ad028309d9e65bf71eed07e4cf8cff8049 --- data/sql/updates/db_world/2021_05_05_00.sql | 34 +++++++++++++++++++ .../rev_1620067514646031100.sql | 9 ----- 2 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_05_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1620067514646031100.sql diff --git a/data/sql/updates/db_world/2021_05_05_00.sql b/data/sql/updates/db_world/2021_05_05_00.sql new file mode 100644 index 0000000000..ea7ded753f --- /dev/null +++ b/data/sql/updates/db_world/2021_05_05_00.sql @@ -0,0 +1,34 @@ +-- DB update 2021_05_04_07 -> 2021_05_05_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_04_07'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_04_07 2021_05_05_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1620067514646031100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620067514646031100'); + +UPDATE `creature` SET `spawntimesecs`=300 WHERE `id` IN ( +877, -- Saltscale Forager +879, -- Saltscale Hunter +871, -- Saltscale Warrior +873, -- Saltscale Oracle +875); -- Saltscale Tide Lord + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1620067514646031100.sql b/data/sql/updates/pending_db_world/rev_1620067514646031100.sql deleted file mode 100644 index 4a2f5b73ae..0000000000 --- a/data/sql/updates/pending_db_world/rev_1620067514646031100.sql +++ /dev/null @@ -1,9 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620067514646031100'); - -UPDATE `creature` SET `spawntimesecs`=300 WHERE `id` IN ( -877, -- Saltscale Forager -879, -- Saltscale Hunter -871, -- Saltscale Warrior -873, -- Saltscale Oracle -875); -- Saltscale Tide Lord - From ad5ba1a7e893ee2eaf72aa8c9919df7b740f2b72 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Wed, 5 May 2021 01:11:44 -0600 Subject: [PATCH 079/108] fix(DB/smart_scripts): Event quest "The Missing Diplomat" / Old Town Thugs (#5618) --- .../rev_1620070589328456500.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1620070589328456500.sql diff --git a/data/sql/updates/pending_db_world/rev_1620070589328456500.sql b/data/sql/updates/pending_db_world/rev_1620070589328456500.sql new file mode 100644 index 0000000000..a8ee10d0d5 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1620070589328456500.sql @@ -0,0 +1,22 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620070589328456500'); + +-- Spawn -> combat +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=4969; +DELETE FROM `smart_scripts` WHERE `entryorguid`=4969 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4969, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 38, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Old Town Thug - On spawn - Set in combat with zone'); + +-- Stop combat +DELETE FROM `smart_scripts` WHERE `entryorguid`=4961 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4961, 0, 4, 0, 2, 0, 100, 0, 0, 15, 0, 0, 0, 2, 84, 0, 0, 0, 0, 0, 11, 4969, 50, 1, 0, 0, 0, 0, 0, 'Dashel Stonefist - Between 0-15% Health - Set minions friendly'); + +-- Better text handling but dialogues from Old Town Thug are still not fixed here +UPDATE `creature_text` SET `CreatureID`=4969, `ID`=1 WHERE `CreatureID`=38867 AND `GroupID`=0 AND `ID`=0; +UPDATE `creature_text` SET `GroupID`=1, `ID`=0 WHERE `CreatureID`=4969 AND `GroupID`=0 AND `ID`=1; + +-- Despawn both Old Town Thug if they're alive +DELETE FROM `smart_scripts` WHERE `entryorguid`=4961 AND `source_type`=0 AND `id`=5; +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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4961, 0, 5, 0, 2, 0, 100, 0, 0, 15, 0, 0, 0, 41, 10000, 0, 0, 0, 0, 0, 11, 4969, 50, 1, 0, 0, 0, 0, 0, 'Dashel Stonefist - Between 0-15% Health - Despawn minions in 10s'); + From a67c5678b7ab35441389ccda3b4b58d945ed4c2f Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 5 May 2021 07:13:19 +0000 Subject: [PATCH 080/108] chore(DB): import pending SQL update file Referenced commit(s): ad5ba1a7e893ee2eaf72aa8c9919df7b740f2b72 --- .../2021_05_05_01.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1620070589328456500.sql => db_world/2021_05_05_01.sql} (78%) diff --git a/data/sql/updates/pending_db_world/rev_1620070589328456500.sql b/data/sql/updates/db_world/2021_05_05_01.sql similarity index 78% rename from data/sql/updates/pending_db_world/rev_1620070589328456500.sql rename to data/sql/updates/db_world/2021_05_05_01.sql index a8ee10d0d5..83ab83433a 100644 --- a/data/sql/updates/pending_db_world/rev_1620070589328456500.sql +++ b/data/sql/updates/db_world/2021_05_05_01.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_05_00 -> 2021_05_05_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_05_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_05_00 2021_05_05_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1620070589328456500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620070589328456500'); -- Spawn -> combat @@ -20,3 +36,12 @@ DELETE FROM `smart_scripts` WHERE `entryorguid`=4961 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES (4961, 0, 5, 0, 2, 0, 100, 0, 0, 15, 0, 0, 0, 41, 10000, 0, 0, 0, 0, 0, 11, 4969, 50, 1, 0, 0, 0, 0, 0, 'Dashel Stonefist - Between 0-15% Health - Despawn minions in 10s'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 48a0c72604aef01b2b93cbef4ab7f58fc07b19a9 Mon Sep 17 00:00:00 2001 From: Patrick Lewis Date: Wed, 5 May 2021 01:59:09 -0700 Subject: [PATCH 081/108] feat(CI): trigger windows build on comment (#5643) --- .github/workflows/windows_build.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index f7e98035dc..34ae05b975 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -3,7 +3,8 @@ on: push: branches: - 'master' - pull_request: + issue_comment: + types: [created] jobs: windows-build: @@ -13,22 +14,34 @@ jobs: name: windows-2019-MSVC16 if: github.repository == 'azerothcore/azerothcore-wotlk' steps: + - uses: khan/pull-request-comment-trigger@master + id: check + with: + trigger: 'run-build' + reaction: rocket + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 + if: steps.check.outputs.triggered == 'true' - name: Configure OS run: choco install --no-progress openssl + if: steps.check.outputs.triggered == 'true' - name: Build shell: bash + if: steps.check.outputs.triggered == 'true' run: | mkdir -p build && cd build cmake .. -DTOOLS=ON cmake --build . --config Release --parallel 4 - name: Copy dll files shell: bash + if: steps.check.outputs.triggered == 'true' run: | cp "/c/mysql-5.7.21-winx64/lib/libmysql.dll" "build/bin/Release/" cp "/c/Program Files/OpenSSL-Win64/bin/libcrypto-1_1-x64.dll" "build/bin/Release/" cp "/c/Program Files/OpenSSL-Win64/bin/libssl-1_1-x64.dll" "build/bin/Release/" - uses: actions/upload-artifact@v2 + if: steps.check.outputs.triggered == 'true' with: name: windows-2019-MSVC16-release path: build/bin/Release From 53985fc6392fff8e52da21967dbc6defedfe9190 Mon Sep 17 00:00:00 2001 From: Patrick Lewis Date: Wed, 5 May 2021 03:40:29 -0700 Subject: [PATCH 082/108] Revert "feat(CI): trigger windows build on comment (#5643)" (#5647) This reverts commit 48a0c72604aef01b2b93cbef4ab7f58fc07b19a9. --- .github/workflows/windows_build.yml | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index 34ae05b975..f7e98035dc 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -3,8 +3,7 @@ on: push: branches: - 'master' - issue_comment: - types: [created] + pull_request: jobs: windows-build: @@ -14,34 +13,22 @@ jobs: name: windows-2019-MSVC16 if: github.repository == 'azerothcore/azerothcore-wotlk' steps: - - uses: khan/pull-request-comment-trigger@master - id: check - with: - trigger: 'run-build' - reaction: rocket - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: actions/checkout@v2 - if: steps.check.outputs.triggered == 'true' - name: Configure OS run: choco install --no-progress openssl - if: steps.check.outputs.triggered == 'true' - name: Build shell: bash - if: steps.check.outputs.triggered == 'true' run: | mkdir -p build && cd build cmake .. -DTOOLS=ON cmake --build . --config Release --parallel 4 - name: Copy dll files shell: bash - if: steps.check.outputs.triggered == 'true' run: | cp "/c/mysql-5.7.21-winx64/lib/libmysql.dll" "build/bin/Release/" cp "/c/Program Files/OpenSSL-Win64/bin/libcrypto-1_1-x64.dll" "build/bin/Release/" cp "/c/Program Files/OpenSSL-Win64/bin/libssl-1_1-x64.dll" "build/bin/Release/" - uses: actions/upload-artifact@v2 - if: steps.check.outputs.triggered == 'true' with: name: windows-2019-MSVC16-release path: build/bin/Release From 37c3e05140bbbe202bc7eec6875f42154d49e0c3 Mon Sep 17 00:00:00 2001 From: KiK0 Date: Wed, 5 May 2021 06:17:48 -0700 Subject: [PATCH 083/108] feat(DB/Locales): missing esES & esMX quest locales [PART 2] (#5510) --- .../rev_1619616408121276500.sql | 1099 +++++++++++++++++ 1 file changed, 1099 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619616408121276500.sql diff --git a/data/sql/updates/pending_db_world/rev_1619616408121276500.sql b/data/sql/updates/pending_db_world/rev_1619616408121276500.sql new file mode 100644 index 0000000000..4987d953b0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619616408121276500.sql @@ -0,0 +1,1099 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619616408121276500'); + +-- 8355 ¡Truco o trato! +-- https://es.classic.wowhead.com/quest=8355 +SET @ID := 8355; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Haz el tren para Talvash', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bueno, adelante ahora...', 0), +(@ID, 'esMX', 'Bueno, adelante ahora...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Chú, chú! ¡Bien hecho, $n! Aquí tienes tu premio.$B$B¡Feliz día de Halloween!', 0), +(@ID, 'esMX', '¡Chú, chú! ¡Bien hecho, $n! Aquí tienes tu premio.$B$B¡Feliz día de Halloween!', 0); +-- 8356 Saca músculo a cambio de almendrados +-- https://es.classic.wowhead.com/quest=8356 +SET @ID := 8356; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Saca músculos para la tabernera Allison', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +UPDATE `quest_offer_reward_locale` SET `RewardText` = '¡Ja, ja, eres muy $gpoderoso:poderosa;! Bien hecho, gracias por tener tan buen talante. Aquí tienes tus caramelos.$B$B¡Feliz Halloween, $n!', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +-- 8357 Bailando por mazapanes +-- https://es.classic.wowhead.com/quest=8357 +SET @ID := 8357; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Baila para la tabernera Saelienne', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sabes bailar, ¿no? Intenta poner tu pie derecho adentro... luego tu pie derecho afuera... tu pie derecho adentro... sacúdelo todo...', 0), +(@ID, 'esMX', 'Sabes bailar, ¿no? Intenta poner tu pie derecho adentro... luego tu pie derecho afuera... tu pie derecho adentro... sacúdelo todo...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Vaya, $n! ¡Eres $gun bailarín nato:una bailarina nata;!$B$BAquí tienes tu recompensa por haber participado. ¡Feliz Halloween! ¡Saluda a tu amiguito enfermo! Espero que se recupere pronto.', 0), +(@ID, 'esMX', '¡Vaya, $n! ¡Eres $gun bailarín nato:una bailarina nata;!$B$BAquí tienes tu recompensa por haber participado. ¡Feliz Halloween! ¡Saluda a tu amiguito enfermo! Espero que se recupere pronto.', 0); +-- 8358 ¡Truco o trato! +-- https://es.classic.wowhead.com/quest=8358 +SET @ID := 8358; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Haz el tren para Kali Remik', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bueno, adelante ahora...', 0), +(@ID, 'esMX', 'Bueno, adelante ahora...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Chú, chú! ¡Bien hecho, $n! Aquí tienes tu premio.$B$B¡Feliz día de Halloween!', 0), +(@ID, 'esMX', '¡Chú, chú! ¡Bien hecho, $n! Aquí tienes tu premio.$B$B¡Feliz día de Halloween!', 0); +-- 8359 Saca músculo a cambio de almendrados +-- https://es.classic.wowhead.com/quest=8359 +SET @ID := 8359; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Saca músculo para la tabernera Gryshka', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Nada de dulces hasta que saques músculo para mí, $n...', 0), +(@ID, 'esMX', 'Nada de dulces hasta que saques músculo para mí, $n...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Ja, ja, eres muy $gpoderoso:poderosa;! Bien hecho, gracias por tener tan buen talante. Aquí tienes tus caramelos.$B$B¡Feliz Halloween, $n!', 0), +(@ID, 'esMX', '¡Ja, ja, eres muy $gpoderoso:poderosa;! Bien hecho, gracias por tener tan buen talante. Aquí tienes tus caramelos.$B$B¡Feliz Halloween, $n!', 0); +-- 8360 Bailando por mazapanes +-- https://es.classic.wowhead.com/quest=8360 +SET @ID := 8360; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Baila para la tabernera Pala', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sabes bailar, ¿no? Intenta poner tu pie derecho adentro... luego tu pie derecho afuera... tu pie derecho adentro... sacúdelo todo...', 0), +(@ID, 'esMX', 'Sabes bailar, ¿no? Intenta poner tu pie derecho adentro... luego tu pie derecho afuera... tu pie derecho adentro... sacúdelo todo...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Vaya, $n! ¡Eres $gun bailarín nato:una bailarina nata;!$B$BAquí tienes tu recompensa por haber participado. ¡Feliz Halloween! ¡Saluda a tu amiguito enfermo! Espero que se recupere pronto.', 0), +(@ID, 'esMX', '¡Vaya, $n! ¡Eres $gun bailarín nato:una bailarina nata;!$B$BAquí tienes tu recompensa por haber participado. ¡Feliz Halloween! ¡Saluda a tu amiguito enfermo! Espero que se recupere pronto.', 0); +-- 8361 Contactos Abisales +-- https://es.classic.wowhead.com/quest=8361 +SET @ID := 8361; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Lo has hecho ya?', 0), +(@ID, 'esMX', '¿Lo has hecho ya?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Ja! ¡Lo has conseguido, $n! ¡Pronto aplastaremos al Martillo Crepuscular!', 0), +(@ID, 'esMX', '¡Ja! ¡Lo has conseguido, $n! ¡Pronto aplastaremos al Martillo Crepuscular!', 0); +-- 8362 Blasones Abisales +-- https://es.classic.wowhead.com/quest=8362 +SET @ID := 8362; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has demostrado que puedes manejarte $gsolo:sola; en una pelea, $n. Mantengamos la presión sobre el Martillo Crepuscular. Ve a luchar contra algunos templarios abisales más, te recompensaré con algunas de las cosas que Huum y yo hemos encontrado en la batalla.', 0), +(@ID, 'esMX', 'Has demostrado que puedes manejarte $gsolo:sola; en una pelea, $n. Mantengamos la presión sobre el Martillo Crepuscular. Ve a luchar contra algunos templarios abisales más, te recompensaré con algunas de las cosas que Huum y yo hemos encontrado en la batalla.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo has hecho bien! Eso es menos Templarios de los que preocuparme.$B$BAquí tienes, $n. Espero que haya algo útil para ti.', 0), +(@ID, 'esMX', '¡Lo has hecho bien! Eso es menos Templarios de los que preocuparme.$B$BAquí tienes, $n. Espero que haya algo útil para ti.', 0); +-- 8363 Sellos abisales +-- https://es.classic.wowhead.com/quest=8363 +SET @ID := 8363; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has demostrado que eres más que capaz de enfrentarte a un Duque Abisal, $n. Siempre soy de los que promueven los buenos hábitos. Tráeme más sellos y te daré una recompensa.', 0), +(@ID, 'esMX', 'Has demostrado que eres más que capaz de enfrentarte a un Duque Abisal, $n. Siempre soy de los que promueven los buenos hábitos. Tráeme más sellos y te daré una recompensa.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente, $n! Derrotar a esos duques dejará al Martillo Crepuscular tambaleándose por un tiempo. Como prometí, aquí tienes tu recompensa. Es una de las mejores cosas que Huum y yo hemos encontrado.', 0), +(@ID, 'esMX', '¡Excelente, $n! Derrotar a esos duques dejará al Martillo Crepuscular tambaleándose por un tiempo. Como prometí, aquí tienes tu recompensa. Es una de las mejores cosas que Huum y yo hemos encontrado.', 0); +-- 8364 Cetros Abisales +-- https://es.classic.wowhead.com/quest=8364 +SET @ID := 8364; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente has superado todas mis expectativas, $n. Has estado enfrentándote a oponentes que Huum y yo nos lo pensaríamos mucho antes de enfrentarnos.$B$BEn este punto, lo mejor que puedo hacer es seguir recompensando tus esfuerzos en la lucha contra el Martillo Crepuscular y sus amos.$B$BTráeme más cetros abisales y haré todo lo posible para darte una recompensa adecuada.', 0), +(@ID, 'esMX', 'Realmente has superado todas mis expectativas, $n. Has estado enfrentándote a oponentes que Huum y yo nos lo pensaríamos mucho antes de enfrentarnos.$B$BEn este punto, lo mejor que puedo hacer es seguir recompensando tus esfuerzos en la lucha contra el Martillo Crepuscular y sus amos.$B$BTráeme más cetros abisales y haré todo lo posible para darte una recompensa adecuada.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Sabía que vendrías, $n! Aquí tienes tu recompensa.', 0), +(@ID, 'esMX', '¡Sabía que vendrías, $n! Aquí tienes tu recompensa.', 0); +-- Cuestión de honor +-- 8367, 13476 +-- https://es.classic.wowhead.com/quest=8367 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8367, 13476) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8367, 'esES', 'Arathi todavía está empapada con la sangre de grandes guerreros y el choque del acero aún resuena en todo Alterac. ¡No pierdas mi tiempo a menos que traigas noticias del frente!', 0), +(13476, 'esES', 'Arathi todavía está empapada con la sangre de grandes guerreros y el choque del acero aún resuena en todo Alterac. ¡No pierdas mi tiempo a menos que traigas noticias del frente!', 0), +(8367, 'esMX', 'Arathi todavía está empapada con la sangre de grandes guerreros y el choque del acero aún resuena en todo Alterac. ¡No pierdas mi tiempo a menos que traigas noticias del frente!', 0), +(13476, 'esMX', 'Arathi todavía está empapada con la sangre de grandes guerreros y el choque del acero aún resuena en todo Alterac. ¡No pierdas mi tiempo a menos que traigas noticias del frente!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8367, 13476) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8367, 'esES', 'Tus pruebas no han sido fáciles, pero tu valor no se te escapó y tus fuerzas no fallaron. Parte con marcas de victoria anteriores, $n. Nadie los necesitará como recordatorio de su valía. Ponte de pie, $n. ¡Hoy caminarás con mucho orgullo porque eres $gun héroe:una heroína;!', 0), +(13476, 'esES', 'Tus pruebas no han sido fáciles, pero tu valor no se te escapó y tus fuerzas no fallaron. Parte con marcas de victoria anteriores, $n. Nadie los necesitará como recordatorio de su valía. Ponte de pie, $n. ¡Hoy caminarás con mucho orgullo porque eres $gun héroe:una heroína;!', 0), +(8367, 'esMX', 'Tus pruebas no han sido fáciles, pero tu valor no se te escapó y tus fuerzas no fallaron. Parte con marcas de victoria anteriores, $n. Nadie los necesitará como recordatorio de su valía. Ponte de pie, $n. ¡Hoy caminarás con mucho orgullo porque eres $gun héroe:una heroína;!', 0), +(13476, 'esMX', 'Tus pruebas no han sido fáciles, pero tu valor no se te escapó y tus fuerzas no fallaron. Parte con marcas de victoria anteriores, $n. Nadie los necesitará como recordatorio de su valía. Ponte de pie, $n. ¡Hoy caminarás con mucho orgullo porque eres $gun héroe:una heroína;!', 0); +-- La batalla por Garganta Grito de Guerra +-- 8368, 8389, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 8433, 8434, 8435 +-- https://es.classic.wowhead.com/quest=8368 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8368, 8389, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 8433, 8434, 8435) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8368, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8389, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8426, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8427, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8428, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8429, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8430, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8431, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8432, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8433, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8434, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8435, 'esES', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8368, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8389, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8426, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8427, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8428, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8429, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8430, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8431, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8432, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8433, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8434, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0), +(8435, 'esMX', 'La batalla de la Garganta Grito de Guerra contra las centinelas Ala de Plata tiene una importancia vital. Con la excusa de estar protegiendo un bosque que no les pertenece, la Alianza intenta negar a la Horda una de sus principales fuentes de recursos madereros.$B$B¡No debemos permitirlo, $n! ¡Vuelve a verme cuando puedas demostrar que has servido a la Horda dignamente!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8368, 8389, 8426, 8427, 8428, 8429, 8430, 8431, 8432, 8433, 8434, 8435) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8368, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8389, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8426, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8427, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8428, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8429, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8430, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8431, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8432, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8433, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8434, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8435, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8368, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8389, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8426, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8427, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8428, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8429, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8430, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8431, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8432, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8433, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8434, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(8435, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0); +-- 8369 Invasores del Valle de Alterac +-- https://es.classic.wowhead.com/quest=8369 +SET @ID := 8369; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué noticias traes de las tierras de los Lobo Gélido? ¿Qué tal va la batalla por el Valle de Alterac?', 0), +(@ID, 'esMX', '¿Qué noticias traes de las tierras de los Lobo Gélido? ¿Qué tal va la batalla por el Valle de Alterac?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Has mostrado una gran valentía al proteger nuestras tierras del Valle de Alterac! Hablaré a mis superiores de tus hazañas.', 0), +(@ID, 'esMX', '¡Has mostrado una gran valentía al proteger nuestras tierras del Valle de Alterac! Hablaré a mis superiores de tus hazañas.', 0); +-- 8373 El poder del pino +-- https://es.classic.wowhead.com/quest=8373 +SET @ID := 8373; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, ya casi huele mejor por aquí. Casi.$B$BGracias a ti, $n, Costa Sur podría pasar por otro Halloween. ¡Aquí están sus golosinas, con mi agradecimiento! Si te quedas sin caramelos, creo que hay una gnoma llamado Katrina Shimmerstar en Forjaz que puede venderte más; ella solo está presente durante Halloween, creo.', 0), +(@ID, 'esMX', 'Ah, ya casi huele mejor por aquí. Casi.$B$BGracias a ti, $n, Costa Sur podría pasar por otro Halloween. ¡Aquí están sus golosinas, con mi agradecimiento! Si te quedas sin caramelos, creo que hay una gnoma llamado Katrina Shimmerstar en Forjaz que puede venderte más; ella solo está presente durante Halloween, creo.', 0); +-- 8375 ¡Recuerda el Valle de Alterac! +-- https://es.classic.wowhead.com/quest=8375 +SET @ID := 8375; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué noticias traes de las tierras de los Picos Tormentas? ¿Cómo va la batalla por el Valle de Alterac?', 0), +(@ID, 'esMX', '¿Qué noticias traes de las tierras de los Picos Tormentas? ¿Cómo va la batalla por el Valle de Alterac?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Has demostrado una gran valentía al proteger nuestras tierras en el Valle de Alterac! Les contaré a mis superiores tus actos.', 0), +(@ID, 'esMX', '¡Has demostrado una gran valentía al proteger nuestras tierras en el Valle de Alterac! Les contaré a mis superiores tus actos.', 0); +-- 8383 ¡Recuerda el Valle de Alterac! +-- https://es.classic.wowhead.com/quest=8383 +SET @ID := 8383; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sigue honrando a la Alianza, $n. La Horda no tardará mucho en ser aplastada si seguimos adelante con nuestros esfuerzos.', 0), +(@ID, 'esMX', 'Sigue honrando a la Alianza, $n. La Horda no tardará mucho en ser aplastada si seguimos adelante con nuestros esfuerzos.', 0); +-- 8386 Lucha por Garganta Grito de Guerra +-- https://es.classic.wowhead.com/quest=8386 +SET @ID := 8386; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes noticias de Garganta Grito de Guerra, $n?', 0), +(@ID, 'esMX', '¿Tienes noticias de Garganta Grito de Guerra, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0), +(@ID, 'esMX', '¡Excelente! ¡Has demostrado tu valía defendiendo nuestras operaciones en Garganta Grito de Guerra! Que la palabra de tu honor se extienda por todas partes en nuestras tierras.', 0); +-- 8387 Invasores del Valle de Alterac +-- https://es.classic.wowhead.com/quest=8387 +SET @ID := 8387; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡La batalla por Alterac sigue ardiendo! ¡Debes volver al Valle de Alterac y expulsar una vez más a los invasores del territorio de Lobo Gélido, $n!', 0), +(@ID, 'esMX', '¡La batalla por Alterac sigue ardiendo! ¡Debes volver al Valle de Alterac y expulsar una vez más a los invasores del territorio de Lobo Gélido, $n!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buen trabajo, $n! Deberías sentirte $gorgulloso:orgullosa;. ¡Los invasores de la Alianza deben ser expulsados de Alterac!', 0), +(@ID, 'esMX', '¡Buen trabajo, $n! Deberías sentirte $gorgulloso:orgullosa;. ¡Los invasores de la Alianza deben ser expulsados de Alterac!', 0); +-- 8388 Cuestión de honor +-- https://es.classic.wowhead.com/quest=8388 +SET @ID := 8388; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muchos valientes guerreros te admiran, $n. Sigue siendo un ejemplo para todos los que luchan contra la Alianza. ¿Qué noticias traes de tus viajes?', 0), +(@ID, 'esMX', 'Muchos valientes guerreros te admiran, $n. Sigue siendo un ejemplo para todos los que luchan contra la Alianza. ¿Qué noticias traes de tus viajes?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sigue honrando a la Horda, $n. Es un placer comprobar que no te has debilitado.', 0), +(@ID, 'esMX', 'Sigue honrando a la Horda, $n. Es un placer comprobar que no te has debilitado.', 0); +-- 8409 Los barriles dañados +-- https://es.classic.wowhead.com/quest=8409 +SET @ID := 8409; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Ah, bien! Has mostrado el verdadero espíritu de Halloween, ¡espíritu Renegado, debería decir!$B$B$B$BMe deleito en el hecho de que Costa Sur ahora debe darse un festín con cerveza mala o prescindir de ella. En cuanto a ti, toma estas golosinas. ¡Creo que les encontrarás un buen uso!', 0), +(@ID, 'esMX', '¡Ah, bien! Has mostrado el verdadero espíritu de Halloween, ¡espíritu Renegado, debería decir!$B$B$B$BMe deleito en el hecho de que Costa Sur ahora debe darse un festín con cerveza mala o prescindir de ella. En cuanto a ti, toma estas golosinas. ¡Creo que les encontrarás un buen uso!', 0); +-- 8410 Maestría elemental +-- https://es.classic.wowhead.com/quest=8410 +SET @ID := 8410; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué tienes para mí, $n?', 0), +(@ID, 'esMX', '¿Qué tienes para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente, colega. Ahora nos entendemos.', 0), +(@ID, 'esMX', 'Excelente, colega. Ahora nos entendemos.', 0); +-- 8411 Dominar los elementos +-- https://es.classic.wowhead.com/quest=8411 +SET @ID := 8411; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Dónde están los elementos, colega?', 0), +(@ID, 'esMX', '¿Dónde están los elementos, colega?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos son los elementos que necesito. Ahora hablamos.', 0), +(@ID, 'esMX', 'Estos son los elementos que necesito. Ahora hablamos.', 0); +-- 8412 Tótem de espíritu +-- https://es.classic.wowhead.com/quest=8412 +SET @ID := 8412; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Los espíritus saben lo que estamos haciendo y han estado tratando de matarme! Espero que tengas las piezas.', 0), +(@ID, 'esMX', '¡Los espíritus saben lo que estamos haciendo y han estado tratando de matarme! Espero que tengas las piezas.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Genial, colega! Probémoslo...', 0), +(@ID, 'esMX', '¡Genial, colega! Probémoslo...', 0); +-- 8413 Vudú +-- Notice: English text: Change '$R' to 'troll' in quest_offer_reward.RewardText +-- https://es.classic.wowhead.com/quest=8413 +SET @ID := 8413; +UPDATE `quest_offer_reward` SET `RewardText` = 'It\'s about time this troll got a full night\'s rest! The spirit totem will watch over me.$B$BI been a long time collectin\' things, maybe you want somethin\' for all your trouble?', `VerifiedBuild` = 0 WHERE `id` = @ID ; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Dónde están las plumas, colega?', 0), +(@ID, 'esMX', '¿Dónde están las plumas, colega?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Ya es hora de que este trol descanse toda la noche! El tótem espiritual velará por mí.$B$BLlevo mucho tiempo coleccionando cosas, ¿tal vez quieres algo por todos tus problemas?', 0), +(@ID, 'esMX', '¡Ya es hora de que este trol descanse toda la noche! El tótem espiritual velará por mí.$B$BLlevo mucho tiempo coleccionando cosas, ¿tal vez quieres algo por todos tus problemas?', 0); +-- 8414 Expulsión de los demonios +-- https://es.classic.wowhead.com/quest=8414 +SET @ID := 8414; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué mal me has traído?', 0), +(@ID, 'esMX', '¿Qué mal me has traído?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Existe el riesgo de disipar el mal de un azote, ya que atrae la atención de los muertos vivientes a lo largo de incontables millas. Pero eres fuerte en la Luz, $n, y no temo por ti...', 0), +(@ID, 'esMX', 'Existe el riesgo de disipar el mal de un azote, ya que atrae la atención de los muertos vivientes a lo largo de incontables millas. Pero eres fuerte en la Luz, $n, y no temo por ti...', 0); +-- 8415 Campamento del Orvallo +-- https://es.classic.wowhead.com/quest=8415 +SET @ID := 8415; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Muy bien, $n! Veamos de qué estás $ghecho:hecha;.', 0), +(@ID, 'esMX', '¡Muy bien, $n! Veamos de qué estás $ghecho:hecha;.', 0); +-- 8416 Piedras de la Plaga inertes +-- https://es.classic.wowhead.com/quest=8416 +SET @ID := 8416; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Pudo Thal\'danis limpiar las piedras de la plaga?', 0), +(@ID, 'esMX', '¿Pudo Thal\'danis limpiar las piedras de la plaga?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has hecho lo que te pedí sin dudarlo, $n.$B$BLa confianza se gana, parece. Quizás ahora pueda revelarte nuestro plan con más detalle.', 0), +(@ID, 'esMX', 'Has hecho lo que te pedí sin dudarlo, $n.$B$BLa confianza se gana, parece. Quizás ahora pueda revelarte nuestro plan con más detalle.', 0); +-- 8417 Un espíritu afligido +-- https://es.classic.wowhead.com/quest=8417 +SET @ID := 8417; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Stoley tosió mi alcohol?', 0), +(@ID, 'esMX', '¿Stoley tosió mi alcohol?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Entonces, has venido a aliviar mi dolor. Ojalá pudieras simplemente derribarme, pero no es tan simple...', 0), +(@ID, 'esMX', 'Entonces, has venido a aliviar mi dolor. Ojalá pudieras simplemente derribarme, pero no es tan simple...', 0); +-- 8418 La forja de la piedra de poderío +-- https://es.classic.wowhead.com/quest=8418 +SET @ID := 8418; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has matado a los desgraciados trols?', 0), +(@ID, 'esMX', '¿Has matado a los desgraciados trols?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Esto es excelente, $n. Diría que estoy sorprendido, pero sabía sin lugar a dudas que no nos decepcionarías.$B$BEs un honor para mí concederte una de las Sagradas Piedras de Poder. Úsala bien.', 0), +(@ID, 'esMX', 'Esto es excelente, $n. Diría que estoy sorprendido, pero sabía sin lugar a dudas que no nos decepcionarías.$B$BEs un honor para mí concederte una de las Sagradas Piedras de Poder. Úsala bien.', 0); +-- 8419 Pedido de un diablillo +-- https://es.classic.wowhead.com/quest=8419 +SET @ID := 8419; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes mi tela vil?', 0), +(@ID, 'esMX', '¿Tienes mi tela vil?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Qué $gespléndido:espléndida; $n eres!$B$B$B$BOh, cómo me encanta sentirlo, la forma en que quema tu piel y teje pensamientos malvados en la mente...', 0), +(@ID, 'esMX', '¡Qué $gespléndido:espléndida; $n eres!$B$B$B$BOh, cómo me encanta sentirlo, la forma en que quema tu piel y teje pensamientos malvados en la mente...', 0); + +-- 8420 Caliente y picante +-- https://es.classic.wowhead.com/quest=8420 +SET @ID := 8420; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes mi tela vil?', 0), +(@ID, 'esMX', '¿Tienes mi tela vil?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Guau! Eres demasiado $gbueno:buena;. ¡Especialmente para $gun:una; $n! $B$B$B$BOh, cómo me encanta sentirlo, la forma en que quema tu piel y teje pensamientos malvados en la mente...', 0), +(@ID, 'esMX', '¡Guau! Eres demasiado $gbueno:buena;. ¡Especialmente para $gun:una; $n! $B$B$B$BOh, cómo me encanta sentirlo, la forma en que quema tu piel y teje pensamientos malvados en la mente...', 0); +-- 8421 La mercancía equivocada +-- https://es.classic.wowhead.com/quest=8421 +SET @ID := 8421; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes los bienes?', 0), +(@ID, 'esMX', '¿Tienes los bienes?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Esto funcionará muy bien.', 0), +(@ID, 'esMX', 'Esto funcionará muy bien.', 0); +-- 8422 Plumas de trol +-- https://es.classic.wowhead.com/quest=8422 +SET @ID := 8422; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Trajiste las plumas? ¡Esta muñeca necesita ser rellenada!', 0), +(@ID, 'esMX', '¿Trajiste las plumas? ¡Esta muñeca necesita ser rellenada!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Maravilloso, ahora mi mascota está completa!$B$B$B$BOh, qué efecto secundario tan extraño tienen estas plumas de vudú...', 0), +(@ID, 'esMX', '¡Maravilloso, ahora mi mascota está completa!$B$B$B$BOh, qué efecto secundario tan extraño tienen estas plumas de vudú...', 0); +-- 8423 Parentesco guerrero +-- https://es.classic.wowhead.com/quest=8423 +SET @ID := 8423; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las espinas ardientes del jabinferno dejan horribles cicatrices. No temas el dolor y la desfiguración, $gguerrero:guerrera;, no son nada comparados con la prisión a la que estoy encadenado.', 0), +(@ID, 'esMX', 'Las espinas ardientes del jabinferno dejan horribles cicatrices. No temas el dolor y la desfiguración, $gguerrero:guerrera;, no son nada comparados con la prisión a la que estoy encadenado.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No necesito pruebas para saber lo que ha hecho, $n. Puedo ver la determinación grabada en tu expresión.', 0), +(@ID, 'esMX', 'No necesito pruebas para saber lo que ha hecho, $n. Puedo ver la determinación grabada en tu expresión.', 0); +-- 8424 La guerra contra los Sombra Jurada +-- https://es.classic.wowhead.com/quest=8424 +SET @ID := 8424; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los Sombra Jurada no son derrotados fácilmente, ¿verdad? Pero eres $gun guerrero:una guerrera; y triunfarás o perecerás en el intento.', 0), +(@ID, 'esMX', 'Los Sombra Jurada no son derrotados fácilmente, ¿verdad? Pero eres $gun guerrero:una guerrera; y triunfarás o perecerás en el intento.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ya has mitigado mi dolor y me has honrado. Gracias, $n.', 0), +(@ID, 'esMX', 'Ya has mitigado mi dolor y me has honrado. Gracias, $n.', 0); +-- 8425 Plumas Vudú +-- https://es.classic.wowhead.com/quest=8425 +SET @ID := 8425; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Estás de regreso tan pronto? El tiempo ya no es el mismo para mí, quizás haya sido un largo viaje para ti...', 0), +(@ID, 'esMX', '¿Estás de regreso tan pronto? El tiempo ya no es el mismo para mí, quizás haya sido un largo viaje para ti...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Por fin puedo volver a sentir el frío toque del acero, aunque sea sólo por un momento.', 0), +(@ID, 'esMX', 'Por fin puedo volver a sentir el frío toque del acero, aunque sea sólo por un momento.', 0); +-- 8446 Inundación de Pesadilla +-- https://es.classic.wowhead.com/quest=8446 +SET @ID := 8446; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Sí, $r?', 0), +(@ID, 'esMX', '¿Sí, $r?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Debo eliminar la mancha de este objeto. Esto puede arrojar algo de luz sobre mis recientes fracasos para profundizar en el Sueño. Dámelo.', 0), +(@ID, 'esMX', 'Debo eliminar la mancha de este objeto. Esto puede arrojar algo de luz sobre mis recientes fracasos para profundizar en el Sueño. Dámelo.', 0); +-- 8447 Leyendas veraces +-- https://es.classic.wowhead.com/quest=8447 +SET @ID := 8447; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Toma el anillo, $n. Ha cumplido su propósito para Malfurion. Ahora te servirá para un nuevo propósito...', 0), +(@ID, 'esMX', 'Toma el anillo, $n. Ha cumplido su propósito para Malfurion. Ahora te servirá para un nuevo propósito...', 0); +-- 8470 El tótem de ritual Muertobosque +-- https://es.classic.wowhead.com/quest=8470 +SET @ID := 8470; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Dime, $c, ¿en qué puedo ayudarte? Caminas entre nosotros pacíficamente, pero no cabe duda de que ocurre algo. Percibo algo... algo perturbador...', 0), +(@ID, 'esMX', 'Dime, $c, ¿en qué puedo ayudarte? Caminas entre nosotros pacíficamente, pero no cabe duda de que ocurre algo. Percibo algo... algo perturbador...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Este tótem... Lo reconozco... es de los Muertobosque, pero está tan degradado... Cualquier fiebre que haya vuelto a nuestros hermanos en nuestra contra, está sin duda impregnada también en este objeto.$B$BHas hecho bien en traérnoslo, $n. Quizás con algunos rituales y mucho estudio, consigamos descubrir qué contamina las mentes de nuestros hermanos. Gracias. Acepta estas ofrendas a cambio de tu hallazgo.', 0), +(@ID, 'esMX', 'Este tótem... Lo reconozco... es de los Muertobosque, pero está tan degradado... Cualquier fiebre que haya vuelto a nuestros hermanos en nuestra contra, está sin duda impregnada también en este objeto.$B$BHas hecho bien en traérnoslo, $n. Quizás con algunos rituales y mucho estudio, consigamos descubrir qué contamina las mentes de nuestros hermanos. Gracias. Acepta estas ofrendas a cambio de tu hallazgo.', 0); +-- 8471 Tótem de ritual Nevada +-- https://es.classic.wowhead.com/quest=8471 +SET @ID := 8471; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, vienes a nosotros de forma pacífica pero tengo la sensación de que te atañen asuntos graves y muy importantes tanto para un fúrbolg como para $gun:una; $r. ¿Qué has venido a decirnos?', 0), +(@ID, 'esMX', '$c, vienes a nosotros de forma pacífica pero tengo la sensación de que te atañen asuntos graves y muy importantes tanto para un fúrbolg como para $gun:una; $r. ¿Qué has venido a decirnos?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Esto... tiene la forma de un tótem ritual Nevada, pero está deformado por fuerzas que no puedo ni empezar a comprender. Sea cual sea el mal y la corrupción que ha puesto a los Nevada contra nosotros, está presente en este objeto, no hay duda.$B$BEl saber divino es el que os ha traído a ti y a este objeto a nosotros, $n. Lo estudiaremos detenidamente, quizás un día los Nevada dejen de dirigir su ira contra nosotros.$B$BGracias, $gamigo:amiga;, por favor, acepta estos regalos a cambio de toda tu bondad.', 0), +(@ID, 'esMX', 'Esto... tiene la forma de un tótem ritual Nevada, pero está deformado por fuerzas que no puedo ni empezar a comprender. Sea cual sea el mal y la corrupción que ha puesto a los Nevada contra nosotros, está presente en este objeto, no hay duda.$B$BEl saber divino es el que os ha traído a ti y a este objeto a nosotros, $n. Lo estudiaremos detenidamente, quizás un día los Nevada dejen de dirigir su ira contra nosotros.$B$BGracias, $gamigo:amiga;, por favor, acepta estos regalos a cambio de toda tu bondad.', 0); +-- 8474 El colgante del viejo Cortezablanca +-- https://es.wowhead.com/quest=8474 +SET @ID := 8474; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que enseñarme?', 0), +(@ID, 'esMX', '¿Tienes algo que enseñarme?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Este colgante... Se lo regalé al viejo Cortezablanca cuando su gente nos ayudó a reconstruir el poblado.$B$BSupongo que esto significa que está...$B$B$B$BGracias por traerme esto, $n. Quiero pedirte algo.', 0), +(@ID, 'esMX', 'Este colgante... Se lo regalé al viejo Cortezablanca cuando su gente nos ayudó a reconstruir el poblado.$B$BSupongo que esto significa que está...$B$B$B$BGracias por traerme esto, $n. Quiero pedirte algo.', 0); +-- 8480 El armamento perdido +-- https://es.wowhead.com/quest=8480 +SET @ID := 8480; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Traes las armas?', 0), +(@ID, 'esMX', '¿Traes las armas?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. ¡Les vamos a enseñar a los desdichados de qué estamos hechos!', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. ¡Les vamos a enseñar a los desdichados de qué estamos hechos!', 0); +-- 8481 La raíz de todos los males +-- https://es.wowhead.com/quest=8481 +SET @ID := 8481; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has vuelto, $n... ¿Eso quiere decir que has matado al demonio?', 0), +(@ID, 'esMX', 'Has vuelto, $n... ¿Eso quiere decir que has matado al demonio?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tú... ¡nos has salvado! Al haber derrotado al demonio Xandivious has garantizado la seguridad del Bastión Fauces de Madera durante los próximos años. Eres $gun auténtico héroe:una auténtica heroína; para nosotros.$B$BPor favor, acepta esto con nuestra bendición. Aunque el proceso de curación de los fúrbolgs será lento, y a pesar de que el conflicto todavía persista, les has dado a los Nevada algo que hasta ahora no tenían.$B$BLes has dado la oportunidad de sobrevivir.', 0), +(@ID, 'esMX', 'Tú... ¡nos has salvado! Al haber derrotado al demonio Xandivious has garantizado la seguridad del Bastión Fauces de Madera durante los próximos años. Eres $gun auténtico héroe:una auténtica heroína; para nosotros.$B$BPor favor, acepta esto con nuestra bendición. Aunque el proceso de curación de los fúrbolgs será lento, y a pesar de que el conflicto todavía persista, les has dado a los Nevada algo que hasta ahora no tenían.$B$BLes has dado la oportunidad de sobrevivir.', 0); +-- 8484 Negociar la paz +-- https://es.classic.wowhead.com/quest=8484 +SET @ID := 8484; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$n, eres $gbienvenido:bienvenida; en mis dominios. Forjaz siempre debe considerarse el hogar de $gun héroe:una heroína; como tú. Ahora, ¿qué negocios tienes conmigo?', 0), +(@ID, 'esMX', '$n, eres $gbienvenido:bienvenida; en mis dominios. Forjaz siempre debe considerarse el hogar de $gun héroe:una heroína; como tú. Ahora, ¿qué negocios tienes conmigo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De hecho, este es un giro de los acontecimientos sumamente fortuito. Si se lograra una paz duradera con estas criaturas, esto sin duda nos daría una ventaja en los asuntos de Kalimdor... una que los Elfos Nocturnos no pueden mantener por sí mismos. ¡Notificaré esto a los otros líderes de la Alianza de inmediato y se enviarán más diplomáticos!$B$BEn cuanto a ti, $n... has demostrado valentía tanto en la diplomacia como en la acción. Te doy las gracias, al igual que toda la Alianza.', 0), +(@ID, 'esMX', 'De hecho, este es un giro de los acontecimientos sumamente fortuito. Si se lograra una paz duradera con estas criaturas, esto sin duda nos daría una ventaja en los asuntos de Kalimdor... una que los Elfos Nocturnos no pueden mantener por sí mismos. ¡Notificaré esto a los otros líderes de la Alianza de inmediato y se enviarán más diplomáticos!$B$BEn cuanto a ti, $n... has demostrado valentía tanto en la diplomacia como en la acción. Te doy las gracias, al igual que toda la Alianza.', 0); +-- 8485 Negociar la paz +-- https://es.classic.wowhead.com/quest=8485 +SET @ID := 8485; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los saludos del Jefe de Guerra te son otorgados, $n. Tus acciones hacen que la Horda se fortalezca en estos tiempos difíciles. Ahora, ¿qué negocios tienes conmigo?', 0), +(@ID, 'esMX', 'Los saludos del Jefe de Guerra te son otorgados, $n. Tus acciones hacen que la Horda se fortalezca en estos tiempos difíciles. Ahora, ¿qué negocios tienes conmigo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De hecho, este es un giro de los acontecimientos sumamente fortuito. Si se lograra una paz duradera con estas criaturas, esto ciertamente nos daría una ventaja para proteger a Kalimdor de amenazas externas. Notificaré esto a los otros líderes de la Horda de inmediato y se enviarán más diplomáticos.$B$BEn cuanto a ti, $n... has demostrado valentía tanto en la diplomacia como en la acción. Te doy las gracias, al igual que toda la Horda.', 0), +(@ID, 'esMX', 'De hecho, este es un giro de los acontecimientos sumamente fortuito. Si se lograra una paz duradera con estas criaturas, esto ciertamente nos daría una ventaja para proteger a Kalimdor de amenazas externas. Notificaré esto a los otros líderes de la Horda de inmediato y se enviarán más diplomáticos.$B$BEn cuanto a ti, $n... has demostrado valentía tanto en la diplomacia como en la acción. Te doy las gracias, al igual que toda la Horda.', 0); +-- 8492 ¡La Alianza necesita lingotes de cobre! +-- https://es.classic.wowhead.com/quest=8492 +SET @ID := 8492; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has reunido ya esos 20 lingotes de cobre, soldado?', 0), +(@ID, 'esMX', '¿Has reunido ya esos 20 lingotes de cobre, soldado?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo lograste, $gchico:chica;! Pondremos esos lingotes de cobre en la pila y le sacaremos provecho para el material de guerra ahora mismo. Es la entrega de gente como tú lo que me hace sentirme orgulloso de servir a la Alianza. ¡Buen trabajo, soldado!$B$BY si por casualidad te encontraras con más lingotes de cobre, asegúrate de que llegan hasta mí.', 0), +(@ID, 'esMX', '¡Lo lograste, $gchico:chica;! Pondremos esos lingotes de cobre en la pila y le sacaremos provecho para el material de guerra ahora mismo. Es la entrega de gente como tú lo que me hace sentirme orgulloso de servir a la Alianza. ¡Buen trabajo, soldado!$B$BY si por casualidad te encontraras con más lingotes de cobre, asegúrate de que llegan hasta mí.', 0); +-- 8493 ¡La Alianza necesita más lingotes de cobre! +-- https://es.classic.wowhead.com/quest=8493 +SET @ID := 8493; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Otra vez aquí, $c? ¡Fantástico! Los lingotes que nos has conseguido hasta ahora serán muy útiles para confeccionar todo tipo de cosas para la guerra. Sé que, entre otras cosas, el cobre se usará en piezas para los tanques de vapor en construcción, además de para una reducida flota de girocópteros que queremos desplegar si el tiempo lo permite.$B$BPero que estas pilas no te engañen, necesitamos aún más pilas de lingotes de cobre si puedes conseguirlas para preparar la guerra de Ahn\'Qiraj. ¿Nos ayudarás?', 0), +(@ID, 'esMX', '¿Otra vez aquí, $c? ¡Fantástico! Los lingotes que nos has conseguido hasta ahora serán muy útiles para confeccionar todo tipo de cosas para la guerra. Sé que, entre otras cosas, el cobre se usará en piezas para los tanques de vapor en construcción, además de para una reducida flota de girocópteros que queremos desplegar si el tiempo lo permite.$B$BPero que estas pilas no te engañen, necesitamos aún más pilas de lingotes de cobre si puedes conseguirlas para preparar la guerra de Ahn\'Qiraj. ¿Nos ayudarás?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente trabajo! Cavar en busca de ese cobre y fundirlo debe de haber sido toda una aventura. A menos que lo compraras en la casa de subastas. De cualquier modo, a mí me va bien. Recibirás toda clase de elogios por tu contribución a los preparativos para la guerra, $c. Y no dudes en traerme más lingotes de cobre si los tienes.', 0), +(@ID, 'esMX', '¡Excelente trabajo! Cavar en busca de ese cobre y fundirlo debe de haber sido toda una aventura. A menos que lo compraras en la casa de subastas. De cualquier modo, a mí me va bien. Recibirás toda clase de elogios por tu contribución a los preparativos para la guerra, $c. Y no dudes en traerme más lingotes de cobre si los tienes.', 0); +-- 8494 ¡La Alianza necesita barras de hierro! +-- https://es.classic.wowhead.com/quest=8494 +SET @ID := 8494; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si tienes esas veinte barras de hierro, ¡no quiero saber dónde las tienes escondidas!', 0), +(@ID, 'esMX', 'Si tienes esas veinte barras de hierro, ¡no quiero saber dónde las tienes escondidas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bueno, bueno, si es $n. Y saliste adelante. Supongo que ahora tendré que estar pendiente de ti. Me duele decir esto, pero gracias por tus esfuerzos. La Alianza no lo olvidará, y yo tampoco. Ahora sal y empápate de cualquier otra cosa que necesites recolectar.', 0), +(@ID, 'esMX', 'Bueno, bueno, si es $n. Y saliste adelante. Supongo que ahora tendré que estar pendiente de ti. Me duele decir esto, pero gracias por tus esfuerzos. La Alianza no lo olvidará, y yo tampoco. Ahora sal y empápate de cualquier otra cosa que necesites recolectar.', 0); +-- 8495 ¡La Alianza necesita más barras de hierro! +-- https://es.classic.wowhead.com/quest=8495 +SET @ID := 8495; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ya has vuelto? ¿Así pretendes conseguir que mejore la opinión que tengo de ti, $c? ¡Es que se me saltan las lágrimas! Así que, como verás, aún no tenemos suficientes barras de hierro para todas las armas, armaduras, tanques de vapor y demás chismes que hay que construir para la caza de bichos. ¿Crees que podrás hacer un hueco para traer otra pila de 20 barras de hierro entre un garbeo y otro a Zul\'Gurub, o adondequiera que vayan los jóvenes de hoy en día?', 0), +(@ID, 'esMX', '¿Ya has vuelto? ¿Así pretendes conseguir que mejore la opinión que tengo de ti, $c? ¡Es que se me saltan las lágrimas! Así que, como verás, aún no tenemos suficientes barras de hierro para todas las armas, armaduras, tanques de vapor y demás chismes que hay que construir para la caza de bichos. ¿Crees que podrás hacer un hueco para traer otra pila de 20 barras de hierro entre un garbeo y otro a Zul\'Gurub, o adondequiera que vayan los jóvenes de hoy en día?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Debe ser un día frío en las Estepas Ardientes. Mira, es $n y me ha traído un regalo. ¡Veinte barras de hierro! Justo lo que siempre quise.$B$BSin embargo, con toda seriedad, gracias, $n. Te acreditas a ti y a toda la Alianza. ¡Ahora regresa y trae más cosas para el esfuerzo de guerra!', 0), +(@ID, 'esMX', 'Debe ser un día frío en las Estepas Ardientes. Mira, es $n y me ha traído un regalo. ¡Veinte barras de hierro! Justo lo que siempre quise.$B$BSin embargo, con toda seriedad, gracias, $n. Te acreditas a ti y a toda la Alianza. ¡Ahora regresa y trae más cosas para el esfuerzo de guerra!', 0); +-- Vendas para el campo de batalla +-- 8496, 8810 +-- https://es.classic.wowhead.com/quest=8496 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8496, 8810) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8496, 'esES', '¿Tienes algo para mí, $n?', 0), +(8810, 'esES', '¿Tienes algo para mí, $n?', 0), +(8496, 'esMX', '¿Tienes algo para mí, $n?', 0), +(8810, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8496, 8810) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8496, 'esES', 'Justo a tiempo. Estos suministros salvarán vidas, $n. Se agradece tu trabajo. Aquí está tu próxima tarea.', 0), +(8810, 'esES', 'Justo a tiempo. Estos suministros salvarán vidas, $n. Se agradece tu trabajo. Aquí está tu próxima tarea.', 0), +(8496, 'esMX', 'Justo a tiempo. Estos suministros salvarán vidas, $n. Se agradece tu trabajo. Aquí está tu próxima tarea.', 0), +(8810, 'esMX', 'Justo a tiempo. Estos suministros salvarán vidas, $n. Se agradece tu trabajo. Aquí está tu próxima tarea.', 0); +-- 8497 Material de supervivencia en el desierto +-- https://es.classic.wowhead.com/quest=8497 +SET @ID := 8497; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mí, $n?', 0), +(@ID, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! Los necesitábamos, $n. Gracias.', 0), +(@ID, 'esMX', '¡Excelente! Los necesitábamos, $n. Gracias.', 0); +-- 8498 Órdenes de batalla Crepusculares +-- https://es.classic.wowhead.com/quest=8498 +SET @ID := 8498; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me has traído algo?', 0), +(@ID, 'esMX', '¿Me has traído algo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente. Es importante adelantarse al próximo movimiento del enemigo. Esta información nos permitirá anticiparnos a los ataques del Martillo Crepuscular.', 0), +(@ID, 'esMX', 'Excelente. Es importante adelantarse al próximo movimiento del enemigo. Esta información nos permitirá anticiparnos a los ataques del Martillo Crepuscular.', 0); +-- 8499 ¡La Alianza necesita barras de torio! +-- https://es.classic.wowhead.com/quest=8499 +SET @ID := 8499; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Oh, ¿un envío de mi hermano? ¡Espléndido! ¡La fortuna realmente brilla sobre mí hoy!', 0), +(@ID, 'esMX', 'Oh, ¿un envío de mi hermano? ¡Espléndido! ¡La fortuna realmente brilla sobre mí hoy!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Entonces Gnoarn no confía en mis habilidades de reconocimiento? Me pregunto porque...', 0), +(@ID, 'esMX', '¿Entonces Gnoarn no confía en mis habilidades de reconocimiento? Me pregunto porque...', 0); +-- 8500 ¡La Alianza necesita más barras de torio! +-- https://es.classic.wowhead.com/quest=8500 +SET @ID := 8500; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Es tan bueno verte de nuevo, $n. Espero que te haya ido bien. Es cierto que todavía necesitamos barras de torio. Si tienes de sobra, las estoy recolectando para el esfuerzo bélico de Ahn\'Qiraj.', 0), +(@ID, 'esMX', 'Es tan bueno verte de nuevo, $n. Espero que te haya ido bien. Es cierto que todavía necesitamos barras de torio. Si tienes de sobra, las estoy recolectando para el esfuerzo bélico de Ahn\'Qiraj.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente, $n! Un trabajo bien hecho. Me ocuparé de que esas barras caigan sobre el palé y lleguen a las manos de los herreros e ingenieros que están trabajando arduamente en la construcción de suministros para nuestro ejército. Gracias de nuevo, y si te encuentras con más barras de torio, no dudes en volver.', 0), +(@ID, 'esMX', '¡Excelente, $n! Un trabajo bien hecho. Me ocuparé de que esas barras caigan sobre el palé y lleguen a las manos de los herreros e ingenieros que están trabajando arduamente en la construcción de suministros para nuestro ejército. Gracias de nuevo, y si te encuentras con más barras de torio, no dudes en volver.', 0); +-- 8501 Objetivo: los aguijoneros Colmen'Ashi +-- https://es.classic.wowhead.com/quest=8501 +SET @ID := 8501; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Quieres decirme algo, $n?', 0), +(@ID, 'esMX', '¿Quieres decirme algo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Se ha notado tu participación en el ataque a Colmen\'Ashi.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Se ha notado tu participación en el ataque a Colmen\'Ashi.', 0); +-- 8502 Objetivo: los trabajadores Colmen'Ashi +-- https://es.classic.wowhead.com/quest=8502 +SET @ID := 8502; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Sin sus trabajadores, los silítidos tendrán dificultades para reparar cualquier daño infligido a la estructura de su colmena.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Sin sus trabajadores, los silítidos tendrán dificultades para reparar cualquier daño infligido a la estructura de su colmena.', 0); +-- 8503 ¡La Alianza necesita algas estranguladoras! +-- https://es.classic.wowhead.com/quest=8503 +SET @ID := 8503; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡No es verdad! Nunca quitaría ninguna alga estranguladora de la parte superior de las pilas aquí. Uno podría tener la tentación de considerar que es prácticamente una panacea de utilidad. *tos* ¿No tienes ese alga estranguladora que discutimos antes?', 0), +(@ID, 'esMX', '¡No es verdad! Nunca quitaría ninguna alga estranguladora de la parte superior de las pilas aquí. Uno podría tener la tentación de considerar que es prácticamente una panacea de utilidad. *tos* ¿No tienes ese alga estranguladora que discutimos antes?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Hurra! Veinte menos. Eres $gel mejor:la mejor;. Supongo que debería empacarlos todos antes de que se marchiten. ¡Tantas algas estranguladoras, tan poco tiempo!$B$B¡Gracias de nuevo, $n!', 0), +(@ID, 'esMX', '¡Hurra! Veinte menos. Eres $gel mejor:la mejor;. Supongo que debería empacarlos todos antes de que se marchiten. ¡Tantas algas estranguladoras, tan poco tiempo!$B$B¡Gracias de nuevo, $n!', 0); +-- 8505 ¡La Alianza necesita lotos cárdenos! +-- https://es.classic.wowhead.com/quest=8505 +SET @ID := 8505; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tiene los lotos cárdenos que solicité?', 0), +(@ID, 'esMX', '¿Tiene los lotos cárdenos que solicité?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tu contribución es muy apreciada, $c. Sólo mediante los esfuerzos combinados de todos seremos capaces de repeler el implacable avance de los silítidos y cualquier fuerza que los impulse. Incluso la Horda está acumulando su propia reserva de loto cárdeno. Si encuentras más, por favor regrese a mí.', 0), +(@ID, 'esMX', 'Tu contribución es muy apreciada, $c. Sólo mediante los esfuerzos combinados de todos seremos capaces de repeler el implacable avance de los silítidos y cualquier fuerza que los impulse. Incluso la Horda está acumulando su propia reserva de loto cárdeno. Si encuentras más, por favor regrese a mí.', 0); +-- 8507 Servicio de campo +-- https://es.classic.wowhead.com/quest=8507 +SET @ID := 8507; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Encontrarás las fuerzas del Capitán Yunquenegro estacionadas fuera de Colmen\'Zora. Si no puedes encontrarlo, habla con su teniente, Janela Martillotenaz.', 0), +(@ID, 'esMX', 'Encontrarás las fuerzas del Capitán Yunquenegro estacionadas fuera de Colmen\'Zora. Si no puedes encontrarlo, habla con su teniente, Janela Martillotenaz.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, $n He preparado un conjunto de tareas que deberían hacer un uso óptimo de tus habilidades.$B$B¡Con los tus continuos esfuerzos y los de otros como tú, nuestro enemigo pronto será derrotado de una vez por todas!$B$BSi necesitas un nuevo informe de misión, regresa con el Capitán Yunquenegro.', 0), +(@ID, 'esMX', 'Muy bien, $n He preparado un conjunto de tareas que deberían hacer un uso óptimo de tus habilidades.$B$B¡Con los tus continuos esfuerzos y los de otros como tú, nuestro enemigo pronto será derrotado de una vez por todas!$B$BSi necesitas un nuevo informe de misión, regresa con el Capitán Yunquenegro.', 0); +-- 8508 Documentación de instrucción de campo +-- https://es.classic.wowhead.com/quest=8508 +SET @ID := 8508; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Supongo que quiere esos papeles firmados, ', 0), +(@ID, 'esMX', 'Supongo que quiere esos papeles firmados, ', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, supongo que esa pequeña escaramuza pasará a ser un deber de campo hoy en día. Llévalos de regreso a Fuerte Cenarion, estoy seguro de que tendrán un trabajo a tu medida.$B$B¡Márchate!', 0), +(@ID, 'esMX', 'Sí, supongo que esa pequeña escaramuza pasará a ser un deber de campo hoy en día. Llévalos de regreso a Fuerte Cenarion, estoy seguro de que tendrán un trabajo a tu medida.$B$B¡Márchate!', 0); +-- 8509 ¡La Alianza necesita lágrimas de Arthas! +-- https://es.classic.wowhead.com/quest=8509 +SET @ID := 8509; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué es eso? ¡Habla, $n! ¿Tienes ese envío de lágrimas de Arthas que pedí?', 0), +(@ID, 'esMX', '¿Qué es eso? ¡Habla, $n! ¿Tienes ese envío de lágrimas de Arthas que pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $n. Debo decir que estoy gratamente sorprendida. No creerías la cantidad de personas que han venido, ofreciéndose a ayudar, pero nunca regresan. Permíteme meterlas en una caja y contarlas con tu nombre, y luego podemos hablar de nuevo sobre si necesito más de esas plantas.', 0), +(@ID, 'esMX', 'Buen trabajo, $n. Debo decir que estoy gratamente sorprendida. No creerías la cantidad de personas que han venido, ofreciéndose a ayudar, pero nunca regresan. Permíteme meterlas en una caja y contarlas con tu nombre, y luego podemos hablar de nuevo sobre si necesito más de esas plantas.', 0); +-- 8511 ¡La Alianza necesita cuero semipesado! +-- https://es.classic.wowhead.com/quest=8511 +SET @ID := 8511; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$n, espero que sea el cuero ligero que prometiste.', 0), +(@ID, 'esMX', '$n, espero que sea el cuero ligero que prometiste.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me atrevo a decir que la Alianza estará muy contenta con estas pieles, $n. Me aseguraré de que no se desperdicie nada. Gracias, y asegúrate de volver a consultarme una vez que los haya contado para ver si necesitamos más.', 0), +(@ID, 'esMX', 'Me atrevo a decir que la Alianza estará muy contenta con estas pieles, $n. Me aseguraré de que no se desperdicie nada. Gracias, y asegúrate de volver a consultarme una vez que los haya contado para ver si necesitamos más.', 0); +-- 8512 ¡La Alianza necesita más cuero semipesado! +-- https://es.classic.wowhead.com/quest=8512 +SET @ID := 8512; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Es bueno verte de nuevo, $n. Parece que necesitamos más cuero ligero para los distintos materiales de guerra. Si me traes una pila de diez, sería perfecto.', 0), +(@ID, 'esMX', 'Es bueno verte de nuevo, $n. Parece que necesitamos más cuero ligero para los distintos materiales de guerra. Si me traes una pila de diez, sería perfecto.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias por tu generosa donación, $n. Voy a ponerlos en la pila ahora mismo, y estoy segura de que en poco tiempo se transformarán en un buen conjunto de armadura, algunos parches de cuero o se usarán para otra cosa en nuestros preparativos. Parece que siempre necesitamos más cuero ligero. Vuelve pronto y visítame.', 0), +(@ID, 'esMX', 'Gracias por tu generosa donación, $n. Voy a ponerlos en la pila ahora mismo, y estoy segura de que en poco tiempo se transformarán en un buen conjunto de armadura, algunos parches de cuero o se usarán para otra cosa en nuestros preparativos. Parece que siempre necesitamos más cuero ligero. Vuelve pronto y visítame.', 0); + +-- 8513 ¡La Alianza necesita cuero medio! +-- https://es.classic.wowhead.com/quest=8513 +SET @ID := 8513; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí señor, te recuerdo. ¿Es ese el cuero medio que llevas contigo?', 0), +(@ID, 'esMX', 'Sí señor, te recuerdo. ¿Es ese el cuero medio que llevas contigo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Guau! Parecía que solo estabas aquí ofreciéndote como $gvoluntario:voluntaria; para ayudar. Muchas gracias por la donación. Los empacaré y los contaré. Seguro que sabes cómo alegrarle el día a un chico.', 0), +(@ID, 'esMX', '¡Guau! Parecía que solo estabas aquí ofreciéndote como $gvoluntario:voluntaria; para ayudar. Muchas gracias por la donación. Los empacaré y los contaré. Seguro que sabes cómo alegrarle el día a un chico.', 0); +-- 8514 ¡La Alianza necesita más cuero medio! +-- https://es.classic.wowhead.com/quest=8514 +SET @ID := 8514; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí $gseñor:señora;, parece que hemos reunido muchas piezas de cuero medio, pero necesitamos más. Puedo asegurarte que todo se aprovechará; ni una sola pieza se desperdiciará. Sé que es mucho pedir, pero si aún estás $gdispuesto:dispuesta;, podría usar tu ayuda para intentar hacer mella en el resto de mi cuota.', 0), +(@ID, 'esMX', 'Sí $gseñor:señora;, parece que hemos reunido muchas piezas de cuero medio, pero necesitamos más. Puedo asegurarte que todo se aprovechará; ni una sola pieza se desperdiciará. Sé que es mucho pedir, pero si aún estás $gdispuesto:dispuesta;, podría usar tu ayuda para intentar hacer mella en el resto de mi cuota.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Caramba, seguro que has traído mucho cuero medio, $gseñor:señora;! Me aseguraré de que todo esto se utilice correctamente, sí, de hecho. ¡Con tu ayuda, habremos completado nuestra provisión de cuero medio en poco tiempo!$B$B¡Gracias, $n!', 0), +(@ID, 'esMX', '¡Caramba, seguro que has traído mucho cuero medio, $gseñor:señora;! Me aseguraré de que todo esto se utilice correctamente, sí, de hecho. ¡Con tu ayuda, habremos completado nuestra provisión de cuero medio en poco tiempo!$B$B¡Gracias, $n!', 0); +-- 8515 ¡La Alianza necesita cuero grueso! +-- https://es.classic.wowhead.com/quest=8515 +SET @ID := 8515; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Es ese el cuero grueso que tienes en tu mochila, $n? ¿Lo es? ¡No puedo esperar a que me lo entregues! Todos van a estar tan contentos con nosotros, ¿no crees?', 0), +(@ID, 'esMX', '¿Es ese el cuero grueso que tienes en tu mochila, $n? ¿Lo es? ¡No puedo esperar a que me lo entregues! Todos van a estar tan contentos con nosotros, ¿no crees?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Oh, sabía que podías hacerlo, $n, ¡simplemente lo sabía! Los pondré en las manos adecuadas tan pronto como pueda. Ahora veamos aquí. Mmm, parece que nuestra cuenta va bastante bien. Deberías volver a consultarme en un momento, una vez que termine de contar para ver si necesitamos más. ¡Porque si lo hacemos, tú eres $gel:la; que quiero que lo reuna para mí!', 0), +(@ID, 'esMX', 'Oh, sabía que podías hacerlo, $n, ¡simplemente lo sabía! Los pondré en las manos adecuadas tan pronto como pueda. Ahora veamos aquí. Mmm, parece que nuestra cuenta va bastante bien. Deberías volver a consultarme en un momento, una vez que termine de contar para ver si necesitamos más. ¡Porque si lo hacemos, tú eres $gel:la; que quiero que lo reuna para mí!', 0); +-- 8516 ¡La Alianza necesita más cuero grueso! +-- https://es.classic.wowhead.com/quest=8516 +SET @ID := 8516; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, la pila todavía no es lo suficientemente alta. $n, todavía no hemos alcanzado nuestro objetivo de cuero grueso. ¡Piensa en todas las cosas que podemos hacer con todo ese cuero! Todo tipo de armaduras y armas. ¡Cosas para el interior de los tanques de vapor y visores de rifle! Y gafas de ingeniería, ¡siempre son divertidas!$B$B¿Me traerás de vuelta un poco más de cuero grueso?', 0), +(@ID, 'esMX', 'Sí, la pila todavía no es lo suficientemente alta. $n, todavía no hemos alcanzado nuestro objetivo de cuero grueso. ¡Piensa en todas las cosas que podemos hacer con todo ese cuero! Todo tipo de armaduras y armas. ¡Cosas para el interior de los tanques de vapor y visores de rifle! Y gafas de ingeniería, ¡siempre son divertidas!$B$B¿Me traerás de vuelta un poco más de cuero grueso?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo hiciste otra vez! Es simplemente asombroso cómo sales, recolectas todas estas cosas, y luego las traes aquí y las entregas. Te lo digo, cuando se enteren de cuánto has estado ayudando por aquí, ¡no podrás caminar por la calle sin que la gente te pida tu autógrafo!$B$BGracias de nuevo por tu generosa donación de cuero grueso, $n.', 0), +(@ID, 'esMX', '¡Lo hiciste otra vez! Es simplemente asombroso cómo sales, recolectas todas estas cosas, y luego las traes aquí y las entregas. Te lo digo, cuando se enteren de cuánto has estado ayudando por aquí, ¡no podrás caminar por la calle sin que la gente te pida tu autógrafo!$B$BGracias de nuevo por tu generosa donación de cuero grueso, $n.', 0); +-- 8517 ¡La Alianza necesita vendas de lino! +-- https://es.classic.wowhead.com/quest=8517 +SET @ID := 8517; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes las veinte vendas de lino que necesito, $n?', 0), +(@ID, 'esMX', '¿Tienes las veinte vendas de lino que necesito, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muchos son los soldados que se beneficiarán de tu contribución de hoy, $n. Me ocuparé personalmente de que la Alianza conozca sus esfuerzos. Permítame un momento para almacenar estos vendajes correctamente y actualizar mi recuento, y luego consulta conmigo para ver si necesito más.$B$B¡Que la Luz de Elune brille sobre ti, $r!', 0), +(@ID, 'esMX', 'Muchos son los soldados que se beneficiarán de tu contribución de hoy, $n. Me ocuparé personalmente de que la Alianza conozca sus esfuerzos. Permítame un momento para almacenar estos vendajes correctamente y actualizar mi recuento, y luego consulta conmigo para ver si necesito más.$B$B¡Que la Luz de Elune brille sobre ti, $r!', 0); +-- 8518 ¡La Alianza necesita más vendas de lino! +-- https://es.classic.wowhead.com/quest=8518 +SET @ID := 8518; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Nunca dejará de asombrarme el altruismo demostrado cuando tantos optarían por una alternativa egoísta. $c, todavía necesito unas cuantas vendas de lino para poder dar mi encargo por cumplido. ¿Me ayudarás una vez más a reunir esas vendas?', 0), +(@ID, 'esMX', 'Nunca dejará de asombrarme el altruismo demostrado cuando tantos optarían por una alternativa egoísta. $c, todavía necesito unas cuantas vendas de lino para poder dar mi encargo por cumplido. ¿Me ayudarás una vez más a reunir esas vendas?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Mereces todos mis elogios, $n. Mientras muchos se aprovecharían de la economía de nuestra guerra para enriquecerse enfervorecidos por la avaricia, has demostrado una y otra vez que tu entrega a la Alianza, y por ende a todo Azeroth, es lo primero.$B$B¡Que la bendición de Elune siempre esté contigo!', 0), +(@ID, 'esMX', 'Mereces todos mis elogios, $n. Mientras muchos se aprovecharían de la economía de nuestra guerra para enriquecerse enfervorecidos por la avaricia, has demostrado una y otra vez que tu entrega a la Alianza, y por ende a todo Azeroth, es lo primero.$B$B¡Que la bendición de Elune siempre esté contigo!', 0); +-- 8519 Un peón en el ajedrez de la vida +-- https://es.classic.wowhead.com/quest=8519 +SET @ID := 8519; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Después de la traición de Staghelm, recogí los pedazos destrozados del Cetro de las arenas movedizas y regresé aquí. Tenía toda la intención de proteger el cetro de aquellos que tratarían de usarlo para causar daño a nuestro mundo; así nació la carga de los Vuelo de Dragón.$B$BUn cetro dividido entre los cuatro poderosos Aspectos resultaría casi imposible de restaurar para aquellos que deliberadamente buscan el caos... o eso pensé. Qué tonto fui. Incluso ahora me persigue ese vuelo maldito.', 0), +(@ID, 'esMX', 'Después de la traición de Staghelm, recogí los pedazos destrozados del Cetro de las arenas movedizas y regresé aquí. Tenía toda la intención de proteger el cetro de aquellos que tratarían de usarlo para causar daño a nuestro mundo; así nació la carga de los Vuelo de Dragón.$B$BUn cetro dividido entre los cuatro poderosos Aspectos resultaría casi imposible de restaurar para aquellos que deliberadamente buscan el caos... o eso pensé. Qué tonto fui. Incluso ahora me persigue ese vuelo maldito.', 0); +-- 8520 ¡La Alianza necesita vendas de seda! +-- https://es.classic.wowhead.com/quest=8520 +SET @ID := 8520; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hola, $c, ¿ya has conseguido esas veinte vendas de seda?', 0), +(@ID, 'esMX', 'Hola, $c, ¿ya has conseguido esas veinte vendas de seda?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, ¡lo lograste! Gracias a ti estamos un paso más cerca de conseguir nuestro objetivo con las vendas de seda. Las guardaré y luego podremos hablar más si quieres.', 0), +(@ID, 'esMX', '$c, ¡lo lograste! Gracias a ti estamos un paso más cerca de conseguir nuestro objetivo con las vendas de seda. Las guardaré y luego podremos hablar más si quieres.', 0); +-- 8521 ¡La Alianza necesita más vendas de seda! +-- https://es.classic.wowhead.com/quest=8521 +SET @ID := 8521; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Es muy amable por tu parte ofrecerte a ayudarme de nuevo, $c. Parece que hemos reunido la gran cantidad de vendas de seda que se nos ha encomendado, pero aún necesitamos más. $n, ¿hay alguna forma que te parezca adecuada para hacer otro paquete y traerlo? La Alianza y yo estaremos muy agradecidos.', 0), +(@ID, 'esMX', 'Es muy amable por tu parte ofrecerte a ayudarme de nuevo, $c. Parece que hemos reunido la gran cantidad de vendas de seda que se nos ha encomendado, pero aún necesitamos más. $n, ¿hay alguna forma que te parezca adecuada para hacer otro paquete y traerlo? La Alianza y yo estaremos muy agradecidos.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eres una persona tan desinteresada. Muchas gracias por tu contribución al esfuerzo de guerra. Son las personas como tú las que van a marcar la diferencia entre el éxito y el fracaso en Ahn\'Qiraj. Solo espero que todo esto sea suficiente.$B$BGracias de nuevo, $n.', 0), +(@ID, 'esMX', 'Eres una persona tan desinteresada. Muchas gracias por tu contribución al esfuerzo de guerra. Son las personas como tú las que van a marcar la diferencia entre el éxito y el fracaso en Ahn\'Qiraj. Solo espero que todo esto sea suficiente.$B$BGracias de nuevo, $n.', 0); +-- 8522 ¡La Alianza necesita vendas de paño rúnico! +-- https://es.classic.wowhead.com/quest=8522 +SET @ID := 8522; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los días pasan uno tras otro y seguimos adelante. $n, ¿tienes esas vendas de paño rúnico?', 0), +(@ID, 'esMX', 'Los días pasan uno tras otro y seguimos adelante. $n, ¿tienes esas vendas de paño rúnico?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tu perseverancia en esta tarea es digna de elogio, $n. Guardaré estas vendas y luego me gustaría volver a hablar contigo sobre la posibilidad de que recojas aún más vendas de paño rúnico.', 0), +(@ID, 'esMX', 'Tu perseverancia en esta tarea es digna de elogio, $n. Guardaré estas vendas y luego me gustaría volver a hablar contigo sobre la posibilidad de que recojas aún más vendas de paño rúnico.', 0); +-- 8523 ¡La Alianza necesita más vendas de paño rúnico! +-- https://es.classic.wowhead.com/quest=8523 +SET @ID := 8523; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Así que venimos a discutir asuntos urgentes una vez más, $n. Una vez más te agradezco tus esfuerzos; no todos son tan tan desinteresados. Pero aún queda mucho trabajo por hacer.$B$B$n, ¿volverás a recoger vendas de paño rúnico y me las devolverás aquí?', 0), +(@ID, 'esMX', 'Así que venimos a discutir asuntos urgentes una vez más, $n. Una vez más te agradezco tus esfuerzos; no todos son tan tan desinteresados. Pero aún queda mucho trabajo por hacer.$B$B$n, ¿volverás a recoger vendas de paño rúnico y me las devolverás aquí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Vamos por buen camino, $n. Eres $gun excelente compañero:una excelente compañera; de trabajo. Una vez más te doy las gracias por tus esfuerzos en nombre de toda la Alianza. Ven y habla de nuevo conmigo pronto.', 0), +(@ID, 'esMX', 'Vamos por buen camino, $n. Eres $gun excelente compañero:una excelente compañera; de trabajo. Una vez más te doy las gracias por tus esfuerzos en nombre de toda la Alianza. Ven y habla de nuevo conmigo pronto.', 0); +-- 8524 ¡La Alianza necesita atún blanco arco iris! +-- https://es.classic.wowhead.com/quest=8524 +SET @ID := 8524; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estoy dispuesto a apostar que has regresado con todo ese atún blanco del que estábamos hablando antes, ¿verdad, $n?', 0), +(@ID, 'esMX', 'Estoy dispuesto a apostar que has regresado con todo ese atún blanco del que estábamos hablando antes, ¿verdad, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Dos para la Alianza, uno para mí, dos para la Alianza, uno para mí. Hola, $gpescador:pescadora;, excelente trabajo. Puedo ver que vas a ser un verdadero mérito para el club. Sin embargo, me parece que probablemente necesitemos más de ese atún blanco. ¿Por qué no te diriges hacia fuera y pescas un poco más? Ya puedo escuchar mi estómago retumbar.', 0), +(@ID, 'esMX', 'Dos para la Alianza, uno para mí, dos para la Alianza, uno para mí. Hola, $gpescador:pescadora;, excelente trabajo. Puedo ver que vas a ser un verdadero mérito para el club. Sin embargo, me parece que probablemente necesitemos más de ese atún blanco. ¿Por qué no te diriges hacia fuera y pescas un poco más? Ya puedo escuchar mi estómago retumbar.', 0); +-- 8525 ¡La Alianza necesita más atún blanco arco iris! +-- https://es.classic.wowhead.com/quest=8525 +SET @ID := 8525; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Qué! ¿Tú otra vez? Bueno, seré el tío de un mono... excepto que soy un Gnomo. ¡Gastrónomo Salao para ser precisos! Así que volviste a ayudar, ¿eh? Bueno, no puedo decir que te culpo. ¿No te encanta el olor de toda esa comida? $B$B¡Basta de holgazanear! ¡Sal y tráeme más atún blanco arcoíris!', 0), +(@ID, 'esMX', '¡Qué! ¿Tú otra vez? Bueno, seré el tío de un mono... excepto que soy un Gnomo. ¡Gastrónomo Salao para ser precisos! Así que volviste a ayudar, ¿eh? Bueno, no puedo decir que te culpo. ¿No te encanta el olor de toda esa comida? $B$B¡Basta de holgazanear! ¡Sal y tráeme más atún blanco arcoíris!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sabía que lo tenías dentro, $gchico:chica;. Tienes el aspecto de alguien que sabe lo que le gusta. Específicamente que te gusta complacerme y los poderes fácticos. Y eso lo tienes, te lo garantizo.$B$BJaja, está bien, simplemente guardaré estos peces adecuadamente, y luego tú y yo podemos tener una pequeña charla sobre que recolectes otros veinte atunes.', 0), +(@ID, 'esMX', 'Sabía que lo tenías dentro, $gchico:chica;. Tienes el aspecto de alguien que sabe lo que le gusta. Específicamente que te gusta complacerme y los poderes fácticos. Y eso lo tienes, te lo garantizo.$B$BJaja, está bien, simplemente guardaré estos peces adecuadamente, y luego tú y yo podemos tener una pequeña charla sobre que recolectes otros veinte atunes.', 0); +-- 8526 ¡La Alianza necesita raptor asado! +-- https://es.classic.wowhead.com/quest=8526 +SET @ID := 8526; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Entonces, ¿ya tienes todo ese raptor asado?', 0), +(@ID, 'esMX', 'Entonces, ¿ya tienes todo ese raptor asado?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Vaya, eso es genial. Gracias por traerme toda esta carne de animal quemada, $n. Lo pondré en la pila de allí. Seguro que alguien se ocupará de ello. Supongo que si tienes algo de tiempo, ¿querrás traerme más?', 0), +(@ID, 'esMX', 'Vaya, eso es genial. Gracias por traerme toda esta carne de animal quemada, $n. Lo pondré en la pila de allí. Seguro que alguien se ocupará de ello. Supongo que si tienes algo de tiempo, ¿querrás traerme más?', 0); +-- 8528 ¡La Alianza necesita serviolas moteadas! +-- https://es.classic.wowhead.com/quest=8528 +SET @ID := 8528; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estoy segura de que regresarás pronto con las serviolas moteadas que discutimos.', 0), +(@ID, 'esMX', 'Estoy segura de que regresarás pronto con las serviolas moteadas que discutimos.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias por este regalo, $n, y de manera tan oportuna también. Seguramente a nuestros soldados no les faltará algo de comer. Solo déjame guardar estos peces correctamente y luego tú y yo podemos discutir una segunda entrega, si estás $gdispuesto:dispuesta;.', 0), +(@ID, 'esMX', 'Gracias por este regalo, $n, y de manera tan oportuna también. Seguramente a nuestros soldados no les faltará algo de comer. Solo déjame guardar estos peces correctamente y luego tú y yo podemos discutir una segunda entrega, si estás $gdispuesto:dispuesta;.', 0); +-- 8529 ¡La Alianza necesita más serviolas moteadas! +-- https://es.classic.wowhead.com/quest=8529 +SET @ID := 8529; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Si todavía estás $gdispuesto:dispuesta;, me gustaría enviarte de regreso para que traigas otra carga de serviolas moteadas, $n. Me imagino que, con la experiencia de la primera vez, esta captura debería ser mucho más rápida y sencilla. ¿Estás en el juego?', 0), +(@ID, 'esMX', 'Si todavía estás $gdispuesto:dispuesta;, me gustaría enviarte de regreso para que traigas otra carga de serviolas moteadas, $n. Me imagino que, con la experiencia de la primera vez, esta captura debería ser mucho más rápida y sencilla. ¿Estás en el juego?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eres $gun verdadero:una verdadera; miembro de la Alianza, $n. Tus esfuerzos no pasarán desapercibidos ni serán despreciados. Y gracias por cocinar el pescado también. Me encargaré de que se almacenen correctamente y luego tendré que actualizar mi recuento. Cada uno nos acerca mucho más a alcanzar nuestro objetivo.', 0), +(@ID, 'esMX', 'Eres $gun verdadero:una verdadera; miembro de la Alianza, $n. Tus esfuerzos no pasarán desapercibidos ni serán despreciados. Y gracias por cocinar el pescado también. Me encargaré de que se almacenen correctamente y luego tendré que actualizar mi recuento. Cada uno nos acerca mucho más a alcanzar nuestro objetivo.', 0); +-- 8532 ¡La Horda necesita lingotes de cobre! +-- https://es.classic.wowhead.com/quest=8532 +SET @ID := 8532; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Espero que eso que traes son los 20 lingotes de cobre, $c.', 0), +(@ID, 'esMX', 'Espero que eso que traes son los 20 lingotes de cobre, $c.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos lingotes servirán y gracias por no sacarles brillo. De nada sirve embellecerlos cuando se van a fundir para todo tipo de material que se debe construir para la guerra. Me ocuparé de poner esto en las pilas y me aseguraré de que se aprovechan bien. Vuelve a hablar conmigo si te interesara traer otros 20.', 0), +(@ID, 'esMX', 'Estos lingotes servirán y gracias por no sacarles brillo. De nada sirve embellecerlos cuando se van a fundir para todo tipo de material que se debe construir para la guerra. Me ocuparé de poner esto en las pilas y me aseguraré de que se aprovechan bien. Vuelve a hablar conmigo si te interesara traer otros 20.', 0); +-- 8533 ¡La Horda necesita más lingotes de cobre! +-- https://es.classic.wowhead.com/quest=8533 +SET @ID := 8533; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ya has vuelto? No tardarás en convertirte en $gun auténtico minero:una auténtica minera;, $c. Así que ya sabes de qué va; necesito que vayas a extraer un montón de mineral de cobre, lo fundas en lingotes y me los traigas aquí. Sé que es algo de lo que eres capaz, el tema es ¿estás $gdispuesto:dispuesta; a hacerlo?', 0), +(@ID, 'esMX', '¿Ya has vuelto? No tardarás en convertirte en $gun auténtico minero:una auténtica minera;, $c. Así que ya sabes de qué va; necesito que vayas a extraer un montón de mineral de cobre, lo fundas en lingotes y me los traigas aquí. Sé que es algo de lo que eres capaz, el tema es ¿estás $gdispuesto:dispuesta; a hacerlo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me lo has probado una vez más, $n. Me ocuparé de que este cobre se utilice a su debido tiempo. Sin embargo, por ahora, necesito colocar estas barras de cobre en el palé y contarlas. Si todavía te sientes $ganimado:animada;, podría usar tu ayuda para reunir aún más barras de cobre.', 0), +(@ID, 'esMX', 'Me lo has probado una vez más, $n. Me ocuparé de que este cobre se utilice a su debido tiempo. Sin embargo, por ahora, necesito colocar estas barras de cobre en el palé y contarlas. Si todavía te sientes $ganimado:animada;, podría usar tu ayuda para reunir aún más barras de cobre.', 0); +-- 8534 Informe de exploración de Colmen'Zora +-- https://es.classic.wowhead.com/quest=8534 +SET @ID := 8534; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Encontrarás al Explorador Azenel dentro de Colmen\'Zora. ¡Date prisa, $n! El tiempo es esencial.', 0), +(@ID, 'esMX', 'Encontrarás al Explorador Azenel dentro de Colmen\'Zora. ¡Date prisa, $n! El tiempo es esencial.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Apreciamos mucho tus esfuerzos, $n. Leeré estos informes de exploración de inmediato, siéntete libre de repasar tu próxima tarea.', 0), +(@ID, 'esMX', 'Apreciamos mucho tus esfuerzos, $n. Leeré estos informes de exploración de inmediato, siéntete libre de repasar tu próxima tarea.', 0); +-- Templario vetusto +-- 8535, 8536, 8537 +-- https://es.classic.wowhead.com/quest=8535 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8535, 8536, 8537) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8535, 'esES', '¿Has terminado tu tarea, $n?', 0), +(8536, 'esES', '¿Has terminado tu tarea, $n?', 0), +(8537, 'esES', '¿Has terminado tu tarea, $n?', 0), +(8535, 'esMX', '¿Has terminado tu tarea, $n?', 0), +(8536, 'esMX', '¿Has terminado tu tarea, $n?', 0), +(8537, 'esMX', '¿Has terminado tu tarea, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8535, 8536, 8537) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8535, 'esES', 'Buen trabajo, $n. Aquí está su próxima tarea.', 0), +(8536, 'esES', 'Buen trabajo, $n. Aquí está su próxima tarea.', 0), +(8537, 'esES', 'Buen trabajo, $n. Aquí está su próxima tarea.', 0), +(8535, 'esMX', 'Buen trabajo, $n. Aquí está su próxima tarea.', 0), +(8536, 'esMX', 'Buen trabajo, $n. Aquí está su próxima tarea.', 0), +(8537, 'esMX', 'Buen trabajo, $n. Aquí está su próxima tarea.', 0); +-- 8538 Los cuatro Duques +-- https://es.classic.wowhead.com/quest=8538 +SET @ID := 8538; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has terminado tu tarea, $n?', 0), +(@ID, 'esMX', '¿Has terminado tu tarea, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hoy has conseguido un gran logro para nuestra causa, $n. Has vencido a algunos de nuestros enemigos más poderosos. Por eso, te felicito enormemente.', 0), +(@ID, 'esMX', 'Hoy has conseguido un gran logro para nuestra causa, $n. Has vencido a algunos de nuestros enemigos más poderosos. Por eso, te felicito enormemente.', 0); +-- 8539 Objetivo: las hermanas de la colmena de Colmen'Zora +-- https://es.classic.wowhead.com/quest=8539 +SET @ID := 8539; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $n?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Eres $gun digno aliado:una digna aliada;.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Eres $gun digno aliado:una digna aliada;.', 0); +-- Botas para la guardia +-- 8540, 8541 +-- https://es.classic.wowhead.com/quest=8540 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8540, 8541) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8540, 'esES', '¿Tienes algo para mí, $n?', 0), +(8541, 'esES', '¿Tienes algo para mí, $n?', 0), +(8540, 'esMX', '¿Tienes algo para mí, $n?', 0), +(8541, 'esMX', '¿Tienes algo para mí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8540, 8541) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8540, 'esES', 'Excelente. Las necesitábamos, $n. Buen trabajo.', 0), +(8541, 'esES', 'Excelente. Las necesitábamos, $n. Buen trabajo.', 0), +(8540, 'esMX', 'Excelente. Las necesitábamos, $n. Buen trabajo.', 0), +(8541, 'esMX', 'Excelente. Las necesitábamos, $n. Buen trabajo.', 0); +-- 8542 ¡La Horda necesita lingotes de estaño! +-- https://es.classic.wowhead.com/quest=8542 +SET @ID := 8542; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Cuántos lingotes de estaño tienes, $c? Después de la guerra creo que necesitaré que alguien me enseñe a contar.', 0), +(@ID, 'esMX', '¿Cuántos lingotes de estaño tienes, $c? Después de la guerra creo que necesitaré que alguien me enseñe a contar.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bueno, supongo que parece el número correcto de lingotes de estaño. ¡No intentes engañarme, $c! Al contar me duele el cráneo. Ahora voy y pongo estas barras en la pila y tú sales y me traes más de lo mismo.', 0), +(@ID, 'esMX', 'Bueno, supongo que parece el número correcto de lingotes de estaño. ¡No intentes engañarme, $c! Al contar me duele el cráneo. Ahora voy y pongo estas barras en la pila y tú sales y me traes más de lo mismo.', 0); +-- 8543 ¡La Horda necesita más lingotes de estaño! +-- https://es.classic.wowhead.com/quest=8543 +SET @ID := 8543; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, veo que te tomas en serio la guerra. Sin embargo, estoy un poco nervioso esperando a que comience, y estoy seguro de que tú también, $n. Será glorioso cuando comience. La Horda corriendo sobre las arenas del desierto de Silithus, armas en mano, cargando de contra las masas de insectos. ¡Ese día todos tendrán un gran honor!$B$B¡Har! Pero primero necesitamos más lingotes de estaño. Es curioso cómo una cosa tan pequeña puede marcar una diferencia tan grande, ¿no crees?', 0), +(@ID, 'esMX', 'Muy bien, veo que te tomas en serio la guerra. Sin embargo, estoy un poco nervioso esperando a que comience, y estoy seguro de que tú también, $n. Será glorioso cuando comience. La Horda corriendo sobre las arenas del desierto de Silithus, armas en mano, cargando de contra las masas de insectos. ¡Ese día todos tendrán un gran honor!$B$B¡Har! Pero primero necesitamos más lingotes de estaño. Es curioso cómo una cosa tan pequeña puede marcar una diferencia tan grande, ¿no crees?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Throm\'ka, $n. Nos honras a mí y a la Horda con tus lingotes de estaño. Los pondré en la pila y luego vendrán y harán cosas con ellos. Y luego, cuando todo esté hecho, iremos a la guerra y le mostraremos a la insignificante Alianza cómo luchar contra los insectos.$B$B¡Ahora tráeme más lingotes de estaño!', 0), +(@ID, 'esMX', 'Throm\'ka, $n. Nos honras a mí y a la Horda con tus lingotes de estaño. Los pondré en la pila y luego vendrán y harán cosas con ellos. Y luego, cuando todo esté hecho, iremos a la guerra y le mostraremos a la insignificante Alianza cómo luchar contra los insectos.$B$B¡Ahora tráeme más lingotes de estaño!', 0); +-- 8544 Las bufas de conquistador +-- https://es.classic.wowhead.com/quest=8544 +SET @ID := 8544; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ha recogido los componentes que necesito?', 0), +(@ID, 'esMX', '¿Ha recogido los componentes que necesito?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Con los materiales que traes y de las escamas de nuestros enemigos qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que verte infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'Con los materiales que traes y de las escamas de nuestros enemigos qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que verte infunda miedo en nuestros enemigos.', 0); +-- 8545 ¡La Horda necesita barras de mitril! +-- https://es.classic.wowhead.com/quest=8545 +SET @ID := 8545; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Seguro que sería bueno tener todas las barras de mitril que necesitamos pa\' el esfuerzo bélico de Ahn\'Qiraj. ¿Es por eso qu\'has vuelto, colega? ¿Tienes mis barras?', 0), +(@ID, 'esMX', 'Seguro que sería bueno tener todas las barras de mitril que necesitamos pa\' el esfuerzo bélico de Ahn\'Qiraj. ¿Es por eso qu\'has vuelto, colega? ¿Tienes mis barras?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Este será un buen comienzo pa\' ti y pa\' mí, $n. Son otras veinte barras de mitril que puedo poner en las pilas y marcar fuera de la lista. Todo se v\'a aprovechar pa\' hacer el material de guerra.$B$BAsegúrate de volver a verme porque ¿sabes que?, parece que vamos a necesitar más d\'esas barras de mitril.', 0), +(@ID, 'esMX', 'Este será un buen comienzo pa\' ti y pa\' mí, $n. Son otras veinte barras de mitril que puedo poner en las pilas y marcar fuera de la lista. Todo se v\'a aprovechar pa\' hacer el material de guerra.$B$BAsegúrate de volver a verme porque ¿sabes que?, parece que vamos a necesitar más d\'esas barras de mitril.', 0); +-- 8546 ¡La Horda necesita más barras de mitril! +-- Notice: English text is also missing in quest_request_items.CompletionText +-- https://es.classic.wowhead.com/quest=8546 +SET @ID := 8546; +UPDATE `quest_request_items` SET `CompletionText` = 'Yup, I be glad you\'re here, mon. You helped me before, and now I need your help again. We still lookin\' ta bring in more mithril bars for the war effort; gonna build lots of armor and weapons and things to go squish them bugs at Ahn\'Qiraj.$B$BSo if you be a true friend, you bring me back more stacks of mithril bars. I take all you got until we hit our quota. You have some for me now?', `VerifiedBuild` = 0 WHERE `id` = @ID ; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, m’alegro qu’hayas venío, colega. M’has ayudao antes y ahora vuelvo a necesitarte. Entoavía hay que traer más lingotes de mitril pa’ los preparativos de la guerra; vamos a construir un montón d’armaduras, armas y tal y tal pa\' aplastar a esos bichos d’Ahn\'Qiraj.$B$BSi eres $gun amigo:una amiga; de verdad, tráeme más pilas de lingotes de mitril. Me lo quedaré to\' hasta qu\'alcancemos nuestro cupo. ¿No tendrás algunos pa’ mí ahora?', 0), +(@ID, 'esMX', 'Sí, m’alegro qu’hayas venío, colega. M’has ayudao antes y ahora vuelvo a necesitarte. Entoavía hay que traer más lingotes de mitril pa’ los preparativos de la guerra; vamos a construir un montón d’armaduras, armas y tal y tal pa\' aplastar a esos bichos d’Ahn\'Qiraj.$B$BSi eres $gun amigo:una amiga; de verdad, tráeme más pilas de lingotes de mitril. Me lo quedaré to\' hasta qu\'alcancemos nuestro cupo. ¿No tendrás algunos pa’ mí ahora?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Un trabajo increíble, $n! Otros 20 lingotes y nos acercaremos al objetivo y tendremos más material pa\' la guerra. M’ocuparé de que lo guarden. Y si consigues otro montón de lingotes de mitril, asegúrate de que los traes a la menda.', 0), +(@ID, 'esMX', '¡Un trabajo increíble, $n! Otros 20 lingotes y nos acercaremos al objetivo y tendremos más material pa\' la guerra. M’ocuparé de que lo guarden. Y si consigues otro montón de lingotes de mitril, asegúrate de que los traes a la menda.', 0); +-- 8548 Equipamiento de Voluntario +-- https://es.classic.wowhead.com/quest=8548 +SET @ID := 8548; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0), +(@ID, 'esMX', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:maiga;!', 0), +(@ID, 'esMX', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:maiga;!', 0); +-- 8549 ¡La Horda necesita flores de paz! +-- https://es.classic.wowhead.com/quest=8549 +SET @ID := 8549; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Vete ahora, $n. Busca, $n.', 0), +(@ID, 'esMX', 'Vete ahora, $n. Busca, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No ha sido una tarea fácil, pero has sobresalido. Claro que no te apresures a pensar que me has impresionado, $n.', 0), +(@ID, 'esMX', 'No ha sido una tarea fácil, pero has sobresalido. Claro que no te apresures a pensar que me has impresionado, $n.', 0); +-- 8550 ¡La Horda necesita más flores de paz! +-- https://es.classic.wowhead.com/quest=8550 +SET @ID := 8550; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias por tus continuos esfuerzos, $n. Te traes un gran honor a ti $gmismo:misma; y a tus antepasados con tu generosidad desinteresada, ¡y todos lo sabrán! Guardaré estas hierbas para que se mantengan frescas hasta que se necesiten. Una vez más, revelas el verdadero espíritu de la Horda, la lucha por vencer y la promesa de que podemos trabajar juntos para lograrlo.', 0), +(@ID, 'esMX', 'Gracias por tus continuos esfuerzos, $n. Te traes un gran honor a ti $gmismo:misma; y a tus antepasados con tu generosidad desinteresada, ¡y todos lo sabrán! Guardaré estas hierbas para que se mantengan frescas hasta que se necesiten. Una vez más, revelas el verdadero espíritu de la Horda, la lucha por vencer y la promesa de que podemos trabajar juntos para lograrlo.', 0); +-- 8551 El cofre del Capitán +-- https://es.classic.wowhead.com/quest=8551 +SET @ID := 8551; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buenas, $n! ¿Has encontrado a Gorlash? Ese cofre era mi favorito y tiene un compartimiento oculto donde guardaba mis mayores tesoros.', 0), +(@ID, 'esMX', '¡Buenas, $n! ¿Has encontrado a Gorlash? Ese cofre era mi favorito y tiene un compartimiento oculto donde guardaba mis mayores tesoros.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡La has encontrado! ¡Oh, qué día tan feliz! Gracias, $n. Recuperar mi cofre hace que se enfríe el fuego que arde en mi interior.$B$BPero mi venganza todavía no ha terminado...', 0), +(@ID, 'esMX', '¡La has encontrado! ¡Oh, qué día tan feliz! Gracias, $n. Recuperar mi cofre hace que se enfríe el fuego que arde en mi interior.$B$BPero mi venganza todavía no ha terminado...', 0); +-- 8552 La banda con monograma +-- https://es.classic.wowhead.com/quest=8552 +SET @ID := 8552; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Hola! ¿Tienes algo de lo que hablar conmigo?', 0), +(@ID, 'esMX', '¡Hola! ¿Tienes algo de lo que hablar conmigo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has recuperado mi banda? Entonces... tienes que haber matado a ese gigante marino Mok\'rash. ¡Hurra!$B$BMe alegro de que ese villano asqueroso esté muerto. Mok\'rash fue uno de los tres gigantes marinos que destrozó mis barcos y mató a mi tripulación.$B$BTres veces.$B$BEres $gun:una; $c de gran valía, $n.', 0), +(@ID, 'esMX', '¿Has recuperado mi banda? Entonces... tienes que haber matado a ese gigante marino Mok\'rash. ¡Hurra!$B$BMe alegro de que ese villano asqueroso esté muerto. Mok\'rash fue uno de los tres gigantes marinos que destrozó mis barcos y mató a mi tripulación.$B$BTres veces.$B$BEres $gun:una; $c de gran valía, $n.', 0); From caf9140dca6bacd337fcb9957d2219c12ceb60f2 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 5 May 2021 13:21:03 +0000 Subject: [PATCH 084/108] chore(DB): import pending SQL update file Referenced commit(s): 37c3e05140bbbe202bc7eec6875f42154d49e0c3 --- .../2021_05_05_02.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619616408121276500.sql => db_world/2021_05_05_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1619616408121276500.sql b/data/sql/updates/db_world/2021_05_05_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1619616408121276500.sql rename to data/sql/updates/db_world/2021_05_05_02.sql index 4987d953b0..a2b7d05d1f 100644 --- a/data/sql/updates/pending_db_world/rev_1619616408121276500.sql +++ b/data/sql/updates/db_world/2021_05_05_02.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_05_01 -> 2021_05_05_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_05_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_05_01 2021_05_05_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619616408121276500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619616408121276500'); -- 8355 ¡Truco o trato! @@ -1097,3 +1113,12 @@ DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', '¿Has recuperado mi banda? Entonces... tienes que haber matado a ese gigante marino Mok\'rash. ¡Hurra!$B$BMe alegro de que ese villano asqueroso esté muerto. Mok\'rash fue uno de los tres gigantes marinos que destrozó mis barcos y mató a mi tripulación.$B$BTres veces.$B$BEres $gun:una; $c de gran valía, $n.', 0), (@ID, 'esMX', '¿Has recuperado mi banda? Entonces... tienes que haber matado a ese gigante marino Mok\'rash. ¡Hurra!$B$BMe alegro de que ese villano asqueroso esté muerto. Mok\'rash fue uno de los tres gigantes marinos que destrozó mis barcos y mató a mi tripulación.$B$BTres veces.$B$BEres $gun:una; $c de gran valía, $n.', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 0d704a0cade7ef4c3c94453673f1dcf0ad72c14e Mon Sep 17 00:00:00 2001 From: KiK0 Date: Thu, 6 May 2021 04:01:20 -0700 Subject: [PATCH 085/108] fix(DB/Spells): Arcane Missiles: They should not cause aggro when launched, but when hit with the first beam. (#5489) --- .../rev_1619501292588526500.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619501292588526500.sql diff --git a/data/sql/updates/pending_db_world/rev_1619501292588526500.sql b/data/sql/updates/pending_db_world/rev_1619501292588526500.sql new file mode 100644 index 0000000000..f961298b01 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619501292588526500.sql @@ -0,0 +1,20 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619501292588526500'); + +DELETE FROM `spell_dbc` WHERE `ID` IN (5143,5144,5145,8416,8417,10211,10212,25345,27075,38699,38704,42843,42846); + +INSERT IGNORE INTO `spell_dbc` (`ID`, `Category`, `DispelType`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `ShapeshiftMask`, `ShapeshiftExclude`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `InterruptFlags`, `AuraInterruptFlags`, `ChannelInterruptFlags`, `ProcTypeMask`, `ProcChance`, `ProcCharges`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `PowerType`, `ManaCost`, `ManaCostPerLevel`, `ManaPerSecond`, `ManaPerSecondPerLevel`, `RangeIndex`, `Speed`, `ModalNextSpell`, `CumulativeAura`, `Totem_1`, `Totem_2`, `Reagent_1`, `Reagent_2`, `Reagent_3`, `Reagent_4`, `Reagent_5`, `Reagent_6`, `Reagent_7`, `Reagent_8`, `ReagentCount_1`, `ReagentCount_2`, `ReagentCount_3`, `ReagentCount_4`, `ReagentCount_5`, `ReagentCount_6`, `ReagentCount_7`, `ReagentCount_8`, `EquippedItemClass`, `EquippedItemSubclass`, `EquippedItemInvTypes`, `Effect_1`, `Effect_2`, `Effect_3`, `EffectDieSides_1`, `EffectDieSides_2`, `EffectDieSides_3`, `EffectRealPointsPerLevel_1`, `EffectRealPointsPerLevel_2`, `EffectRealPointsPerLevel_3`, `EffectBasePoints_1`, `EffectBasePoints_2`, `EffectBasePoints_3`, `EffectMechanic_1`, `EffectMechanic_2`, `EffectMechanic_3`, `ImplicitTargetA_1`, `ImplicitTargetA_2`, `ImplicitTargetA_3`, `ImplicitTargetB_1`, `ImplicitTargetB_2`, `ImplicitTargetB_3`, `EffectRadiusIndex_1`, `EffectRadiusIndex_2`, `EffectRadiusIndex_3`, `EffectAura_1`, `EffectAura_2`, `EffectAura_3`, `EffectAuraPeriod_1`, `EffectAuraPeriod_2`, `EffectAuraPeriod_3`, `EffectMultipleValue_1`, `EffectMultipleValue_2`, `EffectMultipleValue_3`, `EffectChainTargets_1`, `EffectChainTargets_2`, `EffectChainTargets_3`, `EffectItemType_1`, `EffectItemType_2`, `EffectItemType_3`, `EffectMiscValue_1`, `EffectMiscValue_2`, `EffectMiscValue_3`, `EffectMiscValueB_1`, `EffectMiscValueB_2`, `EffectMiscValueB_3`, `EffectTriggerSpell_1`, `EffectTriggerSpell_2`, `EffectTriggerSpell_3`, `EffectPointsPerCombo_1`, `EffectPointsPerCombo_2`, `EffectPointsPerCombo_3`, `EffectSpellClassMaskA_1`, `EffectSpellClassMaskA_2`, `EffectSpellClassMaskA_3`, `EffectSpellClassMaskB_1`, `EffectSpellClassMaskB_2`, `EffectSpellClassMaskB_3`, `EffectSpellClassMaskC_1`, `EffectSpellClassMaskC_2`, `EffectSpellClassMaskC_3`, `SpellVisualID_1`, `SpellVisualID_2`, `SpellIconID`, `ActiveIconID`, `SpellPriority`, `Name_Lang_enUS`, `Name_Lang_enGB`, `Name_Lang_koKR`, `Name_Lang_frFR`, `Name_Lang_deDE`, `Name_Lang_enCN`, `Name_Lang_zhCN`, `Name_Lang_enTW`, `Name_Lang_zhTW`, `Name_Lang_esES`, `Name_Lang_esMX`, `Name_Lang_ruRU`, `Name_Lang_ptPT`, `Name_Lang_ptBR`, `Name_Lang_itIT`, `Name_Lang_Unk`, `Name_Lang_Mask`, `NameSubtext_Lang_enUS`, `NameSubtext_Lang_enGB`, `NameSubtext_Lang_koKR`, `NameSubtext_Lang_frFR`, `NameSubtext_Lang_deDE`, `NameSubtext_Lang_enCN`, `NameSubtext_Lang_zhCN`, `NameSubtext_Lang_enTW`, `NameSubtext_Lang_zhTW`, `NameSubtext_Lang_esES`, `NameSubtext_Lang_esMX`, `NameSubtext_Lang_ruRU`, `NameSubtext_Lang_ptPT`, `NameSubtext_Lang_ptBR`, `NameSubtext_Lang_itIT`, `NameSubtext_Lang_Unk`, `NameSubtext_Lang_Mask`, `Description_Lang_enUS`, `Description_Lang_enGB`, `Description_Lang_koKR`, `Description_Lang_frFR`, `Description_Lang_deDE`, `Description_Lang_enCN`, `Description_Lang_zhCN`, `Description_Lang_enTW`, `Description_Lang_zhTW`, `Description_Lang_esES`, `Description_Lang_esMX`, `Description_Lang_ruRU`, `Description_Lang_ptPT`, `Description_Lang_ptBR`, `Description_Lang_itIT`, `Description_Lang_Unk`, `Description_Lang_Mask`, `AuraDescription_Lang_enUS`, `AuraDescription_Lang_enGB`, `AuraDescription_Lang_koKR`, `AuraDescription_Lang_frFR`, `AuraDescription_Lang_deDE`, `AuraDescription_Lang_enCN`, `AuraDescription_Lang_zhCN`, `AuraDescription_Lang_enTW`, `AuraDescription_Lang_zhTW`, `AuraDescription_Lang_esES`, `AuraDescription_Lang_esMX`, `AuraDescription_Lang_ruRU`, `AuraDescription_Lang_ptPT`, `AuraDescription_Lang_ptBR`, `AuraDescription_Lang_itIT`, `AuraDescription_Lang_Unk`, `AuraDescription_Lang_Mask`, `ManaCostPct`, `StartRecoveryCategory`, `StartRecoveryTime`, `MaxTargetLevel`, `SpellClassSet`, `SpellClassMask_1`, `SpellClassMask_2`, `SpellClassMask_3`, `MaxTargets`, `DefenseType`, `PreventionType`, `StanceBarOrder`, `EffectChainAmplitude_1`, `EffectChainAmplitude_2`, `EffectChainAmplitude_3`, `MinFactionID`, `MinReputation`, `RequiredAuraVision`, `RequiredTotemCategoryID_1`, `RequiredTotemCategoryID_2`, `RequiredAreasID`, `SchoolMask`, `RuneCostID`, `SpellMissileID`, `PowerDisplayID`, `Field227`, `Field228`, `Field229`, `SpellDescriptionVariableID`, `SpellDifficultyID`, `unk_320_2`, `unk_320_3`) VALUES +(5143,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,12,8,8,27,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7268,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 1","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $7268s1 Arcane damage every $5143t2 sec for $5143d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(5144,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,20,16,16,35,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7269,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 2","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $7269s1 Arcane damage every $5144t2 sec for $5144d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(5145,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,28,24,24,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7270,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 3","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $7270s1 Arcane damage every $5145t2 sec for $5145d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(8416,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,36,32,32,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8419,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 4","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $8419s1 Arcane damage every $8416t2 sec for $8416d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(8417,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,44,40,40,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8418,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 5","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $8418s1 Arcane damage every $8417t2 sec for $8417d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(10211,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,52,48,48,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10273,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 6","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $10273s1 Arcane damage every $10211t2 sec for $10211d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(10212,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,60,56,56,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10274,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 7","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $10274s1 Arcane damage every $10212t2 sec for $10212d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(25345,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,64,60,60,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25346,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 8","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $25346s1 Arcane damage every $25345t2 sec for $25345d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(27075,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,67,63,63,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27076,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 9","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $27076s1 Arcane damage every $t2 sec for $d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(38699,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,73,69,69,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38700,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 10","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $38700s1 Arcane damage every $t2 sec for $d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(38704,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,74,70,70,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38703,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 11","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $38703s1 Arcane damage every $t2 sec for $d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(42843,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,79,75,75,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42844,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 12","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $42844s1 Arcane damage every $t2 sec for $d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), +(42846,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,83,79,79,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42845,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 13","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $42845s1 Arcane damage every $t2 sec for $d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0); + +UPDATE `spell_dbc` SET `AttributesEx3`=131072 WHERE `ID` IN (5143,5144,5145,8416,8417,10211,10212,25345,27075,38699,38704,42843,42846); From 1a3266a7224ab7da92c06f11394ae720e5495ec0 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 6 May 2021 12:05:50 +0000 Subject: [PATCH 086/108] chore(DB): import pending SQL update file Referenced commit(s): 0d704a0cade7ef4c3c94453673f1dcf0ad72c14e --- .../2021_05_06_00.sql} | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) rename data/sql/updates/{pending_db_world/rev_1619501292588526500.sql => db_world/2021_05_06_00.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1619501292588526500.sql b/data/sql/updates/db_world/2021_05_06_00.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1619501292588526500.sql rename to data/sql/updates/db_world/2021_05_06_00.sql index f961298b01..f12d51c76c 100644 --- a/data/sql/updates/pending_db_world/rev_1619501292588526500.sql +++ b/data/sql/updates/db_world/2021_05_06_00.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_05_02 -> 2021_05_06_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_05_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_05_02 2021_05_06_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619501292588526500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619501292588526500'); DELETE FROM `spell_dbc` WHERE `ID` IN (5143,5144,5145,8416,8417,10211,10212,25345,27075,38699,38704,42843,42846); @@ -18,3 +34,12 @@ INSERT IGNORE INTO `spell_dbc` (`ID`, `Category`, `DispelType`, `Mechanic`, `Att (42846,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,83,79,79,28,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42845,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 13","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $42845s1 Arcane damage every $t2 sec for $d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0); UPDATE `spell_dbc` SET `AttributesEx3`=131072 WHERE `ID` IN (5143,5144,5145,8416,8417,10211,10212,25345,27075,38699,38704,42843,42846); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; From 058f0c9451e495f2bd3406a58aa12d0a5c0077e0 Mon Sep 17 00:00:00 2001 From: KiK0 Date: Thu, 6 May 2021 05:25:48 -0700 Subject: [PATCH 087/108] feat(DB/Locales): missing esES & esMX quest locales [PART 3] (#5511) --- .../rev_1619616883919180600.sql | 1095 +++++++++++++++++ 1 file changed, 1095 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619616883919180600.sql diff --git a/data/sql/updates/pending_db_world/rev_1619616883919180600.sql b/data/sql/updates/pending_db_world/rev_1619616883919180600.sql new file mode 100644 index 0000000000..dc6e326992 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619616883919180600.sql @@ -0,0 +1,1095 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619616883919180600'); + +-- 8554 Enfréntate a Negolash +-- https://es.classic.wowhead.com/quest=8554 +SET @ID := 8554; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has conseguido mi alfanje, $n?', 0), +(@ID, 'esMX', '¿Has conseguido mi alfanje, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Has conseguido quitarle mi alfanje a Negolash! ¡No puedo creer que tenga tanta suerte, $n! Conocerte ha hecho que mi suerte cambiase, ¡para mejor, eso sin duda!$B$B¡Gracias! Y si alguna vez consigo un barco y quieres navegar los mares, ¡serás mi $ginvitado:invitada; de honor!', 0), +(@ID, 'esMX', '¡Has conseguido quitarle mi alfanje a Negolash! ¡No puedo creer que tenga tanta suerte, $n! Conocerte ha hecho que mi suerte cambiase, ¡para mejor, eso sin duda!$B$B¡Gracias! Y si alguna vez consigo un barco y quieres navegar los mares, ¡serás mi $ginvitado:invitada; de honor!', 0); +-- 8555 Encomienda a los Vuelos +-- https://es.classic.wowhead.com/quest=8555 +SET @ID := 8555; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eranikus, Vaelastrasz y Azuregos... Sin duda, conoces a estos dragones, mortal. No es coincidencia que hayan desempeñado papeles tan influyentes como observadores de nuestro mundo.$B$BDesafortunadamente (y mi propia ingenuidad es parcialmente culpable) ya sea por agentes de los Dioses Antiguos o por traición de aquellos que los llamarían amigos, cada guardián ha caído en la tragedia. Hasta qué punto ha alimentado mi propia desconfianza hacia los de tu especie.$B$BBúscalos... Y $r, prepárate para lo peor.', 0), +(@ID, 'esMX', 'Eranikus, Vaelastrasz y Azuregos... Sin duda, conoces a estos dragones, mortal. No es coincidencia que hayan desempeñado papeles tan influyentes como observadores de nuestro mundo.$B$BDesafortunadamente (y mi propia ingenuidad es parcialmente culpable) ya sea por agentes de los Dioses Antiguos o por traición de aquellos que los llamarían amigos, cada guardián ha caído en la tragedia. Hasta qué punto ha alimentado mi propia desconfianza hacia los de tu especie.$B$BBúscalos... Y $r, prepárate para lo peor.', 0); +-- 8556 El sello de fuerza implacable +-- https://es.classic.wowhead.com/quest=8556 +SET @ID := 8556; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(@ID, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(@ID, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0); +-- 8557 El mantón de fuerza implacable +-- https://es.classic.wowhead.com/quest=8557 +SET @ID := 8557; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(@ID, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los Qiraji.', 0), +(@ID, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los Qiraji.', 0); +-- 8558 La hoz de fuerza implacable +-- https://es.classic.wowhead.com/quest=8558 +SET @ID := 8558; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho bien, $n. Esta es una empuñadura de obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrimela con gran confianza y vence a nuestros enemigos!', 0), +(@ID, 'esMX', 'Lo has hecho bien, $n. Esta es una empuñadura de obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrimela con gran confianza y vence a nuestros enemigos!', 0); +-- 8559 Las grebas de conquistador +-- https://es.classic.wowhead.com/quest=8559 +SET @ID := 8559; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes todo lo que solicité, $n?', 0), +(@ID, 'esMX', '¿Tienes todo lo que solicité, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe las doy confiando en que te ayudarán a aplastar al vil Qiraji.', 0), +(@ID, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe las doy confiando en que te ayudarán a aplastar al vil Qiraji.', 0); +-- Las musleras de conquistador +-- 8560, 8593 +-- https://es.classic.wowhead.com/quest=8560 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8560, 8593) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8560, 'esES', '¿Trajiste los componentes que necesito, $n?', 0), +(8593, 'esES', '¿Trajiste los componentes que necesito, $n?', 0), +(8560, 'esMX', '¿Trajiste los componentes que necesito, $n?', 0), +(8593, 'esMX', '¿Trajiste los componentes que necesito, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8560, 8593) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8560, 'esES', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(8593, 'esES', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(8560, 'esMX', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(8593, 'esMX', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0); +-- La corona de conquistador +-- 8561, 8592 +-- https://es.classic.wowhead.com/quest=8561 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8561, 8592) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8561, 'esES', '¿Me trajiste los componentes que pedí, $n?', 0), +(8592, 'esES', '¿Me trajiste los componentes que pedí, $n?', 0), +(8561, 'esMX', '¿Me trajiste los componentes que pedí, $n?', 0), +(8592, 'esMX', '¿Me trajiste los componentes que pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8561, 8592) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8561, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8592, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8561, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8592, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0); +-- 8562 La coraza de conquistador +-- https://es.classic.wowhead.com/quest=8562 +SET @ID := 8562; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En su morada en Ahn\'Qiraj, el pavoroso C\'Thun aguarda dormido.', 0), +(@ID, 'esMX', 'En su morada en Ahn\'Qiraj, el pavoroso C\'Thun aguarda dormido.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas cumplido un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun, no solo has salvado todo Azeroth, sino que también has inclinado la balanza de los eventos cósmicos más allá de tu comprensión.$B$BAcepta esta coraza como símbolo de la gloria y la carga que vendrá como consecuencia de tus acciones.$B$B¡Que su poder te ayude en los desafíos que te esperan, $gasesino:asesina; de dioses!', 0), +(@ID, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas cumplido un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun, no solo has salvado todo Azeroth, sino que también has inclinado la balanza de los eventos cósmicos más allá de tu comprensión.$B$BAcepta esta coraza como símbolo de la gloria y la carga que vendrá como consecuencia de tus acciones.$B$B¡Que su poder te ayude en los desafíos que te esperan, $gasesino:asesina; de dioses!', 0); +-- 8564 Instrucción de sacerdote +-- https://es.classic.wowhead.com/quest=8564 +SET @ID := 8564; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$gBienvenido:Bienvenida;, $n. Soy Matrona Arena. Ofrezco mis servicios a quienes buscan aprender los caminos $gdel:de la; $n. Este camino a menudo se malinterpreta como un camino de pacifismo; para nosotros, los elfos de sangre, esto no podría estar más lejos de la verdad. Si bien reparamos tanto los huesos como el espíritu, también actuamos como un puño de venganza para aquellos que se rebelen contra nosotros.$B$BTe prepararé, pero todo lo que te pido es que cubras los costos de capacitación que puedan surgir y que aprendas con la mente abierta. Si estás de acuerdo con esto, podemos comenzar.', 0), +(@ID, 'esMX', '$gBienvenido:Bienvenida;, $n. Soy Matrona Arena. Ofrezco mis servicios a quienes buscan aprender los caminos $gdel:de la; $n. Este camino a menudo se malinterpreta como un camino de pacifismo; para nosotros, los elfos de sangre, esto no podría estar más lejos de la verdad. Si bien reparamos tanto los huesos como el espíritu, también actuamos como un puño de venganza para aquellos que se rebelen contra nosotros.$B$BTe prepararé, pero todo lo que te pido es que cubras los costos de capacitación que puedan surgir y que aprendas con la mente abierta. Si estás de acuerdo con esto, podemos comenzar.', 0); +-- Equipamiento de Veterano +-- 8572, 8573, 8574 +-- https://es.classic.wowhead.com/quest=8572 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8572, 8573, 8574) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8572, 'esES', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0), +(8573, 'esES', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0), +(8574, 'esES', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0), +(8572, 'esMX', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0), +(8573, 'esMX', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0), +(8574, 'esMX', 'Nos conviene mantener bien preparados a nuestros aliados más leales, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8572, 8573, 8574) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8572, 'esES', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:amiga;!', 0), +(8573, 'esES', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:amiga;!', 0), +(8574, 'esES', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:amiga;!', 0), +(8572, 'esMX', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:amiga;!', 0), +(8573, 'esMX', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:amiga;!', 0), +(8574, 'esMX', 'Buen trabajo, $n. Acepta esto en nombre del Círculo Cenarion. ¡Seguro que te lo has ganado, $gamigo:amiga;!', 0); +-- 8575 El libro de contabilidad mágico de Azuregos +-- https://es.classic.wowhead.com/quest=8575 +SET @ID := 8575; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Ooooh! ¡Cosa mágica pulsante! ¿Para mí?', 0), +(@ID, 'esMX', '¡Ooooh! ¡Cosa mágica pulsante! ¿Para mí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¡Excepcional, $r! ¿Qué es? No puedo leer ni una pizca de Dracónico.', 0), +(@ID, 'esMX', '$B$B¡Excepcional, $r! ¿Qué es? No puedo leer ni una pizca de Dracónico.', 0); +-- 8576 La traducción del libro de contabilidad +-- https://es.classic.wowhead.com/quest=8576 +SET @ID := 8576; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo primero es lo primero, $n! Necesitamos averiguar qué escribió Azuregos en este libro contable.$B$B¿Dices que te ha dicho que hagas una boya de arcanita y que este es el esquema? Es extraño que escribiera esto en Dracónico. Esa vieja cabra sabe que no puedo leer estas tonterías.$B$BSi esto va a funcionar, voy a necesitar mis gafas de adivinación, un pollo de 500 kilos y el volumen II de "Dracónico para Torpes". No necesariamente en ese orden.', 0), +(@ID, 'esMX', '¡Lo primero es lo primero, $n! Necesitamos averiguar qué escribió Azuregos en este libro contable.$B$B¿Dices que te ha dicho que hagas una boya de arcanita y que este es el esquema? Es extraño que escribiera esto en Dracónico. Esa vieja cabra sabe que no puedo leer estas tonterías.$B$BSi esto va a funcionar, voy a necesitar mis gafas de adivinación, un pollo de 500 kilos y el volumen II de "Dracónico para Torpes". No necesariamente en ese orden.', 0); +-- 8577 Guisón, ex mejor amigo +-- https://es.classic.wowhead.com/quest=8577 +SET @ID := 8577; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No puedo creer que me haya encontrado. Estaba seguro de que lo había perdido cuando estaba en Terrallende. ¡No voy a volver allí, $r! ¡De ninguna manera, de ninguna manera! Estoy harto de ser su mejor amigo a tiempo parcial y esclavo a tiempo completo.', 0), +(@ID, 'esMX', 'No puedo creer que me haya encontrado. Estaba seguro de que lo había perdido cuando estaba en Terrallende. ¡No voy a volver allí, $r! ¡De ninguna manera, de ninguna manera! Estoy harto de ser su mejor amigo a tiempo parcial y esclavo a tiempo completo.', 0); +-- 8578 ¿Unas gafas? ¡Sin problemas! +-- https://es.classic.wowhead.com/quest=8578 +SET @ID := 8578; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El núcleo fundido, ¿eh? ¡Espero que mis gafas estén todavía de una pieza!', 0), +(@ID, 'esMX', 'El núcleo fundido, ¿eh? ¡Espero que mis gafas estén todavía de una pieza!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Sobresaliente! Ahora, ¿dónde puse ese pollo de 500 kilos y el Volumen II de "Dracónico para Torpes"??? ¡Ah, y aquí hay algo por todo tu arduo trabajo!', 0), +(@ID, 'esMX', '¡Sobresaliente! Ahora, ¿dónde puse ese pollo de 500 kilos y el Volumen II de "Dracónico para Torpes"??? ¡Ah, y aquí hay algo por todo tu arduo trabajo!', 0); +-- 8580 ¡La Horda necesita flores de fuego! +-- https://es.classic.wowhead.com/quest=8580 +SET @ID := 8580; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Terminaste de recolectar esas muestras? ¡Podríamos perder a Noggle en cualquier momento!', 0), +(@ID, 'esMX', '¿Terminaste de recolectar esas muestras? ¡Podríamos perder a Noggle en cualquier momento!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Cruza los dedos, amigo! ¡Esperamos que podamos salvar a Noggle!', 0), +(@ID, 'esMX', '¡Cruza los dedos, amigo! ¡Esperamos que podamos salvar a Noggle!', 0); +-- 8581 ¡La Horda necesita más flores de fuego! +-- https://es.classic.wowhead.com/quest=8581 +SET @ID := 8581; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿N\'es una broma, $n? ¿Traes flores de fuego tan rápido? ¡Pele\'keiki las cuenta ahora mismo, colega! Estás haciendo a Pele\'keiki tan feliz, qu\'él se lo dirá a todos, $n ¡el mejor coleccionista de flores de fuego! Pele\'keiki no puede esperar a que comience la guerra. Ahora realmente iluminamos el cielo sobre Silithus, ¿verdad, colega?', 0), +(@ID, 'esMX', '¿N\'es una broma, $n? ¿Traes flores de fuego tan rápido? ¡Pele\'keiki las cuenta ahora mismo, colega! Estás haciendo a Pele\'keiki tan feliz, qu\'él se lo dirá a todos, $n ¡el mejor coleccionista de flores de fuego! Pele\'keiki no puede esperar a que comience la guerra. Ahora realmente iluminamos el cielo sobre Silithus, ¿verdad, colega?', 0); +-- 8582 ¡La Horda necesita lotos cárdenos! +-- https://es.classic.wowhead.com/quest=8582 +SET @ID := 8582; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has vuelto ya con el loto cárdeno que te pedí, $c? Es vital que lo hagas en el menor tiempo posible no vaya a ser que todo lo que estoy intentando aquí se malogre.', 0), +(@ID, 'esMX', '¿Has vuelto ya con el loto cárdeno que te pedí, $c? Es vital que lo hagas en el menor tiempo posible no vaya a ser que todo lo que estoy intentando aquí se malogre.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo digno de elogio, $c. Mediré estos ejemplares para que se usen apropiadamente y tomaré nota de tu contribución. Habrá que guardar debidamente el loto cárdeno hasta que esté listo. En cuanto a ti, si aún estás disponible, aún voy a necesitar más loto cárdeno. Así que pásate de nuevo pronto.', 0), +(@ID, 'esMX', 'Un trabajo digno de elogio, $c. Mediré estos ejemplares para que se usen apropiadamente y tomaré nota de tu contribución. Habrá que guardar debidamente el loto cárdeno hasta que esté listo. En cuanto a ti, si aún estás disponible, aún voy a necesitar más loto cárdeno. Así que pásate de nuevo pronto.', 0); +-- 8583 ¡La Horda necesita más lotos cárdenos! +-- Notice: English text is also missing in quest_request_items.CompletionText +-- https://es.classic.wowhead.com/quest=8583 +SET @ID := 8583; +UPDATE `quest_request_items` SET `CompletionText` = 'In fact it does appear that we are in need of even more purple lotus, $c. While my own studies have yet to determine a new useful application for the herb, there are tried and true methodologies yet to be employed.$B$BI need you to once again go out into the field and collect at least twenty purple lotus samples. Return them to me here.', `VerifiedBuild` = 0 WHERE `id` = @ID ; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De hecho, al parecer necesitamos aún más loto cárdeno, $c. Aunque mis nuevas investigaciones no hayan permitido todavía descubrir nuevas aplicaciones de utilidad para esta hierba, aún quedan metodologías ciertas y probadas que aprovechar.$B$BNecesito que vayas de nuevo al campo y recolectes al menos 20 ejemplares de loto cárdeno. Cuando los tengas, tráemelos aquí.', 0), +(@ID, 'esMX', 'De hecho, al parecer necesitamos aún más loto cárdeno, $c. Aunque mis nuevas investigaciones no hayan permitido todavía descubrir nuevas aplicaciones de utilidad para esta hierba, aún quedan metodologías ciertas y probadas que aprovechar.$B$BNecesito que vayas de nuevo al campo y recolectes al menos 20 ejemplares de loto cárdeno. Cuando los tengas, tráemelos aquí.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo de primera y de lo más preciso, $n. Tu diligencia es digna de elogio, al igual que tu celeridad. Me ocuparé personalmente de que no se desperdicia un ápice de este loto cárdeno.$B$BGracias otra vez y si encuentras más loto cárdeno, no dudes en traérmelo tan $graudo:rauda; como puedas.', 0), +(@ID, 'esMX', 'Un trabajo de primera y de lo más preciso, $n. Tu diligencia es digna de elogio, al igual que tu celeridad. Me ocuparé personalmente de que no se desperdicia un ápice de este loto cárdeno.$B$BGracias otra vez y si encuentras más loto cárdeno, no dudes en traérmelo tan $graudo:rauda; como puedas.', 0); +-- 8584 ¡Nunca me preguntes por mi negocio! +-- https://es.classic.wowhead.com/quest=8584 +SET @ID := 8584; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¿Un pollo de 500 kilos? ¡No hay tal cosa! Ya no, al menos. Sabía de un pollo así... El Pollo Negro de la Muerte...$B$B$B$BPero sí, nadie vio ese pollo y vivió para contarlo. Tengo una idea que podría beneficiarnos a los dos, $gchico:chica;.', 0), +(@ID, 'esMX', '$B$B¿Un pollo de 500 kilos? ¡No hay tal cosa! Ya no, al menos. Sabía de un pollo así... El Pollo Negro de la Muerte...$B$B$B$BPero sí, nadie vio ese pollo y vivió para contarlo. Tengo una idea que podría beneficiarnos a los dos, $gchico:chica;.', 0); +-- 8585 La Isla del Terror +-- https://es.classic.wowhead.com/quest=8585 +SET @ID := 8585; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Mmmmm... quimerok...', 0), +(@ID, 'esMX', 'Mmmmm... quimerok...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Mira esos solomillos! ¡Fantástico!$B$BAhora sobre ese pollo... Hrmm, déjame ver. Voy a necesitar unos minutos para idear la receta.', 0), +(@ID, 'esMX', '¡Mira esos solomillos! ¡Fantástico!$B$BAhora sobre ese pollo... Hrmm, déjame ver. Voy a necesitar unos minutos para idear la receta.', 0); +-- 8586 Fabulosas chuletillas de quimerok de Dirge +-- https://es.classic.wowhead.com/quest=8586 +SET @ID := 8586; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Date prisa, $gchico:chica;. No queremos que esta carne se eche a perder.', 0), +(@ID, 'esMX', 'Date prisa, $gchico:chica;. No queremos que esta carne se eche a perder.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Está listo! Te presento mi mayor creación: ¡Fabulosas chuletillas de quimerok de Dirge!', 0), +(@ID, 'esMX', '¡Está listo! Te presento mi mayor creación: ¡Fabulosas chuletillas de quimerok de Dirge!', 0); +-- 8587 Regresa junto a Narain +-- https://es.classic.wowhead.com/quest=8587 +SET @ID := 8587; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué es ese delicioso olor?', 0), +(@ID, 'esMX', '¿Qué es ese delicioso olor?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$BMMmmm... ¡Esto es increíble! ¡El mejor pollo que he comido!', 0), +(@ID, 'esMX', '$B$BMMmmm... ¡Esto es increíble! ¡El mejor pollo que he comido!', 0); +-- 8588 ¡La Horda necesita cuero pesado! +-- https://es.classic.wowhead.com/quest=8588 +SET @ID := 8588; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No tengo tiempo para jueguecitos si solo has venido a dar discursos, $c. Hay demasiadas pilas de cuero pesado que curtir. Vuelve cuando tengas al menos 10 para mí.', 0), +(@ID, 'esMX', 'No tengo tiempo para jueguecitos si solo has venido a dar discursos, $c. Hay demasiadas pilas de cuero pesado que curtir. Vuelve cuando tengas al menos 10 para mí.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, así que ya tienes el cuero pesado que necesitaba. Afilada es tu espada, $c; ¡estas pieles son muy buenas! Ahora que hemos empezado con buen pie, me ocuparé de que se aproveche debidamente tu contribución. Y si encuentras más cuero pesado, tráemelo.', 0), +(@ID, 'esMX', 'Ah, así que ya tienes el cuero pesado que necesitaba. Afilada es tu espada, $c; ¡estas pieles son muy buenas! Ahora que hemos empezado con buen pie, me ocuparé de que se aproveche debidamente tu contribución. Y si encuentras más cuero pesado, tráemelo.', 0); +-- 8589 ¡La Horda necesita más cuero pesado! +-- Notice: English text is also missing in quest_request_items.CompletionText +-- https://es.classic.wowhead.com/quest=8589 +SET @ID := 8589; +UPDATE `quest_request_items` SET `CompletionText` = 'It\'s true, $c, I still need more heavy leather. The requests from the generals and their quartermasters seem endless. And that\'s nothing compared to what the zeppelin masters are asking for!$B$BI need to get my quota collected on the double. $n, bring me more stacks of heavy leather as soon as you can!', `VerifiedBuild` = 0 WHERE `id` = @ID ; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Así es, $c, aún necesito más cuero pesado. Los pedidos de los generales y sus intendentes no se acaban nunca. ¡Y eso no es nada comparado con lo que los maestros de zepelín están pidiendo!$B$BTengo que completar mi cupo a paso ligero. $n, tráeme más pilas de cuero pesado ¡tan pronto como puedas!', 0), +(@ID, 'esMX', 'Así es, $c, aún necesito más cuero pesado. Los pedidos de los generales y sus intendentes no se acaban nunca. ¡Y eso no es nada comparado con lo que los maestros de zepelín están pidiendo!$B$BTengo que completar mi cupo a paso ligero. $n, tráeme más pilas de cuero pesado ¡tan pronto como puedas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Así me gusta, colega! Muchísimas gracias por el cuero pesado. Cada granito de arena es importante. Voy a dejar estas pieles en una pila para que los demás peleteros puedan trabajarlas.$B$BGracias otra vez, $n, y si te topas con más cuero pesado, ya sabes dónde encontrarme.', 0), +(@ID, 'esMX', '¡Así me gusta, colega! Muchísimas gracias por el cuero pesado. Cada granito de arena es importante. Voy a dejar estas pieles en una pila para que los demás peleteros puedan trabajarlas.$B$BGracias otra vez, $n, y si te topas con más cuero pesado, ya sabes dónde encontrarme.', 0); +-- 8590 ¡La Horda necesita cuero grueso! +-- https://es.classic.wowhead.com/quest=8590 +SET @ID := 8590; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, $c, ¿tan pronto de vuelta con las 10 piezas de cuero grueso de las que hablamos?', 0), +(@ID, 'esMX', 'Ah, $c, ¿tan pronto de vuelta con las 10 piezas de cuero grueso de las que hablamos?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $c. Estoy segura de que todas estas pieles de cuero grueso servirán para reforzar los zepelines y confeccionar todo tipo de armas y armaduras. Cuentas con mi más sincero agradecimiento, así como con el de la Horda. Vuelve si encuentras más cuero grueso en tus viajes y que la suerte te acompañe.', 0), +(@ID, 'esMX', 'Buen trabajo, $c. Estoy segura de que todas estas pieles de cuero grueso servirán para reforzar los zepelines y confeccionar todo tipo de armas y armaduras. Cuentas con mi más sincero agradecimiento, así como con el de la Horda. Vuelve si encuentras más cuero grueso en tus viajes y que la suerte te acompañe.', 0); +-- 8591 ¡La Horda necesita más cuero grueso! +-- Notice: English text is also missing in quest_request_items.CompletionText +-- https://es.classic.wowhead.com/quest=8591 +SET @ID := 8591; +UPDATE `quest_request_items` SET `CompletionText` = '$c, as you can see I still need to gather up more thick leather. Once again I ask your help with this task, and promise that if you complete it, you will be recognized for your efforts.$B$BTime is of the essence! Return to me with the thick leather so that we can finish our preparations and go to war, hero!', `VerifiedBuild` = 0 WHERE `id` = @ID ; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, como ves, necesito recolectar aún más cuero grueso. Una vez más te pido tu ayuda para esta tarea y prometo que si la completas, se te reconocerá tu dedicación.$B$B¡El tiempo es vital! ¡Vuelve aquí cuando tengas el cuero pesado para que pueda acabar nuestros preparativos para la guerra, $ghéroe:heroína;!', 0), +(@ID, 'esMX', '$c, como ves, necesito recolectar aún más cuero grueso. Una vez más te pido tu ayuda para esta tarea y prometo que si la completas, se te reconocerá tu dedicación.$B$B¡El tiempo es vital! ¡Vuelve aquí cuando tengas el cuero pesado para que pueda acabar nuestros preparativos para la guerra, $ghéroe:heroína;!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo conseguiste, $n, sabía que lo conseguirías! Una vez más, gracias en nombre de toda la Horda. Se toma buena nota de tu trabajo y se agradece. Y si encuentras más cuero grueso que te gustaría donar, tráemelo aquí.$B$B¡Lok\'tar Ogar, $c!', 0), +(@ID, 'esMX', '¡Lo conseguiste, $n, sabía que lo conseguirías! Una vez más, gracias en nombre de toda la Horda. Se toma buena nota de tu trabajo y se agradece. Y si encuentras más cuero grueso que te gustaría donar, tráemelo aquí.$B$B¡Lok\'tar Ogar, $c!', 0); +-- 8594 El manto del Oráculo +-- https://es.classic.wowhead.com/quest=8594 +SET @ID := 8594; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ha recogido los componentes que necesito?', 0), +(@ID, 'esMX', '¿Ha recogido los componentes que necesito?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que verlos infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que verlos infunda miedo en nuestros enemigos.', 0); +-- 8595 Campeones mortales +-- https://es.wowhead.com/quest=8595 +SET @ID := 8595; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Matar a un Señor qiraji es un logro notable para $gun:una; mortal, $n. Sin embargo, son muchos y poderosos. Sigue derrotándolos y demuestra lo que vales como $gnuestro Campeón:nuestra Campeona;.', 0), +(@ID, 'esMX', 'Matar a un Señor qiraji es un logro notable para $gun:una; mortal, $n. Sin embargo, son muchos y poderosos. Sigue derrotándolos y demuestra lo que vales como $gnuestro Campeón:nuestra Campeona;.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sigues sirviéndonos bien, $n. Nuestro pacto sigue en pie.', 0), +(@ID, 'esMX', 'Sigues sirviéndonos bien, $n. Nuestro pacto sigue en pie.', 0); +-- 8596 Los borceguíes del Oráculo +-- https://es.wowhead.com/quest=8596 +SET @ID := 8596; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has conseguido esos objetos que te pedí, $n?', 0), +(@ID, 'esMX', '¿Has conseguido esos objetos que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho muy bien, $n. Has demostrado que no eres $gun:una; mortal cualquiera.$B$BTe entrego estas confiando en que te ayudarán a aplastar a los malvados qiraji.', 0), +(@ID, 'esMX', 'Lo has hecho muy bien, $n. Has demostrado que no eres $gun:una; mortal cualquiera.$B$BTe entrego estas confiando en que te ayudarán a aplastar a los malvados qiraji.', 0); +-- 8597 Dracónico para torpes +-- https://es.classic.wowhead.com/quest=8597 +SET @ID := 8597; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡El libro no está! Encima del montículo de tierra hay una nota.', 0), +(@ID, 'esMX', '¡El libro no está! Encima del montículo de tierra hay una nota.', 0); +-- 8598 ReScaTe +-- https://es.classic.wowhead.com/quest=8598 +SET @ID := 8598; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Dime, ¿cuál es el problema?', 0), +(@ID, 'esMX', 'Dime, ¿cuál es el problema?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$BTorturar a mi... libro, ¿lo harán? ¡Les enseñaré lo que significa meterse con un gnomo psíquico!', 0), +(@ID, 'esMX', '$B$BTorturar a mi... libro, ¿lo harán? ¡Les enseñaré lo que significa meterse con un gnomo psíquico!', 0); +-- 8599 Una canción de amor para Narain +-- https://es.classic.wowhead.com/quest=8599 +SET @ID := 8599; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Hueles a pescado!', 0), +(@ID, 'esMX', '¡Hueles a pescado!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿¡Qué!?$B$B$B$BBueno, umm... ¿Qué quieres que haga??? ¡Ella es un pez! ¡UN PESCADO, te lo digo! Y soy un gnomo. Nunca podría funcionar.', 0), +(@ID, 'esMX', '¿¡Qué!?$B$B$B$BBueno, umm... ¿Qué quieres que haga??? ¡Ella es un pez! ¡UN PESCADO, te lo digo! Y soy un gnomo. Nunca podría funcionar.', 0); +-- 8600 ¡La Horda necesita pieles de cuero basto! +-- https://es.classic.wowhead.com/quest=8600 +SET @ID := 8600; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡No es posible que te lleve tanto tiempo desollar 10 pieles de cuero basto para mí! ¿Quizás necesites afilar tu cuchillo de desollar? ¿O acaso estoy confundido y las tienes ahí en tu bolsa?', 0), +(@ID, 'esMX', '¡No es posible que te lleve tanto tiempo desollar 10 pieles de cuero basto para mí! ¿Quizás necesites afilar tu cuchillo de desollar? ¿O acaso estoy confundido y las tienes ahí en tu bolsa?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, parece que has hecho un buen trabajo, aunque algunas de estas pieles tienen los bordes algo irregulares. No importa, has completado la tarea y te has ganado una recompensa. Si te vuelves a encontrar con más cuero basto, tráemelo inmediatamente.', 0), +(@ID, 'esMX', 'Muy bien, parece que has hecho un buen trabajo, aunque algunas de estas pieles tienen los bordes algo irregulares. No importa, has completado la tarea y te has ganado una recompensa. Si te vuelves a encontrar con más cuero basto, tráemelo inmediatamente.', 0); + +-- 8601 ¡La Horda necesita más pieles de cuero basto! +-- https://es.classic.wowhead.com/quest=8601 +SET @ID := 8601; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Práctica, práctica, práctica. Con un cuchillo bien afilado y la habilidad para usarlo llegarás lejos en este mundo, $n. Parece que los bordes de estas pieles están mejor que las últimas. ¿Compraste un cuchillo nuevo?$B$BSea como fuere, te agradecemos tus esfuerzos. He tomado buena nota de tu donación y se aprovechará bien, te lo aseguro. Si te acabas haciendo con más cuero basto, vuelve por aquí y habla conmigo ya que seguramente me hará falta más.', 0), +(@ID, 'esMX', 'Práctica, práctica, práctica. Con un cuchillo bien afilado y la habilidad para usarlo llegarás lejos en este mundo, $n. Parece que los bordes de estas pieles están mejor que las últimas. ¿Compraste un cuchillo nuevo?$B$BSea como fuere, te agradecemos tus esfuerzos. He tomado buena nota de tu donación y se aprovechará bien, te lo aseguro. Si te acabas haciendo con más cuero basto, vuelve por aquí y habla conmigo ya que seguramente me hará falta más.', 0); +-- 8602 Los espaldares de clamatormentas +-- https://es.classic.wowhead.com/quest=8602 +SET @ID := 8602; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ha recogido los componentes que necesito?', 0), +(@ID, 'esMX', '¿Ha recogido los componentes que necesito?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que verlos infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que verlos infunda miedo en nuestros enemigos.', 0); +-- 8603 Las vestimentas del Oráculo +-- https://es.wowhead.com/quest=8603 +SET @ID := 8603; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(@ID, 'esMX', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(@ID, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0); +-- 8604 ¡La Horda necesita vendas de lana! +-- https://es.classic.wowhead.com/quest=8604 +SET @ID := 8604; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, $c, ¿has vuelto tan rápido con las vendas de lana?', 0), +(@ID, 'esMX', 'Ah, $c, ¿has vuelto tan rápido con las vendas de lana?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tienes mi agradecimiento, $c, y el agradecimiento de la Horda. Si encuentras más vendas de lana, tráemelas aquí si deseas contribuir aún más al esfuerzo de guerra. Hasta entonces, ¡que tus antepasados velen por ti!', 0), +(@ID, 'esMX', 'Tienes mi agradecimiento, $c, y el agradecimiento de la Horda. Si encuentras más vendas de lana, tráemelas aquí si deseas contribuir aún más al esfuerzo de guerra. Hasta entonces, ¡que tus antepasados velen por ti!', 0); +-- 8605 ¡La Horda necesita más vendas de lana! +-- https://es.classic.wowhead.com/quest=8605 +SET @ID := 8605; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Como $c, mereces todos mis respetos, $n! Me aseguraré de que esas vendas van a parar a las manos apropiadas. Cuentas con mi más sincero agradecimiento, así como con el de la Horda.$B$BVe en paz y vuelve si te encuentras con que te sobran vendas de lana. Toda contribución nos viene bien.', 0), +(@ID, 'esMX', '¡Como $c, mereces todos mis respetos, $n! Me aseguraré de que esas vendas van a parar a las manos apropiadas. Cuentas con mi más sincero agradecimiento, así como con el de la Horda.$B$BVe en paz y vuelve si te encuentras con que te sobran vendas de lana. Toda contribución nos viene bien.', 0); +-- 8606 ¡Señuelo! +-- https://es.classic.wowhead.com/quest=8606 +SET @ID := 8606; +UPDATE `quest_template_locale` SET `ObjectiveText1` = '¿Para quién trabaja el Número Dos?', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Creo que es posible que hayamos subestimado a estos secuestradores de libros.', 0), +(@ID, 'esMX', 'Creo que es posible que hayamos subestimado a estos secuestradores de libros.', 0); +-- 8607 ¡La Horda necesita vendas de tejido mágico! +-- https://es.classic.wowhead.com/quest=8607 +SET @ID := 8607; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡No me falles, me dejarías mal, $c! Vuelve lo antes posible con las vendas de tejido mágico de las que hablamos.', 0), +(@ID, 'esMX', '¡No me falles, me dejarías mal, $c! Vuelve lo antes posible con las vendas de tejido mágico de las que hablamos.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sorprendente, aunque aceptable. Quizás he subestimado tus facultades, $c. Quizás. Has completado una tarea muy sencilla y por ello recibirás una recompensa aún mayor. Pero que no se te suba a la cabeza. Si realmente quieres demostrar lo que vales, tendrás que volver a salir ahí fuera y traerme otro lote de vendas de tejido mágico.', 0), +(@ID, 'esMX', 'Sorprendente, aunque aceptable. Quizás he subestimado tus facultades, $c. Quizás. Has completado una tarea muy sencilla y por ello recibirás una recompensa aún mayor. Pero que no se te suba a la cabeza. Si realmente quieres demostrar lo que vales, tendrás que volver a salir ahí fuera y traerme otro lote de vendas de tejido mágico.', 0); +-- 8608 ¡La Horda necesita más vendas de tejido mágico! +-- https://es.classic.wowhead.com/quest=8608 +SET @ID := 8608; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Asombroso, $c, lo has vuelto a conseguir! Bueno, cierto es que suelen decir que tengo buen olfato para elegir a mis colaboradores. Muy bien, se anotará tu contribución y recibirás los beneficios sociales que tu trabajo merece. Te sugiero que vuelvas de ronda y recolectes otro lote de vendas de tejido mágico si realmente quieres demostrar lo que vales.', 0), +(@ID, 'esMX', '¡Asombroso, $c, lo has vuelto a conseguir! Bueno, cierto es que suelen decir que tengo buen olfato para elegir a mis colaboradores. Muy bien, se anotará tu contribución y recibirás los beneficios sociales que tu trabajo merece. Te sugiero que vuelvas de ronda y recolectes otro lote de vendas de tejido mágico si realmente quieres demostrar lo que vales.', 0); +-- 8609 ¡La Horda necesita vendas de paño rúnico! +-- https://es.classic.wowhead.com/quest=8609 +SET @ID := 8609; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Se avecina la guerra, me parece, $c. Te agradezco el tiempo y el esfuerzo que has dedicado a ayudarnos en nuestras tareas de recolección. ¿Has regresado porque ya tienes las vendas de paño rúnico de las que hablamos antes?', 0), +(@ID, 'esMX', 'Se avecina la guerra, me parece, $c. Te agradezco el tiempo y el esfuerzo que has dedicado a ayudarnos en nuestras tareas de recolección. ¿Has regresado porque ya tienes las vendas de paño rúnico de las que hablamos antes?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eres un orgullo para la Horda, $c. Gracias por tus continuos esfuerzos, ¡de corazón! Tendré que envolver estas nuevas vendas y hacer un recuento para ver cuánto nos falta para el objetivo. Si te apetece, puedes recolectar más vendas de paño rúnico y traérmelas aquí.', 0), +(@ID, 'esMX', 'Eres un orgullo para la Horda, $c. Gracias por tus continuos esfuerzos, ¡de corazón! Tendré que envolver estas nuevas vendas y hacer un recuento para ver cuánto nos falta para el objetivo. Si te apetece, puedes recolectar más vendas de paño rúnico y traérmelas aquí.', 0); +-- 8610 ¡La Horda necesita más vendas de paño rúnico! +-- https://es.classic.wowhead.com/quest=8610 +SET @ID := 8610; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muestras un gran altruismo en tus actos, $n. Y con ello probablemente se salven muchas vidas de quienes van a combatir en Ahn\'Qiraj. Gracias y que sepas que cuentas con el agradecimiento de la Horda por tu donación. Si confeccionas o encuentras más vendas de paño rúnico, te ruego pienses en traérmelas aquí.', 0), +(@ID, 'esMX', 'Muestras un gran altruismo en tus actos, $n. Y con ello probablemente se salven muchas vidas de quienes van a combatir en Ahn\'Qiraj. Gracias y que sepas que cuentas con el agradecimiento de la Horda por tu donación. Si confeccionas o encuentras más vendas de paño rúnico, te ruego pienses en traérmelas aquí.', 0); +-- 8611 ¡La Horda necesita filetes de lobo magro! +-- https://es.classic.wowhead.com/quest=8611 +SET @ID := 8611; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿De vuelta con esos magros filetes de lobo tan pronto, $c? No me importa si están demasiado hechos o crudos, ¡solo asegúrate de que estén sabrosos y tráemelos rápido!', 0), +(@ID, 'esMX', '¿De vuelta con esos magros filetes de lobo tan pronto, $c? No me importa si están demasiado hechos o crudos, ¡solo asegúrate de que estén sabrosos y tráemelos rápido!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ok, este montón de carne me parece bien. Los salaré y luego los empaquetaré y, con suerte, se mantendrán lo suficientemente frescos como para ser comestibles cuando llegue el momento.$B$BGracias por la contribución, $c. ¿Crees que podrías traerme otro lote?', 0), +(@ID, 'esMX', 'Ok, este montón de carne me parece bien. Los salaré y luego los empaquetaré y, con suerte, se mantendrán lo suficientemente frescos como para ser comestibles cuando llegue el momento.$B$BGracias por la contribución, $c. ¿Crees que podrías traerme otro lote?', 0); +-- 8613 ¡La Horda necesita serviolas moteadas! +-- https://es.classic.wowhead.com/quest=8613 +SET @ID := 8613; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Regresaste tan pronto con las serviolas moteadas, $c? ¿T\'acuerdas de cocinarlo bien? N\'estamos sirviendo pescado crudo a los soldados bajo el ardiente sol del desierto, sin duda.', 0), +(@ID, 'esMX', '¿Regresaste tan pronto con las serviolas moteadas, $c? ¿T\'acuerdas de cocinarlo bien? N\'estamos sirviendo pescado crudo a los soldados bajo el ardiente sol del desierto, sin duda.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Oh sí, esto es lo bueno. L\'empaquetaré muy bien pa\'que no se desperdicie. Gracias por ayudarme así. Creo qu\'eres $gel pescador:la pescadora; número uno por toda esta serviola moteada. Y si pescas y cocinas aún más, tráemelo aquí; ¡M\'aseguraré de que todos sepan que l\'hiciste!', 0), +(@ID, 'esMX', 'Oh sí, esto es lo bueno. L\'empaquetaré muy bien pa\'que no se desperdicie. Gracias por ayudarme así. Creo qu\'eres $gel pescador:la pescadora; número uno por toda esta serviola moteada. Y si pescas y cocinas aún más, tráemelo aquí; ¡M\'aseguraré de que todos sepan que l\'hiciste!', 0); +-- 8614 ¡La Horda necesita más serviolas moteadas! +-- https://es.classic.wowhead.com/quest=8614 +SET @ID := 8614; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡La pesca más guay, $n! Lo que se dice un trabajo bueno y honesto. ¡Y sin espinas! Gracias por conseguir to\'a esa serviola moteada, colega. ¡Vuelve pronto si cocinas más!', 0), +(@ID, 'esMX', '¡La pesca más guay, $n! Lo que se dice un trabajo bueno y honesto. ¡Y sin espinas! Gracias por conseguir to\'a esa serviola moteada, colega. ¡Vuelve pronto si cocinas más!', 0); +-- 8615 ¡La Horda necesita salmón asado! +-- https://es.classic.wowhead.com/quest=8615 +SET @ID := 8615; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has vuelto con el salmón asado, $c? Recuerda, debe estar bien asado; Desafortunadamente, no tengo ningún uso para el pescado crudo.', 0), +(@ID, 'esMX', '¿Has vuelto con el salmón asado, $c? Recuerda, debe estar bien asado; Desafortunadamente, no tengo ningún uso para el pescado crudo.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias por demostrar tu interés en ayudar con el esfuerzo bélico, $c. Muchos simplemente ignorarían nuestras necesidades y optarían por obtener ganancias. Pero no cuentan con la gratitud de la Horda, como tú ahora. Sus corazones no están llenos, ya que el tuyo debe estar lleno del orgullo que proviene de la generosidad desinteresada.$B$BNuevamente, te lo agradezco. Si encuentra tiempo para ayudarnos más, antes de que finalicen nuestros preparativos, estaré aquí esperando.', 0), +(@ID, 'esMX', 'Gracias por demostrar tu interés en ayudar con el esfuerzo bélico, $c. Muchos simplemente ignorarían nuestras necesidades y optarían por obtener ganancias. Pero no cuentan con la gratitud de la Horda, como tú ahora. Sus corazones no están llenos, ya que el tuyo debe estar lleno del orgullo que proviene de la generosidad desinteresada.$B$BNuevamente, te lo agradezco. Si encuentra tiempo para ayudarnos más, antes de que finalicen nuestros preparativos, estaré aquí esperando.', 0); +-- 8619 Alborhondo el Ancestro +-- https://es.wowhead.com/quest=8619 +SET @ID := 8619; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(@ID, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0); +-- 8620 La única receta +-- https://es.classic.wowhead.com/quest=8620 +SET @ID := 8620; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me pongo los pantalones como tú, una pierna y luego la otra. Excepto cuando tengo los pantalones puestos, entonces hago boyas de arcanita. ¡Boyas de arcanita, bebé!', 0), +(@ID, 'esMX', 'Me pongo los pantalones como tú, una pierna y luego la otra. Excepto cuando tengo los pantalones puestos, entonces hago boyas de arcanita. ¡Boyas de arcanita, bebé!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Fantástico! ¡No puedo creer que hayas pasado por el lío! ¿Eres una especie de máquina? Si fuera yo, probablemente habría dejado que el mundo se derrumbara.$B$BTe doy mi turbante, $gseñor:señora;. Ninguna buena acción debe quedar sin recompensa.', 0), +(@ID, 'esMX', '¡Fantástico! ¡No puedo creer que hayas pasado por el lío! ¿Eres una especie de máquina? Si fuera yo, probablemente habría dejado que el mundo se derrumbara.$B$BTe doy mi turbante, $gseñor:señora;. Ninguna buena acción debe quedar sin recompensa.', 0); +-- 8621 Los guardapiés de clamatormentas +-- https://es.classic.wowhead.com/quest=8621 +SET @ID := 8621; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has adquirido los artículos que te pedí, $n?', 0), +(@ID, 'esMX', '¿Has adquirido los artículos que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(@ID, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0); +-- 8622 El camisote de clamatormentas +-- https://es.classic.wowhead.com/quest=8622 +SET @ID := 8622; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En su morada en Ahn\'Qiraj, el pavoroso C\'Thun aguarda dormido.', 0), +(@ID, 'esMX', 'En su morada en Ahn\'Qiraj, el pavoroso C\'Thun aguarda dormido.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que volvieras de tu intento, $n.$B$BHas cumplido un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun, no solo has salvado todo Azeroth, sino que también has inclinado la balanza de los eventos cósmicos más allá de tu comprensión.$B$BAcepta esta coraza como símbolo de la gloria y la carga que vendrán como consecuencia de tus acciones.$B$B¡Que su poder te ayude en los desafíos que te esperan, asesino de dioses!', 0), +(@ID, 'esMX', 'No esperaba que volvieras de tu intento, $n.$B$BHas cumplido un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun, no solo has salvado todo Azeroth, sino que también has inclinado la balanza de los eventos cósmicos más allá de tu comprensión.$B$BAcepta esta coraza como símbolo de la gloria y la carga que vendrán como consecuencia de tus acciones.$B$B¡Que su poder te ayude en los desafíos que te esperan, asesino de dioses!', 0); +-- 8623 La diadema de clamatormentas +-- https://es.classic.wowhead.com/quest=8623 +SET @ID := 8623; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(@ID, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0); +-- 8624 Los leotardos de clamatormentas +-- https://es.classic.wowhead.com/quest=8624 +SET @ID := 8624; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +-- 8625 Las hombreras enigma +-- https://es.classic.wowhead.com/quest=8625 +SET @ID := 8625; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0); +-- 8626 Los guardapiés de asediador +-- https://es.classic.wowhead.com/quest=8626 +SET @ID := 8626; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(@ID, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0); +-- 8627 La coraza del Vengador +-- https://es.classic.wowhead.com/quest=8627 +SET @ID := 8627; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(@ID, 'esMX', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(@ID, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0); +-- 8628 La corona del Vengador +-- https://es.classic.wowhead.com/quest=8628 +SET @ID := 8628; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0); +-- 8629 Las musleras del Vengador +-- https://es.classic.wowhead.com/quest=8629 +SET @ID := 8629; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(@ID, 'esMX', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0); +-- 8630 Los espaldares del Vengador +-- https://es.classic.wowhead.com/quest=8630 +SET @ID := 8630; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0); +-- 8631 Los leotardos enigma +-- https://es.classic.wowhead.com/quest=8631 +SET @ID := 8631; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +-- 8632 El aro enigma +-- https://es.classic.wowhead.com/quest=8632 +SET @ID := 8632; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(@ID, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0); +-- 8633 Togas Enigma +-- https://es.classic.wowhead.com/quest=8633 +SET @ID := 8633; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(@ID, 'esMX', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(@ID, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0); +-- 8634 Las botas enigma +-- https://es.classic.wowhead.com/quest=8634 +SET @ID := 8634; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(@ID, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0); +-- 8635 Parterroca el Ancestro +-- https://es.wowhead.com/quest=8635 +SET @ID := 8635; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las batallas de eras pasadas son las semillas de las que crecen las leyendas. El tuyo es un tiempo de héroes, joven. Que tu propia leyenda tome raíces y crezca con fuerza.$B$BTe deseo lo mejor, $n, y te ofrezco esta muestra...', 0), +(@ID, 'esMX', 'Las batallas de eras pasadas son las semillas de las que crecen las leyendas. El tuyo es un tiempo de héroes, joven. Que tu propia leyenda tome raíces y crezca con fuerza.$B$BTe deseo lo mejor, $n, y te ofrezco esta muestra...', 0); +-- 8636 Rocaestruendo el Ancestro +-- https://es.classic.wowhead.com/quest=8636 +SET @ID := 8636; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'La materia de la vida está condenada a morir y volver a la tierra, pero la materia del espíritu vive toda la eternidad. Te deseo lo mejor, $n, y te ofrezco esta muestra...', 0), +(@ID, 'esMX', 'La materia de la vida está condenada a morir y volver a la tierra, pero la materia del espíritu vive toda la eternidad. Te deseo lo mejor, $n, y te ofrezco esta muestra...', 0); +-- 8637 Las botas de mortífero +-- https://es.classic.wowhead.com/quest=8637 +SET @ID := 8637; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(@ID, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0); +-- 8638 El jubón de mortífero +-- https://es.classic.wowhead.com/quest=8638 +SET @ID := 8638; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(@ID, 'esMX', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(@ID, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0); +-- 8639 El yelmo de mortífero +-- https://es.classic.wowhead.com/quest=8639 +SET @ID := 8639; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(@ID, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0); +-- 8640 Los leotardos de mortífero +-- https://es.classic.wowhead.com/quest=8640 +SET @ID := 8640; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +-- 8641 Las bufas de mortífero +-- https://es.classic.wowhead.com/quest=8641 +SET @ID := 8641; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(@ID, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0); + +-- Venaplata el Ancestro +-- 8642, 8643, 8644, 8645, 8647, 8648, 8650, 8651, 8652, 8653, 8654 +-- https://es.wowhead.com/quest=8642 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8642, 8643, 8644, 8645, 8647, 8648, 8650, 8651, 8652, 8653, 8654) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8642, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8643, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8644, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8645, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8647, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8648, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8650, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8651, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8652, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8653, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8654, 'esES', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8642, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8643, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8644, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8645, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8647, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8648, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8650, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8651, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8652, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8653, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0), +(8654, 'esMX', 'Me alegra saber que la gente de estas tierras sigue prestando homenaje a las antiguas razas. Te deseo todo lo mejor, $n, y te ofrezco esta muestra...', 0); +-- Las grebas del Vengador +-- 8655, 8660, 8665 +-- https://es.classic.wowhead.com/quest=8655 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8655, 8660, 8665) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8655, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8660, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8665, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8655, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8660, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8665, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8655, 8660, 8665) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8655, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(8660, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(8665, 'esES', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(8655, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(8660, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0), +(8665, 'esMX', 'Lo has hecho bien, $n. Has probado que no eres $gun:una; mortal $gordinario:ordinaria;.$B$BTe los doy con la confianza de que te ayudarán a aplastar al vil qiraji.', 0); +-- El camisote de asediador +-- 8656, 8666 +-- https://es.classic.wowhead.com/quest=8656 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8656, 8666) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8656, 'esES', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(8666, 'esES', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(8656, 'esMX', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0), +(8666, 'esMX', 'En su morada de Ahn\'Qiraj, el terrible C\'Thun aguarda dormido apaciblemente.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8656, 8666) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8656, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(8666, 'esES', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(8656, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0), +(8666, 'esMX', 'No esperaba que regresaras de tu intento, $n.$B$BHas alcanzado un destino más grande que el de la mayoría de los seres inmortales.$B$BAl matar a C\'Thun no solo has salvado a todo Azeroth, también has cambiado el balance de los acontecimientos cósmicos más allá de tu comprensión.$B$BAcepta esta togas como símbolo de la gloria y el peso de las consecuencias que tus acciones acarrearán.$B$BQue su poder te ayude en los retos que te aguardan, ¡$gasesino:asesina; de dioses!', 0); +-- La diadema de asediador +-- 8657, 8662, 8667 +-- https://es.classic.wowhead.com/quest=8657 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8657, 8662, 8667) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8657, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8662, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8667, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8657, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8662, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8667, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8657, 8662, 8667) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8657, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8662, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8667, 'esES', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8657, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8662, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0), +(8667, 'esMX', '¡Lo has logrado! Los susurros de los Emperadores Gemelos han cesado.$B$BToma esto como recompensa. El mero hecho de verlo infundirá miedo en los corazones de los Qiraji... les recordará a sus líderes caídos y $gal:a la; mortal que los mató.', 0); +-- 8658 Los leotardos de asediador +-- https://es.classic.wowhead.com/quest=8658 +SET @ID := 8658; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(@ID, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +-- Los espaldares de asediador +-- 8659, 8664, 8669 +-- https://es.classic.wowhead.com/quest=8659 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8659, 8664, 8669) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8659, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(8664, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(8669, 'esES', '¿Me trajiste los componentes que te pedí?', 0), +(8659, 'esMX', '¿Me trajiste los componentes que te pedí?', 0), +(8664, 'esMX', '¿Me trajiste los componentes que te pedí?', 0), +(8669, 'esMX', '¿Me trajiste los componentes que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8659, 8664, 8669) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8659, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(8664, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(8669, 'esES', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(8659, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(8664, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0), +(8669, 'esMX', 'De los materiales que traes y de las escamas de nuestros enemigos Qiraji caídos, te hago estas hombreras, mortal. Que te brinden la protección que necesitas y que al verte infunda miedo en nuestros enemigos.', 0); +-- Las calzas clamacondenas +-- 8663, 8668 +-- https://es.classic.wowhead.com/quest=8663 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8663, 8668) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8663, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8668, 'esES', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8663, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0), +(8668, 'esMX', '¿Me trajiste los componentes que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8663, 8668) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8663, 'esES', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(8668, 'esES', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(8663, 'esMX', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0), +(8668, 'esMX', 'Sí... la piel del gusano será una excelente capa protectora. Combinado con las partes más fuertes de los Qiraji que hemos destruido en nuestro camino hacia aquí, esto debería ser una formidable pieza de armadura. ¡Que te ayude a afrontar los horrores indescriptibles que te aguardan en el interior!', 0); +-- Tótem de Runa el Ancestro +-- 8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679, 8680, 8681, 8682, 8683, 8684, 8685, 8686 +-- https://es.wowhead.com/quest=8670 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679, 8680, 8681, 8682, 8683, 8684, 8685, 8686) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8670, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8671, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8672, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8673, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8674, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8675, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8676, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8677, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8678, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8679, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8680, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8681, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8682, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8683, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8684, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8685, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8686, 'esES', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8670, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8671, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8672, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8673, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8674, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8675, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8676, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8677, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8678, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8679, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8680, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8681, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8682, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8683, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8684, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8685, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0), +(8686, 'esMX', 'Tu espíritu arde lleno de vida, joven $c. Acepto el homenaje que me rindes, y te ofrezco a cambio esta muestra...', 0); +-- 8687 Objetivo: los tuneladores de Colmen'Zora +-- https://es.classic.wowhead.com/quest=8687 +SET @ID := 8687; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo que decirme, $c?', 0), +(@ID, 'esMX', '¿Tienes algo que decirme, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Sin sus tuneladores, los silítidos tendrán dificultades para reparar cualquier daño infligido a la estructura de su colmena. Supongo que querrás una nueva tarea.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Sin sus tuneladores, los silítidos tendrán dificultades para reparar cualquier daño infligido a la estructura de su colmena. Supongo que querrás una nueva tarea.', 0); +-- 8688 Fuerteviento el Ancestro +-- https://es.wowhead.com/quest=8688 +SET @ID := 8688; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(@ID, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0); +-- El embozo de sabiduría infinita +-- 8689, 8690, 8691, 8692, 8693, 8694, 8695, 8696 +-- https://es.classic.wowhead.com/quest=8689 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8689, 8690, 8691, 8692, 8693, 8694, 8695, 8696) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8689, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8690, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8691, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8692, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8693, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8694, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8695, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8696, 'esES', '¿Trajiste los materiales para la capa, $n?', 0), +(8689, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8690, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8691, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8692, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8693, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8694, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8695, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0), +(8696, 'esMX', '¿Trajiste los materiales para la capa, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8689, 8690, 8691, 8692, 8693, 8694, 8695, 8696) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8689, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8690, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8691, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8692, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8693, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8694, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8695, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8696, 'esES', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8689, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8690, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8691, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8692, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8693, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8694, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8695, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0), +(8696, 'esMX', 'Ah, sí... este mantón está impecable.$B$BToma esta capa, $n. Que te proteja de la magia repugnante de los qiraji.', 0); +-- El anillo de sabiduría infinita +-- 8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704 +-- https://es.classic.wowhead.com/quest=8697 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8697, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8698, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8699, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8700, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8701, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8702, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8703, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8704, 'esES', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8697, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8698, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8699, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8700, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8701, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8702, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8703, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0), +(8704, 'esMX', '¿Me trajiste el anillo y los materiales, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8697, 8698, 8699, 8700, 8701, 8702, 8703, 8704) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8697, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8698, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8699, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8700, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8701, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8702, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8703, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8704, 'esES', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8697, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8698, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8699, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8700, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8701, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8702, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8703, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0), +(8704, 'esMX', 'Cambiaré la gema del anillo por ti. Descubrirás que el efecto es mucho más... agradable.', 0); +-- El mazo de sabiduría infinita +-- 8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712 +-- https://es.classic.wowhead.com/quest=8705 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8705, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8706, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8707, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8708, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8709, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8710, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8711, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8712, 'esES', '¿Me trajiste los componentes que necesito, $n?', 0), +(8705, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8706, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8707, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8708, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8709, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8710, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8711, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0), +(8712, 'esMX', '¿Me trajiste los componentes que necesito, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8705, 8706, 8707, 8708, 8709, 8710, 8711, 8712) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8705, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8706, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8707, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8708, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8709, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8710, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8711, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8712, 'esES', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8705, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8706, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8707, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8708, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8709, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8710, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8711, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0), +(8712, 'esMX', 'Lo has hecho bien, $n. Esta empuñadura es una obra maestra... el equilibrio es perfecto.$B$BToma tu arma, $n. ¡Esgrímela con confianza y vence a nuestros enemigos!', 0); +-- Cantoestelar el Ancestro +-- 8713, 8714, 8715, 8716, 8717, 8718, 8719, 8720, 8721, 8722, 8723, 8724, 8725, 8726, 8727 +-- https://es.classic.wowhead.com/quest=8713 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8713, 8714, 8715, 8716, 8717, 8718, 8719, 8720, 8721, 8722, 8723, 8724, 8725, 8726, 8727) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8713, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8714, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8715, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8716, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8717, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8718, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8719, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8720, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8721, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8722, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8723, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8724, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8725, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8726, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8727, 'esES', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8713, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8714, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8715, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8716, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8717, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8718, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8719, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8720, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8721, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8722, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8723, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8724, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8725, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8726, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0), +(8727, 'esMX', 'Los cielos, con sus incontables estrellas, guardan las respuestas a los misterios terrenales, $n. ¿Pueden entonces el sabio o el afortunado, mirar hacia arriba y descubrir la verdad?', 0); +-- 8728 Buenas y malas noticias +-- https://es.classic.wowhead.com/quest=8728 +SET @ID := 8728; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las boyas de arcanita no se hacen solas, $n. Y NO, no puedes pedir dinero prestado.', 0), +(@ID, 'esMX', 'Las boyas de arcanita no se hacen solas, $n. Y NO, no puedes pedir dinero prestado.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trato es un trato. Espero que sepas en lo que te estás metiendo, $n. Esto es un gran problema de pesca.', 0), +(@ID, 'esMX', 'Un trato es un trato. Espero que sepas en lo que te estás metiendo, $n. Esto es un gran problema de pesca.', 0); +-- 8729 La cólera de Neptulon +-- https://es.classic.wowhead.com/quest=8729 +SET @ID := 8729; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El tiempo se acaba, $gcampeón:campeona;.', 0), +(@ID, 'esMX', 'El tiempo se acaba, $gcampeón:campeona;.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Bien hecho, $n. Pronto podré reformar el cetro de las arenas movedizas.', 0), +(@ID, 'esMX', 'Bien hecho, $n. Pronto podré reformar el cetro de las arenas movedizas.', 0); +-- 8730 La corrupción de Nefarius +-- https://es.classic.wowhead.com/quest=8730 +SET @ID := 8730; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Otro de nuestros héroes perdió ante el engendro de Alamuerte. Seremos maldecidos con este sufrimiento para siempre...', 0), +(@ID, 'esMX', 'Otro de nuestros héroes perdió ante el engendro de Alamuerte. Seremos maldecidos con este sufrimiento para siempre...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El alma de Vaelastrasz está en paz, $gcampeón:campeona;. Todos los Aspectos observan tu progreso con gran interés. Debes saber que tiene aliados poderosos.$B$BSe me ordenó que te conceda algo que te ayude en esta lucha. Úsalo bien...', 0), +(@ID, 'esMX', 'El alma de Vaelastrasz está en paz, $gcampeón:campeona;. Todos los Aspectos observan tu progreso con gran interés. Debes saber que tiene aliados poderosos.$B$BSe me ordenó que te conceda algo que te ayude en esta lucha. Úsalo bien...', 0); From e564994b37e0c0c88d020d1e32d3c8077b957ebe Mon Sep 17 00:00:00 2001 From: Yehonal Date: Thu, 6 May 2021 14:54:04 +0200 Subject: [PATCH 088/108] chore(docker): pre-install deno within the images (#5644) --- apps/docker/Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile index 954972fcde..ad8b6873b4 100644 --- a/apps/docker/Dockerfile +++ b/apps/docker/Dockerfile @@ -62,6 +62,9 @@ USER $DOCKER_USER # NOTE: this folder is different by the /azerothcore (which is binded instead) COPY --chown=$DOCKER_USER:$DOCKER_USER . /azerothcore +# Download deno and make sure the dashboard works +RUN bash /azerothcore/acore.sh quit + WORKDIR /azerothcore #================================================================ @@ -132,6 +135,9 @@ RUN mkdir -p /azerothcore/env/dist/logs RUN mkdir -p /azerothcore/env/dist/etc RUN mkdir -p /azerothcore/env/dist/bin +# Download deno and make sure the dashboard works +RUN bash /azerothcore/acore.sh quit + WORKDIR /azerothcore/ #================================================================ From df1ab3903d1725bf80289fb5fbc2472f91d36366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Thu, 6 May 2021 15:30:55 +0200 Subject: [PATCH 089/108] fix(DB): remove undesired DELETE statement --- data/sql/updates/db_world/2021_05_06_00.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/data/sql/updates/db_world/2021_05_06_00.sql b/data/sql/updates/db_world/2021_05_06_00.sql index f12d51c76c..1c6a705629 100644 --- a/data/sql/updates/db_world/2021_05_06_00.sql +++ b/data/sql/updates/db_world/2021_05_06_00.sql @@ -16,8 +16,6 @@ SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '161950129258852650 INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619501292588526500'); -DELETE FROM `spell_dbc` WHERE `ID` IN (5143,5144,5145,8416,8417,10211,10212,25345,27075,38699,38704,42843,42846); - INSERT IGNORE INTO `spell_dbc` (`ID`, `Category`, `DispelType`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `ShapeshiftMask`, `ShapeshiftExclude`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `InterruptFlags`, `AuraInterruptFlags`, `ChannelInterruptFlags`, `ProcTypeMask`, `ProcChance`, `ProcCharges`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `PowerType`, `ManaCost`, `ManaCostPerLevel`, `ManaPerSecond`, `ManaPerSecondPerLevel`, `RangeIndex`, `Speed`, `ModalNextSpell`, `CumulativeAura`, `Totem_1`, `Totem_2`, `Reagent_1`, `Reagent_2`, `Reagent_3`, `Reagent_4`, `Reagent_5`, `Reagent_6`, `Reagent_7`, `Reagent_8`, `ReagentCount_1`, `ReagentCount_2`, `ReagentCount_3`, `ReagentCount_4`, `ReagentCount_5`, `ReagentCount_6`, `ReagentCount_7`, `ReagentCount_8`, `EquippedItemClass`, `EquippedItemSubclass`, `EquippedItemInvTypes`, `Effect_1`, `Effect_2`, `Effect_3`, `EffectDieSides_1`, `EffectDieSides_2`, `EffectDieSides_3`, `EffectRealPointsPerLevel_1`, `EffectRealPointsPerLevel_2`, `EffectRealPointsPerLevel_3`, `EffectBasePoints_1`, `EffectBasePoints_2`, `EffectBasePoints_3`, `EffectMechanic_1`, `EffectMechanic_2`, `EffectMechanic_3`, `ImplicitTargetA_1`, `ImplicitTargetA_2`, `ImplicitTargetA_3`, `ImplicitTargetB_1`, `ImplicitTargetB_2`, `ImplicitTargetB_3`, `EffectRadiusIndex_1`, `EffectRadiusIndex_2`, `EffectRadiusIndex_3`, `EffectAura_1`, `EffectAura_2`, `EffectAura_3`, `EffectAuraPeriod_1`, `EffectAuraPeriod_2`, `EffectAuraPeriod_3`, `EffectMultipleValue_1`, `EffectMultipleValue_2`, `EffectMultipleValue_3`, `EffectChainTargets_1`, `EffectChainTargets_2`, `EffectChainTargets_3`, `EffectItemType_1`, `EffectItemType_2`, `EffectItemType_3`, `EffectMiscValue_1`, `EffectMiscValue_2`, `EffectMiscValue_3`, `EffectMiscValueB_1`, `EffectMiscValueB_2`, `EffectMiscValueB_3`, `EffectTriggerSpell_1`, `EffectTriggerSpell_2`, `EffectTriggerSpell_3`, `EffectPointsPerCombo_1`, `EffectPointsPerCombo_2`, `EffectPointsPerCombo_3`, `EffectSpellClassMaskA_1`, `EffectSpellClassMaskA_2`, `EffectSpellClassMaskA_3`, `EffectSpellClassMaskB_1`, `EffectSpellClassMaskB_2`, `EffectSpellClassMaskB_3`, `EffectSpellClassMaskC_1`, `EffectSpellClassMaskC_2`, `EffectSpellClassMaskC_3`, `SpellVisualID_1`, `SpellVisualID_2`, `SpellIconID`, `ActiveIconID`, `SpellPriority`, `Name_Lang_enUS`, `Name_Lang_enGB`, `Name_Lang_koKR`, `Name_Lang_frFR`, `Name_Lang_deDE`, `Name_Lang_enCN`, `Name_Lang_zhCN`, `Name_Lang_enTW`, `Name_Lang_zhTW`, `Name_Lang_esES`, `Name_Lang_esMX`, `Name_Lang_ruRU`, `Name_Lang_ptPT`, `Name_Lang_ptBR`, `Name_Lang_itIT`, `Name_Lang_Unk`, `Name_Lang_Mask`, `NameSubtext_Lang_enUS`, `NameSubtext_Lang_enGB`, `NameSubtext_Lang_koKR`, `NameSubtext_Lang_frFR`, `NameSubtext_Lang_deDE`, `NameSubtext_Lang_enCN`, `NameSubtext_Lang_zhCN`, `NameSubtext_Lang_enTW`, `NameSubtext_Lang_zhTW`, `NameSubtext_Lang_esES`, `NameSubtext_Lang_esMX`, `NameSubtext_Lang_ruRU`, `NameSubtext_Lang_ptPT`, `NameSubtext_Lang_ptBR`, `NameSubtext_Lang_itIT`, `NameSubtext_Lang_Unk`, `NameSubtext_Lang_Mask`, `Description_Lang_enUS`, `Description_Lang_enGB`, `Description_Lang_koKR`, `Description_Lang_frFR`, `Description_Lang_deDE`, `Description_Lang_enCN`, `Description_Lang_zhCN`, `Description_Lang_enTW`, `Description_Lang_zhTW`, `Description_Lang_esES`, `Description_Lang_esMX`, `Description_Lang_ruRU`, `Description_Lang_ptPT`, `Description_Lang_ptBR`, `Description_Lang_itIT`, `Description_Lang_Unk`, `Description_Lang_Mask`, `AuraDescription_Lang_enUS`, `AuraDescription_Lang_enGB`, `AuraDescription_Lang_koKR`, `AuraDescription_Lang_frFR`, `AuraDescription_Lang_deDE`, `AuraDescription_Lang_enCN`, `AuraDescription_Lang_zhCN`, `AuraDescription_Lang_enTW`, `AuraDescription_Lang_zhTW`, `AuraDescription_Lang_esES`, `AuraDescription_Lang_esMX`, `AuraDescription_Lang_ruRU`, `AuraDescription_Lang_ptPT`, `AuraDescription_Lang_ptBR`, `AuraDescription_Lang_itIT`, `AuraDescription_Lang_Unk`, `AuraDescription_Lang_Mask`, `ManaCostPct`, `StartRecoveryCategory`, `StartRecoveryTime`, `MaxTargetLevel`, `SpellClassSet`, `SpellClassMask_1`, `SpellClassMask_2`, `SpellClassMask_3`, `MaxTargets`, `DefenseType`, `PreventionType`, `StanceBarOrder`, `EffectChainAmplitude_1`, `EffectChainAmplitude_2`, `EffectChainAmplitude_3`, `MinFactionID`, `MinReputation`, `RequiredAuraVision`, `RequiredTotemCategoryID_1`, `RequiredTotemCategoryID_2`, `RequiredAreasID`, `SchoolMask`, `RuneCostID`, `SpellMissileID`, `PowerDisplayID`, `Field227`, `Field228`, `Field229`, `SpellDescriptionVariableID`, `SpellDifficultyID`, `unk_320_2`, `unk_320_3`) VALUES (5143,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,12,8,8,27,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7268,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 1","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $7268s1 Arcane damage every $5143t2 sec for $5143d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), (5144,0,0,0,536936704,335561860,0,0,134217728,8192,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,15,0,31756,0,101,0,20,16,16,35,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,0,0,0,0,0,0,4,23,0,0,1000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7269,0,0,0,0,0,0,0,0,0,0,0,0,0,262,0,225,0,50,"Arcane Missiles","","","","","","","","","","","","","","","",16712190,"Rank 2","","","","","","","","","","","","","","","",16712190,"Launches Arcane Missiles at the enemy, causing $7269s1 Arcane damage every $5144t2 sec for $5144d.","","","","","","","","","","","","","","","",16712190,"","","","","","","","","","","","","","","","",16712188,31,133,1500,0,3,2048,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0), From 71d5d27e4ef37a17e5b9df3c37eb3830a5c1b4fd Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 6 May 2021 15:34:02 +0200 Subject: [PATCH 090/108] fix(DB/Creature): Verify & update Ashen Verdict reputation values (#5539) --- .../rev_1619695262798189500.sql | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619695262798189500.sql diff --git a/data/sql/updates/pending_db_world/rev_1619695262798189500.sql b/data/sql/updates/pending_db_world/rev_1619695262798189500.sql new file mode 100644 index 0000000000..316966ba8f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619695262798189500.sql @@ -0,0 +1,92 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619695262798189500'); + +-- No clue why 45 was used as common value for 'big' creatures while wowhead likes 49/50. 45+10%=49.5 (racial passive), however in that +-- case wowhead should show more funny values but it always ignores racial passive. We'll use exactly 50 https://www.wowhead.com/faction=1156/the-ashen-verdict#comments:id=941684:reply=143118 +-- Prepatch value can be seen here https://youtu.be/c9S6-I2fk1g?t=70 (75+10%=82.5) (https://www.wowhead.com/faction=1156/the-ashen-verdict#comments:id=941684) +-- Wowhead may be wrong about max standing since few values makes no sense to me and it's too suspicious that only few creatures uses max standing +-- In general wowhead values are logically correct and still valid, however I skipped nearly all new entries(they're too suspicious) and ignored few obviously wrong +-- Since multiple players in retail got exalted in a couple days, any movies are useless, all I got is one Marrowgar from normal. In 10+ +-- other movies players receives no reputation so probably it was already exalted +-- Reputation in wowhead was not archived in 2010, at all +-- Bosses gives x2 rep in heroic https://www.wowhead.com/faction=1156/the-ashen-verdict#comments:id=1056006 + +-- Wrong +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (36791,37934,38508,36619,38711,38712,37125,38159,37949,37890,38369,38485,38472,37695,37919,37782,37886,36968,37117,37032,37033,37149,37031,37030,36957,37029,36982,36960,37146,37034,37035); + +-- New +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 2 WHERE `creature_id` = 38184; -- Corrupted Ymirjar +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 36880; -- Decaying Colossus +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 37655; -- Decaying Colossus (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 37531; -- Frostwarden Handler +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 38139; -- Frostwarden Handler (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 2 WHERE `creature_id` = 37532; -- Frostwing Whelp +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 2 WHERE `creature_id` = 38151; -- Frostwing Whelp (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 38418; -- Val'kyr Herald (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 2 WHERE `creature_id` IN (37132,38125,37127,37134,37133,38126,38130,38131,38132,38133); + +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (38185,38137,38134,38362,38197,38198,37023,38104,37217,10404,37533,37534,37544,37545,37025,37098,37038); +INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `IsTeamAward1`, `RewOnKillRepValue1`, `MaxStanding2`, `IsTeamAward2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES +(38185, 1156, 0, 7, 0, 2, 0, 0, 0, 0), -- Corrupted Ymirjar (1) +(38137, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Frostwarden Sorceress (1) +(38134, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Frostwarden Warrior (1) +(38362, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Nerub'ar Broodling (1) +(38197, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Nerub'ar Champion (1) +(38198, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Nerub'ar Webweaver (1) +(37023, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Plague Scientist +(38104, 1156, 0, 7, 0, 2, 0, 0, 0, 0), -- Plagued Zombie +(37217, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Precious +(10404, 1156, 0, 7, 0, 30, 0, 0, 0, 0), -- Pustulating Horror +(37533, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Rimefang +(37534, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Spinestalker +(37544, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Spire Gargoyle +(37545, 1156, 0, 7, 0, 15, 0, 0, 0, 0), -- Spire Minion +(37025, 1156, 0, 7, 0, 150, 0, 0, 0, 0), -- Stinky +(37098, 1156, 0, 7, 0, 50, 0, 0, 0, 0), -- Val'kyr Herald +(37038, 1156, 0, 7, 0, 15, 0, 0, 0, 0); -- Vengeful Fleshreaper + +-- More +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 30 WHERE `creature_id` = 37022; -- Blighted Abomination +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 30 WHERE `creature_id` = 38108; -- Blighted Abomination (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 37007; -- Deathbound Ward +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 38031; -- Deathbound Ward (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 36829; -- Deathspeaker High Priest +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 50 WHERE `creature_id` = 38074; -- Deathspeaker High Priest (1) + +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38435; -- Blood-Queen Lana'thel (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38436; -- Blood-Queen Lana'thel (3) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 37505; -- Festergut (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 37506; -- Festergut (3) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38296; -- Lady Deathwhisper (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38297; -- Lady Deathwhisper (3) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 37958; -- Lord Marrowgar (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 37959; -- Lord Marrowgar (3) + +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 83 WHERE `creature_id` = 37972; -- Prince Keleseth +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 83 WHERE `creature_id` = 37973; -- Prince Taldaram +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 83 WHERE `creature_id` = 37970; -- Prince Valanar +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 83 WHERE `creature_id` = 38401; -- Prince Valanar (1) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 165 WHERE `creature_id` = 38784; -- Prince Valanar (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 165 WHERE `creature_id` = 38785; -- Prince Valanar (3) + +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (38399,38400,38769,38771,38770,38772); +INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `IsTeamAward1`, `RewOnKillRepValue1`, `MaxStanding2`, `IsTeamAward2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES +(38399, 1156, 0, 7, 0, 83, 0, 0, 0, 0), -- Prince Keleseth (1) +(38400, 1156, 0, 7, 0, 83, 0, 0, 0, 0), -- Prince Taldaram (1) +(38769, 1156, 0, 7, 0, 165, 0, 0, 0, 0), -- Prince Keleseth (2) +(38771, 1156, 0, 7, 0, 165, 0, 0, 0, 0), -- Prince Taldaram (2) +(38770, 1156, 0, 7, 0, 165, 0, 0, 0, 0), -- Prince Keleseth (3) +(38772, 1156, 0, 7, 0, 165, 0, 0, 0, 0); -- Prince Taldaram (3) + +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38585; -- Professor Putricide (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38586; -- Professor Putricide (3) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38549; -- Rotface (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38550; -- Rotface (3) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38266; -- Sindragosa (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 500 WHERE `creature_id` = 38267; -- Sindragosa (3) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 3000 WHERE `creature_id` = 39167; -- The Lich King (2) +UPDATE `creature_onkill_reputation` SET `RewOnKillRepValue1` = 3000 WHERE `creature_id` = 39168; -- The Lich King (3) + +DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (37230,38444); +INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `IsTeamAward1`, `RewOnKillRepValue1`, `MaxStanding2`, `IsTeamAward2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES +(37230, 1156, 0, 7, 0, 50, 0, 0, 0, 0), -- Spire Frostwyrm +(38444, 1156, 0, 7, 0, 50, 0, 0, 0, 0); -- Spire Frostwyrm (1) From 64461da3f22fdc67f7ec46720ede74d8b7856984 Mon Sep 17 00:00:00 2001 From: Delcidx <75182283+Delcidx@users.noreply.github.com> Date: Thu, 6 May 2021 07:34:28 -0600 Subject: [PATCH 091/108] fix(DB/locale): Import esES/esMX translations (Part 2) (#5547) --- .../rev_1619734944662755000.sql | 723 +++++++++++++++++ .../rev_1619816909908602400.sql | 715 +++++++++++++++++ .../rev_1619817090623034700.sql | 729 ++++++++++++++++++ .../rev_1619817128237023800.sql | 370 +++++++++ 4 files changed, 2537 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619734944662755000.sql create mode 100644 data/sql/updates/pending_db_world/rev_1619816909908602400.sql create mode 100644 data/sql/updates/pending_db_world/rev_1619817090623034700.sql create mode 100644 data/sql/updates/pending_db_world/rev_1619817128237023800.sql diff --git a/data/sql/updates/pending_db_world/rev_1619734944662755000.sql b/data/sql/updates/pending_db_world/rev_1619734944662755000.sql new file mode 100644 index 0000000000..ccebf72253 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619734944662755000.sql @@ -0,0 +1,723 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619734944662755000'); + +-- 8876 Cohetes pequeños +-- https://es.classic.wowhead.com/quest=8876 +SET @ID := 8876; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, muy bien. Aquí están tus recetas, $n, y que Elune te bendiga.', 0), +(@ID, 'esMX', 'Ah, muy bien. Aquí están tus recetas, $n, y que Elune te bendiga.', 0); +-- 8877 Lanzador de fuegos artificiales +-- https://es.classic.wowhead.com/quest=8877 +SET @ID := 8877; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Aquí tienes, $n. Aquí está el esquema para crear un lanzador de fuegos artificiales. Coloca los lanzadores donde desees celebrar y luego da la bienvenida a tus amigos para que se unan a la fiesta.', 0), +(@ID, 'esMX', 'Aquí tienes, $n. Aquí está el esquema para crear un lanzador de fuegos artificiales. Coloca los lanzadores donde desees celebrar y luego da la bienvenida a tus amigos para que se unan a la fiesta.', 0); +-- 8878 Patrones para las fiestas +-- https://es.classic.wowhead.com/quest=8878 +SET @ID := 8878; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Aquí están los patrones, $n. Estoy seguro de que el producto de este conocimiento te resultará bastante hermoso.', 0), +(@ID, 'esMX', 'Aquí están los patrones, $n. Estoy seguro de que el producto de este conocimiento te resultará bastante hermoso.', 0); +-- 8879 Cohetes grandes +-- https://es.classic.wowhead.com/quest=8879 +SET @ID := 8879; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Muy bien, acepto estas monedas de linaje. Aquí están tus recetas, $n. ¡Puedes usarlas para difundir la gloria de Elune!', 0), +(@ID, 'esMX', 'Muy bien, acepto estas monedas de linaje. Aquí están tus recetas, $n. ¡Puedes usarlas para difundir la gloria de Elune!', 0); +-- 8880 Tracas de cohetes +-- https://es.classic.wowhead.com/quest=8880 +SET @ID := 8880; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Aquí tienes, $n. Toma estas recetas y aprende sus secretos. Te deseo suerte y espero ver tus magníficas creaciones.', 0), +(@ID, 'esMX', 'Aquí tienes, $n. Toma estas recetas y aprende sus secretos. Te deseo suerte y espero ver tus magníficas creaciones.', 0); +-- 8881 Tracas de cohetes grandes +-- https://es.classic.wowhead.com/quest=8881 +SET @ID := 8881; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las tracas de cohetes grandes requieren vastos recursos y habilidad para crearlas, ¡pero su brillantez y belleza merecen ese esfuerzo! Tráeme monedas de linaje y te otorgaré el conocimiento de su elaboración.', 0), +(@ID, 'esMX', 'Las tracas de cohetes grandes requieren vastos recursos y habilidad para crearlas, ¡pero su brillantez y belleza merecen ese esfuerzo! Tráeme monedas de linaje y te otorgaré el conocimiento de su elaboración.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias, $n. Aquí está la receta para tracas de cohetes grandes. Que tus productos traigan alegría y suerte a todos los que los miran.', 0), +(@ID, 'esMX', 'Gracias, $n. Aquí está la receta para tracas de cohetes grandes. Que tus productos traigan alegría y suerte a todos los que los miran.', 0); +-- 8882 Lanzatracas +-- https://es.classic.wowhead.com/quest=8882 +SET @ID := 8882; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los espectáculos de fuegos artificiales más espléndidos deben incluir tracas de cohetes, ¡y esas tracas deben dispararse desde lanzadores de tracas! Entonces, ¿no es lógico que aprendas los secretos para hacer lanzadores de tracas? Tráeme monedas de linaje y te daré este conocimiento.', 0), +(@ID, 'esMX', 'Los espectáculos de fuegos artificiales más espléndidos deben incluir tracas de cohetes, ¡y esas tracas deben dispararse desde lanzadores de tracas! Entonces, ¿no es lógico que aprendas los secretos para hacer lanzadores de tracas? Tráeme monedas de linaje y te daré este conocimiento.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Aquí está tu esquema. Estúdialo de cerca y aprende...$B$BBuena suerte, $n. ¡Que tus celebraciones compitan con las del Festival Lunar!', 0), +(@ID, 'esMX', 'Aquí está tu esquema. Estúdialo de cerca y aprende...$B$BBuena suerte, $n. ¡Que tus celebraciones compitan con las del Festival Lunar!', 0); +-- 8883 Valadar Cantoestelar +-- https://es.wowhead.com/quest=8883 +SET @ID := 8883; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡$n, $gbienvenido:bienvenida; al Amparo de la Noche, sede de El Festival Lunar! Aunque nuestro poblado está alejado y remoto para las gentes de Azeroth, durante estos días de celebración abrimos nuestros brazos y corazones a todo el mundo.$B$BDisfruta de tu visita, $n, y vuelve a hablar conmigo o con mi hermana cuando estés $glisto:lista;.', 0), +(@ID, 'esMX', '¡$n, $gbienvenido:bienvenida; al Amparo de la Noche, sede de El Festival Lunar! Aunque nuestro poblado está alejado y remoto para las gentes de Azeroth, durante estos días de celebración abrimos nuestros brazos y corazones a todo el mundo.$B$BDisfruta de tu visita, $n, y vuelve a hablar conmigo o con mi hermana cuando estés $glisto:lista;.', 0); +-- 8884 Aquí, pescadito... +-- https://es.wowhead.com/quest=8884 +SET @ID := 8884; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los forestales de El Retiro del Errante estamos reparando el daño infligido a nuestras hermosas tierras y haremos lo que sea necesario para conseguirlo.$B$B¿Traes las cabezas de múrloc que te pedí?', 0), +(@ID, 'esMX', 'Los forestales de El Retiro del Errante estamos reparando el daño infligido a nuestras hermosas tierras y haremos lo que sea necesario para conseguirlo.$B$B¿Traes las cabezas de múrloc que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $c. Por el olor diría que me traes lo que pedí, incluso más. Seguro que las aprovecharemos para hacer sopa o algo.$B$BPero, por desgracia, tus esfuerzos no parecen haber dado resultado: los múrlocs no se han retirado. ¡Hay que tomar medidas más extremas!', 0), +(@ID, 'esMX', 'Buen trabajo, $c. Por el olor diría que me traes lo que pedí, incluso más. Seguro que las aprovecharemos para hacer sopa o algo.$B$BPero, por desgracia, tus esfuerzos no parecen haber dado resultado: los múrlocs no se han retirado. ¡Hay que tomar medidas más extremas!', 0); +-- 8885 El anillo de Mmmrrrggglll +-- https://es.wowhead.com/quest=8885 +SET @ID := 8885; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eres el vehículo de mi venganza, $c. ¿Traes el anillo?', 0), +(@ID, 'esMX', 'Eres el vehículo de mi venganza, $c. ¿Traes el anillo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Al fin! Aunque los Malaescama no se han retirado como esperaba, me divertí mucho con su pánico cuando liquidaste a su jefe. Tienes mi gratitud y la de los sin\'dorei de Ciudad de Lunargenta.$B$BAcepta esto como muestra de agradecimiento por tus servicios.', 0), +(@ID, 'esMX', '¡Al fin! Aunque los Malaescama no se han retirado como esperaba, me divertí mucho con su pánico cuando liquidaste a su jefe. Tienes mi gratitud y la de los sin\'dorei de Ciudad de Lunargenta.$B$BAcepta esto como muestra de agradecimiento por tus servicios.', 0); +-- 8886 ¡Piratas Malaescama! +-- https://es.wowhead.com/quest=8886 +SET @ID := 8886; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Agradezco la ayuda de alguien como tú, $n. Casi me hace sonreír, pero entonces me acuerdo de lo que esos monstruos le han hecho a mi nave y de lo que está pasando en Quel\'Thalas.$B$B¿Conseguiste recuperar parte de mi carga?', 0), +(@ID, 'esMX', 'Agradezco la ayuda de alguien como tú, $n. Casi me hace sonreír, pero entonces me acuerdo de lo que esos monstruos le han hecho a mi nave y de lo que está pasando en Quel\'Thalas.$B$B¿Conseguiste recuperar parte de mi carga?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Fantástico! ¡Me has salvado de la ruina y me has vengado de esas asquerosas criaturas!$B$BAhora a ver si consigo que esas forestales tan guapas me ayuden con la carga y podré marcharme por fin. Tendré que volver cuando Velendris retome el astillero.$B$BTen esta moneda. No puedo permitirme más, pero lo menos que puedo hacer es pagarte por tu ayuda.', 0), +(@ID, 'esMX', '¡Fantástico! ¡Me has salvado de la ruina y me has vengado de esas asquerosas criaturas!$B$BAhora a ver si consigo que esas forestales tan guapas me ayuden con la carga y podré marcharme por fin. Tendré que volver cuando Velendris retome el astillero.$B$BTen esta moneda. No puedo permitirme más, pero lo menos que puedo hacer es pagarte por tu ayuda.', 0); +-- 8887 Rutas perdidas de la capitana Kelisendra +-- https://es.wowhead.com/quest=8887 +SET @ID := 8887; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hola, $c, me alegro de verte. Sé que es absurdo que esté aquí cuando El Puerto ha sido invadido por los desdichados. Velendris y sus forestales han jurado protegerme a condición de que me vaya en cuanto haya recuperado mi carga.$B$B¿Qué traes? Eso me suena.', 0), +(@ID, 'esMX', 'Hola, $c, me alegro de verte. Sé que es absurdo que esté aquí cuando El Puerto ha sido invadido por los desdichados. Velendris y sus forestales han jurado protegerme a condición de que me vaya en cuanto haya recuperado mi carga.$B$B¿Qué traes? Eso me suena.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Estupendo, $c! ¡No sabía que los múrlocs Malaescama se habían llevado también mis planes de navegación! Sin ellos no habría podido salir a la mar aun después de haber retomado El Puerto y reparado la nave.$B$B¡Muchas gracias! Acepta esta moneda en muestra de gratitud.', 0), +(@ID, 'esMX', '¡Estupendo, $c! ¡No sabía que los múrlocs Malaescama se habían llevado también mis planes de navegación! Sin ellos no habría podido salir a la mar aun después de haber retomado El Puerto y reparado la nave.$B$B¡Muchas gracias! Acepta esta moneda en muestra de gratitud.', 0); +-- 8898 Queridísima Colara: +-- https://es.classic.wowhead.com/quest=8898 +SET @ID := 8898; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hola, $gguapo:guapa;, ¿querías algo?', 0), +(@ID, 'esMX', 'Hola, $gguapo:guapa;, ¿querías algo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tormek? Ah, sí, el barbudito simpático.$B$B¡Qué bien que se acuerde de mí!', 0), +(@ID, 'esMX', '¿Tormek? Ah, sí, el barbudito simpático.$B$B¡Qué bien que se acuerde de mí!', 0); +-- 8899 Queridísima Colara: +-- https://es.classic.wowhead.com/quest=8899 +SET @ID := 8899; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hola $gguapo:guapa;. ¿Te puedo ayudar en algo?', 0), +(@ID, 'esMX', 'Hola $gguapo:guapa;. ¿Te puedo ayudar en algo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Nunca antes había recibido algo como esto. ¡Que adorable!', 0), +(@ID, 'esMX', 'Nunca antes había recibido algo como esto. ¡Que adorable!', 0); +-- 8900 Queridísima Elenia: +-- https://es.classic.wowhead.com/quest=8900 +SET @ID := 8900; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, ¿y a qué debo este placer?', 0), +(@ID, 'esMX', 'Ah, ¿y a qué debo este placer?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No esperaba que un orco fuera tan elocuente. Por supuesto, nunca antes había tenido la oportunidad de conocerlos. Gracias por traerme esto.', 0), +(@ID, 'esMX', 'No esperaba que un orco fuera tan elocuente. Por supuesto, nunca antes había tenido la oportunidad de conocerlos. Gracias por traerme esto.', 0); +-- 8901 Queridísima Elenia: +-- https://es.classic.wowhead.com/quest=8901 +SET @ID := 8901; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, ¿y a qué debo este placer?', 0), +(@ID, 'esMX', 'Ah, ¿y a qué debo este placer?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Qué amables palabras escribe Temma para mí. Pero, por mucho que me conmuevan sus palabras, no puedo considerar el amor de un tauren. En pensamientos, cuerpo y mente somos demasiado diferentes.$B$BEs bueno que no tenga que recibir estos pensamientos suyos en persona. No pude soportar romperle el corazón.', 0), +(@ID, 'esMX', 'Qué amables palabras escribe Temma para mí. Pero, por mucho que me conmuevan sus palabras, no puedo considerar el amor de un tauren. En pensamientos, cuerpo y mente somos demasiado diferentes.$B$BEs bueno que no tenga que recibir estos pensamientos suyos en persona. No pude soportar romperle el corazón.', 0); +-- 8902 Queridísima Elenia: +-- https://es.classic.wowhead.com/quest=8902 +SET @ID := 8902; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, ¿y a qué debo este placer?', 0), +(@ID, 'esMX', 'Ah, ¿y a qué debo este placer?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Esto trae recuerdos de hace una vida, $n. Elenia Tor. Ese iba a ser mi nombre, sabes. Tendríamos una hermosa ceremonia a orillas del lago. Cuando se jubilara, encontraríamos una granja donde retirarnos.$B$BSueños simples, entonces.$B$BPero si me viera ahora, dudo que incluso vea a Elenia en mí. Solo carne fría y un corazón muerto...', 0), +(@ID, 'esMX', 'Esto trae recuerdos de hace una vida, $n. Elenia Tor. Ese iba a ser mi nombre, sabes. Tendríamos una hermosa ceremonia a orillas del lago. Cuando se jubilara, encontraríamos una granja donde retirarnos.$B$BSueños simples, entonces.$B$BPero si me viera ahora, dudo que incluso vea a Elenia en mí. Solo carne fría y un corazón muerto...', 0); +-- 8903 Amor peligroso +-- https://es.classic.wowhead.com/quest=8903 +SET @ID := 8903; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Dime, ¿los guardias también están afectados por esta locura de amor?', 0), +(@ID, 'esMX', 'Dime, ¿los guardias también están afectados por esta locura de amor?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De modo que estaba en lo cierto. ¡Esto es terrible! ¿Cómo ha podido pasar? Déjame pensar... Tiene que haber alguna razón.', 0), +(@ID, 'esMX', 'De modo que estaba en lo cierto. ¡Esto es terrible! ¿Cómo ha podido pasar? Déjame pensar... Tiene que haber alguna razón.', 0); +-- 8904 Amor peligroso +-- https://es.classic.wowhead.com/quest=8904 +SET @ID := 8904; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tenía razón en preocuparme? ¿Han vencido a nuestros guardias idiotas?', 0), +(@ID, 'esMX', '¿Tenía razón en preocuparme? ¿Han vencido a nuestros guardias idiotas?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De modo que estaba en lo cierto. ¡Esto es terrible! ¿Cómo ha podido pasar? Déjame pensar... Tiene que haber alguna razón.', 0), +(@ID, 'esMX', 'De modo que estaba en lo cierto. ¡Esto es terrible! ¿Cómo ha podido pasar? Déjame pensar... Tiene que haber alguna razón.', 0); +-- Una propuesta seria +-- 8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 10492 +-- https://es.classic.wowhead.com/quest=8905 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 10492) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8905, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8906, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8907, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8908, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8909, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8910, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8911, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8912, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(10492, 'esES', '¿Me has traído lo que te pedí, $n?', 0), +(8905, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8906, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8907, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8908, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8909, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8910, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8911, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(8912, 'esMX', '¿Me has traído lo que te pedí, $n?', 0), +(10492, 'esMX', '¿Me has traído lo que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8905, 8906, 8907, 8908, 8909, 8910, 8911, 8912, 10492) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8905, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8906, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8907, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8908, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8909, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8910, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8911, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8912, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(10492, 'esES', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8905, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8906, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8907, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8908, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8909, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8910, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8911, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(8912, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0), +(10492, 'esMX', '¡Excelente! Entonces realicemos el intercambio. Es difícil desprenderse de esta excelente armadura, pero me temo que no la necesitaré en un tiempo.$B$BSi estás $ginteresado:interesada; en realizar más trabajos para mí, podría estar dispuesta a renunciar al resto de las piezas.', 0); +-- Una propuesta seria +-- 8913, 8914, 8915, 8916, 8917, 8918, 8919, 8920, 10493 +-- https://es.classic.wowhead.com/quest=8913 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8913, 8914, 8915, 8916, 8917, 8918, 8919, 8920, 10493) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8913, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8914, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8915, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8916, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8917, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8918, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8919, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8920, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(10493, 'esES', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8913, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8914, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8915, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8916, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8917, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8918, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8919, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(8920, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0), +(10493, 'esMX', '¿Ha obtenido los artículos que necesito, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8913, 8914, 8915, 8916, 8917, 8918, 8919, 8920, 10493) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8913, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8914, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8915, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8916, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8917, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8918, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8919, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8920, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(10493, 'esES', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8913, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8914, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8915, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8916, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8917, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8918, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8919, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(8920, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0), +(10493, 'esMX', 'Ah, sí. Mux estará bastante contento con esto.$B$BEsos brazales eran parte de mi mejor conjunto de armadura. Si estás $ginteresado:interesada; en brindarme más ayuda, estaría dispuesto a considerar separarme del resto.', 0); +-- 8921 El destilador ectoplásmico +-- https://es.classic.wowhead.com/quest=8921 +SET @ID := 8921; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Entiendo que los materiales son un poco caros... ¡pero te prometo que cada uno de ellos es necesario!', 0), +(@ID, 'esMX', 'Entiendo que los materiales son un poco caros... ¡pero te prometo que cada uno de ellos es necesario!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos son precisamente los materiales que necesitaba. ¡Muy oportuno también, $n!$B$B¡En unos momentos tendré tu destilador listo para funcionar! Mientras tanto, toma esto como una recompensa por ayudarme en mi proyecto.', 0), +(@ID, 'esMX', 'Estos son precisamente los materiales que necesitaba. ¡Muy oportuno también, $n!$B$B¡En unos momentos tendré tu destilador listo para funcionar! Mientras tanto, toma esto como una recompensa por ayudarme en mi proyecto.', 0); +-- 8922 Un artefacto sobrenatural +-- https://es.classic.wowhead.com/quest=8922 +SET @ID := 8922; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes algo para mi?', 0), +(@ID, 'esMX', '¿Tienes algo para mi?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! ¡Justo cuando estaba acabando!$B$B¿Dices que te envió Deliana?', 0), +(@ID, 'esMX', '¡Excelente! ¡Justo cuando estaba acabando!$B$B¿Dices que te envió Deliana?', 0); +-- 8923 Un artefacto sobrenatural +-- https://es.wowhead.com/quest=8923 +SET @ID := 8923; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Quieres hablar conmigo?', 0), +(@ID, 'esMX', '¿Quieres hablar conmigo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! ¡Justo cuando estaba acabando!$B$B¿Dices que te envió Mokvar?', 0), +(@ID, 'esMX', '¡Excelente! ¡Justo cuando estaba acabando!$B$B¿Dices que te envió Mokvar?', 0); +-- 8924 Caza de ectoplasmas +-- https://es.classic.wowhead.com/quest=8924 +SET @ID := 8924; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ya reuniste el ectoplasma, $r?', 0), +(@ID, 'esMX', '¿Ya reuniste el ectoplasma, $r?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, ¡estos lo harán genial!$B$B¡Al aprovechar las energías de otro mundo contenidas en estas sustancias, podremos llegar a aquellos cuyas almas aún no han abandonado este mundo!', 0), +(@ID, 'esMX', 'Sí, ¡estos lo harán genial!$B$B¡Al aprovechar las energías de otro mundo contenidas en estas sustancias, podremos llegar a aquellos cuyas almas aún no han abandonado este mundo!', 0); +-- 8925 Fuente de energía portátil +-- https://es.classic.wowhead.com/quest=8925 +SET @ID := 8925; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has encontrado al Señor del Magma, $n?', 0), +(@ID, 'esMX', '¿Has encontrado al Señor del Magma, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo has hecho! ¡Esto sin duda proporcionará suficiente energía para encender al revelador fantasma extradimensional!', 0), +(@ID, 'esMX', '¡Lo has hecho! ¡Esto sin duda proporcionará suficiente energía para encender al revelador fantasma extradimensional!', 0); +-- Una compensación justa +-- 8926, 8931, 8932, 8933, 8934, 8935, 8936, 8937, 10494 +-- https://es.classic.wowhead.com/quest=8926 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8926, 8931, 8932, 8933, 8934, 8935, 8936, 8937, 10494) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8926, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8931, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8932, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8933, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8934, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8935, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8936, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8937, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(10494, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8926, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8931, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8932, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8933, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8934, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8935, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8936, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8937, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(10494, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8926, 8931, 8932, 8933, 8934, 8935, 8936, 8937, 10494) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8926, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8931, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8932, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8933, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8934, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8935, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8936, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8937, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(10494, 'esES', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8926, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8931, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8932, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8933, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8934, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8935, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8936, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(8937, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0), +(10494, 'esMX', 'Has cumplido tu parte del trato, yo cumpliré la mía.$B$BSolo recuerda que me aferro a las mejores piezas hasta que termines tu trabajo.', 0); + +-- Una compensación justa +-- 8927, 8938, 8939, 8940, 8941, 8942, 8943, 8944, 10495 +-- https://es.wowhead.com/quest=8927 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8927, 8938, 8939, 8940, 8941, 8942, 8943, 8944, 10495) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8927, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8938, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8939, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8940, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8941, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8942, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8943, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8944, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(10495, 'esES', '¿Estás $glisto:lista; para comerciar?', 0), +(8927, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8938, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8939, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8940, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8941, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8942, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8943, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(8944, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0), +(10495, 'esMX', '¿Estás $glisto:lista; para comerciar?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8927, 8938, 8939, 8940, 8941, 8942, 8943, 8944, 10495) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8927, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8938, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8939, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8940, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8941, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8942, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8943, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8944, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(10495, 'esES', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8927, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8938, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8939, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8940, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8941, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8942, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8943, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(8944, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0), +(10495, 'esMX', 'Nuestro acuerdo sigue vigente. Solo recuerda, esto es solo una muestra de lo que te espera. Líbrame de este destino maldito y te recompensaré con objetos de un poder verdaderamente grandioso.', 0); +-- 8928 Un mercader sospechoso +-- https://es.classic.wowhead.com/quest=8928 +SET @ID := 8928; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has tenido suerte encontrando al diablillo en Garganta Negro Rumor?', 0), +(@ID, 'esMX', '¿Has tenido suerte encontrando al diablillo en Garganta Negro Rumor?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo hiciste! Esta vara funcionará perfectamente. Ahora a ponerlo todo junto...', 0), +(@ID, 'esMX', '¡Lo hiciste! Esta vara funcionará perfectamente. Ahora a ponerlo todo junto...', 0); +-- 8929 Buscando a Anthion +-- https://es.classic.wowhead.com/quest=8929 +SET @ID := 8929; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Deliana te ha puesto en contacto conmigo? Haré todo lo posible para ayudarte, pero primero debo pedirte un gran favor.', 0), +(@ID, 'esMX', '¿Deliana te ha puesto en contacto conmigo? Haré todo lo posible para ayudarte, pero primero debo pedirte un gran favor.', 0); +-- 8930 Buscando a Anthion +-- https://es.classic.wowhead.com/quest=8930 +SET @ID := 8930; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Mokvar te ha puesto en contacto conmigo? Haré todo lo posible para ayudarte, pero primero debo pedirte un gran favor.', 0), +(@ID, 'esMX', '¿Mokvar te ha puesto en contacto conmigo? Haré todo lo posible para ayudarte, pero primero debo pedirte un gran favor.', 0); +-- 8945 La súplica de un muerto +-- https://es.classic.wowhead.com/quest=8945 +SET @ID := 8945; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Ysida liberada', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Dime, ¿está viva Ysida?', 0), +(@ID, 'esMX', 'Dime, ¿está viva Ysida?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias por rescatarme... temía por mi vida. Acepta esto como una pequeña muestra de mi gratitud.$B$BAnthion está... no... no puede ser...', 0), +(@ID, 'esMX', 'Gracias por rescatarme... temía por mi vida. Acepta esto como una pequeña muestra de mi gratitud.$B$BAnthion está... no... no puede ser...', 0); +-- 8946 Prueba de vida +-- https://es.classic.wowhead.com/quest=8946 +SET @ID := 8946; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ysida... ¿está viva?', 0), +(@ID, 'esMX', 'Ysida... ¿está viva?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ese guardapelo... ¡la encontraste! Puedo descansar en paz por fin.$B$BAhora responderé cualquier pregunta que puedas tener, $n. Pero date prisa, mi tiempo en este mundo se termina.', 0), +(@ID, 'esMX', 'Ese guardapelo... ¡la encontraste! Puedo descansar en paz por fin.$B$BAhora responderé cualquier pregunta que puedas tener, $n. Pero date prisa, mi tiempo en este mundo se termina.', 0); +-- 8947 La extraña petición de Anthion +-- https://es.classic.wowhead.com/quest=8947 +SET @ID := 8947; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Obtuviste los materiales que te pedí, $n?', 0), +(@ID, 'esMX', '¿Obtuviste los materiales que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente. Los transmutaré en algo más adecuado a nuestras necesidades.', 0), +(@ID, 'esMX', 'Excelente. Los transmutaré en algo más adecuado a nuestras necesidades.', 0); +-- 8948 Un viejo amigo de Anthion +-- https://es.classic.wowhead.com/quest=8948 +SET @ID := 8948; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Habla $gextraño:extraña;, ¿no ves que estoy ocupado?', 0), +(@ID, 'esMX', 'Habla $gextraño:extraña;, ¿no ves que estoy ocupado?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Dices que Anthion te envió? Pensé que estaba muerto. Supongo que he escuchado cosas más extrañas en mi vida.$B$BMuy bien entonces. ¿Qué quieres que haga con este estandarte?', 0), +(@ID, 'esMX', '¿Dices que Anthion te envió? Pensé que estaba muerto. Supongo que he escuchado cosas más extrañas en mi vida.$B$BMuy bien entonces. ¿Qué quieres que haga con este estandarte?', 0); +-- 8949 La vendetta de Falrin +-- https://es.classic.wowhead.com/quest=8949 +SET @ID := 8949; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has hecho el favor que te pedí, $n?', 0), +(@ID, 'esMX', '¿Has hecho el favor que te pedí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hmmm... por extraño que parezca, no me siento mejor por la muerte de mi hermano a manos de esos brutos.$B$BBueno, cumpliste tu parte del trato. Veamos qué puedo hacer por ti.', 0), +(@ID, 'esMX', 'Hmmm... por extraño que parezca, no me siento mejor por la muerte de mi hermano a manos de esos brutos.$B$BBueno, cumpliste tu parte del trato. Veamos qué puedo hacer por ti.', 0); +-- 8950 El encantamiento del provocador +-- https://es.classic.wowhead.com/quest=8950 +SET @ID := 8950; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Ha reunido los materiales que necesito, $n?', 0), +(@ID, 'esMX', '¿Ha reunido los materiales que necesito, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, estos funcionarán bien. Cuando termine, ninguna fuerza en el mundo podrá impedir que tu víctima acepte tu desafío.', 0), +(@ID, 'esMX', 'Sí, estos funcionarán bien. Cuando termine, ninguna fuerza en el mundo podrá impedir que tu víctima acepte tu desafío.', 0); +-- La despedida de Anthion +-- 8951, 8952, 8953, 8954, 8955, 8956, 8958, 8959, 10496 +-- https://es.wowhead.com/quest=8951 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8951, 8952, 8953, 8954, 8955, 8956, 8958, 8959, 10496) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8951, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8952, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8953, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8954, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8955, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8956, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8958, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8959, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(10496, 'esES', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8951, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8952, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8953, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8954, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8955, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8956, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8958, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(8959, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0), +(10496, 'esMX', 'Has vuelto, $n. Debes contarme todo lo que has descubierto. Pero primero permítenos arreglar tu recompensa.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8951, 8952, 8953, 8954, 8955, 8956, 8958, 8959, 10496) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8951, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8952, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8953, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8954, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8955, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8956, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8958, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8959, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(10496, 'esES', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8951, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8952, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8953, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8954, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8955, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8956, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8958, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(8959, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0), +(10496, 'esMX', '¡No puedo creer que nuestras vidas estén casi perdidas por culpa de un estúpido medallón! ¿Y estás $gseguro:segura; de que Anthion mencionó a Bodley?$B$BBueno, has hecho tu trabajo, así que saquemos tu recompensa.', 0); +-- La despedida de Anthion +-- 8957, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 10497 +-- https://es.wowhead.com/quest=8957 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(8957, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 10497) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(8957, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9016, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9017, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9018, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9019, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9020, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9021, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9022, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(10497, 'esES', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(8957, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9016, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9017, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9018, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9019, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9020, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9021, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(9022, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0), +(10497, 'esMX', 'Has vuelto y veo en tus ojos que tienes mucho que contarme, $n. Primero, permítenos ocuparnos de tu recompensa.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8957, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 10497) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8957, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9016, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9017, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9018, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9019, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9020, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9021, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9022, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(10497, 'esES', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(8957, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9016, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9017, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9018, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9019, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9020, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9021, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(9022, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0), +(10497, 'esMX', 'Esta maldición nos fue otorgada por un simple medallón. Lord Valthalak ciertamente sabe cómo guardar rencor.$B$BNos esforzaremos por encontrar las piezas restantes, con suerte antes de que me encuentre con una muerte prematura. Pero antes de eso, veamos cuál es tu recompensa.', 0); +-- El triste destino de Bodley +-- 8960, 9032 +-- https://es.wowhead.com/quest=8960 +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(8960, 9032) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(8960, 'esES', 'Estoy tan contento de que puedas verme. ¡Finalmente alguien con quien hablar!$B$B¿Nos ayudarás, $n? ¿Ayudarás a reparar el mal que perpetramos y arreglarás las cosas? Si es cierto que ya tienes la Pieza Superior del Amuleto de Lord Valthalak, entonces creo que puedo ponerte en la dirección correcta para conseguir las otras dos partes, reunirlas y acabar con todo esto.$B$BAh, por cierto, hola, mi nombre es Bodley. ¡Un placer conocerte!', 0), +(9032, 'esES', 'Estoy tan contento de que puedas verme. ¡Finalmente alguien con quien hablar!$B$B¿Nos ayudarás, $n? ¿Ayudarás a reparar el mal que perpetramos y arreglarás las cosas? Si es cierto que ya tienes la Pieza Superior del Amuleto de Lord Valthalak, entonces creo que puedo ponerte en la dirección correcta para conseguir las otras dos partes, reunirlas y acabar con todo esto.$B$BAh, por cierto, hola, mi nombre es Bodley. ¡Un placer conocerte!', 0), +(8960, 'esMX', 'Estoy tan contento de que puedas verme. ¡Finalmente alguien con quien hablar!$B$B¿Nos ayudarás, $n? ¿Ayudarás a reparar el mal que perpetramos y arreglarás las cosas? Si es cierto que ya tienes la Pieza Superior del Amuleto de Lord Valthalak, entonces creo que puedo ponerte en la dirección correcta para conseguir las otras dos partes, reunirlas y acabar con todo esto.$B$BAh, por cierto, hola, mi nombre es Bodley. ¡Un placer conocerte!', 0), +(9032, 'esMX', 'Estoy tan contento de que puedas verme. ¡Finalmente alguien con quien hablar!$B$B¿Nos ayudarás, $n? ¿Ayudarás a reparar el mal que perpetramos y arreglarás las cosas? Si es cierto que ya tienes la Pieza Superior del Amuleto de Lord Valthalak, entonces creo que puedo ponerte en la dirección correcta para conseguir las otras dos partes, reunirlas y acabar con todo esto.$B$BAh, por cierto, hola, mi nombre es Bodley. ¡Un placer conocerte!', 0); +-- 8961 Tres reyes de Fuego +-- https://es.wowhead.com/quest=8961 +SET @ID := 8961; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Fue nuestra locura... nuestra perdición que aceptáramos ese último trabajo. Si tan solo no hubiéramos robado inadvertidamente el espíritu de Lord Valthalak, que estaba contenido en el amuleto; si tan solo no hubieramos dividido el amuleto como codiciosos mercenarios. Hoy estaría vivo, tal vez bebiendo una cerveza o lanzando a uno de mis hijos al aire.$B$B$n, no permitas que la avaricia de los innobles de nuestra antigua compañía de mercenarios también sea tu perdición.', 0), +(@ID, 'esMX', 'Fue nuestra locura... nuestra perdición que aceptáramos ese último trabajo. Si tan solo no hubiéramos robado inadvertidamente el espíritu de Lord Valthalak, que estaba contenido en el amuleto; si tan solo no hubieramos dividido el amuleto como codiciosos mercenarios. Hoy estaría vivo, tal vez bebiendo una cerveza o lanzando a uno de mis hijos al aire.$B$B$n, no permitas que la avaricia de los innobles de nuestra antigua compañía de mercenarios también sea tu perdición.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estoy impresionado, $n, pero no hay tiempo que perder. Te daré tu próxima tarea, porque todavía necesitarás adquirir algunos componentes importantes antes de que podamos continuar.$B$BHáblame de nuevo cuando sientas que estás $glisto:lista; para el desafío que te espera.', 0), +(@ID, 'esMX', 'Estoy impresionado, $n, pero no hay tiempo que perder. Te daré tu próxima tarea, porque todavía necesitarás adquirir algunos componentes importantes antes de que podamos continuar.$B$BHáblame de nuevo cuando sientas que estás $glisto:lista; para el desafío que te espera.', 0); +-- 8962 Componentes importantes +-- https://es.classic.wowhead.com/quest=8962 +SET @ID := 8962; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de los restos en el blandón.$B$BAhora todo lo que queda es ir a la parte inferior de la Cumbre Roca Negra, a la cámara donde reside el Maestro de Guerra Voone en Tazz\'Alaor, y usar el blandón para convocar al espíritu corrupto de mi antiguo cohorte, Mor Grayhoof. No puede descansar hasta que le quiten la pieza del amuleto.', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de los restos en el blandón.$B$BAhora todo lo que queda es ir a la parte inferior de la Cumbre Roca Negra, a la cámara donde reside el Maestro de Guerra Voone en Tazz\'Alaor, y usar el blandón para convocar al espíritu corrupto de mi antiguo cohorte, Mor Grayhoof. No puede descansar hasta que le quiten la pieza del amuleto.', 0); +-- 8963 Componentes importantes +-- https://es.classic.wowhead.com/quest=8963 +SET @ID := 8963; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la reliquia en el blandón.$B$BAhora todo lo que queda es ir al Santuario de Eldretharr en el ala este de Dire Maul, y usar el blandón para convocar el espíritu de mi antigua cohorte, Isalien. Su espíritu ha sido corrompido por la posesión de la pieza del amuleto de Valthalak y la porción de su alma dentro del mismo.', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la reliquia en el blandón.$B$BAhora todo lo que queda es ir al Santuario de Eldretharr en el ala este de Dire Maul, y usar el blandón para convocar el espíritu de mi antigua cohorte, Isalien. Su espíritu ha sido corrompido por la posesión de la pieza del amuleto de Valthalak y la porción de su alma dentro del mismo.', 0); +-- 8964 Componentes importantes +-- https://es.classic.wowhead.com/quest=8964 +SET @ID := 8964; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la espada en el blandón.$B$BAhora todo lo que queda es entrar en El Trono Carmesí dentro del Bastión Escarlata en Stratholme, y usar el blandón para convocar los restos de mis antiguos cohortes, Jarien y Sothos. Sus almas se han torcido aún más por la posesión de la pieza de amuleto de Valthalak y su espíritu dentro.', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la espada en el blandón.$B$BAhora todo lo que queda es entrar en El Trono Carmesí dentro del Bastión Escarlata en Stratholme, y usar el blandón para convocar los restos de mis antiguos cohortes, Jarien y Sothos. Sus almas se han torcido aún más por la posesión de la pieza de amuleto de Valthalak y su espíritu dentro.', 0); +-- 8965 Componentes importantes +-- https://es.classic.wowhead.com/quest=8965 +SET @ID := 8965; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c, ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de las cenizas en el blandón.$B$BAhora todo lo que queda es entrar en Scholomance, en la cámara de Ras Susurro Gélido, y usar el blandón para invocar el espíritu de mi antiguo cohorte, Kormok. La pieza del amuleto y el espíritu de Valthalak en su interior lo han corrompido aún más, y no descansará hasta que se lo quites por la fuerza.', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de las cenizas en el blandón.$B$BAhora todo lo que queda es entrar en Scholomance, en la cámara de Ras Susurro Gélido, y usar el blandón para invocar el espíritu de mi antiguo cohorte, Kormok. La pieza del amuleto y el espíritu de Valthalak en su interior lo han corrompido aún más, y no descansará hasta que se lo quites por la fuerza.', 0); +-- 8966 La parte izquierda del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8966 +SET @ID := 8966; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Entonces está hecho? ¿Has recuperado la pieza izquierda del amuleto de Lord Valthalak y finalmente has dejado descansar el espíritu de mi antiguo compañero, Mor Pezuña Gris?', 0), +(@ID, 'esMX', '¿Entonces está hecho? ¿Has recuperado la pieza izquierda del amuleto de Lord Valthalak y finalmente has dejado descansar el espíritu de mi antiguo compañero, Mor Pezuña Gris?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has hecho algo grande, $n. Un espíritu descansa en paz, pero aún queda mucho trabajo por hacer antes de que podamos dejar todo esto atrás.$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0), +(@ID, 'esMX', 'Has hecho algo grande, $n. Un espíritu descansa en paz, pero aún queda mucho trabajo por hacer antes de que podamos dejar todo esto atrás.$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0); +-- 8967 La parte izquierda del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8967 +SET @ID := 8967; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Seguramente aún no te has ocupado de la salvación del espíritu de Isalien y la recuperación de la pieza izquierda del amuleto de Lord Valthalak, $n.', 0), +(@ID, 'esMX', 'Seguramente aún no te has ocupado de la salvación del espíritu de Isalien y la recuperación de la pieza izquierda del amuleto de Lord Valthalak, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias, $n, por hacer descansar el espíritu de Isalien. Ahora, tal vez, encontrará la paz con su diosa. Pero aún queda mucho trabajo por delante si queremos salir de este delicado aprieto en el que nos encontramos.$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0), +(@ID, 'esMX', 'Gracias, $n, por hacer descansar el espíritu de Isalien. Ahora, tal vez, encontrará la paz con su diosa. Pero aún queda mucho trabajo por delante si queremos salir de este delicado aprieto en el que nos encontramos.$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0); +-- 8968 La parte izquierda del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8968 +SET @ID := 8968; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$n, ¿Esto significa que ya dejaste descansar las almas de esos dos tontos y recuperaste la pieza izquierda del amuleto de Lord Valthalak?', 0), +(@ID, 'esMX', '$n, ¿Esto significa que ya dejaste descansar las almas de esos dos tontos y recuperaste la pieza izquierda del amuleto de Lord Valthalak?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Supongo que es lo mejor que las almas de esos dos finalmente hayan descansado, incluso si no me agradaron mientras estaban vivos. En cualquier caso, tenemos lo que buscábamos, ¡y eso definitivamente es algo bueno!$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0), +(@ID, 'esMX', 'Supongo que es lo mejor que las almas de esos dos finalmente hayan descansado, incluso si no me agradaron mientras estaban vivos. En cualquier caso, tenemos lo que buscábamos, ¡y eso definitivamente es algo bueno!$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0); +-- 8969 La parte izquierda del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8969 +SET @ID := 8969; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te felicito, $n, si has regresado con la pieza izquierda del amuleto. Sin embargo, si no es así, ocúpate de eso, ya que no hay tiempo que perder, ¡te lo aseguro!', 0), +(@ID, 'esMX', 'Te felicito, $n, si has regresado con la pieza izquierda del amuleto. Sin embargo, si no es así, ocúpate de eso, ya que no hay tiempo que perder, ¡te lo aseguro!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buen trabajo, $n! Kormok no fue tan malo para un ogro, al menos no mientras aún estaba vivo, así que espero que obtenga el descanso que se merece. Pero tenemos más trabajo por delante.$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0), +(@ID, 'esMX', '¡Buen trabajo, $n! Kormok no fue tan malo para un ogro, al menos no mientras aún estaba vivo, así que espero que obtenga el descanso que se merece. Pero tenemos más trabajo por delante.$B$BDesafortunadamente, no sé la ubicación del que murió con la pieza derecha del amuleto en su poder. Pero no temas; En vida fui un aficionado al arte de la adivinación, así que tengo otra tarea para ti, que nos permitirá descubrir la pieza final.', 0); +-- 8970 En tu destino veo la Isla de Alcaz... +-- https://es.classic.wowhead.com/quest=8970 +SET @ID := 8970; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Alga de sangre, $n, un montón, eso es lo que necesito para potenciar mis hechizos adivinatorios. Es probable que tengas que llevar al menos a un par de amigos contigo a la Isla de Alcaz para recogerlo... ¡esos Strashaz son un grupo desagradable!', 0), +(@ID, 'esMX', 'Alga de sangre, $n, un montón, eso es lo que necesito para potenciar mis hechizos adivinatorios. Es probable que tengas que llevar al menos a un par de amigos contigo a la Isla de Alcaz para recogerlo... ¡esos Strashaz son un grupo desagradable!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Para ser honesto, $n, me sorprende que hayas regresado de una pieza. Por otra parte, supongo que la Isla de Alcaz es la menor de tus preocupaciones en este momento.$B$BOk, dame un momento... la adivinación no es algo de lo que puedas chasquear los dedos y esperar respuestas precisas.', 0), +(@ID, 'esMX', 'Para ser honesto, $n, me sorprende que hayas regresado de una pieza. Por otra parte, supongo que la Isla de Alcaz es la menor de tus preocupaciones en este momento.$B$BOk, dame un momento... la adivinación no es algo de lo que puedas chasquear los dedos y esperar respuestas precisas.', 0); +-- 8977 Regresa junto a Deliana +-- https://es.classic.wowhead.com/quest=8977 +SET @ID := 8977; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has vuelto?', 0), +(@ID, 'esMX', '¿Has vuelto?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente! Lo has hecho bien, $n. No estoy segura de confiar en la destreza del goblin, pero no me queda otra opción.', 0), +(@ID, 'esMX', '¡Excelente! Lo has hecho bien, $n. No estoy segura de confiar en la destreza del goblin, pero no me queda otra opción.', 0); diff --git a/data/sql/updates/pending_db_world/rev_1619816909908602400.sql b/data/sql/updates/pending_db_world/rev_1619816909908602400.sql new file mode 100644 index 0000000000..77490a9048 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619816909908602400.sql @@ -0,0 +1,715 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619816909908602400'); + +-- 8978 Regresa junto a Mokvar +-- https://es.classic.wowhead.com/quest=8978 +SET @ID := 8978; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has vuelto con el dispositivo?', 0), +(@ID, 'esMX', '¿Has vuelto con el dispositivo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Has vuelto con el dispositivo! Estoy impresionado por tu dedicación, $n. Excelente trabajo.', 0), +(@ID, 'esMX', '¡Has vuelto con el dispositivo! Estoy impresionado por tu dedicación, $n. Excelente trabajo.', 0); +-- 8979 El presentimiento de Fenstad +-- https://es.classic.wowhead.com/quest=8979 +SET @ID := 8979; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Cómo puedo servirte?', 0), +(@ID, 'esMX', '¿Cómo puedo servirte?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Otra de las obsesiones de Fenstad, ya veo. ¿Cree que la Real Sociedad de Boticarios no tiene nada mejor que hacer que realizar sus pequeñas investigaciones?$B$BMuy bien, lo complaceré una vez más.', 0), +(@ID, 'esMX', 'Otra de las obsesiones de Fenstad, ya veo. ¿Cree que la Real Sociedad de Boticarios no tiene nada mejor que hacer que realizar sus pequeñas investigaciones?$B$BMuy bien, lo complaceré una vez más.', 0); +-- 8980 La evaluación de Zinge +-- https://es.classic.wowhead.com/quest=8980 +SET @ID := 8980; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Entonces, estaba en lo cierto. No debemos perder el tiempo. Debemos determinar la fuente de estas fragancias contaminadas.$B$BEsto es para reembolsarte la compra de la colonia y el perfume.', 0), +(@ID, 'esMX', 'Entonces, estaba en lo cierto. No debemos perder el tiempo. Debemos determinar la fuente de estas fragancias contaminadas.$B$BEsto es para reembolsarte la compra de la colonia y el perfume.', 0); +-- 8982 Rastrear la fuente +-- https://es.classic.wowhead.com/quest=8982 +SET @ID := 8982; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, sí, recientemente recibí stock del perfume y la colonia. No sé cuánto tiempo puedo mantenerlo en los estantes, parece que nadie tiene suficiente.$B$BSi me preguntas, no veo cuál es el problema.', 0), +(@ID, 'esMX', 'Ah, sí, recientemente recibí stock del perfume y la colonia. No sé cuánto tiempo puedo mantenerlo en los estantes, parece que nadie tiene suficiente.$B$BSi me preguntas, no veo cuál es el problema.', 0); +-- 8983 Rastrear la fuente +-- https://es.classic.wowhead.com/quest=8983 +SET @ID := 8983; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me temo que vendí todo mi suministro de perfume y colonia a Norman, el posadero. Si deseas algo, debes hablar con él, asumiendo que le quede algo.$B$BAdemás, no deberías perder el tiempo. Creo que la colonia te resultará irresistible.', 0), +(@ID, 'esMX', 'Me temo que vendí todo mi suministro de perfume y colonia a Norman, el posadero. Si deseas algo, debes hablar con él, asumiendo que le quede algo.$B$BAdemás, no deberías perder el tiempo. Creo que la colonia te resultará irresistible.', 0); +-- 8984 El descubrimiento de la fuente +-- https://es.classic.wowhead.com/quest=8984 +SET @ID := 8984; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, hice esas fragancias. Maravilloso olor, ¿no? Irresistible.$B$BUna vez que los guerreros de la Alianza y la Horda estén enamorados con estos sentimientos de amor, serán impotentes para detener el surgimiento del Consejo de la Sombra.$B$BEstarán debilitados, desprevenidos. Mientras se preocupan por sus seres queridos, perderán su ventaja.$B$BLa solución fue tan simple. ¿Por qué me tomó tanto tiempo encontrarlo? La debilidad de todos es a través del corazón. Y no hay nada que puedas hacer para detener lo inevitable.', 0), +(@ID, 'esMX', 'Sí, hice esas fragancias. Maravilloso olor, ¿no? Irresistible.$B$BUna vez que los guerreros de la Alianza y la Horda estén enamorados con estos sentimientos de amor, serán impotentes para detener el surgimiento del Consejo de la Sombra.$B$BEstarán debilitados, desprevenidos. Mientras se preocupan por sus seres queridos, perderán su ventaja.$B$BLa solución fue tan simple. ¿Por qué me tomó tanto tiempo encontrarlo? La debilidad de todos es a través del corazón. Y no hay nada que puedas hacer para detener lo inevitable.', 0); +-- 8985 Más componentes importantes +-- https://es.classic.wowhead.com/quest=8985 +SET @ID := 8985; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la reliquia en el blandón.$B$BAhora todo lo que queda es ir al Santuario de Eldretharr en el ala este de La Masacre, y usar el blandón para convocar el espíritu de mi antigua cohorte, Isalien. Su espíritu ha sido corrompido por la posesión de la pieza del amuleto de Valthalak y la porción de su alma dentro de ella.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la Isla de Alcaz, así que las convertí en pociones para ti. ¡Elige una!', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la reliquia en el blandón.$B$BAhora todo lo que queda es ir al Santuario de Eldretharr en el ala este de La Masacre, y usar el blandón para convocar el espíritu de mi antigua cohorte, Isalien. Su espíritu ha sido corrompido por la posesión de la pieza del amuleto de Valthalak y la porción de su alma dentro de ella.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la Isla de Alcaz, así que las convertí en pociones para ti. ¡Elige una!', 0); +-- 8986 Más componentes importantes +-- https://es.classic.wowhead.com/quest=8986 +SET @ID := 8986; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de los restos en el blandón.$B$BAhora todo lo que queda es ir a la parte inferior de Cumbre de Roca Negra, a la cámara donde reside el Maestro de Guerra Voone en Tazz\'Alaor, y usar el blandón para convocar al espíritu corrupto de mi antiguo cohorte, Mor Pezuña Gris. No puede descansar hasta que le quiten la pieza del amuleto.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la isla de Alcaz, así que te las convertí en pociones. ¡Elige una!', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de los restos en el blandón.$B$BAhora todo lo que queda es ir a la parte inferior de Cumbre de Roca Negra, a la cámara donde reside el Maestro de Guerra Voone en Tazz\'Alaor, y usar el blandón para convocar al espíritu corrupto de mi antiguo cohorte, Mor Pezuña Gris. No puede descansar hasta que le quiten la pieza del amuleto.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la isla de Alcaz, así que te las convertí en pociones. ¡Elige una!', 0); +-- 8987 Más componentes importantes +-- https://es.classic.wowhead.com/quest=8987 +SET @ID := 8987; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la espada en el blandón.$B$BAhora todo lo que queda es entrar en El Trono Carmesí dentro del Bastión Escarlata en Stratholme, y usar el blandón para convocar los restos de mis antiguos cohortes, Jarien y Sothos. Sus almas se han torcido aún más por la posesión de la pieza de amuleto de Valthalak y su espíritu dentro.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la isla de Alcaz, así que te las convertí en pociones. ¡Elige una!', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de la espada en el blandón.$B$BAhora todo lo que queda es entrar en El Trono Carmesí dentro del Bastión Escarlata en Stratholme, y usar el blandón para convocar los restos de mis antiguos cohortes, Jarien y Sothos. Sus almas se han torcido aún más por la posesión de la pieza de amuleto de Valthalak y su espíritu dentro.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la isla de Alcaz, así que te las convertí en pociones. ¡Elige una!', 0); +-- 8988 Más componentes importantes +-- https://es.classic.wowhead.com/quest=8988 +SET @ID := 8988; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c ¿Has regresado ya con lo que te envié a recoger?', 0), +(@ID, 'esMX', '$c ¿Has regresado ya con lo que te envié a recoger?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Un trabajo bien hecho, $n. Imbuiré la esencia de las cenizas en el blandón.$B$BAhora todo lo que queda es entrar en Scholomance, en la cámara de Ras Murmuhielo, y usar el blandón para invocar el espíritu de mi antiguo cohorte, Kormok. La pieza del amuleto y el espíritu de Valthalak en su interior lo han corrompido aún más, y no descansará hasta que se lo quites por la fuerza.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la isla de Alcaz, así que te las convertí en pociones. ¡Elige una!', 0), +(@ID, 'esMX', 'Un trabajo bien hecho, $n. Imbuiré la esencia de las cenizas en el blandón.$B$BAhora todo lo que queda es entrar en Scholomance, en la cámara de Ras Murmuhielo, y usar el blandón para invocar el espíritu de mi antiguo cohorte, Kormok. La pieza del amuleto y el espíritu de Valthalak en su interior lo han corrompido aún más, y no descansará hasta que se lo quites por la fuerza.$B$BOh, por cierto, me sobraron algunas algas de sangre de tu viaje a la isla de Alcaz, así que te las convertí en pociones. ¡Elige una!', 0); +-- 8989 La parte derecha del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8989 +SET @ID := 8989; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Entonces está hecho? ¿Ha recuperado la parte derecha del amuleto de Lord Valthalak, has unido el amuleto en un todo y finalmente has puesto a descansar el espíritu de mi antiguo compañero, Mor Pezuña Gris?', 0), +(@ID, 'esMX', '¿Entonces está hecho? ¿Ha recuperado la parte derecha del amuleto de Lord Valthalak, has unido el amuleto en un todo y finalmente has puesto a descansar el espíritu de mi antiguo compañero, Mor Pezuña Gris?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias por ayudar a Mor Pezuña Gris, $n. Otro espíritu descansa en paz, ¡y ahora tenemos el amuleto reensamblado! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes ser recolectar y traerlos aquí.', 0), +(@ID, 'esMX', 'Gracias por ayudar a Mor Pezuña Gris, $n. Otro espíritu descansa en paz, ¡y ahora tenemos el amuleto reensamblado! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes ser recolectar y traerlos aquí.', 0); +-- 8990 La parte derecha del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8990 +SET @ID := 8990; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Seguramente aún no te has ocupado de la salvación del espíritu de Isalien y la recuperación de la parte derecha del amuleto de Lord Valthalak, $n. Asegúrate de volver a combinar las piezas del amuleto antes de dármelo.', 0), +(@ID, 'esMX', 'Seguramente aún no te has ocupado de la salvación del espíritu de Isalien y la recuperación de la parte derecha del amuleto de Lord Valthalak, $n. Asegúrate de volver a combinar las piezas del amuleto antes de dármelo.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias, $n, por hacer descansar el espíritu de Isalien. Ahora, tal vez, encontrará la paz con su diosa. ¡Y también tenemos el amuleto reensamblado! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes recolectar y traer hasta aquí.', 0), +(@ID, 'esMX', 'Gracias, $n, por hacer descansar el espíritu de Isalien. Ahora, tal vez, encontrará la paz con su diosa. ¡Y también tenemos el amuleto reensamblado! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes recolectar y traer hasta aquí.', 0); +-- 8991 La parte derecha del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8991 +SET @ID := 8991; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$c, ¿Esto significa que ya has puesto a descansar las almas de esos dos tontos y has recombinado las piezas del amuleto de Lord Valthalak?', 0), +(@ID, 'esMX', '$c, ¿Esto significa que ya has puesto a descansar las almas de esos dos tontos y has recombinado las piezas del amuleto de Lord Valthalak?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Supongo que es lo mejor que las almas de esos dos finalmente hayan descansado, incluso si no me agradaron mientras estaban vivos. En cualquier caso, tenemos lo que buscábamos, ¡y ahora el amuleto está reensamblado! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes recolectar y traers de regreso aquí.', 0), +(@ID, 'esMX', 'Supongo que es lo mejor que las almas de esos dos finalmente hayan descansado, incluso si no me agradaron mientras estaban vivos. En cualquier caso, tenemos lo que buscábamos, ¡y ahora el amuleto está reensamblado! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes recolectar y traers de regreso aquí.', 0); +-- 8992 La parte derecha del amuleto de Lord Valthalak +-- https://es.classic.wowhead.com/quest=8992 +SET @ID := 8992; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te felicito, $n, si has regresado con el amuleto completo. Sin embargo, si no es así, ocúpate de eso, ya que no hay tiempo que perder, ¡te lo aseguro!', 0), +(@ID, 'esMX', 'Te felicito, $n, si has regresado con el amuleto completo. Sin embargo, si no es así, ocúpate de eso, ya que no hay tiempo que perder, ¡te lo aseguro!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buen trabajo, $n! Kormok no fue tan malo para un ogro, al menos no mientras aún estaba vivo, así que espero que obtenga el descanso que se merece. ¡Y ahora tenemos el amuleto completo! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes recolectar y traer de regreso aquí.', 0), +(@ID, 'esMX', '¡Buen trabajo, $n! Kormok no fue tan malo para un ogro, al menos no mientras aún estaba vivo, así que espero que obtenga el descanso que se merece. ¡Y ahora tenemos el amuleto completo! Pero todavía tenemos la prueba más difícil por delante.$B$BPara que el blandón esté en sintonía con la llamada de Lord Valthalak, hay algunos elementos más que debes recolectar y traer de regreso aquí.', 0); +-- 8993 Ofrecer regalos +-- https://es.classic.wowhead.com/quest=8993 +SET @ID := 8993; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Magnífico! Lo pondré con los demás regalos.$B$B¡No esperaba tantos! Desde luego, sabéis cómo honrar a los jefes.$B$BBueno, uno más para la lista...', 0), +(@ID, 'esMX', '¡Magnífico! Lo pondré con los demás regalos.$B$B¡No esperaba tantos! Desde luego, sabéis cómo honrar a los jefes.$B$BBueno, uno más para la lista...', 0); +-- 8994 Últimos preparativos +-- https://es.classic.wowhead.com/quest=8994 +SET @ID := 8994; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hemos recorrido un largo camino, $n, y solo quería decir que pase lo que pase, ¡gracias! Te has puesto en peligro de muerte para tratar de ayudar a los miembros supervivientes de nuestra compañía mercenaria, La Hoja Velada, y en lo que a mí respecta, ahora eres uno de nosotros.', 0), +(@ID, 'esMX', 'Hemos recorrido un largo camino, $n, y solo quería decir que pase lo que pase, ¡gracias! Te has puesto en peligro de muerte para tratar de ayudar a los miembros supervivientes de nuestra compañía mercenaria, La Hoja Velada, y en lo que a mí respecta, ahora eres uno de nosotros.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eso es. Extraeré el metal de los brazaletes e impregnaré el blandón con estos componentes finales. Entonces estará listo para que convoques a Lord Valthalak y, finalmente, le devuelvas su amuleto espiritual.$B$BHas recorrido una gran distancia, $n, ¡no vaciles ahora que el final está a la vista!', 0), +(@ID, 'esMX', 'Eso es. Extraeré el metal de los brazaletes e impregnaré el blandón con estos componentes finales. Entonces estará listo para que convoques a Lord Valthalak y, finalmente, le devuelvas su amuleto espiritual.$B$BHas recorrido una gran distancia, $n, ¡no vaciles ahora que el final está a la vista!', 0); +-- 8995 Mea Culpa, Lord Valthalak +-- https://es.classic.wowhead.com/quest=8995 +SET @ID := 8995; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$n, ¡te atreves a perturbar mi descanso!', 0), +(@ID, 'esMX', '$n, ¡te atreves a perturbar mi descanso!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Qué suerte para ti que sé que no eres parte del grupo original que me robó esto.$B$B¡Recuperaré lo que es mío ahora, mortal! ¡Dame el amuleto!', 0), +(@ID, 'esMX', 'Qué suerte para ti que sé que no eres parte del grupo original que me robó esto.$B$B¡Recuperaré lo que es mío ahora, mortal! ¡Dame el amuleto!', 0); +-- 8996 Regresa junto a Bodley +-- https://es.classic.wowhead.com/quest=8996 +SET @ID := 8996; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$n, ¡has vuelto y sigues con vida! Bueno, al menos eso te convierte en uno de nosotros.$B$B¡Vas a tener que contármelo todo!', 0), +(@ID, 'esMX', '$n, ¡has vuelto y sigues con vida! Bueno, al menos eso te convierte en uno de nosotros.$B$B¡Vas a tener que contármelo todo!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Realmente dijo todo eso? Vaya, no puedo creer que vaya a despedir a los asesinos espectrales y acechadores, incluso si insinuó que causaría más daño a mis compañeros vivos en el futuro.$B$B¡Este es un gran día, $n! Has logrado lo que pocos pudieron y nos has absuelto al menos en parte de algunos de nuestros pecados pasados.$B$B¡Gracias! Como muestra de agradecimiento, me gustaría darte esto. Puedes usarlo para convocar espíritus en los mismos lugares encantados que ya conoces, y también en algunos otros.', 0), +(@ID, 'esMX', '¿Realmente dijo todo eso? Vaya, no puedo creer que vaya a despedir a los asesinos espectrales y acechadores, incluso si insinuó que causaría más daño a mis compañeros vivos en el futuro.$B$B¡Este es un gran día, $n! Has logrado lo que pocos pudieron y nos has absuelto al menos en parte de algunos de nuestros pecados pasados.$B$B¡Gracias! Como muestra de agradecimiento, me gustaría darte esto. Puedes usarlo para convocar espíritus en los mismos lugares encantados que ya conoces, y también en algunos otros.', 0); +-- 8997 Regreso al principio +-- https://es.classic.wowhead.com/quest=8997 +SET @ID := 8997; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estoy muy feliz de verte regresar a mí $gsano y salvo:sana y salva;, $n. Te ves bien, si no un poco peor por el desgaste.$B$BVen, cuéntame todo lo que ha sucedido.', 0), +(@ID, 'esMX', 'Estoy muy feliz de verte regresar a mí $gsano y salvo:sana y salva;, $n. Te ves bien, si no un poco peor por el desgaste.$B$BVen, cuéntame todo lo que ha sucedido.', 0); +-- 8998 Regreso al principio +-- https://es.classic.wowhead.com/quest=8998 +SET @ID := 8998; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me alegra ver que has sobrevivido, $n. Te ves bien, si no un poco más $gcansado:cansada;.$B$BVen, cuéntame todo lo que ha sucedido.', 0), +(@ID, 'esMX', 'Me alegra ver que has sobrevivido, $n. Te ves bien, si no un poco más $gcansado:cansada;.$B$BVen, cuéntame todo lo que ha sucedido.', 0); +-- 8999 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=8999 +SET @ID := 8999; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De acuerdo con nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Corazón Salvaje a cambio de tu nuevo jubón y capucha Cueroferal?', 0), +(@ID, 'esMX', 'De acuerdo con nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Corazón Salvaje a cambio de tu nuevo jubón y capucha Cueroferal?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9000 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9000 +SET @ID := 9000; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Acechabestias a cambio de tu nuevo almete y manto de maestro de bestias?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Acechabestias a cambio de tu nuevo almete y manto de maestro de bestias?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9001 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9001 +SET @ID := 9001; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar las piezas de tu magister a cambio de tu nueva corona y toga de hechicero?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar las piezas de tu magister a cambio de tu nueva corona y toga de hechicero?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9002 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9002 +SET @ID := 9002; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas Forjaluz a cambio de tu nuevo casco y coraza Forjaalma?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas Forjaluz a cambio de tu nuevo casco y coraza Forjaalma?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9003 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9003 +SET @ID := 9003; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de devoto a cambio de tu nueva corona y túnica virtuosas?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de devoto a cambio de tu nueva corona y túnica virtuosas?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9004 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9004 +SET @ID := 9004; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de arte sombrío a cambio de tu nueva almete y túnica Mantoscuro?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de arte sombrío a cambio de tu nueva almete y túnica Mantoscuro?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9005 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9005 +SET @ID := 9005; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de calígine a cambio de tu nueva máscara y túnica de Brumamorta?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de calígine a cambio de tu nueva máscara y túnica de Brumamorta?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9006 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9006 +SET @ID := 9006; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Valor a cambio de tu nuevo Yelmo y Peto de heroísmo?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Valor a cambio de tu nuevo Yelmo y Peto de heroísmo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0), +(@ID, 'esMX', 'Te voy a extrañar, $n. Te debo una gran deuda de gratitud; Creo que nunca podré devolverlo.$B$BEspero que disfrutes de tu nueva armadura para la cabeza y el pecho, y que te proteja durante mucho tiempo.', 0); +-- 9007 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9007 +SET @ID := 9007; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'De acuerdo con nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Corazón Salvaje a cambio de tu nuevo chaleco y capucha de Cueroferal?', 0), +(@ID, 'esMX', 'De acuerdo con nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Corazón Salvaje a cambio de tu nuevo chaleco y capucha de Cueroferal?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9008 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9008 +SET @ID := 9008; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de acechabestias a cambio de tu nueva gorra y túnica de maestro de bestias?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de acechabestias a cambio de tu nueva gorra y túnica de maestro de bestias?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9009 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9009 +SET @ID := 9009; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de devoto a cambio de tu nueva corona y túnica virtuosas?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de devoto a cambio de tu nueva corona y túnica virtuosas?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9010 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9010 +SET @ID := 9010; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de arte sombrío a cambio de tu nueva gorra y túnica Mantoscuro?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de arte sombrío a cambio de tu nueva gorra y túnica Mantoscuro?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9011 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9011 +SET @ID := 9011; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de elementos a cambio de tu nueva Almófar y Jubón de los Cinco Truenos?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de elementos a cambio de tu nueva Almófar y Jubón de los Cinco Truenos?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9012 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9012 +SET @ID := 9012; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas calígine a cambio de tu nueva Máscara y Toga Brumamorta?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas calígine a cambio de tu nueva Máscara y Toga Brumamorta?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9013 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9013 +SET @ID := 9013; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Valor a cambio de tu nuevo Yelmo y Coraza de heroísmo?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar tus piezas de Valor a cambio de tu nuevo Yelmo y Coraza de heroísmo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); + +-- 9014 Guardar lo mejor para el final +-- https://es.classic.wowhead.com/quest=9014 +SET @ID := 9014; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Según nuestro trato, ¿estás $glisto:lista; para entregar las piezas de magister a cambio de tu nueva corona y toga de hechicero?', 0), +(@ID, 'esMX', 'Según nuestro trato, ¿estás $glisto:lista; para entregar las piezas de magister a cambio de tu nueva corona y toga de hechicero?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0), +(@ID, 'esMX', 'Realmente te extrañaré, $n. Tengo una deuda contigo y que tal vez nunca pueda pagar.$B$BDisfruta de tu nueva armadura para la cabeza y el pecho. ¡Que te proteja durante mucho tiempo y te ayude a alcanzar un honor aún mayor!', 0); +-- 9015 El reto +-- https://es.classic.wowhead.com/quest=9015 +SET @ID := 9015; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Equipo de Theldren derrotado', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Has vuelto, $n!', 0), +(@ID, 'esMX', '¡Has vuelto, $n!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has recuperado parte del medallón, $n?', 0), +(@ID, 'esMX', '¿Has recuperado parte del medallón, $n?', 0); +-- 9023 El veneno perfecto +-- https://es.classic.wowhead.com/quest=9023 +SET @ID := 9023; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Será mejor que lleves compañía para este trabajo, $n.', 0), +(@ID, 'esMX', 'Será mejor que lleves compañía para este trabajo, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Tienes la gratitud de Ravenholdt! ¡Elige lo que quieras!', 0), +(@ID, 'esMX', '¡Tienes la gratitud de Ravenholdt! ¡Elige lo que quieras!', 0); +-- 9024 El presentimiento de Aristan +-- https://es.classic.wowhead.com/quest=9024 +SET @ID := 9024; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Puedo ayudarte en algo?', 0), +(@ID, 'esMX', '¿Puedo ayudarte en algo?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Entiendo a Aristan, pero creo que exagera. Me parece que ha olvidado lo que es ser joven y ardiente.$B$BPero no se lo vayas a decir; no creo que se lo tomara bien.', 0), +(@ID, 'esMX', 'Entiendo a Aristan, pero creo que exagera. Me parece que ha olvidado lo que es ser joven y ardiente.$B$BPero no se lo vayas a decir; no creo que se lo tomara bien.', 0); +-- 9025 El descubrimiento de Morgan +-- https://es.classic.wowhead.com/quest=9025 +SET @ID := 9025; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Me inquieta sobremanera comprobar que mis sospechas eran correctas. Debemos ser cautos.$B$BTen, por el perfume y la colonia.', 0), +(@ID, 'esMX', 'Me inquieta sobremanera comprobar que mis sospechas eran correctas. Debemos ser cautos.$B$BTen, por el perfume y la colonia.', 0); +-- 9026 Rastrear la fuente +-- https://es.classic.wowhead.com/quest=9026 +SET @ID := 9026; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, acabo de recibir el perfume y la colonia y se venden muy bien; vamos, me los quitan de las manos.$B$BLa verdad es que es un poco aburrido, ahora todo el mundo huele igual.', 0), +(@ID, 'esMX', 'Sí, acabo de recibir el perfume y la colonia y se venden muy bien; vamos, me los quitan de las manos.$B$BLa verdad es que es un poco aburrido, ahora todo el mundo huele igual.', 0); +-- 9027 Rastrear la fuente +-- https://es.classic.wowhead.com/quest=9027 +SET @ID := 9027; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, estas fragancias son el éxito de la temporada; no deja de venir gente preguntando por ellas.$B$BAquí se han agotado las existencias; prueba con Allison, la posadera de La Rosa Áurea.$B$BPero date prisa; te digo que esas fragancias son irresistibles.', 0), +(@ID, 'esMX', 'Sí, estas fragancias son el éxito de la temporada; no deja de venir gente preguntando por ellas.$B$BAquí se han agotado las existencias; prueba con Allison, la posadera de La Rosa Áurea.$B$BPero date prisa; te digo que esas fragancias son irresistibles.', 0); +-- 9028 El descubrimiento de la fuente +-- https://es.classic.wowhead.com/quest=9028 +SET @ID := 9028; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, yo creé esas fragancias. ¿A que son magníficas?$B$BLos soldados de la Alianza y de la Horda estarán tan distraídos con sus amoríos que no podrán detener el avance del Consejo de la Sombra.$B$BEstarán debilitados y desprevenidos.$B$BEs un truco tan sencillo que no comprendo cómo no se me ocurrió antes. Y tú no puedes hacer nada para evitarlo.', 0), +(@ID, 'esMX', 'Sí, yo creé esas fragancias. ¿A que son magníficas?$B$BLos soldados de la Alianza y de la Horda estarán tan distraídos con sus amoríos que no podrán detener el avance del Consejo de la Sombra.$B$BEstarán debilitados y desprevenidos.$B$BEs un truco tan sencillo que no comprendo cómo no se me ocurrió antes. Y tú no puedes hacer nada para evitarlo.', 0); +-- 9029 Una caldera burbujeante +-- https://es.classic.wowhead.com/quest=9029 +SET @ID := 9029; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Del caldero emana un aroma agradable.', 0), +(@ID, 'esMX', 'Del caldero emana un aroma agradable.', 0); +-- 9033 Ecos de Guerra +-- https://es.classic.wowhead.com/quest=9033 +SET @ID := 9033; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Deber, honor, dedicación... ¿Qué significan estas palabras para ti?', 0), +(@ID, 'esMX', 'Deber, honor, dedicación... ¿Qué significan estas palabras para ti?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buen trabajo! Recibirás tu recompensa mediante los servicios de los habitantes de la Capilla de la Esperanza de la Luz.', 0), +(@ID, 'esMX', '¡Buen trabajo! Recibirás tu recompensa mediante los servicios de los habitantes de la Capilla de la Esperanza de la Luz.', 0); +-- 9034 La coraza acorator +-- https://es.classic.wowhead.com/quest=9034 +SET @ID := 9034; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una coraza acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una coraza acorator.', 0); +-- 9036 Los quijotes acorator +-- https://es.classic.wowhead.com/quest=9036 +SET @ID := 9036; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos quijotes acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos quijotes acorator.', 0); +-- 9037 El casco acorator +-- https://es.classic.wowhead.com/quest=9037 +SET @ID := 9037; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un casco acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un casco acorator.', 0); +-- 9038 Los espaldares acorator +-- https://es.classic.wowhead.com/quest=9038 +SET @ID := 9038; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos espaldares acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos espaldares acorator.', 0); +-- 9039 Los escarpes acorator +-- https://es.classic.wowhead.com/quest=9039 +SET @ID := 9039; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos escarpes acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos escarpes acorator.', 0); +-- 9040 Los guanteletes acorator +-- https://es.classic.wowhead.com/quest=9040 +SET @ID := 9040; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos guanteletes acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos guanteletes acorator.', 0); +-- 9041 Los guardarrenes acorator +-- https://es.classic.wowhead.com/quest=9041 +SET @ID := 9041; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos guardarrenes acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos guardarrenes acorator.', 0); +-- 9042 Los brazales acorator +-- https://es.classic.wowhead.com/quest=9042 +SET @ID := 9042; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos brazales acorator.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos brazales acorator.', 0); +-- 9043 La túnica de redención +-- https://es.classic.wowhead.com/quest=9043 +SET @ID := 9043; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Guerrera de redención.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Guerrera de redención.', 0); +-- 9044 Las musleras de redención +-- https://es.classic.wowhead.com/quest=9044 +SET @ID := 9044; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Musleras de redención.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Musleras de redención.', 0); +-- 9045 La celada de redención +-- https://es.classic.wowhead.com/quest=9045 +SET @ID := 9045; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$BMantenla cubierta, $n.', 0), +(@ID, 'esMX', '$B$BMantenla cubierta, $n.', 0); +-- 9046 Las bufas de redención +-- https://es.classic.wowhead.com/quest=9046 +SET @ID := 9046; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿No ves que estamos en medio de algo, $n?', 0), +(@ID, 'esMX', '¿No ves que estamos en medio de algo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Cualquier $c te dirá que la mayor parte de su poder proviene de los hombros. Cuanto más grande, mejor...', 0), +(@ID, 'esMX', 'Cualquier $c te dirá que la mayor parte de su poder proviene de los hombros. Cuanto más grande, mejor...', 0); +-- 9047 Las botas de redención +-- https://es.classic.wowhead.com/quest=9047 +SET @ID := 9047; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0), +(@ID, 'esMX', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estas botas protegerán tus pies contra los ataques de la Plaga.', 0), +(@ID, 'esMX', 'Estas botas protegerán tus pies contra los ataques de la Plaga.', 0); +-- 9048 Las manoplas de redención +-- https://es.classic.wowhead.com/quest=9048 +SET @ID := 9048; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0), +(@ID, 'esMX', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Deja que la Luz atraviese estas manoplas y derribe a tus enemigos!', 0), +(@ID, 'esMX', '¡Deja que la Luz atraviese estas manoplas y derribe a tus enemigos!', 0); +-- 9049 La faja de redención +-- https://es.classic.wowhead.com/quest=9049 +SET @ID := 9049; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0), +(@ID, 'esMX', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Esta faja tendrá dos funciones: 1) Te protegerá y te guiará contra la Plaga y 2) Te hará lucir 10 kilos más $gliviano:liviana;.', 0), +(@ID, 'esMX', 'Esta faja tendrá dos funciones: 1) Te protegerá y te guiará contra la Plaga y 2) Te hará lucir 10 kilos más $gliviano:liviana;.', 0); +-- 9050 Los guardamuñecas de redención +-- https://es.classic.wowhead.com/quest=9050 +SET @ID := 9050; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0), +(@ID, 'esMX', 'Debes proporcionarme lo que te he pedido si voy a empezar a crear.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos son excepcionalmente rentables de construir, pero ten en cuenta que pueden oxidarse si los salpica demasiado.', 0), +(@ID, 'esMX', 'Estos son excepcionalmente rentables de construir, pero ten en cuenta que pueden oxidarse si los salpica demasiado.', 0); +-- 9051 Prueba de toxicidad +-- https://es.classic.wowhead.com/quest=9051 +SET @ID := 9051; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Pudiste pacificar a la gran bestia?', 0), +(@ID, 'esMX', '¿Pudiste pacificar a la gran bestia?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$n, gracias por tu valentía y saber hacer.$B$BDime, ¿qué efecto ha tenido la toxina en el demosaurio?', 0), +(@ID, 'esMX', '$n, gracias por tu valentía y saber hacer.$B$BDime, ¿qué efecto ha tenido la toxina en el demosaurio?', 0); +-- 9052 Veneno de Sangrepétalo +-- https://es.classic.wowhead.com/quest=9052 +SET @ID := 9052; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has tenido éxito?', 0), +(@ID, 'esMX', '¿Has tenido éxito?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Al fin los ingredientes!$B$BCon esto y la tierra de Un\'Goro, no tendré problemas para preparar la toxina.', 0), +(@ID, 'esMX', '¡Al fin los ingredientes!$B$BCon esto y la tierra de Un\'Goro, no tendré problemas para preparar la toxina.', 0); +-- 9053 Un ingrediente mejor +-- https://es.classic.wowhead.com/quest=9053 +SET @ID := 9053; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has recuperado la vid?', 0), +(@ID, 'esMX', '¿Has recuperado la vid?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Por fin, la toxina se puede crear por completo. No me atrevo a pedirte que se lo vuelvas a aplicar a la criatura, ya te he pedido demasiado.$B$BTienes mi agradecimiento y respeto. Que te vaya bien en tus viajes, $n.', 0), +(@ID, 'esMX', 'Por fin, la toxina se puede crear por completo. No me atrevo a pedirte que se lo vuelvas a aplicar a la criatura, ya te he pedido demasiado.$B$BTienes mi agradecimiento y respeto. Que te vaya bien en tus viajes, $n.', 0); +-- 9054 La guerrera de acechacriptas +-- https://es.classic.wowhead.com/quest=9054 +SET @ID := 9054; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes los artículos que pedí, $c?', 0), +(@ID, 'esMX', '¿Tienes los artículos que pedí, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ellos te temerán, $n.', 0), +(@ID, 'esMX', 'Ellos te temerán, $n.', 0); +-- 9055 Las musleras de acechacriptas +-- https://es.classic.wowhead.com/quest=9055 +SET @ID := 9055; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes los artículos que pedí, $c?', 0), +(@ID, 'esMX', '¿Tienes los artículos que pedí, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'A medida que te pongas esta armadura, notarás que tu personalidad está cambiando. Obtendrás una habilidad sobrenatural para matar. Quizás, incluso, ansia de sangre.$B$BQue se sepa que no seré responsable del caos que puedas causar...', 0), +(@ID, 'esMX', 'A medida que te pongas esta armadura, notarás que tu personalidad está cambiando. Obtendrás una habilidad sobrenatural para matar. Quizás, incluso, ansia de sangre.$B$BQue se sepa que no seré responsable del caos que puedas causar...', 0); +-- 9056 La celada de acechacriptas +-- https://es.classic.wowhead.com/quest=9056 +SET @ID := 9056; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Tienes los artículos que pedí, $c?', 0), +(@ID, 'esMX', '¿Tienes los artículos que pedí, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te estás convirtiendo en una criatura temible, $n.', 0), +(@ID, 'esMX', 'Te estás convirtiendo en una criatura temible, $n.', 0); +-- 9057 Las bufas de acechacriptas +-- https://es.classic.wowhead.com/quest=9057 +SET @ID := 9057; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Bufas de acechacriptas.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Bufas de acechacriptas.', 0); +-- 9058 Las botas de acechacriptas +-- https://es.classic.wowhead.com/quest=9058 +SET @ID := 9058; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Botas de acechacriptas.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Botas de acechacriptas.', 0); diff --git a/data/sql/updates/pending_db_world/rev_1619817090623034700.sql b/data/sql/updates/pending_db_world/rev_1619817090623034700.sql new file mode 100644 index 0000000000..758dc7090a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619817090623034700.sql @@ -0,0 +1,729 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619817090623034700'); + +-- 9059 Las manoplas de acechacriptas +-- https://es.classic.wowhead.com/quest=9059 +SET @ID := 9059; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Manoplas de acechacriptas.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Manoplas de acechacriptas.', 0); +-- 9060 La faja de acechacriptas +-- https://es.classic.wowhead.com/quest=9060 +SET @ID := 9060; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Faja de acechacriptas.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Faja de acechacriptas.', 0); +-- 9061 Los guardamuñecas de acechacriptas +-- https://es.classic.wowhead.com/quest=9061 +SET @ID := 9061; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unos Guardamuñecas de acechacriptas.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unos Guardamuñecas de acechacriptas.', 0); +-- 9063 Torwa Abrecaminos +-- https://es.classic.wowhead.com/quest=9063 +SET @ID := 9063; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has hecho un largo camino para venir a verme, $c, y has llegado justo a tiempo.', 0), +(@ID, 'esMX', 'Has hecho un largo camino para venir a verme, $c, y has llegado justo a tiempo.', 0); +-- 9068 La guerrera Rompeterra +-- https://es.classic.wowhead.com/quest=9068 +SET @ID := 9068; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Guerrera Rompeterra.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Guerrera Rompeterra.', 0); +-- 9069 Las musleras Rompeterra +-- https://es.classic.wowhead.com/quest=9069 +SET @ID := 9069; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Musleras Rompeterra.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Musleras Rompeterra.', 0); +-- 9070 La celada Rompeterra +-- https://es.classic.wowhead.com/quest=9070 +SET @ID := 9070; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Celada Rompeterra.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Celada Rompeterra.', 0); +-- 9071 Las bufas Rompeterra +-- https://es.classic.wowhead.com/quest=9071 +SET @ID := 9071; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Bufas Rompeterra.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Bufas Rompeterra.', 0); +-- 9072 Las botas Rompeterra +-- https://es.classic.wowhead.com/quest=9072 +SET @ID := 9072; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Botas Rompeterra.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Botas Rompeterra.', 0); +-- 9073 Las manoplas Rompeterra +-- https://es.classic.wowhead.com/quest=9073 +SET @ID := 9073; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me has traído lo que necesito?', 0), +(@ID, 'esMX', '¿Me has traído lo que necesito?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Estas manoplas canalizan el poder de los elementos!', 0), +(@ID, 'esMX', '¡Estas manoplas canalizan el poder de los elementos!', 0); +-- 9074 La faja Rompeterra +-- https://es.classic.wowhead.com/quest=9074 +SET @ID := 9074; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Faja Rompeterra.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Faja Rompeterra.', 0); +-- 9075 Los guardamuñecas Rompeterra +-- https://es.classic.wowhead.com/quest=9075 +SET @ID := 9075; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me has traído lo que necesito?', 0), +(@ID, 'esMX', '¿Me has traído lo que necesito?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los guardamuñecas están listos, $n.$B$B', 0), +(@ID, 'esMX', 'Los guardamuñecas están listos, $n.$B$B', 0); +-- 9076 El jefe de los desdichados +-- https://es.wowhead.com/quest=9076 +SET @ID := 9076; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me traes la cabeza? No tengo tiempo que perder, $n.', 0), +(@ID, 'esMX', '¿Me traes la cabeza? No tengo tiempo que perder, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Lo derrotaste! Claro que mis hombres lo habían ablandado un poco antes.$B$BEs broma, $c. Lo hiciste muy bien. No te metas en líos y te harás de una buena reputación.', 0), +(@ID, 'esMX', '¡Lo derrotaste! Claro que mis hombres lo habían ablandado un poco antes.$B$BEs broma, $c. Lo hiciste muy bien. No te metas en líos y te harás de una buena reputación.', 0); +-- 9077 La coraza Segahuesos +-- https://es.classic.wowhead.com/quest=9077 +SET @ID := 9077; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Coraza Segahuesos.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer una Coraza Segahuesos.', 0); +-- 9078 Los quijotes Segahuesos +-- https://es.classic.wowhead.com/quest=9078 +SET @ID := 9078; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$BMe acabo de dar cuenta de la ironía de todo esto.', 0), +(@ID, 'esMX', '$B$BMe acabo de dar cuenta de la ironía de todo esto.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ten cuidado al caminar con esas cosas. Puedes cortarte.', 0), +(@ID, 'esMX', 'Ten cuidado al caminar con esas cosas. Puedes cortarte.', 0); +-- 9079 El casco Segahuesos +-- https://es.classic.wowhead.com/quest=9079 +SET @ID := 9079; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer un Casco Segahuesos.', 0), +(@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer un Casco Segahuesos.', 0); +-- 9080 Los espaldares Segahuesos +-- https://es.classic.wowhead.com/quest=9080 +SET @ID := 9080; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¿Has estado en Mano de Tyr últimamente?', 0), +(@ID, 'esMX', '$B$B¿Has estado en Mano de Tyr últimamente?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '.$B$B¡Estos hombros requirieron algo de trabajo! No salgas y te maten como a un matorral, $n.', 0), +(@ID, 'esMX', '.$B$B¡Estos hombros requirieron algo de trabajo! No salgas y te maten como a un matorral, $n.', 0); +-- 9081 Los escarpes Segahuesos +-- https://es.classic.wowhead.com/quest=9081 +SET @ID := 9081; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Solo tráeme los materiales y deja de perder mi tiempo, $n.', 0), +(@ID, 'esMX', 'Solo tráeme los materiales y deja de perder mi tiempo, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Se ponen el los pies. Dime, no has vuelto a husmear en la Mano de Tyr, ¿verdad?', 0), +(@ID, 'esMX', 'Se ponen el los pies. Dime, no has vuelto a husmear en la Mano de Tyr, ¿verdad?', 0); +-- 9082 Los guanteletes Segahuesos +-- https://es.classic.wowhead.com/quest=9082 +SET @ID := 9082; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Cómo esperas que haga algo sin los elementos que te pedí?', 0), +(@ID, 'esMX', '¿Cómo esperas que haga algo sin los elementos que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos guanteletes podrían usarlos como armas si fuera necesario. ¡Úsalos con orgullo!', 0), +(@ID, 'esMX', 'Estos guanteletes podrían usarlos como armas si fuera necesario. ¡Úsalos con orgullo!', 0); +-- 9083 Los guardarrenes Segahuesos +-- https://es.classic.wowhead.com/quest=9083 +SET @ID := 9083; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Cómo esperas que haga algo sin los elementos que te pedí?', 0), +(@ID, 'esMX', '¿Cómo esperas que haga algo sin los elementos que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El cinturón está listo, $n. ¿Alguna vez has visto un artículo de tan alta calidad vendido por tan poco?', 0), +(@ID, 'esMX', 'El cinturón está listo, $n. ¿Alguna vez has visto un artículo de tan alta calidad vendido por tan poco?', 0); +-- 9084 Los brazales Segahuesos +-- https://es.classic.wowhead.com/quest=9084 +SET @ID := 9084; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Cómo esperas que haga algo sin los elementos que te pedí?', 0), +(@ID, 'esMX', '¿Cómo esperas que haga algo sin los elementos que te pedí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los brazaletes están listos, $n.$B$B', 0), +(@ID, 'esMX', 'Los brazaletes están listos, $n.$B$B', 0); +-- 9085 Sombras del Apocalipsis +-- https://es.classic.wowhead.com/quest=9085 +SET @ID := 9085; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has tenido suerte, $n?', 0), +(@ID, 'esMX', '¿Has tenido suerte, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Excelente trabajo, $n. Con las sombras destruidas, nuestra esperanza de victoria contra el Rey Exánime sobrevive.', 0), +(@ID, 'esMX', 'Excelente trabajo, $n. Con las sombras destruidas, nuestra esperanza de victoria contra el Rey Exánime sobrevive.', 0); +-- 9086 La guerrera Caminasueños +-- https://es.classic.wowhead.com/quest=9086 +SET @ID := 9086; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tu Guerrera Caminasueños está lista, $n.', 0), +(@ID, 'esMX', 'Tu Guerrera Caminasueños está lista, $n.', 0); +-- 9087 Las musleras Caminasueños +-- https://es.classic.wowhead.com/quest=9087 +SET @ID := 9087; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Como prometí, Musleras Caminasueños.$B$B', 0), +(@ID, 'esMX', 'Como prometí, Musleras Caminasueños.$B$B', 0); +-- 9088 La celada Caminasueños +-- https://es.classic.wowhead.com/quest=9088 +SET @ID := 9088; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tu Celada Caminasueños está lista, $n.', 0), +(@ID, 'esMX', 'Tu Celada Caminasueños está lista, $n.', 0); +-- 9089 Las bufas Caminasueños +-- https://es.classic.wowhead.com/quest=9089 +SET @ID := 9089; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tus Bufas Caminasueños están listas, $n.', 0), +(@ID, 'esMX', 'Tus Bufas Caminasueños están listas, $n.', 0); +-- 9090 Las botas Caminasueños +-- https://es.classic.wowhead.com/quest=9090 +SET @ID := 9090; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tus Botas Caminasueños están listas, $n.', 0), +(@ID, 'esMX', 'Tus Botas Caminasueños están listas, $n.', 0); +-- 9091 Las manoplas Caminasueños +-- https://es.classic.wowhead.com/quest=9091 +SET @ID := 9091; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tus Manoplas Caminasueños están listas, $n.', 0), +(@ID, 'esMX', 'Tus Manoplas Caminasueños están listas, $n.', 0); +-- 9092 La faja Caminasueños +-- https://es.classic.wowhead.com/quest=9092 +SET @ID := 9092; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tu Faja Caminasueños está lista, $n.', 0), +(@ID, 'esMX', 'Tu Faja Caminasueños está lista, $n.', 0); +-- 9093 Los guardamuñecas Caminasueños +-- https://es.classic.wowhead.com/quest=9093 +SET @ID := 9093; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'El costo del material es alto, pero pronto lo olvidarás.', 0), +(@ID, 'esMX', 'El costo del material es alto, pero pronto lo olvidarás.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tus Guardamuñecas Caminasueños están listos, $n.', 0), +(@ID, 'esMX', 'Tus Guardamuñecas Caminasueños están listos, $n.', 0); +-- 9095 La toga de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9095 +SET @ID := 9095; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Toga de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Toga de Fuego de Escarcha.', 0); +-- 9096 Los leotardos de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9096 +SET @ID := 9096; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Leotardos de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Leotardos de Fuego de Escarcha.', 0); +-- 9097 El aro de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9097 +SET @ID := 9097; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Aro de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Aro de Fuego de Escarcha.', 0); + +-- 9098 Las hombreras de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9098 +SET @ID := 9098; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Hombreras de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Hombreras de Fuego de Escarcha.', 0); +-- 9099 Los botines de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9099 +SET @ID := 9099; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Botines de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Botines de Fuego de Escarcha.', 0); +-- 9100 Los guantes de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9100 +SET @ID := 9100; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Guantes de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Guantes de Fuego de Escarcha.', 0); +-- 9101 El cinturón de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9101 +SET @ID := 9101; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Cinturón de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Cinturón de Fuego de Escarcha.', 0); +-- 9102 Las ataduras de Fuego de Escarcha +-- https://es.classic.wowhead.com/quest=9102 +SET @ID := 9102; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Ataduras de Fuego de Escarcha.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Ataduras de Fuego de Escarcha.', 0); +-- 9103 La toga corazón de la peste +-- https://es.classic.wowhead.com/quest=9103 +SET @ID := 9103; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Toga corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Toga corazón de peste.', 0); +-- 9104 Los leotardos corazón de la peste +-- https://es.classic.wowhead.com/quest=9104 +SET @ID := 9104; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Leotardos corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Leotardos corazón de peste.', 0); +-- 9105 El aro corazón de la peste +-- https://es.classic.wowhead.com/quest=9105 +SET @ID := 9105; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Aro corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Aro corazón de peste.', 0); +-- 9106 Las hombreras corazón de la peste +-- https://es.classic.wowhead.com/quest=9106 +SET @ID := 9106; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Hombreras corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Hombreras corazón de peste.', 0); +-- 9107 Los botines corazón de peste +-- https://es.classic.wowhead.com/quest=9107 +SET @ID := 9107; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Botines corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Botines corazón de peste.', 0); +-- 9108 Los guantes corazón de la peste +-- https://es.classic.wowhead.com/quest=9108 +SET @ID := 9108; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Guantes corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Guantes corazón de peste.', 0); +-- 9109 El cinturón corazón de la peste +-- https://es.classic.wowhead.com/quest=9109 +SET @ID := 9109; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Cinturón corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Cinturón corazón de peste.', 0); +-- 9110 Las ataduras corazón de la peste +-- https://es.classic.wowhead.com/quest=9110 +SET @ID := 9110; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Ataduras corazón de peste.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Ataduras corazón de peste.', 0); +-- 9111 La toga de fe +-- https://es.classic.wowhead.com/quest=9111 +SET @ID := 9111; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Toga de fe.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer una Toga de fe.', 0); +-- 9112 Los leotardos de fe +-- https://es.classic.wowhead.com/quest=9112 +SET @ID := 9112; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Leotardos de fe.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unos Leotardos de fe.', 0); +-- 9113 El aro de fe +-- https://es.classic.wowhead.com/quest=9113 +SET @ID := 9113; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Aro de fe.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Aro de fe.', 0); +-- 9114 Las hombreras de fe +-- https://es.classic.wowhead.com/quest=9114 +SET @ID := 9114; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me has traído los reactivos, $gniño:niña;?', 0), +(@ID, 'esMX', '¿Me has traído los reactivos, $gniño:niña;?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las vestiduras están listas, $n. Golpea a los que dañarían nuestro mundo con tu fuego justo.', 0), +(@ID, 'esMX', 'Las vestiduras están listas, $n. Golpea a los que dañarían nuestro mundo con tu fuego justo.', 0); +-- 9115 Los botines de fe +-- https://es.classic.wowhead.com/quest=9115 +SET @ID := 9115; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me has traído lo que necesito, $gniño:niña;?', 0), +(@ID, 'esMX', '¿Me has traído lo que necesito, $gniño:niña;?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las vestiduras están listas, $n. Golpea con tu fuejo justo a los que dañarían nuestro mundo.', 0), +(@ID, 'esMX', 'Las vestiduras están listas, $n. Golpea con tu fuejo justo a los que dañarían nuestro mundo.', 0); +-- 9116 Los guantes de fe +-- https://es.classic.wowhead.com/quest=9116 +SET @ID := 9116; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Me has traído lo que necesito, $gniño:niña;?', 0), +(@ID, 'esMX', '¿Me has traído lo que necesito, $gniño:niña;?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Las vestiduras están listas, $n. Golpea con tu fuejo justo a los que dañarían nuestro mundo.', 0), +(@ID, 'esMX', 'Las vestiduras están listas, $n. Golpea con tu fuejo justo a los que dañarían nuestro mundo.', 0); +-- 9117 El cinturón de fe +-- https://es.classic.wowhead.com/quest=9117 +SET @ID := 9117; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Cinturón de fe.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer un Cinturón de fe.', 0); +-- 9118 Las ataduras de fe +-- https://es.classic.wowhead.com/quest=9118 +SET @ID := 9118; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0), +(@ID, 'esMX', 'Te faltan algunas piezas para la misión, ¡por favor ve y consíguelas todas!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Ataduras de fe.', 0), +(@ID, 'esMX', '¡Excelente $n! obtuviste todo tal como te pedí y ahora puedo hacer unas Ataduras de fe.', 0); +-- 9120 La caída de Kel'Thuzad +-- https://es.classic.wowhead.com/quest=9120 +SET @ID := 9120; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'En todos mis días de vida, nunca hubiera esperado ver esto...$B$B$B$BOh, sí, serás $grecompensado, querido niño:recompensada, querida niña;. Serás $grecompensado:recompensada; enormemente. ¡Dámelo ahora!', 0), +(@ID, 'esMX', 'En todos mis días de vida, nunca hubiera esperado ver esto...$B$B$B$BOh, sí, serás $grecompensado, querido niño:recompensada, querida niña;. Serás $grecompensado:recompensada; enormemente. ¡Dámelo ahora!', 0); +-- La ciudadela del terror: Naxxramas +-- 9121, 9122, 9123 +-- https://es.classic.wowhead.com/quest=9121 +DELETE FROM `quest_request_items_locale` WHERE `id` IN(9121, 9122, 9123) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(9121, 'esES', 'Nadie ha entrado en Naxxramas y vivido para contarlo.', 0), +(9122, 'esES', 'Nadie ha entrado en Naxxramas y vivido para contarlo.', 0), +(9123, 'esES', 'Nadie ha entrado en Naxxramas y vivido para contarlo.', 0), +(9121, 'esMX', 'Nadie ha entrado en Naxxramas y vivido para contarlo.', 0), +(9122, 'esMX', 'Nadie ha entrado en Naxxramas y vivido para contarlo.', 0), +(9123, 'esMX', 'Nadie ha entrado en Naxxramas y vivido para contarlo.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` IN(9121, 9122, 9123) AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(9121, 'esES', 'Sentirás un hormigueo; eso quiere decir que funciona. Después podrás cruzar el portal rúnico del Bosque de la Peste para entrar en Naxxramas.', 0), +(9122, 'esES', 'Sentirás un hormigueo; eso quiere decir que funciona. Después podrás cruzar el portal rúnico del Bosque de la Peste para entrar en Naxxramas.', 0), +(9123, 'esES', 'Sentirás un hormigueo; eso quiere decir que funciona. Después podrás cruzar el portal rúnico del Bosque de la Peste para entrar en Naxxramas.', 0), +(9121, 'esMX', 'Sentirás un hormigueo; eso quiere decir que funciona. Después podrás cruzar el portal rúnico del Bosque de la Peste para entrar en Naxxramas.', 0), +(9122, 'esMX', 'Sentirás un hormigueo; eso quiere decir que funciona. Después podrás cruzar el portal rúnico del Bosque de la Peste para entrar en Naxxramas.', 0), +(9123, 'esMX', 'Sentirás un hormigueo; eso quiere decir que funciona. Después podrás cruzar el portal rúnico del Bosque de la Peste para entrar en Naxxramas.', 0); +-- 9124 La armadura de acechacriptas no se hace sola... +-- https://es.classic.wowhead.com/quest=9124 +SET @ID := 9124; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Cómo va la cacería?', 0), +(@ID, 'esMX', '¿Cómo va la cacería?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ah, eso estará bien, $n. Recuerda, siempre acepto más partes. Por cada paquete que me traigas, te recompensaré con una insignia.', 0), +(@ID, 'esMX', 'Ah, eso estará bien, $n. Recuerda, siempre acepto más partes. Por cada paquete que me traigas, te recompensaré con una insignia.', 0); +-- 9125 Trozos de maligno de cripta +-- https://es.classic.wowhead.com/quest=9125 +SET @ID := 9125; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Hiciste un trabajo ejemplar en el primer paquete, $n. Si tienes más, los tomaré ahora. Por cada paquete que entregues, te recompensaré con otra insignia.', 0), +(@ID, 'esMX', 'Hiciste un trabajo ejemplar en el primer paquete, $n. Si tienes más, los tomaré ahora. Por cada paquete que entregues, te recompensaré con otra insignia.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Excelente, $n! Definitivamente, estos serán de gran utilidad.', 0), +(@ID, 'esMX', '¡Excelente, $n! Definitivamente, estos serán de gran utilidad.', 0); +-- 9126 Excavaciones para la armadura Segahuesos +-- https://es.classic.wowhead.com/quest=9126 +SET @ID := 9126; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Puedo indicarte dónde encontrar esqueletos, $c.', 0), +(@ID, 'esMX', 'Puedo indicarte dónde encontrar esqueletos, $c.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Trabajas rápido, $n. Rápido como un zorro... Oye, ¿te he hablado alguna vez del tiempo en que fui miembro de un cuarteto de peluquería?$B$BRecuérdame que te cuente esa historia uno de estos días.', 0), +(@ID, 'esMX', 'Trabajas rápido, $n. Rápido como un zorro... Oye, ¿te he hablado alguna vez del tiempo en que fui miembro de un cuarteto de peluquería?$B$BRecuérdame que te cuente esa historia uno de estos días.', 0); +-- 9127 Trozos de hueso +-- https://es.classic.wowhead.com/quest=9127 +SET @ID := 9127; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Con este oficio, nunca tengo demasiados fragmentos de hueso, $n. Siempre que tengas fragmentos de más, tráemelos y te recompensaré con otra insignia.', 0), +(@ID, 'esMX', 'Con este oficio, nunca tengo demasiados fragmentos de hueso, $n. Siempre que tengas fragmentos de más, tráemelos y te recompensaré con otra insignia.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Dentro de poco haré realidad mi sueño de convertirme en miembro del cuerpo de baile de la discoteca de Gadgetzan! Sigue trabajando así, $n.', 0), +(@ID, 'esMX', '¡Dentro de poco haré realidad mi sueño de convertirme en miembro del cuerpo de baile de la discoteca de Gadgetzan! Sigue trabajando así, $n.', 0); +-- 9128 La ecuación elemental +-- https://es.classic.wowhead.com/quest=9128 +SET @ID := 9128; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Solo puedo guiarte en la dirección correcta, $n.', 0), +(@ID, 'esMX', 'Solo puedo guiarte en la dirección correcta, $n.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Buen trabajo, $n! Como prometí, la insignia es tuya. Solo recuerda, hay más de donde vino eso...', 0), +(@ID, 'esMX', '¡Buen trabajo, $n! Como prometí, la insignia es tuya. Solo recuerda, hay más de donde vino eso...', 0); +-- 9129 Núcleo de elementos +-- https://es.classic.wowhead.com/quest=9129 +SET @ID := 9129; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'A decir verdad, uso los núcleos para crear una armadura Fuego de Escarcha. Es la armadura que usan los magos que luchan en Naxxramas. Sin ti y otros como tú, definitivamente estaríamos perdiendo esta guerra.$B$BDicho esto, tráeme más núcleos y te concederé más insignias.', 0), +(@ID, 'esMX', 'A decir verdad, uso los núcleos para crear una armadura Fuego de Escarcha. Es la armadura que usan los magos que luchan en Naxxramas. Sin ti y otros como tú, definitivamente estaríamos perdiendo esta guerra.$B$BDicho esto, tráeme más núcleos y te concederé más insignias.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Nos prestas un gran servicio, $n. ¡Bien hecho!', 0), +(@ID, 'esMX', 'Nos prestas un gran servicio, $n. ¡Bien hecho!', 0); +-- 9131 Armar la acorator +-- https://es.classic.wowhead.com/quest=9131 +SET @ID := 9131; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¿Qué quieres? ¿Direcciones? Puedo proporcionarte eso...', 0), +(@ID, 'esMX', '$B$B¿Qué quieres? ¿Direcciones? Puedo proporcionarte eso...', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Esto valdrá por ahora. Si obtienes más, ya sabes dónde encontrarme.', 0), +(@ID, 'esMX', 'Esto valdrá por ahora. Si obtienes más, ya sabes dónde encontrarme.', 0); +-- 9132 Fragmentos de hierro negro +-- https://es.classic.wowhead.com/quest=9132 +SET @ID := 9132; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Por cada brazada de restos que me traigas, te daré una insignia. Cuantos más restos traigas, mejor. Y ahora, fuera de mi vista, ¡antes de que te parta en dos!', 0), +(@ID, 'esMX', 'Por cada brazada de restos que me traigas, te daré una insignia. Cuantos más restos traigas, mejor. Y ahora, fuera de mi vista, ¡antes de que te parta en dos!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Eso es todo lo que me has traído? Creo que no me escuchaste con atención. ¡Necesito MÁS!', 0), +(@ID, 'esMX', '¿Eso es todo lo que me has traído? Creo que no me escuchaste con atención. ¡Necesito MÁS!', 0); +-- 9137 Hojas salvajes +-- https://es.classic.wowhead.com/quest=9137 +SET @ID := 9137; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Por cada manojo de hojas que me entregue, te pagaré con la insignia de El Alba o de la Cruzada, tu elijes.$B$BLas insignias se pueden entregar al intendente para obtener varias recompensas.', 0), +(@ID, 'esMX', 'Por cada manojo de hojas que me entregue, te pagaré con la insignia de El Alba o de la Cruzada, tu elijes.$B$BLas insignias se pueden entregar al intendente para obtener varias recompensas.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias, $n. Tu trabajo es vital para el éxito de nuestra campaña contra la Plaga.', 0), +(@ID, 'esMX', 'Gracias, $n. Tu trabajo es vital para el éxito de nuestra campaña contra la Plaga.', 0); +-- 9141 Me llaman "El Gallo" +-- https://es.classic.wowhead.com/quest=9141 +SET @ID := 9141; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¿Qué quieres? Soy un hombre ocupado.', 0), +(@ID, 'esMX', '$B$B¿Qué quieres? Soy un hombre ocupado.', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Está bien, la cosa funciona así: por cada muestra de valor que me traigas, yo te daré una libranza. Completas la orden de esa libranza y entregas el pedido al maestro de manada Mazadura. ¿Lo pillas? Bien. Ahora, largo de aquí.', 0), +(@ID, 'esMX', 'Está bien, la cosa funciona así: por cada muestra de valor que me traigas, yo te daré una libranza. Completas la orden de esa libranza y entregas el pedido al maestro de manada Mazadura. ¿Lo pillas? Bien. Ahora, largo de aquí.', 0); \ No newline at end of file diff --git a/data/sql/updates/pending_db_world/rev_1619817128237023800.sql b/data/sql/updates/pending_db_world/rev_1619817128237023800.sql new file mode 100644 index 0000000000..c07a7d8397 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619817128237023800.sql @@ -0,0 +1,370 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619817128237023800'); + +-- 9142 Libranza del artesano +-- https://es.classic.wowhead.com/quest=9142 +SET @ID := 9142; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Te lo has ganado, don nadie. Ahora, no llores por tus órdenes. Llénalos o destrúyelos.', 0), +(@ID, 'esMX', 'Te lo has ganado, don nadie. Ahora, no llores por tus órdenes. Llénalos o destrúyelos.', 0); +-- 9151 El Sagrario del Sol +-- https://es.wowhead.com/quest=9151 +SET @ID := 9151; +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Te envía Darenis? Bueno, supongo que tu ayuda nos vendrá bien para luchar contra las huestes de Dar\'Khan.', 0), +(@ID, 'esMX', '¿Te envía Darenis? Bueno, supongo que tu ayuda nos vendrá bien para luchar contra las huestes de Dar\'Khan.', 0); +-- 9153 Bajo la Sombra +-- https://es.classic.wowhead.com/quest=9153 +SET @ID := 9153; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Eliminar esta amenaza llevará tiempo. ¿Estás $gdispuesto:dispuesta;, $n?', 0), +(@ID, 'esMX', 'Eliminar esta amenaza llevará tiempo. ¿Estás $gdispuesto:dispuesta;, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Buen trabajo, $n. Pese a las derrotas, conseguiremos rechazar la amenaza de la Peste.$B$BDescansa ahora, pero después tendrás que volver al campo de batalla para defender el terreno ganado hoy.$B$BSi nos traes más runas necróticas, te las cambiaremos por objetos especiales que te ayudarán en tus batallas futuras.', 0), +(@ID, 'esMX', 'Buen trabajo, $n. Pese a las derrotas, conseguiremos rechazar la amenaza de la Peste.$B$BDescansa ahora, pero después tendrás que volver al campo de batalla para defender el terreno ganado hoy.$B$BSi nos traes más runas necróticas, te las cambiaremos por objetos especiales que te ayudarán en tus batallas futuras.', 0); +-- 9164 Cautivos en la Ciudad de la Muerte +-- https://es.wowhead.com/quest=9164 +SET @ID := 9164; +UPDATE `quest_template_locale` SET `ObjectiveText1` = 'Boticaria Enith rescatada', `ObjectiveText2` = 'Aprendiz Varnis rescatado', `ObjectiveText4` = 'Forestal Vedoran rescatado', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué fue de los prisioneros en la Ciudad de la Muerte? ¿Ya te has aventurado allí?', 0), +(@ID, 'esMX', '¿Qué fue de los prisioneros en la Ciudad de la Muerte? ¿Ya te has aventurado allí?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Gracias, $n. Sin ti esos prisioneros habrían perdido el juicio y el alma a manos de la Plaga.', 0), +(@ID, 'esMX', 'Gracias, $n. Sin ti esos prisioneros habrían perdido el juicio y el alma a manos de la Plaga.', 0); +-- 9165 La libranza de salvoconducto +-- https://es.classic.wowhead.com/quest=9165 +SET @ID := 9165; +UPDATE `quest_template_locale` SET `ObjectiveText2` = 'Salvoconducto firmado', `VerifiedBuild` = 0 WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Nombre, rango y número de serie!', 0), +(@ID, 'esMX', '¡Nombre, rango y número de serie!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$BExcelente trabajo, $n. ¡Sobresaliente incluso! Toma esto como muestra de nuestro agradecimiento. Sin juego de palabras, don nadie.', 0), +(@ID, 'esMX', '$B$BExcelente trabajo, $n. ¡Sobresaliente incluso! Toma esto como muestra de nuestro agradecimiento. Sin juego de palabras, don nadie.', 0); +-- 9167 La muerte del traidor +-- https://es.wowhead.com/quest=9167 +SET @ID := 9167; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Lo has hecho? ¿Has matado a Dar\'Khan?', 0), +(@ID, 'esMX', '¿Lo has hecho? ¿Has matado a Dar\'Khan?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Has asestado un golpe mortal al dominio de la Plaga en esta región.$B$BAhora que ha muerto el traidor, no tardaremos en recuperar nuestras tierras y nuestra grandeza.', 0), +(@ID, 'esMX', 'Has asestado un golpe mortal al dominio de la Plaga en esta región.$B$BAhora que ha muerto el traidor, no tardaremos en recuperar nuestras tierras y nuestra grandeza.', 0); +-- 9170 Los tenientes de Dar'Khan +-- https://es.wowhead.com/quest=9170 +SET @ID := 9170; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Has logrado cortar la cadena de mando de la Plaga, $n? ¿Están muertos los lugartenientes de Dar\'Khan?', 0), +(@ID, 'esMX', '¿Has logrado cortar la cadena de mando de la Plaga, $n? ¿Están muertos los lugartenientes de Dar\'Khan?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡El ejército de Dar\'Khan se derrumba! La Plaga no tiene ninguna posibilidad de resistir ante el poder conjunto de los sin\'dorei y los Renegados.', 0), +(@ID, 'esMX', '¡El ejército de Dar\'Khan se derrumba! La Plaga no tiene ninguna posibilidad de resistir ante el poder conjunto de los sin\'dorei y los Renegados.', 0); +-- 9175 El collar de Sylvanas +-- https://es.wowhead.com/quest=9175 +SET @ID := 9175; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Qué tienes ahí, $n?', 0), +(@ID, 'esMX', '¿Qué tienes ahí, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡¿Dices que lo tenía uno de los miembros de la Plaga en la Aguja Brisaveloz y que hay una inscripción?! ¡A ver!$B$BAquí tienes, una moneda por un buen trabajo.', 0), +(@ID, 'esMX', '¡¿Dices que lo tenía uno de los miembros de la Plaga en la Aguja Brisaveloz y que hay una inscripción?! ¡A ver!$B$BAquí tienes, una moneda por un buen trabajo.', 0); +-- 9178 Libranza del artesano: contrapeso denso +-- https://es.classic.wowhead.com/quest=9178 +SET @ID := 9178; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $n?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sí, estos serán útiles para las armas de ataque de la infantería.', 0), +(@ID, 'esMX', 'Sí, estos serán útiles para las armas de ataque de la infantería.', 0); +-- 9179 Libranza del artesano: peto de placas imperiales +-- https://es.classic.wowhead.com/quest=9179 +SET @ID := 9179; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $n?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Más armaduras para las tropas! ¡Fantástico, $n!', 0), +(@ID, 'esMX', '¡Más armaduras para las tropas! ¡Fantástico, $n!', 0); +-- 9180 Viaje a Entrañas +-- https://es.wowhead.com/quest=9180 +SET @ID := 9180; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Y tú eres...?$B$B¿Qué traes ahí? Ese collar me suena. ¡Dámelo!', 0), +(@ID, 'esMX', '¿Y tú eres...?$B$B¿Qué traes ahí? Ese collar me suena. ¡Dámelo!', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¡No puede ser! Después de tanto tiempo, lo creía perdido para siempre.$B$B$B$B¿Creías que esto me haría gracia? ¿Pensabas acaso que añoro los tiempos anteriores a mi reinado sobre los Renegados? Como tú, esto no significa nada para mí, y Alleria Brisaveloz no es más que un lejano recuerdo!$B$B$B$BPuedes retirarte, $c.', 0), +(@ID, 'esMX', '$B$B¡No puede ser! Después de tanto tiempo, lo creía perdido para siempre.$B$B$B$B¿Creías que esto me haría gracia? ¿Pensabas acaso que añoro los tiempos anteriores a mi reinado sobre los Renegados? Como tú, esto no significa nada para mí, y Alleria Brisaveloz no es más que un lejano recuerdo!$B$B$B$BPuedes retirarte, $c.', 0); +-- 9181 Libranza del artesano: martillo volcánico +-- https://es.classic.wowhead.com/quest=9181 +SET @ID := 9181; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $n?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos deberían ir bien con las densas piedras de peso que estamos acumulando.', 0), +(@ID, 'esMX', 'Estos deberían ir bien con las densas piedras de peso que estamos acumulando.', 0); +-- 9182 Libranza del artesano: hacha de batalla de torio enorme +-- https://es.classic.wowhead.com/quest=9182 +SET @ID := 9182; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $n?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'No son tan grandes como esperaba. Pero, un trato es un trato.', 0), +(@ID, 'esMX', 'No son tan grandes como esperaba. Pero, un trato es un trato.', 0); +-- 9183 Libranza del artesano: aro radiante +-- https://es.classic.wowhead.com/quest=9183 +SET @ID := 9183; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $n?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $n?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Todavía no puedo creer que Metz espere que nuestras tropas usen esta basura de baja calidad para protegerse de los congelados ataques de la Plaga.', 0), +(@ID, 'esMX', 'Todavía no puedo creer que Metz espere que nuestras tropas usen esta basura de baja calidad para protegerse de los congelados ataques de la Plaga.', 0); +-- 9184 Libranza del artesano: cinta de cuero maligno +-- https://es.classic.wowhead.com/quest=9184 +SET @ID := 9184; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos son... malignos.', 0), +(@ID, 'esMX', 'Estos son... malignos.', 0); +-- 9185 Libranza del artesano: refuerzo para armadura basto +-- https://es.classic.wowhead.com/quest=9185 +SET @ID := 9185; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los refuerzos de armadura tienen muchos usos, $n. No son SOLO para mejorar ciertas piezas de armadura para mayor protección. Como esta de aquí, la voy a usar como tetera acogedora.', 0), +(@ID, 'esMX', 'Los refuerzos de armadura tienen muchos usos, $n. No son SOLO para mejorar ciertas piezas de armadura para mayor protección. Como esta de aquí, la voy a usar como tetera acogedora.', 0); +-- 9186 Libranza del artesano: cinturón de cuero maligno +-- https://es.classic.wowhead.com/quest=9186 +SET @ID := 9186; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos cinturones son en realidad más malignos que las cintas para la cabeza, si puedes creer que tal cosa es posible.', 0), +(@ID, 'esMX', 'Estos cinturones son en realidad más malignos que las cintas para la cabeza, si puedes creer que tal cosa es posible.', 0); +-- 9187 Libranza del artesano: pantalones de cuero rúnico +-- https://es.classic.wowhead.com/quest=9187 +SET @ID := 9187; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Los druidas definitivamente apreciarán la artesanía que se empleó en la fabricación de estos pantalones. Muchas gracias, $n.', 0), +(@ID, 'esMX', 'Los druidas definitivamente apreciarán la artesanía que se empleó en la fabricación de estos pantalones. Muchas gracias, $n.', 0); +-- 9188 Libranza del artesano: pantalones de paño brillante +-- https://es.classic.wowhead.com/quest=9188 +SET @ID := 9188; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Casi puedo ver mi reflejo en estas cosas! Esto es una locura.', 0), +(@ID, 'esMX', '¡Casi puedo ver mi reflejo en estas cosas! Esto es una locura.', 0); +-- 9189 Entrega a El Sepulcro +-- https://es.wowhead.com/quest=9189 +SET @ID := 9189; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Saludos, $ghermano:hermana;. ¿Qué novedades traes?', 0), +(@ID, 'esMX', 'Saludos, $ghermano:hermana;. ¿Qué novedades traes?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Veo aquí que el Embajador Penasol tiene grandes esperanzas en tu continuo ascenso como un valor para los sin\'dorei. Sin embargo, desafortunado ese asunto con Lady Sylvanas. No le hagas caso, $n, hiciste lo correcto al devolverle el collar. Debería haber estado agradecida, pero así es la realeza.$B$BMientras estés aquí, si decides ayudar con las tareas de los Renegados, comportate lo mejor que puedas. No querrías dañar nuestro nuevo vínculo con la Horda, ¿verdad?', 0), +(@ID, 'esMX', 'Veo aquí que el Embajador Penasol tiene grandes esperanzas en tu continuo ascenso como un valor para los sin\'dorei. Sin embargo, desafortunado ese asunto con Lady Sylvanas. No le hagas caso, $n, hiciste lo correcto al devolverle el collar. Debería haber estado agradecida, pero así es la realeza.$B$BMientras estés aquí, si decides ayudar con las tareas de los Renegados, comportate lo mejor que puedas. No querrías dañar nuestro nuevo vínculo con la Horda, ¿verdad?', 0); +-- 9190 Libranza del artesano: botas de paño rúnico +-- https://es.classic.wowhead.com/quest=9190 +SET @ID := 9190; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡Por la barba de Barbabronce! Me has traido botas de paño rúnico... Supongo que perdí esa apuesta.', 0), +(@ID, 'esMX', '¡Por la barba de Barbabronce! Me has traido botas de paño rúnico... Supongo que perdí esa apuesta.', 0); +-- 9191 Libranza del artesano: bolsa de paño rúnico +-- https://es.classic.wowhead.com/quest=9191 +SET @ID := 9191; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡$gBendito:Bendita; seas! ¿Son esos lo que creo que son? Las tropas se han estado quejando sin parar por la falta de espacio de almacenamiento para todo lo que se requiere mientras están en el campo. Uno de ellos incluso me dibujó un diagrama...$B$BEstos definitivamente ayudarán a aliviar algunos de los lloriqueos.', 0), +(@ID, 'esMX', '¡$gBendito:Bendita; seas! ¿Son esos lo que creo que son? Las tropas se han estado quejando sin parar por la falta de espacio de almacenamiento para todo lo que se requiere mientras están en el campo. Uno de ellos incluso me dibujó un diagrama...$B$BEstos definitivamente ayudarán a aliviar algunos de los lloriqueos.', 0); +-- 9194 Libranza del artesano: toga de paño rúnico +-- https://es.classic.wowhead.com/quest=9194 +SET @ID := 9194; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¡No deberías haberlo hecho! No, en serio, no deberías haberlo hecho. No sé qué está pensando Metz, pero nadie usará estas túnicas en Naxxramas.$B$B$B$BBah, tendré que transferir otro montón de basura al frente y otra reprimenda más del Mariscal de campo Cuevas.', 0), +(@ID, 'esMX', '¡No deberías haberlo hecho! No, en serio, no deberías haberlo hecho. No sé qué está pensando Metz, pero nadie usará estas túnicas en Naxxramas.$B$B$B$BBah, tendré que transferir otro montón de basura al frente y otra reprimenda más del Mariscal de campo Cuevas.', 0); +-- 9195 Libranza del artesano: carga de zapador goblin +-- https://es.classic.wowhead.com/quest=9195 +SET @ID := 9195; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Ahora estás hablando mi idioma, $n. Cosas que hacen BOOM!', 0), +(@ID, 'esMX', 'Ahora estás hablando mi idioma, $n. Cosas que hacen BOOM!', 0); +-- 9196 Libranza del artesano: granada de torio +-- https://es.classic.wowhead.com/quest=9196 +SET @ID := 9196; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Deben haber costado una bonita pieza de cobre. ¿Tengo razón o tengo razón, $n?', 0), +(@ID, 'esMX', 'Deben haber costado una bonita pieza de cobre. ¿Tengo razón o tengo razón, $n?', 0); +-- 9197 Libranza del artesano: gallo de batalla gnómico +-- https://es.classic.wowhead.com/quest=9197 +SET @ID := 9197; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Por qué sonríes? ¿Que es tan gracioso? Escucha, $gseñorito:señorita;, un pollo de batalla gnómico es una unidad muy importante y no debe tomarse a la ligera, NUNCA. Los enviamos a áreas que podrían estar muy plagadas o infestadas y limpian cualquier insecto plagado o gusanos carroñeros que aún puedan estar revoloteando. Todo el mundo sabe que los robots son inmunes a la plaga.$B$BApuesto a que no te sientes tan inteligente ahora, ¿verdad? Maniquí grande...', 0), +(@ID, 'esMX', '¿Por qué sonríes? ¿Que es tan gracioso? Escucha, $gseñorito:señorita;, un pollo de batalla gnómico es una unidad muy importante y no debe tomarse a la ligera, NUNCA. Los enviamos a áreas que podrían estar muy plagadas o infestadas y limpian cualquier insecto plagado o gusanos carroñeros que aún puedan estar revoloteando. Todo el mundo sabe que los robots son inmunes a la plaga.$B$BApuesto a que no te sientes tan inteligente ahora, ¿verdad? Maniquí grande...', 0); +-- 9198 Libranza del artesano: tubo de torio +-- https://es.classic.wowhead.com/quest=9198 +SET @ID := 9198; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Tubos de torio? Vaya, gracias.$B$B', 0), +(@ID, 'esMX', 'Tubos de torio? Vaya, gracias.$B$B', 0); +-- 9200 Libranza del artesano: poción de maná sublime +-- https://es.classic.wowhead.com/quest=9200 +SET @ID := 9200; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'La utilidad de esto debería ser evidente.', 0), +(@ID, 'esMX', 'La utilidad de esto debería ser evidente.', 0); +-- 9201 Libranza del artesano: poción de Protección contra lo Arcano superior +-- https://es.classic.wowhead.com/quest=9201 +SET @ID := 9201; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '$B$B¡WOOT! ¡Esto ta pega una patada en el pecho, bebé! ¡Una buena patada!', 0), +(@ID, 'esMX', '$B$B¡WOOT! ¡Esto ta pega una patada en el pecho, bebé! ¡Una buena patada!', 0); +-- 9202 Libranza del artesano: poción de sanación sublime +-- https://es.classic.wowhead.com/quest=9202 +SET @ID := 9202; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Sabes cómo las llaman las tropas en el frente? Sacerdotes embotellados...$B$B$B$B"Soy tu sacerdote embotellado bebé... tienes que beberme de la manera correcta..."$B$B¿Qué pasa $ghijo:hija;? Es una canción muy popular en estos lugares.', 0), +(@ID, 'esMX', '¿Sabes cómo las llaman las tropas en el frente? Sacerdotes embotellados...$B$B$B$B"Soy tu sacerdote embotellado bebé... tienes que beberme de la manera correcta..."$B$B¿Qué pasa $ghijo:hija;? Es una canción muy popular en estos lugares.', 0); +-- 9203 Libranza del artesano: poción de petrificación +-- https://es.classic.wowhead.com/quest=9203 +SET @ID := 9203; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Sin comentarios.$B$B$B$B¡Dije sin comentarios! ¡Ahora sal de mi vista!', 0), +(@ID, 'esMX', 'Sin comentarios.$B$B$B$B¡Dije sin comentarios! ¡Ahora sal de mi vista!', 0); +-- 9204 Libranza del artesano: anguila escama pétrea +-- https://es.classic.wowhead.com/quest=9204 +SET @ID := 9204; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Podrías haber usado esto para otra cosa, pero no lo hiciste, ¿verdad? No sirve de nada llorar por eso ahora, $n.', 0), +(@ID, 'esMX', 'Podrías haber usado esto para otra cosa, pero no lo hiciste, ¿verdad? No sirve de nada llorar por eso ahora, $n.', 0); +-- 9205 Libranza del artesano: pez coraza de placas +-- https://es.classic.wowhead.com/quest=9205 +SET @ID := 9205; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Realmente no sabes para qué son?$B$B$B$B¡Como te diría...!', 0), +(@ID, 'esMX', '¿Realmente no sabes para qué son?$B$B$B$B¡Como te diría...!', 0); +-- 9206 Libranza del artesano: anguila relámpago +-- https://es.classic.wowhead.com/quest=9206 +SET @ID := 9206; +DELETE FROM `quest_request_items_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(@ID, 'esES', '¿Completando una orden de trabajo, $c?', 0), +(@ID, 'esMX', '¿Completando una orden de trabajo, $c?', 0); +DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); +INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(@ID, 'esES', 'Estos hacen los mejores rollos de anguila del mundo. Eso es así - DE TODO EL MUNDO.', 0), +(@ID, 'esMX', 'Estos hacen los mejores rollos de anguila del mundo. Eso es así - DE TODO EL MUNDO.', 0); \ No newline at end of file From e39bb613388d658e93908fe41895737d47c110c9 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 6 May 2021 15:34:37 +0200 Subject: [PATCH 092/108] fix(DB/Creature): Twilight Idolater (#5558) --- .../rev_1619822861176792300.sql | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619822861176792300.sql diff --git a/data/sql/updates/pending_db_world/rev_1619822861176792300.sql b/data/sql/updates/pending_db_world/rev_1619822861176792300.sql new file mode 100644 index 0000000000..9703d761ab --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619822861176792300.sql @@ -0,0 +1,17 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619822861176792300'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 8419; + +DELETE FROM `smart_scripts` WHERE `entryorguid` = 8419 AND `source_type` = 0 AND `id` BETWEEN 0 AND 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`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(8419, 0, 0, 0, 0, 0, 100, 0, 0, 0, 3000, 5000, 0, 11, 9053, 64, 0, 0, 0, 0, 2, 0, 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, 0, 11, 11962, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Twilight Idolater - In Combat - Cast Immolate'), +(8419, 0, 2, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Twilight Idolater - On Aggro - Say Line 0'), +(8419, 0, 3, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 11, 8734, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Twilight Idolater - On reset - Cast Blackfathom Channeling'); + +DELETE FROM `creature_text` WHERE `CreatureID` = 8419; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(8419,0,0,"Infidels!",12,0,100,0,0,0,4380,0,"Twilight Idolater"), +(8419,0,1,"You dare interrupt our prayer? Execute them!",12,0,100,0,0,0,4381,0,"Twilight Idolater"), +(8419,0,2,"You will make a fitting sacrifice to Ragnaros.",12,0,100,0,0,0,4382,0,"Twilight Idolater"), +(8419,0,3,"Excellent, fresh blood has arrived.",12,0,100,0,0,0,4383,0,"Twilight Idolater"); From 1c9683ade42244d2b3e4d5f73c5f8de0b929bea3 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 6 May 2021 15:34:44 +0200 Subject: [PATCH 093/108] fix(DB/Creature): Son of Hakkar (#5561) --- .../sql/updates/pending_db_world/rev_1619823825635053300.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619823825635053300.sql diff --git a/data/sql/updates/pending_db_world/rev_1619823825635053300.sql b/data/sql/updates/pending_db_world/rev_1619823825635053300.sql new file mode 100644 index 0000000000..18066b245d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619823825635053300.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619823825635053300'); + +DELETE FROM `spell_scripts` WHERE `id`=24320; +INSERT INTO `spell_scripts` (`id`,`effIndex`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES +(24320,0,0,15,24321,2,0,0,0,0,0); From 926a31038998f613ec8cc9360195338b4688c663 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 6 May 2021 15:34:59 +0200 Subject: [PATCH 094/108] fix(Creature/Gossip): Adjust some guard direction text (#5562) --- .../pending_db_world/rev_1619824464997653100.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619824464997653100.sql diff --git a/data/sql/updates/pending_db_world/rev_1619824464997653100.sql b/data/sql/updates/pending_db_world/rev_1619824464997653100.sql new file mode 100644 index 0000000000..08a3e4f148 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619824464997653100.sql @@ -0,0 +1,12 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619824464997653100'); + +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=4888, `OptionText`="The bank" WHERE `OptionBroadcastTextID`=7066; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The guild master" WHERE `OptionBroadcastTextID`=2870; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=4893, `OptionText`="The inn" WHERE `OptionBroadcastTextID`=7075; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The mailbox" WHERE `OptionBroadcastTextID` IN (45381, 5514, 4895); +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The auction house" WHERE `OptionBroadcastTextID` IN (44627, 5515); +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The zeppelin master" WHERE `OptionBroadcastTextID`=5518; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The weapon master" WHERE `OptionBroadcastTextID` IN (15230, 7253); +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=8521, `OptionText`="The stable master" WHERE `OptionBroadcastTextID` IN (45383,8521); +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The officers' lounge" WHERE `OptionBroadcastTextID`=9756; +UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The battlemaster" WHERE `OptionBroadcastTextID` IN (19209, 10359); From 3acf5bb7ea3dec4627985f4347fa3f5d95f82cc5 Mon Sep 17 00:00:00 2001 From: Crypticaz Date: Thu, 6 May 2021 08:35:07 -0500 Subject: [PATCH 095/108] fix(DB/Graveyard): add ghostZone for zone 1537 (#5581) --- data/sql/updates/pending_db_world/rev_1619891302194258700.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619891302194258700.sql diff --git a/data/sql/updates/pending_db_world/rev_1619891302194258700.sql b/data/sql/updates/pending_db_world/rev_1619891302194258700.sql new file mode 100644 index 0000000000..adcb552147 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619891302194258700.sql @@ -0,0 +1,4 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619891302194258700'); +DELETE FROM `graveyard_zone` WHERE `ID`=852 AND `GhostZone`=1537; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES +(852, 1537, 469, 'Dun Morogh, Gates of Ironforge - Ironforge'); From 81c07178d981b553b6d92173a06fd8f7b564bd35 Mon Sep 17 00:00:00 2001 From: Stifler82 Date: Thu, 6 May 2021 14:35:29 +0100 Subject: [PATCH 096/108] fix(DB/Creature): Apprentice Mirveda (#5596) --- .../rev_1619958638373648000.sql | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619958638373648000.sql diff --git a/data/sql/updates/pending_db_world/rev_1619958638373648000.sql b/data/sql/updates/pending_db_world/rev_1619958638373648000.sql new file mode 100644 index 0000000000..0dcff032c5 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619958638373648000.sql @@ -0,0 +1,35 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619958638373648000'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15402; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 15402); +INSERT INTO `smart_scripts` VALUES +(15402, 0, 0, 0, 20, 0, 100, 0, 8487, 0, 0, 0, 0, 80, 1540200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Quest \'Corrupted Soil\' Finished - Run Script'), +(15402, 0, 1, 2, 19, 0, 100, 0, 8488, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Quest \'Unexpected Results\' Taken - Store Targetlist'), +(15402, 0, 2, 0, 61, 0, 100, 0, 8488, 0, 0, 0, 0, 80, 1540201, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Quest \'Unexpected Results\' Taken - Run Script'), +(15402, 0, 3, 0, 0, 0, 100, 0, 900, 900, 3000, 4000, 0, 11, 20811, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - In Combat - Cast \'Fireball\''), +(15402, 0, 4, 0, 6, 1, 100, 0, 0, 0, 0, 0, 0, 6, 8488, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Just Died - Fail Quest \'Unexpected Results\' (Phase 1)'), +(15402, 0, 5, 6, 7, 1, 100, 0, 0, 0, 0, 0, 0, 15, 8488, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Evade - Quest Credit \'Unexpected Results\' (Phase 1)'), +(15402, 0, 6, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 80, 1540202, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Evade - Run Script (Phase 1)'), +(15402, 0, 7, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - On Respawn - Set Flags Immune To NPC\'s'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` IN (1540200, 1540201, 1540202)); +INSERT INTO `smart_scripts` VALUES +(1540200, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Npc Flag '), +(1540200, 9, 1, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Say Line 0'), +(1540200, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 81, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Npc Flags Questgiver'); + +INSERT INTO `smart_scripts` VALUES +(1540201, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Npc Flag '), +(1540201, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 232, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Faction 232'), +(1540201, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 19, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Remove Flags Immune To NPC\'s'), +(1540201, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Event Phase 1'), +(1540201, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 15958, 7, 180000, 0, 0, 0, 8, 0, 0, 0, 0, 8750.1, -7129.7, 35.2976, 3.8041, 'Apprentice Mirveda - Actionlist - Summon Creature \'Gharsul the Remorseless\''), +(1540201, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 15656, 7, 180000, 0, 0, 0, 8, 0, 0, 0, 0, 8753.61, -7133.15, 35, 3.8576, 'Apprentice Mirveda - Actionlist - Summon Creature \'Angershade\''), +(1540201, 9, 6, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 15656, 7, 180000, 0, 0, 0, 8, 0, 0, 0, 0, 8747.14, -7125.71, 35.848, 3.8576, 'Apprentice Mirveda - Actionlist - Summon Creature \'Angershade\''); + +INSERT INTO `smart_scripts` VALUES +(1540202, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 81, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Npc Flags Questgiver'), +(1540202, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 1604, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Faction 1604'), +(1540202, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Flags Immune To NPC\'s'), +(1540202, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Event Phase 0'); From 3e1a2024b609dcacf2826ed5146739e28009a77b Mon Sep 17 00:00:00 2001 From: Stifler82 Date: Thu, 6 May 2021 14:35:38 +0100 Subject: [PATCH 097/108] fix(DB/pool_creature): NPC: Or'Kalar (#5601) --- .../pending_db_world/rev_1619974489991847400.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619974489991847400.sql diff --git a/data/sql/updates/pending_db_world/rev_1619974489991847400.sql b/data/sql/updates/pending_db_world/rev_1619974489991847400.sql new file mode 100644 index 0000000000..f9ae7ef889 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619974489991847400.sql @@ -0,0 +1,11 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619974489991847400'); + +DELETE FROM `pool_creature` WHERE (`guid` IN (14616, 134014, 134015, 134016, 134017, 134018, 134019)); +INSERT INTO `pool_creature` VALUES +(14616, 1003, 50, 'Or\'Kalar (2773) - Spawn 1'), +(134014, 1003, 10, 'Or\'Kalar (2773) - Spawn 2'), +(134015, 1003, 10, 'Or\'Kalar (2773) - Spawn 3'), +(134016, 1003, 10, 'Or\'Kalar (2773) - Spawn 4'), +(134017, 1003, 10, 'Or\'Kalar (2773) - Spawn 5'), +(134018, 1003, 5, 'Or\'Kalar (2773) - Spawn 6'), +(134019, 1003, 5, 'Or\'Kalar (2773) - Spawn 7'); From d7ddd6f8d13dc7f85cf9a28487607bdd151341c1 Mon Sep 17 00:00:00 2001 From: Necropola Date: Thu, 6 May 2021 15:35:59 +0200 Subject: [PATCH 098/108] fix(DB/go_loot_template): Silver Piffeny Band should not be lootable from chests (#5608) --- .../updates/pending_db_world/rev_1620033619588576561.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1620033619588576561.sql diff --git a/data/sql/updates/pending_db_world/rev_1620033619588576561.sql b/data/sql/updates/pending_db_world/rev_1620033619588576561.sql new file mode 100644 index 0000000000..37c823145f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1620033619588576561.sql @@ -0,0 +1,7 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620033619588576561'); + +DELETE FROM `gameobject_loot_template` WHERE `item`=7338; -- Mood Ring +DELETE FROM `gameobject_loot_template` WHERE `item`=7339; -- Miniscule Diamond Ring +DELETE FROM `gameobject_loot_template` WHERE `item`=7341; -- Cubic Zirconia Ring +DELETE FROM `gameobject_loot_template` WHERE `item`=7342; -- Silver Piffeny Band + From 6947789622de45479d2311fd5d1635af3a957b5d Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 6 May 2021 13:41:39 +0000 Subject: [PATCH 099/108] chore(DB): import pending SQL update file Referenced commit(s): d7ddd6f8d13dc7f85cf9a28487607bdd151341c1 --- .../2021_05_06_01.sql} | 25 +++++++++++++ .../2021_05_06_02.sql} | 25 +++++++++++++ .../2021_05_06_03.sql} | 25 +++++++++++++ .../2021_05_06_04.sql} | 25 +++++++++++++ .../2021_05_06_05.sql} | 26 +++++++++++++- .../2021_05_06_06.sql} | 26 +++++++++++++- .../2021_05_06_07.sql} | 25 +++++++++++++ data/sql/updates/db_world/2021_05_06_08.sql | 30 ++++++++++++++++ .../2021_05_06_09.sql} | 25 +++++++++++++ data/sql/updates/db_world/2021_05_06_10.sql | 29 +++++++++++++++ .../2021_05_06_11.sql} | 25 +++++++++++++ data/sql/updates/db_world/2021_05_06_12.sql | 36 +++++++++++++++++++ data/sql/updates/db_world/2021_05_06_13.sql | 32 +++++++++++++++++ .../rev_1619823825635053300.sql | 5 --- .../rev_1619891302194258700.sql | 4 --- .../rev_1619974489991847400.sql | 11 ------ .../rev_1620033619588576561.sql | 7 ---- 17 files changed, 352 insertions(+), 29 deletions(-) rename data/sql/updates/{pending_db_world/rev_1619616883919180600.sql => db_world/2021_05_06_01.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1619695262798189500.sql => db_world/2021_05_06_02.sql} (91%) rename data/sql/updates/{pending_db_world/rev_1619734944662755000.sql => db_world/2021_05_06_03.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1619816909908602400.sql => db_world/2021_05_06_04.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1619817090623034700.sql => db_world/2021_05_06_05.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1619817128237023800.sql => db_world/2021_05_06_06.sql} (97%) rename data/sql/updates/{pending_db_world/rev_1619822861176792300.sql => db_world/2021_05_06_07.sql} (72%) create mode 100644 data/sql/updates/db_world/2021_05_06_08.sql rename data/sql/updates/{pending_db_world/rev_1619824464997653100.sql => db_world/2021_05_06_09.sql} (65%) create mode 100644 data/sql/updates/db_world/2021_05_06_10.sql rename data/sql/updates/{pending_db_world/rev_1619958638373648000.sql => db_world/2021_05_06_11.sql} (84%) create mode 100644 data/sql/updates/db_world/2021_05_06_12.sql create mode 100644 data/sql/updates/db_world/2021_05_06_13.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619823825635053300.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619891302194258700.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619974489991847400.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1620033619588576561.sql diff --git a/data/sql/updates/pending_db_world/rev_1619616883919180600.sql b/data/sql/updates/db_world/2021_05_06_01.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1619616883919180600.sql rename to data/sql/updates/db_world/2021_05_06_01.sql index dc6e326992..02660c57ef 100644 --- a/data/sql/updates/pending_db_world/rev_1619616883919180600.sql +++ b/data/sql/updates/db_world/2021_05_06_01.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_00 -> 2021_05_06_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_00 2021_05_06_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619616883919180600'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619616883919180600'); -- 8554 Enfréntate a Negolash @@ -1093,3 +1109,12 @@ DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', 'El alma de Vaelastrasz está en paz, $gcampeón:campeona;. Todos los Aspectos observan tu progreso con gran interés. Debes saber que tiene aliados poderosos.$B$BSe me ordenó que te conceda algo que te ayude en esta lucha. Úsalo bien...', 0), (@ID, 'esMX', 'El alma de Vaelastrasz está en paz, $gcampeón:campeona;. Todos los Aspectos observan tu progreso con gran interés. Debes saber que tiene aliados poderosos.$B$BSe me ordenó que te conceda algo que te ayude en esta lucha. Úsalo bien...', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619695262798189500.sql b/data/sql/updates/db_world/2021_05_06_02.sql similarity index 91% rename from data/sql/updates/pending_db_world/rev_1619695262798189500.sql rename to data/sql/updates/db_world/2021_05_06_02.sql index 316966ba8f..5d400d0a7e 100644 --- a/data/sql/updates/pending_db_world/rev_1619695262798189500.sql +++ b/data/sql/updates/db_world/2021_05_06_02.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_01 -> 2021_05_06_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_01 2021_05_06_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619695262798189500'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619695262798189500'); -- No clue why 45 was used as common value for 'big' creatures while wowhead likes 49/50. 45+10%=49.5 (racial passive), however in that @@ -90,3 +106,12 @@ DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (37230,38444); INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `IsTeamAward1`, `RewOnKillRepValue1`, `MaxStanding2`, `IsTeamAward2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES (37230, 1156, 0, 7, 0, 50, 0, 0, 0, 0), -- Spire Frostwyrm (38444, 1156, 0, 7, 0, 50, 0, 0, 0, 0); -- Spire Frostwyrm (1) + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619734944662755000.sql b/data/sql/updates/db_world/2021_05_06_03.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1619734944662755000.sql rename to data/sql/updates/db_world/2021_05_06_03.sql index ccebf72253..a837d87935 100644 --- a/data/sql/updates/pending_db_world/rev_1619734944662755000.sql +++ b/data/sql/updates/db_world/2021_05_06_03.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_02 -> 2021_05_06_03 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_02'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_02 2021_05_06_03 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619734944662755000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619734944662755000'); -- 8876 Cohetes pequeños @@ -721,3 +737,12 @@ DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', '¡Excelente! Lo has hecho bien, $n. No estoy segura de confiar en la destreza del goblin, pero no me queda otra opción.', 0), (@ID, 'esMX', '¡Excelente! Lo has hecho bien, $n. No estoy segura de confiar en la destreza del goblin, pero no me queda otra opción.', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619816909908602400.sql b/data/sql/updates/db_world/2021_05_06_04.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1619816909908602400.sql rename to data/sql/updates/db_world/2021_05_06_04.sql index 77490a9048..6827f9370a 100644 --- a/data/sql/updates/pending_db_world/rev_1619816909908602400.sql +++ b/data/sql/updates/db_world/2021_05_06_04.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_03 -> 2021_05_06_04 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_03'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_03 2021_05_06_04 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619816909908602400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619816909908602400'); -- 8978 Regresa junto a Mokvar @@ -713,3 +729,12 @@ DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Botas de acechacriptas.', 0), (@ID, 'esMX', '¡Excelente $n! tienes todo lo que te pedí y ahora puedo hacer unas Botas de acechacriptas.', 0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619817090623034700.sql b/data/sql/updates/db_world/2021_05_06_05.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1619817090623034700.sql rename to data/sql/updates/db_world/2021_05_06_05.sql index 758dc7090a..8f1b7b890b 100644 --- a/data/sql/updates/pending_db_world/rev_1619817090623034700.sql +++ b/data/sql/updates/db_world/2021_05_06_05.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_04 -> 2021_05_06_05 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_04'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_04 2021_05_06_05 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619817090623034700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619817090623034700'); -- 9059 Las manoplas de acechacriptas @@ -726,4 +742,12 @@ INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `Ver DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', 'Está bien, la cosa funciona así: por cada muestra de valor que me traigas, yo te daré una libranza. Completas la orden de esa libranza y entregas el pedido al maestro de manada Mazadura. ¿Lo pillas? Bien. Ahora, largo de aquí.', 0), -(@ID, 'esMX', 'Está bien, la cosa funciona así: por cada muestra de valor que me traigas, yo te daré una libranza. Completas la orden de esa libranza y entregas el pedido al maestro de manada Mazadura. ¿Lo pillas? Bien. Ahora, largo de aquí.', 0); \ No newline at end of file +(@ID, 'esMX', 'Está bien, la cosa funciona así: por cada muestra de valor que me traigas, yo te daré una libranza. Completas la orden de esa libranza y entregas el pedido al maestro de manada Mazadura. ¿Lo pillas? Bien. Ahora, largo de aquí.', 0); +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619817128237023800.sql b/data/sql/updates/db_world/2021_05_06_06.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1619817128237023800.sql rename to data/sql/updates/db_world/2021_05_06_06.sql index c07a7d8397..583b1645f3 100644 --- a/data/sql/updates/pending_db_world/rev_1619817128237023800.sql +++ b/data/sql/updates/db_world/2021_05_06_06.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_05 -> 2021_05_06_06 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_05'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_05 2021_05_06_06 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619817128237023800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619817128237023800'); -- 9142 Libranza del artesano @@ -367,4 +383,12 @@ INSERT INTO `quest_request_items_locale` (`id`, `locale`, `CompletionText`, `Ver DELETE FROM `quest_offer_reward_locale` WHERE `id` = @ID AND `locale` IN('esES', 'esMX'); INSERT INTO `quest_offer_reward_locale` (`id`, `locale`, `RewardText`, `VerifiedBuild`) VALUES (@ID, 'esES', 'Estos hacen los mejores rollos de anguila del mundo. Eso es así - DE TODO EL MUNDO.', 0), -(@ID, 'esMX', 'Estos hacen los mejores rollos de anguila del mundo. Eso es así - DE TODO EL MUNDO.', 0); \ No newline at end of file +(@ID, 'esMX', 'Estos hacen los mejores rollos de anguila del mundo. Eso es así - DE TODO EL MUNDO.', 0); +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619822861176792300.sql b/data/sql/updates/db_world/2021_05_06_07.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1619822861176792300.sql rename to data/sql/updates/db_world/2021_05_06_07.sql index 9703d761ab..3ea42178b1 100644 --- a/data/sql/updates/pending_db_world/rev_1619822861176792300.sql +++ b/data/sql/updates/db_world/2021_05_06_07.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_06 -> 2021_05_06_07 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_06'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_06 2021_05_06_07 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619822861176792300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619822861176792300'); UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 8419; @@ -15,3 +31,12 @@ INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Lan (8419,0,1,"You dare interrupt our prayer? Execute them!",12,0,100,0,0,0,4381,0,"Twilight Idolater"), (8419,0,2,"You will make a fitting sacrifice to Ragnaros.",12,0,100,0,0,0,4382,0,"Twilight Idolater"), (8419,0,3,"Excellent, fresh blood has arrived.",12,0,100,0,0,0,4383,0,"Twilight Idolater"); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/db_world/2021_05_06_08.sql b/data/sql/updates/db_world/2021_05_06_08.sql new file mode 100644 index 0000000000..27247fc646 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_06_08.sql @@ -0,0 +1,30 @@ +-- DB update 2021_05_06_07 -> 2021_05_06_08 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_07'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_07 2021_05_06_08 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619823825635053300'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619823825635053300'); + +DELETE FROM `spell_scripts` WHERE `id`=24320; +INSERT INTO `spell_scripts` (`id`,`effIndex`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES +(24320,0,0,15,24321,2,0,0,0,0,0); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619824464997653100.sql b/data/sql/updates/db_world/2021_05_06_09.sql similarity index 65% rename from data/sql/updates/pending_db_world/rev_1619824464997653100.sql rename to data/sql/updates/db_world/2021_05_06_09.sql index 08a3e4f148..523777913f 100644 --- a/data/sql/updates/pending_db_world/rev_1619824464997653100.sql +++ b/data/sql/updates/db_world/2021_05_06_09.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_08 -> 2021_05_06_09 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_08'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_08 2021_05_06_09 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619824464997653100'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619824464997653100'); UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=4888, `OptionText`="The bank" WHERE `OptionBroadcastTextID`=7066; @@ -10,3 +26,12 @@ UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The wea UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=8521, `OptionText`="The stable master" WHERE `OptionBroadcastTextID` IN (45383,8521); UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The officers' lounge" WHERE `OptionBroadcastTextID`=9756; UPDATE `gossip_menu_option` SET `OptionBroadcastTextId`=0, `OptionText`="The battlemaster" WHERE `OptionBroadcastTextID` IN (19209, 10359); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/db_world/2021_05_06_10.sql b/data/sql/updates/db_world/2021_05_06_10.sql new file mode 100644 index 0000000000..7a7429ab19 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_06_10.sql @@ -0,0 +1,29 @@ +-- DB update 2021_05_06_09 -> 2021_05_06_10 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_09'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_09 2021_05_06_10 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619891302194258700'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619891302194258700'); +DELETE FROM `graveyard_zone` WHERE `ID`=852 AND `GhostZone`=1537; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES +(852, 1537, 469, 'Dun Morogh, Gates of Ironforge - Ironforge'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619958638373648000.sql b/data/sql/updates/db_world/2021_05_06_11.sql similarity index 84% rename from data/sql/updates/pending_db_world/rev_1619958638373648000.sql rename to data/sql/updates/db_world/2021_05_06_11.sql index 0dcff032c5..bd1532de8f 100644 --- a/data/sql/updates/pending_db_world/rev_1619958638373648000.sql +++ b/data/sql/updates/db_world/2021_05_06_11.sql @@ -1,3 +1,19 @@ +-- DB update 2021_05_06_10 -> 2021_05_06_11 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_10'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_10 2021_05_06_11 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619958638373648000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619958638373648000'); UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15402; @@ -33,3 +49,12 @@ INSERT INTO `smart_scripts` VALUES (1540202, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 1604, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Faction 1604'), (1540202, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Flags Immune To NPC\'s'), (1540202, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Apprentice Mirveda - Actionlist - Set Event Phase 0'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/db_world/2021_05_06_12.sql b/data/sql/updates/db_world/2021_05_06_12.sql new file mode 100644 index 0000000000..e1bcb3b526 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_06_12.sql @@ -0,0 +1,36 @@ +-- DB update 2021_05_06_11 -> 2021_05_06_12 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_11'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_11 2021_05_06_12 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619974489991847400'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619974489991847400'); + +DELETE FROM `pool_creature` WHERE (`guid` IN (14616, 134014, 134015, 134016, 134017, 134018, 134019)); +INSERT INTO `pool_creature` VALUES +(14616, 1003, 50, 'Or\'Kalar (2773) - Spawn 1'), +(134014, 1003, 10, 'Or\'Kalar (2773) - Spawn 2'), +(134015, 1003, 10, 'Or\'Kalar (2773) - Spawn 3'), +(134016, 1003, 10, 'Or\'Kalar (2773) - Spawn 4'), +(134017, 1003, 10, 'Or\'Kalar (2773) - Spawn 5'), +(134018, 1003, 5, 'Or\'Kalar (2773) - Spawn 6'), +(134019, 1003, 5, 'Or\'Kalar (2773) - Spawn 7'); + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/db_world/2021_05_06_13.sql b/data/sql/updates/db_world/2021_05_06_13.sql new file mode 100644 index 0000000000..f1ff5299bb --- /dev/null +++ b/data/sql/updates/db_world/2021_05_06_13.sql @@ -0,0 +1,32 @@ +-- DB update 2021_05_06_12 -> 2021_05_06_13 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_12'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_12 2021_05_06_13 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1620033619588576561'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620033619588576561'); + +DELETE FROM `gameobject_loot_template` WHERE `item`=7338; -- Mood Ring +DELETE FROM `gameobject_loot_template` WHERE `item`=7339; -- Miniscule Diamond Ring +DELETE FROM `gameobject_loot_template` WHERE `item`=7341; -- Cubic Zirconia Ring +DELETE FROM `gameobject_loot_template` WHERE `item`=7342; -- Silver Piffeny Band + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619823825635053300.sql b/data/sql/updates/pending_db_world/rev_1619823825635053300.sql deleted file mode 100644 index 18066b245d..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619823825635053300.sql +++ /dev/null @@ -1,5 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619823825635053300'); - -DELETE FROM `spell_scripts` WHERE `id`=24320; -INSERT INTO `spell_scripts` (`id`,`effIndex`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES -(24320,0,0,15,24321,2,0,0,0,0,0); diff --git a/data/sql/updates/pending_db_world/rev_1619891302194258700.sql b/data/sql/updates/pending_db_world/rev_1619891302194258700.sql deleted file mode 100644 index adcb552147..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619891302194258700.sql +++ /dev/null @@ -1,4 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619891302194258700'); -DELETE FROM `graveyard_zone` WHERE `ID`=852 AND `GhostZone`=1537; -INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES -(852, 1537, 469, 'Dun Morogh, Gates of Ironforge - Ironforge'); diff --git a/data/sql/updates/pending_db_world/rev_1619974489991847400.sql b/data/sql/updates/pending_db_world/rev_1619974489991847400.sql deleted file mode 100644 index f9ae7ef889..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619974489991847400.sql +++ /dev/null @@ -1,11 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619974489991847400'); - -DELETE FROM `pool_creature` WHERE (`guid` IN (14616, 134014, 134015, 134016, 134017, 134018, 134019)); -INSERT INTO `pool_creature` VALUES -(14616, 1003, 50, 'Or\'Kalar (2773) - Spawn 1'), -(134014, 1003, 10, 'Or\'Kalar (2773) - Spawn 2'), -(134015, 1003, 10, 'Or\'Kalar (2773) - Spawn 3'), -(134016, 1003, 10, 'Or\'Kalar (2773) - Spawn 4'), -(134017, 1003, 10, 'Or\'Kalar (2773) - Spawn 5'), -(134018, 1003, 5, 'Or\'Kalar (2773) - Spawn 6'), -(134019, 1003, 5, 'Or\'Kalar (2773) - Spawn 7'); diff --git a/data/sql/updates/pending_db_world/rev_1620033619588576561.sql b/data/sql/updates/pending_db_world/rev_1620033619588576561.sql deleted file mode 100644 index 37c823145f..0000000000 --- a/data/sql/updates/pending_db_world/rev_1620033619588576561.sql +++ /dev/null @@ -1,7 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620033619588576561'); - -DELETE FROM `gameobject_loot_template` WHERE `item`=7338; -- Mood Ring -DELETE FROM `gameobject_loot_template` WHERE `item`=7339; -- Miniscule Diamond Ring -DELETE FROM `gameobject_loot_template` WHERE `item`=7341; -- Cubic Zirconia Ring -DELETE FROM `gameobject_loot_template` WHERE `item`=7342; -- Silver Piffeny Band - From db7d754f3fdd96aa4221920eb6a504e77f3002e1 Mon Sep 17 00:00:00 2001 From: Kargatum Date: Fri, 7 May 2021 02:16:44 +0700 Subject: [PATCH 100/108] feat(Core/Common): delete lib game-interface inherited (#5333) Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- src/common/CMakeLists.txt | 2 - src/common/Collision/DynamicTree.cpp | 16 +- .../Collision/Management/IMMAPManager.h | 2 +- .../Collision/Management/IVMapManager.h | 3 +- .../Collision/Management/MMapFactory.cpp | 9 +- src/common/Collision/Management/MMapFactory.h | 4 +- .../Collision/Management/MMapManager.cpp | 175 ++++++++---------- src/common/Collision/Management/MMapManager.h | 21 +-- .../Collision/Management/VMapFactory.cpp | 9 +- src/common/Collision/Management/VMapFactory.h | 10 +- .../Collision/Management/VMapManager2.cpp | 105 +++++++---- .../Collision/Management/VMapManager2.h | 24 ++- src/common/Collision/Maps/MapDefines.h | 53 ++++++ src/common/Collision/Maps/MapTree.cpp | 6 + src/common/Collision/Maps/TileAssembler.cpp | 2 +- .../Collision/Models/GameObjectModel.cpp | 65 +++---- src/common/Collision/Models/GameObjectModel.h | 58 +++--- src/common/Collision/Models/ModelInstance.h | 6 +- src/common/Collision/Models/WorldModel.cpp | 19 ++ src/common/Collision/Models/WorldModel.h | 14 +- src/common/Collision/VMapTools.h | 4 +- src/common/PrecompiledHeaders/commonPCH.h | 2 - src/common/Utilities/Util.cpp | 3 +- src/server/game/Conditions/DisableMgr.cpp | 33 +++- src/server/game/Conditions/DisableMgr.h | 12 +- .../game/Entities/Creature/CreatureGroups.h | 4 +- .../game/Entities/GameObject/GameObject.cpp | 30 ++- .../game/Entities/GameObject/GameObject.h | 1 + .../game/Entities/Transport/Transport.cpp | 4 +- src/server/game/Entities/Unit/Unit.cpp | 3 +- src/server/game/Grids/GridDefines.h | 6 +- src/server/game/Handlers/PetHandler.cpp | 3 +- src/server/game/Maps/Map.cpp | 6 +- .../HomeMovementGenerator.cpp | 5 +- .../MovementGenerators/PathGenerator.cpp | 2 +- .../MovementGenerators/PathGenerator.h | 1 + .../game/Spells/Auras/SpellAuraEffects.cpp | 3 +- src/server/game/Spells/Spell.cpp | 8 +- src/server/game/World/World.cpp | 20 +- src/server/shared/SharedDefines.h | 38 ---- src/tools/mesh_extractor/Utils.h | 4 +- src/tools/mmaps_generator/MapBuilder.cpp | 33 +--- src/tools/mmaps_generator/PathCommon.h | 14 -- src/tools/mmaps_generator/TerrainBuilder.cpp | 3 +- src/tools/mmaps_generator/VMapExtensions.cpp | 58 ------ 45 files changed, 428 insertions(+), 475 deletions(-) create mode 100644 src/common/Collision/Maps/MapDefines.h delete mode 100644 src/tools/mmaps_generator/VMapExtensions.cpp diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index d06edcaf3b..ebd34fe98f 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -49,8 +49,6 @@ target_include_directories(common ${CMAKE_CURRENT_BINARY_DIR}) target_link_libraries(common - PRIVATE - game-interface PUBLIC acore-core-interface ace diff --git a/src/common/Collision/DynamicTree.cpp b/src/common/Collision/DynamicTree.cpp index c7f8c87d2e..2af4d36587 100644 --- a/src/common/Collision/DynamicTree.cpp +++ b/src/common/Collision/DynamicTree.cpp @@ -5,16 +5,12 @@ */ #include "DynamicTree.h" -//#include "QuadTree.h" -//#include "RegularGrid.h" #include "BoundingIntervalHierarchyWrapper.h" - #include "Log.h" #include "RegularGrid.h" #include "Timer.h" #include "GameObjectModel.h" #include "ModelInstance.h" - #include #include #include @@ -23,10 +19,8 @@ using VMAP::ModelInstance; namespace { - int CHECK_TREE_PERIOD = 200; - -} // namespace +} template<> struct HashTrait< GameObjectModel> { @@ -44,15 +38,9 @@ template<> struct BoundsTrait< GameObjectModel> static void getBounds2(const GameObjectModel* g, G3D::AABox& out) { out = g->getBounds();} }; -/* -static bool operator == (const GameObjectModel& mdl, const GameObjectModel& mdl2){ - return &mdl == &mdl2; -} -*/ - typedef RegularGrid2D> ParentTree; -struct DynTreeImpl : public ParentTree/*, public Intersectable*/ +struct DynTreeImpl : public ParentTree { typedef GameObjectModel Model; typedef ParentTree base; diff --git a/src/common/Collision/Management/IMMAPManager.h b/src/common/Collision/Management/IMMAPManager.h index ec05fc0bdd..a558ab2c0b 100644 --- a/src/common/Collision/Management/IMMAPManager.h +++ b/src/common/Collision/Management/IMMAPManager.h @@ -35,4 +35,4 @@ namespace MMAP }; } -#endif \ No newline at end of file +#endif diff --git a/src/common/Collision/Management/IVMapManager.h b/src/common/Collision/Management/IVMapManager.h index aa5cd6037e..7d999c779b 100644 --- a/src/common/Collision/Management/IVMapManager.h +++ b/src/common/Collision/Management/IVMapManager.h @@ -18,7 +18,6 @@ This is the minimum interface to the VMapMamager. namespace VMAP { - enum VMAP_LOAD_RESULT { VMAP_LOAD_RESULT_ERROR, @@ -83,6 +82,6 @@ namespace VMAP virtual bool getAreaInfo(unsigned int pMapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const = 0; virtual bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 ReqLiquidType, float& level, float& floor, uint32& type) const = 0; }; - } + #endif diff --git a/src/common/Collision/Management/MMapFactory.cpp b/src/common/Collision/Management/MMapFactory.cpp index b5ea34a506..78dd941f87 100644 --- a/src/common/Collision/Management/MMapFactory.cpp +++ b/src/common/Collision/Management/MMapFactory.cpp @@ -5,7 +5,6 @@ */ #include "MMapFactory.h" -#include "World.h" #include namespace MMAP @@ -23,12 +22,6 @@ namespace MMAP return g_MMapManager; } - bool MMapFactory::IsPathfindingEnabled(const Map* map) - { - if (!map) return false; - return !forbiddenMaps[map->GetId()] && (sWorld->getBoolConfig(CONFIG_ENABLE_MMAPS) ? true : map->IsBattlegroundOrArena()); - } - void MMapFactory::InitializeDisabledMaps() { memset(&forbiddenMaps, 0, sizeof(forbiddenMaps)); @@ -46,4 +39,4 @@ namespace MMAP g_MMapManager = nullptr; } } -} \ No newline at end of file +} diff --git a/src/common/Collision/Management/MMapFactory.h b/src/common/Collision/Management/MMapFactory.h index 30d440870d..b25ccce698 100644 --- a/src/common/Collision/Management/MMapFactory.h +++ b/src/common/Collision/Management/MMapFactory.h @@ -10,8 +10,7 @@ #include "MMapManager.h" #include "DetourAlloc.h" #include "DetourNavMesh.h" -#include "Navigation/DetourExtended.h" -#include "Map.h" +#include "DetourExtended.h" #include namespace MMAP @@ -31,7 +30,6 @@ namespace MMAP public: static MMapManager* createOrGetMMapManager(); static void clear(); - static bool IsPathfindingEnabled(const Map* map); static void InitializeDisabledMaps(); static bool forbiddenMaps[1000]; }; diff --git a/src/common/Collision/Management/MMapManager.cpp b/src/common/Collision/Management/MMapManager.cpp index 1ccb133229..40fa342779 100644 --- a/src/common/Collision/Management/MMapManager.cpp +++ b/src/common/Collision/Management/MMapManager.cpp @@ -4,9 +4,10 @@ * Copyright (C) 2005-2009 MaNGOS */ -#include "Config.h" -#include "MapManager.h" #include "MMapManager.h" +#include "Config.h" +#include "Errors.h" +#include "MapDefines.h" #include "Log.h" #include "StringFormat.h" @@ -25,11 +26,41 @@ namespace MMAP // if we had, tiles in MMapData->mmapLoadedTiles, their actual data is lost! } + void MMapManager::InitializeThreadUnsafe(const std::vector& mapIds) + { + // the caller must pass the list of all mapIds that will be used in the VMapManager2 lifetime + for (const uint32& mapId : mapIds) + loadedMMaps.emplace(mapId, nullptr); + + thread_safe_environment = false; + } + + MMapDataSet::const_iterator MMapManager::GetMMapData(uint32 mapId) const + { + // return the iterator if found or end() if not found/NULL + MMapDataSet::const_iterator itr = loadedMMaps.find(mapId); + if (itr != loadedMMaps.cend() && !itr->second) + itr = loadedMMaps.cend(); + + return itr; + } + bool MMapManager::loadMapData(uint32 mapId) { // we already have this map loaded? - if (loadedMMaps.find(mapId) != loadedMMaps.end()) - return true; + MMapDataSet::iterator itr = loadedMMaps.find(mapId); + if (itr != loadedMMaps.end()) + { + if (itr->second) + return true; + } + else + { + if (thread_safe_environment) + itr = loadedMMaps.insert(MMapDataSet::value_type(mapId, nullptr)).first; + else + ASSERT(false, "Invalid mapId %u passed to MMapManager after startup in thread unsafe environment", mapId); + } // load and init dtNavMesh - read parameters from file std::string fileName = acore::StringFormat(MAP_FILE_NAME_FORMAT, sConfigMgr->GetOption("DataDir", ".").c_str(), mapId); @@ -37,18 +68,16 @@ namespace MMAP FILE* file = fopen(fileName.c_str(), "rb"); if (!file) { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("maps", "MMAP:loadMapData: Error: Could not open mmap file '%s'", fileName.c_str()); -#endif return false; } dtNavMeshParams params; - int count = fread(¶ms, sizeof(dtNavMeshParams), 1, file); + uint32 count = uint32(fread(¶ms, sizeof(dtNavMeshParams), 1, file)); fclose(file); if (count != 1) { - ;//TC_LOG_DEBUG(LOG_FILTER_MAPS, "MMAP:loadMapData: Error: Could not read params from file '%s'", fileName); + LOG_DEBUG("maps", "MMAP:loadMapData: Error: Could not read params from file '%s'", fileName.c_str()); return false; } @@ -61,15 +90,11 @@ namespace MMAP return false; } -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - LOG_DEBUG("server", "MMAP:loadMapData: Loaded %03i.mmap", mapId); -#endif + LOG_DEBUG("maps", "MMAP:loadMapData: Loaded %03i.mmap", mapId); // store inside our map list MMapData* mmap_data = new MMapData(mesh); - mmap_data->mmapLoadedTiles.clear(); - - loadedMMaps.insert(std::pair(mapId, mmap_data)); + itr->second = mmap_data; return true; } @@ -78,22 +103,8 @@ namespace MMAP return uint32(x << 16 | y); } - std::shared_mutex& MMapManager::GetMMapLock(uint32 mapId) - { - Map* map = sMapMgr->FindBaseMap(mapId); - if (!map) - { - LOG_INFO("misc", "ZOMG! MoveMaps: BaseMap not found!"); - return this->MMapLock; - } - - return map->GetMMapLock(); - } - bool MMapManager::loadMap(uint32 mapId, int32 x, int32 y) { - std::unique_lock guard(MMapManagerLock); - // make sure the mmap is loaded and ready to load tiles if (!loadMapData(mapId)) return false; @@ -104,7 +115,7 @@ namespace MMAP // check if we already have this tile loaded uint32 packedGridPos = packTileID(x, y); - if (mmap->mmapLoadedTiles.find(packedGridPos) != mmap->mmapLoadedTiles.end()) + if (mmap->loadedTileRefs.find(packedGridPos) != mmap->loadedTileRefs.end()) { LOG_ERROR("server", "MMAP:loadMap: Asked to load already loaded navmesh tile. %03u%02i%02i.mmtile", mapId, x, y); return false; @@ -151,26 +162,18 @@ namespace MMAP dtTileRef tileRef = 0; - dtStatus stat; - { - std::unique_lock guard(GetMMapLock(mapId)); - stat = mmap->navMesh->addTile(data, fileHeader.size, DT_TILE_FREE_DATA, 0, &tileRef); - } - // memory allocated for data is now managed by detour, and will be deallocated when the tile is removed - if (stat == DT_SUCCESS) + if (dtStatusSucceed(mmap->navMesh->addTile(data, fileHeader.size, DT_TILE_FREE_DATA, 0, &tileRef))) { - mmap->mmapLoadedTiles.insert(std::pair(packedGridPos, tileRef)); + mmap->loadedTileRefs.insert(std::pair(packedGridPos, tileRef)); ++loadedTiles; -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) dtMeshHeader* header = (dtMeshHeader*)data; - LOG_DEBUG("server", "MMAP:loadMap: Loaded mmtile %03i[%02i,%02i] into %03i[%02i,%02i]", mapId, x, y, mapId, header->x, header->y); -#endif + LOG_DEBUG("maps", "MMAP:loadMap: Loaded mmtile %03i[%02i,%02i] into %03i[%02i,%02i]", mapId, x, y, mapId, header->x, header->y); return true; } else { - LOG_ERROR("server", "MMAP:loadMap: Could not load %03u%02i%02i.mmtile into navmesh", mapId, x, y); + LOG_ERROR("maps", "MMAP:loadMap: Could not load %03u%02i%02i.mmtile into navmesh", mapId, x, y); dtFree(data); return false; } @@ -180,10 +183,9 @@ namespace MMAP bool MMapManager::unloadMap(uint32 mapId, int32 x, int32 y) { - std::unique_lock guard(MMapManagerLock); - // check if we have this map loaded - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) { // file may not exist, therefore not loaded #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) @@ -192,11 +194,11 @@ namespace MMAP return false; } - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; // check if we have this tile loaded uint32 packedGridPos = packTileID(x, y); - if (mmap->mmapLoadedTiles.find(packedGridPos) == mmap->mmapLoadedTiles.end()) + if (mmap->loadedTileRefs.find(packedGridPos) == mmap->loadedTileRefs.end()) { // file may not exist, therefore not loaded #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) @@ -205,16 +207,10 @@ namespace MMAP return false; } - dtTileRef tileRef = mmap->mmapLoadedTiles[packedGridPos]; - - dtStatus status; - { - std::unique_lock guard(GetMMapLock(mapId)); - status = mmap->navMesh->removeTile(tileRef, nullptr, nullptr); - } + dtTileRef tileRef = mmap->loadedTileRefs[packedGridPos]; // unload, and mark as non loaded - if (status != DT_SUCCESS) + if (dtStatusFailed(mmap->navMesh->removeTile(tileRef, nullptr, nullptr))) { // this is technically a memory leak // if the grid is later reloaded, dtNavMesh::addTile will return error but no extra memory is used @@ -224,11 +220,9 @@ namespace MMAP } else { - mmap->mmapLoadedTiles.erase(packedGridPos); + mmap->loadedTileRefs.erase(packedGridPos); --loadedTiles; -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - LOG_DEBUG("server", "MMAP:unloadMap: Unloaded mmtile %03i[%02i,%02i] from %03i", mapId, x, y, mapId); -#endif + LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded mmtile %03i[%02i,%02i] from %03i", mapId, x, y, mapId); return true; } @@ -237,70 +231,52 @@ namespace MMAP bool MMapManager::unloadMap(uint32 mapId) { - std::unique_lock guard(MMapManagerLock); - - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::iterator itr = loadedMMaps.find(mapId); + if (itr == loadedMMaps.end() || !itr->second) { // file may not exist, therefore not loaded -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map %03u", mapId); -#endif return false; } // unload all tiles from given map - MMapData* mmap = loadedMMaps[mapId]; - for (MMapTileSet::iterator i = mmap->mmapLoadedTiles.begin(); i != mmap->mmapLoadedTiles.end(); ++i) + MMapData* mmap = itr->second; + for (auto i : mmap->loadedTileRefs) { - uint32 x = (i->first >> 16); - uint32 y = (i->first & 0x0000FFFF); + uint32 x = (i.first >> 16); + uint32 y = (i.first & 0x0000FFFF); - dtStatus status; - { - std::unique_lock guard(GetMMapLock(mapId)); - status = mmap->navMesh->removeTile(i->second, nullptr, nullptr); - } - - if (status != DT_SUCCESS) + if (dtStatusFailed(mmap->navMesh->removeTile(i.second, nullptr, nullptr))) LOG_ERROR("server", "MMAP:unloadMap: Could not unload %03u%02i%02i.mmtile from navmesh", mapId, x, y); else { --loadedTiles; -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("server", "MMAP:unloadMap: Unloaded mmtile %03i[%02i,%02i] from %03i", mapId, x, y, mapId); -#endif } } delete mmap; - loadedMMaps.erase(mapId); -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - LOG_DEBUG("server", "MMAP:unloadMap: Unloaded %03i.mmap", mapId); -#endif + itr->second = nullptr; + LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded %03i.mmap", mapId); return true; } bool MMapManager::unloadMapInstance(uint32 mapId, uint32 instanceId) { - std::unique_lock guard(MMapManagerLock); - // check if we have this map loaded - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) { // file may not exist, therefore not loaded -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded navmesh map %03u", mapId); -#endif return false; } - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; if (mmap->navMeshQueries.find(instanceId) == mmap->navMeshQueries.end()) { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded dtNavMeshQuery mapId %03u instanceId %u", mapId, instanceId); -#endif return false; } @@ -308,47 +284,44 @@ namespace MMAP dtFreeNavMeshQuery(query); mmap->navMeshQueries.erase(instanceId); -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - LOG_DEBUG("server", "MMAP:unloadMapInstance: Unloaded mapId %03u instanceId %u", mapId, instanceId); -#endif + LOG_DEBUG("maps", "MMAP:unloadMapInstance: Unloaded mapId %03u instanceId %u", mapId, instanceId); return true; } dtNavMesh const* MMapManager::GetNavMesh(uint32 mapId) { - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) return nullptr; - return loadedMMaps[mapId]->navMesh; + return itr->second->navMesh; } dtNavMeshQuery const* MMapManager::GetNavMeshQuery(uint32 mapId, uint32 instanceId) { - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) return nullptr; - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; if (mmap->navMeshQueries.find(instanceId) == mmap->navMeshQueries.end()) { - // pussywizard: different instances of the same map shouldn't access this simultaneously - std::unique_lock guard(GetMMapLock(mapId)); // check again after acquiring mutex if (mmap->navMeshQueries.find(instanceId) == mmap->navMeshQueries.end()) { // allocate mesh query dtNavMeshQuery* query = dtAllocNavMeshQuery(); ASSERT(query); - if (DT_SUCCESS != query->init(mmap->navMesh, 1024)) + + if (dtStatusFailed(query->init(mmap->navMesh, 1024))) { dtFreeNavMeshQuery(query); LOG_ERROR("server", "MMAP:GetNavMeshQuery: Failed to initialize dtNavMeshQuery for mapId %03u instanceId %u", mapId, instanceId); return nullptr; } -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) - LOG_DEBUG("server", "MMAP:GetNavMeshQuery: created dtNavMeshQuery for mapId %03u instanceId %u", mapId, instanceId); -#endif + LOG_DEBUG("maps", "MMAP:GetNavMeshQuery: created dtNavMeshQuery for mapId %03u instanceId %u", mapId, instanceId); mmap->navMeshQueries.insert(std::pair(instanceId, query)); } } diff --git a/src/common/Collision/Management/MMapManager.h b/src/common/Collision/Management/MMapManager.h index d71e35b18e..d2ebb3b0d8 100644 --- a/src/common/Collision/Management/MMapManager.h +++ b/src/common/Collision/Management/MMapManager.h @@ -34,7 +34,8 @@ namespace MMAP // dummy struct to hold map's mmap data struct MMapData { - MMapData(dtNavMesh* mesh) : navMesh(mesh) {} + MMapData(dtNavMesh* mesh) : navMesh(mesh) { } + ~MMapData() { for (NavMeshQuerySet::iterator i = navMeshQueries.begin(); i != navMeshQueries.end(); ++i) @@ -44,11 +45,10 @@ namespace MMAP dtFreeNavMesh(navMesh); } - dtNavMesh* navMesh; - // we have to use single dtNavMeshQuery for every instance, since those are not thread safe - NavMeshQuerySet navMeshQueries; // instanceId to query - MMapTileSet mmapLoadedTiles; // maps [map grid coords] to [dtTile] + NavMeshQuerySet navMeshQueries; // instanceId to query + dtNavMesh* navMesh; + MMapTileSet loadedTileRefs; // maps [map grid coords] to [dtTile] }; typedef std::unordered_map MMapDataSet; @@ -58,9 +58,10 @@ namespace MMAP class MMapManager { public: - MMapManager() : loadedTiles(0) {} + MMapManager() : loadedTiles(0), thread_safe_environment(true) { } ~MMapManager(); + void InitializeThreadUnsafe(const std::vector& mapIds); bool loadMap(uint32 mapId, int32 x, int32 y); bool unloadMap(uint32 mapId, int32 x, int32 y); bool unloadMap(uint32 mapId); @@ -73,18 +74,14 @@ namespace MMAP uint32 getLoadedTilesCount() const { return loadedTiles; } uint32 getLoadedMapsCount() const { return loadedMMaps.size(); } - std::shared_mutex& GetMMapLock(uint32 mapId); - std::shared_mutex& GetMMapGeneralLock() { return MMapLock; } // pussywizard: in case a per-map mutex can't be found, should never happen - std::shared_mutex& GetManagerLock() { return MMapManagerLock; } private: bool loadMapData(uint32 mapId); uint32 packTileID(int32 x, int32 y); + MMapDataSet::const_iterator GetMMapData(uint32 mapId) const; MMapDataSet loadedMMaps; uint32 loadedTiles; - - std::shared_mutex MMapManagerLock; - std::shared_mutex MMapLock; // pussywizard: in case a per-map mutex can't be found, should never happen + bool thread_safe_environment; }; } diff --git a/src/common/Collision/Management/VMapFactory.cpp b/src/common/Collision/Management/VMapFactory.cpp index 36d22ac5b5..5e9a65eda2 100644 --- a/src/common/Collision/Management/VMapFactory.cpp +++ b/src/common/Collision/Management/VMapFactory.cpp @@ -9,14 +9,15 @@ namespace VMAP { - IVMapManager* gVMapManager = nullptr; + VMapManager2* gVMapManager = nullptr; //=============================================== // just return the instance - IVMapManager* VMapFactory::createOrGetVMapManager() + VMapManager2* VMapFactory::createOrGetVMapManager() { - if (gVMapManager == 0) - gVMapManager = new VMapManager2(); // should be taken from config ... Please change if you like :-) + if (!gVMapManager) + gVMapManager = new VMapManager2(); + return gVMapManager; } diff --git a/src/common/Collision/Management/VMapFactory.h b/src/common/Collision/Management/VMapFactory.h index d752ae50cc..03fe569766 100644 --- a/src/common/Collision/Management/VMapFactory.h +++ b/src/common/Collision/Management/VMapFactory.h @@ -9,20 +9,16 @@ #include "IVMapManager.h" -/** -This is the access point to the VMapManager. -*/ - +// This is the access point to the VMapManager. namespace VMAP { - //=========================================================== + class VMapManager2; class VMapFactory { public: - static IVMapManager* createOrGetVMapManager(); + static VMapManager2* createOrGetVMapManager(); static void clear(); }; - } #endif diff --git a/src/common/Collision/Management/VMapManager2.cpp b/src/common/Collision/Management/VMapManager2.cpp index 7284762861..ff819e1336 100644 --- a/src/common/Collision/Management/VMapManager2.cpp +++ b/src/common/Collision/Management/VMapManager2.cpp @@ -15,21 +15,19 @@ * with this program. If not, see . */ -#include -#include -#include -#include #include "VMapManager2.h" #include "MapTree.h" #include "ModelInstance.h" #include "WorldModel.h" -#include -#include -#include "DisableMgr.h" -#include "DBCStores.h" +#include "MapDefines.h" #include "Log.h" #include "VMapDefinitions.h" -#include "GridDefines.h" +#include "Errors.h" +#include +#include +#include +#include +#include using G3D::Vector3; @@ -38,20 +36,32 @@ namespace VMAP VMapManager2::VMapManager2() { GetLiquidFlagsPtr = &GetLiquidFlagsDummy; + IsVMAPDisabledForPtr = &IsVMAPDisabledForDummy; + thread_safe_environment = true; } - VMapManager2::~VMapManager2(void) + VMapManager2::~VMapManager2() { for (InstanceTreeMap::iterator i = iInstanceMapTrees.begin(); i != iInstanceMapTrees.end(); ++i) { delete i->second; } + for (ModelFileMap::iterator i = iLoadedModelFiles.begin(); i != iLoadedModelFiles.end(); ++i) { delete i->second.getModel(); } } + void VMapManager2::InitializeThreadUnsafe(const std::vector& mapIds) + { + // the caller must pass the list of all mapIds that will be used in the VMapManager2 lifetime + for (const uint32& mapId : mapIds) + iInstanceMapTrees.emplace(mapId, nullptr); + + thread_safe_environment = false; + } + Vector3 VMapManager2::convertPositionToInternalRep(float x, float y, float z) const { Vector3 pos; @@ -63,6 +73,16 @@ namespace VMAP return pos; } + InstanceTreeMap::const_iterator VMapManager2::GetMapTree(uint32 mapId) const + { + // return the iterator if found or end() if not found/NULL + InstanceTreeMap::const_iterator itr = iInstanceMapTrees.find(mapId); + if (itr != iInstanceMapTrees.cend() && !itr->second) + itr = iInstanceMapTrees.cend(); + + return itr; + } + // move to MapTree too? std::string VMapManager2::getMapFileName(unsigned int mapId) { @@ -92,6 +112,15 @@ namespace VMAP { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); if (instanceTree == iInstanceMapTrees.end()) + { + if (thread_safe_environment) + instanceTree = iInstanceMapTrees.insert(InstanceTreeMap::value_type(mapId, nullptr)).first; + else + ASSERT(false, "Invalid mapId %u tile [%u, %u] passed to VMapManager2 after startup in thread unsafe environment", + mapId, tileX, tileY); + } + + if (!instanceTree->second) { std::string mapFileName = getMapFileName(mapId); StaticMapTree* newTree = new StaticMapTree(mapId, basePath); @@ -100,7 +129,7 @@ namespace VMAP delete newTree; return false; } - instanceTree = iInstanceMapTrees.insert(InstanceTreeMap::value_type(mapId, newTree)).first; + instanceTree->second = newTree; } return instanceTree->second->LoadMapTile(tileX, tileY, this); @@ -109,13 +138,13 @@ namespace VMAP void VMapManager2::unloadMap(unsigned int mapId) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); - if (instanceTree != iInstanceMapTrees.end()) + if (instanceTree != iInstanceMapTrees.end() && instanceTree->second) { instanceTree->second->UnloadMap(this); if (instanceTree->second->numLoadedTiles() == 0) { delete instanceTree->second; - iInstanceMapTrees.erase(mapId); + instanceTree->second = nullptr; } } } @@ -123,25 +152,25 @@ namespace VMAP void VMapManager2::unloadMap(unsigned int mapId, int x, int y) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); - if (instanceTree != iInstanceMapTrees.end()) + if (instanceTree != iInstanceMapTrees.end() && instanceTree->second) { instanceTree->second->UnloadMapTile(x, y, this); if (instanceTree->second->numLoadedTiles() == 0) { delete instanceTree->second; - iInstanceMapTrees.erase(mapId); + instanceTree->second = nullptr; } } } bool VMapManager2::isInLineOfSight(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2) { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_VMAP_CHECKS) - if (!isLineOfSightCalcEnabled() || DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, nullptr, VMAP_DISABLE_LOS)) +#if defined(ENABLE_VMAP_CHECKS) + if (!isLineOfSightCalcEnabled() || IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LOS)) return true; #endif - InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1); @@ -161,11 +190,11 @@ namespace VMAP */ bool VMapManager2::getObjectHitPos(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2, float& rx, float& ry, float& rz, float modifyDist) { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_VMAP_CHECKS) - if (isLineOfSightCalcEnabled() && !DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, nullptr, VMAP_DISABLE_LOS)) +#if defined(ENABLE_VMAP_CHECKS) + if (isLineOfSightCalcEnabled() && !IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LOS)) #endif { - InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1); @@ -193,11 +222,11 @@ namespace VMAP float VMapManager2::getHeight(unsigned int mapId, float x, float y, float z, float maxSearchDist) { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_VMAP_CHECKS) - if (isHeightCalcEnabled() && !DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, nullptr, VMAP_DISABLE_HEIGHT)) +#if defined(ENABLE_VMAP_CHECKS) + if (isHeightCalcEnabled() && !IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_HEIGHT)) #endif { - InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos = convertPositionToInternalRep(x, y, z); @@ -214,11 +243,11 @@ namespace VMAP bool VMapManager2::getAreaInfo(unsigned int mapId, float x, float y, float& z, uint32& flags, int32& adtId, int32& rootId, int32& groupId) const { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_VMAP_CHECKS) - if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, nullptr, VMAP_DISABLE_AREAFLAG)) +#if defined(ENABLE_VMAP_CHECKS) + if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG)) #endif { - InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos = convertPositionToInternalRep(x, y, z); @@ -234,11 +263,11 @@ namespace VMAP bool VMapManager2::GetLiquidLevel(uint32 mapId, float x, float y, float z, uint8 reqLiquidType, float& level, float& floor, uint32& type) const { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_VMAP_CHECKS) - if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, nullptr, VMAP_DISABLE_LIQUIDSTATUS)) +#if defined(ENABLE_VMAP_CHECKS) + if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS)) #endif { - InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { LocationInfo info; @@ -262,7 +291,7 @@ namespace VMAP WorldModel* VMapManager2::acquireModelInstance(const std::string& basepath, const std::string& filename) { //! Critical section, thread safe access to iLoadedModelFiles - std::lock_guard guard(LoadedModelFilesLock); + std::lock_guard lock(LoadedModelFilesLock); ModelFileMap::iterator model = iLoadedModelFiles.find(filename); if (model == iLoadedModelFiles.end()) @@ -274,20 +303,19 @@ namespace VMAP delete worldmodel; return nullptr; } -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("maps", "VMapManager2: loading file '%s%s'", basepath.c_str(), filename.c_str()); -#endif model = iLoadedModelFiles.insert(std::pair(filename, ManagedModel())).first; model->second.setModel(worldmodel); } - //model->second.incRefCount(); + return model->second.getModel(); } void VMapManager2::releaseModelInstance(const std::string& filename) { //! Critical section, thread safe access to iLoadedModelFiles - std::lock_guard guard(LoadedModelFilesLock); + std::lock_guard lock(LoadedModelFilesLock); + ModelFileMap::iterator model = iLoadedModelFiles.find(filename); if (model == iLoadedModelFiles.end()) { @@ -296,9 +324,7 @@ namespace VMAP } if (model->second.decRefCount() == 0) { -#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) LOG_DEBUG("maps", "VMapManager2: unloading file '%s'", filename.c_str()); -#endif delete model->second.getModel(); iLoadedModelFiles.erase(model); } @@ -309,4 +335,9 @@ namespace VMAP return StaticMapTree::CanLoadMap(std::string(basePath), mapId, x, y); } + void VMapManager2::getInstanceMapTree(InstanceTreeMap& instanceMapTree) + { + instanceMapTree = iInstanceMapTrees; + } + } // namespace VMAP diff --git a/src/common/Collision/Management/VMapManager2.h b/src/common/Collision/Management/VMapManager2.h index 71fcbeaa33..514f03600c 100644 --- a/src/common/Collision/Management/VMapManager2.h +++ b/src/common/Collision/Management/VMapManager2.h @@ -19,9 +19,10 @@ #define _VMAPMANAGER2_H #include "IVMapManager.h" -#include "Define.h" +#include "Common.h" #include #include +#include //=========================================================== @@ -65,12 +66,22 @@ namespace VMAP typedef std::unordered_map InstanceTreeMap; typedef std::unordered_map ModelFileMap; + enum DisableTypes + { + VMAP_DISABLE_AREAFLAG = 0x1, + VMAP_DISABLE_HEIGHT = 0x2, + VMAP_DISABLE_LOS = 0x4, + VMAP_DISABLE_LIQUIDSTATUS = 0x8 + }; + class VMapManager2 : public IVMapManager { protected: // Tree to check collision ModelFileMap iLoadedModelFiles; InstanceTreeMap iInstanceMapTrees; + bool thread_safe_environment; + // Mutex for iLoadedModelFiles std::mutex LoadedModelFilesLock; @@ -78,6 +89,9 @@ namespace VMAP /* void _unloadMap(uint32 pMapId, uint32 x, uint32 y); */ static uint32 GetLiquidFlagsDummy(uint32) { return 0; } + static bool IsVMAPDisabledForDummy(uint32 /*entry*/, uint8 /*flags*/) { return false; } + + InstanceTreeMap::const_iterator GetMapTree(uint32 mapId) const; public: // public for debug @@ -87,6 +101,8 @@ namespace VMAP VMapManager2(); ~VMapManager2() override; + void InitializeThreadUnsafe(const std::vector& mapIds); + int loadMap(const char* pBasePath, unsigned int mapId, int x, int y) override; void unloadMap(unsigned int mapId, int x, int y) override; @@ -113,12 +129,14 @@ namespace VMAP return getMapFileName(mapId); } bool existsMap(const char* basePath, unsigned int mapId, int x, int y) override; - public: void getInstanceMapTree(InstanceTreeMap& instanceMapTree); typedef uint32(*GetLiquidFlagsFn)(uint32 liquidType); GetLiquidFlagsFn GetLiquidFlagsPtr; + + typedef bool(*IsVMAPDisabledForFn)(uint32 entry, uint8 flags); + IsVMAPDisabledForFn IsVMAPDisabledForPtr; }; } -#endif \ No newline at end of file +#endif diff --git a/src/common/Collision/Maps/MapDefines.h b/src/common/Collision/Maps/MapDefines.h new file mode 100644 index 0000000000..e323dfcdea --- /dev/null +++ b/src/common/Collision/Maps/MapDefines.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2016+ AzerothCore , released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 + * Copyright (C) 2008+ TrinityCore + */ + +#ifndef _MAPDEFINES_H +#define _MAPDEFINES_H + +#include "Define.h" +#include "DetourNavMesh.h" + +#define MAX_NUMBER_OF_GRIDS 64 +#define SIZE_OF_GRIDS 533.3333f + +#define MMAP_MAGIC 0x4d4d4150 // 'MMAP' +#define MMAP_VERSION 11 + +struct MmapTileHeader +{ + uint32 mmapMagic{MMAP_MAGIC}; + uint32 dtVersion; + uint32 mmapVersion{MMAP_VERSION}; + uint32 size{0}; + char usesLiquids{true}; + char padding[3]{}; + + MmapTileHeader() : dtVersion(DT_NAVMESH_VERSION) { } +}; + +// All padding fields must be handled and initialized to ensure mmaps_generator will produce binary-identical *.mmtile files +static_assert(sizeof(MmapTileHeader) == 20, "MmapTileHeader size is not correct, adjust the padding field size"); +static_assert(sizeof(MmapTileHeader) == (sizeof(MmapTileHeader::mmapMagic) + + sizeof(MmapTileHeader::dtVersion) + + sizeof(MmapTileHeader::mmapVersion) + + sizeof(MmapTileHeader::size) + + sizeof(MmapTileHeader::usesLiquids) + + sizeof(MmapTileHeader::padding)), "MmapTileHeader has uninitialized padding fields"); + +enum NavTerrain +{ + NAV_EMPTY = 0x00, + NAV_GROUND = 0x01, + NAV_MAGMA = 0x02, + NAV_SLIME = 0x04, + NAV_WATER = 0x08, + NAV_UNUSED1 = 0x10, + NAV_UNUSED2 = 0x20, + NAV_UNUSED3 = 0x40, + NAV_UNUSED4 = 0x80 + // we only have 8 bits +}; + +#endif diff --git a/src/common/Collision/Maps/MapTree.cpp b/src/common/Collision/Maps/MapTree.cpp index 520ad8cc33..38e4f97d22 100644 --- a/src/common/Collision/Maps/MapTree.cpp +++ b/src/common/Collision/Maps/MapTree.cpp @@ -462,4 +462,10 @@ namespace VMAP } iLoadedTiles.erase(tile); } + + void StaticMapTree::getModelInstances(ModelInstance*& models, uint32& count) + { + models = iTreeValues; + count = iNTreeValues; + } } diff --git a/src/common/Collision/Maps/TileAssembler.cpp b/src/common/Collision/Maps/TileAssembler.cpp index dd4f2621e0..c4fbed2019 100644 --- a/src/common/Collision/Maps/TileAssembler.cpp +++ b/src/common/Collision/Maps/TileAssembler.cpp @@ -8,7 +8,7 @@ #include "MapTree.h" #include "BoundingIntervalHierarchy.h" #include "VMapDefinitions.h" -#include "SharedDefines.h" +#include "MapDefines.h" #include #include #include diff --git a/src/common/Collision/Models/GameObjectModel.cpp b/src/common/Collision/Models/GameObjectModel.cpp index 9a0e294a01..56b91c49d5 100644 --- a/src/common/Collision/Models/GameObjectModel.cpp +++ b/src/common/Collision/Models/GameObjectModel.cpp @@ -4,19 +4,13 @@ * Copyright (C) 2005-2009 MaNGOS */ +#include "GameObjectModel.h" #include "VMapFactory.h" #include "VMapManager2.h" #include "VMapDefinitions.h" #include "WorldModel.h" - -#include "GameObjectModel.h" #include "Log.h" -#include "GameObject.h" -#include "Creature.h" -#include "TemporarySummon.h" -#include "Object.h" -#include "DBCStores.h" -#include "World.h" +#include "Timer.h" using G3D::Vector3; using G3D::Ray; @@ -35,16 +29,14 @@ struct GameobjectModelData typedef std::unordered_map ModelList; ModelList model_list; -void LoadGameObjectModelList() +void LoadGameObjectModelList(std::string const& dataPath) { - //#ifndef NO_CORE_FUNCS uint32 oldMSTime = getMSTime(); - //#endif - FILE* model_list_file = fopen((sWorld->GetDataPath() + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb"); + FILE* model_list_file = fopen((dataPath + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb"); if (!model_list_file) { - LOG_ERROR("server", "Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS); + LOG_ERROR("maps", "Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS); return; } @@ -72,7 +64,8 @@ void LoadGameObjectModelList() || fread(&v1, sizeof(Vector3), 1, model_list_file) != 1 || fread(&v2, sizeof(Vector3), 1, model_list_file) != 1) { - LOG_ERROR("server", "File '%s' seems to be corrupted!", VMAP::GAMEOBJECT_MODELS); + LOG_ERROR("maps", "File '%s' seems to be corrupted!", VMAP::GAMEOBJECT_MODELS); + fclose(model_list_file); break; } @@ -95,12 +88,12 @@ void LoadGameObjectModelList() GameObjectModel::~GameObjectModel() { if (iModel) - ((VMAP::VMapManager2*)VMAP::VMapFactory::createOrGetVMapManager())->releaseModelInstance(name); + VMAP::VMapFactory::createOrGetVMapManager()->releaseModelInstance(name); } -bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayInfoEntry& info) +bool GameObjectModel::initialize(std::unique_ptr modelOwner, std::string const& dataPath) { - ModelList::const_iterator it = model_list.find(info.Displayid); + ModelList::const_iterator it = model_list.find(modelOwner->GetDisplayId()); if (it == model_list.end()) return false; @@ -112,24 +105,18 @@ bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayIn return false; } - iModel = ((VMAP::VMapManager2*)VMAP::VMapFactory::createOrGetVMapManager())->acquireModelInstance(sWorld->GetDataPath() + "vmaps/", it->second.name); + iModel = VMAP::VMapFactory::createOrGetVMapManager()->acquireModelInstance(dataPath + "vmaps/", it->second.name); if (!iModel) return false; name = it->second.name; - //flags = VMAP::MOD_M2; - //adtId = 0; - //ID = 0; - iPos = Vector3(go.GetPositionX(), go.GetPositionY(), go.GetPositionZ()); - - // pussywizard: - phasemask = (go.GetGoState() == GO_STATE_READY || go.IsTransport()) ? go.GetPhaseMask() : 0; - - iScale = go.GetFloatValue(OBJECT_FIELD_SCALE_X); + iPos = modelOwner->GetPosition(); + phasemask = modelOwner->GetPhaseMask(); + iScale = modelOwner->GetScale(); iInvScale = 1.f / iScale; - G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(go.GetOrientation(), 0, 0); + G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(modelOwner->GetOrientation(), 0, 0); iInvRot = iRotation.inverse(); // transform bounding box: mdl_box = AABox(mdl_box.low() * iScale, mdl_box.high() * iScale); @@ -138,27 +125,24 @@ bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayIn rotated_bounds.merge(iRotation * mdl_box.corner(i)); iBound = rotated_bounds + iPos; + #ifdef SPAWN_CORNERS // test: for (int i = 0; i < 8; ++i) { Vector3 pos(iBound.corner(i)); - const_cast(go).SummonCreature(1, pos.x, pos.y, pos.z, 0, TEMPSUMMON_MANUAL_DESPAWN); + modelOwner->DebugVisualizeCorner(pos); } #endif - owner = &go; + owner = std::move(modelOwner); return true; } -GameObjectModel* GameObjectModel::Create(const GameObject& go) +GameObjectModel* GameObjectModel::Create(std::unique_ptr modelOwner, std::string const& dataPath) { - const GameObjectDisplayInfoEntry* info = sGameObjectDisplayInfoStore.LookupEntry(go.GetDisplayId()); - if (!info) - return nullptr; - GameObjectModel* mdl = new GameObjectModel(); - if (!mdl->initialize(go, *info)) + if (!mdl->initialize(std::move(modelOwner), dataPath)) { delete mdl; return nullptr; @@ -169,7 +153,7 @@ GameObjectModel* GameObjectModel::Create(const GameObject& go) bool GameObjectModel::intersectRay(const G3D::Ray& ray, float& MaxDist, bool StopAtFirstHit, uint32 ph_mask) const { - if (!(phasemask & ph_mask) || !owner->isSpawned()) + if (!(phasemask & ph_mask) || !owner->IsSpawned()) return false; float time = ray.intersectionTime(iBound); @@ -199,6 +183,7 @@ bool GameObjectModel::UpdatePosition() return false; G3D::AABox mdl_box(it->second.bound); + // ignore models with no bounds if (mdl_box == G3D::AABox::zero()) { @@ -206,12 +191,14 @@ bool GameObjectModel::UpdatePosition() return false; } - iPos = Vector3(owner->GetPositionX(), owner->GetPositionY(), owner->GetPositionZ()); + iPos = owner->GetPosition(); G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(owner->GetOrientation(), 0, 0); iInvRot = iRotation.inverse(); + // transform bounding box: mdl_box = AABox(mdl_box.low() * iScale, mdl_box.high() * iScale); AABox rotated_bounds; + for (int i = 0; i < 8; ++i) rotated_bounds.merge(iRotation * mdl_box.corner(i)); @@ -221,7 +208,7 @@ bool GameObjectModel::UpdatePosition() for (int i = 0; i < 8; ++i) { Vector3 pos(iBound.corner(i)); - owner->SummonCreature(1, pos.x, pos.y, pos.z, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 10000); + owner->DebugVisualizeCorner(pos); } #endif diff --git a/src/common/Collision/Models/GameObjectModel.h b/src/common/Collision/Models/GameObjectModel.h index 6e10df44a3..3051ba1605 100644 --- a/src/common/Collision/Models/GameObjectModel.h +++ b/src/common/Collision/Models/GameObjectModel.h @@ -7,13 +7,12 @@ #ifndef _GAMEOBJECT_MODEL_H #define _GAMEOBJECT_MODEL_H +#include "Define.h" #include #include #include #include -#include "Define.h" - namespace VMAP { class WorldModel; @@ -22,20 +21,23 @@ namespace VMAP class GameObject; struct GameObjectDisplayInfoEntry; -class GameObjectModel /*, public Intersectable*/ +class GameObjectModelOwnerBase { - uint32 phasemask{0}; - G3D::AABox iBound; - G3D::Matrix3 iInvRot; - G3D::Vector3 iPos; - //G3D::Vector3 iRot; - float iInvScale{0}; - float iScale{0}; - VMAP::WorldModel* iModel; - GameObject const* owner; +public: + virtual ~GameObjectModelOwnerBase() = default; - GameObjectModel() : iModel(nullptr), owner(nullptr) { } - bool initialize(const GameObject& go, const GameObjectDisplayInfoEntry& info); + virtual bool IsSpawned() const = 0; + virtual uint32 GetDisplayId() const = 0; + virtual uint32 GetPhaseMask() const = 0; + virtual G3D::Vector3 GetPosition() const = 0; + virtual float GetOrientation() const = 0; + virtual float GetScale() const = 0; + virtual void DebugVisualizeCorner(G3D::Vector3 const& /*corner*/) const = 0; +}; + +class GameObjectModel +{ + GameObjectModel() : phasemask(0), iInvScale(0), iScale(0), iModel(nullptr) { } public: std::string name; @@ -44,19 +46,33 @@ public: ~GameObjectModel(); - [[nodiscard]] const G3D::Vector3& getPosition() const { return iPos;} + [[nodiscard]] const G3D::Vector3& getPosition() const { return iPos; } - /** Enables\disables collision. */ - void disable() { phasemask = 0;} - void enable(uint32 ph_mask) { phasemask = ph_mask;} + /** Enables\disables collision. */ + void disable() { phasemask = 0; } + void enable(uint32 ph_mask) { phasemask = ph_mask; } - [[nodiscard]] bool isEnabled() const {return phasemask != 0;} + [[nodiscard]] bool isEnabled() const { return phasemask != 0; } bool intersectRay(const G3D::Ray& Ray, float& MaxDist, bool StopAtFirstHit, uint32 ph_mask) const; - static GameObjectModel* Create(const GameObject& go); + static GameObjectModel* Create(std::unique_ptr modelOwner, std::string const& dataPath); bool UpdatePosition(); + +private: + bool initialize(std::unique_ptr modelOwner, std::string const& dataPath); + + uint32 phasemask; + G3D::AABox iBound; + G3D::Matrix3 iInvRot; + G3D::Vector3 iPos; + float iInvScale; + float iScale; + VMAP::WorldModel* iModel; + std::unique_ptr owner; }; -#endif // _GAMEOBJECT_MODEL_H \ No newline at end of file +void LoadGameObjectModelList(std::string const& dataPath); + +#endif // _GAMEOBJECT_MODEL_H diff --git a/src/common/Collision/Models/ModelInstance.h b/src/common/Collision/Models/ModelInstance.h index 43d38566a8..1d9a11f726 100644 --- a/src/common/Collision/Models/ModelInstance.h +++ b/src/common/Collision/Models/ModelInstance.h @@ -7,13 +7,12 @@ #ifndef _MODELINSTANCE_H_ #define _MODELINSTANCE_H_ +#include "Define.h" #include #include #include #include -#include "Define.h" - namespace VMAP { class WorldModel; @@ -58,12 +57,11 @@ namespace VMAP void intersectPoint(const G3D::Vector3& p, AreaInfo& info) const; bool GetLocationInfo(const G3D::Vector3& p, LocationInfo& info) const; bool GetLiquidLevel(const G3D::Vector3& p, LocationInfo& info, float& liqHeight) const; + WorldModel* getWorldModel() { return iModel; } protected: G3D::Matrix3 iInvRot; float iInvScale{0.0f}; WorldModel* iModel{nullptr}; - public: - WorldModel* getWorldModel(); }; } // namespace VMAP diff --git a/src/common/Collision/Models/WorldModel.cpp b/src/common/Collision/Models/WorldModel.cpp index e8333e0f6f..a65f305b7c 100644 --- a/src/common/Collision/Models/WorldModel.cpp +++ b/src/common/Collision/Models/WorldModel.cpp @@ -241,6 +241,13 @@ namespace VMAP return result; } + void WmoLiquid::getPosInfo(uint32& tilesX, uint32& tilesY, G3D::Vector3& corner) const + { + tilesX = iTilesX; + tilesY = iTilesY; + corner = iCorner; + } + // ===================== GroupModel ================================== GroupModel::GroupModel(const GroupModel& other): @@ -401,6 +408,13 @@ namespace VMAP return 0; } + void GroupModel::getMeshData(std::vector& outVertices, std::vector& outTriangles, WmoLiquid*& liquid) + { + outVertices = vertices; + outTriangles = triangles; + liquid = iLiquid; + } + // ===================== WorldModel ================================== void WorldModel::setGroupModels(std::vector& models) @@ -575,4 +589,9 @@ namespace VMAP fclose(rf); return result; } + + void WorldModel::getGroupModels(std::vector& outGroupModels) + { + outGroupModels = groupModels; + } } diff --git a/src/common/Collision/Models/WorldModel.h b/src/common/Collision/Models/WorldModel.h index 88558a03e1..75a809c27b 100644 --- a/src/common/Collision/Models/WorldModel.h +++ b/src/common/Collision/Models/WorldModel.h @@ -7,13 +7,12 @@ #ifndef _WORLDMODEL_H #define _WORLDMODEL_H +#include "Define.h" +#include "BoundingIntervalHierarchy.h" #include #include #include #include -#include "BoundingIntervalHierarchy.h" - -#include "Define.h" namespace VMAP { @@ -46,6 +45,7 @@ namespace VMAP uint32 GetFileSize(); bool writeToFile(FILE* wf); static bool readFromFile(FILE* rf, WmoLiquid*& liquid); + void getPosInfo(uint32& tilesX, uint32& tilesY, G3D::Vector3& corner) const; private: WmoLiquid() { } uint32 iTilesX{0}; //!< number of tiles in x direction, each @@ -54,8 +54,6 @@ namespace VMAP uint32 iType{0}; //!< liquid type float* iHeight{nullptr}; //!< (tilesX + 1)*(tilesY + 1) height values uint8* iFlags{nullptr}; //!< info if liquid tile is used - public: - void getPosInfo(uint32& tilesX, uint32& tilesY, G3D::Vector3& corner) const; }; /*! holding additional info for WMO group files */ @@ -80,6 +78,7 @@ namespace VMAP [[nodiscard]] const G3D::AABox& GetBound() const { return iBound; } [[nodiscard]] uint32 GetMogpFlags() const { return iMogpFlags; } [[nodiscard]] uint32 GetWmoID() const { return iGroupWMOID; } + void getMeshData(std::vector& outVertices, std::vector& outTriangles, WmoLiquid*& liquid); protected: G3D::AABox iBound; uint32 iMogpFlags{0};// 0x8 outdor; 0x2000 indoor @@ -88,8 +87,6 @@ namespace VMAP std::vector triangles; BIH meshTree; WmoLiquid* iLiquid{nullptr}; - public: - void getMeshData(std::vector& vertices, std::vector& triangles, WmoLiquid*& liquid); }; /*! Holds a model (converted M2 or WMO) in its original coordinate space */ class WorldModel @@ -105,12 +102,11 @@ namespace VMAP bool GetLocationInfo(const G3D::Vector3& p, const G3D::Vector3& down, float& dist, LocationInfo& info) const; bool writeFile(const std::string& filename); bool readFile(const std::string& filename); + void getGroupModels(std::vector& outGroupModels); protected: uint32 RootWMOID{0}; std::vector groupModels; BIH groupTree; - public: - void getGroupModels(std::vector& groupModels); }; } // namespace VMAP diff --git a/src/common/Collision/VMapTools.h b/src/common/Collision/VMapTools.h index d29c4c50e8..5826941268 100644 --- a/src/common/Collision/VMapTools.h +++ b/src/common/Collision/VMapTools.h @@ -7,11 +7,10 @@ #ifndef _VMAPTOOLS_H #define _VMAPTOOLS_H +#include "Define.h" #include #include -#include "NodeValueAccess.h" - /** The Class is mainly taken from G3D/AABSPTree.h but modified to be able to use our internal data structure. This is an iterator that helps us analysing the BSP-Trees. @@ -40,7 +39,6 @@ namespace VMAP class MyCollisionDetection { - private: public: static bool collisionLocationForMovingPointFixedAABox( const G3D::Vector3& origin, diff --git a/src/common/PrecompiledHeaders/commonPCH.h b/src/common/PrecompiledHeaders/commonPCH.h index d0c15b17f0..27707525f9 100644 --- a/src/common/PrecompiledHeaders/commonPCH.h +++ b/src/common/PrecompiledHeaders/commonPCH.h @@ -2,7 +2,5 @@ #include "Common.h" #include "Log.h" -#include "DatabaseWorker.h" -#include "SQLOperation.h" #include "Errors.h" #include "TypeList.h" diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp index 0aca756ec9..d69f8b6155 100644 --- a/src/common/Utilities/Util.cpp +++ b/src/common/Utilities/Util.cpp @@ -8,10 +8,9 @@ #include "Common.h" #include "utf8.h" #include "Log.h" -#include "DatabaseWorker.h" -#include "SQLOperation.h" #include "Errors.h" #include "TypeList.h" +#include #include "SFMT.h" #include "Errors.h" // for ASSERT #include diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp index 7aaff1d3e7..85b6b3f541 100644 --- a/src/server/game/Conditions/DisableMgr.cpp +++ b/src/server/game/Conditions/DisableMgr.cpp @@ -5,16 +5,16 @@ */ #include "DisableMgr.h" +#include "MMapFactory.h" #include "ObjectMgr.h" #include "OutdoorPvP.h" #include "Player.h" #include "SpellInfo.h" #include "SpellMgr.h" -#include "VMapManager2.h" +#include "World.h" namespace DisableMgr { - namespace { struct DisableData @@ -197,28 +197,28 @@ namespace DisableMgr switch (mapEntry->map_type) { case MAP_COMMON: - if (flags & VMAP_DISABLE_AREAFLAG) + if (flags & VMAP::VMAP_DISABLE_AREAFLAG) LOG_INFO("server", "Areaflag disabled for world map %u.", entry); - if (flags & VMAP_DISABLE_LIQUIDSTATUS) + if (flags & VMAP::VMAP_DISABLE_LIQUIDSTATUS) LOG_INFO("server", "Liquid status disabled for world map %u.", entry); break; case MAP_INSTANCE: case MAP_RAID: - if (flags & VMAP_DISABLE_HEIGHT) + if (flags & VMAP::VMAP_DISABLE_HEIGHT) LOG_INFO("server", "Height disabled for instance map %u.", entry); - if (flags & VMAP_DISABLE_LOS) + if (flags & VMAP::VMAP_DISABLE_LOS) LOG_INFO("server", "LoS disabled for instance map %u.", entry); break; case MAP_BATTLEGROUND: - if (flags & VMAP_DISABLE_HEIGHT) + if (flags & VMAP::VMAP_DISABLE_HEIGHT) LOG_INFO("server", "Height disabled for battleground map %u.", entry); - if (flags & VMAP_DISABLE_LOS) + if (flags & VMAP::VMAP_DISABLE_LOS) LOG_INFO("server", "LoS disabled for battleground map %u.", entry); break; case MAP_ARENA: - if (flags & VMAP_DISABLE_HEIGHT) + if (flags & VMAP::VMAP_DISABLE_HEIGHT) LOG_INFO("server", "Height disabled for arena map %u.", entry); - if (flags & VMAP_DISABLE_LOS) + if (flags & VMAP::VMAP_DISABLE_LOS) LOG_INFO("server", "LoS disabled for arena map %u.", entry); break; default: @@ -360,4 +360,17 @@ namespace DisableMgr return false; } + bool IsVMAPDisabledFor(uint32 entry, uint8 flags) + { + return IsDisabledFor(DISABLE_TYPE_VMAP, entry, nullptr, flags); + } + + bool IsPathfindingEnabled(const Map* map) + { + if (!map) + return false; + + return !MMAP::MMapFactory::forbiddenMaps[map->GetId()] && (sWorld->getBoolConfig(CONFIG_ENABLE_MMAPS) ? true : map->IsBattlegroundOrArena()); + } + } // Namespace diff --git a/src/server/game/Conditions/DisableMgr.h b/src/server/game/Conditions/DisableMgr.h index 9770c092ff..92c35d8c40 100644 --- a/src/server/game/Conditions/DisableMgr.h +++ b/src/server/game/Conditions/DisableMgr.h @@ -8,6 +8,8 @@ #define ACORE_DISABLEMGR_H #include "Define.h" +#include "Map.h" +#include "VMapManager2.h" class Unit; @@ -38,19 +40,13 @@ enum SpellDisableTypes SPELL_DISABLE_LOS) }; -enum VmapDisableTypes -{ - VMAP_DISABLE_AREAFLAG = 0x1, - VMAP_DISABLE_HEIGHT = 0x2, - VMAP_DISABLE_LOS = 0x4, - VMAP_DISABLE_LIQUIDSTATUS = 0x8, -}; - namespace DisableMgr { void LoadDisables(); bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags = 0); void CheckQuestDisables(); + bool IsVMAPDisabledFor(uint32 entry, uint8 flags); + bool IsPathfindingEnabled(const Map* map); } #endif //ACORE_DISABLEMGR_H diff --git a/src/server/game/Entities/Creature/CreatureGroups.h b/src/server/game/Entities/Creature/CreatureGroups.h index c3b17bb7d4..19041c6f0f 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.h +++ b/src/server/game/Entities/Creature/CreatureGroups.h @@ -21,8 +21,8 @@ struct FormationInfo float follow_dist; float follow_angle; uint8 groupAI; - uint16 point_1; - uint16 point_2; + uint32 point_1; + uint32 point_2; }; typedef std::unordered_map CreatureGroupInfoType; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 22aef69c45..1d3b8c3306 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -311,7 +311,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u SetDisplayId(goinfo->displayId); if (!m_model) - m_model = GameObjectModel::Create(*this); + m_model = CreateModel(); switch (goinfo->type) { @@ -1961,7 +1961,7 @@ bool GameObject::IsInRange(float x, float y, float z, float radius) const if (G3D::fuzzyEq(dist, 0.0f)) return true; - float scale = GetFloatValue(OBJECT_FIELD_SCALE_X); + float scale = GetObjectScale(); float sinB = dx / dist; float cosB = dy / dist; dx = dist * (cosA * cosB + sinA * sinB); @@ -2298,7 +2298,7 @@ void GameObject::UpdateModel() if (GetMap()->ContainsGameObjectModel(*m_model)) GetMap()->RemoveGameObjectModel(*m_model); delete m_model; - m_model = GameObjectModel::Create(*this); + m_model = CreateModel(); if (m_model) GetMap()->InsertGameObjectModel(*m_model); } @@ -2517,4 +2517,26 @@ void GameObject::UpdateModelPosition() } } -std::unordered_map GameObject::gameObjectToEventFlag = {}; +std::unordered_map GameObject::gameObjectToEventFlag = { }; + +class GameObjectModelOwnerImpl : public GameObjectModelOwnerBase +{ +public: + explicit GameObjectModelOwnerImpl(GameObject* owner) : _owner(owner) { } + + bool IsSpawned() const override { return _owner->isSpawned(); } + uint32 GetDisplayId() const override { return _owner->GetDisplayId(); } + uint32 GetPhaseMask() const override { return (_owner->GetGoState() == GO_STATE_READY || _owner->IsTransport()) ? _owner->GetPhaseMask() : 0; } + G3D::Vector3 GetPosition() const override { return G3D::Vector3(_owner->GetPositionX(), _owner->GetPositionY(), _owner->GetPositionZ()); } + float GetOrientation() const override { return _owner->GetOrientation(); } + float GetScale() const override { return _owner->GetObjectScale(); } + void DebugVisualizeCorner(G3D::Vector3 const& corner) const override { const_cast(_owner)->SummonCreature(1, corner.x, corner.y, corner.z, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 10000); } + +private: + GameObject* _owner; +}; + +GameObjectModel* GameObject::CreateModel() +{ + return GameObjectModel::Create(std::make_unique(this), sWorld->GetDataPath()); +} diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 6c34692b71..e139f39f81 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -953,6 +953,7 @@ public: protected: bool AIM_Initialize(); + GameObjectModel* CreateModel(); void UpdateModel(); // updates model in case displayId were changed uint32 m_spellId; time_t m_respawnTime; // (secs) time of next respawn (or despawn if GO have owner()), diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 1abbe77ecc..002906ab24 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -91,7 +91,7 @@ bool MotionTransport::CreateMoTrans(ObjectGuid::LowType guidlow, uint32 entry, u // pussywizard: no PathRotation for MotionTransports SetTransportPathRotation(0.0f, 0.0f, 0.0f, 1.0f); - m_model = GameObjectModel::Create(*this); + m_model = CreateModel(); return true; } @@ -722,7 +722,7 @@ bool StaticTransport::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* m SetDisplayId(goinfo->displayId); if (!m_model) - m_model = GameObjectModel::Create(*this); + m_model = CreateModel(); SetGoType(GameobjectTypes(goinfo->type)); SetGoState(go_state); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index b28228f01a..8dadb516be 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16,6 +16,7 @@ #include "CreatureAI.h" #include "CreatureAIImpl.h" #include "CreatureGroups.h" +#include "DisableMgr.h" #include "DynamicVisibility.h" #include "Formulas.h" #include "GridNotifiersImpl.h" @@ -19518,7 +19519,7 @@ void Unit::PetSpellFail(const SpellInfo* spellInfo, Unit* target, uint32 result) if (!charmInfo || GetTypeId() != TYPEID_UNIT) return; - if ((MMAP::MMapFactory::IsPathfindingEnabled(GetMap()) || result != SPELL_FAILED_LINE_OF_SIGHT) && target) + if ((DisableMgr::IsPathfindingEnabled(GetMap()) || result != SPELL_FAILED_LINE_OF_SIGHT) && target) { if ((result == SPELL_FAILED_LINE_OF_SIGHT || result == SPELL_FAILED_OUT_OF_RANGE) || !ToCreature()->HasReactState(REACT_PASSIVE)) if (Unit* owner = GetOwner()) diff --git a/src/server/game/Grids/GridDefines.h b/src/server/game/Grids/GridDefines.h index deaf07835e..1f0b957547 100644 --- a/src/server/game/Grids/GridDefines.h +++ b/src/server/game/Grids/GridDefines.h @@ -9,6 +9,7 @@ #include "Common.h" #include "NGrid.h" +#include "MapDefines.h" #include // Forward class definitions @@ -22,10 +23,7 @@ class ObjectGuid; #define MAX_NUMBER_OF_CELLS 8 -#define MAX_NUMBER_OF_GRIDS 64 - -#define SIZE_OF_GRIDS 533.3333f -#define CENTER_GRID_ID (MAX_NUMBER_OF_GRIDS/2) +#define CENTER_GRID_ID (MAX_NUMBER_OF_GRIDS/2) #define CENTER_GRID_OFFSET (SIZE_OF_GRIDS/2) diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 2368a21fce..1ec4644d49 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -7,6 +7,7 @@ #include "Chat.h" #include "Common.h" #include "CreatureAI.h" +#include "DisableMgr.h" #include "Group.h" #include "Log.h" #include "ObjectAccessor.h" @@ -559,7 +560,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint16 spe return; // Not let attack through obstructions - bool checkLos = !MMAP::MMapFactory::IsPathfindingEnabled(pet->GetMap()) || + bool checkLos = !DisableMgr::IsPathfindingEnabled(pet->GetMap()) || (TargetUnit->GetTypeId() == TYPEID_UNIT && (TargetUnit->ToCreature()->isWorldBoss() || TargetUnit->ToCreature()->IsDungeonBoss())); if (checkLos && !pet->IsWithinLOSInMap(TargetUnit)) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 8607572062..641f18e2df 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -7,6 +7,7 @@ #include "Battleground.h" #include "CellImpl.h" #include "Chat.h" +#include "DisableMgr.h" #include "DynamicTree.h" #include "Geometry.h" #include "GridNotifiers.h" @@ -24,6 +25,7 @@ #include "Transport.h" #include "Vehicle.h" #include "VMapFactory.h" +#include "VMapManager2.h" #ifdef ELUNA #include "LuaEngine.h" @@ -111,7 +113,7 @@ bool Map::ExistVMap(uint32 mapid, int gx, int gy) void Map::LoadMMap(int gx, int gy) { - if (!MMAP::MMapFactory::IsPathfindingEnabled(this)) // pussywizard + if (!DisableMgr::IsPathfindingEnabled(this)) // pussywizard return; int mmapLoadResult = MMAP::MMapFactory::createOrGetMMapManager()->loadMap(GetId(), gx, gy); @@ -138,7 +140,7 @@ void Map::LoadMMap(int gx, int gy) void Map::LoadVMap(int gx, int gy) { // x and y are swapped !! - int vmapLoadResult = VMAP::VMapFactory::createOrGetVMapManager()->loadMap((sWorld->GetDataPath() + "vmaps").c_str(), GetId(), gx, gy); + int vmapLoadResult = VMAP::VMapFactory::createOrGetVMapManager()->loadMap((sWorld->GetDataPath() + "vmaps").c_str(), GetId(), gx, gy); switch (vmapLoadResult) { case VMAP::VMAP_LOAD_RESULT_OK: diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp index 477bad32e7..cf0cb8b46b 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp @@ -4,9 +4,10 @@ * Copyright (C) 2005-2009 MaNGOS */ +#include "HomeMovementGenerator.h" #include "Creature.h" #include "CreatureAI.h" -#include "HomeMovementGenerator.h" +#include "DisableMgr.h" #include "MoveSpline.h" #include "MoveSplineInit.h" #include "WorldPacket.h" @@ -55,7 +56,7 @@ void HomeMovementGenerator::_setTargetLocation(Creature* owner) } owner->UpdateAllowedPositionZ(x, y, z); - init.MoveTo(x, y, z, MMAP::MMapFactory::IsPathfindingEnabled(owner->FindMap()), true); + init.MoveTo(x, y, z, DisableMgr::IsPathfindingEnabled(owner->FindMap()), true); init.SetWalk(false); init.Launch(); diff --git a/src/server/game/Movement/MovementGenerators/PathGenerator.cpp b/src/server/game/Movement/MovementGenerators/PathGenerator.cpp index 861076455e..5e5636c593 100644 --- a/src/server/game/Movement/MovementGenerators/PathGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/PathGenerator.cpp @@ -24,7 +24,7 @@ PathGenerator::PathGenerator(WorldObject const* owner) : memset(_pathPolyRefs, 0, sizeof(_pathPolyRefs)); uint32 mapId = _source->GetMapId(); - //if (MMAP::MMapFactory::IsPathfindingEnabled(_sourceUnit->FindMap())) + //if (DisableMgr::IsPathfindingEnabled(_sourceUnit->FindMap())) { MMAP::MMapManager* mmap = MMAP::MMapFactory::createOrGetMMapManager(); _navMesh = mmap->GetNavMesh(mapId); diff --git a/src/server/game/Movement/MovementGenerators/PathGenerator.h b/src/server/game/Movement/MovementGenerators/PathGenerator.h index 0386f7df3d..9f1d768a0c 100644 --- a/src/server/game/Movement/MovementGenerators/PathGenerator.h +++ b/src/server/game/Movement/MovementGenerators/PathGenerator.h @@ -9,6 +9,7 @@ #include "DetourNavMesh.h" #include "DetourNavMeshQuery.h" +#include "MapDefines.h" #include "MMapFactory.h" #include "MMapManager.h" #include "MoveSplineInitArgs.h" diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 780296a130..008b591378 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2339,7 +2339,7 @@ void AuraEffect::HandleAuraModScale(AuraApplication const* aurApp, uint8 mode, b Unit* target = aurApp->GetTarget(); - float scale = target->GetFloatValue(OBJECT_FIELD_SCALE_X); + float scale = target->GetObjectScale(); ApplyPercentModFloatVar(scale, float(GetAmount()), apply); target->SetObjectScale(scale); } @@ -2359,7 +2359,6 @@ void AuraEffect::HandleAuraCloneCaster(AuraApplication const* aurApp, uint8 mode // What must be cloned? at least display and scale target->SetDisplayId(caster->GetDisplayId()); - //target->SetObjectScale(caster->GetFloatValue(OBJECT_FIELD_SCALE_X)); // we need retail info about how scaling is handled (aura maybe?) target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_MIRROR_IMAGE); } else diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index feda1c46e7..f779cbec38 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5678,7 +5678,7 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_BAD_TARGETS; // Xinef: Pass only explicit unit target spells // pussywizard: - if (MMAP::MMapFactory::IsPathfindingEnabled(m_caster->FindMap()) && m_spellInfo->NeedsExplicitUnitTarget()) + if (DisableMgr::IsPathfindingEnabled(m_caster->FindMap()) && m_spellInfo->NeedsExplicitUnitTarget()) { Unit* target = m_targets.GetUnitTarget(); if (!target) @@ -7337,12 +7337,6 @@ bool Spell::CheckEffectTarget(Unit const* target, uint32 eff) const return false; } break; - /*case SPELL_EFFECT_CHARGE: - if (MMAP::MMapFactory::IsPathfindingEnabled(m_caster->FindMap())) - break; - [[fallthrough]]; - */ - case SPELL_EFFECT_SUMMON_RAF_FRIEND: if (m_caster->GetTypeId() != TYPEID_PLAYER || target->GetTypeId() != TYPEID_PLAYER) return false; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 44fb101b3b..a05c534110 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1415,8 +1415,6 @@ void World::LoadConfigSettings(bool reload) sScriptMgr->OnAfterConfigLoad(reload); } -extern void LoadGameObjectModelList(); - /// Initialize the World void World::SetInitialWorldSettings() { @@ -1433,10 +1431,9 @@ void World::SetInitialWorldSettings() sScriptMgr->Initialize(); ///- Initialize VMapManager function pointers (to untangle game/collision circular deps) - if (VMAP::VMapManager2* vmmgr2 = dynamic_cast(VMAP::VMapFactory::createOrGetVMapManager())) - { - vmmgr2->GetLiquidFlagsPtr = &GetLiquidFlags; - } + VMAP::VMapManager2* vmmgr2 = VMAP::VMapFactory::createOrGetVMapManager(); + vmmgr2->GetLiquidFlagsPtr = &GetLiquidFlags; + vmmgr2->IsVMAPDisabledForPtr = &DisableMgr::IsVMAPDisabledFor; ///- Initialize config settings LoadConfigSettings(); @@ -1498,6 +1495,15 @@ void World::SetInitialWorldSettings() LoadDBCStores(m_dataPath); DetectDBCLang(); + std::vector mapIds; + for (auto const& map : sMapStore) + mapIds.emplace_back(map->MapID); + + vmmgr2->InitializeThreadUnsafe(mapIds); + + MMAP::MMapManager* mmmgr = MMAP::MMapFactory::createOrGetMMapManager(); + mmmgr->InitializeThreadUnsafe(mapIds); + LOG_INFO("server", "Loading Game Graveyard..."); sGraveyard->LoadGraveyardFromDB(); @@ -1520,7 +1526,7 @@ void World::SetInitialWorldSettings() sSpellMgr->LoadSpellCustomAttr(); LOG_INFO("server", "Loading GameObject models..."); - LoadGameObjectModelList(); + LoadGameObjectModelList(m_dataPath); LOG_INFO("server", "Loading Script Names..."); sObjectMgr->LoadScriptNames(); diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index 4f8bfea5f0..fd3bb43ed9 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -3567,42 +3567,4 @@ enum PartyResult ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 30 }; -#define MMAP_MAGIC 0x4d4d4150 // 'MMAP' -#define MMAP_VERSION 11 - -struct MmapTileHeader -{ - uint32 mmapMagic{MMAP_MAGIC}; - uint32 dtVersion; - uint32 mmapVersion{MMAP_VERSION}; - uint32 size{0}; - char usesLiquids{true}; - char padding[3]{}; - - MmapTileHeader() : dtVersion(DT_NAVMESH_VERSION) { } -}; - -// All padding fields must be handled and initialized to ensure mmaps_generator will produce binary-identical *.mmtile files -static_assert(sizeof(MmapTileHeader) == 20, "MmapTileHeader size is not correct, adjust the padding field size"); -static_assert(sizeof(MmapTileHeader) == (sizeof(MmapTileHeader::mmapMagic) + - sizeof(MmapTileHeader::dtVersion) + - sizeof(MmapTileHeader::mmapVersion) + - sizeof(MmapTileHeader::size) + - sizeof(MmapTileHeader::usesLiquids) + - sizeof(MmapTileHeader::padding)), "MmapTileHeader has uninitialized padding fields"); - -enum NavTerrain -{ - NAV_EMPTY = 0x00, - NAV_GROUND = 0x01, - NAV_MAGMA = 0x02, - NAV_SLIME = 0x04, - NAV_WATER = 0x08, - NAV_UNUSED1 = 0x10, - NAV_UNUSED2 = 0x20, - NAV_UNUSED3 = 0x40, - NAV_UNUSED4 = 0x80 - // we only have 8 bits -}; - #endif diff --git a/src/tools/mesh_extractor/Utils.h b/src/tools/mesh_extractor/Utils.h index 872a37f6d8..c1dd825473 100644 --- a/src/tools/mesh_extractor/Utils.h +++ b/src/tools/mesh_extractor/Utils.h @@ -6,6 +6,7 @@ #ifndef UTILS_H #define UTILS_H + #include #include #include @@ -337,9 +338,6 @@ public: virtual float Scale() const { return 1.0f; }; }; -#define MMAP_MAGIC 0x4d4d4150 // 'MMAP' -#define MMAP_VERSION 10 - struct MmapTileHeader { uint32 mmapMagic; diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index 866b63c968..20a325b4c8 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -5,45 +5,14 @@ */ #include "MapBuilder.h" +#include "MapDefines.h" #include "MapTree.h" #include "ModelInstance.h" #include "PathCommon.h" - #include #include #include -#include "DisableMgr.h" - -namespace DisableMgr -{ - bool IsDisabledFor(DisableType /*type*/, uint32 /*entry*/, Unit const* /*unit*/, uint8 /*flags*/ /*= 0*/) { return false; } -} - -#define MMAP_MAGIC 0x4d4d4150 // 'MMAP' -#define MMAP_VERSION 11 - -struct MmapTileHeader -{ - uint32 mmapMagic{MMAP_MAGIC}; - uint32 dtVersion; - uint32 mmapVersion{MMAP_VERSION}; - uint32 size{0}; - char usesLiquids{true}; - char padding[3]{}; - - MmapTileHeader() : dtVersion(DT_NAVMESH_VERSION) {} -}; - -// All padding fields must be handled and initialized to ensure mmaps_generator will produce binary-identical *.mmtile files -static_assert(sizeof(MmapTileHeader) == 20, "MmapTileHeader size is not correct, adjust the padding field size"); -static_assert(sizeof(MmapTileHeader) == (sizeof(MmapTileHeader::mmapMagic) + - sizeof(MmapTileHeader::dtVersion) + - sizeof(MmapTileHeader::mmapVersion) + - sizeof(MmapTileHeader::size) + - sizeof(MmapTileHeader::usesLiquids) + - sizeof(MmapTileHeader::padding)), "MmapTileHeader has uninitialized padding fields"); - namespace MMAP { MapBuilder::MapBuilder(float maxWalkableAngle, bool skipLiquid, diff --git a/src/tools/mmaps_generator/PathCommon.h b/src/tools/mmaps_generator/PathCommon.h index 7aae074488..c196cf4ce6 100644 --- a/src/tools/mmaps_generator/PathCommon.h +++ b/src/tools/mmaps_generator/PathCommon.h @@ -20,20 +20,6 @@ #include #endif -enum NavTerrain -{ - NAV_EMPTY = 0x00, - NAV_GROUND = 0x01, - NAV_MAGMA = 0x02, - NAV_SLIME = 0x04, - NAV_WATER = 0x08, - NAV_UNUSED1 = 0x10, - NAV_UNUSED2 = 0x20, - NAV_UNUSED3 = 0x40, - NAV_UNUSED4 = 0x80 - // we only have 8 bits -}; - namespace MMAP { inline bool matchWildcardFilter(const char* filter, const char* str) diff --git a/src/tools/mmaps_generator/TerrainBuilder.cpp b/src/tools/mmaps_generator/TerrainBuilder.cpp index 3c56e49c39..aaf33f675e 100644 --- a/src/tools/mmaps_generator/TerrainBuilder.cpp +++ b/src/tools/mmaps_generator/TerrainBuilder.cpp @@ -5,10 +5,9 @@ */ #include "TerrainBuilder.h" - #include "PathCommon.h" #include "MapBuilder.h" - +#include "MapDefines.h" #include "VMapManager2.h" #include "MapTree.h" #include "ModelInstance.h" diff --git a/src/tools/mmaps_generator/VMapExtensions.cpp b/src/tools/mmaps_generator/VMapExtensions.cpp deleted file mode 100644 index 29970ae15c..0000000000 --- a/src/tools/mmaps_generator/VMapExtensions.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2 - * Copyright (C) 2008-2016 TrinityCore - * Copyright (C) 2005-2009 MaNGOS - */ - -#include -#include "MapTree.h" -#include "VMapManager2.h" -#include "WorldModel.h" -#include "ModelInstance.h" - -namespace VMAP -{ - // Need direct access to encapsulated VMAP data, so we add functions for MMAP generator - // maybe add MapBuilder as friend to all of the below classes would be better? - - // declared in src/common/vmap/MapTree.h - void StaticMapTree::getModelInstances(ModelInstance*& models, uint32& count) - { - models = iTreeValues; - count = iNTreeValues; - } - - // declared in src/common/vmap/VMapManager2.h - void VMapManager2::getInstanceMapTree(InstanceTreeMap& instanceMapTree) - { - instanceMapTree = iInstanceMapTrees; - } - - // declared in src/common/vmap/WorldModel.h - void WorldModel::getGroupModels(std::vector& groupModels) - { - groupModels = this->groupModels; - } - - // declared in src/common/vmap/WorldModel.h - void GroupModel::getMeshData(std::vector& vertices, std::vector& triangles, WmoLiquid*& liquid) - { - vertices = this->vertices; - triangles = this->triangles; - liquid = iLiquid; - } - - // declared in src/common/vmap/ModelInstance.h - WorldModel* ModelInstance::getWorldModel() - { - return iModel; - } - - // declared in src/common/vmap/WorldModel.h - void WmoLiquid::getPosInfo(uint32& tilesX, uint32& tilesY, G3D::Vector3& corner) const - { - tilesX = iTilesX; - tilesY = iTilesY; - corner = iCorner; - } -} From a58d83f6f2841a5fb8ad457b5349c6cbef3670e4 Mon Sep 17 00:00:00 2001 From: Raelorasz <82320853+Raelorasz@users.noreply.github.com> Date: Fri, 7 May 2021 02:43:59 +0200 Subject: [PATCH 101/108] fix(DB/Creature): Remove Skeletal Executioner from Silverpine Forest (#5251) * fix(DB/Creature): Removed Skeletal Executioner from Silverpine Forest - Closes issue #5237 * Fix DB startup error --- .../sql/updates/pending_db_world/rev_1618148212632025000.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1618148212632025000.sql diff --git a/data/sql/updates/pending_db_world/rev_1618148212632025000.sql b/data/sql/updates/pending_db_world/rev_1618148212632025000.sql new file mode 100644 index 0000000000..cfd3b9e71f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1618148212632025000.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618148212632025000'); + +DELETE FROM `creature` WHERE (`id` = 1787) AND (`guid` IN (52542)); + +DELETE FROM `creature_addon` WHERE `guid`=52542; From a1ae3f69a8e2eda881b6c22c31add1e985b52241 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 7 May 2021 00:45:27 +0000 Subject: [PATCH 102/108] chore(DB): import pending SQL update file Referenced commit(s): a58d83f6f2841a5fb8ad457b5349c6cbef3670e4 --- data/sql/updates/db_world/2021_05_07_00.sql | 30 +++++++++++++++++++ .../rev_1618148212632025000.sql | 5 ---- 2 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_07_00.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1618148212632025000.sql diff --git a/data/sql/updates/db_world/2021_05_07_00.sql b/data/sql/updates/db_world/2021_05_07_00.sql new file mode 100644 index 0000000000..001b47c0a0 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_07_00.sql @@ -0,0 +1,30 @@ +-- DB update 2021_05_06_13 -> 2021_05_07_00 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_06_13'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_06_13 2021_05_07_00 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1618148212632025000'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618148212632025000'); + +DELETE FROM `creature` WHERE (`id` = 1787) AND (`guid` IN (52542)); + +DELETE FROM `creature_addon` WHERE `guid`=52542; + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1618148212632025000.sql b/data/sql/updates/pending_db_world/rev_1618148212632025000.sql deleted file mode 100644 index cfd3b9e71f..0000000000 --- a/data/sql/updates/pending_db_world/rev_1618148212632025000.sql +++ /dev/null @@ -1,5 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1618148212632025000'); - -DELETE FROM `creature` WHERE (`id` = 1787) AND (`guid` IN (52542)); - -DELETE FROM `creature_addon` WHERE `guid`=52542; From 42659f06c896417702740b0f339a1516dca305f0 Mon Sep 17 00:00:00 2001 From: Silker <61223313+Si1ker@users.noreply.github.com> Date: Thu, 6 May 2021 23:27:04 -0600 Subject: [PATCH 103/108] fix(DB/creature_addon): Adjust movement for Juvenile Snow Leopard (#5675) --- .../sql/updates/pending_db_world/rev_1620330327979257800.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1620330327979257800.sql diff --git a/data/sql/updates/pending_db_world/rev_1620330327979257800.sql b/data/sql/updates/pending_db_world/rev_1620330327979257800.sql new file mode 100644 index 0000000000..dfea3adc2a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1620330327979257800.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620330327979257800'); + +DELETE FROM `creature_addon` WHERE `guid`=3596; +UPDATE `creature` SET `wander_distance`=10, `MovementType`=1 WHERE `id`=1199; + From 2880e37ee004c25ec650e7a4db003022ba9bb88e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 7 May 2021 05:28:28 +0000 Subject: [PATCH 104/108] chore(DB): import pending SQL update file Referenced commit(s): 42659f06c896417702740b0f339a1516dca305f0 --- data/sql/updates/db_world/2021_05_07_01.sql | 30 +++++++++++++++++++ .../rev_1620330327979257800.sql | 5 ---- 2 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_07_01.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1620330327979257800.sql diff --git a/data/sql/updates/db_world/2021_05_07_01.sql b/data/sql/updates/db_world/2021_05_07_01.sql new file mode 100644 index 0000000000..bc107c6fc7 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_07_01.sql @@ -0,0 +1,30 @@ +-- DB update 2021_05_07_00 -> 2021_05_07_01 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_07_00'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_07_00 2021_05_07_01 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1620330327979257800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620330327979257800'); + +DELETE FROM `creature_addon` WHERE `guid`=3596; +UPDATE `creature` SET `wander_distance`=10, `MovementType`=1 WHERE `id`=1199; + + +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1620330327979257800.sql b/data/sql/updates/pending_db_world/rev_1620330327979257800.sql deleted file mode 100644 index dfea3adc2a..0000000000 --- a/data/sql/updates/pending_db_world/rev_1620330327979257800.sql +++ /dev/null @@ -1,5 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620330327979257800'); - -DELETE FROM `creature_addon` WHERE `guid`=3596; -UPDATE `creature` SET `wander_distance`=10, `MovementType`=1 WHERE `id`=1199; - From 685b10a2916f14c11bcdcec663b157967c31259c Mon Sep 17 00:00:00 2001 From: KiK0 Date: Fri, 7 May 2021 03:45:12 -0700 Subject: [PATCH 105/108] fix(Core/Spells): Berserk now removes the Tiger Fury buff. (#5481) --- .../rev_1619460299756494800.sql | 5 +++ src/server/scripts/Spells/spell_druid.cpp | 43 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1619460299756494800.sql diff --git a/data/sql/updates/pending_db_world/rev_1619460299756494800.sql b/data/sql/updates/pending_db_world/rev_1619460299756494800.sql new file mode 100644 index 0000000000..548f4abd77 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1619460299756494800.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619460299756494800'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=50334; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(50334, 'spell_dru_berserk'); \ No newline at end of file diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index d93b893e08..be31c06a2f 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1347,6 +1347,48 @@ public: } }; +// -50334 - Berserk +class spell_dru_berserk : public SpellScriptLoader +{ +public: + spell_dru_berserk() : SpellScriptLoader("spell_dru_berserk") { } + + class spell_dru_berserk_SpellScript : public SpellScript + { + PrepareSpellScript(spell_dru_berserk_SpellScript); + + void HandleAfterCast() + { + Unit* caster = GetCaster(); + + if (caster->GetTypeId() == TYPEID_PLAYER) + { + // Remove tiger fury / mangle(bear) + const uint32 TigerFury[6] = { 5217, 6793, 9845, 9846, 50212, 50213 }; + const uint32 DireMaul[6] = { 33878, 33986, 33987, 48563, 48564 }; + + // remove aura + for (auto& i : TigerFury) + caster->RemoveAurasDueToSpell(i); + + // reset dire bear maul cd + for (auto& i : DireMaul) + caster->ToPlayer()->RemoveSpellCooldown(i, true); + } + } + + void Register() override + { + AfterCast += SpellCastFn(spell_dru_berserk_SpellScript::HandleAfterCast); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_dru_berserk_SpellScript(); + } +}; + void AddSC_druid_spell_scripts() { // Ours @@ -1357,6 +1399,7 @@ void AddSC_druid_spell_scripts() new spell_dru_brambles_treant(); new spell_dru_barkskin(); new spell_dru_treant_scaling(); + new spell_dru_berserk(); // Theirs new spell_dru_dash(); From acb7c6291c234069fcbefa99483302276a22b196 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 7 May 2021 11:12:50 +0000 Subject: [PATCH 106/108] chore(DB): import pending SQL update file Referenced commit(s): 685b10a2916f14c11bcdcec663b157967c31259c --- data/sql/updates/db_world/2021_05_07_02.sql | 29 +++++++++++++++++++ .../rev_1619460299756494800.sql | 5 ---- 2 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/db_world/2021_05_07_02.sql delete mode 100644 data/sql/updates/pending_db_world/rev_1619460299756494800.sql diff --git a/data/sql/updates/db_world/2021_05_07_02.sql b/data/sql/updates/db_world/2021_05_07_02.sql new file mode 100644 index 0000000000..f1da08b522 --- /dev/null +++ b/data/sql/updates/db_world/2021_05_07_02.sql @@ -0,0 +1,29 @@ +-- DB update 2021_05_07_01 -> 2021_05_07_02 +DROP PROCEDURE IF EXISTS `updateDb`; +DELIMITER // +CREATE PROCEDURE updateDb () +proc:BEGIN DECLARE OK VARCHAR(100) DEFAULT 'FALSE'; +SELECT COUNT(*) INTO @COLEXISTS +FROM information_schema.COLUMNS +WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'version_db_world' AND COLUMN_NAME = '2021_05_07_01'; +IF @COLEXISTS = 0 THEN LEAVE proc; END IF; +START TRANSACTION; +ALTER TABLE version_db_world CHANGE COLUMN 2021_05_07_01 2021_05_07_02 bit; +SELECT sql_rev INTO OK FROM version_db_world WHERE sql_rev = '1619460299756494800'; IF OK <> 'FALSE' THEN LEAVE proc; END IF; +-- +-- START UPDATING QUERIES +-- + +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619460299756494800'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=50334; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(50334, 'spell_dru_berserk'); +-- +-- END UPDATING QUERIES +-- +COMMIT; +END // +DELIMITER ; +CALL updateDb(); +DROP PROCEDURE IF EXISTS `updateDb`; diff --git a/data/sql/updates/pending_db_world/rev_1619460299756494800.sql b/data/sql/updates/pending_db_world/rev_1619460299756494800.sql deleted file mode 100644 index 548f4abd77..0000000000 --- a/data/sql/updates/pending_db_world/rev_1619460299756494800.sql +++ /dev/null @@ -1,5 +0,0 @@ -INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1619460299756494800'); - -DELETE FROM `spell_script_names` WHERE `spell_id`=50334; -INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES -(50334, 'spell_dru_berserk'); \ No newline at end of file From 0e8e21b812b12ac5562e43874438bfbc093bb3ae Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Fri, 7 May 2021 13:51:39 +0200 Subject: [PATCH 107/108] fix(Core/Groups): fix group enchanting level not resetting properly (#5501) --- src/server/game/Groups/Group.cpp | 15 ++++++++++----- src/server/game/Server/WorldSession.cpp | 4 ++++ src/server/game/Server/WorldSession.h | 1 + 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 335df3d6de..ba03535bac 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -557,10 +557,6 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R CharacterDatabase.Execute(stmt); } - // Reevaluate group enchanter if the leaving player had enchanting skill or the player is offline - if (!player || player->GetSkillValue(SKILL_ENCHANTING)) - ResetMaxEnchantingLevel(); - // Remove player from loot rolls for (Rolls::iterator it = RollId.begin(); it != RollId.end();) { @@ -602,6 +598,12 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R sWorld->UpdateGlobalPlayerGroup(guid.GetCounter(), 0); } + // Reevaluate group enchanter if the leaving player had enchanting skill or the player is offline + if (!player || player->GetSkillValue(SKILL_ENCHANTING)) + { + ResetMaxEnchantingLevel(); + } + // Pick new leader if necessary bool validLeader = true; if (m_leaderGuid == guid) @@ -2057,8 +2059,11 @@ void Group::ResetMaxEnchantingLevel() for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) { pMember = ObjectAccessor::FindPlayer(citr->guid); - if (pMember && m_maxEnchantingLevel < pMember->GetSkillValue(SKILL_ENCHANTING)) + if (pMember && pMember->GetSession() && !pMember->GetSession()->IsSocketClosed() + && m_maxEnchantingLevel < pMember->GetSkillValue(SKILL_ENCHANTING)) + { m_maxEnchantingLevel = pMember->GetSkillValue(SKILL_ENCHANTING); + } } } diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 2b9460005b..3e715fc0fa 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -450,6 +450,10 @@ bool WorldSession::HandleSocketClosed() return false; } +bool WorldSession::IsSocketClosed() const { + return !m_Socket || m_Socket->IsClosed(); +} + void WorldSession::HandleTeleportTimeout(bool updateInSessions) { // pussywizard: handle teleport ack timeout diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 45da8c8e38..3b2eee0ecb 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -926,6 +926,7 @@ public: // opcodes handlers void SetKicked(bool val) { _kicked = val; } void SetShouldSetOfflineInDB(bool val) { _shouldSetOfflineInDB = val; } bool GetShouldSetOfflineInDB() const { return _shouldSetOfflineInDB; } + bool IsSocketClosed() const; /*** CALLBACKS From 2189ac0b0834393f7ad9fed78fdea56f54cd6a8b Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 7 May 2021 18:10:44 +0200 Subject: [PATCH 108/108] =?UTF-8?q?feat(Core/Anticheat):=20Preparation=20t?= =?UTF-8?q?o=20implement=20new=20passive=20anticheat=20=E2=80=A6=20(#5516)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Entities/Player/Player.cpp | 7 + src/server/game/Entities/Unit/Unit.cpp | 51 ++++++ src/server/game/Entities/Unit/Unit.h | 19 +- src/server/game/Handlers/MiscHandler.cpp | 5 +- src/server/game/Handlers/MovementHandler.cpp | 163 ++++++++++++------ src/server/game/Handlers/TaxiHandler.cpp | 3 + src/server/game/Miscellaneous/Language.h | 4 +- src/server/game/Scripting/ScriptMgr.cpp | 57 ++++++ src/server/game/Scripting/ScriptMgr.h | 20 +++ .../game/Spells/Auras/SpellAuraEffects.cpp | 45 +++++ src/server/game/Spells/SpellEffects.cpp | 73 ++++++++ src/server/scripts/Commands/cs_gm.cpp | 6 + .../Nexus/EyeOfEternity/boss_malygos.cpp | 17 ++ 13 files changed, 406 insertions(+), 64 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1a3da37c2e..992b0d8af7 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1824,6 +1824,8 @@ void Player::Update(uint32 p_time) m_zoneUpdateTimer -= p_time; } + sScriptMgr->OnPlayerUpdate(this, p_time); + if (IsAlive()) { m_regenTimer += p_time; @@ -2221,6 +2223,9 @@ void Player::SendTeleportAckPacket() bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options /*= 0*/, Unit* target /*= nullptr*/) { + // for except kick by antispeedhack + sScriptMgr->AnticheatSetSkipOnePacketForASH(this, true); + if (!MapManager::IsValidMapCoord(mapid, x, y, z, orientation)) { LOG_ERROR("server", "TeleportTo: invalid map (%d) or invalid coordinates (X: %f, Y: %f, Z: %f, O: %f) given when teleporting player (%s, name: %s, map: %d, X: %f, Y: %f, Z: %f, O: %f).", @@ -28125,6 +28130,8 @@ bool Player::SetDisableGravity(bool disable, bool packetOnly /*= false*/) bool Player::SetCanFly(bool apply, bool packetOnly /*= false*/) { + sScriptMgr->AnticheatSetCanFlybyServer(this, apply); + if (!packetOnly && !Unit::SetCanFly(apply)) return false; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 8dadb516be..f9e63895e7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12759,6 +12759,8 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) if (Player* player = ToPlayer()) { + sScriptMgr->AnticheatSetUnderACKmount(player); + // mount as a vehicle if (VehicleId) { @@ -12847,6 +12849,8 @@ void Unit::Dismount() // (it could probably happen when logging in after a previous crash) if (Player* player = ToPlayer()) { + sScriptMgr->AnticheatSetUnderACKmount(player); + if (Pet* pPet = player->GetPet()) { if (pPet->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED) && !pPet->HasUnitState(UNIT_STATE_STUNNED)) @@ -17292,6 +17296,11 @@ void Unit::SetControlled(bool apply, UnitState state) default: break; } + + if (GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetRootACKUpd(ToPlayer()); + } } else { @@ -17383,7 +17392,10 @@ void Unit::SetStunned(bool apply) if (GetTypeId() != TYPEID_PLAYER) StopMoving(); else + { SetStandState(UNIT_STAND_STATE_STAND); + sScriptMgr->AnticheatSetSkipOnePacketForASH(ToPlayer(), true); + } CastStop(); } @@ -17447,6 +17459,8 @@ void Unit::SetRooted(bool apply) data << GetPackGUID(); data << m_rootTimes; SendMessageToSet(&data, true); + + sScriptMgr->AnticheatSetSkipOnePacketForASH(ToPlayer(), true); } else { @@ -17503,6 +17517,11 @@ void Unit::SetFeared(bool apply) if (!caster) caster = getAttackerForHelper(); GetMotionMaster()->MoveFleeing(caster, fearAuras.empty() ? sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_FLEE_DELAY) : 0); // caster == nullptr processed in MoveFleeing + + if (GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(ToPlayer(), true); + } } else { @@ -17535,6 +17554,11 @@ void Unit::SetConfused(bool apply) { SetTarget(); GetMotionMaster()->MoveConfused(); + + if (GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(ToPlayer(), true); + } } else { @@ -17863,6 +17887,11 @@ void Unit::RemoveCharmedBy(Unit* charmer) } } + if (Player* player = ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(player); + } + // xinef: restore threat for (CharmThreatMap::const_iterator itr = _charmThreatInfo.begin(); itr != _charmThreatInfo.end(); ++itr) { @@ -18362,6 +18391,8 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ) if (player->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) || player->HasAuraType(SPELL_AURA_FLY)) player->SetCanFly(true, true); + + sScriptMgr->AnticheatSetSkipOnePacketForASH(player, true); } } @@ -18796,6 +18827,12 @@ bool Unit::HandleSpellClick(Unit* clicker, int8 seatId) void Unit::EnterVehicle(Unit* base, int8 seatId) { CastCustomSpell(VEHICLE_SPELL_RIDE_HARDCODED, SPELLVALUE_BASE_POINT0, seatId + 1, base, TRIGGERED_IGNORE_CASTER_MOUNTED_OR_ON_VEHICLE); + + if (Player* player = ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(player); + sScriptMgr->AnticheatSetSkipOnePacketForASH(player, true); + } } void Unit::EnterVehicleUnattackable(Unit* base, int8 seatId) @@ -18840,6 +18877,9 @@ void Unit::_EnterVehicle(Vehicle* vehicle, int8 seatId, AuraApplication const* a if (vehicle->GetBase()->GetTypeId() == TYPEID_PLAYER && player->IsInCombat()) return; + sScriptMgr->AnticheatSetUnderACKmount(player); + sScriptMgr->AnticheatSetSkipOnePacketForASH(player, true); + InterruptNonMeleeSpells(false); player->StopCastingCharm(); player->StopCastingBindSight(); @@ -18903,6 +18943,12 @@ void Unit::ExitVehicle(Position const* /*exitPosition*/) //! init spline movement based on those coordinates in unapply handlers, and //! relocate exiting passengers based on Unit::moveSpline data. Either way, //! Coming Soon(TM) + + if (Player* player = ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(player); + sScriptMgr->AnticheatSetSkipOnePacketForASH(player, true); + } } bool VehicleDespawnEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) @@ -18958,7 +19004,12 @@ void Unit::_ExitVehicle(Position const* exitPosition) AddUnitState(UNIT_STATE_MOVE); if (player) + { player->SetFallInformation(time(nullptr), GetPositionZ()); + + sScriptMgr->AnticheatSetUnderACKmount(player); + sScriptMgr->AnticheatSetSkipOnePacketForASH(player, true); + } else if (HasUnitMovementFlag(MOVEMENTFLAG_ROOT)) { WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index f6e7414f75..4f61395fbd 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -500,17 +500,18 @@ enum UnitState | UNIT_STATE_EVADE | UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE | UNIT_STATE_IGNORE_PATHFINDING | UNIT_STATE_NO_ENVIRONMENT_UPD, - UNIT_STATE_UNATTACKABLE = UNIT_STATE_IN_FLIGHT, + UNIT_STATE_UNATTACKABLE = UNIT_STATE_IN_FLIGHT, // for real move using movegen check and stop (except unstoppable flight) - UNIT_STATE_MOVING = UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE, - UNIT_STATE_CONTROLLED = (UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING), - UNIT_STATE_LOST_CONTROL = (UNIT_STATE_CONTROLLED | UNIT_STATE_JUMPING | UNIT_STATE_CHARGING), - UNIT_STATE_SIGHTLESS = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_EVADE), - UNIT_STATE_CANNOT_AUTOATTACK = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_CASTING), - UNIT_STATE_CANNOT_TURN = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_ROTATING | UNIT_STATE_ROOT), + UNIT_STATE_MOVING = UNIT_STATE_ROAMING_MOVE | UNIT_STATE_CONFUSED_MOVE | UNIT_STATE_FLEEING_MOVE | UNIT_STATE_CHASE_MOVE | UNIT_STATE_FOLLOW_MOVE, + UNIT_STATE_CONTROLLED = (UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING), + UNIT_STATE_LOST_CONTROL = (UNIT_STATE_CONTROLLED | UNIT_STATE_JUMPING | UNIT_STATE_CHARGING), + UNIT_STATE_SIGHTLESS = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_EVADE), + UNIT_STATE_CANNOT_AUTOATTACK = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_CASTING), + UNIT_STATE_CANNOT_TURN = (UNIT_STATE_LOST_CONTROL | UNIT_STATE_ROTATING | UNIT_STATE_ROOT), // stay by different reasons - UNIT_STATE_NOT_MOVE = UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DIED | UNIT_STATE_DISTRACTED, - UNIT_STATE_ALL_STATE = 0xffffffff //(UNIT_STATE_STOPPED | UNIT_STATE_MOVING | UNIT_STATE_IN_COMBAT | UNIT_STATE_IN_FLIGHT) + UNIT_STATE_NOT_MOVE = UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DIED | UNIT_STATE_DISTRACTED, + UNIT_STATE_IGNORE_ANTISPEEDHACK = UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED | UNIT_STATE_CHARGING | UNIT_STATE_DISTRACTED | UNIT_STATE_POSSESSED, + UNIT_STATE_ALL_STATE = 0xffffffff //(UNIT_STATE_STOPPED | UNIT_STATE_MOVING | UNIT_STATE_IN_COMBAT | UNIT_STATE_IN_FLIGHT) }; enum UnitMoveType diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 15d70f4f23..67d9ecdc5d 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1623,8 +1623,7 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode(WorldPacket& recv_data) ObjectGuid guid; recv_data >> guid.ReadAsPacked(); - // pussywizard: typical check for incomming movement packets - if (!_player->m_mover || !_player->m_mover->IsInWorld() || _player->m_mover->IsDuringRemoveFromWorld() || guid != _player->m_mover->GetGUID()) + if (!_player) { recv_data.rfinish(); // prevent warnings spam return; @@ -1638,6 +1637,8 @@ void WorldSession::HandleMoveSetCanFlyAckOpcode(WorldPacket& recv_data) recv_data.read_skip(); // unk2 + sScriptMgr->AnticheatSetCanFlybyServer(_player, movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY)); + _player->m_mover->m_movementInfo.flags = movementInfo.GetMovementFlags(); } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index d30e1458b6..6c0992c2d0 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -13,6 +13,7 @@ #include "Corpse.h" #include "GameGraveyard.h" #include "InstanceSaveMgr.h" +#include "Language.h" #include "Log.h" #include "MathUtil.h" #include "MapManager.h" @@ -26,6 +27,7 @@ #include "WaypointMovementGenerator.h" #include "WorldPacket.h" #include "WorldSession.h" +#include "Vehicle.h" #define MOVEMENT_PACKET_TIME_DELAY 0 @@ -328,8 +330,8 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) return; } - // pussywizard: typical check for incomming movement packets - if (!mover || !(mover->IsInWorld()) || mover->IsDuringRemoveFromWorld() || !(mover->movespline->Finalized())) + // pussywizard: typical check for incomming movement packets | prevent tampered movement data + if (!mover || !(mover->IsInWorld()) || mover->IsDuringRemoveFromWorld() || guid != mover->GetGUID()) { recvData.rfinish(); // prevent warnings spam return; @@ -341,30 +343,69 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) if (!movementInfo.pos.IsPositionValid()) { + if (plrMover) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(plrMover, true); + sScriptMgr->AnticheatUpdateMovementInfo(plrMover, movementInfo); + } + recvData.rfinish(); // prevent warnings spam return; } - recvData.rfinish(); // prevent warnings spam - - if (movementInfo.flags & MOVEMENTFLAG_ONTRANSPORT) + if (!mover->movespline->Finalized()) { - // T_POS ON VEHICLES! - if (mover->GetVehicle()) - movementInfo.transport.pos = mover->m_movementInfo.transport.pos; + recvData.rfinish(); // prevent warnings spam + return; + } - // transports size limited - // (also received at zeppelin leave by some reason with t_* as absolute in continent coordinates, can be safely skipped) - if (movementInfo.transport.pos.GetPositionX() > 75.0f || movementInfo.transport.pos.GetPositionY() > 75.0f || movementInfo.transport.pos.GetPositionZ() > 75.0f || - movementInfo.transport.pos.GetPositionX() < -75.0f || movementInfo.transport.pos.GetPositionY() < -75.0f || movementInfo.transport.pos.GetPositionZ() < -75.0f) + // Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE + if (mover->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE)) + { + // Xinef: skip moving packets + if (movementInfo.HasMovementFlag(MOVEMENTFLAG_MASK_MOVING)) { - recvData.rfinish(); // prevent warnings spam + if (plrMover) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(plrMover, true); + sScriptMgr->AnticheatUpdateMovementInfo(plrMover, movementInfo); + } + return; + } + movementInfo.pos.Relocate(mover->GetPositionX(), mover->GetPositionY(), mover->GetPositionZ()); + + if (mover->GetTypeId() == TYPEID_UNIT) + { + movementInfo.transport.guid = mover->m_movementInfo.transport.guid; + movementInfo.transport.pos.Relocate(mover->m_movementInfo.transport.pos.GetPositionX(), mover->m_movementInfo.transport.pos.GetPositionY(), mover->m_movementInfo.transport.pos.GetPositionZ()); + movementInfo.transport.seat = mover->m_movementInfo.transport.seat; + } + } + + if (movementInfo.HasMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + { + // We were teleported, skip packets that were broadcast before teleport + if (movementInfo.pos.GetExactDist2d(mover) > SIZE_OF_GRIDS) + { + if (plrMover) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(plrMover, true); + sScriptMgr->AnticheatUpdateMovementInfo(plrMover, movementInfo); + //TC_LOG_INFO("anticheat", "MovementHandler:: 2 We were teleported, skip packets that were broadcast before teleport"); + } + recvData.rfinish(); // prevent warnings spam return; } if (!acore::IsValidMapCoord(movementInfo.pos.GetPositionX() + movementInfo.transport.pos.GetPositionX(), movementInfo.pos.GetPositionY() + movementInfo.transport.pos.GetPositionY(), movementInfo.pos.GetPositionZ() + movementInfo.transport.pos.GetPositionZ(), movementInfo.pos.GetOrientation() + movementInfo.transport.pos.GetOrientation())) { + if (plrMover) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(plrMover, true); + sScriptMgr->AnticheatUpdateMovementInfo(plrMover, movementInfo); + } + recvData.rfinish(); // prevent warnings spam return; } @@ -382,6 +423,8 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) } else if (plrMover->GetTransport()->GetGUID() != movementInfo.transport.guid) { + sScriptMgr->AnticheatSetSkipOnePacketForASH(plrMover, true); + bool foundNewTransport = false; plrMover->m_transport->RemovePassenger(plrMover); if (Transport* transport = plrMover->GetMap()->GetTransport(movementInfo.transport.guid)) @@ -400,42 +443,66 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) } if (!mover->GetTransport() && !mover->GetVehicle()) - movementInfo.flags &= ~MOVEMENTFLAG_ONTRANSPORT; + { + GameObject* go = mover->GetMap()->GetGameObject(movementInfo.transport.guid); + if (!go || go->GetGoType() != GAMEOBJECT_TYPE_TRANSPORT) + { + movementInfo.RemoveMovementFlag(MOVEMENTFLAG_ONTRANSPORT); + } + } } else if (plrMover && plrMover->GetTransport()) // if we were on a transport, leave { + sScriptMgr->AnticheatSetUnderACKmount(plrMover); // just for safe + plrMover->m_transport->RemovePassenger(plrMover); plrMover->m_transport = nullptr; movementInfo.transport.Reset(); } + // fall damage generation (ignore in flight case that can be triggered also at lags in moment teleportation to another map). + if (opcode == MSG_MOVE_FALL_LAND && plrMover && !plrMover->IsInFlight()) + { + plrMover->HandleFall(movementInfo); + + sScriptMgr->AnticheatSetJumpingbyOpcode(plrMover, false); + } + + // interrupt parachutes upon falling or landing in water + if (opcode == MSG_MOVE_FALL_LAND || opcode == MSG_MOVE_START_SWIM) + { + mover->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LANDING); // Parachutes + + if (plrMover) + { + sScriptMgr->AnticheatSetJumpingbyOpcode(plrMover, false); + } + } + if (plrMover && ((movementInfo.flags & MOVEMENTFLAG_SWIMMING) != 0) != plrMover->IsInWater()) { // now client not include swimming flag in case jumping under water plrMover->SetInWater(!plrMover->IsInWater() || plrMover->GetBaseMap()->IsUnderWater(movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY(), movementInfo.pos.GetPositionZ())); } - if (plrMover)//Hook for OnPlayerMove - sScriptMgr->OnPlayerMove(plrMover, movementInfo, opcode); - // Dont allow to turn on walking if charming other player - if (mover->GetGUID() != _player->GetGUID()) - movementInfo.flags &= ~MOVEMENTFLAG_WALKING; - // Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE - if (mover->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE)) + bool jumpopcode = false; + if (opcode == MSG_MOVE_JUMP) { - // Xinef: skip moving packets - if (movementInfo.HasMovementFlag(MOVEMENTFLAG_MASK_MOVING)) - return; - movementInfo.pos.Relocate(mover->GetPositionX(), mover->GetPositionY(), mover->GetPositionZ()); - - if (mover->GetTypeId() == TYPEID_UNIT) + jumpopcode = true; + if (plrMover && !sScriptMgr->AnticheatHandleDoubleJump(plrMover, mover)) { - movementInfo.transport.guid = mover->m_movementInfo.transport.guid; - movementInfo.transport.pos.Relocate(mover->m_movementInfo.transport.pos.GetPositionX(), mover->m_movementInfo.transport.pos.GetPositionY(), mover->m_movementInfo.transport.pos.GetPositionZ()); - movementInfo.transport.seat = mover->m_movementInfo.transport.seat; + plrMover->GetSession()->KickPlayer(); + return; } } + /* start some hack detection */ + if (plrMover && !sScriptMgr->AnticheatCheckMovementInfo(plrMover, movementInfo, mover, jumpopcode)) + { + plrMover->GetSession()->KickPlayer(); + return; + } + /* process position-change */ WorldPacket data(opcode, recvData.size()); int64 movementTime = (int64)movementInfo.time + _timeSyncClockDelta; @@ -455,32 +522,22 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) mover->m_movementInfo = movementInfo; - // this is almost never true (pussywizard: only one packet when entering vehicle), normally use mover->IsVehicle() - if (mover->GetVehicle()) + // Some vehicles allow the passenger to turn by himself + if (Vehicle* vehicle = mover->GetVehicle()) { - mover->SetOrientation(movementInfo.pos.GetOrientation()); - mover->UpdatePosition(movementInfo.pos); + if (VehicleSeatEntry const* seat = vehicle->GetSeatForPassenger(mover)) + { + if (seat->m_flags & VEHICLE_SEAT_FLAG_ALLOW_TURNING && movementInfo.pos.GetOrientation() != mover->GetOrientation()) + { + mover->SetOrientation(movementInfo.pos.GetOrientation()); + mover->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TURNING); + } + } + return; } - // pussywizard: previously always mover->UpdatePosition(movementInfo.pos); - if (movementInfo.flags & MOVEMENTFLAG_ONTRANSPORT && mover->GetTransport()) - { - float x, y, z, o; - movementInfo.transport.pos.GetPosition(x, y, z, o); - mover->GetTransport()->CalculatePassengerPosition(x, y, z, &o); - mover->UpdatePosition(x, y, z, o); - } - else - mover->UpdatePosition(movementInfo.pos); - - // fall damage generation (ignore in flight case that can be triggered also at lags in moment teleportation to another map). - // Xinef: moved it here, previously StopMoving function called when player died relocated him to last saved coordinates (which were in air) - if (opcode == MSG_MOVE_FALL_LAND && plrMover && !plrMover->IsInFlight() && (!plrMover->GetTransport() || plrMover->GetTransport()->IsStaticTransport())) - plrMover->HandleFall(movementInfo); - // Xinef: interrupt parachutes upon falling or landing in water - if (opcode == MSG_MOVE_FALL_LAND || opcode == MSG_MOVE_START_SWIM) - mover->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LANDING); // Parachutes + mover->UpdatePosition(movementInfo.pos); if (plrMover) // nothing is charmed, or player charmed { @@ -597,6 +654,8 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket& recvData) return; } + sScriptMgr->AnticheatSetUnderACKmount(_player); + // skip all forced speed changes except last and unexpected // in run/mounted case used one ACK and it must be skipped.m_forced_speed_changes[MOVE_RUN} store both. if (_player->m_forced_speed_changes[force_move_type] > 0) diff --git a/src/server/game/Handlers/TaxiHandler.cpp b/src/server/game/Handlers/TaxiHandler.cpp index 73fdfc18b1..1e7e3031ba 100644 --- a/src/server/game/Handlers/TaxiHandler.cpp +++ b/src/server/game/Handlers/TaxiHandler.cpp @@ -10,6 +10,7 @@ #include "ObjectMgr.h" #include "Opcodes.h" #include "Player.h" +#include "ScriptMgr.h" #include "UpdateMask.h" #include "WaypointMovementGenerator.h" #include "WorldPacket.h" @@ -131,6 +132,8 @@ void WorldSession::SendDoFlight(uint32 mountDisplayId, uint32 path, uint32 pathN GetPlayer()->Mount(mountDisplayId); GetPlayer()->GetMotionMaster()->MoveTaxiFlight(path, pathNode); + + sScriptMgr->AnticheatSetSkipOnePacketForASH(GetPlayer(), true); } bool WorldSession::SendLearnNewTaxiNode(Creature* unit) diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index dd7e6d2035..faea05c80a 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1332,6 +1332,8 @@ enum AcoreStrings LANG_BG_READY_CHECK_ERROR = 30084, LANG_DEBUG_BG_CONF = 30085, - LANG_DEBUG_ARENA_CONF = 30086, + LANG_DEBUG_ARENA_CONF = 30086 + + // 30087-30095 reserved for passive anticheat }; #endif diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 659cccd8af..de2683ae9a 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1549,6 +1549,11 @@ void ScriptMgr::OnBeforePlayerUpdate(Player* player, uint32 p_time) FOREACH_SCRIPT(PlayerScript)->OnBeforeUpdate(player, p_time); } +void ScriptMgr::OnPlayerUpdate(Player* player, uint32 p_time) +{ + FOREACH_SCRIPT(PlayerScript)->OnUpdate(player, p_time); +} + void ScriptMgr::OnPlayerLogin(Player* player) { #ifdef ELUNA @@ -2632,6 +2637,58 @@ void ScriptMgr::OnSetServerSideVisibilityDetect(Player* player, ServerSideVisibi FOREACH_SCRIPT(PlayerScript)->OnSetServerSideVisibilityDetect(player, type, sec); } +void ScriptMgr::AnticheatSetSkipOnePacketForASH(Player* player, bool apply) +{ + FOREACH_SCRIPT(PlayerScript)->AnticheatSetSkipOnePacketForASH(player, apply); +} + +void ScriptMgr::AnticheatSetCanFlybyServer(Player* player, bool apply) +{ + FOREACH_SCRIPT(PlayerScript)->AnticheatSetCanFlybyServer(player, apply); +} + +void ScriptMgr::AnticheatSetUnderACKmount(Player* player) +{ + FOREACH_SCRIPT(PlayerScript)->AnticheatSetUnderACKmount(player); +} + +void ScriptMgr::AnticheatSetRootACKUpd(Player* player) +{ + FOREACH_SCRIPT(PlayerScript)->AnticheatSetRootACKUpd(player); +} + +void ScriptMgr::AnticheatSetJumpingbyOpcode(Player* player, bool jump) +{ + FOREACH_SCRIPT(PlayerScript)->AnticheatSetJumpingbyOpcode(player, jump); +} + +void ScriptMgr::AnticheatUpdateMovementInfo(Player* player, MovementInfo const& movementInfo) +{ + FOREACH_SCRIPT(PlayerScript)->AnticheatUpdateMovementInfo(player, movementInfo); +} + +bool ScriptMgr::AnticheatHandleDoubleJump(Player* player, Unit* mover) +{ + bool ret = true; + + FOR_SCRIPTS_RET(PlayerScript, itr, end, ret) // return true by default if not scripts + if (!itr->second->AnticheatHandleDoubleJump(player, mover)) + ret = false; // we change ret value only when scripts return true + + return ret; +} + +bool ScriptMgr::AnticheatCheckMovementInfo(Player* player, MovementInfo const& movementInfo, Unit* mover, bool jump) +{ + bool ret = true; + + FOR_SCRIPTS_RET(PlayerScript, itr, end, ret) // return true by default if not scripts + if (!itr->second->AnticheatCheckMovementInfo(player, movementInfo, mover, jump)) + ret = false; // we change ret value only when scripts return true + + return ret; +} + bool ScriptMgr::CanGuildSendBankList(Guild const* guild, WorldSession* session, uint8 tabId, bool sendAllSlots) { bool ret = true; diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index bc4b1391b6..598b68c4f5 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -732,6 +732,7 @@ public: // Called for player::update virtual void OnBeforeUpdate(Player* /*player*/, uint32 /*p_time*/) { } + virtual void OnUpdate(Player* /*player*/, uint32 /*p_time*/) { } // Called when a player's money is modified (before the modification is done) virtual void OnMoneyChanged(Player* /*player*/, int32& /*amount*/) { } @@ -1014,6 +1015,16 @@ public: virtual void OnSetServerSideVisibility(Player* /*player*/, ServerSideVisibilityType& /*type*/, AccountTypes& /*sec*/) { } virtual void OnSetServerSideVisibilityDetect(Player* /*player*/, ServerSideVisibilityType& /*type*/, AccountTypes& /*sec*/) { } + + // Passive Anticheat System + virtual void AnticheatSetSkipOnePacketForASH(Player* /*player*/, bool /*apply*/) { } + virtual void AnticheatSetCanFlybyServer(Player* /*player*/, bool /*apply*/) { } + virtual void AnticheatSetUnderACKmount(Player* /*player*/) { } + virtual void AnticheatSetRootACKUpd(Player* /*player*/) { } + virtual void AnticheatSetJumpingbyOpcode(Player* /*player*/, bool /*jump*/) { } + virtual void AnticheatUpdateMovementInfo(Player* /*player*/, MovementInfo const& /*movementInfo*/) { } + [[nodiscard]] virtual bool AnticheatHandleDoubleJump(Player* /*player*/, Unit* /*mover*/) { return true; } + [[nodiscard]] virtual bool AnticheatCheckMovementInfo(Player* /*player*/, MovementInfo const& /*movementInfo*/, Unit* /*mover*/, bool /*jump*/) { return true; } }; class AccountScript : public ScriptObject @@ -1542,6 +1553,7 @@ public: /* AchievementCriteriaScript */ public: /* PlayerScript */ void OnBeforePlayerUpdate(Player* player, uint32 p_time); + void OnPlayerUpdate(Player* player, uint32 p_time); void OnSendInitialPacketsBeforeAddToMap(Player* player, WorldPacket& data); void OnPlayerReleasedGhost(Player* player); void OnPVPKill(Player* killer, Player* killed); @@ -1667,6 +1679,14 @@ public: /* PlayerScript */ bool CanInitTrade(Player* player, Player* target); void OnSetServerSideVisibility(Player* player, ServerSideVisibilityType& type, AccountTypes& sec); void OnSetServerSideVisibilityDetect(Player* player, ServerSideVisibilityType& type, AccountTypes& sec); + void AnticheatSetSkipOnePacketForASH(Player* player, bool apply); + void AnticheatSetCanFlybyServer(Player* player, bool apply); + void AnticheatSetUnderACKmount(Player* player); + void AnticheatSetRootACKUpd(Player* player); + void AnticheatUpdateMovementInfo(Player* player, MovementInfo const& movementInfo); + void AnticheatSetJumpingbyOpcode(Player* player, bool jump); + bool AnticheatHandleDoubleJump(Player* player, Unit* mover); + bool AnticheatCheckMovementInfo(Player* player, MovementInfo const& movementInfo, Unit* mover, bool jump); public: /* AccountScript */ void OnAccountLogin(uint32 accountId); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 008b591378..157e7967ca 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2382,6 +2382,11 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo if (target->GetTypeId() != TYPEID_PLAYER) return; + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } + if (apply) { /* @@ -2874,6 +2879,11 @@ void AuraEffect::HandleAuraWaterWalk(AuraApplication const* aurApp, uint8 mode, Unit* target = aurApp->GetTarget(); + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } + if (!apply) { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -2891,6 +2901,11 @@ void AuraEffect::HandleAuraFeatherFall(AuraApplication const* aurApp, uint8 mode Unit* target = aurApp->GetTarget(); + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } + if (!apply) { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -2912,6 +2927,11 @@ void AuraEffect::HandleAuraHover(AuraApplication const* aurApp, uint8 mode, bool Unit* target = aurApp->GetTarget(); + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } + if (!apply) { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit @@ -3226,6 +3246,11 @@ void AuraEffect::HandleAuraModIncreaseSpeed(AuraApplication const* aurApp, uint8 Unit* target = aurApp->GetTarget(); target->UpdateSpeed(MOVE_RUN, true); + + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } } void AuraEffect::HandleAuraModIncreaseMountedSpeed(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -3266,6 +3291,11 @@ void AuraEffect::HandleAuraModIncreaseFlightSpeed(AuraApplication const* aurApp, target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 16314); } } + + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } } void AuraEffect::HandleAuraModIncreaseSwimSpeed(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -3276,6 +3306,11 @@ void AuraEffect::HandleAuraModIncreaseSwimSpeed(AuraApplication const* aurApp, u Unit* target = aurApp->GetTarget(); target->UpdateSpeed(MOVE_SWIM, true); + + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } } void AuraEffect::HandleAuraModDecreaseSpeed(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -3291,6 +3326,11 @@ void AuraEffect::HandleAuraModDecreaseSpeed(AuraApplication const* aurApp, uint8 target->UpdateSpeed(MOVE_RUN_BACK, true); target->UpdateSpeed(MOVE_SWIM_BACK, true); target->UpdateSpeed(MOVE_FLIGHT_BACK, true); + + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } } void AuraEffect::HandleAuraModUseNormalSpeed(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -3303,6 +3343,11 @@ void AuraEffect::HandleAuraModUseNormalSpeed(AuraApplication const* aurApp, uint target->UpdateSpeed(MOVE_RUN, true); target->UpdateSpeed(MOVE_SWIM, true); target->UpdateSpeed(MOVE_FLIGHT, true); + + if (Player* targetPlayer = target->ToPlayer()) + { + sScriptMgr->AnticheatSetUnderACKmount(targetPlayer); + } } /*********************************************************/ diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4da2e908a8..1eac370943 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1113,6 +1113,11 @@ void Spell::EffectJump(SpellEffIndex effIndex) float speedXY, speedZ; CalculateJumpSpeeds(effIndex, m_caster->GetExactDist2d(unitTarget), speedXY, speedZ); m_caster->GetMotionMaster()->MoveJump(*unitTarget, speedXY, speedZ); + + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } } void Spell::EffectJumpDest(SpellEffIndex effIndex) @@ -1142,6 +1147,12 @@ void Spell::EffectJumpDest(SpellEffIndex effIndex) { speedXY = pow(speedZ * 10, 8); m_caster->GetMotionMaster()->MoveJump(x, y, z, speedXY, speedZ, 0, ObjectAccessor::GetUnit(*m_caster, m_caster->GetGuidValue(UNIT_FIELD_TARGET))); + + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } + return; } @@ -1156,6 +1167,11 @@ void Spell::EffectJumpDest(SpellEffIndex effIndex) speedXY = 1.0f; m_caster->GetMotionMaster()->MoveJump(x, y, z, speedXY, speedZ); + + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } } void Spell::CalculateJumpSpeeds(uint8 i, float dist, float& speedXY, float& speedZ) @@ -1177,6 +1193,11 @@ void Spell::EffectTeleportUnits(SpellEffIndex /*effIndex*/) if (!unitTarget || unitTarget->IsInFlight()) return; + if (unitTarget->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(unitTarget->ToPlayer()); + } + // Pre effects switch (m_spellInfo->Id) { @@ -5056,6 +5077,11 @@ void Spell::EffectCharge(SpellEffIndex /*effIndex*/) if (!unitTarget) return; + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(m_caster->ToPlayer(), true); + } + // charge changes fall time if( m_caster->GetTypeId() == TYPEID_PLAYER ) m_caster->ToPlayer()->SetFallInformation(time(nullptr), m_caster->GetPositionZ()); @@ -5063,6 +5089,13 @@ void Spell::EffectCharge(SpellEffIndex /*effIndex*/) if (m_pathFinder) { m_caster->GetMotionMaster()->MoveCharge(m_pathFinder->GetEndPosition().x, m_pathFinder->GetEndPosition().y, m_pathFinder->GetEndPosition().z, 42.0f, EVENT_CHARGE, &m_pathFinder->GetPath()); + + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } + + m_caster->AddUnitState(UNIT_STATE_CHARGING); } else { @@ -5077,6 +5110,13 @@ void Spell::EffectCharge(SpellEffIndex /*effIndex*/) } m_caster->GetMotionMaster()->MoveCharge(pos.m_positionX, pos.m_positionY, pos.m_positionZ + Z_OFFSET_FIND_HEIGHT); + + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } + + m_caster->AddUnitState(UNIT_STATE_CHARGING); } } @@ -5085,6 +5125,13 @@ void Spell::EffectCharge(SpellEffIndex /*effIndex*/) if (!unitTarget) return; + m_caster->ClearUnitState(UNIT_STATE_CHARGING); + + if (m_caster->ToPlayer()) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(m_caster->ToPlayer(), true); + } + // not all charge effects used in negative spells if (!m_spellInfo->IsPositive() && m_caster->GetTypeId() == TYPEID_PLAYER) m_caster->Attack(unitTarget, true); @@ -5096,6 +5143,11 @@ void Spell::EffectChargeDest(SpellEffIndex /*effIndex*/) if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH) return; + if (m_caster->ToPlayer()) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(m_caster->ToPlayer(), true); + } + if (m_targets.HasDst()) { Position pos; @@ -5109,6 +5161,11 @@ void Spell::EffectChargeDest(SpellEffIndex /*effIndex*/) } m_caster->GetMotionMaster()->MoveCharge(pos.m_positionX, pos.m_positionY, pos.m_positionZ); + + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } } } @@ -5162,6 +5219,11 @@ void Spell::EffectKnockBack(SpellEffIndex effIndex) } unitTarget->KnockbackFrom(x, y, speedxy, speedz); + + if (unitTarget->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(unitTarget->ToPlayer()); + } } void Spell::EffectLeapBack(SpellEffIndex effIndex) @@ -5177,6 +5239,11 @@ void Spell::EffectLeapBack(SpellEffIndex effIndex) //1891: Disengage m_caster->JumpTo(speedxy, speedz, m_spellInfo->SpellFamilyName != SPELLFAMILY_HUNTER); + if (m_caster->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetUnderACKmount(m_caster->ToPlayer()); + } + // xinef: changes fall time if (m_caster->GetTypeId() == TYPEID_PLAYER) m_caster->ToPlayer()->SetFallInformation(time(nullptr), m_caster->GetPositionZ()); @@ -5262,6 +5329,12 @@ void Spell::EffectPullTowards(SpellEffIndex effIndex) float speedZ = unitTarget->GetDistance(pos) / speedXY * 0.5f * Movement::gravity; unitTarget->GetMotionMaster()->MoveJump(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), speedXY, speedZ); + + if (unitTarget->GetTypeId() == TYPEID_PLAYER) + { + sScriptMgr->AnticheatSetSkipOnePacketForASH(unitTarget->ToPlayer(), true); + sScriptMgr->AnticheatSetUnderACKmount(unitTarget->ToPlayer()); + } } void Spell::EffectDispelMechanic(SpellEffIndex effIndex) diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 24e8f2d6e4..718c924126 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -88,9 +88,15 @@ public: WorldPacket data(12); if (strncmp(args, "on", 3) == 0) + { data.SetOpcode(SMSG_MOVE_SET_CAN_FLY); + sScriptMgr->AnticheatSetCanFlybyServer(target, true); + } else if (strncmp(args, "off", 4) == 0) + { data.SetOpcode(SMSG_MOVE_UNSET_CAN_FLY); + sScriptMgr->AnticheatSetCanFlybyServer(target, false); + } else { handler->SendSysMessage(LANG_USE_BOL); diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index cfa8da8b09..406d9b182e 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -517,10 +517,16 @@ public: pPlayer->SetUnitMovementFlags(MOVEMENTFLAG_NONE); pPlayer->SetDisableGravity(true, true); + + sScriptMgr->AnticheatSetCanFlybyServer(pPlayer, true); + WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8); data << pPlayer->GetPackGUID(); pPlayer->SendMessageToSet(&data, true); + sScriptMgr->AnticheatSetUnderACKmount(pPlayer); + sScriptMgr->AnticheatSetSkipOnePacketForASH(pPlayer, true); + pPlayer->SetGuidValue(PLAYER_FARSIGHT, vp->GetGUID()); c->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } @@ -704,6 +710,9 @@ public: for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) if (Player* pPlayer = i->GetSource()) { + sScriptMgr->AnticheatSetUnderACKmount(pPlayer); + sScriptMgr->AnticheatSetSkipOnePacketForASH(pPlayer, true); + if (!pPlayer->IsAlive() || pPlayer->IsGameMaster()) continue; @@ -884,6 +893,10 @@ public: plr->RemoveAura(SPELL_FREEZE_ANIM); plr->SetDisableGravity(false, true); plr->SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty); + + sScriptMgr->AnticheatSetCanFlybyServer(plr, false); + sScriptMgr->AnticheatSetUnderACKmount(plr); + sScriptMgr->AnticheatSetSkipOnePacketForASH(plr, true); } } @@ -921,6 +934,10 @@ public: { bUpdatedFlying = true; plr->SetDisableGravity(true, true); + + sScriptMgr->AnticheatSetCanFlybyServer(plr, true); + sScriptMgr->AnticheatSetSkipOnePacketForASH(plr, true); + sScriptMgr->AnticheatSetUnderACKmount(plr); } plr->SendMonsterMove(me->GetPositionX() + dist * cos(arcangle), me->GetPositionY() + dist * sin(arcangle), me->GetPositionZ(), VORTEX_DEFAULT_DIFF * 2, SPLINEFLAG_FLYING);