// ==> This file will deal with combat skills...


#include "../mud.h"
#include "../character.h"
#include "../account.h"
#include "../storage.h"
#include "../auxiliary.h"
#include "../handler.h"
#include "../socket.h"
#include "../utils.h"
#include "../save.h"
#include "../set_val/set_val.h"
#include "../bitvector.h"
#include "../room.h"
#include "../world.h"
#include "../action.h"
#include "skills.h"
#include "skillpoints.h"
#include "lessons.h"
#include "religionskills.h"

/************************************************************************
*				 auxiliary data for bank				*
************************************************************************/
typedef struct religion_data {
  int ceremony;
  int sacrifice;
  int blessing;
} RELIGION_DATA;

  RELIGION_DATA *newReligionData() {
  RELIGION_DATA *data = malloc(sizeof(RELIGION_DATA));
  data->ceremony    = 0;
  data->sacrifice   = 0;
  data->blessing    = 0;
  return data;
}

void deleteReligionData(RELIGION_DATA *data) {
  free(data);
}

void religionDataCopyTo(RELIGION_DATA *from, RELIGION_DATA *to) {
  to->ceremony = from->ceremony;
  to->sacrifice = from->sacrifice;
  to->blessing = from->blessing;
}

RELIGION_DATA *religionDataCopy(RELIGION_DATA *data) {
  RELIGION_DATA *new_data = newReligionData();
  religionDataCopyTo(data, new_data);
  return new_data;
}

STORAGE_SET *religionDataStore(RELIGION_DATA *data) {
  STORAGE_SET *set = new_storage_set();
  store_int(set, "ceremony", data->ceremony);
  store_int(set, "sacrifice", data->sacrifice);
  store_int(set, "blessing", data->blessing);
  return set;
}

RELIGION_DATA *religionDataRead(STORAGE_SET *set) {
  RELIGION_DATA *data = newReligionData();
  data->ceremony = read_int(set, "ceremony");
  data->sacrifice = read_int(set, "sacrifice");
  data->blessing = read_int(set, "blessing");
  return data;
}

/************** Ceremony **************/

int charGetCeremony(CHAR_DATA *ch)
{
RELIGION_DATA *data = charGetAuxiliaryData(ch, "religion_aux_data");
return data->ceremony;
}

void charSetCeremony(CHAR_DATA *ch, int new_ceremony)
{
	RELIGION_DATA *religiondata = charGetAuxiliaryData(ch, "religion_aux_data");
	religiondata->ceremony = new_ceremony;
	return;
}
/************** Sacrifice **************/
int charGetSacrifice(CHAR_DATA *ch)
{
RELIGION_DATA *data = charGetAuxiliaryData(ch, "religion_aux_data");
return data->sacrifice;
}

void charSetSacrifice(CHAR_DATA *ch, int new_sacrifice)
{
	RELIGION_DATA *religiondata = charGetAuxiliaryData(ch, "religion_aux_data");
	religiondata->sacrifice = new_sacrifice;
	return;
}
/************** Blessing **************/
int charGetBlessing(CHAR_DATA *ch)
{
RELIGION_DATA *data = charGetAuxiliaryData(ch, "religion_aux_data");
return data->blessing;
}

void charSetBlessing(CHAR_DATA *ch, int new_blessing)
{
	RELIGION_DATA *religiondata = charGetAuxiliaryData(ch, "religion_aux_data");
	religiondata->blessing = new_blessing;
	return;
}


/************************************************************************
	Below here are all of the init_ functions for this file.
*************************************************************************/

void init_religionskills(void)
{
	add_set("ceremony", SET_CHAR, SET_TYPE_INT, charSetCeremony, NULL);
	add_set("sacrifice", SET_CHAR, SET_TYPE_INT, charSetSacrifice, NULL);
	add_set("blessing", SET_CHAR, SET_TYPE_INT, charSetBlessing, NULL);
	auxiliariesInstall("religion_aux_data", newAuxiliaryFuncs(AUXILIARY_TYPE_CHAR, newReligionData, 
	deleteReligionData, religionDataCopyTo, religionDataCopy, religionDataStore, religionDataRead));
}