--- deliantra/maps/perl/nimbus.ext 2006/08/25 15:07:43 1.12 +++ deliantra/maps/perl/nimbus.ext 2006/08/27 15:23:30 1.13 @@ -1,5 +1,4 @@ #! perl -#CONVERSION: PARTIAL # handle the nimbus map and other stuff @@ -110,47 +109,50 @@ $portal->free; } -sub on_trigger { - my ($event, $porter, $ob) = @_; +cf::register_attachment nimbus_exit => + on_trigger => sub { + my ($self, $ob) = @_; + + my $pl = $ob->contr; + my @savebed; + + if (my $save = delete $ob->{in_nimbus}) { + @savebed = @{$save->{savebed}}; + + if ($self->{nimbus_exit}{restore}) { + $ob->message ("The gods acknowledge your success.\n"); + stats_set $ob->stats, $save->{stats}; + stats_set $pl->orig_stats, $save->{orig_stats}; + $ob->player_lvl_adj; # update overall level + skills_set $ob, $save->{skill_exp}; + } else { + $ob->message ("The gods are disappointed with you.\n"); + } - my $options = $event->options; - my $pl = $ob->contr; - my @savebed; - - if (my $save = delete $ob->{in_nimbus}) { - @savebed = @{$save->{savebed}}; - - if ($options eq "restore") { - $ob->message ("The gods acknowledge your success.\n"); - stats_set $ob->stats, $save->{stats}; - stats_set $pl->orig_stats, $save->{orig_stats}; - $ob->player_lvl_adj; # update overall level - skills_set $ob, $save->{skill_exp}; } else { - $ob->message ("The gods are disappointed with you.\n"); + @savebed = ("/scorn/taverns/inn", 10, 5); } - } else { - @savebed = ("/scorn/taverns/inn", 10, 5); - } + $pl->set_savebed (@savebed); - $pl->set_savebed (@savebed); + my $map = $ob->map; - my $map = $ob->map; + teleport $pl, @savebed; - teleport $pl, @savebed; + # should make this a temporary map and let cf deal with it + unlink $map->path; + unlink $map->path . ".pst"; + unlink $map->path . ".cfperl"; - # should make this a temporary map and let cf deal with it - unlink $map->path; - unlink $map->path . ".cfperl"; - $map->delete_map; + $map->delete_map; - $pl->play_sound_player_only (cf::SOUND_PLAYER_DIES); + $pl->play_sound_player_only (cf::SOUND_PLAYER_DIES); - $ob->message ("You feel as if you woke up from a dream.\n"); - $ob->message ("You have a headache.\n"); - $ob->message ("Maybe you should have a drink.\n"); + $ob->message ("You feel as if you woke up from a dream.\n"); + $ob->message ("You have a headache.\n"); + $ob->message ("Maybe you should have a drink.\n"); - 1 -} + cf::override; + }, +;