Example #1
0
 public Guild()
 {
     id     = 0;
     type   = 0;
     name   = "";
     server = "";
 }
Example #2
0
        /// <summary>
        /// Gives GP to a player for a given guild.
        /// If the baseAmount is less than 1, nothing will happen.
        /// If the baseAmount is greater than 1000, the baseAmount will be set to 1000.
        /// If the player ranks up, a message will be sent to him/her and an OnPlayerGuildRankUp event will be published.
        /// </summary>
        /// <param name="player">The player to give GP.</param>
        /// <param name="guild">The guild this GP will apply to.</param>
        /// <param name="baseAmount">The baseAmount of GP to grant.</param>
        public static void GiveGuildPoints(NWPlayer player, GuildType guild, int baseAmount)
        {
            if (baseAmount <= 0)
            {
                return;
            }

            // Clamp max GP baseAmount
            if (baseAmount > 1000)
            {
                baseAmount = 1000;
            }

            // Grant a bonus based on the player's guild relations perk rank. Always offset by 1 so we don't end up with multiplication by zero.
            int perkBonus = PerkService.GetCreaturePerkLevel(player, PerkType.GuildRelations) + 1;

            baseAmount *= perkBonus;

            var dbGuild = DataService.Get <Guild>((int)guild);
            var pcGP    = DataService.Single <PCGuildPoint>(x => x.GuildID == (int)guild && x.PlayerID == player.GlobalID);

            pcGP.Points += baseAmount;

            // Clamp player GP to the highest rank.
            int maxRank = RankProgression.Keys.Max();
            int maxGP   = RankProgression[maxRank];

            if (pcGP.Points >= maxGP)
            {
                pcGP.Points = maxGP - 1;
            }

            // Notify player how much GP they earned.
            player.SendMessage("You earned " + baseAmount + " " + dbGuild.Name + " guild points.");

            // Are we able to rank up?
            bool didRankUp = false;

            if (pcGP.Rank < maxRank)
            {
                // Is it time for a rank up?
                int nextRank = RankProgression[pcGP.Rank];
                if (pcGP.Points >= nextRank)
                {
                    // Let's do a rank up.
                    pcGP.Rank++;
                    player.SendMessage(ColorTokenService.Green("You've reached rank " + pcGP.Rank + " in the " + dbGuild.Name + "!"));
                    didRankUp = true;
                }
            }

            // Submit changes to the DB/cache.
            DataService.SubmitDataChange(pcGP, DatabaseActionType.Update);

            // If the player ranked up, publish an event saying so.
            if (didRankUp)
            {
                MessageHub.Instance.Publish(new OnPlayerGuildRankUp(player.GlobalID, pcGP.Rank));
            }
        }
Example #3
0
 public Guild()
 {
     id     = 0;
     name   = "No name";
     server = "Rexxar";
     type   = 0;
 }
Example #4
0
 public Guild(uint id, string name, string server, GuildType type)
 {
     this.id     = id;
     this.name   = name;
     this.server = server;
     this.type   = type;
 }
Example #5
0
 public Guild(uint guildID, GuildType guildType, string guildName, string serverName)
 {
     this.guildID    = guildID;
     this.guildType  = guildType;
     this.guildName  = guildName;
     this.serverName = serverName;
 }
Example #6
0
        /// <summary>
        /// Returns the <see cref="GuildResult"/> when <see cref="Player"/> is at maximum number of guilds by <see cref="GuildType"/>.
        /// </summary>
        private static GuildResult GetMaximumGuildTypeError(GuildType type)
        {
            switch (type)
            {
            case GuildType.Guild:
                return(GuildResult.AtMaxGuildCount);

            case GuildType.WarParty:
                return(GuildResult.MaxWarPartyCount);

            case GuildType.ArenaTeam2v2:
            case GuildType.ArenaTeam3v3:
            case GuildType.ArenaTeam5v5:
                return(GuildResult.MaxArenaTeamCount);

            case GuildType.Community:
                return(GuildResult.AtMaxCommunityCount);

            case GuildType.Circle:
                return(GuildResult.AtMaxCircleCount);

            default:
                throw new ArgumentException();
            }
        }
Example #7
0
 //Default Constructor
 public Guild()
 {
     this.guildID    = 0;
     this.guildType  = 0;
     this.guildName  = string.Empty;
     this.serverName = string.Empty;
 }
Example #8
0
        /// <summary>
        /// Sets the guild.
        /// </summary>
        /// <param name="userID">The user ID.</param>
        /// <param name="type">The type.</param>
        public void SetGuild(int userID, GuildType type)
        {
            var command = connection.CreateCommand("UPDATE Users SET  [Guild]=? WHERE [UserID]=?;");

            command.AddParameter("Guild", (byte)type);
            command.AddParameter("UserID", userID);
            command.ExecuteNonQuery();
        }
Example #9
0
        public QuestGPReward(GuildType guild, int amount, bool isSelectable)
        {
            Guild        = guild;
            Amount       = amount;
            IsSelectable = isSelectable;

            var dbGuild = DataService.Guild.GetByID((int)guild);

            MenuName = Amount + " " + dbGuild.Name + " GP";
        }
