#include "mstruct.h"
#include "mextern.h"
#include <time.h>
#include <stdio.h>
#define gets(x) fgets(x, 10, stdin)
/* void merror(str)
char *str;
{
printf("error %s\n", str);
exit(-1);
}
*/
main(argc, argv)
int argc;
char *argv[];
{
int n;
creature *crt_ptr;
int Lo, Hi, Start, End;
char str[10];
if(argc < 2) {
printf("Syntax: %s firstitem:lastitem\n", argv[0]);
exit(0);
}
n = 0;
while(1) {
if(argv[1][n] == ':') {
argv[1][n] = 0;
Start = atoi(argv[1]);
End = atoi(&argv[1][n+1]);
break;
}
else if(!argv[1][n]) {
printf("Syntax: %s low:hi firstroom:lastroom\n", argv[0]);
exit(0);
}
else n++;
}
for(n=Start; n<=End; n++) {
if(load_mon(n, &crt_ptr) < 0) continue;
printf("%2d. %-20s Wt: %-4d. New alignment: ", n,
crt_ptr->name, crt_ptr->alignment);
gets(str);
if(atoi(str)) crt_ptr->alignment = atoi(str);
save_mon(n, crt_ptr);
free_crt(crt_ptr);
}
}
int load_obj(index, obj_ptr)
short index;
object **obj_ptr;
{
int fd;
char file[256];
sprintf(file, "%s/o%02d", OBJPATH, index/100);
fd = open(file, O_RDONLY, 0);
if(fd < 0)
return(-1);
*obj_ptr = (object *)malloc(sizeof(object));
if(!*obj_ptr)
exit(-1);
lseek(fd, (long)(index%100)*(long)sizeof(object), 0);
if(read(fd, *obj_ptr, sizeof(object)) < sizeof(object)) {
close(fd);
return(-1);
}
close(fd);
return(0);
}
int save_obj(index, obj_ptr)
int index;
object *obj_ptr;
{
int fd;
char file[256];
sprintf(file, "%s/o%02d", OBJPATH, index/100);
fd = open(file, O_RDWR, 0);
if(fd < 0)
return(-1);
lseek(fd, (long)(index%100)*(long)sizeof(object), 0);
write(fd, obj_ptr, sizeof(object));
close(fd);
return(0);
}
int load_mon(index, crt_ptr)
short index;
creature **crt_ptr;
{
int fd;
char file[256];
sprintf(file, "%s/m%02d", MONPATH, index/100);
fd = open(file, O_RDONLY, 0);
if(fd < 0)
return(-1);
*crt_ptr = (creature *)malloc(sizeof(creature));
if(!*crt_ptr)
exit(-1);
lseek(fd, (long)(index%100)*(long)sizeof(creature), 0);
if(read(fd, *crt_ptr, sizeof(creature)) < sizeof(creature)) {
close(fd);
return(-1);
}
close(fd);
return(0);
}
int save_mon(index, crt_ptr)
int index;
creature *crt_ptr;
{
int fd;
char file[256];
sprintf(file, "%s/m%02d", MONPATH, index/100);
fd = open(file, O_RDWR, 0);
if(fd < 0)
return(-1);
lseek(fd, (long)(index%100)*(long)sizeof(creature), 0);
write(fd, crt_ptr, sizeof(creature));
close(fd);
return(0);
}