v2.3.0: improved foresight buffs on level load and at high movespeed
This commit is contained in:
@@ -776,6 +776,15 @@ public class Hero extends Char {
|
||||
} else {
|
||||
ready();
|
||||
}
|
||||
|
||||
//if we just loaded into a level and have a search buff, make sure to process them
|
||||
if(Actor.now() == 0){
|
||||
if (buff(Foresight.class) != null){
|
||||
search(false);
|
||||
} else if (buff(TalismanOfForesight.Foresight.class) != null){
|
||||
buff(TalismanOfForesight.Foresight.class).checkAwareness();
|
||||
}
|
||||
}
|
||||
|
||||
actResult = false;
|
||||
|
||||
@@ -2344,6 +2353,10 @@ public class Hero extends Char {
|
||||
if (foresight){
|
||||
GameScene.updateFog(pos, Foresight.DISTANCE+1);
|
||||
}
|
||||
|
||||
if (talisman != null){
|
||||
talisman.checkAwareness();
|
||||
}
|
||||
|
||||
return smthFound;
|
||||
}
|
||||
|
||||
@@ -264,6 +264,31 @@ public class TalismanOfForesight extends Artifact {
|
||||
public boolean act() {
|
||||
spend( TICK );
|
||||
|
||||
checkAwareness();
|
||||
|
||||
if (charge < chargeCap
|
||||
&& !cursed
|
||||
&& target.buff(MagicImmune.class) == null
|
||||
&& Regeneration.regenOn()) {
|
||||
//fully charges in 2000 turns at +0, scaling to 1000 turns at +10.
|
||||
float chargeGain = (0.05f+(level()*0.005f));
|
||||
chargeGain *= RingOfEnergy.artifactChargeMultiplier(target);
|
||||
partialCharge += chargeGain;
|
||||
|
||||
if (partialCharge > 1 && charge < chargeCap) {
|
||||
partialCharge--;
|
||||
charge++;
|
||||
updateQuickslot();
|
||||
} else if (charge >= chargeCap) {
|
||||
partialCharge = 0;
|
||||
GLog.p( Messages.get(TalismanOfForesight.class, "full_charge") );
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void checkAwareness(){
|
||||
boolean smthFound = false;
|
||||
|
||||
int distance = 3;
|
||||
@@ -313,27 +338,6 @@ public class TalismanOfForesight extends Artifact {
|
||||
} else {
|
||||
warn = false;
|
||||
}
|
||||
|
||||
if (charge < chargeCap
|
||||
&& !cursed
|
||||
&& target.buff(MagicImmune.class) == null
|
||||
&& Regeneration.regenOn()) {
|
||||
//fully charges in 2000 turns at +0, scaling to 1000 turns at +10.
|
||||
float chargeGain = (0.05f+(level()*0.005f));
|
||||
chargeGain *= RingOfEnergy.artifactChargeMultiplier(target);
|
||||
partialCharge += chargeGain;
|
||||
|
||||
if (partialCharge > 1 && charge < chargeCap) {
|
||||
partialCharge--;
|
||||
charge++;
|
||||
updateQuickslot();
|
||||
} else if (charge >= chargeCap) {
|
||||
partialCharge = 0;
|
||||
GLog.p( Messages.get(TalismanOfForesight.class, "full_charge") );
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void charge(int boost){
|
||||
|
||||
Reference in New Issue
Block a user