| Merentha Website
 
Overview
About LPC Coding
Header Files
The Problem Sets
Rooms
Normal Rooms
Monster Rooms
Search Rooms
Exit Rooms
Door Rooms
Monsters
Normal Monster
Random/Emote Monster
Patrol/Talking Monster
Skills/Interactive Monster
Armour
A Vest
A Ring
Cursed Armour
Weapons
Normal Staff
Two Handed Sword
Special Attack Weapon
Cursed Weapon
Talkin Weapon
Lights
A Match
A Torch
A Lantern
Bags
A Normal Bag
A Backpack (wearable)
An Expanding Bag
Misc Objects
A Leaf
A Sea Shell
A Key
A Snowball
 | // Petrarch 
 
#include 
#define FREEZER "/domains/Praxis/freezer"
 
inherit OBJECT;
 
void init() {
    ::init();
    add_action("throw", "throw");
}
 
void create() {
    ::create();
    set_short("a snowball");
    set_name("a snowball");
    set_id(({"snowball"}));
    set_long("This snowball is made from tightly packed snow.  "
      "You can throw it fellow adventurers if you wish.");
    set_weight(1);
    set_value(0);
    set_material(({"water","snow","ice","liquid"}));
}
 
int throw(string str) {
    string person;
    object ob;
    if(!str) return notify_fail("Throw snowball at who?\n");
    if(!sscanf(str, "snowball at %s", person)) 
	return notify_fail("Throw snowball at who?\n");
    if(!present(this_object(), this_player())) 
	return notify_fail("You arn't holding the snowball.\n");
    ob=find_living(person);
    if(!ob) return notify_fail("Throw snowball at who?\n");
    message("info", "You throw your snowball at "+
	capitalize(person)+".", this_player());
    tell_room(environment(this_player()), this_player()->query_cap_name()+
	" throws "+this_player()->query_possessive()+" snowball at "+
	capitalize(person)+".", ({this_player(), ob}));
    this_object()->move(FREEZER);
    call_out("hit", 3, ob, this_player());
    return 1;
}
 
void hit(object ob, object tp) {
    int i;
    if(!tp || !ob) return;
    i=random(20);
    if(i<3) {
        message("info", "You miss "+ob->query_cap_name()+" by a mile.", tp);
        message("info", "A snowball just wizzes by your ear.", ob);
        tell_room(environment(ob), "A snowball comes flying in the room.", 
	    ({tp, ob}));
        this_object()->move(environment(ob));
        return;
    }
    message("info", "You hit "+ob->query_cap_name()+" in the back of the head.",
	tp);
    message("info", "A snowball nails you in the head.", ob);
    tell_room(environment(ob), "A snowball wizzes into the room and hits "+
	ob->query_cap_name()+" in the back of the head.", ({tp, ob}));
    this_object()->move(ob);
    return;
} |