phantasia4/
phantasia4/conf/
phantasia4/phantasia/bin/
phantasia4/phantasia/src/utilities/
phantasia4/public_html/cgi-bin/
/*
 * main.c - conversion of the old character file to the new one
 */

#include <sys/time.h>
#include <stdio.h>
#include <errno.h>

typedef char bool;

/* string sizes */
#define SZ_NAME		33	/* player name (incl. trailing null) */
#define SZ_PASSWORD		17	/* password size (incl. null) */
#define SZ_FROM		81	/* ip or dns login (incl. null) */
#define SZ_AREA			24

struct newPlayer_t		/* player attributes */
{
        /* player information */
    char        name[SZ_NAME];          /* player name */
    char        lcname[SZ_NAME];        /* player name in lowercase */
    unsigned char password[16];         /* password hash */

        /* player location */
    double      x;                      /* x coord */
    double      y;                      /* y coord */
    char        area[SZ_AREA];          /* name of the area player is in */
    double      circle;                 /* current circle player is in */
    bool        beyond;                 /* is the character past no return */
    short       location;               /* codes for special all locations */

        /* player stats */
    double      experience;             /* experience */
    double      level;                  /* level */

    double      strength;               /* strength */
    double      max_strength;           /* maximum strength */
    double      energy;                 /* energy */
    double      max_energy;             /* maximum energy */
    float       quickness;              /* quickness */
    float       max_quickness;          /* quickness */
    double      mana;                   /* mana */
    double      brains;                 /* brains */
    double      magiclvl;               /* magic level */
    float       poison;                 /* poison */
    float       sin;                    /* sin */
    bool        gender;                 /* player is male/female */
    short       lives;                  /* multiple lives for council, valar */
    int         age;                    /* age of player */
    int         degenerated;            /* age/3000 last degenerated */

        /* player status */
    short       type;                   /* character type */
    short       special_type;           /* special character type */
    bool        cloaked;                /* is character cloaked */
    bool        blind;                  /* blindness */
    short       shield_nf;              /* does player get shield next battle */
    short       invisible_nf;           /* will the player be invisible */
    short       strong_nf;              /* does player get a strength bonus */

        /* player currency */
    double      gold;                   /* gold */
    double      gems;                   /* gems */

        /* player equipment */
    double      sword;                  /* sword */
    double      shield;                 /* shield */
    float       quicksilver;            /* quicksilver */
    int         holywater;              /* holy water */
    int         amulets;                /* amulets */
    int         charms;                 /* charms */
    short       crowns;                 /* crowns */
    bool        virgin;                 /* virgin */
    bool        palantir;               /* palantir */
    bool        blessing;               /* blessing */

    short       ring_type;              /* type of ring */
    int         ring_duration;          /* duration of ring */

        /* creation information */
    char        parent_account[SZ_NAME];        /* created by this account */
    char        parent_network[SZ_FROM];        /* created from this address */
    time_t      date_created;           /* created at this time */
    bool        faithful;               /* may other accounts load? */

        /* current or previous user information */
    char        last_IP[SZ_FROM];       /* last IP or DNS address */
    char        last_account[SZ_NAME];  /* last account accessed */
    time_t      last_load;              /* time last accessed */
    time_t      last_reset;             /* time password was last reset */
    int         load_count;             /* times character has been loaded */
    time_t      time_played;            /* seconds character has been played */

        /* hack foilers */
    int         bad_passwords;          /* unsuccessful load attempts */
    int         muteCount;              /* times caught spamming */
    time_t      lastMute;               /* last instance spammed */

        /* purgatory options */
    bool        purgatoryFlag;
    short       monsterNumber;
};

#define SZ_NEW_PLAYER sizeof(struct newPlayer_t)

