/** * This is the effect skelton docs. This effect * has a classification of "body.poison". * <p> * Describe the arguments in here. * <p> * This effect has a shadow associated with it. * @classification body.poison * @see help::effects */ #include "path.h" #include <effect.h> string *wretch_msg = ({ "Your stomach turns inside out, and you lose your lunch.\n", "You double over in pain.\n" }); string *room_msg = ({ " convulses violently, and you're presented with a grand view " + "of a recent meal.\n", " groans and doubles over.\n", " seethes in agony.\n" }); /** @ignore yes */ string query_classification() { return "body.poison"; } /** @ignore yes */ /* No need for a shadow * string query_shadow_ob() { return SHADOWS + "poison"; } */ /** @ignore yes */ int beginning( object player, int time, int id ) { player->submit_ee("wretch", ({ 30, 60 }), EE_CONTINUOUS); player->submit_ee( 0, time, EE_REMOVE ); player->adjust_bonus_con( -5 ); player->adjust_bonus_dex( -2 ); tell_object(player, "Seething pains radiate from the wounds " "inflicted upon you by "+previous_object(1)->one_short()+".\n"); return time; } /* beginning() */ /** @ignore yes */ int merge_effect( object player, int time1, int time2 ) { player->submit_ee( 0, time1 + time2 - (int)player->expected_tt(), EE_REMOVE ); return time1 + time2; } /* merge_effect() */ int restart( object player, int time, int id ) { player->adjust_bonus_con( -5 ); player->adjust_bonus_dex( -2 ); return time; } /* restart() */ /** @ignore yes */ void end( object player, int time, int id ) { player->adjust_bonus_con( 5 ); player->adjust_bonus_dex( 2 ); tell_object( player, "You feel better now.\n" ); } /* end() */ void wretch(object player, int time, int id) { int msg_no; msg_no = random( sizeof( wretch_msg ) ); tell_object( player, wretch_msg[ msg_no ] ); tell_room( environment( player ), (string)player->the_short() + room_msg[ msg_no ], player); player->adjust_hp( -(int)player->query_hp() / 10 ); HEALTH_H->monitor_points(player, 1); } /* wretch() */