Core/PacketIO: 9.1.5 updatefields and SMSG_UPDATE_OBJECT structure
Port From (https://github.com/TrinityCore/TrinityCore/commit/5c8a058120dcf2c3ff8592886cb842ca889e0411)
This commit is contained in:
@@ -682,7 +682,7 @@ namespace Framework.Constants
|
||||
Max = 19,
|
||||
All = 127, // default for class?
|
||||
Health = -2, // (-2 as signed value)
|
||||
MaxPerClass = 6
|
||||
MaxPerClass = 7
|
||||
}
|
||||
|
||||
public enum Stats
|
||||
|
||||
@@ -83,7 +83,7 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.SEL_CHARACTER, "SELECT c.guid, account, name, race, class, gender, level, xp, money, inventorySlots, bankSlots, restState, playerFlags, playerFlagsEx, " +
|
||||
"position_x, position_y, position_z, map, orientation, taximask, createTime, createMode, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, " +
|
||||
"resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, " +
|
||||
"totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, power4, power5, power6, instance_id, activeTalentGroup, lootSpecId, exploredZones, " +
|
||||
"totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, power4, power5, power6, power7, instance_id, activeTalentGroup, lootSpecId, exploredZones, " +
|
||||
"knownTitles, actionBars, raidDifficulty, legacyRaidDifficulty, fishingSteps, honor, honorLevel, honorRestState, honorRestBonus, numRespecs " +
|
||||
"FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?");
|
||||
|
||||
@@ -252,63 +252,59 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.UPD_NAME_BY_GUID, "UPDATE characters SET name = ? WHERE guid = ?");
|
||||
|
||||
// Guild handling
|
||||
// 0: uint32, 1: string, 2: uint32, 3: string, 4: string, 5: uint64, 6-10: uint32, 11: uint64
|
||||
PrepareStatement(CharStatements.INS_GUILD, "INSERT INTO guild (guildid, name, leaderguid, info, motd, createdate, EmblemStyle, EmblemColor, BorderStyle, BorderColor, BackgroundColor, BankMoney) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD, "DELETE FROM guild WHERE guildid = ?"); // 0: uint32
|
||||
// 0: string, 1: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD, "DELETE FROM guild WHERE guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.UPD_GUILD_NAME, "UPDATE guild SET name = ? WHERE guildid = ?");
|
||||
// 0: uint32, 1: uint32, 2: uint8, 4: string, 5: string
|
||||
PrepareStatement(CharStatements.INS_GUILD_MEMBER, "INSERT INTO guild_member (guildid, guid, rank, pnote, offnote) VALUES (?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_MEMBER, "DELETE FROM guild_member WHERE guid = ?"); // 0: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_MEMBERS, "DELETE FROM guild_member WHERE guildid = ?"); // 0: uint32
|
||||
// 0: uint32, 1: uint8, 3: string, 4: uint32, 5: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_MEMBER, "DELETE FROM guild_member WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_MEMBERS, "DELETE FROM guild_member WHERE guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.INS_GUILD_RANK, "INSERT INTO guild_rank (guildid, rid, rname, rights, BankMoneyPerDay) VALUES (?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_RANKS, "DELETE FROM guild_rank WHERE guildid = ?"); // 0: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_RANK, "DELETE FROM guild_rank WHERE guildid = ? AND rid = ?"); // 0: uint32, 1: uint8
|
||||
PrepareStatement(CharStatements.INS_GUILD_BANK_TAB, "INSERT INTO guild_bank_tab (guildid, TabId) VALUES (?, ?)"); // 0: uint32, 1: uint8
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_TAB, "DELETE FROM guild_bank_tab WHERE guildid = ? AND TabId = ?"); // 0: uint32, 1: uint8
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_TABS, "DELETE FROM guild_bank_tab WHERE guildid = ?"); // 0: uint32
|
||||
// 0: uint32, 1: uint8, 2: uint8, 3: uint32, 4: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_RANKS, "DELETE FROM guild_rank WHERE guildid = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_RANK, "DELETE FROM guild_rank WHERE guildid = ? AND rid = ?");
|
||||
PrepareStatement(CharStatements.INS_GUILD_BANK_TAB, "INSERT INTO guild_bank_tab (guildid, TabId) VALUES (?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_TAB, "DELETE FROM guild_bank_tab WHERE guildid = ? AND TabId = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_TABS, "DELETE FROM guild_bank_tab WHERE guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.INS_GUILD_BANK_ITEM, "INSERT INTO guild_bank_item (guildid, TabId, SlotId, item_guid) VALUES (?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_ITEM, "DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?"); // 0: uint32, 1: uint8, 2: uint8
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_ITEM, "DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?");
|
||||
PrepareStatement(CharStatements.SEL_GUILD_BANK_ITEMS, "SELECT " + SelectItemInstanceContent + ", guildid, TabId, SlotId FROM guild_bank_item gbi INNER JOIN item_instance ii ON gbi.item_guid = ii.guid LEFT JOIN item_instance_gems ig ON ii.guid = ig.itemGuid LEFT JOIN item_instance_transmog iit ON ii.guid = iit.itemGuid LEFT JOIN item_instance_modifiers im ON ii.guid = im.itemGuid");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_ITEMS, "DELETE FROM guild_bank_item WHERE guildid = ?"); // 0: uint32
|
||||
// 0: uint32, 1: uint8, 2: uint8, 3: uint8, 4: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_ITEMS, "DELETE FROM guild_bank_item WHERE guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.INS_GUILD_BANK_RIGHT, "INSERT INTO guild_bank_right (guildid, TabId, rid, gbright, SlotPerDay) VALUES (?, ?, ?, ?, ?) " +
|
||||
"ON DUPLICATE KEY UPDATE gbright = VALUES(gbright), SlotPerDay = VALUES(SlotPerDay)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_RIGHTS, "DELETE FROM guild_bank_right WHERE guildid = ?"); // 0: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_RIGHTS_FOR_RANK, "DELETE FROM guild_bank_right WHERE guildid = ? AND rid = ?"); // 0: uint32, 1: uint8
|
||||
// 0-1: uint32, 2-3: uint8, 4-5: uint32, 6: uint16, 7: uint8, 8: uint64
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_RIGHTS, "DELETE FROM guild_bank_right WHERE guildid = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_RIGHTS_FOR_RANK, "DELETE FROM guild_bank_right WHERE guildid = ? AND rid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.INS_GUILD_BANK_EVENTLOG, "INSERT INTO guild_bank_eventlog (guildid, LogGuid, TabId, EventType, PlayerGuid, ItemOrMoney, ItemStackCount, DestTabId, TimeStamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_EVENTLOG, "DELETE FROM guild_bank_eventlog WHERE guildid = ? AND LogGuid = ? AND TabId = ?"); // 0: uint32, 1: uint32, 2: uint8
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_EVENTLOGS, "DELETE FROM guild_bank_eventlog WHERE guildid = ?"); // 0: uint32
|
||||
// 0-1: uint32, 2: uint8, 3-4: uint32, 5: uint8, 6: uint64
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_EVENTLOG, "DELETE FROM guild_bank_eventlog WHERE guildid = ? AND LogGuid = ? AND TabId = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_BANK_EVENTLOGS, "DELETE FROM guild_bank_eventlog WHERE guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.INS_GUILD_EVENTLOG, "INSERT INTO guild_eventlog (guildid, LogGuid, EventType, PlayerGuid1, PlayerGuid2, NewRank, TimeStamp) VALUES (?, ?, ?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_EVENTLOG, "DELETE FROM guild_eventlog WHERE guildid = ? AND LogGuid = ?"); // 0: uint32, 1: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_EVENTLOGS, "DELETE FROM guild_eventlog WHERE guildid = ?"); // 0: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MEMBER_PNOTE, "UPDATE guild_member SET pnote = ? WHERE guid = ?"); // 0: string, 1: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MEMBER_OFFNOTE, "UPDATE guild_member SET offnote = ? WHERE guid = ?"); // 0: string, 1: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MEMBER_RANK, "UPDATE guild_member SET rank = ? WHERE guid = ?"); // 0: uint8, 1: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MOTD, "UPDATE guild SET motd = ? WHERE guildid = ?"); // 0: string, 1: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_INFO, "UPDATE guild SET info = ? WHERE guildid = ?"); // 0: string, 1: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_LEADER, "UPDATE guild SET leaderguid = ? WHERE guildid = ?"); // 0: uint32, 1: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_RANK_NAME, "UPDATE guild_rank SET rname = ? WHERE rid = ? AND guildid = ?"); // 0: string, 1: uint8, 2: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_RANK_RIGHTS, "UPDATE guild_rank SET rights = ? WHERE rid = ? AND guildid = ?"); // 0: uint32, 1: uint8, 2: uint32
|
||||
// 0-5: uint32
|
||||
PrepareStatement(CharStatements.DEL_GUILD_EVENTLOG, "DELETE FROM guild_eventlog WHERE guildid = ? AND LogGuid = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_EVENTLOGS, "DELETE FROM guild_eventlog WHERE guildid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MEMBER_PNOTE, "UPDATE guild_member SET pnote = ? WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MEMBER_OFFNOTE, "UPDATE guild_member SET offnote = ? WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MEMBER_RANK, "UPDATE guild_member SET rank = ? WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_MOTD, "UPDATE guild SET motd = ? WHERE guildid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_INFO, "UPDATE guild SET info = ? WHERE guildid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_LEADER, "UPDATE guild SET leaderguid = ? WHERE guildid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_RANK_NAME, "UPDATE guild_rank SET rname = ? WHERE rid = ? AND guildid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_RANK_RIGHTS, "UPDATE guild_rank SET rights = ? WHERE rid = ? AND guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.UPD_GUILD_EMBLEM_INFO, "UPDATE guild SET EmblemStyle = ?, EmblemColor = ?, BorderStyle = ?, BorderColor = ?, BackgroundColor = ? WHERE guildid = ?");
|
||||
// 0: string, 1: string, 2: uint32, 3: uint8
|
||||
PrepareStatement(CharStatements.UPD_GUILD_BANK_TAB_INFO, "UPDATE guild_bank_tab SET TabName = ?, TabIcon = ? WHERE guildid = ? AND TabId = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_BANK_MONEY, "UPDATE guild SET BankMoney = ? WHERE guildid = ?"); // 0: uint64, 1: uint32
|
||||
// 0: uint8, 1: uint32, 2: uint8, 3: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_RANK_BANK_MONEY, "UPDATE guild_rank SET BankMoneyPerDay = ? WHERE rid = ? AND guildid = ?"); // 0: uint32, 1: uint8, 2: uint32
|
||||
PrepareStatement(CharStatements.UPD_GUILD_BANK_TAB_TEXT, "UPDATE guild_bank_tab SET TabText = ? WHERE guildid = ? AND TabId = ?"); // 0: string, 1: uint32, 2: uint8
|
||||
PrepareStatement(CharStatements.UPD_GUILD_BANK_MONEY, "UPDATE guild SET BankMoney = ? WHERE guildid = ?");
|
||||
|
||||
PrepareStatement(CharStatements.UPD_GUILD_RANK_BANK_MONEY, "UPDATE guild_rank SET BankMoneyPerDay = ? WHERE rid = ? AND guildid = ?");
|
||||
PrepareStatement(CharStatements.UPD_GUILD_BANK_TAB_TEXT, "UPDATE guild_bank_tab SET TabText = ? WHERE guildid = ? AND TabId = ?");
|
||||
|
||||
PrepareStatement(CharStatements.INS_GUILD_MEMBER_WITHDRAW_TABS, "INSERT INTO guild_member_withdraw (guid, tab0, tab1, tab2, tab3, tab4, tab5, tab6, tab7) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) " +
|
||||
"ON DUPLICATE KEY UPDATE tab0 = VALUES (tab0), tab1 = VALUES (tab1), tab2 = VALUES (tab2), tab3 = VALUES (tab3), tab4 = VALUES (tab4), tab5 = VALUES (tab5), tab6 = VALUES (tab6), tab7 = VALUES (tab7)");
|
||||
PrepareStatement(CharStatements.INS_GUILD_MEMBER_WITHDRAW_MONEY, "INSERT INTO guild_member_withdraw (guid, money) VALUES (?, ?) ON DUPLICATE KEY UPDATE money = VALUES (money)");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_MEMBER_WITHDRAW, "TRUNCATE guild_member_withdraw");
|
||||
|
||||
// 0: uint32, 1: uint32, 2: uint32
|
||||
PrepareStatement(CharStatements.SEL_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, gender, zone, account FROM characters WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.DEL_GUILD_ACHIEVEMENT, "DELETE FROM guild_achievement WHERE guildId = ? AND achievement = ?");
|
||||
PrepareStatement(CharStatements.INS_GUILD_ACHIEVEMENT, "INSERT INTO guild_achievement (guildId, achievement, date, guids) VALUES (?, ?, ?, ?)");
|
||||
@@ -474,13 +470,13 @@ namespace Framework.Database
|
||||
"map, instance_id, dungeonDifficulty, raidDifficulty, legacyRaidDifficulty, position_x, position_y, position_z, orientation, trans_x, trans_y, trans_z, trans_o, transguid, " +
|
||||
"taximask, createTime, createMode, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, primarySpecialization, " +
|
||||
"extra_flags, stable_slots, at_login, death_expire_time, taxi_path, totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, " +
|
||||
"power4, power5, power6, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild) VALUES " +
|
||||
"(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
||||
"power4, power5, power6, power7, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild) VALUES " +
|
||||
"(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
||||
PrepareStatement(CharStatements.UPD_CHARACTER, "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,inventorySlots=?,bankSlots=?,restState=?,playerFlags=?,playerFlagsEx=?," +
|
||||
"map=?,instance_id=?,dungeonDifficulty=?,raidDifficulty=?,legacyRaidDifficulty=?,position_x=?,position_y=?,position_z=?,orientation=?,trans_x=?,trans_y=?,trans_z=?,trans_o=?,transguid=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?," +
|
||||
"logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,numRespecs=?,primarySpecialization=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," +
|
||||
"totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," +
|
||||
"watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," +
|
||||
"watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," +
|
||||
"equipmentCache=?,knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?");
|
||||
|
||||
PrepareStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?");
|
||||
@@ -664,9 +660,9 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.UPD_CHAR_SKILLS, "UPDATE character_skills SET value = ?, max = ? WHERE guid = ? AND skill = ?");
|
||||
PrepareStatement(CharStatements.INS_CHAR_SPELL, "INSERT INTO character_spell (guid, spell, active, disabled) VALUES (?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_CHAR_STATS, "DELETE FROM character_stats WHERE guid = ?");
|
||||
PrepareStatement(CharStatements.INS_CHAR_STATS, "INSERT INTO character_stats (guid, maxhealth, maxpower1, maxpower2, maxpower3, maxpower4, maxpower5, maxpower6, strength, agility, stamina, intellect, " +
|
||||
PrepareStatement(CharStatements.INS_CHAR_STATS, "INSERT INTO character_stats (guid, maxhealth, maxpower1, maxpower2, maxpower3, maxpower4, maxpower5, maxpower6, maxpower7, strength, agility, stamina, intellect, " +
|
||||
"armor, resHoly, resFire, resNature, resFrost, resShadow, resArcane, blockPct, dodgePct, parryPct, critPct, rangedCritPct, spellCritPct, attackPower, rangedAttackPower, " +
|
||||
"spellPower, resilience) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
"spellPower, resilience) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.DEL_PETITION_BY_OWNER, "DELETE FROM petition WHERE ownerguid = ?");
|
||||
PrepareStatement(CharStatements.DEL_PETITION_SIGNATURE_BY_OWNER, "DELETE FROM petition_sign WHERE ownerguid = ?");
|
||||
PrepareStatement(CharStatements.INS_CHAR_GLYPHS, "INSERT INTO character_glyphs VALUES(?, ?, ?)");
|
||||
@@ -688,7 +684,6 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.DEL_CHAR_CUF_PROFILES_BY_ID, "DELETE FROM character_cuf_profiles WHERE guid = ? AND id = ?");
|
||||
PrepareStatement(CharStatements.DEL_CHAR_CUF_PROFILES, "DELETE FROM character_cuf_profiles WHERE guid = ?");
|
||||
|
||||
|
||||
// Items that hold loot or money
|
||||
PrepareStatement(CharStatements.SEL_ITEMCONTAINER_ITEMS, "SELECT container_id, item_id, item_count, follow_rules, ffa, blocked, counted, under_threshold, needs_quest, rnd_bonus, context, bonus_list_ids FROM item_loot_items");
|
||||
PrepareStatement(CharStatements.DEL_ITEMCONTAINER_ITEMS, "DELETE FROM item_loot_items WHERE container_id = ?");
|
||||
@@ -1347,7 +1342,6 @@ namespace Framework.Database
|
||||
DEL_CHAR_CUF_PROFILES_BY_ID,
|
||||
DEL_CHAR_CUF_PROFILES,
|
||||
|
||||
|
||||
REP_CALENDAR_EVENT,
|
||||
DEL_CALENDAR_EVENT,
|
||||
REP_CALENDAR_INVITE,
|
||||
|
||||
@@ -112,21 +112,22 @@ namespace Game.Entities
|
||||
_shape = GetCreateProperties().Shape;
|
||||
_maxSearchRadius = GetCreateProperties().GetMaxSearchRadius();
|
||||
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.Caster), caster.GetGUID());
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.CreatingEffectGUID), castId);
|
||||
var areaTriggerData = m_values.ModifyValue(m_areaTriggerData);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.Caster), caster.GetGUID());
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.CreatingEffectGUID), castId);
|
||||
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellID), spell.Id);
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellForVisuals), spell.Id);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellID), spell.Id);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellForVisuals), spell.Id);
|
||||
|
||||
SpellCastVisualField spellCastVisual = m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellVisual);
|
||||
SpellCastVisualField spellCastVisual = areaTriggerData.ModifyValue(m_areaTriggerData.SpellVisual);
|
||||
SetUpdateFieldValue(ref spellCastVisual.SpellXSpellVisualID, spellVisual.SpellXSpellVisualID);
|
||||
SetUpdateFieldValue(ref spellCastVisual.ScriptVisualID, spellVisual.ScriptVisualID);
|
||||
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.TimeToTargetScale), GetCreateProperties().TimeToTargetScale != 0 ? GetCreateProperties().TimeToTargetScale : m_areaTriggerData.Duration);
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.BoundsRadius2D), GetMaxSearchRadius());
|
||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.DecalPropertiesID), GetCreateProperties().DecalPropertiesId);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.TimeToTargetScale), GetCreateProperties().TimeToTargetScale != 0 ? GetCreateProperties().TimeToTargetScale : m_areaTriggerData.Duration);
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.BoundsRadius2D), GetMaxSearchRadius());
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.DecalPropertiesID), GetCreateProperties().DecalPropertiesId);
|
||||
|
||||
ScaleCurve extraScaleCurve = m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.ExtraScaleCurve);
|
||||
ScaleCurve extraScaleCurve = areaTriggerData.ModifyValue(m_areaTriggerData.ExtraScaleCurve);
|
||||
|
||||
if (GetCreateProperties().ExtraScale.Structured.StartTimeOffset != 0)
|
||||
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.StartTimeOffset), GetCreateProperties().ExtraScale.Structured.StartTimeOffset);
|
||||
@@ -148,6 +149,11 @@ namespace Game.Entities
|
||||
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.OverrideActive), GetCreateProperties().ExtraScale.Structured.OverrideActive != 0);
|
||||
}
|
||||
|
||||
VisualAnim visualAnim = areaTriggerData.ModifyValue(m_areaTriggerData.VisualAnim);
|
||||
SetUpdateFieldValue(visualAnim.ModifyValue(visualAnim.AnimationDataID), GetCreateProperties().AnimId);
|
||||
SetUpdateFieldValue(visualAnim.ModifyValue(visualAnim.AnimKitID), GetCreateProperties().AnimKitId);
|
||||
if (GetTemplate() != null && GetTemplate().HasFlag(AreaTriggerFlags.Unk3))
|
||||
SetUpdateFieldValue(visualAnim.ModifyValue(visualAnim.Field_C), true);
|
||||
|
||||
PhasingHandler.InheritPhaseShift(this, caster);
|
||||
|
||||
|
||||
@@ -127,15 +127,15 @@ namespace Game.Entities
|
||||
break;
|
||||
case GameObjectTypes.Transport:
|
||||
case GameObjectTypes.MapObjTransport:
|
||||
{
|
||||
uint transportPeriod = gameObject.GetTransportPeriod();
|
||||
if (transportPeriod != 0)
|
||||
{
|
||||
uint transportPeriod = gameObject.GetTransportPeriod();
|
||||
if (transportPeriod != 0)
|
||||
{
|
||||
float timer = (float)(gameObject.GetGoValue().Transport.PathProgress % transportPeriod);
|
||||
pathProgress = (ushort)(timer / (float)transportPeriod * 65535.0f);
|
||||
}
|
||||
break;
|
||||
float timer = (float)(gameObject.GetGoValue().Transport.PathProgress % transportPeriod);
|
||||
pathProgress = (ushort)(timer / (float)transportPeriod * 65535.0f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -824,9 +824,9 @@ namespace Game.Entities
|
||||
public class AzeriteItemData : BaseUpdateData<AzeriteItem>
|
||||
{
|
||||
public UpdateField<bool> Enabled = new(0, 1);
|
||||
public DynamicUpdateField<UnlockedAzeriteEssence>UnlockedEssences = new(0, 2);
|
||||
public DynamicUpdateField<uint>UnlockedEssenceMilestones = new(0, 4);
|
||||
public DynamicUpdateField<SelectedAzeriteEssences>SelectedEssences = new(0, 3);
|
||||
public DynamicUpdateField<UnlockedAzeriteEssence> UnlockedEssences = new(0, 2);
|
||||
public DynamicUpdateField<uint> UnlockedEssenceMilestones = new(0, 4);
|
||||
public DynamicUpdateField<SelectedAzeriteEssences> SelectedEssences = new(0, 3);
|
||||
public UpdateField<ulong> Xp = new(0, 5);
|
||||
public UpdateField<uint> Level = new(0, 6);
|
||||
public UpdateField<uint> AuraLevel = new(0, 7);
|
||||
@@ -1210,32 +1210,33 @@ namespace Game.Entities
|
||||
public UpdateField<uint> MaxItemLevel = new(96, 106);
|
||||
public UpdateField<int> AzeriteItemLevel = new(96, 107);
|
||||
public UpdateField<uint> WildBattlePetLevel = new(96, 108);
|
||||
public UpdateField<uint> BattlePetCompanionNameTimestamp = new(96, 109);
|
||||
public UpdateField<int> InteractSpellID = new(96, 110);
|
||||
public UpdateField<int> ScaleDuration = new(96, 111);
|
||||
public UpdateField<int> LooksLikeMountID = new(96, 112);
|
||||
public UpdateField<int> LooksLikeCreatureID = new(96, 113);
|
||||
public UpdateField<int> LookAtControllerID = new(96, 114);
|
||||
public UpdateField<int> TaxiNodesID = new(96, 115);
|
||||
public UpdateField<ObjectGuid> GuildGUID = new(96, 116);
|
||||
public UpdateField<ObjectGuid> SkinningOwnerGUID = new(96, 117);
|
||||
public UpdateField<uint> SilencedSchoolMask = new(96, 118);
|
||||
public UpdateField<ObjectGuid> NameplateAttachToGUID = new(96, 119); // When set, nameplate of this unit will instead appear on that object
|
||||
public UpdateFieldArray<uint> NpcFlags = new(2, 120, 121);
|
||||
public UpdateFieldArray<int> Power = new(6, 123, 124);
|
||||
public UpdateFieldArray<uint> MaxPower = new(6, 123, 130);
|
||||
public UpdateFieldArray<float> PowerRegenFlatModifier = new(6, 123, 136);
|
||||
public UpdateFieldArray<float> PowerRegenInterruptedFlatModifier = new(6, 123, 142);
|
||||
public UpdateFieldArray<VisibleItem> VirtualItems = new(3, 148, 149);
|
||||
public UpdateFieldArray<uint> AttackRoundBaseTime = new(2, 152, 153);
|
||||
public UpdateFieldArray<int> Stats = new(4, 155, 156);
|
||||
public UpdateFieldArray<int> StatPosBuff = new(4, 155, 160);
|
||||
public UpdateFieldArray<int> StatNegBuff = new(4, 155, 164);
|
||||
public UpdateFieldArray<int> Resistances = new(7, 168, 169);
|
||||
public UpdateFieldArray<int> BonusResistanceMods = new(7, 168, 176);
|
||||
public UpdateFieldArray<int> ManaCostModifier = new(7, 168, 183);
|
||||
public UpdateField<int> Field_220 = new(96, 109);
|
||||
public UpdateField<uint> BattlePetCompanionNameTimestamp = new(96, 110);
|
||||
public UpdateField<int> InteractSpellID = new(96, 111);
|
||||
public UpdateField<int> ScaleDuration = new(96, 112);
|
||||
public UpdateField<int> LooksLikeMountID = new(96, 113);
|
||||
public UpdateField<int> LooksLikeCreatureID = new(96, 114);
|
||||
public UpdateField<int> LookAtControllerID = new(96, 115);
|
||||
public UpdateField<int> TaxiNodesID = new(96, 116);
|
||||
public UpdateField<ObjectGuid> GuildGUID = new(96, 117);
|
||||
public UpdateField<ObjectGuid> SkinningOwnerGUID = new(96, 118);
|
||||
public UpdateField<uint> SilencedSchoolMask = new(96, 119);
|
||||
public UpdateField<ObjectGuid> NameplateAttachToGUID = new(96, 120); // When set, nameplate of this unit will instead appear on that object
|
||||
public UpdateFieldArray<uint> NpcFlags = new(2, 121, 122);
|
||||
public UpdateFieldArray<int> Power = new(7, 124, 125);
|
||||
public UpdateFieldArray<uint> MaxPower = new(7, 124, 132);
|
||||
public UpdateFieldArray<float> PowerRegenFlatModifier = new(7, 124, 139);
|
||||
public UpdateFieldArray<float> PowerRegenInterruptedFlatModifier = new(7, 124, 146);
|
||||
public UpdateFieldArray<VisibleItem> VirtualItems = new(3, 153, 154);
|
||||
public UpdateFieldArray<uint> AttackRoundBaseTime = new(2, 157, 158);
|
||||
public UpdateFieldArray<int> Stats = new(4, 160, 161);
|
||||
public UpdateFieldArray<int> StatPosBuff = new(4, 160, 165);
|
||||
public UpdateFieldArray<int> StatNegBuff = new(4, 160, 169);
|
||||
public UpdateFieldArray<int> Resistances = new(7, 173, 174);
|
||||
public UpdateFieldArray<int> BonusResistanceMods = new(7, 173, 181);
|
||||
public UpdateFieldArray<int> ManaCostModifier = new(7, 173, 188);
|
||||
|
||||
public UnitData() : base(0, TypeId.Unit, 190) { }
|
||||
public UnitData() : base(0, TypeId.Unit, 195) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
|
||||
{
|
||||
@@ -1274,14 +1275,14 @@ namespace Game.Entities
|
||||
data.WriteUInt8(DisplayPower);
|
||||
data.WriteUInt32(OverrideDisplayPowerID);
|
||||
data.WriteUInt64(Health);
|
||||
for (int i = 0; i < 6; ++i)
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
data.WriteInt32(Power[i]);
|
||||
data.WriteUInt32(MaxPower[i]);
|
||||
}
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner) || fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll))
|
||||
{
|
||||
for (int i = 0; i < 6; ++i)
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
data.WriteFloat(PowerRegenFlatModifier[i]);
|
||||
data.WriteFloat(PowerRegenInterruptedFlatModifier[i]);
|
||||
@@ -1402,6 +1403,7 @@ namespace Game.Entities
|
||||
data.WriteUInt32(MaxItemLevel);
|
||||
data.WriteInt32(AzeriteItemLevel);
|
||||
data.WriteUInt32(WildBattlePetLevel);
|
||||
data.WriteInt32(Field_220);
|
||||
data.WriteUInt32(BattlePetCompanionNameTimestamp);
|
||||
data.WriteInt32(InteractSpellID);
|
||||
data.WriteInt32(ScaleDuration);
|
||||
@@ -1429,7 +1431,7 @@ namespace Game.Entities
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new(192, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x07F000FFu, 0x00000000u });
|
||||
UpdateMask allowedMaskForTarget = new(195, new uint[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0xFE0007FFu, 0x00000000u, 0x00000000u });
|
||||
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver);
|
||||
}
|
||||
@@ -1437,24 +1439,24 @@ namespace Game.Entities
|
||||
public void AppendAllowedFieldsMaskForFlag(UpdateMask allowedMaskForTarget, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
||||
allowedMaskForTarget.OR(new UpdateMask(190, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x0800007Eu, 0xF80FFF00u, 0x3FFFFFFFu }));
|
||||
allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00002000u, 0x1E008000u, 0xFFE10000u, 0x1000007Eu, 0x01FFF800u, 0xFFFFFFFFu, 0x00000007u }));
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.UnitAll))
|
||||
allowedMaskForTarget.OR(new UpdateMask(190, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x08000000u, 0x000FFF00u, 0x00000000u }));
|
||||
allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x00000000u, 0x00000000u, 0x10000000u, 0x01FFF800u, 0x00000000u, 0x00000000u }));
|
||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Empath))
|
||||
allowedMaskForTarget.OR(new UpdateMask(190, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x0000FF00u }));
|
||||
allowedMaskForTarget.OR(new UpdateMask(195, new uint[] { 0x00000000u, 0x1E000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x001FE000u, 0x00000000u }));
|
||||
}
|
||||
|
||||
public void FilterDisallowedFieldsMaskForFlag(UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags)
|
||||
{
|
||||
UpdateMask allowedMaskForTarget = new(190, new[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x07F000FFu, 0x00000000u });
|
||||
UpdateMask allowedMaskForTarget = new(195, new[] { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0xFE0007FFu, 0x00000000u, 0x00000000u });
|
||||
AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
|
||||
changesMask.AND(allowedMaskForTarget);
|
||||
}
|
||||
|
||||
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, bool ignoreNestedChangesMask, Unit owner, Player receiver)
|
||||
{
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 6);
|
||||
for (uint i = 0; i < 6; ++i)
|
||||
data.WriteBits(changesMask.GetBlocksMask(0), 7);
|
||||
for (uint i = 0; i < 7; ++i)
|
||||
if (changesMask.GetBlock(i) != 0)
|
||||
data.WriteBits(changesMask.GetBlock(i), 32);
|
||||
|
||||
@@ -1942,132 +1944,136 @@ namespace Game.Entities
|
||||
}
|
||||
if (changesMask[109])
|
||||
{
|
||||
data.WriteUInt32(BattlePetCompanionNameTimestamp);
|
||||
data.WriteInt32(Field_220);
|
||||
}
|
||||
if (changesMask[110])
|
||||
{
|
||||
data.WriteInt32(InteractSpellID);
|
||||
data.WriteUInt32(BattlePetCompanionNameTimestamp);
|
||||
}
|
||||
if (changesMask[111])
|
||||
{
|
||||
data.WriteInt32(ScaleDuration);
|
||||
data.WriteInt32(InteractSpellID);
|
||||
}
|
||||
if (changesMask[112])
|
||||
{
|
||||
data.WriteInt32(LooksLikeMountID);
|
||||
data.WriteInt32(ScaleDuration);
|
||||
}
|
||||
if (changesMask[113])
|
||||
{
|
||||
data.WriteInt32(LooksLikeCreatureID);
|
||||
data.WriteInt32(LooksLikeMountID);
|
||||
}
|
||||
if (changesMask[114])
|
||||
{
|
||||
data.WriteInt32(LookAtControllerID);
|
||||
data.WriteInt32(LooksLikeCreatureID);
|
||||
}
|
||||
if (changesMask[115])
|
||||
{
|
||||
data.WriteInt32(TaxiNodesID);
|
||||
data.WriteInt32(LookAtControllerID);
|
||||
}
|
||||
if (changesMask[116])
|
||||
{
|
||||
data.WritePackedGuid(GuildGUID);
|
||||
data.WriteInt32(TaxiNodesID);
|
||||
}
|
||||
if (changesMask[117])
|
||||
{
|
||||
data.WritePackedGuid(SkinningOwnerGUID);
|
||||
data.WritePackedGuid(GuildGUID);
|
||||
}
|
||||
if (changesMask[118])
|
||||
{
|
||||
data.WriteUInt32(SilencedSchoolMask);
|
||||
data.WritePackedGuid(SkinningOwnerGUID);
|
||||
}
|
||||
if (changesMask[119])
|
||||
{
|
||||
data.WriteUInt32(SilencedSchoolMask);
|
||||
}
|
||||
if (changesMask[120])
|
||||
{
|
||||
data.WritePackedGuid(NameplateAttachToGUID);
|
||||
}
|
||||
}
|
||||
if (changesMask[120])
|
||||
if (changesMask[121])
|
||||
{
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
if (changesMask[121 + i])
|
||||
if (changesMask[122 + i])
|
||||
{
|
||||
data.WriteUInt32(GetViewerDependentNpcFlags(this, i, owner, receiver));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[123])
|
||||
if (changesMask[124])
|
||||
{
|
||||
for (int i = 0; i < 6; ++i)
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
if (changesMask[124 + i])
|
||||
if (changesMask[125 + i])
|
||||
{
|
||||
data.WriteInt32(Power[i]);
|
||||
}
|
||||
if (changesMask[130 + i])
|
||||
if (changesMask[132 + i])
|
||||
{
|
||||
data.WriteUInt32(MaxPower[i]);
|
||||
}
|
||||
if (changesMask[136 + i])
|
||||
if (changesMask[139 + i])
|
||||
{
|
||||
data.WriteFloat(PowerRegenFlatModifier[i]);
|
||||
}
|
||||
if (changesMask[142 + i])
|
||||
if (changesMask[146 + i])
|
||||
{
|
||||
data.WriteFloat(PowerRegenInterruptedFlatModifier[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[148])
|
||||
if (changesMask[153])
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
if (changesMask[149 + i])
|
||||
if (changesMask[154 + i])
|
||||
{
|
||||
VirtualItems[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[152])
|
||||
if (changesMask[157])
|
||||
{
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
if (changesMask[153 + i])
|
||||
if (changesMask[158 + i])
|
||||
{
|
||||
data.WriteUInt32(AttackRoundBaseTime[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[155])
|
||||
if (changesMask[160])
|
||||
{
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
if (changesMask[156 + i])
|
||||
if (changesMask[161 + i])
|
||||
{
|
||||
data.WriteInt32(Stats[i]);
|
||||
}
|
||||
if (changesMask[160 + i])
|
||||
if (changesMask[165 + i])
|
||||
{
|
||||
data.WriteInt32(StatPosBuff[i]);
|
||||
}
|
||||
if (changesMask[164 + i])
|
||||
if (changesMask[169 + i])
|
||||
{
|
||||
data.WriteInt32(StatNegBuff[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[168])
|
||||
if (changesMask[173])
|
||||
{
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
if (changesMask[169 + i])
|
||||
if (changesMask[174 + i])
|
||||
{
|
||||
data.WriteInt32(Resistances[i]);
|
||||
}
|
||||
if (changesMask[176 + i])
|
||||
if (changesMask[181 + i])
|
||||
{
|
||||
data.WriteInt32(BonusResistanceMods[i]);
|
||||
}
|
||||
if (changesMask[183 + i])
|
||||
if (changesMask[188 + i])
|
||||
{
|
||||
data.WriteInt32(ManaCostModifier[i]);
|
||||
}
|
||||
@@ -2182,6 +2188,7 @@ namespace Game.Entities
|
||||
ClearChangesMask(MaxItemLevel);
|
||||
ClearChangesMask(AzeriteItemLevel);
|
||||
ClearChangesMask(WildBattlePetLevel);
|
||||
ClearChangesMask(Field_220);
|
||||
ClearChangesMask(BattlePetCompanionNameTimestamp);
|
||||
ClearChangesMask(InteractSpellID);
|
||||
ClearChangesMask(ScaleDuration);
|
||||
@@ -2501,9 +2508,9 @@ namespace Game.Entities
|
||||
{
|
||||
public UpdateField<bool> HasQuestSession = new(0, 1);
|
||||
public UpdateField<bool> HasLevelLink = new(0, 2);
|
||||
public DynamicUpdateField<ChrCustomizationChoice>Customizations = new(0, 3);
|
||||
public DynamicUpdateField<QuestLog>QuestSessionQuestLog = new(0, 4);
|
||||
public DynamicUpdateField<ArenaCooldown>ArenaCooldowns = new(0, 5);
|
||||
public DynamicUpdateField<ChrCustomizationChoice> Customizations = new(0, 3);
|
||||
public DynamicUpdateField<QuestLog> QuestSessionQuestLog = new(0, 4);
|
||||
public DynamicUpdateField<ArenaCooldown> ArenaCooldowns = new(0, 5);
|
||||
public UpdateField<ObjectGuid> DuelArbiter = new(0, 6);
|
||||
public UpdateField<ObjectGuid> WowAccount = new(0, 7);
|
||||
public UpdateField<ObjectGuid> LootTargetGUID = new(0, 8);
|
||||
@@ -2532,9 +2539,9 @@ namespace Game.Entities
|
||||
public UpdateField<int> CovenantID = new(0, 31);
|
||||
public UpdateField<int> SoulbindID = new(32, 33);
|
||||
public UpdateField<DungeonScoreSummary> DungeonScore = new(32, 34);
|
||||
public UpdateFieldArray<QuestLog>QuestLog = new(125, 35, 36);
|
||||
public UpdateFieldArray<VisibleItem>VisibleItems = new(19, 161, 162);
|
||||
public UpdateFieldArray<float>AvgItemLevel = new(6, 181, 182);
|
||||
public UpdateFieldArray<QuestLog> QuestLog = new(125, 35, 36);
|
||||
public UpdateFieldArray<VisibleItem> VisibleItems = new(19, 161, 162);
|
||||
public UpdateFieldArray<float> AvgItemLevel = new(6, 181, 182);
|
||||
|
||||
public PlayerData() : base(0, TypeId.Player, 188) { }
|
||||
|
||||
@@ -3045,8 +3052,10 @@ namespace Game.Entities
|
||||
public UpdateField<uint> SeasonBestRating = new(0, 8);
|
||||
public UpdateField<uint> PvpTierID = new(0, 9);
|
||||
public UpdateField<uint> WeeklyBestWinPvpTierID = new(0, 10);
|
||||
public UpdateField<uint> Field_28 = new(0, 11);
|
||||
public UpdateField<uint> Field_2C = new(0, 12);
|
||||
|
||||
public PVPInfo() : base(11) { }
|
||||
public PVPInfo() : base(13) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, Player owner, Player receiver)
|
||||
{
|
||||
@@ -3059,6 +3068,8 @@ namespace Game.Entities
|
||||
data.WriteUInt32(SeasonBestRating);
|
||||
data.WriteUInt32(PvpTierID);
|
||||
data.WriteUInt32(WeeklyBestWinPvpTierID);
|
||||
data.WriteUInt32(Field_28);
|
||||
data.WriteUInt32(Field_2C);
|
||||
data.WriteBit(Disqualified);
|
||||
data.FlushBits();
|
||||
}
|
||||
@@ -3069,7 +3080,7 @@ namespace Game.Entities
|
||||
if (ignoreChangesMask)
|
||||
changesMask.SetAll();
|
||||
|
||||
data.WriteBits(changesMask.GetBlock(0), 11);
|
||||
data.WriteBits(changesMask.GetBlock(0), 13);
|
||||
|
||||
if (changesMask[0])
|
||||
{
|
||||
@@ -3117,6 +3128,14 @@ namespace Game.Entities
|
||||
{
|
||||
data.WriteUInt32(WeeklyBestWinPvpTierID);
|
||||
}
|
||||
if (changesMask[11])
|
||||
{
|
||||
data.WriteUInt32(Field_28);
|
||||
}
|
||||
if (changesMask[12])
|
||||
{
|
||||
data.WriteUInt32(Field_2C);
|
||||
}
|
||||
}
|
||||
data.FlushBits();
|
||||
}
|
||||
@@ -3133,6 +3152,8 @@ namespace Game.Entities
|
||||
ClearChangesMask(SeasonBestRating);
|
||||
ClearChangesMask(PvpTierID);
|
||||
ClearChangesMask(WeeklyBestWinPvpTierID);
|
||||
ClearChangesMask(Field_28);
|
||||
ClearChangesMask(Field_2C);
|
||||
_changesMask.ResetAll();
|
||||
}
|
||||
}
|
||||
@@ -3285,8 +3306,8 @@ namespace Game.Entities
|
||||
|
||||
public class ActivePlayerUnk901 : BaseUpdateData<Player>
|
||||
{
|
||||
public UpdateField<ObjectGuid> Field_0 = new(0, 1 );
|
||||
public UpdateField<int> Field_10 = new(0, 2 );
|
||||
public UpdateField<ObjectGuid> Field_0 = new(0, 1);
|
||||
public UpdateField<int> Field_10 = new(0, 2);
|
||||
|
||||
public ActivePlayerUnk901() : base(3) { }
|
||||
|
||||
@@ -3525,7 +3546,7 @@ namespace Game.Entities
|
||||
public UpdateField<ulong> GuildClubMemberID = new(98, 101);
|
||||
public UpdateField<uint> Honor = new(98, 102);
|
||||
public UpdateField<uint> HonorNextLevel = new(98, 103);
|
||||
public UpdateField<byte>NumBankSlots = new(98, 104);
|
||||
public UpdateField<byte> NumBankSlots = new(98, 104);
|
||||
public UpdateField<ActivePlayerUnk901> Field_1410 = new(98, 106);
|
||||
public UpdateField<Optional<QuestSession>> QuestSession = new(98, 105);
|
||||
public UpdateField<int> UiChromieTimeExpansionID = new(98, 107);
|
||||
@@ -3534,26 +3555,25 @@ namespace Game.Entities
|
||||
public UpdateField<short> DEBUGSoulbindConduitRank = new(98, 110);
|
||||
public UpdateField<DungeonScoreData> DungeonScore = new(98, 111);
|
||||
public UpdateFieldArray<ObjectGuid> InvSlots = new(199, 112, 113);
|
||||
public UpdateFieldArray<uint> TrackResourceMask = new(2, 312, 313);
|
||||
public UpdateFieldArray<ulong> ExploredZones = new(240, 315, 316);
|
||||
public UpdateFieldArray<RestInfo> RestInfo = new(2, 556, 557);
|
||||
public UpdateFieldArray<int> ModDamageDonePos = new(7, 559, 560);
|
||||
public UpdateFieldArray<int> ModDamageDoneNeg = new(7, 559, 567);
|
||||
public UpdateFieldArray<float> ModDamageDonePercent = new(7, 559, 574);
|
||||
public UpdateFieldArray<float> ModHealingDonePercent = new(7, 559, 581);
|
||||
public UpdateFieldArray<float> WeaponDmgMultipliers = new(3, 588, 589);
|
||||
public UpdateFieldArray<float> WeaponAtkSpeedMultipliers = new(3, 588, 592);
|
||||
public UpdateFieldArray<uint> BuybackPrice = new(12, 595, 596);
|
||||
public UpdateFieldArray<uint> BuybackTimestamp = new(12, 595, 608);
|
||||
public UpdateFieldArray<uint> CombatRatings = new(32, 620, 621);
|
||||
public UpdateFieldArray<PVPInfo> PvpInfo = new(6, 653, 654);
|
||||
public UpdateFieldArray<uint> NoReagentCostMask = new(4, 660, 661);
|
||||
public UpdateFieldArray<uint> ProfessionSkillLine = new(2, 665, 666);
|
||||
public UpdateFieldArray<uint> BagSlotFlags = new(4, 668, 669);
|
||||
public UpdateFieldArray<uint> BankBagSlotFlags = new(7, 673, 674);
|
||||
public UpdateFieldArray<ulong> QuestCompleted = new(875, 681, 682);
|
||||
public UpdateFieldArray<ulong> ExploredZones = new(240, 312, 313);
|
||||
public UpdateFieldArray<RestInfo> RestInfo = new(2, 553, 554);
|
||||
public UpdateFieldArray<int> ModDamageDonePos = new(7, 556, 557);
|
||||
public UpdateFieldArray<int> ModDamageDoneNeg = new(7, 556, 564);
|
||||
public UpdateFieldArray<float> ModDamageDonePercent = new(7, 556, 571);
|
||||
public UpdateFieldArray<float> ModHealingDonePercent = new(7, 556, 578);
|
||||
public UpdateFieldArray<float> WeaponDmgMultipliers = new(3, 585, 586);
|
||||
public UpdateFieldArray<float> WeaponAtkSpeedMultipliers = new(3, 585, 589);
|
||||
public UpdateFieldArray<uint> BuybackPrice = new(12, 592, 593);
|
||||
public UpdateFieldArray<uint> BuybackTimestamp = new(12, 592, 605);
|
||||
public UpdateFieldArray<uint> CombatRatings = new(32, 617, 618);
|
||||
public UpdateFieldArray<PVPInfo> PvpInfo = new(6, 650, 651);
|
||||
public UpdateFieldArray<uint> NoReagentCostMask = new(4, 657, 658);
|
||||
public UpdateFieldArray<uint> ProfessionSkillLine = new(2, 662, 663);
|
||||
public UpdateFieldArray<uint> BagSlotFlags = new(4, 665, 666);
|
||||
public UpdateFieldArray<uint> BankBagSlotFlags = new(7, 670, 671);
|
||||
public UpdateFieldArray<ulong> QuestCompleted = new(875, 678, 679);
|
||||
|
||||
public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1557) { }
|
||||
public ActivePlayerData() : base(0, TypeId.ActivePlayer, 1554) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver)
|
||||
{
|
||||
@@ -3572,10 +3592,6 @@ namespace Game.Entities
|
||||
data.WriteUInt32(CharacterPoints);
|
||||
data.WriteUInt32(MaxTalentTiers);
|
||||
data.WriteUInt32(TrackCreatureMask);
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
data.WriteUInt32(TrackResourceMask[i]);
|
||||
}
|
||||
data.WriteFloat(MainhandExpertise);
|
||||
data.WriteFloat(OffhandExpertise);
|
||||
data.WriteFloat(RangedExpertise);
|
||||
@@ -4611,150 +4627,140 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
if (changesMask[312])
|
||||
{
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
if (changesMask[313 + i])
|
||||
{
|
||||
data.WriteUInt32(TrackResourceMask[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[315])
|
||||
{
|
||||
for (int i = 0; i < 240; ++i)
|
||||
{
|
||||
if (changesMask[316 + i])
|
||||
if (changesMask[313 + i])
|
||||
{
|
||||
data.WriteUInt64(ExploredZones[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[556])
|
||||
if (changesMask[553])
|
||||
{
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
if (changesMask[557 + i])
|
||||
if (changesMask[554 + i])
|
||||
{
|
||||
RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[559])
|
||||
if (changesMask[556])
|
||||
{
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
if (changesMask[560 + i])
|
||||
if (changesMask[557 + i])
|
||||
{
|
||||
data.WriteInt32(ModDamageDonePos[i]);
|
||||
}
|
||||
if (changesMask[567 + i])
|
||||
if (changesMask[564 + i])
|
||||
{
|
||||
data.WriteInt32(ModDamageDoneNeg[i]);
|
||||
}
|
||||
if (changesMask[574 + i])
|
||||
if (changesMask[571 + i])
|
||||
{
|
||||
data.WriteFloat(ModDamageDonePercent[i]);
|
||||
}
|
||||
if (changesMask[581 + i])
|
||||
if (changesMask[578 + i])
|
||||
{
|
||||
data.WriteFloat(ModHealingDonePercent[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[588])
|
||||
if (changesMask[585])
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
if (changesMask[589 + i])
|
||||
if (changesMask[586 + i])
|
||||
{
|
||||
data.WriteFloat(WeaponDmgMultipliers[i]);
|
||||
}
|
||||
if (changesMask[592 + i])
|
||||
if (changesMask[589 + i])
|
||||
{
|
||||
data.WriteFloat(WeaponAtkSpeedMultipliers[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[595])
|
||||
if (changesMask[592])
|
||||
{
|
||||
for (int i = 0; i < 12; ++i)
|
||||
{
|
||||
if (changesMask[596 + i])
|
||||
if (changesMask[593 + i])
|
||||
{
|
||||
data.WriteUInt32(BuybackPrice[i]);
|
||||
}
|
||||
if (changesMask[608 + i])
|
||||
if (changesMask[605 + i])
|
||||
{
|
||||
data.WriteUInt32(BuybackTimestamp[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[620])
|
||||
if (changesMask[617])
|
||||
{
|
||||
for (int i = 0; i < 32; ++i)
|
||||
{
|
||||
if (changesMask[621 + i])
|
||||
if (changesMask[618 + i])
|
||||
{
|
||||
data.WriteUInt32(CombatRatings[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[660])
|
||||
if (changesMask[657])
|
||||
{
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
if (changesMask[661 + i])
|
||||
if (changesMask[658 + i])
|
||||
{
|
||||
data.WriteUInt32(NoReagentCostMask[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[665])
|
||||
if (changesMask[662])
|
||||
{
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
if (changesMask[666 + i])
|
||||
if (changesMask[663 + i])
|
||||
{
|
||||
data.WriteUInt32(ProfessionSkillLine[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[668])
|
||||
if (changesMask[665])
|
||||
{
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
if (changesMask[669 + i])
|
||||
if (changesMask[666 + i])
|
||||
{
|
||||
data.WriteUInt32(BagSlotFlags[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[673])
|
||||
if (changesMask[670])
|
||||
{
|
||||
for (int i = 0; i < 7; ++i)
|
||||
{
|
||||
if (changesMask[674 + i])
|
||||
if (changesMask[671 + i])
|
||||
{
|
||||
data.WriteUInt32(BankBagSlotFlags[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[681])
|
||||
if (changesMask[678])
|
||||
{
|
||||
for (int i = 0; i < 875; ++i)
|
||||
{
|
||||
if (changesMask[682 + i])
|
||||
if (changesMask[679 + i])
|
||||
{
|
||||
data.WriteUInt64(QuestCompleted[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (changesMask[653])
|
||||
if (changesMask[650])
|
||||
{
|
||||
for (int i = 0; i < 6; ++i)
|
||||
{
|
||||
if (changesMask[654 + i])
|
||||
if (changesMask[651 + i])
|
||||
{
|
||||
PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver);
|
||||
}
|
||||
@@ -4873,7 +4879,6 @@ namespace Game.Entities
|
||||
ClearChangesMask(DEBUGSoulbindConduitRank);
|
||||
ClearChangesMask(DungeonScore);
|
||||
ClearChangesMask(InvSlots);
|
||||
ClearChangesMask(TrackResourceMask);
|
||||
ClearChangesMask(ExploredZones);
|
||||
ClearChangesMask(RestInfo);
|
||||
ClearChangesMask(ModDamageDonePos);
|
||||
@@ -5429,6 +5434,31 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public class VisualAnim : BaseUpdateData<AreaTrigger>
|
||||
{
|
||||
public UpdateField<bool> Field_C = new(0, 1);
|
||||
public UpdateField<uint> AnimationDataID = new(0, 2);
|
||||
public UpdateField<uint> AnimKitID = new(0, 3);
|
||||
public UpdateField<uint> AnimProgress = new(0, 4);
|
||||
|
||||
public VisualAnim() : base(0, TypeId.AreaTrigger, 5) { }
|
||||
|
||||
void WriteCreate(WorldPacket data, AreaTrigger owner, Player receiver)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void WriteUpdate(WorldPacket data, bool ignoreChangesMask, AreaTrigger owner, Player receiver)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void ClearChangesMask()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class AreaTriggerFieldData : BaseUpdateData<AreaTrigger>
|
||||
{
|
||||
public UpdateField<ScaleCurve> OverrideScaleCurve = new(0, 1);
|
||||
@@ -5444,8 +5474,10 @@ namespace Game.Entities
|
||||
public UpdateField<float> BoundsRadius2D = new(0, 11);
|
||||
public UpdateField<uint> DecalPropertiesID = new(0, 12);
|
||||
public UpdateField<ObjectGuid> CreatingEffectGUID = new(0, 13);
|
||||
public UpdateField<ObjectGuid> Field_80 = new(0, 14);
|
||||
public UpdateField<VisualAnim> VisualAnim = new(0, 15);
|
||||
|
||||
public AreaTriggerFieldData() : base(0, TypeId.AreaTrigger, 14) { }
|
||||
public AreaTriggerFieldData() : base(0, TypeId.AreaTrigger, 16) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
|
||||
{
|
||||
@@ -5690,9 +5722,10 @@ namespace Game.Entities
|
||||
public UpdateField<List<ConversationLine>> Lines = new(0, 2);
|
||||
public DynamicUpdateField<ConversationActorField> Actors = new(0, 3);
|
||||
public UpdateField<uint> LastLineEndTime = new(0, 4);
|
||||
public UpdateField<uint>Progress = new(0, 5);
|
||||
public UpdateField<uint> Progress = new(0, 5);
|
||||
public UpdateField<uint> Flags = new(0, 6);
|
||||
|
||||
public ConversationData() : base(0, TypeId.Conversation, 6) { }
|
||||
public ConversationData() : base(0, TypeId.Conversation, 7) { }
|
||||
|
||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Conversation owner, Player receiver)
|
||||
{
|
||||
|
||||
@@ -459,10 +459,6 @@ namespace Game.Entities
|
||||
bool hasMorphCurveID = createProperties != null && createProperties.MorphCurveId != 0;
|
||||
bool hasFacingCurveID = createProperties != null && createProperties.FacingCurveId != 0;
|
||||
bool hasMoveCurveID = createProperties != null && createProperties.MoveCurveId != 0;
|
||||
bool hasAnimation = createProperties != null && createProperties.AnimId != 0;
|
||||
bool hasUnk3 = areaTriggerTemplate != null && areaTriggerTemplate.HasFlag(AreaTriggerFlags.Unk3);
|
||||
bool hasAnimKitID = createProperties != null && createProperties.AnimKitId != 0;
|
||||
bool hasAnimProgress = false;
|
||||
bool hasAreaTriggerSphere = shape.IsSphere();
|
||||
bool hasAreaTriggerBox = shape.IsBox();
|
||||
bool hasAreaTriggerPolygon = createProperties != null && shape.IsPolygon();
|
||||
@@ -482,10 +478,6 @@ namespace Game.Entities
|
||||
data.WriteBit(hasMorphCurveID);
|
||||
data.WriteBit(hasFacingCurveID);
|
||||
data.WriteBit(hasMoveCurveID);
|
||||
data.WriteBit(hasAnimation);
|
||||
data.WriteBit(hasAnimKitID);
|
||||
data.WriteBit(hasUnk3);
|
||||
data.WriteBit(hasAnimProgress);
|
||||
data.WriteBit(hasAreaTriggerSphere);
|
||||
data.WriteBit(hasAreaTriggerBox);
|
||||
data.WriteBit(hasAreaTriggerPolygon);
|
||||
@@ -494,9 +486,6 @@ namespace Game.Entities
|
||||
data.WriteBit(hasOrbit);
|
||||
data.WriteBit(hasMovementScript);
|
||||
|
||||
if (hasUnk3)
|
||||
data.WriteBit(false);
|
||||
|
||||
data.FlushBits();
|
||||
|
||||
if (hasAreaTriggerSpline)
|
||||
@@ -522,15 +511,6 @@ namespace Game.Entities
|
||||
if (hasMoveCurveID)
|
||||
data.WriteUInt32(createProperties.MoveCurveId);
|
||||
|
||||
if (hasAnimation)
|
||||
data.WriteUInt32(createProperties.AnimId);
|
||||
|
||||
if (hasAnimKitID)
|
||||
data.WriteUInt32(createProperties.AnimKitId);
|
||||
|
||||
if (hasAnimProgress)
|
||||
data.WriteUInt32(0);
|
||||
|
||||
if (hasAreaTriggerSphere)
|
||||
{
|
||||
data.WriteFloat(shape.SphereDatas.Radius);
|
||||
|
||||
@@ -2309,7 +2309,7 @@ namespace Game.Entities
|
||||
stmt.AddValue(index++, GetMaxHealth());
|
||||
|
||||
for (byte i = 0; i < (int)PowerType.MaxPerClass; ++i)
|
||||
stmt.AddValue(index++, GetMaxPower((PowerType)i));
|
||||
stmt.AddValue(index++, m_unitData.MaxPower[i]);
|
||||
|
||||
for (byte i = 0; i < (int)Stats.Max; ++i)
|
||||
stmt.AddValue(index++, GetStat((Stats)i));
|
||||
@@ -2317,14 +2317,14 @@ namespace Game.Entities
|
||||
for (int i = 0; i < (int)SpellSchools.Max; ++i)
|
||||
stmt.AddValue(index++, GetResistance((SpellSchools)i));
|
||||
|
||||
stmt.AddValue(index++, (float)m_activePlayerData.BlockPercentage);
|
||||
stmt.AddValue(index++, (float)m_activePlayerData.DodgePercentage);
|
||||
stmt.AddValue(index++, (float)m_activePlayerData.ParryPercentage);
|
||||
stmt.AddValue(index++, (float)m_activePlayerData.CritPercentage);
|
||||
stmt.AddValue(index++, (float)m_activePlayerData.RangedCritPercentage);
|
||||
stmt.AddValue(index++, (float)m_activePlayerData.SpellCritPercentage);
|
||||
stmt.AddValue(index++, (int)m_unitData.AttackPower);
|
||||
stmt.AddValue(index++, (int)m_unitData.RangedAttackPower);
|
||||
stmt.AddValue(index++, m_activePlayerData.BlockPercentage);
|
||||
stmt.AddValue(index++, m_activePlayerData.DodgePercentage);
|
||||
stmt.AddValue(index++, m_activePlayerData.ParryPercentage);
|
||||
stmt.AddValue(index++, m_activePlayerData.CritPercentage);
|
||||
stmt.AddValue(index++, m_activePlayerData.RangedCritPercentage);
|
||||
stmt.AddValue(index++, m_activePlayerData.SpellCritPercentage);
|
||||
stmt.AddValue(index++, m_unitData.AttackPower);
|
||||
stmt.AddValue(index++, m_unitData.RangedAttackPower);
|
||||
stmt.AddValue(index++, GetBaseSpellPowerBonus());
|
||||
stmt.AddValue(index, m_activePlayerData.CombatRatings[(int)CombatRating.ResiliencePlayerDamage]);
|
||||
|
||||
|
||||
@@ -7436,9 +7436,6 @@ namespace Game.Entities
|
||||
public void AddTrackCreatureFlag(uint flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.TrackCreatureMask), flags); }
|
||||
public void RemoveTrackCreatureFlag(uint flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.TrackCreatureMask), flags); }
|
||||
|
||||
public void AddTrackResourceFlag(uint index, uint flags) { SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.TrackResourceMask, (int)index), flags); }
|
||||
public void RemoveTrackResourceFlag(uint index, uint flags) { RemoveUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.TrackResourceMask, (int)index), flags); }
|
||||
|
||||
public void SetVersatilityBonus(float value) { SetUpdateFieldStatValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.VersatilityBonus), value); }
|
||||
|
||||
public void ApplyModOverrideSpellPowerByAPPercent(float mod, bool apply) { ApplyModUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.OverrideSpellPowerByAPPercent), mod, apply); }
|
||||
|
||||
@@ -23,7 +23,7 @@ namespace Game.Networking.Packets
|
||||
public struct DungeonScoreMapSummary
|
||||
{
|
||||
public int ChallengeModeID;
|
||||
public int MapScore;
|
||||
public float MapScore;
|
||||
public int BestRunLevel;
|
||||
public int BestRunDurationMS;
|
||||
public bool FinishedSuccess;
|
||||
@@ -31,7 +31,7 @@ namespace Game.Networking.Packets
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteInt32(ChallengeModeID);
|
||||
data.WriteInt32(MapScore);
|
||||
data.WriteFloat(MapScore);
|
||||
data.WriteInt32(BestRunLevel);
|
||||
data.WriteInt32(BestRunDurationMS);
|
||||
data.WriteBit(FinishedSuccess);
|
||||
@@ -41,12 +41,12 @@ namespace Game.Networking.Packets
|
||||
|
||||
public class DungeonScoreSummary
|
||||
{
|
||||
public int CurrentSeasonScore;
|
||||
public float CurrentSeasonScore;
|
||||
public List<DungeonScoreMapSummary> Runs = new();
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteInt32(CurrentSeasonScore);
|
||||
data.WriteFloat(CurrentSeasonScore);
|
||||
data.WriteInt32(Runs.Count);
|
||||
foreach (var dungeonScoreMapSummary in Runs)
|
||||
dungeonScoreMapSummary.Write(data);
|
||||
@@ -93,7 +93,7 @@ namespace Game.Networking.Packets
|
||||
public long CompletionDate;
|
||||
public int Season;
|
||||
public List<MythicPlusMember> Members = new();
|
||||
public int RunScore;
|
||||
public float RunScore;
|
||||
public int[] KeystoneAffixIDs = new int[4];
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
@@ -108,7 +108,7 @@ namespace Game.Networking.Packets
|
||||
data.WriteInt32(id);
|
||||
|
||||
data.WriteInt32(Members.Count);
|
||||
data.WriteInt32(RunScore);
|
||||
data.WriteFloat(RunScore);
|
||||
foreach (var member in Members)
|
||||
member.Write(data);
|
||||
|
||||
@@ -121,12 +121,12 @@ namespace Game.Networking.Packets
|
||||
{
|
||||
public int KeystoneAffixID;
|
||||
public MythicPlusRun Run = new();
|
||||
public int Score;
|
||||
public float Score;
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteInt32(KeystoneAffixID);
|
||||
data.WriteInt32(Score);
|
||||
data.WriteFloat(Score);
|
||||
Run.Write(data);
|
||||
}
|
||||
}
|
||||
@@ -135,13 +135,13 @@ namespace Game.Networking.Packets
|
||||
{
|
||||
public int MapChallengeModeID;
|
||||
public List<DungeonScoreBestRunForAffix> BestRuns = new();
|
||||
public int OverAllScore;
|
||||
public float OverAllScore;
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteInt32(MapChallengeModeID);
|
||||
data.WriteInt32(BestRuns.Count);
|
||||
data.WriteInt32(OverAllScore);
|
||||
data.WriteFloat(OverAllScore);
|
||||
foreach (var bestRun in BestRuns)
|
||||
bestRun.Write(data);
|
||||
}
|
||||
@@ -151,13 +151,13 @@ namespace Game.Networking.Packets
|
||||
{
|
||||
public int Season;
|
||||
public List<DungeonScoreMapData> Maps = new();
|
||||
public int SeasonScore;
|
||||
public float SeasonScore;
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
{
|
||||
data.WriteInt32(Season);
|
||||
data.WriteInt32(Maps.Count);
|
||||
data.WriteInt32(SeasonScore);
|
||||
data.WriteFloat(SeasonScore);
|
||||
foreach (var map in Maps)
|
||||
map.Write(data);
|
||||
}
|
||||
|
||||
@@ -1943,25 +1943,6 @@ namespace Game.Spells
|
||||
target.RemoveTrackCreatureFlag(1u << (GetMiscValue() - 1));
|
||||
}
|
||||
|
||||
[AuraEffectHandler(AuraType.TrackResources)]
|
||||
void HandleAuraTrackResources(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
|
||||
{
|
||||
if (!mode.HasAnyFlag(AuraEffectHandleModes.SendForClientMask))
|
||||
return;
|
||||
|
||||
Player target = aurApp.GetTarget().ToPlayer();
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
uint bitIndex = (uint)GetMiscValue() - 1;
|
||||
uint index = bitIndex / 32;
|
||||
uint flag = 1u << ((int)bitIndex % 32);
|
||||
if (apply)
|
||||
target.AddTrackResourceFlag(index, flag);
|
||||
else
|
||||
target.RemoveTrackResourceFlag(index, flag);
|
||||
}
|
||||
|
||||
[AuraEffectHandler(AuraType.TrackStealthed)]
|
||||
void HandleAuraTrackStealthed(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
|
||||
{
|
||||
|
||||
@@ -1632,6 +1632,7 @@ CREATE TABLE `character_stats` (
|
||||
`maxpower4` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`maxpower5` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`maxpower6` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`maxpower7` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`strength` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`agility` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`stamina` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
@@ -1843,6 +1844,7 @@ CREATE TABLE `characters` (
|
||||
`power4` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`power5` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`power6` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`power7` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`latency` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`activeTalentGroup` tinyint(3) unsigned NOT NULL DEFAULT '0',
|
||||
`lootSpecId` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
@@ -3670,7 +3672,8 @@ INSERT INTO `updates` VALUES
|
||||
('2021_10_02_01_characters.sql','F97B956F3B5F909294CA399F75B5795A07C4D8EC','ARCHIVED','2021-10-02 21:47:38',0),
|
||||
('2021_10_15_00_characters.sql','906FECD65CBA7C406969F45FDF28DDEF8AAF8715','ARCHIVED','2021-10-15 10:11:47',0),
|
||||
('2021_10_16_00_characters.sql','B5A31BB6FBC34512767475EDF13099DEC948EBB7','RELEASED','2021-10-16 01:12:20',0),
|
||||
('2021_11_02_00_characters.sql','A3C0A6DA70CC70803C80685E4E2ED6255156520A','RELEASED','2021-11-02 18:11:13',0);
|
||||
('2021_11_02_00_characters.sql','A3C0A6DA70CC70803C80685E4E2ED6255156520A','RELEASED','2021-11-02 18:11:13',0),
|
||||
('2021_11_04_00_characters.sql','ED533235ADAD174F91A6B8E51D1046243B78B46D','RELEASED','2021-11-04 21:53:04',0);
|
||||
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `characters` ADD `power7` int(10) unsigned NOT NULL DEFAULT '0' AFTER `power6`;
|
||||
ALTER TABLE `character_stats` ADD `maxpower7` int(10) unsigned NOT NULL DEFAULT '0' AFTER `maxpower6`;
|
||||
Reference in New Issue
Block a user