@Override public float acuracyFactor( Hero hero ) { int encumbrance = STR - hero.STR(); float ACU = this.ACU; if (this instanceof MissileWeapon) { switch (hero.heroClass) { case WARRIOR: encumbrance += 3; break; case HUNTRESS: encumbrance -= 2; break; default: } int bonus = 0; for (Buff buff : hero.buffs(RingOfSharpshooting.Aim.class)) { bonus += ((RingOfSharpshooting.Aim)buff).level; } ACU *= (float)(Math.pow(1.1, bonus)); } return encumbrance > 0 ? (float)(ACU / Math.pow( 1.5, encumbrance )) : ACU; }
@Override public float speedFactor( Hero hero ) { int encumrance = STR - hero.STR(); if (this instanceof MissileWeapon && hero.heroClass == HeroClass.HUNTRESS) { encumrance -= 2; } float DLY = this.DLY * (imbue == Imbue.LIGHT ? 0.667f : (imbue == Imbue.HEAVY ? 1.667f : 1.0f)); int bonus = 0; for (Buff buff : hero.buffs(RingOfFuror.Furor.class)) { bonus += ((RingOfFuror.Furor)buff).level; } DLY = (float)(0.25 + (DLY - 0.25)*Math.pow(0.8, bonus)); return (encumrance > 0 ? (float)(DLY * Math.pow( 1.2, encumrance )) : DLY); }