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/
//    /cmds/skills/_aura.c
//    From the Nightmare Mudlib
//    A spell that creates a glowing shield around the caster
//    by Kalinash@Nightmare on May 1, 1994.

#include <std.h>

inherit DAEMON;

int alignment_check(object ob);

int cmd_aura(string who) {
    object ob, me, orb;
    int cost, defense, prot, length;
    string Class;

    me = this_player();
    Class = me->query_class();
    if(environment(this_player())->query_property("no magic"))
        return notify_fail("Something is blocking your concentration.\n");
    if(Class != "mage" && Class != "kataan" && Class != "monk"
      && Class != "cleric")
        return notify_fail("You mumble in confusion.\n");
    if(!who) who = me->query_name();
    if(!ob=find_player(who))
        return notify_fail(sprintf("%s doesn't seem to be on the mud.\n",
          capitalize(lower_case(who))));
    if(!present(ob, environment(this_player())))
        return notify_fail(sprintf("%s isn't here!\n",
          capitalize(lower_case(who))));
    if((Class == "monk" || Class == "cleric") && !alignment_check(me))
        return notify_fail("You have betrayed the source of your power.\n");
    me->set_magic_round();
    cost = 60 + (random(2000/((int)this_player()->query_stats("wisdom")+1)));
    defense = (int)this_player()->query_skill("magic defense");
    cost = cost + (int)ob->query_magic_protection(0)*15;
    if((int)me->query_mp() < cost)
        return notify_fail("Too low on magic energy.\n");
    if(me == ob)
        prot = (1+defense/25);
    else
        prot = (1+defense/20);
    me->add_mp(-cost);
    length = random(defense*10)+100;
    if(length > 600) length = 600;
    ob->add_magic_protection( ({ 0, prot, length }) );
    orb = new("/std/obj/aura_orb");
    orb->move(ob);
    orb->set_time(length);
    orb->start();
    if(me == ob)
        me->add_skill_points("magic defense", random(10));
    else {
        me->add_skill_points("magic defense", random(20));
        me->add_exp(5);
    }
    if(Class == "monk" && (int)ob->query_alignment() < 0)
        me->add_alignment(-random(10));
    else if(me != ob && (int)me->query_alignment() > 0 &&
        (int)ob->query_alignment() > 0)
        me->add_alignment(random(10));
    if(ob == me)
        message("my_action", "%^YELLOW%^You create a glowing shield "
          "around your body.%^RESET%^", me);
    else {
        message("my_action", sprintf("%%^YELLOW%%^You create a "
          "glowing shield around the body of %s",
          (string)ob->query_cap_name()), me);
        message("their_action", sprintf("%%^YELLOW%%^%s creates a "
          "glowing shield around your body.", me->query_cap_name()),
          ob);
    }
    message("other_action", sprintf("%s mumbles a %s of protection.",
      (string)me->query_cap_name(), Class == "mage" ? "spell" : "prayer"),
      environment(me), me);
    return 1;
}

int alignment_check(object ob) {
    if( (int)ob->query_alignment() > 200) return 1;
    if( (string)ob->query_class() == "cleric" &&
      (int)ob->query_alignment() > 0) return 1;
    return 0;
}

void help() {
    message("help", "Usage: <aura [whom]>\n\nThis spells creates a "
      "glowing shield around the body of [whom].", this_player());
    return;
}