--- deliantra/server/include/object.h 2007/06/06 05:41:26 1.132 +++ 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 */ @@ -248,10 +249,10 @@ UUID ACC (RW, uuid); // Unique Identifier, survives saves etc. int ACC (RO, count); - int ACC (RO, index); // index into objects - int ACC (RO, active); // index into actives + 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 (); @@ -555,7 +565,7 @@ void link (); void unlink (); - int ACC (RW, archid); // index in archvector + object_vector_index ACC (RW, archid); // index in archvector shstr ACC (RW, archname); /* More definite name, like "generate_kobold" */ bool ACC (RW, stub); // if true, this is an invalid archetype uint32 ACC (RW, editable); /* editable flags (mainly for editor) */ @@ -632,10 +642,7 @@ #define INS_BELOW_ORIGINATOR 0x0010 #define INS_MAP_LOAD 0x0020 -#define ARCH_SINGULARITY "singularity" -#define ARCH_DETECT_MAGIC "detect_magic" #define ARCH_DEPLETION "depletion" -#define ARCH_SYMPTOM "symptom" #endif