public PlayerData(BinaryReader reader, int version) : base(reader, version) { int c; m_Str = reader.ReadUInt16(); m_Dex = reader.ReadUInt16(); m_Int = reader.ReadUInt16(); m_StamMax = reader.ReadUInt16(); m_Stam = reader.ReadUInt16(); m_ManaMax = reader.ReadUInt16(); m_Mana = reader.ReadUInt16(); m_StrLock = (LockType)reader.ReadByte(); m_DexLock = (LockType)reader.ReadByte(); m_IntLock = (LockType)reader.ReadByte(); m_Gold = reader.ReadUInt32(); m_Weight = reader.ReadUInt16(); m_MoveInfo = new Hashtable(256); if (version >= 4) { Skill.Count = c = reader.ReadByte(); } else if (version == 3) { long skillStart = reader.BaseStream.Position; c = 0; reader.BaseStream.Seek(7 * 49, SeekOrigin.Current); for (int i = 48; i < 60; i++) { ushort Base, Cap, Val; byte Lock; Base = reader.ReadUInt16(); Cap = reader.ReadUInt16(); Val = reader.ReadUInt16(); Lock = reader.ReadByte(); if (Base > 2000 || Cap > 2000 || Val > 2000 || Lock > 2) { c = i; break; } } if (c == 0) { c = 52; } else if (c > 54) { c = 54; } Skill.Count = c; reader.BaseStream.Seek(skillStart, SeekOrigin.Begin); } else { Skill.Count = c = 52; } m_Skills = new Skill[c]; for (int i = 0; i < c; i++) { m_Skills[i] = new Skill(i); m_Skills[i].FixedBase = reader.ReadUInt16(); m_Skills[i].FixedCap = reader.ReadUInt16(); m_Skills[i].FixedValue = reader.ReadUInt16(); m_Skills[i].Lock = (LockType)reader.ReadByte(); } m_AR = reader.ReadUInt16(); m_StatCap = reader.ReadUInt16(); m_Followers = reader.ReadByte(); m_FollowersMax = reader.ReadByte(); m_Tithe = reader.ReadInt32(); m_LocalLight = reader.ReadSByte(); m_GlobalLight = reader.ReadByte(); m_Features = reader.ReadUInt16(); m_Season = reader.ReadByte(); if (version >= 4) { c = reader.ReadByte(); } else { c = 8; } m_MapPatches = new int[c]; for (int i = 0; i < c; i++) { m_MapPatches[i] = reader.ReadInt32(); } }
public SkillUpdate( Skill s ) : base(0x3A) { EnsureCapacity( 3 + 1 + 9 ); Write( (byte) 0xDF ); Write( (short)s.Index ); Write( (ushort)s.FixedValue ); Write( (ushort)s.FixedBase ); Write( (byte)s.Lock ); Write( (ushort)s.FixedCap ); }
public void UpdateSkill( Skill skill ) { double Total = 0; for (int i=0;i<Skill.Count;i++) Total += World.Player.Skills[i].Base; baseTotal.Text = String.Format( "{0:F1}", Total ); for (int i=0;i<skillList.Items.Count;i++) { ListViewItem cur = skillList.Items[i]; if ( cur.Tag == skill ) { cur.SubItems[1].Text = String.Format( "{0:F1}", skill.Value ); cur.SubItems[2].Text = String.Format( "{0:F1}", skill.Base ); cur.SubItems[3].Text = String.Format( "{0}{1:F1}", (skill.Delta > 0 ? "+" : ""), skill.Delta ); cur.SubItems[4].Text = String.Format( "{0:F1}", skill.Cap ); cur.SubItems[5].Text = skill.Lock.ToString()[0].ToString(); SortSkills(); return; } } }