DB/GameObject: Convert & update support for Fel & Bash'ir crystalforges

Closes #24643

(cherry picked from commit c3e4420a2b8584f97e49d7ae9a5b2f3140d50984)
This commit is contained in:
offl
2022-01-06 15:59:18 +01:00
committed by Shauren
parent aea428cd51
commit 6eb7ed4490
2 changed files with 26 additions and 144 deletions
@@ -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'");
-144
View File
@@ -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
@@ -480,146 +478,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();