EmberMUD/
EmberMUD/clan/
EmberMUD/classes/
EmberMUD/doc/design/
EmberMUD/gods/
EmberMUD/log/
EmberMUD/notes/
EmberMUD/player/
EmberMUD/player/temp/
EmberMUD/src/MSVC/
EmberMUD/src/Sleep/
EmberMUD/src/StartMUD/
EmberMUD/src/Win32Common/
#ifndef factions_h__
#define factions_h__

#include "merc.h"
#include "olc.h"

DECLARE_DO_FUN( do_factionedit );
DECLARE_DO_FUN( do_factionfind );
DECLARE_DO_FUN( do_mpchangefaction );
DECLARE_DO_FUN( do_mpsilentchangefaction );
DECLARE_DO_FUN( show_faction_standings );

typedef struct factionlist_data FACTIONLIST_DATA;
typedef struct factionaff_data FACTIONAFF_DATA;
typedef struct factionpc_data FACTIONPC_DATA;

extern FACTIONLIST_DATA *faction_first;
extern FACTIONLIST_DATA *faction_last;

extern const struct olc_cmd_type factionedit_table[];

/* Struct for list of factions available in the MUD */
struct factionlist_data {
    sh_int vnum;
    char *name;
    char *increase_msg;
    char *decrease_msg;
    FACTIONLIST_DATA *next;
};

/* Struct for list of factions affected when a char is killed */
struct factionaff_data {
    FACTIONLIST_DATA *faction;
    sh_int change;
    FACTIONAFF_DATA *next;
};

/* Struct for list of current faction values for a player */
struct factionpc_data {
    FACTIONLIST_DATA *faction;
    sh_int value;
    FACTIONPC_DATA *next;
};

/* Function prototypes */
void load_factionaffs args( ( FILE * fp ) );
void load_factions args( ( FILE * fp ) );
void save_factions args( ( void ) );
void factionedit args( ( CHAR_DATA * ch, char *argument ) );
FACTIONLIST_DATA *new_faction args( ( void ) );
FACTIONLIST_DATA *get_faction_by_vnum args( ( sh_int vnum ) );
bool factedit_show args( ( CHAR_DATA * ch, char *argument ) );
bool factedit_create args( ( CHAR_DATA * ch, char *argument ) );
bool factedit_name args( ( CHAR_DATA * ch, char *argument ) );
bool factedit_increase args( ( CHAR_DATA * ch, char *argument ) );
bool factedit_decrease args( ( CHAR_DATA * ch, char *argument ) );
bool medit_faction args( ( CHAR_DATA * ch, char *argument ) );
void affect_factions args( ( CHAR_DATA * ch, CHAR_DATA * victim ) );
void fread_faction_standings args( ( CHAR_DATA * ch, FILE * fp ) );
void fwrite_faction_standings args( ( CHAR_DATA * ch, FILE * fp ) );
void free_faction_standings args( ( FACTIONPC_DATA * pFactPC ) );
char *faction_con_msg args( ( sh_int value ) );
sh_int faction_percentage args( ( sh_int value ) );
sh_int consider_factions
args( ( CHAR_DATA * ch, CHAR_DATA * victim, bool show ) );
void set_faction
args( ( CHAR_DATA * ch, CHAR_DATA * victim, sh_int vnum, sh_int value ) );
void faction_stat args( ( CHAR_DATA * ch, CHAR_DATA * victim ) );
double faction_cost_multiplier
args( ( CHAR_DATA * ch, CHAR_DATA * keeper, bool buy ) );
char *add_to_buf args( ( char *buffer, char *txt ) );

#endif