mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Core/GameObjects: Implement new gameobject_template data20 for chests, consolidating all bool typed data columns
This commit is contained in:
19
sql/updates/world/master/2026_01_31_00_world.sql
Normal file
19
sql/updates/world/master/2026_01_31_00_world.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
UPDATE `gameobject_template` SET `Data20`=0 WHERE `type`=3;
|
||||
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0001 WHERE `type`=3 AND `Data3`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0002 WHERE `type`=3 AND `Data10`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0004 WHERE `type`=3 AND `Data11`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0008 WHERE `type`=3 AND `Data12`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0010 WHERE `type`=3 AND `Data13`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0020 WHERE `type`=3 AND `Data15`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0040 WHERE `type`=3 AND `Data16`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0080 WHERE `type`=3 AND `Data21`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0100 WHERE `type`=3 AND `Data22`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0200 WHERE `type`=3 AND `Data27`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0400 WHERE `type`=3 AND `Data28`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x0800 WHERE `type`=3 AND `Data31`!=0;
|
||||
UPDATE `gameobject_template` SET `Data20`=`Data20`|0x1000 WHERE `type`=3 AND `Data34`!=0;
|
||||
|
||||
-- reset fields that were reused for something else
|
||||
UPDATE `gameobject_template` SET `Data21`=0 WHERE `type`=3;
|
||||
UPDATE `gameobject_template` SET `Data22`=0 WHERE `type`=3;
|
||||
@@ -27,7 +27,6 @@
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
// TODO: Reorder properly, this is temporary to fix compile
|
||||
enum class GameObjectChestFlags : int32
|
||||
{
|
||||
Consumable = 0x0001,
|
||||
@@ -891,8 +890,7 @@ struct GameObjectTemplate
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GAMEOBJECT_TYPE_CHEST: return chest.Unused != 0; // TODO: update database values and research flag order
|
||||
// case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::Consumable);
|
||||
case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::Consumable);
|
||||
case GAMEOBJECT_TYPE_GOOBER: return goober.consumable != 0;
|
||||
default: return false;
|
||||
}
|
||||
@@ -1019,8 +1017,7 @@ struct GameObjectTemplate
|
||||
{
|
||||
case GAMEOBJECT_TYPE_BUTTON: return button.requireLOS;
|
||||
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.requireLOS;
|
||||
case GAMEOBJECT_TYPE_CHEST: return chest.Unused2; // TODO: update database values and research flag order
|
||||
// case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::RequireLOS);
|
||||
case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::RequireLOS);
|
||||
case GAMEOBJECT_TYPE_TRAP: return trap.requireLOS;
|
||||
case GAMEOBJECT_TYPE_GOOBER: return goober.requireLOS;
|
||||
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.requireLOS;
|
||||
@@ -1078,8 +1075,7 @@ struct GameObjectTemplate
|
||||
case GAMEOBJECT_TYPE_DOOR: return door.noDamageImmune;
|
||||
case GAMEOBJECT_TYPE_BUTTON: return button.noDamageImmune;
|
||||
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.noDamageImmune;
|
||||
case GAMEOBJECT_TYPE_CHEST: return !chest.OneTimeChestAccountFlag; // TODO: update database values and research flag order
|
||||
// case GAMEOBJECT_TYPE_CHEST: return !EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::DamageImmuneOK);
|
||||
case GAMEOBJECT_TYPE_CHEST: return !EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::DamageImmuneOK);
|
||||
case GAMEOBJECT_TYPE_GOOBER: return goober.noDamageImmune;
|
||||
case GAMEOBJECT_TYPE_FLAGSTAND: return flagStand.noDamageImmune;
|
||||
case GAMEOBJECT_TYPE_FLAGDROP: return flagDrop.noDamageImmune;
|
||||
@@ -1091,8 +1087,7 @@ struct GameObjectTemplate
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GAMEOBJECT_TYPE_CHEST: return chest.Unused4; // TODO: update database values and research flag order
|
||||
//case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::NotInCombat);
|
||||
case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::NotInCombat);
|
||||
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.notInCombat;
|
||||
default: return 0;
|
||||
}
|
||||
@@ -1153,8 +1148,7 @@ struct GameObjectTemplate
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GAMEOBJECT_TYPE_CHEST: return chest.Unused6 != 0; // TODO: update database values and research flag order
|
||||
//case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::UseGroupLootRules);
|
||||
case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::UseGroupLootRules);
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
@@ -1301,8 +1295,7 @@ struct GameObjectTemplate
|
||||
case GAMEOBJECT_TYPE_DOOR: return door.GiganticAOI != 0;
|
||||
case GAMEOBJECT_TYPE_BUTTON: return button.GiganticAOI != 0;
|
||||
case GAMEOBJECT_TYPE_QUESTGIVER: return questgiver.GiganticAOI != 0;
|
||||
case GAMEOBJECT_TYPE_CHEST: return chest.Unused8 != 0; // TODO: update database values and research flag order
|
||||
// case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::GiganticAOI);
|
||||
case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::GiganticAOI);
|
||||
case GAMEOBJECT_TYPE_GENERIC: return generic.GiganticAOI != 0;
|
||||
case GAMEOBJECT_TYPE_TRAP: return trap.GiganticAOI != 0;
|
||||
case GAMEOBJECT_TYPE_SPELL_FOCUS: return spellFocus.GiganticAOI != 0;
|
||||
@@ -1330,8 +1323,7 @@ struct GameObjectTemplate
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GAMEOBJECT_TYPE_CHEST: return chest.Unused9 != 0; // TODO: update database values and research flag order
|
||||
// case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::LargeAOI);
|
||||
case GAMEOBJECT_TYPE_CHEST: return EnumFlag(static_cast<GameObjectChestFlags>(chest.ChestFlags)).HasFlag(GameObjectChestFlags::LargeAOI);
|
||||
case GAMEOBJECT_TYPE_GENERIC: return generic.LargeAOI != 0;
|
||||
case GAMEOBJECT_TYPE_GOOBER: return goober.LargeAOI != 0;
|
||||
case GAMEOBJECT_TYPE_DUNGEON_DIFFICULTY: return dungeonDifficulty.LargeAOI != 0;
|
||||
|
||||
Reference in New Issue
Block a user