diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 45d882c9c..b4b2f1172 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -24,6 +24,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfForce; +import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfSharpshooting; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; import com.watabou.noosa.audio.Sample; @@ -255,10 +256,16 @@ public class Hero extends Char { @Override public int attackSkill( Char target ) { - if (belongings.weapon != null) { - return (int)(attackSkill * belongings.weapon.acuracyFactor( this )); - } else { - return (int)(attackSkill); + if (belongings.weapon != null && !usingRanged) { + return (int) (attackSkill * belongings.weapon.acuracyFactor(this)); + } else if (usingRanged){ + int bonus = 0; + for (Buff buff : buffs(RingOfSharpshooting.Aim.class)) { + bonus += ((RingOfSharpshooting.Aim)buff).level; + } + return (int)(attackSkill * Math.pow(1.1, bonus)); + } else { + return attackSkill; } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java index 464916c22..ca0f767f3 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfSharpshooting.java @@ -4,7 +4,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.rings; * Created by debenhame on 10/09/2014. */ public class RingOfSharpshooting extends Ring { - //TODO: tie this into game logic + //TODO: testing, numbers tweaking { name = "Ring of Sharpshooting"; } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java index e4da8522a..82f610be5 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfSharpshooting; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; @@ -63,6 +64,14 @@ public class IncendiaryDart extends MissileWeapon { } else { if (!curUser.shoot( enemy, this )) { Dungeon.level.drop( this, cell ).sprite.drop(); + //TODO: test this + } else { + int bonus = 0; + for (Buff buff : curUser.buffs(RingOfSharpshooting.Aim.class)) { + bonus += ((RingOfSharpshooting.Aim)buff).level; + } + if (Random.Float() > Math.pow(0.7, bonus)) + Dungeon.level.drop( this, cell ).sprite.drop(); } } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index 37662becd..67e7dac43 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -22,12 +22,15 @@ import java.util.ArrayList; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfSharpshooting; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; +import com.watabou.utils.Random; public class MissileWeapon extends Weapon { @@ -61,7 +64,15 @@ public class MissileWeapon extends Weapon { } else { if (!curUser.shoot( enemy, this )) { miss( cell ); - } + //TODO: test this + } else { + int bonus = 0; + for (Buff buff : curUser.buffs(RingOfSharpshooting.Aim.class)) { + bonus += ((RingOfSharpshooting.Aim)buff).level; + } + if (Random.Float() > Math.pow(0.7, bonus)) + Dungeon.level.drop( this, cell ).sprite.drop(); + } } }