Internationalization

This commit is contained in:
Alexander Yakovlev 2015-08-06 22:24:05 +07:00
parent eb9657d718
commit e9ff4801aa
7 changed files with 575 additions and 152 deletions

View File

@ -1,5 +1,6 @@
-- Здесь я переделываю диалоги INSTEAD на другую структуру
-- мне нужно, чтобы фразы не автоматически скрывались, а постоянно оставались и скрывались при просмотре комнаты, а не после кликов
-- Here I make an alternative to INSTEAD dialogs.
-- I need the phrases not to hide automatically on click.
-- They need to hide automatically on filter condition - when examining the room, not on click
function isDisabled(v)
if (type(v) ~= 'table') then return false end;
@ -72,7 +73,6 @@ option_action = function(self)
return ret
end
function option(filter, ask, answ, actfunc)
local p = phr (ask, answ, actfunc);
p.do_act = actfunc;

BIN
en.mo Normal file

Binary file not shown.

356
en.po Normal file
View File

@ -0,0 +1,356 @@
msgid ""
msgstr ""
"Project-Id-Version: Sixth City\n"
"POT-Creation-Date: 2015-08-06 22:23+0700\n"
"PO-Revision-Date: 2015-08-06 22:23+0700\n"
"Last-Translator: Alexander Yakovlev <keloero@oreolek.ru>\n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.7.5\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Poedit-KeywordsList: __\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
#: game.lua:3
msgid "Персонаж"
msgstr "Character"
#: game.lua:4
msgid "Связи"
msgstr "Connections"
#: game.lua:5
msgid "Дерзость"
msgstr "Boldness"
#: game.lua:6
msgid "Осторожность"
msgstr "Cautious"
#: game.lua:13
msgid "Параметр Связи увеличился на "
msgstr "Connection stat has increased by "
#: game.lua:18
msgid "Параметр Дерзость увеличился на "
msgstr "Boldness stat has increased by "
#: game.lua:23
msgid "Параметр Осторожность увеличился на "
msgstr "Cautious stat has increased by "
#: game.lua:26
msgid "Вернуться на площадь"
msgstr "Go back to square"
#: game.lua:30
msgid "Осмотреть памятник"
msgstr "Examine the monument"
#: game.lua:31
msgid ""
"Чёрный памятник без таблички изображает высокого мужчину в старомодном "
"плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив "
"взгляд на небо.^^\n"
" На основании памятника нацарапано: \"Господин Гронц видел тебя\""
msgstr ""
"A black monument without a sign portraits a tall man in an old-fashioned "
"coat. He holds an opened umbrella in his grip. The man is stiff, watching "
"the sky.^^There is a scratch on the foundation, it says: \"Mister Grontz saw "
"you\""
#: game.lua:35
msgid "Посетить музей Сгоревших Свечей"
msgstr "Visit the Museum of Burned Candles"
#: game.lua:36
msgid "Найти Глиняную Башню"
msgstr "Find the Mold Tower"
#: game.lua:37
msgid "Искать Отделение Криминального Давления"
msgstr "Search for the Division of Criminal Pressure"
#: game.lua:40
msgid "Глиняная Башня"
msgstr "Mold Tower"
#: game.lua:41
msgid "Вы подходите к старинной башне, целиком вылепленной из красной глины."
msgstr "You walk towards an ancient tower, completely made out of red loam."
#: game.lua:42
msgid ""
"На верхушке башни находится циферблат часов, застрявших на шести часах "
"двадцати минут."
msgstr ""
"There is a clock face on the top of the tower, stuck at six hours twenty "
"minutes."
#: game.lua:47
msgid "Музей Сгоревших Свечей"
msgstr "Museum of Burned Candles"
#: game.lua:48
msgid ""
"Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно "
"потрёпанное временем."
msgstr ""
"Museum of Burned Candles is a middle nineteenth century buiding badly "
"damaged by the time."
#: game.lua:49
msgid "На входе вам дают кусочек воска, на котором написан номер билета."
msgstr ""
"At the entrance you get a piece of wax with a ticket number scratched on it."
#: game.lua:50
msgid "Вы кидаете билет в камин, горящий на выходе."
msgstr "You throw the ticket in a fireplace standing near the exit."
#: game.lua:55
msgid "Отделение Криминального Давления"
msgstr "Division of Criminal Pressure"
#: game.lua:56
msgid ""
"Буклет-путеводитель описывает Отделение Криминального Давления как "
"\"департамент наивысшей безопасности по защите от наихудшей преступности.\""
msgstr ""
"The booklet guide describes the Division of Criminal Pressure as the "
"“department of the highest security to protect against the worst crime.“"
#: game.lua:57
msgid ""
"Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но "
"вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто "
"заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через "
"тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя "
"внутрь, только половицы слишком громко скрипят."
msgstr ""
"It seems from afar that the D.C.P. building is decorated with a live jumping "
"mice but close up you see that it's only the light wind rustles the corpses. "
"There are people in dark blue uniforms entering often but as far as you can "
"tell the heavy doors open only for a few ones. You don't notice anything "
"strange entering inside, just the floorboards creaking too loud."
#: game.lua:60 game.lua:66
msgid "Вы засовываете руку в карман и находите там чужую"
msgstr "You put your hand in your pocket and find another one there."
#: game.lua:62 game.lua:93
msgid "На вас бросается женщина..."
msgstr "A woman dashes to you..."
#: game.lua:67
msgid ""
"Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и "
"видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой."
msgstr ""
"You put your hand in your pocket and find another one there. You turn around "
"and see a dirty boy trying to hide his face under a worn through cap."
#: game.lua:70
msgid "Побить вора"
msgstr "Give thief a beating"
#: game.lua:70
msgid ""
"Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам "
"единственную монетку и теряется в тумане."
msgstr ""
"You shake the thief up for everything he got. He gives you the single coin "
"and gets lost in the mist."
#: game.lua:78
msgid "Отпустить и проследить за ним"
msgstr "Leave and follow him"
#: game.lua:78
msgid ""
"Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, "
"оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому "
"фонтану на Площади Жути.^^\n"
" По пустой улице проносится слабый звон, и мальчик быстро исчезает в "
"одном из домов. Вы подходите к пересохшему фонтану и видите одинокую "
"монетку, которая блестит на дне. Вы поднимаете монетку и осматриваете её. "
"Выглядит интересно. "
msgstr ""
"You leave the boy and cautiously follow him. He runs away sideways, glances "
"around and, unable to see you, goes through the twisty lanes to an old "
"fountain on the Dismay Square.^^ There is a faint clank on the empty "
"street, and the boy quickly disappears in one of the houses. You go to a "
"parched fountain and see a lone coin glinting on the bottom. You pick up it "
"and examine. Looks interesting."
#: game.lua:88
msgid "цент"
msgstr "cent"
#: game.lua:89
msgid ""
"Потемневшая монета в одну местную копейку. На реверсе монеты иголкой "
"нацарапана спираль."
msgstr ""
"A darkened coin of one local copeck. Its reverse has a spiral scratched on "
"it with a needle."
#: game.lua:94
msgid ""
"На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она "
"до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^\n"
" -- Пожалуйста! Может, хоть вы мне поможете? Я не могу попасть домой и у "
"меня нет с собой денег, чтобы заплатить Охотникам. Я не могу пробиться через "
"эти грибы!"
msgstr ""
"A woman dashes to you, wearing blubbered face. An uniformed man she was "
"talking to previously sighs with relief and goes away to his business.^^ "
"-- Please! Can you help me maybe? I can't go home and I have no money with "
"myself to pay the Hunters. I can't go past these mushrooms!"
#: game.lua:97
msgid "Следовать к её дому"
msgstr "Follow to her house"
#: game.lua:101
msgid "Дом в квартале Улыбающихся Гончаров"
msgstr "A house in Smiling Potters block"
#: game.lua:102
msgid ""
"Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы "
"медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому "
"домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт "
"вам белый платок и показывает, как его завязать на лицо."
msgstr ""
"She lives to the west of Mold Tower, the Smiling Potters block. You slowly "
"make your way through windy passages and come out to an old house. There is "
"a high brown mushroom thickery in the front of it. She gives you a white "
"handkerchief and shows how to tie it up around your face."
#: game.lua:103
msgid ""
"-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что "
"споры этих грибов превращают людей в.. в глину!"
msgstr ""
"-- Do you see that? I can't go to my house without swallowing the spores. "
"I've read that the spores of these mushrooms turn people into.. into mold!"
#: game.lua:108
msgid "Медленно протоптать дорожку"
msgstr "Slowly trample down a path"
#: game.lua:108
msgid ""
"Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. "
"Придётся ходить только в масках, но теперь здесь есть шансы жить.^^\n"
" -- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок "
"пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее "
"Сгоревших Свечей. "
msgstr ""
"Carefully controlling your weight, you trample down a path through the thick "
"mass of mushrooms. She will have to wear the mask but now she has a chance "
"to live here.^^ -- Thank you! That's for your trouble. -- The woman "
"extends a curved piece of plasticine. -- They say Plasticine Thing legs are "
"highly valued at Museum of Burned Candles."
#: game.lua:116
msgid "Быстро перепрыгнуть через заросли"
msgstr "Quickly jump over the thicket"
#: game.lua:116
msgid ""
"Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. "
"Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились "
"шансы здесь жить.^^\n"
" -- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок "
"пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее "
"Сгоревших Свечей. "
msgstr ""
"You run up and jump over the thicket, landing on the house doorstep. Looks "
"like the lady will have to practice running, but at least she got a chance "
"to live here. -- Thank you! That's for your trouble. -- The woman extends "
"a curved piece of plasticine. -- They say Plasticine Thing legs are highly "
"valued at Museum of Burned Candles."
#: game.lua:125
msgid "пластилиновая нога"
msgstr "plasticine leg"
#: game.lua:126
msgid "Нога Пластилинового Творения."
msgstr "Plasticine Thing's Leg"
#: game.lua:129
msgid "Сесть на поезд домой"
msgstr "Board the train home"
#: game.lua:132
msgid "Конец игры"
msgstr "End of the game"
#: game.lua:133
msgid ""
"Ваше время в этом мрачном городе закончено, и вы уезжаете на старом поезде, "
"всё ещё слишком чужой для того, чтобы остаться.^^"
msgstr ""
"Your time in this grim town is over, and you depart on an old train, still "
"too alien to stay.^^"
#: game.lua:133
msgid "КОНЕЦ"
msgstr "THE END"
#: main.lua:83
msgid "Шестой город"
msgstr "Sixth City"
#: main.lua:84
msgid ""
"Облака никогда не рассеиваются, они могут только становиться светлее. Вы "
"стоите на круглой площади перед мрачным памятником, откуда начинается "
"извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со всех "
"сторон, скрываясь в тумане.^^\n"
" Потёртый буклет, который вы нашли в мусорном баке возле гостиницы, "
"предлагает несколько интересных занятий для \"гостей города Н.\""
msgstr ""
"The clouds never disperse, they only can get lighter. You are standing on a "
"round square near a grim monument. A twisty labyringth of Sixth City streets "
"starts here. Small houses surround you from every side, fading into mists."
"^^An shabby booklet you've found in a trash near the hotel offers some "
"\"interesting avenues and events for guests of town N.\""
#~ msgid "Character"
#~ msgstr "Персонаж"
#~ msgid "Connections"
#~ msgstr "Связи"
#~ msgid "Boldness"
#~ msgstr "Дерзость"
#~ msgid "Cautious"
#~ msgstr "Осторожность"
#~ msgid "Sixth city"
#~ msgstr "Шестой город"
#~ msgid ""
#~ "The clouds are always there. Never completely dispersed, they only can "
#~ "lighten up for a day. You're standing on a round square before a grim "
#~ "monument. The twisty labyrinth of Sixth City starts here. Small houses "
#~ "surround you, fading to mist.^^A worn booklet you found in a trash bin "
#~ "near the hotel: \"Avenues and events for the N. city guest\""
#~ msgstr ""
#~ "Облака никогда не рассеиваются, они могут только становиться светлее. Вы "
#~ "стоите на круглой площади перед мрачным памятником, откуда начинается "
#~ "извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со "
#~ "всех сторон, скрываясь в тумане.^^Потёртый буклет, который вы нашли в "
#~ "мусорном баке возде гостиницы, предлагает несколько интересных занятий "
#~ "для \"гостей города Н.\""

