public int spentUpgrades() { return super.level(); }
public int spentUpgrades() { return super.level(); }
public abstract int STRReq(int lvl);
public Guardian(){ super(); weapon.enchant(null); weapon.degrade(weapon.level()); }
public Guardian(){ super(); weapon.enchant(null); weapon.degrade(weapon.level()); }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { int level = Math.max( 0, weapon.level() ); // lvl 0 - 16% // lvl 1 - 17.65% // lvl 2 - 19.23% int maxValue = Math.round(damage * ((level + 8) / (float)(level + 50))); int effValue = Math.min( Random.IntRange( 0, maxValue ), attacker.HT - attacker.HP ); if (effValue > 0) { attacker.HP += effValue; attacker.sprite.emitter().start( Speck.factory( Speck.HEALING ), 0.4f, 1 ); attacker.sprite.showStatus( CharSprite.POSITIVE, Integer.toString( effValue ) ); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 33% // lvl 1 - 50% // lvl 2 - 60% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 3 ) >= 2) { Buff.affect( defender, Poison.class ).extend( ((level/2) + 1) ); CellEmitter.center(defender.pos).burst( PoisonParticle.SPLASH, 5 ); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 5 ) >= 4) { if (defender == Dungeon.hero) { Buff.affect( defender, Vertigo.class, Vertigo.DURATION ); } else { //damage will reduce by 5 turns, so effectively 10 turns of terror Buff.affect( defender, Terror.class, 10f + 5f ).object = attacker.id(); } } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 5 ) >= 4) { //FIXME this should probably stack chilled Buff.prolong( defender, Chill.class, Random.Float( 2f, 3f ) ); Splash.at( defender.sprite.center(), 0xFFB2D6FF, 5); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 33% // lvl 1 - 50% // lvl 2 - 60% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 3 ) >= 2) { Buff.affect( defender, Poison.class ).extend( ((level/2) + 1) ); CellEmitter.center(defender.pos).burst( PoisonParticle.SPLASH, 5 ); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 5 ) >= 4) { //FIXME this should probably stack chilled Buff.prolong( defender, Chill.class, Random.Float( 2f, 3f ) ); Splash.at( defender.sprite.center(), 0xFFB2D6FF, 5); } return damage; }
public Item upgrade(boolean enchant ) { if (enchant && (enchantment == null || enchantment.curse())){ enchant( Enchantment.random() ); } else if (!enchant && Random.Float() > Math.pow(0.9, level())){ enchant(null); } cursed = false; return super.upgrade(); }
public Item upgrade(boolean enchant ) { if (enchant && (enchantment == null || enchantment.curse())){ enchant( Enchantment.random() ); } else if (!enchant && Random.Float() > Math.pow(0.9, level())){ enchant(null); } cursed = false; return super.upgrade(); }
@Override public int proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 0 - 33% // lvl 1 - 50% // lvl 2 - 60% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 3 ) >= 2) { Buff.affect(defender, Bleeding.class).set(damage/5f); Splash.at( defender.sprite.center(), -PointF.PI / 2, PointF.PI / 6, defender.sprite.blood(), 10 ); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 13% // lvl 1 - 22% // lvl 2 - 30% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 8 ) >= 7) { Buff.prolong( defender, Paralysis.class, Random.Float( 1, 1.5f + level ) ); defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 12 ); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 13% // lvl 1 - 22% // lvl 2 - 30% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 8 ) >= 7) { Buff.prolong( defender, Paralysis.class, Random.Float( 1, 1.5f + level ) ); defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 12 ); } return damage; }
@Override public int proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 0 - 33% // lvl 1 - 50% // lvl 2 - 60% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 3 ) >= 2) { Buff.affect(defender, Bleeding.class).set(damage/5f); Splash.at( defender.sprite.center(), -PointF.PI / 2, PointF.PI / 6, defender.sprite.blood(), 10 ); } return damage; }
@Override public int proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 5 ) >= 4) { Buff.prolong( defender, Blindness.class, Random.Float( 1f, 1f + level ) ); Buff.prolong( defender, Cripple.class, Random.Float( 1f, 1f + level/2f ) ); defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 6 ); } return damage; }
@Override public int proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 5 ) >= 4) { Buff.prolong( defender, Blindness.class, Random.Float( 1f, 1f + level ) ); Buff.prolong( defender, Cripple.class, Random.Float( 1f, 1f + level/2f ) ); defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 6 ); } return damage; }
@Override public int proc( Weapon weapon, Char attacker, Char defender, int damage ) { // lvl 0 - 33% // lvl 1 - 50% // lvl 2 - 60% int level = Math.max( 0, weapon.level() ); if (Random.Int( level + 3 ) >= 2) { if (Random.Int( 2 ) == 0) { Buff.affect( defender, Burning.class ).reignite( defender ); } defender.damage( Random.Int( 1, level + 2 ), this ); defender.sprite.emitter().burst( FlameParticle.FACTORY, level + 1 ); } return damage; }