/* * A shadow to make a player immune to some stuff after being raised. */ #include <player.h> object player; int remove; void setup_shadow( object thing ) { shadow( thing, 1 ); player = thing; call_out( "dest_sanctuary_shadow", 60 * 15 ); } /* setup_shadow() */ void dest_sanctuary_shadow() { destruct( TO ); } int query_sanctuary() { return 1; } void zap_sanctuary_shadow() { if( !remove ) { tell_object( player, "You lose the protection of the gods.\n" ); call_out("dest_sanctuary_shadow", 1 ); remove = 1; } } /* zap_sanctuary_shadow() */ int adjust_hp( int number, object thing, object weapon, string attack ) { if( ( number > 0 ) || !thing || !pk_check(thing, player ) || player == TP ) return (int)player->adjust_hp( number, thing, weapon, attack ); return (int)player->query_hp(); } /* adjust_hp() */ int set_hp( int number, object thing ) { int current; current = (int)player->query_hp(); if ( ( number > current ) || !thing || !thing->query_property( PKER ) ) return (int)player->set_hp( number, thing ); return current; } /* set_hp() */ int attack_by( object thing ) { if ( !thing->query_property( PKER ) ) return (int)player->attack_by( thing ); tell_object( thing, (string)player->the_short() + " cannot be attacked right now.\n" ); thing->stop_fight( player ); return 0; } /* attack_by() */ int attack_ob( object thing ) { zap_sanctuary_shadow(); return (int)player->attack_ob( thing ); } /* attack_ob() */ int no_offense() { zap_sanctuary_shadow(); return (int)player->no_offense(); } /* no_offense() */ mixed query_property( string word ) { if ( word == PKER ) return 0; return (mixed)player->query_property( word ); } /* query_property() */ int command_shadowed( string verb, string args ) { if ( member_array( verb, ({ "cast" }) ) == -1 ) return (int)player->command_shadowed( verb, args ); zap_sanctuary_shadow(); return (int)player->command_shadowed( verb, args ); } /* command_shadowed() */