DB/GameObject: Convert & update support for Fel & Bash'ir crystalforges
Closes #24643 (cherry picked from commit c3e4420a2b8584f97e49d7ae9a5b2f3140d50984)
This commit is contained in:
@@ -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'");
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user