Method code for $filtered_frob.propagate()

[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

Tlon