示例#1
0
        public override bool IsAllowedToAttack(GameLiving attacker, GameLiving defender, bool quiet)
        {
            if (!base.IsAllowedToAttack(attacker, defender, quiet))
            {
                return(false);
            }

            // if controlled NPC - do checks for owner instead
            if (attacker is GameNPC)
            {
                IControlledBrain controlled = ((GameNPC)attacker).Brain as IControlledBrain;
                if (controlled != null)
                {
                    attacker = controlled.GetLivingOwner();
                    quiet    = true;                  // silence all attacks by controlled npc
                }
            }
            if (defender is GameNPC)
            {
                IControlledBrain controlled = ((GameNPC)defender).Brain as IControlledBrain;
                if (controlled != null)
                {
                    defender = controlled.GetLivingOwner();
                }
            }

            // can't attack self
            if (attacker == defender)
            {
                if (quiet == false)
                {
                    MessageToLiving(attacker, "You can't attack yourself!");
                }
                return(false);
            }

            //ogre: sometimes other players shouldn't be attackable
            GamePlayer playerAttacker = attacker as GamePlayer;
            GamePlayer playerDefender = defender as GamePlayer;

            if (playerAttacker != null && playerDefender != null)
            {
                //check group
                if (playerAttacker.Group != null && playerAttacker.Group.IsInTheGroup(playerDefender))
                {
                    if (!quiet)
                    {
                        MessageToLiving(playerAttacker, "You can't attack your group members.");
                    }
                    return(false);
                }

                if (playerAttacker.DuelTarget != defender)
                {
                    //check guild
                    if (playerAttacker.Guild != null && playerAttacker.Guild == playerDefender.Guild)
                    {
                        if (!quiet)
                        {
                            MessageToLiving(playerAttacker, "You can't attack your guild members.");
                        }
                        return(false);
                    }

                    // Player can't hit other members of the same BattleGroup
                    BattleGroup mybattlegroup = (BattleGroup)playerAttacker.TempProperties.getProperty <object>(BattleGroup.BATTLEGROUP_PROPERTY, null);

                    if (mybattlegroup != null && mybattlegroup.IsInTheBattleGroup(playerDefender))
                    {
                        if (!quiet)
                        {
                            MessageToLiving(playerAttacker, "You can't attack a member of your battlegroup.");
                        }
                        return(false);
                    }

                    // Safe regions
                    if (m_safeRegions != null)
                    {
                        foreach (int reg in m_safeRegions)
                        {
                            if (playerAttacker.CurrentRegionID == reg)
                            {
                                if (quiet == false)
                                {
                                    MessageToLiving(playerAttacker, "You're currently in a safe zone, you can't attack other players here.");
                                }
                                return(false);
                            }
                        }
                    }


                    // Players with safety flag can not attack other players
                    if (playerAttacker.Level < m_safetyLevel && playerAttacker.SafetyFlag)
                    {
                        if (quiet == false)
                        {
                            MessageToLiving(attacker, "Your PvP safety flag is ON.");
                        }
                        return(false);
                    }

                    // Players with safety flag can not be attacked in safe regions
                    if (playerDefender.Level < m_safetyLevel && playerDefender.SafetyFlag)
                    {
                        bool unsafeRegion = false;
                        foreach (int regionID in m_unsafeRegions)
                        {
                            if (regionID == playerDefender.CurrentRegionID)
                            {
                                unsafeRegion = true;
                                break;
                            }
                        }
                        if (unsafeRegion == false)
                        {
                            //"PLAYER has his safety flag on and is in a safe area, you can't attack him here."
                            if (quiet == false)
                            {
                                MessageToLiving(attacker, playerDefender.Name + " has " + playerDefender.GetPronoun(1, false) + " safety flag on and is in a safe area, you can't attack " + playerDefender.GetPronoun(2, false) + " here.");
                            }
                            return(false);
                        }
                    }
                }
            }

            if (attacker.Realm == 0 && defender.Realm == 0)
            {
                return(FactionMgr.CanLivingAttack(attacker, defender));
            }

            //allow confused mobs to attack same realm
            if (attacker is GameNPC && (attacker as GameNPC).IsConfused && attacker.Realm == defender.Realm)
            {
                return(true);
            }

            // "friendly" NPCs can't attack "friendly" players
            if (defender is GameNPC && defender.Realm != 0 && attacker.Realm != 0 && defender is GameKeepGuard == false && defender is GameFont == false)
            {
                if (quiet == false)
                {
                    MessageToLiving(attacker, "You can't attack a friendly NPC!");
                }
                return(false);
            }
            // "friendly" NPCs can't be attacked by "friendly" players
            if (attacker is GameNPC && attacker.Realm != 0 && defender.Realm != 0 && attacker is GameKeepGuard == false)
            {
                return(false);
            }

            #region Keep Guards
            //guard vs guard / npc
            if (attacker is GameKeepGuard)
            {
                if (defender is GameKeepGuard)
                {
                    return(false);
                }

                if (defender is GameNPC && (defender as GameNPC).Brain is IControlledBrain == false)
                {
                    return(false);
                }
            }

            //player vs guard
            if (defender is GameKeepGuard && attacker is GamePlayer &&
                GameServer.KeepManager.IsEnemy(defender as GameKeepGuard, attacker as GamePlayer) == false)
            {
                if (quiet == false)
                {
                    MessageToLiving(attacker, "You can't attack a friendly NPC!");
                }
                return(false);
            }

            //guard vs player
            if (attacker is GameKeepGuard && defender is GamePlayer &&
                GameServer.KeepManager.IsEnemy(attacker as GameKeepGuard, defender as GamePlayer) == false)
            {
                return(false);
            }
            #endregion

            return(true);
        }
