--- deliantra/server/lib/cf/mapscript.pm 2009/01/08 03:03:24 1.1 +++ deliantra/server/lib/cf/mapscript.pm 2009/01/08 19:23:44 1.3 @@ -6,19 +6,38 @@ use strict qw(subs vars); -our ($self, $activator, $state); +our ($self, $state, $activator, $originator); + +sub find($) { + ref $_[0] ? $_[0] + : $self->map->find_link ($_[0]) +} + +sub get($) { + (&find)[0]->value +} + +sub trigger($;$) { + $self->map->trigger ($_[0], $#_ ? $_[1] : 1, $self); +} + +sub timer($$) { + my $ob = (&find)[0]; + $ob->speed_left ($_[1] / -cf::TICK); + $ob->set_speed (1); +} package cf::mapscript; use strict qw(subs vars); -sub activate($$$) { - ($self, $activator, $state) = @_; +our %CACHE; - warn "$self->{msg} $self->{on_activate}\n";#d# +sub activate($$$) { + ($self, $state, $activator, $originator) = @_; ( - $self->{on_activate} ||= cf::safe_eval + $CACHE{$self->msg} ||= cf::safe_eval "package mapscript; sub {\n" . "#line 1 '" . ($self->debug_desc) . "'\n" . $self->msg