Example #10
0
        /// <summary>
        /// Gets the guild users.
        /// </summary>
        /// <param name="guild">The guild.</param>
        /// <param name="filter">The filter.</param>
        /// <returns></returns>
        public List <string> GetGuildUsers(GuildType guild, LevelFilter filter)
        {
            var command = connection.CreateCommand(@"SELECT Users.Name
FROM Users 
WHERE ((Users.Level) Between  @LevelFrom AND @LevelTo) And Guild=@Guild");

            command.AddParameter(filter);
            command.AddParameter("Guild", (byte)guild);
            return(ReadString(command));
        }
Example #11
0
        /// <summary>
        /// Gives GP to a player for a given guild.
        /// If the baseAmount is less than 1, nothing will happen.
        /// If the baseAmount is greater than 1000, the baseAmount will be set to 1000.
        /// If the player ranks up, a message will be sent to him/her and an OnPlayerGuildRankUp event will be published.
        /// </summary>
        /// <param name="player">The player to give GP.</param>
        /// <param name="guild">The guild this GP will apply to.</param>
        /// <param name="baseAmount">The baseAmount of GP to grant.</param>
        public static void GiveGuildPoints(NWPlayer player, GuildType guild, int baseAmount)
        {
            if (baseAmount <= 0)
            {
                return;
            }

            // Clamp max GP baseAmount
            if (baseAmount > 1000)
            {
                baseAmount = 1000;
            }

            var dbGuild = DataService.Guild.GetByID((int)guild);
            var pcGP    = DataService.PCGuildPoint.GetByPlayerIDAndGuildID(player.GlobalID, (int)guild);

            pcGP.Points += baseAmount;

            // Clamp player GP to the highest rank.
            int maxRank = RankProgression.Keys.Max();
            int maxGP   = RankProgression[maxRank];

            if (pcGP.Points >= maxGP)
            {
                pcGP.Points = maxGP - 1;
            }

            // Notify player how much GP they earned.
            player.SendMessage("You earned " + baseAmount + " " + dbGuild.Name + " guild points.");

            // Are we able to rank up?
            bool didRankUp = false;

            if (pcGP.Rank < maxRank)
            {
                // Is it time for a rank up?
                int nextRank = RankProgression[pcGP.Rank];
                if (pcGP.Points >= nextRank)
                {
                    // Let's do a rank up.
                    pcGP.Rank++;
                    player.SendMessage(ColorTokenService.Green("You've reached rank " + pcGP.Rank + " in the " + dbGuild.Name + "!"));
                    didRankUp = true;
                }
            }

            // Submit changes to the DB/cache.
            DataService.SubmitDataChange(pcGP, DatabaseActionType.Update);

            // If the player ranked up, publish an event saying so.
            if (didRankUp)
            {
                MessageHub.Instance.Publish(new OnPlayerGuildRankUp(player.GlobalID, pcGP.Rank));
            }
        }
Example #12
0
 public Guild()
 {
     /********************************************
     * Null constructor
     * No inputs
     * this creates a blank guild
     ********************************************/
     gid    = 0;
     type   = (GuildType)0;
     name   = "N/A";
     server = "N/A";
 }
Example #13
0
        public static int CalculateGPReward(NWPlayer player, GuildType guild, int baseAmount)
        {
            var   pcGP      = DataService.PCGuildPoint.GetByPlayerIDAndGuildID(player.GlobalID, (int)guild);
            float rankBonus = 0.25f * pcGP.Rank;

            // Grant a bonus based on the player's guild relations perk rank.
            int perkBonus = PerkService.GetCreaturePerkLevel(player, PerkType.GuildRelations);

            baseAmount = baseAmount + (perkBonus * baseAmount);

            return(baseAmount + (int)(baseAmount * rankBonus));
        }
Example #14
0
        /// <summary>
        /// Creates new guild with the members from the party.
        /// </summary>
        /// <param name="party"></param>
        /// <exception cref="ArgumentException">
        /// Thrown if one of the party members already is in a guild.
        /// </exception>
        public void CreateGuild(Party party, string name, GuildType type, GuildVisibility visibility)
        {
            var partyMembers = party.GetMembers();

            if (partyMembers.Any(a => a.GuildId != 0))
            {
                throw new ArgumentException("One of the party members is in a guild already.");
            }

            var leader = party.Leader;

            lock (_syncLock)
            {
                // Add guild
                var guild = new Guild();
                guild.Name             = name;
                guild.LeaderName       = leader.Name;
                guild.Title            = "";
                guild.EstablishedDate  = DateTime.Now;
                guild.Server           = ChannelServer.Instance.Conf.Channel.ChannelServer;
                guild.Type             = type;
                guild.Visibility       = visibility;
                guild.IntroMessage     = string.Format(Localization.Get("Guild stone for the {0} guild."), guild.Name);
                guild.WelcomeMessage   = string.Format(Localization.Get("Welcome to the {0} guild!"), guild.Name);
                guild.LeavingMessage   = string.Format(Localization.Get("You have left the {0} guild."), guild.Name);
                guild.RejectionMessage = string.Format(Localization.Get("You have been denied admission to the {0} guild."), guild.Name);

                ChannelServer.Instance.Database.AddGuild(guild);
                this.LoadGuild(guild);

                // Add members
                foreach (var creature in partyMembers)
                {
                    var guildMember = new GuildMember();
                    guildMember.GuildId     = guild.Id;
                    guildMember.CharacterId = creature.EntityId;
                    guildMember.JoinedDate  = DateTime.Now;
                    guildMember.Application = "";
                    if (creature != leader)
                    {
                        guildMember.Rank = GuildMemberRank.Member;
                    }

                    ChannelServer.Instance.Database.AddGuildMember(guildMember);
                    guild.AddMember(guildMember);

                    creature.Guild       = guild;
                    creature.GuildMember = guildMember;
                    Send.GuildUpdateMember(creature, guild, guildMember);
                }
            }
        }
Example #15
0
        /*****************************************************
         * GuildTypePrint
         * input: GuildType
         * output: ArrayList (String)
         * purpose: to list off all the guilds of the type
         * selected by the user
         *
         ****************************************************/
        public ArrayList GuildTypePrint(GuildType type)
        {
            ArrayList classArray = new ArrayList();
            var       guildQuery =
                from S in Globals.guilds
                where S.Value.Type == type
                select S;

            classArray.Add("List of all guilds of type: " + type);
            foreach (var guild in guildQuery)
            {
                classArray.Add(guild.Value.ToString());
            }
            return(classArray);
        }
Example #16
0
 public Guild(uint tid = 0, GuildType ttype = (GuildType)0, string tname = "")
 {
     /******************************************************************
     * guild constructor
     * inputs uint id, guildType, string name
     *
     * This constructor is for pulling the guild information from the file
     * server name is parsed from the guild name that is read in.
     *
     ******************************************************************/
     gid  = tid;
     type = ttype;
     string[] subs = tname.Split('-');
     name   = subs[0];
     server = subs[1];
 }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
                _Score     = reader.ReadInt();
                _Items     = reader.ReadStrongItemList();
                _HideMap   = reader.ReadMap();
                _ItemHue   = reader.ReadInt();
                _GuildType = (GuildType)reader.ReadInt();
                _Rect      = reader.ReadRect2D();
                break;
            }
            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRect));
        }