135
game.lua Normal file
View File

@ -0,0 +1,135 @@
playerdesc = stat {
nam = function()
pn(txtc(txtb(__('Персонаж'))));
pn(__('Связи')..': '..pl._connections);
pn(__('Дерзость')..': ' .. pl._boldness);
pn(__('Осторожность')..': ' .. pl._caution);
end,
}
take('playerdesc');
connected = function(i)
pl._connections = pl._connections + i;
pn (__("Параметр Связи увеличился на ")..i..".");
end;
bold = function(i)
pl._boldness = pl._boldness + i;
pn (__("Параметр Дерзость увеличился на ")..i..".");
end;
cautious = function(i)
pl._caution = pl._caution + i;
pn (__("Параметр Осторожность увеличился на ")..i..".");
end;
turn_back = option(nil, '-- '..__('Вернуться на площадь')..' --', '', 'walk("main")');
put(option(
'pl._seen_monument ~= true',
__('Осмотреть памятник'),
__([[Чёрный памятник без таблички изображает высокого мужчину в старомодном плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив взгляд на небо.^^
На основании памятника нацарапано: "Господин Гронц видел тебя"]]),
function() connected(1); pl._seen_monument = true; end
));
put(option(nil, __('Посетить музей Сгоревших Свечей'), nil, 'walk("museum")'));
put(option(nil, __('Найти Глиняную Башню'), nil, 'walk("clock")'));
put(option(nil, __('Искать Отделение Криминального Давления'), nil, 'walk("police")'));
clock = choice {
nam = __('Глиняная Башня'),
enter = __([[Вы подходите к старинной башне, целиком вылепленной из красной глины.]]),
dsc = __([[На верхушке башни находится циферблат часов, застрявших на шести часах двадцати минут.]]),
obj = {turn_back}
}
museum = choice {
nam = __('Музей Сгоревших Свечей'),
dsc = __('Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно потрёпанное временем.'),
enter = __('На входе вам дают кусочек воска, на котором написан номер билета.'),
exit = __('Вы кидаете билет в камин, горящий на выходе.'),
obj = {turn_back}
}
police = choice {
nam = __('Отделение Криминального Давления'),
dsc = __([[Буклет-путеводитель описывает Отделение Криминального Давления как "департамент наивысшей безопасности по защите от наихудшей преступности."]]),
enter = __([[Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя внутрь, только половицы слишком громко скрипят.]]),
obj = {}
}
thief_option = option('pl._boldness < 5 and not have("cent")', __('Вы засовываете руку в карман и находите там чужую'), nil, 'walk("thief")');
put ('thief_option', 'police');
put(option('pl._boldness < 5 and not have("clay_leg")', __('На вас бросается женщина...'), nil, 'walk("eradication")'), 'police');
put (turn_back, 'police');
thief = choice {
nam = __('Вы засовываете руку в карман и находите там чужую'),
dsc = __([[Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой.]]),
obj = {}
}
put(option(nil, __('Побить вора'), __('Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам единственную монетку и теряется в тумане.'),function()
connected(1);
bold(1);
take('cent');
walk('police');
end
), 'thief');
put(option(nil, __('Отпустить и проследить за ним'), __([[Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому фонтану на Площади Жути.^^
По пустой улице проносится слабый звон, и мальчик быстро исчезает в одном из домов. Вы подходите к пересохшему фонтану и видите одинокую монетку, которая блестит на дне. Вы поднимаете монетку и осматриваете её. Выглядит интересно. ]]),function()
cautious(1);
connected(1);
take('cent');
walk('police');
end
), 'thief');
cent = obj {
nam = __('цент'),
inv = __('Потемневшая монета в одну местную копейку. На реверсе монеты иголкой нацарапана спираль.')
}
eradication = choice {
nam = __('На вас бросается женщина...'),
dsc = __([[На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^
-- Пожалуйста! Может, хоть вы мне поможете? Я не могу попасть домой и у меня нет с собой денег, чтобы заплатить Охотникам. Я не могу пробиться через эти грибы!]]),
obj = {
option(nil, __('Следовать к её дому'), nil, 'walk("eradication_cont")'),
}
}
eradication_cont = choice {
nam = __('Дом в квартале Улыбающихся Гончаров'),
enter = __([[Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт вам белый платок и показывает, как его завязать на лицо.]]),
dsc = __([[-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что споры этих грибов превращают людей в.. в глину!]]),
obj = {},
}
-- тут можно придумать дополнительные варианты в зависимости от инвентаря
put(option(nil, __('Медленно протоптать дорожку'), __([[Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. Придётся ходить только в масках, но теперь здесь есть шансы жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]]),function()
cautious(1);
take('clay_leg');
walk('police');
end),
'eradication_cont');
put(option(nil, __('Быстро перепрыгнуть через заросли'), __([[Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились шансы здесь жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]]),function()
bold(1);
take('clay_leg');
walk('police');
end),
'eradication_cont');
clay_leg = obj {
nam = __('пластилиновая нога'),
inv = __('Нога Пластилинового Творения.')
}
put(option('pl._connections > 0', __('Сесть на поезд домой'), nil, "walk('endgame')"));
endgame = room {
nam = __('Конец игры'),
dsc = __([[Ваше время в этом мрачном городе закончено, и вы уезжаете на старом поезде, всё ещё слишком чужой для того, чтобы остаться.^^]])..txtc(__('КОНЕЦ')),
}

