/* this is to be inherited by effect shadows -*- LPC -*- */
object player;
int id;
object attach_to_player(object p, int i) {
player = p;
id = i;
return shadow( player, 1 );
}
void remove_effect_shadow(int i) {
if (i == id) { if( this_object() ) destruct( this_object() ); return; }
player->remove_effect_shadow(i);
}
protected mixed arg() {
int enum;
enum = (int)player->sid_to_enum( id );
if ( enum == -1 ) {
#ifdef DEBUG
log_file( "EFFECTS", time() +": no effect for "+
file_name( this_object() ) +"\n on "+
file_name( player ) +"\n" );
#endif
destruct( this_object() );
return 0;
}
return (mixed)player->arg_of( enum );
} /* arg() */
protected void set_arg(mixed newarg) {
player->set_arg_of(player->sid_to_enum(id), newarg);
}
protected void remove_this_effect() {
player->delete_effect( (int)player->sid_to_enum( id ) );
} /* remove_this_effect() */