--- deliantra/server/ext/map-link.ext 2007/06/11 21:38:13 1.4 +++ deliantra/server/ext/map-link.ext 2013/01/11 15:08:03 1.14 @@ -1,36 +1,56 @@ #! perl # mandatory +# this is the map type for the {link} map, a singleton +# this is the only map in the server that is guaranteed to exist +# at all times without blocking, and this is ensured by not relying +# on any external files. + cf::map->register (qr{^\{link\}}); sub load_header { my ($self) = @_; # singleton :/ - $self->width (21); - $self->height (21); - $self->nodrop (1); + $self->width (7); + $self->height (7); + $self->enter_x (1); + $self->enter_y (1); + $self->no_drop (1); + $self->no_reset (1); - $self->name ("special built-in map"); + $self->name ("interdimensional nothingness"); $self->alloc; - $self->in_memory (cf::MAP_IN_MEMORY); + $self->state (cf::MAP_INACTIVE); + + # provide a floor + my $floor = cf::object::new "dirtfloor"; + Guard::scope_guard { $floor->destroy }; + + $floor->name ("{link}"); + for my $x (0..6) { + for my $y (0 .. 6) { + $self->insert ($floor->clone, $x, $y); + } + } # provide some exits "home" my $exit = cf::object::new "exit"; - my $guard = Coro::guard { $exit->destroy }; + Guard::scope_guard { $exit->destroy }; + # these teleporters exist in case a player gets stuck $exit->slaying ($cf::EMERGENCY_POSITION->[0]); $exit->stats->hp ($cf::EMERGENCY_POSITION->[1]); $exit->stats->sp ($cf::EMERGENCY_POSITION->[2]); - $self->insert ($exit->clone, 9, 9); - $self->insert ($exit->clone, 9, 10); - $self->insert ($exit->clone, 9, 11); - $self->insert ($exit->clone, 10, 9); - $self->insert ($exit->clone, 10, 11); - $self->insert ($exit->clone, 11, 9); - $self->insert ($exit->clone, 11, 10); - $self->insert ($exit->clone, 11, 11); + $self->insert ($exit->clone, 2, 2); + $self->insert ($exit->clone, 2, 3); + $self->insert ($exit->clone, 2, 4); + $self->insert ($exit->clone, 3, 2); + $self->insert ($exit->clone, 3, 4); + $self->insert ($exit->clone, 4, 2); + $self->insert ($exit->clone, 4, 3); + $self->insert ($exit->clone, 4, 4); $self->{deny_save} = 1; $self->{deny_reset} = 1; @@ -40,5 +60,3 @@ 1 } -1 -