/* /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);
}