Example #18
0
        /// <summary>
        /// Returns the maximum number of guilds a <see cref="Player"/> can be in by <see cref="GuildType"/>.
        /// </summary>
        private static uint GetMaximumGuildTypeCount(GuildType type)
        {
            // move to configuration file?
            switch (type)
            {
            case GuildType.Guild:
            case GuildType.WarParty:
            case GuildType.ArenaTeam2v2:
            case GuildType.ArenaTeam3v3:
            case GuildType.ArenaTeam5v5:
            case GuildType.Community:
                return(1u);

            case GuildType.Circle:
                return(5u);

            default:
                throw new ArgumentException();
            }
        }
Example #19
0
        public override void Initialize()
        {
            var player = GetPC();

            // Don't let non-players use this convo.
            if (!player.IsPlayer)
            {
                EndConversation();
                return;
            }

            NWObject  speaker = GetDialogTarget();
            GuildType guild   = (GuildType)speaker.GetLocalInt("GUILD_ID");

            var model = new Model
            {
                Guild = guild
            };

            SetDialogCustomData(model);

            LoadMainPage();
        }
        public void HandleGuildRegister(ICommandContext context,
                                        [Parameter("Guild type to create.", ParameterFlags.None, typeof(EnumParameterConverter <GuildType>))]
                                        GuildType type,
                                        [Parameter("Name of newly created guild.")]
                                        string name,
                                        [Parameter("", ParameterFlags.Optional)]
                                        string leaderRank,
                                        [Parameter("", ParameterFlags.Optional)]
                                        string councilRank,
                                        [Parameter("", ParameterFlags.Optional)]
                                        string memberRank)
        {
            Player player = context.Invoker as Player;

            // default ranks from client
            leaderRank ??= "Leader";
            councilRank ??= "Council";
            memberRank ??= "Member";

            // default standard from the client
            GuildStandard standard = null;

            if (type == GuildType.Guild)
            {
                standard = new GuildStandard(3, 4, 6);
            }

            GuildResultInfo info = player.GuildManager.CanRegisterGuild(type, name, leaderRank, councilRank, memberRank, standard);

            if (info.Result != GuildResult.Success)
            {
                GuildBase.SendGuildResult(player.Session, info);
                return;
            }

            player.GuildManager.RegisterGuild(type, name, leaderRank, councilRank, memberRank, standard);
        }
Example #21
0
 public Guild(uint tid = 0, GuildType ttype = (GuildType)0, string tname = "", string tserver = "")
 {
     /*****************************************************************
     * guild constructor the second
     * input: uint id, guildType, string name, string server
     *
     * This constructor is for the user inputed guild, where we don't
     * need to parse the servername from the guild name, it's done for us
     *****************************************************************/
     //checks to see if we were given a server name, since loading from file is deliniated by a dash, we will handle it in this class
     gid  = tid;
     type = ttype;
     if (String.IsNullOrEmpty(tserver))
     {
         string[] subs = tname.Split('-');
         name   = subs[0];
         server = subs[1];
     }
     else
     {
         name   = tname;
         server = tserver;
     }
 }
