… | |
… | |
1965 | |
1965 | |
1966 | return unless $self->type == cf::PLAYER; |
1966 | return unless $self->type == cf::PLAYER; |
1967 | |
1967 | |
1968 | if ($exit->slaying eq "/!") { |
1968 | if ($exit->slaying eq "/!") { |
1969 | #TODO: this should de-fi-ni-te-ly not be a sync-job |
1969 | #TODO: this should de-fi-ni-te-ly not be a sync-job |
|
|
1970 | # the problem is that $exit might not survive long enough |
|
|
1971 | # so it needs to be done right now, right here |
1970 | cf::sync_job { prepare_random_map $exit }; |
1972 | cf::sync_job { prepare_random_map $exit }; |
1971 | } |
1973 | } |
1972 | |
1974 | |
1973 | my $slaying = cf::map::normalise $exit->slaying, $exit->map && $exit->map->path; |
1975 | my $slaying = cf::map::normalise $exit->slaying, $exit->map && $exit->map->path; |
1974 | my $hp = $exit->stats->hp; |
1976 | my $hp = $exit->stats->hp; |
… | |
… | |
1982 | $self->goto ($slaying, $hp, $sp); |
1984 | $self->goto ($slaying, $hp, $sp); |
1983 | |
1985 | |
1984 | 1; |
1986 | 1; |
1985 | }) { |
1987 | }) { |
1986 | $self->message ("Something went wrong deep within the crossfire server. " |
1988 | $self->message ("Something went wrong deep within the crossfire server. " |
1987 | . "I'll try to bring you back to the map you were before. " |
1989 | . "I'll try to bring you back to the map you were before. " |
1988 | . "Please report this to the dungeon master!", |
1990 | . "Please report this to the dungeon master!", |
1989 | cf::NDI_UNIQUE | cf::NDI_RED); |
1991 | cf::NDI_UNIQUE | cf::NDI_RED); |
1990 | |
1992 | |
1991 | warn "ERROR in enter_exit: $@"; |
1993 | warn "ERROR in enter_exit: $@"; |
1992 | $self->leave_link; |
1994 | $self->leave_link; |
1993 | } |
1995 | } |
1994 | })->prio (1); |
1996 | })->prio (1); |