public void read(Json json, JsonValue val) {
		super.read(json, val);
		float rx = val.getFloat("respawnPointX");
		float ry = val.getFloat("respawnPointY");
		this.respawnPoint = new Vector2(rx, ry);				
		this.iFF = IFFTag.valueOf(val.getString("iff"));
		this.nickName = val.getString("nickName");
		this.name = val.getString("name");
		this.strength = val.getDouble("strength");
		this.level = val.getInt("level");
		this.experience = val.getFloat("experience");
		this.defaultState = json.fromJson(MobAI.class, val.get("defaultState").toString());
		this.defaultState.setOwnerInit(this);
		this.currentState = this.defaultState;
		this.powerType = Entity.DamageType.valueOf(val.getString("powerType"));
		this.visionRange = val.getFloat("visionRange");
		
		int attackFocusId = val.getInt("attackFocus");
		int aiFocusId = val.getInt("AIfocus");
		int interactableId = val.getInt("interactable");
		if (attackFocusId > -1 || aiFocusId > -1 || interactableId > -1) {
			JsonSerializer.pushMobRef(this, attackFocusId, aiFocusId, interactableId);
		}
		
				
		//other stuff that typically happens in constructor
		Texture texture = Game.res.getTexture(ID + "face");
		if (texture != null) face = TextureRegion.split(texture, 64, 64)[0];
		texture = Game.res.getTexture("healthBar");
		if (texture != null) healthBar = TextureRegion.split(texture, 12, 1)[0];
		determineGender();
		idleDelay = 3*Vars.ANIMATION_RATE*animation.getDefaultLength();
		w = (width-30)/2f;
	}