#include <stdio.h> #include <stdlib.h> #include <string.h> #include "structs.h" void main(int argc, char *argv[]) { FILE *f,*fo; char b[512]; char name[80]; long v0,v1,v2; int i; f=fopen("tinyworld.obj","rt"); if(f==NULL) { perror("1"); exit(1); } fo=fopen("tinyworld.obj.new","wt"); if(fo==NULL) { perror("2"); exit(1); } for(;;) { fgets(b,512,f); fputs(b,fo); next: if(b[0]=='$') exit(0); if(b[0]=='#') { i=atol(b+1); do {fgets(b,512,f); fputs(b,fo); }while(strchr(b,'~')==NULL); /*namelist*/ strcpy(name,b); do {fgets(b,512,f); fputs(b,fo); }while(strchr(b,'~')==NULL); /*short desc*/ do {fgets(b,512,f); fputs(b,fo); }while(strchr(b,'~')==NULL); /*long desc*/ do {fgets(b,512,f); fputs(b,fo); }while(strchr(b,'~')==NULL); /*action*/ fgets(b,512,f); /*type, wearflag, extraflag*/ sscanf(b,"%ld %ld %ld",&v0,&v1,&v2); /* well, lets do something */ if(v1&ITEM_ANTI_FIGHTER) { v1 |= ITEM_ANTI_PALADIN; v1 |= ITEM_ANTI_RANGER; v1 |= ITEM_ANTI_MONK; } if(v1&ITEM_ANTI_THIEF) { v1 |= ITEM_ANTI_PSI; v1 |= ITEM_ANTI_MONK; v1 |= ITEM_ANTI_DRUID; } if(v1&ITEM_ANTI_CLERIC) { v1 |= ITEM_ANTI_MONK; v1 |= ITEM_ANTI_DRUID; } if(v1&ITEM_ANTI_MAGE) { v1 |= ITEM_ANTI_MONK; } fprintf(fo,"%ld %ld %ld\n",v0,v1,v2); fgets(b,512,f); /*<value 0> <value 1> <value 2> <value 3>*/ fputs(b,fo); fgets(b,512,f); /*<weight> <value> <cost/day>*/ fputs(b,fo); } } }