VARIABLE_FUNCTION_STRING: Functions returning strings. VARIABLE_CONSTANT_STRING: Constant strings. VARIABLE_FUNCTION_NUMBER: Functions returning numbers. VARIABLE_CONSTANT_NUMBER: Constant numbers. /****************************************************************************** You have to add the following prototypes to an appropriate header file: void io_parse args( ( CHAR_DATA *ch, char *in_ptr, char *out_ptr ) ); void io_display args( ( CHAR_DATA *ch, char text[] ) ); void io_main args( ( CHAR_DATA *ch ) ); int io_calculate args( ( CHAR_DATA *ch, char *calculation ) ); ******************************************************************************/ typedef enum { VARIABLE_FUNCTION_STRING, VARIABLE_CONSTANT_STRING, VARIABLE_FUNCTION_NUMBER, VARIABLE_CONSTANT_NUMBER } VARIABLE_TYPE; typedef enum { STATE_NONE, STATE_LEFT_SIGN, STATE_LEFT, STATE_DONE_LEFT, STATE_OPERATOR, STATE_RIGHT_SIGN, STATE_RIGHT } STATE_TYPE; typedef union { char* text; int number; } replace_type; typedef struct { const char * variable; const VARIABLE_TYPE type; replace_type replace; } var_type; /*********************************************************/ /* FUNCTION PROTOTYPES */ /*********************************************************/ static int main_calc ( CHAR_DATA *ch, char calc_string[] ); bool string_var ( char *var_ptr, char **out_ptr ); bool number_var ( char *var_ptr, char *out_ptr ); static void setup_variables ( CHAR_DATA *ch ); /*********************************************************/ /* VARIABLE FUNCTIONS */ /*********************************************************/ CHAR_DATA *you = NULL; OBJ_DATA *wpn = NULL; /*********************************************************************/ /**************************** PURE STRING ****************************/ /*********************************************************************/ char *get_name( void ) { return ( you->name ); } // char *get_firstname( void ) { return ( you->forename ); } // char *get_surname( void ) { return ( you->surname ); } /* char *get_fullname( void ) { static char buf [MAX_INPUT_LENGTH]; strcpy( buf, you->forename ); strcat( buf, " " ); strcat( buf, you->surname ); return ( buf ); } */ char *get_he_she( void ) { return ( IS_FEMALE(you) ? "she" : "he" ); } char *get_him_her( void ) { return ( IS_FEMALE(you) ? "her" : "him" ); } char *get_his_her( void ) { return ( IS_FEMALE(you) ? "her" : "his" ); } char *obj_where_text( OBJ_DATA *obj ) { static char buf [MAX_INPUT_LENGTH]; extern char * const male_where_name[]; extern char * const female_where_name[]; if ( !obj ) return ""; if ( obj->in_obj ) { sprintf( buf, "inside his %s", short_obj_desc(you,obj->in_obj,FALSE) ); return buf; } if ( obj->carried_by == you ) { if ( obj->wear_loc >= WEAR_LIGHT && obj->wear_loc < MAX_WEAR ) { if ( IS_FEMALE(you) ) sprintf( buf, female_where_name[obj->wear_loc], "X", "her" ); else sprintf( buf, male_where_name[obj->wear_loc], "X", "his" ); return &buf[2]; } } return ""; } /*********************************************************************/ /**************************** PURE NUMBER ****************************/ /*********************************************************************/ int get_class( void ) { return ( you->class ); } // int get_dot_mode( void ) { return (!IS_NPC(you) && IS_SET(you->act, PLR_DOT)); } /*********************************************************************/ /********************** BOTH STRING AND NUMBER ***********************/ /*********************************************************************/ int get_wpn( void ) { return ( !!wpn ); } char *get_wpn_text( void ) { return ( wpn ? short_obj_desc(you,wpn,FALSE) : "fist" ); } int wpn_diff( void ) { return ( wpn ? wpn->value[1] : 0 ); } char *wpn_diff_text( void ) { return ( number_text(wpn_diff()) ); } int wpn_dam( void ) { return ( wpn ? wpn->value[2] : 0 ); } char *wpn_dam_text( void ) { return ( number_text(wpn_dam()) ); } int wpn_where( void ) { return ( wpn ? wpn->wear_loc : -1 ); } char *wpn_where_text( void ) { return ( obj_where_text( wpn ) ); } // int get_generation( void ) // { return ( is_affected(you,gsn_potency) ? (you->vampgen_a + 1) : you->vampgen_a ); } char *get_generation_text( void ) { switch ( you->vampgen_a ) { default: return "bugged"; case 15: return "15th"; case 14: return "14th"; case 13: return "13th"; case 12: return "12th"; case 11: return "11th"; case 10: return "10th"; case 9: return "9th"; case 8: return "8th"; case 7: return "7th"; case 6: return "6th"; case 5: return "5th"; case 4: return "4th"; case 3: return "3rd"; case 2: return "2nd"; case 1: return "1st"; } } int get_max_disc( void ) { switch ( you->vampgen_a ) { case 15: return 3; case 14: return 4; default: return 5; case 7: return 6; case 6: return 7; case 5: return 8; case 4: return 9; case 3: return 10; case 2: return 10; case 1: return 10; } } char *get_max_disc_text( void ) { switch ( you->vampgen_a ) { case 15: return "three"; case 14: return "four"; default: return "five"; case 7: return "six"; case 6: return "seven"; case 5: return "eight"; case 4: return "nine"; case 3: return "ten"; case 2: return "ten"; case 1: return "ten"; } } /* int get_sect( void ) { return ( find_sectname( you ) ); } char *get_sect_text( void ) { return ( strlen(you->side) < 2 ? "None" : you->side ); } int get_clan( void ) { return ( find_clanname( you ) ); } char *get_clan_text( void ) { return ( strlen(you->clan) < 2 ? "Caitiff" : you->clan ); } int get_clandisc1( void ) { return ( IS_NPC(you) ? -1 : you->pcdata->cland[0] ); } char *get_clandisc1_text( void ) { return ( get_clandisc1() < 0 ? "None" : disc_name(get_clandisc1()) ); } int get_clandisc2( void ) { return ( IS_NPC(you) ? -1 : you->pcdata->cland[1] ); } char *get_clandisc2_text( void ) { return ( get_clandisc2() < 0 ? "None" : disc_name(get_clandisc2()) ); } int get_clandisc3( void ) { return ( IS_NPC(you) ? -1 : you->pcdata->cland[2] ); } char *get_clandisc3_text( void ) { return ( get_clandisc3() < 0 ? "None" : disc_name(get_clandisc3()) ); } int get_conscience( void ) { return ( you->virtues[1] ); } char *get_conscience_text( void ) { switch ( you->virtues[1] ) { default: return "bugged"; case 1: return "Chaste"; case 2: return "Moral"; case 3: return "Just"; case 4: return "Charitable"; case 5: return "Remorseful"; } } int get_selfcontrol( void ) { return ( you->virtues[2] ); } char *get_selfcontrol_text( void ) { switch ( you->virtues[2] ) { default: return "bugged"; case 1: return "Calm"; case 2: return "Temperate"; case 3: return "Disciplined"; case 4: return "Hardened"; case 5: return "Total self-mastery"; } } int get_courage( void ) { return ( you->virtues[3] ); } char *get_courage_text( void ) { switch ( you->virtues[3] ) { default: return "bugged"; case 1: return "Bold"; case 2: return "Dauntless"; case 3: return "Steadfast"; case 4: return "Gallant"; case 5: return "Valorous"; } } char *get_attribute_str_text(void) { return number_text(you->stats[STAT_STR]); } int get_attribute_str(void) { return you->stats[STAT_STR]; } char *get_attribute_dex_text(void) { return number_text(you->stats[STAT_DEX]); } int get_attribute_dex(void) { return you->stats[STAT_DEX]; } char *get_attribute_sta_text(void) { return number_text(you->stats[STAT_STA]); } int get_attribute_sta(void) { return you->stats[STAT_STA]; } char *get_attribute_cha_text(void) { return number_text(you->stats[STAT_CHA]); } int get_attribute_cha(void) { return you->stats[STAT_CHA]; } char *get_attribute_man_text(void) { return number_text(you->stats[STAT_MAN]); } int get_attribute_man(void) { return you->stats[STAT_MAN]; } char *get_attribute_app_text(void) { return number_text(you->stats[STAT_APP]); } int get_attribute_app(void) { return you->stats[STAT_APP]; } char *get_attribute_per_text(void) { return number_text(you->stats[STAT_PER]); } int get_attribute_per(void) { return you->stats[STAT_PER]; } char *get_attribute_int_text(void) { return number_text(you->stats[STAT_INT]); } int get_attribute_int(void) { return you->stats[STAT_INT]; } char *get_attribute_wit_text(void) { return number_text(you->stats[STAT_WIT]); } int get_attribute_wit(void) { return you->stats[STAT_WIT]; } */ /*********************************************************/ #define STRING_FUNCTION(f) VARIABLE_FUNCTION_STRING, (char *) (f) #define STRING_CONSTANT(f) VARIABLE_CONSTANT_STRING, (f) #define NUMBER_FUNCTION(f) VARIABLE_FUNCTION_NUMBER, (void *) (f) #define NUMBER_CONSTANT(f) VARIABLE_CONSTANT_NUMBER, (void *) (f) #define END_OF_LIST VARIABLE_CONSTANT_NUMBER, NULL int get_disc_animalism( void ) { return get_disc( you, VAM_ANIM ); } char *get_disc_animalism_text( void ) { return number_text(get_disc_animalism()); } int get_disc_auspex( void ) { return get_disc( you, VAM_AUSP ); } char *get_disc_auspex_text( void ) { return number_text(get_disc_auspex()); } int get_disc_celerity( void ) { return get_disc( you, VAM_CELE ); } char *get_disc_celerity_text( void ) { return number_text(get_disc_celerity()); } int get_disc_chimerstry( void ) { return get_disc( you, VAM_CHIM ); } char *get_disc_chimerstry_text( void ) { return number_text(get_disc_chimerstry()); } int get_disc_daimoinon( void ) { return get_disc( you, VAM_DAIM ); } char *get_disc_daimoinon_text( void ) { return number_text(get_disc_daimoinon()); } int get_disc_dominate( void ) { return get_disc( you, VAM_DOMI ); } char *get_disc_dominate_text( void ) { return number_text(get_disc_dominate()); } int get_disc_fortitude( void ) { return get_disc( you, VAM_FORT ); } char *get_disc_fortitude_text( void ) { return number_text(get_disc_fortitude()); } int get_disc_melpominee( void ) { return get_disc( you, VAM_MELP ); } char *get_disc_melpominee_text( void ) { return number_text(get_disc_melpominee()); } int get_disc_necromancy( void ) { return get_disc( you, VAM_NECR ); } char *get_disc_necromancy_text( void ) { return number_text(get_disc_necromancy()); } int get_disc_obeah( void ) { return get_disc( you, VAM_OBEA ); } char *get_disc_obeah_text( void ) { return number_text(get_disc_obeah()); } int get_disc_obfuscate( void ) { return get_disc( you, VAM_OBFU ); } char *get_disc_obfuscate_text( void ) { return number_text(get_disc_obfuscate()); } int get_disc_obtenebration( void ) { return get_disc( you, VAM_OBTE);} char *get_disc_obtenebration_text( void ) { return number_text(get_disc_obtenebration()); } int get_disc_potence( void ) { return get_disc( you, VAM_POTE ); } char *get_disc_potence_text( void ) { return number_text(get_disc_potence()); } int get_disc_presence( void ) { return get_disc( you, VAM_PRES ); } char *get_disc_presence_text( void ) { return number_text(get_disc_presence()); } int get_disc_protean( void ) { return get_disc( you, VAM_PROT ); } char *get_disc_protean_text( void ) { return number_text(get_disc_protean()); } int get_disc_quietus( void ) { return get_disc( you, VAM_QUIE ); } char *get_disc_quietus_text( void ) { return number_text(get_disc_quietus()); } int get_disc_serpentis( void ) { return get_disc( you, VAM_SERP ); } char *get_disc_serpentis_text( void ) { return number_text(get_disc_serpentis()); } int get_disc_thanatosis( void ) { return get_disc( you, VAM_THAN ); } char *get_disc_thanatosis_text( void ) { return number_text(get_disc_thanatosis()); } int get_disc_thaumaturgy( void ) { return get_disc( you, VAM_THAU ); } char *get_disc_thaumaturgy_text( void ) { return number_text(get_disc_thaumaturgy()); } int get_disc_vicissitude( void ) { return get_disc( you, VAM_VICI ); } char *get_disc_vicissitude_text( void ) { return number_text(get_disc_vicissitude()); }