View File

@ -11,33 +11,6 @@ game.actions = {}
pl._connections = 0;
pl._boldness = 0;
pl._caution = 0
playerdesc = stat {
nam = function()
pn(txtc(txtb('Персонаж')));
pn('Связи: '..pl._connections);
pn('Дерзость: ' .. pl._boldness);
pn('Осторожность: ' .. pl._caution);
-- if (game._action ~= nil) then
-- pn("Локация: "..game._action);
-- end
end,
}
take('playerdesc');
connected = function(i)
pl._connections = pl._connections + i;
pn ("Параметр Связи увеличился на "..i..".");
end;
bold = function(i)
pl._boldness = pl._boldness + i;
pn ("Параметр Дерзость увеличился на "..i..".");
end;
cautious = function(i)
pl._caution = pl._caution + i;
pn ("Параметр Осторожность увеличился на "..i..".");
end;
rndstr = function(strings)
return strings[rnd(stead.table.maxn(strings))];

View File

@ -1,116 +0,0 @@
turn_back = option(nil, '-- Вернуться на площадь --', '', 'walk("main")');
put(option(
'pl._seen_monument ~= true',
'Осмотреть памятник',
[[ Чёрный памятник без таблички изображает высокого мужчину в старомодном плаще, который держит в руках раскрытый зонт. Мужчина застыл, направив взгляд на небо.^^
На основании памятника нацарапано: "Господин Гронц видел тебя"]],
function() connected(1); pl._seen_monument = true; end
));
put(option(nil, 'Посетить музей Сгоревших Свечей', nil, 'walk("museum")'));
put(option(nil, 'Найти Глиняную Башню', nil, 'walk("clock")'));
put(option(nil, 'Искать Отделение Криминального Давления', nil, 'walk("police")'));
clock = room {
nam = 'Глиняная Башня',
enter = [[ Вы подходите к старинной башне, целиком вылепленной из красной глины. ]],
dsc = [[ На верхушке башни находится циферблат часов, застрявших на шести часах двадцати минут.]],
obj = {turn_back}
}
museum = room {
nam = 'Музей Сгоревших Свечей',
dsc = 'Музей Сгоревших Свечей -- это здание середины девятнадцатого века, изрядно потрёпанное временем.',
enter = 'На входе вам дают кусочек воска, на котором написан номер билета.',
exit = 'Вы кидаете билет в камин, горящий на выходе.',
obj = {turn_back}
}
-- circus = action {
-- nam = 'Направиться в Красный Цирк',
-- }
police = choice {
nam = 'Отделение Криминального Давления',
dsc = [[Буклет-путеводитель описывает Отделение Криминального Давления как "департамент наивысшей безопасности по защите от наихудшей преступности.]],
enter = [[Издалека вам кажется, что здание О.К.Д. украшено живыми прыгучими мышами, но вблизи вы видите, что мышей всего лишь колышет лёгкий ветер. В здание часто заходят люди в тёмно-синей форме, но, насколько вы можете заметить, через тяжёлые двери выходят немногие. Вы не замечаете ничего странного, входя внутрь, только половицы слишком громко скрипят.]],
obj = {}
}
thief_option = option('pl._boldness < 5 and not have("cent")', 'Вы засовываете руку в карман и находите там чужую', nil, 'walk("thief")');
put ('thief_option', 'police');
put(option('pl._boldness < 5 and not have("clay_leg")', 'На вас бросается женщина...', nil, 'walk("eradication")'), 'police');
put (turn_back, 'police');
thief = choice {
nam = 'Вы засовываете руку в карман и находите там чужую',
dsc = [[Вы засовываете руку в карман и находите там чужую. Вы разворачиваетесь и видите грязного мальчика, который пытается спрятать лицо под дырявой кепкой.]],
obj = {}
}
put(option(nil, 'Побить вора', 'Вы перетряхиваете мальчугана на всё, что у него есть. Он отдаёт вам единственную монетку и теряется в тумане.',function()
connected(1);
bold(1);
take('cent');
walk('police');
end
), 'thief');
put(option(nil, 'Отпустить и проследить за ним', [[Вы отпускаете мальчугана и осторожно следуете за ним. Он отбегает в сторону, оглядывается, и, не заметив вас в тумане, идёт по переулкам к старому фонтану на Площади Жути.^^
По пустой улице проносится слабый звон, и мальчик быстро исчезает в одном из домов. Вы подходите к пересохшему фонтану и видите одинокую монетку, которая блестит на дне. Вы поднимаете монетку и осматриваете её. Выглядит интересно. ]],function()
cautious(1);
connected(1);
take('cent');
walk('police');
end
), 'thief');
cent = obj {
nam = 'цент',
inv = 'Потемневшая монета в одну местную копейку. На реверсе монеты иголкой нацарапана спираль.'
}
eradication = choice {
nam = 'На вас бросается женщина...',
dsc = [[ На вас бросается женщина с зарёванным лицом. Мужчина в форме, с которым она до этого разговаривала, облегчённо вздыхает и уходит по своим делам. ^
-- Пожалуйста! Может, хоть вы мне поможете? Я не могу попасть домой и у меня нет с собой денег, чтобы заплатить Охотникам. Я не могу пробиться через эти грибы!]],
obj = {
option(nil, 'Следовать к её дому', nil, 'walk("eradication_cont")'),
}
}
eradication_cont = choice {
nam = 'Дом в квартале Улыбающихся Гончаров',
enter = [[ Она живёт к западу от Глиняной Башни, в квартале Улыбающихся Гончаров. Вы медленно пробираетесь по петляющим улочкам и, наконец, выходите к старому домику, перед которым раскинулись высокие коричневые заросли грибов.Она даёт вам белый платок и показывает, как его завязать на лицо.]],
dsc = [[-- Вы видите? Я не могу пройти к дому, не наглотавшись спор. Я читала, что споры этих грибов превращают людей в.. в глину!]],
obj = {},
}
-- тут можно придумать дополнительные варианты в зависимости от инвентаря
put(option(nil, 'Медленно протоптать дорожку', [[ Осторожно контролируя вес, вы протаптываете дорожку через заросли грибов. Придётся ходить только в масках, но теперь здесь есть шансы жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]],function()
cautious(1);
take('clay_leg');
walk('police');
end),
'eradication_cont');
put(option(nil, 'Быстро перепрыгнуть через заросли', [[ Разбежавшись, вы перепрыгиваете заросли и приземляетесь на пороге дома. Похоже, хозяйке придётся упражняться в прыжках, но хотя бы у неё появились шансы здесь жить.^^
-- Спасибо! Вот вам за труды. -- Женщина протягивает изогнутый кусок пластилина. -- Говорят, за ноги Пластилиновых Творений дорого платят в музее Сгоревших Свечей. ]],function()
bold(1);
take('clay_leg');
walk('police');
end),
'eradication_cont');
clay_leg = obj {
nam = 'пластилиновая нога',
inv = 'Нога Пластилинового Творения.'
}
-- абсолютно бесполезная строка
put(option('pl._connections > 5', 'Посетить тату-салон Чернильного Ткача', nil, nil));
put(option('pl._connections > 0', 'Сесть на поезд домой', nil, "walk('endgame')"));
endgame = room {
nam = 'Конец игры',
dsc = [[Ваше время в этом мрачном городе закончено, и вы уезжаете на старом поезде, всё ещё слишком чужой для того, чтобы остаться.^^]]..txtc('КОНЕЦ'),
}

View File

@ -1,14 +1,89 @@
-- $Name: Шестой город$
-- $Name(en): Sixth city$
-- Игра требует Lua 5.1+
instead_version "1.9.1"
dofile('choice.lua');
dofile("init.lua");
function load_mo_file(mo_file)
--------------------------------
-- open file and read data
--------------------------------
local fd,err=io.open(mo_file,"rb")
if not fd then return nil,err end
local mo_data=fd:read("*all")
fd:close()
--------------------------------
-- precache some functions
--------------------------------
local byte=string.byte
local sub=string.sub
--------------------------------
-- check format
--------------------------------
local peek_long --localize
local magic=sub(mo_data,1,4)
-- intel magic 0xde120495
if magic=="\222\018\004\149" then
peek_long=function(offs)
local a,b,c,d=byte(mo_data,offs+1,offs+4)
return ((d*256+c)*256+b)*256+a
end
-- motorola magic = 0x950412de
elseif magic=="\149\004\018\222" then
peek_long=function(offs)
local a,b,c,d=byte(mo_data,offs+1,offs+4)
return ((a*256+b)*256+c)*256+d
end
else
return nil,"no valid mo-file"
end
--------------------------------
-- version
--------------------------------
local V=peek_long(4)
if V~=0 then
return nul,"unsupported version"
end
------------------------------
-- get number of offsets of table
------------------------------
local N,O,T=peek_long(8),peek_long(12),peek_long(16)
------------------------------
-- traverse and get strings
------------------------------
local hash={}
for nstr=1,N do
local ol,oo=peek_long(O),peek_long(O+4) O=O+8
local tl,to=peek_long(T),peek_long(T+4) T=T+8
hash[sub(mo_data,oo+1,oo+ol)]=sub(mo_data,to+1,to+tl)
end
return function(text)
return hash[text] or text
end
end
if not LANG then
LANG = "en"
end
if LANG == 'en' then
__ = load_mo_file('en.mo');
else
__ = function(text)
return text;
end;
end
main = choice{
nam = 'Шестой город',
dsc = [[
Облака никогда не рассеиваются, они могут только становиться светлее. Вы стоите на круглой площади перед мрачным памятником, откуда начинается извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со всех сторон, скрываясь в тумане.^^
Потёртый буклет, который вы нашли в мусорном баке возде гостиницы, предлагает несколько интересных занятий для "гостей города Н."
]],
nam = __('Шестой город'),
dsc = __([[Облака никогда не рассеиваются, они могут только становиться светлее. Вы стоите на круглой площади перед мрачным памятником, откуда начинается извилистый лабиринт улиц Шестого города. Невысокие дома окружают вас со всех сторон, скрываясь в тумане.^^
Потёртый буклет, который вы нашли в мусорном баке возле гостиницы, предлагает несколько интересных занятий для "гостей города Н."]]),
obj = {},
};
dofile("lowlevel.lua");
dofile("game.lua");