@verb #8438:"@pals @addpal @rmpal" any none none rdo #8438 @program #8438:"@pals @addpal @rmpal" any none none set_task_perms(this) if (verb in {"@addpal", "@rmpal"}) match = $string_utils:match_player(dobjstr) if ($command_utils:player_match_failed(match, dobjstr)) return endif if (verb == "@addpal" && match in player.pals) return player:tell($string_utils:nn(match), " is already in your list of pals.") elseif (verb == "@rmpal" && !(match in player.pals)) return player:tell($string_utils:nn(match), " isn't in your list of pals.") endif if ($command_utils:yes_or_no(tostr(verb == "@addpal" ? "Add " | "Remove ", $string_utils:nn(match), verb == "@addpal" ? " to" | " from", " your list of pals?"))) if (verb == "@addpal") return {player:tell($string_utils:nn(match), " added to your list of pals."), player.pals = setadd(player.pals, match)} else return {player:tell($string_utils:nn(match), " removed from your pal list."), player.pals = setremove(player.pals, match)} endif else return player:tell() endif elseif (verb == "@pals" && !args) pon = $set_utils:intersection(player.pals, connected_players()) player:tell(!pon ? "No pals connected." | tostr("Pals connected: ", $string_utils:name_and_number_list(pon))) if ($command_utils:yes_or_no("Would you like to see the list of all your pals?")) if ($tcm) return player:tell({tostr($string_utils:name_and_number_list(player.pals)), tostr("Total: ", length(player.pals))}) else pals = {} for x in (player.pals) pals = {@pals, {x, `x:titlec() ! ANY => x.name', x:connected() ? "Awake" | "Asleep", `x.location:title() ! ANY => x.location.name', x.location}} suspend(0) endfor return {player:tellColumns(1, {1, 1, 1, 1, 1}, {"#", "Name", "Status", "Location", "#"}, @$list_utils:sort(pals)), player:tell("Total: ", length(pals))} endif else return player:tell() endif else return player:tell({"I don't understand that.", "Prehaps you meant '@pals'?"}) endif .