--- deliantra/server/include/object.h 2007/07/31 17:33:14 1.139 +++ deliantra/server/include/object.h 2007/08/25 22:19:26 1.145 @@ -188,6 +188,7 @@ body_slot slot [NUM_BODY_LOCATIONS]; 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 */ @@ -251,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 */ @@ -384,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. @@ -494,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 ();