#ifndef PALADIN_H #define PALADIN_H #define PALADIN_HEAL_PERIOD (30 - query_wisdom()/6) void heal_paladin() { if(random(PALADIN_HEAL_PERIOD)) return; this_object()->adj_all_cleric(1); } void adj_all_paladin(int i) { this_object()->adj_all_cleric(i); } status query_weapon_spec(string str); string *weapon_spec; /* the array of specialised weapons */ int sword_spec; /* bonus for WC w/- sword */ int crushing_spec; /* bonus for WC w/- mace */ int lance_spec; /* bonus for WC w/- lance */ int shield_spec; /* hit for shield */ string *horse_info; /* personalised steed things */ /****************************************************************************/ /* sets */ void add_weapon_spec(string str){ if(!query_weapon_spec(str) && str) weapon_spec += ({ str, }); } void remove_weapon_spec(string str){ int i; if((i=member_array(str, weapon_spec)) != -1){ weapon_spec = weapon_spec[0..i-1] + weapon_spec[i+1..sizeof(weapon_spec)-1]; } } int set_sword_spec(int i) { return sword_spec = i; } int set_lance_spec(int i) { return lance_spec = i; } int set_crushing_spec(int i) { return crushing_spec = i; } int set_shield_spec(int i) { return shield_spec = i; } mixed set_horse_info(string *arr) { return horse_info = arr; } /**************************************************************************/ /* query */ int query_sword_spec() { return sword_spec; } int query_lance_spec() { return lance_spec; } int query_crushing_spec() { return crushing_spec; } int query_shield_spec() { return shield_spec; } mixed query_horse_info() { if(!horse_info) horse_info = ({}); return horse_info; } mixed query_weapon_spec(string str) { if(!weapon_spec) weapon_spec = ({}); if(!str) return weapon_spec; return (member_array(str, weapon_spec) == -1) ? 0 : 1; } void clear_paladin() { object obj; sword_spec = 0; crushing_spec = 0; lance_spec = 0; shield_spec = 0; weapon_spec = ({}); horse_info = ({}); this_object()->clear_fighter(); this_object()->clear_cleric(); this_object()->set_guild_string(0); if(obj = (this_object()->query_paladin_aura_object())) destruct(obj); } void query_paladin_stats() { string str; object obj; obj = this_object(); write("\n -=[ Paladin Skills ]=-\n\n"); str = "Weapons of choice: "+ implode(query_weapon_spec(0), " ")+" "; write(str+"\n\n"); str = "Sword spec: "+sword_spec+" "; str = extract(str,0,25); str += " Lance spec: "+lance_spec+" "; str = extract(str,0,75); write(str+"\n"); str = "Crushing spec: "+crushing_spec+" "; str = extract(str,0,25); str += " Shield spec: "+shield_spec+" "; str = extract(str,0,50); /* Fighter skills for Paladin */ str += " Multi attack: "+(int)obj->query_multi_attack()+" "; str = extract(str,0,75); write(str+"\n"); str = "Multi opponent: "+(int)obj->query_multi_opponent()+" "; str = extract(str,0,25); str += " Armouring: "+(int)obj->query_armouring()+" "; str = extract(str,0,50); str += " Weapon smith: "+(int)obj->query_weapon_smith()+" "; str = extract(str,0,75); write(str+"\n"); /* Cleric skills for Paladin */ str = "Healing sphere: "+(int)obj->query_healing_sphere()+"("+ (int)obj->query_healing_sphere_points()+") "; str = extract(str,0,25); str += " Combat sphere: "+(int)obj->query_combat_sphere()+"("+ (int)obj->query_combat_sphere_points()+") "; str = extract(str,0,50); str += " Protection sphere: "+(int)obj->query_protection_sphere()+"("+ (int)obj->query_protection_sphere_points()+") "; str = extract(str,0,80); write(str+"\n"); } #endif /* PALADIN_H */