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();
            }
Esempio n. 2
0
        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));
            }
        }