--- deliantra/server/include/object.h 2007/07/26 00:27:08 1.138 +++ deliantra/server/include/object.h 2007/08/25 22:19:26 1.145 @@ -186,7 +186,9 @@ uint32 ACC (RW, weapontype); /* type of weapon */ uint32 ACC (RW, tooltype); /* type of tool or build facility */ body_slot slot [NUM_BODY_LOCATIONS]; - faceidx ACC (RW, face); /* Face with colors */ + faceidx ACC (RW, face); /* the graphical face */ + faceidx ACC (RW, sound); /* the sound face */ + faceidx ACC (RW, sound_destroy); /* played on destroy */ living ACC (RO, stats); /* Str, Con, Dex, etc */ /* See the pod/objects.pod for more info about body locations */ @@ -250,7 +252,7 @@ object_vector_index ACC (RO, index); // index into objects object_vector_index ACC (RO, active); // index into actives - player_ptr ACC (RW, contr); /* Pointer to the player which control this object */ + player_ptr ACC (RW, contr); /* Pointer to the player which control this object, ALWAYS set *iff* type == PLAYER */ object *ACC (RW, below); /* Pointer to the object stacked below this one */ object *ACC (RW, above); /* Pointer to the object stacked above this one */ @@ -383,7 +385,7 @@ // contr => is a player // head => only save head of a multitile object // owner => can not reference owner yet - MTH bool can_map_save () const { return !contr && !head && !owner && !flag [FLAG_NO_MAP_SAVE]; } + MTH bool can_map_save () const { return !head && (!owner || owner->contr) && !contr && !flag [FLAG_NO_MAP_SAVE]; } /* This return true if object has still randomitems which * could be expanded. @@ -493,6 +495,9 @@ MTH struct region *region () const; + void statusmsg (const char *msg, int color = NDI_BLACK); + void failmsg (const char *msg, int color = NDI_RED); + protected: void link (); void unlink ();