/usr/share/games/instead/stead/counters.lua is in instead-data 1.9.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | if stead.api_version < "1.6.3" then
error ("Counters module can not run with api version < 1.6.3", 3)
end
local function inc_nr(v, n)
local name = '__'..n..'_nr'
if not v[name] then
v[name] = 0
end
v[name] = v[name] + 1
end
local function read_nr(v, n, set)
local name = '__'..n..'_nr'
v = stead.ref(v)
if type(v) ~= 'table' then
return v
end
if not v[name] then
if type(set) == 'number' then v[name] = set end
return 0
end
n = v[name]
if type(set) == 'number' then v[name] = set end
return n
end
game.onact = stead.hook(game.onact, function(f, v, w, ...)
inc_nr(v, 'act');
inc_nr(w, 'act');
return f(v, w, ...)
end)
game.onuse = stead.hook(game.onuse,
function(f, v, w, ...)
inc_nr(v, 'use');
inc_nr(w, 'use');
return f(v, w, ...)
end)
game.oninv = stead.hook(game.oninv,
function(f, v, w, ...)
inc_nr(v, 'inv');
inc_nr(w, 'inv');
return f(v, w, ...)
end)
game.onwalk = stead.hook(game.onwalk,
function(f, v, w, ...)
inc_nr(v, 'walk');
inc_nr(w, 'walk');
return f(v, w, ...)
end)
function act_count(s, v)
if not s and not v then
s = game
v = nil
elseif tonumber(s) then
v = s
s = game
end
return read_nr(s, 'act', v)
end
function inv_count(s, v)
if not s and not v then
s = game
v = nil
elseif tonumber(s) then
v = s
s = game
end
return read_nr(s, 'inv', v)
end
function use_count(s, v)
if not s and not v then
s = game
v = nil
elseif tonumber(s) then
v = s
s = game
end
return read_nr(s, 'use', v)
end
function walk_count(s, v)
if not s and not v then
s = game
v = nil
elseif tonumber(s) then
v = s
s = game
end
return read_nr(s, 'walk', v)
end
|