aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/GameObject
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Entities/GameObject')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp11
-rw-r--r--src/server/game/Entities/GameObject/GameObjectData.h49
2 files changed, 51 insertions, 9 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 89b59a11ab2..435ccc5c9a9 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -61,7 +61,8 @@ GameObject::GameObject() : WorldObject(false), MapObject(),
m_objectType |= TYPEMASK_GAMEOBJECT;
m_objectTypeId = TYPEID_GAMEOBJECT;
- m_updateFlag = (UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION);
+ m_updateFlag.Stationary = true;
+ m_updateFlag.Rotation = true;
m_valuesCount = GAMEOBJECT_END;
_dynamicValuesCount = GAMEOBJECT_DYNAMIC_END;
@@ -238,7 +239,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD
else
{
guid = ObjectGuid::Create<HighGuid::Transport>(map->GenerateLowGuid<HighGuid::Transport>());
- m_updateFlag |= UPDATEFLAG_TRANSPORT;
+ m_updateFlag.ServerTime = true;
}
Object::_Create(guid);
@@ -271,7 +272,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD
if (m_goTemplateAddon->WorldEffectID)
{
- m_updateFlag |= UPDATEFLAG_GAMEOBJECT;
+ m_updateFlag.GameObject = true;
SetWorldEffectID(m_goTemplateAddon->WorldEffectID);
}
}
@@ -292,6 +293,8 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD
SetGoState(goState);
SetGoArtKit(artKit);
+ SetUInt32Value(GAMEOBJECT_STATE_ANIM_ID, sAnimationDataStore.GetNumRows());
+
switch (goInfo->type)
{
case GAMEOBJECT_TYPE_FISHINGHOLE:
@@ -376,7 +379,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD
if (gameObjectAddon && gameObjectAddon->WorldEffectID)
{
- m_updateFlag |= UPDATEFLAG_GAMEOBJECT;
+ m_updateFlag.GameObject = true;
SetWorldEffectID(gameObjectAddon->WorldEffectID);
}
diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h
index 3e600376a97..a699be4bcf7 100644
--- a/src/server/game/Entities/GameObject/GameObjectData.h
+++ b/src/server/game/Entities/GameObject/GameObjectData.h
@@ -105,7 +105,7 @@ struct GameObjectTemplate
uint32 usegrouplootrules; // 15 use group loot rules, enum { false, true, }; Default: false
uint32 floatingTooltip; // 16 floatingTooltip, enum { false, true, }; Default: false
uint32 conditionID1; // 17 conditionID1, References: PlayerCondition, NoValue = 0
- int32 xpLevel; // 18 xpLevel, int, Min value: -1, Max value: 123, Default value: 0
+ uint32 XPLevelRange; // 18 XP Level Range, References: ContentTuning, NoValue = 0
uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp
uint32 lootLevel; // 20 lootLevel, int, Min value: 0, Max value: 123, Default value: 0
uint32 GroupXP; // 21 Group XP, enum { false, true, }; Default: false
@@ -120,6 +120,7 @@ struct GameObjectTemplate
uint32 chestPersonalLoot; // 30 chest Personal Loot, References: Treasure, NoValue = 0
uint32 turnpersonallootsecurityoff; // 31 turn personal loot security off, enum { false, true, }; Default: false
uint32 ChestProperties; // 32 Chest Properties, References: ChestProperties, NoValue = 0
+ uint32 chestPushLoot; // 33 chest Push Loot, References: Treasure, NoValue = 0
} chest;
// 4 GAMEOBJECT_TYPE_BINDER
struct
@@ -332,6 +333,7 @@ struct GameObjectTemplate
{
uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0
uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1
+ uint32 Preferonlyifinlineofsight; // 2 Prefer only if in line of sight (expensive), enum { false, true, }; Default: false
} guardPost;
// 22 GAMEOBJECT_TYPE_SPELLCASTER
struct
@@ -503,7 +505,10 @@ struct GameObjectTemplate
uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false
uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 BlocksPathsDown; // 3 Blocks Paths Down, enum { false, true, }; Default: false
- uint32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ int32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false
+ uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false
+ uint32 DoorisOpaque; // 7 Door is Opaque (Disable portal on close), enum { false, true, }; Default: false
} trapdoor;
// 36 GAMEOBJECT_TYPE_NEW_FLAG
struct
@@ -581,7 +586,7 @@ struct GameObjectTemplate
struct
{
int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1
- uint32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ int32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
uint32 DoodadSetA; // 2 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0
uint32 DoodadSetB; // 3 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0
} phaseableMO;
@@ -616,7 +621,7 @@ struct GameObjectTemplate
// 48 GAMEOBJECT_TYPE_UI_LINK
struct
{
- uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, }; Default: Adventure Journal
+ uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, Scrapping Machine, }; Default: Adventure Journal
uint32 allowMounted; // 1 allowMounted, enum { false, true, }; Default: false
uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false
uint32 spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0
@@ -641,7 +646,7 @@ struct GameObjectTemplate
uint32 openTextID; // 9 openTextID, References: BroadcastText, NoValue = 0
uint32 floatingTooltip; // 10 floatingTooltip, enum { false, true, }; Default: false
uint32 conditionID1; // 11 conditionID1, References: PlayerCondition, NoValue = 0
- uint32 xpLevel; // 12 xpLevel, int, Min value: -1, Max value: 123, Default value: 0
+ uint32 XPLevelRange; // 12 XP Level Range, References: ContentTuning, NoValue = 0
uint32 xpDifficulty; // 13 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp
uint32 spell; // 14 spell, References: Spell, NoValue = 0
uint32 GiganticAOI; // 15 Gigantic AOI, enum { false, true, }; Default: false
@@ -650,13 +655,45 @@ struct GameObjectTemplate
uint32 MaxNumberofLoots; // 18 Max Number of Loots, int, Min value: 1, Max value: 40, Default value: 10
uint32 logloot; // 19 log loot, enum { false, true, }; Default: false
uint32 linkedTrap; // 20 linkedTrap, References: GameObjects, NoValue = 0
+ uint32 PlayOpenAnimationonOpening; // 21 Play Open Animation on Opening, enum { false, true, }; Default: false
} gatheringNode;
// 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD
struct
{
uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0
uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
+ uint32 open; // 2 open, References: Lock_, NoValue = 0
+ uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
} challengeModeReward;
+ // 52 GAMEOBJECT_TYPE_MULTI
+ struct
+ {
+ uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0
+ } multi;
+ // 53 GAMEOBJECT_TYPE_SIEGEABLE_MULTI
+ struct
+ {
+ uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0
+ uint32 InitialDamage; // 1 Initial Damage, enum { None, Raw, Ratio, }; Default: None
+ } siegeableMulti;
+ // 54 GAMEOBJECT_TYPE_SIEGEABLE_MO
+ struct
+ {
+ uint32 SiegeableProperties; // 0 Siegeable Properties, References: SiegeableProperties, NoValue = 0
+ uint32 DoodadSetA; // 1 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 DoodadSetB; // 2 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0
+ uint32 DoodadSetC; // 3 Doodad Set C, int, Min value: 0, Max value: 2147483647, Default value: 0
+ int32 SpawnMap; // 4 Spawn Map, References: Map, NoValue = -1
+ int32 AreaNameSet; // 5 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0
+ } siegeableMO;
+ // 55 GAMEOBJECT_TYPE_PVP_REWARD
+ struct
+ {
+ uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0
+ uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0
+ uint32 open; // 2 open, References: Lock_, NoValue = 0
+ uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0
+ } pvpReward;
struct
{
uint32 data[MAX_GAMEOBJECT_DATA];
@@ -709,6 +746,8 @@ struct GameObjectTemplate
case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open;
case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open;
case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.open;
+ case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.open;
+ case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.open;
default: return 0;
}
}