v0.7.3: rebalanced warrior and subclasses:

- warrior's shield regen no longer scales with armor power
- berserker is now more easily able to maintain rage
- gladiator can now use thrown weapons in combos
- regular item use no longer resets gladiator's combo
- gladiator's slam ability now deals damage based on armor
This commit is contained in:
Evan Debenham 2019-05-10 14:52:04 -04:00
parent a0224f0ed0
commit bba0fea962
6 changed files with 26 additions and 23 deletions

View File

@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
import com.watabou.utils.GameMath;
public class Berserk extends Buff {
@ -97,7 +98,7 @@ public class Berserk extends Buff {
power = 0f;
}
} else if (state == State.NORMAL) {
power -= Math.max(0.1f, power) * 0.1f * Math.pow((target.HP/(float)target.HT), 2);
power -= GameMath.gate(0.1f, power, 1f) * 0.05f * Math.pow((target.HP/(float)target.HT), 2);
if (power <= 0){
detach();
@ -158,7 +159,7 @@ public class Berserk extends Buff {
public void tintIcon(Image icon) {
switch (state){
case NORMAL: default:
if (power < 0.5f) icon.hardlight(1f, 1f, 0.5f - (power));
if (power < 0.5f) icon.hardlight(1f, 1f, 1f - 2*(power));
else if (power < 1f) icon.hardlight(1f, 1.5f - power, 0f);
else icon.hardlight(1f, 0f, 0f);
break;

View File

@ -71,7 +71,7 @@ public class Combo extends Buff implements ActionIndicator.Action {
return Messages.get(this, "name");
}
public void hit() {
public void hit( Char enemy ) {
count++;
comboTime = 4f;
@ -89,7 +89,7 @@ public class Combo extends Buff implements ActionIndicator.Action {
}
public void miss(){
public void miss( Char enemy ){
misses++;
comboTime = 4f;
if (misses >= 2){
@ -218,15 +218,12 @@ public class Combo extends Buff implements ActionIndicator.Action {
dmg = Math.round(dmg*1.5f);
break;
case SLAM:
//rolls 2 times, takes the highest roll
int dmgReroll = target.damageRoll();
if (dmgReroll > dmg) dmg = dmgReroll;
dmg = Math.round(dmg*1.6f);
dmg += target.drRoll();
break;
case CRUSH:
//rolls 4 times, takes the highest roll
for (int i = 1; i < 4; i++) {
dmgReroll = target.damageRoll();
int dmgReroll = target.damageRoll();
if (dmgReroll > dmg) dmg = dmgReroll;
}
dmg = Math.round(dmg*2.5f);
@ -299,8 +296,8 @@ public class Combo extends Buff implements ActionIndicator.Action {
case CLEAVE:
if (!enemy.isAlive()) {
//combo isn't reset, but rather increments with a cleave kill, and grants more time.
hit();
comboTime = 10f;
hit( enemy );
comboTime = 12f;
} else {
detach();
ActionIndicator.clearAction(Combo.this);

View File

@ -307,11 +307,20 @@ public class Hero extends Char {
//temporarily set the hero's weapon to the missile weapon being used
KindOfWeapon equipped = belongings.weapon;
belongings.weapon = wep;
boolean result = attack( enemy );
boolean hit = attack( enemy );
Invisibility.dispel();
belongings.weapon = equipped;
return result;
if (subClass == HeroSubClass.GLADIATOR){
if (hit) {
Buff.affect( this, Combo.class ).hit( enemy );
} else {
Combo combo = buff(Combo.class);
if (combo != null) combo.miss( enemy );
}
}
return hit;
}
@Override
@ -1506,10 +1515,10 @@ public class Hero extends Char {
if (subClass == HeroSubClass.GLADIATOR){
if (hit) {
Buff.affect( this, Combo.class ).hit();
Buff.affect( this, Combo.class ).hit( enemy );
} else {
Combo combo = buff(Combo.class);
if (combo != null) combo.miss();
if (combo != null) combo.miss( enemy );
}
}

View File

@ -107,7 +107,7 @@ public class BrokenSeal extends Item {
@Override
public synchronized boolean act() {
if (shielding() < maxShield()) {
partialShield += 1/(35*Math.pow(0.9f, (maxShield() - shielding() - 1)));
partialShield += 1/30f;
}
while (partialShield >= 1){

View File

@ -27,7 +27,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Combo;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
@ -132,9 +131,6 @@ public class Item implements Bundlable {
curUser = hero;
curItem = this;
Combo combo = hero.buff(Combo.class);
if (combo != null) combo.detach();
if (action.equals( AC_DROP )) {
if (hero.belongings.backpack.contains(this) || isEquipped(hero)) {

View File

@ -110,13 +110,13 @@ actors.buffs.combo.clobber_prompt=Select a target to Clobber\nDazes and knocks b
actors.buffs.combo.clobber_desc=_Clobber_ is currently available. This attack _knocks an enemy back and dazes them,_ but deals reduced damage. It's excellent for buying a little time during a fight.
actors.buffs.combo.cleave_prompt=Select a target to Cleave\nIf it kills, preserves combo
actors.buffs.combo.cleave_desc=_Cleave_ is currently available. This attack deals increased damage, and _if it kills an enemy, it will preserve combo instead of resetting it._ It's great for building combo when fighting multiple enemies.
actors.buffs.combo.slam_prompt=Select a target to Slam\nShields you based on damage
actors.buffs.combo.slam_desc=_Slam_ is currently available. This attack deals increased damage, and _grants you shielding_ proportional to the damage you deal. It's great for finishing a fight, letting you carry over endurance to the next one.
actors.buffs.combo.slam_prompt=Select a target to Slam\nShields and damages based on armor
actors.buffs.combo.slam_desc=_Slam_ is currently available. This attack deals _increased damage and shields you based on the blocking power of your armor._ It's great for finishing a fight, letting you carry over endurance to the next one.
actors.buffs.combo.crush_prompt=Select a target to Crush\nDeals lots of damage
actors.buffs.combo.crush_desc=_Crush_ is currently available. This devastating attack _deals massive damage very consistently._ It's great for taking down a powerful opponent from high health!
actors.buffs.combo.fury_prompt=Unload fury on which enemy?\nAttacks many times rapidly
actors.buffs.combo.fury_desc=_Fury_ is currently available. This devastating attack _hits as many times as your current combo count,_ albeit at reduced damage. Fury is great if you have a weapon enchant, as the enchant will activate on each hit!
actors.buffs.combo.desc=The gladiator builds momentum as they land successful blows. Each blow increases the combo counter by one, but taking too long to attack, missing more than once, or using items will reset the combo counter to 0.\n\nBuilding combo unlocks special finisher abilities: powerful attacks that cannot miss! A different finisher is available at 2, 4, 6, 8, and 10 combo count, and using a finisher will reset your combo.
actors.buffs.combo.desc=The gladiator builds momentum as they land successful blows. Each attack increases the combo counter by one, but taking too long between attacks or missing twice in a row will reset the combo counter to 0.\n\nBuilding combo unlocks special finisher abilities: powerful attacks that cannot miss! A different finisher is available at 2, 4, 6, 8, and 10 combo count, and using a finisher will reset your combo.
actors.buffs.corruption.name=Corrupted
actors.buffs.corruption.desc=Corruption seeps into the essence of a being, twisting them against their former nature.\n\nCorrupted creatures will attack their allies, and ignore their former enemies. Corruption is damaging as well, and will slowly cause its target to succumb.\n\nCorruption is permanent, its effects only end in death.