示例#1
0
        private static void StartTeach_OnCommand(CommandEventArgs e)
        {
            TeiravonMobile m_Player = (TeiravonMobile)e.Mobile;
            Party          p        = Server.Engines.PartySystem.Party.Get(m_Player);
            TeiravonMobile tm_member;

            if (p == null)
            {
                m_Player.SendMessage("You must pick some students first using ]teach");
            }
            else if (m_Player.TeachSkill == 999)
            {
                m_Player.SendMessage("You must pick the skill to teach first by using ]teach");
            }
            else if (m_Player.NextTeach > DateTime.Now)
            {
                m_Player.SendMessage("It is too soon to teach again!");
            }
            else if (m_Player != p.Leader)
            {
                m_Player.SendMessage("Only the teacher can begin the teaching session!");
            }
            else
            {
                m_Player.NextTeach = DateTime.Now + TimeSpan.FromHours(24.0);
                m_Player.SendMessage("The teaching session has begun");
                for (int i = 0; i < p.Members.Count; ++i)
                {
                    Mobile f = ((PartyMemberInfo)p.Members[i]).Mobile;

                    if (f is TeiravonMobile)
                    {
                        tm_member = (TeiravonMobile)f;
                        if (tm_member != m_Player)
                        {
                            tm_member.NextLearn = DateTime.Now + TimeSpan.FromHours(24.0);
                        }
                        tm_member.SendMessage("The teaching session has begun");
                    }
                }

                Timer m_LearnTimer = new LearnTimer(m_Player, 1, m_Player.TeachingSkill * 2, DateTime.Now + TimeSpan.FromMinutes(7.0));
                m_LearnTimer.Start();
            }
        }
示例#2
0
            protected override void OnTick()
            {
                int            partycount;
                int            skillgain;
                TeiravonMobile m_student;
                double         studentskill;
                double         studentcap;
                double         teachermax;

                Party p = Party.Get(m_teacher);

                if (p != null)
                {
                    partycount = p.Members.Count - 1;

//				m_teacher.SendMessage("{0} party count", partycount);

                    if (partycount == 1)
                    {
                        skillgain = 3;
                    }
                    else if (partycount > 1 && partycount < 5)
                    {
                        skillgain = 2;
                    }
                    else
                    {
                        skillgain = 1;
                    }

//				m_teacher.SendMessage("{0} party count    {1} skill gain", partycount, skillgain);

                    for (int i = 0; i < p.Members.Count; ++i)
                    {
                        Mobile f = ((PartyMemberInfo)p.Members[i]).Mobile;

                        if (f is TeiravonMobile)
                        {
                            m_student = (TeiravonMobile)f;
                            if (m_student != m_teacher && m_student.Alive && Utility.InUpdateRange(m_teacher, m_student))
                            {
                                studentskill = m_student.Skills[skill].Base;
                                studentcap   = m_student.Skills[skill].Cap;
                                teachermax   = m_teacher.Skills[skill].Base * scalar;

                                if (studentskill + skillgain >= teachermax)
                                {
                                    if (studentskill + skillgain >= studentcap)
                                    {
                                        if (teachermax > studentcap)
                                        {
                                            m_student.Skills[skill].Base = studentcap;
                                            m_student.SendMessage("You learn as much as you are able to!");
                                        }
                                        else
                                        {
                                            m_student.Skills[skill].Base = teachermax;
                                            m_student.SendMessage("You learn as much as your teacher is capable of teaching!");
                                        }
                                    }
                                }
                                else
                                {
                                    if (studentskill + skillgain > studentcap)
                                    {
                                        m_student.Skills[skill].Base = studentcap;
                                        m_student.SendMessage("You learn as much as you are capable of!");
                                    }
                                    else
                                    {
                                        m_student.Skills[skill].BaseFixedPoint += skillgain;
                                        m_student.SendMessage("You learn something!");
//									m_teacher.SendMessage("{0} party count    {1} skill gain   {2}skill", partycount, skillgain, m_student.Skills[skill].Base);
                                    }
                                }
                            }
                            if (RunCount == MaxCount)
                            {
                                f.SendMessage("The teaching session is over.");
                            }
                        }
                    }

                    if (RunCount == MaxCount)
                    {
                        m_teacher.SendMessage("The teaching session is over.");
                        m_teacher.TeachSkill = 999;
                    }

                    if (RunCount < MaxCount)
                    {
                        RunCount++;
                        Timer m_LearnTimer = new LearnTimer(m_teacher, RunCount, MaxCount, DateTime.Now + TimeSpan.FromMinutes(7.0));
                        m_LearnTimer.Start();
                    }
                }
            }