River bank (#11)

(an instance of generic room made by Calkins)

     You are standing on the grassy banks of a wide river. A steel suspension bridge spans the river, leading to the eastern bank. Across the water, the city of Bellona flickers. On its dockfront, down half a mile, flames roil smoke on the sky and reflections on the river. Here, not one car comes off the bridge. Not one goes on.
     To the west is the mouth of a cave, where newcomers can find a MOO tutorial. To the east is the bridge into the city. There is also a taxi here, which can take you to places of special interest.

You see a newspaper here.

EXITS:
      You see the pylons of the bridge, and beyond across the water, the city. [ bridge ] Bridge. You pass smashed toll boothes and walk east about half way across the river.
      You see a cave entrance in an outcroping of rock. [ west ] Cave Entrance. You walk west into the cave entrance.
      [ taxi ] Taxi.



VERB SOURCE CODE:

keep_clean:
junk = {};
while (1)
    for x in (junk)
        $command_utils:suspend_if_needed(0);
        if (x in this.contents)
            "This is old junk that's still around five minutes later.  Clean it up.";
            if (!valid(x.owner))
                move(x, $nothing);
                #2:tell(">**> Cleaned up orphan object `", x.name, "' (", x, "), 
owned by ", x.owner, ", to #-1.");
            elseif (!$object_utils:contains(x, x.owner))
                move(x, x.owner);
                x.owner:tell("You shouldn't leave junk in ", this.name, "; ", x.name, 
" (", x, ") has been moved to your inventory.");
                #2:tell(">**> Cleaned up `", x.name, "' (", x, "), owned by `", x.owner.name, 
"' (", x.owner, "), to ", x.owner, ".");
            endif
        endif
    endfor
    junk = {};
    for x in (this.contents)
        if ((seconds_left() < 2) || (ticks_left() < 1000))
            suspend(0);
        endif
        if (!is_player(x))
            junk = {@junk, x};
        endif
    endfor
    suspend(5 * 60);
endwhile
.


disfunc:
who = args[1];
if (who.home == this)
    move(who, $limbo);
    this:announce("You hear a quiet popping sound; ", who.name, " has disconnected.");
else
    pass(who);
endif
.


enterfunc:
who = args[1];
if ($limbo:acceptable(who))
    move(who, $limbo);
else
    pass(who);
endif
.


match:
m = pass(@args);
if (m == $failed_match)
    "... it might be a player off in the body bag...";
    m = $string_utils:match_player(args[1]);
    if (valid(m) && (!(m.location in {this, this.body_bag})))
        return $failed_match;
    endif
endif
return m;
.


init_for_core:
if (!caller_perms().wizard)
    return E_PERM;
endif
for v in ({"turn", "open"})
    delete_verb($player_start, v);
endfor
for p in ({"out"})
    delete_property($player_start, p);
endfor
for p in ($object_utils:all_properties($room))
    clear_property($player_start, p);
endfor
$player_start.name = "The First Room";
$player_start.aliases = {};
$player_start.description = "This is all there is right now.";
$player_start.exits = $player_start.entrances = {};
.



PROPERTY DATA:
      body_bag