Changeset - dc842165a771
[Not reviewed]
default
0 1 0
Silverwing - 7 years ago 2017-11-26 15:19:50

Learr in iof now properly faints in any situation
1 file changed with 2 insertions and 1 deletions:
0 comments (0 inline, 0 general)
atlantis_ignis_on_fire.lua
Show inline comments
 
@@ -108,388 +108,389 @@ dlg_learr_suit = dlg {
 
	disp = "Леарр";
 
	entered = function(s)
 
		s.state = true;
 
		return [[Леарр вопросительно смотрит на вас. ]];
 
	end;
 
	phr = {
 
		{"Я хочу, чтобы ты одела скафандр. ", [[Леарр недоуменно смотрит на вас: "Ззачем он мне? Ссама-я в-воде-дышшу. Мне не-нужжны вашши-пррисспоссобления". ]], code [[
 
			psub('tag1');
 
		]]};
 
		{"Мы сейчас наденем скафандры. Продолжай следовать за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{tag="tag1"};
 
		{"Не спорь, полезай внутрь. ", [[Леарр все еще не понимает: "Я в-этой-шштуке-двигатьсся-не-ссмогу". ]], code [[
 
			psub('tag2');
 
		]]};
 
		{"Ладно, обойдемся без этого, просто следуй за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{tag="tag2"};
 
		{"Хорошо. Просто следуй за нами. ", [[Леарр молча кивает. ]], code [[
 
			back();
 
		]]};
 
		{"Эта штука защитит тебя от жара. И тебе будет легче дышать, пока мы не выбрались. ", [[Леарр кивает: "Хорошо. Я по-вашему-сделаю". Вы помогаете навьярессе забраться в скафандр и надеваете на нее шлем. ]], code [[
 
			atl_iof_time_state.learr_safe = true;
 
			back();
 
		]]};
 
	};
 
};
 
 
dlg_learr_iof = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	entered = [[Леарр подбегает к вам и спрашивает: "Что происходит?" ]];
 
	phr = {
 
		{'Надеюсь, все в порядке, следуй за мной. ', [[Леарр молча кивает. ]], code [[
 
			lifeon('char_learr_iof');
 
			char_learr_iof.state = 1;
 
			walk('atl_iof_ignis_hall_a');
 
		]]};
 
		{'Такое уже происходило? ', [[Леарр пожимает плечами: "Я не-видела". ]]};
 
	};
 
};
 
 
atl_iof_intro = room {
 
	nam = "Атлантида, Игнис, зал А";
 
	disp = "Атлантида, Игнис, зал А";
 
	dsc = [[Внезапно свет в зале гаснет и вы оказываетесь в полной темноте. Вскоре вы начинаете ощущать запах дыма, проникающего из вентиляционных отверстий. Леарр кажется очень удивленной. В темноте вы видите слабое свечение цветных полос, бегущих по ее головным плавникам: пурпурная, зеленая, серая, -- тонкая, едва заметная, голубая, зеленая, ярко-розовая, снова серая -- на этот раз заметно толще, оранжевая, желтая, желто-зеленая и снова оранжевая. Цвета сменяют друг-друга за несколько мгновений и вы с трудом успеваете различить их все.]];
 
	obj = {
 
		vobj('Продолжить','{Продолжить}', 'dlg_learr_iof');
 
	};
 
};
 
 
atl_iof_ignis_hall_a = room {
 
	var {
 
		ready = false;
 
	};
 
	nam = "Атлантида, Игнис, зал А";
 
	disp = "Атлантида, Игнис, зал А";
 
	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;
 
 
		end;
 
	end;
 
	obj = {
 
		'char_learr_iof'
 
	};
 
	way = {
 
		vroom("В коридор",'atl_iof_main_n3');
 
	};
 
};
 
 
atl_iof_blocked_by_fire = function() 
 
	pr("Огонь преграждает вам путь");
 
	return false;
 
end;
 
 
atl_iof_blocked_by_rubble = function() 
 
	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;
 
	};
 
	life = function(s)
 
		if (not where(pl).iof or where(pl).no_limits) then
 
			return;
 
		end;
 
        
 
		s.life_left = s.life_left - 1;
 
		if (s.life_left == 5) then
 
			if (not s.pl_safe) then 
 
				pr("Вы чувствуете жар");
 
			end;
 
		elseif (s.life_left == 4) then
 
			if (s.wright_here and not s.pl_safe and where(char_wright_iof) == where(pl)) then 
 
				pr("Джек утирает пот со лба");
 
			end;
 
		elseif (s.life_left == 3) then
 
			if (not s.learr_safe) then
 
				pr("Леарр тяжело дышит");
 
			end;
 
		elseif (s.life_left == 2) then
 
			if (not s.pl_safe) then 
 
				pr("Вам трудно дышать, жар становится нестерпимым");
 
			end;
 
		elseif (s.life_left == 1) then
 
			if (s.wright_here and not s.pl_safe and where(char_wright_iof) == where(pl)) then 
 
				pr("Джек с трудом следует за вами");
 
			end;
 
		elseif (s.life_left == 0) then
 
			if (not s.learr_safe) then
 
				pr("Леарр едва передвигает ногами");
 
			end;
 
		else
 
			lifeoff(s);
 
			lifeoff(char_learr_iof);
 
			if (not s.pl_safe) then
 
				walkin("game_over_ignis");
 
			elseif (not s.learr_safe) then
 
                if (s.wright_here) then
 
                    walkin("atl_iof_learr_faint_wright");
 
                else
 
                    walkin("atl_iof_learr_faint_alone");
 
                end;
 
            end;
 
		end;
 
	end;
 
};
 
 
atl_iof_learr_faint_alone_2 = dlg {
 
    nam = "Леарр";
 
    disp = "Леарр";
 
    dsc = [[Леарр лежит на полу без сознания. ]];
 
    phr = {
 
        {"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], 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_alone = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". ]];
 
	phr = {
 
		{"Совсем немного осталось, пойдем. [Помочь Леарр подняться]", [[Леарр пытается подняться опираясь на вашу руку, но снова падает, теряя сознание. ]], code [[
 
			psub('faint');
 
		]]};
 
		{"Оставайся здесь, я вернусь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
			back();
 
		]]};
 
		{"Оставайся здесь. ", [[Леарр теряет сознание, обессилев. ]], code [[
 
			char_learr_iof.faint = true;
 
			back();
 
		]]};
 
		{"[Взять Леарр на руки]", [[Леарр теряет сознание, обессилев. Вы берете навьярессу на руки. Она весит не больше обычного человека. Вы вполне в состоянии донести ее до выхода. ]], 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 [[ 
 
			remove(char_learr_iof, where(char_learr_iof));
 
			put(char_learr_faint, pl);
 
			lifeon(char_learr_faint);
 
            char_learr_iof.faint = true;         
 
			atl_iof_time_state.carry_learr = true; 
 
			back();
 
		]]};
 
		{"[Уйти]", "", code [[ back(); ]]};
 
		{"[Уйти]", "", code [[ char_learr_iof.faint = true; back(); ]]};
 
	};
 
};
 
 
atl_iof_learr_faint_wright = dlg {
 
	nam = "Леарр";
 
	disp = "Леарр";
 
	dsc = [[Леарр медленно опускается на пол. Сквозь скафандр вы с трудом различаете ее голос: "Я не-могу-идти". Райт подходит к ней и пытается помочь ей подняться. ]];
 
	phr = {
 
		{"Все в порядке?", [[По радио вы слышите голос Райта: "Да, я помогу ей. Идем". Джек аккуратно берет Леарр на руки и идет к вам. ]], 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 = [[Едва вы оказываетесь в главном зале, Джек Райт спрашивает: _"У вас все в порядке? Здесь все в огне. Здесь недалеко должно быть служебное помещение со скафандрами. Нам следует добраться до туда. Без них мы до выхода не дотянем"_. ]];
 
	phr = {
 
		{"А лифт?", [[Джек отрицательно качает головой: _"Без скафандров мы туда не попадем. К тому же, он наверняка отключен"_. ]]};
 
		{"Ты знаешь куда идти?", [[Джек неуверенно пожал плечами: _"Насколько я помню, совсем рядом если идти по часовой стрелке вдоль стены зала"_. ]], code [[
 
			psub('next');
 
		]]};
 
		{tag = "next"};
 
		{"Идем", [[Джек молча кивает. ]], code [[
 
			lifeon('char_wright_iof');
 
			back();
 
		]]};
 
	};
 
};
 
 
atl_iof_main_n3 = room {
 
	var {
 
		ready = false;
 
	};
 
	nam = "Атлантида, Игнис, главный зал, вход в зал А";
 
	disp = "Атлантида, Игнис, главный зал, вход в зал А";
 
	iof = true;
 
	dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северной части зала у самого его края. ]];
 
	enter = function(s) 
 
		if (not s.ready) then
 
			s.ready = true;
 
			if (ArrayUtils.indexOf(pl.party, 'wright') ~= 0) then
 
				if (where(char_wright_iof) ~= s) then
 
					walkin("atl_iof_wright_dlg");
 
				end;
 
			end;
 
		else
 
			lifeon(atl_iof_time_state);
 
		end;
 
	end;
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_nw3");
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", "atl_iof_main_n2");
 
		kh_vroom("В зал А", "atl_iof_ignis_hall_a");
 
	};
 
};
 
 
atl_iof_main_n2 = room {
 
	nam = "Атлантида, Игнис, главный зал, север";
 
	disp = "Атлантида, Игнис, главный зал, север";
 
	iof = true;
 
 dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северной части зала. ]];   
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", "atl_iof_main_ne2");
 
		kh_vroom("К центру", atl_iof_blocked_by_rubble);
 
		kh_vroom("К краю", "atl_iof_main_n3");
 
	};
 
};
 
 
atl_iof_main_n1 = room {
 
	nam = "Атлантида, Игнис, главный зал, север, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, север, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к северу от лифта. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_nw1");
 
		kh_vroom("По часовой", "atl_iof_main_ne1");
 
		kh_vroom("В Лифт", function()
 
			pr("Лифт не работает");
 
			return false;
 
		end);
 
		kh_vroom("К краю", atl_iof_blocked_by_rubble);
 
	};
 
};
 
 
atl_iof_main_ne3 = room {
 
	nam = "Атлантида, Игнис, главный зал, вход в служебное помещение";
 
	disp = "Атлантида, Игнис, главный зал, вход в служебное помещение";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северо-восточной части зала у самого его края. Рядом с вами расположен вход в служебное помещение. ]];   
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", "atl_iof_main_se3");
 
		kh_vroom("К центру", "atl_iof_main_ne2");
 
		kh_vroom("В служебное помещение", "atl_iof_ignis_service_room");
 
	};
 
};
 
 
atl_iof_main_ne2 = room {
 
	nam = "Атлантида, Игнис, главный зал, северовосток";
 
	disp = "Атлантида, Игнис, главный зал, северовосток";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в северо-восточной части зала. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_n2");
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", atl_iof_blocked_by_rubble);
 
		kh_vroom("К краю", "atl_iof_main_ne3");
 
	};
 
};
 
 
atl_iof_main_ne1 = room {
 
	nam = "Атлантида, Игнис, главный зал, северовосток, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, северовосток, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к северо-востоку от лифта. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_n1");
 
		kh_vroom("По часовой", "atl_iof_main_se1");
 
		kh_vroom("К краю", atl_iof_blocked_by_rubble);
 
	};
 
};
 
 
atl_iof_main_se3 = room {
 
	nam = "Атлантида, Игнис, главный зал, вход в зал B";
 
	disp = "Атлантида, Игнис, главный зал, вход в зал B";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в юго-восточной части зала у самого его края. ]];   
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_ne3");
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К центру", atl_iof_blocked_by_fire);
 
		kh_vroom("В зал B", function()
 
			pr("Дверь заклинило");
 
			return false;
 
		end);
 
	};
 
};
 
 
atl_iof_main_se2 = room {
 
	nam = "Атлантида, Игнис, главный зал, юговосточная часть";
 
	disp = "Атлантида, Игнис, главный зал, юговосточная часть";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в юго-восточной части зала. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("К центру", "atl_iof_main_se1");
 
		kh_vroom("К краю", atl_iof_blocked_by_fire);
 
	};
 
};
 
 
atl_iof_main_se1 = room {
 
	nam = "Атлантида, Игнис, главный зал, юговосточная часть, у лифта";
 
	disp = "Атлантида, Игнис, главный зал, юговосточная часть, у лифта";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь к юго-востоку от лифта. ]];      
 
	way = {
 
		kh_vroom("Против часовой", "atl_iof_main_ne1");
 
		kh_vroom("По часовой", "atl_iof_main_s1");
 
		kh_vroom("К краю", "atl_iof_main_se2");
 
	};
 
};
 
 
atl_iof_main_s3 = room {
 
	nam = "Атлантида, Игнис, главный зал, экстренный выход";
 
	disp = "Атлантида, Игнис, главный зал, экстренный выход";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в южной части зала у самого его края. Рядом с вами расположен шлюз экстренного выхода. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К центру", "atl_iof_main_s2");
 
		kh_vroom("Выход", "atl_iof_outside");
 
	};
 
};
 
 
atl_iof_main_s2 = room {
 
	nam = "Атлантида, Игнис, главный зал, южная часть";
 
	disp = "Атлантида, Игнис, главный зал, южная часть";
 
	iof = true;
 
    dsc = [[Огромный круглый зал охвачен пожаром. Освещение не работает. Множество стеллажей расположеныпо всему залу. Часть их пылает, другие обрушились, блокируя проходы. Клубы черного дыма заволакивают все вокруг. Вы находитесь в южной части зала. ]];      
 
	way = {
 
		kh_vroom("Против часовой", atl_iof_blocked_by_fire);
 
		kh_vroom("По часовой", atl_iof_blocked_by_rubble);
 
		kh_vroom("К центру", "atl_iof_main_s1");
 
		kh_vroom("К краю", "atl_iof_main_s3");
0 comments (0 inline, 0 general)