LPMUD/
LPMUD/BIN/
LPMUD/DOC/
LPMUD/MUDLIB/
LPMUD/MUDLIB/BANISH/
LPMUD/MUDLIB/D/
LPMUD/MUDLIB/DOC/
LPMUD/MUDLIB/DOC/DOMAINS/
LPMUD/MUDLIB/DOC/EFUN/
LPMUD/MUDLIB/DOC/EXAMPLES/
LPMUD/MUDLIB/DOC/EXAMPLES/ARMOUR/
LPMUD/MUDLIB/DOC/EXAMPLES/CONTAIN/
LPMUD/MUDLIB/DOC/EXAMPLES/FOOD/
LPMUD/MUDLIB/DOC/EXAMPLES/MAGIC/
LPMUD/MUDLIB/DOC/EXAMPLES/MONSTER/
LPMUD/MUDLIB/DOC/EXAMPLES/ROOM/
LPMUD/MUDLIB/DOC/EXAMPLES/WEAPONS/
LPMUD/MUDLIB/FUNCTION/
LPMUD/MUDLIB/INCLUDE/
LPMUD/MUDLIB/INCLUDE/FN_SPECS/
LPMUD/MUDLIB/INCLUDE/SKILLS/
LPMUD/MUDLIB/INFO/
LPMUD/MUDLIB/INHERIT/BASE/
LPMUD/MUDLIB/LOG/
LPMUD/MUDLIB/MANUALS/312/
LPMUD/MUDLIB/NEWS/
LPMUD/MUDLIB/OBJ/PARTY/
LPMUD/MUDLIB/OBJ/SHADOWS/
LPMUD/MUDLIB/OBJECTS/COMPONEN/
LPMUD/MUDLIB/OPEN/
LPMUD/MUDLIB/OPEN/LIBRARY/
LPMUD/MUDLIB/OPEN/PARTY/
LPMUD/MUDLIB/PLAYERS/
LPMUD/MUDLIB/PLAYERS/ZIL/
LPMUD/MUDLIB/ROOM/
LPMUD/MUDLIB/ROOM/CITY/ARENA/
LPMUD/MUDLIB/ROOM/CITY/CREATOR/
LPMUD/MUDLIB/ROOM/CITY/GARDEN/MONST/
LPMUD/MUDLIB/ROOM/CITY/OBJ/
LPMUD/MUDLIB/ROOM/CITY/PUB/
LPMUD/MUDLIB/ROOM/CITY/SHOP/
LPMUD/MUDLIB/ROOM/DEATH/
LPMUD/MUDLIB/ROOM/REGISTRY/
LPMUD/MUDLIB/SECURE/
LPMUD/MUDLIB/SECURE/UDP_CMD_/
LPMUD/MUDLIB/SKILLS/
LPMUD/MUDLIB/SKILLS/FIGHTER/
LPMUD/MUDLIB/SKILLS/THIEF/
LPMUD/MUDLIB/USR/
LPMUD/MUDLIB/USR/CREATORS/
LPMUD/MUDLIB/USR/PLAYERS/
/* DISEASE. Angel 1992.
 * This object is used in conjunction with undead.c Clerics and some temples
 * have the power to remove diseases from players. Note that this object is
 * contageous!
 */


string sympthoms;
int timer, hoarse_flag, weight, drop_flag;
 
reset(arg) {
    if (arg) return;
    sympthoms = ({
        "cough","sneeze","groan","sniff","shiver"
        });
    }
 
get() { return 1; }
 
drop() {
    if (drop_flag) return;
    return 1;
    }
 
query_auto_load() {
    return "objects/disease:"+ timer;
    }
 
init_args(arg) {
    if (!arg) return;
    sscanf(arg,"%d",timer);
    }
 
id(str) { return str == "Disease" || str == "disease"; }
query_name() { return "Disease"; }
 
init() {
    if (this_player() != environment()) return;
    set_heart_beat(1);
    if (hoarse_flag) {
        add_action("croak","shout");
        add_action("speak","say");
        add_action("speak","'",1);
        }
    }
 
croak(str) {
    if (!str) return 0;
    say(this_player()->query_name() + " croaks: " + str + "\n");
    write("You croak: "+str+"\n");
    return 1;
    }
 
speak(str) {
string what;
    if (query_verb() != "say") {
        what = extract(query_verb(),1);
        if (str) what += " " + str;
        }
    else what = str;
    if (!what) what = "";
    write("You croak: "+what+"\n");
    say(this_player()->query_name()+" croaks: "+ what +"\n");
    if (!random(10)) spread();
    return 1;
    }
 
query_weight() { return weight; }
 
heart_beat() {
    timer ++;
    if (timer > 500 && !random(40)) {
        command(sympthoms[random(sizeof(sympthoms))],environment());
        if (timer < 1000)  /* contagion */
            spread();
        }
    if (timer > 1000 && timer < 1500) {
	if (environment()->query_intoxication() <= 1)
        	environment()->add_intoxination(1); /* stay drunk */
	}
    if (timer > 1300 && timer < 1750) {
	if (environment()->query_stuffed() <= 1)
        environment() -> add_stuffed(1); /* no appetite */
	}
    if (timer > 2000 && !weight) {
        weight = 3;
        environment()->recalc_all();
        drop_flag = 1;
        transfer(this_object(),environment());
        drop_flag = 0;
        }
    if (timer > 3000 && !hoarse_flag) {
        hoarse_flag = 1;
        move_object(this_object(),environment());
        }
    if (environment()->query_ghost()) return;
    if (environment()->query_ghost()) 
        timer = 0;
    }
 
spread() {
  object ob1;
  int i;

    ob1 = all_inventory(environment(environment()));

    for(i=0; i<sizeof(ob1); i++) {
        if(living(ob1[i]) &&
           ob1[i] -> query_security_level() < 1  &&
          !ob1[i] -> query_spell_immune("disease") &&
          ((int)ob1[i]->query_level() < 2) &&
           !present("Disease", ob1[i]) &&
           random(25) > ob1[i] -> query_constitution()) {
            move_object(clone_object("objects/disease"), ob1[i]);
        }
   }
}