v0.6.5: adjusted lucky glyph

This commit is contained in:
Evan Debenham 2018-04-23 21:14:41 -04:00 committed by Evan Debenham
parent 11c4979e7e
commit 2b66238608

View File

@ -22,9 +22,11 @@
package com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments; package com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing;
import com.watabou.utils.Bundle;
import com.watabou.utils.Random; import com.watabou.utils.Random;
public class Lucky extends Weapon.Enchantment { public class Lucky extends Weapon.Enchantment {
@ -35,9 +37,25 @@ 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() );
if (Random.Int(100) < (60 + level)){ float zeroChance = 0.5f;
Luck buff = attacker.buff(Luck.class);
if (buff != null){
zeroChance = buff.zeroChance;
}
if (Random.Float() >= zeroChance){
if (buff != null) {
buff.detach();
}
return 2*damage; return 2*damage;
} else { } else {
buff = Buff.affect(attacker, Luck.class);
buff.zeroChance = zeroChance * (0.5f - 0.001f*level);
return 0; return 0;
} }
@ -47,4 +65,40 @@ public class Lucky extends Weapon.Enchantment {
public Glowing glowing() { public Glowing glowing() {
return GREEN; return GREEN;
} }
public static class Luck extends Buff {
float zeroChance;
@Override
public boolean act() {
zeroChance += 0.01f;
if (zeroChance >= 0.5f){
detach();
} else {
spend(TICK);
}
return true;
}
private static final String CHANCE = "chance";
@Override
public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle);
zeroChance = bundle.getFloat(CHANCE);
}
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
bundle.put(CHANCE, zeroChance);
}
}
} }