--- deliantra/server/lib/cf.pm 2006/08/29 13:11:58 1.53 +++ deliantra/server/lib/cf.pm 2006/08/29 14:49:28 1.54 @@ -284,36 +284,23 @@ $res } -sub cf::object::attach { +*cf::object::attach = +*cf::player::attach = +*cf::map::attach = sub { my ($obj, $name, %arg) = @_; _attach_attachment $obj, $name, %arg; } -sub cf::player::attach { - my ($obj, $name, %arg) = @_; - - _attach_attachment $obj, $name, %arg; -} - -sub cf::map::attach { - my ($obj, $name, %arg) = @_; - - _attach_attachment $obj, $name, %arg; -} - -sub cf::object::detach { - my ($obj, $name) = @_; - die;#d# -} -sub cf::player::detach { +# all those should be optimised +*cf::object::detach = +*cf::player::detach = +*cf::map::detach = sub { my ($obj, $name) = @_; - die;#d# -} -sub cf::map::detach { - my ($obj, $name) = @_; - die;#d# -} + + delete $obj->{_attachment}{$name}; + reattach $obj; +}; sub attach_global { _attach @CB_GLOBAL, KLASS_GLOBAL, @_