v2.4.0: added a minimum duration to brawler's stance charge reduction
This commit is contained in:
@@ -959,7 +959,7 @@ items.rings.ringofforce.typical_ability_desc=The Duelist can adopt a _brawler's
|
|||||||
items.rings.ringofforce.ability_desc=The Duelist can adopt a _brawler's stance_ with this ring, causing her regular attacks to always use this ring even with a weapon equipped. These attacks will deal _%1$d-%2$d damage_ and will also inherit the weapon's enchantment and augmentation. This stance slows weapon recharging speed by 50%%.
|
items.rings.ringofforce.ability_desc=The Duelist can adopt a _brawler's stance_ with this ring, causing her regular attacks to always use this ring even with a weapon equipped. These attacks will deal _%1$d-%2$d damage_ and will also inherit the weapon's enchantment and augmentation. This stance slows weapon recharging speed by 50%%.
|
||||||
items.rings.ringofforce.desc=This ring enhances the force of the wearer's melee blows. This extra power is fairly weak when wielding weapons, but an unarmed attack will be made much stronger. A cursed ring will instead weaken the wearer's blows.
|
items.rings.ringofforce.desc=This ring enhances the force of the wearer's melee blows. This extra power is fairly weak when wielding weapons, but an unarmed attack will be made much stronger. A cursed ring will instead weaken the wearer's blows.
|
||||||
items.rings.ringofforce$brawlersstance.name=brawler's stance
|
items.rings.ringofforce$brawlersstance.name=brawler's stance
|
||||||
items.rings.ringofforce$brawlersstance.desc=While in this stance the Duelist's regular attacks will use an equipped ring of force even when she has a weapon equipped. These attacks gain bonus damage and will still use the weapon's augmentation and enchantment.\n\nMaintaining this stance takes focus however, reducing weapon ability recharge speed by 50%.\n\nThis stance can be toggled on or off by using a ring of force.
|
items.rings.ringofforce$brawlersstance.desc=While in this stance the Duelist's regular attacks will use an equipped ring of force even when she has a weapon equipped. These attacks gain bonus damage and will still use the weapon's augmentation and enchantment.\n\nMaintaining this stance takes focus however, reducing weapon ability recharge speed by 50%.\n\nThis stance can be toggled on or off by using a ring of force, but the reduction in charge speed will persist for a little while if the stance is quickly activated and deactivated.
|
||||||
|
|
||||||
items.rings.ringoffuror.name=ring of furor
|
items.rings.ringoffuror.name=ring of furor
|
||||||
items.rings.ringoffuror.stats=When worn, this ring will increase the speed of your attacks by _%s%%._
|
items.rings.ringoffuror.stats=When worn, this ring will increase the speed of your attacks by _%s%%._
|
||||||
|
|||||||
+2
-1
@@ -176,7 +176,8 @@ public class MonkEnergy extends Buff implements ActionIndicator.Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hero.belongings.weapon() instanceof MeleeWeapon
|
if (hero.belongings.weapon() instanceof MeleeWeapon
|
||||||
&& hero.buff(RingOfForce.BrawlersStance.class) == null){
|
&& (hero.buff(RingOfForce.BrawlersStance.class) == null
|
||||||
|
|| !hero.buff(RingOfForce.BrawlersStance.class).active)){
|
||||||
if (((MeleeWeapon) hero.belongings.weapon()).tier <= 1 && points >= 3){
|
if (((MeleeWeapon) hero.belongings.weapon()).tier <= 1 && points >= 3){
|
||||||
enGainMulti += 1.20f;
|
enGainMulti += 1.20f;
|
||||||
} else if (((MeleeWeapon) hero.belongings.weapon()).tier <= 2 && points >= 2){
|
} else if (((MeleeWeapon) hero.belongings.weapon()).tier <= 2 && points >= 2){
|
||||||
|
|||||||
+53
-9
@@ -33,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
import com.watabou.utils.Bundle;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@ public class RingOfForce extends Ring {
|
|||||||
if (super.doUnequip(hero, collect, single)){
|
if (super.doUnequip(hero, collect, single)){
|
||||||
if (hero.buff(BrawlersStance.class) != null && hero.buff(Force.class) == null){
|
if (hero.buff(BrawlersStance.class) != null && hero.buff(Force.class) == null){
|
||||||
//clear brawler's stance if no ring of force is equipped
|
//clear brawler's stance if no ring of force is equipped
|
||||||
hero.buff(BrawlersStance.class).detach();
|
hero.buff(BrawlersStance.class).active = false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -81,7 +82,8 @@ public class RingOfForce extends Ring {
|
|||||||
int level = getBuffedBonus(hero, Force.class);
|
int level = getBuffedBonus(hero, Force.class);
|
||||||
float tier = tier(hero.STR());
|
float tier = tier(hero.STR());
|
||||||
int dmg = Char.combatRoll(min(level, tier), max(level, tier));
|
int dmg = Char.combatRoll(min(level, tier), max(level, tier));
|
||||||
if (hero.buff(BrawlersStance.class) != null){
|
if (hero.buff(BrawlersStance.class) != null
|
||||||
|
&& hero.buff(BrawlersStance.class).active){
|
||||||
// 1+tier base dmg, roughly +35% dmg
|
// 1+tier base dmg, roughly +35% dmg
|
||||||
// lvl*((3+tier)/8) scaling, roughly +30% dmg
|
// lvl*((3+tier)/8) scaling, roughly +30% dmg
|
||||||
dmg += Math.round(1+tier+(level*((3+tier)/8f)));
|
dmg += Math.round(1+tier+(level*((3+tier)/8f)));
|
||||||
@@ -175,13 +177,17 @@ public class RingOfForce extends Ring {
|
|||||||
public void execute(Hero hero, String action) {
|
public void execute(Hero hero, String action) {
|
||||||
if (action.equals(AC_ABILITY)){
|
if (action.equals(AC_ABILITY)){
|
||||||
if (hero.buff(BrawlersStance.class) != null){
|
if (hero.buff(BrawlersStance.class) != null){
|
||||||
hero.buff(BrawlersStance.class).detach();
|
if (hero.buff(BrawlersStance.class).active){
|
||||||
|
hero.buff(BrawlersStance.class).reset();
|
||||||
|
} else {
|
||||||
|
hero.buff(BrawlersStance.class).active = false;
|
||||||
|
}
|
||||||
AttackIndicator.updateState();
|
AttackIndicator.updateState();
|
||||||
} else if (!isEquipped(hero)) {
|
} else if (!isEquipped(hero)) {
|
||||||
GLog.w(Messages.get(MeleeWeapon.class, "ability_need_equip"));
|
GLog.w(Messages.get(MeleeWeapon.class, "ability_need_equip"));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Buff.affect(hero, BrawlersStance.class);
|
Buff.affect(hero, BrawlersStance.class).reset();
|
||||||
AttackIndicator.updateState();
|
AttackIndicator.updateState();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -218,10 +224,10 @@ public class RingOfForce extends Ring {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
BrawlersStance stance = hero.buff(BrawlersStance.class);
|
BrawlersStance stance = hero.buff(BrawlersStance.class);
|
||||||
if (stance != null){
|
if (stance != null && stance.active){
|
||||||
//clear the buff if no ring of force is equipped
|
//clear the buff if no ring of force is equipped
|
||||||
if (hero.buff(RingOfForce.Force.class) == null){
|
if (hero.buff(RingOfForce.Force.class) == null){
|
||||||
stance.detach();
|
stance.active = false;
|
||||||
AttackIndicator.updateState();
|
AttackIndicator.updateState();
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@@ -239,7 +245,7 @@ public class RingOfForce extends Ring {
|
|||||||
return hero.buff(MonkEnergy.MonkAbility.FlurryEmpowerTracker.class) != null;
|
return hero.buff(MonkEnergy.MonkAbility.FlurryEmpowerTracker.class) != null;
|
||||||
}
|
}
|
||||||
BrawlersStance stance = hero.buff(BrawlersStance.class);
|
BrawlersStance stance = hero.buff(BrawlersStance.class);
|
||||||
if (stance != null){
|
if (stance != null && stance.active){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -251,7 +257,7 @@ public class RingOfForce extends Ring {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
BrawlersStance stance = hero.buff(BrawlersStance.class);
|
BrawlersStance stance = hero.buff(BrawlersStance.class);
|
||||||
if (stance != null){
|
if (stance != null && stance.active){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -264,9 +270,47 @@ public class RingOfForce extends Ring {
|
|||||||
type = buffType.POSITIVE;
|
type = buffType.POSITIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//buff must be active for at least 50 turns, to discourage micro-managing for max charges
|
||||||
|
public boolean active;
|
||||||
|
private int minTurnsLeft;
|
||||||
|
|
||||||
|
public void reset(){
|
||||||
|
active = true;
|
||||||
|
minTurnsLeft = 50;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int icon() {
|
public int icon() {
|
||||||
return BuffIndicator.DUEL_BRAWL;
|
return active ? BuffIndicator.DUEL_BRAWL : BuffIndicator.NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean act() {
|
||||||
|
minTurnsLeft --;
|
||||||
|
|
||||||
|
if (!active && minTurnsLeft <= 0){
|
||||||
|
detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
spend(TICK);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final String ACTIVE = "active";
|
||||||
|
public static final String MIN_TURNS_LEFT = "min_turns_left";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void storeInBundle(Bundle bundle) {
|
||||||
|
super.storeInBundle(bundle);
|
||||||
|
bundle.put(ACTIVE, active);
|
||||||
|
bundle.put(MIN_TURNS_LEFT, minTurnsLeft);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void restoreFromBundle(Bundle bundle) {
|
||||||
|
super.restoreFromBundle(bundle);
|
||||||
|
active = bundle.getBoolean(ACTIVE);
|
||||||
|
minTurnsLeft = bundle.getInt(MIN_TURNS_LEFT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -478,7 +478,7 @@ public class MeleeWeapon extends Weapon {
|
|||||||
chargeToGain *= 1.5f;
|
chargeToGain *= 1.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
//50% slower charge gain with brawler's stance enabled
|
//50% slower charge gain with brawler's stance enabled, even if buff is inactive
|
||||||
if (Dungeon.hero.buff(RingOfForce.BrawlersStance.class) != null){
|
if (Dungeon.hero.buff(RingOfForce.BrawlersStance.class) != null){
|
||||||
chargeToGain *= 0.50f;
|
chargeToGain *= 0.50f;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user