Example #22
0
        /// <summary>
        /// Gets the users from guild.
        /// </summary>
        /// <param name="guild">The guild.</param>
        /// <param name="pagesFilter">The pages filter.</param>
        /// <returns></returns>
        public List <string> GetUsersLinksFromGuild(GuildType guild, IRange <int> pagesFilter)
        {
            var url = UrlCastleTreasury + "&id=" + ((int)guild);

            if (pagesFilter == null)
            {
                Browser.GoTo(url);
            }
            else
            {
                Browser.GoTo(url + "&page=" + pagesFilter.From);
            }

            var pages = pagesFilter == null ?
                        new Pager(browser, url) :
                        new FilteredPager(browser, url, pagesFilter);

            pages.Sleep = 1000;

            var links = new List <string>();

            do
            {
                var table = browser.Table(Find.ByClass("default treasury_now"));
                if (table.Exists)
                {
                    links.AddRange(
                        table.Links.Where(e => !string.IsNullOrEmpty(e.Url) && e.Url.StartsWith(UrlPlayer)).Select(e => e.Url)
                        );
                }
            } while (pages.GotoNextPage());



            return(links.Distinct().ToList());
        }
        public override void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            if (version < 5)
            {
                FixGuilds();
            }

            switch (version)
            {
            case 5:
            {
                m_WarInitializations = reader.ReadGuildList();
                m_WarKills           = new WarKillsItem[reader.ReadInt()];
                for (int i = 0; i < m_WarKills.Length; ++i)
                {
                    m_WarKills[i].w_Guild  = reader.ReadGuild() as Guild;
                    m_WarKills[i].Kills    = reader.ReadInt();
                    m_WarKills[i].MaxKills = reader.ReadInt();
                    m_WarKills[i].WarTime  = (uint)reader.ReadInt();
                    m_WarKills[i].ExpTime  = (uint)reader.ReadInt();
                }
                m_AllianceLeader = reader.ReadBool();
                m_AllianceName   = reader.ReadString();
                goto case 4;
            }

            case 4:
            {
                m_AllyDeclarations = reader.ReadGuildList();
                m_AllyInvitations  = reader.ReadGuildList();

                goto case 3;
            }

            case 3:
            {
                m_TypeLastChange = reader.ReadDateTime();

                goto case 2;
            }

            case 2:
            {
                m_Type = (GuildType)reader.ReadInt();

                goto case 1;
            }

            case 1:
            {
                m_LastFealty = reader.ReadDateTime();

                goto case 0;
            }

            case 0:
            {
                m_Leader       = reader.ReadMobile();
                m_Name         = reader.ReadString();
                m_Abbreviation = reader.ReadString();

                m_Allies          = reader.ReadGuildList();
                m_Enemies         = reader.ReadGuildList();
                m_WarDeclarations = reader.ReadGuildList();
                m_WarInvitations  = reader.ReadGuildList();

                m_Members    = reader.ReadMobileList();
                m_Candidates = reader.ReadMobileList();
                m_Accepted   = reader.ReadMobileList();

                m_Guildstone = reader.ReadItem();
                m_Teleporter = reader.ReadItem();

                m_Charter = reader.ReadString();
                m_Website = reader.ReadString();

                break;
            }
            }

            if (m_AllyDeclarations == null)
            {
                m_AllyDeclarations = new ArrayList();
            }

            if (m_AllyInvitations == null)
            {
                m_AllyInvitations = new ArrayList();
            }

            if (m_WarInitializations == null)
            {
                m_WarInitializations = new ArrayList();
            }

            if (WarTimer1 == null)
            {
                WarTimer1 = new WarTimer();
                WarTimer1.Start();
            }

            if (m_Guildstone == null || m_Members.Count == 0)
            {
                Disband();
            }
        }
Example #24
0
		/// <summary>
		/// Creates new guild with the members from the party.
		/// </summary>
		/// <param name="party"></param>
		/// <exception cref="ArgumentException">
		/// Thrown if one of the party members already is in a guild.
		/// </exception>
		public void CreateGuild(Party party, string name, GuildType type, GuildVisibility visibility)
		{
			var partyMembers = party.GetMembers();
			if (partyMembers.Any(a => a.GuildId != 0))
				throw new ArgumentException("One of the party members is in a guild already.");

			var leader = party.Leader;

			lock (_syncLock)
			{
				// Add guild
				var guild = new Guild();
				guild.Name = name;
				guild.LeaderName = leader.Name;
				guild.Title = "";
				guild.EstablishedDate = DateTime.Now;
				guild.Server = ChannelServer.Instance.Conf.Channel.ChannelServer;
				guild.Type = type;
				guild.Visibility = visibility;
				guild.IntroMessage = string.Format(Localization.Get("Guild stone for the {0} guild."), guild.Name);
				guild.WelcomeMessage = string.Format(Localization.Get("Welcome to the {0} guild!"), guild.Name);
				guild.LeavingMessage = string.Format(Localization.Get("You have left the {0} guild."), guild.Name);
				guild.RejectionMessage = string.Format(Localization.Get("You have been denied admission to the {0} guild."), guild.Name);

				ChannelServer.Instance.Database.AddGuild(guild);
				this.LoadGuild(guild);

				// Add members
				foreach (var creature in partyMembers)
				{
					var guildMember = new GuildMember();
					guildMember.GuildId = guild.Id;
					guildMember.CharacterId = creature.EntityId;
					guildMember.JoinedDate = DateTime.Now;
					guildMember.Application = "";
					if (creature != leader)
						guildMember.Rank = GuildMemberRank.Member;

					ChannelServer.Instance.Database.AddGuildMember(guildMember);
					guild.AddMember(guildMember);

					creature.Guild = guild;
					creature.GuildMember = guildMember;
					Send.GuildUpdateMember(creature, guild, guildMember);
				}
			}
		}
