// Broken leg curse // Windy, May 2001 #include <effect.h> #define CURE 320 // The bonus at which curing will certainly succeed. string query_classification() { return "disease.injury.broken.leg"; } int *beginning( object player, int time ) { int *arg; arg = ({ time, 0 }); tell_object( player, "You feel a crunch as your leg breaks.\n"); tell_room( ENV( player ), "You hear a crunch as "+ player -> the_short() +"'s "+ "leg breaks.\n", player ); player->add_extra_look( TO ); player->adjust_bonus_dex( -1 ); player->submit_ee( 0, arg, EE_REMOVE ); return arg; } /* beginning() */ int *restart( object player, int *arg ) { player->add_extra_look( TO ); player->adjust_bonus_dex( -1 ); arg [ 0 ] = player->expected_tt(); return arg; } /* restart() */ int *merge_effect( object target, int *old_arg, int *new_arg ) { int old_time, new_time; old_time = old_arg [ 0 ]; new_time = new_arg [ 0 ]; old_time = target->expected_tt() + new_time; old_arg [ 0 ] = old_time; target->add_extra_look( TO ); target->submit_ee( 0, old_arg, EE_REMOVE ); return old_arg; } /* merge_effect() */ int *test_remove( object player, int *arg, int enum, int bonus ) { int old_time, new_time, percent; old_time = player->expected_tt(1, enum); if ( old_time < bonus || bonus >= CURE ) { arg = ({ 0, 1 }); player->set_arg_of( enum, arg ); player->submit_ee2( enum, 0, 0, EE_REMOVE ); return arg; } percent = ( 100 * bonus ) / CURE; new_time = 10 + old_time - ( ( old_time * percent ) / 100 ); arg [ 0 ] = new_time; player->set_arg_of( enum, arg ); player->submit_ee2( enum, 0, arg, EE_REMOVE ); return arg; } /* test_remove() */ void end( object player, int *arg ) { player->remove_extra_look( TO ); player->adjust_bonus_dex( 1 ); if( player->query_property( "dead" ) ) return; if( arg [ 1 ] ) { tell_object( player, "Your broken leg is rapidly healed.\n"); tell_room( ENV( player ), player->the_short() +"'s broken leg is " "rapidly healed.\n", player ); return; } tell_object( player, "Your broken leg heals itself.\n"); tell_room( ENV( player ), player->the_short() +"'s broken leg heals "+ "itself.\n", player ); } /* end() */ string extra_look( object player ) { return CAP( player->HE ) +" has a broken leg.\n"; } /* extra_look() */