Switch to edit mode.
Name(s): bf_notify1: {who, what} = args
2: caller_perms():controls(who) || raise(E_PERM)
3: "(((ticks_left() < 2000) || (seconds_left() == 1)) && suspend(0)) && \"Like a suspend_if_needed call, but the ticks/seconds have to be less.\";"
4: if (s = valid(who) ? `setremove(who.spied, who) ! E_PROPNF' | `$network:listener(who).spied ! E_PROPNF, E_INVIND, E_INVARG => {}')
5: $spying_buffer = {@$spying_buffer, {who, what}}
6: try
7: fork (0)
8: if (#104:has_property(tostr(who, "_spying_semaphore")))
9: return
10: endif
11: add_property(#104, tostr(who, "_spying_semaphore"), 0, {$slacker, "c"})
12: try
13: for what in ($spying_buffer)
14: if (what[1] == who)
15: for x in (s)
16: x:notify(tostr("[", who, "]: ", strsub(what[2], "~0D~0A", "")))
17: endfor
18: $spying_buffer = listdelete($spying_buffer, what in $spying_buffer)
19: endif
20: $cmd_utils:suspend_if_needed(0)
21: " This suspend should be alright... any other... could be badish. :) "
22: endfor
23: finally
24: delete_property(#104, tostr(who, "_spying_semaphore"))
25: endtry
26: endfork
27: except (ANY)
28: endtry
29: else
30: for x in [1..5]
31: "Tick"
32: endfor
33: endif
34: "$login.total_data = $login.total_data + length(what);"
35: return pass(@args)
36: "Last modified by Cecil (#7407) on Tue Apr 1 09:36:05 2003 MST."