Example #25
0
        public static bool CreateGuild(string name, GuildType type, MabiCreature leader, IEnumerable<MabiCreature> otherMembers)
        {
            if (WorldDb.Instance.GetGuildForChar(leader.Id) != null)
            {
                Send.MsgBox(leader.Client, leader, Localization.Get("guild.already_you")); // You are already a member of a guild
                return false;
            }

            foreach (var member in otherMembers)
            {
                if (WorldDb.Instance.GetGuildForChar(member.Id) != null)
                {
                    Send.MsgBox(leader.Client, leader, Localization.Get("guild.already"), member.Name); // {0} is already a member of a guild
                    return false;
                }
            }

            if (!WorldDb.Instance.GuildNameOkay(name))
            {
                Send.MsgBox(leader.Client, leader, Localization.Get("guild.name_used")); // That name is not valid or is already in use.
                return false;
            }

            // TODO: checks in here...

            var pos = leader.GetPosition();

            var guild = new MabiGuild();
            guild.IntroMessage = string.Format(Localization.Get("guild.intro"), name);         // Guild stone for the {0} guild
            guild.LeavingMessage = string.Format(Localization.Get("guild.leaving"), name);	   // You have left the {0} guild
            guild.RejectionMessage = string.Format(Localization.Get("guild.rejection"), name); // You have been denied admission to the {0} guild.
            guild.WelcomeMessage = string.Format(Localization.Get("guild.welcome"), name);	   // Welcome to the {0} guild!
            guild.Name = name;
            guild.Region = leader.Region;
            guild.X = pos.X;
            guild.Y = pos.Y;
            guild.Rotation = leader.Direction;
            guild.StoneClass = GuildStoneType.Normal;
            guild.Type = type;

            var guildId = guild.Save();

            leader.GuildMember = new MabiGuildMember(leader.Id, guildId, GuildMemberRank.Leader);
            leader.GuildMember.Save();
            foreach (var member in otherMembers)
            {
                member.GuildMember = new MabiGuildMember(member.Id, guildId, GuildMemberRank.SeniorMember);
                member.GuildMember.Save();
            }

            // Reload guild to make sure it gets initialized and gets an id
            guild = WorldDb.Instance.GetGuild(guildId);

            leader.Guild = guild;

            WorldManager.Instance.Broadcast(PacketCreator.GuildMembershipChanged(guild, leader, GuildMemberRank.Leader), SendTargets.Range, leader);

            foreach (var member in otherMembers)
            {
                member.Guild = guild;
                WorldManager.Instance.Broadcast(PacketCreator.GuildMembershipChanged(guild, member, GuildMemberRank.SeniorMember), SendTargets.Range, member);
            }

            AddGuildStone(guild);

            Send.ChannelNotice(NoticeType.Top, 20000, Localization.Get("guild.created"), name, leader.Name); // {0} Guild has been created. Guild leader: {1}

            return true;
        }
Example #26
0
 public IQuest AddRewardGuildPoints(GuildType guild, int amount, bool isSelectable = false)
 {
     AddReward(new QuestGPReward(guild, amount, isSelectable));
     return(this);
 }
Example #27
0
 /// <summary>
 /// Create a new <see cref="GuildChat"/> using the supplied parameters.
 /// </summary>
 public GuildChat(GuildType type, string name, string leaderRankName, string councilRankName, string memberRankName)
     : base(type, name, leaderRankName, councilRankName, memberRankName)
 {
 }
