Core/DataStores: Fixed db2 structures after 7.3.5

This commit is contained in:
hondacrx
2018-03-13 15:43:03 -04:00
parent 2199e07955
commit 0ab3b8e8cd
97 changed files with 3139 additions and 1707 deletions
+11 -12
View File
@@ -89,21 +89,21 @@ namespace Game.DataStorage
DurabilityCostsStorage = DBReader.Read<DurabilityCostsRecord>("DurabilityCosts.db2", HotfixStatements.SEL_DURABILITY_COSTS);
DurabilityQualityStorage = DBReader.Read<DurabilityQualityRecord>("DurabilityQuality.db2", HotfixStatements.SEL_DURABILITY_QUALITY);
EmotesStorage = DBReader.Read<EmotesRecord>("Emotes.db2", HotfixStatements.SEL_EMOTES);
EmotesTextStorage = DBReader.Read<EmotesTextRecord>("EmotesText.db2", HotfixStatements.SEL_EMOTES_TEXT, HotfixStatements.SEL_EMOTES_TEXT_LOCALE);
EmotesTextStorage = DBReader.Read<EmotesTextRecord>("EmotesText.db2", HotfixStatements.SEL_EMOTES_TEXT);
EmotesTextSoundStorage = DBReader.Read<EmotesTextSoundRecord>("EmotesTextSound.db2", HotfixStatements.SEL_EMOTES_TEXT_SOUND);
FactionStorage = DBReader.Read<FactionRecord>("Faction.db2", HotfixStatements.SEL_FACTION, HotfixStatements.SEL_FACTION_LOCALE);
FactionTemplateStorage = DBReader.Read<FactionTemplateRecord>("FactionTemplate.db2", HotfixStatements.SEL_FACTION_TEMPLATE);
GameObjectsStorage = DBReader.Read<GameObjectsRecord>("GameObjects.db2", HotfixStatements.SEL_GAMEOBJECTS, HotfixStatements.SEL_GAMEOBJECTS_LOCALE);
GameObjectDisplayInfoStorage = DBReader.Read<GameObjectDisplayInfoRecord>("GameObjectDisplayInfo.db2", HotfixStatements.SEL_GAMEOBJECT_DISPLAY_INFO);
GameObjectsStorage = DBReader.Read<GameObjectsRecord>("GameObjects.db2", HotfixStatements.SEL_GAMEOBJECTS, HotfixStatements.SEL_GAMEOBJECTS_LOCALE);
GarrAbilityStorage = DBReader.Read<GarrAbilityRecord>("GarrAbility.db2", HotfixStatements.SEL_GARR_ABILITY, HotfixStatements.SEL_GARR_ABILITY_LOCALE);
GarrBuildingStorage = DBReader.Read<GarrBuildingRecord>("GarrBuilding.db2", HotfixStatements.SEL_GARR_BUILDING, HotfixStatements.SEL_GARR_BUILDING_LOCALE);
GarrBuildingPlotInstStorage = DBReader.Read<GarrBuildingPlotInstRecord>("GarrBuildingPlotInst.db2", HotfixStatements.SEL_GARR_BUILDING_PLOT_INST);
GarrClassSpecStorage = DBReader.Read<GarrClassSpecRecord>("GarrClassSpec.db2", HotfixStatements.SEL_GARR_CLASS_SPEC, HotfixStatements.SEL_GARR_CLASS_SPEC_LOCALE);
GarrFollowerStorage = DBReader.Read<GarrFollowerRecord>("GarrFollower.db2", HotfixStatements.SEL_GARR_FOLLOWER, HotfixStatements.SEL_GARR_FOLLOWER_LOCALE);
GarrFollowerXAbilityStorage = DBReader.Read<GarrFollowerXAbilityRecord>("GarrFollowerXAbility.db2", HotfixStatements.SEL_GARR_FOLLOWER_X_ABILITY);
GarrPlotBuildingStorage = DBReader.Read<GarrPlotBuildingRecord>("GarrPlotBuilding.db2", HotfixStatements.SEL_GARR_PLOT_BUILDING);
GarrPlotStorage = DBReader.Read<GarrPlotRecord>("GarrPlot.db2", HotfixStatements.SEL_GARR_PLOT, HotfixStatements.SEL_GARR_PLOT_LOCALE);
GarrPlotInstanceStorage = DBReader.Read<GarrPlotInstanceRecord>("GarrPlotInstance.db2", HotfixStatements.SEL_GARR_PLOT_INSTANCE, HotfixStatements.SEL_GARR_PLOT_INSTANCE_LOCALE);
GarrPlotBuildingStorage = DBReader.Read<GarrPlotBuildingRecord>("GarrPlotBuilding.db2", HotfixStatements.SEL_GARR_PLOT_BUILDING);
GarrPlotInstanceStorage = DBReader.Read<GarrPlotInstanceRecord>("GarrPlotInstance.db2", HotfixStatements.SEL_GARR_PLOT_INSTANCE);
GarrSiteLevelStorage = DBReader.Read<GarrSiteLevelRecord>("GarrSiteLevel.db2", HotfixStatements.SEL_GARR_SITE_LEVEL);
GarrSiteLevelPlotInstStorage = DBReader.Read<GarrSiteLevelPlotInstRecord>("GarrSiteLevelPlotInst.db2", HotfixStatements.SEL_GARR_SITE_LEVEL_PLOT_INST);
GemPropertiesStorage = DBReader.Read<GemPropertiesRecord>("GemProperties.db2", HotfixStatements.SEL_GEM_PROPERTIES);
@@ -159,7 +159,7 @@ namespace Game.DataStorage
//KeyChainStorage = DBReader.Read<KeyChainRecord>("KeyChain.db2", HotfixStatements.SEL_KEYCHAIN);
LFGDungeonsStorage = DBReader.Read<LFGDungeonsRecord>("LFGDungeons.db2", HotfixStatements.SEL_LFG_DUNGEONS, HotfixStatements.SEL_LFG_DUNGEONS_LOCALE);
LightStorage = DBReader.Read<LightRecord>("Light.db2", HotfixStatements.SEL_LIGHT);
LiquidTypeStorage = DBReader.Read<LiquidTypeRecord>("LiquidType.db2", HotfixStatements.SEL_LIQUID_TYPE, HotfixStatements.SEL_LIQUID_TYPE_LOCALE);
LiquidTypeStorage = DBReader.Read<LiquidTypeRecord>("LiquidType.db2", HotfixStatements.SEL_LIQUID_TYPE);
LockStorage = DBReader.Read<LockRecord>("Lock.db2", HotfixStatements.SEL_LOCK);
MailTemplateStorage = DBReader.Read<MailTemplateRecord>("MailTemplate.db2", HotfixStatements.SEL_MAIL_TEMPLATE, HotfixStatements.SEL_MAIL_TEMPLATE_LOCALE);
MapStorage = DBReader.Read<MapRecord>("Map.db2", HotfixStatements.SEL_MAP, HotfixStatements.SEL_MAP_LOCALE);
@@ -170,7 +170,7 @@ namespace Game.DataStorage
MountTypeXCapabilityStorage = DBReader.Read<MountTypeXCapabilityRecord>("MountTypeXCapability.db2", HotfixStatements.SEL_MOUNT_TYPE_X_CAPABILITY);
MountXDisplayStorage = DBReader.Read<MountXDisplayRecord>("MountXDisplay.db2", HotfixStatements.SEL_MOUNT_X_DISPLAY);
MovieStorage = DBReader.Read<MovieRecord>("Movie.db2", HotfixStatements.SEL_MOVIE);
NameGenStorage = DBReader.Read<NameGenRecord>("NameGen.db2", HotfixStatements.SEL_NAME_GEN, HotfixStatements.SEL_NAME_GEN_LOCALE);
NameGenStorage = DBReader.Read<NameGenRecord>("NameGen.db2", HotfixStatements.SEL_NAME_GEN);
NamesProfanityStorage = DBReader.Read<NamesProfanityRecord>("NamesProfanity.db2", HotfixStatements.SEL_NAMES_PROFANITY);
NamesReservedStorage = DBReader.Read<NamesReservedRecord>("NamesReserved.db2", HotfixStatements.SEL_NAMES_RESERVED, HotfixStatements.SEL_NAMES_RESERVED_LOCALE);
NamesReservedLocaleStorage = DBReader.Read<NamesReservedLocaleRecord>("NamesReservedLocale.db2", HotfixStatements.SEL_NAMES_RESERVED_LOCALE);
@@ -265,19 +265,18 @@ namespace Game.DataStorage
WorldMapTransformsStorage = DBReader.Read<WorldMapTransformsRecord>("WorldMapTransforms.db2", HotfixStatements.SEL_WORLD_MAP_TRANSFORMS);
WorldSafeLocsStorage = DBReader.Read<WorldSafeLocsRecord>("WorldSafeLocs.db2", HotfixStatements.SEL_WORLD_SAFE_LOCS, HotfixStatements.SEL_WORLD_SAFE_LOCS_LOCALE);
foreach (var entry in TaxiPathStorage.Values)
{
if (!TaxiPathSetBySource.ContainsKey(entry.From))
TaxiPathSetBySource.Add(entry.From, new Dictionary<uint, TaxiPathBySourceAndDestination>());
TaxiPathSetBySource[entry.From][entry.To] = new TaxiPathBySourceAndDestination(entry.Id, entry.Cost);
if (!TaxiPathSetBySource.ContainsKey(entry.FromTaxiNode))
TaxiPathSetBySource.Add(entry.FromTaxiNode, new Dictionary<uint, TaxiPathBySourceAndDestination>());
TaxiPathSetBySource[entry.FromTaxiNode][entry.ToTaxiNode] = new TaxiPathBySourceAndDestination(entry.Id, entry.Cost);
}
uint pathCount = TaxiPathStorage.Keys.Max() + 1;
// Calculate path nodes count
uint[] pathLength = new uint[pathCount]; // 0 and some other indexes not used
foreach (TaxiPathNodeRecord entry in CliDB.TaxiPathNodeStorage.Values)
foreach (TaxiPathNodeRecord entry in TaxiPathNodeStorage.Values)
if (pathLength[entry.PathID] < entry.NodeIndex + 1)
pathLength[entry.PathID] = entry.NodeIndex + 1u;
@@ -305,7 +304,7 @@ namespace Game.DataStorage
AllianceTaxiNodesMask[field] |= submask;
uint nodeMap;
Global.DB2Mgr.DeterminaAlternateMapPosition(node.MapID, node.Pos.X, node.Pos.Y, node.Pos.Z, out nodeMap);
Global.DB2Mgr.DeterminaAlternateMapPosition(node.ContinentID, node.Pos.X, node.Pos.Y, node.Pos.Z, out nodeMap);
if (nodeMap < 2)
OldContinentsNodesMask[field] |= submask;
}
@@ -480,16 +480,17 @@ namespace Game.DataStorage
static Dictionary<Type, int> bytecounts = new Dictionary<Type, int>()
{
{ typeof(byte), 1 },
{ typeof(sbyte), 1 },
{ typeof(short), 2 },
{ typeof(ushort), 2 },
};
static int GetPadding(Type type, int fieldIndex)
{
if (!bytecounts.ContainsKey(type))
if (ColumnMeta[fieldIndex].CompressionType < DB2ColumnCompression.CommonData)
return 0;
if (ColumnMeta[fieldIndex].CompressionType < DB2ColumnCompression.CommonData)
if (!bytecounts.ContainsKey(type))
return 0;
return 4 - bytecounts[type];
@@ -186,10 +186,10 @@ namespace Game.DataStorage
else
Log.outError(LogFilter.Sql, "Table `conversation_line_template` has missing template for line (ID: {0}) in Conversation {1}, skipped", currentConversationLine.Id, conversationTemplate.Id);
if (currentConversationLine.NextLineID == 0)
if (currentConversationLine.NextConversationLineID == 0)
break;
currentConversationLine = CliDB.ConversationLineStorage.LookupByKey(currentConversationLine.NextLineID);
currentConversationLine = CliDB.ConversationLineStorage.LookupByKey(currentConversationLine.NextConversationLineID);
}
_conversationTemplateStorage[conversationTemplate.Id] = conversationTemplate;
+105 -110
View File
@@ -54,14 +54,14 @@ namespace Game.DataStorage
foreach (ArtifactPowerLinkRecord artifactPowerLink in CliDB.ArtifactPowerLinkStorage.Values)
{
_artifactPowerLinks.Add(artifactPowerLink.FromArtifactPowerID, artifactPowerLink.ToArtifactPowerID);
_artifactPowerLinks.Add(artifactPowerLink.ToArtifactPowerID, artifactPowerLink.FromArtifactPowerID);
_artifactPowerLinks.Add(artifactPowerLink.PowerA, artifactPowerLink.PowerB);
_artifactPowerLinks.Add(artifactPowerLink.PowerB, artifactPowerLink.PowerA);
}
CliDB.ArtifactPowerLinkStorage.Clear();
foreach (ArtifactPowerRankRecord artifactPowerRank in CliDB.ArtifactPowerRankStorage.Values)
_artifactPowerRanks[Tuple.Create((uint)artifactPowerRank.ArtifactPowerID, artifactPowerRank.Rank)] = artifactPowerRank;
_artifactPowerRanks[Tuple.Create((uint)artifactPowerRank.ArtifactPowerID, artifactPowerRank.RankIndex)] = artifactPowerRank;
CliDB.ArtifactPowerRankStorage.Clear();
@@ -73,10 +73,10 @@ namespace Game.DataStorage
CharBaseSectionVariation[] sectionToBase = new CharBaseSectionVariation[(int)CharSectionType.Max];
foreach (CharBaseSectionRecord charBaseSection in CliDB.CharBaseSectionStorage.Values)
{
Contract.Assert(charBaseSection.ResolutionVariation < (byte)CharSectionType.Max, $"SECTION_TYPE_MAX ({(byte)CharSectionType.Max}) must be equal to or greater than {charBaseSection.ResolutionVariation + 1}");
Contract.Assert(charBaseSection.Variation < CharBaseSectionVariation.Max, $"CharBaseSectionVariation.Max {(byte)CharBaseSectionVariation.Max} must be equal to or greater than {charBaseSection.Variation + 1}");
Contract.Assert(charBaseSection.ResolutionVariationEnum < (byte)CharSectionType.Max, $"SECTION_TYPE_MAX ({(byte)CharSectionType.Max}) must be equal to or greater than {charBaseSection.ResolutionVariationEnum + 1}");
Contract.Assert(charBaseSection.VariationEnum < CharBaseSectionVariation.Max, $"CharBaseSectionVariation.Max {(byte)CharBaseSectionVariation.Max} must be equal to or greater than {charBaseSection.VariationEnum + 1}");
sectionToBase[charBaseSection.ResolutionVariation] = charBaseSection.Variation;
sectionToBase[charBaseSection.ResolutionVariationEnum] = charBaseSection.VariationEnum;
}
CliDB.CharBaseSectionStorage.Clear();
@@ -98,7 +98,7 @@ namespace Game.DataStorage
CliDB.CharSectionsStorage.Clear();
foreach (var outfit in CliDB.CharStartOutfitStorage.Values)
_charStartOutfits[(uint)((byte)outfit.RaceID | (outfit.ClassID << 8) | (outfit.GenderID << 16))] = outfit;
_charStartOutfits[(uint)((byte)outfit.RaceID | (outfit.ClassID << 8) | (outfit.SexID << 16))] = outfit;
var powers = new List<ChrClassesXPowerTypesRecord>();
foreach (var chrClasses in CliDB.ChrClassesXPowerTypesStorage.Values)
@@ -146,10 +146,10 @@ namespace Game.DataStorage
CliDB.CurvePointStorage.Clear();
foreach (var key in _curvePoints.Keys.ToList())
_curvePoints[key] = _curvePoints[key].OrderBy(point => point.Index).ToList();
_curvePoints[key] = _curvePoints[key].OrderBy(point => point.OrderIndex).ToList();
foreach (EmotesTextSoundRecord emoteTextSound in CliDB.EmotesTextSoundStorage.Values)
_emoteTextSounds[Tuple.Create((uint)emoteTextSound.EmotesTextId, emoteTextSound.RaceId, emoteTextSound.SexId, emoteTextSound.ClassId)] = emoteTextSound;
_emoteTextSounds[Tuple.Create(emoteTextSound.EmotesTextId, emoteTextSound.RaceId, emoteTextSound.SexId, emoteTextSound.ClassId)] = emoteTextSound;
CliDB.EmotesTextSoundStorage.Clear();
@@ -183,23 +183,23 @@ namespace Game.DataStorage
CliDB.GlyphRequiredSpecStorage.Clear();
foreach (var bonus in CliDB.ItemBonusStorage.Values)
_itemBonusLists.Add(bonus.BonusListID, bonus);
_itemBonusLists.Add(bonus.ParentItemBonusListID, bonus);
CliDB.ItemBonusStorage.Clear();
foreach (ItemBonusListLevelDeltaRecord itemBonusListLevelDelta in CliDB.ItemBonusListLevelDeltaStorage.Values)
_itemLevelDeltaToBonusListContainer[itemBonusListLevelDelta.Delta] = itemBonusListLevelDelta.Id;
_itemLevelDeltaToBonusListContainer[itemBonusListLevelDelta.ItemLevelDelta] = itemBonusListLevelDelta.Id;
CliDB.ItemBonusListLevelDeltaStorage.Clear();
foreach (var key in CliDB.ItemBonusTreeNodeStorage.Keys)
{
ItemBonusTreeNodeRecord bonusTreeNode = CliDB.ItemBonusTreeNodeStorage[key];
uint bonusTreeId = bonusTreeNode.BonusTreeID;
uint bonusTreeId = bonusTreeNode.ParentItemBonusTreeID;
while (bonusTreeNode != null)
{
_itemBonusTrees.Add(bonusTreeId, bonusTreeNode);
bonusTreeNode = CliDB.ItemBonusTreeNodeStorage.LookupByKey(bonusTreeNode.SubTreeID);
bonusTreeNode = CliDB.ItemBonusTreeNodeStorage.LookupByKey(bonusTreeNode.ChildItemBonusTreeID);
}
}
@@ -207,35 +207,35 @@ namespace Game.DataStorage
foreach (ItemChildEquipmentRecord itemChildEquipment in CliDB.ItemChildEquipmentStorage.Values)
{
//ASSERT(_itemChildEquipment.find(itemChildEquipment.ItemID) == _itemChildEquipment.end(), "Item must have max 1 child item.");
_itemChildEquipment[itemChildEquipment.ItemID] = itemChildEquipment;
//ASSERT(_itemChildEquipment.find(itemChildEquipment.ParentItemID) == _itemChildEquipment.end(), "Item must have max 1 child item.");
_itemChildEquipment[itemChildEquipment.ParentItemID] = itemChildEquipment;
}
CliDB.ItemChildEquipmentStorage.Clear();
foreach (ItemClassRecord itemClass in CliDB.ItemClassStorage.Values)
{
//ASSERT(itemClass->OldEnumValue < _itemClassByOldEnum.size());
//ASSERT(!_itemClassByOldEnum[itemClass->OldEnumValue]);
_itemClassByOldEnum[itemClass.OldEnumValue] = itemClass;
//ASSERT(itemClass->ClassID < _itemClassByOldEnum.size());
//ASSERT(!_itemClassByOldEnum[itemClass->ClassID]);
_itemClassByOldEnum[itemClass.ClassID] = itemClass;
}
CliDB.ItemClassStorage.Clear();
foreach (ItemCurrencyCostRecord itemCurrencyCost in CliDB.ItemCurrencyCostStorage.Values)
_itemsWithCurrencyCost.Add(itemCurrencyCost.ItemId);
_itemsWithCurrencyCost.Add(itemCurrencyCost.ItemID);
CliDB.ItemCurrencyCostStorage.Clear();
foreach (ItemLevelSelectorQualityRecord itemLevelSelectorQuality in CliDB.ItemLevelSelectorQualityStorage.Values)
_itemLevelQualitySelectorQualities.Add(itemLevelSelectorQuality.ItemLevelSelectorQualitySetID, itemLevelSelectorQuality);
_itemLevelQualitySelectorQualities.Add(itemLevelSelectorQuality.ParentILSQualitySetID, itemLevelSelectorQuality);
CliDB.ItemLevelSelectorQualityStorage.Clear();
foreach (var appearanceMod in CliDB.ItemModifiedAppearanceStorage.Values)
{
//ASSERT(appearanceMod.ItemID <= 0xFFFFFF);
_itemModifiedAppearancesByItem[(uint)((int)appearanceMod.ItemID | (appearanceMod.AppearanceModID << 24))] = appearanceMod;
_itemModifiedAppearancesByItem[(uint)((int)appearanceMod.ItemID | (appearanceMod.ItemAppearanceModifierID << 24))] = appearanceMod;
}
foreach (ItemSetSpellRecord itemSetSpell in CliDB.ItemSetSpellStorage.Values)
@@ -249,7 +249,7 @@ namespace Game.DataStorage
CliDB.ItemSpecOverrideStorage.Clear();
foreach (var itemBonusTreeAssignment in CliDB.ItemXBonusTreeStorage.Values)
_itemToBonusTree.Add(itemBonusTreeAssignment.ItemID, itemBonusTreeAssignment.BonusTreeID);
_itemToBonusTree.Add(itemBonusTreeAssignment.ItemID, itemBonusTreeAssignment.ItemBonusTreeID);
CliDB.ItemXBonusTreeStorage.Clear();
@@ -265,7 +265,7 @@ namespace Game.DataStorage
CliDB.MapDifficultyStorage.Clear();
foreach (var mount in CliDB.MountStorage.Values)
_mountsBySpellId[mount.SpellId] = mount;
_mountsBySpellId[mount.SourceSpellID] = mount;
foreach (MountTypeXCapabilityRecord mountTypeCapability in CliDB.MountTypeXCapabilityStorage.Values)
_mountCapabilitiesByType.Add(mountTypeCapability.MountTypeID, mountTypeCapability);
@@ -282,14 +282,14 @@ namespace Game.DataStorage
foreach (var entry in CliDB.NameGenStorage.Values)
{
if (!_nameGenData.ContainsKey(entry.Race))
if (!_nameGenData.ContainsKey(entry.RaceID))
{
_nameGenData[entry.Race] = new List<NameGenRecord>[2];
_nameGenData[entry.RaceID] = new List<NameGenRecord>[2];
for (var i = 0; i < 2; ++i)
_nameGenData[entry.Race][i] = new List<NameGenRecord>();
_nameGenData[entry.RaceID][i] = new List<NameGenRecord>();
}
_nameGenData[entry.Race][entry.Sex].Add(entry);
_nameGenData[entry.RaceID][entry.Sex].Add(entry);
}
CliDB.NameGenStorage.Clear();
@@ -346,10 +346,10 @@ namespace Game.DataStorage
}
foreach (PvpItemRecord pvpItem in CliDB.PvpItemStorage.Values)
_pvpItemBonus[pvpItem.ItemID] = pvpItem.ItemLevelBonus;
_pvpItemBonus[pvpItem.ItemID] = pvpItem.ItemLevelDelta;
foreach (PvpRewardRecord pvpReward in CliDB.PvpRewardStorage.Values)
_pvpRewardPack[Tuple.Create((uint)pvpReward.Prestige, (uint)pvpReward.HonorLevel)] = pvpReward.RewardPackID;
_pvpRewardPack[Tuple.Create((uint)pvpReward.PrestigeLevel, (uint)pvpReward.HonorLevel)] = pvpReward.RewardPackID;
CliDB.PvpRewardStorage.Clear();
@@ -390,13 +390,13 @@ namespace Game.DataStorage
foreach (QuestPackageItemRecord questPackageItem in CliDB.QuestPackageItemStorage.Values)
{
if (!_questPackages.ContainsKey(questPackageItem.QuestPackageID))
_questPackages[questPackageItem.QuestPackageID] = Tuple.Create(new List<QuestPackageItemRecord>(), new List<QuestPackageItemRecord>());
if (!_questPackages.ContainsKey(questPackageItem.PackageID))
_questPackages[questPackageItem.PackageID] = Tuple.Create(new List<QuestPackageItemRecord>(), new List<QuestPackageItemRecord>());
if (questPackageItem.FilterType != QuestPackageFilter.Unmatched)
_questPackages[questPackageItem.QuestPackageID].Item1.Add(questPackageItem);
if (questPackageItem.DisplayType != QuestPackageFilter.Unmatched)
_questPackages[questPackageItem.PackageID].Item1.Add(questPackageItem);
else
_questPackages[questPackageItem.QuestPackageID].Item2.Add(questPackageItem);
_questPackages[questPackageItem.PackageID].Item2.Add(questPackageItem);
}
CliDB.QuestPackageItemStorage.Clear();
@@ -436,14 +436,14 @@ namespace Game.DataStorage
if (!_spellPowerDifficulties[power.SpellID].ContainsKey(powerDifficulty.DifficultyID))
_spellPowerDifficulties[power.SpellID][powerDifficulty.DifficultyID] = new List<SpellPowerRecord>();
_spellPowerDifficulties[power.SpellID][powerDifficulty.DifficultyID].Insert(powerDifficulty.PowerIndex, power);
_spellPowerDifficulties[power.SpellID][powerDifficulty.DifficultyID].Insert(powerDifficulty.OrderIndex, power);
}
else
{
if (!_spellPowers.ContainsKey(power.SpellID))
_spellPowers[power.SpellID] = new List<SpellPowerRecord>();
_spellPowers[power.SpellID].Insert(power.PowerIndex, power);
_spellPowers[power.SpellID].Insert(power.OrderIndex, power);
}
}
@@ -492,7 +492,7 @@ namespace Game.DataStorage
CliDB.TransmogSetItemStorage.Clear();
foreach (WMOAreaTableRecord entry in CliDB.WMOAreaTableStorage.Values)
_wmoAreaTableLookup[Tuple.Create((short)entry.WMOID, entry.NameSet, entry.WMOGroupID)] = entry;
_wmoAreaTableLookup[Tuple.Create((short)entry.WmoID, entry.NameSetID, entry.WmoGroupID)] = entry;
CliDB.WMOAreaTableStorage.Clear();
@@ -593,19 +593,18 @@ namespace Game.DataStorage
public string GetBroadcastTextValue(BroadcastTextRecord broadcastText, LocaleConstant locale = LocaleConstant.enUS, Gender gender = Gender.Male, bool forceGender = false)
{
if ((gender == Gender.Female || gender == Gender.None) && (forceGender || broadcastText.FemaleText.HasString(SharedConst.DefaultLocale)))
if ((gender == Gender.Female || gender == Gender.None) && (forceGender || broadcastText.Text1.HasString(SharedConst.DefaultLocale)))
{
if (broadcastText.FemaleText.HasString(locale))
return broadcastText.FemaleText[locale];
if (broadcastText.Text1.HasString(locale))
return broadcastText.Text1[locale];
return broadcastText.FemaleText[SharedConst.DefaultLocale];
return broadcastText.Text1[SharedConst.DefaultLocale];
}
if (broadcastText.Text.HasString(locale))
return broadcastText.Text[locale];
if (broadcastText.MaleText.HasString(locale))
return broadcastText.MaleText[locale];
return broadcastText.MaleText[SharedConst.DefaultLocale];
return broadcastText.Text[SharedConst.DefaultLocale];
}
public bool HasCharacterFacialHairStyle(Race race, Gender gender, uint variationId)
@@ -728,82 +727,82 @@ namespace Game.DataStorage
case CurveInterpolationMode.Linear:
{
int pointIndex = 0;
while (pointIndex < points.Count && points[pointIndex].X <= x)
while (pointIndex < points.Count && points[pointIndex].Pos.X <= x)
++pointIndex;
if (pointIndex == 0)
return points[0].Y;
return points[0].Pos.Y;
if (pointIndex >= points.Count)
return points.Last().Y;
float xDiff = points[pointIndex].X - points[pointIndex - 1].X;
return points.Last().Pos.Y;
float xDiff = points[pointIndex].Pos.X - points[pointIndex - 1].Pos.X;
if (xDiff == 0.0)
return points[pointIndex].Y;
return (((x - points[pointIndex - 1].X) / xDiff) * (points[pointIndex].Y - points[pointIndex - 1].Y)) + points[pointIndex - 1].Y;
return points[pointIndex].Pos.Y;
return (((x - points[pointIndex - 1].Pos.X) / xDiff) * (points[pointIndex].Pos.Y - points[pointIndex - 1].Pos.Y)) + points[pointIndex - 1].Pos.Y;
}
case CurveInterpolationMode.Cosine:
{
int pointIndex = 0;
while (pointIndex < points.Count && points[pointIndex].X <= x)
while (pointIndex < points.Count && points[pointIndex].Pos.X <= x)
++pointIndex;
if (pointIndex == 0)
return points[0].Y;
return points[0].Pos.Y;
if (pointIndex >= points.Count)
return points.Last().Y;
float xDiff = points[pointIndex].X - points[pointIndex - 1].X;
return points.Last().Pos.Y;
float xDiff = points[pointIndex].Pos.X - points[pointIndex - 1].Pos.X;
if (xDiff == 0.0)
return points[pointIndex].Y;
return (float)((points[pointIndex].Y - points[pointIndex - 1].Y) * (1.0f - Math.Cos((x - points[pointIndex - 1].X) / xDiff * Math.PI)) * 0.5f) + points[pointIndex - 1].Y;
return points[pointIndex].Pos.Y;
return (float)((points[pointIndex].Pos.Y - points[pointIndex - 1].Pos.Y) * (1.0f - Math.Cos((x - points[pointIndex - 1].Pos.X) / xDiff * Math.PI)) * 0.5f) + points[pointIndex - 1].Pos.Y;
}
case CurveInterpolationMode.CatmullRom:
{
int pointIndex = 1;
while (pointIndex < points.Count && points[pointIndex].X <= x)
while (pointIndex < points.Count && points[pointIndex].Pos.X <= x)
++pointIndex;
if (pointIndex == 1)
return points[1].Y;
return points[1].Pos.Y;
if (pointIndex >= points.Count - 1)
return points[points.Count - 2].Y;
float xDiff = points[pointIndex].X - points[pointIndex - 1].X;
return points[points.Count - 2].Pos.Y;
float xDiff = points[pointIndex].Pos.X - points[pointIndex - 1].Pos.X;
if (xDiff == 0.0)
return points[pointIndex].Y;
return points[pointIndex].Pos.Y;
float mu = (x - points[pointIndex - 1].X) / xDiff;
float a0 = -0.5f * points[pointIndex - 2].Y + 1.5f * points[pointIndex - 1].Y - 1.5f * points[pointIndex].Y + 0.5f * points[pointIndex + 1].Y;
float a1 = points[pointIndex - 2].Y - 2.5f * points[pointIndex - 1].Y + 2.0f * points[pointIndex].Y - 0.5f * points[pointIndex + 1].Y;
float a2 = -0.5f * points[pointIndex - 2].Y + 0.5f * points[pointIndex].Y;
float a3 = points[pointIndex - 1].Y;
float mu = (x - points[pointIndex - 1].Pos.X) / xDiff;
float a0 = -0.5f * points[pointIndex - 2].Pos.Y + 1.5f * points[pointIndex - 1].Pos.Y - 1.5f * points[pointIndex].Pos.Y + 0.5f * points[pointIndex + 1].Pos.Y;
float a1 = points[pointIndex - 2].Pos.Y - 2.5f * points[pointIndex - 1].Pos.Y + 2.0f * points[pointIndex].Pos.Y - 0.5f * points[pointIndex + 1].Pos.Y;
float a2 = -0.5f * points[pointIndex - 2].Pos.Y + 0.5f * points[pointIndex].Pos.Y;
float a3 = points[pointIndex - 1].Pos.Y;
return a0 * mu * mu * mu + a1 * mu * mu + a2 * mu + a3;
}
case CurveInterpolationMode.Bezier3:
{
float xDiff = points[2].X - points[0].X;
float xDiff = points[2].Pos.X - points[0].Pos.X;
if (xDiff == 0.0)
return points[1].Y;
float mu = (x - points[0].X) / xDiff;
return ((1.0f - mu) * (1.0f - mu) * points[0].Y) + (1.0f - mu) * 2.0f * mu * points[1].Y + mu * mu * points[2].Y;
return points[1].Pos.Y;
float mu = (x - points[0].Pos.X) / xDiff;
return ((1.0f - mu) * (1.0f - mu) * points[0].Pos.Y) + (1.0f - mu) * 2.0f * mu * points[1].Pos.Y + mu * mu * points[2].Pos.Y;
}
case CurveInterpolationMode.Bezier4:
{
float xDiff = points[3].X - points[0].X;
float xDiff = points[3].Pos.X - points[0].Pos.X;
if (xDiff == 0.0)
return points[1].Y;
float mu = (x - points[0].X) / xDiff;
return (1.0f - mu) * (1.0f - mu) * (1.0f - mu) * points[0].Y
+ 3.0f * mu * (1.0f - mu) * (1.0f - mu) * points[1].Y
+ 3.0f * mu * mu * (1.0f - mu) * points[2].Y
+ mu * mu * mu * points[3].Y;
return points[1].Pos.Y;
float mu = (x - points[0].Pos.X) / xDiff;
return (1.0f - mu) * (1.0f - mu) * (1.0f - mu) * points[0].Pos.Y
+ 3.0f * mu * (1.0f - mu) * (1.0f - mu) * points[1].Pos.Y
+ 3.0f * mu * mu * (1.0f - mu) * points[2].Pos.Y
+ mu * mu * mu * points[3].Pos.Y;
}
case CurveInterpolationMode.Bezier:
{
float xDiff = points.Last().X - points[0].X;
float xDiff = points.Last().Pos.X - points[0].Pos.X;
if (xDiff == 0.0f)
return points.Last().Y;
return points.Last().Pos.Y;
float[] tmp = new float[points.Count];
for (int c = 0; c < points.Count; ++c)
tmp[c] = points[c].Y;
tmp[c] = points[c].Pos.Y;
float mu = (x - points[0].X) / xDiff;
float mu = (x - points[0].Pos.X) / xDiff;
int i = points.Count - 1;
while (i > 0)
{
@@ -817,7 +816,7 @@ namespace Game.DataStorage
return tmp[0];
}
case CurveInterpolationMode.Constant:
return points[0].Y;
return points[0].Pos.Y;
default:
break;
}
@@ -868,7 +867,7 @@ namespace Game.DataStorage
return _itemLevelDeltaToBonusListContainer.LookupByKey(delta);
}
public List<uint> GetItemBonusTree(uint itemId, uint itemBonusTreeMod)
public List<uint> GetItemBonusTree(uint itemId, uint itemContext)
{
List<uint> bonusListIDs = new List<uint>();
@@ -888,20 +887,20 @@ namespace Game.DataStorage
foreach (ItemBonusTreeNodeRecord bonusTreeNode in treeList)
{
if (bonusTreeNode.BonusTreeModID != itemBonusTreeMod)
if (bonusTreeNode.ItemContext != itemContext)
continue;
if (bonusTreeNode.BonusListID != 0)
if (bonusTreeNode.ChildItemBonusListID != 0)
{
bonusListIDs.Add(bonusTreeNode.BonusListID);
bonusListIDs.Add(bonusTreeNode.ChildItemBonusListID);
}
else if (bonusTreeNode.ItemLevelSelectorID != 0)
else if (bonusTreeNode.ChildItemLevelSelectorID != 0)
{
ItemLevelSelectorRecord selector = CliDB.ItemLevelSelectorStorage.LookupByKey(bonusTreeNode.ItemLevelSelectorID);
ItemLevelSelectorRecord selector = CliDB.ItemLevelSelectorStorage.LookupByKey(bonusTreeNode.ChildItemLevelSelectorID);
if (selector == null)
continue;
short delta = (short)(selector.ItemLevel - proto.ItemLevel);
short delta = (short)(selector.MinItemLevel - proto.ItemLevel);
uint bonus = GetItemBonusListForItemLevelDelta(delta);
if (bonus != 0)
@@ -914,15 +913,15 @@ namespace Game.DataStorage
if (itemSelectorQualities != null)
{
ItemQuality quality = ItemQuality.Uncommon;
if (selector.ItemLevel >= selectorQualitySet.ItemLevelMax)
if (selector.MinItemLevel >= selectorQualitySet.IlvlEpic)
quality = ItemQuality.Epic;
else if (selector.ItemLevel >= selectorQualitySet.ItemLevelMin)
else if (selector.MinItemLevel >= selectorQualitySet.IlvlRare)
quality = ItemQuality.Rare;
var itemSelectorQuality = itemSelectorQualities.FirstOrDefault(p => p.Quality < (byte)quality);
if (itemSelectorQuality != null)
bonusListIDs.Add(itemSelectorQuality.ItemBonusListID);
bonusListIDs.Add(itemSelectorQuality.QualityItemBonusListID);
}
}
}
@@ -947,9 +946,9 @@ namespace Game.DataStorage
ItemModifiedAppearanceRecord modifiedAppearance = GetItemModifiedAppearance(itemId, appearanceModId);
if (modifiedAppearance != null)
{
ItemAppearanceRecord itemAppearance = CliDB.ItemAppearanceStorage.LookupByKey(modifiedAppearance.AppearanceID);
ItemAppearanceRecord itemAppearance = CliDB.ItemAppearanceStorage.LookupByKey(modifiedAppearance.ItemAppearanceID);
if (itemAppearance != null)
return itemAppearance.DisplayID;
return itemAppearance.ItemDisplayInfoID;
}
return 0;
@@ -1000,7 +999,7 @@ namespace Game.DataStorage
{
foreach (var light in CliDB.LightStorage.Values.Reverse())
{
if (light.MapID == mapId && light.Pos.X == 0.0f && light.Pos.Y == 0.0f && light.Pos.Z == 0.0f)
if (light.ContinentID == mapId && light.GameCoords.X == 0.0f && light.GameCoords.Y == 0.0f && light.GameCoords.Z == 0.0f)
return light.Id;
}
@@ -1011,7 +1010,7 @@ namespace Game.DataStorage
{
LiquidTypeRecord liq = CliDB.LiquidTypeStorage.LookupByKey(liquidType);
if (liq != null)
return 1u << liq.LiquidType;
return 1u << liq.SoundBank;
return 0;
}
@@ -1104,7 +1103,7 @@ namespace Game.DataStorage
return _mountDisplays.LookupByKey(mountId);
}
public string GetNameGenEntry(uint race, uint gender, LocaleConstant locale, LocaleConstant defaultLocale)
public string GetNameGenEntry(uint race, uint gender)
{
Contract.Assert(gender < (int)Gender.None);
var listNameGen = _nameGenData.LookupByKey(race);
@@ -1114,11 +1113,7 @@ namespace Game.DataStorage
if (listNameGen[gender].Empty())
return "";
LocalizedString data = listNameGen[gender].SelectRandom().Name;
if (data.HasString(locale))
return data[locale];
return data[defaultLocale];
return listNameGen[gender].SelectRandom().Name;
}
public ResponseCodes ValidateName(string name, LocaleConstant locale)
@@ -1234,7 +1229,7 @@ namespace Game.DataStorage
{
foreach (PowerTypeRecord powerType in CliDB.PowerTypeStorage.Values)
{
string powerName = powerType.PowerTypeToken;
string powerName = powerType.NameGlobalStringTag;
if (powerName.ToLower() == name)
return powerType;
@@ -1313,8 +1308,8 @@ namespace Game.DataStorage
Array.Resize(ref powers, powerDifficultyList.Count);
foreach (SpellPowerRecord difficultyPower in powerDifficultyList)
if (powers[difficultyPower.PowerIndex] == null)
powers[difficultyPower.PowerIndex] = difficultyPower;
if (powers[difficultyPower.OrderIndex] == null)
powers[difficultyPower.OrderIndex] = difficultyPower;
}
difficultyEntry = CliDB.DifficultyStorage.LookupByKey(difficultyEntry.FallbackDifficultyID);
@@ -1328,8 +1323,8 @@ namespace Game.DataStorage
Array.Resize(ref powers, record.Count);
foreach (SpellPowerRecord power in record)
if (powers[power.PowerIndex] == null)
powers[power.PowerIndex] = power;
if (powers[power.OrderIndex] == null)
powers[power.OrderIndex] = power;
}
return powers.ToList();
@@ -1359,10 +1354,10 @@ namespace Game.DataStorage
if (reqEntry == null)
return false;
if (itemEntry.CategoryType != reqEntry.CategoryType)
if (itemEntry.TotemCategoryType != reqEntry.TotemCategoryType)
return false;
return (itemEntry.CategoryMask & reqEntry.CategoryMask) == reqEntry.CategoryMask;
return (itemEntry.TotemCategoryMask & reqEntry.TotemCategoryMask) == reqEntry.TotemCategoryMask;
}
public bool IsToyItem(uint toy)
+1 -1
View File
@@ -174,7 +174,7 @@ namespace Game.DataStorage
uint oldMSTime = Time.GetMSTime();
foreach (CinematicCameraRecord cameraEntry in CliDB.CinematicCameraStorage.Values)
{
string filename = dataPath + "/cameras/" + string.Format("FILE{0:x8}.xxx", cameraEntry.ModelFileDataID);
string filename = dataPath + "/cameras/" + string.Format("FILE{0:x8}.xxx", cameraEntry.FileDataID);
try
{
+42 -38
View File
@@ -27,7 +27,7 @@ namespace Game.DataStorage
public LocalizedString Description;
public LocalizedString Reward;
public AchievementFlags Flags;
public short MapID;
public short InstanceID;
public ushort Supercedes;
public ushort Category;
public ushort UiOrder;
@@ -36,7 +36,7 @@ namespace Game.DataStorage
public byte Points;
public byte MinimumCriteria;
public uint Id;
public uint IconFileDataID;
public uint IconFileID;
public ushort CriteriaTree;
}
@@ -62,16 +62,16 @@ namespace Game.DataStorage
public LocalizedString AreaName;
public AreaFlags[] Flags = new AreaFlags[2];
public float AmbientMultiplier;
public ushort MapId;
public ushort ContinentID;
public ushort ParentAreaID;
public short AreaBit;
public ushort AmbienceID;
public ushort ZoneMusic;
public ushort IntroSound;
public ushort[] LiquidTypeID = new ushort[4];
public ushort UWZoneMusic;
public ushort UWAmbience;
public ushort PvPCombastWorldStateID;
public ushort UwZoneMusic;
public ushort UwAmbience;
public ushort PvpCombastWorldStateID;
public byte SoundProviderPref;
public byte SoundProviderPrefUnderwater;
public byte ExplorationLevel;
@@ -80,11 +80,11 @@ namespace Game.DataStorage
public byte WildBattlePetLevelMin;
public byte WildBattlePetLevelMax;
public byte WindSettingsID;
public byte UWIntroSound;
public byte UwIntroSound;
public bool IsSanctuary()
{
if (MapId == 609)
if (ContinentID == 609)
return true;
return Flags[0].HasAnyFlag(AreaFlags.Sanctuary);
@@ -99,7 +99,7 @@ namespace Game.DataStorage
public float BoxWidth;
public float BoxHeight;
public float BoxYaw;
public ushort MapID;
public ushort ContinentID;
public ushort PhaseID;
public ushort PhaseGroupID;
public ushort ShapeID;
@@ -113,18 +113,22 @@ namespace Game.DataStorage
public sealed class ArmorLocationRecord
{
public uint Id;
public float[] Modifier = new float[5];
public float Clothmodifier;
public float Leathermodifier;
public float Chainmodifier;
public float Platemodifier;
public float Modifier;
}
public sealed class ArtifactRecord
{
public uint Id;
public LocalizedString Name;
public uint BarConnectedColor;
public uint BarDisconnectedColor;
public uint TitleColor;
public ushort ClassUiTextureKitID;
public ushort SpecID;
public uint UiBarOverlayColor;
public uint UiBarBackgroundColor;
public uint UiNameColor;
public ushort UiTextureKitID;
public ushort ChrSpecializationID;
public byte ArtifactCategoryID;
public byte Flags;
public byte UiModelSceneID;
@@ -134,30 +138,30 @@ namespace Game.DataStorage
public sealed class ArtifactAppearanceRecord
{
public LocalizedString Name;
public uint SwatchColor;
public float ModelDesaturation;
public float ModelAlpha;
public uint ShapeshiftDisplayID;
public uint UiSwatchColor;
public float UiModelSaturation;
public float UiModelOpacity;
public uint OverrideShapeshiftDisplayID;
public ushort ArtifactAppearanceSetID;
public ushort Unknown;
public ushort UiCameraID;
public byte DisplayIndex;
public byte AppearanceModID;
public byte ItemAppearanceModifierID;
public byte Flags;
public byte ModifiesShapeshiftFormDisplay;
public byte OverrideShapeshiftFormID;
public uint Id;
public ushort PlayerConditionID;
public byte ItemAppearanceID;
public byte AltItemAppearanceID;
public ushort UnlockPlayerConditionID;
public byte UiItemAppearanceID;
public byte UiAltItemAppearanceID;
}
public sealed class ArtifactAppearanceSetRecord
{
public LocalizedString Name;
public LocalizedString Name2;
public LocalizedString Description;
public ushort UiCameraID;
public ushort AltHandUICameraID;
public byte DisplayIndex;
public byte AttachmentPoint;
public byte ForgeAttachmentOverride;
public byte Flags;
public uint Id;
public uint ArtifactID;
@@ -166,8 +170,8 @@ namespace Game.DataStorage
public sealed class ArtifactCategoryRecord
{
public uint Id;
public ushort ArtifactKnowledgeCurrencyID;
public ushort ArtifactKnowledgeMultiplierCurveID;
public ushort XpMultCurrencyID;
public ushort XpMultCurveID;
}
public sealed class ArtifactPowerRecord
@@ -175,17 +179,17 @@ namespace Game.DataStorage
public Vector2 Pos;
public byte ArtifactID;
public ArtifactPowerFlag Flags;
public byte MaxRank;
public byte ArtifactTier;
public byte MaxPurchasableRank;
public byte Tier;
public uint Id;
public byte RelicType;
public byte Label;
}
public sealed class ArtifactPowerLinkRecord
{
public uint Id;
public ushort FromArtifactPowerID;
public ushort ToArtifactPowerID;
public ushort PowerA;
public ushort PowerB;
}
public sealed class ArtifactPowerPickerRecord
@@ -198,16 +202,16 @@ namespace Game.DataStorage
{
public uint Id;
public uint SpellID;
public float Value;
public ushort Unknown;
public byte Rank;
public float AuraPointsOverride;
public ushort ItemBonusListID;
public byte RankIndex;
public uint ArtifactPowerID;
}
public sealed class ArtifactQuestXPRecord
{
public uint Id;
public uint[] Exp = new uint[10];
public uint[] Difficulty = new uint[10];
}
public sealed class AuctionHouseRecord
+21 -21
View File
@@ -46,16 +46,16 @@ namespace Game.DataStorage
public sealed class BattlePetBreedQualityRecord
{
public uint Id;
public float Modifier;
public byte Quality;
public float StateMultiplier;
public byte QualityEnum;
}
public sealed class BattlePetBreedStateRecord
{
public uint Id;
public short Value;
public byte State;
public uint BreedID;
public ushort Value;
public byte BattlePetStateID;
public uint BattlePetBreedID;
}
public sealed class BattlePetSpeciesRecord
@@ -63,22 +63,22 @@ namespace Game.DataStorage
public LocalizedString SourceText;
public LocalizedString Description;
public uint CreatureID;
public uint IconFileID;
public uint IconFileDataID;
public uint SummonSpellID;
public ushort Flags;
public byte PetType;
public sbyte Source;
public byte PetTypeEnum;
public sbyte SourceTypeEnum;
public uint Id;
public byte CardModelSceneID;
public byte LoadoutModelSceneID;
public byte CardUIModelSceneID;
public byte LoadoutUIModelSceneID;
}
public sealed class BattlePetSpeciesStateRecord
{
public uint Id;
public int Value;
public byte State;
public uint SpeciesID;
public byte BattlePetStateID;
public uint BattlePetSpeciesID;
}
public sealed class BattlemasterListRecord
@@ -88,10 +88,10 @@ namespace Game.DataStorage
public LocalizedString GameType;
public LocalizedString ShortDescription;
public LocalizedString LongDescription;
public uint IconFileDataID;
public int IconFileDataID;
public short[] MapId = new short[16];
public ushort HolidayWorldState;
public ushort PlayerConditionId;
public ushort RequiredPlayerConditionID;
public byte InstanceType;
public byte GroupsAllowed;
public byte MaxGroupSize;
@@ -106,14 +106,14 @@ namespace Game.DataStorage
public sealed class BroadcastTextRecord
{
public uint Id;
public LocalizedString MaleText;
public LocalizedString FemaleText;
public LocalizedString Text;
public LocalizedString Text1;
public ushort[] EmoteID = new ushort[3];
public ushort[] EmoteDelay = new ushort[3];
public ushort UnkEmoteID;
public byte Language;
public byte Type;
public uint PlayerConditionID;
public uint[] SoundID = new uint[2];
public ushort EmotesID;
public byte LanguageID;
public byte Flags;
public uint ConditionID;
public uint[] SoundEntriesID = new uint[2];
}
}
+72 -74
View File
@@ -23,7 +23,7 @@ namespace Game.DataStorage
public sealed class CharacterFacialHairStylesRecord
{
public uint ID;
public uint[] Geoset = new uint[5];
public int[] Geoset = new int[5];
public byte RaceID;
public byte SexID;
public byte VariationID;
@@ -32,16 +32,16 @@ namespace Game.DataStorage
public sealed class CharBaseSectionRecord
{
public uint ID;
public CharBaseSectionVariation Variation;
public byte ResolutionVariation;
public byte Resolution;
public CharBaseSectionVariation VariationEnum;
public byte ResolutionVariationEnum;
public byte LayoutResType;
}
public sealed class CharSectionsRecord
{
public uint Id;
public uint[] TextureFileDataID = new uint[3];
public ushort Flags;
public uint[] MaterialResourcesID = new uint[3];
public short Flags;
public byte RaceID;
public byte SexID;
public byte BaseSection;
@@ -55,7 +55,7 @@ namespace Game.DataStorage
public int[] ItemID = new int[24];
public uint PetDisplayID;
public byte ClassID;
public byte GenderID;
public byte SexID;
public byte OutfitID;
public byte PetFamilyID;
public uint RaceID;
@@ -64,10 +64,10 @@ namespace Game.DataStorage
public sealed class CharTitlesRecord
{
public uint Id;
public LocalizedString NameMale;
public LocalizedString NameFemale;
public LocalizedString Name;
public LocalizedString Name1;
public ushort MaskID;
public byte Flags;
public sbyte Flags;
}
public sealed class ChatChannelsRecord
@@ -76,7 +76,7 @@ namespace Game.DataStorage
public LocalizedString Name;
public LocalizedString Shortcut;
public ChannelDBCFlags Flags;
public byte FactionGroup;
public sbyte FactionGroup;
}
public sealed class ChrClassesRecord
@@ -88,18 +88,18 @@ namespace Game.DataStorage
public uint FileName;
public uint CreateScreenFileDataID;
public uint SelectScreenFileDataID;
public uint IconFileDataID;
public uint LowResScreenFileDataID;
public uint StartingLevel;
public uint IconFileDataID;
public int StartingLevel;
public ushort Flags;
public ushort CinematicSequenceID;
public ushort DefaultSpec;
public PowerType PowerType;
public PowerType DisplayPower;
public byte SpellClassSet;
public byte AttackPowerPerStrength;
public byte AttackPowerPerAgility;
public byte RangedAttackPowerPerAgility;
public byte Unk1;
public byte PrimaryStatPriority;
public uint Id;
}
@@ -116,57 +116,57 @@ namespace Game.DataStorage
public uint ClientFileString;
public LocalizedString Name;
public string NameFemale;
public string LowercaseName;
public string LowercaseNameFemale;
public uint Flags;
public uint MaleDisplayID;
public uint FemaleDisplayID;
public uint CreateScreenFileDataID;
public uint SelectScreenFileDataID;
public uint[] MaleCustomizeOffset = new uint[3];
public uint[] FemaleCustomizeOffset = new uint[3];
public uint LowResScreenFileDataID;
public uint StartingLevel;
public uint UIDisplayOrder;
public string NameLowercase;
public string NameFemaleLowercase;
public int Flags;
public uint MaleDisplayId;
public uint FemaleDisplayId;
public int CreateScreenFileDataID;
public int SelectScreenFileDataID;
public float[] MaleCustomizeOffset = new float[3];
public float[] FemaleCustomizeOffset = new float[3];
public int LowResScreenFileDataID;
public int StartingLevel;
public int UiDisplayOrder;
public ushort FactionID;
public ushort ResSicknessSpellID;
public ushort SplashSoundID;
public short ResSicknessSpellID;
public short SplashSoundID;
public ushort CinematicSequenceID;
public byte BaseLanguage;
public byte CreatureType;
public byte TeamID;
public byte RaceRelated;
public byte UnalteredVisualRaceID;
public byte CharComponentTextureLayoutID;
public byte DefaultClassID;
public byte NeutralRaceID;
public byte ItemAppearanceFrameRaceID;
public byte CharComponentTexLayoutHiResID;
public sbyte BaseLanguage;
public sbyte CreatureType;
public sbyte Alliance;
public sbyte RaceRelated;
public sbyte UnalteredVisualRaceID;
public sbyte CharComponentTextureLayoutID;
public sbyte DefaultClassID;
public sbyte NeutralRaceID;
public sbyte DisplayRaceID;
public sbyte CharComponentTexLayoutHiResID;
public uint Id;
public uint HighResMaleDisplayID;
public uint HighResFemaleDisplayID;
public uint HeritageArmorAchievementID;
public uint MaleCorpseBonesModelFileDataID;
public uint FemaleCorpseBonesModelFileDataID;
public uint[] AlteredFormTransitionSpellVisualID = new uint[3];
public uint[] AlteredFormTransitionSpellVisualKitID = new uint[3];
public uint HighResMaleDisplayId;
public uint HighResFemaleDisplayId;
public int HeritageArmorAchievementID;
public int MaleSkeletonFileDataID;
public int FemaleSkeletonFileDataID;
public uint[] AlteredFormStartVisualKitID = new uint[3];
public uint[] AlteredFormFinishVisualKitID = new uint[3];
}
public sealed class ChrSpecializationRecord
{
public string Name;
public string Name2;
public string FemaleName;
public string Description;
public uint[] MasterySpellID = new uint[PlayerConst.MaxMasterySpells];
public byte ClassID;
public byte OrderIndex;
public byte PetTalentType;
public byte Role;
public byte PrimaryStatOrder;
public byte PrimaryStatPriority;
public uint Id;
public uint IconFileDataID;
public int SpellIconFileID;
public ChrSpecializationFlag Flags;
public uint AnimReplacementSetID;
public int AnimReplacements;
public bool IsPetSpecialization()
{
@@ -180,7 +180,7 @@ namespace Game.DataStorage
public uint SoundID;
public Vector3 Origin;
public float OriginFacing;
public uint ModelFileDataID;
public uint FileDataID;
}
public sealed class CinematicSequencesRecord
@@ -195,12 +195,12 @@ namespace Game.DataStorage
public uint Id;
public uint BroadcastTextID;
public uint SpellVisualKitID;
public uint Duration;
public ushort NextLineID;
public ushort Unk1;
public byte Yell;
public byte Unk2;
public byte Unk3;
public int AdditionalDuration;
public ushort NextConversationLineID;
public ushort AnimKitID;
public byte SpeechType;
public byte StartAnimation;
public byte EndAnimation;
}
public sealed class CreatureDisplayInfoRecord
@@ -216,25 +216,25 @@ namespace Game.DataStorage
public uint PortraitTextureFileDataID;
public byte CreatureModelAlpha;
public ushort SoundID;
public float PlayerModelScale;
public float PlayerOverrideScale;
public uint PortraitCreatureDisplayInfoID;
public byte BloodID;
public ushort ParticleColorID;
public uint CreatureGeosetData;
public ushort ObjectEffectPackageID;
public ushort AnimReplacementSetID;
public sbyte UnarmedWeaponSubclass;
public sbyte UnarmedWeaponType;
public uint StateSpellVisualKitID;
public float InstanceOtherPlayerPetScale; // scale of not own player pets inside dungeons/raids/scenarios
public uint MountSpellVisualKitID;
public uint[] TextureVariation = new uint[3];
public float PetInstanceScale; // scale of not own player pets inside dungeons/raids/scenarios
public uint MountPoofSpellVisualKitID;
public uint[] TextureVariationFileDataID = new uint[3];
}
public sealed class CreatureDisplayInfoExtraRecord
{
public uint Id;
public uint FileDataID;
public uint HDFileDataID;
public uint BakeMaterialResourcesID;
public uint HDBakeMaterialResourcesID;
public byte DisplayRaceID;
public byte DisplaySexID;
public byte DisplayClassID;
@@ -253,7 +253,7 @@ namespace Game.DataStorage
public LocalizedString Name;
public float MinScale;
public float MaxScale;
public uint IconFileDataID;
public uint IconFileID;
public ushort[] SkillLine = new ushort[2];
public ushort PetFoodMask;
public byte MinScaleLevel;
@@ -271,8 +271,7 @@ namespace Game.DataStorage
public float CollisionWidth;
public float CollisionHeight;
public float MountHeight;
public float[] GeoBoxMin = new float[3];
public float[] GeoBoxMax = new float[3];
public float[] GeoBox = new float[6];
public float WorldEffectScale;
public float AttachedEffectScale;
public float MissileCollisionRadius;
@@ -289,8 +288,8 @@ namespace Game.DataStorage
public uint BloodID;
public byte FootprintTextureID;
public byte FoleyMaterialID;
public byte FootstepEffectID;
public byte DeathThudEffectID;
public byte FootstepCameraEffectID;
public byte DeathThudCameraEffectID;
public uint SoundID;
public uint CreatureGeosetDataID;
}
@@ -341,7 +340,7 @@ namespace Game.DataStorage
public byte CategoryID;
public byte SpellCategory;
public byte Quality;
public uint InventoryIconFileDataID;
public uint InventoryIconFileID;
public uint SpellWeight;
}
@@ -349,15 +348,14 @@ namespace Game.DataStorage
{
public uint ID;
public byte Type;
public byte Unused;
public byte Flags;
}
public sealed class CurvePointRecord
{
public uint Id;
public float X;
public float Y;
public Vector2 Pos;
public ushort CurveID;
public byte Index;
public byte OrderIndex;
}
}
+21 -21
View File
@@ -22,25 +22,25 @@ namespace Game.DataStorage
public sealed class DestructibleModelDataRecord
{
public uint Id;
public ushort StateDamagedDisplayID;
public ushort StateDestroyedDisplayID;
public ushort StateRebuildingDisplayID;
public ushort StateSmokeDisplayID;
public ushort State0Wmo;
public ushort State1Wmo;
public ushort State2Wmo;
public ushort State3Wmo;
public ushort HealEffectSpeed;
public byte StateDamagedImpactEffectDoodadSet;
public byte StateDamagedAmbientDoodadSet;
public byte StateDamagedNameSet;
public byte StateDestroyedDestructionDoodadSet;
public byte StateDestroyedImpactEffectDoodadSet;
public byte StateDestroyedAmbientDoodadSet;
public byte StateDestroyedNameSet;
public byte StateRebuildingDestructionDoodadSet;
public byte StateRebuildingImpactEffectDoodadSet;
public byte StateRebuildingAmbientDoodadSet;
public byte StateRebuildingNameSet;
public byte StateSmokeInitDoodadSet;
public byte StateSmokeAmbientDoodadSet;
public byte StateSmokeNameSet;
public byte State0ImpactEffectDoodadSet;
public byte State0AmbientDoodadSet;
public byte State0NameSet;
public byte State1DestructionDoodadSet;
public byte State1ImpactEffectDoodadSet;
public byte State1AmbientDoodadSet;
public byte State1NameSet;
public byte State2DestructionDoodadSet;
public byte State2ImpactEffectDoodadSet;
public byte State2AmbientDoodadSet;
public byte State2NameSet;
public byte State3InitDoodadSet;
public byte State3AmbientDoodadSet;
public byte State3NameSet;
public byte EjectDirection;
public byte DoNotHighlight;
public byte HealEffect;
@@ -60,7 +60,7 @@ namespace Game.DataStorage
public sbyte OldEnumValue;
public DifficultyFlags Flags;
public byte ToggleDifficultyID;
public byte ItemBonusTreeModID;
public byte ItemContext;
public byte OrderIndex;
}
@@ -74,7 +74,7 @@ namespace Game.DataStorage
public byte Flags;
public uint Id;
public uint OrderIndex;
public uint TextureFileDataID;
public uint SpellIconFileID;
}
public sealed class DurabilityCostsRecord
@@ -87,6 +87,6 @@ namespace Game.DataStorage
public sealed class DurabilityQualityRecord
{
public uint Id;
public float QualityMod;
public float Data;
}
}
+5 -5
View File
@@ -22,19 +22,19 @@ namespace Game.DataStorage
public uint Id;
public long RaceMask;
public uint EmoteSlashCommand;
public uint SpellVisualKitID;
public uint EmoteFlags;
public uint SpellVisualKitID;
public ushort AnimID;
public byte EmoteSpecProc;
public uint EmoteSpecProcParam;
public byte EmoteSoundID;
public short ClassMask;
public int ClassMask;
public byte EmoteSpecProcParam;
public ushort EmoteSoundID;
}
public sealed class EmotesTextRecord
{
public uint Id;
public LocalizedString Name;
public string Name;
public ushort EmoteID;
}
+13 -15
View File
@@ -22,21 +22,19 @@ namespace Game.DataStorage
{
public sealed class FactionRecord
{
public ulong[] ReputationRaceMask = new ulong[4];
public long[] ReputationRaceMask = new long[4];
public LocalizedString Name;
public string Description;
public uint Id;
public int[] ReputationBase = new int[4];
public float ParentFactionModIn; // Faction gains incoming rep * ParentFactionModIn
public float ParentFactionModOut; // Faction outputs rep * ParentFactionModOut as spillover reputation
public float[] ParentFactionMod = new float[2]; // Faction outputs rep * ParentFactionModOut as spillover reputation
public uint[] ReputationMax = new uint[4];
public short ReputationIndex;
public ushort[] ReputationClassMask = new ushort[4];
public ushort[] ReputationFlags = new ushort[4];
public ushort ParentFactionID;
public ushort ParagonFactionID;
public byte ParentFactionCapIn; // The highest rank the faction will profit from incoming spillover
public byte ParentFactionCapOut;
public byte[] ParentFactionCap = new byte[2]; // The highest rank the faction will profit from incoming spillover
public byte Expansion;
public byte Flags;
public byte FriendshipRepID;
@@ -53,10 +51,10 @@ namespace Game.DataStorage
public ushort Faction;
public ushort Flags;
public ushort[] Enemies = new ushort[4];
public ushort[] Friends = new ushort[4];
public byte Mask;
public byte FriendMask;
public byte EnemyMask;
public ushort[] Friend = new ushort[4];
public byte FactionGroup;
public byte FriendGroup;
public byte EnemyGroup;
public bool IsFriendlyTo(FactionTemplateRecord entry)
{
@@ -68,10 +66,10 @@ namespace Game.DataStorage
if (Enemies[i] == entry.Faction)
return false;
for (int i = 0; i < 4; ++i)
if (Friends[i] == entry.Faction)
if (Friend[i] == entry.Faction)
return true;
}
return Convert.ToBoolean(FriendMask & entry.Mask) || Convert.ToBoolean(Mask & entry.FriendMask);
return Convert.ToBoolean(FriendGroup & entry.FactionGroup) || Convert.ToBoolean(FactionGroup & entry.FriendGroup);
}
public bool IsHostileTo(FactionTemplateRecord entry)
{
@@ -83,19 +81,19 @@ namespace Game.DataStorage
if (Enemies[i] == entry.Faction)
return true;
for (int i = 0; i < 4; ++i)
if (Friends[i] == entry.Faction)
if (Friend[i] == entry.Faction)
return false;
}
return (EnemyMask & entry.Mask) != 0;
return (EnemyGroup & entry.FactionGroup) != 0;
}
public bool IsHostileToPlayers() { return (EnemyMask & (uint)FactionMasks.Player) != 0; }
public bool IsHostileToPlayers() { return (EnemyGroup & (uint)FactionMasks.Player) != 0; }
public bool IsNeutralToAll()
{
for (int i = 0; i < 4; ++i)
if (Enemies[i] != 0)
return false;
return EnemyMask == 0 && FriendMask == 0;
return EnemyGroup == 0 && FriendGroup == 0;
}
public bool IsContestedGuardFaction() { return Flags.HasAnyFlag((ushort)FactionTemplateFlags.ContestedGuard); }
public bool ShouldSparAttack() { return Flags.HasAnyFlag((ushort)FactionTemplateFlags.EnemySpar); }
+76 -79
View File
@@ -20,25 +20,6 @@ using Framework.GameMath;
namespace Game.DataStorage
{
public sealed class GameObjectsRecord
{
public LocalizedString Name;
public Vector3 Position;
public float RotationX;
public float RotationY;
public float RotationZ;
public float RotationW;
public float Size;
public int[] Data = new int[8];
public ushort MapID;
public ushort DisplayID;
public ushort PhaseID;
public ushort PhaseGroupID;
public byte PhaseUseFlags;
public GameObjectTypes Type;
public uint Id;
}
public sealed class GameObjectDisplayInfoRecord
{
public uint Id;
@@ -50,50 +31,66 @@ namespace Game.DataStorage
public ushort ObjectEffectPackageID;
}
public sealed class GameObjectsRecord
{
public LocalizedString Name;
public Vector3 Pos;
public float[] Rot = new float[4];
public float Scale;
public int[] PropValue = new int[8];
public ushort OwnerID;
public ushort DisplayID;
public ushort PhaseID;
public ushort PhaseGroupID;
public byte PhaseUseFlags;
public GameObjectTypes TypeID;
public uint Id;
}
public sealed class GarrAbilityRecord
{
public LocalizedString Name;
public LocalizedString Description;
public uint IconFileDataID;
public GarrisonAbilityFlags Flags;
public ushort OtherFactionGarrAbilityID;
public ushort FactionChangeGarrAbilityID;
public byte GarrAbilityCategoryID;
public byte FollowerTypeID;
public byte GarrFollowerTypeID;
public uint Id;
}
public sealed class GarrBuildingRecord
{
public uint Id;
public string NameAlliance;
public string NameHorde;
public string AllianceName;
public string HordeName;
public string Description;
public string Tooltip;
public uint HordeGameObjectID;
public uint AllianceGameObjectID;
public uint IconFileDataID;
public ushort CostCurrencyID;
public ushort HordeTexPrefixKitID;
public ushort AllianceTexPrefixKitID;
public ushort AllianceActivationScenePackageID;
public ushort HordeActivationScenePackageID;
public ushort FollowerRequiredGarrAbilityID;
public ushort FollowerGarrAbilityEffectID;
public short CostMoney;
public byte Unknown;
public byte Type;
public byte Level;
public ushort CurrencyTypeID;
public ushort HordeUiTextureKitID;
public ushort AllianceUiTextureKitID;
public ushort AllianceSceneScriptPackageID;
public ushort HordeSceneScriptPackageID;
public ushort GarrAbilityID;
public ushort BonusGarrAbilityID;
public short GoldCost;
public byte GarrSiteID;
public byte BuildingType;
public byte UpgradeLevel;
public GarrisonBuildingFlags Flags;
public byte MaxShipments;
public byte ShipmentCapacity;
public byte GarrTypeID;
public ushort BuildDuration;
public int CostCurrencyAmount;
public byte BonusAmount;
public ushort BuildSeconds;
public int CurrencyQty;
public byte MaxAssignments;
}
public sealed class GarrBuildingPlotInstRecord
{
public Vector2 LandmarkOffset;
public Vector2 MapOffset;
public ushort UiTextureAtlasMemberID;
public ushort GarrSiteLevelPlotInstID;
public byte GarrBuildingID;
@@ -102,12 +99,12 @@ namespace Game.DataStorage
public sealed class GarrClassSpecRecord
{
public LocalizedString NameMale;
public LocalizedString NameFemale;
public LocalizedString NameGenderless;
public ushort ClassAtlasID; // UiTextureAtlasMember.db2 ref
public LocalizedString ClassSpec;
public LocalizedString ClassSpecMale;
public LocalizedString ClassSpecFemale;
public ushort UiTextureAtlasMemberID; // UiTextureAtlasMember.db2 ref
public ushort GarrFollItemSetID;
public byte Limit;
public byte FollowerClassLimit;
public byte Flags;
public uint Id;
}
@@ -116,35 +113,35 @@ namespace Game.DataStorage
{
public string HordeSourceText;
public string AllianceSourceText;
public string Name;
public string TitleName;
public uint HordeCreatureID;
public uint AllianceCreatureID;
public uint HordePortraitIconID;
public uint AlliancePortraitIconID;
public uint HordeAddedBroadcastTextID;
public uint AllianceAddedBroadcastTextID;
public uint HordeIconFileDataID;
public uint AllianceIconFileDataID;
public uint HordeSlottingBroadcastTextID;
public uint AllySlottingBroadcastTextID;
public ushort HordeGarrFollItemSetID;
public ushort AllianceGarrFollItemSetID;
public ushort ItemLevelWeapon;
public ushort ItemLevelArmor;
public ushort HordeListPortraitTextureKitID;
public ushort AllianceListPortraitTextureKitID;
public byte FollowerTypeID;
public byte HordeUiAnimRaceInfoID;
public byte AllianceUiAnimRaceInfoID;
public ushort HordeUITextureKitID;
public ushort AllianceUITextureKitID;
public byte GarrFollowerTypeID;
public byte HordeGarrFollRaceID;
public byte AllianceGarrFollRaceID;
public byte Quality;
public byte HordeGarrClassSpecID;
public byte AllianceGarrClassSpecID;
public byte Level;
public byte Unknown1;
public byte FollowerLevel;
public byte Gender;
public byte Flags;
public sbyte Unknown2;
public sbyte Unknown3;
public sbyte HordeSourceTypeEnum;
public sbyte AllianceSourceTypeEnum;
public byte GarrTypeID;
public byte MaxDurability;
public byte Class;
public byte HordeFlavorTextGarrStringID;
public byte AllianceFlavorTextGarrStringID;
public byte Vitality;
public byte ChrClassID;
public byte HordeFlavorGarrStringID;
public byte AllianceFlavorGarrStringID;
public uint Id;
}
@@ -160,12 +157,12 @@ namespace Game.DataStorage
{
public uint Id;
public LocalizedString Name;
public uint AllianceConstructionGameObjectID;
public uint HordeConstructionGameObjectID;
public byte GarrPlotUICategoryID;
public uint AllianceConstructObjID;
public uint HordeConstructObjID;
public byte UiCategoryID;
public byte PlotType;
public byte Flags;
public uint[] Count = new uint[2];
public uint[] UpgradeRequirement = new uint[2];
}
public sealed class GarrPlotBuildingRecord
@@ -178,38 +175,38 @@ namespace Game.DataStorage
public sealed class GarrPlotInstanceRecord
{
public uint Id;
public LocalizedString Name;
public string Name;
public byte GarrPlotID;
}
public sealed class GarrSiteLevelRecord
{
public uint Id;
public Vector2 TownHall;
public Vector2 TownHallUiPos;
public ushort MapID;
public ushort SiteID;
public ushort MovieID;
public ushort UpgradeResourceCost;
public ushort UpgradeMoneyCost;
public byte Level;
public byte UITextureKitID;
public byte Level2;
public ushort UiTextureKitID;
public ushort UpgradeMovieID;
public ushort UpgradeCost;
public ushort UpgradeGoldCost;
public byte GarrLevel;
public byte GarrSiteID;
public byte MaxBuildingLevel;
}
public sealed class GarrSiteLevelPlotInstRecord
{
public uint Id;
public Vector2 Landmark;
public Vector2 UiMarkerPos;
public ushort GarrSiteLevelID;
public byte GarrPlotInstanceID;
public byte Unknown;
public byte UiMarkerSize;
}
public sealed class GemPropertiesRecord
{
public uint Id;
public SocketColor Type;
public ushort EnchantID;
public ushort EnchantId;
public ushort MinItemLevel;
}
@@ -225,7 +222,7 @@ namespace Game.DataStorage
public uint Id;
public uint SpellID;
public ushort SpellIconID;
public byte Type;
public byte GlyphType;
public byte GlyphExclusiveCategoryID;
}
+5 -4
View File
@@ -23,12 +23,13 @@ namespace Game.DataStorage
{
public string SourceText;
public uint ItemID;
public uint[] OldItem = new uint[2];
public uint NextDifficultyItemID;
public uint LegacyItemID;
public uint LegacyUpgradedItemID;
public uint StaticUpgradedItemID;
public uint[] UpgradeItemID = new uint[3];
public ushort[] ItemBonusListID = new ushort[3];
public ushort[] UpgradeItemBonusListID = new ushort[3];
public byte Flags;
public byte Source;
public byte SourceTypeEnum;
public uint Id;
}
+122 -119
View File
@@ -22,50 +22,50 @@ namespace Game.DataStorage
public sealed class ImportPriceArmorRecord
{
public uint Id;
public float ClothFactor;
public float LeatherFactor;
public float MailFactor;
public float PlateFactor;
public float ClothModifier;
public float LeatherModifier;
public float ChainModifier;
public float PlateModifier;
}
public sealed class ImportPriceQualityRecord
{
public uint Id;
public float Factor;
public float Data;
}
public sealed class ImportPriceShieldRecord
{
public uint Id;
public float Factor;
public float Data;
}
public sealed class ImportPriceWeaponRecord
{
public uint Id;
public float Factor;
public float Data;
}
public sealed class ItemRecord
{
public uint Id;
public uint FileDataID;
public ItemClass Class;
public byte SubClass;
public sbyte SoundOverrideSubclass;
public sbyte Material;
public uint IconFileDataID;
public ItemClass ClassID;
public byte SubclassID;
public sbyte SoundOverrideSubclassID;
public byte Material;
public InventoryType inventoryType;
public byte Sheath;
public byte GroupSoundsID;
public byte SheatheType;
public byte ItemGroupSoundsID;
}
public sealed class ItemAppearanceRecord
{
public uint Id;
public uint DisplayID;
public uint IconFileDataID;
public uint ItemDisplayInfoID;
public uint DefaultIconFileDataID;
public uint UIOrder;
public byte ObjectComponentSlot;
public byte DisplayType;
}
public sealed class ItemArmorQualityRecord
@@ -85,7 +85,10 @@ namespace Game.DataStorage
public sealed class ItemArmorTotalRecord
{
public uint Id;
public float[] Value = new float[4];
public float Cloth;
public float Leather;
public float Mail;
public float Plate;
public ushort ItemLevel;
}
@@ -99,48 +102,48 @@ namespace Game.DataStorage
{
public uint Id;
public int[] Value = new int[3];
public ushort BonusListID;
public ushort ParentItemBonusListID;
public ItemBonusType Type;
public byte Index;
public byte OrderIndex;
}
public sealed class ItemBonusListLevelDeltaRecord
{
public short Delta;
public short ItemLevelDelta;
public uint Id;
}
public sealed class ItemBonusTreeNodeRecord
{
public uint Id;
public ushort SubTreeID;
public ushort BonusListID;
public ushort ItemLevelSelectorID;
public byte BonusTreeModID;
public uint BonusTreeID;
public ushort ChildItemBonusTreeID;
public ushort ChildItemBonusListID;
public ushort ChildItemLevelSelectorID;
public byte ItemContext;
public uint ParentItemBonusTreeID;
}
public sealed class ItemChildEquipmentRecord
{
public uint Id;
public uint AltItemID;
public byte AltEquipmentSlot;
public uint ItemID;
public uint ChildItemID;
public byte ChildItemEquipSlot;
public uint ParentItemID;
}
public sealed class ItemClassRecord
{
public uint Id;
public string Name;
public float PriceMod;
public byte OldEnumValue;
public string ClassName;
public float PriceModifier;
public byte ClassID;
public byte Flags;
}
public sealed class ItemCurrencyCostRecord
{
public uint Id;
public uint ItemId;
public uint ItemID;
}
// common struct for:
@@ -155,71 +158,71 @@ namespace Game.DataStorage
public sealed class ItemDamageRecord
{
public uint Id;
public float[] DPS = new float[7];
public float[] Quality = new float[7];
public ushort ItemLevel;
}
public sealed class ItemDisenchantLootRecord
{
public uint Id;
public ushort MinItemLevel;
public ushort MaxItemLevel;
public ushort RequiredDisenchantSkill;
public sbyte ItemSubClass;
public byte ItemQuality;
public sbyte Expansion;
public uint ItemClass;
public ushort MinLevel;
public ushort MaxLevel;
public ushort SkillRequired;
public sbyte Subclass;
public byte Quality;
public sbyte ExpansionID;
public uint ClassID;
}
public sealed class ItemEffectRecord
{
public uint Id;
public uint SpellID;
public int Cooldown;
public int CategoryCooldown;
public int CoolDownMSec;
public int CategoryCoolDownMSec;
public short Charges;
public ushort Category;
public ushort SpellCategoryID;
public ushort ChrSpecializationID;
public byte OrderIndex;
public ItemSpelltriggerType Trigger;
public uint ItemID;
public byte LegacySlotIndex;
public ItemSpelltriggerType TriggerType;
public uint ParentItemID;
}
public sealed class ItemExtendedCostRecord
{
public uint Id;
public uint[] RequiredItem = new uint[ItemConst.MaxItemExtCostItems]; // required item id
public uint[] RequiredCurrencyCount = new uint[ItemConst.MaxItemExtCostCurrencies]; // required curency count
public ushort[] RequiredItemCount = new ushort[ItemConst.MaxItemExtCostItems]; // required count of 1st item
public ushort RequiredPersonalArenaRating; // required personal arena rating
public ushort[] RequiredCurrency = new ushort[ItemConst.MaxItemExtCostCurrencies]; // required curency id
public byte RequiredArenaSlot; // arena slot restrictions (min slot value)
public byte RequiredFactionId;
public byte RequiredFactionStanding;
public byte RequirementFlags;
public uint[] ItemID = new uint[ItemConst.MaxItemExtCostItems]; // required item id
public uint[] CurrencyCount = new uint[ItemConst.MaxItemExtCostCurrencies]; // required curency count
public ushort[] ItemCount = new ushort[ItemConst.MaxItemExtCostItems]; // required count of 1st item
public ushort RequiredArenaRating; // required personal arena rating
public ushort[] CurrencyID = new ushort[ItemConst.MaxItemExtCostCurrencies]; // required curency id
public byte ArenaBracket; // arena slot restrictions (min slot value)
public byte MinFactionID;
public byte MinReputation;
public byte Flags;
public byte RequiredAchievement;
}
public sealed class ItemLevelSelectorRecord
{
public uint ID;
public ushort ItemLevel;
public ushort MinItemLevel;
public ushort ItemLevelSelectorQualitySetID;
}
public sealed class ItemLevelSelectorQualityRecord
{
public uint ID;
public uint ItemBonusListID;
public uint QualityItemBonusListID;
public byte Quality;
public uint ItemLevelSelectorQualitySetID;
public uint ParentILSQualitySetID;
}
public sealed class ItemLevelSelectorQualitySetRecord
{
public uint ID;
public ushort ItemLevelMin;
public ushort ItemLevelMax;
public ushort IlvlRare;
public ushort IlvlEpic;
}
public sealed class ItemLimitCategoryRecord
@@ -234,17 +237,17 @@ namespace Game.DataStorage
{
public uint ItemID;
public uint Id;
public byte AppearanceModID;
public ushort AppearanceID;
public byte Index;
public byte SourceType;
public byte ItemAppearanceModifierID;
public ushort ItemAppearanceID;
public byte OrderIndex;
public byte TransmogSourceTypeEnum;
}
public sealed class ItemPriceBaseRecord
{
public uint Id;
public float ArmorFactor;
public float WeaponFactor;
public float Armor;
public float Weapon;
public ushort ItemLevel;
}
@@ -266,19 +269,19 @@ namespace Game.DataStorage
public sealed class ItemSearchNameRecord
{
public ulong AllowableRace;
public LocalizedString Name;
public LocalizedString Display;
public uint Id;
public uint[] Flags = new uint[3];
public ushort ItemLevel;
public byte Quality;
public byte RequiredExpansion;
public byte OverallQualityID;
public byte ExpansionID;
public byte RequiredLevel;
public ushort RequiredReputationFaction;
public byte RequiredReputationRank;
public ushort MinFactionID;
public byte MinReputation;
public short AllowableClass;
public ushort RequiredSkill;
public ushort RequiredSkillRank;
public uint RequiredSpell;
public uint RequiredAbility;
}
public sealed class ItemSetRecord
@@ -288,7 +291,7 @@ namespace Game.DataStorage
public uint[] ItemID = new uint[17];
public ushort RequiredSkillRank;
public byte RequiredSkill;
public ItemSetFlags Flags;
public ItemSetFlags SetFlags;
}
public sealed class ItemSetSpellRecord
@@ -304,75 +307,75 @@ namespace Game.DataStorage
{
public uint Id;
public long AllowableRace;
public LocalizedString Name;
public string Name2;
public string Name3;
public string Name4;
public LocalizedString Display;
public string Display2;
public string Display3;
public string Display4;
public string Description;
public uint[] Flags = new uint[4];
public float Unk1;
public float Unk2;
public uint BuyCount;
public float PriceRandomValue;
public float PriceVariance;
public uint VendorStackCount;
public uint BuyPrice;
public uint SellPrice;
public uint RequiredSpell;
public uint RequiredAbility;
public uint MaxCount;
public uint Stackable;
public int[] ItemStatAllocation = new int[ItemConst.MaxStats];
public float[] ItemStatSocketCostMultiplier = new float[ItemConst.MaxStats];
public float RangedModRange;
public int[] StatPercentEditor = new int[ItemConst.MaxStats];
public float[] StatPercentageOfSocket = new float[ItemConst.MaxStats];
public float ItemRange;
public uint BagFamily;
public float ArmorDamageModifier;//wrong?
public uint Duration;
public float StatScalingFactor;
public float QualityModifier;
public uint DurationInInventory;
public float DmgVariance;
public short AllowableClass;
public ushort ItemLevel;
public ushort RequiredSkill;
public ushort RequiredSkillRank;
public ushort RequiredReputationFaction;
public ushort MinFactionID;
public short[] ItemStatValue = new short[ItemConst.MaxStats];
public ushort ScalingStatDistribution;
public ushort Delay;
public ushort PageText;
public ushort StartQuest;
public ushort ScalingStatDistributionID;
public ushort ItemDelay;
public ushort PageID;
public ushort StartQuestID;
public ushort LockID;
public ushort RandomProperty;
public ushort RandomSuffix;
public ushort RandomSelect;
public ushort ItemRandomSuffixGroupID;
public ushort ItemSet;
public ushort Area;
public ushort Map;
public ushort TotemCategory;
public ushort SocketBonus;
public ushort ZoneBound;
public ushort InstanceBound;
public ushort TotemCategoryID;
public ushort SocketMatchEnchantmentId;
public ushort GemProperties;
public ushort ItemLimitCategory;
public ushort HolidayID;
public ushort RequiredTransmogHolidayID;
public ushort LimitCategory;
public ushort RequiredHoliday;
public ushort RequiredTransmogHoliday;
public ushort ItemNameDescriptionID;
public byte Quality;
public byte OverallQualityID;
public InventoryType inventoryType;
public sbyte RequiredLevel;
public byte RequiredHonorRank;
public byte RequiredCityRank;
public byte RequiredReputationRank;
public byte RequiredPVPRank;
public byte RequiredPVPMedal;
public byte MinReputation;
public byte ContainerSlots;
public sbyte[] ItemStatType = new sbyte[ItemConst.MaxStats];
public sbyte[] StatModifierBonusStat = new sbyte[ItemConst.MaxStats];
public byte DamageType;
public byte Bonding;
public byte LanguageID;
public byte PageMaterial;
public byte PageMaterialID;
public sbyte Material;
public byte Sheath;
public byte[] SocketColor = new byte[ItemConst.MaxGemSockets];
public byte CurrencySubstitutionID;
public byte CurrencySubstitutionCount;
public byte SheatheType;
public byte[] SocketType = new byte[ItemConst.MaxGemSockets];
public byte SpellWeightCategory;
public byte SpellWeight;
public byte ArtifactID;
public byte RequiredExpansion;
public byte ExpansionID;
}
public sealed class ItemSpecRecord
{
public uint Id;
public ushort SpecID;
public ushort SpecializationID;
public byte MinLevel;
public byte MaxLevel;
public byte ItemType;
@@ -390,17 +393,17 @@ namespace Game.DataStorage
public sealed class ItemUpgradeRecord
{
public uint Id;
public uint CurrencyCost;
public ushort PrevItemUpgradeID;
public ushort CurrencyID;
public uint CurrencyAmount;
public ushort PrerequisiteID;
public ushort CurrencyType;
public byte ItemUpgradePathID;
public byte ItemLevelBonus;
public byte ItemLevelIncrement;
}
public sealed class ItemXBonusTreeRecord
{
public uint Id;
public ushort BonusTreeID;
public ushort ItemBonusTreeID;
public uint ItemID;
}
}
+17 -17
View File
@@ -26,23 +26,23 @@ namespace Game.DataStorage
public LocalizedString Name;
public string Description;
public LfgFlags Flags;
public float MinItemLevel;
public float MinGear;
public ushort MaxLevel;
public ushort TargetLevelMax;
public short MapID;
public ushort RandomID;
public ushort ScenarioID;
public ushort LastBossJournalEncounterID;
public ushort FinalEncounterID;
public ushort BonusReputationAmount;
public ushort MentorItemLevel;
public ushort PlayerConditionID;
public ushort RequiredPlayerConditionId;
public byte MinLevel;
public byte TargetLevel;
public byte TargetLevelMin;
public Difficulty DifficultyID;
public LfgType Type;
public LfgType TypeID;
public byte Faction;
public byte Expansion;
public byte ExpansionLevel;
public byte OrderIndex;
public byte GroupID;
public byte CountTank;
@@ -51,30 +51,30 @@ namespace Game.DataStorage
public byte MinCountTank;
public byte MinCountHealer;
public byte MinCountDamage;
public byte SubType;
public byte Subtype;
public byte MentorCharLevel;
public int TextureFileDataID;
public int RewardIconFileDataID;
public int ProposalTextureFileDataID;
public int IconTextureFileID;
public int RewardsBgTextureFileID;
public int PopupBgTextureFileID;
// Helpers
public uint Entry() { return (uint)(Id + ((int)Type << 24)); }
public uint Entry() { return (uint)(Id + ((int)TypeID << 24)); }
}
public sealed class LightRecord
{
public uint Id;
public Vector3 Pos;
public float FalloffStart;
public float FalloffEnd;
public ushort MapID;
public Vector3 GameCoords;
public float GameFalloffStart;
public float GameFalloffEnd;
public ushort ContinentID;
public ushort[] LightParamsID = new ushort[8];
}
public sealed class LiquidTypeRecord
{
public uint Id;
public LocalizedString Name;
public string Name;
public string[] Texture = new string[6];
public uint SpellID;
public float MaxDarkenDepth;
@@ -87,11 +87,11 @@ namespace Game.DataStorage
public uint[] Int = new uint[4];
public ushort Flags;
public ushort LightID;
public byte LiquidType;
public byte SoundBank;
public byte ParticleMovement;
public byte ParticleTexSlots;
public byte MaterialID;
public byte[] DepthTexCount = new byte[6];
public byte[] FrameCountTexture = new byte[6];
public ushort SoundID;
}
+28 -27
View File
@@ -33,11 +33,11 @@ namespace Game.DataStorage
public LocalizedString MapName;
public string MapDescription0; // Horde
public string MapDescription1; // Alliance
public string ShortDescription;
public string LongDescription;
public string PvpShortDescription;
public string PvpLongDescription;
public MapFlags[] Flags = new MapFlags[2];
public float MinimapIconScale;
public Vector2 CorpsePos; // entrance coordinates in ghost mode (in most cases = normal entrance)
public Vector2 Corpse; // entrance coordinates in ghost mode (in most cases = normal entrance)
public ushort AreaTableID;
public ushort LoadingScreenID;
public short CorpseMapID; // map_id of entrance map in ghost mode (continent always and in most cases = normal entrance)
@@ -46,7 +46,7 @@ namespace Game.DataStorage
public short CosmeticParentMapID;
public ushort WindSettingsID;
public MapTypes InstanceType;
public byte unk5;
public byte MapType;
public byte ExpansionID;
public byte MaxPlayers;
public byte TimeOffset;
@@ -76,8 +76,8 @@ namespace Game.DataStorage
if (CorpseMapID < 0)
return false;
mapid = (uint)CorpseMapID;
x = CorpsePos.X;
y = CorpsePos.Y;
x = Corpse.X;
y = Corpse.Y;
return true;
}
@@ -93,21 +93,21 @@ namespace Game.DataStorage
public sealed class MapDifficultyRecord
{
public uint Id;
public LocalizedString Message_lang; // m_message_lang (text showed when transfer to map failed)
public LocalizedString Message; // m_message_lang (text showed when transfer to map failed)
public byte DifficultyID;
public byte RaidDurationType; // 1 means daily reset, 2 means weekly
public byte ResetInterval; // 1 means daily reset, 2 means weekly
public byte MaxPlayers; // m_maxPlayers some heroic versions have 0 when expected same amount as in normal version
public byte LockID;
public byte Flags;
public byte ItemBonusTreeModID;
public uint Context;
public byte ItemContext;
public uint ItemContextPickerID;
public uint MapID;
public uint GetRaidDuration()
{
if (RaidDurationType == 1)
if (ResetInterval == 1)
return 86400;
if (RaidDurationType == 2)
if (ResetInterval == 2)
return 604800;
return 0;
}
@@ -116,10 +116,11 @@ namespace Game.DataStorage
public sealed class ModifierTreeRecord
{
public uint Id;
public uint[] Asset = new uint[2];
public uint Asset;
public uint SecondaryAsset;
public uint Parent;
public byte Type;
public byte Unk700;
public byte TertiaryAsset;
public byte Operator;
public byte Amount;
}
@@ -128,14 +129,14 @@ namespace Game.DataStorage
{
public string Name;
public string Description;
public string SourceDescription;
public uint SpellId;
public float CameraPivotMultiplier;
public ushort MountTypeId;
public string SourceText;
public uint SourceSpellID;
public float MountFlyRideHeight;
public ushort MountTypeID;
public ushort Flags;
public byte Source;
public byte SourceTypeEnum;
public uint Id;
public uint PlayerConditionId;
public uint PlayerConditionID;
public byte UiModelSceneID;
public bool IsSelfMount() { return (Flags & (ushort)MountFlags.SelfMount) != 0; }
@@ -143,14 +144,14 @@ namespace Game.DataStorage
public sealed class MountCapabilityRecord
{
public uint RequiredSpell;
public uint SpeedModSpell;
public ushort RequiredRidingSkill;
public ushort RequiredArea;
public short RequiredMap;
public uint ReqSpellKnownID;
public uint ModSpellAuraID;
public ushort ReqRidingSkill;
public ushort ReqAreaID;
public short ReqMapID;
public MountCapabilityFlags Flags;
public uint Id;
public byte RequiredAura;
public byte ReqSpellAuraID;
}
public sealed class MountTypeXCapabilityRecord
@@ -164,7 +165,7 @@ namespace Game.DataStorage
public sealed class MountXDisplayRecord
{
public uint Id;
public uint DisplayID;
public uint CreatureDisplayInfoID;
public uint PlayerConditionID;
public uint MountID;
}
+2 -2
View File
@@ -20,8 +20,8 @@ namespace Game.DataStorage
public sealed class NameGenRecord
{
public uint Id;
public LocalizedString Name;
public byte Race;
public string Name;
public byte RaceID;
public byte Sex;
}
+2 -2
View File
@@ -22,8 +22,8 @@ namespace Game.DataStorage
public sealed class OverrideSpellDataRecord
{
public uint Id;
public uint[] SpellID = new uint[SharedConst.MaxOverrideSpell];
public uint PlayerActionbarFileDataID;
public uint[] Spells = new uint[SharedConst.MaxOverrideSpell];
public uint PlayerActionBarFileDataID;
public byte Flags;
}
}
+21 -21
View File
@@ -51,7 +51,7 @@ namespace Game.DataStorage
public ushort MaxFactionID;
public byte MaxReputation;
public uint ReputationLogic;
public byte Unknown1;
public byte CurrentPvpFaction;
public byte MinPVPRank;
public byte MaxPVPRank;
public byte PvpMedal;
@@ -91,7 +91,7 @@ namespace Game.DataStorage
public byte PowerTypeComp;
public byte PowerTypeValue;
public uint ModifierTreeID;
public int MainHandItemSubclassMask;
public int WeaponSubclassMask;
public ushort[] SkillID = new ushort[4];
public short[] MinSkill = new short[4];
public short[] MaxSkill = new short[4];
@@ -106,7 +106,7 @@ namespace Game.DataStorage
public ushort[] Explored = new ushort[2];
public uint[] Time = new uint[2];
public uint[] AuraSpellID = new uint[4];
public byte[] AuraCount = new byte[4];
public byte[] AuraStacks = new byte[4];
public ushort[] Achievement = new ushort[4];
public byte[] LfgStatus = new byte[4];
public byte[] LfgCompare = new byte[4];
@@ -122,7 +122,7 @@ namespace Game.DataStorage
{
public uint Id;
public uint GlobalStringBaseTag;
public byte PowerType;
public byte ActualType;
public byte Red;
public byte Green;
public byte Blue;
@@ -131,25 +131,25 @@ namespace Game.DataStorage
public sealed class PowerTypeRecord
{
public uint Id;
public string PowerTypeToken;
public string PowerCostToken;
public float RegenerationPeace;
public float RegenerationCombat;
public short MaxPower;
public ushort RegenerationDelay;
public string NameGlobalStringTag;
public string CostGlobalStringTag;
public float RegenPeace;
public float RegenCombat;
public short MaxBasePower;
public ushort RegenInterruptTimeMS;
public ushort Flags;
public PowerType PowerTypeEnum;
public sbyte RegenerationMin;
public sbyte RegenerationCenter;
public sbyte RegenerationMax;
public byte UIModifier;
public sbyte MinPower;
public sbyte CenterPower;
public sbyte DefaultPower;
public sbyte DisplayModifier;
}
public sealed class PrestigeLevelInfoRecord
{
public uint Id;
public string PrestigeText;
public uint IconID;
public string Name;
public uint BadgeTextureFileDataID;
public byte PrestigeLevel;
public PrestigeLevelInfoFlags Flags;
@@ -159,27 +159,27 @@ namespace Game.DataStorage
public sealed class PvpDifficultyRecord
{
public uint Id;
public byte BracketID;
public byte RangeIndex;
public byte MinLevel;
public byte MaxLevel;
public uint MapID;
// helpers
public BattlegroundBracketId GetBracketId() { return (BattlegroundBracketId)BracketID; }
public BattlegroundBracketId GetBracketId() { return (BattlegroundBracketId)RangeIndex; }
}
public sealed class PvpItemRecord
{
public uint Id;
public uint ItemID;
public byte ItemLevelBonus;
public byte ItemLevelDelta;
}
public sealed class PvpRewardRecord
{
public uint Id;
public byte HonorLevel;
public byte Prestige;
public byte PrestigeLevel;
public ushort RewardPackID;
}
@@ -189,7 +189,7 @@ namespace Game.DataStorage
public LocalizedString Description;
public uint SpellID;
public uint OverridesSpellID;
public int ExtraSpellID;
public int ActionBarSpellID;
public int TierID;
public byte ColumnIndex;
public byte Flags;
+7 -7
View File
@@ -22,29 +22,29 @@ namespace Game.DataStorage
public sealed class QuestFactionRewardRecord
{
public uint Id;
public short[] QuestRewFactionValue = new short[10];
public short[] Difficulty = new short[10];
}
public sealed class QuestMoneyRewardRecord
{
public uint Id;
public uint[] Money = new uint[10];
public uint[] Difficulty = new uint[10];
}
public sealed class QuestPackageItemRecord
{
public uint Id;
public uint ItemID;
public ushort QuestPackageID;
public QuestPackageFilter FilterType;
public byte ItemCount;
public ushort PackageID;
public QuestPackageFilter DisplayType;
public byte ItemQuantity;
}
public sealed class QuestSortRecord
{
public uint Id;
public LocalizedString SortName;
public byte SortOrder;
public byte UiOrderIndex;
}
public sealed class QuestV2Record
@@ -56,6 +56,6 @@ namespace Game.DataStorage
public sealed class QuestXPRecord
{
public uint Id;
public ushort[] Exp = new ushort[10];
public ushort[] Difficulty = new ushort[10];
}
}
+7 -7
View File
@@ -20,9 +20,9 @@ namespace Game.DataStorage
public sealed class RandPropPointsRecord
{
public uint Id;
public uint[] EpicPropertiesPoints = new uint[5];
public uint[] RarePropertiesPoints = new uint[5];
public uint[] UncommonPropertiesPoints = new uint[5];
public uint[] Epic = new uint[5];
public uint[] Superior = new uint[5];
public uint[] Good = new uint[5];
}
public sealed class RewardPackRecord
@@ -31,16 +31,16 @@ namespace Game.DataStorage
public uint Money;
public float ArtifactXPMultiplier;
public byte ArtifactXPDifficulty;
public byte ArtifactCategoryID;
public ushort TitleID;
public ushort Unused;
public byte ArtifactXPCategoryID;
public ushort CharTitleID;
public ushort TreasurePickerID;
}
public sealed class RewardPackXItemRecord
{
public uint Id;
public uint ItemID;
public uint Amount;
public uint ItemQuantity;
public uint RewardPackID;
}
+60 -77
View File
@@ -32,7 +32,7 @@ namespace Game.DataStorage
public sealed class ScalingStatDistributionRecord
{
public uint Id;
public ushort ItemLevelCurveID;
public ushort PlayerLevelToItemLevelCurveID;
public byte MinLevel;
public uint MaxLevel;
}
@@ -41,7 +41,7 @@ namespace Game.DataStorage
{
public uint Id;
public LocalizedString Name;
public ushort Data; // Seems to indicate different things, for zone invasions, this is the area id
public ushort AreaTableID;
public byte Flags;
public byte Type;
}
@@ -50,14 +50,14 @@ namespace Game.DataStorage
{
public uint Id;
public LocalizedString Description;
public LocalizedString Name;
public LocalizedString Title;
public ushort ScenarioID;
public ushort PreviousStepID; // Used in conjunction with Proving Grounds scenarios, when sequencing steps (Not using step order?)
public ushort QuestRewardID;
public byte Step;
public ushort Supersedes; // Used in conjunction with Proving Grounds scenarios, when sequencing steps (Not using step order?)
public ushort RewardQuestID;
public byte OrderIndex;
public ScenarioStepFlags Flags;
public ushort CriteriaTreeID;
public byte BonusRequiredStepID; // Bonus step can only be completed if scenario is in the step specified in this field
public ushort CriteriaTreeId;
public byte RelatedStep; // Bonus step can only be completed if scenario is in the step specified in this field
// helpers
public bool IsBonusObjective()
@@ -69,8 +69,8 @@ namespace Game.DataStorage
public sealed class SceneScriptRecord
{
public uint Id;
public ushort PrevScriptId;
public ushort NextScriptId;
public ushort FirstSceneScriptID;
public ushort NextSceneScriptID;
}
public sealed class SceneScriptGlobalTextRecord
@@ -102,15 +102,15 @@ namespace Game.DataStorage
public ushort Flags;
public SkillCategory CategoryID;
public byte CanLink;
public uint IconFileDataID;
public uint SpellIconFileID;
public byte ParentSkillLineID;
}
public sealed class SkillLineAbilityRecord
{
public ulong RaceMask;
public long RaceMask;
public uint Id;
public uint SpellID;
public uint Spell;
public uint SupercedesSpell;
public ushort SkillLine;
public ushort TrivialSkillLineRankHigh;
@@ -153,7 +153,7 @@ namespace Game.DataStorage
public float PitchVariationMinus;
public float PitchAdjust;
public ushort BusOverwriteID;
public byte Unk700;
public byte MaxInstances;
}
public sealed class SpecializationSpellsRecord
@@ -162,7 +162,7 @@ namespace Game.DataStorage
public uint SpellID;
public uint OverridesSpellID;
public ushort SpecID;
public byte OrderIndex;
public byte DisplayOrder;
public uint Id;
}
@@ -206,9 +206,9 @@ namespace Game.DataStorage
public sealed class SpellCastTimesRecord
{
public uint Id;
public int CastTime;
public int MinCastTime;
public short CastTimePerLevel;
public int Base;
public int Minimum;
public short PerLevel;
}
public sealed class SpellCastingRequirementsRecord
@@ -245,7 +245,7 @@ namespace Game.DataStorage
public SpellCategoryFlags Flags;
public byte UsesPerWeek;
public byte MaxCharges;
public byte ChargeCategoryType;
public byte TypeMask;
}
public sealed class SpellClassOptionsRecord
@@ -297,16 +297,14 @@ namespace Game.DataStorage
public float EffectPosFacing;
public uint EffectAttributes;
public float BonusCoefficientFromAP;
public float PvPMultiplier;
public float PvpMultiplier;
public float Coefficient;
public float Variance;
public float ResourceCoefficient;
public float GroupSizeCoefficient;
public float GroupSizeBasePointsCoefficient;
public FlagArray128 EffectSpellClassMask;
public int EffectMiscValue;
public int EffectMiscValueB;
public uint EffectRadiusIndex;
public uint EffectRadiusMaxIndex;
public int[] EffectMiscValue = new int[2];
public uint[] EffectRadiusIndex = new uint[2];
public uint[] ImplicitTarget = new uint[2];
public uint SpellID;
}
@@ -315,8 +313,8 @@ namespace Game.DataStorage
{
public uint Id;
public uint SpellID;
public int EquippedItemInventoryTypeMask;
public int EquippedItemSubClassMask;
public int EquippedItemInvTypes;
public int EquippedItemSubclass;
public sbyte EquippedItemClass;
}
@@ -340,10 +338,10 @@ namespace Game.DataStorage
{
public uint Id;
public string Name;
public uint[] EffectSpellID = new uint[ItemConst.MaxItemEnchantmentEffects];
public uint[] EffectArg = new uint[ItemConst.MaxItemEnchantmentEffects];
public float[] EffectScalingPoints = new float[ItemConst.MaxItemEnchantmentEffects];
public uint TransmogCost;
public uint TextureFileDataID;
public uint IconFileDataID;
public ushort[] EffectPointsMin = new ushort[ItemConst.MaxItemEnchantmentEffects];
public ushort ItemVisual;
public EnchantmentSlotMask Flags;
@@ -357,25 +355,25 @@ namespace Game.DataStorage
public byte MaxLevel;
public sbyte ScalingClass;
public sbyte ScalingClassRestricted;
public ushort PlayerConditionID;
public ushort TransmogPlayerConditionID;
}
public sealed class SpellItemEnchantmentConditionRecord
{
public uint Id;
public uint[] LTOperand = new uint[5];
public byte[] LTOperandType = new byte[5];
public uint[] LtOperand = new uint[5];
public byte[] LtOperandType = new byte[5];
public byte[] Operator = new byte[5];
public byte[] RTOperandType = new byte[5];
public byte[] RTOperand = new byte[5];
public byte[] RtOperandType = new byte[5];
public byte[] RtOperand = new byte[5];
public byte[] Logic = new byte[5];
}
public sealed class SpellLearnSpellRecord
{
public uint Id;
public uint LearnSpellID;
public uint SpellID;
public uint LearnSpellID;
public uint OverridesSpellID;
}
@@ -386,7 +384,7 @@ namespace Game.DataStorage
public ushort MaxLevel;
public ushort SpellLevel;
public byte DifficultyID;
public byte MaxUsableLevel;
public byte MaxPassiveAuraLevel;
public uint SpellID;
}
@@ -397,51 +395,38 @@ namespace Game.DataStorage
public ushort DurationIndex;
public ushort RangeIndex;
public byte SchoolMask;
public uint IconFileDataID;
public uint SpellIconFileDataID;
public float Speed;
public uint ActiveIconFileDataID;
public float MultistrikeSpeedMod;
public float LaunchDelay;
public byte DifficultyID;
public uint Attributes;
public uint AttributesEx;
public uint AttributesExB;
public uint AttributesExC;
public uint AttributesExD;
public uint AttributesExE;
public uint AttributesExF;
public uint AttributesExG;
public uint AttributesExH;
public uint AttributesExI;
public uint AttributesExJ;
public uint AttributesExK;
public uint AttributesExL;
public uint AttributesExM;
public uint[] Attributes = new uint[14];
public uint SpellID;
}
public sealed class SpellPowerRecord
{
public int ManaCost;
public float ManaCostPercentage;
public float ManaCostPercentagePerSecond;
public uint RequiredAura;
public float HealthCostPercentage;
public byte PowerIndex;
public float PowerCostPct;
public float PowerPctPerSecond;
public uint RequiredAuraSpellID;
public float PowerCostMaxPct;
public byte OrderIndex;
public PowerType PowerType;
public uint Id;
public byte ManaCostPerLevel;
public ushort ManaCostPerSecond;
public int ManaCostAdditional; // Spell uses [ManaCost, ManaCost+ManaCostAdditional] power - affects tooltip parsing as multiplier on SpellEffectEntry::EffectPointsPerResource
public ushort ManaPerSecond;
public int OptionalCost; // Spell uses [ManaCost, ManaCost+ManaCostAdditional] power - affects tooltip parsing as multiplier on SpellEffectEntry::EffectPointsPerResource
// only SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE, SPELL_EFFECT_WEAPON_DAMAGE, SPELL_EFFECT_NORMALIZED_WEAPON_DMG
public uint PowerDisplayID;
public uint UnitPowerBarID;
public uint AltPowerBarID;
public uint SpellID;
}
public sealed class SpellPowerDifficultyRecord
{
public byte DifficultyID;
public byte PowerIndex;
public byte OrderIndex;
public uint Id;
}
@@ -475,10 +460,8 @@ namespace Game.DataStorage
public uint Id;
public string DisplayName;
public string DisplayNameShort;
public float MinRangeHostile;
public float MinRangeFriend;
public float MaxRangeHostile;
public float MaxRangeFriend;
public float[] RangeMin = new float[2];
public float[] RangeMax = new float[2];
public SpellRangeFlag Flags;
}
@@ -495,7 +478,7 @@ namespace Game.DataStorage
public uint Id;
public uint SpellID;
public ushort ScalesFromItemLevel;
public byte ScalingClass;
public byte Class;
public byte MinScalingLevel;
public uint MaxScalingLevel;
}
@@ -513,13 +496,13 @@ namespace Game.DataStorage
{
public uint Id;
public LocalizedString Name;
public float WeaponDamageVariance;
public float DamageVariance;
public SpellShapeshiftFormFlags Flags;
public ushort CombatRoundTime;
public ushort MountTypeID;
public sbyte CreatureType;
public byte BonusActionBar;
public uint AttackIconFileDataID;
public uint AttackIconFileID;
public ushort[] CreatureDisplayID = new ushort[4];
public ushort[] PresetSpellID = new ushort[SpellConst.MaxShapeshift];
}
@@ -527,12 +510,12 @@ namespace Game.DataStorage
public sealed class SpellTargetRestrictionsRecord
{
public uint Id;
public float ConeAngle;
public float ConeDegrees;
public float Width;
public uint Targets;
public ushort TargetCreatureType;
public byte DifficultyID;
public byte MaxAffectedTargets;
public byte MaxTargets;
public uint MaxTargetLevel;
public uint SpellID;
}
@@ -549,13 +532,13 @@ namespace Game.DataStorage
{
public uint SpellVisualID;
public uint Id;
public float Chance;
public float Probability;
public ushort CasterPlayerConditionID;
public ushort CasterUnitConditionID;
public ushort PlayerConditionID;
public ushort UnitConditionID;
public uint IconFileDataID;
public uint ActiveIconFileDataID;
public ushort ViewerPlayerConditionID;
public ushort ViewerUnitConditionID;
public uint SpellIconFileID;
public uint ActiveIconFileID;
public byte Flags;
public byte DifficultyID;
public byte Priority;
@@ -566,9 +549,9 @@ namespace Game.DataStorage
{
public uint Id;
public uint Flags;
public SummonCategory Category;
public SummonCategory Control;
public ushort Faction;
public SummonType Type;
public SummonType Title;
public byte Slot;
}
}
+18 -21
View File
@@ -47,20 +47,20 @@ namespace Game.DataStorage
public Vector3 Pos;
public uint[] MountCreatureID = new uint[2];
public Vector2 MapOffset;
public float Unk730;
public float Facing;
public Vector2 FlightMapOffset;
public ushort MapID;
public ushort ContinentID;
public ushort ConditionID;
public ushort LearnableIndex;
public ushort CharacterBitNumber;
public TaxiNodeFlags Flags;
public int UiTextureKitPrefixID;
public uint SpecialAtlasIconPlayerConditionID;
public int UiTextureKitID;
public uint SpecialIconConditionID;
}
public sealed class TaxiPathRecord
{
public ushort From;
public ushort To;
public ushort FromTaxiNode;
public ushort ToTaxiNode;
public uint Id;
public uint Cost;
}
@@ -69,7 +69,7 @@ namespace Game.DataStorage
{
public Vector3 Loc;
public ushort PathID;
public ushort MapID;
public ushort ContinentID;
public byte NodeIndex;
public uint Id;
public TaxiPathNodeFlags Flags;
@@ -82,34 +82,34 @@ namespace Game.DataStorage
{
public uint Id;
public LocalizedString Name;
public uint CategoryMask;
public byte CategoryType;
public uint TotemCategoryMask;
public byte TotemCategoryType;
}
public sealed class ToyRecord
{
public LocalizedString Description;
public LocalizedString SourceText;
public uint ItemID;
public byte Flags;
public byte CategoryFilter;
public byte SourceTypeEnum;
public uint Id;
}
public sealed class TransmogHolidayRecord
{
public uint Id;
public int HolidayID;
public int RequiredTransmogHoliday;
}
public sealed class TransmogSetRecord
{
public LocalizedString Name;
public ushort BaseSetID;
public ushort ParentTransmogSetID;
public ushort UIOrder;
public byte ExpansionID;
public uint Id;
public byte Flags;
public int QuestID;
public int TrackingQuestID;
public int ClassMask;
public int ItemNameDescriptionID;
public byte TransmogSetGroupID;
@@ -117,7 +117,7 @@ namespace Game.DataStorage
public sealed class TransmogSetGroupRecord
{
public LocalizedString Label;
public LocalizedString Name;
public uint Id;
}
@@ -142,10 +142,7 @@ namespace Game.DataStorage
{
public uint Id;
public uint TimeIndex;
public float X;
public float Y;
public float Z;
public float W;
public uint TransportID;
public float[] Rot = new float[4];
public uint GameObjectsID;
}
}
+12 -10
View File
@@ -40,14 +40,16 @@ namespace Game.DataStorage
public ushort VehicleUIIndicatorID;
public ushort[] PowerDisplayID = new ushort[3];
public byte FlagsB;
public byte UILocomotionType;
public byte UiLocomotionType;
public ushort MissileTargetingID;
}
public sealed class VehicleSeatRecord
{
public uint Id;
public uint[] Flags = new uint[3];
public VehicleSeatFlags Flags;
public VehicleSeatFlagsB FlagsB;
public uint FlagsC;
public Vector3 AttachmentOffset;
public float EnterPreDelay;
public float EnterSpeed;
@@ -78,7 +80,7 @@ namespace Game.DataStorage
public float CameraEnteringZoom;
public float CameraSeatZoomMin;
public float CameraSeatZoomMax;
public uint UISkinFileDataID;
public uint UiSkinFileDataID;
public short EnterAnimStart;
public short EnterAnimLoop;
public short RideAnimStart;
@@ -110,17 +112,17 @@ namespace Game.DataStorage
public bool CanEnterOrExit()
{
return (Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanEnterOrExit) ||
return (Flags.HasAnyFlag(VehicleSeatFlags.CanEnterOrExit) ||
//If it has anmation for enter/ride, means it can be entered/exited by logic
Flags[0].HasAnyFlag((uint)VehicleSeatFlags.HasLowerAnimForEnter | (uint)VehicleSeatFlags.HasLowerAnimForRide));
Flags.HasAnyFlag(VehicleSeatFlags.HasLowerAnimForEnter | VehicleSeatFlags.HasLowerAnimForRide));
}
public bool CanSwitchFromSeat() { return Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanSwitch); }
public bool CanSwitchFromSeat() { return Flags.HasAnyFlag(VehicleSeatFlags.CanSwitch); }
public bool IsUsableByOverride()
{
return Flags[0].HasAnyFlag((uint)VehicleSeatFlags.Uncontrolled | (uint)VehicleSeatFlags.Unk18)
|| Flags[1].HasAnyFlag((uint)VehicleSeatFlagsB.UsableForced | (uint)VehicleSeatFlagsB.UsableForced2 |
(uint)VehicleSeatFlagsB.UsableForced3 | (uint)VehicleSeatFlagsB.UsableForced4);
return Flags.HasAnyFlag(VehicleSeatFlags.Uncontrolled | VehicleSeatFlags.Unk18)
|| FlagsB.HasAnyFlag(VehicleSeatFlagsB.UsableForced | VehicleSeatFlagsB.UsableForced2 |
VehicleSeatFlagsB.UsableForced3 | VehicleSeatFlagsB.UsableForced4);
}
public bool IsEjectable() { return Flags[1].HasAnyFlag((uint)VehicleSeatFlagsB.Ejectable); }
public bool IsEjectable() { return FlagsB.HasAnyFlag(VehicleSeatFlagsB.Ejectable); }
}
}
+8 -8
View File
@@ -23,20 +23,20 @@ namespace Game.DataStorage
public sealed class WMOAreaTableRecord
{
public string AreaName;
public int WMOGroupID; // used in group WMO
public int WmoGroupID; // used in group WMO
public ushort AmbienceID;
public ushort ZoneMusic;
public ushort IntroSound;
public ushort AreaTableID;
public ushort UWIntroSound;
public ushort UWAmbience;
public sbyte NameSet; // used in adt file
public ushort UwIntroSound;
public ushort UwAmbience;
public sbyte NameSetID; // used in adt file
public byte SoundProviderPref;
public byte SoundProviderPrefUnderwater;
public byte Flags;
public uint Id;
public byte UWZoneMusic;
public uint WMOID; // used in root WMO
public byte UwZoneMusic;
public uint WmoID; // used in root WMO
}
public sealed class WorldEffectRecord
@@ -66,9 +66,9 @@ namespace Game.DataStorage
public byte LevelRangeMin;
public byte LevelRangeMax;
public byte BountySetID;
public byte BountyBoardLocation;
public byte BountyDisplayLocation;
public uint Id;
public uint PlayerConditionID;
public uint VisibilityPlayerConditionID;
}
public sealed class WorldMapOverlayRecord