/*    /lib/lamp.c
 *    from the Dead Souls Object Library
 *    a lamp-like inheritable that burns and such
 *    created by Descartes of Borg 960513
 */

#include <lib.h>
#include "include/lamp.h"

inherit LIB_ITEM;
inherit LIB_LIGHT;
inherit LIB_FUEL;

private int BurnRate = 5;

static void create(){
    item::create();
    fuel::create();
    light::create();
}

static void heart_beat(){
    eventDecreaseFuel(1);
    if( GetFuelAmount() < 1){
        eventDarken();
    }
}

mixed direct_light_obj(){
    if( GetFuelAmount() < 1 )
        return "There is no " + GetFuelType() + " in " + GetShort() + ".";
    return 1;
}

mixed eventDarken(){
    light::eventDarken();
    set_heart_beat(0);
    return 1;
}

varargs mixed eventLight(object who, object tool){
    if( GetLit() ) return light::eventLight(who, tool);
    eventLight(who, tool);
    set_heart_beat(BurnRate);
    return 1;
}

int GetBurnRate(){
    return BurnRate;
}

static int SetBurnRate(int x){
    return (BurnRate = x);
}

int GetRadiantLight(int ambient){
    if( !GetLit() ) return 0;
    else return item::GetRadiantLight(ambient);
}

string GetShort(){
    return item::GetShort() + light::GetShort();
}

varargs string GetLong(string unused){
    string tmp;

    tmp = fuel::GetLong(unused);
    if( tmp != "" ) return item::GetLong(unused) + "\n" + tmp;
    else return item::GetLong(unused);
}
