Добавлено: Пт Апр 17, 2015 6:03
Заголовок сообщения:
Вот так лучше будет:
где "Х" - это
21 + нанесённый дистанционный урон + 5*кол-во застреленных врагов - дист. атака*запас снарядов.
С некоторым опозданием, но продолжу. Я не представляю, почему условие выполняется при отрицательных значениях, чтобы судить, будет ли формула лучше без множителя
3.
Мой вопрос заключался именно в том, что цитированная часть условий в игре практически всегда имеет отрицательное значение(по крайней мере с множителем 3, как в ванилле), из чего следует:
Если потребовать вычислить случайное число от нуля до нуля или же до отрицательного значения, результатом будет ноль.
Из чего следует, что условие не выполняется, поскольку 0 всегда меньше 30. И просил пояснить именно этот момент.
Простой пример: эльф с 10 стрелковой атаки и 7 зарядами без медалей. В бою расстреливает все снаряды, нанося 70 урона и застрелив двух врагов, и получая требуемое ранение естественно.
Формула: Random(21 + RangedDamage + 5 * RangedKills - 3 * RangedAttack * Ammo) >= 30
Расчёт: Random(21 + 70 + 5 * 2 - 3 * 10 * 7)=-109, то есть Random(0), всегда меньше 30. Тем не менее при таких данных медаль могут дать. Из чего следует вывод, что где-то здесь присутствует ошибка, которую я никак не могу увидеть.
Мне видится странной эта часть: RangedAttack*Ammo. То есть даже незначительное увеличение одного из этих параметров существенно снижает вероятность получения медали из-за умножения. Логичнее было бы, если бы использовалось текущее значение снарядов, а не общее число перед началом боя, чтобы расстреляв в бою все снаряды, вероятность получения медали была максимальной.