daemon_n, только навыков. Поведение ИИ случайное при перезагрузке, в том плане, что ГСЧ не сохраняется. Урон от заклинаний и сопротивление тоже.
Berserker, поведении ии не случайное. Достаточно просто загружать автосейв, и ии всегда будет повторять свой ход
Про заклинания - я имел в виду их расположение в гильдии магов - они предопределены из главного сида, как и навыки при повышении уровня.
А что касается урона заклинаний, так он вообще не зависит от рандома, а зависит от базовых параметров и модификаторов.
Сопротивление и физ урон в бою тоже повторяются, если ходы человеком всегда те же.
Даже герои в таверну те же приходят после перезагрузки. В общем, отличаются лишь результаты быстрой битвы (не авто, а именно квик, на q, потому что там ломаются оригинальные механики игры). То же касается и быстрой битвы без отображения поля боя.
В общем, в идеале, конечно, было бы прицепиться к текущему сиду карты, и от него уже делать все VR:R; а кто хочет хаоса, пусть использует VR:T.
К слову, те функции, которые я переписал, имели VR:R. Я лишь добавил сброс генератора при вызове данной функции, исходя из координатов объекта, контрольного числа клетки (+1, если объект можно использовать повторно) и случайной "константы" от старта карты. Возможно, позднее добавлю ещё и тип/подтип посещаемого объекта, просто потому что могу)
И тем не менее я подумаю об опции "сохраняемых значений".
Только, скорее всего, она будет противоположной твоей идеи : "случайные значения при перезагрузке", потому что показательная опция "книга заклинаний", где игрок просто за 1-n перезагрузок роляет себе все самые крутые заклинания. Дд, Армагеддон, ТП - мол, "а чё"?
Quote:Сопротивление и физ урон в бою тоже повторяются, если ходы человеком всегда те же.
Нет. Чистый рандом.
Quote:Достаточно просто загружать автосейв, и ии всегда будет повторять свой ход
По моей памяти не всегда. Нужно проверять с Debug.Rng=1, будет ли RSeed при старте хода ИИ. Скорее всего, нет.
Quote:В общем, в идеале, конечно, было бы прицепиться к текущему сиду карты, и от него уже делать все VR:R; а кто хочет хаоса, пусть использует VR:T.
Это не идеал. Случайные события должны быть случайными. И все вызовы random() в игре являются случайными. Состояние генератора намеренно не сохраняется в сейве. Только для отдельных элементов вроде навыков и заклинаний в городах, а также препятствий в бою сделаны исключения по понятным причинам.
Скажем так, если что-то логически должно генерировать на старте карты — это одно. Если что-то генерируется в процессе посещения объекта — это другое.
В героях ничего не генерируется при посещении объекта.
Хорошо, постараюсь вечером проверить, если не упаду без сил

А я за то, чтобы как можно больше значений генерировались при создании карты. Иначе игра "заставляет" перероливать через save/load в процессе игры. Если возможно, то сделать это опциональным для любителей выбить лучшее.
Добавлю свое
важное мнение: ходы ИИ могут быть разными) замечал несколько раз.
При чем мне это сильно запомнилось из-за того, что при ходе ИИ игра вылетала. При 3-4 загрузке, ИИ пошел в совсем другую сторону, тем самым спас партию от вылета... еще на несколько ходов

)
Всё потому, что состояние ГСЧ никогда не сохранялось в файле сохранения. И не должно было. Точно также случайный ресурс в начале недели не привязан к чему-либо. И случайное событие колодца не должно. Либо должно зависеть в том числе от текущего дня. Имхо, игровой день + соль/секретный ключ/параметр карты = достаточно для псевдослучайного результата.
Nevemor,
Berserker, вот вы и попались
Всё верно! Чтобы ход изменился, надо самому сделать иные действия после загрузки, и тогда и только тогда меняется поведение ИИ.
Достаточно, порой, сделать лишнюю покупку/постройку, новое движение.
И совсем не обязательно делать это в пределах видимости ИИ. Тут как с поведением в бою: иные ходы - иной разброс на урон и морали.
Да того, как заниматься сборкой, я ведь и поиграть немало успел

Berserker, что касается ресурса пруда и, как ни странно героя в таверне, тут спорить не буду случайные (ну, наверно, недельный сброс я смогу простить), но объясните же мне, почему же заклинания в книжке заклинаний, ловля в колодце и смена заклинаний в шрайнах за мифрил должны быть так нещадно обузофильными?

Потому что они никакого логического объяснения детерминированности для таких процессов нет. Тут именно что случайное значение, как бросок кубика в ролевой игре. Не нужно пытаться каждый вызов random() привязывать к чему-либо.
Berserker, я сделаю отдельной опцией, окей.
"И включу её по умолчанию

"
заодно скопирую вопрсо из дискорда:
Quote: тут проблем с плагином и скриптами оказалась - плагин на отображение мифрила обнулял очки передвижения, если я использовал
Code:
Era::y[1] = P_Game->GetPlayerID();
Era::ExecErmCmd("OW:Ry1/7/?y2");
это странно, так что временно закостылил на y66
есть ли возможность иначе получить число мифрила игрока, чтобы не использовать erm++?
А когда срабатывает указанный код? Кто его вызывает?
Berserker, при обновлении экрана и строки ресурсов - я вызываю
Code:
_PI->WriteLoHook(0x403F00, OnResourceBarDlgUpdate);
_PI->WriteLoHook(0x417380, OnResourceBarDlgUpdate);
Обновление ERA 3 Лаунчер-издания:
v2.49 (08.02.2022)
Список изменений:
[#] исправлено обнуление очков передвижения героя с опцией "Удвоенное число очков передвижения";
[#] Обелиски не предлагали использовать заклинание;
[#] иные мелкие исправления, но все ждали именно первый фикс

Ну тогда понятно. Ты прикинь, портишь y[1] во время вызова UN:R2.
Это если ты в обработчике события работаешь, то там y-переменные уже сохранены Эрой и можно кодить что угодно. А в произвольном хуке, активируемом ЕРМ командами портить память нельзя.
Решение простое → вернуть значение y[1], которое было до этого после выполнения команды.