v0.8.0: decided on shaman stats and mild balance adjusts to prison enemies

This commit is contained in:
Evan Debenham 2019-11-04 19:41:08 -05:00
parent 8968beb8fa
commit bc9cd6e926
5 changed files with 48 additions and 25 deletions

View File

@ -98,8 +98,9 @@ public class Dungeon {
COOKING_HP,
BLANDFRUIT_SEED,
//doesn't use Generator, so we have to enforce one armband drop here
THIEVES_ARMBAND,
//Other limited enemy drops
THEIF_MISC,
SHAMAN_WAND,
//containers
DEW_VIAL,

View File

@ -38,8 +38,8 @@ public class Bandit extends Thief {
{
spriteClass = BanditSprite.class;
//1 in 50 chance to be a crazy bandit, equates to overall 1/100 chance.
lootChance = 0.5f;
//guaranteed first drop, then 1/3, 1/9, etc.
lootChance = 1f;
}
@Override

View File

@ -41,11 +41,11 @@ public class DM100 extends Mob implements Callback {
{
spriteClass = DM100Sprite.class;
HP = HT = 18;
HP = HT = 20;
defenseSkill = 8;
EXP = 6;
maxLvl = 14;
maxLvl = 13;
loot = Generator.Category.SCROLL;
lootChance = 0.33f;
@ -94,9 +94,6 @@ public class DM100 extends Mob implements Callback {
if (hit( this, enemy, true )) {
int dmg = Random.NormalIntRange(3, 10);
if (Dungeon.level.water[enemy.pos] && !enemy.flying) {
dmg *= 1.5f;
}
enemy.damage( dmg, new LightningBolt() );
enemy.sprite.centerEmitter().burst( SparkParticle.FACTORY, 3 );

View File

@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hex;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
@ -35,33 +36,33 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ShamanSprite;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.utils.Random;
//TODO decide on stats
//TODO stats on these might be a bit weak
public abstract class Shaman extends Mob {
{
HP = HT = 18;
defenseSkill = 8;
HP = HT = 35;
defenseSkill = 15;
EXP = 6;
maxLvl = 14;
EXP = 8;
maxLvl = 16;
loot = Generator.Category.SCROLL;
lootChance = 0.33f;
loot = Generator.Category.WAND;
lootChance = 0.03f; //initially, see rollToDropLoot
}
@Override
public int damageRoll() {
return Random.NormalIntRange( 2, 8 );
return Random.NormalIntRange( 5, 12 );
}
@Override
public int attackSkill( Char target ) {
return 11;
return 18;
}
@Override
public int drRoll() {
return Random.NormalIntRange(0, 4);
return Random.NormalIntRange(0, 6);
}
@Override
@ -69,6 +70,21 @@ public abstract class Shaman extends Mob {
return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos;
}
@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 )) {
@ -99,7 +115,7 @@ public abstract class Shaman extends Mob {
debuff( enemy );
}
int dmg = Random.Int( 0, 0 );
int dmg = Random.NormalIntRange( 6, 15 );
enemy.damage( dmg, new EarthenBolt() );
if (!enemy.isAlive() && enemy == Dungeon.hero) {

View File

@ -50,10 +50,10 @@ public class Thief extends Mob {
defenseSkill = 12;
EXP = 5;
maxLvl = 10;
maxLvl = 11;
loot = Random.oneOf(Generator.Category.RING, Generator.Category.ARTIFACT);
lootChance = 0.01f;
lootChance = 0.03f; //initially, see rollToDropLoot
WANDERING = new Wandering();
FLEEING = new Fleeing();
@ -99,9 +99,18 @@ public class Thief extends Mob {
if (item instanceof Honeypot.ShatteredPot) ((Honeypot.ShatteredPot)item).dropPot( this, pos );
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();
}
@Override
protected Item createLoot() {
Dungeon.LimitedDrops.THEIF_MISC.count++;
return super.createLoot();
}
@Override
public int attackSkill( Char target ) {
return 12;