Броня и талисманы могут быть перекованы, чтобы давать бонусы к статам, когда они экипированы, а ценность, которую дают перековы, меняется в зависимости от редкости предмета. Талисманы могут быть обычными, необычными, редкими или эпическими, в то время как броня может быть общими, необычными, редкими, эпическими или легендарными.
Обычные божественные талисманы дают 1% вероятности критического удара и 1% критического урона, необычныеБлагочестивые талисманы дают 2% вероятности критического удара и 2% крит. Урона, Редкие благочестивые талисманы дают 2% вероятности критического удара и 3% крит. Урона, а эпические благочестивые талисманы дают 3% вероятности критического удара и 6% критического урона. Обычные зудящие талисманы наносят 3% критического урона, необычные зудящие талисманы наносят 5% критического урона, редкие зудящие талисманы дают 8% критического урона, а эпические зудящие талисманы дают 12% критического урона. Неприятные Талисманы дают те же характеристики, что и Божественные Талисманы, за исключением того, что шанс критического удара и урон от критического удара поменялись местами.
Божественная броня дает те же характеристики, что и Божественные талисманы, но с добавлением легендарной редкости, Легендарная божественная броня дает 5% крит. шанс и 8% критического урона. «Неприятная броня», как и «Неприятные талисманы», такая же, как «Благочестивая броня», за исключением случаев, когда шанс критического удара и урон от крит поменялись местами. Обычная Сильная Броня дает 1% критического урона, Необычная Сильная Броня дает 2% критического урона, Редкая Сильная Броня дает 4% критического урона, Эпическая Сильная Броня дает 7% критического урона, а Легендарная Сильная Броня дает вам 10% критического урона.
У игрока также есть базовый шанс критического удара 20 и переменный шанс, зависящий от уровня определенных навыков, которые он выровнял, а также от оружия. В каждом редком ярусе талисманов это просто комбинация, а не перестановка, поэтому не имеет значения, какой из Общих Талисманов является Божественным. В настоящее время существует 11 Общих Талисманов, 10 Необычных Талисманов, 11 Редких Талисманов и 2 Эпических Талисмана, но есть и другие известные, которые появятся в будущем, и поэтому мне нужно, чтобы он был легко редактируемым.
Цель состоит в том, чтобы получить 80% шанс критического удара, а затем максимизировать критический урон. Я хотел бы знать, как выполнить итерацию возможных комбинаций, чтобы получить все результаты, соответствующие этому критерию, и затем распечатать их на консоли.
Я сделал такую версию, где потребовалось всего 2 режера ви как таковой, я мог бы просто использовать функцию% remainder (как показано ниже), чтобы дать мне результат, и он работал хорошо для меня, если мне не нужно помещать 0 в одну из переменных talismanCount, чего я просто избегаю.
int iterationMax = (commonCount * uncommonCount * rareCount * epicCount * 2 * 4 * 8 * 16);
int iteration = 0;
while (iteration < iterationMaximum)
{
godlyCommons = ((iteration + 1) % commonCount);
godlyUncommons = ((iteration + 1) % (commonCount * uncommonCount)) / commonCount;
godlyRares = ((iteration + 1) % (commonCount * uncommonCount * rareCount)) / (commonCount * uncommonCount);
godlyEpics = ((iteration + 1) % (commonCount * uncommonCount * rareCount * epicCount)) / (commonCount * uncommonCount * rareCount);
godlyHelmet = ((iteration + 1) % (commonCount * uncommonCount * rareCount * epicCount * 2)) / (commonCount * uncommonCount * rareCount * epicCount);
godlyChestplate = ((iteration + 1) % (commonCount * uncommonCount * rareCount * epicCount * 4)) / (commonCount * uncommonCount * rareCount * epicCount * 2);
godlyLeggings = ((iteration + 1) % (commonCount * uncommonCount * rareCount * epicCount * 8)) / (commonCount * uncommonCount * rareCount * epicCount * 4);
godlyBoots = ((iteration + 1) % (commonCount * uncommonCount * rareCount * epicCount * 16)) / (commonCount * uncommonCount * rareCount * epicCount * 8);
switch (godlyHelmet) {
case 0:
switch (helmetRarity) {
case "common":
armourCritDamage += 1;
break;
case "uncommon":
armourCritDamage += 2;
break;
case "rare":
armourCritDamage += 4;
break;
case "epic":
armourCritDamage += 7;
break;
case "legendary":
armourCritDamage += 10;
break;
}
break;
//Case 1: more stats
//switch (godlyChestplate/Leggings/Boots)
critChance += (baseCritChance + combatLevel + swordCritChance + (godlyCommons) + (godlyUncommons * 2) + (godlyRares * 2) + (godlyEpics * 3) + armourCritChance);
//Add crit chance for godly pieces (only godly and unpleasant give crit chance, but this code was only for godly
critDamage += (baseCritDamage + swordCritDamage + (godlyCommons) + (godlyUncommons * 2) + (godlyRares * 3) + (godlyEpics * 6) + ((commonCount - godlyCommons) * 3) + ((uncommonCount - godlyUncommons) * 5) + ((rareCount - godlyRares) * 8) + ((epicCount - godlyEpics) * 12) + armourCritDamage);
//Add crit damage for all reforges
if (critChance == targetCritChance)
Console.WriteLine(godlyCommons + " " + godlyUncommons + " " + godlyRares + " " + godlyEpics + " | " + godlyHelmet + " " + godlyChestplate + " " + godlyLeggings + " " + godlyBoots + " | " + critChance + " " + critDamage);
iteration += 1;
}
Теперь, когда 3-я реорганизация жизнеспособна, мне нужно изменить свой код, чтобы иметь возможность принять это во внимание. Есть ли простой способ сделать это, или мне придется перезагрузить с нуля? Как бы вы пошли на счет этого.