Changeset - 23e8862f1558
[Not reviewed]
default
0 1 0
Silverwing - 4 years ago 2020-09-03 18:46:21

Lots of fixes and balance changes
1 file changed with 93 insertions and 57 deletions:
main3.lua
93
57
0 comments (0 inline, 0 general)
main3.lua
Show inline comments
 
@@ -3,11 +3,13 @@
 
-- $Author: Khaelenmore Thaal
 
-- $Info: Игра на Паровозик 6
 

	
 
require 'fmt'
 
require 'noinv'
 
loadmod 'cutscene'
 
require 'fmt';
 
require 'noinv';
 
loadmod 'cutscene';
 

	
 
std.phrase_show = false
 
std.phrase_show = false;
 

	
 

	
 

	
 
global {
 
    timestamp = -30; -- Seconds
 
@@ -59,7 +61,7 @@ ppath = std.class({
 
            std.err("Wrong path argument. Use {} as path argument.", 2)
 
        end
 
        
 
        local n, s, sr, ds = t[1], t[2], t[3]
 
        local n, s, sr, ds = t[1], t[2], t[3], t[4]
 

	
 
        if not ds then
 
            s, sr, ds = n, s, sr
 
@@ -67,7 +69,7 @@ ppath = std.class({
 
        end
 

	
 
        local new = {
 
            before = s;
 
            true_disp = s;
 
            src = sr;
 
            dst = ds;
 
        }
 
@@ -90,7 +92,7 @@ ppath = std.class({
 
        if s.after ~= nil and visited(w) then
 
            return std.call(s, 'after')
 
        end
 
        return std.call(s, 'before') .. ' (' .. tostring(math.floor(distances[s.src][s.dst] / MINUTE)) ..' минут)';
 
        return std.call(s, 'true_disp') .. ' (' .. tostring(math.floor(distances[s.src][s.dst] / MINUTE)) ..' минут)';
 
    end;
 
    onwalk = function(s, _)
 
        local w = s.dst
 
@@ -111,7 +113,7 @@ dpath = std.class({
 
            std.err("Wrong path argument. Use {} as path argument.", 2)
 
        end
 

	
 
        local n, s, d, ds = t[1], t[2], t[3]
 
        local n, s, d, ds = t[1], t[2], t[3], t[4]
 

	
 
        if not ds then
 
            s, d, ds = n, s, d
 
@@ -119,8 +121,9 @@ dpath = std.class({
 
        end
 

	
 
        local new = {
 
            before = s;
 
            true_disp = s;
 
            dst = ds;
 
            distance = d;
 
        }
 

	
 
        for k, v in std.pairs(t) do
 
@@ -141,14 +144,14 @@ dpath = std.class({
 
        if s.after ~= nil and visited(w) then
 
            return std.call(s, 'after')
 
        end
 
        return std.call(s, 'before') .. ' (' .. tostring(math.floor(d / MINUTE)) ..' минут)';
 
        return std.call(s, 'true_disp') .. ' (' .. tostring(math.floor(s.distance / MINUTE)) ..' минут)';
 
    end;
 
    onwalk = function(s, _)
 
        local w = s.dst
 
        if not disabled(w) and not closed(w) then
 
            walk(w)
 
            if me():moved() then
 
                timestamp = timestamp + d;
 
                timestamp = timestamp + s.distance;
 
            end;
 
        end
 
        return false
 
@@ -220,6 +223,12 @@ menu {
 
            pn(fmt.st([[12:00 -- званый обед. Нужно одеться в праздничное платье и привести себя в порядок. ]]));
 
        end;
 

	
 
        if boys_status == 0 then
 
            pr [[До обеда мне нужно принести Уиллу и Фреду какую-нибудь безделушку, чтобы они могли оплатить билеты в цирк. ]];
 
        else
 
            pn(fmt.st([[До обеда мне нужно принести Уиллу и Фреду какую-нибудь безделушку, чтобы они могли оплатить билеты в цирк. ]]));
 
        end;
 

	
 
        if widget_status == 0 then
 
            pn [[6:30 -- 9:00 -- Виджет ждет меня в мастерской. Мне нужно найти блокнот с моими заметками. ]];
 
        else
 
@@ -231,12 +240,6 @@ menu {
 
        else
 
            pn(fmt.st([[До 11:00 -- Вернуть ключ от склада Таггарту. ]]));
 
        end;
 

	
 
        if boys_status == 0 then
 
            pr [[До обеда мне нужно принести Уиллу и Фреду какую-нибудь безделушку, чтобы они могли оплатить билеты в цирк. ]];
 
        else
 
            pn(fmt.st([[До обеда мне нужно принести Уиллу и Фреду какую-нибудь безделушку, чтобы они могли оплатить билеты в цирк. ]]));
 
        end;
 
    end;
 
}
 

	
 
@@ -246,7 +249,7 @@ room {
 
    noinv = true;
 
    notime = true;
 
    decor = [[
 
        Меня зовут Асурья. Я дочь Данасиса I -- император Тайрандела, а я -- законная наследница трона.
 
        Мое имя Асурья, но друзья зовут меня Асти. Я дочь Данасиса I, императора Тайрандела, и законная наследница трона.
 
        Сегодня у меня очень важный день -- папа устраивает званый обед в честь годовщины освобождения Далагара от злых чар.
 
        Но это не единственное, что у меня запланировано на сегодня.
 
    ]];
 
@@ -333,7 +336,7 @@ cutscene {
 
    decor = function(s)
 
        pr [[
 
            Я вхожу в кабинет отца. Он молча указывает на кресло, стоящее в углу, рядом с камином. Я сажусь и [cut жду]жду. ^
 
            Через несколько минут он встает напротив меня и начинает, как всегда многословно, [cut излагать]излагать: "Асурья, дочь моя. Как ты знаешь, завтра у нас очень важный день, а именно -- годовщина изгнания древнего зла из славного города [cut Далагара...]Далагара..."^
 
            Через несколько минут он встает напротив меня и начинает, как всегда многословно, [cut излагать]излагать: _"Асурья, дочь моя. Как ты знаешь, завтра у нас очень важный день, а именно -- годовщина изгнания древнего зла из славного города [cut Далагара...]Далагара..."_^
 
            Так он продолжает довольно долго, но главное. что я уяснила -- завтра, в 12 часов мне необходимо явиться в главный обеденный зал дворца.^
 
            [cut Продолжить]
 
            [code walk('intro6')]
 
@@ -351,17 +354,37 @@ cutscene {
 
            [cut Итак...]
 
            В 12 часов дня у меня званый обед. Если я опоздаю, папа будет очень недоволен. Мне обязательно нужно одеться, сделать макияж и уложить волосы к этому времени.^
 
            [cut Далее...]
 
            Я обещала Уиллу принести какую-нибудь ценную безделушку, чтобы они с братом могли оплатить билеты в цирк.^
 
            [cut Кроме того...]
 
            C 6:30 до 9:00 Виджет ждет меня в мастерской. Мне нужно не забыть взять свои записи. Виджету непросто выделять для меня мастерскую. ^
 
            [cut Кроме того...]
 
            [cut И наконец...]
 
            До 11:00 мне нужно успеть вернуть Таггарту ключ, иначе у него будут проблемы.^
 
            [cut И наконец...]
 
            Я обещала Уиллу принести какую-нибудь ценную безделушку, чтобы они с братом могли оплатить билеты в цирк.^
 
            [cut Продолжить]
 
            [code walk('bedroom')]
 
        ]];
 
    end;
 
}
 

	
 
obj {
 
    nam = 'trinket';
 
    disp = 'Колечко';
 
    inv = 'Серебряное колечко с резным узором в виде чешуи. Такие встречаются довольно часто, но при этом достаточно ценные. ';
 
}
 

	
 
obj {
 
    nam = 'notebook';
 
    disp = 'Записная книжка';
 
    dsc = 'Из-под кровати торчит уголок {блокнота}. ';
 
    tak = 'Я подбираю блокнот. Хорошо, что слуги его не забрали ночью. ';
 
    inv = 'Здесь я держу заметки по поводу различных механизмов придуманных мной, или показанных мне Флинном и Виджетом. ';
 
}:disable();
 

	
 
obj {
 
    nam = 'key';
 
    disp = 'Ключ';
 
    inv = 'Ключ от склада. Я договорилась с Таггартом, чтобы забрать оттуда несколько очень нужных мне вещичек. Теперь мне надо вернуть его. ';
 
}
 

	
 
room {
 
    nam = 'bedroom';
 
    disp = 'Спальня';
 
@@ -374,9 +397,19 @@ room {
 
    };
 
}: with {
 
    obj {
 
        state = 0;
 
        nam = '#bed';
 
        dsc = 'В центре комнаты стоит {моя кровать}. ';
 
        act = 'Большая, удобная кровать. Изящные резные ножки и изголовье покрыты позолотой. Спать хочется, но нельзя -- впереди много дел.';
 
        act = function(s)
 
            pr 'Большая, удобная кровать. Изящные резные ножки и изголовье покрыты позолотой. Спать хочется, но нельзя -- впереди много дел. ';
 
            if s.state == 0 then
 
                s.state = 1;
 
                _'notebook':enable();
 
                pr 'Под кроватью я замечаю что-то белое. Да это же мой блокнот!';
 
            end;
 
        end;
 
    }:  with {
 
        'notebook';
 
    };
 
    obj {
 
        nam = '#fireplace';
 
@@ -419,7 +452,7 @@ room {
 
        dsc = 'На столе стоит {зеркальце}. ';
 
        act = function(s)
 
            if makeup == 0 then
 
                return 'Здесь я могу {#makeup|привести себя в порядок} перед обедом. Это займет 15 минут. И лучше сделать это после всех остальных дел, чтобы не испортить макияж и прическу. ';
 
                return 'Здесь я могу {#makeup|привести себя в порядок} перед обедом. Это займет 30 минут. И лучше сделать это после всех остальных дел, чтобы не испортить макияж и прическу. ';
 
            else
 
                return 'Мне некогда с этим больше возиться. ';
 
            end;
 
@@ -431,7 +464,7 @@ room {
 
            if makeup == 0 then
 
                if have('clothes_dress') then
 
                    makeup = 1;
 
                    timestamp = timestamp + 15 * MINUTE;
 
                    timestamp = timestamp + 30 * MINUTE;
 
                    return 'Я по-быстрому привожу в порядок свои волосы и лицо. Теперь я выгляжу достаточно "прилично" по меркам двора. ';
 
                else
 
                    return 'Сперва надо одеться как подобает. ';
 
@@ -457,12 +490,6 @@ room {
 
    };
 
}
 

	
 
obj {
 
    nam = 'trinket';
 
    disp = 'Колечко';
 
    inv = 'Серебряное колечко с резным узором в виде чешуи. Такие встречаются довольно часто, но при этом достаточно ценные. ';
 
}
 

	
 
dlg {
 
    nam = 'wardrobe';
 
    disp = 'Шкаф';
 
@@ -525,32 +552,21 @@ obj {
 
    state = 0;
 
    nam = 'clothes_mech';
 
    disp = 'Костюм механика';
 
    inv = function(s)
 
        pr 'Удобный и очень практичный костюм. Сшит из грубой, плотной ткани, очень прочной. Сшит на заказ специально для меня и сидит как влитой. А сколько же в нем карманов, не счесть! Обожаю карманы. В них можно носить всякие вещицы вроде блокнотов, карандашей, отверточек или деталюшек -- никогда не знаешь, когда они пригодятся.';
 
        if s.state == 0 then
 
            s.state = 1;
 
            pr '^В одном из карманов я нахожу записную книжку!';
 
            take('notebook');
 
        end;
 
    end;
 
    inv = 'Удобный и очень практичный костюм. Сшит из грубой, плотной ткани, очень прочной, на заказ специально для меня и сидит как влитой. А сколько же в нем карманов, не счесть! Обожаю карманы. В них можно носить всякие вещицы вроде блокнотов, карандашей, отверточек или деталюшек -- никогда не знаешь, когда они пригодятся.';
 
}
 

	
 
obj {
 
    nam = 'notebook';
 
    disp = 'Записная книжка';
 
    inv = 'Здесь я держу заметки по поводу различных механизмов придуманных мной, или показанных мне Флинном и Виджетом. ';
 
}
 

	
 
obj {
 
    state = 0;
 
    nam = 'clothes_travel';
 
    disp = 'Походная одежда';
 
    inv = 'Практичный и прочный костюм. Высокие кожаные башмаки, толстые брюки из плотной ткани, названия которой я не знаю, куртка с капюшоном из такой же. Он немного велик мне, но все равно нравится мне. Здесь не так много карманов, как в моем рабочем костюме, но зато он похож на одежду, которую носят слуги, часто покидающие дворец, а в капюшоне меня не узнать. ';
 
}
 

	
 
obj {
 
    nam = 'key';
 
    disp = 'Ключ';
 
    inv = 'Ключ от склада. Я договорилась с Таггартом, чтобы забрать оттуда несколько очень нужных мне вещичек. Теперь мне надо вернуть его. ';
 
    inv = function(s)
 
        pr 'Практичный и прочный костюм. Высокие кожаные башмаки, толстые брюки из плотной ткани, названия которой я не знаю, куртка с капюшоном из такой же. Он немного велик мне, но все равно нравится мне. Здесь не так много карманов, как в моем рабочем костюме, но зато он похож на одежду, которую носят слуги, часто покидающие дворец, а в капюшоне меня не узнать. ';
 
        if s.state == 0 then
 
            s.state = 1;
 
            pr '^В одном из карманов я нахожу ключик. ';
 
            take('key');
 
        end;
 
    end;
 
}
 

	
 
room {
 
@@ -651,10 +667,10 @@ cutscene {
 
            Я открываю записную книжку на нужной странице и начинаю вспоминать, какие детали мне понадобятся. ^
 
            [cut Вырвав лист из книжки]
 
            Вырвав лист из книжки, я выписываю на него список необходимых деталей и передаю его гремлину: "Собери, пожалуйста, вот это. Я все-таки хочу собрать этот счетчик".
 
            Виджет, откланявшись, [cut удаляется], а я погружаюсь в процесс. Вернувшись с коробочкой, полной разнообразных деталюшек, 
 
            Виджет, откланявшись, [cut удаляется]удаляется, а я погружаюсь в процесс. Вернувшись с коробочкой, полной разнообразных деталюшек, 
 
            он спрашивает: _"Асти, мне кажется оно не будет работа... [cut Ой, простите!]Ой, простите! Ваше высочество точно уверены, что хотят собрать этот прибор? Если честно, я не уверен, что он будет работать"_. ^
 
            [cut "Вы сомневаетесь в моих способностях?"]
 
            "Вы сомневаетесь в моих способностях?" -- шутливо спрашиваю я, на что Виджет совершенно серьезно отвечает: "Нет-нет, ни в коем разе! Я буду поблизости, если понадоблюсь вашему высочеству". ^
 
            "Ты сомневаешься в моих способностях?" -- шутливо спрашиваю я, на что Виджет совершенно серьезно отвечает: "Нет-нет, ни в коем разе! Я буду поблизости, если понадоблюсь вашему высочеству". ^
 
            [cut И я погрузилась в работу]И я погрузилась в работу.^
 
        ]];
 

	
 
@@ -813,10 +829,12 @@ room {
 

	
 
dlg {
 
    nam = 'taggart_dlg';
 
    disp = 'Таггарт';
 
    enter = [[Таггарт чуть старше меня и он мой хороший друг. Увидев меня, он подходит и спрашивает тихо: "Асти? Ты принесла?"]];
 
    phr = {
 
        {cond=function(s) return have('key'); end, "[Отдать ключ] Да, конечно. ", function(s)
 
            taggart_status = 1;
 
            walkout();
 
            return [["Спасибо, Асти. Я знал, что ты не подведешь", -- с улыбкой отвечает Таггарт.]]
 
        end};
 
        {"[Уйти] Ой, забыла.", function(s)
 
@@ -862,7 +880,11 @@ room {
 
        nam = '#servants';
 
        dsc = 'Время от времени кто-то из {слуг} входит или выходит из дворца. ';
 
        act = 'Издалека меня я очень похожа на них. Надеюсь, смогу пройти незамеченной. ';
 
    }
 
    };
 
    obj {
 
        nam = '#boxes';
 
        dsc = 'Неподалеку от ворот составлены какие-то {ящики}. ';
 
    };
 
}
 

	
 
room {
 
@@ -874,7 +896,21 @@ room {
 
        dpath {'В лес', 40 * MINUTE, 'forest'};
 
    }
 
}: with {
 
    
 
    obj {
 
        nam = '#gate';
 
        dsc = '{Ворота} открыты. ';
 
        act = 'Здесь постоянно ходят слуги, так что я могу пройти незамеченной. ';
 
    };
 
    obj {
 
        nam = '#servants';
 
        dsc = 'Время от времени кто-то из {слуг} входит или выходит из дворца. ';
 
        act = 'Издалека меня я очень похожа на них. Надеюсь, смогу пройти незамеченной. ';
 
    };
 
    obj {
 
        nam = '#guards';
 
        dsc = 'У ворот стоят двое {стражников}.';
 
        act = 'Двое снаружи и двое внутри, как и всегда. Этих двоих я не знаю. ';
 
    };
 
}
 

	
 
room {
 
@@ -944,7 +980,7 @@ dlg {
 
                return 'Фред отвлекается от процесса и смотрит на меня: "Тут жук! Красивый! Смотри!" -- Он показывает пальцем в траву^ Я смотрю и вижу переливающегося зеленого жука. Кажется я читала, что он называется "золотистая бронзовка". Действительно, очень красивый.';
 
            end;
 
        end};
 
        {cond=function(s) return have('trinket') end, '[Отдать колечко]Я принесла то, что обещала', function(s)
 
        {cond=function(s) return have('trinket') end, '[Отдать колечко]Я принесла то, что обещала.', function(s)
 
            remove('trinket', me());
 
            boys_status = 1;
 
            if s.state == 0 then
0 comments (0 inline, 0 general)