/* /lib/undead.c * From Dead Souls Object Library * This differs from the NM LPmud version * copyright (c) 1995 Dead Souls LPMud * Created by Descartes of Borg 961025 * Version: @(#) undead.c 1.8@(#) * Last modified: 96/10/27 */ #include <daemons.h> #include <damage_types.h> private int Undead = 0; private string UndeadType = 0; // These methods are defined in other objects which inherit this string GetName(); varargs string eventPrint(string message, mixed args...); varargs int eventReceiveDamage(object agent, int type, int amt, int ins, mixed limbs); int eventCompleteHeal(int x); int GetHealthPoints(); int eventMoralAct(int x); string GetRace(); void NewBody(string str); // end virtual method section /***** Data manipulation *****/ string GetUndeadType() { return UndeadType; } string SetUndeadType(string str) { return (UndeadType = str); } /* int SetUndead(int x) * int x - 0 for living, 1 for undead * * description * makes the living body undead if "x" is 1 or living if "x" is 0 * * returns the current status of the body */ int GetUndead() { return Undead; } int SetUndead(int x) { if( GetUndead() == x ) { return x; } if( x ) { SetUndeadType("ghost"); } else { SetUndeadType(0); } return (Undead = x); } /***** Events *****/ mixed eventBite(object target) { return 0; } mixed eventTurn(object who) { if( who ) { environment()->eventPrint(GetName() + " is turned from the world of " "the living.", this_object()); eventPrint(who->GetName() +" turns you from the world of the living."); who->eventDestroyEnemy(this_object()); } else { environment()->eventPrint(GetName() + " is turned from the world " "of the living.", this_object()); eventPrint("You have been turned from the world of the living."); } return 1; } static void heart_beat() { string type; if( !GetUndead() ) { return; } type = GetUndeadType(); if( random(100) + 1 > 90 ) { if( type == "ghost" || type == "phantom" ) { eventPrint("You wail mournfully."); environment()->eventPrint(GetName() + " wails mournfully.", this_object()); } else if( type == "zombie" || type == "ghoul" ) { eventPrint("You groan painfully."); environment()->eventPrint(GetName() + " groans painfully.", this_object()); } } } int GetGhost(){ if(GetUndeadType() == "ghost") return 1; else return 0; }