/** * The effect that handles restoration of life-force. * Contains the code handling how much must be drunken * to restore life force, etc. Pray for me. * @author Shiannar */ #include <effect.h> #define IMM_FALL 1.5 //The immediate falloff. //Makes sipping until you get a life wasteful. :) #define REQ_BASE 100 #define REQ_EXP 2.5 #define CON_DROP 3 #define CUT_OFF 10 int required(object); int gift(object, int); int beginning(object drinker, int amount, int id) { drinker->submit_ee("reduce", ({ 2, 10 }), EE_CONTINUOUS); if(amount < required(drinker)) { tell_object(drinker, "A warming sensation glows in your stomach, " "but it quickly fades and becomes a quiet " "glow.\n"); amount /= IMM_FALL; return amount; } tell_object(drinker, "A warming sensation glows in your stomach, " "lasting for a few moments.\n"); return to_int(gift(drinker, amount) / IMM_FALL); } int merge_effect(object drinker, int old_amount, int new_amount, int id) { if(old_amount + new_amount < required(drinker)) { tell_object(drinker, "Your stomach warms again, but once again " "it fades to a quiet glow.\n"); new_amount /= IMM_FALL; return old_amount + new_amount; } else { tell_object(drinker, "The warmth in your stomach heats up, lasting " "a while before cooling again.\n"); return to_int(gift(drinker, old_amount + new_amount)); } } void end(object drinker, int amount, int id) { tell_object(drinker, "The quiet glow in your stomach " "fades completely.\n"); } int required(object ob) { return REQ_BASE + pow(ob->query_max_deaths()-6, REQ_EXP); } int gift(object ob, int amount) { if(ob->query_con() > CON_DROP) { ob->adjust_tmp_con(-CON_DROP); amount -= required(ob); ob->adjust_max_deaths(1); tell_object(ob, "Your muscles relax as a calming wave passes " "through you, leaving you feeling weak.\n"); return amount / IMM_FALL; } return amount; } void reduce(object ob, int arg, int id) { if(arg < CUT_OFF) { ob->submit_ee(0, 0, EE_REMOVE); } else { arg /= IMM_FALL; ob->set_arg_of(ob->sid_to_enum(id), arg); } } string query_classification() { return "body.ingested.life_potion";}