Changeset - a1f4d4cbf1bd
[Not reviewed]
default
0 3 0
Silverwing - 8 years ago 2017-04-13 17:47:55

Progress on iof rewrite
3 files changed with 61 insertions and 117 deletions:
0 comments (0 inline, 0 general)
atlantis_ignis_on_fire.lua
Show inline comments
 
@@ -24,202 +24,158 @@ atlantis_learr_first_dlg = dlg {
 
		{tag="drake"};
 
		{"Да, я его сын. Ты знакома с ним?", [[оттенок головных плавников Леарр становится более ярким и смещается ближе к зеленому. Она отвечает: _"Да, я его-ззнаю. Уильям-Дррейк нашшу-иссторрию-иззучал. Он ссейчасс-исскать-уехал Lse'ry'anot'rr. Я что-вы-зздессь рада"_. ]], code [[ psub('follow_drake') ]]};
 
		{tag="follow_drake"};
 
		{"Я здесь из-за него. " , [[Леарр кивает: _"Я вам-как-смогу-помогу. Я в-Игниссе-буду, ессли вы говоррить-хотите"_. Леарр уходит, а вы остаетесь один в коридоре. ]], code [[ put(char_learr_atlantis, atl_ignis_hall_a); walk("atl_oculus_main_corridor"); ]]};
 
	};
 
};
 
 
char_wright_iof = obj {
 
	nam = "Джек Райт";
 
	dsc = function(s) 
 
		if (atl_iof_time_state.pl_safe) then
 
			if (atl_iof_time_state.carry_learr) then
 
				return [[
 
					{Джек Райт} облачен в скафандр и ждет ваших указаний. Леарр бессильно лежит на его руках.  
 
				]];
 
				return [[{Джек Райт} облачен в скафандр и ждет ваших указаний. Леарр бессильно лежит на его руках. ]];
 
			else
 
				return [[
 
					{Джек Райт} облачен в скафандр и ждет ваших указаний.
 
				]];
 
				return [[{Джек Райт} облачен в скафандр и ждет ваших указаний. ]];
 
			end;
 
		else
 
			if (atl_iof_time_state.life_left > 3) then
 
				return [[
 
					{Джек Райт} ждет ваших указаний. 
 
				]];
 
				return [[{Джек Райт} ждет ваших указаний. ]];
 
			else
 
				return [[
 
					{Джек Райт} с трудом стоит на ногах. 
 
				]];
 
				return [[{Джек Райт} с трудом стоит на ногах. ]];
 
			end;
 
		end;
 
	end;
 
	life = function(s)
 
		if (where(s) ~= where(pl) and where(pl).iof) then
 
			move(s, where(pl));
 
		end;
 
	end;
 
	act = function(s)
 
		return [[
 
			Некогда разговаривать. 
 
		]];
 
	end;
 
};
 
 
char_learr_faint = obj {
 
	nam = "Леарр";
 
	inv = [[
 
		На руках вы держите Леарр. Она дышит очень слабо. Вам нужно поторопиться, если вы не хотите, чтобы она умерла. 
 
	]];
 
	inv = [[На руках вы держите Леарр. Она дышит очень слабо. Вам нужно поторопиться, если вы не хотите, чтобы она умерла. ]];
 
	life = function(s)
 
		if (rnd(12) > 11) then
 
			pr("Вы чувствуете слабое дыхание Леарр");
 
			pr([[Вы чувствуете слабое дыхание Леарр, лежащей у вас на руках. ]]);
 
		end;
 
	end;
 
};
 
 
char_learr_iof = obj {
 
	var {
 
		faint = false;
 
	};
 
	nam = "Леарр";
 
	dsc = function(s)
 
		if (s.faint) then
 
			return [[
 
				{Леарр} лежит на полу без сознания.
 
			]];
 
			return [[{Леарр} лежит на полу без сознания. ]];
 
		end;
 
		if (atl_iof_time_state.learr_safe) then
 
			return [[
 
				{Леарр} облачена в скафандр и ждет ваших указаний. 
 
			]];
 
			return [[{Леарр} облачена в скафандр и ждет ваших указаний. ]];
 
		else
 
			if (atl_iof_time_state.life_left > 3) then
 
				return [[
 
					{Леарр} ждет ваших указаний. 
 
				]];
 
				return [[{Леарр} ждет ваших указаний. ]];
 
			else
 
				return [[
 
					{Леарр} с трудом стоит на ногах. 
 
				]];
 
				return [[{Леарр} с трудом стоит на ногах. ]];
 
			end;
 
		end;
 
	end;
 
	life = function(s)
 
		if (where(s) ~= where(pl) and where(pl).iof) then
 
			move(s, where(pl));
 
		end;
 
	end;
 
	act = function(s)
 
		if (where(s) == atl_iof_ignis_service_room and not dlg_learr_suit.state) then
 
			walkin('dlg_learr_suit');
 
		elseif (s.faint) then
 
			walkin('atl_iof_learr_faint_alone');
 
		else		
 
			return [[
 
				Некогда разговаривать. 
 
			]];
 
			return [[Некогда разговаривать. ]];
 
		end;
 
	end;
 
};
 
 
dlg_learr_suit = dlg {
 
	var {
 
		state = false;
 
	};
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	entered = function(s)
 
		s.state = true;
 
		return [[
 
			Леарр вопросительно смотрит на вас. 
 
		]];
 
		return [[Леарр вопросительно смотрит на вас. ]];
 
	end;
 
	phr = {
 
		{"Я хочу, чтобы ты одела скафандр.", [[
 
			Леарр недоуменно смотрит на вас: "Зачем он мне? Сама-я в-воде-дышу. Мне не-нужны ваши-приспособления".
 
		]], code [[
 
		{"Я хочу, чтобы ты одела скафандр. ", [[Леарр недоуменно смотрит на вас: "Ззачем он мне? Ссама-я в-воде-дышшу. Мне не-нужжны вашши-пррисспоссобления". ]], code [[
 
			psub('tag1');
 
		]]};
 
		{"Мы сейчас оденем скафандры. Продолжай следовать за нами.", [[
 
			Леарр кивает: "Я недолго-продержусь. Я что-смогу-сделаю". 
 
		]], code [[
 
		{"Мы сейчас наденем скафандры. Продолжай следовать за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{tag="tag1"};
 
		{"Не спорь, полезай внутрь.", [[
 
			Леарр недовольно скалит зубы: "Хевьяр не-указывай-мне".
 
		]], code [[
 
		{"Не спорь, полезай внутрь. ", [[Леарр все еще не понимает: "Я в-этой-шштуке-двигатьсся-не-ссмогу". ]], code [[
 
			psub('tag2');
 
		]]};
 
		{"Ладно, обойдемся без этого, просто следуй за нами.", [[
 
			Леарр кивает: "Я недолго-продержусь. Я что-смогу-сделаю". 
 
		]], code [[
 
		{"Ладно, обойдемся без этого, просто следуй за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{tag="tag2"};
 
		{"Не хочешь не надо. Просто следуй за нами.", [[
 
			Леарр молча кивает. 
 
		]], code [[
 
		{"Хорошо Просто следуй за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{"Эта штука защитит тебя от жара. И тебе будет легче дышать, пока мы не выбрались", [[
 
			Леарр кивает: "Хорошо. Я по-вашему-сделаю". Вы помогаете ей забраться в скафандр и одеваете шлем. 
 
		]], code [[
 
		{"Эта штука защитит тебя от жара. И тебе будет легче дышать, пока мы не выбрались. ", [[Леарр кивает: "Хорошо. Я по-вашему-сделаю". Вы помогаете навьярессе забраться в скафандр и надеваете на нее шлем. ]], code [[
 
			atl_iof_time_state.learr_safe = true;
 
			back();
 
		]]};
 
	};
 
};
 
 
dlg_learr_iof = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	entered = [[
 
		Леарр подбегает к вам и спрашивает: "Что происходит?"
 
	]];
 
	entered = [[Леарр подбегает к вам и спрашивает: "Что происходит?" ]];
 
	phr = {
 
		{'Надеюсь, все в порядке, следуй за мной', [[
 
			Леарр кивает: "Хорошо".
 
		]], code [[
 
		{'Надеюсь, все в порядке, следуй за мной', [[Леарр молча кивает. ]], code [[
 
			lifeon('char_learr_iof');
 
			char_learr_iof.state = 1;
 
			walk('atl_iof_ignis_hall_a');
 
		]]};
 
		{'Такое уже происходило?', [[
 
			Леарр пожимает плечами: "Я не-видела".
 
		]]};
 
		{'Такое уже происходило?', [[Леарр пожимает плечами: "Я не-видела". ]]};
 
	};
 
};
 
 
atl_iof_intro = room {
 
	nam = "Атлантида, Игнис, зал А";
 
	disp = "Атлантида, Игнис, зал А";
 
	dsc = [[
 
		Внезапно свет в зале гаснет и вы оказываетесь в полной темноте. Вскоре вы начинаете ощущать запах дыма, проникающего из вентиляционных отверстий. Леарр кажется очень удивленной. В темноте вы видите слабое свечение цветных полос, бегущих по ее головным плавникам:  _"**Что происходит?**"_.
 
	]];
 
	dsc = [[Внезапно свет в зале гаснет и вы оказываетесь в полной темноте. Вскоре вы начинаете ощущать запах дыма, проникающего из вентиляционных отверстий. Леарр кажется очень удивленной. В темноте вы видите слабое свечение цветных полос, бегущих по ее головным плавникам: пурпурная, зеленая, серая, -- тонкая, едва заметная, голубая, зеленая, ярко-розовая, снова серая -- на этот раз заметно толще, оранжевая, желтая, желто-зеленая и снова оранжевая. Цвета сменяют друг-друга за несколько мгновений и вы с трудом успеваете различить их все.]];
 
	obj = {
 
		vobj('Продолжить','{Продолжить}', 'dlg_learr_iof');
 
	};
 
};
 
 
atl_iof_ignis_hall_a = room {
 
	var {
 
		ready = false;
 
	};
 
	nam = "Атлантида, Игнис, зал А";
 
	disp = "Атлантида, Игнис, зал А";
 
	dsc = [[
 
		Средних размеров прямоугольный зал. Из вентиляционных отверстий выплывают тонкие струйки дыма. 
 
	]];
 
	dsc = [[Средних размеров прямоугольный зал. Из вентиляционных отверстий выплывают тонкие струйки дыма. ]];
 
	entered = function(s)
 
		if (not s.ready) then
 
			s.ready = true;
 
			lifeon('char_learr_iof');
 
			if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
				atl_iof_time_state.wright_here = true;
 
				if (where(char_jack_wright_atlantis) == atlantis_ignis_hall_a) then
 
					lifeon('char_wright_iof');
 
				end;
 
			else
 
				atl_iof_time_state.wright_here = false;
 
			end;
 
@@ -231,25 +187,25 @@ atl_iof_ignis_hall_a = room {
 
	};
 
	way = {
 
		vroom("В коридор",'atl_iof_main_n3');
 
	};
 
};
 
 
atl_iof_blocked_by_fire = function() 
 
	pr("Огонь преграждает вам путь");
 
	return false;
 
end;
 
 
atl_iof_blocked_by_rubble = function() 
 
	pr("Обломки преграждают вам путь");
 
	pr("Обломки обрушившихся стеллажей преграждают вам путь");
 
	return false;
 
end;
 
 
atl_iof_time_state = obj {
 
	nam = 'atl_iof_time_state';
 
	var {
 
		life_left = 6;
 
		pl_safe = false;
 
		learr_safe = false;
 
		wright_here = false;
 
		carry_learr = false;
 
	};
 
@@ -290,104 +246,80 @@ atl_iof_time_state = obj {
 
			elseif (s.wright_here) then
 
				walkin("atl_iof_learr_faint_wright");
 
			else
 
				walkin("atl_iof_learr_faint_alone");
 
			end;
 
		end;
 
	end;
 
};
 
 
atl_iof_learr_faint_alone = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[
 
		Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-дальше-идти". 
 
	]];
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". ]];
 
	phr = {
 
		{"Совсем немного осталось, пойдем. [Помочь Леарр подняться]", [[
 
			Леарр пытается подняться опираясь на вашу руку, но снова падает. Она без сознания.
 
		]], code [[
 
		{"Совсем немного осталось, пойдем. [Помочь Леарр подняться]", [[Леарр пытается подняться опираясь на вашу руку, но снова падает, теряя сознание. ]], code [[
 
			tag('faint');
 
		]]};
 
		{"Оставайся здесь, я вернусь. ", [[
 
			Леарр теряет сознание, обессилев.
 
		]], code [[
 
		{"Оставайся здесь, я вернусь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
			back();
 
		]]};
 
		{"Оставайся здесь. ", [[
 
			Леарр теряет сознание, обессилев.
 
		]], code [[
 
		{"Оставайся здесь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
			back();
 
		]]};
 
		{"[Взять Леарр на руки]", [[
 
			Леарр теряет сознание, обессилев. Леарр весит не больше обычного человека. Вы берете ее на руки и продолжаете движение. 
 
		]], code [[ 
 
		{"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], code [[ 
 
			remove(char_learr_iof, where(char_learr_iof));
 
			put(char_learr_faint, pl);
 
			lifeon(char_learr_faint);
 
			atl_iof_time_state.carry_learr = true;
 
			back(); 
 
		]]};
 
		{tag='faint'};
 
		{"[Взять Леарр на руки]", [[
 
			Леарр весит не больше обычного человека. Вы берете ее на руки и продолжаете движение. 
 
		]], code [[ 
 
		{"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], code [[ 
 
			remove(char_learr_iof, where(char_learr_iof));
 
			put(char_learr_faint, pl);
 
			lifeon(char_learr_faint);
 
			atl_iof_time_state.carry_learr = true; 
 
			back(); 
 
		]]};
 
		{"[Уйти]", "", code [[ back(); ]]};
 
	};
 
};
 
 
atl_iof_learr_faint_wright = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[
 
		Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-дальше-идти". Райт подходит к ней и пытается помочь ей подняться. 
 
	]];
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". Райт подходит к ней и пытается помочь ей подняться. ]];
 
	phr = {
 
		{"Все в порядке?", [[
 
			По радио вы слышите голос Райта: "Да, я помогу ей. Идем". Джек аккуратно берет Леарр на руки и идет к вам. 
 
		]], code [[ 
 
		{"Все в порядке?", [[По радио вы слышите голос Райта: "Да, я помогу ей. Идем". Джек аккуратно берет Леарр на руки и идет к вам. ]], code [[ 
 
			remove(char_learr_iof, where(char_learr_iof));
 
			atl_iof_time_state.carry_learr = true;
 
			back();
 
		]]};
 
	};
 
};
 
 
atl_iof_wright_dlg = dlg {
 
	nam = "Джек Райт";
 
	disp = "Джек Райт";
 
	entered = [[
 
		Едва вы оказываетесь в главном зале, к вам подбегает Джек Райт: _"У вас все в порядке? Здесь все рушится. Здесь недалеко должно быть служебное помещение со скафандрами. Нам следует добраться до туда"_.
 
	]];
 
	entered = [[Едва вы оказываетесь в главном зале, Джек Райт спрашивает: _"У вас все в порядке? Здесь все в огне. Здесь недалеко должно быть служебное помещение со скафандрами. Нам следует добраться до туда. Без них мы до выхода не дотянем"_. ]];
 
	phr = {
 
		{"А лифт?", [[
 
			Джек отрицательно качает головой: _"Я не смог добраться до него"_.
 
		]]};
 
		{"Ты знаешь куда идти?", [[
 
			Джек неуверенно пожал плечами: _"Насколько я помню, совсем рядом если идти по часовой стрелке вдоль стены зала"_.
 
		]], code [[
 
		{"А лифт?", [[Джек отрицательно качает головой: _"Без скафандров мы туда не попадем. К тому же, он наверняка отключен"_. ]]};
 
		{"Ты знаешь куда идти?", [[Джек неуверенно пожал плечами: _"Насколько я помню, совсем рядом если идти по часовой стрелке вдоль стены зала"_. ]], code [[
 
			psub('next');
 
		]]};
 
		{tag = "next"};
 
		{"Следуй за нами", [[
 
			Джек молча кивает.
 
		]], code [[
 
		{"Идем", [[Джек молча кивает. ]], code [[
 
			lifeon('char_wright_iof');
 
			back();
 
		]]};
 
	};
 
};
 
 
atl_iof_main_n3 = room {
 
	var {
 
		ready = false;
 
	};
 
	nam = "Атлантида, Игнис, главный зал, вход в зал А";
 
	disp = "Атлантида, Игнис, главный зал, вход в зал А";
main.lua
Show inline comments
 
@@ -169,25 +169,25 @@ function init()
 
        table.insert(dt_code, nums[index]);
 
        table.remove(nums, index);
 
    end;
 
    nums = {1,2,3,4,5,6};
 
    for i = 1, 3 do 
 
        local index = rnd(#nums);
 
        table.insert(dt_buttons, nums[index]);
 
        table.remove(nums, index);
 
    end;
 
	---game init
 
	pl.where = intro;
 
	---debug	
 
    pl.where = "atlantis_intro_dock";
 
    --pl.where = "atlantis_intro_dock";
 
    
 
    ---leviathan
 
    --pl.where = "leviathan_airlock";
 
    --submarine_leviathan.airpump = false;
 
    
 
    --leviathan_airlock.has_light = true;
 
    --leviathan_wardroom.has_light = true;
 
    --leviathan_wheelhouse.has_light = true;
 
    --leviathan_corridor.has_light = true;
 
    --leviathan_cabin_1.has_light = true;
 
    --leviathan_cabin_2.has_light = true;
 
    --leviathan_cabin_3.has_light = true;
travel.lua
Show inline comments
 
@@ -5,24 +5,36 @@
 
char_coachman = obj {
 
	nam = "coachman";
 
	disp = "экипаж";
 
	dsc = [[Неподалеку от вас стоит небольшая двухколесная {повозка} с впряженной лошадью. ]];
 
	act = function(s)
 
		walkin "coachman_dlg";
 
	end;
 
	used = function(s, o)
 
		walkin "coachman_dlg";
 
	end;
 
};
 
 
coachman_responses_ok = {
 
    [[Кэбмен приглашает вас: "Садитесь!". ]],
 
    [[Вы садитесь в повозку и благополучно добираетесь до цели. ]],
 
    [[Вы оплачиваете проезд и садитесь в повозку. ]],
 
};
 
 
coachman_responses_fail = {
 
    [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
    [[Кэбмен разочарованно протянул: "Нет денег -- нет поездки". ]];
 
    [[Кэбмен разочарованно протянул: "Сначала оплатите проезд". ]];
 
};
 
 
coachman_dlg = dlg {
 
	nam = "coachman_dlg";
 
	disp = "Кэбмен";
 
	dsc = [[Вы подходите к повозке и кэбмен спрашивает вас: _"Куда поедем?"_]];
 
	hideinv = true;
 
	entered = function(s)
 
		poff(1, 2, 3, 4, 5, 6, 7);
 
		if (where(char_coachman) ~= port_street) then
 
			pon(6);
 
		end;
 
		if (where(char_coachman) ~= hotel_street) then
 
			pon(1);
 
@@ -36,79 +48,79 @@ coachman_dlg = dlg {
 
		if (where(char_coachman) ~= warehouse_18_entry and warehouse18_found) then
 
			pon(3);
 
		end;
 
		if (where(char_coachman) ~= warehouse_32_entry and warehouse32_found) then
 
			pon(4);
 
		end;
 
	end;
 
	phr = {
 
		{1, always = true, "В гостиницу (5 монет). ",
 
			function (s)
 
				if (pl:pay(5)) then
 
					walk 'hotel_street';
 
					return "Садитесь!";
 
					return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
				else
 
					back();
 
					return [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
					return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
				end;
 
			end
 
		},
 
		{2, always = true, "К Райту (5 монет). ", 
 
			function (s)
 
				if (pl:pay(5)) then
 
					walk 'wright_house';
 
					return "Садитесь!";
 
					return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
				else
 
					back();
 
					return [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
					return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
				end;
 
			end
 
		},
 
		{3, always = true, "На склад 18 (5 монет). ", 
 
			function (s)
 
				if (pl:pay(5)) then
 
					walk 'warehouse_18_entry';
 
					return "Садитесь!";
 
					return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
				else
 
					back();
 
					return [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
					return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
				end;
 
			end
 
		},
 
		{4,	always = true, "На склад 32 (5 монет). ", 
 
			function (s)
 
				if (pl:pay(5)) then
 
					walk 'warehouse_32_entry';
 
					return "Садитесь!";
 
					return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
				else
 
					back();
 
					return [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
					return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
				end;
 
			end
 
		},
 
		{5, always = true, "К доку 2 (5 монет). ", 
 
			function (s)
 
				if (pl:pay(5)) then
 
					walk 'dock_2';
 
					return "Садитесь!";
 
					return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
				else
 
					back();
 
					return [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
					return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
				end;
 
			end
 
		},
 
		{6, always = true, "В порт (5 монет). ",
 
			function (s)
 
				if (pl:pay(5)) then
 
					walk 'port_street';
 
					return "Садитесь!";
 
					return coachman_responses_ok[rnd(#coachman_responses_ok)];
 
				else
 
					back();
 
					return [[Кэбмен разочарованно протянул: "Бесплатно я никого не вожу". ]];
 
					return coachman_responses_fail[rnd(#coachman_responses_fail)];
 
				end;
 
			end
 
		},
 
		{255, always = true, "Я передумал. ", function(s) 
 
			back()
 
		end}
 
	};
 
};
 
\ No newline at end of file
0 comments (0 inline, 0 general)