nightmare3_fluffos_v2/
nightmare3_fluffos_v2/bin/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/ChangeLog.old/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/Win32/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/compat/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/compat/simuls/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/include/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/clone/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/command/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/data/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/etc/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/include/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/inherit/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/inherit/master/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/log/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/tests/compiler/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/tests/efuns/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/single/tests/operators/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/testsuite/u/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/tmp/
nightmare3_fluffos_v2/fluffos-2.9-ds2.08/windows/
nightmare3_fluffos_v2/lib/cmds/ambassador/
nightmare3_fluffos_v2/lib/cmds/database/
nightmare3_fluffos_v2/lib/cmds/hm/
nightmare3_fluffos_v2/lib/cmds/soul/
nightmare3_fluffos_v2/lib/daemon/cfg/
nightmare3_fluffos_v2/lib/daemon/cfg/mon_races/
nightmare3_fluffos_v2/lib/daemon/cfg/races/
nightmare3_fluffos_v2/lib/daemon/include/
nightmare3_fluffos_v2/lib/daemon/save/
nightmare3_fluffos_v2/lib/daemon/services/
nightmare3_fluffos_v2/lib/daemon/soul/
nightmare3_fluffos_v2/lib/doc/
nightmare3_fluffos_v2/lib/doc/TestPlans/
nightmare3_fluffos_v2/lib/doc/approval/
nightmare3_fluffos_v2/lib/doc/approval/QC/
nightmare3_fluffos_v2/lib/doc/approval/balance/
nightmare3_fluffos_v2/lib/doc/build/
nightmare3_fluffos_v2/lib/doc/build/armours/
nightmare3_fluffos_v2/lib/doc/build/economy/
nightmare3_fluffos_v2/lib/doc/build/etc/
nightmare3_fluffos_v2/lib/doc/build/monster/
nightmare3_fluffos_v2/lib/doc/build/room/
nightmare3_fluffos_v2/lib/doc/build/virtual/
nightmare3_fluffos_v2/lib/doc/build/weapon/
nightmare3_fluffos_v2/lib/doc/classes/
nightmare3_fluffos_v2/lib/doc/efun/
nightmare3_fluffos_v2/lib/doc/etc/
nightmare3_fluffos_v2/lib/doc/help/creator/
nightmare3_fluffos_v2/lib/doc/help/hm/
nightmare3_fluffos_v2/lib/doc/law/
nightmare3_fluffos_v2/lib/doc/lpc/basic/
nightmare3_fluffos_v2/lib/doc/lpc/data_types/
nightmare3_fluffos_v2/lib/doc/lpc/etc/
nightmare3_fluffos_v2/lib/doc/lpc/intermediate/
nightmare3_fluffos_v2/lib/doc/lpc/types/
nightmare3_fluffos_v2/lib/doc/mudlib/
nightmare3_fluffos_v2/lib/doc/mudlib/features/
nightmare3_fluffos_v2/lib/domains/Examples/etc/
nightmare3_fluffos_v2/lib/domains/Examples/room/
nightmare3_fluffos_v2/lib/domains/Examples/virtual/
nightmare3_fluffos_v2/lib/domains/Examples/virtual/exaA/
nightmare3_fluffos_v2/lib/domains/Examples/virtual/exaB/
nightmare3_fluffos_v2/lib/domains/Examples/weapon/
nightmare3_fluffos_v2/lib/domains/Praxis/
nightmare3_fluffos_v2/lib/domains/Praxis/adm/
nightmare3_fluffos_v2/lib/domains/Praxis/attic/
nightmare3_fluffos_v2/lib/domains/Praxis/cemetary/
nightmare3_fluffos_v2/lib/domains/Praxis/cemetary/mon/
nightmare3_fluffos_v2/lib/domains/Praxis/data/
nightmare3_fluffos_v2/lib/domains/Praxis/death/
nightmare3_fluffos_v2/lib/domains/Praxis/mountains/
nightmare3_fluffos_v2/lib/domains/Praxis/obj/armour/
nightmare3_fluffos_v2/lib/domains/Praxis/obj/magic/
nightmare3_fluffos_v2/lib/domains/Praxis/obj/weapon/
nightmare3_fluffos_v2/lib/domains/Praxis/orc_valley/
nightmare3_fluffos_v2/lib/domains/Praxis/quests/
nightmare3_fluffos_v2/lib/domains/Praxis/standardOld/
nightmare3_fluffos_v2/lib/include/
nightmare3_fluffos_v2/lib/log/
nightmare3_fluffos_v2/lib/log/errors/
nightmare3_fluffos_v2/lib/log/reports/
nightmare3_fluffos_v2/lib/log/watch/
nightmare3_fluffos_v2/lib/news/
nightmare3_fluffos_v2/lib/secure/cfg/
nightmare3_fluffos_v2/lib/secure/cmds/ambassador/
nightmare3_fluffos_v2/lib/secure/cmds/mortal/
nightmare3_fluffos_v2/lib/secure/save/users/d/
nightmare3_fluffos_v2/lib/secure/std/
nightmare3_fluffos_v2/lib/std/hm/
nightmare3_fluffos_v2/lib/std/living/
nightmare3_fluffos_v2/lib/std/room/
nightmare3_fluffos_v2/lib/std/user/
nightmare3_fluffos_v2/lib/std/virtual/
nightmare3_fluffos_v2/lib/www/
nightmare3_fluffos_v2/lib/www/errors/
nightmare3_fluffos_v2/lib/www/gateways/
nightmare3_fluffos_v2/win32/
#include <std.h>

