diff --git a/engineering.lua b/engineering.lua new file mode 100644 --- /dev/null +++ b/engineering.lua @@ -0,0 +1,123 @@ +first_city_engineering_door = obj { + nam = "first_city_engineering_door"; + dsc = function(s) + if (first_city_engineering.open) then + return [[]]; + else + return [[{Двери}, ведущие в зал обслуживания заблокированы. ]]; + end; + end; +}; + +first_city_engineering_door_inside = obj { + nam = "first_city_engineering_door_inside"; +}; + +first_city_engineering = room { + nam = "first_city_engineering"; + disp = "Лсэрианотр, зал обслуживания"; + dsc = [[ + Вы находитесь в одном из залов обслуживания Лсэрианотра. Двери в помещение заблокированы и разблокировать их не представляется возможным. + ]]; + entered = function(s) + service_tunnels.position = "24"; + end; + obj = { + "first_city_door_control", + "first_city_door_control_cardreader", + "item_keys" + }; + way = { + kh_vroom("В сервиcный тоннель", "service_tunnels"); + }; +}; + +item_keys = obj { + nam = "item_keys"; + disp = "Ключи"; + dsc = "На столе лежат несколько {металлических пластин}. "; + act = function(s) + take(item_middle_rim_key); + take(item_airlock_key); + take(item_engineering_key); + take(item_blank_key); + disable(s); + return "Вы берете пластины себе"; + end; +}; + +--TODO (публичная демо-версия) сделать картинки ключей +--TODO (приватная демо-версия) сделать случайную генерацию ключей + +item_airlock_key = obj { + nam = "item_airlock_key"; + disp = "Ключ-карта"; + inv = [[Небольшая металлическая пластина около 6 см в ширину и 10 см в длину. На ней нет никаких символов, кроме трех цилиндров заключенных в квадрат. ]]; +}; + +item_middle_rim_key = obj { + nam = "item_middle_rim_key"; + disp = "Ключ-карта с отверстиями"; + inv = [[Небольшая металлическая пластина около 3 см в ширину и 10 см в длину, на ней в ряд через равные промежутки присутствуют отверстия или нарисованные круги: круг, отверстие, круг, отверстие, круг, отверстие, отверстие, круг ]]; -- 01010110 = 172 +}; + +item_engineering_key = obj { + nam = "item_engineering_key"; + disp = "Ключ-карта с отверстиями"; + inv = [[Небольшая металлическая пластина около 3 см в ширину и 10 см в длину, на ней в ряд через равные промежутки присутствуют отверстия или нарисованные круги: круг, отверстие, круг, круг, отверстие, круг, круг, круг ]]; -- 01001000 = 144 +}; + +item_blank_key = obj { + nam = "item_blank_key"; + disp = "Ключ-карта без отверстий"; + inv = [[Небольшая металлическая пластина около 3 см в ширину и 10 см в длину с восемью кругами, нарисованными на ней в ряд ]]; -- 00000000 = 0 +}; + +first_city_door_control_cardreader = obj { + nam = "first_city_door_control_cardreader"; + state = 0; + dsc = function(s) + if (s.state == 0 or s.state == 2) then + return "В терминале вы видите небольшую {щель}, около 3 сантиметров шириной."; + else + return "В терминале вы видите небольшую {щель}, около 3 сантиметров шириной. В ней застряла одна из ключ-карт"; + end; + end; + act = function(s) + if (s.state == 0 or s.state == 2) then + return "Очевидно, сюда что-то вставляется. "; + else + return "Ключ-карта застряла. Вы не сможете вытащить ее руками. "; + end; + end; + used = function(s, o) + if (s.state == 0) then + if (o == item_middle_rim_key) then + s.state = s.state + 1; + remove(item_middle_rim_key, pl); + first_city_middle_south.open(first_city_middle_south); + return "Аппарат начинает считывать карту. Вы слышите громкий щелчок. Вы слышите откуда-то издалека звук открывающихся огромных ворот. Карта остается в разъеме. "; + elseif (o == item_engineering_key) then + s.state = s.state + 1; + remove(item_engineering_key, pl); + return "Аппарат начинает считывать карту. Вы слышите громкий щелчок. Двери в комнату слегка приоткрываются. После чего с громким стуком захлопываются. Карта остается в разъеме. "; + elseif (o == item_blank_key) then + s.state = s.state + 1; + remove(item_blank_key, pl); + return "Аппарат начинает считывать карту. Вы слышите громкий щелчок. Карта остается в разъеме. "; + else + return "Это сюда не подойдет"; + end; + elseif (s.state == 1 and o == item_umbrella) then + s.state = 0; + return "Острым наконечником зонта вы поддеваете ключ и вытягиваете его из разъема. К сожалению, он более непригоден к использованию - вы видите, что он погнут"; + else + return "Прежде чем вставлять что-то еще, нужно извлечь ключ. "; + end; + end; +}; + +first_city_door_control = obj { + nam = "first_city_door_control"; + dsc = "Возле одной из стен стоит терминал."; +}; \ No newline at end of file