v0.4.0: refactors and rebalancing to existing weapons

This commit is contained in:
Evan Debenham
2016-05-14 18:32:35 -04:00
parent 8f27e921d8
commit 56ec14e370
28 changed files with 152 additions and 106 deletions
@@ -26,10 +26,15 @@ public class BattleAxe extends MeleeWeapon {
{
image = ItemSpriteSheet.BATTLE_AXE;
tier = 4;
ACC = 1.175f; //17.5% boost to accuracy
}
public BattleAxe() {
super( 4, 1.2f, 1f );
@Override
public int max(int lvl) {
return 20 + //20 base, down from 25
lvl*(tier+1); //scaling unchanged
}
}
@@ -26,10 +26,15 @@ public class Dagger extends MeleeWeapon {
{
image = ItemSpriteSheet.DAGGER;
tier = 1;
ACC = 1.25f; //25% boost to accuracy
}
public Dagger() {
super( 1, 1.2f, 1f );
@Override
public int max(int lvl) {
return 8 + //8 base, down from 10
lvl*(tier+1); //scaling unchanged
}
}
@@ -20,16 +20,33 @@
*/
package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class Glaive extends MeleeWeapon {
{
image = ItemSpriteSheet.GLAIVE;
tier = 5;
DLY = 1.5f; //0.67x speed
}
public Glaive() {
super( 5, 1f, 1f );
@Override
public int reachFactor(Hero hero) {
return 2; //extra reach
}
@Override
public int min(int lvl) {
return tier + //base unchanged
2*lvl; //+2 per level, up from +1
}
@Override
public int max(int lvl) {
return 40 + //40 base, up from 30
lvl*8; //+8 per level, up from +6
}
}
@@ -6,10 +6,8 @@ public class Greatsword extends MeleeWeapon {
{
image = ItemSpriteSheet.GREATSWORD;
}
public Greatsword() {
super( 5, 1f, 1f );
tier=5;
}
}
@@ -26,10 +26,15 @@ public class Knuckles extends MeleeWeapon {
{
image = ItemSpriteSheet.KNUCKLEDUSTER;
tier = 1;
DLY = 0.5f; //2x speed
}
public Knuckles() {
super( 1, 1f, 0.5f );
@Override
public int max(int lvl) {
return 6 + //6 base, down from 10
lvl*2; //+1 per level, down from +2
}
}
@@ -26,10 +26,8 @@ public class Longsword extends MeleeWeapon {
{
image = ItemSpriteSheet.LONGSWORD;
}
public Longsword() {
super( 4, 1f, 1f );
tier = 4;
}
}
@@ -26,10 +26,15 @@ public class Mace extends MeleeWeapon {
{
image = ItemSpriteSheet.MACE;
tier = 3;
ACC = 1.2f; //20% boost to accuracy
}
public Mace() {
super( 3, 1f, 0.8f );
@Override
public int max(int lvl) {
return 16 + //16 base, down from 20
lvl*(tier+1); //scaling unchanged
}
}
@@ -61,6 +61,8 @@ public class MagesStaff extends MeleeWeapon {
{
image = ItemSpriteSheet.MAGES_STAFF;
tier = 1;
defaultAction = AC_ZAP;
usesTargeting = true;
@@ -69,15 +71,13 @@ public class MagesStaff extends MeleeWeapon {
}
public MagesStaff() {
super(1, 1f, 1f);
wand = null;
}
@Override
protected int maxBase() {
return 6; //6 base damage instead of 10
public int max(int lvl) {
return 6 + //6 base damage, down from 10
lvl*(tier+1); //scaling unaffected
}
public MagesStaff(Wand wand){
@@ -28,33 +28,18 @@ import com.watabou.utils.Random;
public class MeleeWeapon extends Weapon {
private int tier;
public MeleeWeapon( int tier, float acu, float dly ) {
super();
this.tier = tier;
ACU = acu;
DLY = dly;
}
protected int minBase() {
return tier;
}
protected int tier;
protected int maxBase() {
return (int)((tier + 1) * 5 / ACU * DLY);
@Override
public int min(int lvl) {
return tier + //base
lvl; //level scaling
}
@Override
public int min() {
return minBase() + level();
}
@Override
public int max() {
return maxBase() + level() * (tier + 1);
public int max(int lvl) {
return 5*(tier+1) + //base
lvl*(tier+1); //level scaling
}
@Override
@@ -86,8 +71,8 @@ public class MeleeWeapon extends Weapon {
float dmgfactor = (imbue == Imbue.LIGHT ? 0.7f : imbue == Imbue.HEAVY ? 1.5f : 1);
info += " " + Messages.get(Weapon.class, "avg_dmg", Math.round((min + (max - min) / 2)*dmgfactor));
} else {
int min = minBase();
int max = maxBase();
int min = min(0);
int max = max(0);
info += " " + Messages.get(MeleeWeapon.class, "unknown", (min + (max - min) / 2), STRReq(0));
if (STRReq(0) > Dungeon.hero.STR()) {
info += " " + Messages.get(MeleeWeapon.class, "probably_too_heavy");
@@ -27,10 +27,8 @@ public class NewShortsword extends MeleeWeapon {
{
image = ItemSpriteSheet.SHORTSWORD;
}
public NewShortsword() {
super( 2, 1f, 1f );
tier = 2;
}
}
@@ -26,10 +26,16 @@ public class Quarterstaff extends MeleeWeapon {
{
image = ItemSpriteSheet.QUARTERSTAFF;
}
public Quarterstaff() {
super( 2, 1f, 1f );
tier = 2;
}
@Override
public int max(int lvl) {
return 12 + //12 base, down from 15
lvl*(tier+1); //scaling unchanged
}
//TODO add defence bonus code
}
@@ -27,15 +27,26 @@ public class Spear extends MeleeWeapon {
{
image = ItemSpriteSheet.SPEAR;
tier = 2;
DLY = 1.5f; //0.67x speed
}
@Override
public int reachFactor(Hero hero) {
return 2;
return 2; //extra reach
}
public Spear() {
super( 2, 1f, 1.5f );
@Override
public int min(int lvl) {
return tier + //base unchanged
2*lvl; //+2 per level, up from +1
}
@Override
public int max(int lvl) {
return 20 + //20 base, up from 15
lvl*4; //+4 per level, up from +3
}
}
@@ -26,10 +26,8 @@ public class Sword extends MeleeWeapon {
{
image = ItemSpriteSheet.SWORD;
}
public Sword() {
super( 3, 1f, 1f );
tier = 3;
}
}
@@ -26,10 +26,15 @@ public class WarHammer extends MeleeWeapon {
{
image = ItemSpriteSheet.WAR_HAMMER;
tier = 5;
ACC = 1.15f; //15% boost to accuracy
}
public WarHammer() {
super( 5, 1.2f, 1f );
@Override
public int max(int lvl) {
return 24 + //24 base, down from 30
lvl*(tier+1); //scaling unchanged
}
}
@@ -26,10 +26,8 @@ public class WornShortsword extends MeleeWeapon {
{
image = ItemSpriteSheet.WORN_SHORTSWORD;
}
public WornShortsword() {
super( 1, 1f, 1f );
tier = 1;
}
}