#include <lib.h> inherit LIB_ITEM; inherit LIB_SMOKE; inherit LIB_BURN; private int BurnRate = 5; int lastpuff; static void create(){ item::create(); burn::create(); } static void heart_beat(){ eventDecreaseFuel(1); if( GetFuelAmount() < 1){ eventBurnOut(); } } mixed direct_light_obj(){ mixed tmp = CanBurn(this_player()); if( tmp == 1 ){ return "Light it with what?"; } if( GetFuelAmount() < 1 ) return "There is no " + GetFuelType() + " in " + GetShort() + "."; return 1; } mixed eventDarken(){ burn::eventDarken(); set_heart_beat(0); return 1; } varargs mixed eventLight(object who, object tool){ if( GetLit() ) return burn::eventLight(who, tool); burn::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() + burn::GetShort(); } varargs string GetLong(string unused){ string tmp; tmp = burn::GetLong(unused); if( tmp != "" ) return item::GetLong(unused) + "\n" + tmp; else return item::GetLong(unused); } int GetLastPuff(){ return lastpuff; } mixed eventSmoke(object who, object what){ if(!GetLit()){ write("It is not lit!"); return 1; } write("You smoke your "+remove_article(GetShort())+"."); say(who->GetName()+" smokes from "+possessive(who)+" " +remove_article(GetShort())+"."); lastpuff = time(); eventDecreaseFuel(1); if( !GetFuelAmount() ) eventBurnOut(); return 1; }