Browse Source

recovering rates

lakebane
FatBoy-DOTC 6 days ago
parent
commit
edc4aa5d07
  1. 41
      src/engine/objects/PlayerCombatStats.java

41
src/engine/objects/PlayerCombatStats.java

@ -901,16 +901,14 @@ public class PlayerCombatStats { @@ -901,16 +901,14 @@ public class PlayerCombatStats {
if(!pc.timestamps.containsKey("LASTHEALTHREGEN"))
pc.timestamps.put("LASTHEALTHREGEN",System.currentTimeMillis());
float stateMultiplier = 1.0f;
if(pc.isSit())
stateMultiplier = 2.0f;
double current = pc.health.get();
if (Double.isNaN(current))
current = 0.0;
long deltaTime = System.currentTimeMillis() - pc.timestamps.get("LASTHEALTHREGEN");
float current = pc.health.get();
float onePercent = pc.healthMax * 0.01f;
double recovered = pc.healthMax * (0.01f / getRecoveryType(pc).health);
double mod = current + recovered;
float properDelay = (deltaTime / getRecoveryType(pc).health) * 0.001f;
float mod = current + (properDelay * onePercent * stateMultiplier);
if(pc.bonuses != null)
mod *= 1 + pc.bonuses.getFloatPercentAll(Enum.ModType.HealthRecoverRate, Enum.SourceType.None);
@ -919,7 +917,7 @@ public class PlayerCombatStats { @@ -919,7 +917,7 @@ public class PlayerCombatStats {
mod = pc.healthMax;
while (!worked) {
worked = pc.health.compareAndSet(current, mod);
worked = pc.health.compareAndSet((float) current, (float) mod);
}
pc.timestamps.put("LASTHEALTHREGEN",System.currentTimeMillis());
@ -929,15 +927,19 @@ public class PlayerCombatStats { @@ -929,15 +927,19 @@ public class PlayerCombatStats {
if(!pc.timestamps.containsKey("LASTMANAREGEN"))
pc.timestamps.put("LASTMANAREGEN",System.currentTimeMillis());
float stateMultiplier = 1.0f;
if(pc.isSit())
stateMultiplier = 2.0f;
if(pc.isCasting){
pc.timestamps.put("LASTMANAREGEN",System.currentTimeMillis());
return;
}
long deltaTime = System.currentTimeMillis() - pc.timestamps.get("LASTMANAREGEN");
float current = pc.mana.get();
float onePercent = pc.manaMax * 0.01f;
float properDelay = (deltaTime / getRecoveryType(pc).mana) * 0.001f;
float mod = current + (properDelay * onePercent * stateMultiplier);
double current = pc.mana.get();
if (Double.isNaN(current)) {
current = 0.0;
}
double recovered = pc.manaMax * (0.01f / getRecoveryType(pc).mana);
double mod = current + recovered;
if(pc.bonuses != null)
mod *= 1 + pc.bonuses.getFloatPercentAll(Enum.ModType.ManaRecoverRate, Enum.SourceType.None);
@ -946,7 +948,7 @@ public class PlayerCombatStats { @@ -946,7 +948,7 @@ public class PlayerCombatStats {
mod = pc.manaMax;
while (!worked) {
worked = pc.mana.compareAndSet(current, mod);
worked = pc.mana.compareAndSet((float) current, (float) mod);
}
pc.timestamps.put("LASTMANAREGEN",System.currentTimeMillis());
@ -970,6 +972,7 @@ public class PlayerCombatStats { @@ -970,6 +972,7 @@ public class PlayerCombatStats {
float current = pc.stamina.get();
float properDelay = (deltaTime / getRecoveryType(pc).stamina) * 0.001f;
float mod = current + (properDelay * stateMultiplier);
if(pc.bonuses != null)
mod *= 1 + pc.bonuses.getFloatPercentAll(Enum.ModType.StaminaRecoverRate, Enum.SourceType.None);
@ -1053,7 +1056,7 @@ public class PlayerCombatStats { @@ -1053,7 +1056,7 @@ public class PlayerCombatStats {
public static recoveryType getRecoveryType(PlayerCharacter pc){
if(pc.sit)
return recoveryType.RESTING;
else if(!pc.isMoving())
else if(!pc.isMoving() && !pc.isFlying())
return recoveryType.IDLING;
else
if(pc.walkMode)

Loading…
Cancel
Save