--- deliantra/server/ext/NPC_Dialogue.pm 2007/06/16 23:22:59 1.5 +++ deliantra/server/ext/NPC_Dialogue.pm 2007/08/26 04:07:40 1.8 @@ -109,6 +109,36 @@ The environment is that standard "map scripting environment", which is limited in the type of constructs allowed (no loops, for example). +Here is a example: + +=over 4 + +=item B + + @match hi + @cond grep $_->name =~ /royalty/, $who->inv + You got royalties there! Wanna have! + +You may want to change the C method there to something like C, +C<slaying> or any other method that is allowed to be called on a +C<cf::object> here. + +=item B<matching for an item name and removing the matched item> + + @match found earhorn + @cond grep $_->slaying =~ /Gramp's walking stick/, $who->inv + @eval my @g = grep { $_->slaying =~ /Gramp's walking stick/ } $who->inv; $g[0]->decrease_ob_nr (1); + Thanks for the earhorn! + +This example is a bit more complex. The C<@eval> statement will search +the players inventory for the same term as the C<@cond> and then +decreases the number of objects used there. + +(See also the map: C<scorn/houses/cornerbrook.map> for an example how this is +used in the real world :-) + +=back + =item @eval perl Like C<@cond>, but proceed regardless of the outcome. @@ -185,6 +215,17 @@ Trigger all objects with the given connected-id by 'releasing' the connection. +=item @playersound face-name + +Plays the given sound face (either an alias or sound file path) so that +only the player talking to the npc can hear it. + +=item @npcsound face-name + +Plays the given sound face (either an alias or sound file path) as if +the npc had made that sound, i.e. it will be located at the npc and all +players near enough can hear it. + =item @addtopic topic Adds the given topic names (separated by C<|>) to the list of topics @@ -235,6 +276,12 @@ } elsif ($cmd eq "comment") { # nop + } elsif ($cmd eq "playersound") { + $self->{ob}->contr->play_sound (cf::sound::find $args); + + } elsif ($cmd eq "npcsound") { + $self->{npc}->play_sound (cf::sound::find $args); + } elsif ($cmd eq "cond") { cf::safe_eval $args, %vars or next topic;