October 24th, 2007

glaz

олд рашшен геймер

Играя в игру "Обитаемый остров. Послесловие" дошел до 15 миссии, где игра гордо на первом же ходе упорно начала сообщать мне, что я проиграл. За неимением под рукой интернета вспомнил молодость и полез внутрь игры. Обнаружил во первых что меняя имена файлам с миссиями можно легко играть их в любом порядке. Поскольку 16-я миссия пошла без проблем, открыл блокнотом файл 15-ой и начал ковыряться. Благодаря довольно очевидным скриптам вычислил строчки отвечающие за поражение и заремил(символом "--") половину из них, с тем чтобы последовательно разремливая вычислить глючную строку. Миссия пошла, но начала выдавать на каждое движение отрядом сообщение Экселенца о том, что у Максима нервный срыв и он расстрелял подводную лодку Островной империи гружеными нашими пленными. После чего уже не составляло труда найти строчку условия поражения в которой проверялось наличие "submarine" и оставить заремленой только её. Это позволило мне прожить в миссии первый ход и позволить скрипту на втором создать "только что прибывший" вражеский флот с теми самыми тремя субмаринами с пленными. То есть подлодки появлялись только на первом ходу противника, а скрипт проверял их наличие каждый ход и естественно сразу отправлял меня в проигрыш. В скрипт проверки (инструкция "IF") было внесено банальное "(Turn>0) and" и всё заработало. Впрочем эту же конструкцию пришлось внести ещё в три места, чтобы Экселенц перестал в нулевой ход материться. После чего играть было уже не интересно, ковыряться в скриптах оказалось прикольнее :)
Схожий эффект был у меня давно-давно, когда я поднимал вторую цивилизацию под win3.11 которую пираты запаковали с длинными именами файлов DOS-овским арджиком съевшим все окончания.