Форум HeroesWorld-а - Показать сообщение отдельно - Программа по определению удачи/морали в героях 3!
Показать сообщение отдельно
#33
Старый 06.08.2008, 10:12
  #33
^
AlexSpl
 
Аватар для AlexSpl
📖
Регистрация: 07.06.2006
Сообщения: 615
Выставка наград
Регистрация: 07.06.2006
Сообщения: 615
Выставка наград
По умолчанию
Re: [HMM III OFF] Мини-Турнир "For Sale"

О морали в Героях.

Вчера провёл анализ дизассемблированного экзешника hmm2pl.exe (v2.1, Gold от Буки). Вот какие результаты получены:

1) В начале битвы генерируется некоторое псевдослучайное число (зависит, скорее всего, от качественного и количественного состава армии, распределения стеков по слотам и т.п.). Это число не зависит от таймера и хранится в течение битвы по одному и тому же адресу! Далее, оно меняется в процессе битвы, но только в результате арифметических и логических операций (and, or, shl и т.п.). Т. е. если повторять одни и те же ходы (действия), картинка морали будет всегда одной и той же, что позволяет записать "нотацию" партии (подобно шахматам).

2) Если мораль (m) больше нуля, то выпадет она или нет конкретному стеку зависит от условия: mod(R, 24) + 1 <= m, где R - упомянутое псевдослучайное число (узнать можно под отладчиком или с помощью специальных программ). Если это условие выполняется, мораль выпадает, иначе - нет. Механику выпадения "плохой" морали ещё не разбирал.

3) Выводы: а) если отряду не выпала мораль на одной клетке, не выпадет и на всех остальных (и наоборот; при условии, что отряд не атакует; таким образом, гипотеза о "моральных клетках" неверна); б) если мораль выпала/не выпала при атаке, то не важно, с какой клетки эта атака была произведена: мораль будет выпадать/не выпадать и на всех других клетках (здесь число R рассчитывается после ответки); в) атакуя разные стеки противника, получаем разное R и, соответственно, разную мораль.

В тройке, возможно, та же механика. Но R рассчитывается перед боем и ЗАВИСИТ от таймера, но по-прежнему ТОЛЬКО перед боем. Т. е. я хочу сказать, что если у двух игроков окажутся числа R одинаковыми, то как бы они ни подбирали задержки, картинка морали будет также одинаковой.

Хотелось бы узнать Ваше мнение на этот счёт. И контрпримеры (я таковых пока не нашёл).
AlexSpl вне форума
Ответить с цитированием