v0.7.2b: various enchantment buffs
This commit is contained in:
parent
c6e96b9b8e
commit
d716f3823c
|
@ -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 );
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user