Annotation of 43BSDReno/games/phantasia/convert.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     Convert Phantasia 3.3.1 and 3.3.1+ characs file format to 3.3.2
                      3:  *
                      4:  */
                      5: 
                      6: #include "include.h"
                      7: #include "oldplayer.h"
                      8: 
                      9: struct oldplayer       Oldplayer;              /* old format structure */
                     10: struct player  Newplayer;                      /* new format structure */
                     11: 
                     12: char   Oldpfile[] = DEST/characs";             /* old format file */
                     13: char   Newpfile[] = DEST/newcharacs";          /* new format file */
                     14: 
                     15: /************************************************************************
                     16: /
                     17: / FUNCTION NAME: main()
                     18: /
                     19: / FUNCTION: convert old Phantasia player file to new format
                     20: /
                     21: / AUTHOR: C. Robertson, 9/1/85  E. A. Estes, 3/12/86
                     22: /
                     23: / ARGUMENTS: none
                     24: /
                     25: / RETURN VALUE: none
                     26: /
                     27: / MODULES CALLED: time(), exit(), fread(), fopen(), srandom(), floor(), 
                     28: /      random(), strcmp(), fwrite(), strcpy(), fclose(), fprintf()
                     29: /
                     30: / GLOBAL INPUTS: _iob[], Oldplayer, Newplayer
                     31: /
                     32: / GLOBAL OUTPUTS: Oldplayer, Newplayer
                     33: /
                     34: / DESCRIPTION:
                     35: /      Read in old player structures and write out to new file in
                     36: /      new format.
                     37: /      Old player file is unmodified.
                     38: /      New file is "DEST/newcharacs".
                     39: /      #define PHANTPLUS to convert from 3.3.1+.
                     40: /
                     41: /************************************************************************/
                     42: 
                     43: main()
                     44: {
                     45: FILE   *oldcharac, *newcharac;         /* to open old and new files */
                     46: 
                     47:     if ((oldcharac = fopen(Oldpfile, "r")) == NULL)
                     48:        {
                     49:        fprintf(stderr, "Cannot open original character file!\n");
                     50:        exit(1);
                     51:        }
                     52: 
                     53:     if ((newcharac = fopen(Newpfile, "w")) == NULL)
                     54:        {
                     55:        fprintf(stderr, "Cannot create new character file!\n");
                     56:        exit(1);
                     57:        }
                     58: 
                     59:     srandom((unsigned) time((long *) NULL));   /* prime random numbers */
                     60: 
                     61:     while (fread((char *) &Oldplayer, sizeof(struct oldplayer), 1, oldcharac) == 1)
                     62:        /* read and convert old structures into new */
                     63:        {
                     64:        Newplayer.p_experience = Oldplayer.o_experience;
                     65:        Newplayer.p_level = (double) Oldplayer.o_level;
                     66:        Newplayer.p_strength =  Oldplayer.o_strength;
                     67:        Newplayer.p_sword =  Oldplayer.o_sword;
                     68:        Newplayer.p_might =  0.0;               /* game will calculate */
                     69:        Newplayer.p_energy =  Oldplayer.o_energy;
                     70:        Newplayer.p_maxenergy =  Oldplayer.o_maxenergy;
                     71:        Newplayer.p_shield =  Oldplayer.o_shield;
                     72:        Newplayer.p_quickness = (double) Oldplayer.o_quickness;
                     73:        Newplayer.p_quksilver = (double) Oldplayer.o_quksilver;
                     74:        Newplayer.p_speed = 0.0;                /* game will calculate */
                     75:        Newplayer.p_magiclvl = Oldplayer.o_magiclvl;
                     76:        Newplayer.p_mana = Oldplayer.o_mana;
                     77:        Newplayer.p_brains = Oldplayer.o_brains;
                     78:        Newplayer.p_poison = Oldplayer.o_poison;
                     79:        Newplayer.p_gold = Oldplayer.o_gold;
                     80:        Newplayer.p_gems = Oldplayer.o_gems;
                     81:        Newplayer.p_sin = Oldplayer.o_sin;
                     82:        Newplayer.p_x = Oldplayer.o_x;
                     83:        Newplayer.p_y = Oldplayer.o_y;
                     84:        Newplayer.p_1scratch = Oldplayer.o_1scratch;
                     85:        Newplayer.p_2scratch = Oldplayer.o_2scratch;
                     86: 
                     87:        Newplayer.p_ring.ring_type = Oldplayer.o_ring.ring_type;
                     88:        Newplayer.p_ring.ring_duration = Oldplayer.o_ring.ring_duration;
                     89:        Newplayer.p_ring.ring_inuse = FALSE;
                     90: 
                     91:        Newplayer.p_age = (long) Oldplayer.o_degenerated * N_AGE;
                     92: 
                     93:        Newplayer.p_degenerated = Oldplayer.o_degenerated + 1;
                     94: 
                     95:        /* convert character type into character type and special type */
                     96: 
                     97:        if (Oldplayer.o_type < 0)
                     98:            /* player with crown */
                     99:            Oldplayer.o_type = -Oldplayer.o_type;
                    100: 
                    101:        if (Oldplayer.o_type == 99)
                    102:            /* valar */
                    103:            {
                    104:            Newplayer.p_specialtype = SC_VALAR;
                    105:            Newplayer.p_type = (short) ROLL(C_MAGIC, C_EXPER - C_MAGIC + 1);
                    106:            Newplayer.p_lives = Oldplayer.o_ring.ring_duration;
                    107:            }
                    108:        else if (Oldplayer.o_type == 90)
                    109:            /* ex-valar */
                    110:            {
                    111:            Newplayer.p_specialtype = SC_EXVALAR;
                    112:            Newplayer.p_type = (short) ROLL(C_MAGIC, C_EXPER - C_MAGIC + 1);
                    113:            Newplayer.p_lives = 0;
                    114:            }
                    115:        else if (Oldplayer.o_type > 20)
                    116:            /* council of wise */
                    117:            {
                    118:            Newplayer.p_specialtype = SC_COUNCIL;
                    119:            Newplayer.p_type = Oldplayer.o_type - 20;
                    120:            Newplayer.p_lives = Oldplayer.o_ring.ring_duration;
                    121:            }
                    122:        else if (Oldplayer.o_type > 10)
                    123:            /* king */
                    124:            {
                    125:            Newplayer.p_specialtype = SC_KING;
                    126:            Newplayer.p_type = Oldplayer.o_type - 10;
                    127:            Newplayer.p_lives = 0;
                    128:            }
                    129:        else
                    130:            /* normal player */
                    131:            {
                    132:            Newplayer.p_specialtype = SC_NONE;
                    133:            Newplayer.p_type = Oldplayer.o_type;
                    134:            Newplayer.p_lives = 0;
                    135:            }
                    136: 
                    137:        Newplayer.p_lives = 0;
                    138:        Newplayer.p_crowns = Oldplayer.o_crowns;
                    139:        Newplayer.p_charms = Oldplayer.o_charms;
                    140:        Newplayer.p_amulets = Oldplayer.o_amulets;
                    141:        Newplayer.p_holywater = Oldplayer.o_holywater;
                    142:        Newplayer.p_lastused = Oldplayer.o_lastused;
                    143: 
                    144:        /* convert status and name into status */
                    145: 
                    146:        Newplayer.p_status = Oldplayer.o_status + S_OFF;
                    147:        if (strcmp(Oldplayer.m_name, "<null>") == 0)
                    148:            /* unused recored */
                    149:            Newplayer.p_status = S_NOTUSED;
                    150:        if (Oldplayer.o_quickness < 0)
                    151:            /* hung up player */
                    152:            {
                    153:            Newplayer.p_quickness = (double) Oldplayer.o_tampered;
                    154:            Oldplayer.o_tampered = T_OFF;
                    155:            Newplayer.p_status = S_HUNGUP;
                    156:            }
                    157: 
                    158:        Newplayer.p_tampered = Oldplayer.o_tampered + T_OFF;
                    159:        Newplayer.p_istat = I_OFF;
                    160: 
                    161:        Newplayer.p_palantir = Oldplayer.o_palantir;
                    162:        Newplayer.p_blessing = Oldplayer.o_blessing;
                    163:        Newplayer.p_virgin = Oldplayer.o_virgin;
                    164:        Newplayer.p_blindness = Oldplayer.o_blindness;
                    165: 
                    166:        strcpy(Newplayer.p_name, Oldplayer.o_name);
                    167:        strcpy(Newplayer.p_password, Oldplayer.o_password);
                    168:        strcpy(Newplayer.p_login, Oldplayer.o_login);
                    169: 
                    170:        /* write new structure */
                    171:        fwrite((char *) &Newplayer, sizeof(Newplayer), 1, newcharac);
                    172:        }
                    173: 
                    174:     fclose(oldcharac);         /* close files */
                    175:     fclose(newcharac);
                    176: 
                    177:     exit(0);
                    178: }
                    179: /**/
                    180: /************************************************************************
                    181: /
                    182: / FUNCTION NAME: drandom()
                    183: /
                    184: / FUNCTION: return a random number between 0.0 < 1.0
                    185: /
                    186: / AUTHOR: E. A. Estes, 2/7/86
                    187: /
                    188: / ARGUMENTS: none
                    189: /
                    190: / RETURN VALUE: random number
                    191: /
                    192: / MODULES CALLED: random()
                    193: /
                    194: / GLOBAL INPUTS: none
                    195: /
                    196: / GLOBAL OUTPUTS: none
                    197: /
                    198: / DESCRIPTION:
                    199: /      Return a random number.
                    200: /
                    201: /************************************************************************/
                    202: 
                    203: double
                    204: drandom()
                    205: {
                    206:     if (sizeof(int) != 2)
                    207:        return((double) (random() & 0x7fff) / 32768.0);
                    208:     else
                    209:        return((double) random() / 32768.0);
                    210: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.