|  |  | @ -5622,16 +5622,189 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  |             this.resetRegenUpdateTime(); |  |  |  |             this.resetRegenUpdateTime(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             float healthRegen = 0f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             float manaRegen = 0f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             float stamRegen = 0f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             boolean updateClient = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // Early exit if char is dead or disconnected
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if ((this.isAlive() == false) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     || (this.isActive() == false) || this.getLoc().x == 0 && this.getLoc().z == 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // Calculate Regen amount from last simulation tick
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             switch (this.movementState) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case IDLE: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     healthRegen = ((this.healthMax * MBServerStatics.HEALTH_REGEN_IDLE) + MBServerStatics.HEALTH_REGEN_IDLE_STATIC) * (getRegenModifier(ModType.HealthRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (this.isCasting() || this.isItemCasting()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen *= .75f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     // Characters regen mana when in only walk mode and idle
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (this.walkMode) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = ((this.manaMax * MBServerStatics.MANA_REGEN_IDLE) * getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if (!this.isCasting() && !this.isItemCasting()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = ((this.manaMax * MBServerStatics.MANA_REGEN_IDLE) * getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (!PlayerCharacter.CanBreathe(this)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = MBServerStatics.STAMINA_REGEN_SWIM; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if ((!this.isCasting() && !this.isItemCasting()) || this.lastMovementState.equals(MovementState.FLYING)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = MBServerStatics.STAMINA_REGEN_IDLE * getRegenModifier(ModType.StaminaRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case SITTING: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     healthRegen = ((this.healthMax * MBServerStatics.HEALTH_REGEN_SIT) + MBServerStatics.HEALTH_REGEN_SIT_STATIC) * getRegenModifier(ModType.HealthRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     manaRegen = (this.manaMax * MBServerStatics.MANA_REGEN_SIT) * (getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     stamRegen = MBServerStatics.STAMINA_REGEN_SIT * getRegenModifier(ModType.StaminaRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case RUNNING: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (this.walkMode == true) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = ((this.healthMax * MBServerStatics.HEALTH_REGEN_WALK) + MBServerStatics.HEALTH_REGEN_IDLE_STATIC) * getRegenModifier(ModType.HealthRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = this.manaMax * MBServerStatics.MANA_REGEN_WALK * getRegenModifier(ModType.ManaRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = MBServerStatics.STAMINA_REGEN_WALK; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.combat == true) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = MBServerStatics.STAMINA_REGEN_RUN_COMBAT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = MBServerStatics.STAMINA_REGEN_RUN_NONCOMBAT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case FLYING: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     float seventyFive = this.staminaMax * .75f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     float fifty = this.staminaMax * .5f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     float twentyFive = this.staminaMax * .25f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (this.getDesiredAltitude() == 0 && this.getAltitude() <= 10) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.isCombat()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = MBServerStatics.STAMINA_REGEN_IDLE * getRegenModifier(ModType.StaminaRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else if (!this.useFlyMoveRegen()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = ((this.healthMax * MBServerStatics.HEALTH_REGEN_IDLE) + MBServerStatics.HEALTH_REGEN_IDLE_STATIC) * (getRegenModifier(ModType.HealthRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.isCasting() || this.isItemCasting()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             healthRegen *= .75f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         // Characters regen mana when in only walk mode and idle
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.walkMode) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             manaRegen = (this.manaMax * MBServerStatics.MANA_REGEN_IDLE + (this.getSpiMod() * .015f)) * (getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else if (!this.isCasting() && !this.isItemCasting()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             manaRegen = (this.manaMax * MBServerStatics.MANA_REGEN_IDLE + (this.getSpiMod() * .015f)) * (getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             manaRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (!this.isItemCasting() && !this.isCasting() || this.getTakeOffTime() != 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = MBServerStatics.STAMINA_REGEN_FLY_IDLE; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = -1f; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else if (this.walkMode == true) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = ((this.healthMax * MBServerStatics.HEALTH_REGEN_WALK) + MBServerStatics.HEALTH_REGEN_IDLE_STATIC) * getRegenModifier(ModType.HealthRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = ((this.manaMax * MBServerStatics.MANA_REGEN_WALK) + (this.getSpiMod() * .015f)) * (getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = MBServerStatics.STAMINA_REGEN_FLY_WALK; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.isCombat()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = MBServerStatics.STAMINA_REGEN_FLY_RUN_COMBAT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen = MBServerStatics.STAMINA_REGEN_FLY_RUN; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     float oldStamina = this.stamina.get(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (FastMath.between(oldStamina, 0, twentyFive) && !this.wasTripped25) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         updateClient = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped25 = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped50 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped75 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else if (FastMath.between(oldStamina, twentyFive, fifty) && !this.wasTripped50) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         updateClient = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped25 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped50 = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped75 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else if (FastMath.between(oldStamina, fifty, seventyFive) && !this.wasTripped75) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         updateClient = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped25 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped50 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         this.wasTripped75 = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 case SWIMMING: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (this.walkMode == true) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = ((this.healthMax * MBServerStatics.HEALTH_REGEN_WALK) + MBServerStatics.HEALTH_REGEN_IDLE_STATIC) * getRegenModifier(ModType.HealthRecoverRate); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = ((this.manaMax * MBServerStatics.MANA_REGEN_WALK) + (this.getSpiMod() * .015f)) * (getRegenModifier(ModType.ManaRecoverRate)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = MBServerStatics.STAMINA_REGEN_SWIM; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         healthRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         manaRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         stamRegen = MBServerStatics.STAMINA_REGEN_SWIM; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.combat == true) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen += MBServerStatics.STAMINA_REGEN_RUN_COMBAT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             stamRegen += MBServerStatics.STAMINA_REGEN_RUN_NONCOMBAT; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // Are we drowning?
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if ((this.getStamina() <= 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     && (PlayerCharacter.CanBreathe(this) == false)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 healthRegen = (this.healthMax * -.03f); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // Multiple regen values by current deltaTime
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //     Logger.info("", healthRegen + "");
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             healthRegen *= getDeltaTime(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             manaRegen *= getDeltaTime(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             stamRegen *= getStamDeltaTime(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             boolean workedHealth = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             boolean workedMana = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             boolean workedStamina = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             float old, mod; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             while (!workedHealth || !workedMana || !workedStamina) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (!this.isAlive() || !this.isActive()) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if(this.isCasting){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     manaRegen = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     workedMana = true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (!workedHealth) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     old = this.health.get(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     mod = old + healthRegen; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (mod > this.healthMax) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         mod = healthMax; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if (mod <= 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (this.isAlive.compareAndSet(true, false)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             killCharacter("Water"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     workedHealth = this.health.compareAndSet(old, mod); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (!workedStamina) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     old = this.stamina.get(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     mod = old + stamRegen; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (mod > this.staminaMax) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         mod = staminaMax; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if (mod < 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         mod = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     workedStamina = this.stamina.compareAndSet(old, mod); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (!workedMana) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     old = this.mana.get(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     mod = old + manaRegen; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (mod > this.manaMax) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         mod = manaMax; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     else if (mod < 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         mod = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     workedMana = this.mana.compareAndSet(old, mod); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (updateClient) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 this.syncClient(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             // Reset this char's frame time.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             this.lastUpdateTime = System.currentTimeMillis(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             this.lastStamUpdateTime = System.currentTimeMillis(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         //this.updateMovementState();
 |  |  |  |         //this.updateMovementState();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         boolean updateHealth = this.regenerateHealth(); |  |  |  |         ///boolean updateHealth = this.regenerateHealth();
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         boolean updateMana = this.regenerateMana(); |  |  |  |         //boolean updateMana = this.regenerateMana();
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         boolean updateStamina = this.regenerateStamina(); |  |  |  |         //boolean updateStamina = this.regenerateStamina();
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         boolean consumeStamina = this.consumeStamina(); |  |  |  |         //boolean consumeStamina = this.consumeStamina();
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         if (this.timestamps.get("SyncClient") + 5000L < System.currentTimeMillis()) { |  |  |  |         if (this.timestamps.get("SyncClient") + 5000L < System.currentTimeMillis()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (updateHealth || updateMana || updateStamina || consumeStamina) { |  |  |  |             //if (updateHealth || updateMana || updateStamina || consumeStamina) {
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 this.syncClient(); |  |  |  |                 this.syncClient(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 this.timestamps.put("SyncClient", System.currentTimeMillis()); |  |  |  |                 this.timestamps.put("SyncClient", System.currentTimeMillis()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             //}
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -5642,7 +5815,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  |         float secondsPassed = (currentTime - regenTime) / 1000f; |  |  |  |         float secondsPassed = (currentTime - regenTime) / 1000f; | 
			
		
	
		
		
			
				
					
					|  |  |  |         float onePercent = this.healthMax * 0.01f; |  |  |  |         float onePercent = this.healthMax * 0.01f; | 
			
		
	
		
		
			
				
					
					|  |  |  |         float rate = 1.0f / RecoveryType.getRecoveryType(this).healthRate; |  |  |  |         float rate = 1.0f / RecoveryType.getRecoveryType(this).healthRate; | 
			
		
	
		
		
			
				
					
					|  |  |  |         //rate *= this.getRegenModifier(ModType.HealthRecoverRate);
 |  |  |  |         rate *= this.getRegenModifier(ModType.HealthRecoverRate); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         rate *= this.combatStats.healthRegen; |  |  |  |         rate *= this.combatStats.healthRegen; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(this.isMoving() && !this.walkMode) |  |  |  |         if(this.isMoving() && !this.walkMode) | 
			
		
	
	
		
		
			
				
					|  |  | @ -5650,6 +5823,7 @@ public class PlayerCharacter extends AbstractCharacter { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         float healthRegenerated = onePercent * rate * secondsPassed; |  |  |  |         float healthRegenerated = onePercent * rate * secondsPassed; | 
			
		
	
		
		
			
				
					
					|  |  |  |         //ChatManager.chatSystemInfo(this,"HEALTH REGENERATED: " + healthRegenerated + " SECONDS PASSED: " + secondsPassed);
 |  |  |  |         //ChatManager.chatSystemInfo(this,"HEALTH REGENERATED: " + healthRegenerated + " SECONDS PASSED: " + secondsPassed);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ChatManager.chatSystemInfo(this,"HEALTH : " + Math.round(this.health.get()) + " / " + this.healthMax); | 
			
		
	
		
		
			
				
					
					|  |  |  |         boolean workedHealth = false; |  |  |  |         boolean workedHealth = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |         float old = this.health.get(); |  |  |  |         float old = this.health.get(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         float mod = old + healthRegenerated; |  |  |  |         float mod = old + healthRegenerated; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |