nakedmudv3.8.1/
nakedmudv3.8.1/html/
nakedmudv3.8.1/html/tutorials/
nakedmudv3.8.1/html/tutorials/building_extras/
nakedmudv3.8.1/html/tutorials/c/
nakedmudv3.8.1/html/tutorials/reference/
nakedmudv3.8.1/html/tutorials/scripting/
nakedmudv3.8.1/html/tutorials/scripting_extras/
nakedmudv3.8.1/lib/
nakedmudv3.8.1/lib/help/A/
nakedmudv3.8.1/lib/help/B/
nakedmudv3.8.1/lib/help/C/
nakedmudv3.8.1/lib/help/D/
nakedmudv3.8.1/lib/help/G/
nakedmudv3.8.1/lib/help/H/
nakedmudv3.8.1/lib/help/J/
nakedmudv3.8.1/lib/help/L/
nakedmudv3.8.1/lib/help/M/
nakedmudv3.8.1/lib/help/O/
nakedmudv3.8.1/lib/help/P/
nakedmudv3.8.1/lib/help/R/
nakedmudv3.8.1/lib/help/S/
nakedmudv3.8.1/lib/help/W/
nakedmudv3.8.1/lib/logs/
nakedmudv3.8.1/lib/misc/
nakedmudv3.8.1/lib/players/
nakedmudv3.8.1/lib/txt/
nakedmudv3.8.1/lib/world/
nakedmudv3.8.1/lib/world/zones/examples/
nakedmudv3.8.1/lib/world/zones/examples/mproto/
nakedmudv3.8.1/lib/world/zones/examples/oproto/
nakedmudv3.8.1/lib/world/zones/examples/reset/
nakedmudv3.8.1/lib/world/zones/examples/rproto/
nakedmudv3.8.1/lib/world/zones/examples/trigger/
nakedmudv3.8.1/lib/world/zones/limbo/
nakedmudv3.8.1/lib/world/zones/limbo/room/
nakedmudv3.8.1/lib/world/zones/limbo/rproto/
nakedmudv3.8.1/src/alias/
nakedmudv3.8.1/src/dyn_vars/
nakedmudv3.8.1/src/editor/
nakedmudv3.8.1/src/example_module/
nakedmudv3.8.1/src/help2/
nakedmudv3.8.1/src/set_val/
nakedmudv3.8.1/src/socials/
nakedmudv3.8.1/src/time/
#ifndef PROTOTYPE_H
#define PROTOTYPE_H
//*****************************************************************************
//
// prototype.h
//
// generic prototype datastructure for anything that can be generated with a
// python script (e.g. object, room, character). Supports inheritance from
// other prototypes.
//
//*****************************************************************************

PROTO_DATA    *newProto(void);
void        deleteProto(PROTO_DATA *data);
void        protoCopyTo(PROTO_DATA *from, PROTO_DATA *to);
PROTO_DATA   *protoCopy(PROTO_DATA *data);
STORAGE_SET *protoStore(PROTO_DATA *data);
PROTO_DATA   *protoRead(STORAGE_SET *set);
bool           protoRun(PROTO_DATA *proto, const char *type, void *pynewfunc, 
			void *protoaddfunc, void *protoclassfunc, void *me);
CHAR_DATA  *protoMobRun(PROTO_DATA *proto);
OBJ_DATA   *protoObjRun(PROTO_DATA *proto);
ROOM_DATA *protoRoomRun(PROTO_DATA *proto);
ROOM_DATA *protoRoomInstance(PROTO_DATA *proto, const char *as);

//
// setters
void      protoSetKey(PROTO_DATA *data, const char *key);
void  protoSetParents(PROTO_DATA *data, const char *parents);
void   protoSetScript(PROTO_DATA *data, const char *script);
void protoSetAbstract(PROTO_DATA *data, bool abstract);

//
// getters
const char      *protoGetKey(PROTO_DATA *data);
const char  *protoGetParents(PROTO_DATA *data);
const char   *protoGetScript(PROTO_DATA *data);
bool         protoIsAbstract(PROTO_DATA *data);
BUFFER *protoGetScriptBuffer(PROTO_DATA *data);

#endif // PROTOTYPE_H