Changeset - 96043659610e
[Not reviewed]
default
0 3 0
Silverwing - 5 years ago 2019-07-17 20:09:52

party dialogs revamped
3 files changed with 142 insertions and 237 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
@@ -581,10 +581,67 @@ item_venaedanotrr_map = obj {
 
};
 
 
item_suit = suit {
 
	dlg = "call_leviathan";
 
	nam = "Скафандр";
 
    has_coder = true;
 
};
 
 
call_leviathan = dlg {
 
	nam = "phone_dlg";
 
	disp = "Телефон";
 
	hideinv = true;
 
	dsc = [[Вы настраиваете радио. С кем хотите поговорить? ]];
 
	entered = function(s)
 
		poff("phaetlarr", "learr", "radcliffe", "wright", "anna");
 
		local party = {
 
			char_phaetlarr,
 
			char_learr,
 
			char_radcliffe,
 
			char_wright,
 
			char_anna
 
		};
 
		for i = 1, #pl.party do
 
			if not party[i].follow then
 
				pon(pl.party[i]);
 
			end;
 
		end;
 
	end;
 
	phr = {
 
		{ tag = "phaetlarr", always = true, "[Вызвать Фаэтларра]", function(s)
 
			phaetlarr_dlg.from_call = true;
 
			phaetlarr_dlg.home = false;
 
			phaetlarr_dlg.underwater = false;
 
			walkin("phaetlarr_dlg");
 
		end},
 
		{ tag = "learr", always = true, "[Вызвать Леарр]", function(s)
 
			if char_learr.home == 'leviathan_cabin_3' then
 
				return [[Леарр не берет трубку. ]];
 
			else
 
				learr_dlg.from_call = true;
 
				learr_dlg.home = false;
 
				learr_dlg.underwater = false;
 
				walkin("learr_dlg");
 
			end;
 
		end},
 
		{ tag = "radcliffe", always = true, "[Вызвать Уолтера Рэдклиффа]", function(s)
 
			radcliffe_dlg.from_call = true;
 
			radcliffe_dlg.home = false;
 
			walkin("radcliffe_dlg");
 
		end},
 
		{ tag = "wright", always = true, "[Вызвать Джека Райта]", function(s)
 
			wright_main_dlg.from_call = true;
 
			wright_main_dlg.home = false;
 
			walkin("wright_main_dlg");
 
		end},
 
		{ tag = "anna", always = true, "[Вызвать Анну Рэдклифф]", function(s)
 
			anna_dlg.from_call = true;
 
			anna_dlg.home = false;
 
			walkin("anna_dlg");
 
		end},
 
		{ tag = "exit", always = true, "[Положить трубку]", code = [[back()]]}
 
	}
 
};
 
 
item_naethvjirr_key = obj {
 
    nam = "item_naethvjirr_key";
 
    disp = "Ключ из древнего храма";
leviathan.lua
Show inline comments
 
@@ -1189,17 +1189,37 @@ phone_dlg = dlg {
 
		end;
 
	end;
 
	phr = {
 
		{ tag = "phaetlarr", always = true, "[Вызвать Фаэтларра]", code = [[walkin("phaetlarr_phone_dlg")]]},
 
		{ tag = "phaetlarr", always = true, "[Вызвать Фаэтларра]", function(s)
 
			phaetlarr_dlg.from_call = true;
 
			phaetlarr_dlg.home = false;
 
			phaetlarr_dlg.underwater = false;
 
			walkin("phaetlarr_dlg");
 
		end},
 
		{ tag = "learr", always = true, "[Вызвать Леарр]", function(s)
 
			if char_learr.home == 'leviathan_cabin_3' then
 
				return [[Леарр не берет трубку. ]];
 
			else
 
				walkin("learr_phone_dlg");
 
				learr_dlg.from_call = true;
 
				learr_dlg.home = false;
 
				learr_dlg.underwater = false;
 
				walkin("learr_dlg");
 
			end;
 
		end},
 
		{ tag = "radcliffe", always = true, "[Вызвать Уолтера Рэдклиффа]", code = [[walkin("radcliffe_phone_dlg")]]},
 
		{ tag = "wright", always = true, "[Вызвать Джека Райта]", code = [[walkin("wright_phone_dlg")]]},
 
		{ tag = "anna", always = true, "[Вызвать Анну Рэдклифф]", code = [[walkin("anna_phone_dlg")]]},
 
		{ tag = "radcliffe", always = true, "[Вызвать Уолтера Рэдклиффа]", function(s)
 
			radcliffe_dlg.from_call = true;
 
			radcliffe_dlg.home = false;
 
			walkin("radcliffe_dlg");
 
		end},
 
		{ tag = "wright", always = true, "[Вызвать Джека Райта]", function(s)
 
			wright_main_dlg.from_call = true;
 
			wright_main_dlg.home = false;
 
			walkin("wright_main_dlg");
 
		end},
 
		{ tag = "anna", always = true, "[Вызвать Анну Рэдклифф]", function(s)
 
			anna_dlg.from_call = true;
 
			anna_dlg.home = false;
 
			walkin("anna_dlg");
 
		end},
 
		{ tag = "exit", always = true, "[Положить трубку]", code = [[back()]]}
 
	}
 
};
party.lua
Show inline comments
 
@@ -56,16 +56,19 @@ char_learr = obj {
 
        end;
 
 
		if (stead.nameof(where(s)) == s.home) then
 
            learr_home_dlg.home = true;
 
            learr_dlg.home = true;
 
            learr_dlg.from_call = false;
 
            learr_dlg.underwater = false;
 
		else
 
            learr_home_dlg.home = false;
 
            learr_dlg.home = false;
 
            learr_dlg.from_call = false;
 
            if where(s).underwater then
 
                learr_home_dlg.underwater = true;
 
                learr_dlg.underwater = true;
 
            else
 
                learr_home_dlg.underwater = false;
 
                learr_dlg.underwater = false;
 
            end;
 
		end;
 
        walkin(learr_home_dlg);
 
        walkin(learr_dlg);
 
	end;
 
    seen_level = 2;
 
};
 
@@ -94,8 +97,11 @@ char_phaetlarr = obj {
 
	act = function(s)
 
		if (stead.nameof(where(s)) == s.home) then
 
            phaetlarr_dlg.home = true;
 
            phaetlarr_dlg.from_call = false;
 
            phaetlarr_dlg.underwater = false;
 
        else
 
            phaetlarr_dlg.home = false;
 
            phaetlarr_dlg.from_call = false;
 
            if where(s).underwater then
 
                phaetlarr_dlg.underwater = true;
 
            else
 
@@ -138,17 +144,14 @@ char_radcliffe = obj {
 
	life = party_follow;
 
	act = function(s)
 
		if (stead.nameof(where(s)) == s.home) then
 
            radcliffe_home_dlg.home = true;
 
            radcliffe_dlg.home = true;
 
            radcliffe_dlg.from_call = false;
 
		else
 
            radcliffe_home_dlg.home = false;
 
            if where(s).underwater then
 
                wright_main_dlg.underwater = true;
 
            else
 
                wright_main_dlg.underwater = false;
 
            end;
 
            radcliffe_dlg.home = false;
 
            radcliffe_dlg.from_call = false;
 
		end;
 
 
        walkin(radcliffe_home_dlg);
 
        walkin(radcliffe_dlg);
 
	end;
 
    seen_level = 2;
 
};
 
@@ -180,13 +183,10 @@ char_wright = obj {
 
	act = function(s)
 
        if (stead.nameof(where(s)) == s.home) then
 
            wright_main_dlg.home = true;
 
            wright_main_dlg.from_call = false;
 
        else
 
            wright_main_dlg.home = false;
 
            if where(s).underwater then
 
                wright_main_dlg.underwater = true;
 
            else
 
                wright_main_dlg.underwater = false;
 
            end;
 
            wright_main_dlg.from_call = false;
 
        end;
 
        walkin(wright_main_dlg);
 
	end;
 
@@ -223,61 +223,20 @@ char_anna = obj {
 
	act = function(s)
 
		if (stead.nameof(where(s)) == s.home) then
 
			anna_dlg.home = true;
 
		else
 
            anna_dlg.from_call = false;
 
        else
 
            anna_dlg.home = false;
 
            if where(s).underwater then
 
                anna_dlg.underwater = true;
 
            else
 
                anna_dlg.underwater = false;
 
            end;
 
            anna_dlg.from_call = false;
 
		end;
 
        walkin(anna_dlg);
 
	end;
 
    seen_level = 2;
 
};
 
 
learr_phone_dlg = dlg {
 
    nam = "Леарр";
 
    entered = function(s)
 
        if (char_learr.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[Вы слышите в трубке голос Леарр: "Ты говори". ]];
 
    end;
 
    phr = {
 
        { tag = "join", always = true, "Я хочу, чтобы ты пошла со мной в следующий раз.", [[Леарр отвечает: "Хорошо". ]], 
 
            function()
 
                char_learr:accompany(true);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                pon('stay');
 
                poff('join');
 
            end;
 
        };
 
        { tag = "stay", always = true, "Оставайся на Левиафане.", [[Леарр отвечает: "Хорошо". ]], 
 
            function()
 
                char_learr.accompany(char_learr, false);
 
                poff('stay');
 
                pon('join');
 
            end;
 
        };
 
        { tag = "exit", always = true, "Это все.", [[Леарр отвечает: "Ты приходи". ]], 
 
            function() 
 
                back();
 
            end;
 
        };
 
    };
 
};
 
 
learr_home_dlg = dlg {
 
learr_dlg = dlg {
 
    var {
 
        iraa_temple_asked = false;
 
        from_call = false;
 
        home = false;
 
        underwater = false;
 
    };
 
@@ -355,8 +314,12 @@ learr_home_dlg = dlg {
 
            pon("on_iraa_temple");
 
        end;
 
	    
 
        psub("generic");   
 
		return [[Леарр вопросительно смотрит на вас. ]];
 
        psub("generic");
 
        if s.from_call then
 
            return [[Вы слышите в трубке голос Леарр: "Ты говори". ]];
 
        else
 
		    return [[Леарр вопросительно смотрит на вас. ]];
 
        end;
 
	end;
 
	phr = {
 
        {tag="on_solution_not_returned"};
 
@@ -425,39 +388,39 @@ learr_home_dlg = dlg {
 
            end;
 
        end};
 
        { tag = 'on_ven_keeper', false, function(s)
 
            if learr_home_dlg.underwater then
 
            if learr_dlg.underwater then
 
                return '[Кодировщик] Хранитель храма отказывается отдавать нам камень. У тебя есть идеи на этот счет?';
 
            else
 
                return 'Хранитель храма отказывается отдавать нам камень. У тебя есть идеи на этот счет?';
 
            end;
 
        end, function(s)
 
            if learr_home_dlg.underwater then
 
            if learr_dlg.underwater then
 
                return [[Леарр пожимает плечами, по ее головным плавникам бегут цветные полосы: "Только вождь сможет на него повлиять. Говори с ним, а не со мной". ]]
 
            else
 
                return [[Леарр пожимает плечами: "Только-вождь на-него-повлиять-сможет. Ты с-ним-говори". ]]
 
            end;
 
        end};
 
        { tag = "on_iraa_temple", false, function(s)
 
            if learr_home_dlg.underwater then
 
            if learr_dlg.underwater then
 
                return "[Кодировщик] Нам нужно попасть в храм и найти карту. Ты можешь уговорить вождя дать нам доступ?";
 
            else
 
                return "Нам нужно попасть в храм и найти карту. Ты можешь уговорить вождя дать нам доступ?";
 
            end;
 
        end, function(s)
 
            if learr_home_dlg.underwater then
 
            if learr_dlg.underwater then
 
                return [[Плавники Леарр окрашиваются сиреневым, после чего по ним начинают бежать цветные полосы: "Ты просишь невозможного". Кажется, она закончила, но через мгновение, навьяресса внезапно добавляет: "Я найду карту, если ты мне позволишь". ]];
 
            else
 
                return [[Плавники Леарр окрашиваются сиреневым, она говорит: "Ты невозможного-просишь". Кажется, она закончила, но через мгновение, навьяресса внезапно добавляет: "Я карту-найду, если ты-Дрейк разрешишь". ]];
 
            end;
 
        end};
 
		{ tag = "on_iyh", always = true, function(s)
 
            if learr_home_dlg.underwater then
 
            if learr_dlg.underwater then
 
                return "[Кодировщик] Что ты можешь рассказать мне о храме?"
 
            else
 
                return "Что ты можешь рассказать мне о храме?"
 
            end;
 
        end, function(s)
 
            if learr_home_dlg.underwater then
 
            if learr_dlg.underwater then
 
                return [[По головным плавникам Леарр бегут цветные полосы: "В каждый храм есть два входа. Главный вход виден издалека, но всегда есть еще один вход. Если мы его найдем, то сможем попасть внутрь". ]];
 
            else
 
                return [[Леарр отвечает: "Каждый-храм два-входа-имеет. Большой-главный-вход далеко-виден. Тайный-задний-вход незаметен-но-всегда-есть. Если мы задний-вход-найдем, то в-храм-проникнем". ]];
 
@@ -489,47 +452,9 @@ learr_home_dlg = dlg {
 
	};
 
};
 
 
phaetlarr_phone_dlg = dlg {
 
    nam = "Фаэтларр";
 
    entered = function(s)
 
        if (char_phaetlarr.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[Вы слышите голос Фаэтларра: "Фаэтларр слушает. Ты говори". ]];
 
    end;
 
    phr = {
 
        { tag = "join", always = "true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Фаэтларр отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(true);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                poff('join');
 
                pon('stay');
 
            end; 
 
        };
 
        { tag = "stay", always = "true", "Оставайся на Левиафане.", [[Фаэтларр отвечает: "Хорошо". ]], 
 
            function()
 
                char_phaetlarr.accompany(char_phaetlarr, false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        { tag = "exit", always = "true", "Это все.", [[Фаэтларр отвечает: "Ты приходи. Конец связи". ]], 
 
            function() 
 
                back();
 
            end;
 
        }
 
    };
 
};
 
 
phaetlarr_dlg = dlg {
 
    var {
 
        from_call = false;
 
        home = false;
 
        underwater = false;
 
    };
 
@@ -568,8 +493,8 @@ phaetlarr_dlg = dlg {
 
            poff('stay', 'join');
 
        end;
 
 
        if s.home then
 
            return [[Фаэтларр смотрит на вас. ]];
 
        if s.from_call then
 
            return [[Вы слышите в трубке голос Фаэтларра: "Ты говори". ]];
 
        else
 
            return [[Фаэтларр ждет ваших указаний. ]];
 
        end;
 
@@ -631,49 +556,11 @@ phaetlarr_dlg = dlg {
 
	};
 
};
 
 
radcliffe_phone_dlg = dlg {
 
    nam = "Уолтер Рэдклифф";
 
    entered =function(s)
 
        if (char_radcliffe.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[В трубке вы слышите голос Уолтера Рэдклиффа: "Рэдклифф слушает". ]];
 
    end;
 
    phr = {
 
        {tag="join", always=true, "Я хочу, чтобы ты пошел со мной в следующий раз.", [[ Уолтер отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(true);
 
                char_wright:accompany(false);
 
                char_anna:accompany(false);
 
                pon('stay');
 
                poff('join');
 
                return [[Я готов]];
 
            end;  
 
        };
 
        {tag="stay", always="true", "Оставайся на Левиафане.", [[ Уолтер отвечает: "Хорошо". ]], 
 
            function()
 
                char_radcliffe.accompany(char_radcliffe, false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        {tag="exit", always="true", "Это все.", [[Уолтер отвечает: "Конец связи". ]], 
 
            function() 
 
                back();
 
            end;
 
        };
 
    };
 
};
 
 
radcliffe_home_dlg = dlg {
 
radcliffe_dlg = dlg {
 
    var {
 
        iraa_temple_asked = false
 
        from_call = false;
 
        home = false;
 
        iraa_temple_asked = false;
 
    };
 
	nam = "Уолтер Рэдклифф";
 
	entered = function (s)
 
@@ -689,7 +576,7 @@ radcliffe_home_dlg = dlg {
 
            poff('on_ven_keeper');
 
        end;
 
 
        if have(item_raybox) then
 
        if have(item_raybox) and not s.from_call and s.home then
 
            pon('on_raybox');
 
        else
 
            poff('on_raybox');
 
@@ -805,7 +692,9 @@ radcliffe_home_dlg = dlg {
 
            end;
 
        end;
 
 
        if s.underwater then
 
        if s.from_call then
 
            return [[Вы слышите в трубке голос Уолтера Рэдклиффа: "Уолтер Рэдклифф на связи". ]];
 
        elseif not s.home then
 
            return [[Уолтер ждет ваших указаний. ]];
 
        else
 
            return [[Уолтер задумчиво смотрит на вас. ]];
 
@@ -927,39 +816,9 @@ radcliffe_home_dlg = dlg {
 
	};
 
};
 
 
wright_phone_dlg = dlg {
 
    nam = "Джек Райт";
 
    entered = function(s)
 
        if (char_wright.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[В трубке вы слышите голос Джека Райта: "Райт на связи". ]];
 
    end;
 
    phr = {
 
        {tag="join", always="true", "Я хочу, чтобы ты пошел со мной в следующий раз.", [[Джек Райт отвечает: "Хорошо". ]], code [[
 
            char_learr:accompany(false);
 
            char_phaetlarr:accompany(false);
 
            char_radcliffe:accompany(false);
 
            char_wright:accompany(true);
 
            char_anna:accompany(false);
 
            pon('stay');
 
            poff('join');
 
        ]]};
 
        {tag="stay", always="true", "Оставайся на Левиафане.", [[Джек Райт отвечает: "Хорошо". ]], code [[
 
            char_wright:accompany(false);
 
            pon('join');
 
            poff('stay');
 
        ]]};
 
        {tag="exit", always="true", "Это все.", [[Джек Райт отвечает: "Конец связи". ]], code [[ back(); ]]};
 
    };
 
};
 
 
wright_main_dlg = dlg {
 
	var {
 
        from_call = false;
 
        iraa_temple_asked = false;
 
        home = false;
 
        underwater = false;
 
@@ -1067,8 +926,11 @@ wright_main_dlg = dlg {
 
 
            return [[Джек вопросительно смотрит на вас. ]];
 
        end;
 
        
 
		return [[Джек ждет ваших указаний. ]];
 
        if s.from_call then
 
            return [[Вы слышите в трубке голос Джека Райта: "Джек Райт на связи. Что вы хотели?" ]];
 
        else
 
		    return [[Джек ждет ваших указаний. ]];
 
        end;
 
	end;
 
	phr = {
 
        {tag="generic"};
 
@@ -1163,50 +1025,11 @@ wright_main_dlg = dlg {
 
	};
 
};
 
 
anna_phone_dlg = dlg {
 
    nam = "Анна Рэдклифф";
 
    entered = function(s)
 
        if (char_anna.follow) then
 
            pon('stay');
 
            poff('join');
 
        else
 
            pon('join');
 
            poff('stay');
 
        end;
 
        return [[В трубке вы слышите голос Анны Рэдклифф: "Рэдклифф слушает". ]];
 
    end;
 
    phr = {
 
        { tag = "join", always = "true", "Я хочу, чтобы ты пошла со мной в следующий раз.", [[Анна отвечает: "Хорошо". ]],
 
            function()
 
                char_learr:accompany(false);
 
                char_phaetlarr:accompany(false);
 
                char_radcliffe:accompany(false);
 
                char_wright:accompany(false);
 
                char_anna:accompany(true);
 
                pon('stay');
 
                poff('join');
 
            end; 
 
        };
 
        { tag = "stay", always = "true", "Оставайся на Левиафане.", [[Анна отвечает: "Хорошо". ]], 
 
            function()
 
                char_anna:accompany(false);
 
                pon('join');
 
                poff('stay');
 
            end;
 
        };
 
        { tag = "exit", always = "true", "Это все.", [[Анна отвечает: "Конец связи". ]], 
 
            function() 
 
                back();
 
            end;
 
        };
 
    };
 
};
 
 
anna_dlg = dlg {
 
    var {
 
        from_call = false;
 
        iraa_temple_asked = false;
 
        home = false;
 
        underwater = false;
 
    };
 
	nam = "Анна Рэдклифф";
 
	entered = function(s)
 
@@ -1324,8 +1147,11 @@ anna_dlg = dlg {
 
 
            return [[Анна вопросительно смотрит на вас. ]];
 
        end;
 
        
 
		return [[Анна ждет ваших указаний. ]];
 
        if s.from_call then
 
            return [[Вы слышите в трубке голос Анны Рэдклифф: "Анна Рэдклифф на связи". ]];
 
        else
 
		    return [[Анна ждет ваших указаний. ]];
 
        end;
 
	end;
 
	phr = {
 
        {tag="generic"};
 
@@ -1340,6 +1166,8 @@ anna_dlg = dlg {
 
        {tag='on_ven_keeper', false, "Хранитель храма отказывается отдавать нам камень. У тебя есть идеи на этот счет?", function(s)
 
            if rel_anna < 0 then
 
                return [[Анна отвечает: "Не думаю, что могу чем-то помочь". ]];
 
            elseif anna_dlg.from_call then
 
                return [[Анна отвечает: "У меня есть решение этой проблемы. Жду тебя в кают-компании". ]];
 
            else
 
                take(ven_item_potion);
 
                return [[Анна прогягивает вам флакончик какой-то жидкости со словами: "Если хранитель вдохнет или проглотит это -- он уснет". ]]
0 comments (0 inline, 0 general)