diff --git a/items.lua b/items.lua --- a/items.lua +++ b/items.lua @@ -40,6 +40,10 @@ item_colt = obj { Ваш револьвер. Надежное оружие в хорошем состоянии. Оно еще не раз спасет вашу жизнь. У вас также есть небольшой запас патронов к нему. ]]; use = function(s, o) + if (here().underwater) then + return "Под водой это вам не поможет. "; + end; + if (s.bullets == 0) then return "Нужно перезарядиться, патроны кончились"; end; @@ -58,7 +62,7 @@ item_colt = obj { return(o.onshoot(o)); else return ""; - end + end; elseif (o.noshootmsg) then return o.noshootmsg; else @@ -81,7 +85,55 @@ item_colt = obj { item_harpoon = obj { nam = "item_harpoon"; - + charge = 1; + disp = function(s) + if (s.charge == 0) then + return "Гарпунное ружье (разряжено)"; + else + return "Гарпунное ружье (заряжено)"; + end; + end; + dsc = [[ + + ]]; + use = function(s, o) + if (s.charge == 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.charge = s.charge - 1; + p("Вы стреляете в "..o.disp2 .. ". "); + if (o.onshoot) then + return(o.onshoot(o)); + else + return ""; + end; + elseif (o.noshootmsg) then + return o.noshootmsg; + else + return "Я не буду этого делать!"; + end; + end; + inv = function(s) + if (s.charge > 0) then + return [[ + Пневматическое ружье с Левиафана. Стреляет гарпунами. Также у вас есть несколько запасных гарпунов с собой. + ]]; + else + s.charge = 1; + return [[ + Вы заряжаете ружье. + ]]; + end; + end; }; item_first_city_key = obj {