From b0955ca8eac3bddb1843cb7324f08ad4ae8ff1e8 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 4 Oct 2022 20:11:42 -0400 Subject: [PATCH] Core/DataStores: Defined map.db2 flags Port From (https://github.com/TrinityCore/TrinityCore/commit/f6baed006a5fde5d9ae6e6d80a385837640bb90a) --- Source/Framework/Constants/SharedConst.cs | 90 ++++++++++++++++---- Source/Game/DataStorage/Structs/M_Records.cs | 11 ++- 2 files changed, 80 insertions(+), 21 deletions(-) diff --git a/Source/Framework/Constants/SharedConst.cs b/Source/Framework/Constants/SharedConst.cs index 461a0a4f5..2e8cbd072 100644 --- a/Source/Framework/Constants/SharedConst.cs +++ b/Source/Framework/Constants/SharedConst.cs @@ -641,18 +641,18 @@ namespace Framework.Constants [Flags] public enum ReputationFlags : ushort { - None = 0x0000, - Visible = 0x0001, // makes visible in client (set or can be set at interaction with target of this faction) - AtWar = 0x0002, // enable AtWar-button in client. player controlled (except opposition team always war state), Flag only set on initial creation - Hidden = 0x0004, // hidden faction from reputation pane in client (player can gain reputation, but this update not sent to client) - Header = 0x0008, // Display as header in UI - Peaceful = 0x0010, - Inactive = 0x0020, // player controlled (CMSG_SET_FACTION_INACTIVE) - ShowPropagated = 0x0040, - HeaderShowsBar = 0x0080, // Header has its own reputation bar - CapitalCityForRaceChange = 0x0100, - Guild = 0x0200, - GarrisonInvasion = 0x0400 + None = 0x00, + Visible = 0x01, // makes visible in client (set or can be set at interaction with target of this faction) + AtWar = 0x02, // enable AtWar-button in client. player controlled (except opposition team always war state), Flag only set on initial creation + Hidden = 0x04, // hidden faction from reputation pane in client (player can gain reputation, but this update not sent to client) + Header = 0x08, // Display as header in UI + Peaceful = 0x10, + Inactive = 0x20, // player controlled (CMSG_SET_FACTION_INACTIVE) + ShowPropagated = 0x40, + HeaderShowsBar = 0x80, // Header has its own reputation bar + CapitalCityForRaceChange = 0x100, + Guild = 0x200, + GarrisonInvasion = 0x400 } public enum Gender : sbyte @@ -941,11 +941,67 @@ namespace Framework.Constants DisplayMythic = 0x80 // Controls icon displayed on minimap when inside the instance } - public enum MapFlags + [Flags] + public enum MapFlags : uint { - CanToggleDifficulty = 0x100, - FlexLocking = 0x8000, - Garrison = 0x4000000 + Optimize = 0x01, + DevelopmentMap = 0x02, + WeightedBlend = 0x04, + VertexColoring = 0x08, + SortObjects = 0x10, + LimitToPlayersFromOneRealm = 0x20, + EnableLighting = 0x40, + InvertedTerrain = 0x80, + DynamicDifficulty = 0x100, + ObjectFile = 0x200, + TextureFile = 0x400, + GenerateNormals = 0x800, + FixBorderShadowSeams = 0x1000, + InfiniteOcean = 0x2000, + UnderwaterMap = 0x4000, + FlexibleRaidLocking = 0x8000, + LimitFarclip = 0x10000, + UseParentMapFlightBounds = 0x20000, + NoRaceChangeOnThisMap = 0x40000, + DisabledForNonGMs = 0x80000, + WeightedNormals1 = 0x100000, + DisableLowDetailTerrain = 0x200000, + EnableOrgArenaBlinkRule = 0x400000, + WeightedHeightBlend = 0x800000, + CoalescingAreaSharing = 0x1000000, + ProvingGrounds = 0x2000000, + Garrison = 0x4000000, + EnableAINeedSystem = 0x8000000, + SingleVServer = 0x10000000, + UseInstancePool = 0x20000000, + MapUsesRaidGraphics = 0x40000000, + ForceCustomUIMap = 0x80000000, + } + + [Flags] + public enum MapFlags2 : uint + { + DontActivateShowMap = 0x01, + NoVoteKicks = 0x02, + NoIncomingTransfers = 0x04, + DontVoxelizePathData = 0x08, + TerrainLOD = 0x10, + UnclampedPointLights = 0x20, + PVP = 0x40, + IgnoreInstanceFarmLimit = 0x80, + DontInheritAreaLightsFromParent = 0x100, + ForceLightBufferOn = 0x200, + WMOLiquidScale = 0x400, + SpellClutterOn = 0x800, + SpellClutterOff = 0x1000, + ReducedPathMapHeightValidation = 0x2000, + NewMinimapGeneration = 0x4000, + AIBotsDetectedLikePlayers = 0x8000, + LinearlyLitTerrain = 0x10000, + FogOfWar = 0x20000, + DisableSharedWeatherSystems = 0x40000, + HonorSpellAttribute11LosHitsNocamcollide = 0x80000, + BelongsToLayer = 0x100000, } // values based at Holidays.dbc @@ -2955,7 +3011,7 @@ namespace Framework.Constants public enum CorpseDynFlags { - Lootable = 0x0001 + Lootable = 0x1 } public enum QueryDataGroup diff --git a/Source/Game/DataStorage/Structs/M_Records.cs b/Source/Game/DataStorage/Structs/M_Records.cs index 99e3dea9c..a54c912f3 100644 --- a/Source/Game/DataStorage/Structs/M_Records.cs +++ b/Source/Game/DataStorage/Structs/M_Records.cs @@ -51,7 +51,7 @@ namespace Game.DataStorage public short WindSettingsID; public int ZmpFileDataID; public int WdtFileDataID; - public MapFlags[] Flags = new MapFlags[3]; + public uint[] Flags = new uint[3]; // Helpers public Expansion Expansion() { return (Expansion)ExpansionID; } @@ -104,10 +104,13 @@ namespace Game.DataStorage } } - public bool IsDynamicDifficultyMap() { return (Flags[0] & MapFlags.CanToggleDifficulty) != 0; } - public bool IsFlexLocking() { return (Flags[0] & MapFlags.FlexLocking) != 0; } - public bool IsGarrison() { return (Flags[0] & MapFlags.Garrison) != 0; } + public bool IsDynamicDifficultyMap() { return GetFlags().HasFlag(MapFlags.DynamicDifficulty); } + public bool IsFlexLocking() { return GetFlags().HasFlag(MapFlags.FlexibleRaidLocking); } + public bool IsGarrison() { return GetFlags().HasFlag(MapFlags.Garrison); } public bool IsSplitByFaction() { return Id == 609 || Id == 2175; } + + public MapFlags GetFlags() { return (MapFlags)Flags[0]; } + public MapFlags2 GetFlags2() { return (MapFlags2)Flags[1]; } } public sealed class MapChallengeModeRecord