v0.6.3: Missile weapon balance:

- increased shop prices by 50%
- adjusted shop spawn rate to a consistent 2 (5 for darts)
- reduced throwing hammer durability by 25%
- throwing hammers now always drop to the floor
This commit is contained in:
Evan Debenham 2018-01-21 23:50:55 -05:00
parent 8aae9906ae
commit 57b4eaf753
13 changed files with 26 additions and 22 deletions

View File

@ -61,6 +61,6 @@ public class Bolas extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 12 * quantity; return 18 * quantity;
} }
} }

View File

@ -61,6 +61,6 @@ public class Dart extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return quantity * 4; return 6 * quantity;
} }
} }

View File

@ -46,7 +46,7 @@ public class FishingSpear extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 12 * quantity; return 18 * quantity;
} }
} }

View File

@ -46,6 +46,6 @@ public class Javelin extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 16 * quantity; return 24 * quantity;
} }
} }

View File

@ -49,6 +49,8 @@ abstract public class MissileWeapon extends Weapon {
usesTargeting = true; usesTargeting = true;
} }
protected boolean sticky = true;
protected static final float MAX_DURABILITY = 100; protected static final float MAX_DURABILITY = 100;
protected float durability = MAX_DURABILITY; protected float durability = MAX_DURABILITY;
@ -139,7 +141,7 @@ abstract public class MissileWeapon extends Weapon {
durability -= durabilityPerUse(); durability -= durabilityPerUse();
} }
if (durability > 0){ if (durability > 0){
if (enemy.isAlive()) Buff.affect(enemy, PinCushion.class).stick(this); if (enemy.isAlive() && sticky) Buff.affect(enemy, PinCushion.class).stick(this);
else Dungeon.level.drop( this, enemy.pos).sprite.drop(); else Dungeon.level.drop( this, enemy.pos).sprite.drop();
} }
} }

View File

@ -54,6 +54,6 @@ public class Shuriken extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 8 * quantity; return 12 * quantity;
} }
} }

View File

@ -27,6 +27,8 @@ public class ThrowingHammer extends MissileWeapon {
{ {
image = ItemSpriteSheet.THROWING_HAMMER; image = ItemSpriteSheet.THROWING_HAMMER;
sticky = false;
} }
@Override @Override
@ -46,11 +48,11 @@ public class ThrowingHammer extends MissileWeapon {
@Override @Override
protected float durabilityPerUse() { protected float durabilityPerUse() {
return super.durabilityPerUse()/2f; return super.durabilityPerUse()/1.5f;
} }
@Override @Override
public int price() { public int price() {
return 20 * quantity; return 30 * quantity;
} }
} }

View File

@ -89,6 +89,6 @@ public class ThrowingKnife extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 4 * quantity; return 6 * quantity;
} }
} }

View File

@ -47,6 +47,6 @@ public abstract class TippedDart extends Dart {
@Override @Override
public int price() { public int price() {
return quantity * 6; return 12 * quantity;
} }
} }

View File

@ -61,6 +61,6 @@ public class Tomahawk extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 16 * quantity; return 24 * quantity;
} }
} }

View File

@ -46,7 +46,7 @@ public class Trident extends MissileWeapon {
@Override @Override
public int price() { public int price() {
return 20 * quantity; return 30 * quantity;
} }
} }

View File

@ -168,32 +168,32 @@ public class ShopRoom extends SpecialRoom {
case 6: case 6:
itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Shortsword().identify() : new HandAxe()).identify() ); itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Shortsword().identify() : new HandAxe()).identify() );
itemsToSpawn.add( Random.Int( 2 ) == 0 ? itemsToSpawn.add( Random.Int( 2 ) == 0 ?
new Shuriken().random() : new Shuriken().quantity(2) :
new IncendiaryDart().random()); new IncendiaryDart().quantity(5));
itemsToSpawn.add( new LeatherArmor().identify() ); itemsToSpawn.add( new LeatherArmor().identify() );
break; break;
case 11: case 11:
itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Sword().identify() : new Mace()).identify() ); itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Sword().identify() : new Mace()).identify() );
itemsToSpawn.add( Random.Int( 2 ) == 0 ? itemsToSpawn.add( Random.Int( 2 ) == 0 ?
new FishingSpear().random() : new FishingSpear().quantity(2) :
new Bolas().random()); new Bolas().quantity(2));
itemsToSpawn.add( new MailArmor().identify() ); itemsToSpawn.add( new MailArmor().identify() );
break; break;
case 16: case 16:
itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Longsword().identify() : new BattleAxe()).identify() ); itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Longsword().identify() : new BattleAxe()).identify() );
itemsToSpawn.add( Random.Int( 2 ) == 0 ? itemsToSpawn.add( Random.Int( 2 ) == 0 ?
new Javelin().random() : new Javelin().quantity(2) :
new Tomahawk().random()); new Tomahawk().quantity(2));
itemsToSpawn.add( new ScaleArmor().identify() ); itemsToSpawn.add( new ScaleArmor().identify() );
break; break;
case 21: case 21:
itemsToSpawn.add( Random.Int( 2 ) == 0 ? new Greatsword().identify() : new WarHammer().identify() ); itemsToSpawn.add( Random.Int( 2 ) == 0 ? new Greatsword().identify() : new WarHammer().identify() );
itemsToSpawn.add( Random.Int(2) == 0 ? itemsToSpawn.add( Random.Int(2) == 0 ?
new Trident().random() : new Trident().quantity(2) :
new ThrowingHammer().random()); new ThrowingHammer().quantity(2));
itemsToSpawn.add( new PlateArmor().identify() ); itemsToSpawn.add( new PlateArmor().identify() );
itemsToSpawn.add( new Torch() ); itemsToSpawn.add( new Torch() );
itemsToSpawn.add( new Torch() ); itemsToSpawn.add( new Torch() );

View File

@ -958,7 +958,7 @@ items.weapon.missiles.shuriken.name=shuriken
items.weapon.missiles.shuriken.desc=Star-shaped pieces of metal with razor-sharp blades. They are lightweight and easy to use on the move. A single shuriken can be thrown instantly after moving. items.weapon.missiles.shuriken.desc=Star-shaped pieces of metal with razor-sharp blades. They are lightweight and easy to use on the move. A single shuriken can be thrown instantly after moving.
items.weapon.missiles.throwinghammer.name=throwing hammer items.weapon.missiles.throwinghammer.name=throwing hammer
items.weapon.missiles.throwinghammer.desc=These hefty hammers are designed to be thrown at an enemy. While they are a bit lacking in damage, their all-metal construction makes them quite durable. items.weapon.missiles.throwinghammer.desc=These hefty hammers are designed to be thrown at an enemy. While they are a bit lacking in damage, their smooth all-metal construction means they are quite durable, and won't stick to enemies.
items.weapon.missiles.throwingknife.name=throwing knife items.weapon.missiles.throwingknife.name=throwing knife
items.weapon.missiles.throwingknife.desc=These lightweight knives are balanced to arc through the air right into their target. They are most effective against unaware enemies. items.weapon.missiles.throwingknife.desc=These lightweight knives are balanced to arc through the air right into their target. They are most effective against unaware enemies.