--- deliantra/server/ext/map-random.ext 2007/01/11 01:01:55 1.3 +++ deliantra/server/ext/map-random.ext 2007/01/13 23:06:13 1.5 @@ -1,29 +1,31 @@ -#! perl +#! perl # MANDATORY -use base "cf::path"; - -__PACKAGE__->register ("random"); +cf::map->register (qr{^\?random/([0-9a-f]{32})}); sub init { my ($self) = @_; - if (0 < Coro::AIO::aio_load "$cf::RANDOM_MAPS/$self->{path}.meta", my $data) { + $self->{random_id} = $1; + + if (0 < Coro::AIO::aio_load "$cf::RANDOM_MAPS/$self->{random_id}.meta", my $data) { $self->{random} = cf::from_json $data; $self->{random}{custom} ||= "$self->{random}{origin_map}+$self->{random}{origin_x}+$self->{random}{origin_y}"; } + + 1 } sub visible_name { my ($self) = @_; my $rmp = $self->{random}; - "random map at $rmp->{custom} level $rmp->{dungeon_level}" + "random map at $rmp->{custom}, level $rmp->{dungeon_level}" } sub save_path { my ($self) = @_; - sprintf "%s/%s", $cf::RANDOM_MAPS, $self->{path} + sprintf "%s/%s.map", $cf::RANDOM_MAPS, $self->{random_id} } sub uniq_path { @@ -33,9 +35,11 @@ sub load_orig { my ($self) = @_; - $self->{random} - ? cf::map::generate_random_map "$self", $self->{random} - : () + return unless $self->{random}; + + $self->generate_random_map ($self->{random}); + + 1 } sub clean_random_maps {