/* This object is a standard soft_drink object and works like /obj/food.c or /obj/armour.c To use this you can do: inherit "obj/soft_drink"; ...... or, object ob; ob = clone_object("obj/soft_drink"); ob->set_name("apple juice"); * For more documentation look at /doc/build/drinks These functions are defined: set_name(string) To set the name of the item. For use in id(). Two alternative names can be set with the calls: set_alias(string) and set_alt_name(string) set_short(string) To set the short description. set_long(string) To set the long description. set_value(int) To set the value of the item. set_weight(int) To set the weight of the item. set_strength(int) To set the healing power of the item. If you don't wish the item to have healing powers just set this value to 0. set_drinker_mess(string) To set the message that is written to the player when he drinks the item. set_drinking_mess(string) To set the message given to the surrounding players when this object is drunk. set_empty_container(string) The container of the liquid inside. For example "bottle" or "jug". For an example of the use of this object, please read: * /doc/examples/apple_juice.c */ string name, short_desc, long_desc, drinking_mess, drinker_mess, alias, alt_name, empty_container; int value, strength, weight, full; init() { add_action("drink", "drink"); } reset(arg) { if (arg) return; full = 1; weight = 1; drinker_mess = "Gloink Glurk Glburp.\n"; empty_container = "bottle"; } prevent_insert() { if (empty_container) return 0; else { write("You don't want to ruin " + name + ".\n"); return 1; } } id(str) { if (full) return str == name || str == alt_name || str == alias; else return str == empty_container; } short() { if (full) { if (!short_desc) return name; return short_desc; } else return "An empty " + empty_container; } long() { if (full) { if (!long_desc) write(short() + ".\n"); else write(long_desc); } else write(short() + "\n"); } get() { return 1; } drink(str) { object tp; string p_name; tp = this_player(); p_name = capitalize(tp->query_name()); if (!full) return; if (!str || !id(str)) return 0; if (tp->query_level() * 8 < strength) { write("This is much to much for you to drink! You drool most of it on the ground.\n"); say(p_name + " tries to drink " + short_desc + " but drools most of it on the ground.\n"); full = 0; return 1; } if (!tp->drink_soft(strength)) return 1; full = 0; tp->heal_self(strength); write(drinker_mess); if (drinking_mess) say(p_name + drinking_mess); else say(p_name + " drinks " + short_desc + ".\n"); return 1; } min_cost() { return 4 * strength + (strength * strength) / 10; } set_name(n) { name = n; } set_short(s) { short_desc = s; } set_long(l) { long_desc = l; } set_value(v) { value = v; } set_weight(w) { weight = w; } set_strength(s) { strength = s; } set_alias(a) { alias = a; } set_alt_name(an) { alt_name = an; } set_drinking_mess(dm) { drinking_mess = dm; } set_drinker_mess(dm) { drinker_mess = dm; } set_empty_container(ec) { empty_container = ec; } /* * Things that other objects might want to know. */ query_value() { if (full) { if (value) return value; else return min_cost(); } else return 10; } query_weight() { return weight; }