v0.9.3: adjusted nature's power, now stacks additively with furor

This commit is contained in:
Evan Debenham 2021-05-26 19:11:46 -04:00
parent 86dd8bd810
commit 52b46ae266
9 changed files with 41 additions and 35 deletions

View File

@ -581,13 +581,13 @@ public class Hero extends Char {
if (belongings.weapon != null) { if (belongings.weapon != null) {
return belongings.weapon.speedFactor( this ); return belongings.weapon.delayFactor( this );
} else { } else {
//Normally putting furor speed on unarmed attacks would be unnecessary //Normally putting furor speed on unarmed attacks would be unnecessary
//But there's going to be that one guy who gets a furor+force ring combo //But there's going to be that one guy who gets a furor+force ring combo
//This is for that one guy, you shall get your fists of fury! //This is for that one guy, you shall get your fists of fury!
return RingOfFuror.attackDelayMultiplier(this); return 1f/RingOfFuror.attackSpeedMultiplier(this);
} }
} }

View File

@ -95,7 +95,7 @@ public class Statue extends Mob {
@Override @Override
public float attackDelay() { public float attackDelay() {
return super.attackDelay()*weapon.speedFactor( this ); return super.attackDelay()*weapon.delayFactor( this );
} }
@Override @Override

View File

@ -107,7 +107,7 @@ abstract public class KindOfWeapon extends EquipableItem {
return 1f; return 1f;
} }
public float speedFactor( Char owner ) { public float delayFactor(Char owner ) {
return 1f; return 1f;
} }

View File

@ -33,11 +33,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.DirectableAlly; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.DirectableAlly;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.NPC;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShaftParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShaftParticle;
@ -567,7 +565,7 @@ public class DriedRose extends Artifact {
public float attackDelay() { public float attackDelay() {
float delay = super.attackDelay(); float delay = super.attackDelay();
if (rose != null && rose.weapon != null){ if (rose != null && rose.weapon != null){
delay *= rose.weapon.speedFactor(this); delay *= rose.weapon.delayFactor(this);
} }
return delay; return delay;
} }

View File

@ -46,8 +46,8 @@ public class RingOfFuror extends Ring {
return new Furor(); return new Furor();
} }
public static float attackDelayMultiplier(Char target ){ public static float attackSpeedMultiplier(Char target ){
return 1f / (float)Math.pow(1.105, getBuffedBonus(target, Furor.class)); return (float)Math.pow(1.105, getBuffedBonus(target, Furor.class));
} }
public class Furor extends RingBuff { public class Furor extends RingBuff {

View File

@ -238,28 +238,30 @@ public class SpiritBow extends Weapon {
} }
@Override @Override
public float speedFactor(Char owner) { protected float baseDelay(Char owner) {
if (sniperSpecial){ if (sniperSpecial){
switch (augment){ switch (augment){
case NONE: default: case NONE: default:
return 0f; return 0f;
case SPEED: case SPEED:
return 1f * RingOfFuror.attackDelayMultiplier(owner); return 1f * RingOfFuror.attackSpeedMultiplier(owner);
case DAMAGE: case DAMAGE:
return 2f * RingOfFuror.attackDelayMultiplier(owner); return 2f * RingOfFuror.attackSpeedMultiplier(owner);
}
} else{
return super.baseDelay(owner);
}
} }
} else {
float speed = super.speedFactor(owner);
@Override
protected float speedMultiplier(Char owner) {
float speed = super.speedMultiplier(owner);
if (owner.buff(NaturesPower.naturesPowerTracker.class) != null){ if (owner.buff(NaturesPower.naturesPowerTracker.class) != null){
// 1.33x speed to 1.5x speed, depending on talent points // +33% speed to +50% speed, depending on talent points
speed /= ((32 + ((Hero)owner).pointsInTalent(Talent.GROWING_POWER)) / 24f); speed += ((8 + ((Hero)owner).pointsInTalent(Talent.GROWING_POWER)) / 24f);
} }
return speed; return speed;
} }
}
@Override @Override
public int level() { public int level() {
@ -318,8 +320,8 @@ public class SpiritBow extends Weapon {
} }
@Override @Override
public float speedFactor(Char user) { public float delayFactor(Char user) {
return SpiritBow.this.speedFactor(user); return SpiritBow.this.delayFactor(user);
} }
@Override @Override

View File

@ -181,18 +181,24 @@ abstract public class Weapon extends KindOfWeapon {
} }
@Override @Override
public float speedFactor( Char owner ) { public float delayFactor( Char owner ) {
return baseDelay(owner) * (1f/speedMultiplier(owner));
int encumbrance = 0;
if (owner instanceof Hero) {
encumbrance = STRReq() - ((Hero)owner).STR();
} }
float DLY = augment.delayFactor(this.DLY); protected float baseDelay( Char owner ){
float delay = augment.delayFactor(this.DLY);
if (owner instanceof Hero) {
int encumbrance = STRReq() - ((Hero)owner).STR();
if (encumbrance > 0){
delay *= Math.pow( 1.2, encumbrance );
}
}
DLY *= RingOfFuror.attackDelayMultiplier(owner); return delay;
}
return (encumbrance > 0 ? (float)(DLY * Math.pow( 1.2, encumbrance )) : DLY); protected float speedMultiplier(Char owner ){
return RingOfFuror.attackSpeedMultiplier(owner);
} }
@Override @Override

View File

@ -235,7 +235,7 @@ abstract public class MissileWeapon extends Weapon {
@Override @Override
public float castDelay(Char user, int dst) { public float castDelay(Char user, int dst) {
return speedFactor( user ); return delayFactor( user );
} }
protected void rangedHit( Char enemy, int cell ){ protected void rangedHit( Char enemy, int cell ){

View File

@ -44,8 +44,8 @@ public class Shuriken extends MissileWeapon {
} }
@Override @Override
public float speedFactor(Char owner) { public float delayFactor(Char owner) {
if (owner instanceof Hero && ((Hero) owner).justMoved) return 0; if (owner instanceof Hero && ((Hero) owner).justMoved) return 0;
else return super.speedFactor(owner); else return super.delayFactor(owner);
} }
} }