v0.4.0: rebalanced ring of force around new equipment
also some refactoring to it
This commit is contained in:
parent
ffe9b6d80a
commit
256cca2e7e
|
@ -319,7 +319,7 @@ public class Hero extends Char {
|
||||||
dmg = wep.damageRoll( this ) + bonus;
|
dmg = wep.damageRoll( this ) + bonus;
|
||||||
} else {
|
} else {
|
||||||
if (bonus != 0){
|
if (bonus != 0){
|
||||||
dmg = Random.NormalIntRange( RingOfForce.min(bonus, STR()), RingOfForce.max(bonus, STR()) );
|
dmg = RingOfForce.damageRoll(this);
|
||||||
} else {
|
} else {
|
||||||
dmg = Random.NormalIntRange(1, Math.max(STR()-8, 1));
|
dmg = Random.NormalIntRange(1, Math.max(STR()-8, 1));
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,10 @@
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.rings;
|
package com.shatteredpixel.shatteredpixeldungeon.items.rings;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
public class RingOfForce extends Ring {
|
public class RingOfForce extends Ring {
|
||||||
|
|
||||||
|
@ -30,26 +33,43 @@ public class RingOfForce extends Ring {
|
||||||
return new Force();
|
return new Force();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int min(int bonus, int herostr){
|
private static float tier(int str){
|
||||||
if (bonus < 0) return 0;
|
return Math.max(1, (str - 8)/2f);
|
||||||
int STR = herostr-8;
|
|
||||||
return Math.max(STR/2+bonus, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int max(int bonus, int herostr){
|
public static int damageRoll( Hero hero ){
|
||||||
if (bonus < 0) return 0;
|
int level = 0;
|
||||||
int STR = herostr-8;
|
for (Buff buff : hero.buffs( RingOfForce.Force.class )) {
|
||||||
return Math.max((int)(STR*0.5f*bonus) + STR*2, bonus);
|
level += ((RingOfForce.Force)buff).level;
|
||||||
|
}
|
||||||
|
float tier = tier(hero.STR());
|
||||||
|
return Random.NormalIntRange(min(level, tier), max(level, tier));
|
||||||
|
}
|
||||||
|
|
||||||
|
//same as equivalent tier weapon
|
||||||
|
private static int min(int lvl, float tier){
|
||||||
|
return Math.round(
|
||||||
|
tier + //base
|
||||||
|
lvl //level scaling
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//20% reduced from equivalent tier weapon
|
||||||
|
private static int max(int lvl, float tier){
|
||||||
|
return Math.round(
|
||||||
|
4*(tier+1) + //base, 20% reduced from equivalent tier
|
||||||
|
lvl*(tier) //level scaling, 1 reduced from equivalent tier
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = super.desc();
|
String desc = super.desc();
|
||||||
int str = Dungeon.hero.STR();
|
float tier = tier(Dungeon.hero.STR());
|
||||||
if (levelKnown) {
|
if (levelKnown) {
|
||||||
desc += "\n\n" + Messages.get(this, "avg_dmg", (min(level(), str) + max(level(), str))/2);
|
desc += "\n\n" + Messages.get(this, "avg_dmg", (min(level(), tier) + max(level(), tier))/2);
|
||||||
} else {
|
} else {
|
||||||
desc += "\n\n" + Messages.get(this, "typical_avg_dmg", (min(1, str) + max(1, str))/2);
|
desc += "\n\n" + Messages.get(this, "typical_avg_dmg", (min(1, tier) + max(1, tier))/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
return desc;
|
return desc;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user