BFA Update (still lots of testing to do tho)

This commit is contained in:
hondacrx
2018-12-10 12:46:25 -05:00
parent 468b053946
commit 8e20114e10
256 changed files with 35613 additions and 10459 deletions
@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Text;
using Framework.Collections;
namespace Framework.Algorithms
{
public class DepthFirstSearch
{
private bool[] marked; // marked[v] = is there an s-v path?
private int count; // number of vertices connected to s
/**
* Computes the vertices in graph {@code G} that are
* connected to the source vertex {@code s}.
* @param G the graph
* @param s the source vertex
* @throws IllegalArgumentException unless {@code 0 <= s < V}
*/
public DepthFirstSearch(EdgeWeightedDigraph G, uint s, Action<uint> action)
{
marked = new bool[G.NumberOfVertices];
//validateVertex(s);
dfs(G, s, action);
}
// depth first search from v
private void dfs(EdgeWeightedDigraph G, uint v, Action<uint> action)
{
count++;
marked[v] = true;
foreach (var w in G.Adjacent((int)v))
{
if (!marked[w.To])
{
action(w.To);
dfs(G, w.To, action);
}
}
}
/**
* Is there a path between the source vertex {@code s} and vertex {@code v}?
* @param v the vertex
* @return {@code true} if there is a path, {@code false} otherwise
* @throws IllegalArgumentException unless {@code 0 <= v < V}
*/
public bool Marked(int v)
{
//validateVertex(v);
return marked[v];
}
/**
* Returns the number of vertices connected to the source vertex {@code s}.
* @return the number of vertices connected to the source vertex {@code s}
*/
public int Count()
{
return count;
}
}
}
@@ -0,0 +1,174 @@
using System;
using System.Collections.Generic;
using System.Text;
using Framework.Collections;
namespace Framework.Algorithms
{
/// <summary>
/// The DijkstraShortestPath class represents a data type for solving the single-source shortest paths problem
/// in edge-weighted digraphs where the edge weights are non-negative
/// </summary>
/// <seealso href="http://algs4.cs.princeton.edu/44sp/DijkstraSP.java.html">DijkstraSP class from Princeton University's Java Algorithms</seealso>
public class DijkstraShortestPath
{
private readonly double[] _distanceTo;
private readonly DirectedEdge[] _edgeTo;
private readonly IndexMinPriorityQueue<double> _priorityQueue;
/// <summary>
/// Computes a shortest paths tree from the specified sourceVertex to every other vertex in the edge-weighted directed graph
/// </summary>
/// <param name="graph">The edge-weighted directed graph</param>
/// <param name="sourceVertex">The source vertex to compute the shortest paths tree from</param>
/// <exception cref="ArgumentOutOfRangeException">Throws an ArgumentOutOfRangeException if an edge weight is negative</exception>
/// <exception cref="ArgumentNullException">Thrown if EdgeWeightedDigraph is null</exception>
public DijkstraShortestPath(EdgeWeightedDigraph graph, int sourceVertex)
{
if (graph == null)
{
throw new ArgumentNullException("graph", "EdgeWeightedDigraph cannot be null");
}
foreach (DirectedEdge edge in graph.Edges())
{
if (edge.Weight < 0)
{
throw new ArgumentOutOfRangeException($"Edge: '{edge}' has negative weight");
}
}
_distanceTo = new double[graph.NumberOfVertices];
_edgeTo = new DirectedEdge[graph.NumberOfVertices];
for (int v = 0; v < graph.NumberOfVertices; v++)
{
_distanceTo[v] = double.PositiveInfinity;
}
_distanceTo[sourceVertex] = 0.0;
_priorityQueue = new IndexMinPriorityQueue<double>(graph.NumberOfVertices);
_priorityQueue.Insert(sourceVertex, _distanceTo[sourceVertex]);
while (!_priorityQueue.IsEmpty())
{
int v = _priorityQueue.DeleteMin();
foreach (DirectedEdge edge in graph.Adjacent(v))
{
Relax(edge);
}
}
}
private void Relax(DirectedEdge edge)
{
uint v = edge.From;
uint w = edge.To;
if (_distanceTo[w] > _distanceTo[v] + edge.Weight)
{
_distanceTo[w] = _distanceTo[v] + edge.Weight;
_edgeTo[w] = edge;
if (_priorityQueue.Contains((int)w))
{
_priorityQueue.DecreaseKey((int)w, _distanceTo[w]);
}
else
{
_priorityQueue.Insert((int)w, _distanceTo[w]);
}
}
}
/// <summary>
/// Returns the length of a shortest path from the sourceVertex to the specified destinationVertex
/// </summary>
/// <param name="destinationVertex">The destination vertex to find a shortest path to</param>
/// <returns>The length of a shortest path from the sourceVertex to the specified destinationVertex or double.PositiveInfinity if no such path exists</returns>
public double DistanceTo(int destinationVertex)
{
return _distanceTo[destinationVertex];
}
/// <summary>
/// Is there a path from the sourceVertex to the specified destinationVertex?
/// </summary>
/// <param name="destinationVertex">The destination vertex to see if there is a path to</param>
/// <returns>True if there is a path from the sourceVertex to the specified destinationVertex, false otherwise</returns>
public bool HasPathTo(int destinationVertex)
{
return _distanceTo[destinationVertex] < double.PositiveInfinity;
}
/// <summary>
/// Returns an IEnumerable of DirectedEdges representing a shortest path from the sourceVertex to the specified destinationVertex
/// </summary>
/// <param name="destinationVertex">The destination vertex to find a shortest path to</param>
/// <returns>IEnumerable of DirectedEdges representing a shortest path from the sourceVertex to the specified destinationVertex</returns>
public IEnumerable<DirectedEdge> PathTo(int destinationVertex)
{
if (!HasPathTo(destinationVertex))
{
return null;
}
var path = new Stack<DirectedEdge>();
for (DirectedEdge edge = _edgeTo[destinationVertex]; edge != null; edge = _edgeTo[edge.From])
{
path.Push(edge);
}
return path;
}
// TODO: This method should be private and should be called from the bottom of the constructor
/// <summary>
/// check optimality conditions:
/// </summary>
/// <param name="graph">The edge-weighted directed graph</param>
/// <param name="sourceVertex">The source vertex to check optimality conditions from</param>
/// <returns>True if all optimality conditions are met, false otherwise</returns>
/// <exception cref="ArgumentNullException">Thrown on null EdgeWeightedDigraph</exception>
public bool Check(EdgeWeightedDigraph graph, int sourceVertex)
{
if (graph == null)
{
throw new ArgumentNullException("graph", "EdgeWeightedDigraph cannot be null");
}
if (_distanceTo[sourceVertex] != 0.0 || _edgeTo[sourceVertex] != null)
{
return false;
}
for (int v = 0; v < graph.NumberOfVertices; v++)
{
if (v == sourceVertex)
{
continue;
}
if (_edgeTo[v] == null && _distanceTo[v] != double.PositiveInfinity)
{
return false;
}
}
for (int v = 0; v < graph.NumberOfVertices; v++)
{
foreach (DirectedEdge edge in graph.Adjacent(v))
{
uint w = edge.To;
if (_distanceTo[v] + edge.Weight < _distanceTo[w])
{
return false;
}
}
}
for (int w = 0; w < graph.NumberOfVertices; w++)
{
if (_edgeTo[w] == null)
{
continue;
}
DirectedEdge edge = _edgeTo[w];
uint v = edge.From;
if (w != edge.To)
{
return false;
}
if (_distanceTo[v] + edge.Weight != _distanceTo[w])
{
return false;
}
}
return true;
}
}
}
@@ -0,0 +1,148 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Framework.Collections
{
/// <summary>
/// The EdgeWeightedDigrpah class represents an edge-weighted directed graph of vertices named 0 through V-1, where each directed edge
/// is of type DirectedEdge and has real-valued weight.
/// </summary>
/// <seealso href="http://algs4.cs.princeton.edu/44sp/EdgeWeightedDigraph.java.html">EdgeWeightedDigraph class from Princeton University's Java Algorithms</seealso>
public class EdgeWeightedDigraph
{
private readonly LinkedList<DirectedEdge>[] _adjacent;
/// <summary>
/// Constructs an empty edge-weighted digraph with the specified number of vertices and 0 edges
/// </summary>
/// <param name="vertices">Number of vertices in the Graph</param>
public EdgeWeightedDigraph(int vertices)
{
NumberOfVertices = vertices;
NumberOfEdges = 0;
_adjacent = new LinkedList<DirectedEdge>[NumberOfVertices];
for (int v = 0; v < NumberOfVertices; v++)
{
_adjacent[v] = new LinkedList<DirectedEdge>();
}
}
/// <summary>
/// The number of vertices in the edge-weighted digraph
/// </summary>
public int NumberOfVertices { get; private set; }
/// <summary>
/// The number of edges in the edge-weighted digraph
/// </summary>
public int NumberOfEdges { get; private set; }
/// <summary>
/// Adds the specified directed edge to the edge-weighted digraph
/// </summary>
/// <param name="edge">The DirectedEdge to add</param>
/// <exception cref="ArgumentNullException">DirectedEdge cannot be null</exception>
public void AddEdge(DirectedEdge edge)
{
if (edge == null)
{
throw new ArgumentNullException("edge", "DirectedEdge cannot be null");
}
_adjacent[edge.From].AddLast(edge);
}
/// <summary>
/// Returns an IEnumerable of the DirectedEdges incident from the specified vertex
/// </summary>
/// <param name="vertex">The vertex to find incident DirectedEdges from</param>
/// <returns>IEnumerable of the DirectedEdges incident from the specified vertex</returns>
public IEnumerable<DirectedEdge> Adjacent(int vertex)
{
return _adjacent[vertex];
}
/// <summary>
/// Returns an IEnumerable of all directed edges in the edge-weighted digraph
/// </summary>
/// <returns>IEnumerable of of all directed edges in the edge-weighted digraph</returns>
public IEnumerable<DirectedEdge> Edges()
{
for (int v = 0; v < NumberOfVertices; v++)
{
foreach (DirectedEdge edge in _adjacent[v])
{
yield return edge;
}
}
}
/// <summary>
/// Returns the number of directed edges incident from the specified vertex
/// This is known as the outdegree of the vertex
/// </summary>
/// <param name="vertex">The vertex to find find the outdegree of</param>
/// <returns>The number of directed edges incident from the specified vertex</returns>
public int OutDegree(int vertex)
{
return _adjacent[vertex].Count;
}
/// <summary>
/// Returns a string that represents the current edge-weighted digraph
/// </summary>
/// <returns>
/// A string that represents the current edge-weighted digraph
/// </returns>
public override string ToString()
{
var formattedString = new StringBuilder();
formattedString.AppendFormat("{0} vertices, {1} edges {2}", NumberOfVertices, NumberOfEdges, Environment.NewLine);
for (int v = 0; v < NumberOfVertices; v++)
{
formattedString.AppendFormat("{0}: ", v);
foreach (DirectedEdge edge in _adjacent[v])
{
formattedString.AppendFormat("{0} ", edge.To);
}
formattedString.AppendLine();
}
return formattedString.ToString();
}
}
/// <summary>
/// The DirectedEdge class represents a weighted edge in an edge-weighted directed graph.
/// </summary>
/// <seealso href="http://algs4.cs.princeton.edu/44sp/DirectedEdge.java.html">DirectedEdge class from Princeton University's Java Algorithms</seealso>
public class DirectedEdge
{
/// <summary>
/// Constructs a directed edge from one specified vertex to another with the given weight
/// </summary>
/// <param name="from">The start vertex</param>
/// <param name="to">The destination vertex</param>
/// <param name="weight">The weight of the DirectedEdge</param>
public DirectedEdge(uint from, uint to, double weight)
{
From = from;
To = to;
Weight = weight;
}
/// <summary>
/// Returns the destination vertex of the DirectedEdge
/// </summary>
public uint From { get; private set; }
/// <summary>
/// Returns the start vertex of the DirectedEdge
/// </summary>
public uint To { get; private set; }
/// <summary>
/// Returns the weight of the DirectedEdge
/// </summary>
public double Weight { get; private set; }
/// <summary>
/// Returns a string that represents the current DirectedEdge
/// </summary>
/// <returns>
/// A string that represents the current DirectedEdge
/// </returns>
public override string ToString()
{
return $"From: {From}, To: {To}, Weight: {Weight}";
}
}
}
@@ -0,0 +1,189 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Framework.Collections
{
/// <summary>
/// The IndexMinPriorityQueue class represents an indexed priority queue of generic keys.
/// </summary>
/// <seealso href="http://algs4.cs.princeton.edu/24pq/IndexMinPQ.java.html">IndexMinPQ class from Princeton University's Java Algorithms</seealso>
/// <typeparam name="T">Type must implement IComparable interface</typeparam>
public class IndexMinPriorityQueue<T> where T : IComparable<T>
{
private readonly T[] _keys;
private readonly int _maxSize;
private readonly int[] _pq;
private readonly int[] _qp;
/// <summary>
/// Constructs an empty indexed priority queue with indices between 0 and the specified maxSize - 1
/// </summary>
/// <param name="maxSize">The maximum size of the indexed priority queue</param>
public IndexMinPriorityQueue(int maxSize)
{
_maxSize = maxSize;
Size = 0;
_keys = new T[_maxSize + 1];
_pq = new int[_maxSize + 1];
_qp = new int[_maxSize + 1];
for (int i = 0; i < _maxSize; i++)
{
_qp[i] = -1;
}
}
/// <summary>
/// The number of keys on this indexed priority queue
/// </summary>
public int Size { get; private set; }
/// <summary>
/// Is the indexed priority queue empty?
/// </summary>
/// <returns>True if the indexed priority queue is empty, false otherwise</returns>
public bool IsEmpty()
{
return Size == 0;
}
/// <summary>
/// Is the specified parameter i an index on the priority queue?
/// </summary>
/// <param name="i">An index to check for on the priority queue</param>
/// <returns>True if the specified parameter i is an index on the priority queue, false otherwise</returns>
public bool Contains(int i)
{
return _qp[i] != -1;
}
/// <summary>
/// Associates the specified key with the specified index
/// </summary>
/// <param name="index">The index to associate the key with</param>
/// <param name="key">The key to associate with the index</param>
public void Insert(int index, T key)
{
Size++;
_qp[index] = Size;
_pq[Size] = index;
_keys[index] = key;
Swim(Size);
}
/// <summary>
/// Returns an index associated with a minimum key
/// </summary>
/// <returns>An index associated with a minimum key</returns>
public int MinIndex()
{
return _pq[1];
}
/// <summary>
/// Returns a minimum key
/// </summary>
/// <returns>A minimum key</returns>
public T MinKey()
{
return _keys[_pq[1]];
}
/// <summary>
/// Removes a minimum key and returns its associated index
/// </summary>
/// <returns>An index associated with a minimum key that was removed</returns>
public int DeleteMin()
{
int min = _pq[1];
Exchange(1, Size--);
Sink(1);
_qp[min] = -1;
_keys[_pq[Size + 1]] = default(T);
_pq[Size + 1] = -1;
return min;
}
/// <summary>
/// Returns the key associated with the specified index
/// </summary>
/// <param name="index">The index of the key to return</param>
/// <returns>The key associated with the specified index</returns>
public T KeyAt(int index)
{
return _keys[index];
}
/// <summary>
/// Change the key associated with the specified index to the specified value
/// </summary>
/// <param name="index">The index of the key to change</param>
/// <param name="key">Change the key associated with the specified index to this key</param>
public void ChangeKey(int index, T key)
{
_keys[index] = key;
Swim(_qp[index]);
Sink(_qp[index]);
}
/// <summary>
/// Decrease the key associated with the specified index to the specified value
/// </summary>
/// <param name="index">The index of the key to decrease</param>
/// <param name="key">Decrease the key associated with the specified index to this key</param>
public void DecreaseKey(int index, T key)
{
_keys[index] = key;
Swim(_qp[index]);
}
/// <summary>
/// Increase the key associated with the specified index to the specified value
/// </summary>
/// <param name="index">The index of the key to increase</param>
/// <param name="key">Increase the key associated with the specified index to this key</param>
public void IncreaseKey(int index, T key)
{
_keys[index] = key;
Sink(_qp[index]);
}
/// <summary>
/// Remove the key associated with the specified index
/// </summary>
/// <param name="index">The index of the key to remove</param>
public void Delete(int index)
{
int i = _qp[index];
Exchange(i, Size--);
Swim(i);
Sink(i);
_keys[index] = default(T);
_qp[index] = -1;
}
private bool Greater(int i, int j)
{
return _keys[_pq[i]].CompareTo(_keys[_pq[j]]) > 0;
}
private void Exchange(int i, int j)
{
int swap = _pq[i];
_pq[i] = _pq[j];
_pq[j] = swap;
_qp[_pq[i]] = i;
_qp[_pq[j]] = j;
}
private void Swim(int k)
{
while (k > 1 && Greater(k / 2, k))
{
Exchange(k, k / 2);
k = k / 2;
}
}
private void Sink(int k)
{
while (2 * k <= Size)
{
int j = 2 * k;
if (j < Size && Greater(j, j + 1))
{
j++;
}
if (!Greater(k, j))
{
break;
}
Exchange(k, j);
k = j;
}
}
}
}
+1 -1
View File
@@ -603,7 +603,7 @@ namespace Framework.Constants
CommandReloadSpellLootTemplate = 695,
CommandReloadSpellLinkedSpell = 696,
CommandReloadSpellPetAuras = 697,
// 698 - Reuse
CommandCharacterChangeaccount = 698,
CommandReloadSpellProc = 699,
CommandReloadSpellScripts = 700,
CommandReloadSpellTargetPosition = 701,
@@ -408,7 +408,10 @@ namespace Framework.Constants
GainParagonReputation = 206,
EarnHonorXp = 207,
RelicTalentUnlocked = 211,
TotalTypes = 213
ReachAccountHonorLevel = 213,
HeartOfAzerothArtifactPowerEarned = 214,
HeartOfAzerothLevelReached = 215,
TotalTypes
}
public enum CriteriaDataType
@@ -26,10 +26,11 @@ namespace Framework.Constants
HasFollowsTerrain = 0x010, // Nyi
Unk1 = 0x020,
HasTargetRollPitchYaw = 0x040, // Nyi
Unk2 = 0x080,
HasAnimID = 0x080,
Unk3 = 0x100,
Unk4 = 0x200,
HasCircularMovement = 0x400
HasAnimKitID = 0x200,
HasCircularMovement = 0x400,
Unk5 = 0x800
}
public enum AreaTriggerTypes
@@ -78,51 +78,51 @@ namespace Framework.Constants
CharCreateAlliedRaceAchievement = 50,
CharCreateLevelRequirementDemonHunter = 51,
CharDeleteInProgress = 52,
CharDeleteSuccess = 53,
CharDeleteFailed = 54,
CharDeleteFailedLockedForTransfer = 55,
CharDeleteFailedGuildLeader = 56,
CharDeleteFailedArenaCaptain = 57,
CharDeleteFailedHasHeirloomOrMail = 58,
CharDeleteFailedUpgradeInProgress = 59,
CharDeleteFailedHasWowToken = 60,
CharDeleteFailedVasTransactionInProgress = 61,
CharLoginInProgress = 62,
CharLoginSuccess = 63,
CharLoginNoWorld = 64,
CharLoginDuplicateCharacter = 65,
CharLoginNoInstances = 66,
CharLoginFailed = 67,
CharLoginDisabled = 68,
CharLoginNoCharacter = 69,
CharLoginLockedForTransfer = 70,
CharLoginLockedByBilling = 71,
CharLoginLockedByMobileAh = 72,
CharLoginTemporaryGmLock = 73,
CharLoginLockedByCharacterUpgrade = 74,
CharLoginLockedByRevokedCharacterUpgrade = 75,
CharLoginLockedByRevokedVasTransaction = 76,
CharLoginLockedByRestriction = 77,
CharNameSuccess = 78,
CharNameFailure = 79,
CharNameNoName = 80,
CharNameTooShort = 81,
CharNameTooLong = 82,
CharNameInvalidCharacter = 83,
CharNameMixedLanguages = 84,
CharNameProfane = 85,
CharNameReserved = 86,
CharNameInvalidApostrophe = 87,
CharNameMultipleApostrophes = 88,
CharNameThreeConsecutive = 89,
CharNameInvalidSpace = 90,
CharNameConsecutiveSpaces = 91,
CharNameRussianConsecutiveSilentCharacters = 92,
CharNameRussianSilentCharacterAtBeginningOrEnd = 93,
CharNameDeclensionDoesntMatchBaseName = 94
CharCreateCharacterInCommunity = 52,
CharDeleteInProgress = 53,
CharDeleteSuccess = 54,
CharDeleteFailed = 55,
CharDeleteFailedLockedForTransfer = 56,
CharDeleteFailedGuildLeader = 57,
CharDeleteFailedArenaCaptain = 58,
CharDeleteFailedHasHeirloomOrMail = 59,
CharDeleteFailedUpgradeInProgress = 60,
CharDeleteFailedHasWowToken = 61,
CharDeleteFailedVasTransactionInProgress = 62,
CharDeleteFailedCommunityOwner = 63,
CharLoginInProgress = 64,
CharLoginSuccess = 65,
CharLoginNoWorld = 66,
CharLoginDuplicateCharacter = 67,
CharLoginNoInstances = 68,
CharLoginFailed = 69,
CharLoginDisabled = 70,
CharLoginNoCharacter = 71,
CharLoginLockedForTransfer = 72,
CharLoginLockedByBilling = 73,
CharLoginLockedByMobileAh = 74,
CharLoginTemporaryGmLock = 75,
CharLoginLockedByCharacterUpgrade = 76,
CharLoginLockedByRevokedCharacterUpgrade = 77,
CharLoginLockedByRevokedVasTransaction = 78,
CharLoginLockedByRestriction = 79,
CharNameSuccess = 80,
CharNameFailure = 81,
CharNameNoName = 82,
CharNameTooShort = 83,
CharNameTooLong = 84,
CharNameInvalidCharacter = 85,
CharNameMixedLanguages = 86,
CharNameProfane = 87,
CharNameReserved = 88,
CharNameInvalidApostrophe = 89,
CharNameMultipleApostrophes = 90,
CharNameThreeConsecutive = 91,
CharNameInvalidSpace = 92,
CharNameConsecutiveSpaces = 93,
CharNameRussianConsecutiveSilentCharacters = 94,
CharNameRussianSilentCharacterAtBeginningOrEnd = 95,
CharNameDeclensionDoesntMatchBaseName = 96
}
public enum CharacterUndeleteResult
+63 -10
View File
@@ -17,7 +17,7 @@
namespace Framework.Constants
{
public enum AbilytyLearnType : byte
public enum AbilityLearnType : byte
{
OnSkillValue = 1, // Spell state will update depending on skill value
OnSkillLearn = 2 // Spell will be learned/removed together with entire skill
@@ -904,7 +904,7 @@ namespace Framework.Constants
public enum BattlegroundBracketId // bracketId for level ranges
{
First = 0,
Last = 11,
Last = 12,
Max
}
@@ -1241,7 +1241,7 @@ namespace Framework.Constants
Prime = 2
}
public enum ItemSetFlags : byte
public enum ItemSetFlags
{
LegacyInactive = 0x01,
}
@@ -1301,7 +1301,7 @@ namespace Framework.Constants
public enum LockType
{
Picklock = 1,
Lockpicking = 1,
Herbalism = 2,
Mining = 3,
DisarmTrap = 4,
@@ -1317,14 +1317,34 @@ namespace Framework.Constants
OpenAttacking = 14,
Gahzridian = 15,
Blasting = 16,
SlowOpen = 17,
SlowClose = 18,
PvpOpen = 17,
PvpClose = 18,
Fishing = 19,
Inscription = 20,
OpenFromVehicle = 21,
Archaelogy = 22,
Archaeology = 22,
PvpOpenFast = 23,
LumberMill = 28
LumberMill = 28,
Skinning = 29,
AncientMana = 30,
Warboard = 31,
ClassicHerbalism = 32,
OutlandHerbalism = 33,
NorthrendHerbalism = 34,
CataclysmHerbalism = 35,
PandariaHerbalism = 36,
DraenorHerbalism = 37,
LegionHerbalism = 38,
KulTiranHerbalism = 39,
ClassicMining = 40,
OutlandMining = 41,
NorthrendMining = 42,
CataclysmMining = 43,
PandariaMining = 44,
DraenorMining = 45,
LegionMining = 46,
KulTiranMining = 47,
Skinning2 = 48
}
public enum MapTypes : byte
@@ -1359,7 +1379,7 @@ namespace Framework.Constants
IgnoreRestrictions = 0x20
}
public enum MountFlags
public enum MountFlags : ushort
{
CanPitch = 0x4, // client checks MOVEMENTFLAG2_FULL_SPEED_PITCHING
CanSwim = 0x8, // client checks MOVEMENTFLAG_SWIMMING
@@ -1416,7 +1436,7 @@ namespace Framework.Constants
MonoValue = 0x400 // Skill always has value 1
}
public enum SpellCategoryFlags : byte
public enum SpellCategoryFlags : sbyte
{
CooldownScalesWithWeaponSpeed = 0x01, // unused
CooldownStartsOnEvent = 0x04,
@@ -1743,4 +1763,37 @@ namespace Framework.Constants
Read = 456,
Boot = 506
}
public enum ExpectedStatType : byte
{
CreatureHealth = 0,
PlayerHealth = 1,
CreatureAutoAttackDps = 2,
CreatureArmor = 3,
PlayerMana = 4,
PlayerPrimaryStat = 5,
PlayerSecondaryStat = 6,
ArmorConstant = 7,
None = 8,
CreatureSpellDamage = 9
}
public enum UiMapSystem : sbyte
{
World = 0,
Taxi = 1,
Adventure = 2,
Max = 3
}
public enum UiMapType
{
Cosmic = 0,
World = 1,
Continent = 2,
Zone = 3,
Dungeon = 4,
Micro = 5,
Orphan = 6
}
}
+2 -1
View File
@@ -202,6 +202,7 @@ namespace Framework.Constants
NoXpAtKill = 0x40, // Creature Kill Not Provide Xp
Trigger = 0x80, // Trigger Creature
NoTaunt = 0x100, // Creature Is Immune To Taunt Auras And Effect Attack Me
NoMoveFlagsUpdate = 0x200, // Creature won't update movement flags
Worldevent = 0x4000, // Custom Flag For World Event Creatures (Left Room For Merging)
Guard = 0x8000, // Creature Is Guard
NoCrit = 0x20000, // Creature Can'T Do Critical Strikes
@@ -214,7 +215,7 @@ namespace Framework.Constants
ImmunityKnockback = 0x40000000, // creature is immune to knockback effects
DBAllowed = (InstanceBind | Civilian | NoParry | NoParryHasten | NoBlock | NoCrush | NoXpAtKill |
Trigger | NoTaunt | Worldevent | NoCrit | NoSkillgain | TauntDiminish | AllDiminish | Guard |
Trigger | NoTaunt | NoMoveFlagsUpdate | Worldevent | NoCrit | NoSkillgain | TauntDiminish | AllDiminish | Guard |
IgnorePathfinding | NoPlayerDamageReq | ImmunityKnockback)
}
@@ -71,7 +71,11 @@ namespace Framework.Constants
KeystoneReceptacle = 49,
GatheringNode = 50,
ChallengeModeReward = 51,
Max = 52
Multi = 52,
SiegeableMulti = 53,
SiegeableMo = 54,
PvpReward = 55,
Max = 56
}
public enum GameObjectState
+139 -74
View File
@@ -259,7 +259,7 @@ namespace Framework.Constants
StrInt = 74
}
public enum ItemSpelltriggerType : byte
public enum ItemSpelltriggerType : sbyte
{
OnUse = 0, // use after equip cooldown
OnEquip = 1,
@@ -347,6 +347,68 @@ namespace Framework.Constants
OverrideRequiredLevel = 18
}
enum ItemContext : byte
{
None = 0,
DungeonNormal = 1,
DungeonHeroic = 2,
RaidNormal = 3,
RaidRaidFinder = 4,
RaidHeroic = 5,
RaidMythic = 6,
PvpUnranked1 = 7,
PvpRanked1 = 8,
ScenarioNormal = 9,
ScenarioHeroic = 10,
QuestReward = 11,
Store = 12,
TradeSkill = 13,
Vendor = 14,
BlackMarket = 15,
ChallengeMode1 = 16,
DungeonLvlUp1 = 17,
DungeonLvlUp2 = 18,
DungeonLvlUp3 = 19,
DungeonLvlUp4 = 20,
ForceToNone = 21,
Timewalker = 22,
DungeonMythic = 23,
PvpHonorReward = 24,
WorldQuest1 = 25,
WorldQuest2 = 26,
WorldQuest3 = 27,
WorldQuest4 = 28,
WorldQuest5 = 29,
WorldQuest6 = 30,
MissionReward1 = 31,
MissionReward2 = 32,
ChallengeMode2 = 33,
ChallengeMode3 = 34,
ChallengeModeJackpot = 35,
WorldQuest7 = 36,
WorldQuest8 = 37,
PvpRanked2 = 38,
PvpRanked3 = 39,
PvpRanked4 = 40,
PvpUnranked2 = 41,
WorldQuest9 = 42,
WorldQuest10 = 43,
PvpRanked5 = 44,
PvpRanked6 = 45,
PvpRanked7 = 46,
PvpUnranked3 = 47,
PvpUnranked4 = 48,
PvpUnranked5 = 49,
PvpUnranked6 = 50,
PvpUnranked7 = 51,
PvpRanked8 = 52,
WorldQuest11 = 53,
WorldQuest12 = 54,
WorldQuest13 = 55,
PvpRankedJackpot = 56,
TournamentRealm = 57
}
public enum ItemEnchantmentType : byte
{
None = 0,
@@ -905,79 +967,82 @@ namespace Framework.Constants
TooFewToSplit = 26, // Tried To Split More Than Number In Stack.
SplitFailed = 27, // Couldn'T Split Those Items.
SpellFailedReagentsGeneric = 28, // Missing Reagent
NotEnoughMoney = 29, // You Don'T Have Enough Money.
NotABag = 30, // Not A Bag.
DestroyNonemptyBag = 31, // You Can Only Do That With Empty Bags.
NotOwner = 32, // You Don'T Own That Item.
OnlyOneQuiver = 33, // You Can Only Equip One Quiver.
NoBankSlot = 34, // You Must Purchase That Bag Slot First
NoBankHere = 35, // You Are Too Far Away From A Bank.
ItemLocked = 36, // Item Is Locked.
GenericStunned = 37, // You Are Stunned
PlayerDead = 38, // You Can'T Do That When You'Re Dead.
ClientLockedOut = 39, // You Can'T Do That Right Now.
InternalBagError = 40, // Internal Bag Error
OnlyOneBolt = 41, // You Can Only Equip One Quiver.
OnlyOneAmmo = 42, // You Can Only Equip One Ammo Pouch.
CantWrapStackable = 43, // Stackable Items Can'T Be Wrapped.
CantWrapEquipped = 44, // Equipped Items Can'T Be Wrapped.
CantWrapWrapped = 45, // Wrapped Items Can'T Be Wrapped.
CantWrapBound = 46, // Bound Items Can'T Be Wrapped.
CantWrapUnique = 47, // Unique Items Can'T Be Wrapped.
CantWrapBags = 48, // Bags Can'T Be Wrapped.
LootGone = 49, // Already Looted
InvFull = 50, // Inventory Is Full.
BankFull = 51, // Your Bank Is Full
VendorSoldOut = 52, // That Item Is Currently Sold Out.
BagFull2 = 53, // That Bag Is Full.
ItemNotFound2 = 54, // The Item Was Not Found.
CantStack2 = 55, // This Item Cannot Stack.
BagFull3 = 56, // That Bag Is Full.
VendorSoldOut2 = 57, // That Item Is Currently Sold Out.
ObjectIsBusy = 58, // That Object Is Busy.
CantBeDisenchanted = 59,
NotInCombat = 60, // You Can'T Do That While In Combat
NotWhileDisarmed = 61, // You Can'T Do That While Disarmed
BagFull4 = 62, // That Bag Is Full.
CantEquipRank = 63, // You Don'T Have The Required Rank For That Item
CantEquipReputation = 64, // You Don'T Have The Required Reputation For That Item
TooManySpecialBags = 65, // You Cannot Equip Another Bag Of That Type
LootCantLootThatNow = 66, // You Can'T Loot That Item Now.
ItemUniqueEquippable = 67, // You Cannot Equip More Than One Of Those.
VendorMissingTurnins = 68, // You Do Not Have The Required Items For That Purchase
NotEnoughHonorPoints = 69, // You Don'T Have Enough Honor Points
NotEnoughArenaPoints = 70, // You Don'T Have Enough Arena Points
ItemMaxCountSocketed = 71, // You Have The Maximum Number Of Those Gems In Your Inventory Or Socketed Into Items.
MailBoundItem = 72, // You Can'T Mail Soulbound Items.
InternalBagError2 = 73, // Internal Bag Error
BagFull5 = 74, // That Bag Is Full.
ItemMaxCountEquippedSocketed = 75, // You Have The Maximum Number Of Those Gems Socketed Into Equipped Items.
ItemUniqueEquippableSocketed = 76, // You Cannot Socket More Than One Of Those Gems Into A Single Item.
TooMuchGold = 77, // At Gold Limit
NotDuringArenaMatch = 78, // You Can'T Do That While In An Arena Match
TradeBoundItem = 79, // You Can'T Trade A Soulbound Item.
CantEquipRating = 80, // You Don'T Have The Personal, Team, Or Battleground Rating Required To Buy That Item
EventAutoequipBindConfirm = 81,
NotSameAccount = 82, // Account-Bound Items Can Only Be Given To Your Own Characters.
NoOutput = 83,
ItemMaxLimitCategoryCountExceededIs = 84, // You Can Only Carry %D %S
ItemMaxLimitCategorySocketedExceededIs = 85, // You Can Only Equip %D |4item:Items In The %S Category
ScalingStatItemLevelExceeded = 86, // Your Level Is Too High To Use That Item
PurchaseLevelTooLow = 87, // You Must Reach Level %D To Purchase That Item.
CantEquipNeedTalent = 88, // You Do Not Have The Required Talent To Equip That.
ItemMaxLimitCategoryEquippedExceededIs = 89, // You Can Only Equip %D |4item:Items In The %S Category
ShapeshiftFormCannotEquip = 90, // Cannot Equip Item In This Form
ItemInventoryFullSatchel = 91, // Your Inventory Is Full. Your Satchel Has Been Delivered To Your Mailbox.
ScalingStatItemLevelTooLow = 92, // Your Level Is Too Low To Use That Item
CantBuyQuantity = 93, // You Can'T Buy The Specified Quantity Of That Item.
ItemIsBattlePayLocked = 94, // Your purchased item is still waiting to be unlocked
ReagentBankFull = 95, // Your reagent bank is full
ReagentBankLocked = 96,
WrongBagType3 = 97,
CantUseItem = 98, // You can't use that item.
CantBeObliterated = 99, // You can't obliterate that item
GuildBankConjuredItem = 100,// You cannot store conjured items in the guild bank
CantDoThatRightNow = 101,// You can't do that right now.
CantTradeGold = 29, // Gold May Only Be Offered By One Trader.
NotEnoughMoney = 30, // You Don'T Have Enough Money.
NotABag = 31, // Not A Bag.
DestroyNonemptyBag = 32, // You Can Only Do That With Empty Bags.
NotOwner = 33, // You Don'T Own That Item.
OnlyOneQuiver = 34, // You Can Only Equip One Quiver.
NoBankSlot = 35, // You Must Purchase That Bag Slot First
NoBankHere = 36, // You Are Too Far Away From A Bank.
ItemLocked = 37, // Item Is Locked.
GenericStunned = 38, // You Are Stunned
PlayerDead = 39, // You Can'T Do That When You'Re Dead.
ClientLockedOut = 40, // You Can'T Do That Right Now.
InternalBagError = 41, // Internal Bag Error
OnlyOneBolt = 42, // You Can Only Equip One Quiver.
OnlyOneAmmo = 43, // You Can Only Equip One Ammo Pouch.
CantWrapStackable = 44, // Stackable Items Can'T Be Wrapped.
CantWrapEquipped = 45, // Equipped Items Can'T Be Wrapped.
CantWrapWrapped = 46, // Wrapped Items Can'T Be Wrapped.
CantWrapBound = 47, // Bound Items Can'T Be Wrapped.
CantWrapUnique = 48, // Unique Items Can'T Be Wrapped.
CantWrapBags = 49, // Bags Can'T Be Wrapped.
LootGone = 50, // Already Looted
InvFull = 51, // Inventory Is Full.
BankFull = 52, // Your Bank Is Full
VendorSoldOut = 53, // That Item Is Currently Sold Out.
BagFull2 = 54, // That Bag Is Full.
ItemNotFound2 = 55, // The Item Was Not Found.
CantStack2 = 56, // This Item Cannot Stack.
BagFull3 = 57, // That Bag Is Full.
VendorSoldOut2 = 58, // That Item Is Currently Sold Out.
ObjectIsBusy = 59, // That Object Is Busy.
CantBeDisenchanted = 60, // Item Cannot Be Disenchanted
NotInCombat = 61, // You Can'T Do That While In Combat
NotWhileDisarmed = 62, // You Can'T Do That While Disarmed
BagFull4 = 63, // That Bag Is Full.
CantEquipRank = 64, // You Don'T Have The Required Rank For That Item
CantEquipReputation = 65, // You Don'T Have The Required Reputation For That Item
TooManySpecialBags = 66, // You Cannot Equip Another Bag Of That Type
LootCantLootThatNow = 67, // You Can'T Loot That Item Now.
ItemUniqueEquippable = 68, // You Cannot Equip More Than One Of Those.
VendorMissingTurnins = 69, // You Do Not Have The Required Items For That Purchase
NotEnoughHonorPoints = 70, // You Don'T Have Enough Honor Points
NotEnoughArenaPoints = 71, // You Don'T Have Enough Arena Points
ItemMaxCountSocketed = 72, // You Have The Maximum Number Of Those Gems In Your Inventory Or Socketed Into Items.
MailBoundItem = 73, // You Can'T Mail Soulbound Items.
InternalBagError2 = 74, // Internal Bag Error
BagFull5 = 75, // That Bag Is Full.
ItemMaxCountEquippedSocketed = 76, // You Have The Maximum Number Of Those Gems Socketed Into Equipped Items.
ItemUniqueEquippableSocketed = 77, // You Cannot Socket More Than One Of Those Gems Into A Single Item.
TooMuchGold = 78, // At Gold Limit
NotDuringArenaMatch = 79, // You Can'T Do That While In An Arena Match
TradeBoundItem = 80, // You Can'T Trade A Soulbound Item.
CantEquipRating = 81, // You Don'T Have The Personal, Team, Or Battleground Rating Required To Buy That Item
EventAutoequipBindConfirm = 82,
NotSameAccount = 83, // Account-Bound Items Can Only Be Given To Your Own Characters.
EquipNone3 = 84,
ItemMaxLimitCategoryCountExceededIs = 85, // You Can Only Carry %D %S
ItemMaxLimitCategorySocketedExceededIs = 86, // You Can Only Equip %D |4item:Items In The %S Category
ScalingStatItemLevelExceeded = 87, // Your Level Is Too High To Use That Item
PurchaseLevelTooLow = 88, // You Must Reach Level %D To Purchase That Item.
CantEquipNeedTalent = 89, // You Do Not Have The Required Talent To Equip That.
ItemMaxLimitCategoryEquippedExceededIs = 90, // You Can Only Equip %D |4item:Items In The %S Category
ShapeshiftFormCannotEquip = 91, // Cannot Equip Item In This Form
ItemInventoryFullSatchel = 92, // Your Inventory Is Full. Your Satchel Has Been Delivered To Your Mailbox.
ScalingStatItemLevelTooLow = 93, // Your Level Is Too Low To Use That Item
CantBuyQuantity = 94, // You Can'T Buy The Specified Quantity Of That Item.
ItemIsBattlePayLocked = 95, // Your Purchased Item Is Still Waiting To Be Unlocked
ReagentBankFull = 96, // Your Reagent Bank Is Full
ReagentBankLocked = 97,
WrongBagType3 = 98, // That Item Doesn'T Go In That Container.
CantUseItem = 99, // You Can'T Use That Item.
CantBeObliterated = 100,// You Can'T Obliterate That Item
GuildBankConjuredItem = 101,// You Cannot Store Conjured Items In The Guild Bank
CantDoThatRightNow = 102,// You Can'T Do That Right Now.
BagFull6 = 103,// That Bag Is Full.
CantBeScrapped = 104,// You Can'T Scrap That Item
}
public enum BuyResult
+10 -3
View File
@@ -42,8 +42,14 @@ namespace Framework.Constants
PandarenNeutral = 42,
PandarenAlliance = 43,
PandarenHorde = 44,
Rikkitun = 168,
Addon = -1 // Used By Addons, In 2.4.0 Not Exist, Replaced By Messagetype?
Sprite = 168,
ShathYar = 178,
Nerglish = 179,
Moonkin = 180,
Shalassian = 181,
Thalassian2 = 182,
Addon = 183,
AddonLogged = 184
}
public enum CypherStrings
@@ -946,7 +952,8 @@ namespace Framework.Constants
AccountBnetNotLinked = 1189,
DisallowTicketsConfig = 1190,
BanExists = 1191,
// Room For More Level 3 1192-1198 Not Used
ChangeAccountSuccess = 1192,
// Room For More Level 3 1193-1198 Not Used
// Debug Commands
DebugAreatriggerLeft = 1999,
+6
View File
@@ -182,4 +182,10 @@ namespace Framework.Constants
CannotEnterZoneInCombat, // A Boss Encounter Is Currently In Progress On The Target Map
CannotEnterUnspecifiedReason
}
public enum ModelIgnoreFlags
{
Nothing = 0x00,
M2 = 0x01
}
}
File diff suppressed because it is too large Load Diff
+26 -19
View File
@@ -22,29 +22,35 @@ namespace Framework.Constants
Object = 0,
Item = 1,
Container = 2,
Unit = 3,
Player = 4,
GameObject = 5,
DynamicObject = 6,
Corpse = 7,
AreaTrigger = 8,
SceneObject = 9,
Conversation = 10
AzeriteEmpoweredItem = 3,
AzeriteItem = 4,
Unit = 5,
Player = 6,
ActivePlayer = 7,
GameObject = 8,
DynamicObject = 9,
Corpse = 10,
AreaTrigger = 11,
SceneObject = 12,
Conversation = 13
}
public enum TypeMask
{
Object = 0x01,
Item = 0x02,
Container = Item | 0x04,
Unit = 0x08,
Player = 0x10,
GameObject = 0x20,
DynamicObject = 0x40,
Corpse = 0x80,
AreaTrigger = 0x100,
Sceneobject = 0x200,
Conversation = 0x400,
Container = 0x04,
AzeriteEmpoweredItem = 0x08,
AzeriteItem = 0x10,
Unit = 0x20,
Player = 0x40,
ActivePlayer = 0x80,
GameObject = 0x100,
DynamicObject = 0x200,
Corpse = 0x400,
AreaTrigger = 0x800,
Sceneobject = 0x1000,
Conversation = 0x2000,
Seer = Player | Unit | DynamicObject
}
@@ -97,7 +103,8 @@ namespace Framework.Constants
BattlePet = 44,
CommerceObj = 45,
ClientSession = 46,
Cast = 47
Cast = 47,
ClientConnection = 48
}
public enum NotifyFlags
@@ -131,7 +138,7 @@ namespace Framework.Constants
// uses this category
}
public enum SummonType: byte
public enum SummonType
{
None = 0,
Pet = 1,
+1 -1
View File
@@ -106,7 +106,7 @@ namespace Framework.Constants
DeclensionDoesntMatchBaseName = 16
}
public enum PetStableinfo
public enum PetStableinfo : byte
{
Active = 1,
Inactive = 2
+8 -12
View File
@@ -24,8 +24,7 @@ namespace Framework.Constants
public const int MaxTalentTiers = 7;
public const int MaxTalentColumns = 3;
public const int MaxTalentRank = 5;
public const int MaxPvpTalentTiers = 6;
public const int MaxPvpTalentColumns = 3;
public const int MaxPvpTalentSlots = 4;
public const int MinSpecializationLevel = 10;
public const int MaxSpecializations = 4;
public const int MaxMasterySpells = 2;
@@ -46,7 +45,7 @@ namespace Framework.Constants
public const uint infinityCooldownDelayCheck = Time.Month / 2;
public const int MaxPlayerSummonDelay = 2 * Time.Minute;
public const int TaxiMaskSize = 258;
public const int TaxiMaskSize = 286;
// corpse reclaim times
public const int DeathExpireStep = (5 * Time.Minute);
@@ -59,17 +58,13 @@ namespace Framework.Constants
public const int MaxRunes = 7;
public const int MaxRechargingRunes = 3;
public static uint[] DefaultTalentRowLevels = { 15, 30, 45, 60, 75, 90, 100 };
public static uint[] DKTalentRowLevels = { 57, 58, 59, 60, 75, 90, 100 };
//public static uint[] DHTalentRowLevels = { 99, 100, 102, 104, 106, 108, 110 };
public const int CustomDisplaySize = 3;
public const int ArtifactsAllWeaponsGeneralWeaponEquippedPassive = 197886;
public const int MaxArtifactTier = 1;
public const byte MaxHonorLevel = 50;
public const int MaxHonorLevel = 500;
public const byte LevelMinHonor = 110;
public const uint SpellPvpRulesEnabled = 134735;
}
@@ -418,7 +413,7 @@ namespace Framework.Constants
GM = 0x08,
Ghost = 0x10,
Resting = 0x20,
Unk6 = 0x40,
VoiceChat = 0x40,
Unk7 = 0x80,
ContestedPVP = 0x100,
InPVP = 0x200,
@@ -449,7 +444,8 @@ namespace Framework.Constants
public enum PlayerFlagsEx
{
ReagentBankUnlocked = 0x01,
MercenaryMode = 0x02
MercenaryMode = 0x02,
ArtifactForgeCheat = 0x04
}
public enum CharacterFlags : uint
@@ -724,9 +720,9 @@ namespace Framework.Constants
public enum AttackSwingErr
{
CantAttack = 0,
NotInRange = 0,
BadFacing = 1,
NotInRange = 2,
CantAttack = 2,
DeadTarget = 3
}
+5
View File
@@ -315,6 +315,11 @@ namespace Framework.Constants
ClearProgressOfCriteriaTreeObjectivesOnAccept = 0x1000000
}
public enum QuestFlagsEx2
{
NoWarModeBonus = 0x2
}
public enum QuestSpecialFlags
{
None = 0x00,
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -273,7 +273,7 @@ namespace Framework.Constants
SetOrientation = 66, //
CreateTimedEvent = 67, // Id, Initialmin, Initialmax, Repeatmin(Only If It Repeats), Repeatmax(Only If It Repeats), Chance
Playmovie = 68, // Entry
MoveToPos = 69, // PointId, transport, disablePathfinding
MoveToPos = 69, // PointId, transport, disablePathfinding, ContactDistance
RespawnTarget = 70, //
Equip = 71, // Entry, Slotmask Slot1, Slot2, Slot3 , Only Slots With Mask Set Will Be Sent To Client, Bits Are 1, 2, 4, Leaving Mask 0 Is Defaulted To Mask 7 (Send All), Slots1-3 Are Only Used If No Entry Is Set
CloseGossip = 72, // None
+146 -29
View File
@@ -19,7 +19,7 @@ namespace Framework.Constants
{
public struct SkillConst
{
public const int MaxPlayerSkills = 128;
public const int MaxPlayerSkills = 256;
public const uint MaxSkillStep = 15;
}
@@ -34,23 +34,22 @@ namespace Framework.Constants
Maces = 54,
TwoHandedSwords = 55,
Defense = 95,
LangCommon = 98,
LanguageCommon = 98,
RacialDwarf = 101,
LangOrcish = 109,
LangDwarven = 111,
LangDarnassian = 113,
LangTaurahe = 115,
LanguageOrcish = 109,
LanguageDwarven = 111,
LanguageDarnassian = 113,
LanguageTaurahe = 115,
DualWield = 118,
RacialTauren = 124,
RacialOrc = 125,
RacialNightElf = 126,
FirstAid = 129,
Staves = 136,
LangThalassian = 137,
LangDraconic = 138,
LangDemonTongue = 139,
LangTitan = 140,
LangOldTongue = 141,
LanguageThalassian = 137,
LanguageDraconic = 138,
LanguageDemonTongue = 139,
LanguageTitan = 140,
LanguageOldTongue = 141,
Survival = 142,
HorseRiding = 148,
WolfRiding = 149,
@@ -95,8 +94,8 @@ namespace Framework.Constants
PetTurtle = 251,
PetGenericHunter = 270,
PlateMail = 293,
LangGnomish = 313,
LangTroll = 315,
LanguageGnomish = 313,
LanguageTroll = 315,
Enchanting = 333,
Fishing = 356,
Skinning = 393,
@@ -112,7 +111,7 @@ namespace Framework.Constants
PetHyena = 654,
PetBirdOfPrey = 655,
PetWindSerpent = 656,
LangForsaken = 673,
LanguageForsaken = 673,
KodoRiding = 713,
RacialTroll = 733,
RacialGnome = 753,
@@ -120,7 +119,7 @@ namespace Framework.Constants
Jewelcrafting = 755,
RacialBloodElf = 756,
PetEventRemoteControl = 758,
LangDraenei = 759,
LanguageDraenei = 759,
RacialDraenei = 760,
PetFelguard = 761,
Riding = 762,
@@ -146,8 +145,8 @@ namespace Framework.Constants
PetExoticSpiritBeast = 788,
RacialWorgen = 789,
RacialGoblin = 790,
LangGilnean = 791,
LangGoblin = 792,
LanguageGilnean = 791,
LanguageGoblin = 792,
Archaeology = 794,
Hunter = 795,
DeathKnight = 796,
@@ -159,7 +158,7 @@ namespace Framework.Constants
AllGlyphs = 810,
PetDog = 811,
PetMonkey = 815,
PetShaleSpider = 817,
PetExoticShaleSpider = 817,
Beetle = 818,
AllGuildPerks = 821,
PetHydra = 824,
@@ -168,9 +167,7 @@ namespace Framework.Constants
Warlock = 849,
RacialPandaren = 899,
Mage = 904,
LangPandarenNeutral = 905,
LangPandarenAlliance = 906,
LangPandarenHorde = 907,
LanguagePandarenNeutral = 905,
Rogue = 921,
Shaman = 924,
FelImp = 927,
@@ -190,17 +187,16 @@ namespace Framework.Constants
WayOfTheBrew = 980,
ApprenticeCooking = 981,
JourneymanCookbook = 982,
Porcupine = 983,
Crane = 984,
WaterStrider = 985,
PetRodent = 983,
PetCrane = 984,
PetWaterStrider = 985,
PetExoticQuilen = 986,
PetGoat = 987,
Basilisk = 988,
PetBasilisk = 988,
NoPlayers = 999,
Direhorn = 1305,
PetDirehorn = 1305,
PetPrimalStormElemental = 1748,
PetWaterElementalMinorTalentVersion = 1777,
PetExoticRylak = 1818,
PetRiverbeast = 1819,
Unused = 1830,
DemonHunter = 1848,
@@ -212,6 +208,127 @@ namespace Framework.Constants
Warglaives = 2152,
PetMechanical = 2189,
PetAbomination = 2216,
PetOxen = 2279,
PetScalehide = 2280,
PetFeathermane = 2361,
RacialNightborne = 2419,
RacialHighmountainTauren = 2420,
RacialLightforgedDraenei = 2421,
RacialVoidElf = 2423,
KulTiranBlacksmithing = 2437,
LegionBlacksmithing = 2454,
LanguageShalassian = 2464,
LanguageThalassian2 = 2465,
DraenorBlacksmithing = 2472,
PandariaBlacksmithing = 2473,
CataclysmBlacksmithing = 2474,
NorthrendBlacksmithing = 2475,
OutlandBlacksmithing = 2476,
Blacksmithing2 = 2477,
KulTiranAlchemy = 2478,
LegionAlchemy = 2479,
DraenorAlchemy = 2480,
PandariaAlchemy = 2481,
CataclysmAlchemy = 2482,
NorthrendAlchemy = 2483,
OutlandAlchemy = 2484,
Alchemy2 = 2485,
KulTiranEnchanting = 2486,
LegionEnchanting = 2487,
DraenorEnchanting = 2488,
PandariaEnchanting = 2489,
CataclysmEnchanting = 2491,
NorthrendEnchanting = 2492,
OutlandEnchanting = 2493,
Enchanting2 = 2494,
KulTiranEngineering = 2499,
LegionEngineering = 2500,
DraenorEngineering = 2501,
PandariaEngineering = 2502,
CataclysmEngineering = 2503,
NorthrendEngineering = 2504,
OutlandEngineering = 2505,
Engineering2 = 2506,
KulTiranInscription = 2507,
LegionInscription = 2508,
DraenorInscription = 2509,
PandariaInscription = 2510,
CataclysmInscription = 2511,
NorthrendInscription = 2512,
OutlandInscription = 2513,
Inscription2 = 2514,
KulTiranJewelcrafting = 2517,
LegionJewelcrafting = 2518,
DraenorJewelcrafting = 2519,
PandariaJewelcrafting = 2520,
CataclysmJewelcrafting = 2521,
NorthrendJewelcrafting = 2522,
OutlandJewelcrafting = 2523,
Jewelcrafting2 = 2524,
KulTiranLeatherworking = 2525,
LegionLeatherworking = 2526,
DraenorLeatherworking = 2527,
PandariaLeatherworking = 2528,
CataclysmLeatherworking = 2529,
NorthrendLeatherworking = 2530,
OutlandLeatherworking = 2531,
Leatherworking2 = 2532,
KulTiranTailoring = 2533,
LegionTailoring = 2534,
DraenorTailoring = 2535,
PandariaTailoring = 2536,
CataclysmTailoring = 2537,
NorthrendTailoring = 2538,
OutlandTailoring = 2539,
Tailoring2 = 2540,
KulTiranCooking = 2541,
LegionCooking = 2542,
DraenorCooking = 2543,
PandariaCooking = 2544,
CataclysmCooking = 2545,
NorthrendCooking = 2546,
OutlandCooking = 2547,
Cooking2 = 2548,
KulTiranHerbalism = 2549,
LegionHerbalism = 2550,
DraenorHerbalism = 2551,
PandariaHerbalism = 2552,
CataclysmHerbalism = 2553,
NorthrendHerbalism = 2554,
OutlandHerbalism = 2555,
Herbalism2 = 2556,
KulTiranSkinning = 2557,
LegionSkinning = 2558,
DraenorSkinning = 2559,
PandariaSkinning = 2560,
CataclysmSkinning = 2561,
NorthrendSkinning = 2562,
OutlandSkinning = 2563,
Skinning2 = 2564,
KulTiranMining = 2565,
LegionMining = 2566,
DraenorMining = 2567,
PandariaMining = 2568,
CataclysmMining = 2569,
NorthrendMining = 2570,
OutlandMining = 2571,
Mining2 = 2572,
KulTiranFishing = 2585,
LegionFishing = 2586,
DraenorFishing = 2587,
PandariaFishing = 2588,
CataclysmFishing = 2589,
NorthrendFishing = 2590,
OutlandFishing = 2591,
Fishing2 = 2592,
RacialDarkIronDwarf = 2597,
RacialMagHarOrc = 2598,
PetLizard = 2703,
PetHorse = 2704,
PetExoticPterrordax = 2705,
PetToad = 2706,
PetExoticKrolusk = 2707,
SecondPetHunter = 2716
}
public enum SkillState
@@ -222,7 +339,7 @@ namespace Framework.Constants
Deleted = 3
}
public enum SkillCategory : byte
public enum SkillCategory : sbyte
{
Unk = 0,
Attributes = 5,
@@ -513,7 +513,9 @@ namespace Framework.Constants
Unk489 = 489,
Unk490 = 490,
Unk491 = 491,
Total = 492
Unk492 = 492,
Unk493 = 493,
Total
}
public enum AuraEffectHandleModes
+52 -19
View File
@@ -116,7 +116,7 @@ namespace Framework.Constants
Cast = 0x04, // 2 Cast Any Spells
Move = 0x08, // 3 Removed By Any Movement
Turning = 0x10, // 4 Removed By Any Turning
Jump = 0x20, // 5 Removed By Entering Combat
Jump = 0x20, // 5 Removed By Jumping
NotMounted = 0x40, // 6 Removed By Dismounting
NotAbovewater = 0x80, // 7 Removed By Entering Water
NotUnderwater = 0x100, // 8 Removed By Leaving Water
@@ -687,23 +687,29 @@ namespace Framework.Constants
NotWhileMercenary = 270,
SpecDisabled = 271,
CantBeObliterated = 272,
FollowerClassSpecCap = 273,
TransportNotReady = 274,
TransmogSetAlreadyKnown = 275,
DisabledByAuraLabel = 276,
DisabledByMaxUsableLevel = 277,
SpellAlreadyKnown = 278,
MustKnowSupercedingSpell = 279,
YouCannotUseThatInPvpInstance = 280,
NoArtifactEquipped = 281,
WrongArtifactEquipped = 282,
TargetIsUntargetableByAnyone = 283,
SpellEffectFailed = 284,
NeedAllPartyMembers = 285,
ArtifactAtFullPower = 286,
ApItemFromPreviousTier = 287,
AreaTriggerCreation = 288,
Unknown = 289,
CantBeScrapped = 273,
FollowerClassSpecCap = 274,
TransportNotReady = 275,
TransmogSetAlreadyKnown = 276,
DisabledByAuraLabel = 277,
DisabledByMaxUsableLevel = 278,
SpellAlreadyKnown = 279,
MustKnowSupercedingSpell = 280,
YouCannotUseThatInPvpInstance = 281,
NoArtifactEquipped = 282,
WrongArtifactEquipped = 283,
TargetIsUntargetableByAnyone = 284,
SpellEffectFailed = 285,
NeedAllPartyMembers = 286,
ArtifactAtFullPower = 287,
ApItemFromPreviousTier = 288,
AreaTriggerCreation = 289,
AzeriteEmpoweredOnly = 290,
AzeriteEmpoweredNoChoicesToUndo = 291,
WrongFaction = 292,
NotEnoughCurrency = 293,
BattleForAzerothRidingRequirement = 294,
Unknown = 295,
// Ok Cast Value - Here In Case A Future Version Removes Success And We Need To Use A Custom Value (Not Sent To Client Either Way)
SpellCastOk = Success
@@ -1030,6 +1036,7 @@ namespace Framework.Constants
CannotRitualOfDoomWhileSummoningSiters = 317, // You Cannot Perform The Ritual Of Doom While Attempting To Summon The Sisters.
LearnedAllThatYouCanAboutYourArtifact = 318, // You Have Learned All That You Can About Your Artifact.
CantCallPetWithLoneWolf = 319, // You Cannot Use Call Pet While Lone Wolf Is Active.
TargetCannotAlreadyHaveOrbOfPower = 320, // Target cannot already have a Orb of Power.
YouMustBeInAnInnToStrumThatGuitar = 321, // You must be in an inn to strum that guitar.
YouCannotReachTheLatch = 322, // You cannot reach the latch.
RequiresABrimmingKeystone = 323, // Requires A Brimming Keystone.
@@ -1048,22 +1055,41 @@ namespace Framework.Constants
YouDoNotKnowHowToTameFeathermanes = 336, // You Do Not Know How To Tame Feathermanes.
YouMustReachArtifactKnowledgeLevel25 = 337, // You Must Reach Artifact Knowledge Level 25 To Use The Tome.
RequiresANetherPortalDisruptor = 338, // Requires A Nether Portal Disruptor.
YouAreNotTheCorrectRankToUseThisItem = 339, // You Are Not The Correct Rank To Use This Item.
MustBeStandingNearInjuredChromieInMountHyjal = 340, // Must Be Standing Near The Injured Chromie In Mount Hyjal.
TheresNothingFurtherYouCanLearn = 341, // There'S Nothing Further You Can Learn.
RemoveCannonsHeavyIronPlatingFirst = 342, // You Should Remove The Cannon'S Heavy Iron Plating First.
RemoveCannonsElectrokineticDefenseGridFirst = 343, // You Should Remove The Cannon'S Electrokinetic Defense Grid First.
RequiresTheArmoryKeyAndDendriteClusters = 344, // You Are Missing Pieces Of The Armory Key Or Do Not Have Enough Dendrite Clusters.
ThisItemRequiresBasicObliterumToUpgrade = 345, // This Item Requires Basic Obliterum To Upgrade.
ThisItemRequiresPrimalObliterumToUpgrade = 346, // This Item Requires Primal Obliterum To Upgrade.
ThisItemRequiresFlightMastersWhistle = 347, // This Item Requires A Flight Master'S Whistle.
RequiresMorrisonsMasterKey = 348, // Requires Morrison'S Master Key.
RequiresPowerThatEchoesThatOfTheAugari = 349, // Will Only Open To One Wielding The Power That Echoes That Of The Augari.
ThatPlayerHasAPendingTotemicRevival = 350, // That Player Has A Pending Totemic Revival.
YouHaveNoFireMinesDeployed = 351, // You Have No Fire Mines Deployed.
MustBeAffectedBySpiritPowder = 352, // You Must Be Affected By The Spirit Powder To Take The Phylactery.
YouAreBlockedByAStructureAboveYou = 353, // You Are Blocked By A Structure Above You.
Requires100ImpMeat = 354, // Requires 100 Imp Meat.
YouHaveNotObtainedAnyBackgroundFilters = 355, // You Have Not Obtained Any Background Filters.
NothingInterestingPostedHereRightNow = 356, // There Is Nothing Interesting Posted Here Right Now.
ParagonReputationRequiresHigherLevel = 357, // Paragon Reputation Is Not Available Until A Higher Level.
UunaIsMissing = 358, // Uuna Is Missing.
OnlyOtherHivemindMembersMayJoin = 359, // Only Other Members Of Their Hivemind May Join With Them.
NoValidFlaskPresent = 360, // No Valid Flask Present.
NoWildImpsToSacrifice = 361, // There Are No Wild Imps To Sacrifice.
YouAreCarryingTooMuchIron = 362, // You Are Carrying Too Much Iron
YouHaveNoIronToCollect = 363, // You Have No Iron To Collect
YouHaveNoWildImps = 364, // You Have No Available Wild Imps.
NeedsRepairs = 365, // Needs Repairs.
YouAreCarryingTooMuchWood = 366, // You'Re Carrying Too Much Wood.
YouAreAlreadyCarryingRepairParts = 367, // You'Re Already Carrying Repair Parts.
YouHaveNotUnlockedFlightWhistleForZone = 368, // You Have Not Unlocked The Flight Whistle For This Zone.
ThereAreNoUnlockedFlightPointsNearby = 369, // There Are No Unlocked Flight Points Nearby To Take You To.
YouMustHaveAFelguard = 370, // You Must Have A Felguard.
TargetHasNoFesteringWounds = 371, // The Target Has No Festering Wounds.
YouDontHaveDeadlyOrWoundPoisonActive = 372, // You Do Not Have Deadly Poison Or Wound Poison Active.
CannotReadSoldierDogTagWithoutHeadlampOn = 373, // You Cannot Read The Soldier'S Dog Tag Without Your Headlamp On.
}
public enum SpellMissInfo
@@ -2058,7 +2084,13 @@ namespace Framework.Constants
GiveHonor = 253,
Unk254 = 254,
LearnTransmogSet = 255,
TotalSpellEffects = 256,
Unk256 = 256,
Unk257 = 257,
ModifyKeystone = 258,
RespecAzeriteEmpoweredItem = 259,
SummonStabledPet = 260,
ScrapItem = 261,
TotalSpellEffects,
}
public enum SpellEffectHandle
@@ -2363,6 +2395,7 @@ namespace Framework.Constants
Unk147 = 147,
Unk148 = 148,
Unk149 = 149,
UnitOwnCritter = 150, // own battle pet from UNIT_FIELD_CRITTER
TotalSpellTargets
}
public enum SpellTargetSelectionCategories
+1 -1
View File
@@ -22,7 +22,7 @@ namespace Framework.Constants
{
HasLowerAnimForEnter = 0x01,
HasLowerAnimForRide = 0x02,
Unk3 = 0x04,
DisableGravity = 0x04, // Passenger will not be affected by gravity
ShouldUseVehSeatExitAnimOnVoluntaryExit = 0x08,
Unk5 = 0x10,
Unk6 = 0x20,
File diff suppressed because it is too large Load Diff
+285 -244
View File
@@ -20,12 +20,10 @@ namespace Framework.Constants
public enum ObjectFields
{
Guid = 0x000, // Size: 4, Flags: Public
Data = 0x004, // Size: 4, Flags: Public
Type = 0x008, // Size: 1, Flags: Public
Entry = 0x009, // Size: 1, Flags: Dynamic
DynamicFlags = 0x00a, // Size: 1, Flags: Dynamic, Urgent
ScaleX = 0x00b, // Size: 1, Flags: Public
End = 0x00c,
Entry = 0x004, // Size: 1, Flags: Dynamic
DynamicFlags = 0x005, // Size: 1, Flags: Dynamic, Urgent
ScaleX = 0x006, // Size: 1, Flags: Public
End = 0x007,
}
public enum ItemFields
@@ -57,8 +55,7 @@ namespace Framework.Constants
BonusListIds = 0x001, // Flags: Owner, 0x100
ArtifactPowers = 0x002, // Flags: OWNER
Gems = 0x003, // Flags: OWNER
RelicTalentData = 0x004, // Flags: OWNER
End = 0x005
End = 0x004
}
public enum ContainerFields
@@ -68,108 +65,141 @@ namespace Framework.Constants
End = ItemFields.End + 0x091
}
public enum AzeriteEmpoweredItemFields
{
Selections = ItemFields.End + 0x000, // Size: 4, Flags: PUBLIC
End = ItemFields.End + 0x004,
}
public enum AzeriteEmpoweredItemDynamicFields
{
End = ItemDynamicFields.End + 0x000,
}
public enum AzeriteItemFields
{
Xp = ItemFields.End + 0x000, // Size: 2, Flags: PUBLIC
Level = ItemFields.End + 0x002, // Size: 1, Flags: PUBLIC
AuraLevel = ItemFields.End + 0x003, // Size: 1, Flags: PUBLIC
KnowledgeLevel = ItemFields.End + 0x004, // Size: 1, Flags: OWNER
DebugKnowledgeWeek = ItemFields.End + 0x005, // Size: 1, Flags: OWNER
End = ItemFields.End + 0x006,
}
public enum AzeriteItemDynamicFields
{
End = ItemDynamicFields.End + 0x000,
}
public enum UnitFields
{
Charm = ObjectFields.End + 0x000, // Size: 4, Flags: Public
Summon = ObjectFields.End + 0x004, // Size: 4, Flags: Public
Critter = ObjectFields.End + 0x008, // Size: 4, Flags: Private
Critter = ObjectFields.End + 0x008, // Size: 4, Flags: Privaten
CharmedBy = ObjectFields.End + 0x00c, // Size: 4, Flags: Public
SummonedBy = ObjectFields.End + 0x010, // Size: 4, Flags: Public
CreatedBy = ObjectFields.End + 0x014, // Size: 4, Flags: Public
DemonCreator = ObjectFields.End + 0x018, // Size: 4, Flags: Public
Target = ObjectFields.End + 0x01c, // Size: 4, Flags: Public
BattlePetCompanionGuid = ObjectFields.End + 0x020, // Size: 4, Flags: Public
BattlePetDbId = ObjectFields.End + 0x024, // Size: 2, Flags: Public
ChannelData = ObjectFields.End + 0x026, // Size: 2, Flags: PUBLIC, URGENT
SummonedByHomeRealm = ObjectFields.End + 0x028, // Size: 1, Flags: Public
Bytes0 = ObjectFields.End + 0x029, // Size: 1, Flags: Public
DisplayPower = ObjectFields.End + 0x02a, // Size: 1, Flags: Public
OverrideDisplayPowerId = ObjectFields.End + 0x02b, // Size: 1, Flags: Public
Health = ObjectFields.End + 0x02c, // Size: 2, Flags: Public
Power = ObjectFields.End + 0x02e, // Size: 6, Flags: Public, UrgentSelfOnly
MaxHealth = ObjectFields.End + 0x034, // Size: 2, Flags: Public
MaxPower = ObjectFields.End + 0x036, // Size: 6, Flags: Public
PowerRegenFlatModifier = ObjectFields.End + 0x03c, // Size: 6, Flags: Private, Owner, UnitAll
PowerRegenInterruptedFlatModifier = ObjectFields.End + 0x042, // Size: 6, Flags: Private, Owner, UnitAll
Level = ObjectFields.End + 0x048, // Size: 1, Flags: Public
EffectiveLevel = ObjectFields.End + 0x049, // Size: 1, Flags: Public
SandboxScalingId = ObjectFields.End + 0x04a, // Size: 1, Flags: Public
ScalingLevelMin = ObjectFields.End + 0x04b, // Size: 1, Flags: Public
ScalingLevelMax = ObjectFields.End + 0x04c, // Size: 1, Flags: Public
ScalingLevelDelta = ObjectFields.End + 0x04d, // Size: 1, Flags: Public
FactionTemplate = ObjectFields.End + 0x04e, // Size: 1, Flags: Public
VirtualItemSlotId = ObjectFields.End + 0x04f, // Size: 6, Flags: Public
Flags = ObjectFields.End + 0x055, // Size: 1, Flags: Public, Urgent
Flags2 = ObjectFields.End + 0x056, // Size: 1, Flags: Public, Urgent
Flags3 = ObjectFields.End + 0x057, // Size: 1, Flags: Public, Urgent
AuraState = ObjectFields.End + 0x058, // Size: 1, Flags: Public
BaseAttackTime = ObjectFields.End + 0x059, // Size: 2, Flags: Public
RangedAttackTime = ObjectFields.End + 0x05b, // Size: 1, Flags: Private
BoundingRadius = ObjectFields.End + 0x05c, // Size: 1, Flags: Public
CombatReach = ObjectFields.End + 0x05d, // Size: 1, Flags: Public
DisplayId = ObjectFields.End + 0x05e, // Size: 1, Flags: Dynamic, Urgent
NativeDisplayId = ObjectFields.End + 0x05f, // Size: 1, Flags: Public, Urgent
MountDisplayId = ObjectFields.End + 0x060, // Size: 1, Flags: Public, Urgent
MinDamage = ObjectFields.End + 0x061, // Size: 1, Flags: Private, Owner, SpecialInfo
MaxDamage = ObjectFields.End + 0x062, // Size: 1, Flags: Private, Owner, SpecialInfo
MinOffHandDamage = ObjectFields.End + 0x063, // Size: 1, Flags: Private, Owner, SpecialInfo
MaxOffHandDamage = ObjectFields.End + 0x064, // Size: 1, Flags: Private, Owner, SpecialInfo
Bytes1 = ObjectFields.End + 0x065, // Size: 1, Flags: Public
PetNumber = ObjectFields.End + 0x066, // Size: 1, Flags: Public
PetNameTimestamp = ObjectFields.End + 0x067, // Size: 1, Flags: Public
PetExperience = ObjectFields.End + 0x068, // Size: 1, Flags: Owner
PetNextLevelExp = ObjectFields.End + 0x069, // Size: 1, Flags: Owner
ModCastSpeed = ObjectFields.End + 0x06a, // Size: 1, Flags: Public
ModCastHaste = ObjectFields.End + 0x06b, // Size: 1, Flags: Public
ModHaste = ObjectFields.End + 0x06c, // Size: 1, Flags: Public
ModRangedHaste = ObjectFields.End + 0x06d, // Size: 1, Flags: Public
ModHasteRegen = ObjectFields.End + 0x06e, // Size: 1, Flags: Public
ModTimeRate = ObjectFields.End + 0x06f, // Size: 1, Flags: Public
CreatedBySpell = ObjectFields.End + 0x070, // Size: 1, Flags: Public
NpcFlags = ObjectFields.End + 0x071, // Size: 2, Flags: Public, Dynamic
NpcEmotestate = ObjectFields.End + 0x073, // Size: 1, Flags: Public
Stat = ObjectFields.End + 0x074, // Size: 4, Flags: Private, Owner
PosStat = ObjectFields.End + 0x078, // Size: 4, Flags: Private, Owner
NegStat = ObjectFields.End + 0x07c, // Size: 4, Flags: Private, Owner
Resistances = ObjectFields.End + 0x080, // Size: 7, Flags: Private, Owner, SpecialInfo
ResistanceBuffModsPositive = ObjectFields.End + 0x087, // Size: 7, Flags: Private, Owner
ResistanceBuffModsNegative = ObjectFields.End + 0x08e, // Size: 7, Flags: Private, Owner
ModBonusArmor = ObjectFields.End + 0x095, // Size: 1, Flags: Private, Owner
BaseMana = ObjectFields.End + 0x096, // Size: 1, Flags: Public
BaseHealth = ObjectFields.End + 0x097, // Size: 1, Flags: Private, Owner
Bytes2 = ObjectFields.End + 0x098, // Size: 1, Flags: Public
AttackPower = ObjectFields.End + 0x099, // Size: 1, Flags: Private, Owner
AttackPowerModPos = ObjectFields.End + 0x09a, // Size: 1, Flags: Private, Owner
AttackPowerModNeg = ObjectFields.End + 0x09b, // Size: 1, Flags: Private, Owner
AttackPowerMultiplier = ObjectFields.End + 0x09c, // Size: 1, Flags: Private, Owner
RangedAttackPower = ObjectFields.End + 0x09d, // Size: 1, Flags: Private, Owner
RangedAttackPowerModPos = ObjectFields.End + 0x09e, // Size: 1, Flags: Private, Owner
RangedAttackPowerModNeg = ObjectFields.End + 0x09f, // Size: 1, Flags: Private, Owner
RangedAttackPowerMultiplier = ObjectFields.End + 0x0a0, // Size: 1, Flags: Private, Owner
AttackSpeedAura = ObjectFields.End + 0x0a1, // Size: 1, Flags: Private, Owner
MinRangedDamage = ObjectFields.End + 0x0a2, // Size: 1, Flags: Private, Owner
MaxRangedDamage = ObjectFields.End + 0x0a3, // Size: 1, Flags: Private, Owner
PowerCostModifier = ObjectFields.End + 0x0a4, // Size: 7, Flags: Private, Owner
PowerCostMultiplier = ObjectFields.End + 0x0ab, // Size: 7, Flags: Private, Owner
MaxHealthModifier = ObjectFields.End + 0x0b2, // Size: 1, Flags: Private, Owner
HoverHeight = ObjectFields.End + 0x0b3, // Size: 1, Flags: Public
MinItemLevelCutoff = ObjectFields.End + 0x0b4, // Size: 1, Flags: Public
MinItemLevel = ObjectFields.End + 0x0b5, // Size: 1, Flags: Public
MaxItemlevel = ObjectFields.End + 0x0b6, // Size: 1, Flags: Public
WildBattlepetLevel = ObjectFields.End + 0x0b7, // Size: 1, Flags: Public
BattlepetCompanionNameTimestamp = ObjectFields.End + 0x0b8, // Size: 1, Flags: Public
InteractSpellid = ObjectFields.End + 0x0b9, // Size: 1, Flags: Public
StateSpellVisualId = ObjectFields.End + 0x0ba, // Size: 1, Flags: Dynamic, Urgent
StateAnimId = ObjectFields.End + 0x0bb, // Size: 1, Flags: Dynamic, Urgent
StateAnimKitId = ObjectFields.End + 0x0bc, // Size: 1, Flags: Dynamic, Urgent
StateWorldEffectId = ObjectFields.End + 0x0bd, // Size: 4, Flags: Dynamic, Urgent
ScaleDuration = ObjectFields.End + 0x0c1, // Size: 1, Flags: Public
LooksLikeMountId = ObjectFields.End + 0x0c2, // Size: 1, Flags: Public
LooksLikeCreatureId = ObjectFields.End + 0x0c3, // Size: 1, Flags: Public
LookAtControllerId = ObjectFields.End + 0x0c4, // Size: 1, Flags: Public
LookAtControllerTarget = ObjectFields.End + 0x0c5, // Size: 4, Flags: Public
End = ObjectFields.End + 0x0c9
LookAtControllerTarget = ObjectFields.End + 0x01c, // Size: 4, Flags: Public
Target = ObjectFields.End + 0x020, // Size: 4, Flags: Public
BattlePetCompanionGuid = ObjectFields.End + 0x024, // Size: 4, Flags: Public
BattlePetDbId = ObjectFields.End + 0x028, // Size: 2, Flags: Public
ChannelData = ObjectFields.End + 0x02a, // Size: 2, Flags: Public, Urgent
SummonedByHomeRealm = ObjectFields.End + 0x02c, // Size: 1, Flags: Public
Bytes0 = ObjectFields.End + 0x02d, // Size: 1, Flags: Public
DisplayPower = ObjectFields.End + 0x02e, // Size: 1, Flags: Public
OverrideDisplayPowerId = ObjectFields.End + 0x02f, // Size: 1, Flags: Public
Health = ObjectFields.End + 0x030, // Size: 2, Flags: Public
Power = ObjectFields.End + 0x032, // Size: 6, Flags: Public, UrgentSelfOnly
MaxHealth = ObjectFields.End + 0x038, // Size: 2, Flags: Public
MaxPower = ObjectFields.End + 0x03a, // Size: 6, Flags: Public
PowerRegenFlatModifier = ObjectFields.End + 0x040, // Size: 6, Flags: Private, Owner, UnitAll
PowerRegenInterruptedFlatModifier = ObjectFields.End + 0x046, // Size: 6, Flags: Private, Owner, UnitAll
Level = ObjectFields.End + 0x04c, // Size: 1, Flags: Public
EffectiveLevel = ObjectFields.End + 0x04d, // Size: 1, Flags: Public
ContentTuningId = ObjectFields.End + 0x04e, // Size: 1, Flags: Public
ScalingLevelMin = ObjectFields.End + 0x04f, // Size: 1, Flags: Public
ScalingLevelMax = ObjectFields.End + 0x050, // Size: 1, Flags: Public
ScalingLevelDelta = ObjectFields.End + 0x051, // Size: 1, Flags: Public
ScalingFactionGroup = ObjectFields.End + 0x052, // Size: 1, Flags: Public
ScalingHealthItemLevelCurveId = ObjectFields.End + 0x053, // Size: 1, Flags: Public
ScalingDamageItemLevelCurveId = ObjectFields.End + 0x054, // Size: 1, Flags: Public
FactionTemplate = ObjectFields.End + 0x055, // Size: 1, Flags: Public
VirtualItemSlotId = ObjectFields.End + 0x056, // Size: 6, Flags: Public
Flags = ObjectFields.End + 0x05c, // Size: 1, Flags: Public, Urgent
Flags2 = ObjectFields.End + 0x05d, // Size: 1, Flags: Public, Urgent
Flags3 = ObjectFields.End + 0x05e, // Size: 1, Flags: Public, UrgentScalingLevelDelta
AuraState = ObjectFields.End + 0x05f, // Size: 1, Flags: Public
BaseAttackTime = ObjectFields.End + 0x060, // Size: 2, Flags: Public
RangedAttackTime = ObjectFields.End + 0x062, // Size: 1, Flags: Private
BoundingRadius = ObjectFields.End + 0x063, // Size: 1, Flags: Public
CombatReach = ObjectFields.End + 0x064, // Size: 1, Flags: Public
DisplayId = ObjectFields.End + 0x065, // Size: 1, Flags: Dynamic, Urgent
DisplayScale = ObjectFields.End + 0x066, // Size: 1, Flags: Dynamic, Urgent
NativeDisplayId = ObjectFields.End + 0x067, // Size: 1, Flags: Public, Urgent
NativeXDisplayScale = ObjectFields.End + 0x068, // Size: 1, Flags: Public, Urgent
MountDisplayId = ObjectFields.End + 0x069, // Size: 1, Flags: Public, Urgent
MinDamage = ObjectFields.End + 0x06a, // Size: 1, Flags: Private, Owner, SpecialInfo
MaxDamage = ObjectFields.End + 0x06b, // Size: 1, Flags: Private, Owner, SpecialInfo
MinOffHandDamage = ObjectFields.End + 0x06c, // Size: 1, Flags: Private, Owner, SpecialInfo
MaxOffHandDamage = ObjectFields.End + 0x06d, // Size: 1, Flags: Private, Owner, SpecialInfo
Bytes1 = ObjectFields.End + 0x06e, // Size: 1, Flags: Public
PetNumber = ObjectFields.End + 0x06f, // Size: 1, Flags: Public
PetNameTimestamp = ObjectFields.End + 0x070, // Size: 1, Flags: Public
PetExperience = ObjectFields.End + 0x071, // Size: 1, Flags: Owner
PetNextLevelExp = ObjectFields.End + 0x072, // Size: 1, Flags: Owner
ModCastSpeed = ObjectFields.End + 0x073, // Size: 1, Flags: Public
ModCastHaste = ObjectFields.End + 0x074, // Size: 1, Flags: Public
ModHaste = ObjectFields.End + 0x075, // Size: 1, Flags: Public
ModRangedHaste = ObjectFields.End + 0x076, // Size: 1, Flags: Public
ModHasteRegen = ObjectFields.End + 0x077, // Size: 1, Flags: Public
ModTimeRate = ObjectFields.End + 0x078, // Size: 1, Flags: Public
CreatedBySpell = ObjectFields.End + 0x079, // Size: 1, Flags: Public
NpcFlags = ObjectFields.End + 0x07a, // Size: 2, Flags: Public, Dynamic
NpcEmotestate = ObjectFields.End + 0x07c, // Size: 1, Flags: Public
Stat = ObjectFields.End + 0x07d, // Size: 4, Flags: Private, Owner
PosStat = ObjectFields.End + 0x081, // Size: 4, Flags: Private, Owner
NegStat = ObjectFields.End + 0x085, // Size: 4, Flags: Private, Owner
Resistances = ObjectFields.End + 0x089, // Size: 7, Flags: Private, Owner, SpecialInfo
BonusResistanceMods = ObjectFields.End + 0x090, // Size: 7, Flags: Private, Owner
BaseMana = ObjectFields.End + 0x097, // Size: 1, Flags: Public
BaseHealth = ObjectFields.End + 0x098, // Size: 1, Flags: Private, Owner
Bytes2 = ObjectFields.End + 0x099, // Size: 1, Flags: Public
AttackPower = ObjectFields.End + 0x09a, // Size: 1, Flags: Private, Owner
AttackPowerModPos = ObjectFields.End + 0x09b, // Size: 1, Flags: Private, Owner
AttackPowerModNeg = ObjectFields.End + 0x09c, // Size: 1, Flags: Private, Owner
AttackPowerMultiplier = ObjectFields.End + 0x09d, // Size: 1, Flags: Private, Owner
RangedAttackPower = ObjectFields.End + 0x09e, // Size: 1, Flags: Private, Owner
RangedAttackPowerModPos = ObjectFields.End + 0x09f, // Size: 1, Flags: Private, Owner
RangedAttackPowerModNeg = ObjectFields.End + 0x0a0, // Size: 1, Flags: Private, Owner
RangedAttackPowerMultiplier = ObjectFields.End + 0x0a1, // Size: 1, Flags: Private, Owner
MainHandWeaponAttackPower = ObjectFields.End + 0x0a2, // Size: 1, Flags: Private, Owner
OffHandWeaponAttackPower = ObjectFields.End + 0x0a3, // Size: 1, Flags: Private, Owner
RangedHandWeaponAttackPower = ObjectFields.End + 0x0a4, // Size: 1, Flags: Private, Owner
AttackSpeedAura = ObjectFields.End + 0x0a5, // Size: 1, Flags: Private, Owner
Lifesteal = ObjectFields.End + 0x0a6, // Size: 1, Flags: Private, Owner
MinRangedDamage = ObjectFields.End + 0x0a7, // Size: 1, Flags: Private, Owner
MaxRangedDamage = ObjectFields.End + 0x0a8, // Size: 1, Flags: Private, Owner
PowerCostModifier = ObjectFields.End + 0x0a9, // Size: 7, Flags: Private, Owner
PowerCostMultiplier = ObjectFields.End + 0x0b0, // Size: 7, Flags: Private, Owner
MaxHealthModifier = ObjectFields.End + 0x0b7, // Size: 1, Flags: Private, Owner
HoverHeight = ObjectFields.End + 0x0b8, // Size: 1, Flags: Public
MinItemLevelCutoff = ObjectFields.End + 0x0b9, // Size: 1, Flags: Public
MinItemLevel = ObjectFields.End + 0x0ba, // Size: 1, Flags: Public
MaxItemlevel = ObjectFields.End + 0x0bb, // Size: 1, Flags: Public
WildBattlepetLevel = ObjectFields.End + 0x0bc, // Size: 1, Flags: Public
BattlepetCompanionNameTimestamp = ObjectFields.End + 0x0bd, // Size: 1, Flags: Public
InteractSpellid = ObjectFields.End + 0x0be, // Size: 1, Flags: Public
StateSpellVisualId = ObjectFields.End + 0x0bf, // Size: 1, Flags: Dynamic, Urgent
StateAnimId = ObjectFields.End + 0x0c0, // Size: 1, Flags: Dynamic, Urgent
StateAnimKitId = ObjectFields.End + 0x0c1, // Size: 1, Flags: Dynamic, Urgent
StateWorldEffectId = ObjectFields.End + 0x0c2, // Size: 4, Flags: Dynamic, Urgent
ScaleDuration = ObjectFields.End + 0x0c6, // Size: 1, Flags: Public
LooksLikeMountId = ObjectFields.End + 0x0c7, // Size: 1, Flags: Public
LooksLikeCreatureId = ObjectFields.End + 0x0c8, // Size: 1, Flags: Public
LookAtControllerId = ObjectFields.End + 0x0c9, // Size: 1, Flags: Public
GuildGuid = ObjectFields.End + 0x0ca, // Size: 4, Flags: Public
End = ObjectFields.End + 0x0ce
}
public enum UnitDynamicFields
@@ -196,148 +226,158 @@ namespace Framework.Constants
Bytes4 = UnitFields.End + 0x014, // Size: 1, Flags: Public
DuelTeam = UnitFields.End + 0x015, // Size: 1, Flags: Public
GuildTimestamp = UnitFields.End + 0x016, // Size: 1, Flags: Public
QuestLog = UnitFields.End + 0x017, // Size: 800, Flags: PartyMember
VisibleItem = UnitFields.End + 0x337, // Size: 38, Flags: Public
ChosenTitle = UnitFields.End + 0x35d, // Size: 1, Flags: Public
FakeInebriation = UnitFields.End + 0x35e, // Size: 1, Flags: Public
VirtualRealm = UnitFields.End + 0x35f, // Size: 1, Flags: Public
CurrentSpecId = UnitFields.End + 0x360, // Size: 1, Flags: Public
TaxiMountAnimKitId = UnitFields.End + 0x361, // Size: 1, Flags: Public
AvgItemLevel = UnitFields.End + 0x362, // Size: 4, Flags: Public
CurrentBattlePetBreedQuality = UnitFields.End + 0x366, // Size: 1, Flags: Public
Prestige = UnitFields.End + 0x367, // Size: 1, Flags: Public
HonorLevel = UnitFields.End + 0x368, // Size: 1, Flags: Public
InvSlotHead = UnitFields.End + 0x369, // Size: 780, Flags: Private
EndNotSelf = UnitFields.End + 0x369,
Farsight = UnitFields.End + 0x675, // Size: 4, Flags: Private
SummonedBattlePetId = UnitFields.End + 0x679, // Size: 4, Flags: Private
KnownTitles = UnitFields.End + 0x67d, // Size: 12, Flags: Private
Coinage = UnitFields.End + 0x689, // Size: 2, Flags: Private
Xp = UnitFields.End + 0x68b, // Size: 1, Flags: Private
NextLevelXp = UnitFields.End + 0x68c, // Size: 1, Flags: Private
TrialXp = UnitFields.End + 0x68d, // Size: 1, Flags: Private
SkillLineId = UnitFields.End + 0x68e, // Size: 448, Flags: Private
SkillLineStep = UnitFields.End + 0x6ce,
SkillLineRank = UnitFields.End + 0x70e,
SkillLineSubRank = UnitFields.End + 0x74e,
SkillLineMaxRank = UnitFields.End + 0x78e,
SkillLineTempBonus = UnitFields.End + 0x7ce,
SkillLinePermBonus = UnitFields.End + 0x80e,
CharacterPoints = UnitFields.End + 0x84e, // Size: 1, Flags: Private
MaxTalentTiers = UnitFields.End + 0x84f, // Size: 1, Flags: Private
TrackCreatures = UnitFields.End + 0x850, // Size: 1, Flags: Private
TrackResources = UnitFields.End + 0x851, // Size: 1, Flags: Private
Expertise = UnitFields.End + 0x852, // Size: 1, Flags: Private
OffhandExpertise = UnitFields.End + 0x853, // Size: 1, Flags: Private
RangedExpertise = UnitFields.End + 0x854, // Size: 1, Flags: Private
CombatRatingExpertise = UnitFields.End + 0x855, // Size: 1, Flags: Private
BlockPercentage = UnitFields.End + 0x856, // Size: 1, Flags: Private
DodgePercentage = UnitFields.End + 0x857, // Size: 1, Flags: Private
DodgePercentageFromAttribute = UnitFields.End + 0x858, // Size: 1, Flags: Private
ParryPercentage = UnitFields.End + 0x859, // Size: 1, Flags: Private
ParryPercentageFromAttribute = UnitFields.End + 0x85a, // Size: 1, Flags: Private
CritPercentage = UnitFields.End + 0x85b, // Size: 1, Flags: Private
RangedCritPercentage = UnitFields.End + 0x85c, // Size: 1, Flags: Private
OffhandCritPercentage = UnitFields.End + 0x85d, // Size: 1, Flags: Private
SpellCritPercentage1 = UnitFields.End + 0x85e, // Size: 1, Flags: Private
ShieldBlock = UnitFields.End + 0x85f, // Size: 1, Flags: Private
ShieldBlockCritPercentage = UnitFields.End + 0x860, // Size: 1, Flags: Private
Mastery = UnitFields.End + 0x861, // Size: 1, Flags: Private
Speed = UnitFields.End + 0x862, // Size: 1, Flags: Private
Lifesteal = UnitFields.End + 0x863, // Size: 1, Flags: Private
Avoidance = UnitFields.End + 0x864, // Size: 1, Flags: Private
Sturdiness = UnitFields.End + 0x865, // Size: 1, Flags: Private
Versatility = UnitFields.End + 0x866, // Size: 1, Flags: Private
VersatilityBonus = UnitFields.End + 0x867, // Size: 1, Flags: Private
PvpPowerDamage = UnitFields.End + 0x868, // Size: 1, Flags: Private
PvpPowerHealing = UnitFields.End + 0x869, // Size: 1, Flags: Private
ExploredZones1 = UnitFields.End + 0x86a, // Size: 320, Flags: Private
RestInfo = UnitFields.End + 0x9aa, // Size: 4, Flags: Private
ModDamageDonePos = UnitFields.End + 0x9ae, // Size: 7, Flags: Private
ModDamageDoneNeg = UnitFields.End + 0x9b5, // Size: 7, Flags: Private
ModDamageDonePct = UnitFields.End + 0x9bc, // Size: 7, Flags: Private
ModHealingDonePos = UnitFields.End + 0x9c3, // Size: 1, Flags: Private
ModHealingPct = UnitFields.End + 0x9c4, // Size: 1, Flags: Private
ModHealingDonePct = UnitFields.End + 0x9c5, // Size: 1, Flags: Private
ModPeriodicHealingDonePercent = UnitFields.End + 0x9c6, // Size: 1, Flags: Private
WeaponDmgMultipliers = UnitFields.End + 0x9c7, // Size: 3, Flags: Private
WeaponAtkSpeedMultipliers = UnitFields.End + 0x9ca, // Size: 3, Flags: Private
ModSpellPowerPct = UnitFields.End + 0x9cd, // Size: 1, Flags: Private
ModResiliencePercent = UnitFields.End + 0x9ce, // Size: 1, Flags: Private
OverrideSpellPowerByApPct = UnitFields.End + 0x9cf, // Size: 1, Flags: Private
OverrideApBySpellPowerPercent = UnitFields.End + 0x9d0, // Size: 1, Flags: Private
ModTargetResistance = UnitFields.End + 0x9d1, // Size: 1, Flags: Private
ModTargetPhysicalResistance = UnitFields.End + 0x9d2, // Size: 1, Flags: Private
LocalFlags = UnitFields.End + 0x9d3, // Size: 1, Flags: Private
FieldBytes = UnitFields.End + 0x9d4, // Size: 1, Flags: Private
PvpMedals = UnitFields.End + 0x9d5, // Size: 1, Flags: Private
BuyBackPrice1 = UnitFields.End + 0x9d6, // Size: 12, Flags: Private
BuyBackTimestamp1 = UnitFields.End + 0x9e2, // Size: 12, Flags: Private
Kills = UnitFields.End + 0x9ee, // Size: 1, Flags: Private
LifetimeHonorableKills = UnitFields.End + 0x9ef, // Size: 1, Flags: Private
WatchedFactionIndex = UnitFields.End + 0x9f0, // Size: 1, Flags: Private
CombatRating1 = UnitFields.End + 0x9f1, // Size: 32, Flags: Private
ArenaTeamInfo11 = UnitFields.End + 0xa11, // Size: 42, Flags: Private
MaxLevel = UnitFields.End + 0xa3b, // Size: 1, Flags: Private
ScalingLevelDelta = UnitFields.End + 0xa3c, // Size: 1, Flags: Private
MaxCreatureScalingLevel = UnitFields.End + 0xa3d, // Size: 1, Flags: Private
NoReagentCost1 = UnitFields.End + 0xa3e, // Size: 4, Flags: Private
PetSpellPower = UnitFields.End + 0xa42, // Size: 1, Flags: Private
Researching1 = UnitFields.End + 0xa43, // Size: 10, Flags: Private
ProfessionSkillLine1 = UnitFields.End + 0xa4d, // Size: 2, Flags: Private
UiHitModifier = UnitFields.End + 0xa4f, // Size: 1, Flags: Private
UiSpellHitModifier = UnitFields.End + 0xa50, // Size: 1, Flags: Private
HomeRealmTimeOffset = UnitFields.End + 0xa51, // Size: 1, Flags: Private
ModPetHaste = UnitFields.End + 0xa52, // Size: 1, Flags: Private
FieldBytes2 = UnitFields.End + 0xa53, // Size: 1, Flags: Private
FieldBytes3 = UnitFields.End + 0xa54, // Size: 1, Flags: Private, UrgentSelfOnly
LfgBonusFactionId = UnitFields.End + 0xa55, // Size: 1, Flags: Private
LootSpecId = UnitFields.End + 0xa56, // Size: 1, Flags: Private
OverrideZonePvpType = UnitFields.End + 0xa57, // Size: 1, Flags: Private, UrgentSelfOnly
BagSlotFlags = UnitFields.End + 0xa58, // Size: 4, Flags: Private
BankBagSlotFlags = UnitFields.End + 0xa5c, // Size: 7, Flags: Private
InsertItemsLeftToRight = UnitFields.End + 0xa63, // Size: 1, Flags: Private
QuestCompleted = UnitFields.End + 0xa64, // Size: 1750, Flags: Private
Honor = UnitFields.End + 0x113a, // Size: 1, Flags: Private
HonorNextLevel = UnitFields.End + 0x113b, // Size: 1, Flags: Private
End = UnitFields.End + 0x113c,
QuestLog = UnitFields.End + 0x017, // Size: 1600, Flags: PartyMember
VisibleItem = UnitFields.End + 0x657, // Size: 38, Flags: Public
ChosenTitle = UnitFields.End + 0x67d, // Size: 1, Flags: Public
FakeInebriation = UnitFields.End + 0x67e, // Size: 1, Flags: Public
VirtualRealm = UnitFields.End + 0x67f, // Size: 1, Flags: Public
CurrentSpecId = UnitFields.End + 0x680, // Size: 1, Flags: Public
TaxiMountAnimKitId = UnitFields.End + 0x681, // Size: 1, Flags: Public
AvgItemLevel = UnitFields.End + 0x682, // Size: 4, Flags: Public
CurrentBattlePetBreedQuality = UnitFields.End + 0x686, // Size: 1, Flags: Public
HonorLevel = UnitFields.End + 0x687, // Size: 1, Flags: Public
End = UnitFields.End + 0x688
}
public enum PlayerDynamicFields
{
ReserachSite = UnitDynamicFields.End + 0x000, // Flags: Private
ResearchSiteProgress = UnitDynamicFields.End + 0x001, // Flags: Private
DailyQuests = UnitDynamicFields.End + 0x002, // Flags: Private
AvailableQuestLineXQuestId = UnitDynamicFields.End + 0x003, // Flags: Private
Heirlooms = UnitDynamicFields.End + 0x004, // Flags: Private
HeirloomsFlags = UnitDynamicFields.End + 0x005, // Flags: PRIVATE
Toys = UnitDynamicFields.End + 0x006, // Flags: Private
Transmog = UnitDynamicFields.End + 0x007, // Flags: PRIVATE
ConditionalTransmog = UnitDynamicFields.End + 0x008, // Flags: PRIVATE
SelfResSpells = UnitDynamicFields.End + 0x009, // Flags: Private
CharacterRestrictions = UnitDynamicFields.End + 0x00a, // Flags: Private
SpellPctModByLabel = UnitDynamicFields.End + 0x00b, // Flags: Private
SpellFlatModByLabel = UnitDynamicFields.End + 0x00c, // Flags: Private
ArenaCooldowns = UnitDynamicFields.End + 0x00d, // Flags: Public
End = UnitDynamicFields.End + 0x00e,
ArenaCooldowns = UnitDynamicFields.End + 0x000, // Flags: Public
End = UnitDynamicFields.End + 0x001,
}
public enum ActivePlayerFields
{
InvSlotHead = PlayerFields.End + 0x000, // Size: 780, Flags: Public
Farsight = PlayerFields.End + 0x30c, // Size: 4, Flags: Public
SummonedBattlePetId = PlayerFields.End + 0x310, // Size: 4, Flags: Public
KnownTitles = PlayerFields.End + 0x314, // Size: 12, Flags: Public
Coinage = PlayerFields.End + 0x320, // Size: 2, Flags: Public
Xp = PlayerFields.End + 0x322, // Size: 1, Flags: Public
NextLevelXp = PlayerFields.End + 0x323, // Size: 1, Flags: Public
TrialXp = PlayerFields.End + 0x324, // Size: 1, Flags: Public
SkillLineId = PlayerFields.End + 0x325, // Size: 128, Flags: Public
SkillLineStep = PlayerFields.End + 0x3a5, // Size: 128, Flags: Public
SkillLineRank = PlayerFields.End + 0x425, // Size: 128, Flags: Public
SkillLineStartRank = PlayerFields.End + 0x4a5, // Size: 128, Flags: Public
SkillLineMaxRank = PlayerFields.End + 0x525, // Size: 128, Flags: Public
SkillLineTempBonus = PlayerFields.End + 0x5a5, // Size: 128, Flags: Public
SkillLinePermBonus = PlayerFields.End + 0x625, // Size: 128, Flags: Public
CharacterPoints = PlayerFields.End + 0x6a5, // Size: 1, Flags: Public
MaxTalentTiers = PlayerFields.End + 0x6a6, // Size: 1, Flags: Public
TrackCreatures = PlayerFields.End + 0x6a7, // Size: 1, Flags: Public
TrackResources = PlayerFields.End + 0x6a8, // Size: 2, Flags: Public
Expertise = PlayerFields.End + 0x6aa, // Size: 1, Flags: Public
OffhandExpertise = PlayerFields.End + 0x6ab, // Size: 1, Flags: Public
RangedExpertise = PlayerFields.End + 0x6ac, // Size: 1, Flags: Public
CombatRatingExpertise = PlayerFields.End + 0x6ad, // Size: 1, Flags: Public
BlockPercentage = PlayerFields.End + 0x6ae, // Size: 1, Flags: Public
DodgePercentage = PlayerFields.End + 0x6af, // Size: 1, Flags: Public
DodgePercentageFromAttribute = PlayerFields.End + 0x6b0, // Size: 1, Flags: Public
ParryPercentage = PlayerFields.End + 0x6b1, // Size: 1, Flags: Public
ParryPercentageFromAttribute = PlayerFields.End + 0x6b2, // Size: 1, Flags: Public
CritPercentage = PlayerFields.End + 0x6b3, // Size: 1, Flags: Public
RangedCritPercentage = PlayerFields.End + 0x6b4, // Size: 1, Flags: Public
OffhandCritPercentage = PlayerFields.End + 0x6b5, // Size: 1, Flags: Public
SpellCritPercentage1 = PlayerFields.End + 0x6b6, // Size: 1, Flags: Public
ShieldBlock = PlayerFields.End + 0x6b7, // Size: 1, Flags: Public
ShieldBlockCritPercentage = PlayerFields.End + 0x6b8, // Size: 1, Flags: Public
Mastery = PlayerFields.End + 0x6b9, // Size: 1, Flags: Public
Speed = PlayerFields.End + 0x6ba, // Size: 1, Flags: Public
Avoidance = PlayerFields.End + 0x6bb, // Size: 1, Flags: Public
Sturdiness = PlayerFields.End + 0x6bc, // Size: 1, Flags: Public
Versatility = PlayerFields.End + 0x6bd, // Size: 1, Flags: Public
VersatilityBonus = PlayerFields.End + 0x6be, // Size: 1, Flags: Public
PvpPowerDamage = PlayerFields.End + 0x6bf, // Size: 1, Flags: Public
PvpPowerHealing = PlayerFields.End + 0x6c0, // Size: 1, Flags: Public
ExploredZones = PlayerFields.End + 0x6c1, // Size: 320, Flags: Public
RestInfo = PlayerFields.End + 0x801, // Size: 4, Flags: Public
ModDamageDonePos = PlayerFields.End + 0x805, // Size: 7, Flags: Public
ModDamageDoneNeg = PlayerFields.End + 0x80c, // Size: 7, Flags: Public
ModDamageDonePct = PlayerFields.End + 0x813, // Size: 7, Flags: Public
ModHealingDonePos = PlayerFields.End + 0x81a, // Size: 1, Flags: Public
ModHealingPct = PlayerFields.End + 0x81b, // Size: 1, Flags: Public
ModHealingDonePct = PlayerFields.End + 0x81c, // Size: 1, Flags: Public
ModPeriodicHealingDonePercent = PlayerFields.End + 0x81d, // Size: 1, Flags: Public
WeaponDmgMultipliers = PlayerFields.End + 0x81e, // Size: 3, Flags: Public
WeaponAtkSpeedMultipliers = PlayerFields.End + 0x821, // Size: 3, Flags: Public
ModSpellPowerPct = PlayerFields.End + 0x824, // Size: 1, Flags: Public
ModResiliencePercent = PlayerFields.End + 0x825, // Size: 1, Flags: Public
OverrideSpellPowerByApPct = PlayerFields.End + 0x826, // Size: 1, Flags: Public
OverrideApBySpellPowerPercent = PlayerFields.End + 0x827, // Size: 1, Flags: Public
ModTargetResistance = PlayerFields.End + 0x828, // Size: 1, Flags: Public
ModTargetPhysicalResistance = PlayerFields.End + 0x829, // Size: 1, Flags: Public
LocalFlags = PlayerFields.End + 0x82a, // Size: 1, Flags: Public
Bytes = PlayerFields.End + 0x82b, // Size: 1, Flags: Public
PvpMedals = PlayerFields.End + 0x82c, // Size: 1, Flags: Public
BuyBackPrice = PlayerFields.End + 0x82d, // Size: 12, Flags: Public
BuyBackTimestamp = PlayerFields.End + 0x839, // Size: 12, Flags: Public
Kills = PlayerFields.End + 0x845, // Size: 1, Flags: Public
LifetimeHonorableKills = PlayerFields.End + 0x846, // Size: 1, Flags: Public
WatchedFactionIndex = PlayerFields.End + 0x847, // Size: 1, Flags: Public
CombatRating = PlayerFields.End + 0x848, // Size: 32, Flags: Public
ArenaTeamInfo = PlayerFields.End + 0x868, // Size: 54, Flags: Public
MaxLevel = PlayerFields.End + 0x89e, // Size: 1, Flags: Public
ScalingPlayerLevelDelta = PlayerFields.End + 0x89f, // Size: 1, Flags: Public
MaxCreatureScalingLevel = PlayerFields.End + 0x8a0, // Size: 1, Flags: Public
NoReagentCost = PlayerFields.End + 0x8a1, // Size: 4, Flags: Public
PetSpellPower = PlayerFields.End + 0x8a5, // Size: 1, Flags: Public
ProfessionSkillLine = PlayerFields.End + 0x8a6, // Size: 2, Flags: Public
UiHitModifier = PlayerFields.End + 0x8a8, // Size: 1, Flags: Public
UiSpellHitModifier = PlayerFields.End + 0x8a9, // Size: 1, Flags: Public
HomeRealmTimeOffset = PlayerFields.End + 0x8aa, // Size: 1, Flags: Public
ModPetHaste = PlayerFields.End + 0x8ab, // Size: 1, Flags: Public
Bytes2 = PlayerFields.End + 0x8ac, // Size: 1, Flags: Public
Bytes3 = PlayerFields.End + 0x8ad, // Size: 1, Flags: Public, UrgentSelfOnly
LfgBonusFactionId = PlayerFields.End + 0x8ae, // Size: 1, Flags: Public
LootSpecId = PlayerFields.End + 0x8af, // Size: 1, Flags: Public
OverrideZonePvpType = PlayerFields.End + 0x8b0, // Size: 1, Flags: Public, UrgentSelfOnly
BagSlotFlags = PlayerFields.End + 0x8b1, // Size: 4, Flags: Public
BankBagSlotFlags = PlayerFields.End + 0x8b5, // Size: 7, Flags: Public
InsertItemsLeftToRight = PlayerFields.End + 0x8bc, // Size: 1, Flags: Public
QuestCompleted = PlayerFields.End + 0x8bd, // Size: 1750, Flags: Public
Honor = PlayerFields.End + 0xf93, // Size: 1, Flags: Public
HonorNextLevel = PlayerFields.End + 0xf94, // Size: 1, Flags: Public
PvpTierMaxFromWins = PlayerFields.End + 0xf95, // Size: 1, Flags: Public
PvpLastWeeksTierMaxFromWins = PlayerFields.End + 0xf96, // Size: 1, Flags: Public
End = PlayerFields.End + 0xf97,
}
public enum ActivePlayerDynamicFields
{
ReserachSite = PlayerDynamicFields.End + 0x000, // Flags: Public
ResearchSiteProgress = PlayerDynamicFields.End + 0x001, // Flags: Public
DailyQuests = PlayerDynamicFields.End + 0x002, // Flags: Public
AvailableQuestLineXQuestId = PlayerDynamicFields.End + 0x003, // Flags: Public
Heirlooms = PlayerDynamicFields.End + 0x005, // Flags: Public
HeirloomFlags = PlayerDynamicFields.End + 0x006, // Flags: Public
Toys = PlayerDynamicFields.End + 0x007, // Flags: Public
Transmog = PlayerDynamicFields.End + 0x008, // Flags: Public
ConditionalTransmog = PlayerDynamicFields.End + 0x009, // Flags: Public
SelfResSpells = PlayerDynamicFields.End + 0x00a, // Flags: Public
CharacterRestrictions = PlayerDynamicFields.End + 0x00b, // Flags: Public
SpellPctModByLabel = PlayerDynamicFields.End + 0x00c, // Flags: Public
SpellFlatModByLabel = PlayerDynamicFields.End + 0x00d, // Flags: Public
Reserach = PlayerDynamicFields.End + 0x00e, // Flags: Public
End = PlayerDynamicFields.End + 0x00f,
}
public enum GameObjectFields
{
CreatedBy = ObjectFields.End + 0x000, // Size: 4, Flags: Public
DisplayId = ObjectFields.End + 0x004, // Size: 1, Flags: Dynamic, Urgent
Flags = ObjectFields.End + 0x005, // Size: 1, Flags: Public, Urgent
ParentRotation = ObjectFields.End + 0x006, // Size: 4, Flags: Public
Faction = ObjectFields.End + 0x00a, // Size: 1, Flags: Public
Level = ObjectFields.End + 0x00b, // Size: 1, Flags: Public
Bytes1 = ObjectFields.End + 0x00c, // Size: 1, Flags: Public, Urgent
SpellVisualId = ObjectFields.End + 0x00d, // Size: 1, Flags: Public, Dynamic, Urgent
StateSpellVisualId = ObjectFields.End + 0x00e, // Size: 1, Flags: Dynamic, Urgent
StateAnumId = ObjectFields.End + 0x00f, // Size: 1, Flags: Dynamic, Urgent
StateAnimKitId = ObjectFields.End + 0x010, // Size: 1, Flags: Dynamic, Urgent
StateWorldEffectId = ObjectFields.End + 0x011, // Size: 4, Flags: Dynamic, Urgent
End = ObjectFields.End + 0x015
GuildGuid = ObjectFields.End + 0x004, // Size: 4, Flags: Public
DisplayId = ObjectFields.End + 0x008, // Size: 1, Flags: Dynamic, Urgent
Flags = ObjectFields.End + 0x009, // Size: 1, Flags: Public, Urgent
ParentRotation = ObjectFields.End + 0x00a, // Size: 4, Flags: Public
Faction = ObjectFields.End + 0x00e, // Size: 1, Flags: Public
Level = ObjectFields.End + 0x00f, // Size: 1, Flags: Public
Bytes1 = ObjectFields.End + 0x010, // Size: 1, Flags: Public, Urgent
SpellVisualId = ObjectFields.End + 0x011, // Size: 1, Flags: Public, Dynamic, Urgent
StateSpellVisualId = ObjectFields.End + 0x012, // Size: 1, Flags: Dynamic, Urgent
StateAnimId = ObjectFields.End + 0x013, // Size: 1, Flags: Dynamic, Urgent
StateAnimKitId = ObjectFields.End + 0x014, // Size: 1, Flags: Dynamic, Urgent
StateWorldEffectId = ObjectFields.End + 0x015, // Size: 4, Flags: Dynamic, Urgent
CustomParam = ObjectFields.End + 0x019, // Size: 1, Flags: Public, Urgent
End = ObjectFields.End + 0x01a,
}
public enum GameObjectDynamicFields
@@ -361,15 +401,16 @@ namespace Framework.Constants
{
Owner = ObjectFields.End + 0x000, // Size: 4, Flags: Public
Party = ObjectFields.End + 0x004, // Size: 4, Flags: Public
DisplayId = ObjectFields.End + 0x008, // Size: 1, Flags: Public
Item = ObjectFields.End + 0x009, // Size: 19, Flags: Public
Bytes1 = ObjectFields.End + 0x01c, // Size: 1, Flags: Public
Bytes2 = ObjectFields.End + 0x01d, // Size: 1, Flags: Public
Flags = ObjectFields.End + 0x01e, // Size: 1, Flags: Public
DynamicFlags = ObjectFields.End + 0x01f, // Size: 1, Flags: Dynamic
FactionTemplate = ObjectFields.End + 0x020, // Size: 1, Flags: Public
CustomDisplayOption = ObjectFields.End + 0x021, // Size: 1, Flags: PUBLIC
End = ObjectFields.End + 0x022
GuildGuid = ObjectFields.End + 0x008, // Size: 4, Flags: PUBLIC
DisplayId = ObjectFields.End + 0x00C, // Size: 1, Flags: Public
Item = ObjectFields.End + 0x00D, // Size: 19, Flags: Public
Bytes1 = ObjectFields.End + 0x020, // Size: 1, Flags: Public
Bytes2 = ObjectFields.End + 0x021, // Size: 1, Flags: Public
Flags = ObjectFields.End + 0x022, // Size: 1, Flags: Public
DynamicFlags = ObjectFields.End + 0x023, // Size: 1, Flags: Dynamic
FactionTemplate = ObjectFields.End + 0x024, // Size: 1, Flags: Public
CustomDisplayOption = ObjectFields.End + 0x025, // Size: 1, Flags: PUBLIC
End = ObjectFields.End + 0x026
}
public enum AreaTriggerFields
@@ -82,7 +82,7 @@ namespace Framework.Database
"resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, " +
"totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, " +
"health, power1, power2, power3, power4, power5, power6, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, grantableLevels, raidDifficulty, legacyRaidDifficulty, fishingSteps, " +
"honor, honorLevel, prestigeLevel, honorRestState, honorRestBonus " +
"honor, honorLevel, honorRestState, honorRestBonus " +
"FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?");
PrepareStatement(CharStatements.SEL_GROUP_MEMBER, "SELECT guid FROM group_member WHERE memberGuid = ?");
@@ -137,7 +137,7 @@ namespace Framework.Database
PrepareStatement(CharStatements.SEL_CHARACTER_BGDATA, "SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell FROM character_battleground_data WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_GLYPHS, "SELECT talentGroup, glyphId FROM character_glyphs WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_TALENTS, "SELECT talentId, talentGroup FROM character_talent WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_PVP_TALENTS, "SELECT talentId, talentGroup FROM character_pvp_talent WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_PVP_TALENTS, "SELECT talentId0, talentId1, talentId2, talentId3, talentGroup FROM character_pvp_talent WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_SKILLS, "SELECT skill, value, max FROM character_skills WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_RANDOMBG, "SELECT guid FROM character_battleground_random WHERE guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_BANNED, "SELECT guid FROM character_banned WHERE guid = ? AND active = 1");
@@ -194,6 +194,7 @@ namespace Framework.Database
PrepareStatement(CharStatements.DEL_GIFT, "DELETE FROM character_gifts WHERE item_guid = ?");
PrepareStatement(CharStatements.SEL_CHARACTER_GIFT_BY_ITEM, "SELECT entry, flags FROM character_gifts WHERE item_guid = ?");
PrepareStatement(CharStatements.SEL_ACCOUNT_BY_NAME, "SELECT account FROM characters WHERE name = ?");
PrepareStatement(CharStatements.UPD_ACCOUNT_BY_GUID, "UPDATE characters SET account = ? WHERE guid = ?");
PrepareStatement(CharStatements.DEL_ACCOUNT_INSTANCE_LOCK_TIMES, "DELETE FROM account_instance_times WHERE accountId = ?");
PrepareStatement(CharStatements.INS_ACCOUNT_INSTANCE_LOCK_TIMES, "INSERT INTO account_instance_times (accountId, instanceId, releaseTime) VALUES (?, ?, ?)");
PrepareStatement(CharStatements.SEL_MATCH_MAKER_RATING, "SELECT matchMakerRating FROM character_arena_stats WHERE guid = ? AND slot = ?");
@@ -430,7 +431,7 @@ namespace Framework.Database
"logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,primarySpecialization=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," +
"totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," +
"watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," +
"equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,prestigeLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?");
"equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?");
PrepareStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?");
PrepareStatement(CharStatements.UPD_REM_AT_LOGIN_FLAG, "UPDATE characters set at_login = at_login & ~ ? WHERE guid = ?");
@@ -618,7 +619,7 @@ namespace Framework.Database
PrepareStatement(CharStatements.DEL_PETITION_SIGNATURE_BY_OWNER, "DELETE FROM petition_sign WHERE ownerguid = ?");
PrepareStatement(CharStatements.INS_CHAR_GLYPHS, "INSERT INTO character_glyphs VALUES(?, ?, ?)");
PrepareStatement(CharStatements.INS_CHAR_TALENT, "INSERT INTO character_talent (guid, talentId, talentGroup) VALUES (?, ?, ?)");
PrepareStatement(CharStatements.INS_CHAR_PVP_TALENT, "INSERT INTO character_pvp_talent (guid, talentId, talentGroup) VALUES (?, ?, ?)");
PrepareStatement(CharStatements.INS_CHAR_PVP_TALENT, "INSERT INTO character_pvp_talent (guid, talentId0, talentId1, talentId2, talentId3, talentGroup) VALUES (?, ?, ?, ?, ?, ?)");
PrepareStatement(CharStatements.UPD_CHAR_LIST_SLOT, "UPDATE characters SET slot = ? WHERE guid = ? AND account = ?");
PrepareStatement(CharStatements.INS_CHAR_FISHINGSTEPS, "INSERT INTO character_fishingsteps (guid, fishingSteps) VALUES (?, ?)");
PrepareStatement(CharStatements.DEL_CHAR_FISHINGSTEPS, "DELETE FROM character_fishingsteps WHERE guid = ?");
@@ -884,6 +885,7 @@ namespace Framework.Database
DEL_GIFT,
SEL_CHARACTER_GIFT_BY_ITEM,
SEL_ACCOUNT_BY_NAME,
UPD_ACCOUNT_BY_GUID,
DEL_ACCOUNT_INSTANCE_LOCK_TIMES,
INS_ACCOUNT_INSTANCE_LOCK_TIMES,
SEL_MATCH_MAKER_RATING,
File diff suppressed because it is too large Load Diff
@@ -75,7 +75,7 @@ namespace Framework.Database
PrepareStatement(WorldStatements.SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?");
PrepareStatement(WorldStatements.DEL_CREATURE, "DELETE FROM creature WHERE guid = ?");
PrepareStatement(WorldStatements.SEL_COMMANDS, "SELECT name, permission, help FROM command");
PrepareStatement(WorldStatements.SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, modelid1, modelid2, modelid3, modelid4, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, rank, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ?");
PrepareStatement(WorldStatements.SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, rank, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, resistance1, resistance2, resistance3, resistance4, resistance5, resistance6, spell1, spell2, spell3, spell4, spell5, spell6, spell7, spell8, VehicleId, mingold, maxgold, AIName, MovementType, InhabitType, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, RegenHealth, mechanic_immune_mask, flags_extra, ScriptName FROM creature_template WHERE entry = ?");
PrepareStatement(WorldStatements.SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?");
PrepareStatement(WorldStatements.SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?");
PrepareStatement(WorldStatements.SEL_GAMEOBJECT_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM gameobject WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_");
+2 -2
View File
@@ -11,8 +11,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.4.1" />
<PackageReference Include="MySqlConnector" Version="0.40.4" />
<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />
<PackageReference Include="MySqlConnector" Version="0.46.2" />
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" />
</ItemGroup>
+4 -4
View File
@@ -5325,7 +5325,7 @@ namespace Bgs.Protocol.Account.V1
public PrivacyInfo(PrivacyInfo other) : this()
{
isUsingRid_ = other.isUsingRid_;
isRealIdVisibleForViewFriends_ = other.isRealIdVisibleForViewFriends_;
isVisibleForViewFriends = other.isVisibleForViewFriends;
isHiddenFromFriendFinder_ = other.isHiddenFromFriendFinder_;
gameInfoPrivacy_ = other.gameInfoPrivacy_;
}
@@ -5350,14 +5350,14 @@ namespace Bgs.Protocol.Account.V1
/// <summary>Field number for the "is_real_id_visible_for_view_friends" field.</summary>
public const int IsRealIdVisibleForViewFriendsFieldNumber = 4;
private bool isRealIdVisibleForViewFriends_;
private bool isVisibleForViewFriends;
public bool IsRealIdVisibleForViewFriends
{
get { return isRealIdVisibleForViewFriends_; }
get { return isVisibleForViewFriends; }
set
{
bitArray.Set(IsRealIdVisibleForViewFriendsFieldNumber, true);
isRealIdVisibleForViewFriends_ = value;
isVisibleForViewFriends = value;
}
}
@@ -47,7 +47,7 @@ using System.Linq;
public static partial class Detour
{
const float H_SCALE = 2.0f; // Search heuristic scale.
const float H_SCALE = 0.999f; // Search heuristic scale.
/// Defines polygon filtering and traversal costs for navigation mesh query operations.
// @ingroup detour