Example #28
0
		public override void Deserialize(GenericReader reader)
		{
			int version = reader.ReadInt();

			switch (version)
			{
				case 5:
					{
						int count = reader.ReadInt();

						m_PendingWars = new List<WarDeclaration>();
						for (int i = 0; i < count; i++)
						{
							m_PendingWars.Add(new WarDeclaration(reader));
						}

						count = reader.ReadInt();
						m_AcceptedWars = new List<WarDeclaration>();
						for (int i = 0; i < count; i++)
						{
							m_AcceptedWars.Add(new WarDeclaration(reader));
						}

						bool isAllianceLeader = reader.ReadBool();

						if (isAllianceLeader)
						{
							m_AllianceInfo = new AllianceInfo(reader);
						}
						else
						{
							m_AllianceLeader = reader.ReadGuild() as Guild;
						}

						goto case 4;
					}
				case 4:
					{
						m_AllyDeclarations = reader.ReadStrongGuildList<Guild>();
						m_AllyInvitations = reader.ReadStrongGuildList<Guild>();

						goto case 3;
					}
				case 3:
					{
						m_TypeLastChange = reader.ReadDateTime();

						goto case 2;
					}
				case 2:
					{
						m_Type = (GuildType)reader.ReadInt();

						goto case 1;
					}
				case 1:
					{
						m_LastFealty = reader.ReadDateTime();

						goto case 0;
					}
				case 0:
					{
						m_Leader = reader.ReadMobile();

						if (m_Leader is PlayerMobile)
						{
							((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;
						}

						m_Name = reader.ReadString();
						m_Abbreviation = reader.ReadString();

						m_Allies = reader.ReadStrongGuildList<Guild>();
						m_Enemies = reader.ReadStrongGuildList<Guild>();
						m_WarDeclarations = reader.ReadStrongGuildList<Guild>();
						m_WarInvitations = reader.ReadStrongGuildList<Guild>();

						m_Members = reader.ReadStrongMobileList();
						m_Candidates = reader.ReadStrongMobileList();
						m_Accepted = reader.ReadStrongMobileList();

						m_Guildstone = reader.ReadItem();
						m_Teleporter = reader.ReadItem();

						m_Charter = reader.ReadString();
						m_Website = reader.ReadString();

						break;
					}
			}

			if (m_AllyDeclarations == null)
			{
				m_AllyDeclarations = new List<Guild>();
			}

			if (m_AllyInvitations == null)
			{
				m_AllyInvitations = new List<Guild>();
			}

			if (m_AcceptedWars == null)
			{
				m_AcceptedWars = new List<WarDeclaration>();
			}

			if (m_PendingWars == null)
			{
				m_PendingWars = new List<WarDeclaration>();
			}

			/*
            if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 )
            Disband();
            */

			Timer.DelayCall(TimeSpan.Zero, VerifyGuild_Callback);
		}
Example #29
0
        /// <summary>
        /// Returns a list of guilds from the database, based on the given
        /// search parameters.
        /// </summary>
        /// <param name="serverName"></param>
        /// <param name="page"></param>
        /// <param name="perPage"></param>
        /// <param name="sortBy"></param>
        /// <param name="sortType"></param>
        /// <param name="guildLevel"></param>
        /// <param name="memberAmount"></param>
        /// <param name="guildType"></param>
        /// <param name="searchText"></param>
        /// <returns></returns>
        public List <GuildSearchResult> GetGuildList(string serverName, GuildSortBy sortBy, GuildSortType sortType, GuildSearchLevel guildLevel, GuildSearchMembers memberAmount, GuildType guildType, string searchText)
        {
            var result = new List <GuildSearchResult>();

            serverName = MySqlHelper.EscapeString(serverName);
            searchText = MySqlHelper.EscapeString(searchText);

            // Build query
            var query = string.Format(
                "SELECT `g`.*, COUNT(`m`.`characterId`) AS `memberCount`" +
                " FROM `guilds` AS `g`" +
                " LEFT JOIN `guild_members` AS `m` ON `g`.`guildId` = `m`.`guildId`" +
                " WHERE `g`.`server` = '{0}' AND `g`.`name` LIKE '%{1}%' AND `g`.`guildId` > {2}", serverName, searchText, MabiId.Guilds);

            // Search for level
            if (guildLevel != GuildSearchLevel.All)
            {
                GuildLevel level;
                switch (guildLevel)
                {
                default:
                case GuildSearchLevel.Beginner: level = GuildLevel.Beginner; break;

                case GuildSearchLevel.Basic: level = GuildLevel.Basic; break;

                case GuildSearchLevel.Advanced: level = GuildLevel.Advanced; break;

                case GuildSearchLevel.Great: level = GuildLevel.Great; break;

                case GuildSearchLevel.Grand: level = GuildLevel.Grand; break;
                }

                query += string.Format(" AND `g`.`level` = {0}", (int)level);
            }

            // Search for guild type
            if (guildType != GuildType.All)
            {
                query += string.Format(" AND `g`.`type` = {0}", (int)guildType);
            }

            // For the join
            query += " GROUP BY `g`.`guildId`";

            // Search for member amount range
            if (memberAmount != GuildSearchMembers.All)
            {
                int min, max;
                switch (memberAmount)
                {
                default:
                case GuildSearchMembers.Lv1_5: min = 1; max = 5; break;

                case GuildSearchMembers.Lv6_10: min = 6; max = 10; break;

                case GuildSearchMembers.Lv11_20: min = 11; max = 20; break;

                case GuildSearchMembers.Lv21_50: min = 21; max = 50; break;

                case GuildSearchMembers.Lv51_X: min = 21; max = 999999; break;
                }

                query += string.Format(" HAVING `memberCount` >= {0} AND `memberCount` <= {1}", min, max);
            }

            // Sort
            if (sortBy != GuildSortBy.None)
            {
                string by;
                string type = sortType.ToString().ToUpper();
                switch (sortBy)
                {
                default:
                case GuildSortBy.Level: by = "`g`.`level`"; break;

                case GuildSortBy.Members: by = "`memberCount`"; break;

                case GuildSortBy.Type: by = "`g`.`type`"; break;

                case GuildSortBy.Name: by = "`g`.`name`"; break;
                }
                query += string.Format(" ORDER BY {0} {1}", by, type);
            }

            // Query
            using (var conn = this.Connection)
                using (var mc = new MySqlCommand(query, conn))
                    using (var reader = mc.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var guild = new GuildSearchResult();
                            guild.Id          = reader.GetInt64("guildId");
                            guild.MemberCount = reader.GetInt32("memberCount");
                            guild.Name        = reader.GetString("name");
                            guild.Type        = (GuildType)reader.GetInt32("type");
                            guild.LeaderName  = reader.GetString("leaderName");

                            switch ((GuildLevel)reader.GetInt32("level"))
                            {
                            default:
                            case GuildLevel.Beginner: guild.LevelIndex = 5; break;

                            case GuildLevel.Basic: guild.LevelIndex = 10; break;

                            case GuildLevel.Advanced: guild.LevelIndex = 20; break;

                            case GuildLevel.Great: guild.LevelIndex = 50; break;

                            case GuildLevel.Grand: guild.LevelIndex = 250; break;
                            }

                            result.Add(guild);
                        }
                    }

            return(result);
        }
Example #30
0
        public override void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            if ( version < 5 )
            {
                FixGuilds();
            }

            switch ( version )
            {
                case 5:
                    {
                        m_WarInitializations = reader.ReadGuildList();
                        m_WarKills = new WarKillsItem[reader.ReadInt()];
                        for ( int i = 0; i < m_WarKills.Length; ++i )
                        {
                            m_WarKills[i].w_Guild = reader.ReadGuild() as Guild;
                            m_WarKills[i].Kills = reader.ReadInt();
                            m_WarKills[i].MaxKills = reader.ReadInt();
                            m_WarKills[i].WarTime = (uint) reader.ReadInt();
                            m_WarKills[i].ExpTime = (uint) reader.ReadInt();
                        }
                        m_AllianceLeader = reader.ReadBool();
                        m_AllianceName = reader.ReadString();
                        goto case 4;
                    }
                case 4:
                    {
                        m_AllyDeclarations = reader.ReadGuildList();
                        m_AllyInvitations = reader.ReadGuildList();

                        goto case 3;
                    }
                case 3:
                    {
                        m_TypeLastChange = reader.ReadDateTime();

                        goto case 2;
                    }
                case 2:
                    {
                        m_Type = (GuildType) reader.ReadInt();

                        goto case 1;
                    }
                case 1:
                    {
                        m_LastFealty = reader.ReadDateTime();

                        goto case 0;
                    }
                case 0:
                    {
                        m_Leader = reader.ReadMobile();
                        m_Name = reader.ReadString();
                        m_Abbreviation = reader.ReadString();

                        m_Allies = reader.ReadGuildList();
                        m_Enemies = reader.ReadGuildList();
                        m_WarDeclarations = reader.ReadGuildList();
                        m_WarInvitations = reader.ReadGuildList();

                        m_Members = reader.ReadMobileList();
                        m_Candidates = reader.ReadMobileList();
                        m_Accepted = reader.ReadMobileList();

                        m_Guildstone = reader.ReadItem();
                        m_Teleporter = reader.ReadItem();

                        m_Charter = reader.ReadString();
                        m_Website = reader.ReadString();

                        break;
                    }
            }

            if ( m_AllyDeclarations == null )
            {
                m_AllyDeclarations = new ArrayList();
            }

            if ( m_AllyInvitations == null )
            {
                m_AllyInvitations = new ArrayList();
            }

            if ( m_WarInitializations == null )
            {
                m_WarInitializations = new ArrayList();
            }

            if ( WarTimer1 == null )
            {
                WarTimer1 = new WarTimer();
                WarTimer1.Start();
            }

            if ( m_Guildstone == null || m_Members.Count == 0 )
            {
                Timer.DelayCall( TimeSpan.Zero, new TimerCallback( Disband ) );
            }
        }