main(argc, argv)
int     argc;
char    *argv[];
{
    struct newPlayer_t newPlayer;
    FILE *character_file;
    char string_buffer[80];
    int i;

    if (argc != 2) {

	printf("usage: a.out filename\n");
	printf("This program will print out names, passwords and dates");
	printf("from the passed character file.\n");
	exit(10);
    }

    errno = 0;
    if ((character_file=fopen(argv[1], "r")) == NULL) {

	printf("fopen of %s failed: %s\n", argv[0], strerror(errno));
	exit(1);
    }

	/* start reading the characters */
    while (fread((void *)&newPlayer, SZ_NEW_PLAYER, 1, character_file) == 1) {
/*
	printf("Name: %s, Password %s, X: %.0lf Y: %.0lf\n",
		newPlayer.name, newPlayer.password, newPlayer.x,
		newPlayer.y);
	printf("Name: %s, From: %s, Password %s, Last Used: %s\n",
		newPlayer.name, newPlayer.from,
		newPlayer.password, ctime(&newPlayer.lastUsed));
*/

	printf("Name: %s\n", newPlayer.name);
	printf("Lowercase Name: %s\n", newPlayer.lcname);
	printf("Password: ");

	for (i = 0; i < 16; i++) {
	    printf("%x", newPlayer.password[i]);
	}
	printf("\n");

	printf("Last Used: %s", ctime(&newPlayer.last_load));
	printf("Location: ( %lf, %lf )\n", newPlayer.x, newPlayer.y);
	printf("Experience: %lf\n", newPlayer.experience);
	printf("Strength: %lf\n", newPlayer.strength);
	printf("Maximum Strength: %lf\n", newPlayer.max_strength);
	printf("Energy: %lf\n", newPlayer.energy);
	printf("Maximum Energy: %lf\n", newPlayer.max_energy);
	printf("Quickness: %lf\n", newPlayer.quickness);
	printf("Maximum Quickness: %lf\n", newPlayer.max_quickness);
	printf("Mana: %lf\n", newPlayer.mana);
	printf("Brains: %lf\n", newPlayer.brains);
	printf("Level: %lf\n", newPlayer.level);
	printf("Magic Level: %lf\n", newPlayer.magiclvl);
	printf("Poison: %f\n", newPlayer.poison);
	printf("Sin: %f\n", newPlayer.sin);
	printf("Lives: %hd\n", newPlayer.lives);
	printf("Age: %d\n", newPlayer.age);
	printf("Degenerated: %d\n", newPlayer.degenerated);
	printf("Blind: %hd\n", newPlayer.blind);
	printf("Gender: %hd\n", newPlayer.gender);
	printf("Type: %hd\n", newPlayer.type);
	printf("Special Type: %hd\n", newPlayer.special_type);
	printf("Shield Next Fight: %hd\n", newPlayer.shield_nf);
	printf("Invisible Next Fight: %hd\n", newPlayer.invisible_nf);
	printf("Strong Next Fight: %hd\n", newPlayer.strong_nf);
	printf("Gold: %lf\n", newPlayer.gold);
	printf("Gems: %lf\n", newPlayer.gems);
	printf("Sword: %lf\n", newPlayer.sword);
	printf("Shield: %lf\n", newPlayer.shield);
	printf("Quicksilver: %f\n", newPlayer.quicksilver);
	printf("Holy Water: %hd\n", newPlayer.holywater);
	printf("Amulets: %hd\n", newPlayer.amulets);
	printf("Charms: %hd\n", newPlayer.charms);
	printf("Crowns: %hd\n", newPlayer.crowns);
	printf("Virgin: %hd\n", newPlayer.virgin);
	printf("Palantir: %hd\n", newPlayer.palantir);
	printf("Blessing: %hd\n", newPlayer.blessing);
	printf("Ring Type: %hd\n", newPlayer.ring_type);
	printf("Ring Duration: %hd\n", newPlayer.ring_duration);
	printf("Parent Account: %s\n", newPlayer.parent_account);
	printf("Parent Network: %s\n", newPlayer.parent_network);
	printf("Creation Date: %s", ctime(&newPlayer.date_created));
	printf("Faithful: %hd\n", newPlayer.faithful);
	printf("Previous Account: %s\n", newPlayer.last_account);
	printf("Previous IP: %s\n", newPlayer.last_IP);
	printf("Previous Load: %s", ctime(&newPlayer.last_load));
	printf("Bad Passwords: %d\n", newPlayer.bad_passwords);
	printf("Load Count: %d\n", newPlayer.load_count);
	printf("Time Played: %d\n\n", newPlayer.time_played);

    }
}