|  |  | @ -172,7 +172,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private int spamCount = 0; |  |  |  | 	private int spamCount = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private boolean initialized = false; |  |  |  | 	private boolean initialized = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	private boolean enteredWorld = false; |  |  |  | 	private boolean enteredWorld = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private boolean canBreathe = true; |  |  |  | 	private boolean canBreathe = true; | 
			
		
	
	
		
		
			
				
					|  |  | @ -191,7 +191,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public double timeLoggedIn = 0; |  |  |  | 	public double timeLoggedIn = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public boolean RUN_MAGICTREK = true; |  |  |  | 	public boolean RUN_MAGICTREK = true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public int spellsCasted = 0; |  |  |  | 	public int spellsCasted = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public int pingCount = 0; |  |  |  | 	public int pingCount = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public long startPing = 0; |  |  |  | 	public long startPing = 0; | 
			
		
	
	
		
		
			
				
					|  |  | @ -199,14 +199,14 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private boolean wasTripped75 = false; |  |  |  | 	private boolean wasTripped75 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private boolean wasTripped50 = false; |  |  |  | 	private boolean wasTripped50 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private boolean wasTripped25 = false; |  |  |  | 	private boolean wasTripped25 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	private float characterHeight = 0; |  |  |  | 	private float characterHeight = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public float centerHeight = 0; |  |  |  | 	public float centerHeight = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private boolean lastSwimming = false; |  |  |  | 	private boolean lastSwimming = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	private boolean isTeleporting = false; |  |  |  | 	private boolean isTeleporting = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public float landingAltitude = 0; |  |  |  | 	public float landingAltitude = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	public int bindBuilding = 0; |  |  |  | 	public int bindBuilding = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public FriendStatus friendStatus = FriendStatus.Available; |  |  |  | 	public FriendStatus friendStatus = FriendStatus.Available; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -338,11 +338,11 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public void setInnerCouncil(boolean value) { |  |  |  | 	public void setInnerCouncil(boolean value) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		// dont update if its the same.
 |  |  |  | 		// dont update if its the same.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (GuildStatusController.isInnerCouncil(this.guildStatus) == value) |  |  |  | 		if (GuildStatusController.isInnerCouncil(this.guildStatus) == value) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return; |  |  |  | 			return; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		DbManager.PlayerCharacterQueries.SET_INNERCOUNCIL(this, value); |  |  |  | 		DbManager.PlayerCharacterQueries.SET_INNERCOUNCIL(this, value); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		GuildStatusController.setInnerCouncil(guildStatus, value); |  |  |  | 		GuildStatusController.setInnerCouncil(guildStatus, value); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
	
		
		
			
				
					|  |  | @ -350,7 +350,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public void setGuildLeader(boolean value) { |  |  |  | 	public void setGuildLeader(boolean value) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (GuildStatusController.isGuildLeader(this.guildStatus) == value) |  |  |  | 		if (GuildStatusController.isGuildLeader(this.guildStatus) == value) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return; |  |  |  | 			return; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		GuildStatusController.setGuildLeader(guildStatus, value); |  |  |  | 		GuildStatusController.setGuildLeader(guildStatus, value); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (value == true){ |  |  |  | 		if (value == true){ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			this.setInnerCouncil(true); |  |  |  | 			this.setInnerCouncil(true); | 
			
		
	
	
		
		
			
				
					|  |  | @ -620,19 +620,19 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	private void killCleanup() { |  |  |  | 	private void killCleanup() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.stopMovement(this.getLoc()); |  |  |  | 		this.stopMovement(this.getLoc()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		this.health.set(-1); |  |  |  | 		this.health.set(-1); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		//remove pet
 |  |  |  | 		//remove pet
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (this.pet != null) |  |  |  | 		if (this.pet != null) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			this.dismissPet(); |  |  |  | 			this.dismissPet(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		this.dismissNecroPets(); |  |  |  | 		this.dismissNecroPets(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// remove flight job.
 |  |  |  | 		// remove flight job.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		this.setTakeOffTime(0); |  |  |  | 		this.setTakeOffTime(0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.setDesiredAltitude(0); |  |  |  | 		this.setDesiredAltitude(0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.altitude = (float) 0; |  |  |  | 		this.altitude = (float) 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	this.getCharItemManager().closeTradeWindow(); |  |  |  | 	this.getCharItemManager().closeTradeWindow(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		//increment live counter. This is to prevent double kills from casts
 |  |  |  | 		//increment live counter. This is to prevent double kills from casts
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -653,10 +653,10 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// sends a kill message to ensure the Player falls over.
 |  |  |  | 		// sends a kill message to ensure the Player falls over.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.respawnLock.writeLock().lock(); |  |  |  | 		this.respawnLock.writeLock().lock(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		try{ |  |  |  | 		try{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if (SessionManager.getPlayerCharacterByID(this.getObjectUUID()) == null && !this.enteredWorld){ |  |  |  | 			if (SessionManager.getPlayerCharacterByID(this.getObjectUUID()) == null && !this.enteredWorld){ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				WorldGrid.RemoveWorldObject(this);			 |  |  |  | 				WorldGrid.RemoveWorldObject(this); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				this.respawn(false, false,true); |  |  |  | 				this.respawn(false, false,true); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			}else{ |  |  |  | 			}else{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				TargetedActionMsg killmsg = new TargetedActionMsg(this, true); |  |  |  | 				TargetedActionMsg killmsg = new TargetedActionMsg(this, true); | 
			
		
	
	
		
		
			
				
					|  |  | @ -667,7 +667,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		}finally{ |  |  |  | 		}finally{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			this.respawnLock.writeLock().unlock(); |  |  |  | 			this.respawnLock.writeLock().unlock(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		// TODO damage equipped items
 |  |  |  | 		// TODO damage equipped items
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (this.charItemManager != null) |  |  |  | 		if (this.charItemManager != null) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			this.charItemManager.damageAllGear(); |  |  |  | 			this.charItemManager.damageAllGear(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -724,16 +724,16 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Recalculate everything
 |  |  |  | 		// Recalculate everything
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		this.recalculatePlayerStats(true); |  |  |  | 		this.recalculatePlayerStats(true); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.setCombat(false); |  |  |  | 		this.setCombat(false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Set Health to 1/4 max
 |  |  |  | 		// Set Health to 1/4 max
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		Corpse corpse = null; |  |  |  | 		Corpse corpse = null; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (makeCorpse){ |  |  |  | 		if (makeCorpse){ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			try { |  |  |  | 			try { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				corpse = Corpse.makeCorpse(this, enterWorld); |  |  |  | 				corpse = Corpse.makeCorpse(this, enterWorld); | 
			
		
	
	
		
		
			
				
					|  |  | @ -742,7 +742,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			//if we're not making corpse, just purge inventory. used for characters dead while logged out.
 |  |  |  | 			//if we're not making corpse, just purge inventory. used for characters dead while logged out.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (!setAlive){ |  |  |  | 		if (!setAlive){ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if (corpse == null && makeCorpse) { |  |  |  | 			if (corpse == null && makeCorpse) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				Logger.error("Corpse not created."); |  |  |  | 				Logger.error("Corpse not created."); | 
			
		
	
	
		
		
			
				
					|  |  | @ -754,7 +754,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return; |  |  |  | 			return; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		this.setHealth((float) (healthMax * .25)); |  |  |  | 		this.setHealth((float) (healthMax * .25)); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			this.isAlive.set(true); |  |  |  | 			this.isAlive.set(true); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -762,7 +762,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Put player in safe mode
 |  |  |  | 		// Put player in safe mode
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Teleport the player to his bind loc
 |  |  |  | 		// Teleport the player to his bind loc
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// or to a ruin as apporpriate.
 |  |  |  | 		// or to a ruin as apporpriate.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			Building bindBuilding = BuildingManager.getBuildingFromCache(this.getBindBuildingID()); |  |  |  | 			Building bindBuilding = BuildingManager.getBuildingFromCache(this.getBindBuildingID()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if (enterWorld) { |  |  |  | 			if (enterWorld) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -778,11 +778,11 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.lastUpdateTime = System.currentTimeMillis(); |  |  |  | 		this.lastUpdateTime = System.currentTimeMillis(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.lastStamUpdateTime = System.currentTimeMillis(); |  |  |  | 		this.lastStamUpdateTime = System.currentTimeMillis(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		this.update(); |  |  |  | 		this.update(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		PowersManager.applyPower(this, this, Vector3fImmutable.ZERO, -1661758934, 40, false); |  |  |  | 		PowersManager.applyPower(this, this, Vector3fImmutable.ZERO, -1661758934, 40, false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (corpse == null && makeCorpse) { |  |  |  | 		if (corpse == null && makeCorpse) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			Logger.error("Corpse not created."); |  |  |  | 			Logger.error("Corpse not created."); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
	
		
		
			
				
					|  |  | @ -870,19 +870,19 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) |  |  |  | 		if (ConfigManager.serverType.equals(ServerType.LOGINSERVER)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return Vector3fImmutable.ZERO; |  |  |  | 			return Vector3fImmutable.ZERO; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		Building bindBuilding = PlayerCharacter.getUpdatedBindBuilding(this); |  |  |  | 		Building bindBuilding = PlayerCharacter.getUpdatedBindBuilding(this); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		//handle rented room binds.
 |  |  |  | 		//handle rented room binds.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (bindBuilding == null){ |  |  |  | 		if (bindBuilding == null){ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			bindLocation = Enum.Ruins.getRandomRuin().getLocation(); |  |  |  | 			bindLocation = Enum.Ruins.getRandomRuin().getLocation(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return bindLocation; |  |  |  | 			return bindLocation; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		bindLocation = BuildingManager.GetBindLocationForBuilding(bindBuilding); |  |  |  | 		bindLocation = BuildingManager.GetBindLocationForBuilding(bindBuilding); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if (bindLocation == null) |  |  |  | 		if (bindLocation == null) | 
			
		
	
	
		
		
			
				
					|  |  | @ -916,14 +916,14 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public boolean setPromotionClass(int value) { |  |  |  | 	public boolean setPromotionClass(int value) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		PromotionClass promotionClass = PromotionClass.GetPromtionClassFromCache(value); |  |  |  | 		PromotionClass promotionClass = PromotionClass.GetPromtionClassFromCache(value); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (promotionClass == null) |  |  |  | 		if (promotionClass == null) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return false; |  |  |  | 			return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		if (!DbManager.PlayerCharacterQueries.SET_PROMOTION_CLASS(this, value)) |  |  |  | 		if (!DbManager.PlayerCharacterQueries.SET_PROMOTION_CLASS(this, value)) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return false; |  |  |  | 			return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			this.promotionClass = promotionClass; |  |  |  | 			this.promotionClass = promotionClass; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// Warehouse this event
 |  |  |  | 			// Warehouse this event
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -964,7 +964,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return 2; |  |  |  | 			return 2; | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return 1; |  |  |  | 		return 1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public final void toggleLFGroup() { |  |  |  | 	public final void toggleLFGroup() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		this.lfGroup = !this.lfGroup; |  |  |  | 		this.lfGroup = !this.lfGroup; | 
			
		
	
	
		
		
			
				
					|  |  | @ -1356,58 +1356,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 		 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		//insert test run for lowered focus lines with trained spells
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		boolean tester = false; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		switch(stat){ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			case MBServerStatics.STAT_STR_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				tester = refineStr(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			case MBServerStatics.STAT_DEX_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				tester = refineDex(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			case MBServerStatics.STAT_CON_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				tester = refineCon(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			case MBServerStatics.STAT_INT_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				tester = refineInt(null); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			case MBServerStatics.STAT_SPI_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				tester = refineSpi(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		//loop through all skills and all powers to ensure that the refine doesn't yield a power no longer able to be cast
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		for(CharacterSkill charSkill : this.getSkills().values()) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			for (CharacterPower power : this.getPowers().values()) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				ArrayList<PowerReq> reqs = PowerReq.getPowerReqsForRune(power.getPowerID()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				for (PowerReq req : reqs) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					ConcurrentHashMap<String, CharacterSkill> playerSkills = this.getSkills(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					CharacterSkill playerSkill = playerSkills.get(charSkill.getToken()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					int currentSkillLevel = playerSkill.getTotalSkillPercet(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					if (charSkill.getToken() == req.getToken() && req.getLevel() > currentSkillLevel) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						//refund the point taken in the test
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						switch(stat){ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case MBServerStatics.STAT_STR_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								this.addStr(1); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case MBServerStatics.STAT_DEX_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								this.addDex(1); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case MBServerStatics.STAT_CON_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								this.addCon(1); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case MBServerStatics.STAT_INT_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								this.addInt(1); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case MBServerStatics.STAT_SPI_ID: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								this.addSpi(1); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						return false; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		return true; |  |  |  | 		return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |