v0.7.2b: various enchantment buffs

This commit is contained in:
Evan Debenham 2019-04-12 00:05:02 -04:00
parent c6e96b9b8e
commit d716f3823c
8 changed files with 27 additions and 22 deletions

View File

@ -44,10 +44,11 @@ public class Blazing extends Weapon.Enchantment {
if (Random.Int( level + 3 ) >= 2) { if (Random.Int( level + 3 ) >= 2) {
if (defender.buff(Burning.class) != null || Dungeon.level.flamable[defender.pos]){ if (defender.buff(Burning.class) != null){
Buff.affect(defender, Burning.class).reignite(defender, 8f); Buff.affect(defender, Burning.class).reignite(defender, 8f);
defender.damage( Random.NormalIntRange( 1, 3 ), this );
} else { } else {
Buff.affect(defender, Burning.class).reignite(defender, 4f); Buff.affect(defender, Burning.class).reignite(defender, 8f);
} }
defender.sprite.emitter().burst( FlameParticle.FACTORY, level + 1 ); defender.sprite.emitter().burst( FlameParticle.FACTORY, level + 1 );

View File

@ -41,7 +41,7 @@ public class Blocking extends Weapon.Enchantment {
int level = Math.max( 0, weapon.level() ); int level = Math.max( 0, weapon.level() );
Buff.prolong(attacker, BlockBuff.class, 1 + level/2).setBlocking(level + 1); Buff.prolong(attacker, BlockBuff.class, 2 + level/2).setBlocking(level + 1);
return damage; return damage;
} }

View File

@ -49,19 +49,24 @@ public class Blooming extends Weapon.Enchantment {
if (Random.Int( level + 3 ) >= 2) { if (Random.Int( level + 3 ) >= 2) {
if (!plantGrass(defender.pos)){ boolean secondPlant = level > Random.Int(20);
ArrayList<Integer> positions = new ArrayList<>(); if (plantGrass(defender.pos)){
for (int i : PathFinder.NEIGHBOURS8){ if (secondPlant) secondPlant = false;
positions.add(i); else return damage;
} }
Random.shuffle( positions );
for (int i : positions){ ArrayList<Integer> positions = new ArrayList<>();
if (plantGrass(defender.pos + i)){ for (int i : PathFinder.NEIGHBOURS8){
break; positions.add(i);
} }
Random.shuffle( positions );
for (int i : positions){
if (plantGrass(defender.pos + i)){
if (secondPlant) secondPlant = false;
else return damage;
} }
} }
} }
return damage; return damage;

View File

@ -42,8 +42,8 @@ public class Grim extends Weapon.Enchantment {
int enemyHealth = defender.HP - damage; int enemyHealth = defender.HP - damage;
if (enemyHealth <= 0) return damage; //no point in proccing if they're already dead. if (enemyHealth <= 0) return damage; //no point in proccing if they're already dead.
//scales from 0 - 40% based on how low hp the enemy is, plus 2% per level //scales from 0 - 50% based on how low hp the enemy is, plus 5% per level
float maxChance = 0.4f + .02f*level; float maxChance = 0.5f + .05f*level;
float chanceMulti = (float)Math.pow( ((defender.HT - enemyHealth) / (float)defender.HT), 2); float chanceMulti = (float)Math.pow( ((defender.HT - enemyHealth) / (float)defender.HT), 2);
float chance = maxChance * chanceMulti; float chance = maxChance * chanceMulti;

View File

@ -39,8 +39,8 @@ public class Lucky extends Weapon.Enchantment {
public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { public int proc( Weapon weapon, Char attacker, Char defender, int damage ) {
int level = Math.max( 0, weapon.level() ); int level = Math.max( 0, weapon.level() );
//5% chance, + 1% per weapon level //10% chance, + 1% per weapon level
if (defender.HP <= damage && Random.Float() < (0.05f + .01f*level)){ if (defender.HP <= damage && Random.Float() < (0.1f + .01f*level)){
Buff.affect(defender, LuckProc.class); Buff.affect(defender, LuckProc.class);
} }

View File

@ -50,7 +50,6 @@ public class Shocking extends Weapon.Enchantment {
affected.clear(); affected.clear();
arcs.clear(); arcs.clear();
arcs.add(new Lightning.Arc(attacker.sprite.center(), defender.sprite.center()));
arc(attacker, defender, 2); arc(attacker, defender, 2);
affected.remove(defender); //defender isn't hurt by lightning affected.remove(defender); //defender isn't hurt by lightning

View File

@ -45,7 +45,7 @@ public class Swift extends Weapon.Enchantment {
int level = Math.max( 0, weapon.level() ); int level = Math.max( 0, weapon.level() );
if (Random.Int( level + 8 ) >= 7) { if (Random.Int( level + 8 ) >= 7) {
Buff.prolong(attacker, SwiftAttack.class, 2).setSourceType(weapon instanceof MeleeWeapon); Buff.prolong(attacker, SwiftAttack.class, 5).setSourceType(weapon instanceof MeleeWeapon);
} }
return damage; return damage;

View File

@ -35,9 +35,9 @@ public class Vampiric extends Weapon.Enchantment {
@Override @Override
public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { public int proc( Weapon weapon, Char attacker, Char defender, int damage ) {
//heals for 0-10% of damage dealt, based on missing HP //heals for 2.5-15% of damage dealt, based on missing HP
float missingPercent = (attacker.HT - attacker.HP) / (float)attacker.HT; float missingPercent = (attacker.HT - attacker.HP) / (float)attacker.HT;
float healPercent = missingPercent * 0.1f; float healPercent = .025f + (missingPercent * 0.125f);
int healAmt = Math.round(healPercent * damage); int healAmt = Math.round(healPercent * damage);
healAmt = Math.min( healAmt, attacker.HT - attacker.HP ); healAmt = Math.min( healAmt, attacker.HT - attacker.HP );