inherit "/std/effect_shadow"; #include <move_failures.h> /* * Coded by Gerbil 8/2/1999 for use with longshot type items. */ #define BP tell_object( find_player("gerbil"), "BP.\n"); #define TG tell_object( find_player("gerbil"), object *holding = ({ }); object active; mixed * death_reason = ({ }); void holding( object ob ) { holding += ({ ob }); } object * query_longshot_holding() { return holding; } void stopped_holding( object ob ) { holding -= ({ ob }); holding = filter_array( holding, (: $1 :) ); if( !sizeof( holding ) ) { remove_this_effect(); } } varargs int move( mixed dest, string inmess, string outmess ) { int i; holding = filter_array( holding, (: $1 :) ); i = player->move( dest, inmess, outmess ); if( !player ) return i; if( i == MOVE_OK ) holding->reset_vars(); return i; } void set_death_reason( string mess, object ob ) { death_reason += ({ ob, mess }); } void purge_death_reason( object ob ) { int i; i = member_array( ob, death_reason ); if( i == -1 ) { return; } death_reason -= ({ death_reason[i + 1] }); death_reason -= ({ death_reason[i] }); } void set_active_item( object ob ) { active = ob; } void reset_active_item() { active = 0; } object query_active_item() { return active; } string query_death_reason() { int i; if( !active ) { return 0; } if( (i = member_array( active, death_reason ) ) == -1 ) { return 0; } return death_reason[i + 1]; }