Core/Objects: increase sight range of all Infinite, Gigantic and Large objects & correct general default visibility distance
This commit is contained in:
@@ -65,7 +65,6 @@ namespace Framework.Constants
|
|||||||
public const int LFGHealersNeeded = 1;
|
public const int LFGHealersNeeded = 1;
|
||||||
public const int LFGDPSNeeded = 3;
|
public const int LFGDPSNeeded = 3;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Loot Const
|
/// Loot Const
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -83,7 +82,6 @@ namespace Framework.Constants
|
|||||||
public const float terminal_fallTime = (float)(terminalVelocity / gravity); // the time that needed to reach terminalVelocity
|
public const float terminal_fallTime = (float)(terminalVelocity / gravity); // the time that needed to reach terminalVelocity
|
||||||
public const float terminal_safeFall_fallTime = (float)(terminalSafefallVelocity / gravity); // the time that needed to reach terminalVelocity with safefall
|
public const float terminal_safeFall_fallTime = (float)(terminalSafefallVelocity / gravity); // the time that needed to reach terminalVelocity with safefall
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Vehicle Const
|
/// Vehicle Const
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -212,7 +210,6 @@ namespace Framework.Constants
|
|||||||
public const int MaxPetTalentRank = 3;
|
public const int MaxPetTalentRank = 3;
|
||||||
public const int ActionBarIndexMax = (ActionBarIndexEnd - ActionBarIndexStart);
|
public const int ActionBarIndexMax = (ActionBarIndexEnd - ActionBarIndexStart);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Object Const
|
/// Object Const
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -227,9 +224,14 @@ namespace Framework.Constants
|
|||||||
public const float InteractionDistance = 5.0f;
|
public const float InteractionDistance = 5.0f;
|
||||||
public const float MaxVisibilityDistance = MapConst.SizeofGrids; // max distance for visible objects
|
public const float MaxVisibilityDistance = MapConst.SizeofGrids; // max distance for visible objects
|
||||||
public const float SightRangeUnit = 50.0f;
|
public const float SightRangeUnit = 50.0f;
|
||||||
public const float DefaultVisibilityDistance = 90.0f; // default visible distance, 90 yards on continents
|
public const float VisibilityDistanceGigantic = 400.0f;
|
||||||
public const float DefaultVisibilityInstance = 170.0f; // default visible distance in instances, 170 yards
|
public const float VisibilityDistanceLarge = 200.0f;
|
||||||
public const float DefaultVisibilityBGAreans = 533.0f; // default visible distance in BG/Arenas, roughly 533 yards
|
public const float VisibilityDistanceNormal = 100.0f;
|
||||||
|
public const float VisibilityDistanceSmall = 50.0f;
|
||||||
|
public const float VisibilityDistanceTiny = 25.0f;
|
||||||
|
public const float DefaultVisibilityDistance = VisibilityDistanceNormal; // default visible distance, 100 yards on continents
|
||||||
|
public const float DefaultVisibilityInstance = 170.0f; // default visible distance in instances, 170 yards
|
||||||
|
public const float DefaultVisibilityBGAreans = 533.0f; // default visible distance in BG/Arenas, roughly 533 yards
|
||||||
public const int DefaultVisibilityNotifyPeriod = 1000;
|
public const int DefaultVisibilityNotifyPeriod = 1000;
|
||||||
|
|
||||||
public const int WorldTrigger = 12999;
|
public const int WorldTrigger = 12999;
|
||||||
@@ -260,6 +262,16 @@ namespace Framework.Constants
|
|||||||
3.14f // MOVE_PITCH_RATE
|
3.14f // MOVE_PITCH_RATE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static float[] VisibilityDistances =
|
||||||
|
{
|
||||||
|
DefaultVisibilityDistance,
|
||||||
|
VisibilityDistanceTiny,
|
||||||
|
VisibilityDistanceSmall,
|
||||||
|
VisibilityDistanceLarge,
|
||||||
|
VisibilityDistanceGigantic,
|
||||||
|
MaxVisibilityDistance
|
||||||
|
};
|
||||||
|
|
||||||
//Todo move these else where
|
//Todo move these else where
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Method Const
|
/// Method Const
|
||||||
@@ -2389,4 +2401,16 @@ namespace Framework.Constants
|
|||||||
{
|
{
|
||||||
Dungeon = 0x04
|
Dungeon = 0x04
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum VisibilityDistanceType
|
||||||
|
{
|
||||||
|
Normal = 0,
|
||||||
|
Tiny = 1,
|
||||||
|
Small = 2,
|
||||||
|
Large = 3,
|
||||||
|
Gigantic = 4,
|
||||||
|
Infinite = 5,
|
||||||
|
|
||||||
|
Max
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2136,6 +2136,10 @@ namespace Game.Entities
|
|||||||
SetMovementAnimKitId(cainfo.movementAnimKit);
|
SetMovementAnimKitId(cainfo.movementAnimKit);
|
||||||
SetMeleeAnimKitId(cainfo.meleeAnimKit);
|
SetMeleeAnimKitId(cainfo.meleeAnimKit);
|
||||||
|
|
||||||
|
// Check if visibility distance different
|
||||||
|
if (cainfo.visibilityDistanceType != VisibilityDistanceType.Normal)
|
||||||
|
SetVisibilityDistanceOverride(cainfo.visibilityDistanceType);
|
||||||
|
|
||||||
//Load Path
|
//Load Path
|
||||||
if (cainfo.path_id != 0)
|
if (cainfo.path_id != 0)
|
||||||
m_path_id = cainfo.path_id;
|
m_path_id = cainfo.path_id;
|
||||||
|
|||||||
@@ -332,6 +332,7 @@ namespace Game.Entities
|
|||||||
public ushort movementAnimKit;
|
public ushort movementAnimKit;
|
||||||
public ushort meleeAnimKit;
|
public ushort meleeAnimKit;
|
||||||
public uint[] auras;
|
public uint[] auras;
|
||||||
|
public VisibilityDistanceType visibilityDistanceType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VendorItem
|
public class VendorItem
|
||||||
|
|||||||
@@ -382,6 +382,18 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if GameObject is Infinite
|
||||||
|
if (goInfo.IsInfiniteGameObject())
|
||||||
|
SetVisibilityDistanceOverride(VisibilityDistanceType.Infinite);
|
||||||
|
|
||||||
|
// Check if GameObject is Gigantic
|
||||||
|
if (goInfo.IsGiganticGameObject())
|
||||||
|
SetVisibilityDistanceOverride(VisibilityDistanceType.Gigantic);
|
||||||
|
|
||||||
|
// Check if GameObject is Large
|
||||||
|
if (goInfo.IsLargeGameObject())
|
||||||
|
SetVisibilityDistanceOverride(VisibilityDistanceType.Large);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1865,7 +1877,7 @@ namespace Game.Entities
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Player player = user.ToPlayer();
|
Player player = user.ToPlayer();
|
||||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(info.artifactForge.conditionID1);
|
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(info.ArtifactForge.conditionID1);
|
||||||
if (playerCondition != null)
|
if (playerCondition != null)
|
||||||
if (!ConditionManager.IsPlayerMeetingCondition(player, playerCondition))
|
if (!ConditionManager.IsPlayerMeetingCondition(player, playerCondition))
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ namespace Game.Entities
|
|||||||
public garrisonmonumentplaque GarrisonMonumentPlaque;
|
public garrisonmonumentplaque GarrisonMonumentPlaque;
|
||||||
|
|
||||||
[FieldOffset(68)]
|
[FieldOffset(68)]
|
||||||
public artifactforge artifactForge;
|
public artifactforge ArtifactForge;
|
||||||
|
|
||||||
[FieldOffset(68)]
|
[FieldOffset(68)]
|
||||||
public uilink UILink;
|
public uilink UILink;
|
||||||
@@ -431,6 +431,90 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsInfiniteGameObject()
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case GameObjectTypes.Door:
|
||||||
|
return Door.InfiniteAOI != 0;
|
||||||
|
case GameObjectTypes.FlagStand:
|
||||||
|
return FlagStand.InfiniteAOI != 0;
|
||||||
|
case GameObjectTypes.FlagDrop:
|
||||||
|
return FlagDrop.InfiniteAOI != 0;
|
||||||
|
case GameObjectTypes.TrapDoor:
|
||||||
|
return TrapDoor.InfiniteAOI != 0;
|
||||||
|
case GameObjectTypes.NewFlag:
|
||||||
|
return NewFlag.InfiniteAOI != 0;
|
||||||
|
default: return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsGiganticGameObject()
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case GameObjectTypes.Door:
|
||||||
|
return Door.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.Button:
|
||||||
|
return Button.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.QuestGiver:
|
||||||
|
return QuestGiver.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.Chest:
|
||||||
|
return Chest.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.Generic:
|
||||||
|
return Generic.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.Trap:
|
||||||
|
return Trap.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.SpellFocus:
|
||||||
|
return SpellFocus.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.Goober:
|
||||||
|
return Goober.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.SpellCaster:
|
||||||
|
return SpellCaster.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.FlagStand:
|
||||||
|
return FlagStand.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.FlagDrop:
|
||||||
|
return FlagDrop.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.ControlZone:
|
||||||
|
return ControlZone.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.DungeonDifficulty:
|
||||||
|
return DungeonDifficulty.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.TrapDoor:
|
||||||
|
return TrapDoor.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.NewFlag:
|
||||||
|
return NewFlag.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.CapturePoint:
|
||||||
|
return CapturePoint.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.GarrisonShipment:
|
||||||
|
return GarrisonShipment.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.UILink:
|
||||||
|
return UILink.GiganticAOI != 0;
|
||||||
|
case GameObjectTypes.GatheringNode:
|
||||||
|
return GatheringNode.GiganticAOI != 0;
|
||||||
|
default: return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsLargeGameObject()
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case GameObjectTypes.Chest:
|
||||||
|
return Chest.LargeAOI != 0;
|
||||||
|
case GameObjectTypes.Generic:
|
||||||
|
return Generic.LargeAOI != 0;
|
||||||
|
case GameObjectTypes.DungeonDifficulty:
|
||||||
|
return DungeonDifficulty.LargeAOI != 0;
|
||||||
|
case GameObjectTypes.GarrisonShipment:
|
||||||
|
return GarrisonShipment.LargeAOI != 0;
|
||||||
|
case GameObjectTypes.ArtifactForge:
|
||||||
|
return ArtifactForge.LargeAOI != 0;
|
||||||
|
case GameObjectTypes.GatheringNode:
|
||||||
|
return GatheringNode.LargeAOI != 0;
|
||||||
|
default: return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region TypeStructs
|
#region TypeStructs
|
||||||
public unsafe struct raw
|
public unsafe struct raw
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1560,6 +1560,17 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsVisibilityOverridden() { return m_visibilityDistanceOverride.HasValue; }
|
||||||
|
|
||||||
|
public void SetVisibilityDistanceOverride(VisibilityDistanceType type)
|
||||||
|
{
|
||||||
|
Cypher.Assert(type < VisibilityDistanceType.Max);
|
||||||
|
if (GetTypeId() == TypeId.Player)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_visibilityDistanceOverride.Set(SharedConst.VisibilityDistances[(int)type]);
|
||||||
|
}
|
||||||
|
|
||||||
public virtual void CleanupsBeforeDelete(bool finalCleanup = true)
|
public virtual void CleanupsBeforeDelete(bool finalCleanup = true)
|
||||||
{
|
{
|
||||||
if (IsInWorld)
|
if (IsInWorld)
|
||||||
@@ -1615,7 +1626,9 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public float GetVisibilityRange()
|
public float GetVisibilityRange()
|
||||||
{
|
{
|
||||||
if (isActiveObject() && !IsTypeId(TypeId.Player))
|
if (IsVisibilityOverridden() && !IsTypeId(TypeId.Player))
|
||||||
|
return m_visibilityDistanceOverride.Value;
|
||||||
|
else if (isActiveObject() && !IsTypeId(TypeId.Player))
|
||||||
return SharedConst.MaxVisibilityDistance;
|
return SharedConst.MaxVisibilityDistance;
|
||||||
else
|
else
|
||||||
return GetMap().GetVisibilityRange();
|
return GetMap().GetVisibilityRange();
|
||||||
@@ -1627,7 +1640,9 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
if (IsTypeId(TypeId.Player))
|
if (IsTypeId(TypeId.Player))
|
||||||
{
|
{
|
||||||
if (target != null && target.isActiveObject() && target.ToPlayer() == null)
|
if (target != null && target.IsVisibilityOverridden() && !target.IsTypeId(TypeId.Player))
|
||||||
|
return target.m_visibilityDistanceOverride.Value;
|
||||||
|
else if (target != null && target.isActiveObject() && !target.IsTypeId(TypeId.Player))
|
||||||
return SharedConst.MaxVisibilityDistance;
|
return SharedConst.MaxVisibilityDistance;
|
||||||
else if (ToPlayer().GetCinematicMgr().IsOnCinematic())
|
else if (ToPlayer().GetCinematicMgr().IsOnCinematic())
|
||||||
return SharedConst.DefaultVisibilityInstance;
|
return SharedConst.DefaultVisibilityInstance;
|
||||||
@@ -2902,6 +2917,7 @@ namespace Game.Entities
|
|||||||
public MovementInfo m_movementInfo;
|
public MovementInfo m_movementInfo;
|
||||||
string _name;
|
string _name;
|
||||||
protected bool m_isActive;
|
protected bool m_isActive;
|
||||||
|
Optional<float> m_visibilityDistanceOverride;
|
||||||
bool m_isWorldObject;
|
bool m_isWorldObject;
|
||||||
public ZoneScript m_zoneScript;
|
public ZoneScript m_zoneScript;
|
||||||
|
|
||||||
|
|||||||
@@ -1913,8 +1913,8 @@ namespace Game
|
|||||||
public void LoadCreatureTemplateAddons()
|
public void LoadCreatureTemplateAddons()
|
||||||
{
|
{
|
||||||
var time = Time.GetMSTime();
|
var time = Time.GetMSTime();
|
||||||
// 0 1 2 3 4 5 6 7 8 9
|
// 0 1 2 3 4 5 6 7 8 9 10
|
||||||
SQLResult result = DB.World.Query("SELECT entry, path_id, mount, bytes1, bytes2, emote, aiAnimKit, movementAnimKit, meleeAnimKit, auras FROM creature_template_addon");
|
SQLResult result = DB.World.Query("SELECT entry, path_id, mount, bytes1, bytes2, emote, aiAnimKit, movementAnimKit, meleeAnimKit, visibilityDistanceType, auras FROM creature_template_addon");
|
||||||
|
|
||||||
if (result.IsEmpty())
|
if (result.IsEmpty())
|
||||||
{
|
{
|
||||||
@@ -1941,8 +1941,9 @@ namespace Game
|
|||||||
creatureAddon.aiAnimKit = result.Read<ushort>(6);
|
creatureAddon.aiAnimKit = result.Read<ushort>(6);
|
||||||
creatureAddon.movementAnimKit = result.Read<ushort>(7);
|
creatureAddon.movementAnimKit = result.Read<ushort>(7);
|
||||||
creatureAddon.meleeAnimKit = result.Read<ushort>(8);
|
creatureAddon.meleeAnimKit = result.Read<ushort>(8);
|
||||||
|
creatureAddon.visibilityDistanceType = (VisibilityDistanceType)result.Read<byte>(9);
|
||||||
|
|
||||||
var tokens = new StringArray(result.Read<string>(9), ' ');
|
var tokens = new StringArray(result.Read<string>(10), ' ');
|
||||||
|
|
||||||
creatureAddon.auras = new uint[tokens.Length];
|
creatureAddon.auras = new uint[tokens.Length];
|
||||||
byte i = 0;
|
byte i = 0;
|
||||||
@@ -2004,6 +2005,12 @@ namespace Game
|
|||||||
creatureAddon.meleeAnimKit = 0;
|
creatureAddon.meleeAnimKit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (creatureAddon.visibilityDistanceType >= VisibilityDistanceType.Max)
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"Creature (Entry: {entry}) has invalid visibilityDistanceType ({creatureAddon.visibilityDistanceType}) defined in `creature_template_addon`.");
|
||||||
|
creatureAddon.visibilityDistanceType = VisibilityDistanceType.Normal;
|
||||||
|
}
|
||||||
|
|
||||||
creatureTemplateAddonStorage.Add(entry, creatureAddon);
|
creatureTemplateAddonStorage.Add(entry, creatureAddon);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@@ -2013,8 +2020,8 @@ namespace Game
|
|||||||
public void LoadCreatureAddons()
|
public void LoadCreatureAddons()
|
||||||
{
|
{
|
||||||
var time = Time.GetMSTime();
|
var time = Time.GetMSTime();
|
||||||
// 0 1 2 3 4 5 6 7 8 9
|
// 0 1 2 3 4 5 6 7 8 9 10
|
||||||
SQLResult result = DB.World.Query("SELECT guid, path_id, mount, bytes1, bytes2, emote, aiAnimKit, movementAnimKit, meleeAnimKit, auras FROM creature_addon");
|
SQLResult result = DB.World.Query("SELECT guid, path_id, mount, bytes1, bytes2, emote, aiAnimKit, movementAnimKit, meleeAnimKit, visibilityDistanceType, auras FROM creature_addon");
|
||||||
|
|
||||||
if (result.IsEmpty())
|
if (result.IsEmpty())
|
||||||
{
|
{
|
||||||
@@ -2049,8 +2056,9 @@ namespace Game
|
|||||||
creatureAddon.aiAnimKit = result.Read<ushort>(6);
|
creatureAddon.aiAnimKit = result.Read<ushort>(6);
|
||||||
creatureAddon.movementAnimKit = result.Read<ushort>(7);
|
creatureAddon.movementAnimKit = result.Read<ushort>(7);
|
||||||
creatureAddon.meleeAnimKit = result.Read<ushort>(8);
|
creatureAddon.meleeAnimKit = result.Read<ushort>(8);
|
||||||
|
creatureAddon.visibilityDistanceType = (VisibilityDistanceType)result.Read<byte>(9);
|
||||||
|
|
||||||
var tokens = new StringArray(result.Read<string>(9), ' ');
|
var tokens = new StringArray(result.Read<string>(10), ' ');
|
||||||
byte i = 0;
|
byte i = 0;
|
||||||
creatureAddon.auras = new uint[tokens.Length];
|
creatureAddon.auras = new uint[tokens.Length];
|
||||||
for (var c = 0; c < tokens.Length; ++c)
|
for (var c = 0; c < tokens.Length; ++c)
|
||||||
@@ -2112,6 +2120,12 @@ namespace Game
|
|||||||
creatureAddon.meleeAnimKit = 0;
|
creatureAddon.meleeAnimKit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (creatureAddon.visibilityDistanceType >= VisibilityDistanceType.Max)
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"Creature (GUID: {guid}) has invalid visibilityDistanceType ({creatureAddon.visibilityDistanceType}) defined in `creature_addon`.");
|
||||||
|
creatureAddon.visibilityDistanceType = VisibilityDistanceType.Normal;
|
||||||
|
}
|
||||||
|
|
||||||
creatureAddonStorage.Add(guid, creatureAddon);
|
creatureAddonStorage.Add(guid, creatureAddon);
|
||||||
count++;
|
count++;
|
||||||
} while (result.NextRow());
|
} while (result.NextRow());
|
||||||
|
|||||||
@@ -1907,15 +1907,15 @@ Visibility.GroupMode = 1
|
|||||||
# Visibility.Distance.Instances
|
# Visibility.Distance.Instances
|
||||||
# Visibility.Distance.BGArenas
|
# Visibility.Distance.BGArenas
|
||||||
# Description: Visibility distance to see other players or gameobjects.
|
# Description: Visibility distance to see other players or gameobjects.
|
||||||
# Visibility on continents on retail ~90 yards. In BG/Arenas ~533.
|
# Visibility on continents on retail ~100 yards. In BG/Arenas ~533.
|
||||||
# For instances default ~170.
|
# For instances default ~170.
|
||||||
# Max limited by grid size: 533.33333
|
# Max limited by grid size: 533.33333
|
||||||
# Min limit is max aggro radius (45) * Rate.Creature.Aggro
|
# Min limit is max aggro radius (45) * Rate.Creature.Aggro
|
||||||
# Default: 90 - (Visibility.Distance.Continents)
|
# Default: 100 - (Visibility.Distance.Continents)
|
||||||
# 170 - (Visibility.Distance.Instances)
|
# 170 - (Visibility.Distance.Instances)
|
||||||
# 533 - (Visibility.Distance.BGArenas)
|
# 533 - (Visibility.Distance.BGArenas)
|
||||||
|
|
||||||
Visibility.Distance.Continents = 90
|
Visibility.Distance.Continents = 100
|
||||||
Visibility.Distance.Instances = 170
|
Visibility.Distance.Instances = 170
|
||||||
Visibility.Distance.BGArenas = 533
|
Visibility.Distance.BGArenas = 533
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user