Method code for $filtered_frob.propagate()

[Turn off line numbering]
  1: arg value, prop;
  2: var i, out, dflt, l, eff, f, n;
  3: 
  4: if (type(value) == 'frob && class(value) == $message_frob)
  5:     value = .new_with(value, sender());
  6: out = #[];
  7: eff = prop.effect();
  8: f = prop.senses();
  9: dflt = f.contains('any) ? f['any] : 1000000;
 10: n = 0;
 11: for i in (value) {
 12:     if (i[1] in ['message, 'propagator, 'effects]) {
 13:         out = out.add(@i);
 14:     } else {
 15:         if (f.contains(i[1]))
 16:             l = i[2] - f[i[1]];
 17:         else
 18:             l = i[2] - dflt;
 19:         if (l > 0) {
 20:             out = out.add(i[1], l);
 21:             n++;
 22:         }
 23:     }
 24: }
 25: if (!n)
 26:     return 0;
 27: if (eff)
 28:     out = out.add('effects, ((| out.effects() |) || []) + [eff]);
 29: return (<this(), out>);

// Created 09-Apr-1997 as a part of ColdCore, see: @help Credit

Tlon