Changeset - 5bf9665ad67c
[Not reviewed]
Merge preview
12 27 70
Silverwing - 7 years ago 2017-12-25 21:42:26

Merge with default
3 files changed:
atlantis.lua
386
84
Changeset was too big and was cut off... Show full diff anyway
0 comments (0 inline, 0 general)
.hgignore
Show inline comments
 
syntax: glob
 
build/**
atlantis.lua
Show inline comments
 
@@ -10,9 +10,10 @@ global {
 
	
 
	atl_iyh_state = 0;
 
    atl_iyh_learr_spoken = false;
 
    atl_iyh_aikerjarr_spoken = false;
 
	atl_iyh_ryveerr_spoken = false;
 
    atl_iyh2_ryveerr_spoken = false;
 
    atl_iyh2_aikeryarr_spoken = false;
 
    atl_iyh2_aikerjarr_spoken = false;
 
	atl_iyh_shockfish_dead = false;
 
	atl_iyh_shockfish_left = false;
 
	atl_iyh_shockfish_away = 0;
 
@@ -28,13 +29,13 @@ global {
 
	atl_lfc_suspect = nil;
 
	atl_lfc_leroy_spoken = 0;
 
	atl_lfc_goldman_spoken = 0;
 
	atl_lfc_goldman_known = false;
 
	atl_lfc_goldman_exposed = false;
 
	atl_lfc_saboteur_known = false;
 
	atl_lfc_sab_active = false;
 
	atl_lfc_sab_alive = false;
 
    atl_lfc_court_allowed = false;
 
    atl_lfc_leroy_goldman = false;
 
 
	atl_fta_state = 0;
 
    atl_fta_darkstar_debrief = false;
 
	
 
	atl_rep_moreau = 0;
 
	atl_rep_darkstar = 0;
 
@@ -42,6 +43,9 @@ global {
 
	atl_rep_wright = 0;
 
    atl_rep_iraa = 0;
 
    atl_rep_dyp = 0;
 
    
 
    atl_ctt_iraa_refusal = false;
 
    atl_star_map_copied = false;
 
};
 
 
atl_illuminators = obj {
 
@@ -106,11 +110,11 @@ atl_aqua_corridor_b = room {
 
 
atl_entry = lcutscene("atl_entry", "Левиафан, рубка", function(s)
 
    if (ArrayUtils.indexOf(pl.party, "wright") ~= 0) then
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к танственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. Хотя субмарина явно требует большего экипажа, вы неплохо справляетесь вдвое и добираетесь до места назначения. Здесь, на океанском дне вы видите несколько больших металлических и стеклянных куполов, освещенных электрическими огнями. Приблизившись, вы быстро находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, оставляя вас взаперти. ]];
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к таинственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. И хотя подводная лодка явно требует большего экипажа, чем вы с Райтом, вдвоем вы неплохо справляетесь. Добравшись до места назначения, вы обнаруживаете несколько больших металлических и стеклянных куполов, раскинувшихся на океанском дне и освещенных электрическими огнями. Приблизившись, вы находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, отрезая вас от внешнего мира. ]];
 
    else
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к танственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. Управлять субмариной в одиночку нелегкая работа. Вы почти не спите, опасаясь оставлять движение корабль без внимания. К счатью, вы без проблем добираетесь до места назначения. Здесь, на океанском дне вы видите несколько больших металлических и стеклянных куполов, освещенных электрическими огнями. Приблизившись, вы быстро находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, оставляя вас взаперти. ]];
 
        return [[Несколько недель Левиафан полным ходом несется по направлению к таинственной точке, отмеченной на карте. Путешествие происходит спокойно -- могучие машины субмарины уверенно двигают ее вперед. Управлять огромным кораблем в одиночку непросто. Вы почти не спите, опасаясь оставлять движение судна без внимания. Однако, вы без проблем добираетесь до места назначения. Здесь, на океанском дне вы видите несколько больших металлических и стеклянных куполов, освещенных электрическими огнями. Приблизившись, вы быстро находите путь в одно из строений. Как только Левиафан проникает внутрь, массивные ворота закрываются, отрезая вас от внешнего мира. ]];
 
    end;
 
end, "Вы прибыли на Атлантиду", leviathan_wheelhouse);
 
end, "Вы прибыли на Атлантиду. ", leviathan_wheelhouse);
 
 
atl_aqua_leviathan_dock = room {
 
	var {
 
@@ -118,6 +122,10 @@ atl_aqua_leviathan_dock = room {
 
	};
 
	nam = "Атлантида, Аква, гостевой док A";
 
	enter = function(s)
 
        char_learr:accompany(false);
 
        char_radcliffe:accompany(false);
 
        char_anna:accompany(false);
 
        char_wright:accompany(false);
 
		if (not s.visited) then
 
			s.visited = true;
 
			walk(atlantis_intro_dock);
 
@@ -126,6 +134,10 @@ atl_aqua_leviathan_dock = room {
 
			atl_iyh_state = 9;
 
			if (atl_iof_learr_dead) then
 
				walk('iyh_outro_aikerjarr');
 
			elseif atl_iyh_shockfish_dead then
 
                walk('iyh_outro_learr_shockfish_dead');
 
            elseif atl_iyh_entrance_destroyed then
 
				walk('iyh_outro_learr_temple_destroyed');
 
			else
 
				walk('iyh_outro_learr');
 
			end;
 
@@ -134,6 +146,7 @@ atl_aqua_leviathan_dock = room {
 
	dsc = [[Просторное помещение, предназнавенное для размещения субмарин, прибывающих на станцию. В настоящий момент в этом доке расположен Левиафан. Под потолком, на высоте примерно в пять метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Снизу, под водой, огромный люк закрывает доступ внутрь дока. Несколько легких подвижных мостиков находятся на поверхности воды. ]];
 
	view = [[Левиафан находится в просторном доке. Под потолком на высоте пяти метров укреплены балки, по которым могут перемещаться крюки подъемных кранов. Внизу расположен закрытый люк, закрывающий вам путь наружу. ]];
 
	way = {
 
        kh_vroom("В Левиафан", "leviathan_airlock");   
 
		kh_vroom("В коридор B", "atl_aqua_corridor_b");
 
	};
 
}; 
 
@@ -185,8 +198,12 @@ atl_aqua_main_corridor = room {
 
			return false;
 
		end);
 
		kh_vroom("На склад B", function()
 
            if atl_nih_state == 1 or atl_nih_state == 2 then
 
                return "atl_aqua_warehouse_b";
 
            else
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
			return false;
 
            end;
 
		end);
 
		kh_vroom("На склад C", function()
 
			pr("Люк наглухо задраен. Вы не сможете его открыть. ");
 
@@ -206,6 +223,37 @@ atl_aqua_main_corridor = room {
 
	};
 
};
 
 
atl_aqua_warehouse_b = darkroom {
 
    var {
 
        has_light = false;
 
    };
 
    nam = "Атлантида, Аква, склад B";
 
    dsc_dark = [[Большое помещение без окон погружено в кромешный мрак. В темноте вы с трудом различаете очертания предметов. ]];
 
    dsc_halflit = [[Слабый свет лампы позволяет вам с трудом ориентироваться в помещении,заставленном различными ящиками. ]];
 
    dsc_lit = [[Большое помещение без окон освещено яркими лектрическим лампами. По всему помещению аккуратно расставлено множество ящиков с различными материалами, необходимыми для поддержания жизнедеятельности станции. ]];
 
    way = {
 
        kh_vroom("В коридор", "atl_aqua_main_corridor", nil, 2);
 
    };
 
    obj = {
 
        "atl_aqua_warehouse_b_lightswitch";
 
        "atl_nih_tube_container2";
 
    };
 
};
 
 
atl_aqua_warehouse_b_lightswitch = obj {
 
    nam = "atl_aqua_warehouse_b_lightswitch";
 
    dsc = [[Рядом со входом расположен {выключатель}. ]];
 
    seen_level = 2;
 
    act = function(s)
 
        atl_aqua_warehouse_b.has_light = not atl_aqua_warehouse_b.has_light;
 
        if atl_aqua_warehouse_b.has_light then
 
            return [[Вы щелкаете выключателем и яркий свет электрических ламп заливает помещение. ]];
 
        else
 
            return [[Вы щелкаете выключателем и лампы гаснут, погружая помещение в кромешную тьму. ]];
 
        end;
 
    end;
 
};
 
 
atl_intersection = inherit(room, function(v)
 
    v.disp = "Атлантида, межсекционный коридор";
 
    v.dsc = [[Небольшой коридор, соединяющий секции станции, заполнен ярким светом электрических ламп. ]];
 
@@ -235,6 +283,8 @@ atl_intersection = inherit(room, functio
 
    table.insert(v.obj, "atl_illuminator");
 
    table.insert(v.obj, "atl_intersect_phone");
 
    table.insert(v.obj, "atl_intersect_suit");
 
    
 
    return v;
 
end);
 
 
atl_intersection_aqua_dom = atl_intersection {
 
@@ -279,12 +329,21 @@ atl_dom_main_c = room {
 
	nam = "Атлантида, Доминус, центральный зал, центр";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Вы находитесь в центральной части зала, рядом с лифтом, ведущим в Игнис. ]];
 
	way = {
 
		kh_vroom("В лифт", "atl_dom_lift");
 
		kh_vroom("На север", "atl_dom_main_near_aqua");
 
		kh_vroom("На северо-восток", "atl_dom_main_near_adm");
 
		kh_vroom("На юго-восток", "atl_dom_main_se");
 
		kh_vroom("На юго-запад", "atl_dom_main_sw");
 
		kh_vroom("На северо-запад", "atl_dom_main_near_a");
 
		kh_vroom("В лифт", function(s)
 
            if atl_iof_completed then
 
                pr("Лифт не работает. ");
 
                return false;
 
            else      
 
                return "atl_dom_lift";
 
            end;
 
        end);
 
		kh_vroom("К секции Аква", "atl_dom_main_near_aqua");
 
		kh_vroom("К кабинету администратора", "atl_dom_main_near_adm");
 
		kh_vroom("К секции Арктос", "atl_dom_main_near_arctos");
 
        kh_vroom("К секции Терра", "atl_dom_main_near_terra");
 
        kh_vroom("К секции Окулус", "atl_dom_main_near_oculus");
 
        kh_vroom("К секции Луна", "atl_dom_main_near_luna");
 
		kh_vroom("К коридору А", "atl_dom_main_near_a");
 
		
 
	};
 
	obj = {
 
@@ -292,30 +351,6 @@ atl_dom_main_c = room {
 
	};
 
};
 
 
atl_dom_main_sw = room {
 
	nam = "Атлантида, Доминус, центральный зал, юго-запад";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Вы находитесь в юго-западной части секции. ]];
 
	way = {
 
		kh_vroom("К секции Окулус", "atl_dom_main_near_oculus");
 
		kh_vroom("К секции Луна", "atl_dom_main_near_luna");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_a");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_se");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
};
 
 
atl_dom_main_se = room {
 
	nam = "Атлантида, Доминус, центральный зал, юго-восток";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса.Вы находитесь в юго-восточной части секции. ]];
 
	way = {
 
		kh_vroom("К секции Арктос", "atl_dom_main_near_arctos");
 
		kh_vroom("К секции Терра", "atl_dom_main_near_terra");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_sw");
 
		kh_vroom("Против часовой стрелки", "atl_dom_main_near_adm");
 
		kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
};
 
 
atl_dom_main_near_adm = room {
 
	nam = "Атлантида, Доминус, центральный зал, у входа в кабинет администратора";
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в кабинет администратора. ]];
 
@@ -336,7 +371,9 @@ atl_dom_main_near_luna = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса.Рядом с вами находится шлюз, ведущий в секцию "Луна". ]];
 
	way = {
 
		kh_vroom("В секцию \"Луна\"", "atl_intersection_luna_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_sw");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_a");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_oculus");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_panel_near_luna"
 
@@ -348,7 +385,9 @@ atl_dom_main_near_oculus = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Окулус". ]];
 
	way = {
 
		kh_vroom("В секцию \"Окулус\"", "atl_intersection_oculus_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_sw");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_luna");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_terra");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_boxes_near_oculus"
 
@@ -360,7 +399,9 @@ atl_dom_main_near_terra = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Терра". ]];
 
	way = {
 
		kh_vroom("В секцию \"Терра\"", "atl_intersection_terra_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_se");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_oculus");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_arctos");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_boxes_near_terra"
 
@@ -372,7 +413,9 @@ atl_dom_main_near_arctos = room {
 
	dsc = [[Огромный круглый зал освещенный электрическими лампами, установленными на многочисленных колоннах. Стеклянный купол над головой ограждает вас от многотонной громады океанских вод. Над куполом расположен огромный металлический диск секции Игнис, расположенной над центральным залом Доминуса. Рядом с вами находится шлюз, ведущий в секцию "Арктос". ]];
 
	way = {
 
		kh_vroom("В секцию \"Арктос\"", "atl_intersection_arctos_dom");
 
		kh_vroom("Отойти от шлюза", "atl_dom_main_se");
 
		kh_vroom("По часовой стрелке", "atl_dom_main_near_terra");
 
        kh_vroom("Против часовой стрелки", "atl_dom_main_near_adm");
 
        kh_vroom("К центру зала", "atl_dom_main_c");
 
	};
 
	obj = {
 
		"atl_nih_tubes_near_arctos"
 
@@ -495,7 +538,14 @@ atl_arctos_main_corridor = room {
 
	nam = "Атлантида, Арктос, главный коридор";
 
	dsc = [[Узкий длинный коридор c дверьми, ведущими в комнаты персонала, по сторонам. Яркий свет электрических ламп заполняет помещение. ]];
 
	way = {
 
		kh_vroom("В комнату Голдмана", "atl_arctos_goldmans_room");
 
		kh_vroom("В комнату Голдмана", function(s)
 
            if goldman_state == 0 then
 
                return "atl_arctos_goldmans_room";
 
            else
 
                p([[Заперто. ]]);
 
                return false;
 
            end;
 
        end);
 
		kh_vroom("В комнату Джонса", "atl_arctos_jones_room");
 
	 	kh_vroom("В общую комнату", "atl_arctos_common_room");
 
		kh_vroom("В секцию \"Доминус\"", "atl_intersection_arctos_dom");
 
@@ -509,6 +559,9 @@ atl_arctos_main_corridor = room {
 
atl_arctos_goldmans_room = room {
 
	nam = "Атлантида, Арктос, комната";
 
	dsc = [[Небольшая комната, рассчитанная на двух постояльцев. ]];
 
    way = {
 
        kh_vroom("В главный коридор", "atl_arctos_main_corridor");
 
    };
 
	obj = {
 
		"char_goldman"
 
	};
 
@@ -517,6 +570,9 @@ atl_arctos_goldmans_room = room {
 
atl_arctos_jones_room = room {
 
	nam = "Атлантида, Арктос, комната";
 
	dsc = [[Небольшая комната, рассчитанная на двух постояльцев. ]];
 
    way = {
 
        kh_vroom("В главный коридор", "atl_arctos_main_corridor");
 
    };   
 
	obj = {
 
		"char_jones"
 
	};
 
@@ -577,7 +633,8 @@ atl_terra_main_corridor = room {
 
		kh_vroom("В секцию Доминус", "atl_intersection_terra_dom");
 
	};
 
	obj = {
 
		"atl_nih_boxes_terra"
 
        "atl_nih_tube_container";
 
        "atl_nih_boxes_terra";
 
	};
 
};
 
 
@@ -588,6 +645,7 @@ atl_terra_workshop_a = room {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
	obj = {
 
        item_electric_lamp:disable(),
 
		"char_michael_wright"
 
	};
 
};
 
@@ -620,6 +678,9 @@ atl_terra_workshop_d = room {
 
	way = {
 
		kh_vroom("В коридор", "atl_terra_main_corridor");
 
	};
 
    obj = {
 
        "item_dynamo";
 
    };   
 
};
 
 
atl_intersection_oculus_dom = room {
 
@@ -767,7 +828,7 @@ char_darkstar = npc {
 
    };
 
	nam = "Винсент Даркстар";
 
	dsc = function(s)
 
        if (char_darkstar_dlg == 0) then
 
        if (char_darkstar_dlg.state == 0) then
 
            return [[В одном из кресел сидит средних лет {мужчина} с короткими черными волосами. Он одет в строгий деловой костюм черного цвета. Лицо его гладко выбрито. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он ждет ваших дальнейших действий. ]];
 
        else
 
            return [[В одном из кресел сидит {Винсент Даркстар}. Холодный взгляд его черных глаз устремлен на вас. Сложив руки на столе, он ждет ваших дальнейших действий. ]];
 
@@ -861,17 +922,25 @@ char_learr_atlantis = npc {
 
	};
 
	nam = "Леарр";
 
	dsc = function(s)
 
        if (stead.deref(here()) == "atl_oculus_library") then
 
        if stead.deref(here()) == "atl_oculus_library" then
 
            return [[{Леарр} сидит за одним из столов, листая какую-то книгу. ]];
 
        elseif stead.deref(here()) == "atl_oculus_library" then
 
            return [[{Леарр} спокойно стоит рядом с Екатериной Светловой. ]];
 
        else
 
            if (where(char_jack_wright_atlantis) == atl_ignis_hall_a) then
 
            if (stead.deref(where(char_jack_wright_atlantis)) == atl_ignis_hall_a) then
 
                return [[{Леарр} стоит перед иллюминатором и что-то рассказывает ]];
 
            else
 
                return [[{Леарр} стоит перед иллюминатором и смотрит вдаль. ]];
 
            end;
 
        end;
 
	end;
 
	dlg = "char_learr_atlantis_dlg";
 
	dlg = function(s)
 
        if stead.deref(where(s)) == atl_oculus_lab_a then
 
            return "char_svetlova_dlg";
 
        else
 
            return "char_learr_atlantis_dlg";
 
        end;
 
    end;
 
};
 
 
char_aikerjarr = npc {
 
@@ -1042,62 +1111,109 @@ char_jones = npc {
 
	dlg = "char_jones_dlg";
 
};
 
 
atl_nih_tubes_gen = function(nam, dsc)
 
atl_item_tube_spec = obj {
 
    nam = "atl_item_tube_spec";
 
    disp = "Документация по воздуховодам Атлантиды";
 
    inv = [[Внушительной толщины книжка описывает все особенности и случаи применения различных труб в качестве воздуховодов на станции. Пролистав ее, вы узнаете, что всего существует четыре типа соединения, маркируемые соответственно: RT, KT, NF и TQ. Полная маркировка трубы состоит из типа, длины, указываемой в дециметрах и диаметра, указываемого в миллиметрах. Например RT-17-7 означает трубку RT с длиной 17 дециметров и диаметром 7 миллиметров. Согласно документации, трубы каждого типа можно соединять только с трубами такого же типа, однако на последней странице вы замечаете карандашные пометки: ^При необходимости, можно заменять трубы одного типа на другой с учетом следующих правил: ^KT -> RT -- Диаметр на 1 меньше. ^NF -> KT -- Диаметр на 1 больше. ^TQ -> NF -- Диаметр на 2 больше. ^Другие замены недопустимы и могут вызвать поломки. ]];
 
};
 
 
atl_nih_tubes_gen = function(nam, dsc, tube_type, tube_len, tube_d)
 
	return obj {
 
		var {
 
			broken = false;
 
			fixed = false;
 
		};
 
        tube_type = tube_type;
 
        tube_len = tube_len;
 
        tube_d = tube_d;
 
		nam = nam;
 
		dsc = dsc;
 
		act = function(s)
 
			if (s.fixed) then
 
				return "Поврежденные трубы замотаны изолентой";
 
                return "Трубы в порядке. ";
 
			elseif (s.broken) then
 
				return "Трубы повреждены и воздух со слабым шипением вырывается из них";
 
                return "Трубы повреждены и воздух со слабым шипением вырывается из них. На трубе имеется маркировка: " .. tube_type .. "-" .. tube_len .. "-" .. tube_d;
 
			else
 
				return "Трубы в порядке";
 
                return "Трубы в порядке. ";
 
			end;
 
		end;
 
		use = function(s, o)
 
			if (o == item_ducttape and s.broken and not s.fixed) then
 
        used = function(s, o)
 
            if s.broken and not s.fixed and o.is_tube and o.l == s.tube_len then
 
                print(s.tube_type, s.tube_d, o.t, o.d);
 
                local f = false;
 
                if o.t == s.tube_type and o.d == s.tube_d then
 
                    remove(o, pl);
 
				s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                elseif s.tube_type == "KT" and o.t == "RT" and o.d + 1 == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
				atl_nih_state = 2;
 
				return [[
 
					Вы заматываете разрыв изолентой. На какое-то время такое решение сгодится. 
 
				]];
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                elseif s.tube_type == "NF" and o.t == "KT" and o.d - 1 == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                elseif s.tube_type == "TQ" and o.t == "NF" and o.d - 2 == s.tube_d then
 
                    remove(o, pl);
 
                    s.fixed = true;
 
                    for i = 1, #nih_tubes_array do
 
                        f = f or (nih_tubes_array[i].broken and not nih_tubes_array[i].fixed);
 
                    end;
 
                    if f then
 
                        atl_nih_state = 2;
 
                    end;
 
                    return "Вы заменяете поврежденный фрагмент трубы. ";
 
                end;
 
			end;
 
		end;
 
	};
 
end;
 
 
atl_nih_tubes_near_aqua = atl_nih_tubes_gen("atl_nih_tubes_near_aqua", [[Рядом со шлюзом из стены выходят несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_aqua = atl_nih_tubes_gen("atl_nih_tubes_near_aqua", [[Рядом со шлюзом из стены выходят несколько {труб}, по которым подается воздух. ]], "RT", 12, 8);
 
 
atl_nih_tubes_near_a = atl_nih_tubes_gen("atl_nih_tubes_near_a", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_a = atl_nih_tubes_gen("atl_nih_tubes_near_a", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "RT", 11, 9);
 
 
atl_nih_tubes_near_admin = atl_nih_tubes_gen("atl_nih_tubes_near_admin", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_admin = atl_nih_tubes_gen("atl_nih_tubes_near_admin", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "RT", 15, 7);
 
 
atl_nih_tubes_near_luna = atl_nih_tubes_gen("atl_nih_tubes_near_luna", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_luna = atl_nih_tubes_gen("atl_nih_tubes_near_luna", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "KT", 12, 6);
 
 
atl_nih_tubes_near_oculus = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_oculus = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]], "NF", 13, 7);
 
 
atl_nih_tubes_near_terra = atl_nih_tubes_gen("atl_nih_tubes_near_oculus", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_terra = atl_nih_tubes_gen("atl_nih_tubes_near_terra", [[Вдоль стены протянуто несколько {труб}, по которым подается воздух. ]], "NF", 15, 9);
 
 
atl_nih_tubes_near_arctos = atl_nih_tubes_gen("atl_nih_tubes_near_arctos", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_near_arctos = atl_nih_tubes_gen("atl_nih_tubes_near_arctos", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "KT", 13, 7);
 
 
atl_nih_tubes_oculus = atl_nih_tubes_gen("atl_nih_tubes_oculus", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_oculus = atl_nih_tubes_gen("atl_nih_tubes_oculus", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "NF", 9, 8);
 
 
atl_nih_tubes_terra = atl_nih_tubes_gen("atl_nih_tubes_terra", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_terra = atl_nih_tubes_gen("atl_nih_tubes_terra", [[За снятой декоративной панелью находятся несколько {труб}, по которым подается воздух. ]], "NF", 12, 6);
 
 
atl_nih_tubes_luna = atl_nih_tubes_gen("atl_nih_tubes_luna", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_luna = atl_nih_tubes_gen("atl_nih_tubes_luna", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "KT", 11, 5);
 
 
atl_nih_tubes_arctos = atl_nih_tubes_gen("atl_nih_tubes_arctos", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_arctos = atl_nih_tubes_gen("atl_nih_tubes_arctos", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "KT", 11, 7);
 
 
atl_nih_tubes_aqua = atl_nih_tubes_gen("atl_nih_tubes_aqua", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_aqua = atl_nih_tubes_gen("atl_nih_tubes_aqua", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "TQ", 11, 7);
 
 
atl_nih_tubes_aqua_a = atl_nih_tubes_gen("atl_nih_tubes_aqua_a", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_aqua_a = atl_nih_tubes_gen("atl_nih_tubes_aqua_a", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "TQ", 14, 4);
 
 
atl_nih_tubes_aqua_b = atl_nih_tubes_gen("atl_nih_tubes_aqua_b", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]]);
 
atl_nih_tubes_aqua_b = atl_nih_tubes_gen("atl_nih_tubes_aqua_b", [[Под потолком протянуто несколько {труб}, по которым подается воздух. ]], "TQ", 10, 5);
 
 
atl_nih_panel_near_a = obscured_obj("atl_nih_panel_near_a", [[Рядом со шлюзом установлена {защитная панель}, за которой скрываются трубы для подачи воздуха. ]], [[Вы снимаете панель, открывая доступ к трубам. ]], "atl_nih_tubes_near_a", true);
 
 
@@ -1114,6 +1230,112 @@ atl_nih_boxes_near_terra = obscured_obj("atl_nih_boxes_near_terra", [[За грудой {ящиков}, вы замечаете несколько труб подачи воздуха. ]], [[Вы сдвигаете несколько ящиков, открывая себе доступ к трубам. ]], "atl_nih_tubes_near_terra", false, [[У стены расположена груда ящиков. ]], [[Вам незачем что-то еще здесь делать. ]]);
 
atl_nih_boxes_terra = obscured_obj("atl_nih_boxes_terra", [[За грудой {ящиков}, вы замечаете несколько труб подачи воздуха. ]], [[Вы сдвигаете несколько ящиков, открывая себе доступ к трубам. 
 
]], "atl_nih_tubes_terra", false, [[У стены расположена груда ящиков. ]], [[Вам незачем что-то еще здесь делать. ]]);
 
 
atl_nih_tube_container = obj {
 
    nam = "atl_nih_tube_container";
 
    dsc = [[Крышка одного из {ящиков} снята и вы видите внутри несколько труб. ]];
 
    act = function (s)
 
        walkin("atl_nih_tube_container_inv");
 
    end;
 
};
 
 
atl_nih_tube_container2 = obj {
 
    nam = "atl_nih_tube_container2";
 
    dsc = [[У одной из стен аккуратно сложены несколько {труб}. ]];
 
    act = function (s)
 
        walkin("atl_nih_tube_container2_inv");
 
    end;
 
};
 
 
tube = function(table)
 
    table.is_tube = true;
 
    table.dsc = "{" .. table.t .. "-" .. table.l .. "-" .. table.d .. "}^";
 
    table.inv = "Труба маркированная " .. table.t .. "-" .. table.l .. "-" .. table.d ;
 
    table.disp = "Труба " .. table.t .. "-" .. table.l .. "-" .. table.d ;
 
    table.tak = "Вы забираете трубу. ";
 
    return obj(table);
 
end;
 
 
tube_rt_12_8 = tube { nam = "tube_rt_12_8"; t = "RT"; l = 12; d = 8; };
 
tube_rt_11_9 = tube { nam = "tube_rt_11_9"; t = "RT"; l = 11; d = 9; };
 
tube_rt_15_7 = tube { nam = "tube_rt_15_7"; t = "RT"; l = 15; d = 7; };
 
tube_rt_12_5 = tube { nam = "tube_rt_12_5"; t = "RT"; l = 12; d = 5; };
 
tube_rt_13_6 = tube { nam = "tube_rt_13_6"; t = "RT"; l = 13; d = 6; };
 
tube_rt_11_4 = tube { nam = "tube_rt_11_4"; t = "RT"; l = 11; d = 4; };
 
tube_rt_11_6 = tube { nam = "tube_rt_11_6"; t = "RT"; l = 11; d = 6; };
 
tube_kt_13_8 = tube { nam = "tube_kt_13_8"; t = "KT"; l = 13; d = 8; };
 
tube_kt_15_10 = tube { nam = "tube_kt_15_10"; t = "KT"; l = 15; d = 10; };
 
tube_kt_9_9 = tube { nam = "tube_kt_9_9"; t = "KT"; l = 9; d = 9; };
 
tube_kt_12_7 = tube { nam = "tube_kt_12_7"; t = "KT"; l = 12; d = 7; };
 
tube_nf_16_7 = tube { nam = "tube_nf_16_7"; t = "NF"; l = 16; d = 7; };
 
tube_nf_11_7 = tube { nam = "tube_nf_11_7"; t = "NF"; l = 11; d = 7; };
 
tube_nf_12_9 = tube { nam = "tube_nf_12_9"; t = "NF"; l = 12; d = 9; };
 
tube_nf_15_7 = tube { nam = "tube_nf_15_7"; t = "NF"; l = 15; d = 7; };
 
tube_rt_12_6 = tube { nam = "tube_rt_12_6"; t = "RT"; l = 12; d = 6; };
 
tubes_terra = {
 
    tube_rt_12_8;
 
    tube_rt_11_9;
 
    tube_rt_15_7;
 
    tube_rt_12_5;
 
    tube_rt_13_6;
 
    tube_rt_11_4;
 
    tube_rt_11_6;
 
    tube_kt_13_8;
 
    tube_kt_15_10;
 
    tube_kt_9_9;
 
    tube_kt_12_7;
 
    tube_nf_16_7;
 
    tube_nf_11_7;
 
    tube_nf_12_9;
 
    tube_nf_15_7;
 
    tube_rt_12_6;
 
};
 
 
atl_nih_tube_container_inv = room {
 
    nam = "atl_nih_tube_container_inv";
 
    disp = "Атлантида, Терра, главный коридор";
 
    dsc = [[В ящике сложены трубы различных диаметров и размеров. Все трубы промаркированы:]];
 
    way = {
 
        kh_vroom("Отойти от ящика", "atl_terra_main_corridor");
 
    };
 
    obj = {
 
        
 
    };
 
};
 
 
tube_nf_14_6 = tube { nam = "tube_nf_14_6"; t = "NF"; l = 14; d = 6; };
 
tube_nf_10_7 = tube { nam = "tube_nf_10_7"; t = "NF"; l = 10; d = 7; };
 
tube_nf_11_9 = tube { nam = "tube_nf_11_9"; t = "NF"; l = 11; d = 9; };
 
tube_nf_14_7 = tube { nam = "tube_nf_14_7"; t = "NF"; l = 14; d = 7; };
 
tube_tq_14_6 = tube { nam = "tube_tq_14_6"; t = "TQ"; l = 14; d = 6; };
 
tube_tq_17_5 = tube { nam = "tube_tq_17_5"; t = "TQ"; l = 17; d = 5; };
 
tube_rt_12_7 = tube { nam = "tube_rt_12_7"; t = "RT"; l = 12; d = 7; };
 
tube_kt_13_9 = tube { nam = "tube_kt_13_9"; t = "KT"; l = 13; d = 9; };
 
 
tubes_aqua = {
 
    tube_nf_14_6;
 
    tube_nf_10_7;
 
    tube_nf_11_9;
 
    tube_nf_14_7;
 
    tube_tq_14_6;
 
    tube_tq_17_5;
 
    tube_rt_12_7;
 
    tube_kt_13_9;
 
};
 
 
atl_nih_tube_container2_inv = room {
 
    nam = "atl_nih_tube_container2_inv";
 
    disp = "Атлантида, Аква, склад B";
 
    dsc = [[У стены сложены трубы различных диаметров и размеров. Все трубы промаркированы:]];
 
    way = {
 
        kh_vroom("Отойти от ящика", "atl_aqua_warehouse_b");
 
    };
 
    obj = {
 
        
 
    };
 
};
 
 
atl_nih_tube_container:disable();
 
atl_nih_tube_container2:disable();
 
atl_nih_tubes_near_aqua:disable();
 
atl_nih_panel_near_a:disable();
 
atl_nih_panel_near_admin:disable();
 
@@ -1129,26 +1351,50 @@ atl_nih_tubes_aqua:disable();
 
atl_nih_tubes_aqua_a:disable();
 
atl_nih_tubes_aqua_b:disable();
 
 
atl_nih_init = function()
 
	atl_nih_state = 1;
 
	local nih_array = {
 
nih_tubes_array = {
 
		atl_nih_tubes_near_aqua,
 
		atl_nih_tubes_near_a,
 
		atl_nih_tubes_near_admin,
 
		atl_nih_tubes_near_luna,
 
		atl_nih_tubes_near_oculus,
 
		atl_nih_tubes_near_terra,
 
    atl_nih_panel_near_a,
 
    atl_nih_panel_near_admin,
 
    atl_nih_panel_near_luna,
 
    atl_nih_boxes_near_oculus,
 
    atl_nih_boxes_near_terra,
 
		atl_nih_tubes_near_arctos,
 
		atl_nih_tubes_oculus,
 
		atl_nih_tubes_terra,
 
    atl_nih_panel_oculus,
 
    atl_nih_boxes_terra,
 
		atl_nih_tubes_luna,
 
		atl_nih_tubes_arctos,
 
		atl_nih_tubes_aqua,
 
		atl_nih_tubes_aqua_a,
 
		atl_nih_tubes_aqua_b
 
    atl_nih_tubes_aqua_b,
 
	};
 
	
 
	local nih_array2 = {
 
nih_array = {
 
    atl_nih_tubes_near_aqua;
 
    atl_nih_tubes_near_a;
 
    atl_nih_tubes_near_admin;
 
    atl_nih_tubes_near_luna;
 
    atl_nih_tubes_near_oculus;
 
    atl_nih_tubes_near_terra;
 
    atl_nih_tubes_near_arctos;
 
    atl_nih_tubes_oculus;
 
    atl_nih_tubes_terra;
 
    atl_nih_tubes_luna;
 
    atl_nih_tubes_arctos;
 
    atl_nih_tubes_aqua;
 
    atl_nih_tubes_aqua_a;
 
    atl_nih_tubes_aqua_b;
 
    atl_nih_panel_near_a;
 
    atl_nih_panel_near_admin;
 
    atl_nih_panel_near_luna;
 
    atl_nih_panel_oculus;
 
    atl_nih_boxes_near_oculus;
 
    atl_nih_boxes_near_terra;
 
    atl_nih_boxes_terra;
 
    atl_nih_tube_container;
 
    atl_nih_tube_container2;
 
};
 
 
nih_array2 = {
 
		atl_nih_tubes_near_aqua,
 
		atl_nih_panel_near_a,
 
		atl_nih_panel_near_admin,
 
@@ -1162,10 +1408,66 @@ atl_nih_init = function()
 
		atl_nih_tubes_arctos,
 
		atl_nih_tubes_aqua,
 
		atl_nih_tubes_aqua_a,
 
		atl_nih_tubes_aqua_b
 
    atl_nih_tubes_aqua_b,
 
    atl_nih_tube_container,
 
    atl_nih_tube_container2,
 
	};
 
	
 
	nih_array[rnd(#nih_array)].broken = true;
 
disable_nih = function()
 
    remove(atl_item_tube_spec, pl);
 
    for i = 1, #nih_array do
 
        nih_array[i]:disable();
 
    end;
 
    
 
    for i = 1, #tubes_terra do
 
        remove(tubes_terra[i], pl);
 
    end;
 
    
 
    for i = 1, #tubes_aqua do
 
        remove(tubes_aqua[i], pl);
 
    end;
 
end;
 
 
function atlantis_init()
 
    print("init atl");
 
    for i = 1, #tubes_terra do
 
        put(tubes_terra[i], atl_nih_tube_container_inv);
 
    end;
 
    
 
    for i = 1, #tubes_aqua do
 
        put(tubes_aqua[i], atl_nih_tube_container2_inv);
 
    end;
 
end;
 
 
atl_nih_init = function()
 
    atl_nih_state = 1;
 
    local nih_array_rt = {
 
        atl_nih_tubes_near_aqua;
 
        atl_nih_tubes_near_a;
 
        atl_nih_tubes_near_admin;
 
    };
 
    local nih_array_kt = {
 
        atl_nih_tubes_near_luna;
 
        atl_nih_tubes_near_arctos;
 
        atl_nih_tubes_luna;
 
        atl_nih_tubes_arctos;
 
    };
 
    local nih_array_nf = {
 
        atl_nih_tubes_near_oculus;
 
        atl_nih_tubes_near_terra;
 
        atl_nih_tubes_oculus;
 
        atl_nih_tubes_terra;
 
    };
 
    local nih_array_tq = {
 
        atl_nih_tubes_aqua;
 
        atl_nih_tubes_aqua_a;
 
        atl_nih_tubes_aqua_b;
 
    };
 
 
    nih_array_rt[rnd(#nih_array_rt)].broken = true;
 
    nih_array_kt[rnd(#nih_array_kt)].broken = true;
 
    nih_array_nf[rnd(#nih_array_nf)].broken = true;
 
    nih_array_tq[rnd(#nih_array_tq)].broken = true;
 
	
 
	for i = 1, #nih_array2 do
 
		nih_array2[i]:enable();
atlantis_catching_the_tail.lua
Show inline comments
 
deleted file

Changeset was too big and was cut off... Show full diff anyway

0 comments (0 inline, 0 general)