v2.1.0: implemented simple buffs to many weapon abilities

This commit is contained in:
Evan Debenham
2023-05-10 13:21:31 -04:00
parent 300e827007
commit a0334915f8
17 changed files with 45 additions and 45 deletions

View File

@@ -1509,7 +1509,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 4 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 grants the Duelist 6 turns 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
@@ -1529,28 +1529,28 @@ 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 8 turns of invisibility, but costs 2 charges.
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.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 6 turns of invisibility, but costs 2 charges.
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.desc=A longer thrusting dagger, gives a bit more steel to plunge into foes.
items.weapon.melee.flail.name=flail
items.weapon.melee.flail.stats_desc=This is a rather inaccurate weapon.\nThis weapon cannot surprise attack.
items.weapon.melee.flail.ability_name=spin
items.weapon.melee.flail.spin_warn=You can't spin the flail any more.
items.weapon.melee.flail.ability_desc=The Duelist can _spin_ a flail to build up power for a short time. Each turn the flail is spun it will deal +33% damage, to a max of 3 times. At 3 spins the flail is also guaranteed to hit. Starting to spin the flail costs 2 charges.
items.weapon.melee.flail.ability_desc=The Duelist can _spin_ a flail to build up power for a short time. Each turn the flail is spun it will deal +33% damage, to a max of 3 times. A spinning flail is also guaranteed to hit. Starting to spin the flail costs 2 charges.
items.weapon.melee.flail.desc=A spiked ball attached to a handle by a length of chain. Very unwieldy, but devastating if it lands a solid hit.
items.weapon.melee.flail$spinabilitytracker.name=spinning
items.weapon.melee.flail$spinabilitytracker.desc=The Duelist is spinning her flail, building damage for her next attack with it. Each spin takes one turn but increases damage by 33%%. At 100%% bonus damage, the flail is also guaranteed to hit.\n\nCurrent bonus damage: %1$d%%.\nTurns remaining: %2$s.
items.weapon.melee.flail$spinabilitytracker.desc=The Duelist is spinning her flail, building damage for her next attack with it. Each spin takes one turn but increases damage by 33%%. The flail is also guaranteed to hit while spinning.\n\nCurrent bonus damage: %1$d%%.\nTurns remaining: %2$s.
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 deals +30% damage for each time the Duelist has already successfully attacked with melee or thrown weapons in the last 5 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 +35% damage for each time the Duelist has already successfully attacked with melee or thrown weapons 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
@@ -1562,20 +1562,20 @@ items.weapon.melee.glaive.desc=A massive polearm consisting of a sword blade on
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 deals +40% damage for each time the Duelist has already successfully attacked with melee or thrown weapons in the last 5 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 +45% damage for each time the Duelist has already successfully attacked with melee or thrown weapons 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 50% 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 +50% 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
items.weapon.melee.greatshield.typical_stats_desc=Typically this weapon blocks 0-%d damage. This blocking scales with upgrades.
items.weapon.melee.greatshield.stats_desc=This weapon blocks 0-%d damage. This blocking scales with upgrades.
items.weapon.melee.greatshield.ability_name=guard
items.weapon.melee.greatshield.ability_desc=The Duelist can _guard_ herself with a greatshield, completely negating the next physical or magical attack made against her within 4 turns.
items.weapon.melee.greatshield.ability_desc=The Duelist can _guard_ herself with a greatshield, completely negating the next physical or magical attack made against her within 6 turns.
items.weapon.melee.greatshield.desc=More like a mobile wall than a shield, this gigantic mass of metal aids defense, but doesn't leave much room for attacking.
items.weapon.melee.greatsword.name=greatsword
@@ -1648,10 +1648,10 @@ items.weapon.melee.shortsword.desc=A quite short sword, only a few inches longer
items.weapon.melee.quarterstaff.name=quarterstaff
items.weapon.melee.quarterstaff.stats_desc=This weapon blocks 0-2 damage.
items.weapon.melee.quarterstaff.ability_name=defensive stance
items.weapon.melee.quarterstaff.ability_desc=The Duelist can assume a _defensive stance_ with a quarterstaff. This stance doubles her evasion for 6 turns and takes no time to activate, but costs 2 charges.
items.weapon.melee.quarterstaff.ability_desc=The Duelist can assume a _defensive stance_ with a quarterstaff. This stance triples her evasion for 5 turns and takes no time to activate, but costs 2 charges.
items.weapon.melee.quarterstaff.desc=A staff of hardwood, its ends are shod with iron.
items.weapon.melee.quarterstaff$defensivestance.name=defensive stance
items.weapon.melee.quarterstaff$defensivestance.desc=The Duelist is using her quarterstaff to deflect incoming blows and projectiles. As long as she is in this stance, her evasion against all attacks is doubled.\n\nTurns remaining: %s.
items.weapon.melee.quarterstaff$defensivestance.desc=The Duelist is using her quarterstaff to deflect incoming blows and projectiles. As long as she is in this stance, her evasion against all attacks is tripled.\n\nTurns remaining: %s.
items.weapon.melee.rapier.name=rapier
items.weapon.melee.rapier.stats_desc=This weapon blocks 0-1 damage.
@@ -1663,7 +1663,7 @@ items.weapon.melee.roundshield.name=round shield
items.weapon.melee.roundshield.typical_stats_desc=Typically this weapon blocks 0-%d damage. This blocking scales with upgrades.
items.weapon.melee.roundshield.stats_desc=This weapon blocks 0-%d damage. This blocking scales with upgrades.
items.weapon.melee.roundshield.ability_name=guard
items.weapon.melee.roundshield.ability_desc=The Duelist can _guard_ herself with a round shield, completely negating the next physical or magical attack made against her within 5 turns.
items.weapon.melee.roundshield.ability_desc=The Duelist can _guard_ herself with a round shield, completely negating the next physical or magical attack made against her within 8 turns.
items.weapon.melee.roundshield.desc=This large shield effectively blocks attacks and makes a decent weapon in a pinch.
items.weapon.melee.roundshield$guardtracker.name=guarding
items.weapon.melee.roundshield$guardtracker.guarded=guarded
@@ -1672,13 +1672,13 @@ 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 +250% 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 +300% 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 deals +35% damage for each time the Duelist has already successfully attacked with melee or thrown weapons 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 +40% damage for each time the Duelist has already successfully attacked with melee or thrown weapons 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.sai$combostriketracker.name=combo strike
items.weapon.melee.sai$combostriketracker.desc=The duelist is building combo that can be used to increase the damage of the combo strike ability. Each strike made with a melee or thrown weapon in the last 5 turns will count.\n\nRecent hits: %d.
@@ -1686,10 +1686,10 @@ items.weapon.melee.sai$combostriketracker.desc=The duelist is building combo tha
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 -20% accuracy for 6 turns, takes no time to activate, and costs 2 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 +25% accuracy for 5 turns, takes no time to activate, and costs 2 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 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 -20%% accuracy.\n\nTurns remaining: %s.
items.weapon.melee.scimitar$sworddance.desc=The Duelist is making quick momentum based strikes in a sort of dance. While this stance is active, she attacks 60%% faster (enough to attack exactly twice a turn with a scimitar) and has +25%% accuracy.\n\nTurns remaining: %s.
items.weapon.melee.sickle.name=sickle
items.weapon.melee.sickle.stats_desc=This is a rather inaccurate weapon.
@@ -1700,7 +1700,7 @@ items.weapon.melee.sickle.desc=A handheld farming tool that can double as a stro
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 +40% damage, 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 +45% 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
@@ -1725,7 +1725,7 @@ items.weapon.melee.warscythe.desc=This large and unwieldy tool has been reinforc
items.weapon.melee.whip.name=whip
items.weapon.melee.whip.stats_desc=This weapon has tremendous reach.
items.weapon.melee.whip.ability_name=lash
items.weapon.melee.whip.ability_desc=The Duelist can _lash_ all enemies around her with a whip. This ability performs a normal attack against all enemies currently within attack range.
items.weapon.melee.whip.ability_desc=The Duelist can _lash_ all enemies around her with a whip. This ability performs a normal attack against all enemies within attack range and is guaranteed to hit the closest target.
items.weapon.melee.whip.desc=While the barbed length of rope at the end of this weapon deals poor damage, its reach cannot be matched.
items.weapon.melee.wornshortsword.name=worn shortsword

