Алгоритмы

Задаем вопросы и пишем руководства

Алгоритмы

Сообщение phdoc » 29 апр 2013, 14:06

Вычисление физического урона.

1. Определяется базовый урон D_BAS как случайное значение из диапазона от <количество юнитов в стеке * минимальный урон> до <количество юнитов в стеке * максимальный урон>.
2. Определяется модификатор урона MD_BAS, учитывающий разницу между атакой нападающего и защитой цели. На этом этапе применяются все модификаторы атаки (атака в окружении и пр.) и защиты (снижение защиты цели при атаке Бегемотов, свойство Ётунов и комплекта Титана, состояние обороны и пр.).
- Если атака больше защиты, то урон увеличивается на 5% за каждую единицу разности, но не более, чем на 300%.
- Если атака меньше защиты, то урон снижается на 2.5% за каждую единицу разности, но не более, чем до 70%.
3. Определяется модификатор M_OFF вторичных навыков у героя, владеющего атакующим отрядом, повышающих урон. Для контактной атаки это - "Нападение", для стрелковой - "Стрельба". Степень увеличение зависит от уровня владения навыком:
M_OFF = D_BAS * PCT / 100.
4. Определяется модификатор M_DEF снижения урона, зависящий от навыка "Доспехи" у героя, владеющего защищающимся отрядом. Степень снижения зависит от уровня владения навыком:
M_DEF = PCT / 100.
5. Учитывается модификатор сработавшего навыка "Удача" M_LUCK.
- В случае выпадения положительной удачи M_LUCK = 1.5
- Для отрицательной удачи M_LUCK = 0.75
- При отсутствии Удачи M_LUCK = 1.0
6. Определяется промежуточный базовый урон
D = ( D_BAS + MD_BAS + M_OFF ) * M_LUCK * ( 1.0 - M_DEF )
7. Учитываются сумма модификаторов, увеличивающих урон (контактный или стрелковый) атакующего отряда (заклинания, свойства артефактов и юнитов)
D = D + D * I_DMG / 100.
8. Учитываются сумма модификаторов, снижающих получаемый урон (контактный или стрелковый) защищающимся отрядом (заклинания, свойства артефактов и юнитов)
D = D - D * R_DMG / 100.
9. Учитывается пенальти за стрельбу на дальнюю дистанцию ( 0.5 ) и сумма модификаторов, увеличивающие урон. Например, "Удар двойной силы" Рыцарей Сметри, "Атака в окружении" у Ётуновых Питомцев.
D = D * ( 1.0 - PENALTY ) * COEFF.
10. Учитывается влияние боевых медалей в достижениях героя, владеющего нападающим отрядом.
11. Учитываются свойство "Кавалерийский бонус" у нападающего (увеличение урона за каждую пройденную клетку).
12. Учитывается свойство "Глухая оборона" у защитника (снижение урона за каждую пройденную нападающим клетку). Например, от комплекта Ветерана.
13. Учитывается свойство "Уклонение от урона" у защитника (вероятностное снижение урона). Например, у Утонувших.
14. Результирующий урон не может быть меньше 1.
Делитесь и перемножайтесь
Аватар пользователя
phdoc
Администратор
 
Сообщений: 18918
Зарегистрирован: 29 май 2010, 17:43

Re: Алгоритмы

Сообщение phdoc » 29 апр 2013, 14:17

Вычисление магического урона.

1. Вычисляется базовое значение урона по формуле из Справки.
2. Учитывается увеличение урона магией соответствующей школы ( от артефактов и пр. ).
3. Учитывается навык "Волшебство".
4. Для ПвЕ учитывается увеличение силы заклинаний урона: +2% за уровень героя.
5. Учитывается влияние магических медалей из достижений героя.
6. Учитывается возможная специализация героя.
7. Учитывается модификатор снижения урона магией соответствующей школы по цели ( заклинания "Защита от магии ...", свойства юнитов и артефактов ).
8. Учитывается свойство "Уклонение от магического урона" у цели (вероятностное снижение урона).
Делитесь и перемножайтесь
Аватар пользователя
phdoc
Администратор
 
