JavaScript is required. Please enable it to continue.
Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
Вячеслав Добранов
<<link "vars">><<checkvars>><</link>> <<link "stats">><<ShowStats>><</link>>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <<script>> //config.ui.stowBarInitially = true; //config.debug = true; config.cleanupWikifierOutput = true; <</script>> <<include "Initialise">> /%<<set $_LOC = $OnWheatField>>%/ <<set $_LOC = $InTheCar>> /%<<set $_TIME = "present">>%/ /%<<set $_PERSON = 3>>%/ <<Pronoun>> /%<<set $Stage = "Stage1">> <<set $Theme = "LightTheme">>%/ <<script>> var date = new Date(); State.variables.InTheCarHourDelta = 23 - date.getHours(); State.variables.InTheCarMinuteDelta = 45 - date.getMinutes(); <</script>> /%:: PassageDone [] <<script>> var date = new Date(); State.variables.InTheCarHours = (date.getHours() + State.variables.InTheCarHourDelta) % 24; State.variables.InTheCarMinutes = date.getMinutes(); <</script>>%/
<<goto "ScreenBuild">> /% 0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35 | | | | | | | | cop 0---------1-----2---|--3-----4-----|--5-----------|--6-----7-----8--9 | | jeep 0---------|-----1---|--------------|--------------|--------------|--2 | | phone 0---------|-------1-|--------------|------------2-|--------------|------------3 | | коп: 0 - коп далеко, различимы только фонарик и дождевик 5 1 - коп скрывается за машинами 3 2 - коп уходит к внедорожнику, чтобы смениться 3 3 - подходит к внедорожнику, залезает внутрь 2 4 - выходит сменщик, идёт к затору 3 5 - сменщик перелезает через заграждение, продолжает обход 5 6 - коп подходит к машине впереди, общается с водителем 2 7 - светя себе фонариком, коп изучает документы, передаёт что-то по рации 2 8 - коп отдаёт документы, направляется к машине гг 1 9 - коп подходит к машине гг, стучит в стекло джип: 0 - джип далеко 8 1 - джип на полпути к гг 18 2 - джип напротив машины гг телефон: 0 - гг сбрасывает звонок 10 1 - гг сбрасывает звонок 10 2 - гг сбрасывает звонок 10 3 - гг сбрасывает звонок 10 4 - гг сбрасывает звонок %/
<<set $player.Name = $_PRONOUN.Nom>> <<set $player.NameG = $_PRONOUN.Gen>> <<set $player.NameD = $_PRONOUN.Dat>> <<set $player.NameA = $_PRONOUN.Acc>> <<set $player.NameI = $_PRONOUN.Ins>> <<set $player.NameP = $_PRONOUN.Pre>> <<set $player.Parent = "InTheCar">> <<set $player.isSightPenetrable = true>> <<set $player.isSoundPenetrable = true>> <<set $player.isSmellPenetrable = true>> <<set $player.isTouchPenetrable = true>> /%<<set $player.Look.Link = "Осмотри себя">>%/ <<set $player.Inventory.Link = "Что с собой?">>
Я повернул к себе зеркало заднего вида. Двухдневная щетина, покрасневшие глаза, синяки. Это давали о себе знать усталость, тревога, сигареты и кофеин. А ведь всё только начиналось. Я вздохнул и отвернул зеркало. <<CurrentViewAdd $rearview>>
<<if $ring.isHidden>> <<set $ring.isHidden = false>> <</if>>
<<set $axe.Name = "топорик">> <<set $axe.NameG = "топорика">> <<set $axe.NameD = "топорику">> <<set $axe.NameA = "топорик">> <<set $axe.NameI = "топориком">> <<set $axe.NameP = "топорике">> <<set $axe.Parent = "NULL">>
Небольшой топорик с пластиковой рукояткой. Незаменимая вещь в путешествии по дикой местности.
<<set $axeLookAct = true>>
Небольшой топорик с пластиковой рукояткой. Незаменимая вещь в путешествии по дикой местности.
<<set $axeLookAfterAct = true>>
<<set $backpack.Name = "рюкзак">> <<set $backpack.NameG = "рюкзака">> <<set $backpack.NameD = "рюкзаку">> <<set $backpack.NameA = "рюкзак">> <<set $backpack.NameI = "рюкзаком">> <<set $backpack.NameP = "рюкзаке">> <<set $backpack.Parent = "NULL">>
Походный армейский рюкзак. Внутри одноместная палатка, спальный мешок, кое-какие инструменты и припасы.
<<set $phone.Name = "телефон">> <<set $phone.NameG = "телефона">> <<set $phone.NameD = "телефону">> <<set $phone.NameA = "телефон">> <<set $phone.NameI = "телефоном">> <<set $phone.NameP = "телефоне">> <<set $phone.Parent = "player">> <<set $phone.isNotable = [0,2,0,0]>> <<set $phone.Drop.Link = "Убрать телефон">>
<<if !$phone.LookedAtScreen>> Я отнял телефон от уха и посмотрел на экран. Заряд полный. Сигнал тоже. Во весь экран — индикация исходящего вызова и фотография жены. <<else>> Я опять посмотрел на экран. На улыбку жены. Только бы дозвониться. <</if>>
<<set $phone.LookedAtScreen = true>>
Только после того, как свяжусь с женой, узнаю, что у них всё в порядке.
Тишина. Я ждал и ждал гудков, которые всё не появлялись.
<<if $InTheCar.Timer % 10 == 9>> В этот момент из <<obj "телефона" $phone>> опять донеслось: «Извините, в данный момент сеть перегружена…» Я сбросил вызов и в очередной раз набрал номер жены. <</if>>
<<set $ring.Name = "кольцо">> <<set $ring.NameG = "кольца">> <<set $ring.NameD = "кольцу">> <<set $ring.NameA = "кольцо">> <<set $ring.NameI = "кольцом">> <<set $ring.NameP = "кольце">> <<set $ring.Sex = "N">> <<set $ring.Parent = "player">> <<set $ring.isHidden = true>> <<set $ring.Drop.Link = "Снять кольцо">>
Обручальное кольцо на безымянном пальце. Внутри была гравировка с именем жены. У неё такая же с моим именем. На юбилей собирались отдать кольца на шлифовку, чтобы вернуть им блеск, как десять лет назад…
Теперь оно так просто уже и не снималось.
<<set $InTheCar.Name = "В машине">> <<set $InTheCarHours = 0>> <<set $InTheCarMinutes = 0>> <<set $InTheCarHourDelta = 0>> <<set $InTheCarMinuteDelta = 0>> <<set $InTheCarTime = "23:45">>
«Извините, в данный момент сеть перегружена. Попробуйте перезвонить позднее».<br> Я в сотый раз сбросил вызов и вновь набрал <<obj "номер" $phone>> жены, глядя на расцвеченную огнями <<obj "пробку" $jam>> за метущимися <<obj "дворниками" $windshield>>.<br> Прошло уже три часа с тех пор, как я съехал с кольцевой, но за это время проехал только половину пути до КПП на выезде из города.<br> «Извините, в данный момент сеть перегружена…» Сбросил, снова набрал.<br> <<CurrentViewAdd $downpour>>
Я стоял в самой левой из четырёх полос, ближе к бетонному заграждению, и наблюдал за <<obj "полицейским" $cop>> в дождевике, который, мелькая фонариком, обходил машины в заторе. Подходил к каждой водительской двери, просил показать документы, освещал салон.<br> С другой стороны ограждения медленно катился военный <<obj "внедорожник" $jeep>>, сопровождавший <<obj "полицейского" $cop>>. <<if $InTheCarTime == "23:45">> <br>Часы на <<obj "передней панели" $dashboard>> показывали без четверти полночь. <<elseif $InTheCarTime == "00:00">> <br>Часы на <<obj "передней панели" $dashboard>> показывали полночь. <</if>>
<<replace "#count">>$InTheCar.Timer<</replace>> <p><<include $phone.Daemon>></p> <<if $cigarette.Parent == "player">> <p><<include $cigarette.Daemon>></p> <</if>> <p><<include $radio.Daemon>></p> <p><<include $cop.Daemon>></p>
<<set $downpour.Name = "дождь">> <<set $downpour.NameG = "дождя">> <<set $downpour.NameD = "дождю">> <<set $downpour.NameA = "дождь">> <<set $downpour.NameI = "дождём">> <<set $downpour.NameP = "дожде">> <<set $downpour.Parent = "InTheCar">> <<set $downpour.isNotable = [0,1,0,0]>>
Дождь лил уже вторые сутки и, кажется, не думал прекращаться. Холодные, тяжёлые струи хлестали всё, до чего могли дотянуться, заставляли трепетать свет уличных фонарей и автомобильные огни.
<<if !$sideglass.isOpen>> Дождь всё стучал по крыше и стёклам машины. Его частое тап-тап-тап почти сливалось в глухой белый шум. <<else>> В открытое боковое <<obj "окно" $sideglass>> врывался громкий белый шум дождя. <</if>>
<<set $windshield.Name = "лобовое стекло">> <<set $windshield.NameG = "лобового стекла">> <<set $windshield.NameD = "лобовому стеклу">> <<set $windshield.NameA = "лобовое стекло">> <<set $windshield.NameI = "лобовым стеклом">> <<set $windshield.NameP = "лобовом стекле">> <<set $windshield.Sex = "N">> <<set $windshield.Parent = "InTheCar">> /%<<set $windshield.isNotable = [1,0,0,0]>>%/ <<set $windshield.isOpen = false>> <<set $windshield.isSightPenetrable = true>> <<set $windshield.isSwitchable = true>> <<set $windshield.isOn = true>> <<set $windshield.SwitchOn.Link = "Включить дворники">> <<set $windshield.SwitchOff.Link = "Выключить дворники">>
<<if $windshield.isOn>> Дворники неистово метались из стороны в сторону и едва справлялись с проливным дождём, заливающим всё вокруг: <<obj "машины" $jam>> беженцев, <<obj "полицейского" $cop>> в дождевике, <<obj "внедорожник" $jeep>> на встречке. <<else>> По стеклу бежали потоки воды, размывая красные и жёлтые огни по ту сторону. <</if>>
<<set $windshield.isSightPenetrable = true>>
Я включил дворники и они, разметав воду, открыли прежнюю картину: <<obj "машины" $jam>> беженцев, <<obj "полицейского" $cop>> в дождевике, <<obj "внедорожник" $jeep>> на встречке.
<<set $windshield.isSightPenetrable = false>>
Я выключил дворники и <<obj "дождь" $downpour>> тут же залил лобовое стекло, скрывая и смазывая мир за ним.
<<set $jam.Name = "пробка">> <<set $jam.NameG = "пробки">> <<set $jam.NameD = "пробке">> <<set $jam.NameA = "пробку">> <<set $jam.NameI = "пробкой">> <<set $jam.NameP = "пробке">> <<set $jam.Sex = "F">> <<set $jam.Parent = "windshield">> <<set $jam.isSightPenetrable = true>>
<<if $jam.Examined == 1>> Вся эта четырёхполосная сторона шоссе была забита автомобилями. Люди бежали из города, стремясь выбраться за границы карантинной зоны. Забивали свои машины скарбом, детьми, престарелыми родителями, кошками-собаками и бежали.<br> Прямо передо мной стоял серебристый кроссовер, на крыше которого среди прочих вещей мок огромный плюшевый <<obj "медведь" $teddy>>, не спускавший с меня взгляда блестящих глаз.<br> Справа стоял синий универсал с семьёй из пяти человек. Даже сквозь шум дождя с той стороны доносились то плач ребёнка, то крики семейной ссоры, то лай собаки. Несколько раз я наблюдал, как водитель выходил с зонтом и выводил собаку в темноту за обочиной. Каждый раз его движения становились всё резче, всё раздражённей. <<else>> Автомобили беженцев занимали все четыре полосы этой стороны шоссе. Все пытались выбраться из карантинной зоны.<br> Прямо передо мной стоял серебристый кроссовер с мокрым плюшевым <<obj "медведем" $teddy>> на крыше.<br> Справа — синий универсал с большой и шумной семьёй. <</if>>
<<set $teddy.Name = "плюшевый медведь">> <<set $teddy.NameG = "плюшевого медведя">> <<set $teddy.NameD = "плюшевому медведю">> <<set $teddy.NameA = "плюшевого медведя">> <<set $teddy.NameI = "плюшевым медведем">> <<set $teddy.NameP = "плюшевом медведе">> <<set $teddy.Parent = "jam">>
Медведь продолжал сверлить меня взглядом своих чёрных пластиковых глаз, как будто ненавидел за то, что из нас двоих только ему приходилось мокнуть под дождём.
<<set $cop.Name = "полицейский">> <<set $cop.NameG = "полицейского">> <<set $cop.NameD = "полицейскому">> <<set $cop.NameA = "полицейского">> <<set $cop.NameI = "полицейским">> <<set $cop.NameP = "полицейском">> <<set $cop.Parent = "windshield">> <<set $cop.isNotable = [1,0,0,0]>> <<set $cop.Timeline = [0,5,8,11,13,16,21,23,25,26]>>
<<if $InTheCar.Timer <= $cop.Timeline[1]>> Полицейский был ещё слишком далеко — из-за дождя я мог различить только его ярко-жёлтый дождевик и мощный фонарик. <<elseif $InTheCar.Timer <= $cop.Timeline[2]>> Самого полицейского я не видел из-за машин, только луч его фонарика мелькал над крышами. <<elseif $InTheCar.Timer <= $cop.Timeline[3]>> Я смотрел как полицейский шёл к внедорожнику, расплёскивая лужи на пустой половине шоссе. Его дождевик блестел в свете фонарей. <<elseif $InTheCar.Timer <= $cop.Timeline[4]>> Полицейского я не видел — он был где-то внутри внедорожника. <<elseif $InTheCar.Timer <= $cop.Timeline[5]>> Другой полицейский пересекал пустую половину шоссе и проверял фонарик, включая-выключая его. <<elseif $InTheCar.Timer <= $cop.Timeline[6]>> Полицейский уже был в паре рядов от меня и я мог различить, что на лице у него белая медицинская маска, а под дождевиком, кажется, оружие. <<elseif $InTheCar.Timer <= $cop.Timeline[7]>> Полицейский стоял у водительской двери серебристого кроссовера, прямо передо мной. Ожидая, когда обитатели кроссовера передадут ему запрошенные документы, он тем временем осматривал их салон. <<elseif $InTheCar.Timer <= $cop.Timeline[8]>> Полицейский стоял у серебристого кроссовера и ожидал ответа по рации, иногда качая головой на вопросы водителя. <<elseif $InTheCar.Timer <= $cop.Timeline[9]>> Полицейский шёл ко мне от серебристого кроссовера. По пути он стянул медицинскую маску, сунул её куда-то под дождевик и, выудив новую, надел. <</if>>
<<switch $InTheCar.Timer>> <<case $cop.Timeline[1]>> <<obj "Полицейский" $cop>>, проверив очередную машину, перешёл к следующей, скрывшись из вида. <<case $cop.Timeline[2]>> <<obj "Полицейский" $cop>> вновь показался в поле зрения. Он подошёл к бетонному ограждению посреди шоссе, перелез через него и направился к поджидавшему его внедорожнику. <<case $cop.Timeline[3]>> <<obj "Полицейский" $cop>> подошёл к внедорожнику, перекинулся парой слов с водителем и, обойдя машину сзади, влез внутрь. <<case $cop.Timeline[4]>> Из внедорожника вылез другой <<obj "полицейский" $cop>>, сменивший первого, накинул капюшон и направился к бетонному ограждению. <<case $cop.Timeline[5]>> <<obj "Полицейский" $cop>> добрался до бетонного ограждения, перелез через него и продолжил обход по прежней схеме. <<case $cop.Timeline[6]>> Жёлтый дождевик <<obj "полицейского" $cop>> показался из-за серебристого кроссовера впереди и подошёл к его водительской двери. Светя фонариком, козырнул, постучал по стеклу и заговорил с водителем. <<case $cop.Timeline[7]>> Из кроссовера протянулась рука и передала <<obj "полицейскому" $cop>> несколько защищённых пластиком бумаг. Тот, светя фонариком, внимательно их изучил и, склонив голову набок, что-то передал по рации. <<case $cop.Timeline[8]>> <<obj "Полицейский" $cop>> склонил голову к рации и, пару раз кивнув, вернул документы водителю кроссовера. Козырнув, попрощался и направился к моей машине. <<case $cop.Timeline[9]>> <<moveobj $cop $sideglass>> <<moveobj $jeep $sideglass>> <<set $cop.isNotable = [4,0,0,0]>> Луч от фонаря скользнул по капоту моей машины и жёлтый дождевик <<obj "полицейского" $cop>> остановился у моей двери. <<if !$sideglass.isOpen>> Он наклонился и аккуратно постучал фонариком по <<obj "боковому стеклу" $sideglass>>. <<set $sideglass.isNotable = [0,3,0,0]>> <<else>> Он наклонился к приоткрытому стеклу:<br> — Добрый вечер. Ваши документы, пожалуйста. <</if>> <</switch>>
<<set $jeep.Name = "внедорожник">> <<set $jeep.NameG = "внедорожника">> <<set $jeep.NameD = "внедорожнику">> <<set $jeep.NameA = "внедорожник">> <<set $jeep.NameI = "внедорожником">> <<set $jeep.NameP = "внедорожнике">> <<set $jeep.Parent = "windshield">> <<set $jeep.Timeline = [0,15,35]>>
<<set $sideglass.Name = "боковое окно">> <<set $sideglass.NameG = "бокового окна">> <<set $sideglass.NameD = "боковому окну">> <<set $sideglass.NameA = "боковое окно">> <<set $sideglass.NameI = "боковым окном">> <<set $sideglass.NameP = "боковом окне">> <<set $sideglass.Sex = "N">> <<set $sideglass.Parent = "InTheCar">> <<set $sideglass.isOpenable = true>> <<set $sideglass.isOpen = false>> <<set $sideglass.isSightPenetrable = true>>
<<if $sideglass.isOpen>> Я посмотрел в приоткрытое окно водительской двери. В жёлтом свете дорожных фонарей ливень хлестал асфальт и бетонное заграждение, дальше, за пределами конусов света, была лишь непроглядная тьма. В боковом зеркале отражались фары другой машины. <<else>> По стеклу бежали ручейки воды, преломлявшие жёлтый свет фонарей и отражение в боковом зеркале. <</if>>
<<set $downpour.isNotable = [0,2,0,0]>> <<if $InTheCar.Timer > $cop.Timeline[9]>> <<set $sideglass.isNotable = [0,0,0,0]>> <</if>>
Я нажал на кнопку на двери и стекло немедленно опустилось, впуская в салон зябкую сырость и шум дождя. Я оставил его наполовину закрытым, чтобы капли не летели в лицо. <<CurrentViewAdd $downpour>>
<<if $cigarette.Parent != "player">> <<CloseAct $sideglass>> <<set $downpour.isNotable = [0,1,0,0]>> <</if>>
/%Я нажал на кнопку, чтобы поднять стекло, но полицейский вдург вставил фонарик в закрывающуюся щель и окно, надсадно прожужжав, опустилось вновь.%/ <<if $cigarette.Parent != "player">> Я, нажав на кнопку, закрыл окно, отсекая шум и сырость дождя. <<CurrentViewAdd $downpour>> <<else>> Я как раз курил и закрывать окно было бы неразумно — салон тут же наполнился бы удушливым сигаретным дымом. <<CurrentViewAdd $cigarette>> <</if>>
<<set $rearview.Name = "зеркало заднего вида">> <<set $rearview.NameG = "зеркала заднего вида">> <<set $rearview.NameD = "зеркалу заднего вида">> <<set $rearview.NameA = "зеркало заднего вида">> <<set $rearview.NameI = "зеркалом заднего вида">> <<set $rearview.NameP = "зеркале заднего вида">> <<set $rearview.Sex = "N">> <<set $rearview.Parent = "InTheCar">>
Я бросил взгляд на зеркало заднего вида, в котором отражались огни других машин. Бессчётное количество огней. <<CurrentViewAdd $jam>>
<<set $dashboard.Name = "передняя панель">> <<set $dashboard.NameG = "передней панели">> <<set $dashboard.NameD = "передней панели">> <<set $dashboard.NameA = "переднюю панель">> <<set $dashboard.NameI = "передней панелью">> <<set $dashboard.NameP = "передней панели">> <<set $dashboard.Sex = "F">> <<set $dashboard.Parent = "InTheCar">> <<set $dashboard.isSightPenetrable = true>> <<set $dashboard.isSoundPenetrable = true>> <<set $dashboard.isSmellPenetrable = true>> <<set $dashboard.isTouchPenetrable = true>>
<<script>> var date = new Date(); State.variables.InTheCarHours = date.getHours() + State.variables.InTheCarHourDelta; State.variables.InTheCarMinutes = date.getMinutes() + State.variables.InTheCarMinuteDelta; if (State.variables.InTheCarMinutes >= 60) { State.variables.InTheCarHours++; } State.variables.InTheCarHours = State.variables.InTheCarHours % 24; State.variables.InTheCarMinutes = State.variables.InTheCarMinutes % 60; <</script>> <<set $InTheCarTime = "<<= $InTheCarHours >= 10 ? $InTheCarHours : '0'+$InTheCarHours>>:<<= $InTheCarMinutes >= 10 ? $InTheCarMinutes : '0'+$InTheCarMinutes>>">>
<<if $dashboard.Examined == 1>> Автомобиль был взят на прокат на время командировки. Неприметный серый седан с незнакомым шильдиком на <<obj "руле" $drwheel>>. Передняя панель была без излишеств: маленький <<else>> Незнакомый шильдик на <<obj "руле" $drwheel>>, маленький <</if>> <<obj "бардачок" $glovebox>>, несовременная <<obj "радиомагнитола" $radio>>, зелёные светящиеся часы.<br> «$InTheCarTime»
<<set $drwheel.Name = "руль">> <<set $drwheel.NameG = "руля">> <<set $drwheel.NameD = "рулю">> <<set $drwheel.NameA = "руль">> <<set $drwheel.NameI = "рулём">> <<set $drwheel.NameP = "руле">> <<set $drwheel.Parent = "dashboard">> <<set $drwheel.isTuneable = true>> <<set $drwheel.Tune.Link = "Посигналить">>
Ничем не примечательный руль из мягкого пластика. Посреди клаксона наклеена незнакомая эмблема — стилизованная «K» в круге.
<<if !$drwheel.Tuned>> Я, поддавшись внезапному порыву, обеими руками надавил на клаксон и резкий звук разнёсся над пробкой. Кто-то подхватил и вскоре какафония автомобильных гудков, как лесной пожар, пронеслась по затору.<br> У соседей справа завыла и долго не успокаивалась собака. Я поймал раздражённый взгляд их водителя и отвернулся. <<else>> Одного раза было достаточно. Люди на взводе, не стоило их провоцировать. <</if>>
<<set $drwheel.Tuned = true>>
<<set $radio.Name = "радио">> <<set $radio.NameG = "радио">> <<set $radio.NameD = "радио">> <<set $radio.NameA = "радио">> <<set $radio.NameI = "радио">> <<set $radio.NameP = "радио">> <<set $radio.Sex = "N">> <<set $radio.Parent = "dashboard">> <<set $radio.isSwitchable = true>> <<set $radio.isOn = false>> <<set $radio.isTuneable = true>> <<set $radio.Timer = 0>> <<set $radio.Transmission = ["Повторяю. Данное сообщение является записью и будет воспроизводится на всех частотах автоматически до последующего уведомления", "Внимание. С 16 апреля этого года федеральным правительством был введён красный уровень эпидемиологической угрозы", "Во всех крупных городах установлены карантинные зоны. Всем гражданам, находящимся в пределах карантинных зон и не имеющих признаков заболевания, предписана эвакуация", "Направляйтесь на контрольно-пропускные пункты для досмотра и дальнейшего распределения", "Гражданам с признаками заболевания предписано оставаться дома. Вывесите белую ткань так, чтобы её было видно с улиц", "Регулярные патрули военно-медицинской службы обнаружат вас и перевезут в медучреждения, где вам будет оказана помощь. Не пытайтесь добраться самостоятельно", "Во всех карантинных зонах введён комендантский час с 20:00 до 08:00. Ко всем нарушителям режима будут применены меры согласно закона о чрезвычайном положении", "Не препятствуйте работе государственных и военнослужащих. Оказывайте содействие"]>>
<<if !$radio.isOn>> Магнитола была выключена. <<else>> На экране магнитолы светилась частота незнакомой мне радиостанции. <</if>>
<<set $radio.isNotable = [0,2,0,1]>> <<set $radio.justInteracted = true>> <<set $radio.Timer = $InTheCar.Timer % 8>>
Я включил радио и из динамиков раздался чёткий мужской голос:<br> //«…<<= $radio.Transmission[$radio.Timer]>>».//
<<set $radio.isNotable = [0,0,0,1]>>
Я ткнул большую кнопку громкости, выключив радио. Снова стало слышно как шумит дождь<<= $windshield.isOn ? " и скрипят дворники" : "">>.
<<set $radio.justInteracted = true>> <<set $radio.Timer = $InTheCar.Timer % 8>>
Я слушал передачу по радио:<br> //«<<= $radio.Transmission[$radio.Timer]>>».//
<<set $radio.justInteracted = true>> <<set $radio.Timer = $InTheCar.Timer % 8>>
Я попробовал переключить радиостанцию, но на всех частотах передавалась одна и та же запись:<br> //«<<= $radio.Transmission[$radio.Timer]>>».//
<<set $radio.Timer = $InTheCar.Timer % 8>> <<if $radio.isOn>> <<if $radio.justInteracted>> <<set $radio.justInteracted = false>> <<else>> Из <<obj "динамиков" $radio>> шла радиопередача: //«<<= $radio.Transmission[$radio.Timer]>>».// <</if>> <</if>>
<<set $glovebox.Name = "бардачок">> <<set $glovebox.NameG = "бардачка">> <<set $glovebox.NameD = "бардачку">> <<set $glovebox.NameA = "бардачок">> <<set $glovebox.NameI = "бардачком">> <<set $glovebox.NameP = "бардачке">> <<set $glovebox.Parent = "dashboard">> <<set $glovebox.isOpenable = true>> <<set $glovebox.isOpen = false>>
<<if $glovebox.isOpen>> Крошечная лампочка освещала содержимое бардачка: <<if $documents.Parent == "glovebox">> <<obj "документы" $documents>>, <</if>> <<obj "пачку сигарет" $smokes>> и рекламный <<obj "буклет" $advert>>. <<else>> Незаметный прямоугольник в дешёвом пластике <<obj "приборной панели" $dashboard>>. <</if>>
<<set $advert.Name = "буклет">> <<set $advert.NameG = "буклета">> <<set $advert.NameD = "буклету">> <<set $advert.NameA = "буклет">> <<set $advert.NameI = "буклетом">> <<set $advert.NameP = "буклете">> <<set $advert.Sex = "M">> <<set $advert.Parent = "glovebox">> <<set $advert.isTakeable = true>>
Мятый рекламный буклет компании по прокату автомобилей.
Совершенно бесполезная для меня вещь.
<<set $documents.Name = "документы">> <<set $documents.NameG = "документов">> <<set $documents.NameD = "документам">> <<set $documents.NameA = "документы">> <<set $documents.NameI = "документами">> <<set $documents.NameP = "документах">> <<set $documents.Sex = "P">> <<set $documents.Parent = "glovebox">> <<set $documents.isTakeable = true>> <<set $documents.Drop.Link = "Убрать документы">>
Пластиковая папка с моими правами, страховкой, договором найма автомобиля и прочей макулатурой.
<<moveobj $documents $glovebox>>
Я убрал документы назад в бардачок.
<<set $smokes.Name = "пачка сигарет">> <<set $smokes.NameG = "пачки сигарет">> <<set $smokes.NameD = "пачке сигарет">> <<set $smokes.NameA = "пачку сигарет">> <<set $smokes.NameI = "пачкой сигарет">> <<set $smokes.NameP = "пачке сигарет">> <<set $smokes.Sex = "F">> <<set $smokes.Parent = "glovebox">> <<set $smokes.isTakeable = true>> <<set $smokes.Take.Link = "Взять сигарету">>
Полупустая пачка «Shuangxi Light».
<<if $cigarette.Parent != "player">> <<TakeAct $cigarette>> <<if !$sideglass.isOpen>> <<OpenAct $sideglass>> <</if>> <<set $cigarette.Timer = $InTheCar.Timer>> <</if>>
<<if $cigarette.justTook>> Я вытряхнул из красной пачки сигарету, сунул в зубы, зажёг от прикуривателя. <<if $sideglass.justOpened>> Открыл наполовину окно водительской двери и, глубоко вдохнув, выпустил дым в сырую ночь. <<else>> И, глубоко вдохнув, выпустил дым в открытое боковое окно. <</if>> <<CurrentViewAdd $cigarette>> <<CurrentViewAdd $sideglass>> <<else>> В тот момент я уже курил. <</if>>
<<TakeAfterAct $cigarette>> <<OpenAfterAct $sideglass>>
<<set $cigarette.Name = "сигарета">> <<set $cigarette.NameG = "сигареты">> <<set $cigarette.NameD = "сигарете">> <<set $cigarette.NameA = "сигарету">> <<set $cigarette.NameI = "сигаретой">> <<set $cigarette.NameP = "сигарете">> <<set $cigarette.Sex = "F">> <<set $cigarette.Parent = "NULL">> <<set $cigarette.Timer = 0>>
<<switch $cigarette.State>> <<case 0 1 2 3 4>> Тлеющая сигарета «Shuangxi Light». <<case 5 6 7 8>> Наполовину выкуренная сигарета «Shuangxi Light». <<case 9>> Окурок «Shuangxi Light». <</switch>>
<<removeobj $cigarette>> <<set $sideglass.isOpen = false>> <<set $cigarette.Timer = 0>>
Я щелчком выбросил <<= ($cigarette.State < 8 ? "сигарету" : "окурок")>> в дождь и закрыл окно. <<CurrentViewAdd $sideglass>>
<<set $cigarette.State = $InTheCar.Timer - $cigarette.Timer>> <<CurrentViewAdd $cigarette>> <<switch $cigarette.State>> <<case 5>> Я затянулся от сигареты. <<case 10>> <<removeobj $cigarette>> <<set $sideglass.isOpen = false>> <<set $cigarette.Timer = 0>> Я щелчком выбросил окурок в дождь и закрыл окно. <<CurrentViewAdd $sideglass>> <</switch>>
<<set $OnWheatField.Name = "На пшеничном поле">>
Он опускается среди пыльных колосьев на одно колено и, затянув ослабленный шнурок на ботинке, поднимается. Перехватывает <<obj "топорик" $axe>>, ещё раз оглядывается.
Пологий склон поднимается с севера на юг — от чёрной ленты <<obj "шоссе" $highway>> далеко внизу к двухэтажному <<obj "дому" $house>> на вершине. Закатное <<obj "солнце" $sun>> длинными тенями расчёсывает сухие пшеничные <<obj "стебли" $wheat>>. Чистое <<obj "небо" $sky>> наполняется вечерней синевой, но далеко на севере клубятся грозовые тучи. Ночью придёт дождь.
<<set $highway.Name = "шоссе">> <<set $highway.NameG = "шоссе">> <<set $highway.NameD = "шоссе">> <<set $highway.NameA = "шоссе">> <<set $highway.NameI = "шоссе">> <<set $highway.NameP = "шоссе">> <<set $highway.Sex = "N">> <<set $highway.Parent = "OnWheatField">> <<set $highway.isNear = 0>>
Шоссе тянется вдоль северной границы поля, огороженное от него проволочной оградой. Оно убегает по подножию склона дальше, к темнеющему на западе частоколу <<obj "леса" $forest>>.
<<set $forest.Name = "лес">> <<set $forest.NameG = "леса">> <<set $forest.NameD = "лесу">> <<set $forest.NameA = "лес">> <<set $forest.NameI = "лесом">> <<set $forest.NameP = "лесе">> <<set $forest.Sex = "M">> <<set $forest.Parent = "OnWheatField">> <<set $forest.isNear = 0>>
Тёмный частокол леса, рассечённый в том месте, где в него вонзается <<obj "шоссе" $highway>>.
<<set $house.Name = "дом">> <<set $house.NameG = "дома">> <<set $house.NameD = "дому">> <<set $house.NameA = "дом">> <<set $house.NameI = "домом">> <<set $house.NameP = "доме">> <<set $house.Sex = "M">> <<set $house.Parent = "OnWheatField">> <<set $house.isNotable = [1,0,0,0]>> <<set $house.isNear = 0>>
Белый двухэтажный дом. Двускатная крыша, широкая веранда на весь фасад, заколоченные досками окна.<br> <<= ($house.Examined > 1 ? "" : "Шанс раздобыть еду, укрыться от надвигающейся непогоды, но главное — возможность впервые за очень долгое время поспать в кровати.")>>
<<set $test.Name = "!TEST!">> <<set $test.Parent = "house">> <<set $test.isNotable = [10,0,0,0]>>
<<set $sun.Name = "солнце">> <<set $sun.NameG = "солнца">> <<set $sun.NameD = "солнцу">> <<set $sun.NameA = "солнце">> <<set $sun.NameI = "солнцем">> <<set $sun.NameP = "солнце">> <<set $sun.Sex = "N">> <<set $sun.Parent = "OnWheatField">> <<set $sun.isNear = 0>>
<<set $wheat.Name = "стебли">> <<set $wheat.NameG = "стеблей">> <<set $wheat.NameD = "стеблям">> <<set $wheat.NameA = "стебли">> <<set $wheat.NameI = "стеблями">> <<set $wheat.NameP = "стеблях">> <<set $wheat.Sex = "P">> <<set $wheat.Parent = "OnWheatField">>
Посевы мертвы. Их сухие пыльные стебли безжизненно качаются на ветру, а те колосья, что смогли вызреть без ухода, давно уже осыпались или обломились.
<<if !$wheat.triedToTake>> Он пробует надломить стебель, который выглядит лучше остальных, но тот сразу же осыпается пылью и чёрными зёрнами. <<else>> Они мертвы. <</if>>
<<set $wheat.triedToTake = true>> <<set $wheat.isNotable[3] = 0>>
<<set $sky.Name = "небо">> <<set $sky.NameG = "неба">> <<set $sky.NameD = "небу">> <<set $sky.NameA = "небо">> <<set $sky.NameI = "небом">> <<set $sky.NameP = "небе">> <<set $sky.Sex = "N">> <<set $sky.Parent = "OnWheatField">> <<set $sky.isNear = 0>>
Небо теряет свою дневную прозрачность, наполняясь предвечерней синевой. Над северным горизонтом темнеет полоса атмосферного фронта. Она, кажется, стала ближе.
<<unset $focus>><<= "<<set $"+$_LOC.ID+".Visited++>>">><div class="location_name">''<<ExamLoc>>''</div><p style="height: 2.5em;margin: 0;"></p> <p class="location_enter" style="font-style:italic;"><<include $_LOC.Enter>></p> <p class="location_description"><<include $_LOC.Desc>></p> <p class="location_content"><<LocationContent>></p> <p class="report"><<include $_LOC.Events>></p> /% Параграф для отображения лога %/ /%<p class="focus"></p>%/ /% TNB %/ /% Добавление в _VIEWCURRENT объектов инвентаря %/ <<for _k0 to 0; _k0 < $player.Children.length; _k0++>> <<= "<<set _child0 = $"+$player.Children[_k0]+">>">> <<set $_VIEWCURRENT.push(_child0)>> <<if _child0.Children.length > 0>> <<for _k1 to 0; _k1 < _child0.Children.length; _k1++>> <<= "<<set _child1 = $"+_child0.Children[_k1]+">>">> <<set $_VIEWCURRENT.push(_child1)>> <<if _child1.Children.length > 0>> <<for _k2 to 0; _k2 < _child1.Children.length; _k2++>> <<= "<<set _child2 = $"+_child1.Children[_k2]+">>">> <<set $_VIEWCURRENT.push(_child2)>> <</for>> <</if>> <</for>> <</if>> <</for>> /% Добавление в _VIEWCURRENT протагониста %/ <<set $_VIEWCURRENT.push($player)>> /% Слив _VIEWCURRENT в историю %/ <<ViewHistoryUpdate>> /% Обновление коэффициентов важности всех объектов %/ <<UpdateCoeffs>> /% Обновление таймеров %/ <<UpdateTimers>> /% Контейнер с кнопками %/ <div class="buttons_container"> <<UpdateButtons>> </div> /%<<append "#story">> <div class="stats" style="background: #222;"> <div class="verb-stats"> </div> </div> <</append>>%/ /% TNB %/ <p class="object_actions" style="text-align:center;margin-bottom: 0px;"></p> <p class="location_actions" style="text-align:center;margin: 0;">/%<<include $_LOC.Acts>>%/</p> /%<p class="inventory" style="line-height:1;"><<include "Inventory">></p>%/ <<if $Theme == "LightTheme">> <<LightTheme>> <<else>> <<DarkTheme>> <</if>> /%<p class="link obj prop actloc actobj Cutscene"></p> /% фиктивный элемент для отлова ошибок %/ <p id="count" style="position:fixed;top:0;right:50px;"></p> /% ### # # # # ### # # ## ### ### ## ### # # # # # # # # ## # # # # # # # # # # # # # # ## # # # # # # # # ### # # # ## # # ## ## # # # %/
<<set _div0 = 0>> <<set _div1 = 0>> <<set _div2 = 0>> <<for _k0 to 0; _k0 < $player.Children.length; _k0++>> <<= "<<set _child0 = $"+$player.Children[_k0]+">>">> <<if !_div0>> /% если выводится первый/единственный предмет, отделить инвентарь чертой, вывести заголовок %/ <<set _div0 = 1>> <hr> С собой: <<else>> /% если в инвентаре уже есть предмет — отделить его и последующие предметы чертой %/ | <</if>> _child0.Name /%<<obj _child0.Name _child0>>%/ <<if _child0.Children.length > 0>> /% если у предмета есть свои «дети», вывести их подобным же образом в скобках %/ ( <<for _k1 to 0; _k1 < _child0.Children.length; _k1++>> <<= "<<set _child1 = $"+_child0.Children[_k1]+">>">> <<if !_div1>> <<set _div1 = 1>> <<else>> , <</if>> _child1.Name /%<<obj _child1.Name _child1>>%/ <<if _child1.Children.length > 0>> ( <<for _k2 to 0; _k2 < _child1.Children.length; _k2++>> <<= "<<set _child2 = $"+_child1.Children[_k2]+">>">> <<if !_div2>> <<set _div2 = 1>> <<else>> , <</if>> _child2.Name /%<<obj _child2.Name _child2>>%/ <</for>> ) <</if>> <</for>> ) <</if>> <</for>>
/% ,, `7MMF' db `7MM MM MM MM `7MM `7MMpMMMb. MM ,MP',pP"Ybd MM MM MM MM MM ;Y 8I `" MM , MM MM MM MM;Mm `YMMMa. MM ,M MM MM MM MM `Mb. L. I8 .JMMmmmmMMM .JMML..JMML JMML..JMML. YA.M9mmmP' %/ /% # # # # # ## ### # ## ## ### # # # # # # ## # # # # # # # ## # # ## ### # # ## ## ## # %/ /% виджет осмотра объекта %/ /% $args[0] = текст ссылки $args[1] = объект $args[2] = дополнительные классы для ссылки %/ <<widget "obj">> /% обрачиваем ссылку в span и задаём ему классы "link", "obj", "[родитель-объект]", плюс, если объект отключён, добавляем класс "disabled" для тушения ссылки %/ <<set _linkClass = $args[1].Parent+"-"+$args[1].ID+($args[1].Disabled ? " disabled" : "")+($args[2] ? $args[2] : "")>> <<CurrentViewAdd $args[1]>> /%<<ViewHistoryUpdate $args[1]>>%/ <span @class='"link obj "+_linkClass'> <<object $args[0] $args[1]>></span><</widget>> <<widget "object">><<link $args[0]>> <<set $focus = $args[1]>> /% обновляем фокус %/ <<if $focus.Trigger && $_MODE == "NULL">> <<set $_MODE = $focus.Trigger>> <<set $args[1].Trigger = "NULL">> <</if>> <<if $_MODE == "NULL">> <<append ".report">> /% выводим данные объекта в фокусе %/ <p class="animated fadeInDown"> <<UCase $focus.Name "$focusName">> <<if Story.get($focus.Parent).tags.contains("obj") and $focus.Parent != "player">> /% если «родитель» объекта тоже объект и не игрок, выводим и его в командную строку %/ <<= "<<set $focusParent = $"+$focus.Parent+">>">> <<UCase $focusParent.Name "$focusParentName">> • <<if !$focusParent.Disabled>> /% если «родитель» объекта не отключён — выводим его имя ссылкой %/ <<obj $focusParentName $focusParent>> <<else>> <<= $focusParentName>> <</if>> : <<else>> • <</if>> <<if !$focus.Disabled>> <<obj $focusName $focus>> <<else>> <<= $focusName>> /% выводим имя объекта %/ <</if>> <br> <<include $focus.Desc>> /% выводим описание объекта %/ <<set $focus.Examined++>> </p> <</append>> <<if $_EXAMISACT>> /% если осмотр — полноценный ход, показываем события в локации %/ <<append ".report">> <<if tale.get($_LOC.Events).processText().length gt 0 && $args[1]>> <p class="animated fadeInDown"> <<include $_LOC.Events>> </p> <</if>> <</append>> <</if>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> <<replace ".object_actions">> <<if Story.has($focus.Acts)>> <p class="animated fadeInDown"> <<include $focus.Acts>> /% выводим действия объекта %/ </p> <</if>> <</replace>> <<replace ".location_actions">> <<if Story.has($_LOC.Acts)>> <p class="animated fadeInDown"> <<include $_LOC.Acts>> /% выводим действия локации%/ </p> <</if>> <</replace>> <<replace ".inventory">> <<include "Inventory">> <</replace>> <<if $_EXAMISACT && $_MODE == "CUTSCENE">> /% если осмотр — полноценный ход и в нём включается катсцена, то трём все действия и инвентарь %/ /%<<replace ".object_actions">> <</replace>> <<replace ".location_actions">> <</replace>>%/ <<replace ".inventory">> <</replace>> <<addclass ".link.obj, .link.prop, .link.actloc, .link.actobj" "faded">> /% гасим все ссылки для катсцены %/ <<removeclass "[class*='Cutscene']" "faded">> /% восстанавливаем ссылки «Далее» для катсцены %/ <</if>> <<elseif $_MODE == "CUTSCENE">> <<append ".report">> /% выводим данные объекта в фокусе %/ <p class="animated fadeInDown"> <<UCase $focus.Name "$focusName">> <<if Story.get($focus.Parent).tags.contains("obj") and $focus.Parent != "player">> /% если «родитель» объекта тоже объект и не игрок, выводим и его в командную строку %/ <<= "<<set $focusParent = $"+$focus.Parent+">>">> <<UCase $focusParent.Name "$focusParentName">> • <<if !$focusParent.Disabled>> /% если «родитель» объекта не отключён — выводим его имя ссылкой %/ <<obj $focusParentName $focusParent " faded">> <<else>> <<= $focusParentName>> <</if>> : <<else>> • <</if>> <<if !$focus.Disabled>> <<obj $focusName $focus " faded">> <<else>> <<= $focusName>> /% выводим имя объекта %/ <</if>> <br> <<include $focus.Desc>> /% выводим описание объекта %/ <<set $focus.Examined++>> </p> <</append>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> <<replace ".object_actions">> <<if Story.has($focus.Acts)>> <p class="animated fadeInDown"> <<include $focus.Acts>> /% выводим действия объекта %/ </p> <</if>> <</replace>> <<replace ".location_actions">> <</replace>> <<replace ".inventory">> <</replace>> <<addclass ".link.prop, .link.actloc, .link.obj" "faded">> /% гасим все ссылки для катсцены %/ <<elseif $_MODE == "pistol_shooting">> <<ShootResult $pistol $focus>> <<elseif $_MODE == "axe_hacking">> <<HackResult $axe $focus>> <<elseif $_MODE == "extinguishing">> <<ExtinguishResult $fireExt $focus>> <<elseif $_MODE == "inserting">> <<InsertResult $fireExt2 $focus>> <</if>> <</link>><</widget>> /% ### ### ## ### # # # # # # # # # # # # # # # ### # ## ### # # %/ /% $args[0] = текст ссылки $args[1] = объект декорации %/ /% виджет осмотра декораций %/ <<widget "prop">><<="<span class='link prop "+$args[1].ID+($args[1].Disabled ? " disabled" : "")+"'><<prp '"+$args[0]+"' $"+$args[1].ID+">></span>">><</widget>> /% обрачиваем ссылку в span и задаём ему классы "link", "prop", "[локация]", плюс, если декорация отключена, добавляем класс "disabled" для тушения ссылки %/ <<widget "prp">><<link $args[0]>> <<set $focus = $args[1]>> <<append ".report">> <p class="animated fadeInDown"> <<UCase $focus.Name "$focusName">> • <<= $focusName>> <br> <<include $focus.Desc>> /% выводим описание декорации %/ <<set $focus.Examined++>> </p> <</append>> <<if $_EXAMISACT>> <<append ".report">> <<if tale.get($_LOC.Events).processText().length gt 0 && $args[1]>> <p class="animated fadeInDown"> <<include $_LOC.Events>> </p> <</if>> <</append>> <</if>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> <<replace ".object_actions">><</replace>> <<replace ".location_actions">> <<if Story.has($_LOC.Acts)>> <p class="animated fadeInDown"> <<include $_LOC.Acts>> /% выводим действия локации%/ </p> <</if>> <</replace>> <<replace ".inventory">> <<include "Inventory">> <</replace>> <<if $_EXAMISACT && $_MODE == "CUTSCENE">> /% если осмотр — полноценный ход и в нём включается катсцена, то трём все действия и инвентарь %/ <<replace ".inventory">> <</replace>> <<addclass ".link.obj, .link.prop, .link.actloc, .link.actobj" "faded">> /% гасим все ссылки для катсцены %/ <<removeclass "[class*='Cutscene']" "faded">> /% восстанавливаем ссылки «Далее» для катсцены %/ <</if>> <</link>><</widget>> /% ,, ,, ,, ,, `7MM"""Yb. db `7MM `7MM mm mm db MM `Yb. MM MM MM MM MM `Mb `7MM ,pP"Ybd `7MMpdMAo. MM ,6"Yb.`7M' `MF' ,6"Yb. MM mmMMmm .gP"Ya `7Mb,od8 ,6"Yb.mmMMmm `7MM ,pW"Wq.`7MMpMMMb. ,pP"Ybd MM MM MM 8I `" MM `Wb MM 8) MM VA ,V 8) MM MM MM ,M' Yb MM' "'8) MM MM MM 6W' `Wb MM MM 8I `" MM ,MP MM `YMMMa. MM M8 MM ,pm9MM VA ,V ,pm9MM MM MM 8M"""""" MM ,pm9MM MM MM 8M M8 MM MM `YMMMa. MM ,dP' MM L. I8 MM ,AP MM 8M MM VVV 8M MM MM MM YM. , MM 8M MM MM MM YA. ,A9 MM MM L. I8 .JMMmmmdP' .JMML.M9mmmP' MMbmmd'.JMML.`Moo9^Yo. ,V `Moo9^Yo..JMML. `Mbmo`Mbmmd'.JMML. `Moo9^Yo.`Mbmo.JMML.`Ybmd9'.JMML JMML.M9mmmP' MM ,V .JMML. OOb" %/ /% db dP""b8 888888 88""Yb 888888 888888 88""Yb 888888 .dP"Y8 88 88 dPYb dP `" 88 88__dP 88__ 88__ 88__dP 88__ `Ybo." 88 88 dP__Yb Yb 88 88"Yb 88"" 88"" 88"Yb 88"" o.`Y8b 888888 dP""""Yb YboodP 88 88 Yb 888888 88 88 Yb 888888 8bodP' 88 88 %/ /% виджет обновления экрана по действию %/ /% $args[0] = объект в фокусе $args[1] = имя действия $args[2] = описание действия (опционально) $args[3] = действие для создания повторной ссылки %/ <<widget "ActRefresh">> <<if $_MODE == "NULL">> <<set $focus = $args[0]>> /% обновляем фокус %/ /%<<replace ".focus">><</replace>>%/ <<append ".report">> /%<<if $args[1] || $args[3]>>%/ <p class="animated fadeInDown"> <<if $_ACTLOG>> /% проверка, включено ли отражение навзания действия в логе (см. Engine—Initialise) %/ <<if $args[3] && !$focus.Disabled>> //> $args[3]// /% выводим ссылку для повторения действия %/ <<else>> //> $args[1]// /% выводим имя действия %/ <</if>> <br> <<else>> /%<<set $_ACTLOG = true>>%/ <</if>> $args[2] /% выводим описание действия %/ </p> /%<</if>>%/ <</append>> <<append ".report">> <<if tale.get($_LOC.Events).processText().length gt 0 && $args[1]>> <p class="animated fadeInDown" style="margin: 0;"> <<include $_LOC.Events>> </p> <</if>> <</append>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> /% TNB %/ <<ViewHistoryUpdate>> <<UpdateCoeffs>> <<UpdateTimers>> /%<<ShowStats>>%/ <<replace ".buttons_container">> <<UpdateButtons>> /%<<replace ".verb-stats">> <table> <tr>_obj.Name</tr> <<for _v to 0; _v < _obj.Verbs.length; _v++>> <tr> <td>_obj.Verbs[_v].Name</td> <td>_obj.Verbs[_v].Available</td> </tr> <</for>> </table> <</replace>>%/ <</replace>> /% TNB %/ <<replace ".object_actions">> <<if !$focus.Disabled and Story.has($focus.Acts)>> /% если объект не отключён и у него есть действия — выводим список действий %/ <p class="animated fadeInDown"> <<include $focus.Acts>> </p> <</if>> <</replace>> <<replace ".location_actions">> <<if Story.has($_LOC.Acts)>> <p class="animated fadeInDown" style="margin: 0;"> <<include $_LOC.Acts>> /% выводим действия локации%/ </p> <</if>> <</replace>> /%<<replace ".inventory">> <<include "Inventory">> <</replace>>%/ /%<<unset $quickcommand>>%/ <<removeclass "*" "faded">> <<removeclass "*" "highlighted">> <<if $_MODE == "CUTSCENE">> /% если в эвенте локации включается катсцена, то трём все действия и инвентарь %/ <<replace ".inventory">> <</replace>> <<addclass ".link.obj, .link.prop, .link.actloc, .link.actobj" "faded">> /% гасим все ссылки для катсцены %/ <<removeclass "[class*='Cutscene']" "faded">> /% восстанавливаем ссылки «Далее» для катсцены %/ <</if>> <<elseif $_MODE == "CUTSCENE">> <<set $focus = $args[0]>> /% обновляем фокус %/ <<append ".report">> <p class="animated fadeInDown"> <<if $_ACTLOG>> /% проверка, включено ли отражение навзания действия в логе (см. Engine—Initialise) %/ //> <<= $args[1]>>// /% выводим имя действия %/ <br> <<else>> /%<<set $_ACTLOG = true>>%/ <</if>> <<= $args[2]>> /% выводим описание действия %/ </p> <</append>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> <<replace ".object_actions">> <<if !$focus.Disabled and Story.has($focus.Acts)>> /% если объект не отключён и у него есть действия — выводим список действий %/ <p class="animated fadeInDown"> <<include $focus.Acts>> </p> <</if>> <</replace>> <<replace ".location_actions">> <</replace>> <<replace ".inventory">> <</replace>> <<addclass ".link.prop, .link.actloc, .link.obj" "faded">> /% гасим все ссылки для катсцены %/ <<elseif $_MODE == "talking">> <<append ".report">> /%<<if $args[1] || $args[3]>>%/ <p class="animated fadeInDown"> <<if $_ACTLOG>> /% проверка, включено ли отражение навзания действия в логе (см. Engine—Initialise) %/ //> <<= $args[1]>>// /% выводим имя действия %/ <br> <</if>> <<= $args[2]>> /% выводим описание действия %/ </p> /%<</if>>%/ <</append>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); <</script>> <<replace ".object_actions">> <p class="animated fadeInDown"> <<if !$CurrentTopic>> <<TopicsList>> <<else>> <<Topic $CurrentTopic $PhrasesList>> <</if>> </p> <</replace>> <<replace ".location_actions">> <</replace>> <<addclass ".link.prop, .link.obj, .link.actloc" "faded">> <<else>> /%<<replace ".focus">><</replace>>%/ <<replace ".object_actions">> <p class="animated fadeInDown"> <<InterActCancel $args[0] $args[1]>> </p> <</replace>> <<replace ".location_actions">> <</replace>> <<addclass ".link.prop, .link.actloc" "faded">> <<addclass ".link.obj" "highlighted">> <</if>> <</widget>> /% # ## # # # # # # # ### ## ### # ## ## ### ## # ### ## ### ### # # # # # # # # # # # ## ### # # # ## ## # # # ## # # # # # # # ## # # ## ## # # # # ## ## ### ## ## # ## # # ## ### # # %/ /% виджет обновления экрана по локальному действию %/ /% $args[0] = имя действия $args[1] = описание действия %/ <<widget "actlocrefresh">> /%<<replace ".location_enter">> <</replace>> <<replace ".location_description">> <<include $_LOC.Desc>> <</replace>>%/ <<if $_MODE == "NULL">> <<append ".report">> <p class="animated fadeInDown"> <<if $_ACTLOG>> /% проверка, включено ли отражение навзания действия в логе (см. Engine—Initialise) %/ //> <<= $args[0]>>// /% выводим имя действия %/ <br> <<else>> /%<<set $_ACTLOG = true>>%/ <</if>> <<= $args[1]>> /% выводим описание действия %/ </p> <</append>> <<append ".report">> <<if tale.get($_LOC.Events).processText().length gt 0>> <p class="animated fadeInDown"> <<include $_LOC.Events>> </p> <</if>> <</append>> /%<<replace ".focus">><</replace>>%/ <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> <<replace ".object_actions">><</replace>> <<replace ".location_actions">> <<if Story.has($_LOC.Acts)>> <p class="animated fadeInDown"> <<include $_LOC.Acts>> /% выводим действия локации%/ </p> <</if>> <</replace>> <<replace ".inventory">> <<include "Inventory">> <</replace>> <<removeclass "*" "faded">> <<if $_MODE == "CUTSCENE">> /% если в эвенте локации включается катсцена, то трём все действия и инвентарь %/ <<replace ".inventory">> <</replace>> <<addclass ".link.obj, .link.prop, .link.actloc, .link.actobj" "faded">> /% гасим все ссылки для катсцены %/ <<removeclass "[class*='Cutscene']" "faded">> /% восстанавливаем ссылки «Далее» для катсцены %/ <</if>> <<elseif $_MODE == "CUTSCENE">> <<append ".report">> <p class="animated fadeInDown"> <<if $_ACTLOG>> /% проверка, включено ли отражение навзания действия в логе (см. Engine—Initialise) %/ //> <<= $args[0]>>// /% выводим имя действия %/ <br> <<else>> /%<<set $_ACTLOG = true>>%/ <</if>> <<= $args[1]>> /% выводим описание действия %/ </p> <</append>> <<script>> $(window).scrollTop($(".report > p:last-of-type").offset().top); /% скроллимся к последней записи репорта %/ <</script>> <<replace ".object_actions">><</replace>> <<replace ".location_actions">> <<if Story.has($_LOC.Acts)>> <p class="animated fadeInDown"> <<include $_LOC.Acts>> /% выводим действия локации%/ </p> <</if>> <</replace>> <<replace ".inventory">><</replace>> <<addclass ".link.prop, .link.actloc, .link.obj" "faded">> /% гасим все ссылки для катсцены %/ <<removeclass "[class*='Cutscene']" "faded">> /% восстанавливаем ссылки «Далее» для катсцены %/ <</if>> /%<<unset $quickcommand>>%/ <</widget>> /% ## # # # # # # ## # # ### # # # ## ## ### ## # ### ## ### ### # ## ## # # #### # # # # # # # ## ### # # # ## ## # # ## ## # ## # # # # # # # ## # # ## ## # # ## # # # # # # ### ## ## # ## # # ## ### # # %/ /% виджет обновления экрана по осмотру локации %/ <<widget "examlocrefresh">> <<replace ".location_name">>''<<ExamLoc>>''<</replace>> <<replace ".location_enter">><</replace>> <<replace ".location_description">> <p class="animated fadeInDown"> <<include $_LOC.Desc>> </p> <</replace>> <<replace ".location_content">> <p class="animated fadeInDown"> <<LocationContent>> </p> <</replace>> <<replace ".report">> <<if tale.get($_LOC.Events).processText().length gt 0>> <p class="animated fadeInDown"> <<include $_LOC.Events>> </p> <</if>> <</replace>> /%<<replace ".focus">><</replace>>%/ <<replace ".object_actions">><</replace>> <<replace ".location_actions">> <<if Story.has($_LOC.Acts)>> <p class="animated fadeInDown"> <<include $_LOC.Acts>> /% выводим действия локации%/ </p> <</if>> <</replace>> <<replace ".inventory">> <<include "Inventory">> <</replace>> /%<<unset $quickcommand>>%/ <<if $_MODE == "CUTSCENE">> <<addclass ".link.prop, .link.actloc, .link.obj" "faded">> /% гасим все ссылки для катсцены %/ <<removeclass "[class*='Cutscene']" "faded">> /% восстанавливаем ссылки «Далее» для катсцены %/ <</if>> <</widget>> /% ## # ### ## ### ### # ## ### # # # # # # # # # # ## ## ## # # ## ## # ## ## # ## # # ### ## ### ### ### ### %/ /% виджет для изменения стиля при надевании гоглов %/ <<widget "goggles">> <<script>> $(".passage").toggleClass("goggles"); <</script>> <</widget>> /% # # # ## # # # # # # # # # ## ## ### ### ## ## ### # ## ### ### ## ### ### # # # # # # # # # # # # # # # # # # # ## # # # # # # # # ## # # # # # # # # # # # # # ## # # # #### ## ## # # ## ### ## # # ## ## # # ## ## # # ## %/ /% виджет для печатания описаний объктов «по месту» (если оно у них есть) %/ <<widget "LocationContent">> <<for _i to 0; _i < $_LOC.Children.length; _i++>> <<set _t = $_LOC.Children[_i]>> <<set _p = _t+"Place">> <<if Story.has(_p)>> /%<<if _i > 0>> <br><br> <</if>>%/ <p> <<include _p>> </p> <</if>> <</for>> <</widget>> /% .dP"Y8 88 88 dP"Yb Yb dP .dP"Y8 888888 db 888888 .dP"Y8 `Ybo." 88 88 dP Yb Yb db dP `Ybo." 88 dPYb 88 `Ybo." o.`Y8b 888888 Yb dP YbdPYbdP o.`Y8b 88 dP__Yb 88 o.`Y8b 8bodP' 88 88 YbodP YP YP 8bodP' 88 dP""""Yb 88 8bodP' %/ <<widget "ShowStats">> <<replace ".stats">> <table style="margin:0;text-align: center;"> <tr> <td>ID</td> <td>kNotable</td> <td>kFocus</td> <td>kView</td> <td>kAttract</td> </tr> <<for _i to 0; _i < $_OBJECTS.length; _i++>> <tr> <td>$_OBJECTS[_i].ID</td> <td> $_OBJECTS[_i].kNotable [ $_OBJECTS[_i].isNotable ] </td> <td><<= Math.trunc($_OBJECTS[_i].kFocus)>></td> <td><<= Math.trunc($_OBJECTS[_i].kView)>></td> <td><<= Math.trunc($_OBJECTS[_i].kAttract)>></td> </tr> <</for>> </table> <div class="verb-stats"> </div> <</replace>> <</widget>> /% 88 88 88""Yb 8888b. db 888888 888888 88""Yb 88 88 888888 888888 dP"Yb 88b 88 .dP"Y8 88 88 88__dP 8I Yb dPYb 88 88__ 88__dP 88 88 88 88 dP Yb 88Yb88 `Ybo." Y8 8P 88""" 8I dY dP__Yb 88 88"" 88""Yb Y8 8P 88 88 Yb dP 88 Y88 o.`Y8b `YbodP' 88 8888Y" dP""""Yb 88 888888 88oodP `YbodP' 88 88 YbodP 88 Y8 8bodP' %/ <<widget "UpdateButtons">> <div class="objs_container"> <<for _o to 0; _o < $_SCOPE.length; _o++>> <<set _obj = $_SCOPE[_o]>> <<capture _obj>> <<UCase _obj.Name "_name">> <p @class = "'link obj '+_obj.ID"> <<button _name>> <<replace ".acts_container">> <<for _v to 0; _v < _obj.Verbs.length; _v++>> <<if _obj.Verbs[_v].Available > 0>> <<= "<<"+_obj.Verbs[_v].Name+" _obj>>">> <</if>> <</for>> <</replace>> /%<<replace ".verb-stats">> <table> <tr>_obj.Name</tr> <<for _v to 0; _v < _obj.Verbs.length; _v++>> <tr> <td>_obj.Verbs[_v].Name</td> <td>_obj.Verbs[_v].Available</td> </tr> <</for>> </table> <</replace>>%/ <</button>> </p> <</capture>> /%<<Look $_SCOPE[_o]>>%/ <</for>> </div> <div class="acts_container"> <<if $_FOCUSHISTORY.length > 0>> <<set _obj = $_FOCUSHISTORY[0]>> <<if $_SCOPE.includes(_obj)>> <<for _v to 0; _v < _obj.Verbs.length; _v++>> <<if _obj.Verbs[_v].Available > 0>> <<= "<<"+_obj.Verbs[_v].Name+" _obj>>">> <</if>> <</for>> <</if>> <</if>> </div> <</widget>> /% ,, ,, `7MM"""Yb. db `7MM .g8"""bgd .M"""bgd .M"""bgd MM `Yb. MM .dP' `M ,MI "Y ,MI "Y MM `Mb `7MM ,pP"Ybd `7MMpdMAo. MM ,6"Yb.`7M' `MF' dM' ` `MMb. `MMb. MM MM MM 8I `" MM `Wb MM 8) MM VA ,V MM `YMMNq. `YMMNq. MM ,MP MM `YMMMa. MM M8 MM ,pm9MM VA ,V MM. . `MM . `MM MM ,dP' MM L. I8 MM ,AP MM 8M MM VVV `Mb. ,' Mb dM Mb dM .JMMmmmdP' .JMML.M9mmmP' MMbmmd'.JMML.`Moo9^Yo. ,V `"bmmmd' P"Ybmmd" P"Ybmmd" MM ,V .JMML. OOb" %/
<<set $NULL.Name = "NULL">>
ПУСТОТА.
/% 888888 88 8b d8 888888 .dP"Y8 888888 Yb dP 88""Yb 888888 88""Yb .dP"Y8 dP"Yb 88b 88 88 88 88b d88 88__ `Ybo." 88__ YbdP 88__dP 88__ 88__dP `Ybo." dP Yb 88Yb88 88 88 88YbdP88 88"" .o. o.`Y8b 88"" dPYb .o. 88""" 88"" 88"Yb o.`Y8b Yb dP 88 Y88 88 88 88 YY 88 888888 ,dP' 8bodP' 888888 dP Yb ,dP' 88 888888 88 Yb 8bodP' YbodP 88 Y8 %/ /% определение времени и лица, от которого идёт повествование %/ <<set $_TIME = "past">> /% время действия (past, present, future) %/ <<set $_SEX = "M">> /% пол (M,F,N) либо множественное число (P) %/ <<set $_PERSON = 1>> /% от 1-го, 2-го или 3-го лица идёт повествование %/ <<set $_PRONOUN = { Nom: "", Gen: "", Dat: "", Acc: "", Ins: "", Pre: "" };>> /% объект, содержащий все местоимения %/ <<Pronoun>> /% назначение всех местоимений в соответствии с полом и лицом, от которого идёт повествование %/ /% dP""b8 dP"Yb 88b 88 888888 88 dP""b8 dP `" dP Yb 88Yb88 88__ 88 dP `" Yb Yb dP 88 Y88 88"" 88 Yb "88 YboodP YbodP 88 Y8 88 88 YboodP %/ /% конфиг-переменные %/ <<set $_TIMER = 0>> <<set $_ACTLOG = true>> /% писать ли название действия в лог? %/ <<set $_EXAMISACT = true>> /% считать ли осмотр (виджеты object, prp) за ход? %/ <<set $_MODE = "NULL">> /% режим %/ <<set $_PREVLOC = "NULL">> /% предыдщуая локация — NULL %/ <<set $_FOCUSHISTORY = []>> /% история фокуса — пуста %/ <<set $_VIEWCURRENT = []>> /% список объектов текущего вида — пуст %/ <<set $_VIEWHISTORY = []>> /% история виденных объектов — пуста %/ <<set $_SCOPE = []>> /% список объектов, достижимых для чувств игрока: зрения, слуха, обоняния, осязания %/ /% 88 dP"Yb dP""b8 888888 888888 8b d8 88""Yb 88 db 888888 888888 88 dP Yb dP `" 88 88__ 88b d88 88__dP 88 dPYb 88 88__ 88 .o Yb dP Yb 88 88"" 88YbdP88 88""" 88 .o dP__Yb 88 88"" 88ood8 YbodP YboodP 88 888888 88 YY 88 88 88ood8 dP""""Yb 88 888888 %/ /% шаблон локации %/ <<set $locProto = { ID: "", Name: "", Children: [], Desc: "", Enter: "", Events: "", Acts: "", NoGo: "", Visited: 0, isJustEntered: false, Timer: 0 // УДАЛИТЬ! ,isOpen: true, isNear: 3, isSightPenetrable: true, isSoundPenetrable: true, isSmellPenetrable: true, isTouchPenetrable: true };>> /% dP"Yb 88""Yb 88888 888888 888888 8b d8 88""Yb 88 db 888888 888888 dP Yb 88__dP 88 88 88__ 88b d88 88__dP 88 dPYb 88 88__ Yb dP 88""Yb o. 88 88 88"" 88YbdP88 88""" 88 .o dP__Yb 88 88"" YbodP 88oodP "bodP' 88 888888 88 YY 88 88 88ood8 dP""""Yb 88 888888 %/ /% шаблон объекта %/ <<set $objProto = { ID: "", Sex: "M", Name: "", NameG: "", NameD: "", NameA: "", NameI: "", NameP: "", Children: [], Parent: "", Disabled: false, Examined: 0, Listened: 0, // Характеристики объекта isHidden: false, isOpen: true, isNear: 3, // 3 - рядом, 2 - близко, 1 - недалеко, 0 - далеко isOn: false, isTakeable: false, isOpenable: false, isSwitchable: false, isTuneable: false, // Проницаем ли объект для зрения, слуха, обоняния, осязания? isSightPenetrable: false, isSoundPenetrable: false, isSmellPenetrable: false, isTouchPenetrable: false, // Коэффициенты важности объекта isNotable: [0,0,0,0], kNotable: 0, kFocus: 0, kView: 0, kAttract: 0, // Глаголы для объекта Verbs: [], Inventory: { Name: "Inventory", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Look: { Name: "Look", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Take: { Name: "Take", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Drop: { Name: "Drop", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Listen: { Name: "Listen", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Open: { Name: "Open", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Close: { Name: "Close", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, SwitchOn: { Name: "SwitchOn", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, SwitchOff: { Name: "SwitchOff", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, Tune: { Name: "Tune", Link: "NULL", Act: "NULL", AddAct: "NULL", Outcome: "NULL", AfterAct: "NULL", Available: 0 }, // Строковые переменные для хранения имён параграфов. Переделать? Desc: "", Acts: "", Daemon: "" };>> /% 88""Yb 88""Yb dP"Yb 88""Yb 888888 888888 8b d8 88""Yb 88 db 888888 888888 88__dP 88__dP dP Yb 88__dP 88 88__ 88b d88 88__dP 88 dPYb 88 88__ 88""" 88"Yb Yb dP 88""" 88 88"" 88YbdP88 88""" 88 .o dP__Yb 88 88"" 88 88 Yb YbodP 88 88 888888 88 YY 88 88 88ood8 dP""""Yb 88 888888 %/ /% шаблон декорации %/ <<set $propProto = { ID: "", Name: "", Parent: "", Disabled: false, Examined: 0, Desc: "" };>> <<set $locsArray = Story.lookup("tags", "loc")>> /% список параграфов с локациями %/ <<set $_OBJECTS = Story.lookup("tags", "obj")>> /% список параграфов с объектами %/ <<set $propsArray = Story.lookup("tags", "prop")>> /% список параграфов с декорациями %/ /% dP""b8 88""Yb 888888 db 888888 888888 db 88 88 dP `" 88__dP 88__ dPYb 88 88__ dPYb 88 88 Yb 88"Yb 88"" dP__Yb 88 88"" dP__Yb 88 .o 88 .o YboodP 88 Yb 888888 dP""""Yb 88 888888 dP""""Yb 88ood8 88ood8 %/ /% создание всех локаций по шаблону $locProto %/ <<for _k to 0; _k < $locsArray.length; _k++>> <<= "<<set $"+$locsArray[_k].title+" = clone($locProto)>>">> <<= "<<set $"+$locsArray[_k].title+".ID = '"+$locsArray[_k].title+"'>>">> <<= "<<set $locsArray[_k] = $"+$locsArray[_k].title+">>">> <</for>> /% создание всех объектов по шаблону $objProto %/ <<for _k to 0; _k < $_OBJECTS.length; _k++>> <<= "<<set $"+$_OBJECTS[_k].title+" = clone($objProto)>>">> <<= "<<set $"+$_OBJECTS[_k].title+".ID = '"+$_OBJECTS[_k].title+"'>>">> <<= "<<set $_OBJECTS[_k] = $"+$_OBJECTS[_k].title+">>">> <</for>> /% создание всех декораций по шаблону $propProto %/ <<for _k to 0; _k < $propsArray.length; _k++>> <<= "<<set $"+$propsArray[_k].title+" = clone($propProto)>>">> <</for>> /% 88 88b 88 88 888888 db 88 88 88 88Yb88 88 88 dPYb 88 88 88 88 Y88 88 88 dP__Yb 88 .o 88 .o 88 88 Y8 88 88 dP""""Yb 88ood8 88ood8 %/ /% инициализация всех локаций %/ <<for _k to 0; _k < $locsArray.length; _k++>> <<include $locsArray[_k].ID>> <<set $locsArray[_k].Enter = $locsArray[_k].ID + "Enter">> <<set $locsArray[_k].Events = $locsArray[_k].ID + "Events">> <<set $locsArray[_k].Desc = $locsArray[_k].ID + "Desc">> <<set $locsArray[_k].Acts = $locsArray[_k].ID + "Acts">> <<set $locsArray[_k].NoGo = $locsArray[_k].ID + "NoGo">> <</for>> /% инициализация всех объектов %/ <<for _k to 0; _k < $_OBJECTS.length; _k++>> <<include $_OBJECTS[_k].ID>> <<set $_OBJECTS[_k].Desc = $_OBJECTS[_k].ID +"Desc">> <<set $_OBJECTS[_k].Place = $_OBJECTS[_k].ID +"Place">> <<set $_OBJECTS[_k].Acts = $_OBJECTS[_k].ID +"Acts">> <<set $_OBJECTS[_k].Daemon = $_OBJECTS[_k].ID +"Daemon">> /%<<set $_OBJECTS[_k].Look = $_OBJECTS[_k].ID +"Look">>%/ <<if Story.has($_OBJECTS[_k].ID+"InventoryAct")>> <<set $_OBJECTS[_k].Inventory.Act = $_OBJECTS[_k].ID+"InventoryAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"InventoryAddAct")>> <<set $_OBJECTS[_k].Inventory.AddAct = $_OBJECTS[_k].ID+"InventoryAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Inventory")>> <<set $_OBJECTS[_k].Inventory.Outcome = $_OBJECTS[_k].ID+"Inventory">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"InventoryAfterAct")>> <<set $_OBJECTS[_k].Inventory.AfterAct = $_OBJECTS[_k].ID+"InventoryAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"LookAct")>> <<set $_OBJECTS[_k].Look.Act = $_OBJECTS[_k].ID+"LookAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"LookAddAct")>> <<set $_OBJECTS[_k].Look.AddAct = $_OBJECTS[_k].ID+"LookAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Desc")>> <<set $_OBJECTS[_k].Look.Outcome = $_OBJECTS[_k].ID+"Desc">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"LookAfterAct")>> <<set $_OBJECTS[_k].Look.AfterAct = $_OBJECTS[_k].ID+"LookAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"TakeAct")>> <<set $_OBJECTS[_k].Take.Act = $_OBJECTS[_k].ID+"TakeAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"TakeAddAct")>> <<set $_OBJECTS[_k].Take.AddAct = $_OBJECTS[_k].ID+"TakeAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Take")>> <<set $_OBJECTS[_k].Take.Outcome = $_OBJECTS[_k].ID+"Take">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"TakeAfterAct")>> <<set $_OBJECTS[_k].Take.AfterAct = $_OBJECTS[_k].ID+"TakeAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"DropAct")>> <<set $_OBJECTS[_k].Drop.Act = $_OBJECTS[_k].ID+"DropAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"DropAddAct")>> <<set $_OBJECTS[_k].Drop.AddAct = $_OBJECTS[_k].ID+"DropAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Drop")>> <<set $_OBJECTS[_k].Drop.Outcome = $_OBJECTS[_k].ID+"Drop">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"DropAfterAct")>> <<set $_OBJECTS[_k].Drop.AfterAct = $_OBJECTS[_k].ID+"DropAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"ListenAct")>> <<set $_OBJECTS[_k].Listen.Act = $_OBJECTS[_k].ID+"ListenAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"ListenAddAct")>> <<set $_OBJECTS[_k].Listen.AddAct = $_OBJECTS[_k].ID+"ListenAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Listen")>> <<set $_OBJECTS[_k].Listen.Outcome = $_OBJECTS[_k].ID+"Listen">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"ListenAfterAct")>> <<set $_OBJECTS[_k].Listen.AfterAct = $_OBJECTS[_k].ID+"ListenAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"OpenAct")>> <<set $_OBJECTS[_k].Open.Act = $_OBJECTS[_k].ID+"OpenAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"OpenAddAct")>> <<set $_OBJECTS[_k].Open.AddAct = $_OBJECTS[_k].ID+"OpenAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Open")>> <<set $_OBJECTS[_k].Open.Outcome = $_OBJECTS[_k].ID+"Open">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"OpenAfterAct")>> <<set $_OBJECTS[_k].Open.AfterAct = $_OBJECTS[_k].ID+"OpenAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"CloseAct")>> <<set $_OBJECTS[_k].Close.Act = $_OBJECTS[_k].ID+"CloseAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"CloseAddAct")>> <<set $_OBJECTS[_k].Close.AddAct = $_OBJECTS[_k].ID+"CloseAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Close")>> <<set $_OBJECTS[_k].Close.Outcome = $_OBJECTS[_k].ID+"Close">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"CloseAfterAct")>> <<set $_OBJECTS[_k].Close.AfterAct = $_OBJECTS[_k].ID+"CloseAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOnAct")>> <<set $_OBJECTS[_k].SwitchOn.Act = $_OBJECTS[_k].ID+"SwitchOnAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOnAddAct")>> <<set $_OBJECTS[_k].SwitchOn.AddAct = $_OBJECTS[_k].ID+"SwitchOnAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOn")>> <<set $_OBJECTS[_k].SwitchOn.Outcome = $_OBJECTS[_k].ID+"SwitchOn">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOnAfterAct")>> <<set $_OBJECTS[_k].SwitchOn.AfterAct = $_OBJECTS[_k].ID+"SwitchOnAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOffAct")>> <<set $_OBJECTS[_k].SwitchOff.Act = $_OBJECTS[_k].ID+"SwitchOffAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOffAddAct")>> <<set $_OBJECTS[_k].SwitchOff.AddAct = $_OBJECTS[_k].ID+"SwitchOffAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOff")>> <<set $_OBJECTS[_k].SwitchOff.Outcome = $_OBJECTS[_k].ID+"SwitchOff">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"SwitchOffAfterAct")>> <<set $_OBJECTS[_k].SwitchOff.AfterAct = $_OBJECTS[_k].ID+"SwitchOffAfterAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"TuneAct")>> <<set $_OBJECTS[_k].Tune.Act = $_OBJECTS[_k].ID+"TuneAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"TuneAddAct")>> <<set $_OBJECTS[_k].Tune.AddAct = $_OBJECTS[_k].ID+"TuneAddAct">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"Tune")>> <<set $_OBJECTS[_k].Tune.Outcome = $_OBJECTS[_k].ID+"Tune">> <</if>> <<if Story.has($_OBJECTS[_k].ID+"TuneAfterAct")>> <<set $_OBJECTS[_k].Tune.AfterAct = $_OBJECTS[_k].ID+"TuneAfterAct">> <</if>> /%<<set $_OBJECTS[_k].Take = $_OBJECTS[_k].ID +"Take">>%/ /%<<set $_OBJECTS[_k].Drop = $_OBJECTS[_k].ID +"Drop">>%/ /%<<set $_OBJECTS[_k].Open = $_OBJECTS[_k].ID +"Open">>%/ /%<<set $_OBJECTS[_k].Close = $_OBJECTS[_k].ID +"Close">>%/ /%<<set $_OBJECTS[_k].kNotable = ($_OBJECTS[_k].isNotable[0] + $_OBJECTS[_k].isNotable[1] + $_OBJECTS[_k].isNotable[2] + $_OBJECTS[_k].isNotable[3])*90>>%/ /%<<set $_OBJECTS[_k].Verbs = [$_OBJECTS[_k].Look, $_OBJECTS[_k].Take, $_OBJECTS[_k].Drop, $_OBJECTS[_k].Listen]>>%/ <</for>> /% инициализация всех декораций %/ <<for _k to 0; _k < $propsArray.length; _k++>> <<set _t = $propsArray[_k].title>> <<include _t>> <<= "<<set $"+_t+".ID = '"+_t+"'>>">> <<= "<<set $"+_t+".Desc = '"+_t+"Desc'>>">> <</for>> /% инициализация персонажей %/ <<for _k to 0; _k < $_OBJECTS.length; _k++>> <<if Story.get($_OBJECTS[_k].ID).tags.includes("char")>> <<set _t = $_OBJECTS[_k].ID>> <<= "<<set $"+_t+"['Talk'] = '"+_t+"Talk'>>">> /%<<= "<<set $"+_t+"['Topics'] = '"+_t+"Topics'>>">> <<= "<<include $"+_t+".Topics>>">>%/ <</if>> <</for>> /% распределение «детей» по «родителям» %/ <<for _k to 0; _k < $_OBJECTS.length; _k++>> <<set _pn = $_OBJECTS[_k].Parent>> <<set _cn = $_OBJECTS[_k].ID>> <<= "<<set $"+_pn+".Children.push(_cn)>>">> /% присваивание атрибуту объекта isNear то же значение, что и у родителя... %/ <<= "<<set _po = $"+$_OBJECTS[_k].Parent+">>">> <<= "<<set _co = $"+$_OBJECTS[_k].ID+">>">> <<set _co.isNear = _po.isNear>> /% ...но если при инициализации объекта тоже задавался isNear, ещё раз прогоняем инициализацию, чтобы его сохранить %/ <<include $_OBJECTS[_k].ID>> <</for>> /% если «родитель» не открыт, все «дети» не доступны %/ <<for _k1 to 0; _k1 < $_OBJECTS.length; _k1++>> <<set _t = $_OBJECTS[_k1]>> <<if !_t.isOpen>> <<closeobj _t>> <</if>> <</for>> /% ,, ,, ,, ,, .g8""8q. *MM db mm `7MM mm mm db .dP' `YM. MM MM MM MM MM dM' `MM MM,dMMb.`7MM .gP"Ya ,p6"bo mmMMmm ,6"Yb. MM mmMMmm .gP"Ya `7Mb,od8 ,6"Yb.mmMMmm `7MM ,pW"Wq.`7MMpMMMb. ,pP"Ybd MM MM MM `Mb MM ,M' Yb 6M' OO MM 8) MM MM MM ,M' Yb MM' "'8) MM MM MM 6W' `Wb MM MM 8I `" MM. ,MP MM M8 MM 8M"""""" 8M MM ,pm9MM MM MM 8M"""""" MM ,pm9MM MM MM 8M M8 MM MM `YMMMa. `Mb. ,dP' MM. ,M9 MM YM. , YM. , MM 8M MM MM MM YM. , MM 8M MM MM MM YA. ,A9 MM MM L. I8 `"bmmd"' P^YbmdP' MM `Mbmmd' YMbmd' `Mbmo `Moo9^Yo..JMML. `Mbmo`Mbmmd'.JMML. `Moo9^Yo.`Mbmo.JMML.`Ybmd9'.JMML JMML.M9mmmP' QO MP `bmP %/
/% 88""Yb 888888 8b d8 dP"Yb Yb dP 888888 dP"Yb 88""Yb 88888 88__dP 88__ 88b d88 dP Yb Yb dP 88__ dP Yb 88__dP 88 88"Yb 88"" 88YbdP88 Yb dP YbdP 88"" Yb dP 88""Yb o. 88 88 Yb 888888 88 YY 88 YbodP YP 888888 YbodP 88oodP "bodP' %/ /% виджет удаления объекта %/ /% $args[0] = объект для удаления %/ <<widget "removeobj">> <<disablelink $args[0] $args[0].Parent>> <<set $args[0].Disabled = true>> <<if $args[0].Parent and $args[0].Parent != "NULL">> /% если «родитель» есть, то удаляем объект из его «детей» %/ <<= "<<set $"+$args[0].Parent+".Children.splice($"+$args[0].Parent+".Children.indexOf($args[0].ID), 1)>>">> <<= "<<set $"+$args[0].ID+".FormerParent = $"+$args[0].ID+".Parent>>">> /% записываем «текущего» родителя в «предыдущие» %/ <<set $args[0].Parent = "NULL">> /% обнуляем родителя в свойствах объекта %/ <</if>> /%<<replace ".inventory">> <<include "Inventory">> <</replace>>%/ <</widget>> /% 8b d8 dP"Yb Yb dP 888888 dP"Yb 88""Yb 88888 88b d88 dP Yb Yb dP 88__ dP Yb 88__dP 88 88YbdP88 Yb dP YbdP 88"" Yb dP 88""Yb o. 88 88 YY 88 YbodP YP 888888 YbodP 88oodP "bodP' %/ /% виджет перемещения объекта %/ /% $args[0] = объект для перемещения $args[1] = объект, в который происходит перемещение %/ <<widget "moveobj">> <<disablelink $args[0] $args[0].Parent>> <<enablelink $args[0] $args[1]>> <<if $args[0].Parent and $args[0].Parent != "NULL">> /% если «родитель» есть, то удаляем объект из его «детей» %/ <<= "<<set $"+$args[0].Parent+".Children.splice($"+$args[0].Parent+".Children.indexOf($args[0].ID), 1)>>">> <<= "<<set $"+$args[0].ID+".FormerParent = $"+$args[0].ID+".Parent>>">> /% записываем «текущего» родителя в «предыдущие» %/ <</if>> <<= "<<set $"+$args[0].ID+".Parent = $args[1].ID>>">> /% меняем родителя в свойствах объекта %/ <<= "<<set $"+$args[0].Parent+".Children.push($args[0].ID)>>">> /% добавляем объект в список «детей» %/ /%<<replace ".inventory">> <<include "Inventory">> <</replace>>%/ <</widget>> /% dP"Yb 88""Yb 888888 88b 88 dP"Yb 88""Yb 88888 dP Yb 88__dP 88__ 88Yb88 dP Yb 88__dP 88 Yb dP 88""" 88"" 88 Y88 Yb dP 88""Yb o. 88 YbodP 88 888888 88 Y8 YbodP 88oodP "bodP' %/ /% виджет открытия объекта %/ /% $args[0] = объект для открытия %/ <<widget "openobj">> <<set $args[0].isOpen = true>> <<for _i to 0; _i < $args[0].Children.length; _i++>> <<= "<<set $"+$args[0].Children[_i]+".Disabled = false>>">> <<= "<<enablelink $"+$args[0].Children[_i]+" $"+$args[0].ID+">>">> <</for>> <</widget>> /% dP""b8 88 dP"Yb .dP"Y8 888888 dP"Yb 88""Yb 88888 dP `" 88 dP Yb `Ybo." 88__ dP Yb 88__dP 88 Yb 88 .o Yb dP o.`Y8b 88"" Yb dP 88""Yb o. 88 YboodP 88ood8 YbodP 8bodP' 888888 YbodP 88oodP "bodP' %/ /% виджет закрытия объекта %/ /% $args[0] = объект для закрытия %/ <<widget "closeobj">> <<set $args[0].isOpen = false>> <<for _i to 0; _i < $args[0].Children.length; _i++>> <<= "<<set $"+$args[0].Children[_i]+".Disabled = true>>">> <<= "<<disablelink $"+$args[0].Children[_i]+" '"+$args[0].ID+"'>>">> <</for>> <</widget>> /% 8888b. 88 .dP"Y8 db 88""Yb 88 888888 88 88 88b 88 88 dP 8I Yb 88 `Ybo." dPYb 88__dP 88 88__ 88 88 88Yb88 88odP 8I dY 88 o.`Y8b dP__Yb 88""Yb 88 .o 88"" 88 .o 88 88 Y88 88"Yb 8888Y" 88 8bodP' dP""""Yb 88oodP 88ood8 888888 88ood8 88 88 Y8 88 Yb %/ /% виджет отключения ссылок объекта %/ /% $args[0] = объект для отключения ссылок $args[1] = имя родителя объекта %/ <<widget "disablelink">> /% отключаем ссылки с классами "link" и "[родитель-объект]" %/ <<script>> var link = ".link."+variables().args[1]+"-"+variables().args[0].ID; if ($(link)){ $(link).addClass("disabled"); } <</script>> <</widget>> /% 888888 88b 88 db 88""Yb 88 888888 88 88 88b 88 88 dP 88__ 88Yb88 dPYb 88__dP 88 88__ 88 88 88Yb88 88odP 88"" 88 Y88 dP__Yb 88""Yb 88 .o 88"" 88 .o 88 88 Y88 88"Yb 888888 88 Y8 dP""""Yb 88oodP 88ood8 888888 88ood8 88 88 Y8 88 Yb %/ /% виджет включения ссылок объекта %/ /% $args[0] = объект для включения ссылок $args[1] = родитель объекта %/ <<widget "enablelink">> /% включаем ссылки с классами "link" и "[родитель-объект]" %/ <<script>> var link = ".link."+variables().args[1].ID+"-"+variables().args[0].ID; if ($(link)){ $(link).removeClass("disabled"); } <</script>> <</widget>> /% 88 88 88""Yb 8888b. db 888888 888888 dP""b8 dP"Yb 888888 888888 888888 .dP"Y8 88 88 88__dP 8I Yb dPYb 88 88__ dP `" dP Yb 88__ 88__ 88__ `Ybo." Y8 8P 88""" 8I dY dP__Yb 88 88"" Yb Yb dP 88"" 88"" 88"" o.`Y8b `YbodP' 88 8888Y" dP""""Yb 88 888888 YboodP YbodP 888888 88 88 8bodP' %/ /% обновление коэффициентов важности объектов %/ <<widget "UpdateCoeffs">> <<for _f to 0; _f < $_FOCUSHISTORY.length; _f++>> /% F = (1 - i/length)^2*100 %/ <<set $_FOCUSHISTORY[_f].kFocus = Math.pow(1-_f/$_FOCUSHISTORY.length, 2)*100>> <</for>> <<for _v to ($_VIEWHISTORY.length-1); _v >= 0; _v-->> <<for _vv to 0; _vv < $_VIEWHISTORY[_v].length; _vv++>> /% V = (1 - i/length)^3*90 - ii/length + 1 %/ <<if $_VIEWHISTORY[_v].length > 0>> <<set $_VIEWHISTORY[_v][_vv].kView = Math.pow(1-_v/$_VIEWHISTORY.length, 3)*90 - _vv/$_VIEWHISTORY[_v].length + 1>> <</if>> <</for>> <</for>> <<UpdateArrays>> <<for _i to 0; _i < $_OBJECTS.length; _i++>> <<set $_OBJECTS[_i].kNotable = ($_OBJECTS[_i].isNotable[0] + $_OBJECTS[_i].isNotable[1] + $_OBJECTS[_i].isNotable[2] + $_OBJECTS[_i].isNotable[3])*90>> <<set $_OBJECTS[_i].kAttract = $_OBJECTS[_i].kFocus + $_OBJECTS[_i].kView + $_OBJECTS[_i].kNotable*0.5>> <</for>> <<script>> State.variables._OBJECTS.sort((a, b) => b.kAttract - a.kAttract); <</script>> <<script>> State.variables._SCOPE.sort((a, b) => b.kAttract - a.kAttract); <</script>> <</widget>> /% db ;MM: ,V^MM. `7MMpdMAo.`7MMpdMAo. .gP"Ya ,6"Yb. `7Mb,od8 .gP"Ya `7MMpMMMb. ,p6"bo .gP"Ya ,M `MM MM `Wb MM `Wb ,M' Yb 8) MM MM' "',M' Yb MM MM 6M' OO ,M' Yb AbmmmqMA MM M8 MM M8 8M"""""" ,pm9MM MM 8M"""""" MM MM 8M 8M"""""" A' VML MM ,AP MM ,AP YM. , 8M MM MM YM. , MM MM YM. , YM. , .AMA. .AMMA. MMbmmd' MMbmmd' `Mbmmd' `Moo9^Yo..JMML. `Mbmmd'.JMML JMML.YMbmd' `Mbmmd' MM MM .JMML. .JMML. %/
<<widget "DarkTheme">> <<set $Theme = "DarkTheme">> <<removeclass "body">> <<addclass "body" "darktheme">> <</widget>> <<widget "LightTheme">> <<set $Theme = "LightTheme">> <<removeclass "body">> <<addclass "body" "lighttheme">> <</widget>> /% ,, ,... ,... `7MM"""Yb. db .d' "".d' "" mm MM `Yb. dM` dM` MM MM `Mb `7MM mMMmm mMMmm.gP"Ya `7Mb,od8 .gP"Ya `7MMpMMMb.mmMMmm MM MM MM MM MM ,M' Yb MM' "',M' Yb MM MM MM MM ,MP MM MM MM 8M"""""" MM 8M"""""" MM MM MM MM ,dP' MM MM MM YM. , MM YM. , MM MM MM .JMMmmmdP' .JMML..JMML..JMML.`Mbmmd'.JMML. `Mbmmd'.JMML JMML.`Mbmo %/
/% 888888 dP"Yb dP""b8 88 88 .dP"Y8 88 88 88 .dP"Y8 888888 dP"Yb 88""Yb Yb dP 88 88 88""Yb 8888b. db 888888 888888 88__ dP Yb dP `" 88 88 `Ybo." 88 88 88 `Ybo." 88 dP Yb 88__dP YbdP 88 88 88__dP 8I Yb dPYb 88 88__ 88"" Yb dP Yb Y8 8P o.`Y8b 888888 88 o.`Y8b 88 Yb dP 88"Yb 8P Y8 8P 88""" 8I dY dP__Yb 88 88"" 88 YbodP YboodP `YbodP' 8bodP' 88 88 88 8bodP' 88 YbodP 88 Yb dP `YbodP' 88 8888Y" dP""""Yb 88 888888 %/ /% виджет обновления истории фокусов %/ /% $args[0] = объект в фокусе для учёта в истории %/ <<widget "FocusHistoryUpdate">> <<if $_FOCUSHISTORY.includes($args[0])>> <<set $_FOCUSHISTORY.delete($args[0])>> <</if>> <<set $_FOCUSHISTORY.unshift($args[0])>> /% Кроме фокуса добавляем объект и в текущий вид тоже <<CurrentViewAdd $args[0]>>%/ <</widget>> /% dP""b8 88 88 88""Yb 88""Yb 888888 88b 88 888888 Yb dP 88 888888 Yb dP db 8888b. 8888b. dP `" 88 88 88__dP 88__dP 88__ 88Yb88 88 Yb dP 88 88__ Yb db dP dPYb 8I Yb 8I Yb Yb Y8 8P 88"Yb 88"Yb 88"" 88 Y88 88 YbdP 88 88"" YbdPYbdP dP__Yb 8I dY 8I dY YboodP `YbodP' 88 Yb 88 Yb 888888 88 Y8 88 YP 88 888888 YP YP dP""""Yb 8888Y" 8888Y" %/ /% виджет наполнения списка объектов текущего вида %/ /% $args[0] = объект, на который есть ссылка в тексте %/ <<widget "CurrentViewAdd">> <<if $_VIEWCURRENT.includes($args[0])>> <<set $_VIEWCURRENT.delete($args[0])>> <</if>> <<set $_VIEWCURRENT.unshift($args[0])>> <</widget>> /% Yb dP 88 888888 Yb dP 88 88 88 .dP"Y8 888888 dP"Yb 88""Yb Yb dP 88 88 88""Yb 8888b. db 888888 888888 Yb dP 88 88__ Yb db dP 88 88 88 `Ybo." 88 dP Yb 88__dP YbdP 88 88 88__dP 8I Yb dPYb 88 88__ YbdP 88 88"" YbdPYbdP 888888 88 o.`Y8b 88 Yb dP 88"Yb 8P Y8 8P 88""" 8I dY dP__Yb 88 88"" YP 88 888888 YP YP 88 88 88 8bodP' 88 YbodP 88 Yb dP `YbodP' 88 8888Y" dP""""Yb 88 888888 %/ /% виджет обновления истории виденных объектов %/ /% $args[0] = объект, на который есть ссылка в тексте %/ <<widget "ViewHistoryUpdate">> <<set $_VIEWHISTORY.unshift($_VIEWCURRENT)>> /% Добавляем слепок вида в начало истории, %/ <<if $_VIEWHISTORY.length > 10>> /% Если длина истории больше нужного ... %/ <<set $_VIEWHISTORY.splice(-1,1)>> /% ...удаляем последний элемент в списке истории видов %/ <</if>> <<set $_VIEWCURRENT = []>> /% Очищаем текущий вид %/ <</widget>> /% 88 88 88""Yb 8888b. db 888888 888888 db 88""Yb 88""Yb db Yb dP .dP"Y8 88 88 88__dP 8I Yb dPYb 88 88__ dPYb 88__dP 88__dP dPYb YbdP `Ybo." Y8 8P 88""" 8I dY dP__Yb 88 88"" dP__Yb 88"Yb 88"Yb dP__Yb 8P o.`Y8b `YbodP' 88 8888Y" dP""""Yb 88 888888 dP""""Yb 88 Yb 88 Yb dP""""Yb dP 8bodP' %/ <<widget "UpdateArrays">> /% Обновление массива всех-всех объектов %/ <<for _i to 0; _i < $_OBJECTS.length; _i++>> <<= "<<set $_OBJECTS[_i] = $"+$_OBJECTS[_i].ID+">>">> <</for>> /% Обновление массива объектов, достижимых для игрока %/ <<set $_SCOPE = []>> <<for _i to 0; _i < $_OBJECTS.length; _i++>> <<if $_OBJECTS[_i].Parent == $player.Parent>> /% Если родитель объекта такой же как у ГГ %/ <<if !$_OBJECTS[_i].isHidden && $_OBJECTS[_i].kView > 0>> /% Если объект не скрыт и упоминался в описаниях... %/ <<set $_SCOPE.push($_OBJECTS[_i])>> /% ...добавляем объект к достижимым %/ <</if>> <<if $_OBJECTS[_i].Children.length > 0>> /% Проверяем детей объекта %/ <<if $_OBJECTS[_i].isOpen || $_OBJECTS[_i].isSightPenetrable || $_OBJECTS[_i].isSoundPenetrable || $_OBJECTS[_i].isSmellPenetrable || $_OBJECTS[_i].isTouchPenetrable>> <<for _c to 0; _c < $_OBJECTS[_i].Children.length; _c++>> <<= "<<set _ch = $"+$_OBJECTS[_i].Children[_c]+">>">> <<if !_ch.isHidden && _ch.kView > 0>> <<set $_SCOPE.push(_ch)>> <</if>> <<if _ch.Children.length > 0>> /% Проверяем детей детей объекта %/ <<if _ch.isOpen || _ch.isSightPenetrable || _ch.isSoundPenetrable || _ch.isSmellPenetrable || _ch.isTouchPenetrable>> <<for _cc to 0; _cc < _ch.Children.length; _cc++>> <<= "<<set _chch = $"+_ch.Children[_cc]+">>">> <<if !_chch.isHidden && _chch.kView > 0>> <<set $_SCOPE.push(_chch)>> <</if>> <</for>> <</if>> <</if>> <</for>> <</if>> <</if>> <</if>> <</for>> /% Обновление доступности глаголов у объектов %/ <<for _i to 0; _i < $_SCOPE.length; _i++>> <<set _o = $_SCOPE[_i]>> <<= "<<set _p = $"+_o.Parent+">>">> /% INVENTORY %/ <<if _o != $player>> /% Если объект не ГГ %/ <<set _o.Inventory.Available = 0>> /% ...«Инвентарь» = 0 %/ <<else>> <<if _o.Children.length == 0>> /% Если у объекта нет детей %/ <<set _o.Inventory.Available = 0>> /% ...«Инвентарь» = 0 %/ <<else>> <<set _o.Inventory.Available = 100>> /% ...иначе «Инвентарь» = 100 %/ <</if>> <</if>> /% LOOK %/ <<if _p.isOpen || _p.isSightPenetrable>> /% Если родитель объекта открыт или проницаем для взгляда %/ <<if _o.Examined == 0>> /% Если объект ни разу не осмотрен... %/ <<set _o.Look.Available = _o.isNotable[0]*10 + 9>> /% ...приоритет у «Осмотреть» +9 %/ <<else>> <<set _o.Look.Available = _o.isNotable[0]*10 + 5>> /% ...иначе +5 %/ <</if>> <</if>> /% TAKE %/ <<if _o == $player>> /% Если объект — ГГ %/ <<set _o.Take.Available = 0>> /% ...«Взять» = 0 %/ <<else>> <<if _p == $player>> /% Если родитель объекта — ГГ %/ <<set _o.Take.Available = 0>> /% ...«Взять» = 0 %/ <<else>> <<if !_p.isOpen>> /% Если родитель объекта закрыт %/ <<set _o.Take.Available = 0>> /% ...«Взять» = 0 %/ <<else>> <<if _o.isNear < 3>> /% Если объект не рядом %/ <<set _o.Take.Available = 0>> /% ...«Взять» = 0 %/ <<else>> <<if !_o.isTakeable>> /% Если объект нельзя брать %/ <<set _o.Take.Available = 0>> /% ...«Взять» = 0 %/ <<else>> <<set _o.Take.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет у «Взять» +1 %/ <</if>> <</if>> <</if>> <</if>> <</if>> /% DROP %/ <<if _p != $player>> /% Если родитель объекта — не ГГ %/ <<set _o.Drop.Available = 0>> /% ...«Бросить» = 0 %/ <<else>> <<set _o.Drop.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет у Бросить» +1 %/ <</if>> /% LISTEN %/ <<if !_p.isOpen && !_p.isSoundPenetrable>> /% Если родитель объекта закрыт и не проницаем для звуков %/ <<set _o.Listen.Available = 0>> /% ...«Слушать» = 0 %/ <<else>> <<if _o.isNear == 0>> /% Если объект далеко %/ <<set _o.Listen.Available = 0>> /% ...«Слушать» = 0 %/ <<else>> <<set _o.Listen.Available = _o.isNotable[1]*10>> /% ...иначе приоритет у «Слушать» %/ <</if>> <</if>> /% OPEN %/ <<if !_p.isOpen>> /% Если родитель объекта закрыт %/ <<set _o.Open.Available = 0>> /% ...«Открыть» = 0 %/ <<else>> <<if _o.isNear < 3>> /% Если объект не рядом %/ <<set _o.Open.Available = 0>> /% ...«Открыть» = 0 %/ <<else>> <<if !_o.isOpenable>> /% Если объект нельзя открывать %/ <<set _o.Open.Available = 0>> /% ...«Открыть» = 0 %/ <<else>> <<if _o.isOpen>> /% Если объект уже открыт %/ <<set _o.Open.Available = 0>> /% ...«Открыть» = 0 %/ <<else>> <<set _o.Open.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет «Открыть» +1 %/ <</if>> <</if>> <</if>> <</if>> /% CLOSE %/ <<if !_p.isOpen>> /% Если родитель объекта закрыт %/ <<set _o.Close.Available = 0>> /% ...«Закрыть» = 0 %/ <<else>> <<if _o.isNear < 3>> /% Если объект не рядом %/ <<set _o.Close.Available = 0>> /% ...«Закрыть» = 0 %/ <<else>> <<if !_o.isOpenable>> /% Если объект нельзя открывать %/ <<set _o.Close.Available = 0>> /% ...«Закрыть» = 0 %/ <<else>> <<if !_o.isOpen>> /% Если объект уже закрыт %/ <<set _o.Close.Available = 0>> /% ...«Закрыть» = 0 %/ <<else>> <<set _o.Close.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет «Закрыть» +1 %/ <</if>> <</if>> <</if>> <</if>> /% SWITCHON %/ <<if !_p.isOpen>> /% Если родитель объекта закрыт %/ <<set _o.SwitchOn.Available = 0>> /% ...«Включить» = 0 %/ <<else>> <<if _o.isNear < 3>> /% Если объект не рядом %/ <<set _o.SwitchOn.Available = 0>> /% ...«Включить» = 0 %/ <<else>> <<if !_o.isSwitchable>> /% Если объект нельзя включать %/ <<set _o.SwitchOn.Available = 0>> /% ...«Включить» = 0 %/ <<else>> <<if _o.isOn>> /% Если объект уже включен %/ <<set _o.SwitchOn.Available = 0>> /% ...«Включить» = 0 %/ <<else>> <<set _o.SwitchOn.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет «Включить» +1 %/ <</if>> <</if>> <</if>> <</if>> /% SWITCHOFF %/ <<if !_p.isOpen>> /% Если родитель объекта закрыт %/ <<set _o.SwitchOff.Available = 0>> /% ...«Выключить» = 0 %/ <<else>> <<if _o.isNear < 3>> /% Если объект не рядом %/ <<set _o.SwitchOff.Available = 0>> /% ...«Выключить» = 0 %/ <<else>> <<if !_o.isSwitchable>> /% Если объект нельзя включать %/ <<set _o.SwitchOff.Available = 0>> /% ...«Выключить» = 0 %/ <<else>> <<if !_o.isOn>> /% Если объект уже выключен %/ <<set _o.SwitchOff.Available = 0>> /% ...«Выключить» = 0 %/ <<else>> <<set _o.SwitchOff.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет «Выключить» +1 %/ <</if>> <</if>> <</if>> <</if>> /% TUNE %/ <<if !_p.isOpen>> /% Если родитель объекта закрыт %/ <<set _o.Tune.Available = 0>> /% ...«Настроить» = 0 %/ <<else>> <<if _o.isNear < 3>> /% Если объект не рядом %/ <<set _o.Tune.Available = 0>> /% ...«Настроить» = 0 %/ <<else>> <<if !_o.isTuneable>> /% Если объект нельзя настраивать %/ <<set _o.Tune.Available = 0>> /% ...«Настроить» = 0 %/ <<else>> <<if _o.isSwitchable && !_o.isOn>> /% Если объект можно включаить и он выключен %/ <<set _o.Tune.Available = 0>> /% ...«Настроить» = 0 %/ <<else>> <<set _o.Tune.Available = _o.isNotable[3]*10 + 1>> /% ...иначе приоритет «Настроить» +1 %/ <</if>> <</if>> <</if>> <</if>> <<set _o.Verbs = [_o.Inventory, _o.Look, _o.Take, _o.Drop, _o.Listen, _o.Open, _o.Close, _o.SwitchOn, _o.SwitchOff, _o.Tune]>> <<script>> State.temporary.o.Verbs.sort((a, b) => b.Available - a.Available); <</script>> <</for>> <</widget>> /% 88""Yb 88""Yb dP"Yb 88b 88 dP"Yb 88 88 88b 88 88__dP 88__dP dP Yb 88Yb88 dP Yb 88 88 88Yb88 88""" 88"Yb Yb dP 88 Y88 Yb dP Y8 8P 88 Y88 88 88 Yb YbodP 88 Y8 YbodP `YbodP' 88 Y8 %/ <<widget "Pronoun">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set $_PRONOUN.Nom = "я">> <<set $_PRONOUN.Gen = "меня">> <<set $_PRONOUN.Dat = "мне">> <<set $_PRONOUN.Acc = "меня">> <<set $_PRONOUN.Ins = "мной">> <<set $_PRONOUN.Pre = "мне">> <<case "P">> <<set $_PRONOUN.Nom = "мы">> <<set $_PRONOUN.Gen = "нас">> <<set $_PRONOUN.Dat = "нам">> <<set $_PRONOUN.Acc = "нас">> <<set $_PRONOUN.Ins = "нами">> <<set $_PRONOUN.Pre = "нас">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set $_PRONOUN.Nom = "ты">> <<set $_PRONOUN.Gen = "тебя">> <<set $_PRONOUN.Dat = "тебе">> <<set $_PRONOUN.Acc = "тебя">> <<set $_PRONOUN.Ins = "тобой">> <<set $_PRONOUN.Pre = "тебе">> <<case "P">> <<set $_PRONOUN.Nom = "вы">> <<set $_PRONOUN.Gen = "вас">> <<set $_PRONOUN.Dat = "вам">> <<set $_PRONOUN.Acc = "вас">> <<set $_PRONOUN.Ins = "вами">> <<set $_PRONOUN.Pre = "вас">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M">> <<set $_PRONOUN.Nom = "он">> <<set $_PRONOUN.Gen = "его">> <<set $_PRONOUN.Dat = "ему">> <<set $_PRONOUN.Acc = "его">> <<set $_PRONOUN.Ins = "им">> <<set $_PRONOUN.Pre = "нём">> <<case "F">> <<set $_PRONOUN.Nom = "она">> <<set $_PRONOUN.Gen = "её">> <<set $_PRONOUN.Dat = "ей">> <<set $_PRONOUN.Acc = "её">> <<set $_PRONOUN.Ins = "ею">> <<set $_PRONOUN.Pre = "ней">> <<case "N">> <<set $_PRONOUN.Nom = "оно">> <<set $_PRONOUN.Gen = "его">> <<set $_PRONOUN.Dat = "ему">> <<set $_PRONOUN.Acc = "его">> <<set $_PRONOUN.Ins = "им">> <<set $_PRONOUN.Pre = "нём">> <<case "P">> <<set $_PRONOUN.Nom = "они">> <<set $_PRONOUN.Gen = "их">> <<set $_PRONOUN.Dat = "им">> <<set $_PRONOUN.Acc = "их">> <<set $_PRONOUN.Ins = "им">> <<set $_PRONOUN.Pre = "них">> <</switch>> <</switch>> <</widget>> /% 88 88 dP""b8 db .dP"Y8 888888 88 88 dP `" dPYb `Ybo." 88__ Y8 8P Yb dP__Yb o.`Y8b 88"" `YbodP' YboodP dP""""Yb 8bodP' 888888 %/ <<widget "UCase">> <<set _s = "">> <<for _i to 0; _i lt $args[0].length; _i++>> <<if /[a-zа-я]/i.test($args[0].charAt(_i))>> <<set _u = $args[0].charAt(_i).toUpperCase() + $args[0].slice(_i+1)>> <<break>> <<else>> <<set _s = _s+$args[0].charAt(_i)>> <</if>> <</for>> <<= "<<set "+$args[1]+" = _s+_u>>">> <</widget>> /% 88 88 88""Yb 8888b. db 888888 888888 888888 88 8b d8 888888 88""Yb .dP"Y8 88 88 88__dP 8I Yb dPYb 88 88__ 88 88 88b d88 88__ 88__dP `Ybo." Y8 8P 88""" 8I dY dP__Yb 88 88"" 88 88 88YbdP88 88"" 88"Yb o.`Y8b `YbodP' 88 8888Y" dP""""Yb 88 888888 88 88 88 YY 88 888888 88 Yb 8bodP' %/ <<widget "UpdateTimers">> <<set $_TIMER++>> <<set $_LOC.Timer++>> <</widget>>
/% MMP""MM""YMM `7MN. `7MF'`7MM"""Yp, P' MM `7 MMN. M MM Yb MM M YMb M MM dP MM M `MN. M MM"""bg. MM M `MM.M MM `Y MM M YMM MM ,9 .JMML. .JML. YM .JMMmmmd9 %/ /% 88 88b 88 Yb dP 888888 88b 88 888888 dP"Yb 88""Yb Yb dP 88 88Yb88 Yb dP 88__ 88Yb88 88 dP Yb 88__dP YbdP 88 88 Y88 YbdP 88"" 88 Y88 88 Yb dP 88"Yb 8P 88 88 Y8 YP 888888 88 Y8 88 YbodP 88 Yb dP %/ /% «Инвентарь» %/ /% $args[0] = объект с инвентарём %/ <<widget "Inventory">> <<if $args[0].Inventory.Link != "NULL">> <<set _linkText = $args[0].Inventory.Link>> <<else>> <<set _linkText = "Инвентарь">> <</if>> <p @class = "'link act '+$args[0].ID+'Inventory'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Inventory.Act != "NULL">> <<include $args[0].Inventory.Act>> <<else>> <<InventoryAct $args[0]>> <</if>> <<if $args[0].Inventory.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Inventory.Outcome).processText()>> <<else>> <<InventoryOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Inventory.AfterAct != "NULL">> <<include $args[0].Inventory.AfterAct>> <<else>> <<InventoryAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "InventoryAct">> <<if $args[0].Inventory.AddAct != "NULL">> <<include $args[0].Inventory.AddAct>> <</if>> <</widget>> <<widget "InventoryOutcome">> <<set _txt = "С собой у " + ($player.NameG ? $player.NameG : $_PRONOUN.Gen)>> <<if $_TIME == "present">> <<set _txt += ": ">> <<else>> <<if $args[0].Children.length == 1>> <<= "<<set _c1 = $"+$args[0].Children[0]+">>">> <<if $_TIME == "past">> <<switch _c1.Sex>> <<case "M">> <<set _txt += " был ">> <<case "F">> <<set _txt += " была ">> <<case "N">> <<set _txt += " было ">> <<case "P">> <<set _txt += " были ">> <</switch>> <<else>> <<switch _c1.Sex>> <<case "M" "F" "N">> <<set _txt += " будет ">> <<case "P">> <<set _txt += " будут ">> <</switch>> <</if>> <<else>> <<if $_TIME == "past">> <<set _txt += " были ">> <<else>> <<set _txt += " будут ">> <</if>> <</if>> <</if>> <<for _i to 0; _i < $args[0].Children.length; _i++>> <<= "<<set _ch = $"+$args[0].Children[_i]+">>">> <<set _txt += _ch.Name>> <<CurrentViewAdd _ch>> <<if _ch.Children.length > 0 && (_ch.isOpen || _ch.isSightPenetrable)>> <<set _txt += " (">> <<for _ii to 0; _ii < _ch.Children.length; _ii++>> <<= "<<set _chch = $"+_ch.Children[_ii]+">>">> <<set _txt += _chch.Name>> <<CurrentViewAdd _chch>> <<if _chch.Children.length > 0 && (_chch.isOpen || _chch.isSightPenetrable)>> <<set _txt += " (">> <<for _iii to 0; _iii < _chch.Children.length; _iii++>> <<= "<<set _chchchch = $"+_chch.Children[_iii]+">>">> <<set _txt += _chchchch.Name>> <<CurrentViewAdd _chchchch>> <<if _iii < _chch.Children.length - 1>> <<set _txt += ", ">> <</if>> <</for>> <<set _txt += ")">> <</if>> <<if _ii < _ch.Children.length - 1>> <<set _txt += ", ">> <</if>> <</for>> <<set _txt += ")">> <</if>> <<if _i < $args[0].Children.length - 2>> <<set _txt += ", ">> <<elseif _i < $args[0].Children.length - 1>> <<set _txt += " и ">> <</if>> <</for>> <<set $actOutcome = _txt + ".">> <</widget>> <<widget "InventoryAfterAct">> <</widget>> /% 88 dP"Yb dP"Yb 88 dP 88 dP Yb dP Yb 88odP 88 .o Yb dP Yb dP 88"Yb 88ood8 YbodP YbodP 88 Yb %/ /% «Осмотреть» %/ /% $args[0] = объект для осмотра %/ <<widget "Look">> <<if $args[0].Look.Link != "NULL">> <<set _linkText = $args[0].Look.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Осмотреть "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Look'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Look.Act != "NULL">> <<include $args[0].Look.Act>> <<else>> <<LookAct $args[0]>> <</if>> <<if $args[0].Look.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Look.Outcome).processText()>> <<else>> <<LookOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Look.AfterAct != "NULL">> <<include $args[0].Look.AfterAct>> <<else>> <<LookAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "LookAct">> <<set $args[0].Examined++>> <<if $args[0].Look.AddAct != "NULL">> <<include $args[0].Look.AddAct>> <</if>> <</widget>> <<widget "LookOutcome">> <<if $args[0].Children.length > 0 && ($args[0].isOpen || $args[0].isSightPenetrable)>> <<set _ch = " Внутри">> <<if $_TIME == "present">> <<set _ch += ": ">> <<else>> <<if $args[0].Children.length == 1>> <<= "<<set _c1 = $"+$args[0].Children[0]+">>">> <<if $_TIME == "past">> <<switch _c1.Sex>> <<case "M">> <<set _ch += " был ">> <<case "F">> <<set _ch += " была ">> <<case "N">> <<set _ch += " было ">> <<case "P">> <<set _ch += " были ">> <</switch>> <<else>> <<switch _c1.Sex>> <<case "M" "F" "N">> <<set _ch += " будет ">> <<case "P">> <<set _ch += " будут ">> <</switch>> <</if>> <<else>> <<if $_TIME == "past">> <<set _ch += " были ">> <<else>> <<set _ch += " будут ">> <</if>> <</if>> <</if>> <<for _i to 0; _i < $args[0].Children.length; _i++>> <<= "<<set _ch += $"+$args[0].Children[_i]+".Name>>">> <<= "<<CurrentViewAdd $"+$args[0].Children[_i]+">>">> <<if _i < $args[0].Children.length - 2>> <<set _ch += ", ">> <<elseif _i < $args[0].Children.length - 1>> <<set _ch += " и ">> <</if>> <</for>> <<set $actOutcome = _ch + ".">> <<else>> <<if $args[0] == $player && !$player.NameP>> <<set _o = $_PRONOUN.Pre>> <<else>> <<set _o = $args[0].NameP>> <</if>> <<switch $_TIME>> <<case "past">> <<set _v = "не было">> <<case "present">> <<set _v = "нет">> <<case "future">> <<set _v = "не будет">> <</switch>> <<set $actOutcome = "В "+_o+" "+_v+" ничего необычного.">> <</if>> <</widget>> <<widget "LookAfterAct">> <</widget>> /% 888888 db 88 dP 888888 88 dPYb 88odP 88__ 88 dP__Yb 88"Yb 88"" 88 dP""""Yb 88 Yb 888888 %/ /% «Взять» %/ /% $args[0] = объект для взятия %/ <<widget "Take">> <<if $args[0].Take.Link != "NULL">> <<set _linkText = $args[0].Take.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Взять "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Take'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Take.Act != "NULL">> <<include $args[0].Take.Act>> <<else>> <<TakeAct $args[0]>> <</if>> <<if $args[0].Take.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Take.Outcome).processText()>> <<else>> <<TakeOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Take.AfterAct != "NULL">> <<include $args[0].Take.AfterAct>> <<else>> <<TakeAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "TakeAct">> <<moveobj $args[0] $player>> <<set $args[0].justTook = true>> <<if $args[0].Take.AddAct != "NULL">> <<include $args[0].Take.AddAct>> <</if>> <</widget>> <<widget "TakeOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "взял">> <<case "F">> <<set _v = "взяла">> <<case "N">> <<set _v = "взяло">> <<case "P">> <<set _v = "взяли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "беру">> <<case "P">> <<set _v = "берём">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "берёшь">> <<case "P">> <<set _v = "берёте">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "берёт">> <<case "P">> <<set _v = "берут">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "возьму">> <<case "P">> <<set _v = "возьмём">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "возьмёшь">> <<case "P">> <<set _v = "возьмёте">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "возьмёт">> <<case "P">> <<set _v = "возьмут">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set $actOutcome = _s + " " + _v + " " + _o + ".">> <</widget>> <<widget "TakeAfterAct">> <<set $args[0].justTook = false>> <</widget>> /% 8888b. 88""Yb dP"Yb 88""Yb 8I Yb 88__dP dP Yb 88__dP 8I dY 88"Yb Yb dP 88""" 8888Y" 88 Yb YbodP 88 %/ /% «Бросить» %/ /% $args[0] = выбрасываемый объект %/ <<widget "Drop">> <<if $args[0].Drop.Link != "NULL">> <<set _linkText = $args[0].Drop.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Бросить "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Drop'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Drop.Act != "NULL">> <<include $args[0].Drop.Act>> <<else>> <<DropAct $args[0]>> <</if>> <<if $args[0].Drop.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Drop.Outcome).processText()>> <<else>> <<DropOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Drop.AfterAct != "NULL">> <<include $args[0].Drop.AfterAct>> <<else>> <<DropAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "DropAct">> <<moveobj $args[0] $_LOC>> <<if $args[0].Drop.AddAct != "NULL">> <<include $args[0].Drop.AddAct>> <</if>> <</widget>> <<widget "DropOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "бросил">> <<case "F">> <<set _v = "бросила">> <<case "N">> <<set _v = "бросило">> <<case "P">> <<set _v = "бросили">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросаю">> <<case "P">> <<set _v = "бросаем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросаешь">> <<case "P">> <<set _v = "бросаете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросает">> <<case "P">> <<set _v = "бросают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "брошу">> <<case "P">> <<set _v = "бросим">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросишь">> <<case "P">> <<set _v = "бросите">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросит">> <<case "P">> <<set _v = "бросят">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set $actOutcome = _s + " " + _v + " " + _o + ".">> <</widget>> <<widget "DropAfterAct">> <</widget>> /% 88 88 .dP"Y8 888888 888888 88b 88 88 88 `Ybo." 88 88__ 88Yb88 88 .o 88 o.`Y8b 88 88"" 88 Y88 88ood8 88 8bodP' 88 888888 88 Y8 %/ /% «Слушать» %/ /% $args[0] = объект для слушания %/ <<widget "Listen">> <<if $args[0].Listen.Link != "NULL">> <<set _linkText = $args[0].Listen.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Слушать "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Listen'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Listen.Act != "NULL">> <<include $args[0].Listen.Act>> <<else>> <<ListenAct $args[0]>> <</if>> <<if $args[0].Listen.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Listen.Outcome).processText()>> <<else>> <<ListenOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Listen.AfterAct != "NULL">> <<include $args[0].Listen.AfterAct>> <<else>> <<ListenAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "ListenAct">> <<set $args[0].Listened++>> <<if $args[0].Listen.AddAct != "NULL">> <<include $args[0].Listen.AddAct>> <</if>> <</widget>> <<widget "ListenOutcome">> <<switch $_TIME>> <<case "past">> <<set _v = "не было">> <<case "present">> <<set _v = "нет">> <<case "future">> <<set _v = "не будет">> <</switch>> <<set $actOutcome = "Никаких необычных звуков "+_v+".">> <</widget>> <<widget "ListenAfterAct">> <</widget>> /% dP"Yb 88""Yb 888888 88b 88 dP Yb 88__dP 88__ 88Yb88 Yb dP 88""" 88"" 88 Y88 YbodP 88 888888 88 Y8 %/ /% «Открыть» %/ /% $args[0] = объект для открытия %/ <<widget "Open">> <<if $args[0].Open.Link != "NULL">> <<set _linkText = $args[0].Open.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Открыть "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Open'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Open.Act != "NULL">> <<include $args[0].Open.Act>> <<else>> <<OpenAct $args[0]>> <</if>> <<if $args[0].Open.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Open.Outcome).processText()>> <<else>> <<OpenOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Open.AfterAct != "NULL">> <<include $args[0].Open.AfterAct>> <<else>> <<OpenAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "OpenAct">> <<set $args[0].isOpen = true>> <<set $args[0].justOpened = true>> <<if $args[0].Open.AddAct != "NULL">> <<include $args[0].Open.AddAct>> <</if>> <</widget>> <<widget "OpenOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "открыл">> <<case "F">> <<set _v = "открыла">> <<case "N">> <<set _v = "открыло">> <<case "P">> <<set _v = "открыли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открываю">> <<case "P">> <<set _v = "открываем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открываешь">> <<case "P">> <<set _v = "открываете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открывает">> <<case "P">> <<set _v = "открывают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открою">> <<case "P">> <<set _v = "откроем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "откроешь">> <<case "P">> <<set _v = "откроете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "откроет">> <<case "P">> <<set _v = "откроют">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set _ch = "">> <<if $args[0].Children.length > 0>> <<set _ch = ". Внутри">> <<if $_TIME == "present">> <<set _ch += ": ">> <<else>> <<if $args[0].Children.length == 1>> <<= "<<set _c1 = $"+$args[0].Children[0]+">>">> <<if $_TIME == "past">> <<switch _c1.Sex>> <<case "M">> <<set _ch += " был ">> <<case "F">> <<set _ch += " была ">> <<case "N">> <<set _ch += " было ">> <<case "P">> <<set _ch += " были ">> <</switch>> <<else>> <<switch _c1.Sex>> <<case "M" "F" "N">> <<set _ch += " будет ">> <<case "P">> <<set _ch += " будут ">> <</switch>> <</if>> <<else>> <<if $_TIME == "past">> <<set _ch += " были ">> <<else>> <<set _ch += " будут ">> <</if>> <</if>> <</if>> <<for _i to 0; _i < $args[0].Children.length; _i++>> <<= "<<set _ch += $"+$args[0].Children[_i]+".Name>>">> <<= "<<CurrentViewAdd $"+$args[0].Children[_i]+">>">> <<if _i < $args[0].Children.length - 2>> <<set _ch += ", ">> <<elseif _i < $args[0].Children.length - 1>> <<set _ch += " и ">> <</if>> <</for>> <</if>> <<set $actOutcome = _s + " " + _v + " " + _o + _ch + ".">> <</widget>> <<widget "OpenAfterAct">> <<set $args[0].justOpened = false>> <</widget>> /% dP""b8 88 dP"Yb .dP"Y8 888888 dP `" 88 dP Yb `Ybo." 88__ Yb 88 .o Yb dP o.`Y8b 88"" YboodP 88ood8 YbodP 8bodP' 888888 %/ /% «Закрыть» %/ /% $args[0] = объект для закрытия %/ <<widget "Close">> <<if $args[0].Close.Link != "NULL">> <<set _linkText = $args[0].Close.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Закрыть "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Close'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Close.Act != "NULL">> <<include $args[0].Close.Act>> <<else>> <<CloseAct $args[0]>> <</if>> <<if $args[0].Close.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Close.Outcome).processText()>> <<else>> <<CloseOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Close.AfterAct != "NULL">> <<include $args[0].Close.AfterAct>> <<else>> <<CloseAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "CloseAct">> <<set $args[0].isOpen = false>> <<if $args[0].Close.AddAct != "NULL">> <<include $args[0].Close.AddAct>> <</if>> <</widget>> <<widget "CloseOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "закрыл">> <<case "F">> <<set _v = "закрыла">> <<case "N">> <<set _v = "закрыло">> <<case "P">> <<set _v = "закрыли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрываю">> <<case "P">> <<set _v = "закрываем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрываешь">> <<case "P">> <<set _v = "закрываете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрывает">> <<case "P">> <<set _v = "закрывают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрою">> <<case "P">> <<set _v = "закроем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закроешь">> <<case "P">> <<set _v = "закроете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закроет">> <<case "P">> <<set _v = "закроют">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set $actOutcome = _s + " " + _v + " " + _o + ".">> <</widget>> <<widget "CloseAfterAct">> <</widget>> /% .dP"Y8 Yb dP 88 888888 dP""b8 88 88 dP"Yb 88b 88 `Ybo." Yb db dP 88 88 dP `" 88 88 dP Yb 88Yb88 o.`Y8b YbdPYbdP 88 88 Yb 888888 Yb dP 88 Y88 8bodP' YP YP 88 88 YboodP 88 88 YbodP 88 Y8 %/ /% «Включить» %/ /% $args[0] = объект для закрытия %/ <<widget "SwitchOn">> <<if $args[0].SwitchOn.Link != "NULL">> <<set _linkText = $args[0].SwitchOn.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Включить "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'SwitchOn'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].SwitchOn.Act != "NULL">> <<include $args[0].SwitchOn.Act>> <<else>> <<SwitchOnAct $args[0]>> <</if>> <<if $args[0].SwitchOn.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].SwitchOn.Outcome).processText()>> <<else>> <<SwitchOnOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].SwitchOn.AfterAct != "NULL">> <<include $args[0].SwitchOn.AfterAct>> <<else>> <<SwitchOnAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "SwitchOnAct">> <<set $args[0].isOn = true>> <<if $args[0].SwitchOn.AddAct != "NULL">> <<include $args[0].SwitchOn.AddAct>> <</if>> <</widget>> <<widget "SwitchOnOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "включил">> <<case "F">> <<set _v = "включила">> <<case "N">> <<set _v = "включило">> <<case "P">> <<set _v = "включили">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "включаю">> <<case "P">> <<set _v = "включаем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "включаешь">> <<case "P">> <<set _v = "включаете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "включает">> <<case "P">> <<set _v = "включают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "включу">> <<case "P">> <<set _v = "включим">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "включишь">> <<case "P">> <<set _v = "включите">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "включит">> <<case "P">> <<set _v = "включат">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set $actOutcome = _s + " " + _v + " " + _o + ".">> <</widget>> <<widget "SwitchOnAfterAct">> <</widget>> /% .dP"Y8 Yb dP 88 888888 dP""b8 88 88 dP"Yb 888888 888888 `Ybo." Yb db dP 88 88 dP `" 88 88 dP Yb 88__ 88__ o.`Y8b YbdPYbdP 88 88 Yb 888888 Yb dP 88"" 88"" 8bodP' YP YP 88 88 YboodP 88 88 YbodP 88 88 %/ /% «Выключить» %/ /% $args[0] = объект для закрытия %/ <<widget "SwitchOff">> <<if $args[0].SwitchOff.Link != "NULL">> <<set _linkText = $args[0].SwitchOff.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Выключить "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'SwitchOff'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].SwitchOff.Act != "NULL">> <<include $args[0].SwitchOff.Act>> <<else>> <<SwitchOffAct $args[0]>> <</if>> <<if $args[0].SwitchOff.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].SwitchOff.Outcome).processText()>> <<else>> <<SwitchOffOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].SwitchOff.AfterAct != "NULL">> <<include $args[0].SwitchOff.AfterAct>> <<else>> <<SwitchOffAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "SwitchOffAct">> <<set $args[0].isOn = false>> <<if $args[0].SwitchOff.AddAct != "NULL">> <<include $args[0].SwitchOff.AddAct>> <</if>> <</widget>> <<widget "SwitchOffOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "выключил">> <<case "F">> <<set _v = "выключила">> <<case "N">> <<set _v = "выключило">> <<case "P">> <<set _v = "выключили">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "выключаю">> <<case "P">> <<set _v = "выключаем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "выключаешь">> <<case "P">> <<set _v = "выключаете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "выключает">> <<case "P">> <<set _v = "выключают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "выключу">> <<case "P">> <<set _v = "выключим">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "выключишь">> <<case "P">> <<set _v = "выключите">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "выключит">> <<case "P">> <<set _v = "выключат">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set $actOutcome = _s + " " + _v + " " + _o + ".">> <</widget>> <<widget "SwitchOffAfterAct">> <</widget>> /% 888888 88 88 88b 88 888888 88 88 88 88Yb88 88__ 88 Y8 8P 88 Y88 88"" 88 `YbodP' 88 Y8 888888 %/ /% «Настроить» %/ /% $args[0] = объект для закрытия %/ <<widget "Tune">> <<if $args[0].Tune.Link != "NULL">> <<set _linkText = $args[0].Tune.Link>> <<else>> <<if $args[0] == $player>> <<set _a = "себя">> <<else>> <<set _a = $args[0].NameA>> <</if>> <<set _linkText = "Настроить "+_a>> <</if>> <p @class = "'link act '+$args[0].ID+'Tune'"> <<capture _linkText, $args[0], $actOutcome>> <<button _linkText>> <<FocusHistoryUpdate $args[0]>> <<if $args[0].Tune.Act != "NULL">> <<include $args[0].Tune.Act>> <<else>> <<TuneAct $args[0]>> <</if>> <<if $args[0].Tune.Outcome != "NULL">> <<set $actOutcome = tale.get($args[0].Tune.Outcome).processText()>> <<else>> <<TuneOutcome $args[0]>> <</if>> <<ActRefresh $args[0] _linkText $actOutcome>> <<if $args[0].Tune.AfterAct != "NULL">> <<include $args[0].Tune.AfterAct>> <<else>> <<TuneAfterAct $args[0]>> <</if>> <</button>> <</capture>> </p> <</widget>> <<widget "TuneAct">> /%<<set $args[0].isOn = false>>%/ <<if $args[0].Tune.AddAct != "NULL">> <<include $args[0].Tune.AddAct>> <</if>> <</widget>> <<widget "TuneOutcome">> <<if $player.Name>> <<UCase $player.Name "_s">> <<else>> <<UCase $_PRONOUN.Nom "_s">> <</if>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "настроил">> <<case "F">> <<set _v = "настроила">> <<case "N">> <<set _v = "настроило">> <<case "P">> <<set _v = "настроили">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "настраиваю">> <<case "P">> <<set _v = "настраиваем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "настраиваешь">> <<case "P">> <<set _v = "настраиваете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "настраивает">> <<case "P">> <<set _v = "настраивают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "настрою">> <<case "P">> <<set _v = "настроим">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "настроишь">> <<case "P">> <<set _v = "настроите">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "настроит">> <<case "P">> <<set _v = "настроят">> <</switch>> <</switch>> <</switch>> <<set _o = $args[0].NameA>> <<set $actOutcome = _s + " " + _v + " " + _o + ".">> <</widget>> <<widget "TuneAfterAct">> <</widget>> /% ,, ,, ,, ,, ,, .g8""8q. *MM db mm `7MMM. ,MMF' db `7MM mm db .dP' `YM. MM MM MMMb dPMM MM MM dM' `MM MM,dMMb.`7MM .gP"Ya ,p6"bo mmMMmm ,pP"Ybd M YM ,M MM ,6"Yb. `7MMpMMMb. `7MM `7MMpdMAo.`7MM `7MM MM ,6"Yb.mmMMmm `7MM ,pW"Wq.`7MMpMMMb. MM MM MM `Mb MM ,M' Yb 6M' OO MM 8I `" M Mb M' MM 8) MM MM MM MM MM `Wb MM MM MM 8) MM MM MM 6W' `Wb MM MM MM. ,MP MM M8 MM 8M"""""" 8M MM `YMMMa. M YM.P' MM ,pm9MM MM MM MM MM M8 MM MM MM ,pm9MM MM MM 8M M8 MM MM `Mb. ,dP' MM. ,M9 MM YM. , YM. , MM L. I8 M `YM' MM 8M MM MM MM MM MM ,AP MM MM MM 8M MM MM MM YA. ,A9 MM MM `"bmmd"' P^YbmdP' MM `Mbmmd' YMbmd' `MbmoM9mmmP' .JML. `' .JMML.`Moo9^Yo..JMML JMML..JMML. MMbmmd' `Mbod"YML..JMML.`Moo9^Yo.`Mbmo.JMML.`Ybmd9'.JMML JMML. QO MP MM `bmP .JMML.%/ /% ### # # # # ### # # ## # # # ## # ## # # ## # # ## # # # # # ## %/ /% «Взять» %/ /% $args[0] = объект для взятия ($args[1] = глагол вместо «взять») %/ <<widget "Take1">> <<if $args[0].Parent != "player">> <<if $args[1]>> <<set $linktext = $args[1]+" "+$args[0].NameA>> <<else>> <<set $linktext = "Взять "+$args[0].NameA>> <</if>> <<if Story.has($args[0].Take)>> <<set $objectActResult = tale.get($args[0].Take).processText()>> <<else>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "взял">> <<case "F">> <<set _v = "взяла">> <<case "N">> <<set _v = "взяло">> <<case "P">> <<set _v = "взяли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "беру">> <<case "P">> <<set _v = "берём">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "берёшь">> <<case "P">> <<set _v = "берёте">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "берёт">> <<case "P">> <<set _v = "берут">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "возьму">> <<case "P">> <<set _v = "возьмём">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "возьмёшь">> <<case "P">> <<set _v = "возьмёте">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "возьмёт">> <<case "P">> <<set _v = "возьмут">> <</switch>> <</switch>> <</switch>> <<if $player.Name>> <<set _p = $player.Name>> <<else>> <<UCase $_PRONOUN.Nom "_p">> <</if>> <<set $objectActResult = _p+" "+_v+" "+$args[0].NameA+".">> <</if>> <<= "<span class='link act "+$args[0].Take+"'><<link '"+$linktext+"'>><<moveobj $"+$args[0].ID+" $player>><<ActRefresh $"+$args[0].ID+" '"+$linktext+"' '"+$objectActResult+"'>><</link>></span><br>">> <</if>> <</widget>> /% ### # # # # ### ## ### # # # # # # # # # # # # # # # ### # ## ### # %/ /% «Бросить» %/ /% $args[0] = объект для сброса ($args[1] = глагол вместо «бросить») %/ <<widget "Drop1">> <<if $args[0].Parent == "player">> <<if $args[1]>> <<set $linktext = $args[1]+" "+$args[0].NameA+" здесь">> <<else>> <<set $linktext = "Оставить "+$args[0].NameA+" здесь">> <</if>> <<if Story.has($args[0].Drop)>> <<set $objectActResult = tale.get($args[0].Drop).processText()>> <<else>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "бросил">> <<case "F">> <<set _v = "бросила">> <<case "N">> <<set _v = "бросило">> <<case "P">> <<set _v = "бросили">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросаю">> <<case "P">> <<set _v = "бросаем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросаешь">> <<case "P">> <<set _v = "бросаете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросает">> <<case "P">> <<set _v = "бросают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "брошу">> <<case "P">> <<set _v = "бросим">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросишь">> <<case "P">> <<set _v = "бросите">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "бросит">> <<case "P">> <<set _v = "бросят">> <</switch>> <</switch>> <</switch>> <<set $objectActResult = $PPnNom+" "+_v+" "+$args[0].NameA+".">> <</if>> <<= "<span class='link act "+$args[0].Drop+"'><<link '"+$linktext+"'>><<moveobj $"+$args[0].ID+" $loc>><<ActRefresh $"+$args[0].ID+" '"+$linktext+"' '"+$objectActResult+"'>><</link>></span><br>">> <</if>> <</widget>> /% ### # # # # ## # # ## # # ## ### # ## #### # # # # # ## # # ## # # # # # # ## # # ## # # ## # ## %/ /% Глагол с удалением объекта %/ /% $args[0] = объект для удаления $args[1] = имя действия $args[2] = имя параграфа с описанием действия %/ <<widget "Remove">> <<set $objectActResult = tale.get($args[2]).processText()>> <<set $objectAct = '<<Remove $'+$args[0].ID+' "'+$args[1]+'" "'+$args[2]+'">>'>> /% действие для создания ссылки на повтор !внимание на обратную вложенность кавычек! %/ <<= "<span class='link act "+$args[2]+"'><<link '"+$args[1]+"'>><<removeobj $"+$args[0].ID+">><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$objectActResult+"' '"+$objectAct+"'>><</link>></span><br>">> <</widget>> /% ## # # # # ### ## ### # # # # # ## # # # # # # ## # # ## ### ## # # # %/ /% «Открыть» %/ /% $args[0] = объект для открытия ($args[1] = текст вместо «Открыть объект») %/ <<widget "Open1">> <<if !$args[0].isOpen>> <<if $args[1]>> <<set $linktext = $args[1]>> <<else>> <<set $linktext = "Открыть "+$args[0].NameA>> <</if>> <<if Story.has($args[0].Open)>> <<set $objectActResult = tale.get($args[0].Open).processText()>> <<else>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "открыл">> <<case "F">> <<set _v = "открыла">> <<case "N">> <<set _v = "открыло">> <<case "P">> <<set _v = "открыли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открываю">> <<case "P">> <<set _v = "открываем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открываешь">> <<case "P">> <<set _v = "открываете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открывает">> <<case "P">> <<set _v = "открывают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "открою">> <<case "P">> <<set _v = "откроем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "откроешь">> <<case "P">> <<set _v = "откроете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "откроет">> <<case "P">> <<set _v = "откроют">> <</switch>> <</switch>> <</switch>> <<set $objectActResult = $PPnNom+" "+_v+" "+$args[0].NameA+".">> <</if>> <<= "<span class='link act "+$args[0].Open+"'><<link '"+$linktext+"'>><<openobj $"+$args[0].ID+">><<ActRefresh $"+$args[0].ID+" '"+$linktext+"' '"+$objectActResult+"'>><</link>></span><br>">> <</if>> <</widget>> /% ## ## # # # # # ## ### ## # # # # ## # ## # # # # # ## ## ## ### ## ### ## %/ /% «Закрыть» %/ /% $args[0] = объект для закрытия ($args[1] = текст вместо «Закрыть объект») %/ <<widget "Close1">> <<if $args[0].isOpen>> <<if $args[1]>> <<set $linktext = $args[1]>> <<else>> <<set $linktext = "Закрыть "+$args[0].NameA>> <</if>> <<if Story.has($args[0].Close)>> <<set $objectActResult = tale.get($args[0].Close).processText()>> <<else>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "закрыл">> <<case "F">> <<set _v = "закрыла">> <<case "N">> <<set _v = "закрыло">> <<case "P">> <<set _v = "закрыли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрываю">> <<case "P">> <<set _v = "закрываем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрываешь">> <<case "P">> <<set _v = "закрываете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрывает">> <<case "P">> <<set _v = "закрывают">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закрою">> <<case "P">> <<set _v = "закроем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закроешь">> <<case "P">> <<set _v = "закроете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "закроет">> <<case "P">> <<set _v = "закроют">> <</switch>> <</switch>> <</switch>> <<set $objectActResult = $PPnNom+" "+_v+" "+$args[0].NameA+".">> <</if>> <<= "<span class='link act "+$args[0].Close+"'><<link '"+$linktext+"'>><<closeobj $"+$args[0].ID+">><<ActRefresh $"+$args[0].ID+" '"+$linktext+"' '"+$objectActResult+"'>><</link>></span><br>">> <</if>> <</widget>> /% # # ## # ## # # # # ## # ## # # ## ### # ## # # #### # # # ## # # # # # # # # ## # # ## ## %/ /% Глагол без последствий — выводит только описание %/ /% $args[0] = объект с этим действием $args[1] = имя действия $args[2] = имя параграфа с описанием действия %/ <<widget "NoAct">> <<set $objectActResult = tale.get($args[2]).processText()>> <<= "<span class='link act "+$args[2]+"'><<link '"+$args[1]+"'>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$objectActResult+"'>><</link>></span><br>">> <</widget>> /% # # ## # ## ## # # # # # # ## # ## # # ## ### # # ### ## ## # ## # # #### # # # # # # # # ## # ## # # # # # # # # # # # ## # # ## # # ## ## ## # # ## ## %/ /% Глагол без последствий — выводит только описание и только один раз %/ /% $args[0] = объект с этим действием $args[1] = имя действия $args[2] = имя параграфа с описанием действия %/ <<widget "NoActOnce">> <<= "<<if $"+$args[2]+"_seen>><<set $NAO = $"+$args[2]+"_seen>><</if>>">> <<if !$NAO>> <<set $objectActResult = tale.get($args[2]).processText()>> <<= "<span class='link act "+$args[2]+"'><<link '"+$args[1]+"'>><<set $"+$args[2]+"_seen = true>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$objectActResult+"'>><</link>></span><br>">> <</if>> <<set $NAO = false>> <</widget>> /% ## # # # # # # ## ### #### # # # # # # # # ## ## %/ /% Глагол с некоторым кодом %/ /% $args[0] = объект с этим действием $args[1] = имя действия $args[2] = имя параграфа с описанием действия %/ <<widget "Act">> <<set $objectActResult = tale.get($args[2]).processText()>> <<if Story.has($args[2]+"Act")>> <<set $objectAct = $args[2]+"Act">> <<else>> <<set $objectAct = "NULL">> <</if>> <<if Story.has($args[2]+"AfterAct")>> /% !! highly experimental stuff !! %/ <<set $objectAfterAct = $args[2]+"AfterAct">> <<else>> <<set $objectAfterAct = "NULL">> <</if>> <<= "<span class='link act "+$args[2]+"'><<link '"+$args[1]+"'>><<include '"+$objectAct+"'>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$objectActResult+"'>><<include '"+$objectAfterAct+"'>><</link>></span><br>">> <</widget>> /% ## # ## # # # # # # # ## ### # # ### ## ## #### # # # # # # # # ## # # # # # # # # # ## # # ## ## ## # # ## ## %/ /% Одноразовый глагол с некоторым кодом %/ /% $args[0] = объект с этим действием $args[1] = имя действия $args[2] = имя параграфа с описанием действия %/ <<widget "ActOnce">> <<= "<<if $"+$args[2]+"_seen>><<set $AO = $"+$args[2]+"_seen>><</if>>">> <<if !$AO>> <<set $objectActResult = tale.get($args[2]).processText()>> <<if Story.has($args[2]+"Act")>> <<set $objectAct = $args[2]+"Act">> <<else>> <<set $objectAct = "NULL">> <</if>> <<if Story.has($args[2]+"AfterAct")>> /% !! highly experimental stuff !! %/ <<set $objectAfterAct = $args[2]+"AfterAct">> <<else>> <<set $objectAfterAct = "NULL">> <</if>> <<= "<span class='link act "+$args[2]+"'><<link '"+$args[1]+"'>><<include '"+$objectAct+"'>><<set $"+$args[2]+"_seen = true>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$objectActResult+"'>><<include '"+$objectAfterAct+"'>><</link>></span><br>">> <</if>> <<set $AO = false>> <</widget>> /% ,, ,, MMP""MM""YMM `7MM `7MM db P' MM `7 MM MM MM ,6"Yb. MM MM ,MP'`7MM `7MMpMMMb. .P"Ybmmm MM 8) MM MM MM ;Y MM MM MM :MI I8 MM ,pm9MM MM MM;Mm MM MM MM WmmmP" MM 8M MM MM MM `Mb. MM MM MM 8M .JMML.`Moo9^Yo..JMML..JMML. YA..JMML..JMML JMML.YMMMMMb 6' dP Ybmmmd'%/ /% ## # # ### ## # # # # # # # # # ### ### ### ### # ### # # # # # # # # # # # # # # ## # # # # ## # # # # ## # # # ## ## # # # ## # # # ### # # %/ /% Запуск режима разговора с персонажем %/ /% $args[0] = субъект действия $args[1] = имя действия %/ <<widget "StartTalk">> <<set $talkResult = Story.get($args[0].ID+"StartTalk").processText()>> <<= "<span class='link act "+$args[0].ID+"StartTalk'><<link '"+$args[1]+"'>><<set $_MODE='talking'>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$talkResult+"'>><<set $_ACTLOG=false>><</link>></span><br>">> <</widget>> /% ### # # # # # # # # ## ### ## ## # ## ### ### # # # # # # # # # ## # # # # # # # # # # ## # # ## ### ### ## #### ### ### ## # %/ /% Список тем для разговора %/ <<widget "TopicsList">> <<set $Topic = "NULL">> <<set $CurrentTopic = false>> <<for _t to 0; _t < $player.Topics.length; _t++>> <<= "<<set _a = $player."+$player.Topics[_t]+">>">> <<if _a.includes(1)>> <<capture _t, _a>> <p style="margin:0;"> <<link `$player.Topics[_t]+"…"`>> <<replace ".object_actions">> <<set $CurrentTopic = $player.Topics[_t]>> <<set $PhrasesList = _a>> <<Topic $CurrentTopic $PhrasesList>> <</replace>> <</link>> </p> <</capture>> <</if>> <</for>> <br> <<EndTalk>> <</widget>> /% ### # # # ## ### ## ## # # # # # # # # # # # # # # # ## ### ### ## # %/ /% Выбор темы %/ /% $args[0] = выбранная тема для разговора $args[1] = массив фраз в этой теме %/ <<widget "Topic">> <<for _d to $args[1].length; _d >= 0; _d-->> <<if $args[1][_d] == 2>> <<break>> <<elseif $args[1][_d] == 1>> <<set _tp = $args[0]+_d>> <<Phrase _tp>> <<break>> <</if>> <</for>> <br> <<= "<span class='link act "+$args[0].ID+"RefreshTalk'><<link 'Сменить тему разговора'>><<set $CurrentTopic = false>><<ActRefresh $"+$focus.ID+" '' ''>><</link>></span>">> <br> <<EndTalk>> <</widget>> /% ### # # # # # # ### ### ### ### ## ### # # # # # # ## # ## # # # # # ## ## ## # # # # # # ### ## %/ /% Выбор фразы %/ /% $args[0] = код фразы %/ <<widget "Phrase">> <<set $Topic = $args[0]>> <<include "DohoKungTalk">> <<set $talkResult = $question+"<br>"+$answer>> <<= "<span class='link act "+$focus.ID+"Phrase"+$args[0]+"'><<link '"+$question+"'>><<set $_MODE='talking'>><<= $clockwork>><<ActRefresh $"+$focus.ID+" '"+$args[0]+"' '"+$talkResult+"'>><<set $_ACTLOG=false>><</link>></span><br>">> <</widget>> /% #### # ### ## # # # # # # ### ### ### # ### # # # # # # # # # # # # ## # # # # # # # ## # # # #### # # ### # # # ### # # %/ /% Завершение режима разговора с персонажем %/ <<widget "EndTalk">> <<= "<span class='link act "+$focus+"EndTalk'><<link 'Закончить разговор'>><<set $CurrentTopic = false>><<set $Topic = false>><<set $_MODE='NULL'>><<ActRefresh $focus '' ''>><<set $_ACTLOG=true>><</link>></span><br>">> <</widget>> /% ,, `7MMF' mm mm db MM MM MM MM `7MMpMMMb.mmMMmm .gP"Ya `7Mb,od8 ,6"Yb. ,p6"bo mmMMmm `7MM ,pW"Wq.`7MMpMMMb. MM MM MM MM ,M' Yb MM' "'8) MM 6M' OO MM MM 6W' `Wb MM MM MM MM MM MM 8M"""""" MM ,pm9MM 8M MM MM 8M M8 MM MM MM MM MM MM YM. , MM 8M MM YM. , MM MM YA. ,A9 MM MM .JMML..JMML JMML.`Mbmo`Mbmmd'.JMML. `Moo9^Yo.YMbmd' `Mbmo.JMML.`Ybmd9'.JMML JMML. %/ /% ### # ## # # # # # # # ### ### ## ### # # ## ### # # # # # ## # # #### # # # # # # ## # # # # # ### # # ## ## # # # ## ## %/ /% Запуск режима взаимодействия с другим объектом %/ /% $args[0] = субъект действия $args[1] = имя действия $args[2] = имя отмены действия $args[3] = имя режима %/ <<widget "InterAct">> <<= "<span class='link act "+$args[0].ID+"InterAct'><<link '"+$args[1]+"'>><<set $_MODE='"+$args[3]+"'>><<ActRefresh $"+$args[0].ID+" '"+$args[2]+"' ' ' '"+$args[3]+"'>><</link>></span><br>">> <</widget>> /% ### # ## # ### ## # # # # # # # # # # # ### ### ## ### # # ## ### # # ## ### # # # ### # # # # # ## # # #### # # ### # ## ## # # # # # # # # ## # # # # # # # ## ## # # # # ### # # ## ## # # # ## ## # # ## ### ### ### ## %/ /% Вывод результата взаимодействия %/ /% $args[0] = субъект действия $args[1] = имя действия $args[2] = имя параграфа с описанием действия | стандартное описание действия $args[3] = объект действия %/ <<widget "InterActResult">> <<if Story.has($args[2]+"Act")>> <<set $objectAct = $args[2]+"Act">> <<else>> <<set $objectAct = "NULL">> <</if>> <<if Story.has($args[2]+"AfterAct")>> /% !! highly experimental stuff !! %/ <<set $objectAfterAct = $args[2]+"AfterAct">> <<else>> <<set $objectAfterAct = "NULL">> <</if>> <<if Story.has($args[2])>> <<set $objectActResult = Story.get($args[2]).processText()>> <<else>> <<set $objectActResult = $args[2]>> <</if>> <<= "<<set $_MODE='NULL'>><<include '"+$objectAct+"'>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"' '"+$objectActResult+"'>><<include '"+$objectAfterAct+"'>>">> <</widget>> /% ### # ## # ## ## # # # # # # # # # ### ### ## ### # # ## ### # ### ### ## ## # # # # # # ## # # #### # # # # # # # # # ## # # # # # ## # # # # # # # # ## # # # ## # ### # # ## ## # # # ## ## ## # # # # ## ## ### %/ /% Прерывание режима взаимодействия %/ /% $args[0] = субъект действия $args[1] = имя действия %/ <<widget "InterActCancel">> <<= "<span class='link act "+$args[0].ID+"InterActCancel'><<link '"+$args[1]+"'>><<set $_MODE='NULL'>><<set $_ACTLOG=true>><<ActRefresh $"+$args[0].ID+" '"+$args[1]+"'>><</link>></span><br>">> <</widget>> /% ## # # ### ## # # # # # # # # # # ### ## ## ### # # ## ### # # # ### # # # # # # # # ### # ## ## # # # # # # # # # # # # # # # ## ## # # # # ## # # ## ## ## # # ## ### ### ### ## %/ /% $args[0] = оружие $args[1] = цель %/ <<widget "ShootResult">> <<if $args[1].NameA.charAt(0) == "в" || $args[1].NameA.charAt(0) == "В">> <<set _$prep = "во ">> <<else>> <<set _$prep = "в ">> <</if>> <<if Story.has($args[1].ID+"Shoot")>> /% проверка, есть ли параграф с описанием результат выстрела, если нет, то выводится описание-заглушка %/ <<set _$shootResult = $args[1].ID+"Shoot">> <<else>> <<set _$shootResult = "[выстрел "+_$prep+$args[1].NameA+"]">> <<set $isShootSuccess = true>> <</if>> <<if $isShootSuccess>> /% проверка, был ли произведён выстрел. Флаг должен быть включён в параграфе [цель]Shoot. Для объектов с описанием-заглушкой флаг включён по-умолчанию %/ <<if $args[0].Ammo > 0>> <<set $args[0].Ammo-->> <<else>> <<set _$shootResult = "Вместо выстрела раздаётся глухое клацанье — кончились патроны.">> <</if>> <<set $isShootSuccess = false>> <</if>> <<= '<<InterActResult $'+$args[0].ID+' "Выстрелить '+_$prep+$args[1].NameA+'" "'+_$shootResult+'">>'>> <<set $args[1].Shooted = true>> <</widget>> /% # # # ### ## # # # # # # # # #### ### ## # # # # ## ### # # # ### # # # # # ## ### # ## ## # # # # # # # ## # # # # # ## ## # # # # # # # # ## # # # # ## ### ### ### ## %/ /% $args[0] = инструмент $args[1] = цель %/ <<widget "HackResult">> <<if Story.has($args[1].ID+"Hack")>> /% проверка, есть ли параграф с описанием результат рубки, если нет, то выводится отрицательное описание-заглушка %/ <<set _$hackResult = $args[1].ID+"Hack">> <<else>> <<set _$hackResult = either ( "Рубка "+$args[1].NameG+" "+$args[0].NameI+" ничего не даст.", "Он заносит "+$args[0].NameA+", но тут же, качая головой, опускает.", "Он качает головой: «Нет смысла рубить "+$args[1].NameA+"»." )>> <</if>> <<= '<<InterActResult $'+$args[0].ID+' "Ударить '+$args[0].NameI+' '+$args[1].NameA+'" "'+_$hackResult+'">>'>> <<set $args[1].Hacked = true>> <</widget>> /% #### # # # # ### ## # # # # # # # # ### # # ### ## ### ### # # ## ### ### # # ## ### # # # ### # ## # # # # # # # # # ## # # ### # ## ## # # # # # ## # # # # ## # # # ## # # # # ## ## # # # # #### # # ## ### # # # ### ### ### # # # # ## ### ### ### ## ### %/ /% $args[0] = инструмент $args[1] = цель %/ <<widget "ExtinguishResult">> <<if Story.has($args[1].ID+"Extinguish")>> /% проверка, есть ли параграф с описанием результат рубки, если нет, то выводится отрицательное описание-заглушка %/ <<set _$extinguishResult = $args[1].ID+"Extinguish">> <<else>> /%<<set _$extinguishResult = either ( "Рубка "+$args[1].NameG+" "+$args[0].NameI+" ничего не даст.", "Он заносит "+$args[0].NameA+", но тут же, качая головой, опускает.", "Он качает головой: «Нет смысла рубить "+$args[1].NameA+"»." )>>%/ <<set _$extinguishResult = "К счастью, "+$args[1].Name+" сейчас не в огне.">> <</if>> <<= '<<InterActResult $'+$args[0].ID+' "Тушить '+$args[1].NameA+' '+$args[0].NameI+'" "'+_$extinguishResult+'">>'>> <<set $args[1].Extinguished = true>> <</widget>> /% ### # ### ## # # # # # # # # ### ### ## ### ### # # ## ### # # # ### # # # ## # ## # # # ### # ## ## # # # # # # # ## ## # # # # ## ## # # # # ### # # ### ## # ## # # ## ### ### ### ## %/ /% $args[0] = то, что вставляется $args[1] = то, во что вставляется %/ <<widget "InsertResult">> <<if Story.has($args[1].ID+"Insert")>> /% проверка, есть ли параграф с описанием результат рубки, если нет, то выводится отрицательное описание-заглушка %/ <<set _$insertResult = $args[1].ID+"Insert">> <<else>> <<set _$insertResult = "Нет смысла вставлять "+$args[0].NameA+" в "+$args[1].NameA+".">> <</if>> <<= '<<InterActResult $'+$args[0].ID+' "Вставить '+$args[0].NameA+' в '+$args[1].NameA+'" "'+_$insertResult+'">>'>> <</widget>> /% ,, `7MMF' mm db db mm MM MM ;MM: MM MM ,pW"Wq. ,p6"bo ,6"Yb.mmMMmm `7MM ,pW"Wq.`7MMpMMMb. ,pP"Ybd ,V^MM. ,p6"bo mmMMmm ,pP"Ybd MM 6W' `Wb 6M' OO 8) MM MM MM 6W' `Wb MM MM 8I `" ,M `MM 6M' OO MM 8I `" MM , 8M M8 8M ,pm9MM MM MM 8M M8 MM MM `YMMMa. AbmmmqMA 8M MM `YMMMa. MM ,M YA. ,A9 YM. , 8M MM MM MM YA. ,A9 MM MM L. I8 A' VML YM. , MM L. I8 .JMMmmmmMMM `Ybmd9' YMbmd' `Moo9^Yo.`Mbmo.JMML.`Ybmd9'.JMML JMML.M9mmmP' .AMA. .AMMA.YMbmd' `MbmoM9mmmP' %/ /% # # ## # # ## # # # # # ## # ## # # ## ### # ## ## # ## # # #### # # # # # # # ## # # # # # # # # # # # # ## # # ## ## #### ## ## %/ /% Локальный глагол без последствий — выводит только описание %/ /% $args[0] = имя действия $args[1] = имя параграфа с описанием действия %/ <<widget "NoActLoc">> <<set _locActResult = tale.get($args[1]).processText()>> <<= "<span class='link actloc "+$args[1]+"'><<link '"+$args[0]+"'>><<actlocrefresh '"+$args[0]+"' '"+_locActResult+"'>><</link>></span><br>">> <</widget>> /% # # ## # # ## ## # # # # # # # ## # ## # # ## ### # ## ## # # ### ## ## # ## # # #### # # # # # # # # # # # # ## # ## # # # # # # # # # # # # # # # ## # # ## # # ## ## #### ## ## ## # # ## ## %/ /% Одноразовый локальный глагол без последствий — выводит только описание %/ /% $args[0] = имя действия $args[1] = имя параграфа с описанием действия %/ <<widget "NoActLocOnce">> <<= "<<if $"+$args[1]+"_seen>><<set $NALO = $"+$args[1]+"_seen>><</if>>">> <<if !$NALO>> <<set _locActResult = tale.get($args[1]).processText()>> <<= "<span class='link actloc "+$args[1]+"'><<link '"+$args[0]+"'>><<set $"+$args[1]+"_seen = true>><<actlocrefresh '"+$args[0]+"' '"+_locActResult+"'>><</link>></span><br>">> <</if>> <<set $NALO = false>> <</widget>> /% ## # # # # # # # # ## ### # ## ## #### # # # # # # # # # # # # # # # # ## ## #### ## ## %/ /% Локальный глагол с некоторым кодом %/ /% $args[0] = имя действия $args[1] = имя параграфа с описанием действия %/ <<widget "ActLoc">> <<set _locActResult = tale.get($args[1]).processText()>> <<if Story.has($args[1]+"Act")>> <<set _locAct = $args[1]+"Act">> <<else>> <<set _locAct = "NULL">> <</if>> <<if Story.has($args[1]+"AfterAct")>> /% !! highly experimental stuff !! %/ <<set _locAfterAct = $args[1]+"AfterAct">> <<else>> <<set _locAfterAct = "NULL">> <</if>> <<= "<span class='link actloc "+$args[1]+"'><<link '"+$args[0]+"'>><<include '"+_locAct+"'>><<actlocrefresh '"+$args[0]+"' '"+_locActResult+"'>><<include '"+_locAfterAct+"'>><</link>></span><br>">> <</widget>> /% ## # # ## # # # # # # # # ## ### # ## ## # # ### ## ## #### # # # # # # # # # # # # ## # # # # # # # # # # # # # ## # # ## ## #### ## ## ## # # ## ## %/ /% Одноразовый локальный глагол с некоторым кодом %/ /% $args[0] = имя действия $args[1] = имя параграфа с описанием действия %/ <<widget "ActLocOnce">> <<= "<<if $"+$args[1]+"_seen>><<set $ALO = $"+$args[1]+"_seen>><</if>>">> <<if !$ALO>> <<set _locActResult = tale.get($args[1]).processText()>> <<if Story.has($args[1]+"Act")>> <<set _locAct = $args[1]+"Act">> <<else>> <<set _locAct = "NULL">> <</if>> <<if Story.has($args[1]+"AfterAct")>> /% !! highly experimental stuff !! %/ <<set _locAfterAct = $args[1]+"AfterAct">> <<else>> <<set _locAfterAct = "NULL">> <</if>> <<= "<span class='link actloc "+$args[1]+"'><<link '"+$args[0]+"'>><<include '"+_locAct+"'>><<set $"+$args[1]+"_seen = true>><<actlocrefresh '"+$args[0]+"' '"+_locActResult+"'>><<include '"+_locAfterAct+"'>><</link>></span><br>">> <</if>> <<set $ALO = false>> <</widget>> /% ## # # # ## # ## # # # # # # ### ## %/ /% Переход м/у локациями %/ /% $args[0] = имя действия $args[1] = локация, в которую осушествляется переход %/ <<widget "Go">> <<if Story.has($_LOC.ID+"GoAct")>> <<set _locAct = $_LOC.ID+"GoAct">> <<else>> <<set _locAct = "NULL">> <</if>> <<if Story.has($_LOC.ID+"GoAfterAct")>> /% !! highly experimental stuff !! %/ <<set _locAfterAct = $_LOC.ID+"GoAfterAct">> <<else>> <<set _locAfterAct = "NULL">> <</if>> <<= "<p class='link actloc Go"+$args[1].ID+"'><<link '"+$args[0]+"'>><<include '"+_locAct+"'>><<set $_PREVLOC = $"+$_LOC.ID+">><<set $_LOC = $"+$args[1].ID+">><<moveobj $player $"+$args[1].ID+">><<set $_LOC.isJustEntered = true>><<examlocrefresh>><<set $_LOC.isJustEntered = false>><<include '"+_locAfterAct+"'>><</link>></p>">> <</widget>> /% # # ## ## # # # ## # ## # ## # ## # # # ## # # # ## # # # # # # # # ## ### ## %/ /% Запрет выхода из локации %/ /% $args[0] = имя действия (опционально) $args[1] = имя параграфа с описанием действия %/ <<widget "NoGo">> <<if $args.length == 1>> <<set $locActResult = $_LOC.NoGo>> <<elseif $args.length == 2>> <<set $locActResult = $args[1]>> <</if>> <<if Story.has($locActResult)>> <<set $locActResult = tale.get($locActResult).processText()>> <<else>> <<switch $_TIME>> <<case "past">> <<switch $_SEX>> <<case "M">> <<set _v = "мог">> <<case "F">> <<set _v = "могла">> <<case "N">> <<set _v = "могло">> <<case "P">> <<set _v = "могли">> <</switch>> <<case "present">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "могу">> <<case "P">> <<set _v = "можем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "можешь">> <<case "P">> <<set _v = "можете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "может">> <<case "P">> <<set _v = "могут">> <</switch>> <</switch>> <<case "future">> <<switch $_PERSON>> <<case 1>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "смогу">> <<case "P">> <<set _v = "сможем">> <</switch>> <<case 2>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "сможешь">> <<case "P">> <<set _v = "сможете">> <</switch>> <<case 3>> <<switch $_SEX>> <<case "M" "F" "N">> <<set _v = "сможет">> <<case "P">> <<set _v = "смогут">> <</switch>> <</switch>> <</switch>> <<set $locActResult = $PPnNom+" не "+_v+" уйти.">> <</if>> <<= "<span class='link actloc NoGo'><<link '"+$args[0]+"'>><<actlocrefresh '"+$args[0]+"' '"+$locActResult+"'>><</link>></span><br>">> <</widget>> /% #### # # # ### # # ### # # # ## ## # ## # # #### # # # # # ## # ## # # # # # # #### # # # # # # #### ## ## %/ /% Осмотр локации %/ /% $args[0] = объект локации %/ <<widget "ExamLoc">> <<= "<<set $_LOC = $"+$_LOC.ID+">>">> /% обновляем ссылку «$loc» на реальную локацию %/ <<= "<span class='link actloc Exam"+$_LOC.ID+"'><<link $"+$_LOC.ID+".Name>><<unset $focus>><<unset $report>><<examlocrefresh>><</link>></span>">> <</widget>>