示例#2
0
        public void OnCommand(GameClient client, string[] args)
        {
            if (IsSpammingCommand(client.Player, "battlegroup"))
            {
                return;
            }

            if (args.Length < 2)
            {
                PrintHelp(client);
                return;
            }

            switch (args[1].ToLower())
            {
            case "help":
            {
                PrintHelp(client);
            }

            break;

            case "invite":
            {
                if (args.Length < 3)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.UsageInvite"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                GameClient inviteeclient = WorldMgr.GetClientByPlayerName(args[2], false, true);
                if (inviteeclient == null || !GameServer.ServerRules.IsSameRealm(inviteeclient.Player, client.Player, true))         // allow priv level>1 to invite anyone
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NoPlayer"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (client == inviteeclient)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InviteYourself"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                BattleGroup oldbattlegroup = inviteeclient.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (oldbattlegroup != null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.PlayerInBattlegroup", inviteeclient.Player.Name), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    mybattlegroup = new BattleGroup();
                    mybattlegroup.AddBattlePlayer(client.Player, true);
                }
                else if (((bool)mybattlegroup.Members[client.Player]) == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderInvite"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                inviteeclient.Player.TempProperties.setProperty(JOIN_BATTLEGROUP_PROPERTY, mybattlegroup);
                inviteeclient.Player.Out.SendCustomDialog(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.JoinBattleGroup", client.Player.Name), new CustomDialogResponse(JoinBattleGroup));
            }

            break;

            case "groups":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);

                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                StringBuilder text = new StringBuilder(ServerProperties.Properties.BATTLEGROUP_MAX_MEMBER); // create the string builder
                ArrayList     curBattleGroupGrouped    = new ArrayList();                                   // create the arraylist
                ArrayList     curBattleGroupNotGrouped = new ArrayList();
                int           i = 1;                                                                        // This will list each group in the battle group.
                text.Length = 0;
                text.Append("The group structure of your Battle Group:");
                client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                text.Length = 0;

                foreach (GamePlayer player in mybattlegroup.Members.Keys)
                {
                    if (player.Group != null && player.Group.MemberCount > 1)
                    {
                        curBattleGroupGrouped.Add(player);
                    }
                    else
                    {
                        curBattleGroupNotGrouped.Add(player);
                    }
                }

                ArrayList ListedPeople = new ArrayList();
                int       firstrun     = 0;
                foreach (GamePlayer grouped in curBattleGroupGrouped)
                {
                    if (firstrun == 0)
                    {
                        text.Length = 0;
                        text.Append(i);
                        text.Append(") ");
                        i++;         // Eg. 1)Batlas Ichijin etc.
                        text.Append(grouped.Group.GroupMemberString(grouped));
                        client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                        firstrun = 1;
                    }
                    else if (!ListedPeople.Contains(grouped))
                    {
                        text.Length = 0;
                        text.Append(i);
                        text.Append(") ");
                        i++;         // Eg. 1)Batlas Ichijin etc.
                        text.Append(grouped.Group.GroupMemberString(grouped));
                        client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    }

                    foreach (GamePlayer gpl in grouped.Group.GetPlayersInTheGroup())
                    {
                        if (mybattlegroup.IsInTheBattleGroup(gpl))
                        {
                            ListedPeople.Add(gpl);
                        }
                    }
                }

                foreach (GamePlayer nongrouped in curBattleGroupNotGrouped)
                {
                    text.Length = 0;
                    text.Append(i);
                    text.Append(") ");
                    i++;

                    if ((bool)mybattlegroup.Members[nongrouped] == true)
                    {
                        text.Append(" <Leader>");
                    }

                    text.Append(nongrouped.Name + '\n');
                    client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                }
            }

            break;

            case "groupclass":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);

                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                StringBuilder text = new StringBuilder(ServerProperties.Properties.BATTLEGROUP_MAX_MEMBER); // create the string builder
                ArrayList     curBattleGroupGrouped    = new ArrayList();                                   // create the arraylist
                ArrayList     curBattleGroupNotGrouped = new ArrayList();
                int           i = 1;                                                                        // This will list each group in the battle group.
                text.Length = 0;
                text.Append("Players crrently in Battle Group:");
                client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                text.Length = 0;

                foreach (GamePlayer player in mybattlegroup.Members.Keys)
                {
                    if (player.Group != null && player.Group.MemberCount > 1)
                    {
                        curBattleGroupGrouped.Add(player);
                    }
                    else
                    {
                        curBattleGroupNotGrouped.Add(player);
                    }
                }

                ArrayList ListedPeople = new ArrayList();
                int       firstrun     = 0;
                foreach (GamePlayer grouped in curBattleGroupGrouped)
                {
                    if (firstrun == 0)
                    {
                        text.Length = 0;
                        text.Append(i);
                        text.Append(") ");
                        i++;    // Eg. 1)Batlas Ichijin etc.
                        text.Append(grouped.Group.GroupMemberClassString(grouped));
                        client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                        firstrun = 1;
                    }
                    else if (!ListedPeople.Contains(grouped))
                    {
                        text.Length = 0;
                        text.Append(i);
                        text.Append(") ");
                        i++;    // Eg. 1)Batlas Ichijin etc.
                        text.Append(grouped.Group.GroupMemberClassString(grouped));
                        client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    }

                    foreach (GamePlayer gpl in grouped.Group.GetPlayersInTheGroup())
                    {
                        if (mybattlegroup.IsInTheBattleGroup(gpl))
                        {
                            ListedPeople.Add(gpl);
                        }
                    }
                }

                foreach (GamePlayer nongrouped in curBattleGroupNotGrouped)
                {
                    text.Length = 0;
                    text.Append(i);
                    text.Append(") ");
                    i++;

                    if ((bool)mybattlegroup.Members[nongrouped] == true)
                    {
                        text.Append(" <Leader>");
                    }

                    text.Append("(" + nongrouped.CharacterClass.Name + ")");
                    text.Append(nongrouped.Name + '\n');
                    client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                }
            }

            break;

            case "who":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                int           i    = 0;
                StringBuilder text = new StringBuilder(ServerProperties.Properties.BATTLEGROUP_MAX_MEMBER);
                text.Length = 0;
                text.Append("Players currently in BattleGroup:");
                client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);

                foreach (GamePlayer player in mybattlegroup.Members.Keys)
                {
                    i++;
                    text.Length = 0;
                    text.Append(i);
                    text.Append(") ");

                    if ((bool)mybattlegroup.Members[player] == true)
                    {
                        text.Append(" <Leader> ");
                    }

                    text.Append(player.Name);

                    client.Out.SendMessage(text.ToString(), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);

                    // TODO: make function formatstring
                }
            }

            break;

            case "remove":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (args.Length < 3)
                {
                    PrintHelp(client);
                }

                GameClient inviteeclient = WorldMgr.GetClientByPlayerName(args[2], false, false);
                if (inviteeclient == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NoPlayer"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.RemoveBattlePlayer(inviteeclient.Player);
            }

            break;

            case "leave":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.RemoveBattlePlayer(client.Player);
            }

            break;

            case "listen":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[client.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.Listen = !mybattlegroup.Listen;
                string message = LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.ListenMode") + (mybattlegroup.Listen ? "on." : "off.");
                foreach (GamePlayer ply in mybattlegroup.Members.Keys)
                {
                    ply.Out.SendMessage(message, eChatType.CT_Chat, eChatLoc.CL_ChatWindow);
                }
            }

            break;

            case "promote":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[client.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (args.Length < 3)
                {
                    PrintHelp(client);
                }

                string     invitename    = string.Join(" ", args, 2, args.Length - 2);
                GameClient inviteeclient = WorldMgr.GetClientByPlayerName(invitename, false, false);
                if (inviteeclient == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NoPlayer"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.Members[inviteeclient.Player] = true;
                string message = LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.Moderator", inviteeclient.Player.Name);
                foreach (GamePlayer ply in mybattlegroup.Members.Keys)
                {
                    ply.Out.SendMessage(message, eChatType.CT_Chat, eChatLoc.CL_ChatWindow);
                }
            }

            break;

            case "public":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[client.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.IsPublic = true;
                string message = LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.Public");
                foreach (GamePlayer ply in mybattlegroup.Members.Keys)
                {
                    ply.Out.SendMessage(message, eChatType.CT_Chat, eChatLoc.CL_ChatWindow);
                }
            }

            break;

            case "credit":
            {
                client.Out.SendMessage("Command is not yet implimented.", eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
            }

            break;

            case "grantcredit":
            {
                client.Out.SendMessage("Command is not yet implimented.", eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
            }

            break;

            case "private":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[client.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.IsPublic = false;
                string message = LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.Private");
                foreach (GamePlayer ply in mybattlegroup.Members.Keys)
                {
                    ply.Out.SendMessage(message, eChatType.CT_Chat, eChatLoc.CL_ChatWindow);
                }
            }

            break;

            case "join":
            {
                if (args.Length < 3)
                {
                    PrintHelp(client);
                    return;
                }

                BattleGroup oldbattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (oldbattlegroup != null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.AlreadyInBattlegroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                GameClient inviteeclient = WorldMgr.GetClientByPlayerName(args[2], false, false);
                if (inviteeclient == null || !GameServer.ServerRules.IsSameRealm(client.Player, inviteeclient.Player, true))         // allow priv level>1 to join anywhere
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NoPlayer"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (client == inviteeclient)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.OwnBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                BattleGroup mybattlegroup = inviteeclient.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NotBattleGroupMember"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[inviteeclient.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NotBattleGroupLeader"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (!mybattlegroup.IsPublic)
                {
                    if (args.Length == 4 && args[3] == mybattlegroup.Password)
                    {
                        mybattlegroup.AddBattlePlayer(client.Player, false);
                    }
                    else
                    {
                        client.Player.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NotPublic"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    }
                }
                else
                {
                    mybattlegroup.AddBattlePlayer(client.Player, false);
                }
            }

            break;

            case "password":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[client.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (args.Length < 3)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.Password", mybattlegroup.Password) + mybattlegroup.Password, eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (args[2] == "clear")
                {
                    mybattlegroup.Password = string.Empty;
                    return;
                }

                mybattlegroup.Password = args[2];
                client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.PasswordChanged", mybattlegroup.Password) + mybattlegroup.Password, eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
            }

            break;

            case "count":
            {
                BattleGroup curbattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupCount", curbattlegroup.Members.Count), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
            }

            break;

            case "status":
            {
                BattleGroup curbattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupStatus", curbattlegroup.Members.Count), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
            }

            break;

            case "loot":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (mybattlegroup.Listen == true && (((bool)mybattlegroup.Members[client.Player]) == false))
                {
                    client.Player.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (args[2] == "normal" || args[2] == "norm" || args[2] == "n" || args[2] == "N" || args[2] == "Norm" || args[2] == "Normal")
                {
                    mybattlegroup.SetBGLootType(false);
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattleGroupLootNormal"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                }
                else if (args[2] == "treasurer" || args[2] == "treasure" || args[2] == "t" || args[2] == "T" || args[2] == "Treasurer" || args[2] == "Treasure")
                {
                    mybattlegroup.SetBGLootType(true);
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattleGroupLootTreasurer"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                }
            }

            break;

            case "lootlevel":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (mybattlegroup.Listen == true && (((bool)mybattlegroup.Members[client.Player]) == false))
                {
                    client.Player.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (Convert.ToInt32(args[2]) == 0)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupLootThresholdOff"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                }
                else
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupLootThresholdOn", mybattlegroup.GetBGLootTypeThreshold()), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                }
            }

            break;

            case "treasurer":
            {
                BattleGroup mybattlegroup = client.Player.TempProperties.getProperty <BattleGroup>(BattleGroup.BATTLEGROUP_PROPERTY, null);
                if (mybattlegroup == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.InBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if ((bool)mybattlegroup.Members[client.Player] == false)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.LeaderCommand"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (args.Length < 3)
                {
                    PrintHelp(client);
                }

                string     treasname   = string.Join(" ", args, 2, args.Length - 2);
                GameClient treasclient = WorldMgr.GetClientByPlayerName(treasname, false, false);
                if (treasclient == null)
                {
                    client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.NoPlayer", treasclient.Player.Name), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                mybattlegroup.SetBGTreasurer(treasclient.Player);
                client.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupTreasurerOn", treasclient.Player.Name), eChatType.CT_BattleGroupLeader, eChatLoc.CL_SystemWindow);
                treasclient.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupTreasurerIsYou"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                foreach (GamePlayer ply in mybattlegroup.Members.Keys)
                {
                    ply.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupTreasurerIs", treasclient.Player.Name), eChatType.CT_Chat, eChatLoc.CL_SystemWindow);
                }

                if (mybattlegroup.GetBGTreasurer() == null)
                {
                    foreach (GamePlayer ply in mybattlegroup.Members.Keys)
                    {
                        ply.Out.SendMessage(LanguageMgr.GetTranslation(client.Account.Language, "Scripts.Players.Battlegroup.BattlegroupTreasurerOff"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    }
                }
            }

            break;

            default:
            {
                PrintHelp(client);
            }

            break;
            }
        }