--- deliantra/server/ext/NPC_Dialogue.pm 2008/04/21 06:35:26 1.9 +++ deliantra/server/ext/NPC_Dialogue.pm 2009/01/08 04:35:04 1.13 @@ -14,12 +14,6 @@ use strict; -sub has_dialogue($) { - my ($ob) = @_; - - $ob->msg =~ /^\@match /; -} - sub parse_message($) { map [split /\n/, $_, 2], grep length, @@ -318,10 +312,10 @@ $con = $con * 1; if (defined $state) { - $self->{npc}->map->trigger ($args, $state); + $self->{npc}->map->trigger ($args, $state, $self->{npc}, $self->{ob}); } else { my $rvalue = \$self->{npc}{dialog_trigger}{$con}; - $self->{npc}->map->trigger ($con, $$rvalue = !$$rvalue); + $self->{npc}->map->trigger ($con, $$rvalue = !$$rvalue, $self->{npc}, $self->{ob}); } } elsif ($cmd eq "addtopic") { @@ -340,10 +334,6 @@ delete $self->{npc}{$self->{ob}->name}{dialog_state} unless %$state; delete $self->{ob}{dialog_flag} unless %$flag; - # combine lines into paragraphs - $reply =~ s/(?<=\S)\n(?=\w)/ /g; - $reply =~ s/\n\n/\n/g; - # ignores flags and npc from replies $reply = join "\n", (map $_->[1], @replies), $reply; @@ -357,6 +347,9 @@ } } + $self->{npc}->use_trigger ($self->{ob}) + if $self->{npc}->type == cf::MAGIC_EAR; + return wantarray ? ($reply, @kw) : $reply; } }