/*
* update.c
*/
/*********************************************************************
* Update v1.0 - devloped and coded by Goliath *
* based on EW-too by Simon Marsh *
* The code for update may be freely copied and distributed. *
**********************************************************************
* This file contains all the functions that are used to update *
* player files to include new saved info and also funcions to *
* initialise the new data. *
**********************************************************************
* For information on how to run and use update please read *
* UPDATE.README *
**********************************************************************
* The code in itself is as safe as EW is, so no matter what you do *
* always keep backups of your player files prior to updating them :) *
*********************************************************************/
#include <string.h>
#include "fix.h"
#include "config.h"
#include "player.h"
#include "dynamic.h"
#include "update.h"
/* External functions */
extern void init_room(char *name, file rf);
extern file load_file(char *filename);
extern char *get_int(int *dest, char *source);
extern char *get_string(char *dest, char *source);
extern char *store_string(char *dest, char *source);
extern char *store_int(char *dest, int source);
extern int restore_player(player *p, char *name);
extern void save_player(player *p);
/*
* This will be called on every player save
* so can be used to produce summary reports
* and print data from player files etc
*/
void players_update_function(player * p)
{
/* Don't change these lines, they are for res counts */
if (p->residency != STANDARD_ROOMS
&& p->residency != SYSTEM_ROOM)
{
if ( (p->residency == BANISHED) ||
(p->residency & BANISHD) )
num_banished++;
else
if (!(p->residency & (PSU|SU|LOWER_ADMIN|ADMIN|HCADMIN) ))
num_residents++;
else
if (!(p->residency & (SU|LOWER_ADMIN|ADMIN|HCADMIN) ))
num_psu++;
else
if (!(p->residency & (LOWER_ADMIN|ADMIN|HCADMIN) ))
num_su++;
else
if (!(p->residency & (ADMIN|HCADMIN)))
num_ladmin++;
else
num_admin++;
}
}
/*
* Initialise any new data you want to save
* in this function
*/
void initialise_data(player *p)
{
}
/* dumps the save data onto the stack */
void extra_save_data(player * p)
{
}
void extra_load_data(player * p, char *r)
{
}
/*
* Alter this to function to match that of
* init_rooms in your own room.c at the bottom of the file.
* You MUST alter the names of the players system, summink and boot
* and include the names of you own system rooms.
* Just copy a chunk and replace the name in the sprintf
* e.g. sprintf(stack, "%sMYROOM.rooms", rc_options->srooms_path);
* also change the line init_room("<name>", lf); where <name> is the
* name of the system room player file associated with that room.
*/
void init_your_rooms(void)
{
file lf;
char *oldstack;
/* This is the format for each room file you have
sprintf(stack, "%sSOMEROOM.rooms", rc_options->srooms_path);
stack = strchr(stack,0);
lf = load_file(oldstack);
init_room("PLAYER", lf);
stack = oldstack;
*/
oldstack = stack;
/* Add your room files after this line */
}