int game_restore(char *savefile) { int ok; ok = restore_game(savefile); if (! ok) { endgraf(); printf("Try again with the right save file, luser!\n"); exit(1); } change_to_user_perms(); unlink(savefile); change_to_game_perms(); return(TRUE); }
void save_omegarc() { int i=VERSION; FILE *fd; change_to_user_perms(); #if defined(MSDOS) || defined(AMIGA) || defined(_WIN32) fd = fopen("omega.rc","wb"); #else sprintf(Str1, "%s/.omegarc", getenv("HOME")); fd = fopen(Str1,"w"); #endif if (fd == NULL) #if defined(MSDOS) || defined(AMIGA) || defined(_WIN32) print1("Sorry, couldn't save omega.rc for some reason."); #else print1("Sorry, couldn't save .omegarc for some reason."); #endif else {
void save_omegarc(void) { int i=VERSION; FILE *fd; change_to_user_perms(); getOmegaRCPath(); fd = fopen(Str1,"w"); if (fd == NULL) print1("Sorry, couldn't save .omegarc for some reason."); else { fwrite((char *)&i,sizeof(int),1,fd); print1("First, set options."); setoptions(); fwrite((char *)&Player,sizeof(Player),1,fd); fwrite((char *)&Searchnum,sizeof(int),1,fd); fwrite((char *)&Verbosity,sizeof(char),1,fd); fclose(fd); } change_to_game_perms(); }
/* set player to begin with */ bool initplayer(void) { int i; int oldchar=false; FILE *fd; char *lname; int ret_value = false; lname = getlogin(); #if !defined(WIN32) // Get the login name if getlogin() failed if (!lname || strlen(lname) == 0) { struct passwd *dastuff; dastuff = getpwuid(getuid()); lname = dastuff->pw_name; } #endif strcpy(Player.name,lname); if (Player.name[0] >= 'a' && Player.name[0] <= 'z') Player.name[0] += 'A'-'a'; /* capitalise 1st letter */ Player.itemweight = 0; Player.food = 36; Player.packptr = 0; Behavior = -1; Player.options = 0; for (i=0; i<MAXITEMS; i++) Player.possessions[i] = NULL; for (i=0; i<MAXPACK; i++) Player.pack[i] = NULL; for (i=0; i<NUMIMMUNITIES; i++) Player.immunity[i] = 0; for (i=0; i<NUMSTATI; i++) Player.status[i] = 0; for (i=0; i<NUMRANKS; i++) { Player.rank[i] = 0; Player.guildxp[i] = 0; } Player.patron = 0; Player.alignment = 0; Player.cash = 250; change_to_user_perms(); if ((fd=omegarc_check())!=NULL) { fread((char *)&i,sizeof(int),1,fd); if (i != VERSION) { print1("Out of date .omegarc! Make another!"); morewait(); } else { oldchar = true; fread((char *)&Player,sizeof(Player),1,fd); fread((char *)&Searchnum,sizeof(int),1,fd); fread((char *)&Verbosity,sizeof(char),1,fd); strcpy(Player.name,lname); if (Player.name[0] >= 'a' && Player.name[0] <= 'z') Player.name[0] += 'A'-'a'; /* capitalise 1st letter */ } fclose(fd); } change_to_game_perms(); // Zop: initstats() can load a save file, so this block needs to precede the function /* DAG - put the code back in the same place, rather than duplicating */ Searchnum = max(1,min(9,Searchnum)); Player.hp = Player.maxhp = Player.maxcon; Player.mana = Player.maxmana = calcmana(); Player.click = 1; strcpy(Player.combatManeuvers,"CCBC"); calc_melee(); ScreenOffset = -1000; /* to force a redraw */ if (! oldchar) { optionset(RUNSTOP); optionset(CONFIRM); optionset(SHOW_COLOUR); ret_value = initstats() ; /* RM 04-19-2000:loading patch */ /* DAG */ } return ret_value > 0; /* RM 04-19-2000: loading patch */ /* DAG */ }
/* set player to begin with */ void initplayer() { int i; int oldchar=FALSE; FILE *fd; char *lname; #if !defined(MSDOS) && !defined(_WIN32) struct passwd *dastuff; #endif lname = getlogin(); #if !defined(MSDOS) && !defined(_WIN32) if (!lname || strlen(lname) == 0) { dastuff = getpwuid(getuid()); lname = dastuff->pw_name; } #endif strcpy(Player.name,lname); if (Player.name[0] >= 'a' && Player.name[0] <= 'z') Player.name[0] += 'A'-'a'; /* capitalise 1st letter */ Player.itemweight = 0; Player.food = 36; Player.packptr = 0; Behavior = -1; Player.options = 0; for (i=0;i<MAXITEMS;i++) Player.possessions[i] = NULL; for (i=0;i<MAXPACK;i++) Player.pack[i] = NULL; for (i=0;i<NUMIMMUNITIES;i++) Player.immunity[i] = 0; for (i=0;i<NUMSTATI;i++) Player.status[i] = 0; for (i=0;i<NUMRANKS;i++) { Player.rank[i] = 0; Player.guildxp[i] = 0; } Player.patron = 0; Player.alignment = 0; Player.cash = 250; change_to_user_perms(); if ((fd=omegarc_check())!=NULL) { fread((char *)&i,sizeof(int),1,fd); if (i != VERSION) { #if defined(MSDOS) || defined(AMIGA) || defined(_WIN32) print1("Out of date omega.rc! Make another!"); #else print1("Out of date .omegarc! Make another!"); #endif morewait(); } else { oldchar = TRUE; fread((char *)&Player,sizeof(Player),1,fd); fread((char *)&Searchnum,sizeof(int),1,fd); fread((char *)&Verbosity,sizeof(char),1,fd); strcpy(Player.name,lname); if (Player.name[0] >= 'a' && Player.name[0] <= 'z') Player.name[0] += 'A'-'a'; /* capitalise 1st letter */ } fclose(fd); } change_to_game_perms(); if (! oldchar) { optionset(RUNSTOP); optionset(CONFIRM); #ifdef COMPRESS_SAVE_FILES optionset(COMPRESS_OPTION); #endif #if defined(MSDOS) || defined(AMIGA) || defined(_WIN32) optionset(SHOW_COLOUR); #endif initstats(); } Searchnum = max(1,min(9,Searchnum)); Player.hp = Player.maxhp = Player.maxcon; Player.mana = Player.maxmana = calcmana(); Player.click = 1; strcpy(Player.meleestr,"CCBC"); calc_melee(); ScreenOffset = -1000; /* to force a redraw */ }