--- deliantra/server/ext/player-env.ext 2007/09/19 21:56:30 1.15 +++ deliantra/server/ext/player-env.ext 2010/04/08 18:27:17 1.16 @@ -36,7 +36,8 @@ $ns->extcmd or next; my $map = $pl->ob->map or next; - my $faces = $MUSIC_FACE_CACHE{$map} ||= do { + my $faces = delete $ns->{music_play_once}; + $faces ||= $MUSIC_FACE_CACHE{$map} ||= do { # 1. map-specific music info parse_facelist "music/", $map->{music} or do { @@ -82,15 +83,23 @@ $pl->ob->message ("You are now " . $new->longname . ". H", $new->longname); - $MUSIC_QUEUE{$pl->ob->name} = undef; + undef $MUSIC_QUEUE{$pl->ob->name}; $MUSIC_SCHEDULER->ready; }, on_map_change => sub { my ($pl, $new) = @_; - $MUSIC_QUEUE{$pl->ob->name} = undef; + undef $MUSIC_QUEUE{$pl->ob->name}; $MUSIC_SCHEDULER->ready; }, ); +sub play_music_once { + my ($pl, $music) = @_; + + $pl->ns->{music_play_once} = parse_facelist "music/", $music; + + undef $MUSIC_QUEUE{$pl->ob->name}; + $MUSIC_SCHEDULER->ready; +}