#include "std.h"
#define HARRY 0
int count;
#if HARRY
object harry;
#undef EXTRA_RESET
#define EXTRA_RESET\
if (!find_living("harry"))\
starta_harry();
#endif
FOUR_EXIT("room/vill_road1","west",
"room/vill_shore","east",
"room/adv_guild","south",
"room/shop","north",
"Village road",
"A long road going through the village.\n", 1)
#if HARRY
starta_harry() {
if(!harry || !living(harry)) {
harry = clone_object("obj/monster.talk");
call_other(harry, "set_name", "harry");
call_other(harry, "set_alias", "fjant");
call_other(harry, "set_short", "Harry the affectionate");
call_other(harry, "set_long", "Harry has an agreeable look.\n");
call_other(harry, "set_ac", 0);
call_other(harry, "set_level",3);
call_other(harry, "set_al",50);
call_other(harry, "set_ep",2283);
call_other(harry, "set_hp",30);
call_other(harry, "set_wc",5);
call_other(harry, "set_aggressive", 0);
move_object(harry, "room/vill_road2");
call_other(harry, "set_object", this_object());
call_other(harry, "set_function", "why_did");
call_other(harry, "set_type", "sells");
call_other(harry, "set_match", " ");
call_other(harry, "set_type", "attack");
call_other(harry, "set_match", " ");
call_other(harry, "set_type", "left");
call_other(harry, "set_match", "the game");
call_other(harry, "set_type", "takes");
call_other(harry, "set_match", " ");
call_other(harry, "set_type", "drops");
call_other(harry, "set_match", " ");
call_other(harry, "set_function", "how_does_it_feel");
call_other(harry, "set_type", "is now level");
call_other(harry, "set_match", " ");
call_other(harry, "set_function", "smiles");
call_other(harry, "set_type", "smiles");
call_other(harry, "set_match", " happily.");
call_other(harry, "set_function", "say_hello");
call_other(harry, "set_type", "arrives");
call_other(harry, "set_match", "");
call_other(harry, "set_function", "test_say");
call_other(harry, "set_type", "says:");
call_other(harry, "set_match", " ");
call_other(harry, "set_type", "tells you:");
call_other(harry, "set_match", " ");
call_other(harry, "set_function", "follow");
call_other(harry, "set_type", "leaves");
call_other(harry, "set_match", " ");
call_other(harry, "set_function", "gives");
call_other(harry, "set_type", "gives");
call_other(harry, "set_match", " ");
call_other(harry, "set_chat_chance", 2);
call_other(harry, "set_a_chat_chance", 33);
call_other(harry, "load_chat", "Harry says: What are you waiting for?\n");
call_other(harry, "load_chat", "Harry says: " +
"Hello there!\n");
call_other(harry, "load_chat", "Harry says: " +
"You should go do work.\n");
call_other(harry, "load_chat", "Harry says: " +
"I don't like school.\n");
call_other(harry, "load_chat", "Harry says: " +
"I feel kind of sleepy.\n");
call_other(harry, "load_chat", "Harry says: " +
"Who are you?\n");
call_other(harry, "load_chat", "Harry says: " +
"Why do you look like that?\n");
call_other(harry, "load_chat", "Harry says: " +
"What are you doing here?\n");
call_other(harry, "load_chat", "Harry says: " +
"Nice weather, isn't it?\n");
call_other(harry, "load_chat",
"Harry smiles.\n");
call_other(harry, "load_a_chat", "Harry says: " +
"Don't hit me!\n");
call_other(harry, "load_a_chat", "Harry says: " +
"That hurt!\n");
call_other(harry, "load_a_chat", "Harry says: " +
"Help, someone!\n");
call_other(harry, "load_a_chat", "Harry says: " +
"Why can't you go bullying elsewhere?\n");
call_other(harry, "load_a_chat", "Harry says: " +
"Aooooo\n");
call_other(harry, "load_a_chat", "Harry says: " +
"I hate bashers!\n");
call_other(harry, "load_a_chat", "Harry says: " +
"Bastard\n");
call_other(harry, "load_a_chat", "Harry says: " +
"You big brute!\n");
call_other(harry, "set_random_pick", 20);
call_other(harry, "set_move_at_reset", 0);
}
}
why_did(str) {
string who, what;
sscanf(str, "%s %s", who, what);
if(who == "harry" || who == "Harry")
return;
if (sscanf(str, "%s sells %s.", who, what) == 2) {
notify("Harry says: Why did you sell " + what + "\n");
}
if (sscanf(str, "%s attacks %s.", who, what) == 2) {
notify("Harry says: Why does " + who + " attack " + what + "?\n");
}
if (sscanf(str, "%s left the game.", who) == 1) {
notify("Harry says: Why did " + who + " quit the game ?\n");
}
if (sscanf(str, "%s takes %s.\n", who, what) == 2) {
notify("Harry says: Why did " + who + " take " + what + " ?\n");
}
if (sscanf(str, "%s drops %s.\n", who, what) == 2) {
notify("Harry says: Why did " + who + " drop " + what + " ?\n");
}
}
notify(str) {
say(str);
write(str);
}
how_does_it_feel(str) {
string who, what;
sscanf(str, "%s %s", who, what);
if(who == "harry" || who == "Harry")
return;
if (sscanf(str, "%s is now level %s.\n", who, what) == 2) {
notify("Harry says: How does it feel, being of level " + what + "?\n");
}
}
smiles(str) {
string who, what;
sscanf(str, "%s %s", who, what);
if(who == "harry" || who == "Harry")
return;
if (sscanf(str, "%s smiles happily", who) == 1 &&
who != "Harry") {
notify("Harry smiles happily.\n");
}
}
say_hello(str) {
string who;
if (sscanf(str, "%s arrives.", who) == 1) {
notify( "Harry says: Hi " + who + ", nice to see you !\n");
}
}
test_say(str) {
string a, b, message;
sscanf(str, "%s %s", a, b);
if(a == "harry" || a == "Harry")
return;
if (!sscanf(str, "%s says: %s\n", a, b) == 2) {
return;
}
str = b;
if (sscanf(str, "%sHarry%s", a, b) == 2)
message = "Harry nods enthusiastically.\n";
if (str == "shut up") {
message = "Harry says: Why do you want me to shut up ?\n";
}
if (sscanf(str, "%stay here%s", a, b) == 2 ||
sscanf(str, "%son't follow%s", a, b) == 2 ||
sscanf(str, "%set lost%s", a, b) == 2) {
message = "Harry says: Ok then.\n";
}
if(message)
notify(message);
}
follow(str) {
string who, where;
if(sscanf(str, "%s leaves %s.\n", who, where) == 2)
call_other(harry, "init_command", where);
}
gives(str) {
string who, what, whom;
int rand;
object obj, next_obj;
if(sscanf(str, "%s gives %s to %s.\n", who, what, whom) != 3)
return;
if(whom != "Harry")
return;
if(what == "firebreather" || what == "special" ||
what == "beer" || what == "bottle") {
rand = random(4);
if(rand == 0) {
if(random(10) > 6) {
notify("Harry sighs and says: I guess you're gonna kill me now.\n");
obj = first_inventory(harry);
while(obj) {
next_obj = next_inventory(harry);
transfer(obj, environment(harry));
notify("Harry drops " + call_other(obj, "short") + ".\n");
obj = next_obj;
}
call_other(harry, "init_command", "west");
}
}
if(rand == 1) {
call_other(harry, "init_command", "drink " + what);
}
if(rand == 2) {
obj = first_inventory(harry);
while(!call_other(obj, "id", what))
obj = next_inventory(obj);
transfer(obj, environment(harry));
notify("Harry drops the " + what + ".\n");
}
if(rand == 3) {
obj = first_inventory(harry);
while(!call_other(obj, "id", what))
obj = next_inventory(obj);
transfer(obj, find_living(lower_case(who)));
notify("Harry returned the " + what + " to " + who + ".\n");
}
} else if(what == "corpse") {
notify("Harry says: HEY, burry your corpses yourself, ashole.\n");
obj = first_inventory(harry);
while(!call_other(obj, "id", what))
obj = next_inventory(obj);
transfer(obj, find_living(lower_case(who)));
notify("Harry returned the " + what + " to " + who + ".\n");
} else {
notify("Harry says: Thank you very much, sir.\n");
}
}
monster_died() {
object obj, b;
int num;
obj = first_inventory(harry);
while(obj) {
b = next_inventory(harry);
if(call_other(obj, "id", "bottle")) {
destruct(obj);
num = 1;
}
obj = b;
}
if(num)
notify("There is a crushing sound of bottles breaking, as the body falls.\n");
}
#endif