/* -*- LPC -*- */ /* * $Locker: $ * $Id: basic_cure.c,v 1.1 1998/01/06 04:13:03 ceres Exp $ * $Log: basic_cure.c,v $ * Revision 1.1 1998/01/06 04:13:03 ceres * Initial revision * */ /** * This is the effect skelton docs. This effect * has a classification of "fighting.warcry". * <p> * Describe the arguments in here. * @classification fighting.warcry * @see help::effects */ /* Basic file meant to be inherited by the cures for diseases. -*- LPC -*- * Very much a work in progress * If you change this file, remember to update * /doc/creator/files/std.effects.healing.basic_cure as well if I've made * it yet:) * Olorin */ #include <effect.h> int do_setup; string classification; void set_classification( string str ) { classification = str; } /** @ignore yes */ string query_classification() { return classification; } void create() { classification = "cure.nothing"; if ( !do_setup ) this_object()->setup(); } /* create() */ void do_cure( object person, int power ) { int i, j; int *effnums, *tmpnums; class effect *effs; string *cure_class; cure_class = explode( classification, "." ); cure_class[ 0 ] = "disease"; effnums = ({ }); effs = (class effect *)person->query_effs(); for( i = 1 ; i < sizeof( cure_class ) ; i++ ) { tmpnums = (int *)person->effects_matching( implode( cure_class[ 0 .. <i ], "." ) ); tmpnums -= effnums; effnums = tmpnums + effnums; } j = sizeof( effnums ); while ( j-- && ( power >= 0 ) ) { if ( function_exists( "cure", find_object( effs[ effnums[ j ] ]->ob_name ) ) ) { power = effs[ effnums[ j ] ]->ob_name-> cure( person, classification, power, effnums[ j ] ); if ( power >= 0 ) { person->submit_ee2( effnums[ j ], 0, 0, EE_REMOVE ); } } } } /* do_cure() */