v2.0.0: buffs to most weapon abilities based on early feedback and data
This commit is contained in:
@@ -1511,7 +1511,7 @@ items.weapon.melee.assassinsblade.desc=A small wavy blade made of obsidian, diff
|
||||
items.weapon.melee.battleaxe.name=battle axe
|
||||
items.weapon.melee.battleaxe.stats_desc=This is a rather accurate weapon.
|
||||
items.weapon.melee.battleaxe.ability_name=heavy blow
|
||||
items.weapon.melee.battleaxe.ability_desc=The Duelist can perform a _heavy blow_ with a battle axe. This strong but predictable attack has -75% accuracy, but deals +35% damage and applies vulnerable for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.battleaxe.ability_desc=The Duelist can perform a _heavy blow_ with a battle axe. This strong but predictable attack has -75% accuracy, but deals +40% damage and applies vulnerable and weaken for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.battleaxe.desc=The enormous steel head of this battle axe puts considerable heft behind each wide stroke.
|
||||
|
||||
items.weapon.melee.crossbow.name=crossbow
|
||||
@@ -1546,25 +1546,25 @@ items.weapon.melee.flail$spinabilitytracker.desc=The Duelist is spinning her fla
|
||||
items.weapon.melee.gauntlet.name=stone gauntlet
|
||||
items.weapon.melee.gauntlet.stats_desc=This is a very fast weapon.
|
||||
items.weapon.melee.gauntlet.ability_name=combo strike
|
||||
items.weapon.melee.gauntlet.ability_desc=The Duelist can perform a _combo strike_ with a stone gauntlet. This attack is guaranteed to hit and is instantaneous if the Duelist has already successfully attacked with melee or thrown weapons twice in the last 4 turns.
|
||||
items.weapon.melee.gauntlet.ability_desc=The Duelist can perform a _combo strike_ with a stone gauntlet. This attack is guaranteed to hit and deals +20% damage for each time the Duelist has already successfully attacked with melee or thrown weapons twice in the last 5 turns.
|
||||
items.weapon.melee.gauntlet.desc=This massive gauntlet is made of crimson fabric with heavy magical stone layered on top. The fabric tightens around you, making the thick stone plates almost like a second skin. Swinging such a heavy weapon requires strength, but adds tremendous force to your blows.
|
||||
|
||||
items.weapon.melee.glaive.name=glaive
|
||||
items.weapon.melee.glaive.stats_desc=This is a rather slow weapon.\nThis weapon has extra reach.
|
||||
items.weapon.melee.glaive.ability_name=spike
|
||||
items.weapon.melee.glaive.ability_desc=The Duelist can use the tip of a glaive to _spike_ an enemy that is in range but not adjacent. This deals -33% damage, but knocks the enemy back and is guaranteed to hit.
|
||||
items.weapon.melee.glaive.ability_desc=The Duelist can use the tip of a glaive to _spike_ an enemy that is in range but not adjacent. This deals +10% damage, knocks the enemy back, and is guaranteed to hit.
|
||||
items.weapon.melee.glaive.desc=A massive polearm consisting of a sword blade on the end of a pole.
|
||||
|
||||
items.weapon.melee.gloves.name=studded gloves
|
||||
items.weapon.melee.gloves.stats_desc=This is a very fast weapon.
|
||||
items.weapon.melee.gloves.ability_name=combo strike
|
||||
items.weapon.melee.gloves.ability_desc=The Duelist can perform a _combo strike_ with studded gloves. This attack is guaranteed to hit and is instantaneous if the Duelist has already successfully attacked with melee or thrown weapons twice in the last 6 turns.
|
||||
items.weapon.melee.gloves.ability_desc=The Duelist can perform a _combo strike_ with studded gloves. This attack is guaranteed to hit and deals +30% damage for each time the Duelist has already successfully attacked with melee or thrown weapons twice in the last 5 turns.
|
||||
items.weapon.melee.gloves.desc=These studded gloves don't provide any real protection, but they act as a serviceable weapon while keeping the hands free.
|
||||
|
||||
items.weapon.melee.greataxe.name=greataxe
|
||||
items.weapon.melee.greataxe.stats_desc=This weapon is incredibly heavy.
|
||||
items.weapon.melee.greataxe.ability_name=retribution
|
||||
items.weapon.melee.greataxe.ability_desc=The Duelist can perform a _retribution_ attack with a greataxe if she is below 33% health. This devastating attack is guaranteed to hit and deals +35% damage.
|
||||
items.weapon.melee.greataxe.ability_desc=The Duelist can perform a _retribution_ attack with a greataxe if she is below 50% health. This devastating attack is guaranteed to hit and deals +35% damage.
|
||||
items.weapon.melee.greataxe.desc=Meant to be wielded over the shoulder, this titanic axe is as powerful as it is heavy.
|
||||
|
||||
items.weapon.melee.greatshield.name=greatshield
|
||||
@@ -1582,7 +1582,7 @@ items.weapon.melee.greatsword.desc=This towering blade inflicts heavy damage by
|
||||
items.weapon.melee.handaxe.name=hand axe
|
||||
items.weapon.melee.handaxe.stats_desc=This is a rather accurate weapon.
|
||||
items.weapon.melee.handaxe.ability_name=heavy blow
|
||||
items.weapon.melee.handaxe.ability_desc=The Duelist can perform a _heavy blow_ with a hand axe. This strong but predictable attack has -75% accuracy, but deals +45% damage and applies vulnerable for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.handaxe.ability_desc=The Duelist can perform a _heavy blow_ with a hand axe. This strong but predictable attack has -75% accuracy, but deals +50% damage and applies vulnerable and weaken for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.handaxe.desc=A light axe, most commonly used for felling trees. The wide blade works well against foes as well.
|
||||
|
||||
items.weapon.melee.knuckles.name=knuckleduster
|
||||
@@ -1597,7 +1597,7 @@ items.weapon.melee.longsword.desc=This sword's long razor-sharp steel blade shin
|
||||
items.weapon.melee.mace.name=mace
|
||||
items.weapon.melee.mace.stats_desc=This is a rather accurate weapon.
|
||||
items.weapon.melee.mace.ability_name=heavy blow
|
||||
items.weapon.melee.mace.ability_desc=The Duelist can perform a _heavy blow_ with a mace. This strong but predictable attack has -75% accuracy, but deals +40% damage and applies vulnerable for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.mace.ability_desc=The Duelist can perform a _heavy blow_ with a mace. This strong but predictable attack has -75% accuracy, but deals +45% damage and applies vulnerable and weaken for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.mace.desc=The large iron head of this weapon inflicts substantial damage.
|
||||
|
||||
items.weapon.melee.magesstaff.name=mage's staff
|
||||
@@ -1667,19 +1667,19 @@ items.weapon.melee.roundshield$guardtracker.desc=The Duelist has readied her shi
|
||||
items.weapon.melee.runicblade.name=runic blade
|
||||
items.weapon.melee.runicblade.stats_desc=This weapon benefits more from upgrades.
|
||||
items.weapon.melee.runicblade.ability_name=runic slash
|
||||
items.weapon.melee.runicblade.ability_desc=The Duelist can perform a _runic slash_ with a runic blade. This attack is guaranteed to hit and has +200% enchantment power.
|
||||
items.weapon.melee.runicblade.ability_desc=The Duelist can perform a _runic slash_ with a runic blade. This attack is guaranteed to hit and has +250% enchantment power.
|
||||
items.weapon.melee.runicblade.desc=A mysterious weapon from a distant land, with a bright blue blade.
|
||||
|
||||
items.weapon.melee.sai.name=sai
|
||||
items.weapon.melee.sai.stats_desc=This is a very fast weapon.
|
||||
items.weapon.melee.sai.ability_name=combo strike
|
||||
items.weapon.melee.sai.ability_desc=The Duelist can perform a _combo strike_ with sai. This attack is guaranteed to hit and is instantaneous if the Duelist has already successfully attacked with melee or thrown weapons twice in the last 5 turns.
|
||||
items.weapon.melee.sai.ability_desc=The Duelist can perform a _combo strike_ with sai. This attack is guaranteed to hit and deals +25% damage for each time the Duelist has already successfully attacked with melee or thrown weapons twice in the last 5 turns.
|
||||
items.weapon.melee.sai.desc=Two thin blades meant to be wielded in one hand each. Excellent for tearing down enemies with a flurry of cuts.
|
||||
|
||||
items.weapon.melee.scimitar.name=scimitar
|
||||
items.weapon.melee.scimitar.stats_desc=This is a rather fast weapon.
|
||||
items.weapon.melee.scimitar.ability_name=sword dance
|
||||
items.weapon.melee.scimitar.ability_desc=The Duelist can perform a _sword dance_ with a scimitar. This stance grants the Duelist +60% attack speed and -33% accuracy for 6 turns, takes no time to activate, and costs two charges.
|
||||
items.weapon.melee.scimitar.ability_desc=The Duelist can perform a _sword dance_ with a scimitar. This stance grants the Duelist +60% attack speed and -20% accuracy for 6 turns, takes no time to activate, and costs two charges.
|
||||
items.weapon.melee.scimitar.desc=A thick curved blade. Its shape allows for faster, yet less powerful attacks.
|
||||
items.weapon.melee.scimitar$sworddance.name=sword dance
|
||||
items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum based strikes with her weapon, in a sort of dance. While this stance is active, she attacks 60%% faster (enough to attack exactly twice a turn with a scimitar), but suffers -33%% accuracy.\n\nTurns remaining: %s.
|
||||
@@ -1687,7 +1687,7 @@ items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum
|
||||
items.weapon.melee.spear.name=spear
|
||||
items.weapon.melee.spear.stats_desc=This is a rather slow weapon.\nThis weapon has extra reach.
|
||||
items.weapon.melee.spear.ability_name=spike
|
||||
items.weapon.melee.spear.ability_desc=The Duelist can use the tip of a spear to _spike_ an enemy that is in range but not adjacent. This deals -25% damage, but knocks the enemy back and is guaranteed to hit.
|
||||
items.weapon.melee.spear.ability_desc=The Duelist can use the tip of a spear to _spike_ an enemy that is in range but not adjacent. This deals +15% damage, knocks the enemy back, and is guaranteed to hit.
|
||||
items.weapon.melee.spear.desc=A slender wooden rod tipped with sharpened iron.
|
||||
|
||||
items.weapon.melee.sword.name=sword
|
||||
@@ -1700,7 +1700,7 @@ items.weapon.melee.sword$cleavetracker.desc=The Duelist is ready to follow up on
|
||||
items.weapon.melee.warhammer.name=war hammer
|
||||
items.weapon.melee.warhammer.stats_desc=This is a rather accurate weapon.
|
||||
items.weapon.melee.warhammer.ability_name=heavy blow
|
||||
items.weapon.melee.warhammer.ability_desc=The Duelist can perform a _heavy blow_ with a war hammer. This strong but predictable attack has -75% accuracy, but deals +30% damage and applies vulnerable for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.warhammer.ability_desc=The Duelist can perform a _heavy blow_ with a war hammer. This strong but predictable attack has -75% accuracy, but deals +35% damage and applies vulnerable and weaken for 5 turns if it hits. Heavy blow can surprise attack.
|
||||
items.weapon.melee.warhammer.desc=Few creatures can withstand the crushing blow of this towering mass of lead and steel, but it takes great strength to use effectively.
|
||||
|
||||
items.weapon.melee.whip.name=whip
|
||||
|
||||
@@ -187,7 +187,7 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
}
|
||||
|
||||
if (owner.buff(Scimitar.SwordDance.class) != null){
|
||||
ACC *= 0.67f;
|
||||
ACC *= 0.8f;
|
||||
}
|
||||
|
||||
return encumbrance > 0 ? (float)(ACC / Math.pow( 1.5, encumbrance )) : ACC;
|
||||
@@ -392,7 +392,7 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
}
|
||||
|
||||
if (attacker.buff(RunicBlade.RunicSlashTracker.class) != null){
|
||||
multi += 2f;
|
||||
multi += 2.5f;
|
||||
attacker.buff(RunicBlade.RunicSlashTracker.class).detach();
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ public class BattleAxe extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Mace.heavyBlowAbility(hero, target, 1.35f, this);
|
||||
Mace.heavyBlowAbility(hero, target, 1.40f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Gauntlet extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Sai.comboStrikeAbility(hero, target, 4, this);
|
||||
Sai.comboStrikeAbility(hero, target, 0.20f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class Glaive extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Spear.spikeAbility(hero, target, 0.67f, this);
|
||||
Spear.spikeAbility(hero, target, 1.10f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class Gloves extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Sai.comboStrikeAbility(hero, target, 6, this);
|
||||
Sai.comboStrikeAbility(hero, target, 0.30f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public class Greataxe extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
if (hero.HP / (float)hero.HT > 0.33f){
|
||||
if (hero.HP / (float)hero.HT >= 0.5f){
|
||||
GLog.w(Messages.get(this, "ability_cant_use"));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class HandAxe extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Mace.heavyBlowAbility(hero, target, 1.45f, this);
|
||||
Mace.heavyBlowAbility(hero, target, 1.50f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
@@ -60,7 +61,7 @@ public class Mace extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Mace.heavyBlowAbility(hero, target, 1.40f, this);
|
||||
Mace.heavyBlowAbility(hero, target, 1.45f, this);
|
||||
}
|
||||
|
||||
public static void heavyBlowAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){
|
||||
@@ -91,6 +92,7 @@ public class Mace extends MeleeWeapon {
|
||||
Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG);
|
||||
if (enemy.isAlive()){
|
||||
Buff.affect(enemy, Vulnerable.class, 5f);
|
||||
Buff.affect(enemy, Weakness.class, 5f);
|
||||
} else {
|
||||
wep.onAbilityKill(hero);
|
||||
}
|
||||
|
||||
@@ -398,7 +398,7 @@ public class MeleeWeapon extends Weapon {
|
||||
LockedFloor lock = target.buff(LockedFloor.class);
|
||||
if (charges < chargeCap()){
|
||||
if (lock == null || lock.regenOn()){
|
||||
partialCharge += 1/(50f-(chargeCap()-charges)); // 50 to 40 turns per charge
|
||||
partialCharge += 1/(45f-1.5f*(chargeCap()-charges)); // 45 to 30 turns per charge
|
||||
}
|
||||
|
||||
int points = ((Hero)target).pointsInTalent(Talent.WEAPON_RECHARGING);
|
||||
@@ -419,9 +419,9 @@ public class MeleeWeapon extends Weapon {
|
||||
if (Dungeon.hero.subClass == HeroSubClass.CHAMPION
|
||||
&& secondCharges < secondChargeCap()) {
|
||||
if (lock == null || lock.regenOn()) {
|
||||
// 100 to 80 turns per charge without talent
|
||||
// up to 75 to 67 turns per charge at max talent level
|
||||
secondPartialCharge += secondChargeMultiplier() / (50f-(secondChargeCap()-secondCharges));
|
||||
// 90 to 60 turns per charge without talent
|
||||
// up to 60 to 40 turns per charge at max talent level
|
||||
secondPartialCharge += secondChargeMultiplier() / (45f-2.5f*(secondChargeCap()-secondCharges));
|
||||
}
|
||||
|
||||
if (secondPartialCharge >= 1) {
|
||||
|
||||
@@ -62,10 +62,10 @@ public class Sai extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Sai.comboStrikeAbility(hero, target, 5, this);
|
||||
Sai.comboStrikeAbility(hero, target, 0.25f, this);
|
||||
}
|
||||
|
||||
public static void comboStrikeAbility(Hero hero, Integer target, int comboTime, MeleeWeapon wep){
|
||||
public static void comboStrikeAbility(Hero hero, Integer target, float boostPerHit, MeleeWeapon wep){
|
||||
if (target == null) {
|
||||
return;
|
||||
}
|
||||
@@ -89,29 +89,23 @@ public class Sai extends MeleeWeapon {
|
||||
public void call() {
|
||||
wep.beforeAbilityUsed(hero);
|
||||
AttackIndicator.target(enemy);
|
||||
boolean hit = hero.attack(enemy, 1, 0, Char.INFINITE_ACCURACY);
|
||||
|
||||
HashSet<ComboStrikeTracker> buffs = hero.buffs(ComboStrikeTracker.class);
|
||||
int recentHits = buffs.size();
|
||||
for (Buff b : buffs){
|
||||
b.detach();
|
||||
}
|
||||
|
||||
boolean hit = hero.attack(enemy, 1f + boostPerHit*recentHits, 0, Char.INFINITE_ACCURACY);
|
||||
if (hit && !enemy.isAlive()){
|
||||
wep.onAbilityKill(hero);
|
||||
}
|
||||
|
||||
HashSet<ComboStrikeTracker> buffs = hero.buffs(ComboStrikeTracker.class);
|
||||
int recentHits = 0;
|
||||
for (Buff b : buffs){
|
||||
if (b.cooldown() >= (ComboStrikeTracker.DURATION - comboTime)){
|
||||
recentHits++;
|
||||
}
|
||||
}
|
||||
|
||||
Invisibility.dispel();
|
||||
if (recentHits >= 2 && hit){
|
||||
for (Buff b : buffs){
|
||||
b.detach();
|
||||
}
|
||||
Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG);
|
||||
hero.next();
|
||||
} else {
|
||||
hero.spendAndNext(hero.attackDelay());
|
||||
}
|
||||
|
||||
wep.afterAbilityUsed(hero);
|
||||
}
|
||||
});
|
||||
@@ -119,7 +113,7 @@ public class Sai extends MeleeWeapon {
|
||||
|
||||
public static class ComboStrikeTracker extends FlavourBuff{
|
||||
|
||||
public static float DURATION = 6f;
|
||||
public static float DURATION = 5f;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ public class Spear extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Spear.spikeAbility(hero, target, 0.75f, this);
|
||||
Spear.spikeAbility(hero, target, 1.15f, this);
|
||||
}
|
||||
|
||||
public static void spikeAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){
|
||||
|
||||
@@ -50,7 +50,7 @@ public class WarHammer extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Mace.heavyBlowAbility(hero, target, 1.30f, this);
|
||||
Mace.heavyBlowAbility(hero, target, 1.35f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -180,9 +180,9 @@ public abstract class TippedDart extends Dart {
|
||||
}
|
||||
use *= (1f - lotusPreserve);
|
||||
|
||||
//grants 1 extra use with charged shot
|
||||
//grants 2 extra uses with charged shot
|
||||
if (Dungeon.hero.buff(Crossbow.ChargedShot.class) != null){
|
||||
use = 100f/((100f/use) + 1f) + 0.001f;
|
||||
use = 100f/((100f/use) + 2f) + 0.001f;
|
||||
}
|
||||
|
||||
return use;
|
||||
|
||||
Reference in New Issue
Block a user