#include <effect.h> #define HEALTH_SKILL "other.health" #define HIDING_SKILL "covert.hiding.person" /* Removed - what's this actually here for? void create() { seteuid( (string)"/secure/master"-> creator_file( file_name( this_object() ) ) ); } */ /* create() */ void beginning( object player, int amount, int id ) { player->submit_ee( 0, 0, EE_REMOVE ); } /* beginning() */ void end( object player, int amount, int id ) { int damage, chance; float resist; object thing, *things; amount = amount * 5; tell_object( player, "Your mouth is on fire! Flames and smoke pour from " "your mouth like a Klatchian volcano.\n" ); damage = amount - player->query_ac( "gas", amount, "self" ); if( player->query_property( "burnt mouth" ) ) damage = damage * 3; player->add_property( "burnt mouth", 1, 10 ); player->adjust_hp( -damage ); if( player->query_hp() < 0 ) player->attack_by( this_object() ); if( !environment( player ) ) { tell_object( player, "The smoke clears.\n" ); return; } things = all_inventory( environment( player ) ); foreach( thing in things ) { if( !living( thing ) || thing == player ) continue; resist = to_float( thing->query_skill_bonus( HEALTH_SKILL ) / 100 ); resist = 100 * ( 16 / pow( 2, resist ) ); chance = 16; if( thing->query_hide_invis()["hiding"] ) chance += thing->query_skill_bonus( HIDING_SKILL ) / 25; chance = to_int( resist ) / chance; if( !pk_check( player, thing ) && random( amount ) < chance ) { tell_object( thing, "Vast amounts of fire and smoke billow from " + player->the_short() + " and you are forced, coughing and " "crying, out of the area.\n" ); thing->run_away(); } else { tell_object( thing, "Fire and smoke billow from " + player->the_short() + " but it doesn't seem to affect you.\n" ); } } tell_room( environment( player ), "The smoke clears.\n" ); } /* end() */ string query_classification() { return "magic.smoke.choking"; } string query_name() { return "really nasty pizza"; }