v0.8.0: decided on shaman stats and mild balance adjusts to prison enemies
This commit is contained in:
parent
8968beb8fa
commit
bc9cd6e926
|
@ -98,8 +98,9 @@ public class Dungeon {
|
||||||
COOKING_HP,
|
COOKING_HP,
|
||||||
BLANDFRUIT_SEED,
|
BLANDFRUIT_SEED,
|
||||||
|
|
||||||
//doesn't use Generator, so we have to enforce one armband drop here
|
//Other limited enemy drops
|
||||||
THIEVES_ARMBAND,
|
THEIF_MISC,
|
||||||
|
SHAMAN_WAND,
|
||||||
|
|
||||||
//containers
|
//containers
|
||||||
DEW_VIAL,
|
DEW_VIAL,
|
||||||
|
|
|
@ -38,8 +38,8 @@ public class Bandit extends Thief {
|
||||||
{
|
{
|
||||||
spriteClass = BanditSprite.class;
|
spriteClass = BanditSprite.class;
|
||||||
|
|
||||||
//1 in 50 chance to be a crazy bandit, equates to overall 1/100 chance.
|
//guaranteed first drop, then 1/3, 1/9, etc.
|
||||||
lootChance = 0.5f;
|
lootChance = 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -41,11 +41,11 @@ public class DM100 extends Mob implements Callback {
|
||||||
{
|
{
|
||||||
spriteClass = DM100Sprite.class;
|
spriteClass = DM100Sprite.class;
|
||||||
|
|
||||||
HP = HT = 18;
|
HP = HT = 20;
|
||||||
defenseSkill = 8;
|
defenseSkill = 8;
|
||||||
|
|
||||||
EXP = 6;
|
EXP = 6;
|
||||||
maxLvl = 14;
|
maxLvl = 13;
|
||||||
|
|
||||||
loot = Generator.Category.SCROLL;
|
loot = Generator.Category.SCROLL;
|
||||||
lootChance = 0.33f;
|
lootChance = 0.33f;
|
||||||
|
@ -94,9 +94,6 @@ public class DM100 extends Mob implements Callback {
|
||||||
|
|
||||||
if (hit( this, enemy, true )) {
|
if (hit( this, enemy, true )) {
|
||||||
int dmg = Random.NormalIntRange(3, 10);
|
int dmg = Random.NormalIntRange(3, 10);
|
||||||
if (Dungeon.level.water[enemy.pos] && !enemy.flying) {
|
|
||||||
dmg *= 1.5f;
|
|
||||||
}
|
|
||||||
enemy.damage( dmg, new LightningBolt() );
|
enemy.damage( dmg, new LightningBolt() );
|
||||||
|
|
||||||
enemy.sprite.centerEmitter().burst( SparkParticle.FACTORY, 3 );
|
enemy.sprite.centerEmitter().burst( SparkParticle.FACTORY, 3 );
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hex;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
|
@ -35,41 +36,56 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ShamanSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
//TODO decide on stats
|
//TODO stats on these might be a bit weak
|
||||||
public abstract class Shaman extends Mob {
|
public abstract class Shaman extends Mob {
|
||||||
|
|
||||||
{
|
{
|
||||||
HP = HT = 18;
|
HP = HT = 35;
|
||||||
defenseSkill = 8;
|
defenseSkill = 15;
|
||||||
|
|
||||||
EXP = 6;
|
EXP = 8;
|
||||||
maxLvl = 14;
|
maxLvl = 16;
|
||||||
|
|
||||||
loot = Generator.Category.SCROLL;
|
loot = Generator.Category.WAND;
|
||||||
lootChance = 0.33f;
|
lootChance = 0.03f; //initially, see rollToDropLoot
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int damageRoll() {
|
public int damageRoll() {
|
||||||
return Random.NormalIntRange( 2, 8 );
|
return Random.NormalIntRange( 5, 12 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int attackSkill( Char target ) {
|
public int attackSkill( Char target ) {
|
||||||
return 11;
|
return 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int drRoll() {
|
public int drRoll() {
|
||||||
return Random.NormalIntRange(0, 4);
|
return Random.NormalIntRange(0, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean canAttack( Char enemy ) {
|
protected boolean canAttack( Char enemy ) {
|
||||||
return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos;
|
return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean doAttack( Char enemy ) {
|
@Override
|
||||||
|
public void rollToDropLoot() {
|
||||||
|
//each drop makes future drops 1/3 as likely
|
||||||
|
// so loot chance looks like: 1/33, 1/100, 1/300, 1/900, etc.
|
||||||
|
lootChance *= Math.pow(1/3f, Dungeon.LimitedDrops.SHAMAN_WAND.count);
|
||||||
|
super.rollToDropLoot();
|
||||||
|
super.rollToDropLoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Item createLoot() {
|
||||||
|
Dungeon.LimitedDrops.SHAMAN_WAND.count++;
|
||||||
|
return super.createLoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean doAttack(Char enemy ) {
|
||||||
|
|
||||||
if (Dungeon.level.adjacent( pos, enemy.pos )) {
|
if (Dungeon.level.adjacent( pos, enemy.pos )) {
|
||||||
|
|
||||||
|
@ -99,7 +115,7 @@ public abstract class Shaman extends Mob {
|
||||||
debuff( enemy );
|
debuff( enemy );
|
||||||
}
|
}
|
||||||
|
|
||||||
int dmg = Random.Int( 0, 0 );
|
int dmg = Random.NormalIntRange( 6, 15 );
|
||||||
enemy.damage( dmg, new EarthenBolt() );
|
enemy.damage( dmg, new EarthenBolt() );
|
||||||
|
|
||||||
if (!enemy.isAlive() && enemy == Dungeon.hero) {
|
if (!enemy.isAlive() && enemy == Dungeon.hero) {
|
||||||
|
|
|
@ -50,10 +50,10 @@ public class Thief extends Mob {
|
||||||
defenseSkill = 12;
|
defenseSkill = 12;
|
||||||
|
|
||||||
EXP = 5;
|
EXP = 5;
|
||||||
maxLvl = 10;
|
maxLvl = 11;
|
||||||
|
|
||||||
loot = Random.oneOf(Generator.Category.RING, Generator.Category.ARTIFACT);
|
loot = Random.oneOf(Generator.Category.RING, Generator.Category.ARTIFACT);
|
||||||
lootChance = 0.01f;
|
lootChance = 0.03f; //initially, see rollToDropLoot
|
||||||
|
|
||||||
WANDERING = new Wandering();
|
WANDERING = new Wandering();
|
||||||
FLEEING = new Fleeing();
|
FLEEING = new Fleeing();
|
||||||
|
@ -99,9 +99,18 @@ public class Thief extends Mob {
|
||||||
if (item instanceof Honeypot.ShatteredPot) ((Honeypot.ShatteredPot)item).dropPot( this, pos );
|
if (item instanceof Honeypot.ShatteredPot) ((Honeypot.ShatteredPot)item).dropPot( this, pos );
|
||||||
item = null;
|
item = null;
|
||||||
}
|
}
|
||||||
|
//each drop makes future drops 1/3 as likely
|
||||||
|
// so loot chance looks like: 1/33, 1/100, 1/300, 1/900, etc.
|
||||||
|
lootChance *= Math.pow(1/3f, Dungeon.LimitedDrops.THEIF_MISC.count);
|
||||||
super.rollToDropLoot();
|
super.rollToDropLoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Item createLoot() {
|
||||||
|
Dungeon.LimitedDrops.THEIF_MISC.count++;
|
||||||
|
return super.createLoot();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int attackSkill( Char target ) {
|
public int attackSkill( Char target ) {
|
||||||
return 12;
|
return 12;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user