mud++0.35/etc/
mud++0.35/etc/guilds/
mud++0.35/help/propert/
mud++0.35/mudC/
mud++0.35/player/
mud++0.35/src/interface/
mud++0.35/src/os/cygwin32/
mud++0.35/src/os/win32/
mud++0.35/src/os/win32/bcppbuilder/
mud++0.35/src/osaddon/
mud++0.35/src/util/
How to add new object type ?

- think about name describing that type; let's suppose it is 'flower'
- add #define ITEM_FLOWER xxx in object.h where xxx is free number
- add entry to obj_type_list in object.cc; { "flower", ITEM_FLOWER }
- add virtual bool isFlower() { return false; } to object.h under
	rest of isXxx entries
- add case ITEM_FLOWER: return new ObjFlower();
	in object.cc inside createObject
- copy ObjTemplate class in objtypes.h and change all references from
	Template -> Flower and ITEM_TEMPLATE -> ITEM_FLOWER
	// note - this is for direct inheritance from Object class; if
	// you want to inherit from some other class (ObjPlant) change all
	// references from Object -> ObjPlant
- change object specific values; in ObjTemplate they are represented by
	single entry 'int values'
- for every value add getXxx and setXxx functions
- inside objtypes.cc you have to create 4 functions
	int ObjFlower::readFromTypeSpecific( InFile & ); 
		// read all values
	int ObjFlower::writeToTypeSpecific( OutFile & ) const; 
		// save all values
	void ObjFlower::reportValues( String & str ); 
		// print all values to string for OLC - with comments
	char * ObjFlower::setValues( const String & arg );
		// parse argument for 'value_name value' syntax, try to set it
		// and report success or failure by returning pointer to comment

And thats all :)

If you think that it is very coumbersome comparing to previous switch/case
scheme you are not quite right. It is only a bit harder to construct, but
a lot easier to use, and allow for some previously unavailable tricks, like
inheritance from derived objects and any number of values for new objects.

Few notes:
- be sure to call superclass functions ! for classes derived directly
	from Object it is not need, but as you will nest inheritance deeper
	it will became obvious
- calling superclass functions is done at end of function with one exception -
	reportValues; it is done this way to make output nicer.
- do not use Object::Object( Object & obj ) cloning contructor any longer !
	use obj->clone() instead (too sad C++ do not support java Cloneable
	interface :(