private static void AppendMoveSummary(ComboBox comboBoxEnemySelection, CheckBox checkBoxCastTimes, CheckBox checkBoxEnumerate, CheckBox checkBoxRatesAsFractions, CheckBox checkBoxTranslate, AbilitySummaryHelper abilitySummaryHelper, BasicEnemyInfo enemy, BasicEnemyParentInfo myEnemyParent, StringBuilder summary) { var str6 = abilitySummaryHelper.GetAbilitySummary(enemy, myEnemyParent, FFRKProxy.Instance.GameState.ActiveBattle, comboBoxEnemySelection, checkBoxCastTimes, checkBoxEnumerate, checkBoxRatesAsFractions, checkBoxTranslate) .Replace("\n", "\n* ").Replace("not yet implemented", "**not yet implemented**") .Replace("not parsed", "**not parsed**").Replace(" 【", "【"); if (!str6.Equals("")) { summary.Append(string.Format("* {0}\n\n", str6)); } }
public string GetAbilitySummary(BasicEnemyInfo enemy, BasicEnemyParentInfo myEnemyParent, EventBattleInitiated battle, ComboBox comboBoxEnemySelection, CheckBox checkBoxCastTimes, CheckBox checkBoxEnumerate, CheckBox checkBoxRatesAsFractions, CheckBox checkBoxTranslate) { if (enemy == null || myEnemyParent == null || battle == null) { return(""); } var single = myEnemyParent.Appearances[0] == 1U && comboBoxEnemySelection.Items.Count == 1; uint totalWeight = 0; foreach (var enemyAbility in enemy.EnemyAbilities) { totalWeight += enemyAbility.Weight; } var source = new List <string>(); var enemyAbilityParser = new EnemyAbilityParser(totalWeight, battle, single); var checkCastTimesCheckState = checkBoxCastTimes.CheckState; bool hasVariableCastTime; if (checkCastTimesCheckState.Equals(CheckState.Indeterminate)) { hasVariableCastTime = enemy.EnemyCastTime.Equals("Variable"); } else { checkCastTimesCheckState = checkBoxCastTimes.CheckState; hasVariableCastTime = checkCastTimesCheckState.Equals(CheckState.Checked); } var checkBoxEnumerateCheckState = checkBoxEnumerate.CheckState; bool enumerateForcedActions; if (checkBoxEnumerateCheckState.Equals(CheckState.Indeterminate)) { var num = 0; foreach (var constraint in myEnemyParent.Constraints) { if (constraint.ConstraintType == 1001U && (int)constraint.EnemyStatusId == (int)enemy.EnemyId) { ++num; } } enumerateForcedActions = num >= 10; } else { checkBoxEnumerateCheckState = checkBoxEnumerate.CheckState; enumerateForcedActions = checkBoxEnumerateCheckState.Equals(CheckState.Checked); } var parseOpt = new EnemyAbilityParserOptions { displayFractions = checkBoxRatesAsFractions.Checked, displayCastTimes = hasVariableCastTime, translateAbilityNames = checkBoxTranslate.Checked }; var orderedEnumerable = enemy.getAbilities(myEnemyParent.Constraints).OrderBy(x => { var val2 = int.MaxValue; foreach (var constraint in myEnemyParent.Constraints) { if (constraint.ConstraintType == 1001U && constraint.AbilityTag.Equals(x.Tag)) { var val1 = int.Parse(constraint.ConstraintValue); if (constraint.EnemyStatusId == 0U) { val1 -= 10000; } else if ((int)constraint.EnemyStatusId != (int)enemy.EnemyId) { continue; } val2 = Math.Min(val1, val2); } } return(val2); }).OrderBy(x => x.Weight).OrderBy(x => x.Weight != 0U ? x.UnlockTurn : 0U); if (enumerateForcedActions) { var val1 = 0; foreach (var constraint in myEnemyParent.Constraints) { if (constraint.ConstraintType == 1001U && (int)constraint.EnemyStatusId == (int)enemy.EnemyId) { val1 = Math.Max(val1, int.Parse(constraint.ConstraintValue)); } } for (var enumeratedTurn = 1; enumeratedTurn <= val1; ++enumeratedTurn) { foreach (var constraint1 in myEnemyParent.Constraints) { if (constraint1.ConstraintType == 1001U && (int)constraint1.EnemyStatusId == (int)enemy.EnemyId && int.Parse(constraint1.ConstraintValue) == enumeratedTurn) { foreach (var paramAbility in orderedEnumerable) { if (constraint1.AbilityTag.Equals(paramAbility.Tag)) { var num = 0; var flag3 = true; if (paramAbility.Weight > 0U) { flag3 = false; } foreach (var constraint2 in myEnemyParent.Constraints) { if (flag3 && constraint2.ConstraintType == 1001U && constraint2.AbilityTag.Equals(paramAbility.Tag) && (int)constraint2.EnemyStatusId == (int)enemy.EnemyId && int.Parse(constraint2.ConstraintValue) > enumeratedTurn) { flag3 = false; } if (flag3 && constraint2.ConstraintType >= 1003U && constraint2.ConstraintType <= 1005U && constraint2.AbilityTag.Equals(paramAbility.Tag) && (int)constraint1.EnemyStatusId == (int)enemy.EnemyId) { flag3 = false; } if (flag3 && constraint2.ConstraintType == 1002U && constraint2.AbilityTag.Equals(paramAbility.Tag) && (int)constraint2.EnemyStatusId == (int)enemy.EnemyId) { num = num == 0 ? int.Parse(constraint2.ConstraintValue) : Math.Min(int.Parse(constraint2.ConstraintValue), num); } } if ((num > 0) & flag3) { source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt, false, enumeratedTurn, num)); } else { source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt, false, enumeratedTurn)); } } } } } } foreach (var paramAbility in orderedEnumerable) { if (paramAbility.Weight > 0U) { source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt, false, 0)); } else { var flag3 = false; var flag4 = false; foreach (var constraint in myEnemyParent.Constraints) { if (constraint.AbilityTag.Equals(paramAbility.Tag)) { if ((int)constraint.EnemyStatusId == (int)enemy.EnemyId && constraint.ConstraintType == 1001U) { flag3 = true; } if (constraint.EnemyStatusId == 0U || (int)constraint.EnemyStatusId == (int)enemy.EnemyId && constraint.ConstraintType != 1001U && constraint.ConstraintType != 1002U) { flag4 = true; } } } if (!flag3 | flag4) { source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt, false, 0)); } } } } else { foreach (var paramAbility in orderedEnumerable) { source.Add(enemyAbilityParser.parseAbility(paramAbility, myEnemyParent.Constraints, enemy, parseOpt)); } } var list = source.OrderBy(x => x[0] != 'T').ThenBy(x => x[0] != 'S').ToList(); foreach (var counter in enemy.EnemyCounters.OrderBy(x => x.Rate)) { list.Add(enemyAbilityParser.parseCounter(counter, parseOpt)); } return(string.Join(" \n", list)); }