Алгоритмы

Задаем вопросы и пишем руководства
Закрыто
Аватара пользователя
phdoc
Администратор
Сообщения: 27202
Зарегистрирован: 29 май 2010, 16:43

Алгоритмы

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

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

1. Определяется базовый урон D_BAS как случайное значение из диапазона от <количество юнитов в стеке * минимальный урон> до <количество юнитов в стеке * максимальный урон>.
2. Определяется модификатор урона MD_BAS, учитывающий разницу между атакой нападающего и защитой цели. На этом этапе применяются все модификаторы атаки (атака в окружении и пр.) и защиты (снижение защиты цели при атаке Бегемотов, свойство Ётунов и комплекта Титана, состояние обороны и пр.).
- Если атака больше защиты, то урон увеличивается на 5% за каждую единицу разности, но не более, чем на 400%.
- Если атака меньше защиты, то урон снижается на 2.5% за каждую единицу разности, но не более, чем до 80%.
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.
R_DMG не может быть выше 90%.
9. Учитывается пенальти за стрельбу на дальнюю дистанцию ( 0.5 ) и сумма модификаторов, увеличивающие урон. Например, "Удар двойной силы" Рыцарей Сметри, "Атака в окружении" у Ётуновых Питомцев.
D = D * ( 1.0 - PENALTY ) * COEFF.
10. Учитывается влияние боевых медалей в достижениях героя, владеющего нападающим отрядом.
11. Учитывается возможная "Ненависть" нападающего к защитнику.
12. Учитывается свойство "Гнев".
13. Учитывается час Силы / час Слабости от Астрологов.
14. Учитываются свойство "Кавалерийский бонус" у нападающего (увеличение урона за каждую пройденную клетку).
15. Учитывается свойство "Глухая оборона" у защитника (снижение урона за каждую пройденную нападающим клетку). Например, от комплекта Ветерана.
16. Учитывается свойство "Уклонение от урона" у защитника (вероятностное снижение урона). Например, у Утонувших.
17. Результирующий урон не может быть меньше 1.
Делитесь и перемножайтесь

Аватара пользователя
phdoc
Администратор
Сообщения: 27202
Зарегистрирован: 29 май 2010, 16:43

Re: Алгоритмы

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

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

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

Аватара пользователя
phdoc
Администратор
Сообщения: 27202
Зарегистрирован: 29 май 2010, 16:43

Re: Алгоритмы

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

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

В ПвЕ битвах:
1. Определяется "Сила армии" героя как сумма общей харизмы всех отрядов в армии и общей харизмы всех призванных в бою юнитов.
2. Определяются "Параметры героя" как сумма всех параметров героя (*), умноженных на индивидуальные коэффициенты.
3. Определяются "Заклинания героя" как Объем маны.
4. Определяется "Коэффициент влияния героя" = ( 1 + 0.010 * "Параметры героя" ) * ( 1 + 0.0038 * "Заклинания героя" ).
5. "ПвЕ сила героя" = "Коэффициент влияния героя" * "Сила армии".


В ПвП битвах:
1. Определяется "Воинский потенциал" героя как сумма общей харизмы всех отрядов в армии и общей харизмы всех призванных в бою юнитов, умноженной на 0.2.
2. Определяется "Магический потенциал" героя, как сумма очков интеллекта всех заклинаний в книге героя в бою.
3. Определяется "Модификатор воинского потенциала" как сумма всех воинских параметров героя (*), умноженных на индивидуальные коэффициенты.
4. Определяется "Модификатор магического потенциала" как сумма всех магических параметров героя (*), умноженных на индивидуальные коэффициенты.
5. Определяется "Сумма дополнительных модификаторов", куда входит всё, влияющее на битву, но неучтённое выше: Обереги, Гранулы и т.п.
6. "ПвП сила героя" = 0.0125 * "Воинский потенциал" * "Модификатор воинского потенциала" + 2.5 * "Магический потенциал" * "Модификатор магического потенциала" + "Сумма дополнительных модификаторов".


* Учитываемые параметры и их коэффициенты.
Воинские параметры:
атака ( 1 )
защита ( 1 )
урон ( 10 )
скорость юнитов ( 15 )
здоровье юнитов ( 3 )
удача ( 5 )
мораль ( 5 )
сопротивление магии ( 0.5 )
расстояние прямого выстрела ( 0.2 )
снижение физического урона ( 0.5 ) *
увеличение физического урона ( 0.5 ) *
снижение магического урона ( 0.5 )

Магические параметры:
сила магии ( 1 )
мана ( 0.05 )
увеличение магического урона ( 0.1 )
Делитесь и перемножайтесь

Аватара пользователя
phdoc
Администратор
Сообщения: 27202
Зарегистрирован: 29 май 2010, 16:43

Re: Алгоритмы

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

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

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

Аватара пользователя
phdoc
Администратор
Сообщения: 27202
Зарегистрирован: 29 май 2010, 16:43

Re: Алгоритмы

Сообщение phdoc » 08 апр 2020, 17:57

Вычисления ПвЕ-рейтинга за битву:

PvERating = CBase * CArmy * CHealth * CExp * CKills * CLevel * EnemyPower / HeroPower, где

CBase - общий коэффициент, зависящий от типа и места битвы.
для приключений - 3.0
для ПвЕ-турниров - 2.0
для осад - 4.0
для походов - 3.0
для битв на Арене - 0.5
для парных битв - 1.1

CArmy - коэффициент армии. Определяется как ( харизма армии / харизма героя ).

CHealth - коэффициент здоровья армии. Определяется как ( ( общее количество юнитов в армии героя - количество погибших юнитов на начало битвы ) / общее количество юнитов в армии героя ).

CExp - коэффициент опыта. Определяется как ( опыт, полученный героем ) / ( общий опыт команды )

CKills - коэффициент убийств. Определяется как ( харизма убитых героем войск соперника / общая харизма армии соперника )

CLevel - коэффициент уровня. Определяется как ( 1 / кубический корень( уровень героя ) ).

EnemyPower - ПвЕ-сила противника.

HeroPower - ПвЕ-сила героя.
Делитесь и перемножайтесь

Закрыто