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/
//  /domains/Praxis/obj/misc/stone.c
//  Stone for throwing at criminals and stuff.
//  For the Nightmare mortal law system
//  Created by Manny@Nightmare 940901
 
#include <std.h>
 
object target;
void set_target(object who);
 
inherit OBJECT;
 
create() {
  ::create();
  set_name("stone");
  set_id( ({ "stone", "throwing stone" }) );
  set_short("a throwing stone");
  set_long( (: "long_func" :) );
  set_weight(2);
  set_value(0);
}
 
long_func() {
  if(target) {
    message("say", "A throwing stone just waiting to be thrown at "+
        target->query_cap_name()+"'s forehead.", this_player());
  } else {
    message("say", "A throwing stone whithout direction.", 
        this_player());
  }
}
 
init() {
  ::init();
  add_action("throw_stone", "throw");
}
 
int throw_stone(string str) {
  string what, who;
  string limb;
  
  if(!str) {
    notify_fail("Throw what?\n");
    return 0;
  }
  if(!sscanf(str, "%s at %s", what, who) == 2) {
    notify_fail("Throw what at whom?\n");
    return 0;
  }
  if(!id(what)) {
    notify_fail("Throw what?\n");
    return 0;
  }
  if(who != (string)target->query_name()) {
    message("say", "The stone misses completely.", this_player());
    message("say", this_player()->query_cap_name()+" throws a "
        "stone in some random direction.", environment(this_player()),
        this_player());
    return 1;
  }
  switch(random(4)) {
    case 0:
      message("say", "You hit "+target->query_cap_name()+" square "
          "in the forehead!!", this_player());
      message("say", this_player()->query_cap_name()+" hits "+
          target->query_cap_name()+" in the forehead with a stone.",
          environment(this_player()), ({ this_player(), target }) );
      message("say", this_player()->query_cap_name()+" hits "
          "you squarely in the head with a small stone!!", target); 
      limb = "head";
      break;
    case 1:
      message("say", target->query_cap_name()+" screams in agony "
          "as you hit "+target->query_possessive()+" squarely in "
          "the nose!", this_player());
      message("say", target->query_cap_name()+" screams in agony "
          "as "+this_player()->query_cap_name()+" hits "
          +target->query_possessive()+" squarely in "
          "the nose!", environment(this_player()),
          ({ this_player(), target }) );
      message("say", "You scream in agony as a stone plows into your "
          "nose!!", target);
      limb = "head";
      break;
    case 2:
      message("say", "OUCH! You stone lands right on "+
          target->query_possessive()+" nards!!", this_player());
      message("say", this_player()->query_cap_name()+" is quite "
          "a good shot with those stones...", 
          environment(this_player()), ({ this_player(), target }));
      message("say", this_player()->query_cap_name()+" pegs you "
          "right in the nards!! OUCH!", target);
      limb = "torso";
      break;
    case 3:
      message("say", "You plant a stone right in "+
          target->query_possessive()+" stomach.", this_player());
      message("say", this_player()->query_cap_name()+" mercilessly "
          "beats on "+target->query_cap_name()+" with the stones.",
          environment(this_player()), ({ this_player(), target }));
      message("say", this_player()->query_cap_name()+" plugs a stone "
          "into your stomach, knocking your breath from you.", target);
      limb = "torso";
      break;
  }
  target->do_damage(limb, random(50)+10);
  if(((int)target->check_on_limb(limb) == 2) || (target->query_hp() < 0)) 
    target->die();
  return 1;
}
 
void set_target(object who) { target = who; }