aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroffl <offl@users.noreply.github.com>2020-05-19 22:46:31 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-06 15:59:18 +0100
commit6eb7ed449068f28e53f258edbeab78f911c02793 (patch)
tree1501e561f450fdf2643e805046bf6d1a321ec09b
parentaea428cd51381ddfc2e42a149c98ee9281a72bdb (diff)
DB/GameObject: Convert & update support for Fel & Bash'ir crystalforges
Closes #24643 (cherry picked from commit c3e4420a2b8584f97e49d7ae9a5b2f3140d50984)
-rw-r--r--sql/updates/world/master/2022_01_06_08_world_2020_05_19_03_world.sql26
-rw-r--r--src/server/scripts/World/go_scripts.cpp144
2 files changed, 26 insertions, 144 deletions
diff --git a/sql/updates/world/master/2022_01_06_08_world_2020_05_19_03_world.sql b/sql/updates/world/master/2022_01_06_08_world_2020_05_19_03_world.sql
new file mode 100644
index 00000000000..ebeb29d81f9
--- /dev/null
+++ b/sql/updates/world/master/2022_01_06_08_world_2020_05_19_03_world.sql
@@ -0,0 +1,26 @@
+-- Everything else is done and works well
+UPDATE `conditions` SET `SourceEntry` = 10921, `NegativeCondition` = 1 WHERE `SourceTypeOrReferenceId` = 14 AND `SourceGroup` = 8677;
+
+-- Fel Crystalforge SAI (Source: Current script & https://www.youtube.com/watch?v=WUEOrClIEX8)
+SET @ID := 185919;
+UPDATE `gameobject_template` SET `AIName` = "SmartGameObjectAI", `ScriptName` = "" WHERE `entry` = @ID;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @ID AND `source_type` = 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
+(@ID,1,0,0,62,0,100,0,8672,0,0,0,0,85,40964,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Fel Crystalforge - On Gossip Option 0 Selected - Invoker Cast 'Fel Crystalforge: Create 1 Flask'"),
+(@ID,1,1,0,62,0,100,0,8672,1,0,0,0,85,40965,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Fel Crystalforge - On Gossip Option 1 Selected - Invoker Cast 'Fel Crystalforge: Create 5 Flasks'");
+
+-- Fel Crystalforge SAI (Source: Current script & https://www.youtube.com/watch?v=WUEOrClIEX8)
+SET @ID := 185920;
+UPDATE `gameobject_template` SET `AIName` = "SmartGameObjectAI", `ScriptName` = "" WHERE `entry` = @ID;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @ID AND `source_type` = 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
+(@ID,1,0,0,62,0,100,0,8672,0,0,0,0,85,40964,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Fel Crystalforge - On Gossip Option 0 Selected - Invoker Cast 'Fel Crystalforge: Create 1 Flask'"),
+(@ID,1,1,0,62,0,100,0,8672,1,0,0,0,85,40965,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Fel Crystalforge - On Gossip Option 1 Selected - Invoker Cast 'Fel Crystalforge: Create 5 Flasks'");
+
+-- Bash'ir Crystalforge SAI (Source: Current script & https://www.youtube.com/watch?v=opp2STjJq4s)
+SET @ID := 185921;
+UPDATE `gameobject_template` SET `AIName` = "SmartGameObjectAI", `ScriptName` = "" WHERE `entry` = @ID;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @ID AND `source_type` = 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
+(@ID,1,0,0,62,0,100,0,8677,0,0,0,0,85,40968,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Bash'ir Crystalforge - On Gossip Option 0 Selected - Invoker Cast 'Bash'ir Crystalforge: Create 1 Flask'"),
+(@ID,1,1,0,62,0,100,0,8677,1,0,0,0,85,40970,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Bash'ir Crystalforge - On Gossip Option 1 Selected - Invoker Cast 'Bash'ir Crystalforge: Create 5 Flasks'");
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index 0390938200b..6bb54ed3e18 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -29,8 +29,6 @@ go_scourge_cage
go_jotunheim_cage
go_table_theka
go_soulwell
-go_bashir_crystalforge
-go_soulwell
go_dragonflayer_cage
go_amberpine_outhouse
go_hive_pod
@@ -481,146 +479,6 @@ public:
};
/*######
-## go_fel_crystalforge
-######*/
-
-#define GOSSIP_FEL_CRYSTALFORGE_TEXT 31000
-#define GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN 31001
-#define GOSSIP_FEL_CRYSTALFORGE_ITEM_1 "Purchase 1 Unstable Flask of the Beast for the cost of 10 Apexis Shards"
-#define GOSSIP_FEL_CRYSTALFORGE_ITEM_5 "Purchase 5 Unstable Flask of the Beast for the cost of 50 Apexis Shards"
-#define GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN "Use the fel crystalforge to make another purchase."
-
-enum FelCrystalforge
-{
- SPELL_CREATE_1_FLASK_OF_BEAST = 40964,
- SPELL_CREATE_5_FLASK_OF_BEAST = 40965,
-};
-
-class go_fel_crystalforge : public GameObjectScript
-{
-public:
- go_fel_crystalforge() : GameObjectScript("go_fel_crystalforge") { }
-
- struct go_fel_crystalforgeAI : public GameObjectAI
- {
- go_fel_crystalforgeAI(GameObject* go) : GameObjectAI(go) { }
-
- bool GossipHello(Player* player) override
- {
- if (me->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
- player->PrepareQuestMenu(me->GetGUID()); /* return true*/
-
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_FEL_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_FEL_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
-
- SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_TEXT, me->GetGUID());
-
- return true;
- }
-
- bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
- {
- uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
- ClearGossipMenuFor(player);
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF:
- player->CastSpell(player, SPELL_CREATE_1_FLASK_OF_BEAST, false);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN, me->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 1:
- player->CastSpell(player, SPELL_CREATE_5_FLASK_OF_BEAST, false);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN, me->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 2:
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_FEL_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_FEL_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_TEXT, me->GetGUID());
- break;
- }
- return true;
- }
- };
-
- GameObjectAI* GetAI(GameObject* go) const override
- {
- return new go_fel_crystalforgeAI(go);
- }
-};
-
-/*######
-## go_bashir_crystalforge
-######*/
-
-#define GOSSIP_BASHIR_CRYSTALFORGE_TEXT 31100
-#define GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN 31101
-#define GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1 "Purchase 1 Unstable Flask of the Sorcerer for the cost of 10 Apexis Shards"
-#define GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5 "Purchase 5 Unstable Flask of the Sorcerer for the cost of 50 Apexis Shards"
-#define GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN "Use the bashir crystalforge to make another purchase."
-
-enum BashirCrystalforge
-{
- SPELL_CREATE_1_FLASK_OF_SORCERER = 40968,
- SPELL_CREATE_5_FLASK_OF_SORCERER = 40970,
-};
-
-class go_bashir_crystalforge : public GameObjectScript
-{
-public:
- go_bashir_crystalforge() : GameObjectScript("go_bashir_crystalforge") { }
-
- struct go_bashir_crystalforgeAI : public GameObjectAI
- {
- go_bashir_crystalforgeAI(GameObject* go) : GameObjectAI(go) { }
-
- bool GossipHello(Player* player) override
- {
- if (me->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
- player->PrepareQuestMenu(me->GetGUID()); /* return true*/
-
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
-
- SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_TEXT, me->GetGUID());
-
- return true;
- }
-
- bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
- {
- uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
- ClearGossipMenuFor(player);
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF:
- player->CastSpell(player, SPELL_CREATE_1_FLASK_OF_SORCERER, false);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN, me->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 1:
- player->CastSpell(player, SPELL_CREATE_5_FLASK_OF_SORCERER, false);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN, me->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 2:
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
- AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_TEXT, me->GetGUID());
- break;
- }
- return true;
- }
- };
-
- GameObjectAI* GetAI(GameObject* go) const override
- {
- return new go_bashir_crystalforgeAI(go);
- }
-};
-
-/*######
## matrix_punchograph
######*/
@@ -1880,8 +1738,6 @@ void AddSC_go_scripts()
new go_resonite_cask();
new go_tele_to_dalaran_crystal();
new go_tele_to_violet_stand();
- new go_fel_crystalforge();
- new go_bashir_crystalforge();
new go_matrix_punchograph();
new go_scourge_cage();
new go_arcane_prison();