2010-06-20 18:47:49 +03:00
|
|
|
obj = inherit(obj, function(v)
|
|
|
|
if v.use then
|
|
|
|
v.use = hook(v.use, function(f, s, on, ...)
|
|
|
|
return f(s, ref(on), unpack(arg))
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
if v.used then
|
|
|
|
v.used = hook(v.used, function(f, s, by, ...)
|
|
|
|
return f(s, ref(by), unpack(arg))
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
return v
|
|
|
|
end)
|
2010-06-20 19:55:51 +03:00
|
|
|
|
2010-06-20 18:47:49 +03:00
|
|
|
room = inherit(room, function(v)
|
2010-06-20 19:55:51 +03:00
|
|
|
if v.enter then
|
2010-06-20 18:47:49 +03:00
|
|
|
v.enter = hook(v.enter, function(f, s, from, ...)
|
|
|
|
return f(s, ref(from), unpack(arg))
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
if v.entered then
|
2010-06-20 19:56:36 +03:00
|
|
|
v.entered = hook(v.entered, function(f, s, from, ...)
|
2010-06-20 18:47:49 +03:00
|
|
|
return f(s, ref(from), unpack(arg))
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
if v.exit then
|
|
|
|
v.exit = hook(v.exit, function(f, s, to, ...)
|
|
|
|
return f(s, ref(to), unpack(arg))
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
if v.left then
|
|
|
|
v.left = hook(v.left, function(f, s, to, ...)
|
|
|
|
return f(s, ref(to), unpack(arg))
|
|
|
|
end)
|
|
|
|
end
|
2010-06-20 19:31:23 +03:00
|
|
|
return v
|
2010-06-20 18:47:49 +03:00
|
|
|
end)
|