public uint Flags; // 1 = Playable 2 = Beast Race public DATAField(UnityBinaryReader r, int dataSize, GameFormatId format) { if (format == GameFormatId.TES3) { for (var i = 0; i < SkillBoosts.Length; i++) { SkillBoosts[i] = new SkillBoost(r, 8, format); } Male.Strength = (byte)r.ReadLEInt32(); Female.Strength = (byte)r.ReadLEInt32(); Male.Intelligence = (byte)r.ReadLEInt32(); Female.Intelligence = (byte)r.ReadLEInt32(); Male.Willpower = (byte)r.ReadLEInt32(); Female.Willpower = (byte)r.ReadLEInt32(); Male.Agility = (byte)r.ReadLEInt32(); Female.Agility = (byte)r.ReadLEInt32(); Male.Speed = (byte)r.ReadLEInt32(); Female.Speed = (byte)r.ReadLEInt32(); Male.Endurance = (byte)r.ReadLEInt32(); Female.Endurance = (byte)r.ReadLEInt32(); Male.Personality = (byte)r.ReadLEInt32(); Female.Personality = (byte)r.ReadLEInt32(); Male.Luck = (byte)r.ReadLEInt32(); Female.Luck = (byte)r.ReadLEInt32(); Male.Height = r.ReadLESingle(); Female.Height = r.ReadLESingle(); Male.Weight = r.ReadLESingle(); Female.Weight = r.ReadLESingle(); Flags = r.ReadLEUInt32(); return; } for (var i = 0; i < SkillBoosts.Length; i++) { SkillBoosts[i] = new SkillBoost(r, 2, format); } r.ReadLEInt16(); // padding Male.Height = r.ReadLESingle(); Female.Height = r.ReadLESingle(); Male.Weight = r.ReadLESingle(); Female.Weight = r.ReadLESingle(); Flags = r.ReadLEUInt32(); }
public override void OnResponse(NetState sender, RelayInfo info) { if (info.ButtonID == 1) //Apply { bool m_Success = true; double m_Value = 0; try { TextRelay text = info.GetTextEntry(100); m_Value = Convert.ToInt16(text.Text); if (SkillBoost.ResetValuesTimer != null) { SkillBoost.ResetValuesTimer.Stop(); SkillBoost.ResetValuesTimer = null; } } catch { m_Success = false; m_From.SendMessage("Bad time format. ## expected."); } try { TextRelay text; for (int i = 0; i < 49; i++) { text = info.GetTextEntry(i); double newValue = Convert.ToDouble(text.Text); if (newValue >= 1 && newValue <= 10) { Values.SkillBoostValues[i] = newValue; } else { m_Success = false; m_From.SendAsciiMessage("Values need to be between 1 and 10"); break; } } } catch { m_Success = false; m_From.SendMessage("Bad format. ###,## expected."); } if (m_Success) { SkillBoost.StartedOn = DateTime.Now; SkillBoost.ResetValuesTimer = Timer.DelayCall(TimeSpan.FromHours(m_Value), new TimerCallback(SkillBoost.Stop)); SkillBoost.Running = true; CommandLogging.WriteLine(m_From, "{0} {1} enabled skillboost for {2} hours", m_From.AccessLevel, CommandLogging.Format(m_From), SkillBoost.ResetValuesTimer.Delay.TotalHours); } else { if (SkillBoost.ResetValuesTimer != null) { SkillBoost.ResetValuesTimer.Stop(); SkillBoost.ResetValuesTimer = null; } SkillBoost.Stop(); } } else if (info.ButtonID == 2) //Default { if (SkillBoost.ResetValuesTimer != null) { SkillBoost.ResetValuesTimer.Stop(); SkillBoost.ResetValuesTimer = null; } SkillBoost.Stop(); Values.DefaultValues(); } else if (info.ButtonID == 3) //Recommended { Values.RecommendedValues(); } if (info.ButtonID > 0) { m_From.SendGump(new SkillBoostGump(m_From)); } }