Example #1
0
 private void Awake()
 {
     if (battleGroup == null)
     {
         battleGroup = GetComponentInParent <BattleGroup>();
     }
 }
Example #2
0
    void OnChangedBattleGroup(BattleGroup battleGroup)
    {
        StartCoroutine(BattleHeroSlotSetting());

        //골고루 레벨업 버튼 활성/비활성
        buttonLevelUpEvenly.interactable = battleLevelUpController.expLevelUpEvenly <= battleLevelUpController.totalExp;
    }
Example #3
0
    public static void ShowBattle(string battleGroupID)
    {
        currentBattleGroupID = battleGroupID;

        //보여줄것 없으면 닫기?
        if (string.IsNullOrEmpty(battleGroupID))
        {
            ShowBattle(false);
            return;
        }

        //현재 선택된거 빼고는 전부 끄기
        for (int i = 0; i < battleGroupList.Count; i++)
        {
            battleGroupList[i].isRenderingActive = battleGroupList[i].battleType == battleGroupID;
        }

        //현재 전투 진행중이지 않으면 탐험 편성창 열기
        BattleGroup battleGroup = battleGroupList.Find(x => x.battleType == battleGroupID);

        if (!battleGroup)
        {
            lastBattleGroupID = currentBattleGroup.battleType;
            ShowBattlePreparation(battleGroupID);
        }
        else
        {
            currentBattleGroup = battleGroup;
            ShowBattle(true);
        }
    }
Example #4
0
    private void CreateBattleGroups(int good, int bad)
    {
        BattleGroup g = CreateBattleGroup(true, good);
        BattleGroup b = CreateBattleGroup(false, bad);

        EventManager.Instance.Raise(new SetBattleGroupsEvent(g, b));
    }
