void StatsSetup(int atk, int amr) //Khoi tao mac dinh cho player { basePrimary = new PrimaryStats(atk, amr); currentPrimary = new PrimaryStats(basePrimary.PowerAttack, basePrimary.Armor); maxSecondary = new SecondaryStats(100 + (int)(basePrimary.Armor * 0.5f), 100 + (int)(basePrimary.PowerAttack * 0.5f)); currentSecondary = new SecondaryStats(maxSecondary.Hearth, maxSecondary.Mana); }
public float GetSecondaryStat(SecondaryStats stat) { float results = 0f; float multiplier = 1f; LeaderSkill LeadershipSkill = PlayerManager.Instance.CurrentLeaderSkill; foreach (EquipmentType type in EquipedItems.Keys) { if (EquipedItems[type] != null) { results += EquipedItems[type].GetStats(stat); multiplier += EquipedItems[type].GetMultiplier(stat); } } //Debug.Log(stat + " calc: " + results + " * " + (multiplier * 100f).ToString("0") + "%"); if (LeadershipSkill != null && LeadershipSkill.type == LeadershipSkillType.SecondaryStatBoost && LeadershipSkill.secondaryStat == stat) { return(Mathf.RoundToInt(results * multiplier * LeadershipSkill.Multiplier)); } else { return(Mathf.RoundToInt(results * multiplier)); } }
public string GetDisplayValue(SecondaryStats stat, float ilvl, int seed) { if (!ContainsStat(stat)) { return(""); } string result = ""; switch (data.ModType) { case ItemModType.Add: result = "+" + Mathf.RoundToInt(data.GetModEffect(ilvl, seed)) + " " + stat.ToString(); break; case ItemModType.Multi: Debug.Log("[Display Stat] " + stat + ": " + (data.GetModEffect(ilvl, seed))); result = "+" + Mathf.RoundToInt(data.GetModEffect(ilvl, seed) * 100f) + "% " + stat.ToString(); break; case ItemModType.Status: default: result = "TODO fill this out"; break; } return(result); }
public ModifySecondaryStatContext(SecondaryStats stats) { _stats = stats; _setHistory = new SecondaryStats(); _resetHistory = new SecondaryStats(); }
internal static void PopulateSecondryStats() { using (StyxWoW.Memory.AcquireFrame()) { _secondaryStats = new SecondaryStats(); } // Haste Rating Required Per 1% // Level 60 Level 70 Level 80 Level 85 Level 90 // 10 15.77 32.79 128.125 425.19 Logging.WriteDiagnostic(""); Logging.WriteDiagnostic("Health: {0}", StyxWoW.Me.MaxHealth); Logging.WriteDiagnostic("Agility: {0}", StyxWoW.Me.Agility); Logging.WriteDiagnostic("Intellect: {0}", StyxWoW.Me.Intellect); Logging.WriteDiagnostic("Spirit: {0}", StyxWoW.Me.Spirit); Logging.WriteDiagnostic(""); Logging.WriteDiagnostic("Attack Power: {0}", _secondaryStats.AttackPower); Logging.WriteDiagnostic("Power: {0:F2}", _secondaryStats.Power); Logging.WriteDiagnostic("Hit(M/R): {0}/{1}", _secondaryStats.MeleeHit, _secondaryStats.SpellHit); Logging.WriteDiagnostic("Expertise: {0}", _secondaryStats.Expertise); Logging.WriteDiagnostic("Mastery: {0:F2}", _secondaryStats.Mastery); Logging.WriteDiagnostic("Mastery (CR): {0:F2}", _secondaryStats.MasteryCR); Logging.WriteDiagnostic("Crit: {0:F2}", _secondaryStats.Crit); Logging.WriteDiagnostic("Haste(M/R): {0} (+{1} % Haste) / {2} (+{3} % Haste)", _secondaryStats.MeleeHaste, Math.Round(_secondaryStats.MeleeHaste / 425.19, 2), _secondaryStats.SpellHaste, Math.Round(_secondaryStats.SpellHaste / 425.19, 2)); Logging.WriteDiagnostic("SpellPen: {0}", _secondaryStats.SpellPen); Logging.WriteDiagnostic("PvP Resil: {0}", _secondaryStats.Resilience); Logging.WriteDiagnostic("PvP Power: {0}", _secondaryStats.PvpPower); Logging.WriteDiagnostic("Spell Power: {0}", _secondaryStats.SpellPower); Logging.WriteDiagnostic(""); }
void StatSetup(int str, int agi, int intl, int stam, int spr) { basePrimary = new PrimaryStats(str, agi, intl, stam, spr); currentPrimary = new PrimaryStats(basePrimary.strength, basePrimary.agility, basePrimary.intellect, basePrimary.stamina, basePrimary.spirit); maxSecondary = new SecondaryStats(currentPrimary.stamina * 10, currentPrimary.intellect * 10, currentPrimary.agility * 10); currentSecondary = new SecondaryStats(maxSecondary.health, maxSecondary.magic, maxSecondary.energy); }
public float GetValue(SecondaryStats stat, float ilvl, int seed) { if (!ContainsStat(stat)) { return(0); } return(data.GetModEffect(ilvl, seed)); }
public bool ContainsStat(SecondaryStats stat) { if (GetModType() == ItemModType.Status) { return(false); } return(data.isStatType(ItemModEffects.Secondary) && data.isStat(stat)); }
public Creature() { GivenName = "Default_Name"; species = "Ratcher"; stats = new Stats(); temperament = 0; lifeExpectancy = 0; secondaryStats = new SecondaryStats(); guid = Guid.NewGuid(); }
void UpdateStatValue(SecondaryStats stat, int difference) { //print(stat.ToString() + " [" + difference + "]"); if (!SecondaryStatsUpdates.ContainsKey(stat)) { print("No UI Text Element for stat: " + stat); return; } UpdateStatValue(SecondaryStatsUpdates[stat], difference); }
public bool isStat(SecondaryStats stat) { if (SecondaryStat == null) { return(false); } if (SecondaryStat == stat) { return(true); } return(false); }
public int GetStatDifference(SecondaryStats stat, Item data, Hero hero) { // Get the base hero stats without the item // Get the (original % effect) then remove the item stats after the multi float heroBaseStat = (hero.GetSecondaryStat(stat) / hero.GetStatMultiplier(stat)) - GetStats(stat); float baseMulti = hero.GetStatMultiplier(stat) - GetMultiplier(stat); // Get the hero stats with the new item // Add the item stats before the multi then scale by the % effect, finish by subtracting the original value to get the difference float diffValue = ((heroBaseStat + data.GetStats(stat)) * (baseMulti + data.GetMultiplier(stat))) - hero.GetSecondaryStat(stat); return(Mathf.RoundToInt(diffValue)); //return data.GetStats(stat) - GetStats(stat); }
public float GetStatMultiplier(SecondaryStats stat) { float multiplier = 1f; foreach (EquipmentType type in EquipedItems.Keys) { if (EquipedItems[type] != null) { multiplier += EquipedItems[type].GetMultiplier(stat); } } return(multiplier); }
public static void WriteCharacterGearAndSetupInfo() { if (GlobalSettings.Instance.LogLevel < LogLevel.Normal) { return; } uint totalItemLevel; SecondaryStats ss; //create within frame (does series of LUA calls) using (StyxWoW.Memory.AcquireFrame()) { totalItemLevel = CalcTotalGearScore(); ss = new SecondaryStats(); } Logger.WriteFile(""); Logger.WriteFile("Equipped Total Item Level : {0}", totalItemLevel); Logger.WriteFile("Equipped Average Item Level: {0:F0}", ((double)totalItemLevel) / 17.0); Logger.WriteFile(""); Logger.WriteFile("Health: {0}", Me.MaxHealth); Logger.WriteFile("Agility: {0}", Me.Agility); Logger.WriteFile("Intellect: {0}", Me.Intellect); Logger.WriteFile("Spirit: {0}", Me.Spirit); Logger.WriteFile(""); Logger.WriteFile("Hit(M/R): {0}/{1}", ss.MeleeHit, ss.SpellHit); Logger.WriteFile("Expertise: {0}", ss.Expertise); Logger.WriteFile("Mastery: {0:F2}", ss.Mastery); Logger.WriteFile("Crit: {0:F2}", ss.Crit); Logger.WriteFile("Haste(M/R): {0}/{1}", ss.MeleeHaste, ss.SpellHaste); Logger.WriteFile("SpellPen: {0}", ss.SpellPen); Logger.WriteFile("PvP Resil: {0}", ss.Resilience); Logger.WriteFile("PvP Power: {0}", ss.PvpPower); Logger.WriteFile(""); if (!Singular.Managers.TalentManager.Glyphs.Any()) { Logger.WriteFile("--- no glyphs equipped"); } else { foreach (string glyphName in Singular.Managers.TalentManager.Glyphs.OrderBy(g => g).Select(g => g).ToList()) { Logger.WriteFile("--- {0}", glyphName); } } Logger.WriteFile(""); }
private void Initialize(int[] primary, int[] secondary, int[] defense, int[] element, int[] armorType, int[] weaponType) { UnitLevel = new Level(200); Conditions = Condition.None; Primary = new PrimaryStats(primary); Secondary = new SecondaryStats(secondary); Defense = new DefenseStats(defense); ElementDefense = new ArcaneElementStats(element); ArmorTypes = new ArmorTypeStats(armorType); WeaponTypes = new WeaponDamageTypeStats(weaponType); SetMajorStats(); }
private void Initialize() { UnitLevel = new Level(200); Conditions = Condition.None; Primary = new PrimaryStats(); Secondary = new SecondaryStats(); Defense = new DefenseStats(); ElementDefense = new ArcaneElementStats(); ArmorTypes = new ArmorTypeStats(); WeaponTypes = new WeaponDamageTypeStats(); SetMajorStats(); }
public int GetStats(SecondaryStats stat) { int total = 0; if (data is ItemWeapon) { total = ((ItemWeapon)data).GetStatValue(stat, ItemLevel); } else if (data is ItemArmor) { total = ((ItemArmor)data).GetStatValue(stat, ItemLevel); } else { total = 0; } foreach (ItemAffix affix in Affixes) { if (affix.isStatType(ItemModEffects.Secondary)) { switch (affix.GetModType()) { case ItemModType.Add: total += Mathf.RoundToInt(affix.GetValue(stat, ItemLevel, _VarianceSeed)); break; default: break; } } } if (stat == SecondaryStats.SkillLevel) { total = Mathf.CeilToInt(total / 100f); } return(total); }
public FieldObjUser(GameStageUser user) { GameStageUser = user; Watching = new List <IFieldSplit>(); Controlling = new List <IFieldControlledObj>(); ForcedStats = new ForcedStats(); SecondaryStats = new SecondaryStats(); Stats = new CalculatedStats( this, GameStage.ItemTemplates, GameStage.ItemOptionTemplates, GameStage.ItemSetTemplates, GameStage.SkillTemplates ); Damage = new CalculatedDamage( GameStage.SkillTemplates ); UpdateStats().Wait(); }
public float GetMultiplier(SecondaryStats stat) { float multiplier = 0f; Random.InitState(_VarianceSeed); foreach (ItemAffix affix in Affixes) { if (affix.isStatType(ItemModEffects.Secondary)) { switch (affix.GetModType()) { case ItemModType.Multi: multiplier += affix.GetValue(stat, ItemLevel, _VarianceSeed); break; default: break; } } } return(multiplier); }
public static void WriteCharacterGearAndSetupInfo() { Logger.WriteFile(""); if (SingularSettings.Debug) { uint totalItemLevel; SecondaryStats ss; //create within frame (does series of LUA calls) using (StyxWoW.Memory.AcquireFrame()) { totalItemLevel = CalcTotalGearScore(); ss = new SecondaryStats(); } Logger.WriteFile("Equipped Total Item Level : {0}", totalItemLevel); Logger.WriteFile("Equipped Average Item Level: {0}", totalItemLevel / 16); Logger.WriteFile(""); Logger.WriteFile("Health: {0}", Me.MaxHealth); Logger.WriteFile("Strength: {0}", Me.Strength); Logger.WriteFile("Agility: {0}", Me.Agility); Logger.WriteFile("Intellect: {0}", Me.Intellect); Logger.WriteFile("Spirit: {0}", Me.Spirit); Logger.WriteFile(""); Logger.WriteFile("Hit(M/R): {0}/{1}", ss.MeleeHit, ss.SpellHit); Logger.WriteFile("Expertise: {0}", ss.Expertise); Logger.WriteFile("Mastery: {0}", (int)ss.Mastery); Logger.WriteFile("Crit: {0:F2}", ss.Crit); Logger.WriteFile("Haste(M/R): {0}/{1}", ss.MeleeHaste, ss.SpellHaste); Logger.WriteFile("SpellPen: {0}", ss.SpellPen); Logger.WriteFile("PvP Resil: {0}", ss.Resilience); Logger.WriteFile("PvP Power: {0}", ss.PvpPower); Logger.WriteFile(""); } Logger.WriteFile("Talents Selected: {0}", Singular.Managers.TalentManager.Talents.Count(t => t.Selected)); foreach (var t in Singular.Managers.TalentManager.Talents) { if (!t.Selected) continue; string talent = "unknown"; switch (Me.Class) { case WoWClass.DeathKnight: talent = ((ClassSpecific.DeathKnight.DeathKnightTalents)t.Index).ToString(); break; case WoWClass.Druid: talent = ((ClassSpecific.Druid.DruidTalents)t.Index).ToString(); break; case WoWClass.Hunter: talent = ((ClassSpecific.Hunter.HunterTalents)t.Index).ToString(); break; case WoWClass.Mage: talent = ((ClassSpecific.Mage.MageTalents)t.Index).ToString(); break; case WoWClass.Monk: talent = ((ClassSpecific.Monk.MonkTalents)t.Index).ToString(); break; case WoWClass.Paladin: talent = ((ClassSpecific.Paladin.PaladinTalents)t.Index).ToString(); break; case WoWClass.Priest: talent = ((ClassSpecific.Priest.PriestTalents)t.Index).ToString(); break; case WoWClass.Rogue: talent = ((ClassSpecific.Rogue.RogueTalents)t.Index).ToString(); break; case WoWClass.Shaman: talent = ((ClassSpecific.Shaman.ShamanTalents)t.Index).ToString(); break; case WoWClass.Warlock: talent = ((ClassSpecific.Warlock.WarlockTalents)t.Index).ToString(); break; case WoWClass.Warrior: talent = ((ClassSpecific.Warrior.WarriorTalents)t.Index).ToString(); break; } Logger.WriteFile("--- #{0} -{1}", t.Index, talent.CamelToSpaced()); } Logger.WriteFile(" "); Logger.WriteFile("Glyphs Equipped: {0}", Singular.Managers.TalentManager.Glyphs.Count()); foreach (string glyphName in Singular.Managers.TalentManager.Glyphs.OrderBy(g => g).Select(g => g).ToList()) { Logger.WriteFile("--- {0}", glyphName ); } Logger.WriteFile(""); Regex pat = new Regex( "Item \\-" + Me.Class.ToString().CamelToSpaced() + " .*P Bonus"); if ( Me.GetAllAuras().Any( a => pat.IsMatch( a.Name ))) { foreach( var a in Me.GetAllAuras()) { if ( pat.IsMatch( a.Name )) { Logger.WriteFile( " Tier Bonus Aura: {0}", a.Name ); } } Logger.WriteFile(""); } if (Me.Inventory.Equipped.Trinket1 != null) Logger.WriteFile("Trinket1: {0} #{1}", Me.Inventory.Equipped.Trinket1.Name, Me.Inventory.Equipped.Trinket1.Entry); if (Me.Inventory.Equipped.Trinket2 != null) Logger.WriteFile("Trinket2: {0} #{1}", Me.Inventory.Equipped.Trinket2.Name, Me.Inventory.Equipped.Trinket2.Entry); }
public virtual int GetStatValue(SecondaryStats stat, float ilvl) { return(0); }
public int StatDifference(SecondaryStats stat, ItemData data, float ilvl) { int results = GetStatValue(stat, ilvl) - data.GetStatValue(stat, ilvl); return(results); }
public bool isStat(SecondaryStats stat) { return(data.isStat(stat)); }
public AnimaCharacter(ExcelWorksheet excelWorksheet, string player) { Player = player; IsCurrent = false; ImageUrl = excelWorksheet.Cells["AK1"].Text; //Character info Name = excelWorksheet.Cells["E1"].Text; Origine = excelWorksheet.Cells["P1"].Text; Class = excelWorksheet.Cells["F3"].Text; Level = Convert.ToInt32(excelWorksheet.Cells["E5"].Value); Hp = Convert.ToInt32(excelWorksheet.Cells["B12"].Value); string temp = excelWorksheet.Cells["B13"].Text; CurrentHp = string.IsNullOrEmpty(temp) ? Hp : Convert.ToInt32(temp); Regeneration = Convert.ToInt32(excelWorksheet.Cells["J18"].Value); Fatigue = Convert.ToInt32(excelWorksheet.Cells["B18"].Value); temp = excelWorksheet.Cells["B19"].Text; CurrentFatigue = string.IsNullOrEmpty(temp) ? Fatigue : Convert.ToInt32(temp); Movement = Convert.ToInt32(excelWorksheet.Cells["F18"].Value); TotalKiPoints = Convert.ToInt32(excelWorksheet.Cells["V39"].Value); temp = excelWorksheet.Cells["Z39"].Text; CurrentKi = string.IsNullOrEmpty(temp) ? TotalKiPoints : Convert.ToInt32(temp); ArmorPoint = Convert.ToInt32(excelWorksheet.Cells["AC55"].Value); ZeonPoints = Convert.ToInt32(excelWorksheet.Cells["U15"].Value); temp = excelWorksheet.Cells["U16"].Text; CurrentZeon = string.IsNullOrEmpty(temp) ? ZeonPoints : Convert.ToInt32(temp); Amr = Convert.ToInt32(excelWorksheet.Cells["U21"].Value); AmrRegen = Convert.ToInt32(excelWorksheet.Cells["U24"].Value); InnateMagic = Convert.ToInt32(excelWorksheet.Cells["U27"].Value); MagicLevel = Convert.ToInt32(excelWorksheet.Cells["AD8"].Value); PppFree = Convert.ToInt32(excelWorksheet.Cells["Q21"].Value); temp = excelWorksheet.Cells["Q22"].Text; CurrentPpp = string.IsNullOrEmpty(temp) ? PppFree : Convert.ToInt32(temp); IsLucky = Convert.ToBoolean(excelWorksheet.Cells["DC30"].Value); IsUnlucky = Convert.ToBoolean(excelWorksheet.Cells["DC153"].Value); DestinFuneste = Convert.ToBoolean(excelWorksheet.Cells["DC165"].Value); //Base stats foreach (var cell in excelWorksheet.Cells[22, 2, 30, 2]) { BaseStats.Add(new Roll10Stat(StatGroups[0], cell.Text, Convert.ToInt32(cell.Offset(0, 9).Value))); } //Resistances foreach (var cell in excelWorksheet.Cells[32, 2, 36, 2]) { Resistances.Add(new ResistanceStat(StatGroups[1], cell.Text, Convert.ToInt32(cell.Offset(0, 2).Value))); } //Battle stats BattleStats.Add(new Roll100Stat(StatGroups[2], excelWorksheet.Cells["B14"].Text, Convert.ToInt32(excelWorksheet.Cells["B15"].Value))); BattleStats.Add(new Roll100Stat(StatGroups[2], excelWorksheet.Cells["B52"].Text, Convert.ToInt32(excelWorksheet.Cells["AC52"].Value))); BattleStats.Add(new Roll100Stat(StatGroups[2], excelWorksheet.Cells["B53"].Text, Convert.ToInt32(excelWorksheet.Cells["AC53"].Value))); BattleStats.Add(new Roll100Stat(StatGroups[2], excelWorksheet.Cells["B54"].Text, Convert.ToInt32(excelWorksheet.Cells["AC54"].Value))); Roll100Stat defence = BattleStats.Where(x => x.Name == "Esquive" || x.Name == "Parade").OrderByDescending(x => x.Value).First(); BattleStats.Add(new Roll100Stat(StatGroups[2], $"Défense : {defence.Name}", defence.Value)); foreach (var cell in excelWorksheet.Cells[64, 2, 68, 2]) { BattleStats.Add(new Roll100Stat(StatGroups[2], cell.Text, Convert.ToInt32(cell.Offset(0, 27).Value))); } BattleStats.Add(new Roll100Stat(StatGroups[2], excelWorksheet.Cells["B71"].Text, Convert.ToInt32(excelWorksheet.Cells["AC71"].Value))); try {//TODO pourquoi ???? BattleStats.Add(new Roll100Stat(StatGroups[2], excelWorksheet.Cells["Q23"].Text, Convert.ToInt32(excelWorksheet.Cells["Q24"].Value))); } catch (Exception ex) { } //Secondary stats foreach (var cell in excelWorksheet.Cells[75, 2, 143, 2]) { if (!cell.Style.Font.Bold) { SecondaryStats.Add(new Roll100Stat(StatGroups[3], cell.Text, Convert.ToInt32(cell.Offset(0, 27).Value))); } } SecondaryStats.Add(new Roll100Stat(StatGroups[3], excelWorksheet.Cells["G34"].Text, Convert.ToInt32(excelWorksheet.Cells["N34"].Value))); SecondaryStats.Add(new Roll100Stat(StatGroups[3], excelWorksheet.Cells["G35"].Text, Convert.ToInt32(excelWorksheet.Cells["N35"].Value))); SecondaryStats.RemoveAll(x => string.IsNullOrWhiteSpace(x.Name)); base.AllStats.AddRange(BaseStats); base.AllStats.AddRange(Resistances); base.AllStats.AddRange(BattleStats); base.AllStats.AddRange(SecondaryStats); }
List <AffixDisplayInformation> AddToAffixList(List <AffixDisplayInformation> list, SecondaryStats stat, ItemAffix affix) { bool existsInList = false; foreach (AffixDisplayInformation info in list) { if (info.secondary != null && info.secondary == stat && info.type == affix.GetModType()) { info.value += affix.GetValue(stat, item.ItemLevel, item.VarianceSeed); existsInList = true; } } if (!existsInList) { AffixDisplayInformation info = new AffixDisplayInformation(); info.secondary = stat; info.value = affix.GetValue(stat, item.ItemLevel, item.VarianceSeed); info.type = affix.GetModType(); list.Add(info); } return(list); }
public static void WriteCharacterGearAndSetupInfo() { Logger.WriteFile(""); if (SingularSettings.Debug) { uint totalItemLevel; SecondaryStats ss; //create within frame (does series of LUA calls) using (StyxWoW.Memory.AcquireFrame()) { totalItemLevel = CalcTotalGearScore(); ss = new SecondaryStats(); } Logger.WriteFile("Equipped Total Item Level : {0}", totalItemLevel); Logger.WriteFile("Equipped Average Item Level: {0}", totalItemLevel / 16); Logger.WriteFile(""); Logger.WriteFile("Health: {0}", Me.MaxHealth); Logger.WriteFile("Strength: {0}", Me.Strength); Logger.WriteFile("Agility: {0}", Me.Agility); Logger.WriteFile("Intellect: {0}", Me.Intellect); Logger.WriteFile("Spirit: {0}", Me.Spirit); Logger.WriteFile(""); Logger.WriteFile("Hit(M/R): {0}/{1}", ss.MeleeHit, ss.SpellHit); Logger.WriteFile("Expertise: {0}", ss.Expertise); Logger.WriteFile("Mastery: {0}", (int)ss.Mastery); Logger.WriteFile("Crit: {0:F2}", ss.Crit); Logger.WriteFile("Haste(M/R): {0}/{1}", ss.MeleeHaste, ss.SpellHaste); Logger.WriteFile("SpellPen: {0}", ss.SpellPen); Logger.WriteFile("PvP Resil: {0}", ss.Resilience); Logger.WriteFile(""); Logger.WriteFile("PrimaryStat: {0}", Me.GetPrimaryStat()); Logger.WriteFile(""); } Logger.WriteFile("Talents Selected: {0}", Singular.Managers.TalentManager.Talents.Count(t => t.Selected)); foreach (var t in Singular.Managers.TalentManager.Talents) { if (!t.Selected) { continue; } Logger.WriteFile("--- #{0}", t.Index); } Logger.WriteFile(""); Regex pat = new Regex("Item \\-" + Me.Class.ToString().CamelToSpaced() + " .*P Bonus"); if (Me.GetAllAuras().Any(a => pat.IsMatch(a.Name))) { foreach (var a in Me.GetAllAuras()) { if (pat.IsMatch(a.Name)) { Logger.WriteFile(" Tier Bonus Aura: {0}", a.Name); } } Logger.WriteFile(""); } if (Me.Inventory.Equipped.Trinket1 != null) { int itemeffectid = 0; uint spelleffectid = 0; SpellEffect se; try { ItemEffect ie = Me.Inventory.Equipped.Trinket1.Effects.FirstOrDefault(e => e != null); if (ie != null) { itemeffectid = ie.SpellId; se = ie.Spell.SpellEffects.FirstOrDefault(s => s != null); if (se != null) { spelleffectid = se.Id; } } } catch { } Logger.WriteFile( "Trinket1: {0} #{1} ItemEffect:{2} SpellEffect:{3}", Me.Inventory.Equipped.Trinket1.Name, Me.Inventory.Equipped.Trinket1.Entry, itemeffectid, spelleffectid ); } if (Me.Inventory.Equipped.Trinket2 != null) { int itemeffectid = 0; uint spelleffectid = 0; SpellEffect se; try { ItemEffect ie = Me.Inventory.Equipped.Trinket2.Effects.FirstOrDefault(e => e != null); if (ie != null) { itemeffectid = ie.SpellId; se = ie.Spell.SpellEffects.FirstOrDefault(s => s != null); if (se != null) { spelleffectid = se.Id; } } } catch { } Logger.WriteFile( "Trinket2: {0} #{1} ItemEffect:{2} SpellEffect:{3}", Me.Inventory.Equipped.Trinket2.Name, Me.Inventory.Equipped.Trinket2.Entry, itemeffectid, spelleffectid ); } WoWItem item; if (Me.Inventory.Equipped.Hands != null) { /* * item = Me.Inventory.Equipped.Hands; * if (!item.Usable) * Logger.WriteDiagnostic("Hands: {0} #{1} - are not usable and will be ignored", item.Name, item.Entry); * else * { * string itemSpell = Lua.GetReturnVal<string>("return GetItemSpell(" + item.Entry + ")",0); * if (string.IsNullOrEmpty(itemSpell)) * Logger.WriteDiagnostic("Hands: {0} #{1} - does not appear to have a usable enchant present and will be ignored", item.Name, item.Entry); * else * Logger.WriteFile("Hands: {0} #{1} - found [{2}] and will use as per user settings", item.Name, item.Entry, itemSpell); * } */ /* * // debug logic: try another method to check for Engineering Tinkers * foreach (var enchName in GloveEnchants) * { * WoWItem.WoWItemEnchantment ench = item.GetEnchantment(enchName); * if (ench != null) * Logger.WriteFile("Hands (double check): {0} #{1} - found enchant [{2}] #{3} (debug info only)", item.Name, item.Entry, ench.Name, ench.Id); * } */ } item = Me.Inventory.Equipped.Waist; if (item != null) { foreach (var enchName in BeltEnchants) { WoWItem.WoWItemEnchantment ench = item.GetEnchantment(enchName); if (ench != null) { Logger.WriteFile("Belt (double check): {0} #{1} - found enchant [{2}] #{3} (debug info only)", item.Name, item.Entry, ench.Name, ench.Id); } } } }
public static void WriteCharacterGearAndSetupInfo() { if (GlobalSettings.Instance.LogLevel < LogLevel.Normal) return; uint totalItemLevel; SecondaryStats ss; //create within frame (does series of LUA calls) using (StyxWoW.Memory.AcquireFrame()) { totalItemLevel = CalcTotalGearScore(); ss = new SecondaryStats(); } Logger.WriteFile(""); Logger.WriteFile("Equipped Total Item Level : {0}", totalItemLevel); Logger.WriteFile("Equipped Average Item Level: {0:F0}", ((double)totalItemLevel) / 17.0); Logger.WriteFile(""); Logger.WriteFile("Health: {0}", Me.MaxHealth); Logger.WriteFile("Agility: {0}", Me.Agility); Logger.WriteFile("Intellect: {0}", Me.Intellect); Logger.WriteFile("Spirit: {0}", Me.Spirit); Logger.WriteFile(""); Logger.WriteFile("Hit(M/R): {0}/{1}", ss.MeleeHit, ss.SpellHit); Logger.WriteFile("Expertise: {0}", ss.Expertise); Logger.WriteFile("Mastery: {0:F2}", ss.Mastery); Logger.WriteFile("Crit: {0:F2}", ss.Crit); Logger.WriteFile("Haste(M/R): {0}/{1}", ss.MeleeHaste, ss.SpellHaste); Logger.WriteFile("SpellPen: {0}", ss.SpellPen); Logger.WriteFile("PvP Resil: {0}", ss.Resilience); Logger.WriteFile("PvP Power: {0}", ss.PvpPower); Logger.WriteFile(""); if (!Singular.Managers.TalentManager.Glyphs.Any()) Logger.WriteFile("--- no glyphs equipped"); else { foreach (string glyphName in Singular.Managers.TalentManager.Glyphs.OrderBy(g => g).Select(g => g).ToList()) { Logger.WriteFile("--- {0}", glyphName ); } } Logger.WriteFile(""); }