#include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" void save_class_config args(( void )); void load_class_config args(( void )); CLASS_DATA *alie; CLASS_DATA *apoc; CLASS_DATA *drag; CLASS_DATA *drow; CLASS_DATA *jedi; CLASS_DATA *monk; CLASS_DATA *shad; CLASS_DATA *vamp; CLASS_DATA *were; void do_class_config( CHAR_DATA *ch,char *argument ) { char buf[MAX_STRING_LENGTH]; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; argument = one_argument(argument,arg1); argument = one_argument(argument,arg2); argument = one_argument(argument,arg3); if( arg3[0] == '\0' ) { stc("#7Syntax: classconfig <class> <field> <value>#n\n\r",ch); stc("-----------------------------------------------------------------------\n\r",ch); stc("| **** | Alie | Apoc | Drag | Drow | Jedi | Monk | Shad | Vamp | Were |\n\r",ch); stc("-----------------------------------------------------------------------\n\r",ch); sprintf(buf,"| Armo | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d |\n\r", alie->armo,apoc->armo,drag->armo,drow->armo,jedi->armo,monk->armo,shad->armo,vamp->armo,were->armo); stc(buf,ch); sprintf(buf,"| Atta | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d |\n\r", alie->atta,apoc->atta,drag->atta,drow->atta,jedi->atta,monk->atta,shad->atta,vamp->atta,were->atta); stc(buf,ch); sprintf(buf,"| Damr | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d |\n\r", alie->damr,apoc->damr,drag->damr,drow->damr,jedi->damr,monk->damr,shad->damr,vamp->damr,were->damr); stc(buf,ch); sprintf(buf,"| Dodg | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d |\n\r", alie->dodg,apoc->dodg,drag->dodg,drow->dodg,jedi->dodg,monk->dodg,shad->dodg,vamp->dodg,were->dodg); stc(buf,ch); sprintf(buf,"| Hitr | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d |\n\r", alie->hitr,apoc->hitr,drag->hitr,drow->hitr,jedi->hitr,monk->hitr,shad->hitr,vamp->hitr,were->hitr); stc(buf,ch); sprintf(buf,"| Parr | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d | %4d |\n\r", alie->parr,apoc->parr,drag->parr,drow->parr,jedi->parr,monk->parr,shad->parr,vamp->parr,were->parr); stc(buf,ch); sprintf(buf,"| Powe | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f |\n\r", alie->powe,apoc->powe,drag->powe,drow->powe,jedi->powe,monk->powe,shad->powe,vamp->powe,were->powe); stc(buf,ch); sprintf(buf,"| Rege | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f |\n\r", alie->rege,apoc->rege,drag->rege,drow->rege,jedi->rege,monk->rege,shad->rege,vamp->rege,were->rege); stc(buf,ch); sprintf(buf,"| Toug | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f | %4.2f |\n\r", alie->toug,apoc->toug,drag->toug,drow->toug,jedi->toug,monk->toug,shad->toug,vamp->toug,were->toug); stc(buf,ch); stc("-----------------------------------------------------------------------\n\r",ch); return; } if( !str_prefix(arg1,"alien") ) { if( !str_prefix(arg2,"armor") ) alie->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) alie->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) alie->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) alie->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) alie->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) alie->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) alie->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) alie->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) alie->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"apocryphic") ) { if( !str_prefix(arg2,"armor") ) apoc->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) apoc->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) apoc->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) apoc->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) apoc->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) apoc->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) apoc->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) apoc->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) apoc->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"dragon") ) { if( !str_prefix(arg2,"armor") ) drag->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) drag->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) drag->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) drag->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) drag->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) drag->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) drag->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) drag->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) drag->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"drow") ) { if( !str_prefix(arg2,"armor") ) drow->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) drow->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) drow->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) drow->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) drow->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) drow->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) drow->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) drow->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) drow->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"jedi") ) { if( !str_prefix(arg2,"armor") ) jedi->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) jedi->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) jedi->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) jedi->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) jedi->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) jedi->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) jedi->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) jedi->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) jedi->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"monk") ) { if( !str_prefix(arg2,"armor") ) monk->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) monk->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) monk->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) monk->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) monk->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) monk->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) monk->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) monk->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) monk->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"shadow") ) { if( !str_prefix(arg2,"armor") ) shad->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) shad->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) shad->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) shad->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) shad->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) shad->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) shad->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) shad->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) shad->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"vampire") ) { if( !str_prefix(arg2,"armor") ) vamp->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) vamp->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) vamp->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) vamp->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) vamp->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) vamp->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) vamp->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) vamp->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) vamp->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else if( !str_prefix(arg1,"werewolf") ) { if( !str_prefix(arg2,"armor") ) were->armo = atoi(arg3); else if( !str_prefix(arg2,"attack") ) were->atta = atoi(arg3); else if( !str_prefix(arg2,"damroll") ) were->damr = atoi(arg3); else if( !str_prefix(arg2,"dodge") ) were->dodg = atoi(arg3); else if( !str_prefix(arg2,"hitroll") ) were->hitr = atoi(arg3); else if( !str_prefix(arg2,"parry") ) were->parr = atoi(arg3); else if( !str_prefix(arg2,"power") ) were->powe = atof(arg3); else if( !str_prefix(arg2,"regen") ) were->rege = atof(arg3); else if( !str_prefix(arg2,"toughness") ) were->toug = atof(arg3); else { stc("Invalid field selection.\n\r",ch); return; } save_class_config(); return; } else { stc("Invalid class selection.\n\r",ch); return; } return; } void init_class( void ) { if( alie == NULL ) alie = alloc_perm(sizeof(*alie)); if( apoc == NULL ) apoc = alloc_perm(sizeof(*apoc)); if( drag == NULL ) drag = alloc_perm(sizeof(*drag)); if( drow == NULL ) drow = alloc_perm(sizeof(*drow)); if( jedi == NULL ) jedi = alloc_perm(sizeof(*jedi)); if( monk == NULL ) monk = alloc_perm(sizeof(*monk)); if( shad == NULL ) shad = alloc_perm(sizeof(*shad)); if( vamp == NULL ) vamp = alloc_perm(sizeof(*vamp)); if( were == NULL ) were = alloc_perm(sizeof(*were)); /* Alien */ alie->armo = 0; alie->atta = 0; alie->damr = 0; alie->dodg = 0; alie->hitr = 0; alie->parr = 0; alie->powe = 1; alie->rege = 1; alie->toug = 1; /* Apocryphic*/ apoc->armo = 0; apoc->atta = 0; apoc->damr = 0; apoc->dodg = 0; apoc->hitr = 0; apoc->parr = 0; apoc->powe = 1; apoc->rege = 1; apoc->toug = 1; /* Dragon */ drag->armo = 0; drag->atta = 0; drag->damr = 0; drag->dodg = 0; drag->hitr = 0; drag->parr = 0; drag->powe = 1; drag->rege = 1; drag->toug = 1; /* Drow */ drow->armo = 0; drow->atta = 0; drow->damr = 0; drow->dodg = 0; drow->hitr = 0; drow->parr = 0; drow->powe = 1; drow->rege = 1; drow->toug = 1; /* Jedi */ jedi->armo = 0; jedi->atta = 0; jedi->damr = 0; jedi->dodg = 0; jedi->hitr = 0; jedi->parr = 0; jedi->powe = 1; jedi->rege = 1; jedi->toug = 1; /* Monk */ monk->armo = 0; monk->atta = 0; monk->damr = 0; monk->dodg = 0; monk->hitr = 0; monk->parr = 0; monk->powe = 1; monk->rege = 1; monk->toug = 1; /* Shadow */ shad->armo = 0; shad->atta = 0; shad->damr = 0; shad->dodg = 0; shad->hitr = 0; shad->parr = 0; shad->powe = 1; shad->rege = 1; shad->toug = 1; /* Vampire */ vamp->armo = 0; vamp->atta = 0; vamp->damr = 0; vamp->dodg = 0; vamp->hitr = 0; vamp->parr = 0; vamp->powe = 1; vamp->rege = 1; vamp->toug = 1; /* Werewolf */ were->armo = 0; were->atta = 0; were->damr = 0; were->dodg = 0; were->hitr = 0; were->parr = 0; were->powe = 1; were->rege = 1; were->toug = 1; load_class_config(); return; } void save_class_config( void ) { FILE *fp; if( (fp = fopen(CLASS_FILE,"w")) == NULL) { log_string("Can not open CLASS_FILE for writing."); return; } /* Alien */ fprintf(fp,"Alie\n"); fprintf(fp,"Armo %d\n",alie->armo); fprintf(fp,"Atta %d\n",alie->atta); fprintf(fp,"Damr %d\n",alie->damr); fprintf(fp,"Dodg %d\n",alie->dodg); fprintf(fp,"Hitr %d\n",alie->hitr); fprintf(fp,"Parr %d\n",alie->parr); fprintf(fp,"Powe %3.2f~\n",alie->powe); fprintf(fp,"Rege %3.2f~\n",alie->rege); fprintf(fp,"Toug %3.2f~\n",alie->toug); fprintf(fp,"End\n"); /* Apocryphic */ fprintf(fp,"Apoc\n"); fprintf(fp,"Armo %d\n",apoc->armo); fprintf(fp,"Atta %d\n",apoc->atta); fprintf(fp,"Damr %d\n",apoc->damr); fprintf(fp,"Dodg %d\n",apoc->dodg); fprintf(fp,"Hitr %d\n",apoc->hitr); fprintf(fp,"Parr %d\n",apoc->parr); fprintf(fp,"Powe %3.2f~\n",apoc->powe); fprintf(fp,"Rege %3.2f~\n",apoc->rege); fprintf(fp,"Toug %3.2f~\n",apoc->toug); fprintf(fp,"End\n"); /* Dragon */ fprintf(fp,"Drag\n"); fprintf(fp,"Armo %d\n",drag->armo); fprintf(fp,"Atta %d\n",drag->atta); fprintf(fp,"Damr %d\n",drag->damr); fprintf(fp,"Dodg %d\n",drag->dodg); fprintf(fp,"Hitr %d\n",drag->hitr); fprintf(fp,"Parr %d\n",drag->parr); fprintf(fp,"Powe %3.2f~\n",drag->powe); fprintf(fp,"Rege %3.2f~\n",drag->rege); fprintf(fp,"Toug %3.2f~\n",drag->toug); fprintf(fp,"End\n"); /* Drow */ fprintf(fp,"Drow\n"); fprintf(fp,"Armo %d\n",drow->armo); fprintf(fp,"Atta %d\n",drow->atta); fprintf(fp,"Damr %d\n",drow->damr); fprintf(fp,"Dodg %d\n",drow->dodg); fprintf(fp,"Hitr %d\n",drow->hitr); fprintf(fp,"Parr %d\n",drow->parr); fprintf(fp,"Powe %3.2f~\n",drow->powe); fprintf(fp,"Rege %3.2f~\n",drow->rege); fprintf(fp,"Toug %3.2f~\n",drow->toug); fprintf(fp,"End\n"); /* Jedi */ fprintf(fp,"Jedi\n"); fprintf(fp,"Armo %d\n",jedi->armo); fprintf(fp,"Atta %d\n",jedi->atta); fprintf(fp,"Damr %d\n",jedi->damr); fprintf(fp,"Dodg %d\n",jedi->dodg); fprintf(fp,"Hitr %d\n",jedi->hitr); fprintf(fp,"Parr %d\n",jedi->parr); fprintf(fp,"Powe %3.2f~\n",jedi->powe); fprintf(fp,"Rege %3.2f~\n",jedi->rege); fprintf(fp,"Toug %3.2f~\n",jedi->toug); fprintf(fp,"End\n"); /* Monk */ fprintf(fp,"Monk\n"); fprintf(fp,"Armo %d\n",monk->armo); fprintf(fp,"Atta %d\n",monk->atta); fprintf(fp,"Damr %d\n",monk->damr); fprintf(fp,"Dodg %d\n",monk->dodg); fprintf(fp,"Hitr %d\n",monk->hitr); fprintf(fp,"Parr %d\n",monk->parr); fprintf(fp,"Powe %3.2f~\n",monk->powe); fprintf(fp,"Rege %3.2f~\n",monk->rege); fprintf(fp,"Toug %3.2f~\n",monk->toug); fprintf(fp,"End\n"); /* Shadow */ fprintf(fp,"Shad\n"); fprintf(fp,"Armo %d\n",shad->armo); fprintf(fp,"Atta %d\n",shad->atta); fprintf(fp,"Damr %d\n",shad->damr); fprintf(fp,"Dodg %d\n",shad->dodg); fprintf(fp,"Hitr %d\n",shad->hitr); fprintf(fp,"Parr %d\n",shad->parr); fprintf(fp,"Powe %3.2f~\n",shad->powe); fprintf(fp,"Rege %3.2f~\n",shad->rege); fprintf(fp,"Toug %3.2f~\n",shad->toug); fprintf(fp,"End\n"); /* Vampire */ fprintf(fp,"Vamp\n"); fprintf(fp,"Armo %d\n",vamp->armo); fprintf(fp,"Atta %d\n",vamp->atta); fprintf(fp,"Damr %d\n",vamp->damr); fprintf(fp,"Dodg %d\n",vamp->dodg); fprintf(fp,"Hitr %d\n",vamp->hitr); fprintf(fp,"Parr %d\n",vamp->parr); fprintf(fp,"Powe %3.2f~\n",vamp->powe); fprintf(fp,"Rege %3.2f~\n",vamp->rege); fprintf(fp,"Toug %3.2f~\n",vamp->toug); fprintf(fp,"End\n"); /* Werewolf */ fprintf(fp,"Were\n"); fprintf(fp,"Armo %d\n",were->armo); fprintf(fp,"Atta %d\n",were->atta); fprintf(fp,"Damr %d\n",were->damr); fprintf(fp,"Dodg %d\n",were->dodg); fprintf(fp,"Hitr %d\n",were->hitr); fprintf(fp,"Parr %d\n",were->parr); fprintf(fp,"Powe %3.2f~\n",were->powe); fprintf(fp,"Rege %3.2f~\n",were->rege); fprintf(fp,"Toug %3.2f~\n",were->toug); fprintf(fp,"End\n"); fprintf(fp,"EOF\n"); log_string("Class data successfully saved."); fclose(fp); return; } void load_class_config( void ) { FILE *fp; char *word; bool done = FALSE; bool sub = FALSE; CLASS_DATA *class; char buf[MAX_STRING_LENGTH]; if( (fp = fopen(CLASS_FILE,"r")) == NULL) { log_string("Can not open CLASS_FILE for reading."); return; } word = fread_word(fp); while( !done ) { if( !str_cmp( word, "Alie")) class = alie; else if( !str_cmp( word, "Apoc")) class = apoc; else if( !str_cmp( word, "Drag")) class = drag; else if( !str_cmp( word, "Drow")) class = drow; else if( !str_cmp( word, "Jedi")) class = jedi; else if( !str_cmp( word, "Monk")) class = monk; else if( !str_cmp( word, "Shad")) class = shad; else if( !str_cmp( word, "Vamp")) class = vamp; else if( !str_cmp( word, "Were")) class = were; else { sprintf(buf,"Unkown class %s in load_class_config",word); log_string(buf); fclose(fp); return; } while( !sub ) { word = fread_word(fp); if( !str_cmp( word, "Armo")) class->armo = fread_number(fp); else if( !str_cmp( word, "Atta")) class->atta = fread_number(fp); else if( !str_cmp( word, "Damr")) class->damr = fread_number(fp); else if( !str_cmp( word, "Dodg")) class->dodg = fread_number(fp); else if( !str_cmp( word, "Hitr")) class->hitr = fread_number(fp); else if( !str_cmp( word, "Parr")) class->parr = fread_number(fp); else if( !str_cmp( word, "Powe")) class->powe = atof(fread_string(fp)); else if( !str_cmp( word, "Rege")) class->rege = atof(fread_string(fp)); else if( !str_cmp( word, "Toug")) class->toug = atof(fread_string(fp)); else if( !str_cmp( word, "End")) sub = TRUE; else { sprintf(buf,"Unkown field %s, aborting.",word); log_string(buf); fclose(fp); return; } } sub = FALSE; /* get the next word */ word = fread_word(fp); if( !str_cmp(word, "EOF")) done = TRUE; } fclose(fp); return; }