public UnitReader( ProcessMemoryReader reader, GameMemoryTable memory, StringLookupTable stringReader ) { this.reader = reader; this.memory = memory; this.stringReader = stringReader; skillReader = new SkillReader(reader, memory); inventoryReader = createInventoryReader(); }
public Dictionary <int, D2Skill> GetSkillMap(D2Unit unit) { Dictionary <int, D2Skill> skills = new Dictionary <int, D2Skill>(); SkillReader skillsReader = new SkillReader(reader, memory); foreach (D2Skill skill in skillsReader.EnumerateSkills(unit)) { int numberOfSkillPoints = skillsReader.GetTotalNumberOfSkillPoints(skill); if (numberOfSkillPoints > 0) { D2SkillData skillData = skillsReader.ReadSkillData(skill); if (skillData.ClassId >= 0 && skillData.ClassId <= 6) { string skillName = skillsReader.GetSkillName((ushort)skillData.SkillId); int skillPoints = skill.numberOfSkillPoints; } } } return(skills); }
public ItemReader(ProcessMemoryReader reader, GameMemoryTable memory) : base(reader, memory) { cachedItemData = new Dictionary <IntPtr, D2ItemData>(); cachedDescriptions = new Dictionary <int, D2ItemDescription>(); globals = reader.Read <D2GlobalData>(reader.ReadAddress32(memory.Address.GlobalData, AddressingMode.Relative)); lowQualityTable = reader.Read <D2SafeArray>(memory.Address.LowQualityItems, AddressingMode.Relative); descriptionTable = reader.Read <D2SafeArray>(memory.Address.ItemDescriptions, AddressingMode.Relative); magicModifiers = reader.Read <ModifierTable>(memory.Address.MagicModifierTable, AddressingMode.Relative); rareModifiers = reader.Read <ModifierTable>(memory.Address.RareModifierTable, AddressingMode.Relative); skillReader = new SkillReader(reader, memory); if (globals != null) { opNestings = reader.ReadArray <ushort>(globals.OpStatNesting, (int)globals.OpStatNestingCount); if (ItemStatCost == null && !globals.ItemStatCost.IsNull) { ItemStatCost = reader.ReadArray <D2ItemStatCost>(globals.ItemStatCost, (int)globals.ItemStatCostCount); } } }