#include <effect.h> #define CURE 200 string query_classification() { return "sugar.high"; } int beginning( object player, int arg, int sid ) { player->submit_ee( "soul_reactions", ({ 10, 10 }), EE_CONTINUOUS ); player->submit_ee( 0, arg, EE_REMOVE ); return 0; } /* beginning() */ void merge_effect() { return; } void end( object player, int arg, int sid ) { if ( !player->query_property( "dead" ) ) tell_object( player, "The sugar seems to have worn off.\n" ); } /* end() */ void soul_reactions( object player, int arg, int sid ) { switch ( random( 9 ) ) { case 0 : player->new_parser( "frolic" ); break; case 1 : player->new_parser( "gibber" ); break; case 2 : player->new_parser( "moonwalk" ); break; case 3 : player->new_parser( "bounce" ); break; case 4 : player->new_parser( "strut" ); break; case 5 : player->new_parser( "wibble" ); break; case 6 : player->new_parser( "hiccup" ); break; case 7 : player->new_parser( "flap" ); break; case 8 : player->new_parser( "flip" ); break; default : player->new_parser( "zip" ); } arg -= CURE / 10; if ( arg < 0 ) arg = 0; player->set_arg_of( (int)player->sid_to_enum( sid ), arg ); } /* soul_reactions() */ int test_remove( object player, int arg, int enum, int bonus ) { arg += bonus; if ( arg > CURE ) return 1; player->set_arg_of( enum, arg ); return 0; } /* test_remove() */