--- deliantra/server/ext/chat.ext 2007/03/01 13:01:37 1.9 +++ deliantra/server/ext/chat.ext 2007/04/24 18:24:31 1.14 @@ -38,6 +38,8 @@ my $player = cf::player::find_active $pl->name; if ($msg ne "") { + $msg = 10 if $msg > 10; + my $prev_listen = $player->listening; $player->listening ($msg); if ($prev_listen == $player->listening) { @@ -74,6 +76,24 @@ } }; +cf::register_command orcknuckle => sub { + my ($pl, $msg) = @_; + my @orcknuckle = ("none", "beholder", "ghost", "knight", "princess", "dragon", "orc"); + + my $name = $pl->name; + + my ($i, $j, $k, $l) = ((int rand 5) + 1, (int rand 5) + 1, (int rand 5) + 1, (int rand 6) + 1); + my $result = "$orcknuckle[$i], $orcknuckle[$j], $orcknuckle[$k], $orcknuckle[$l]"; + + for my $other ( grep { $pl->on_same_map_as ($_->ob) } cf::player::list ) { + next + if $other->ob == $pl; + $other->ob->message ("$name rolls $result!", cf::NDI_GREY | cf::NDI_UNIQUE); + } + + $pl->message ("You roll $result!", cf::NDI_GREY | cf::NDI_UNIQUE); +}; + my $emotes = { growl => { noparams => { @@ -211,7 +231,8 @@ self => "Have you got something in your eye?", }, params => { - target => " winks at .", + target => " winks at you.", + other => " winks at .", self => "You wink suggestively at .", }, self => { @@ -311,7 +332,8 @@ self => "You bleed all over your nice new armour.", }, params => { - target => " slashes his wrist and bleeds all over .", + target => " slashes his wrist and bleeds all over you.", + other => " slashes his wrist and bleeds all over .", self => "You slash your wrist and bleed all over ", }, self => { @@ -862,6 +884,7 @@ } elsif ($other->ob->{ext_ignore_tell}{$name} >= time) { $pl->message ("$target ignores what you say. Give up on it.", cf::NDI_UNIQUE); } else { + return if $other->invoke (cf::EVENT_PLAYER_TOLD, $pl->contr, $msg); utf8::encode $msg; # ->message not yet utf8-ified cf::LOG cf::llevDebug, sprintf "TELL [%s>%s] %s\n", $name, $target, $msg; @@ -998,26 +1021,3 @@ } }; -cf::register_command seen => sub { - my ($pl, $args) = @_; - - if (my ($login) = $args =~ /(\S+)/) { - if ($login eq $pl->name) { - $pl->message ("Very funny, $login. Ha. Ha.", cf::NDI_UNIQUE); - } elsif (cf::player::find_active $login) { - $pl->message ("$login is right here on this server!", cf::NDI_UNIQUE); - } elsif (cf::player::exists $login - and stat sprintf "%s/%s/%s/%s.pl", cf::localdir, cf::playerdir, ($login) x 2) { - my $time = (stat _)[9]; - - $pl->message ("$login was last seen here " - . (POSIX::strftime "%Y-%m-%d %H:%M:%S +0000", gmtime $time) - . " which was " . (int +(time - $time) / 3600) . " hours ago.", cf::NDI_UNIQUE); - } else { - $pl->message ("No player named $login is known to me.", cf::NDI_UNIQUE); - } - } else { - $pl->message ("Usage: seen ", cf::NDI_UNIQUE); - } -}; -