private void RandomizeCharacter() { _spellBonus = Rnd.value > 0.5f; _character = _characters.OrderBy(x => Rnd.value).First(y => y.ForbiddenIncident != _incident); _season = _seasons[Rnd.Range(0, _seasons.Length)]; }
IEnumerator SimulatateBattles(int debuff, int buff) { if (IsSimulationRunning) { IsItMyTurnYet = BombModule.GetIDNumber(); IsSimulationRunning = false; } yield return(null); yield return(null); _NO_SIMULATION_RUNNING = false; BombModule.LogFormat("DEBUGGING MODE ENABLED"); while (IsItMyTurnYet < BombModule.GetIDNumber()) { yield return(null); } IsSimulationRunning = true; if (_sets == 0) { InitializeItemSets(); } if (!BombSerialNumber.Equals(BombInfo.GetSerialNumber())) { BombSerialNumber = BombInfo.GetSerialNumber(); BombModule.LogFormat("------------------"); BombModule.LogFormat("Simulation Results"); BombModule.LogFormat("------------------"); BombModule.LogFormat(""); foreach (Incidents incident in _incidents.Skip(1)) { _incident = incident; int battles = _sets * 4 * 2 * _characters.Count(x => x.ForbiddenIncident != _incident); SetEdgeworkBonus(); IncidentSet incidentSet = _incidedentSets[(int)_incident]; BombModule.LogFormat("Simulating Incident: {0}", incidentSet.Name); IncidentText.text = _incident.ToString(); InventoryText.characterSize = 0.7f; for (int j = debuff; j <= buff; j++) { int i = 0; foreach (Character c in _characters.Where(x => x.ForbiddenIncident != incident)) { _character = c; foreach (CharacterSeasons s in _seasons) { _season = s; foreach (Inventory[] items in _itemSets.Values) { _inventory = items.ToList(); _spellBonus = false; Initialize(j, true); _spellBonus = true; Initialize(j, true); i += 2; if ((i % 50) == 0) { UpdateDisplay(true, true, false, true); InventoryText.text = string.Format("{0}/{1}\n{2}: {3}/{4}", i + 1, battles, j < 0 ? "penalty" : "bonus", j, buff); yield return(null); } } } } ReportWinResults(j, debuff != buff); } } BombModule.LogFormat(""); BombModule.LogFormat("---------------"); BombModule.LogFormat("Average Results"); BombModule.LogFormat("---------------"); BombModule.LogFormat(""); foreach (Incidents incident in _incidents.Skip(1)) { IncidentSet incidentSet = _incidedentSets[(int)incident]; BombModule.LogFormat("Incident {0}:", incidentSet.Name); if (IncidentResults[incident][0] > 0) { BombModule.LogFormat("Boss #1 ({0}): W/L: {1:0.##}/{2:0.##} ({3} Bombs)", incidentSet.Boss1.Name, (float)IncidentResults[incident][1] / IncidentResults[incident][0], (float)IncidentResults[incident][2] / IncidentResults[incident][0], IncidentResults[incident][0]); } if (IncidentResults[incident][3] > 0) { BombModule.LogFormat("Boss #2 ({0}): W/L: {1:0.##}/{2:0.##} ({3} Bombs)", incidentSet.Boss2.Name, (float)IncidentResults[incident][4] / IncidentResults[incident][3], (float)IncidentResults[incident][5] / IncidentResults[incident][3], IncidentResults[incident][3]); } } BombModule.LogFormat(""); } BombModule.LogFormat("--------------"); BombModule.LogFormat("Battle Results"); BombModule.LogFormat("--------------"); BombModule.LogFormat(""); _NO_SIMULATION_RUNNING = true; foreach (Incidents incident in _incidents.Skip(1)) { BombModule.LogFormat("--------------"); _incident = incident; Initialize(); BombModule.LogFormat("--------------"); } IsItMyTurnYet++; IsSimulationRunning = false; BombModule.HandlePass(); if (IsItMyTurnYet <= KMBombModuleExtensions.HighestConsecutiveID) { yield break; } yield return(new WaitForSeconds(1)); BombModule.HandleStrike(); }