Введение
Зачастую в стратегиях применяют точные значения, чтобы подчеркнуть необходимость точного расчёта. Но как часто такая точность встречается нам в реальной жизни? Никогда. Именно поэтому каждый уважающий себя командир должен учитывать фактор вероятности и уметь её считать.
А каждый уважающий себя модмейкер должен уметь предоставить такую возможность командиру. Эта статья научит Вас основам работы с вероятностью в Starcraft II посредством эффектов, а также раскроет невиданные доселе возможности.
Так вот, в SC2 есть несколько способов получить случайное воздействие на игровое событие:
- триггерный;
- через игровые константы;
- через алгоритмы;
- через урон;
- через случайную задержку;
- через вероятность срабатывания эффекта.
А теперь поподробнее о каждом из них.
Способ 1, триггерный
Для этого используются ф-ии блока "Случайный" из Редактора Триггеров.
Этот способ идеален тогда, когда воздействие на игру не обязательно осуществляется из РД (1). Такая "обходимость" возникает в тех случаях, когда мы используем триггерно созднные способности, или задаём сюжет, но не со стопроцентной вероятностью (например, случайный выбор игрока и т.п.). Однако в случаях, когда создаётся модификация, настоятельно рекомендуется избежать этого способа.
Способ 2, через Игровые Константы
Для этого используются соответствующий тип данных в SC2
Толком этот способ невозможно использовать. Он срабатывает только автоматически, да и самих случайных функций в нём маловато. А на игру воздействуют единицы.
Способ 3, через Алгоритмы
Для этого используются соответствующий тип данных в SC2
Простор этого способа куда выше, но у него есть одно серьёзнейшее ограничение - узкая специализация. Идеален для провешивания критов и уклонений.
Способы 4-5, через Урон и Случайную задержку
Для этого используются Эффект типа Урон (2) и Оружие (мб ещё и Способности) соответственно.
Этот способ обладает самой широкой применимостью, но очень узкой специализацией. Всё, для чего его можно использовать, уже приведены в заголовке.
Способ 6, через вероятность эффекта.
Для этого используется поле "Вероятность", наличествующее у каждого эффекта.
По простору действий уступает разве что триггерному, но зато может быть использован в модификациях. Обладает огромнейшим недостатком - за раз можно рассматривать только один случай (см. далее). Именно о нём будет сия статья.
Первый уровень вероятности.
Самый простой уровень, первый, определяет, сработал ли эффект или нет. И ничего более. Да, за одним эффектом может стоять сотня, но на данном уровне нет обратной связи. Иначе говоря, вот оно:
if (rnd.GetNext(0, 1) <= RandomValue && Validators()) Effect();
Никаких пунктов "иначе".
Простой пример. Не всегда ранящее оружие.
Сделаем так, чтобы Винтовка Гаусса наносила 10, а не 6 ед. урона, но только в 75% случаев. Иначе оружие не попадает или не ранит.
Для этого:
- Возьмём эффект "Морпех - Винтовка Гаусса (урон)" и заменим:
- Количество на 10 ед.
- Вероятность на 0.75.
Пример посложнее. Починка.
Создадим спелл, который бьёт с определённой вероятностью, например "Починка".
Суть спелла:
Суть спелла:
- Если у цели прочность больше или равна 80%, то чинит всегда.
- При [60%; 80%) чинит с вероятностью 80%.
- При [40%; 60%) чинит с вероятностью 60%.
- При [20%; 40%) чинит с вероятностью 40%.
- При [0; 20%) чинит с вероятностью 20%.
Для этого нам понадобятся:
- 1 способность.
- 5 эффектов "Починка" (тип - "Изменить единицу") на +10% хп.
- 4 валидатора на здоровье.
- 1 запускающий эффект типа "Переключить".
Итак, что мы делаем:
- Создаём способность (можно взять базовую)
- Id обозначим ##id##
- Создём 1 эффект-"Модификация (Изменить единицу)".
- Ставим ему Id вида ##id##.
- Пишем суффикс - уровень 1.
- Ставим "Модфикация - Здоровье - Доля" - 0.1
- Копипастим 4 раза.
- Изменяем Id на ##id##1
- В скопипастенных заменяем суффикс.
- Там же заменяем вероятность согласно уровням (базовое значение вероятности - 1, поэтому в первом можно не менять). Верятность задётся десятичной дробью. 1% = 0.01, 100% = 1
- Создаём валидатор типа "Единица - Сравнение основных показателей".
- Ставим ему Id вида ##id##.
- Пишем суффикс - уровень 1.
- Ставим "Здоровье" - 1.
- Тип сравнения меняем на "доля" и "больше или равно".
- Копипастим 3 раза.
- Изменяем Id на ##id##1.
- В скопипастенных заменяем суффикс.
- Прописываем значения для проверки.
- Создаём эффект типа "Переключить".
- Ставим ему Id в ##id##.
- Заполняем поле "Случаи":
a. Добавляем случай.
b. Ставим ему Эффект - наш эффект 1.
c. Аналогично с валидатором.
d. Повторить ещё 3 раза (вплоть до №4) (можно копипастить!). - Ставим в "Стандарт" наш 5ый эффект.
- Смотрим на абилку и проверяем, что как запускаемый эффект прописан наш "случающий".
Примечания
- РД - здесь и далее - Редактор Данных.
- Поле "Случайный" (англ. Random) эффекта тип "Урон" - это поле задаёт максимальную дополнительную прибавку к урону.
Общее = Значение + (0-Случайный)
Total = Value + (0-Random)
- После третьей части статьи будет выложена карта с воплощёнными примерами.
- В логотипе статьи использована иконка с открытым доступом. Ссылка на источник предоставлена.
Спеллы робят, проверл. Только с автокастом проблемы, но они будут решены.
В данный момент делаю юзабельными абилки из парт 2.
(Там триггеры не всегда робят.)