inherit DAEMON;

int cmd_rapture(string str) {
    object env;
    object *inv;
    int i, tmp;

    if(str) return 0;
    env = environment(this_player());
    if(!env) return 0;
    if(this_player()->query_ghost()) {
        notify_fail("Bah! You have already experienced rapture!\n");
        return 0;
    }
    if(env->query_property("no magic") || env->query_property("no attack")) {
        notify_fail("A holy force prevents the rapture.\n");
        return 0;
    }
    if((int)this_player()->query_mp() < 20) {
        notify_fail("Too low on magic power.\n");
        return 0;
    }
    if((int)this_player()->query_skill("faith") < 65) {
        notify_fail("You do not have the faith to bring about rapture.\n");
        return 0;
    }
    if(!alignment_ok(this_player())) {
        notify_fail("You have betrayed the source of your powers.\n");
        return 0;
    }
    for(i=0, tmp =sizeof((inv=users())); i<tmp; i++) {
        if(inv[i]->query_blocked("shout")) continue;
        if(creatorp(inv[i])) continue;
        tell_object(inv[i],
          "%^RED%^The air begins to thicken and bleed red with impending death through rapture.\n%^RESET%^");
    }
    this_player()->set_magic_round();
    call_out("do_rapture", 7, env);
    this_player()->add_mp(-(int)this_player()->query_mp()); //abuse fix 930907 blodgett
    this_player()->set_paralyzed(8);
    return 1;
}

void do_rapture(object env) {
    mapping who;
    object *inv, *chambres;
    string *sorties;
    int i, j, tmp2, tmp, tmp_al, damage;
    object tmp_ob;

    if(!present(this_player(), env)) {
      write("The force of your spell causes you to return to the place\n"
            "of rapture.");
      if(env)
        this_player()->move(env);
    }
    for(i=0, tmp = (sizeof(inv = users())); i<tmp; i++) {
        if(creatorp(inv[i])) continue;
        if(inv[i]->query_blocked("shout")) continue;
        tell_object(inv[i], "%^BLUE%^BOLD%^Rapture is here.%^RESET%^");
    }
    chambres = ({ env });
    sorties = (string *)env->query_exits();
    if(sorties && sizeof(sorties)) {
        for(i=0, tmp = sizeof(sorties); i<tmp; i++) {
            call_other((object)env->query_exit(sorties[i]),"???");
            if(!(tmp_ob = find_object(env->query_exit(sorties[i])))) continue;
            if(tmp_ob->query_property("no magic")) continue;
            chambres += ({ tmp_ob });
        }
        chambres = distinct_array(chambres);
    }

    for(i=0, tmp=sizeof(chambres), who = ([]); i<tmp; i++) {
        inv = all_inventory(chambres[i]);
        for(j=0, tmp2=sizeof(inv); j<tmp2; j++) {
            if(!living(inv[j])) continue;
            who[inv[j]] = ({
              (int)inv[j]->query_alignment(), (int)inv[j]->query_max_mp(),
              (int)inv[j]->query_hp()
            });
        }
    }
    tmp = sizeof((inv=keys(who)));
    write("Your prayers bring rapture to the world.\n");
    for(i=0; i<tmp; i++) {
        if(creatorp(inv[i])) continue;
        if(this_player() != inv[i] && !inv[i]->kill_ob(this_player(),0) && !this_player()->kill_ob(inv[i],0))
          continue;
        tmp_al = who[inv[i]][0] + 2000;
        inv[i]->add_mp(-(who[inv[i]][1]));
        damage = (int)this_player()->query_skill("faith") - to_int(percent(tmp_al, 3000));
        if(damage < 1) damage = 1;
        damage = (damage*(who[inv[i]][2]))/100;
        damage -= (int)inv[i]->query_spiritual();
        if(damage>3*(int)this_player()->query_max_hp())
          damage=3*(int)this_player()->query_max_hp();
        inv[i]->add_hp(-damage);
	if(!inv[i]->query_property("no paralyze")) {
          inv[i]->set_paralyzed(random(100-(int)inv[i]->query_level()));
	}
        if(inv[i] != this_player()) {
          tell_object(inv[i],
            this_player()->query_cap_name()+" has brought rapture to our reality.\n");
        }
    }
    return;
}

void help() {
    write("Syntax: <rapture>\n\n"
        "The faithful may use this prayer to bring rapture to their\n"
        "area of reality.  This should be used with *extreme* caution.\n"
    );
}