Example #31
0
        public static bool JoinVirtue(Mobile m, GuildType type)
        {
            if (type == GuildType.Regular)
                return true;

            if (m.Kills >= 5)
                return false;

            GuildType cur = GetGuildType(m);

            if (cur != type && cur != GuildType.Regular)
                return false;

            if ( m.NetState != null )
                SetGuildType(m.NetState.Address, type);

            return true;
        }
Example #32
0
 public static void SetGuildType(System.Net.IPAddress addr, GuildType type)
 {
     if (_IPTable.ContainsKey(addr))
     {
         _IPTable[addr] = type;
     }
     else
     {
         _IPTable.Add(addr, type);
     }
 }
Example #33
0
        public override void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            switch (version)
            {
            case 4:
            {
                m_AllyDeclarations = reader.ReadGuildListOrNull();
                m_AllyInvitations  = reader.ReadGuildListOrNull();

                goto case 3;
            }

            case 3:
            {
                m_TypeLastChange = reader.ReadDateTime();

                goto case 2;
            }

            case 2:
            {
                m_Type = (GuildType)reader.ReadInt();

                goto case 1;
            }

            case 1:
            {
                m_LastFealty = reader.ReadDateTime();

                goto case 0;
            }

            case 0:
            {
                m_Leader       = reader.ReadMobile();
                m_Name         = reader.ReadString();
                m_Abbreviation = reader.ReadString();

                m_Allies          = reader.ReadGuildListOrNull();
                m_Enemies         = reader.ReadGuildListOrNull();
                m_WarDeclarations = reader.ReadGuildListOrNull();
                m_WarInvitations  = reader.ReadGuildListOrNull();

                m_Members    = reader.ReadMobileList();
                m_Candidates = reader.ReadMobileListOrNull();
                m_Accepted   = reader.ReadMobileListOrNull();

                m_Guildstone = reader.ReadItem();
                m_Teleporter = reader.ReadItem();

                m_Charter = reader.ReadString();
                m_Website = reader.ReadString();

                break;
            }
            }

            if (m_Guildstone == null || m_Members.Count == 0)
            {
                Disband();
            }
        }
Example #34
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
                case 0:
                    _Score = reader.ReadInt();
                    _Items = reader.ReadStrongItemList();
                    _HideMap = reader.ReadMap();
                    _ItemHue = reader.ReadInt();
                    _GuildType = (GuildType)reader.ReadInt();
                    _Rect = reader.ReadRect2D();
                    break;
            }
            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRect));
        }
Example #35
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));
        }
Example #36
0
        public override void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            switch ( version )
            {
                case 4:
                {
                    m_AllyDeclarations = reader.ReadGuildList();
                    m_AllyInvitations = reader.ReadGuildList();

                    goto case 3;
                }
                case 3:
                {
                    m_TypeLastChange = reader.ReadDateTime();

                    goto case 2;
                }
                case 2:
                {
                    m_Type = (GuildType)reader.ReadInt();

                    goto case 1;
                }
                case 1:
                {
                    m_LastFealty = reader.ReadDateTime();

                    goto case 0;
                }
                case 0:
                {
                    m_Leader = reader.ReadMobile();
                    m_Name = reader.ReadString();
                    m_Abbreviation = reader.ReadString();

                    m_Allies = reader.ReadGuildList();
                    m_Enemies = reader.ReadGuildList();
                    m_WarDeclarations = reader.ReadGuildList();
                    m_WarInvitations = reader.ReadGuildList();

                    m_Members = reader.ReadMobileList();
                    m_Candidates = reader.ReadMobileList();
                    m_Accepted = reader.ReadMobileList();

                    m_Guildstone = reader.ReadItem();
                    m_Teleporter = reader.ReadItem();

                    m_Charter = reader.ReadString();
                    m_Website = reader.ReadString();

                    break;
                }
            }

            if ( m_AllyDeclarations == null )
                m_AllyDeclarations = new ArrayList();

            if ( m_AllyInvitations == null )
                m_AllyInvitations = new ArrayList();

            if ( m_Guildstone == null || m_Members.Count == 0 )
                Disband();
        }
