/* Mudobject.m Class definition. Copyright (C) 1995 David Flater. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "cheezmud.h" @implementation Mudobject + new { self = [super new]; beatcount = dead = loggedout = audit = 0; [world add: self]; mudname = strdup ("object"); indef = strdup ("an object"); def = strdup ("the object"); longdesc = strdup ("It is just a plain object, without any distinguishing" " feature."); return self; } - free { free (mudname); free (longdesc); free (indef); free (def); return [super free]; } - logout { if (!loggedout) { /* I absolutely *hate* this, but there isn't much alternative. */ [world elementsPerform: @selector(clue:) with: self]; dead = loggedout = 1; push_death (self); /* Add to list of things to free later */ } return self; } - (float) priority: (char *) action: (int) numargs { /* Not supported */ return -1.0; } - describe: (char *) newname: (char *) newindef: (char *) newdef: (char *) newlongdesc { [[[[self setmudname: newname] setindef: newindef] setdef: newdef] setlongdesc: newlongdesc]; return self; } - setmudname: (char *) newname { assert (newname); free (mudname); mudname = strdup (newname); return self; } - setindef: (char *) newdesc { assert (newdesc); free (indef); indef = strdup (newdesc); return self; } - setdef: (char *) newdesc { assert (newdesc); free (def); def = strdup (newdesc); return self; } - setlongdesc: (char *) newdesc { assert (newdesc); free (longdesc); longdesc = strdup (newdesc); return self; } - (char *) mudname { return mudname; } - (char *) longdesc { return longdesc; } - (char *) indef { return indef; } - (char *) def { return def; } - echo: (char *) text { if (audit) { id ma; if (!(ma = global_find (mudadmin, 1))) { [self toggle_audit]; return self; } text_sock_write ([ma getty], def); text_sock_write ([ma getty], " echo: "); text_sock_write ([ma getty], text); text_sock_write ([ma getty], "\n"); } /* Most objects ignore echos */ return self; } - emote: emoter: (char *) verb_you: (char *) verb_he: (char *) emotion { return self; } - emote: emoter: (char *) verb_you: (char *) verb_he: dobj: (char *) emotion { return self; } - say: emoter: (char *) verb_you: (char *) verb_he: (char *) emotion { return [self emote: emoter: verb_you: verb_he: emotion]; } - (void) heartbeat { ; } - listcontents: who { return self; } - clue: dontkillme { return self; } - (int) isdead { return dead; } - toggle_audit { audit = 1 - audit; return self; } /* 1996-04-15 These messages appeared when I upgraded my libobjects. */ /* They are not needed, so I accept them but do nothing. */ #if 0 - retain { return self; } - (void) release { ; } - autorelease { return self; } #endif @end