v0.8.0: tweaked demon halls enemies

This commit is contained in:
Evan Debenham 2019-11-28 20:08:19 -05:00
parent 9326a3bdd4
commit ffa2bb1a91
6 changed files with 70 additions and 31 deletions

View File

@ -23,10 +23,10 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.sprites.AcidicSprite;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.utils.Random;
public class Acidic extends Scorpio {
@ -34,20 +34,21 @@ public class Acidic extends Scorpio {
spriteClass = AcidicSprite.class;
properties.add(Property.ACIDIC);
loot = new PotionOfExperience();
lootChance = 1f;
}
@Override
public int attackProc(Char enemy, int damage) {
Buff.affect(enemy, Ooze.class).set( 20f );
return super.attackProc(enemy, damage);
}
@Override
public int defenseProc( Char enemy, int damage ) {
int dmg = Random.IntRange( 0, damage );
if (dmg > 0) {
enemy.damage( dmg, this );
if (!enemy.isAlive() && enemy == Dungeon.hero) {
Dungeon.fail(getClass());
GLog.n(Messages.capitalize(Messages.get(Char.class, "kill", name)));
}
if (Dungeon.level.adjacent(pos, enemy.pos)){
Buff.affect(enemy, Ooze.class).set( 20f );
}
return super.defenseProc( enemy, damage );
}

View File

@ -29,6 +29,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PurpleParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Dewdrop;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfDisintegration;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Grim;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
@ -57,7 +59,7 @@ public class Eye extends Mob {
HUNTING = new Hunting();
loot = new Dewdrop();
lootChance = 0.5f;
lootChance = 1f;
properties.add(Property.DEMONIC);
}
@ -197,6 +199,24 @@ public class Eye extends Mob {
beamTarget = -1;
}
//generates an average of 1 dew, 0.25 seeds, and 0.25 stones
@Override
protected Item createLoot() {
Item loot;
switch(Random.Int(4)){
case 0: case 1: default:
loot = new Dewdrop().quantity(2);
break;
case 3:
loot = Generator.random(Generator.Category.SEED);
break;
case 4:
loot = Generator.random(Generator.Category.STONE);
break;
}
return loot;
}
private static final String BEAM_TARGET = "beamTarget";
private static final String BEAM_COOLDOWN = "beamCooldown";
private static final String BEAM_CHARGED = "beamCharged";

View File

@ -26,12 +26,14 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ScorpioSprite;
import com.watabou.utils.Random;
import com.watabou.utils.Reflection;
public class Scorpio extends Mob {
@ -45,8 +47,8 @@ public class Scorpio extends Mob {
EXP = 14;
maxLvl = 25;
loot = new PotionOfHealing();
lootChance = 0.2f;
loot = Generator.Category.POTION;
lootChance = 0.5f;
properties.add(Property.DEMONIC);
}
@ -93,13 +95,12 @@ public class Scorpio extends Mob {
@Override
protected Item createLoot() {
//(9-count) / 9 chance of getting healing, otherwise mystery meat
if (Random.Float() < ((9f - Dungeon.LimitedDrops.SCORPIO_HP.count) / 9f)) {
Dungeon.LimitedDrops.SCORPIO_HP.count++;
return (Item)loot;
} else {
return new MysteryMeat();
}
Class<?extends Potion> loot;
do{
loot = (Class<? extends Potion>) Random.oneOf(Generator.Category.POTION.classes);
} while (loot == PotionOfHealing.class);
return Reflection.newInstance(loot);
}
}

View File

@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SeniorSprite;
import com.watabou.utils.Random;
@ -29,6 +30,7 @@ public class Senior extends Monk {
{
spriteClass = SeniorSprite.class;
loot = new Pasty();
lootChance = 1f;
}

View File

@ -31,13 +31,17 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SuccubusSprite;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Random;
import com.watabou.utils.Reflection;
import java.util.ArrayList;
@ -57,8 +61,8 @@ public class Succubus extends Mob {
EXP = 12;
maxLvl = 25;
loot = new ScrollOfLullaby();
lootChance = 0.05f;
loot = Generator.Category.SCROLL;
lootChance = 0.33f;
properties.add(Property.DEMONIC);
}
@ -148,6 +152,16 @@ public class Succubus extends Mob {
return Random.NormalIntRange(0, 10);
}
@Override
protected Item createLoot() {
Class<?extends Scroll> loot;
do{
loot = (Class<? extends Scroll>) Random.oneOf(Generator.Category.SCROLL.classes);
} while (loot == ScrollOfIdentify.class);
return Reflection.newInstance(loot);
}
{
immunities.add( Sleep.class );
immunities.add( Charm.class );

View File

@ -443,6 +443,7 @@ actors.mobs.npcs.wandmaker.desc=This old yet hale gentleman wears a slightly con
###mobs
actors.mobs.acidic.name=acidic scorpio
actors.mobs.acidic.desc=These huge arachnid-like demonic creatures avoid close combat, preferring to fire crippling serrated spikes from long distances. This one appears to be dripping with corrosive ooze.
actors.mobs.albino.name=albino rat
actors.mobs.albino.desc=This is a rare breed of marsupial rat, with pure white fur and jagged teeth.
@ -579,7 +580,7 @@ actors.mobs.rotlasher.desc=The rot lasher is a part of a mature rotberry plant's
actors.mobs.rotlasher$waiting.status=This %s is idle.
actors.mobs.scorpio.name=scorpio
actors.mobs.scorpio.desc=These huge arachnid-like demonic creatures avoid close combat by all means, firing crippling serrated spikes from long distances.
actors.mobs.scorpio.desc=These huge arachnid-like demonic creatures avoid close combat, preferring to fire crippling serrated spikes from long distances.
actors.mobs.senior.name=senior monk
actors.mobs.senior.desc=These monks are fanatics, who have devoted themselves to protecting their king through physical might. So great is their devotion that they have totally surrendered their minds to their king, and now roam the dwarvern city like mindless zombies.\n\nThis monk has mastered the art of hang-to-hand combat, and is able to gain focus while moving much more quickly than regular monks. When they become focused, monks will parry the next physical attack used against them, even if it was otherwise garunteed to hit. Monk build focus more quickly while on the move, and more slowly when in direcy combat.
@ -614,7 +615,7 @@ actors.mobs.statue.def_verb=blocked
actors.mobs.statue.desc=You would think that it's just another one of this dungeon's ugly statues, but its red glowing eyes give it away.\n\nWhile the statue itself is made of stone, the _%s,_ it's wielding, looks real.
actors.mobs.succubus.name=succubus
actors.mobs.succubus.desc=The succubi are demons that look like seductive (in a slightly gothic way) girls. Using its magic, the succubus can charm a hero, who will become unable to attack anything until the charm wears off. When succubi attack a charmed hero, they will steal their life essence.
actors.mobs.succubus.desc=Succubi are shapeshifting demons that manipulate the minds of their prey. This one has taken the form of a pale gothic humanoid, perhaps to attract dwarven warlocks?\n\nWhen they attack, succubi may charm their target, making them unable to directly attack until the charm wears off. When succubi attack a charmed enemy, they will steal their life essence.
actors.mobs.swarm.name=swarm of flies
actors.mobs.swarm.desc=The deadly swarm of flies buzzes angrily. Every non-magical attack will split it into two smaller but equally dangerous swarms.