View File

@@ -480,7 +480,7 @@ public class Hero extends Char {
}
if (buff(Scimitar.SwordDance.class) != null){
accuracy *= 0.8f;
accuracy *= 1.25f;
}
if (!RingOfForce.fightingUnarmed(this)) {
@@ -517,7 +517,7 @@ public class Hero extends Char {
}
if (buff(Quarterstaff.DefensiveStance.class) != null){
evasion *= 2;
evasion *= 3;
}
if (paralysed > 0) {

View File

@@ -395,7 +395,7 @@ abstract public class Weapon extends KindOfWeapon {
}
if (attacker.buff(RunicBlade.RunicSlashTracker.class) != null){
multi += 2.5f;
multi += 3f;
attacker.buff(RunicBlade.RunicSlashTracker.class).detach();
}

View File

@@ -73,7 +73,7 @@ public class AssassinsBlade extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
Dagger.sneakAbility(hero, 4, this);
Dagger.sneakAbility(hero, 6, this);
}
}

View File

@@ -86,7 +86,7 @@ public class Dagger extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
sneakAbility(hero, 8, this);
sneakAbility(hero, 10, this);
}
public static void sneakAbility(Hero hero, int invisTurns, MeleeWeapon wep){

View File

@@ -73,7 +73,7 @@ public class Dirk extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
Dagger.sneakAbility(hero, 6, this);
Dagger.sneakAbility(hero, 8, this);
}
}

