/*  /lib/poison.c
 *  from the Dead Souls  Library
 *  Poisoning functions to be inherited *with* other objects that
 *  are meant to poison things.
 *  created by Blitz@Dead Souls 951120
 */

#include "include/poison.h"

private int PoisonUses, PoisonStrength;

static void create(){
    PoisonStrength = 0;
    PoisonUses = 0;
    this_object()->AddSave( ({ "PoisonUses" }) );
}

mixed indirect_poison_obj_with_obj(){
    if( environment() != this_player() ) return 0;
    if( PoisonStrength < 1 ) return "The poison is all used up.";
    return 1;
}

mixed eventSpreadPoison(object who, object target){
    if( !who || !target || !PoisonUses ) return 0;
    PoisonUses--;
    if( random(50) > (int)who->GetStatLevel("coordination") ){
        this_player()->eventPrint("You fumble around with the poison, "
          "spilling it on yourself.");
        environment(this_player())->eventPrint((string)who->GetName() +
          " fumbles around with some "
          "poison, spilling it on " +
          reflexive(who) + ".",
          this_player());
        who->AddPoison(random(10));
        return 1;
    }
    target->eventPoison(who, this_object(), PoisonStrength);
    return 1;
}

int SetPoisonStrength(int x){ return (PoisonStrength = x); }

mixed GetPoisonStrength(){ return PoisonStrength; }

int SetPoisonUses(int x){ return (PoisonUses = x); }

int GetPoisonUses(){ return PoisonUses; }

