Changeset - 550f49d73f5d
[Not reviewed]
default
0 2 0
Silverwing - 6 years ago 2019-02-03 14:41:56

logical inconsistency fixed
2 files changed with 23 insertions and 5 deletions:
0 comments (0 inline, 0 general)
items.lua
Show inline comments
 
@@ -129,163 +129,167 @@ item_spear = obj {
 
        if (canhit) then
 
            if (o.onhit) then
 
                return(o.onhit(o));
 
            else
 
                return "";
 
            end;
 
        elseif (o.nohitmsg) then
 
            return o.nohitmsg;
 
        else
 
            return "Я не буду этого делать!";
 
        end;
 
    end;
 
};
 
 
item_colt = obj {
 
    var {
 
        bullets = 6;
 
    };
 
	nam = "colt";
 
	disp = function(s)
 
		return "Кольт (" .. tostring(s.bullets) .. " зарядов)";
 
	end;
 
	dsc = [[На столе лежит {револьвер}. ]];
 
    tak = "Вы забираете револьвер. ";
 
	use = function(s, o)
 
        if (here().underwater) then
 
            return "Под водой это вам не поможет. ";
 
        end;
 
    
 
		if (s.bullets == 0) then
 
			return "Нужно перезарядиться, патроны кончились";
 
		end;
 
		
 
		local canshoot = false;
 
		if (type(o.canshoot) == "function") then
 
			canshoot = o.canshoot(o);
 
		else
 
			canshoot = o.canshoot;
 
		end;
 
		
 
		if (canshoot) then
 
			s.bullets = s.bullets - 1;
 
			p("Вы стреляете в "..o.disp2 .. ". ");
 
			if (o.onshoot) then
 
				return(o.onshoot(o));
 
			else
 
				return "";
 
			end;
 
		elseif (o.noshootmsg) then
 
		elseif o.noshootsilent then
 
			return
 
		elseif o.noshootmsg then
 
			return o.noshootmsg;
 
		else
 
			return "Я не буду этого делать!";
 
		end;
 
	end;
 
	inv = function(s)
 
		if (s.bullets > 0) then
 
			return [[Ваш револьвер. Надежное оружие в хорошем состоянии. Оно еще не раз спасет вашу жизнь. У вас также есть небольшой запас патронов к нему. ]];
 
		else
 
			s.bullets = 6;
 
			p [[Вы перезаряжаете ваш револьвер и оружие снова готово к бою. ]];
 
            if (type(here().onreload) == 'function') then
 
                here().onreload();
 
            end;
 
		end;
 
	end;
 
};
 
 
item_harpoon = obj {
 
    var {
 
        charge = 1;
 
    };
 
    nam = "item_harpoon";
 
    disp = function(s)
 
        if (s.charge == 0) then
 
            return "Ружье (разряжено)";
 
        else
 
            return "Ружье (заряжено)";
 
        end;
 
    end;
 
    dsc = [[К стене прислонено {гарпунное ружье}. ]];
 
    tak = "Вы забираете ружье. ";
 
    use = function(s, o)
 
        if (s.charge == 0) then
 
            return "Ружье не заряжено. ";
 
        end;
 
        
 
        local canshoot = false;
 
        if (type(o.canshoot) == "function") then
 
            canshoot = o:canshoot();
 
        else
 
            canshoot = o.canshoot;
 
        end;
 
        
 
        local canthrust = false;
 
        if (type(o.canthrust) == "function") then
 
            canthrust = o:canthrust();
 
        else
 
            canthrust = o.canthrust;
 
        end;
 
        
 
        if (canthrust) then
 
            p("Вы атакуете "..o.disp2 .. ". ");
 
            if (o.onthrust) then
 
                return(o.onthrust(o));
 
            else
 
                return "";
 
            end;
 
        elseif (canshoot) then
 
            s.charge = s.charge - 1;
 
            p("Вы стреляете в "..o.disp2 .. ". ");
 
            if (o.onshoot) then
 
                return(o.onshoot(o));
 
            else
 
                return "";
 
            end;
 
		elseif o.noshootsilent then
 
			return
 
        elseif (o.noshootmsg) then
 
            return o.noshootmsg;
 
        else
 
            return "Я не буду этого делать!";
 
        end;
 
    end;
 
    inv = function(s)
 
        if (s.charge > 0) then
 
            return [[Пневматическое ружье с Левиафана. Стреляет гарпунами. Также у вас есть несколько запасных гарпунов с собой. ]];
 
        else
 
            s.charge = 1;
 
            p [[Вы заряжаете ружье. ]];
 
            if (type(here().onreload) == 'function') then
 
                here().onreload();
 
            end;
 
        end;
 
    end;
 
};
 
 
item_first_city_key = obj {
 
	nam = "first_city_key";
 
	disp = "Ключ от города";
 
	inv = [[Небольшой светящийся кубик со стороной около 2-х сантиметров. Он плавно меняет цвета: синий, зеленый, желтый, белый, красный, черный. ]];
 
	use = function(s, o)
 
		if (o == char_first_city_guardian) then 
 
			objs("first_city_entrance"):enable("first_city_first_gate");
 
			first_city_entrance.open = true;
 
			return [[Как только кубик попадает в поле зрения стража, его плавник гаснет и ворота начинают медленно открываться. 
 
				Через несколько минут они застывают в открытом состоянии. Теперь ничто не мешает вашему проходу. ]];
 
		end;
 
	end
 
};
 
 
item_service_info = obj {
 
	nam = "service_info";
 
	disp = "Схема города";
 
	inv = [[Это "карта" сервисных тоннелей Лсэрианотра. Вы видите следующие последовательности символов, подписанные на языке навьяров
 
		Nol      
 
		Tei      
 
		Vlye'Tei 
 
		Elt'Dyle 
 
		Tei'Elt	 
 
		Tei'Tei  
 
	]];
 
};
 
 
item_umbrella = obj {
 
	nam = "umbrella";
journey_venaedanotrr.lua
Show inline comments
 
@@ -1636,105 +1636,119 @@ ven_temple_lock = room {
 
            end;
 
        end;
 

	
 
        if tlt % 4 ~= 0 then
 
            if s.values[tlt] == 1 then
 
                s.values[tlt] = 0;
 
            else
 
                s.values[tlt] = 1;
 
            end;
 
        end;
 

	
 
        if trt % 4 ~= 1 then
 
            if s.values[trt] == 1 then
 
                s.values[trt] = 0;
 
            else
 
                s.values[trt] = 1;
 
            end;
 
        end;
 

	
 
        for v = 1, #s.values do
 
            if s.values[v] == 0 then
 
                walk(here());
 
                return;
 
            end;
 
        end;
 

	
 
        p("С легким скрежетом сундук открывается. Внутри вы обнаруживаете огромное количество каменных и металлических табличек в разном состоянии, огромную стопку светодисков и искомый вами красный камень. ");
 
        take(ven_item_red_key);
 
        walk(ven_temple_keeper_house_cellar);
 
        ven_keeper_chest.state = 1;
 
    end;
 
}
 

	
 
ven_temple_hall_1 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    underwater = true;
 
    dsc = [[Вы находитесь в главном зале храма Венаэданотра, у входа. Внутреннее убранство этого храма отличается аскетичностью -- местные жители не стремятся выставлять свои реликвии напоказ, а в этом храме регулярно проводятся массовые службы. Многочисленные полки пусты, стены, как и везде густо покрыты светящимися водорослями. ]];
 
    way = {
 
        kh_vroom('Наружу', 'ven_temple_entrance');
 
        kh_vroom('К центру зала', 'ven_temple_hall_2');
 
    };
 
}
 

	
 
