forked from github/server
acfb666539
fix a missing lua_pop that trashed the heap.
119 lines
2.3 KiB
Lua
119 lines
2.3 KiB
Lua
-- global functions used in items.xml
|
|
|
|
function peasant_changeresource(u, delta)
|
|
local p = u.region:get_resource("peasant")
|
|
p = p + delta
|
|
if p < 0 then
|
|
p = 0
|
|
end
|
|
u.region:set_resource("peasant", p)
|
|
return p
|
|
end
|
|
|
|
function hp_changeresource(u, delta)
|
|
local hp = u.hp + delta
|
|
|
|
if hp < u.number then
|
|
if hp < 0 then
|
|
hp = 0
|
|
end
|
|
u.number = hp
|
|
end
|
|
u.hp = hp
|
|
return hp
|
|
end
|
|
|
|
local function mallorn_region(r)
|
|
return r:get_flag(1) -- RF_MALLORN
|
|
end
|
|
|
|
function seed_limit(r)
|
|
if mallorn_region(r) then
|
|
return 0
|
|
end
|
|
return r:get_resource("seed")
|
|
end
|
|
|
|
function seed_produce(r, n)
|
|
if not mallorn_region(r) then
|
|
local seeds = r:get_resource("seed")
|
|
if seeds>=n then
|
|
r:set_resource("seed", seeds-n)
|
|
else
|
|
r:set_resource("seed", 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mallornseed_limit(r)
|
|
if mallorn_region(r) then
|
|
return r:get_resource("seed")
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function mallornseed_produce(r, n)
|
|
if mallorn_region(r) then
|
|
local seeds = r:get_resource("seed")
|
|
if seeds>=n then
|
|
r:set_resource("seed", seeds-n)
|
|
else
|
|
r:set_resource("seed", 0)
|
|
end
|
|
end
|
|
end
|
|
function horse_limit(r)
|
|
return r:get_resource("horse")
|
|
end
|
|
|
|
function horse_produce(r, n)
|
|
local horses = r:get_resource("horse")
|
|
if horses>=n then
|
|
r:set_resource("horse", horses-n)
|
|
else
|
|
r:set_resource("horse", 0)
|
|
end
|
|
end
|
|
|
|
function log_limit(r)
|
|
return r:get_resource("tree") + r:get_resource("sapling")
|
|
end
|
|
|
|
function log_produce(r, n)
|
|
local trees = r:get_resource("tree")
|
|
if trees>=n then
|
|
r:set_resource("tree", trees-n)
|
|
else
|
|
r:set_resource("tree", 0)
|
|
n = n - trees
|
|
trees = r:get_resource("sapling")
|
|
if trees>=n then
|
|
r:set_resource("sapling", trees-n)
|
|
else
|
|
r:set_resource("sapling", 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mallorn_limit(r)
|
|
if not mallorn_region(r) then
|
|
return 0
|
|
end
|
|
return r:get_resource("tree") + r:get_resource("sapling")
|
|
end
|
|
|
|
function mallorn_produce(r, n)
|
|
local trees = r:get_resource("tree")
|
|
if trees>=n then
|
|
r:set_resource("tree", trees-n)
|
|
else
|
|
r:set_resource("tree", 0)
|
|
n = n - trees
|
|
trees = r:get_resource("sapling")
|
|
if trees>=n then
|
|
r:set_resource("sapling", trees-n)
|
|
else
|
|
r:set_resource("sapling", 0)
|
|
end
|
|
end
|
|
end
|