/
lib/banish/
lib/d/
lib/doc/
lib/doc/domains/
lib/doc/efun/
lib/doc/examples/
lib/doc/examples/armour/
lib/doc/examples/contain/
lib/doc/examples/food/
lib/doc/examples/magic/
lib/doc/examples/monster/
lib/doc/examples/room/
lib/doc/examples/weapons/
lib/function/
lib/include/
lib/include/fn_specs/
lib/include/skills/
lib/info/
lib/inherit/base/
lib/log/
lib/manuals/312/
lib/news/
lib/obj/party/
lib/objects/components/
lib/open/
lib/open/library/
lib/open/party/
lib/players/
lib/players/zilanthius/
lib/room/
lib/room/city/arena/
lib/room/city/creator/
lib/room/city/garden/monst/
lib/room/city/obj/
lib/room/city/shop/
lib/room/death/
lib/room/registry/
lib/secure/
lib/secure/UDP_CMD_DIR/
lib/skills/
lib/skills/fighter/
lib/skills/thief/
lib/usr/
lib/usr/creators/
lib/usr/players/
#ifndef PSI_H
#define PSI_H

/*** Psionicist ***/

int clairsentient;         /* sensory effecting powers */
int psycokinetic;          /* object effecting powers  */
int psycometabolic;        /* body effecting powers    */
int psycoportive;          /* space effecting powers   */
int telepathic;            /* thought effecting powers */
int metapsionic;           /* enhancement powers       */

int psionic_points;        /* current psionic points */
int max_psionic_points;    /* maximum psionic points */


/***             Psionicist             ***/ 

int query_clairsentient()    { return clairsentient;  }
int query_psycokinetic()     { return psycokinetic;   }
int query_psycometabolic()   { return psycometabolic; }
int query_psycoportive()     { return psycoportive;   }
int query_telepathic()       { return telepathic;     }
int query_metapsionic()      { return metapsionic;    }

void set_max_psp() {
  max_psionic_points += clairsentient + psycokinetic + psycometabolic;
  max_psionic_points += psycoportive + telepathic + metapsionic;
  max_psionic_points = 2 * max_psionic_points;
}


int set_clairsentient(int i) {
  clairsentient = i;
  set_max_psp();
  return clairsentient;
}

int set_psycokinetic(int i) { 
  psycokinetic = i;
  set_max_psp();
  return psycokinetic;
}

int set_psycometabolic(int i) { 
  psycometabolic = i;
  set_max_psp();
  return psycometabolic;
}

int set_psycoportive(int i) { 
  psycoportive = i;
  set_max_psp();
  return psycoportive;
}

int set_telepathic(int i) {
  telepathic = i;
  set_max_psp();
  return telepathic;
}

int set_metapsionic(int i) { 
  metapsionic = i;
  set_max_psp();
  return metapsionic;
}

int query_psionic_points()   { return psionic_points; }
int query_psp()              { return psionic_points; }

int query_max_psionic_points() { return max_psionic_points; }
int query_max_psp()            { return max_psionic_points; }

int adj_psionic_points(int i) {
  psionic_points = psionic_points + i;
  if(psionic_points > max_psionic_points)
    psionic_points = max_psionic_points;
  return psionic_points;
}

void clear_psionicist() {
  clairsentient = 0; psycokinetic = 0; psycometabolic = 0;
  psycoportive = 0; telepathic = 0; metapsionic = 0;
  psionic_points = 0; max_psionic_points = 0;
}

void query_psionicist_stats() {
  string str;

  str = "\n         -=[ Psionicist Disciplines ]=-\n\n";
  str += " Clairsentience: "+clairsentient+"                   ";
  str = extract(str,0,25);
  str += " Psycokinetic: "+psycokinetic+"                     ";
  str = extract(str,0,50);
  str += " Psycometabolism: "+psycometabolic+"                ";
  str = extract(str,0,75);
  write(str +"\n");

  str = " Psycoportive: "+psycoportive+"                      ";
  str = extract(str,0,25);
  str += " Telepathy: "+telepathic+"                          ";
  str = extract(str,0,50);
  str += " Metapsionic: "+metapsionic+"                       ";
  str = extract(str,0,75);
  write(str +"\n");

  write(" Psionic Points: "+psionic_points+"/"+max_psionic_points+"\n");
}

void heal_psionicist(int h) {
  adj_psionic_points(h);
}
  
#endif /* PSI_H */