/* /lib/corpse.c
* from the Dead Souls LPC Library
* standard corpse object
* created by Descartes of Borg 960711
* Version: @(#) corpse.c 1.10@(#)
* Last Modified: 96/12/31
*/
#include <lib.h>
#include <message_class.h>
inherit LIB_SURFACE;
//inherit LIB_SMELL;
int DecayLife, Count, CallOut, Fresh;
string Owner, Race;
int eventDecay() {
if( !environment() ) {
Destruct();
return 0;
}
Fresh = 0;
switch(Count) {
case 10:
environment()->eventPrint(possessive_noun(Owner) + " corpse " +
"is starting to stink.", MSG_ROOMDESC);
SetId(GetId()..., "corpse", "remains","flesh","pile","pile of flesh");
SetAdjectives(GetAdjectives()..., "stinky", "rotting");
SetShort("the stinky remains of a rotting corpse");
SetSmell("This corpse is beginning to stink up the entire area.");
break;
case 20:
environment()->eventPrint("A rotting stench fills the entire "
"area.", MSG_ROOMDESC);
SetId(GetId()..., "flesh", "pile", "pile of flesh");
SetShort("a pile of rotting flesh");
SetSmell("Its smell is nearly unbearable.");
break;
case 30:
Destruct();
return 0;
}
Count++;
//CallOut = call_out((: eventDecay :), DecayLife/3);
return Count;
}
static int Destruct() {
//if( CallOut ) {
// remove_call_out(CallOut);
// }
return ::Destruct();
}
int SetDecayLife(int x) { return (DecayLife = x); }
int GetDecayLife() { return DecayLife; }
//void init(){
// ::init();
// SetId(({ "body","corpse",who->GetId()... }) );
//}
void SetCorpse(object who) {
string tmpshort = (string)who->GetShort();
if(sizeof(who->GetRiders())) tmpshort = (string)who->GetPlainShort();
if( DecayLife < 100 ) {
DecayLife = 500;
}
SetKeyName(who->GetKeyName());
//SetId(who->GetId()...);
SetId(({ "body","corpse",who->GetId()... }) );
Owner = who->GetCapName();
Race = who->GetRace();
Count = 1;
Fresh = 1;
SetShort("the corpse of "+tmpshort);
SetLong("As you look closely at " + who->GetCapName() +
", you notice that " + nominative(who) +
" does not appear to be moving.");
//CallOut = call_out((: eventDecay :), DecayLife/3);
}
int isFreshCorpse() {
return Fresh;
}
string GetHealthShort() {
return "%^RED%^" + GetShort();
}
string GetOwner() { return Owner; }
string GetRace() { return Race; }
string GetSaveString() { return 0; }
int CanReceive(object ob) { return 1; }
static void create() {
::create();
SetId( ({ "corpse", "flesh", "remains" }) );
SetAdjectives( ({"pile of", "rotting", "stinky"}) );
Count = 0;
CallOut = 0;
DecayLife = 100;
Owner = 0;
Race = 0;
SetNoCondition(1);
}
int direct_animate_obj() {
return 1;
}
int direct_offer_obj() {
return 1;
}
string GetItemCondition() { return "";}