Сообщений: 18918
Зарегистрирован: 29 май 2010, 17:43

Re: Алгоритмы

Сообщение phdoc » 26 июн 2018, 16:27

Вычисление "силы героя".

В ПвЕ битвах:
"Сила героя" = "Коэффициент влияния героя" * ( "Сила стартовой армии" + "Сила призванных юнитов" )
В ПвП битвах:
"Сила героя" = "Коэффициент влияния героя" * "Сила стартовой армии" + "Сила призванной армии" / 10

1. "Сила армии" равна суммарной харизме всех соответствующих отрядов.
2. "Коэффициент влияния героя" = ( 1 + "Параметры героя" ) * ( 1 + "Заклинания героя" ),
где
"Параметры героя" = 0.012 * сумма всех параметров героя (кроме стартовых), влияющих на его армию, умноженных на индивидуальные коэффициенты.
Учитываются параметры: атака (1), защита (1), сила магии (1), знания (1), скорость юнитов (3), здоровье юнитов (1), удача (0.5), мораль (0.5), сопротивление магии (0.2), расстояние стрельбы (0.5), снижение физического урона (0.2), увеличение физического урона (0.4), снижение магического урона (0.01), увеличение магического урона (0.05).
"Заклинания героя" = 0.0038 * объём маны / 2.
Делитесь и перемножайтесь
Аватар пользователя
phdoc
Администратор
 
Сообщений: 18918
Зарегистрирован: 29 май 2010, 17:43

Re: Алгоритмы

Сообщение phdoc » 26 июн 2018, 16:29

Вычисление размера динамической армии противника для героя.

1. Определяется базовый коэффициент разброса CBase, как случайное число между 2.3 и 2.7.
2. Вычисляется базовая харизма будущей динамической армии
CPBase = CP / CBase,
где CP - общая харизма героя.
3. Вычисляется базовый случайный коэффициент CRandom, зависящий от уровня героя и лежащий в пределах от 1.5 до 2.0.
4. Определяется коэффициент CRace, зависящий от типа герои и равный сейчас 0.9-1.0.
5. Вычисляется коэффициент влияния параметров героя CParams (алгоритм приведен в Вычислении силы героя, "Параметры героя").
CParams не может быть выше 2.0.
6. Вычисляется коэффициент влияния заклинаний героя
CSpells = 1.0 + 0.0038 * SUMSpells,
где SUMSpells - сумма произведений количества набранных заклинаний на их стоимость в очках интеллекта.
CSpells не может быть выше 2.0.
7. Вычисляется коэффициент влияния истории битв героя с юнитам того типа, из которых будет состоять динамическая армия
CKills = 1.0 + 0.00002 * EXP / 1000,
где EXP - общий опыт, ранее полученный героем за убийство юнитов указанных типов.
CKills не может быть выше 2.0.
8. Вычисляется результирующий коэффициент
CTotal = CRandom * CRace * CParams * CSpells * CKills * CAIHero,
где CAIHero равен 1.0 для армии без ИИ героя, и зависит от уровня героя в противном случае: от 1.5 для 1-7 уровней, до 0.15 для 20+ уровней.
CTotal не может быть выше 5.0 для охоты на Арене и 7.0 для боёв на карте.
9. Вычисляется суммарная харизма будущей динамической армии CPTotal = CPBase * Difficult * CTotal,
где Difficult - уровень сложности, заданный в параметрах (юнитов, объектов на карте, события и т.п.).
10. Полученная суммарная харизма равномерно делится на все стеки будущей динамической армии в зависимости от их персональной харизмы. Округление всегда вверх.
Делитесь и перемножайтесь
Аватар пользователя
phdoc
Администратор
 
Сообщений: 18918
Зарегистрирован: 29 май 2010, 17:43

Вернуться в Учебная комната

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Рейтинг@Mail.ru Яндекс.Метрика Топ Разработка игр