v2.4.0: fixed charge maxing via adding not always clearing partialCharge

This commit is contained in:
Evan Debenham
2024-04-26 14:08:09 -04:00
parent 20cd08c32a
commit eeca547cc4
11 changed files with 52 additions and 35 deletions
@@ -159,7 +159,7 @@ public class AlchemistsToolkit extends Artifact {
public void charge(Hero target, float amount) { public void charge(Hero target, float amount) {
if (target.buff(MagicImmune.class) != null) return; if (target.buff(MagicImmune.class) != null) return;
partialCharge += 0.25f*amount; partialCharge += 0.25f*amount;
if (partialCharge >= 1){ while (partialCharge >= 1){
partialCharge--; partialCharge--;
charge++; charge++;
updateQuickslot(); updateQuickslot();
@@ -180,11 +180,15 @@ public class CloakOfShadows extends Artifact {
if (charge < chargeCap) { if (charge < chargeCap) {
if (!isEquipped(target)) amount *= 0.75f*target.pointsInTalent(Talent.LIGHT_CLOAK)/3f; if (!isEquipped(target)) amount *= 0.75f*target.pointsInTalent(Talent.LIGHT_CLOAK)/3f;
partialCharge += 0.25f*amount; partialCharge += 0.25f*amount;
if (partialCharge >= 1){ while (partialCharge >= 1f) {
partialCharge--;
charge++; charge++;
updateQuickslot(); partialCharge--;
} }
if (charge >= chargeCap){
partialCharge = 0;
charge = chargeCap;
}
updateQuickslot();
} }
} }
@@ -304,7 +304,11 @@ public class DriedRose extends Artifact {
if (ghost == null){ if (ghost == null){
if (charge < chargeCap) { if (charge < chargeCap) {
charge += Math.round(4*amount); partialCharge += 4*amount;
while (partialCharge >= 1f){
charge++;
partialCharge--;
}
if (charge >= chargeCap) { if (charge >= chargeCap) {
charge = chargeCap; charge = chargeCap;
partialCharge = 0; partialCharge = 0;
@@ -279,8 +279,13 @@ public class LloydsBeacon extends Artifact {
while (partialCharge >= 1){ while (partialCharge >= 1){
partialCharge--; partialCharge--;
charge++; charge++;
updateQuickslot();
} }
if (charge >= chargeCap){
partialCharge = 0;
charge = chargeCap;
}
updateQuickslot();
} }
} }
@@ -222,11 +222,13 @@ public class MasterThievesArmband extends Artifact {
while (partialCharge >= 1f){ while (partialCharge >= 1f){
charge++; charge++;
partialCharge--; partialCharge--;
updateQuickslot();
if (charge == chargeCap){
GLog.p( Messages.get(MasterThievesArmband.class, "full") );
}
} }
if (charge >= chargeCap){
GLog.p( Messages.get(MasterThievesArmband.class, "full") );
partialCharge = 0;
charge = chargeCap;
}
updateQuickslot();
} }
@Override @Override
@@ -166,7 +166,11 @@ public class SandalsOfNature extends Artifact {
public void charge(Hero target, float amount) { public void charge(Hero target, float amount) {
if (cursed || target.buff(MagicImmune.class) != null) return; if (cursed || target.buff(MagicImmune.class) != null) return;
if (charge < chargeCap) { if (charge < chargeCap) {
charge += Math.round(2*amount); partialCharge += 2*amount;
while (partialCharge >= 1f){
charge++;
partialCharge--;
}
if (charge >= chargeCap) { if (charge >= chargeCap) {
charge = chargeCap; charge = chargeCap;
partialCharge = 0; partialCharge = 0;
@@ -100,7 +100,11 @@ public class TalismanOfForesight extends Artifact {
public void charge(Hero target, float amount) { public void charge(Hero target, float amount) {
if (cursed || target.buff(MagicImmune.class) != null) return; if (cursed || target.buff(MagicImmune.class) != null) return;
if (charge < chargeCap){ if (charge < chargeCap){
charge += Math.round(2*amount); partialCharge += 2*amount;
while (partialCharge >= 1f){
charge++;
partialCharge--;
}
if (charge >= chargeCap) { if (charge >= chargeCap) {
charge = chargeCap; charge = chargeCap;
partialCharge = 0; partialCharge = 0;
@@ -167,12 +167,11 @@ public class TimekeepersHourglass extends Artifact {
while (partialCharge >= 1){ while (partialCharge >= 1){
partialCharge--; partialCharge--;
charge++; charge++;
if (charge == chargeCap){
partialCharge = 0;
}
updateQuickslot();
} }
if (charge >= chargeCap){
partialCharge = 0;
}
updateQuickslot();
} }
} }
@@ -229,12 +229,11 @@ public class UnstableSpellbook extends Artifact {
while (partialCharge >= 1){ while (partialCharge >= 1){
partialCharge--; partialCharge--;
charge++; charge++;
if (charge == chargeCap){
partialCharge = 0;
}
updateQuickslot();
} }
if (charge >= chargeCap){
partialCharge = 0;
}
updateQuickslot();
} }
} }
@@ -770,7 +770,10 @@ public abstract class Wand extends Item {
curCharges++; curCharges++;
partialCharge--; partialCharge--;
} }
curCharges = Math.min(curCharges, maxCharges); if (curCharges >= maxCharges){
partialCharge = 0;
curCharges = maxCharges;
}
updateQuickslot(); updateQuickslot();
} }
} }
@@ -230,17 +230,7 @@ public class MeleeWeapon extends Weapon {
} else { } else {
tracker.detach(); tracker.detach();
Charger charger = Buff.affect(hero, Charger.class); Charger charger = Buff.affect(hero, Charger.class);
if (charger.charges < charger.chargeCap()) { charger.gainCharge(hero.pointsInTalent(Talent.VARIED_CHARGE) / 6f);
charger.partialCharge += hero.pointsInTalent(Talent.VARIED_CHARGE) / 6f;
if (charger.partialCharge >= 1f) {
charger.partialCharge -= 1f;
charger.charges++;
if (charger.charges == charger.chargeCap()){
charger.partialCharge = 0;
}
updateQuickslot();
}
}
ScrollOfRecharging.charge(hero); ScrollOfRecharging.charge(hero);
} }
} }
@@ -537,7 +527,10 @@ public class MeleeWeapon extends Weapon {
charges++; charges++;
partialCharge--; partialCharge--;
} }
charges = Math.min(charges, chargeCap()); if (charges >= chargeCap()){
partialCharge = 0;
charges = chargeCap();
}
updateQuickslot(); updateQuickslot();
} }
} }