View File

@@ -59,7 +59,7 @@ public class Flail extends MeleeWeapon {
@Override
public int damageRoll(Char owner) {
int dmg = Math.round(super.damageRoll(owner) * spinBonus);
if (spinBonus == 2f) Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG);
if (spinBonus > 1f) Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG);
spinBonus = 1f;
return dmg;
}
@@ -68,7 +68,6 @@ public class Flail extends MeleeWeapon {
public float accuracyFactor(Char owner, Char target) {
SpinAbilityTracker spin = owner.buff(SpinAbilityTracker.class);
if (spin != null) {
//have to handle this in an actor tied to the regular attack =S
Actor.add(new Actor() {
{ actPriority = VFX_PRIO; }
@Override
@@ -80,14 +79,10 @@ public class Flail extends MeleeWeapon {
return true;
}
});
//we detach and calculate bonus here in case the attack misses
//we detach and calculate bonus here in case the attack misses (e.g. vs. monks)
spin.detach();
spinBonus = 1f + (spin.spins/3f);
if (spinBonus == 2f){
return Float.POSITIVE_INFINITY;
} else {
return super.accuracyFactor(owner, target);
}
return Float.POSITIVE_INFINITY;
} else {
spinBonus = 1f;
return super.accuracyFactor(owner, target);

View File

@@ -50,7 +50,7 @@ public class Gauntlet extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
Sai.comboStrikeAbility(hero, target, 0.30f, this);
Sai.comboStrikeAbility(hero, target, 0.35f, this);
}
}

View File

@@ -52,7 +52,7 @@ public class Gloves extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
Sai.comboStrikeAbility(hero, target, 0.40f, this);
Sai.comboStrikeAbility(hero, target, 0.45f, this);
}
}

View File

