Example #1
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            if (from.Deleted || !from.Alive)
            {
                return;
            }

            switch (info.ButtonID)
            {
            case 0: return;

            case 1: from.SendGump(new CompetenceSmallGump(m_From, m_Comp, m_ShowCaps)); break;

            case 2: from.SendGump(new CompetenceSmallGump(m_From, m_Comp, m_ShowCaps)); break;

            case 3:
                if (m_ShowCaps)
                {
                    from.SendGump(new CompetenceGump(m_From, m_Comp, false)); break;
                }
                else
                {
                    from.SendGump(new CompetenceGump(m_From, m_Comp, true)); break;
                }

            default:
                try
                {
                    int       oldValue = 0;
                    SkillName comp;

                    if (info.ButtonID >= 300)
                    {
                        int i = info.ButtonID - 300;
                        comp = (SkillName)i;
                        if (i >= SkillInfo.Table.Length)
                        {
                            from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                            return;
                        }
                        if (from.NextSkillTime < Core.TickCount)
                        {
                            TimeSpan span = SkillInfo.Table[i].Callback(from);
                            from.NextSkillTime = Core.TickCount + Core.GetTicks(span);
                        }
                        else
                        {
                            from.SendMessage("Il est trop tot pour utiliser une competence a nouveau.");
                        }
                    }
                    if (info.ButtonID >= 200)
                    {
                        comp = (SkillName)(info.ButtonID - 200);
                        if ((int)comp >= SkillInfo.Table.Length)
                        {
                            from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                            return;
                        }
                        oldValue = Competences.GetValue(m_From, comp);

                        if (Competences.CanLower(m_From, comp))
                        {
                            Competences.Lower(m_From, comp, oldValue - 1);
                            if (comp == SkillName.Langues)
                            {
                                m_From.Langues.FixLangues();
                            }
                            //m_From.Skills.(comp, oldValue - 1);
                        }
                        from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                    }
                    else if (info.ButtonID >= 100)
                    {
                        comp     = (SkillName)(info.ButtonID - 100);
                        oldValue = Competences.GetValue(m_From, comp);

                        if (Competences.CanRaise(m_From, comp))
                        {
                            //m_From.CompetencesLibres -= 1;
                            Competences.Raise(m_From, comp, oldValue + 1);
                        }
                        from.SendGump(new CompetenceGump(m_From, m_Comp, m_ShowCaps));
                    }
                    else
                    {
                        if (m_Comp != SkillCategory.Aucun)
                        {
                            from.SendGump(new CompetenceGump(m_From, SkillCategory.Aucun, m_ShowCaps));
                        }
                        else
                        {
                            from.SendGump(new CompetenceGump(m_From, (SkillCategory)(info.ButtonID - 3), m_ShowCaps));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Misc.ExceptionLogging.WriteLine(ex, "buttonID : {0}, from : {1}", info.ButtonID, from.NetState);
                }
                break;
            }
        }