Boot FO (#2001)

(an instance of Generic Feature Object made by horse)

     A feature for @booting obnoxious players.

Go to location of this object, horse.


HELP MANUAL:
     This FO is for @booting players who are being obnoxious.
     It is available only to wizards, and certain individuals at the wizards' discretion.
     If you feel you are being harassed, please see a wizard and explain the problem.



VERB SOURCE CODE:

@boot:
if (this:trusted(valid(cp = caller_perms()) ? cp | player))
    nargs = length(args);
    if (nargs < 1)
        player:notify(tostr("Usage: ", verb, " "));
        return;
    endif
    who = $string_utils:match_player(dobjstr);
    if ($command_utils:player_match_failed(who, dobjstr))
        return;
    endif
    if ($object_utils:connected(who))
        player:tell("Please enter your reason for @booting below.");
        reason = $command_utils:read_lines();
        if (length(reason) == 0)
            player:tell("You need to supply a reason for @booting.");
            return;
        endif
        who:tell(player.name, " has @booted you from the MOO.");
        boot_player(who);
        player:tell("You just @booted ", who.name, ".");
        player:tell("Sending mail to *", this.boot_log.name, "...");
        $mail_agent:send_message(player, this.boot_log, tostr(player.name, " booted 
", who.name), reason);
        player:tell("Mail sent.");
    else
        player:tell(who.name, " isn't connected.");
    endif
else
    player:tell("You are not allowed to use this feature.  If you feel you are being 
harassed, see a wizard.");
endif
.


@addtrust @rmtrust:
if ((valid(cp = caller_perms()) ? cp | player).wizard)
    nargs = length(args);
    if (nargs < 1)
        player:tell("Usage: ", verb, " ");
        return;
    endif
    who = $string_utils:match_player(dobjstr);
    if ($command_utils:player_match_failed(who, dobjstr))
        return;
    endif
    found = who in this.trusted;
    if (verb == "@addtrust")
        if (found)
            player:tell(who.name, " is already in the list.");
            return;
        else
            this.trusted = listappend(this.trusted, who);
            player:tell(who.name, " added to list.");
            return;
        endif
    endif
    if (verb == "@rmtrust")
        if (found)
            this.trusted = $list_utils:setremove_all(this.trusted, who);
            player:tell(who.name, " removed from list.");
            return;
        else
            player:tell(who.name, " is not in the list.");
            return;
        endif
    endif
else
    player:tell("You must be a wizard to do that.");
endif
.


@listtrust:
if (this:trusted(valid(cp = caller_perms()) ? cp | player))
    player:tell("Boot FO trusted list:");
    player:tell_lines($string_utils:names_of(this.trusted));
else
    player:tell("You must be a wizard to do that.");
endif
.


trusted:
return args[1].wizard || (args[1] in this.trusted);
.



PROPERTY DATA:
      trusted
      boot_log