#ifndef CLERIC_H
#define CLERIC_H
#define HEAL_CLERIC_PERIOD (20 - query_wisdom()/6)
/*** cleric spheres ***/
int healing_sphere; /* healing spells stat */
int necromancy_sphere; /* necromancy spells stat */
int combat_sphere; /* combat spells stat */
int stellar_sphere; /* light/travelling/astral spells stat */
int protection_sphere; /* protection spells stat */
int nature_sphere; /* druid spells stat */
int divination_sphere; /* divining/seer spells stat */
int healing_sphere_points; /* current spell points for healing spells */
int necromancy_sphere_points; /* current spell points for necromancy spells */
int combat_sphere_points; /* current spell points for combat spells */
int stellar_sphere_points; /* current spell points for stellar spells */
int protection_sphere_points; /* current spell points for protection spells */
int nature_sphere_points; /* current spell points for nature spells */
int divination_sphere_points; /* current spell points for divination spells */
/*** Cleric ***/
int set_healing_sphere(int i) { return healing_sphere = i; }
int set_necromancy_sphere(int i) { return necromancy_sphere = i; }
int set_combat_sphere(int i) { return combat_sphere = i; }
int set_stellar_sphere(int i) { return stellar_sphere = i; }
int set_protection_sphere(int i) { return protection_sphere = i; }
int set_nature_sphere(int i) { return nature_sphere = i; }
int set_divination_sphere(int i) { return divination_sphere = i; }
int query_healing_sphere() { return healing_sphere; }
int query_necromancy_sphere() { return necromancy_sphere; }
int query_combat_sphere() { return combat_sphere; }
int query_stellar_sphere() { return stellar_sphere; }
int query_protection_sphere() { return protection_sphere; }
int query_nature_sphere() { return nature_sphere; }
int query_divination_sphere() { return divination_sphere; }
void clear_cleric() {
healing_sphere = 0; necromancy_sphere = 0; combat_sphere = 0;
stellar_sphere = 0; protection_sphere = 0; nature_sphere = 0;
divination_sphere = 0; healing_sphere_points = 0;
necromancy_sphere_points = 0; combat_sphere_points = 0;
stellar_sphere_points = 0; protection_sphere_points = 0;
nature_sphere_points = 0; divination_sphere_points = 0;
}
int adj_combat_sphere_points(int i) {
combat_sphere_points = combat_sphere_points + i;
if(combat_sphere_points > combat_sphere * 2)
combat_sphere_points = combat_sphere * 2;
if(combat_sphere_points < 0)
combat_sphere_points = 0;
return combat_sphere_points;
}
int adj_healing_sphere_points(int i) {
healing_sphere_points = healing_sphere_points + i;
if(healing_sphere_points > healing_sphere * 2)
healing_sphere_points = healing_sphere * 2;
if(healing_sphere_points < 0)
healing_sphere_points = 0;
return healing_sphere_points;
}
int adj_necromancy_sphere_points(int i) {
necromancy_sphere_points = necromancy_sphere_points + i;
if(necromancy_sphere_points > necromancy_sphere * 2)
necromancy_sphere_points = necromancy_sphere * 2;
if(necromancy_sphere_points < 0)
necromancy_sphere_points = 0;
return necromancy_sphere_points;
}
int adj_stellar_sphere_points(int i) {
stellar_sphere_points = stellar_sphere_points + i;
if(stellar_sphere_points > stellar_sphere * 2)
stellar_sphere_points = stellar_sphere * 2;
if(stellar_sphere_points < 0)
stellar_sphere_points = 0;
return stellar_sphere_points;
}
int adj_protection_sphere_points(int i) {
protection_sphere_points = protection_sphere_points + i;
if(protection_sphere_points > protection_sphere * 2)
protection_sphere_points = protection_sphere * 2;
if(protection_sphere_points < 0)
protection_sphere_points = 0;
return protection_sphere_points;
}
int adj_nature_sphere_points(int i) {
nature_sphere_points = nature_sphere_points + i;
if(nature_sphere_points > nature_sphere * 2)
nature_sphere_points = nature_sphere * 2;
if(nature_sphere_points < 0)
nature_sphere_points = 0;
return nature_sphere_points;
}
int adj_divination_sphere_points(int i) {
divination_sphere_points = divination_sphere_points + i;
if(divination_sphere_points > divination_sphere * 2)
divination_sphere_points = divination_sphere * 2;
if(divination_sphere_points < 0)
divination_sphere_points = 0;
return divination_sphere_points;
}
int query_healing_sphere_points(int i) { return healing_sphere_points; }
int query_necromancy_sphere_points(int i) { return necromancy_sphere_points; }
int query_combat_sphere_points(int i) { return combat_sphere_points; }
int query_stellar_sphere_points(int i) { return stellar_sphere_points; }
int query_protection_sphere_points(int i) { return protection_sphere_points; }
int query_nature_sphere_points(int i) { return nature_sphere_points; }
int query_divination_sphere_points(int i) { return divination_sphere_points; }
void query_cleric_stats() {
string str;
write("\n -=[ Cleric Spheres ]=-\n\n");
str = " Healing: "+healing_sphere;
str += "("+healing_sphere_points+" pts) ";
str = extract(str,0,25);
str += " Necromancy: "+necromancy_sphere;
str += "("+necromancy_sphere_points+" pts) ";
str = extract(str,0,50);
str += " Combat: "+combat_sphere;
str += "("+combat_sphere_points+" pts) ";
str = extract(str,0,75);
write(str +"\n");
str = " Stellar: "+stellar_sphere;
str += "("+stellar_sphere_points+" pts) ";
str = extract(str,0,25);
str += " Protection: "+protection_sphere;
str += "("+protection_sphere_points+" pts) ";
str = extract(str,0,50);
str += " Nature: "+nature_sphere;
str += "("+nature_sphere_points+" pts) ";
str = extract(str,0,75);
write(str +"\n");
str = " Divination: "+divination_sphere;
str += "("+divination_sphere_points+" pts) ";
str = extract(str,0,25);
write(str +"\n");
}
void adj_all_cleric(int h) {
adj_combat_sphere_points(h);
adj_healing_sphere_points(h);
adj_necromancy_sphere_points(h);
adj_stellar_sphere_points(h);
adj_protection_sphere_points(h);
adj_nature_sphere_points(h);
adj_divination_sphere_points(h);
}
void heal_cleric() {
if(random(HEAL_CLERIC_PERIOD)) return;
adj_all_cleric(1);
}
#endif /* CLERIC_H */