v2.2.0: various weapon balance changes:
- Sneak ability reworked, now blinks but only grants 1 turn of stealth - Harvest ability bleed amount increased to 110% and 90% from 100% and 80% - Katana blocking down to 0-3 from 0-4 - Brawler's Stance ability charge use down to 1/6 from 1/4
This commit is contained in:
@@ -914,10 +914,10 @@ items.rings.ringofforce.stats=When unarmed, at your current strength, this ring
|
||||
items.rings.ringofforce.typical_stats=When unarmed, at your current strength, typically this ring will deal _%1$d-%2$d damage._ With a weapon equipped, typically this ring will increase damage by _%3$d._
|
||||
items.rings.ringofforce.combined_stats=Your equipped rings are combining their power, dealing a total of _%1$d-%2$d damage_ without a weapon, or _+%3$d damage_ with one.
|
||||
items.rings.ringofforce.ability_name=brawler's stance
|
||||
items.rings.ringofforce.ability_desc=The Duelist can adopt a _brawler's stance_ with this ring. While in this stance the Duelist's regular attacks will use this ring even with a weapon equipped. The ring will also inherit the weapon's enchantment and augmentation. Each regular attack in this stance consumes 1/4 of a weapon charge.
|
||||
items.rings.ringofforce.ability_desc=The Duelist can adopt a _brawler's stance_ with this ring. While in this stance the Duelist's regular attacks will use this ring even with a weapon equipped. The ring will also inherit the weapon's enchantment and augmentation. Each regular attack in this stance consumes 1/6 of a weapon charge.
|
||||
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.desc=While in this stance the Duelist's regular attacks will use an equipped ring of force even when she has a weapon equipped. The attack will still use the weapon's augmentation and enchantment however.\n\nEach regular attack in this stance consumes 1/4 of a weapon charge. You currently have enough charge for %d attacks.\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. The attack will still use the weapon's augmentation and enchantment however.\n\nEach regular attack in this stance consumes 1/6 of a weapon charge. You currently have enough charge for %d attacks.\n\nThis stance can be toggled on or off by using a ring of force.
|
||||
|
||||
items.rings.ringoffuror.name=ring of furor
|
||||
items.rings.ringoffuror.stats=When worn, this ring will increase the speed of your attacks by _%s%%._
|
||||
@@ -1525,7 +1525,7 @@ items.weapon.enchantments.vampiric.elestrike_desc=An elemental strike with a vam
|
||||
items.weapon.melee.assassinsblade.name=assassin's blade
|
||||
items.weapon.melee.assassinsblade.stats_desc=This weapon is stronger against unaware enemies.
|
||||
items.weapon.melee.assassinsblade.ability_name=sneak
|
||||
items.weapon.melee.assassinsblade.ability_desc=The Duelist can _sneak_ while wielding an assassin's blade. This ability grants the Duelist 6 turns of invisibility, but costs 2 charges.
|
||||
items.weapon.melee.assassinsblade.ability_desc=The Duelist can _sneak_ while wielding an assassin's blade. This ability lets the Duelist blink up to 3 tiles away and grants her 1 turn of invisibility, but costs 2 charges.
|
||||
items.weapon.melee.assassinsblade.desc=A small wavy blade made of obsidian, difficult to use despite being lightweight, but deadly if it finds the right mark.
|
||||
|
||||
items.weapon.melee.battleaxe.name=battle axe
|
||||
@@ -1545,13 +1545,13 @@ items.weapon.melee.crossbow$chargedshot.desc=The Duelist is focusing power into
|
||||
items.weapon.melee.dagger.name=dagger
|
||||
items.weapon.melee.dagger.stats_desc=This weapon is stronger against unaware enemies.
|
||||
items.weapon.melee.dagger.ability_name=sneak
|
||||
items.weapon.melee.dagger.ability_desc=The Duelist can _sneak_ while wielding a dagger. This ability grants the Duelist 10 turns of invisibility, but costs 2 charges.
|
||||
items.weapon.melee.dagger.ability_desc=The Duelist can _sneak_ while wielding a dagger. This ability lets the Duelist blink up to 5 tiles away and grants her 1 turn of invisibility, but costs 2 charges.
|
||||
items.weapon.melee.dagger.desc=A simple iron dagger with a worn wooden handle.
|
||||
|
||||
items.weapon.melee.dirk.name=dirk
|
||||
items.weapon.melee.dirk.stats_desc=This weapon is stronger against unaware enemies.
|
||||
items.weapon.melee.dirk.ability_name=sneak
|
||||
items.weapon.melee.dirk.ability_desc=The Duelist can _sneak_ while wielding a dirk. This ability grants the Duelist 8 turns of invisibility, but costs 2 charges.
|
||||
items.weapon.melee.dirk.ability_desc=The Duelist can _sneak_ while wielding a dirk. This ability lets the Duelist blink up to 4 tiles away and grants her 1 turn of invisibility, but costs 2 charges.
|
||||
items.weapon.melee.dirk.desc=A longer thrusting dagger, gives a bit more steel to plunge into foes.
|
||||
|
||||
items.weapon.melee.flail.name=flail
|
||||
@@ -1711,7 +1711,7 @@ items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum
|
||||
items.weapon.melee.sickle.name=sickle
|
||||
items.weapon.melee.sickle.stats_desc=This is a rather inaccurate weapon.
|
||||
items.weapon.melee.sickle.ability_name=harvest
|
||||
items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack inflicts bleed equal to 100% of damage and is guaranteed to hit, but costs 2 charges.
|
||||
items.weapon.melee.sickle.ability_desc=The Duelist can _harvest_ an enemy with a sickle. This devastating attack inflicts bleed equal to 110% of damage and is guaranteed to hit, but costs 2 charges.
|
||||
items.weapon.melee.sickle.desc=A handheld farming tool that can double as a strong but unwieldy weapon.
|
||||
|
||||
items.weapon.melee.spear.name=spear
|
||||
@@ -1736,7 +1736,7 @@ items.weapon.melee.warhammer.desc=Few creatures can withstand the crushing blow
|
||||
items.weapon.melee.warscythe.name=war scythe
|
||||
items.weapon.melee.warscythe.stats_desc=This is a rather inaccurate weapon.
|
||||
items.weapon.melee.warscythe.ability_name=harvest
|
||||
items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack inflicts bleed equal to 80% of damage and is guaranteed to hit, but costs 2 charges.
|
||||
items.weapon.melee.warscythe.ability_desc=The Duelist can _harvest_ an enemy with a war scythe. This devastating attack inflicts bleed equal to 90% of damage and is guaranteed to hit, but costs 2 charges.
|
||||
items.weapon.melee.warscythe.desc=This large and unwieldy tool has been reinforced to make it better at cutting foes than crops.
|
||||
|
||||
items.weapon.melee.whip.name=whip
|
||||
|
||||
@@ -251,7 +251,7 @@ public class RingOfForce extends Ring {
|
||||
|
||||
public static class BrawlersStance extends Buff {
|
||||
|
||||
public static float HIT_CHARGE_USE = 0.25f;
|
||||
public static float HIT_CHARGE_USE = 1/6f;
|
||||
|
||||
{
|
||||
announced = true;
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
@@ -65,6 +66,15 @@ public class AssassinsBlade extends MeleeWeapon {
|
||||
return super.damageRoll(owner);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String targetingPrompt() {
|
||||
return Messages.get(this, "prompt");
|
||||
}
|
||||
|
||||
public boolean useTargeting(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int baseChargeUse(Hero hero, Char target){
|
||||
return 2;
|
||||
@@ -72,7 +82,7 @@ public class AssassinsBlade extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Dagger.sneakAbility(hero, 6, this);
|
||||
Dagger.sneakAbility(hero, target, 3, this);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,8 +31,13 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.watabou.utils.BArray;
|
||||
import com.watabou.utils.PathFinder;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Dagger extends MeleeWeapon {
|
||||
@@ -74,6 +79,15 @@ public class Dagger extends MeleeWeapon {
|
||||
return super.damageRoll(owner);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String targetingPrompt() {
|
||||
return Messages.get(this, "prompt");
|
||||
}
|
||||
|
||||
public boolean useTargeting(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int baseChargeUse(Hero hero, Char target){
|
||||
return 2;
|
||||
@@ -81,16 +95,40 @@ public class Dagger extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
sneakAbility(hero, 10, this);
|
||||
sneakAbility(hero, target, 5, this);
|
||||
}
|
||||
|
||||
public static void sneakAbility(Hero hero, int invisTurns, MeleeWeapon wep){
|
||||
public static void sneakAbility(Hero hero, Integer target, int maxDist, MeleeWeapon wep){
|
||||
if (target == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Actor.findChar(target) != null || !Dungeon.level.heroFOV[target]) {
|
||||
GLog.w(Messages.get(wep, "ability_bad_position"));
|
||||
return;
|
||||
}
|
||||
|
||||
PathFinder.buildDistanceMap(Dungeon.hero.pos, BArray.not(Dungeon.level.solid, null), maxDist);
|
||||
if (PathFinder.distance[target] == Integer.MAX_VALUE) {
|
||||
GLog.w(Messages.get(wep, "ability_bad_position"));
|
||||
return;
|
||||
}
|
||||
|
||||
wep.beforeAbilityUsed(hero, null);
|
||||
Buff.affect(hero, Invisibility.class, invisTurns);
|
||||
Buff.affect(hero, Invisibility.class, Actor.TICK);
|
||||
hero.spendAndNext(Actor.TICK);
|
||||
|
||||
Dungeon.hero.sprite.turnTo( Dungeon.hero.pos, target);
|
||||
Dungeon.hero.pos = target;
|
||||
Dungeon.level.occupyCell(Dungeon.hero);
|
||||
Dungeon.observe();
|
||||
GameScene.updateFog();
|
||||
Dungeon.hero.checkVisibleMobs();
|
||||
|
||||
Dungeon.hero.sprite.place( Dungeon.hero.pos );
|
||||
CellEmitter.get( Dungeon.hero.pos ).burst( Speck.factory( Speck.WOOL ), 6 );
|
||||
Sample.INSTANCE.play( Assets.Sounds.PUFF );
|
||||
|
||||
wep.afterAbilityUsed(hero);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
@@ -65,6 +66,15 @@ public class Dirk extends MeleeWeapon {
|
||||
return super.damageRoll(owner);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String targetingPrompt() {
|
||||
return Messages.get(this, "prompt");
|
||||
}
|
||||
|
||||
public boolean useTargeting(){
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int baseChargeUse(Hero hero, Char target){
|
||||
return 2;
|
||||
@@ -72,7 +82,7 @@ public class Dirk extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Dagger.sneakAbility(hero, 8, this);
|
||||
Dagger.sneakAbility(hero, target, 4, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public class Katana extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
public int defenseFactor( Char owner ) {
|
||||
return 4; //4 extra defence
|
||||
return 3; //3 extra defence
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -95,7 +95,7 @@ public class Sickle extends MeleeWeapon {
|
||||
AttackIndicator.target(enemy);
|
||||
|
||||
Buff.affect(enemy, HarvestBleedTracker.class, 0).bleedFactor = bleedFactor;
|
||||
if (hero.attack(enemy, 1, 0, Char.INFINITE_ACCURACY)){
|
||||
if (hero.attack(enemy, 1.1f, 0, Char.INFINITE_ACCURACY)){
|
||||
Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG);
|
||||
}
|
||||
|
||||
@@ -103,11 +103,6 @@ public class Sickle extends MeleeWeapon {
|
||||
hero.spendAndNext(hero.attackDelay());
|
||||
if (!enemy.isAlive()){
|
||||
wep.onAbilityKill(hero, enemy);
|
||||
Buff.prolong(hero, Sword.CleaveTracker.class, 5f);
|
||||
} else {
|
||||
if (hero.buff(Sword.CleaveTracker.class) != null) {
|
||||
hero.buff(Sword.CleaveTracker.class).detach();
|
||||
}
|
||||
}
|
||||
wep.afterAbilityUsed(hero);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public class WarScythe extends MeleeWeapon {
|
||||
|
||||
@Override
|
||||
protected void duelistAbility(Hero hero, Integer target) {
|
||||
Sickle.harvestAbility(hero, target, 0.8f, this);
|
||||
Sickle.harvestAbility(hero, target, 0.9f, this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user