--- deliantra/server/include/object.h 2007/06/24 00:33:54 1.134
+++ deliantra/server/include/object.h 2007/08/16 06:36:56 1.143
@@ -1,23 +1,22 @@
/*
- * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game.
+ * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
*
* Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
* Copyright (©) 2001,2007 Mark Wedel & Crossfire Development Team
* Copyright (©) 1992,2007 Frank Tore Johansen
*
- * Crossfire TRT 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.
+ * Crossfire TRT 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 3 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.
+ * 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 Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*
* The authors can be reached via e-mail to
*/
@@ -187,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 */
@@ -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 */
@@ -287,6 +288,8 @@
// recursively destroy all objects in inventory, optionally dropping them to the ground instead
MTH void destroy_inv (bool drop_to_ground = false);
MTH object *insert (object *item); // insert into inventory
+ MTH void play_sound (faceidx sound) const;
+
void do_remove ();
MTH void remove ()
{
@@ -315,6 +318,9 @@
open_container (0);
}
+ MTH object *force_find (const shstr name);
+ MTH void force_add (const shstr name, int duration = 0);
+
// overwrite the attachable should_invoke function with a version that also checks ev_want_type
bool should_invoke (event_type event)
{
@@ -423,6 +429,7 @@
// insert object at same map position as 'where'
// handles both inventory and map "positions"
MTH object *insert_at (object *where, object *originator = 0, int flags = 0);
+ MTH void drop_unpaid_items ();
MTH void activate ();
MTH void deactivate ();
@@ -488,6 +495,9 @@
MTH struct region *region () const;
+ void statusmsg (const char *msg, int color = NDI_BLACK);
+ void errormsg (const char *msg, int color = NDI_RED);
+
protected:
void link ();
void unlink ();