Files
@ b915f91e80af
Branch filter:
Location: games/Awakening/wright.lua - annotation
b915f91e80af
17.6 KiB
text/x-lua
Darkstar dialogs; bugfixes;
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 4362d49f1350 6e7519136e47 4362d49f1350 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 2b6fe6095185 2b6fe6095185 2b6fe6095185 4362d49f1350 0c2323215e40 0c2323215e40 0c2323215e40 e88b85b9fc9f 0c2323215e40 0c2323215e40 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 45605ed9e0c4 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 39940ecc871b 39940ecc871b 39940ecc871b 2b6fe6095185 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 2b6fe6095185 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 2b6fe6095185 39940ecc871b 6e7519136e47 6e7519136e47 4362d49f1350 2b6fe6095185 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 45605ed9e0c4 45605ed9e0c4 45605ed9e0c4 45605ed9e0c4 45605ed9e0c4 45605ed9e0c4 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 1221f53dee13 1221f53dee13 1221f53dee13 1221f53dee13 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 1221f53dee13 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 39940ecc871b 4362d49f1350 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 2b6fe6095185 2b6fe6095185 2b6fe6095185 2b6fe6095185 2b6fe6095185 2b6fe6095185 6e7519136e47 6e7519136e47 2b6fe6095185 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 2b6fe6095185 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 2b6fe6095185 2b6fe6095185 2b6fe6095185 2b6fe6095185 2b6fe6095185 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 2b6fe6095185 2b06d0a1d1c7 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 4362d49f1350 4362d49f1350 4362d49f1350 6e7519136e47 4362d49f1350 6e7519136e47 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 6e7519136e47 6e7519136e47 6e7519136e47 4362d49f1350 4362d49f1350 4362d49f1350 6e7519136e47 4362d49f1350 6e7519136e47 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 4362d49f1350 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 6e7519136e47 4362d49f1350 6e7519136e47 6e7519136e47 4362d49f1350 4362d49f1350 4362d49f1350 6e7519136e47 | --[[
Здесь игрок получает адреса всех ключевых локаций первой части
]]
door_wright = obj {
nam = "door_wright";
disp = "Дверь";
locked = true;
act = function(s)
if (s.locked) then
walkin "wright_entry_dlg";
end;
return true;
end;
dsc = function(s)
if (s.locked) then
return [[ Обшарпанная деревянная {дверь}, ведущая в дом, заперта изнутри. ^ ]];
else
return [[ Входная дверь дома открыта. ^ ]];
end;
end;
};
char_wright_home = obj {
nam = "char_wright_home";
disp = "Джек Райт";
dsc = function(s)
if (s.documents) then
return [[ ^{Джек Райт} с интересом рассматривает схемы, которые вы ему отдали^ ]];
else
return [[ ^Вы видите {молодого человека} одетого в недорогой, но опрятный костюм. ^ ]];
end;
end;
act = function(s)
walkin(wright_dlg);
end;
};
wright_dlg = dlg {
nam = "wright_dlg";
disp = "Джек Райт";
state = 1;
enter = function(s)
--Небольшой костылик - вырубаем проверку на пустой диалог. Логика тут довольно запутанная и движок скорее всего ниасилит все условия
end;
entered = function(s)
if (atlantis_found and submarine_leviathan.air_level > 400000 and submarine_leviathan.circuit_breaks == 0 and submarine_leviathan.power_on) then
psub('leviathan_restored');
return [[
"Привет".
]];
elseif (s.state == 1) then
--First meeting
psub('first_visit');
return [[
"Добрый день. Я Джек Райт. Майкл мой отец, но он пропал несколько лет назад".
]];
elseif (s.state == 2) then
--Documents not given
psub('ask_documents');
return [[
"Привет. Ты обещал какие-то документы принести".
]];
elseif (s.state == 3) then
--Documents given
if (not leviathan_discovered) then
psub('checking_documents');
return [[
"Привет. Я пока больше ничего не нашел, приходи позже".
]];
else
s.state = 5;
warehouse32_found = true;
psub('warehouse_discovered');
return [[
"Привет, я нашел, где находится склад 32".
]];
end;
elseif (s.state == 4) then
--Documents taken back
psub('ask_documents2');
return [[
"Привет. Если вернешь бумаги, я продолжу поиски".
]];
elseif (s.state == 5) then
psub('empty');
return [[
"Привет".
]];
elseif (s.state == 6) then
psub('warehouse_discovered2');
return [[
"Привет".
]];
elseif (s.state == 7) then
psub('warehouse_discovered3');
return [[
"Привет".
]];
end;
end;
phr = {
{tag='first_visit'};
{"У меня есть кое-какие документы и этот адрес. Возможно они помогут понять, что произошло и куда пропали мой и твой отец. ", [[
"Я просмотрел много материала. Тогда пропало больше двух десятков сотрудников Вестхейвен Трансоушен, но конкретнее я ничего сказать не могу. Если покажешь мне свои бумаги, возможно я смогу что-то сказать".
]], code [[wright_dlg.state = 2; psub('ask_documents'); ]]};
{200, tag='ask_documents'};
{always = true, "[Отдать документы Джеку]", [[
Джек забирает бумаги из ваших рук и тщательно их рассматривает. Через некоторое время он говорит: "Док 2 мне знаком. Отец там часто бывал. Остальные - затрудняюсь ответить. Если оставишь документы мне, я попробую поискать".
]], code[[
dock_found = true;
wright_dlg.state = 3;
remove(item_charts, pl);
back();
]]};
{always = true, "У меня есть несколько вопросов", [[
"Чем смогу - помогу".
]], code [[psub('questions')]]};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
{300, tag='checking_documents'};
{always = true, "Можешь вернуть мне бумаги?", [[
"Забирай, только без них я ничего не смогу найти", - Джек возвращает вам документы.
]], code [[
wright_dlg.state = 4;
put(item_charts, pl);
back();
]]};
{always = true, "У меня есть несколько вопросов", [[
"Чем смогу - помогу".
]], code [[psub('questions')]]};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
{400, tag='questions'};
{"Ты знаешь, чем Майкл занимался в Вестхейвен Трансоушен?", [[
"Частично", - Джек показывает на картину на стене: "Он проектировал корабли, был главным инженером. Перед тем, как исчезнуть, он часто запирался в этом кабинете, подолгу что-то чертил. До глубокой ночи книги читал... Никаких материалов он не оставил. Он, вообще, очень ответственно относился к этому - никто никогда не знал, чем конкретно он занимается, кроме его подчиненных и господина Дрейка. "
]]};
{always = true, "Вернемся к делу", [[
"Слушаю"
]], code [[ pret(); ]]};
{500, tag='ask_documents2'};
{always = true, "[Отдать документы Джеку]", [[
Джек забирает бумаги и раскладывает их на своем столе.
]], code[[ wright_dlg.state = 3; remove(item_charts, pl); back(); ]]};
{always = true, "У меня есть несколько вопросов", [[
"Чем смогу - помогу".
]], code [[psub('questions')]]};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
{600, tag='warehouse_discovered'};
{"Знаешь, что я нашел в доке? [Рассказать о Левиафане]", [[
Джек мгновенно вскакивает со стула, восклицая: "Ничего себе, я должен это видеть! "
]], code [[ walkin('wright_leviathan_cutscene1'); ]]};
{always = true, "Отлично, я съезжу туда и посмотрю, что удастся найти. ", [[
"До встречи".
]], code [[ back(); ]]};
{700, tag='warehouse_discovered2'};
{always = true, "На склад мне попасть не удалось. ", [[
Джек с досадой стучит по столу: "Черт! "^
Еще пару минут он задумчиво сидит в кресле, после чего предлагает идею: "Может попробуем попасть туда ночью? Я сам довезу тебя, но внутри все придется делать тебе. "
]], code [[
wright_dlg.state = 6;
psub('warehouse_break_in');
]]};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
{750, tag='empty'};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
{800, tag='warehouse_break_in'};
{always = true, "Надо попробовать. ", [[
"Хорошо". Приготовления занимают все время до вечера. Наконец, после наступления темноты, вы садитесь в повозку и Джек привозит вас к складу 32.
]], code [[ walk('warehouse_32_night'); ]]};
{always = true, "Лучше не стоит. ", [[
Джек разочарованно отвечает: "Дело твое".
]], code [[ pret(); ]]};
{900, tag='warehouse_discovered3'};
{always = true, "Надо еще раз попасть на склад. ", [[
"Могу устроить сегодня ночью. Устроит? "
]], code [[ psub('warehouse_break_in'); ]]};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
{1000, tag='leviathan_restored'};
{always = true, "Мне удалось починить \"Левиафан\". Мне понадобится помощник на борту ", [[
Джек поднимается с кресла и одевает пальто: "Безусловно, я готов", - сообщает вам он. "Здесь меня ничто не держит, а там... Я хочу попытаться найти моего отца, раз уж выдался такой шанс".
]], code [[
table.insert(pl.party, 'wright');
walk('leviathan_wardroom');
]]};
{always = true, "Я вернусь позже. ", [[
"До встречи".
]], code [[ back(); ]]};
};
};
wright_leviathan_cutscene1 = dlg {
nam = "wright_leviathan_cutscene1";
disp = "Джек Райт";
entered = [[
Вместе с Джеком вы приехали в док 2. Райт долго и с интересом осматривает металлический корпус субмарины. С задумчивым видом он ходит вокруг, рассматривая его. Наконец он спрашивает: "Она работает?"
]];
phr = {
{"10 лет под водой. Не думаю, что там хоть что-то сохранилось... ", [[
Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Джек оборачивается к вам и спрашивает: "Едешь?"
]], code [[ psub('choice'); ]]};
{"Не уверен, но, думаю, да. ", [[
Джек задумчиво смотрит на металлический корпус, на табличку с выгравированным названием. Наконец он говорит: "Надо попытаться попасть внутрь, а затем посмотрим". Еще немного постояв, он возвращается к кэбу. Джек оборачивается к вам и спрашивает: "Едешь?"
]], code [[ psub('choice'); ]]};
{tag='choice'};
{"Да, поехали. ", [[
Вы садитесь в кэб и возвращаетесь домой к Джеку.
]], [[
walk('wright_house_cabinet');
]]};
{"Я останусь тут. ", [[
Джек садится в кэб и уезжает домой.
]], [[
walk('dock_mooring');
]]};
};
};
wright_entry_dlg = dlg {
nam = "wright_entry_dlg";
disp = "Голос за дверью";
entered = function(s)
psub("start");
return [[
Вы стучите в дверь. Через некоторое время вам отвечает сонный голос: "Кто здесь?"
]];
end;
hideinv = true;
phr = {
{tag = "start"};
{always = true, "Могу я увидеть Майкла Райта?", [[
"Кто спрашивает?"
]], code [[ psub('who') ]]};
{always = true, "Извините, я ошибся адресом", code [[ back(); ]]},
{tag = 'who'};
{"Вы знаете Уильяма Дрейка?", [[
"Понятия не имею. Кто спрашивает?" - В голосе собеседника явно прослеживается некоторое недовольство.
]], code [[ psub('irritated') ]]};
{"Майкл Райт здесь живет?", [[
"Кто спрашивает?" - В голосе собеседника явно прослеживается некоторое недовольство.
]], code [[ psub('irritated') ]]};
{always = true, "У меня важное сообщение для него", [[
"Он тут не живет уже много лет. Уходите" - вам показалось, что голос собеседника слегка дрогнул при этих словах.
]], code [[ back(); ]]};
{tag = 'irritated'};
{"Мой отец - Уильям Дрейк, работал с Майклом Райтом. Так вы знаете его?", [[
Вы слышите звук отодвигающегося засова и ответ: "Проходите".
]], code [[
door_wright.locked = false;
path("В дом", wright_house):enable();
back();
]]};
};
};
wright_drawing = obj {
nam = 'wright_drawing';
dsc = [[
На одной из стен висит большая {картина}, изображающая пароход.
]];
act = [[
На картине во всех деталях изображен пароход _"Огненная стрела"_, принадлежавший Вестхейвен Трансоушен. Огромный пароход, полным ходом движущийся по бескрайнему океану. Яркое солнце освещает палубу, на которой находится множество пассажиров, прогуливающихся, общающихся, сидящих на скамейках. Из всех трех труб _"Огненной стрелы"_ идет густой черный дым, а на корме развевается флаг Соединенного Королевства.
Под картиной вы видите небольшую табличку с надписью: _"Майклу Райту, создателю великолепной ,,Огненной стрелы''. Альберт Мур, 1889"_
]];
};
wright_table = obj {
nam = "wright_table";
disp = "Стол";
dsc =[[
В центре комнаты стоит массивный дубовый стол. На полированной поверхности стола разбросаны в кажущемся беспорядке листы бумаги, письменные принадлежности и множество других полезных и не очень предметов.
]];
obj = {
};
};
wright_house_cabinet = room {
nam = "wright_house_cabinet";
disp = "Дом Райта, кабинет";
dsc = [[
Вы находитесь в кабинете Райта. Сквозь большие окна в комнату проникает достаточно света. Стены оклеены старыми обоями с полустершимся рисунком.
]];
obj = {
'wright_table',
'wright_drawing',
'char_wright_home'
};
way = {
vroom("В гостиную", "wright_house_front_room");
};
};
wright_house_front_room = room {
nam = "wright_house_front_room";
disp = "Дом Райта, гостиная";
dsc = [[
Вы находитесь в гостиной в доме Райта. Окна завешены тяжелыми занавесками и в полутьме вы с трудом различаете очертания предметов интерьера - дорогих старых кресел, изящно украшенных шкафов, покрытых многолетним слоем пыли канделябров.
]];
entered = function(s)
if (not s.visited) then
s.visited = true;
pn([[
У двери стоит молодой человек, примерно вашего возраста. Как только вы заходите, он закрывает за вами дверь и просит проследовать за ним в кабинет.
]]);
end;
end;
way = {
vroom("На улицу", "wright_house");
vroom("В кабинет", "wright_house_cabinet");
};
};
wright_house = room {
nam = "wright_house";
disp = "Дом Райта";
enter = function(s)
put(char_coachman, here());
end;
dsc = [[
Вы стоите посреди небольшой тихой улочки, расположенной почти на окраине Лондона. Напротив вас расположен небольшой кирпичный особняк, принадлежащий Майклу Райту, если верить записке. Дом выглядит неухоженным - штукатурка местами осыпалась, лужайка заросла высокой травой, часть окон закрыта плотными ставнями, которые явно давно не открывались.
]];
obj = {'door_wright'};
way = {
vroom("В дом", "wright_house_front_room"):disable();
};
};
|