@@ -90,7 +90,7 @@ public class Greataxe extends MeleeWeapon {
public void call() {
beforeAbilityUsed(hero);
AttackIndicator.target(enemy);
if (hero.attack(enemy, 1.35f, 0, Char.INFINITE_ACCURACY)){
if (hero.attack(enemy, 1.50f, 0, Char.INFINITE_ACCURACY)){
Sample.INSTANCE.play(Assets.Sounds.HIT_STRONG);
if (!enemy.isAlive()){
onAbilityKill(hero, enemy);

View File

@@ -55,6 +55,6 @@ public class Greatshield extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
RoundShield.guardAbility(hero, 4, this);
RoundShield.guardAbility(hero, 6, this);
}
}

View File

@@ -58,7 +58,7 @@ public class Quarterstaff extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
beforeAbilityUsed(hero);
Buff.prolong(hero, DefensiveStance.class, 5f); //4 turns as using the ability is instant
Buff.prolong(hero, DefensiveStance.class, 4f); //4 turns as using the ability is instant
hero.sprite.operate(hero.pos);
hero.next();
afterAbilityUsed(hero);
@@ -78,7 +78,7 @@ public class Quarterstaff extends MeleeWeapon {
@Override
public float iconFadePercent() {
return Math.max(0, (6 - visualcooldown()) / 6);
return Math.max(0, (5 - visualcooldown()) / 5);
}
}

View File

@@ -62,7 +62,7 @@ public class RoundShield extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
RoundShield.guardAbility(hero, 5, this);
RoundShield.guardAbility(hero, 8, this);
}
public static void guardAbility(Hero hero, int duration, MeleeWeapon wep){
@@ -87,7 +87,7 @@ public class RoundShield extends MeleeWeapon {
@Override
public float iconFadePercent() {
return Math.max(0, (5 - visualcooldown()) / 5);
return Math.max(0, (7 - visualcooldown()) / 7);
}
}
}

View File

@@ -64,7 +64,7 @@ public class Sai extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
Sai.comboStrikeAbility(hero, target, 0.35f, this);
Sai.comboStrikeAbility(hero, target, 0.40f, this);
}
public static void comboStrikeAbility(Hero hero, Integer target, float boostPerHit, MeleeWeapon wep){

View File

@@ -53,7 +53,7 @@ public class Scimitar extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
beforeAbilityUsed(hero);
Buff.prolong(hero, SwordDance.class, 5f); //5 turns as using the ability is instant
Buff.prolong(hero, SwordDance.class, 4f); //4 turns as using the ability is instant
hero.sprite.operate(hero.pos);
hero.next();
afterAbilityUsed(hero);
@@ -73,7 +73,7 @@ public class Scimitar extends MeleeWeapon {
@Override
public float iconFadePercent() {
return Math.max(0, (6 - visualcooldown()) / 6);
return Math.max(0, (5 - visualcooldown()) / 5);
}
}

View File

@@ -61,7 +61,7 @@ public class Spear extends MeleeWeapon {
@Override
protected void duelistAbility(Hero hero, Integer target) {
Spear.spikeAbility(hero, target, 1.40f, this);
Spear.spikeAbility(hero, target, 1.45f, this);
}
public static void spikeAbility(Hero hero, Integer target, float dmgMulti, MeleeWeapon wep){

View File

@@ -56,6 +56,7 @@ public class Whip extends MeleeWeapon {
protected void duelistAbility(Hero hero, Integer target) {
ArrayList<Char> targets = new ArrayList<>();
Char closest = null;
hero.belongings.abilityWeapon = this;
for (Char ch : Actor.chars()){
@@ -64,6 +65,9 @@ public class Whip extends MeleeWeapon {
&& Dungeon.level.heroFOV[ch.pos]
&& hero.canAttack(ch)){
targets.add(ch);
if (closest == null || Dungeon.level.trueDistance(hero.pos, closest.pos) > Dungeon.level.trueDistance(hero.pos, ch.pos)){
closest = ch;
}
}
}
hero.belongings.abilityWeapon = null;
@@ -74,12 +78,13 @@ public class Whip extends MeleeWeapon {
}
throwSound();
Char finalClosest = closest;
hero.sprite.attack(hero.pos, new Callback() {
@Override
public void call() {
beforeAbilityUsed(hero);
for (Char ch : targets) {
hero.attack(ch);
hero.attack(ch, 0, 1, ch == finalClosest ? Char.INFINITE_ACCURACY : 1);
if (!ch.isAlive()){
onAbilityKill(hero, ch);
}