aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2024_12_29_02_world.sql52
-rw-r--r--src/server/scripts/ExilesReach/zone_exiles_reach.cpp185
2 files changed, 62 insertions, 175 deletions
diff --git a/sql/updates/world/master/2024_12_29_02_world.sql b/sql/updates/world/master/2024_12_29_02_world.sql
new file mode 100644
index 00000000000..9bfda06a765
--- /dev/null
+++ b/sql/updates/world/master/2024_12_29_02_world.sql
@@ -0,0 +1,52 @@
+DELETE FROM `creature_loot_template` WHERE `Entry`=150228 AND `ItemType`=0 AND `Item` BETWEEN 174791 AND 174794;
+DELETE FROM `creature_loot_template` WHERE `Entry`=150237 AND `ItemType`=0 AND `Item` BETWEEN 174811 AND 174814;
+DELETE FROM `creature_loot_template` WHERE `Entry`=162817 AND `ItemType`=0 AND `Item`=176398;
+DELETE FROM `creature_loot_template` WHERE `Entry`=150228 AND `ItemType`=1 AND `Item`=150228;
+DELETE FROM `creature_loot_template` WHERE `Entry`=150237 AND `ItemType`=1 AND `Item`=150237;
+DELETE FROM `creature_loot_template` WHERE `Entry`=162817 AND `ItemType`=1 AND `Item`=162817;
+INSERT INTO `creature_loot_template` (`Entry`, `ItemType`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
+(150228, 1, 150228, 20, 0, 1, 0, 1, 1, 'Murloc Spearhunter/Watershaper - boots'),
+(150237, 1, 150237, 20, 0, 1, 0, 1, 1, 'Quilboar Warrior/Geomancer - chest armor'),
+(162817, 1, 162817, 100, 0, 1, 0, 1, 1, 'Torgok - Torgok''s Reagent Pouch');
+
+DELETE FROM `reference_loot_template` WHERE `Entry` IN (150228,150237,162817);
+INSERT INTO `reference_loot_template` (`Entry`, `ItemType`, `Item`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
+(150228, 0, 174791, 100, 0, 1, 0, 1, 1, 'Exile''s Reach boot drop from murlocs - Stitched Cloth Shoes'),
+(150228, 0, 174792, 100, 0, 1, 0, 1, 1, 'Exile''s Reach boot drop from murlocs - Stitched Leather Boots'),
+(150228, 0, 174793, 100, 0, 1, 0, 1, 1, 'Exile''s Reach boot drop from murlocs - Linked Mail Boots'),
+(150228, 0, 174794, 100, 0, 1, 0, 1, 1, 'Exile''s Reach boot drop from murlocs - Dented Plate Boots'),
+(150228, 3, 58883, 100, 0, 1, 0, 1, 0, 'Exile''s Reach boot drop from murlocs - Tracking quest flag'),
+(150237, 0, 174811, 100, 0, 1, 0, 1, 1, 'Exile''s Reach chest drop from quilboar - Stitched Cloth Tunic'),
+(150237, 0, 174812, 100, 0, 1, 0, 1, 1, 'Exile''s Reach chest drop from quilboar - Stitched Leather Tunic'),
+(150237, 0, 174813, 100, 0, 1, 0, 1, 1, 'Exile''s Reach chest drop from quilboar - Linked Mail Hauberk'),
+(150237, 0, 174814, 100, 0, 1, 0, 1, 1, 'Exile''s Reach chest drop from quilboar - Dented Chestplate'),
+(150237, 3, 58882, 100, 0, 1, 0, 1, 0, ' Exile''s Reach chest drop from quilboar - Tracking quest flag'),
+(162817, 0, 176398, 100, 0, 1, 0, 1, 1, 'Exile''s Reach Torgok - Torgok''s Reagent Pouch'),
+(162817, 3, 59610, 100, 0, 1, 0, 1, 0, ' Exile''s Reach Torgok - Torgok''s Reagent Pouch - Tracking quest flag');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=1 AND `SourceGroup`=150228;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=1 AND `SourceGroup`=150237;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=1 AND `SourceGroup`=162817;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=10 AND `SourceGroup`=150228;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=10 AND `SourceGroup`=150237;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=10 AND `SourceGroup`=162817;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(10, 150228, 174791, 0, 0, 15, 0, 400, 0, 0, '', 0, 0, 0, '', 'Item drops for cloth wearer'),
+(10, 150228, 174792, 0, 0, 15, 0, 3592, 0, 0, '', 0, 0, 0, '', 'Item drops for leather wearer'),
+(10, 150228, 174793, 0, 0, 15, 0, 4164, 0, 0, '', 0, 0, 0, '', 'Item drops for mail wearer'),
+(10, 150228, 174794, 0, 0, 15, 0, 35, 0, 0, '', 0, 0, 0, '', 'Item drops for plate wearer'),
+(10, 150228, 174791, 0, 0, 47, 0, 58883, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58883 is not rewarded'),
+(10, 150228, 174792, 0, 0, 47, 0, 58883, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58883 is not rewarded'),
+(10, 150228, 174793, 0, 0, 47, 0, 58883, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58883 is not rewarded'),
+(10, 150228, 174794, 0, 0, 47, 0, 58883, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58883 is not rewarded'),
+(10, 150237, 174811, 0, 0, 15, 0, 400, 0, 0, '', 0, 0, 0, '', 'Item drops for cloth wearer'),
+(10, 150237, 174812, 0, 0, 15, 0, 3592, 0, 0, '', 0, 0, 0, '', 'Item drops for leather wearer'),
+(10, 150237, 174813, 0, 0, 15, 0, 4164, 0, 0, '', 0, 0, 0, '', 'Item drops for mail wearer'),
+(10, 150237, 174814, 0, 0, 15, 0, 35, 0, 0, '', 0, 0, 0, '', 'Item drops for plate wearer'),
+(10, 150237, 174811, 0, 0, 47, 0, 58882, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58882 is not rewarded'),
+(10, 150237, 174812, 0, 0, 47, 0, 58882, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58882 is not rewarded'),
+(10, 150237, 174813, 0, 0, 47, 0, 58882, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58882 is not rewarded'),
+(10, 150237, 174814, 0, 0, 47, 0, 58882, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 58882 is not rewarded'),
+(10, 162817, 176398, 0, 0, 47, 0, 59610, 64, 0, '', 1, 0, 0, '', 'Item drops if quest 59610 is not rewarded');
+
+UPDATE `creature_template` SET `ScriptName`='' WHERE `ScriptName`='npc_murloc_spearhunter_watershaper';
diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
index babaa691228..e53b4dd9e3b 100644
--- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
+++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp
@@ -15,37 +15,28 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "ScriptMgr.h"
#include "AreaTrigger.h"
#include "AreaTriggerAI.h"
-#include "Conversation.h"
-#include "CreatureAIImpl.h"
-#include "Map.h"
-#include "Object.h"
-#include "Player.h"
#include "CellImpl.h"
+#include "CombatAI.h"
#include "Containers.h"
+#include "Conversation.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "MotionMaster.h"
#include "ObjectAccessor.h"
-#include "ObjectMgr.h"
#include "PassiveAI.h"
+#include "PhasingHandler.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "ScriptMgr.h"
-#include "ScriptSystem.h"
#include "SpellAuras.h"
+#include "SpellHistory.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "TemporarySummon.h"
-#include "Transport.h"
-#include "Loot.h"
-#include "SpellHistory.h"
+#include "VehicleDefines.h"
#include "WorldStateMgr.h"
-#include "Unit.h"
-#include "Vehicle.h"
-#include "WorldSession.h"
-#include "CombatAI.h"
-#include "PhasingHandler.h"
template<class privateAI, class publicAI>
CreatureAI* GetPrivatePublicPairAISelector(Creature* creature)
@@ -1522,58 +1513,11 @@ struct npc_lana_jordan_beach_laying : public ScriptedAI
}
};
-enum ExilesReachMurlocsData
-{
- ITEM_STITCHED_CLOTH_SHOES = 174791,
- ITEM_STITCHED_LEATHER_BOOTS = 174792,
- ITEM_LINKED_MAIL_BOOTS = 174793,
- ITEM_DENTED_PLATE_BOOTS = 174794,
-
- QUEST_MURLOC_HIDEAWAY_BOOTS_DROPPED = 58883
-};
-
// 150228 - Murloc Spearhunter
// 150229 - Murloc Watershaper
-struct npc_murloc_spearhunter_watershaper : public ScriptedAI
+struct npc_murloc_spearhunter_watershaper_higher_ground : public ScriptedAI
{
- npc_murloc_spearhunter_watershaper(Creature* creature) : ScriptedAI(creature) { }
-
- void JustDied(Unit* /*killer*/) override
- {
- for (auto const& [playerGuid, loot] : me->m_personalLoot)
- {
- if (Player* player = ObjectAccessor::GetPlayer(*me, playerGuid))
- {
- if (player->IsQuestRewarded(QUEST_MURLOC_HIDEAWAY_BOOTS_DROPPED))
- break;
-
- for (LootItem const& lootItem : loot->items)
- {
- if (lootItem.type != LootItemType::Item)
- continue;
-
- switch (lootItem.itemid)
- {
- case ITEM_STITCHED_CLOTH_SHOES:
- case ITEM_STITCHED_LEATHER_BOOTS:
- case ITEM_LINKED_MAIL_BOOTS:
- case ITEM_DENTED_PLATE_BOOTS:
- player->SetRewardedQuest(QUEST_MURLOC_HIDEAWAY_BOOTS_DROPPED);
- break;
- default:
- break;
- }
- }
- }
- }
- }
-};
-
-// 150228 - Murloc Spearhunter
-// 150229 - Murloc Watershaper
-struct npc_murloc_spearhunter_watershaper_higher_ground : public npc_murloc_spearhunter_watershaper
-{
- npc_murloc_spearhunter_watershaper_higher_ground(Creature* creature) : npc_murloc_spearhunter_watershaper(creature) { }
+ using ScriptedAI::ScriptedAI;
void JustEngagedWith(Unit* who) override
{
@@ -4377,8 +4321,6 @@ enum GeolordData
SPELL_NECROTIC_RITUAL_DNT = 305513,
SPELL_EARTH_BOLT = 270453,
SPELL_UPHEAVAL = 319273,
-
- WORLDSTATE_HORDE = 4486
};
static constexpr Position PrisonerPosition = { 16.4271f, -2511.82f, 78.8215f, 5.66398f };
@@ -4392,7 +4334,7 @@ struct npc_geolord_grekog : public ScriptedAI
{
uint32 prisonerEntry = NPC_LINDIE_SPRINGSTOCK;
- if (sWorldStateMgr->GetValue(WORLDSTATE_HORDE, me->GetMap()) == 1)
+ if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_HORDE, me->GetMap()) == 1)
prisonerEntry = NPC_CORK_FIZZLEPOP;
Creature* bunny = me->FindNearestCreatureWithOptions(25.0f, { .CreatureId = NPC_INVIS_BUNNY_GEOLORD, .IgnorePhases = true });
@@ -4516,16 +4458,6 @@ enum OgreOverseerQuilboarText
SAY_DEATH = 1,
};
-enum ExilesReachQuilboarData
-{
- ITEM_STITCHED_CLOTH_TUNIC = 174811,
- ITEM_STITCHED_LEATHER_TUNIC = 174812,
- ITEM_LINKED_MAIL_HAUBERK = 174813,
- ITEM_DENTED_CHESTPLATE = 174814,
-
- QUEST_BRIARPATCH_CHEST_DROPPED = 58904
-};
-
enum QuilboarWarriorGeomancerData
{
EVENT_BRUTAL_STRIKE = 1,
@@ -4561,33 +4493,6 @@ struct npc_quilboar_warrior : public ScriptedAI
{
if (roll_chance_f(33.33f))
Talk(SAY_DEATH, killer);
-
- for (auto const& [playerGuid, loot] : me->m_personalLoot)
- {
- if (Player* player = ObjectAccessor::GetPlayer(*me, playerGuid))
- {
- if (player->IsQuestRewarded(QUEST_BRIARPATCH_CHEST_DROPPED))
- break;
-
- for (LootItem const& lootItem : loot->items)
- {
- if (lootItem.type != LootItemType::Item)
- continue;
-
- switch (lootItem.itemid)
- {
- case ITEM_STITCHED_CLOTH_TUNIC:
- case ITEM_STITCHED_LEATHER_TUNIC:
- case ITEM_LINKED_MAIL_HAUBERK:
- case ITEM_DENTED_CHESTPLATE:
- player->SetRewardedQuest(QUEST_BRIARPATCH_CHEST_DROPPED);
- break;
- default:
- break;
- }
- }
- }
- }
}
void UpdateAI(uint32 diff) override
@@ -4639,33 +4544,6 @@ struct npc_quilboar_geomancer : public ScriptedAI
{
if (roll_chance_f(33.33f))
Talk(SAY_DEATH, killer);
-
- for (auto const& [playerGuid, loot] : me->m_personalLoot)
- {
- if (Player* player = ObjectAccessor::GetPlayer(*me, playerGuid))
- {
- if (player->IsQuestRewarded(QUEST_BRIARPATCH_CHEST_DROPPED))
- break;
-
- for (LootItem const& lootItem : loot->items)
- {
- if (lootItem.type != LootItemType::Item)
- continue;
-
- switch (lootItem.itemid)
- {
- case ITEM_STITCHED_CLOTH_TUNIC:
- case ITEM_STITCHED_LEATHER_TUNIC:
- case ITEM_LINKED_MAIL_HAUBERK:
- case ITEM_DENTED_CHESTPLATE:
- player->SetRewardedQuest(QUEST_BRIARPATCH_CHEST_DROPPED);
- break;
- default:
- break;
- }
- }
- }
- }
}
void UpdateAI(uint32 diff) override
@@ -4697,11 +4575,6 @@ enum ExilesReachOgreOverseerData
EVENT_OVERSEER_BACKHAND = 1,
EVENT_OVERSEER_EARTHSHATTER = 2,
- ITEM_BATTERED_CLOAK = 11847,
- ITEM_OVERSEERS_MANDATE = 174790,
-
- QUEST_BRIARPATCH_OVERSEER_CLOAK_DROPPED = 56051,
-
SPELL_BACKHAND = 276991,
SPELL_EARTHSHATTER = 319292
};
@@ -4727,24 +4600,6 @@ struct npc_ogre_overseer : public ScriptedAI
void JustDied(Unit* killer) override
{
Talk(SAY_DEATH, killer);
-
- for (auto const& [playerGuid, loot] : me->m_personalLoot)
- {
- if (Player* player = ObjectAccessor::GetPlayer(*me, playerGuid))
- {
- if (player->IsQuestRewarded(QUEST_BRIARPATCH_OVERSEER_CLOAK_DROPPED))
- break;
-
- for (LootItem const& lootItem : loot->items)
- {
- if (lootItem.type == LootItemType::Item && lootItem.itemid == ITEM_BATTERED_CLOAK)
- {
- player->SetRewardedQuest(QUEST_BRIARPATCH_OVERSEER_CLOAK_DROPPED);
- break;
- }
- }
- }
- }
}
void UpdateAI(uint32 diff) override
@@ -6481,10 +6336,6 @@ enum TorgokData
EVENT_CAST_SPIRIT_BOLT = 1,
EVENT_CAST_SOUL_GRASP = 2,
- ITEM_TORGOKS_REAGENT_POUCH = 176398,
-
- QUEST_TORGOKS_REAGENT_POUCH_DROPPED = 59610,
-
SPELL_SPIRIT_BOLT = 319294,
SPELL_SOUL_GRASP = 319298
};
@@ -6510,21 +6361,6 @@ struct npc_torgok_q55879 : public ScriptedAI
void JustDied(Unit* killer) override
{
Talk(SAY_DEATH, killer);
-
- for (auto const& [playerGuid, loot] : me->m_personalLoot)
- {
- if (Player* player = ObjectAccessor::GetPlayer(*me, playerGuid))
- {
- for (LootItem const& lootItem : loot->items)
- {
- if (lootItem.type == LootItemType::Item && lootItem.itemid == ITEM_TORGOKS_REAGENT_POUCH)
- {
- player->SetRewardedQuest(QUEST_TORGOKS_REAGENT_POUCH_DROPPED);
- break;
- }
- }
- }
- }
}
void UpdateAI(uint32 diff) override
@@ -7121,7 +6957,6 @@ void AddSC_zone_exiles_reach()
RegisterCreatureAI(npc_bo_beach_laying);
RegisterCreatureAI(npc_mithran_dawntracker_beach_laying);
RegisterCreatureAI(npc_lana_jordan_beach_laying);
- RegisterCreatureAI(npc_murloc_spearhunter_watershaper);
RegisterCreatureAI(npc_murloc_spearhunter_watershaper_higher_ground);
new FactoryCreatureScript<CreatureAI, &BoBeachStandingAISelector>("npc_bo_beach_standing");
new FactoryCreatureScript<CreatureAI, &MithdranBeachStandingAISelector>("npc_mithdran_dawntracker_beach_standing");