[Turn on line numbering]arg value, prop; var i, out, dflt, l, eff, f, n; if (type(value) == 'frob && class(value) == $message_frob) value = .new_with(value, sender()); out = #[]; eff = prop.effect(); f = prop.senses(); dflt = f.contains('any) ? f['any] : 1000000; n = 0; for i in (value) { if (i[1] in ['message, 'propagator, 'effects]) { out = out.add(@i); } else { if (f.contains(i[1])) l = i[2] - f[i[1]]; else l = i[2] - dflt; if (l > 0) { out = out.add(i[1], l); n++; } } } if (!n) return 0; if (eff) out = out.add('effects, ((| out.effects() |) || []) + [eff]); return (<this(), out>);
// Created 09-Apr-1997 as a part of ColdCore, see: @help Credit