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); }
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; } }