LINUX.ORG.RU

История изменений

Исправление crutch_master, (текущая версия) :

Так сейчас оно примерно так и есть

Ну как...

room {
	nam = 'main';
	noparser = false;
	OnError = function(s)
		mp:clear()
		std.pclr()
	end;
	title = "{$fmt y,40%}{$fmt c|Внимание}";
	dsc = [[{$fmt y,60%}{$fmt c|В этой игре вам придётся вводить фразы с помощью клавиатуры.^
Если вы согласны, наберите "да" и нажмите <ввод>.}]];
	before_Default = function(s)
		mp:clear()
		me():need_scene(true)
	end;
	before_No = function(s)
		s.noparser = true
		p [[До свидания!]]
	end;
	before_Yes = function(s)
		fading.set {"fadeblack", max = FADE_LONG }
		game:reaction(false)
		walk 'маячная комната 0'
	end;
	hint_verbs_only = { "#Yes", "#No" };
}:attr 'noprompt'
Все эти onError, $fmt, тригерры с колбеками. Они нафиг не нужны, каждый раз каждому их писать. Такие понятия укатать бы в объекты движка и задокументировать.
room {
	-"шлюз,модул*,отсек*";
	nam = 'шлюз';
	examined = false;
	onenter = function(s)
		dark_theme()
	end;
	before_Exam = function(s, w)
		if w ~= pl or here().examined then
			return false
		end
		_'скафандр':before_Exam()
	end;
	out_to = 'люк';
	in_to = function(s)
		p [[Ты собрался изучить окрестности базы, а не возвращаться на базу.]]
	end;
	dsc = function(s)
		if s:once() then
			pn [[Итак, первые две недели на Марсе подошли к концу. Все это время экипаж трудился не покладая рук, собирая модули из запчастей, которые были доставлены грузовым автоматическим кораблем до прибытия миссии.^^
Марс оказался именно таким каким он и должен был быть -- безжизненным и недружелюбным, обдуваемыми ураганными ветрами из разреженного воздуха, наполненного проклятой марсианской пылью.
И все-таки, желающих отправиться сюда было достаточно.^]]
		end
		p [[Ты стоишь в шлюзовом отсеке жилого модуля и готовишься выйти наружу, чтобы сделать небольшую вылазку и изучить окрестности базы.]];
	end;
}
Тут как бы описание, но всё равно кода много, который можно просто засунуть в реализацию самой локации, которую перевести к общему виду. И описывать уже всякие входы/выходы, обстановку и что сделать/написать при каком-то действии, причём это делать не колбеком на яп, а именно описывать на языке близком к естественному. Например:
{
...
    комнаты : {
        шлюз : {
            выход : {через : люк, на : двор}
            люк : {это : дверь, открытые : рычагом}
            рычаг : {это : кнопка}
        }
    }
...
    сообщения : {
        перемещения : {
            "шлюз-двор" : {
                впервые : "......",
                "второй день" : "......",
                "третий день, ровер починен" : "....."
                 //ключи - набор триггеров
            }
    }
...
}
etc
Это - валидный js, но можно поменять на json или сварить json из чего-то более читаемого и толерантного к ошибкам.

Исходная версия crutch_master, :

Так сейчас оно примерно так и есть

Ну как...

room {
	nam = 'main';
	noparser = false;
	OnError = function(s)
		mp:clear()
		std.pclr()
	end;
	title = "{$fmt y,40%}{$fmt c|Внимание}";
	dsc = [[{$fmt y,60%}{$fmt c|В этой игре вам придётся вводить фразы с помощью клавиатуры.^
Если вы согласны, наберите "да" и нажмите <ввод>.}]];
	before_Default = function(s)
		mp:clear()
		me():need_scene(true)
	end;
	before_No = function(s)
		s.noparser = true
		p [[До свидания!]]
	end;
	before_Yes = function(s)
		fading.set {"fadeblack", max = FADE_LONG }
		game:reaction(false)
		walk 'маячная комната 0'
	end;
	hint_verbs_only = { "#Yes", "#No" };
}:attr 'noprompt'
Все эти onError, $fmt, тригерры с колбеками. Они нафиг не нужны, каждый раз каждому их писать. Такие понятия укатать бы в объекты движка и задокументировать.
room {
	-"шлюз,модул*,отсек*";
	nam = 'шлюз';
	examined = false;
	onenter = function(s)
		dark_theme()
	end;
	before_Exam = function(s, w)
		if w ~= pl or here().examined then
			return false
		end
		_'скафандр':before_Exam()
	end;
	out_to = 'люк';
	in_to = function(s)
		p [[Ты собрался изучить окрестности базы, а не возвращаться на базу.]]
	end;
	dsc = function(s)
		if s:once() then
			pn [[Итак, первые две недели на Марсе подошли к концу. Все это время экипаж трудился не покладая рук, собирая модули из запчастей, которые были доставлены грузовым автоматическим кораблем до прибытия миссии.^^
Марс оказался именно таким каким он и должен был быть -- безжизненным и недружелюбным, обдуваемыми ураганными ветрами из разреженного воздуха, наполненного проклятой марсианской пылью.
И все-таки, желающих отправиться сюда было достаточно.^]]
		end
		p [[Ты стоишь в шлюзовом отсеке жилого модуля и готовишься выйти наружу, чтобы сделать небольшую вылазку и изучить окрестности базы.]];
	end;
}
Тут как бы описание, но всё равно кода много, который можно просто засунуть в реализацию самой локации, которую перевести к общему виду. И описывать уже всякие входы/выходы, обстановку и что сделать/написать при каком-то действии, причём это делать не колбеком на яп, а именно описывать на языке близком к естественному. Например:
{
...
    комнаты : {
        шлюз : {
            выход : {через : люк, на : двор}
            люк : {это : дверь, открытые : рычагом}
            рычаг : {это : кнопка}
        }
    }
...
    сообщения : {
        перемещения : {
            "шлюз-двор" : {
                впервые : "......",
                "второй день" : "......",
                "третий день, ровер починен" : "....."
                 //ключи - набор триггеров
            }
    }
...
}
etc
Json можно поменять на что-то своё или более читаемое.