ven_temple_pedestal = obj {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'ven_temple_pedestal';
 
    dsc = [[С одной из сторон пьедестала вашему взору открывается потайная ниша, внутри которой спрятан {рычаг}. ]];
 
    dsc = [[С одной из сторон пьедестала вашему взору открывается потайная ниша, внутри которой спрятана {кнопка}. ]];
 
    act = function(s)
 
        if s.state == 0 then
 
            return [[Кнопка слишком далеко, чтобы нажать ее рукой. ]];
 
        else
 
            ven_temple_pedestal.state = 0;
 
            ven_temple_qhall.state = 0;
 
            path("Наверх", ven_temple_qhall):disable();
 
            put(item_harpoon, pl);
 
            return "Вы забираете ружье. ";
 
        end;
 
    end;
 
    canshoot = false;
 
    noshootsilent = true;
 
    used = function(s, o)
 
        if o == item_harpoon then
 
            if s.state == 0 then
 
                remove(item_harpoon, pl);
 
            ven_temple_pedestal.state = 1;
 
            ven_temple_qhall.state = 1;
 
            path("Наверх", ven_temple_qhall):enable();
 
            return [[Рычаг легко поддается. Из зала вопроса доносится гул, который вскоре оканчивается глухим ударом. ]];
 
        else
 
            return [[Вам здесь больше нечего делать. ]];
 
                return [[Вы нажимаете кнопку гарпунным ружьем. К сожалению, его придется оставить здесь иначе кнопка отожмется. ]];
 
            end;
 
        end;
 
    end;
 
}
 

	
 
ven_temple_hall_2 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    underwater = true;
 
    dsc = [[В центре храма расположен пьедестал. На нем лежат несколько металлических табличек с древними письменами. ]];
 
    way = {
 
        kh_vroom('Ко входу', 'ven_temple_hall_1');
 
        kh_vroom('В конец зала', 'ven_temple_hall_3');
 
        kh_vroom('В зал вопроса', 'ven_temple_qhall');
 
        kh_vroom('В зал ответа', 'ven_temple_ahall');
 
    };
 
    obj = {
 
        ven_temple_pedestal:disable()
 
    }
 
}
 

	
 
ven_temple_hall_3 = room {
 
    nam = 'Храм Венаэданотра, главный зал';
 
    underwater = true;
 
    dsc = [[В этой части главного зала расположена небольшая неприметная дверца, ведущая в служебные помещения храма. ]];
 
    way = {
 
        kh_vroom('К центру зала', 'ven_temple_hall_2');
 
    };
 
}
 

	
 
ven_temple_qhall = room {
 
    var {
 
        state = 0;
 
    };
 
    nam = 'Храм Венаэданотра, зал вопроса';
 
    underwater = true;
 
    dsc = function(s)
 
        if s.state == 0 then
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. ]];
 
        else
 
            return [[Небольшое помещение сбоку от основного храмового зала. Напротив входа на стену нанесено изображение главного зала. Одна из боковых стен зала отсутствует, открывая проход на широкую лестницу, ведущую наверх. ]];
 
        end;
 
    end;
 
    obj = {
 
        'ven_qhall_altar'
 
    };
 
    way = {
 
        kh_vroom('В главный зал', 'ven_temple_hall_2');
 
        kh_vroom('Наверх', 'ven_temple_labyrinth_l1'):disable();
 
    };
0 comments (0 inline, 0 general)