Example #1
0
        public override void OnResponse(NetState state, RelayInfo info)
        {
            if (GuildGump.BadLeader(m_Mobile, m_Guild))
            {
                return;
            }

            GuildType    newType    = m_Guild.Type;         //GuildType.Regular;
            IOBAlignment newIOBType = m_Guild.IOBAlignment; //IOBAlignment.None;

            switch (info.ButtonID)
            {
            default: break;                    //return; // Close

            case 1: newType = GuildType.Regular;        break;

            case 2: newType = GuildType.Order;                      break;

            case 3: newType = GuildType.Chaos;                      break;

            case 5: newIOBType = IOBAlignment.Brigand;      break;

            case 6: newIOBType = IOBAlignment.Council;      break;

            case 7: newIOBType = IOBAlignment.Good;         break;

            case 8: newIOBType = IOBAlignment.Orcish;       break;

            case 9: newIOBType = IOBAlignment.Pirate;       break;

            case 10: newIOBType = IOBAlignment.Savage;      break;

            case 11: newIOBType = IOBAlignment.Undead;      break;

            case 12: newIOBType = IOBAlignment.None;    break;
            }

            if (m_Guild.IOBAlignment != newIOBType && CanChangeKin() == false)
            {
                m_Mobile.SendMessage("Guild Kin Alignment change is currently disabled.");
                return;
            }

            if ((m_Guild.Type != newType || m_Guild.IOBAlignment != newIOBType) &&
                m_Guild.TypeLastChange.AddDays(7) > DateTime.Now)
            {
                m_Mobile.SendMessage("You can only change your alignment once every 7 days.");
            }
            else
            {
                if (m_Guild.Type != newType)
                {
                    //Changing Order/Chaos

                    //Check that Order/Chaos guilds aren't allied
                    if (newType != GuildType.Regular)                    //we only care if there changeing to a differnt special type
                    {
                        ArrayList Allies = m_Guild.Allies;

                        for (int i = 0; i < Allies.Count; ++i)
                        {
                            Guild g = (Guild)Allies[i];

                            if (g.Type != GuildType.Regular && g.Type != newType)
                            {
                                m_Mobile.SendMessage("Break any alliances with opposing guild types first");
                                return;
                            }
                        }
                    }

                    //Change the Guild!
                    m_Guild.Type = newType;
                    m_Guild.GuildMessage(1018022, newType.ToString());                       // Guild Message: Your guild type has changed:
                }
                else if (m_Guild.IOBAlignment != newIOBType)
                {
                    //Changing KIN

                    //Check that different IOB types aren't allied
                    if (newIOBType != IOBAlignment.None)
                    {
                        ArrayList Allies = m_Guild.Allies;

                        for (int i = 0; i < Allies.Count; ++i)
                        {
                            Guild g = (Guild)Allies[i];

                            if (g.IOBAlignment != IOBAlignment.None && g.IOBAlignment != newIOBType)
                            {
                                m_Mobile.SendMessage("Break any alliances with opposing guild types first");
                                return;
                            }
                        }
                    }

                    //Change the Guild!
                    m_Guild.IOBAlignment = newIOBType;
                    if (m_Guild.IOBAlignment != IOBAlignment.None)
                    {
                        m_Guild.GuildMessage("Your guild is now allied with the " + this.TranslateIOBName(newIOBType));
                    }
                    else
                    {
                        m_Guild.GuildMessage("Your guild has broken its kin alignment, it is now unaligned.");
                    }
                }
                else
                {
                    m_Mobile.SendMessage("You have not changed your alignment.");
                }
            }


            GuildGump.EnsureClosed(m_Mobile);
            m_Mobile.SendGump(new GuildmasterGump(m_Mobile, m_Guild));
        }