private void Awake() { if (battleGroup == null) { battleGroup = GetComponentInParent <BattleGroup>(); } }
void OnChangedBattleGroup(BattleGroup battleGroup) { StartCoroutine(BattleHeroSlotSetting()); //골고루 레벨업 버튼 활성/비활성 buttonLevelUpEvenly.interactable = battleLevelUpController.expLevelUpEvenly <= battleLevelUpController.totalExp; }
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); } }
private void CreateBattleGroups(int good, int bad) { BattleGroup g = CreateBattleGroup(true, good); BattleGroup b = CreateBattleGroup(false, bad); EventManager.Instance.Raise(new SetBattleGroupsEvent(g, b)); }
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); } }
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(); }
//void OnChangedActiveState(BattleGroup _battleGroup) //{ // canvas.enabled = _battleGroup.isActive; //} void OnChangedBattlePhase(BattleGroup _battleGroup) { if (_battleGroup.battlePhase == BattleGroup.BattlePhase.FadeOut) { HideAll(); } }
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(); }
void OnRestartBattle(BattleGroup battle) { if (battle.battlePhase == BattleGroup.BattlePhase.FadeOut || battle.battlePhase == BattleGroup.BattlePhase.Finish) { lineRenderer.enabled = false; } }
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; } }
/// <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); }
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); }
/// <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(); } }
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; }
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; }
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(); }
void OnChangedStage(BattleGroup _battleGroup) { if (isInitialized) { Battle.SaveArtifactInfo(battleGroup); } }
void OnChangedBattleGroup(BattleGroup b) { if (battleGroup == b) { Follow(true); } }
void OnChangedBattlePhase(BattleGroup battleGroup) { if (battleGroup.battlePhase == BattleGroup.BattlePhase.FadeOut || battleGroup.battlePhase == BattleGroup.BattlePhase.FadeIn) { Despawn(); } }
void OnChangedBattlePhase(BattleGroup b) { //페이드 아웃 될 때 빨아들임 if (b.battlePhase == BattleGroup.BattlePhase.FadeOut) { Loot(); } }
void UpdateDungeonName() { BattleGroup battleGroup = Battle.currentBattleGroup; int stage = battleGroup.stage; stageText.text = GameDataManager.dungeonBaseDataDic[Battle.currentBattleGroup.dungeonID].dungeonName + " " + stage; }
void OnAddBattleGroup(BattleGroup b) { if (coroutineInit != null) { return; } coroutineInit = StartCoroutine(Init()); }
void OnRestartBattle(BattleGroup _battleGroup) { if (battleGroup != _battleGroup) { return; } totalExp = 0; }
void OnChangedWave(BattleGroup battleGroup) { if (Battle.currentBattleGroup != battleGroup) { return; } UpdateDungeonName(); }
void OnChangedStage(BattleGroup b) { diveState = DiveState.Finish; if (coDive != null) { StopCoroutine(coDive); coDive = null; } }
void OnRestartBattle(BattleGroup b) { for (int i = 0; i < b.redTeamList.Count; i++) { b.redTeamList[i].ExcutePassiveSkill(); } UpdatePlaceBuff(); }
void OnChangedBattleGroup(BattleGroup b) { if (b != Battle.currentBattleGroup) { return; } UpdateGuage(); }
void OnChangedBattleGroup(BattleGroup _battleGroup) { if (battleGroup != _battleGroup) { return; } UpdateActiveState(); //SetBattleGroup(battleGroup); }
/// <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); }
/// <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(); }
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; } }