--- deliantra/server/include/object.h 2009/11/08 20:55:39 1.216 +++ deliantra/server/include/object.h 2009/11/09 03:08:24 1.218 @@ -95,6 +95,8 @@ { uint64 seq; + enum { MAX_LEN = 3 + 16 + 1 + 1 }; // <1. + hex + > + \0 + static UUID cur; // last uuid generated static void init (); static UUID gen (); @@ -104,26 +106,9 @@ operator uint64() { return seq; } void operator =(uint64 seq) { this->seq = seq; } - typedef char BUF [32]; - - bool parse (const char *s) - { - return sscanf (s, "<1.%" SCNx64 ">", &seq) == 1; - } - - const char *c_str (char *buf, int len) const - { - snprintf (buf, len, "<1.%" PRIx64 ">", seq); - - return buf; - } - - const char *c_str () const - { - static BUF buf; - - return c_str (buf, sizeof (buf)); - } + bool parse (const char *s); + char *append (char *buf) const; + char *c_str () const; }; //+GPL @@ -141,8 +126,8 @@ struct body_slot { - signed char info:4; /* body info as loaded from the file */ signed char used:4; /* Calculated value based on items equipped */ + signed char info:4; /* body info as loaded from the file */ }; typedef struct oblnk @@ -229,13 +214,13 @@ sint8 ACC (RW, glow_radius); /* indicates the glow radius of the object */ uint8 ACC (RW, weapontype); /* type of weapon */ + 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 */ - body_slot slot [NUM_BODY_LOCATIONS]; - sint32 ACC (RW, weight); /* Attributes of the object */ sint32 ACC (RW, weight_limit);/* Weight-limit of object */ @@ -816,6 +801,8 @@ MTH static object *get (const char *name); // (find() || singularity)->instance() MTH object *instance (); + MTH void post_load_check (); // do some adjustments after parsing + object_vector_index ACC (RW, archid); // index in archvector shstr ACC (RW, archname); /* More definite name, like "generate_kobold" */