--- deliantra/server/include/object.h 2010/04/03 02:27:24 1.231 +++ deliantra/server/include/object.h 2010/04/11 00:34:05 1.240 @@ -25,8 +25,6 @@ #ifndef OBJECT_H #define OBJECT_H -#include - #include "cfperl.h" #include "shstr.h" @@ -35,7 +33,8 @@ typedef int tag_t; // also see common/item.C -enum { +enum +{ body_skill, body_combat, body_range, @@ -53,13 +52,6 @@ NUM_BODY_LOCATIONS }; -enum slottype_t -{ - slot_none, - slot_combat, - slot_ranged, -}; - /* See common/item.c */ typedef struct Body_Locations @@ -292,6 +284,16 @@ const_utf8_string query_short_name (const object *op); const_utf8_string query_name (const object *op); const_utf8_string query_base_name (const object *op, int plural); +sint64 query_cost (const object *tmp, object *who, int flag); +const char *query_cost_string (const object *tmp, object *who, int flag); + +int change_ability_duration (object *spell, object *caster); +int min_casting_level (object *caster, object *spell); +int casting_level (object *caster, object *spell); +sint16 SP_level_spellpoint_cost (object *caster, object *spell, int flags); +int SP_level_dam_adjust (object *caster, object *spob); +int SP_level_duration_adjust (object *caster, object *spob); +int SP_level_range_adjust (object *caster, object *spob); struct object : zero_initialised, object_copy { @@ -321,6 +323,16 @@ object *head; /* Points to the main object of a large body */ // NO ACC, perl semantics are different key_value *key_values; /* Fields not explictly known by the loader. */ + MTH void set_flag (int flagnum) + { + flag [flagnum] = true; + } + + MTH void clr_flag (int flagnum) + { + flag [flagnum] = false; + } + // privates / perl shstr_tmp kv_get (shstr_tmp key) const; void kv_del (shstr_tmp key); @@ -363,7 +375,6 @@ static object *read (object_thawer &f, maptile *map = 0); // map argument due to toal design bogosity, must go. bool write (object_freezer &f); - MTH int slottype () const; MTH static object *create (); const mapxy &operator =(const mapxy &pos); MTH void copy_to (object *dst); @@ -380,6 +391,7 @@ // recursively destroy all objects in inventory, optionally dropping them to the ground instead MTH void destroy_inv (bool drop_to_ground = false); + MTH void destroy_inv_fast (); // like destroy_inv (false), but only works when *this is destroyed, too MTH object *insert (object *item); // insert into inventory MTH void play_sound (faceidx sound) const; MTH void say_msg (const_utf8_string msg) const; @@ -432,7 +444,6 @@ MTH void set_owner (object *owner); MTH void set_speed (float speed); MTH void set_glow_radius (sint8 rad); - MTH bool change_skill (object *ob); // deprecated? MTH void open_container (object *new_container); MTH void close_container () @@ -533,6 +544,8 @@ MTH bool is_dragon () const; + MTH bool is_immunity () const { return invisible && type == SIGN; } + MTH bool has_active_speed () const { return speed >= MIN_ACTIVE_SPEED; } // temporary: wether the object can be saved in a map file @@ -613,6 +626,9 @@ return !!contr; } + /* elmex: this method checks whether the object is in a shop */ + MTH bool is_in_shop () const; + MTH bool affects_los () const { return glow_radius || flag [FLAG_BLOCKSVIEW]; @@ -725,6 +741,7 @@ void statusmsg (const_utf8_string msg, int color = NDI_BLACK); void failmsg (const_utf8_string msg, int color = NDI_RED); + void failmsgf (const_utf8_string format, ...); // always NDI_RED... const_utf8_string query_inventory (object *who = 0, const_utf8_string indent = "");