return PyGetRegionObject( cAllTerritories::getInstance()->region( self->pChar->region ) );
return PyGetRegionObject( self->pChar->region );
PyObject *wpChar_getAttr( wpChar *self, char *name ){	pGetStr( "name", name.c_str() )	else pGetStr( "orgname", orgname().latin1() )	else pGetStr( "title", title().latin1() )	else pGetInt( "id", id() )	else pGetInt( "xid", xid() )    	else if ( !strcmp( name, "race" ) )		return PyInt_FromLong( self->pChar->race() );	else pGetInt( "dir", dir() )	// Flags	else pGetInt( "allmove", canMoveAll() ? 1 : 0 )	else pGetInt( "frozen", isFrozen() ? 1 : 0 )	else pGetInt( "iconmultis", viewHouseIcons() ? 1 : 0 )	else pGetInt( "permhidden", isHiddenPermanently() ? 1 : 0 )	else pGetInt( "hidden", hidden() )	else pGetInt( "nomana", priv2() & 0x10 ? 1 : 0 )	else pGetInt( "dispellable", priv2() & 0x20 ? 1 : 0 )	else pGetInt( "permmagicreflect", priv2() & 0x40 ? 1 : 0 )	else pGetInt( "noreags", priv2() & 0x80 ? 1 : 0 )	else if( !strcmp( name, "fonttype" ) ) 		return PyInt_FromLong( self->pChar->fonttype() );	else if( !strcmp( name, "saycolor" ) ) 		return PyInt_FromLong( self->pChar->saycolor() );	else if( !strcmp( name, "emotecolor" ) ) 		return PyInt_FromLong( self->pChar->emotecolor() );	else if( !strcmp( name, "str" ) ) 		return PyInt_FromLong( self->pChar->st() );	else pGetInt( "dex", effDex() )//	else pGetInt( "int", in )	else if( !strcmp( name, "int" ) )		return PyInt_FromLong( self->pChar->in() );	else if ( !strcmp( name, "str2" ) )		return PyInt_FromLong( self->pChar->st2() );	else pGetInt( "dex2", decDex() )//	else pGetInt( "int2", in2 )	else if( !strcmp( name, "int2" ) )		return PyInt_FromLong( self->pChar->in2() );//	else pGetInt( "health", hp )	else if ( !strcmp( name, "health" ) )		return PyInt_FromLong( self->pChar->hp() );//	else pGetInt( "stamina", stm )	else if ( !strcmp( name, "stamina" ) )		return PyInt_FromLong( self->pChar->stm() );//	else pGetInt( "mana", mn )	else if ( !strcmp( name, "mana" ) )		return PyInt_FromLong( self->pChar->mn() );//	else pGetInt( "hidamage", hidamage )	else if ( !strcmp( name, "hidamage" ) )		return PyInt_FromLong(self->pChar->hidamage() );//	else pGetInt( "lodamage", lodamage )	else if ( !strcmp( name, "lodamage" ) )		return PyInt_FromLong( self->pChar->lodamage() );//	else pGetInt( "npc", npc )	else if ( !strcmp( name, "npc" ) )		return PyInt_FromLong( self->pChar->npc() );//	else pGetInt( "shop", shop )	else if ( !strcmp( name, "shop" ) )		return PyInt_FromLong( self->pChar->shop() );//	else pGetInt( "cell", cell )	else if ( !strcmp( name, "cell" ) )		return PyInt_FromLong( self->pChar->cell() );		// Owner	else if( !strcmp( name, "owner" ) )		return PyGetCharObject( FindCharBySerial( self->pChar->ownserial ) );	else pGetInt( "karma", karma )	else pGetInt( "fame", fame )	else pGetInt( "kills", kills )	else pGetInt( "deaths", deaths )	else pGetInt( "dead", dead )	else if( !strcmp( name, "backpack" ) )		return PyGetItemObject( self->pChar->getBackpack() );	else pGetInt( "def", def )	else pGetInt( "war", war )		// Target	else if( !strcmp( "target", name ) )	{		if( isItemSerial( self->pChar->targ ) )			return PyGetItemObject( FindItemBySerial( self->pChar->targ ) );		else if( isCharSerial( self->pChar->targ ) )			return PyGetCharObject( FindCharBySerial( self->pChar->targ ) );	}	else pGetInt( "npcwander", npcWander )	else pGetInt( "oldnpcwander", oldnpcWander )		// Region object	else if( !strcmp( "region", name ) )		return PyGetRegionObject( cAllTerritories::getInstance()->region( self->pChar->region ) );	else pGetInt( "skilldelay", skilldelay )	else pGetInt( "objectdelay", objectdelay )	else pGetInt( "taming", taming )	else pGetInt( "summontimer", summontimer )	else pGetInt( "visrange", VisRange )		else if( !strcmp( "trackingtarget", name ) )	{		if( isItemSerial( self->pChar->trackingTarget() ) )			return PyGetItemObject( FindItemBySerial( self->pChar->trackingTarget() ) );		else if( isCharSerial( self->pChar->trackingTarget() ) )			return PyGetCharObject( FindCharBySerial( self->pChar->trackingTarget() ) );	}	// Account object	else if( !strcmp( "account", name ) )	{		return Py_None;	}	else pGetInt( "incognito", incognito() )	else pGetInt( "polymorph", polymorph() )	else pGetInt( "haircolor", haircolor() )	else pGetInt( "hairstyle", hairstyle() )	else pGetInt( "beardcolor", beardcolor() )	else pGetInt( "beardstyle", beardstyle() )	else if( !strcmp( "socket", name ) )		return PyGetSocketObject( self->pChar->socket() );	else if( !strcmp( "pos", name ) )		return PyGetCoordObject( self->pChar->pos );	else if( !strcmp( "baseskill", name ) )	{		wpSkills *skills = PyObject_New( wpSkills, &wpSkillsType );		skills->base = true;		skills->pChar = self->pChar;		return (PyObject*)( skills );	}	else if( !strcmp( "skill", name ) )	{		wpSkills *skills = PyObject_New( wpSkills, &wpSkillsType );		skills->base = false;		skills->pChar = self->pChar;		return (PyObject*)( skills );	}	else pGetInt( "direction", beardstyle() )	/*getStrProperty( "name", pChar->name.c_str() )	else getStrProperty( "orgname", pChar->orgname().latin1() )	else getStrProperty( "title", pChar->title().latin1() )	else getIntProperty( "serial", pChar->serial )	else getIntProperty( "body", pChar->id() )	else getIntProperty( "xbody", pChar->xid )	else getIntProperty( "skin", pChar->skin() )	else getIntProperty( "xskin", pChar->xskin() )		else getIntProperty( "health", pChar->hp )	else getIntProperty( "stamina", pChar->stm )	else getIntProperty( "mana", pChar->mn )	else getIntProperty( "str", pChar->st )	else getIntProperty( "dex", pChar->effDex() )	else getIntProperty( "int", pChar->in )	else if( !strcmp( "pos", name ) )		return PyGetCoordObject( self->pChar->pos );	else getIntProperty( "direction", pChar->dir )	else getIntProperty( "flags2", pChar->priv2 )	else getIntProperty( "hidamage", pChar->hidamage )	else getIntProperty( "lodamage", pChar->lodamage )	else getIntProperty( "objectdelay", pChar->objectdelay )	else if( !strcmp( "equipment", name ) )	{		wpContent *content = PyObject_New( wpContent, &wpContentType );		content->contserial = self->pChar->serial;		return (PyObject*)content;	}	else if( !strcmp( "skill", name ) )	{		wpSkills *skills = PyObject_New( wpSkills, &wpSkillsType );		skills->base = false;		skills->pChar = self->pChar;		return (PyObject*)( skills );	}	else if( !strcmp( "socket", name ) )		return PyGetSocketObject( self->pChar->socket() );	else if( !strcmp( "equipment", name ) )	{		Py_WPEquipment *returnVal = PyObject_New( Py_WPEquipment, &Py_WPEquipmentType );		returnVal->pChar = self->pChar; // Never forget that		return (PyObject*)returnVal;		return Py_None;	}	// Base skill	else for( UINT8 i = 0; i < ALLSKILLS; ++i )		if( field.upper() == skillname[ i ] ) 			return PyInt_FromLong( self->pChar->baseSkill( i ) );*/	// If no property is found search for a method	return Py_FindMethod( wpCharMethods, (PyObject*)self, name );}