Доброго времени суток.
Бьюсь весь вечер сегодня над одной вещью, никак не могу найти нужный кусок кода. Может кто знает, сталкивался и подскажет?
Суть задачи - делаю возможность развиваться без городов, кочуя. Соответственно сеттлеру задана доп.стратеги эксплорер, технологиям добавлен новый флаг "позволяет осваивать города", у плеера и команды выставлены аналогичные флаги, которые инициализятся сброшенными и выставляются при открытии технологии, снят запрет на изучение технологий без городов, добавлена проверка, что нет возможности строить города, чтобы держава не могла выиграть, построив первый город.
В целом функционал работает. Но есть два больших косяка:
1. Сеттлеры АИ стоят на месте и не осваивают территорию, несмотря на добавленную стратегию (но этот блок я уже нашёл, там действительно для сеттлеров нет проверки на ещё какие-то стратегии, поправить можно).
2. Несколько держав упорно убиваются на 22-ом и 23-ем ходу. То есть, просто дисбандят своего единственного юнита. Хотя, есть ещё вариант, что уничтожение идёт откуда-то ещё, не от плэйер-аи. По-крайней мере, я пробовал комментить и писать свои проверки во все функции PlayerAI и UnitAI, вызывающие так или иначе килл юнита. Ничего не помогло. Либо есть процедуры с другим названием и возможно в других классах, делающие то же самое, либо это не АИ их убивает и вообще игра каким-то образом уничтожает державу за что - непонятно.
Симптомы: Сеттлеры упорно стоят на месте до 22 или 23-го хода, если на этот момент они ещё не освоили технологию, позволяющую строительство города, то просто исчезают. Их точно не убивает варвар, зверь или другая держава. Срабатывает это не со всеми, а с некоторыми (почему я и грешу на АИ). Из наблюдаемых мной 8 непостроившихся сеттлеров каждый раз 2-3 оставались живы, остальные исчезали. От лидеров и держав это тоже независит, проверял на одних и тех же и на разных наборах по нескольку раз, результат всегда разный. Кто-то дохнет, но каждый раз разные.
И ещё момент - я заметил, что в CvGame есть некий параметр m_iElapsedGameTurns, который проверяется в некоторых решениях АИ. Причём проверятся на предмет, меньше он 20 или нет. Очень близкое значение к моему, возможно оно как-то тут связано. На 20-ом ходе проверка вернёт фальш, а АИ уничтожает юнита на 21-ом и гибнет на 22-ом (если это действительно уничтожение юнита, а не самой державы).
Если кто знает, где ещё поискать, что убивает саму державу или единственного её юнита, подскажите, буду очень признателен.
С уважением, Волод.



