@q @program QuisCustodiet.muf 1 9999 d i ( QuisCustodiet.muf v1.1 Jessy @ FurryMUCK 3/97, 7/99 "Quis custodiet ipsos custodes?" "Who watches the watchers?" A utility to see who has you on their watchfor list. Unlike some versions, this checks all players, rather than all connected players. Since searching the dbase is computationally expensive, QuisCustodiet.muf charges pennies for each use... 500 by default. To change this amount, set prop _cost on the program object with the number of pennies to be charged. QuisCustodiet.muf may be freely ported or modified. Please comment any changes. ) lvar watchers lvar ourcost $include $lib/edit : sort-it (* string -- sortedstring ... sort list of names *) strip ", " explode 0 1 EDITsort EDITjoin ", " " " subst ; : main "me" match me ! prog "_cost" getpropstr dup if (* set cost *) atoi ourcost ! else pop 500 ourcost ! then me @ pennies ourcost @ < if (* charge *) ">> Sorry, you need " ourcost @ intostr strcat " pennies." strcat .tell exit else me @ 0 ourcost @ - addpennies then me @ player? not if (* puppets don't need to be doing this *) ">> Sorry, this command is for players only." .tell exit then " " watchers ! (* init some intial inits *) dbtop intostr atoi begin (* begin dbase checking loop *) dup while dup dbref player? not if (* ... skip if not a player ... *) 1 - continue then (* ... see if user's name is in list ... *) dup dbref "_prefs/con_announce_list" getpropstr " " strcat " " swap strcat me @ name " " strcat " " swap strcat instr if dup dbref name ", " strcat watchers @ strcat watchers ! then 1 - repeat (* end dbase checking loop *) watchers @ strlen 1 = if (* notify *) "You are not being watched for." .tell exit then "You are being watched for by: " watchers @ sort-it dup ", " rinstr strcut pop dup ", " rinstr 1 + strcut "and " swap strcat strcat strcat dup strlen 1 - strcut pop "." strcat "," ",," subst .tell ; . c q