From 52b46ae266a4ea936f1e323224009a033b565344 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 26 May 2021 19:11:46 -0400 Subject: [PATCH] v0.9.3: adjusted nature's power, now stacks additively with furor --- .../actors/hero/Hero.java | 4 +-- .../actors/mobs/Statue.java | 2 +- .../items/KindOfWeapon.java | 2 +- .../items/artifacts/DriedRose.java | 4 +-- .../items/rings/RingOfFuror.java | 4 +-- .../items/weapon/SpiritBow.java | 34 ++++++++++--------- .../items/weapon/Weapon.java | 20 +++++++---- .../items/weapon/missiles/MissileWeapon.java | 2 +- .../items/weapon/missiles/Shuriken.java | 4 +-- 9 files changed, 41 insertions(+), 35 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 029c235d4..e8f82dca2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -581,13 +581,13 @@ public class Hero extends Char { if (belongings.weapon != null) { - return belongings.weapon.speedFactor( this ); + return belongings.weapon.delayFactor( this ); } else { //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 //This is for that one guy, you shall get your fists of fury! - return RingOfFuror.attackDelayMultiplier(this); + return 1f/RingOfFuror.attackSpeedMultiplier(this); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java index 1ab6279e6..ae5336103 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java @@ -95,7 +95,7 @@ public class Statue extends Mob { @Override public float attackDelay() { - return super.attackDelay()*weapon.speedFactor( this ); + return super.attackDelay()*weapon.delayFactor( this ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java index a090e50e0..c15eab03d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java @@ -107,7 +107,7 @@ abstract public class KindOfWeapon extends EquipableItem { return 1f; } - public float speedFactor( Char owner ) { + public float delayFactor(Char owner ) { return 1f; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index e55c85b5d..315eedfbe 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -33,11 +33,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; 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.npcs.DirectableAlly; 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.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShaftParticle; @@ -567,7 +565,7 @@ public class DriedRose extends Artifact { public float attackDelay() { float delay = super.attackDelay(); if (rose != null && rose.weapon != null){ - delay *= rose.weapon.speedFactor(this); + delay *= rose.weapon.delayFactor(this); } return delay; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java index d4e037d0f..a9141f450 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfFuror.java @@ -46,8 +46,8 @@ public class RingOfFuror extends Ring { return new Furor(); } - public static float attackDelayMultiplier(Char target ){ - return 1f / (float)Math.pow(1.105, getBuffedBonus(target, Furor.class)); + public static float attackSpeedMultiplier(Char target ){ + return (float)Math.pow(1.105, getBuffedBonus(target, Furor.class)); } public class Furor extends RingBuff { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java index b6f75628f..7afc4258a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/SpiritBow.java @@ -238,29 +238,31 @@ public class SpiritBow extends Weapon { } @Override - public float speedFactor(Char owner) { + protected float baseDelay(Char owner) { if (sniperSpecial){ switch (augment){ case NONE: default: return 0f; case SPEED: - return 1f * RingOfFuror.attackDelayMultiplier(owner); + return 1f * RingOfFuror.attackSpeedMultiplier(owner); case DAMAGE: - return 2f * RingOfFuror.attackDelayMultiplier(owner); + return 2f * RingOfFuror.attackSpeedMultiplier(owner); } - } else { - - float speed = super.speedFactor(owner); - - if (owner.buff(NaturesPower.naturesPowerTracker.class) != null){ - // 1.33x speed to 1.5x speed, depending on talent points - speed /= ((32 + ((Hero)owner).pointsInTalent(Talent.GROWING_POWER)) / 24f); - } - - return speed; + } else{ + return super.baseDelay(owner); } } - + + @Override + protected float speedMultiplier(Char owner) { + float speed = super.speedMultiplier(owner); + if (owner.buff(NaturesPower.naturesPowerTracker.class) != null){ + // +33% speed to +50% speed, depending on talent points + speed += ((8 + ((Hero)owner).pointsInTalent(Talent.GROWING_POWER)) / 24f); + } + return speed; + } + @Override public int level() { return (Dungeon.hero == null ? 0 : Dungeon.hero.lvl/5) + (curseInfusionBonus ? 1 : 0); @@ -318,8 +320,8 @@ public class SpiritBow extends Weapon { } @Override - public float speedFactor(Char user) { - return SpiritBow.this.speedFactor(user); + public float delayFactor(Char user) { + return SpiritBow.this.delayFactor(user); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java index 82c42efb9..b3e32e39a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java @@ -181,18 +181,24 @@ abstract public class Weapon extends KindOfWeapon { } @Override - public float speedFactor( Char owner ) { + public float delayFactor( Char owner ) { + return baseDelay(owner) * (1f/speedMultiplier(owner)); + } - int encumbrance = 0; + protected float baseDelay( Char owner ){ + float delay = augment.delayFactor(this.DLY); if (owner instanceof Hero) { - encumbrance = STRReq() - ((Hero)owner).STR(); + int encumbrance = STRReq() - ((Hero)owner).STR(); + if (encumbrance > 0){ + delay *= Math.pow( 1.2, encumbrance ); + } } - float DLY = augment.delayFactor(this.DLY); + return delay; + } - DLY *= RingOfFuror.attackDelayMultiplier(owner); - - return (encumbrance > 0 ? (float)(DLY * Math.pow( 1.2, encumbrance )) : DLY); + protected float speedMultiplier(Char owner ){ + return RingOfFuror.attackSpeedMultiplier(owner); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index 89bd0f591..fcf172ffd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -235,7 +235,7 @@ abstract public class MissileWeapon extends Weapon { @Override public float castDelay(Char user, int dst) { - return speedFactor( user ); + return delayFactor( user ); } protected void rangedHit( Char enemy, int cell ){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java index 3ffe79356..5ed5c355d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Shuriken.java @@ -44,8 +44,8 @@ public class Shuriken extends MissileWeapon { } @Override - public float speedFactor(Char owner) { + public float delayFactor(Char owner) { if (owner instanceof Hero && ((Hero) owner).justMoved) return 0; - else return super.speedFactor(owner); + else return super.delayFactor(owner); } }