Example #5
0
        public static void JoinBattleGroup(GamePlayer player, byte response)
        {
            BattleGroup mybattlegroup = player.TempProperties.getProperty <BattleGroup>(JOIN_BATTLEGROUP_PROPERTY, null);

            if (mybattlegroup == null)
            {
                return;
            }

            lock (mybattlegroup)
            {
                if (mybattlegroup.Members.Count < 1)
                {
                    player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Scripts.Players.Battlegroup.NoBattleGroup"), eChatType.CT_BattleGroup, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (response == 0x01)
                {
                    mybattlegroup.AddBattlePlayer(player, false);
                }

                player.TempProperties.removeProperty(JOIN_BATTLEGROUP_PROPERTY);
            }
        }
Example #6
0
    void OnRestartBattle(BattleGroup _battleGroup)
    {
        if (battleGroup != _battleGroup)
        {
            return;
        }

        //Debug.Log("OnRestart battle");

        artifactPoint = 0;
        for (int i = 0; i < artifactList.Count; i++)
        {
            if (artifactList[i].baseData.type == "hero")
            {
                for (int j = 0; j < battleGroup.redTeamList.Count; j++)
                {
                    battleGroup.redTeamList[j].buffController.DetachBuff(artifactList[i].baseData.buffID);
                }
            }
        }

        artifactList.Clear();

        if (onChangedArtifactList != null)
        {
            onChangedArtifactList(battleGroup);
        }

        showArtifactIDList.Clear();
    }
Example #7
0
    //void OnChangedActiveState(BattleGroup _battleGroup)
    //{
    //    canvas.enabled = _battleGroup.isActive;
    //}

    void OnChangedBattlePhase(BattleGroup _battleGroup)
    {
        if (_battleGroup.battlePhase == BattleGroup.BattlePhase.FadeOut)
        {
            HideAll();
        }
    }
Example #8
0
    public BattleSaveDataStage(BattleGroup battleGroup)
    {
        id        = battleGroup.battleType.ToString();
        dungeonID = battleGroup.dungeonID;
        stage     = battleGroup.stage;

        //List<string> list = new List<string>();
        for (int i = 0; i < battleGroup.originalMember.Count; i++)
        {
            BattleHero hero = battleGroup.originalMember[i];

            Dictionary <string, string> saveForm = new Dictionary <string, string>();
            saveForm.Add("invenID", hero.heroData.id);
            saveForm.Add("level", hero.heroData.level.ToString());
            saveForm.Add("exp", hero.heroData.exp.ToString());    //누적 경험치

            float time = Time.unscaledTime - hero.heroData.battleStartTime;
            //Debug.Log("저장 : " + hero.heroData.heroName + " 숙련도 시작 시간: " + hero.heroData.battleStartTime + ", 숙려 시간 : " + time);
            hero.heroData.proficiencyTime = time;

            battleHeroList.Add(saveForm);
        }

        battleTime = battleGroup.battleTime.ToString();

        totalExp = battleGroup.battleLevelUpController.totalExp.ToString();
    }
Example #9
0
 void OnRestartBattle(BattleGroup battle)
 {
     if (battle.battlePhase == BattleGroup.BattlePhase.FadeOut || battle.battlePhase == BattleGroup.BattlePhase.Finish)
     {
         lineRenderer.enabled = false;
     }
 }
Example #10
0
    void UpdateBattleGroupID()
    {
        if (index > Battle.battleGroupList.Count)
        {
            gameObject.SetActive(false);
            battleGroupID = string.Empty;
            return;
        }
        else if (index < Battle.battleGroupList.Count)
        {
            gameObject.SetActive(true);
            battleGroupID   = Battle.battleGroupList[index].battleType;
            clickActionType = ClickActionType.ShowBattle;
        }
        else
        {
            gameObject.SetActive(true);
            for (int i = 0; i < Battle.Instance.battleIDList.Count; i++)
            {
                BattleGroup b = Battle.battleGroupList.Find(x => x.battleType == Battle.Instance.battleIDList[i]);
                if (b == null)
                {
                    UIToggleBattle t = UIBattle.Instance.uiToggleBattleList.Find(x => x.battleGroupID == Battle.Instance.battleIDList[i]);
                    if (t == null)
                    {
                        battleGroupID = Battle.Instance.battleIDList[i];
                        break;
                    }
                }
            }

            clickActionType = ClickActionType.ShowPreparation;
        }
    }
Example #11
0
    /// <summary> 회군 </summary>
    static public void RemoveBattle()
    {
        // 회군 콜백
        if (onRemoveBattle != null)
        {
            onRemoveBattle();
        }

        for (int i = 0; i < currentBattleGroup.originalMember.Count; i++)
        {
            currentBattleGroup.originalMember[i].heroData.battleGroupID = "";
        }

        DeleteSaveData(currentBattleGroup);

        battleGroupList.Remove(currentBattleGroup);
        Destroy(currentBattleGroup.gameObject);

        if (battleGroupList.Count == 0)
        {
            return;
        }

        //첫번째 전투 화면 보여주기
        BattleGroup battleGroup = battleGroupList[0];

        ShowBattle(battleGroup.battleType);
    }
Example #12
0
    void SaveTest()
    {
        if (battleGroupList.Count == 0)
        {
            return;
        }

        BattleGroup b = battleGroupList[0];

        //------------------------- 테스트 -----------------------
        BattleSaveDataStage stageData = null;

        if (b != null)
        {
            stageData = new BattleSaveDataStage(b);
        }

        stageData.id = "Battle_2";

        JsonWriter jsonWriter = new JsonWriter();

        jsonWriter.PrettyPrint = true;
        JsonMapper.ToJson(stageData, jsonWriter);
        string json = jsonWriter.ToString();

        //string json2 = JsonUtility.ToJson(data);  //이걸로 하면 몇몇 타입의 필드가 json에서 누락됨

        Debug.Log(json);

        string fileName = Application.persistentDataPath + "/" + stageData.id + "_" + User.Instance.userID + "_Stage.dat";

        File.WriteAllText(fileName, json);
    }
Example #13
0
    /// <summary> 전투가 진행중인 배틀 그룹을 씬에 생성 </summary>
    static public void CreateBattleGroup(string battleGroupID, List <HeroData> heroList, int stage = 1, BattleSaveDataStage battleSaveData = null)
    {
        if (!Instance)
        {
            return;
        }

        currentBattleGroupID = battleGroupID;

        GameObject  go          = Instantiate(Instance.battleGroupPrefab, Instance.battleList.position, Quaternion.identity, Instance.battleList) as GameObject;
        BattleGroup battleGroup = go.GetComponent <BattleGroup>();

        if (battleSaveData != null)
        {
            battleGroup.Init(battleGroupID, heroList, stage, battleSaveData);
            battleGroup.isRenderingActive = false;
        }

        else
        {
            battleGroup.Init(battleGroupID, heroList, stage);
        }

        //리스트에 추가
        battleGroupList.Add(battleGroup);

        if (onChangedBattleGroupList != null)
        {
            onChangedBattleGroupList();
        }
    }
Example #14
0
    public void InitPvP(BattleGroup _battleGroup, HeroData data)
    {
        heroData = data;

        if (_battleGroup != null)
        {
            heroData.battleGroupID = _battleGroup.battleType.ToString();
        }
        else
        {
            heroData.battleGroupID = string.Empty;
        }

        SetBattleGroup(_battleGroup);

        buffController.owner = this;

        stats.Init();

        heroData.RecalculateStats(true, power);

        defaultMoveBehavior       = new HeroMoveBehaviorRun();
        defaultMoveBehavior.owner = this;
        currentMoveBehavior       = defaultMoveBehavior;

        curHP = maxHP;

        transform.localScale = originalScale;

        UpdateActiveState();

        shakeAmount = 0f;
    }
Example #15
0
    IEnumerator FadeInOut(BattleGroup battleGroup)
    {
        //BattleGroup 클래스의 처리와 멀티쓰레딩으로 진행이라, 한 프레임 늦게 해줘야 플리킹 현상 없음
        yield return(null);

        imageFadeInOut.enabled = true;

        if (battleGroup.battlePhase == BattleGroup.BattlePhase.FadeIn)
        {
            while (battleGroup.battlePhase == BattleGroup.BattlePhase.FadeIn)
            {
                imageFadeInOut.color = new Color(0f, 0f, 0f, 1f - battleGroup.fadeInProcess);
                yield return(null);
            }
        }

        if (battleGroup.battlePhase == BattleGroup.BattlePhase.FadeOut)
        {
            while (battleGroup.battlePhase == BattleGroup.BattlePhase.FadeOut)
            {
                imageFadeInOut.color = new Color(0f, 0f, 0f, battleGroup.fadeOutProcess);
                yield return(null);
            }
        }

        imageFadeInOut.enabled = false;

        coroutineFadeInOut = null;
    }
Example #16
0
    void OnRestartBattle(BattleGroup b)
    {
        for (int i = 0; i < battleQuestList.Count; i++)
        {
            BattleQuest quest = battleQuestList[i];
            if (quest.baseData.tier == 1)
            {
                quest.level = 1;
            }
            else
            {
                quest.level = 0;
            }

            quest.isAutoRepeat = false;
        }

        currentBattleQuestAuto = battleQuestList[0];

        unlockableIndex = 1;

        totalIncome = 0d;

        ClearSaveData();
    }
Example #17
0
 void OnChangedStage(BattleGroup _battleGroup)
 {
     if (isInitialized)
     {
         Battle.SaveArtifactInfo(battleGroup);
     }
 }
Example #18
0
 void OnChangedBattleGroup(BattleGroup b)
 {
     if (battleGroup == b)
     {
         Follow(true);
     }
 }
Example #19
0
 void OnChangedBattlePhase(BattleGroup battleGroup)
 {
     if (battleGroup.battlePhase == BattleGroup.BattlePhase.FadeOut ||
         battleGroup.battlePhase == BattleGroup.BattlePhase.FadeIn)
     {
         Despawn();
     }
 }
Example #20
0
 void OnChangedBattlePhase(BattleGroup b)
 {
     //페이드 아웃 될 때 빨아들임
     if (b.battlePhase == BattleGroup.BattlePhase.FadeOut)
     {
         Loot();
     }
 }
Example #21
0
    void UpdateDungeonName()
    {
        BattleGroup battleGroup = Battle.currentBattleGroup;

        int stage = battleGroup.stage;

        stageText.text = GameDataManager.dungeonBaseDataDic[Battle.currentBattleGroup.dungeonID].dungeonName + " " + stage;
    }
Example #22
0
    void OnAddBattleGroup(BattleGroup b)
    {
        if (coroutineInit != null)
        {
            return;
        }

        coroutineInit = StartCoroutine(Init());
    }
Example #23
0
    void OnRestartBattle(BattleGroup _battleGroup)
    {
        if (battleGroup != _battleGroup)
        {
            return;
        }

        totalExp = 0;
    }
Example #24
0
    void OnChangedWave(BattleGroup battleGroup)
    {
        if (Battle.currentBattleGroup != battleGroup)
        {
            return;
        }

        UpdateDungeonName();
    }
Example #25
0
 void OnChangedStage(BattleGroup b)
 {
     diveState = DiveState.Finish;
     if (coDive != null)
     {
         StopCoroutine(coDive);
         coDive = null;
     }
 }
Example #26
0
    void OnRestartBattle(BattleGroup b)
    {
        for (int i = 0; i < b.redTeamList.Count; i++)
        {
            b.redTeamList[i].ExcutePassiveSkill();
        }

        UpdatePlaceBuff();
    }
Example #27
0
    void OnChangedBattleGroup(BattleGroup b)
    {
        if (b != Battle.currentBattleGroup)
        {
            return;
        }

        UpdateGuage();
    }
Example #28
0
    void OnChangedBattleGroup(BattleGroup _battleGroup)
    {
        if (battleGroup != _battleGroup)
        {
            return;
        }

        UpdateActiveState();
        //SetBattleGroup(battleGroup);
    }
Example #29
0
        /// <summary>
        /// Gets the amount of experience earned per character on defeat of a
        /// battle group
        /// </summary>
        /// <param name="group">The battle group to use</param>
        /// <returns>An <see cref="uint"/> representing the amount of experience
        /// each <see cref="EarthboundPartyMember"/> recieves or
        /// <see cref="DeathGlitchExperience"/> if no consicous members are alive</returns>
        /// <remarks>
        /// Due to a glitch in the programming, a division by zero error can
        /// occur if all playable characters die and win at the same time
        /// (this can happen with enemies that explode upon death).
        /// </remarks>
        /// <seealso cref="GetConsciousCharacters(bool)"/>
        /// <seealso cref="BattleGroup"/>
        /// <seealso cref="BattleGroup.TotalExperience"/>
        /// <seealso cref="DeathGlitchExperience"/>
        public uint GetPerCharacterExperienceOnWin(BattleGroup group)
        {
            uint alive = (uint)ConsciousCharacters.Length;

            if (alive == 0)
            {
                return(DeathGlitchExperience);
            }
            return(group.TotalExperience / alive);
        }
Example #30
0
 /// <summary>
 /// Gets whether the party can perform an instant win against the enemies
 /// in this battle formation.
 /// </summary>
 /// <param name="group">The battle group to check against</param>
 /// <param name="surpriseAttack">Whether this is a surprise attack</param>
 /// <returns>Whether an instant win will be performed</returns>
 /// <remarks>
 /// This function is adapted from the equation on the <a href="https://starmen.net/mother2/gameinfo/technical/equations.php">Starmen.net equations page</a>.
 /// </remarks>
 public bool CanInstantWin(BattleGroup group, bool surpriseAttack)
 {
     Contract.Requires <ArgumentNullException>(group != null);
     EarthboundPartyMember[] NormalCharacters = NormalStatusCharacters;
     if (group.Enemies.Length > NormalCharacters.Length)
     {
         return(false);
     }
     throw new NotImplementedException();
 }
Example #31
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 = "";
							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;
			}
		}