Example #37
0
        public override void Deserialize( GenericReader reader )
        {
            int version = reader.ReadInt();

            switch ( version )
            {
                case 5:
                {
                    int count = reader.ReadInt();

                    m_PendingWars = new List<WarDeclaration>();
                    for( int i = 0; i < count; i++ )
                    {
                        m_PendingWars.Add( new WarDeclaration( reader ) );
                    }

                    count = reader.ReadInt();
                    m_AcceptedWars = new List<WarDeclaration>();
                    for( int i = 0; i < count; i++ )
                    {
                        m_AcceptedWars.Add( new WarDeclaration( reader ) );
                    }

                    bool isAllianceLeader = reader.ReadBool();

                    if( isAllianceLeader )
                        m_AllianceInfo = new AllianceInfo( reader );
                    else
                        m_AllianceLeader = reader.ReadGuild() as Guild;

                    goto case 4;
                }
                case 4:
                {
                    m_AllyDeclarations = reader.ReadStrongGuildList<Guild>();
                    m_AllyInvitations = reader.ReadStrongGuildList<Guild>();

                    goto case 3;
                }
                case 3:
                {
                    m_TypeLastChange = reader.ReadDateTime();

                    goto case 2;
                }
                case 2:
                {
                    m_Type = (GuildType)reader.ReadInt();

                    goto case 1;
                }
                case 1:
                {
                    m_LastFealty = reader.ReadDateTime();

                    goto case 0;
                }
                case 0:
                {
                    m_Leader = reader.ReadMobile();

                    if( m_Leader is PlayerMobile )
                        ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;

                    m_Name = reader.ReadString();
                    m_Abbreviation = reader.ReadString();

                    m_Allies = reader.ReadStrongGuildList<Guild>();
                    m_Enemies = reader.ReadStrongGuildList<Guild>();
                    m_WarDeclarations = reader.ReadStrongGuildList<Guild>();
                    m_WarInvitations = reader.ReadStrongGuildList<Guild>();

                    m_Members = reader.ReadStrongMobileList();
                    m_Candidates = reader.ReadStrongMobileList();
                    m_Accepted = reader.ReadStrongMobileList();

                    m_Guildstone = reader.ReadItem();
                    m_Teleporter = reader.ReadItem();

                    m_Charter = reader.ReadString();
                    m_Website = reader.ReadString();

                    break;
                }
            }

            if ( m_AllyDeclarations == null )
                m_AllyDeclarations = new List<Guild>();

            if ( m_AllyInvitations == null )
                m_AllyInvitations = new List<Guild>();

            if ( m_AcceptedWars == null )
                m_AcceptedWars = new List<WarDeclaration>();

            if ( m_PendingWars == null )
                m_PendingWars = new List<WarDeclaration>();

            /*
            if ( ( !NewGuildSystem && m_Guildstone == null )|| m_Members.Count == 0 )
                Disband();
            */

            Timer.DelayCall( TimeSpan.Zero, new TimerCallback( VerifyGuild_Callback ) );
        }
Example #38
0
        public override void Deserialize(GenericReader reader)
        {
            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            case 4:
            {
                m_AllyDeclarations = reader.ReadStrongGuildList <Guild>();
                m_AllyInvitations  = reader.ReadStrongGuildList <Guild>();

                goto case 3;
            }

            case 3:
            {
                m_TypeLastChange = reader.ReadDateTime();

                goto case 2;
            }

            case 2:
            {
                m_Type = (GuildType)reader.ReadInt();

                goto case 1;
            }

            case 1:
            {
                m_LastFealty = reader.ReadDateTime();

                goto case 0;
            }

            case 0:
            {
                m_Leader = reader.ReadMobile();

                if (m_Leader is PlayerMobile)
                {
                    ((PlayerMobile)m_Leader).GuildRank = RankDefinition.Leader;
                }

                m_Name         = reader.ReadString();
                m_Abbreviation = reader.ReadString();

                m_Allies          = reader.ReadStrongGuildList <Guild>();
                m_Enemies         = reader.ReadStrongGuildList <Guild>();
                m_WarDeclarations = reader.ReadStrongGuildList <Guild>();
                m_WarInvitations  = reader.ReadStrongGuildList <Guild>();

                m_Members    = reader.ReadStrongMobileList();
                m_Candidates = reader.ReadStrongMobileList();
                m_Accepted   = reader.ReadStrongMobileList();

                m_Guildstone = reader.ReadItem();
                m_Teleporter = reader.ReadItem();

                m_Charter = reader.ReadString();
                m_Website = reader.ReadString();

                break;
            }
            }

            if (m_AllyDeclarations == null)
            {
                m_AllyDeclarations = new List <Guild>();
            }

            if (m_AllyInvitations == null)
            {
                m_AllyInvitations = new List <Guild>();
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(VerifyGuild_Callback));
        }