v0.3.4: externalized all remaining actor strings
This commit is contained in:
committed by
Evan Debenham
parent
c3b964a8cc
commit
2c76c77360
@@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Yog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Door;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||
@@ -44,15 +45,6 @@ import com.watabou.utils.Random;
|
||||
import java.util.HashSet;
|
||||
|
||||
public abstract class Char extends Actor {
|
||||
|
||||
protected static final String TXT_HIT = "%s hit %s";
|
||||
protected static final String TXT_KILL = "%s killed you...";
|
||||
protected static final String TXT_DEFEAT = "%s defeated %s";
|
||||
|
||||
private static final String TXT_YOU_MISSED = "%s %s your attack";
|
||||
private static final String TXT_SMB_MISSED = "%s %s %s's attack";
|
||||
|
||||
private static final String TXT_OUT_OF_PARALYSIS = "The pain snapped %s out of paralysis";
|
||||
|
||||
public int pos = 0;
|
||||
|
||||
@@ -72,7 +64,7 @@ public abstract class Char extends Actor {
|
||||
|
||||
public int viewDistance = 8;
|
||||
|
||||
private HashSet<Buff> buffs = new HashSet<Buff>();
|
||||
private HashSet<Buff> buffs = new HashSet<>();
|
||||
|
||||
@Override
|
||||
protected boolean act() {
|
||||
@@ -121,7 +113,7 @@ public abstract class Char extends Actor {
|
||||
if (hit( this, enemy, false )) {
|
||||
|
||||
if (visibleFight) {
|
||||
GLog.i( TXT_HIT, name, enemy.name );
|
||||
GLog.i( Messages.get(Char.class, "hit", name, enemy.name) );
|
||||
}
|
||||
|
||||
// FIXME
|
||||
@@ -173,10 +165,10 @@ public abstract class Char extends Actor {
|
||||
Dungeon.fail( Utils.format( ResultDescriptions.MOB, Utils.indefinite( name )) );
|
||||
}
|
||||
|
||||
GLog.n( TXT_KILL, name );
|
||||
GLog.n( Messages.get(Char.class, "kill", name) );
|
||||
|
||||
} else {
|
||||
GLog.i( TXT_DEFEAT, name, enemy.name );
|
||||
GLog.i( Messages.get(Char.class, "defeat", name, enemy.name) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,9 +180,9 @@ public abstract class Char extends Actor {
|
||||
String defense = enemy.defenseVerb();
|
||||
enemy.sprite.showStatus( CharSprite.NEUTRAL, defense );
|
||||
if (this == Dungeon.hero) {
|
||||
GLog.i( TXT_YOU_MISSED, enemy.name, defense );
|
||||
GLog.i( Messages.get(Char.class, "you_missed", enemy.name, defense) );
|
||||
} else {
|
||||
GLog.i( TXT_SMB_MISSED, enemy.name, defense, name );
|
||||
GLog.i( Messages.get(Char.class, "smb_missed", enemy.name, defense, name) );
|
||||
}
|
||||
|
||||
Sample.INSTANCE.play(Assets.SND_MISS);
|
||||
@@ -218,7 +210,7 @@ public abstract class Char extends Actor {
|
||||
}
|
||||
|
||||
public String defenseVerb() {
|
||||
return "dodged";
|
||||
return Messages.get(this, "def_verb");
|
||||
}
|
||||
|
||||
public int dr() {
|
||||
@@ -264,7 +256,7 @@ public abstract class Char extends Actor {
|
||||
if (Random.Int( dmg ) >= Random.Int( HP )) {
|
||||
Buff.detach( this, Paralysis.class );
|
||||
if (Dungeon.visible[pos]) {
|
||||
GLog.i( TXT_OUT_OF_PARALYSIS, name );
|
||||
GLog.i( Messages.get(Char.class, "out_of_paralysis", name) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -318,7 +310,7 @@ public abstract class Char extends Actor {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends Buff> HashSet<T> buffs( Class<T> c ) {
|
||||
HashSet<T> filtered = new HashSet<T>();
|
||||
HashSet<T> filtered = new HashSet<>();
|
||||
for (Buff b : buffs) {
|
||||
if (c.isInstance( b )) {
|
||||
filtered.add( (T)b );
|
||||
@@ -381,7 +373,7 @@ public abstract class Char extends Actor {
|
||||
|
||||
@Override
|
||||
protected void onRemove() {
|
||||
for (Buff buff : buffs.toArray( new Buff[0] )) {
|
||||
for (Buff buff : buffs.toArray(new Buff[buffs.size()])) {
|
||||
buff.detach();
|
||||
}
|
||||
}
|
||||
@@ -440,7 +432,7 @@ public abstract class Char extends Actor {
|
||||
next();
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> EMPTY = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> EMPTY = new HashSet<>();
|
||||
|
||||
public HashSet<Class<?>> resistances() {
|
||||
return EMPTY;
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.watabou.utils.Random;
|
||||
public class Acidic extends Scorpio {
|
||||
|
||||
{
|
||||
name = "acidic scorpio";
|
||||
spriteClass = AcidicSprite.class;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.watabou.utils.Random;
|
||||
public class Albino extends Rat {
|
||||
|
||||
{
|
||||
name = "albino rat";
|
||||
spriteClass = AlbinoSprite.class;
|
||||
|
||||
HP = HT = 15;
|
||||
@@ -50,10 +49,4 @@ public class Albino extends Rat {
|
||||
|
||||
return damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This is a rare breed of marsupial rat, with pure white fur and jagged teeth.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ public class Bandit extends Thief {
|
||||
public Item item;
|
||||
|
||||
{
|
||||
name = "crazy bandit";
|
||||
spriteClass = BanditSprite.class;
|
||||
|
||||
//1 in 30 chance to be a crazy bandit, equates to overall 1/90 chance.
|
||||
|
||||
@@ -34,7 +34,6 @@ import com.watabou.utils.Random;
|
||||
public class Bat extends Mob {
|
||||
|
||||
{
|
||||
name = "vampire bat";
|
||||
spriteClass = BatSprite.class;
|
||||
|
||||
HP = HT = 30;
|
||||
@@ -65,11 +64,6 @@ public class Bat extends Mob {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "evaded";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int attackProc( Char enemy, int damage ) {
|
||||
|
||||
@@ -96,14 +90,7 @@ public class Bat extends Mob {
|
||||
return super.createLoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These brisk and tenacious inhabitants of cave domes may defeat much larger opponents by " +
|
||||
"replenishing their health with each successful attack.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( Leech.class );
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ import com.watabou.utils.Random;
|
||||
public class Bee extends Mob {
|
||||
|
||||
{
|
||||
name = "golden bee";
|
||||
spriteClass = BeeSprite.class;
|
||||
|
||||
viewDistance = 4;
|
||||
@@ -126,7 +125,7 @@ public class Bee extends Mob {
|
||||
return enemy;
|
||||
|
||||
//find all mobs near the pot
|
||||
HashSet<Char> enemies = new HashSet<Char>();
|
||||
HashSet<Char> enemies = new HashSet<>();
|
||||
for (Mob mob : Dungeon.level.mobs)
|
||||
if (!(mob instanceof Bee) && Level.distance(mob.pos, potPos) <= 3 && (mob.hostile || mob.ally))
|
||||
enemies.add(mob);
|
||||
@@ -145,15 +144,8 @@ public class Bee extends Mob {
|
||||
this.target = target = potPos;
|
||||
return super.getCloser( target );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Despite their small size, golden bees tend " +
|
||||
"to protect their home fiercely. This one is very mad, better keep your distance.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Poison.class );
|
||||
IMMUNITIES.add( Amok.class );
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Gold;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.BruteSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -33,11 +34,8 @@ import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Brute extends Mob {
|
||||
|
||||
private static final String TXT_ENRAGED = "%s becomes enraged!";
|
||||
|
||||
{
|
||||
name = "gnoll brute";
|
||||
spriteClass = BruteSprite.class;
|
||||
|
||||
HP = HT = 40;
|
||||
@@ -83,20 +81,13 @@ public class Brute extends Mob {
|
||||
enraged = true;
|
||||
spend( TICK );
|
||||
if (Dungeon.visible[pos]) {
|
||||
GLog.w( TXT_ENRAGED, name );
|
||||
sprite.showStatus( CharSprite.NEGATIVE, "enraged" );
|
||||
GLog.w( Messages.get(this, "engraged_text") );
|
||||
sprite.showStatus( CharSprite.NEGATIVE, Messages.get(this, "engraged") );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Brutes are the largest, strongest and toughest of all gnolls. When severely wounded, " +
|
||||
"they go berserk, inflicting even more damage to their enemies.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Terror.class );
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import com.watabou.utils.Random;
|
||||
public class Crab extends Mob {
|
||||
|
||||
{
|
||||
name = "sewer crab";
|
||||
spriteClass = CrabSprite.class;
|
||||
|
||||
HP = HT = 15;
|
||||
@@ -57,17 +56,4 @@ public class Crab extends Mob {
|
||||
public int dr() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "parried";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These huge crabs are at the top of the food chain in the sewers. " +
|
||||
"They are extremely fast and their thick carapace can withstand " +
|
||||
"heavy blows.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
|
||||
import com.watabou.noosa.Camera;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -55,7 +56,6 @@ import com.watabou.utils.Random;
|
||||
public class DM300 extends Mob {
|
||||
|
||||
{
|
||||
name = "DM-300";
|
||||
spriteClass = DM300Sprite.class;
|
||||
|
||||
HP = HT = 200;
|
||||
@@ -101,7 +101,7 @@ public class DM300 extends Mob {
|
||||
sprite.emitter().burst( ElmoParticle.FACTORY, 5 );
|
||||
|
||||
if (Dungeon.visible[step] && Dungeon.hero.isAlive()) {
|
||||
GLog.n( "DM-300 repairs itself!" );
|
||||
GLog.n( Messages.get(this, "repair") );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,25 +156,17 @@ public class DM300 extends Mob {
|
||||
GLog.p("Your beacon grows stronger!");
|
||||
}
|
||||
|
||||
yell( "Mission failed. Shutting down." );
|
||||
yell( Messages.get(this, "defeated") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notice() {
|
||||
super.notice();
|
||||
BossHealthBar.assignBoss(this);
|
||||
yell( "Unauthorised personnel detected." );
|
||||
yell( Messages.get(this, "notice") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This machine was created by the Dwarves several centuries ago. Later, Dwarves started to replace machines with " +
|
||||
"golems, elementals and even demons. Eventually it led their civilization to the decline. The DM-300 and similar " +
|
||||
"machines were typically used for construction and mining, and in some cases, for city defense.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( Death.class );
|
||||
RESISTANCES.add( ScrollOfPsionicBlast.class );
|
||||
@@ -185,7 +177,7 @@ public class DM300 extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( ToxicGas.class );
|
||||
IMMUNITIES.add( Terror.class );
|
||||
|
||||
@@ -38,7 +38,6 @@ import com.watabou.utils.Random;
|
||||
public class Elemental extends Mob {
|
||||
|
||||
{
|
||||
name = "fire elemental";
|
||||
spriteClass = ElementalSprite.class;
|
||||
|
||||
HP = HT = 65;
|
||||
@@ -96,14 +95,7 @@ public class Elemental extends Mob {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Wandering fire elementals are a byproduct of summoning greater entities. " +
|
||||
"They are too chaotic in their nature to be controlled by even the most powerful demonologist.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Burning.class );
|
||||
IMMUNITIES.add( Fire.class );
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfDisintegration
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Death;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Leech;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.EyeSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -43,10 +44,7 @@ import com.watabou.utils.Random;
|
||||
|
||||
public class Eye extends Mob {
|
||||
|
||||
private static final String TXT_DEATHGAZE_KILLED = "%s's deathgaze killed you...";
|
||||
|
||||
{
|
||||
name = "evil eye";
|
||||
spriteClass = EyeSprite.class;
|
||||
|
||||
HP = HT = 100;
|
||||
@@ -131,7 +129,7 @@ public class Eye extends Mob {
|
||||
|
||||
if (!ch.isAlive() && ch == Dungeon.hero) {
|
||||
Dungeon.fail( Utils.format( ResultDescriptions.MOB, Utils.indefinite( name ) ) );
|
||||
GLog.n( TXT_DEATHGAZE_KILLED, name );
|
||||
GLog.n( Messages.get(this, "deathgaze_kill") );
|
||||
}
|
||||
} else {
|
||||
ch.sprite.showStatus( CharSprite.NEUTRAL, ch.defenseVerb() );
|
||||
@@ -141,14 +139,7 @@ public class Eye extends Mob {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"One of this demon's other names is \"orb of hatred\", because when it sees an enemy, " +
|
||||
"it uses its deathgaze recklessly, often ignoring its allies and wounding them.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( WandOfDisintegration.class );
|
||||
RESISTANCES.add( Death.class );
|
||||
@@ -160,7 +151,7 @@ public class Eye extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Terror.class );
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ import java.util.HashSet;
|
||||
public class FetidRat extends Rat {
|
||||
|
||||
{
|
||||
name = "fetid rat";
|
||||
spriteClass = FetidRatSprite.class;
|
||||
|
||||
HP = HT = 20;
|
||||
@@ -83,17 +82,7 @@ public class FetidRat extends Rat {
|
||||
Ghost.Quest.process();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Something is clearly wrong with this rat. Its greasy black fur and rotting skin are very " +
|
||||
"different from the healthy rats you've seen previously. It's pale green eyes " +
|
||||
"make it seem especially menacing.\n\n" +
|
||||
"The rat carries a cloud of horrible stench with it, it's overpoweringly strong up close.\n\n" +
|
||||
"Dark ooze dribbles from the rat's mouth, it eats through the floor but seems to dissolve in water.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( StenchGas.class );
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import com.watabou.utils.Random;
|
||||
public class Gnoll extends Mob {
|
||||
|
||||
{
|
||||
name = "gnoll scout";
|
||||
spriteClass = GnollSprite.class;
|
||||
|
||||
HP = HT = 12;
|
||||
@@ -56,11 +55,4 @@ public class Gnoll extends Mob {
|
||||
public int dr() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Gnolls are hyena-like humanoids. They dwell in sewers and dungeons, venturing up to raid the surface from time to time. " +
|
||||
"Gnoll scouts are regular members of their pack, they are not as strong as brutes and not as intelligent as shamans.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class GnollTrickster extends Gnoll {
|
||||
|
||||
{
|
||||
name = "gnoll trickster";
|
||||
spriteClass = GnollTricksterSprite.class;
|
||||
|
||||
HP = HT = 20;
|
||||
@@ -105,16 +105,6 @@ public class GnollTrickster extends Gnoll {
|
||||
Ghost.Quest.process();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"A strange looking creature, even by gnoll standards. It hunches forward with a wicked grin, " +
|
||||
"almost cradling the satchel hanging over its shoulder. Its eyes are wide with a strange mix of " +
|
||||
"fear and excitement.\n\n" +
|
||||
"There is a large collection of poorly made darts in its satchel, they all seem to be " +
|
||||
"tipped with various harmful substances.";
|
||||
}
|
||||
|
||||
private static final String COMBO = "combo";
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,7 +34,6 @@ import com.watabou.utils.Random;
|
||||
public class Golem extends Mob {
|
||||
|
||||
{
|
||||
name = "golem";
|
||||
spriteClass = GolemSprite.class;
|
||||
|
||||
HP = HT = 85;
|
||||
@@ -63,28 +62,14 @@ public class Golem extends Mob {
|
||||
public int dr() {
|
||||
return 12;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "blocked";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void die( Object cause ) {
|
||||
Imp.Quest.process( this );
|
||||
|
||||
super.die( cause );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"The Dwarves tried to combine their knowledge of mechanisms with their newfound power of elemental binding. " +
|
||||
"They used spirits of earth as the \"soul\" for the mechanical bodies of golems, which were believed to be " +
|
||||
"most controllable of all. Despite this, the tiniest mistake in the ritual could cause an outbreak.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
}
|
||||
|
||||
@@ -93,7 +78,7 @@ public class Golem extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Amok.class );
|
||||
IMMUNITIES.add( Terror.class );
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
|
||||
import com.watabou.noosa.Camera;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||
@@ -52,8 +53,8 @@ import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Goo extends Mob {
|
||||
|
||||
{
|
||||
name = "Goo";
|
||||
HP = HT = 100;
|
||||
EXP = 10;
|
||||
defenseSkill = 8;
|
||||
@@ -184,8 +185,8 @@ public class Goo extends Mob {
|
||||
}
|
||||
|
||||
if (Dungeon.visible[pos]) {
|
||||
sprite.showStatus( CharSprite.NEGATIVE, "!!!" );
|
||||
GLog.n( "Goo is pumping itself up!" );
|
||||
sprite.showStatus( CharSprite.NEGATIVE, Messages.get(this, "!!!") );
|
||||
GLog.n( Messages.get(this, "pumpup") );
|
||||
}
|
||||
|
||||
spend( attackDelay() );
|
||||
@@ -219,10 +220,10 @@ public class Goo extends Mob {
|
||||
super.damage(dmg, src);
|
||||
if ((HP*2 <= HT) && !bleeding){
|
||||
BossHealthBar.bleed(true);
|
||||
GLog.w("Goo Becomes Enraged!!");
|
||||
sprite.showStatus(CharSprite.NEGATIVE, "enraged");
|
||||
GLog.w( Messages.get(this, "enraged_text") );
|
||||
sprite.showStatus(CharSprite.NEGATIVE, Messages.get(this, "enraged"));
|
||||
((GooSprite)sprite).spray(true);
|
||||
yell("GLUUUURP!");
|
||||
yell(Messages.get(this, "gluuurp"));
|
||||
spend( TICK );
|
||||
}
|
||||
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class);
|
||||
@@ -241,24 +242,14 @@ public class Goo extends Mob {
|
||||
|
||||
Badges.validateBossSlain();
|
||||
|
||||
yell( "glurp... glurp..." );
|
||||
yell( Messages.get(this, "defeated") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notice() {
|
||||
super.notice();
|
||||
BossHealthBar.assignBoss(this);
|
||||
yell( "GLURP-GLURP!" );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Little is known about The Goo. It's quite possible that it is not even a creature, but rather a " +
|
||||
"conglomerate of vile substances from the sewers that somehow gained basic intelligence. " +
|
||||
"Regardless, dark magic is certainly what has allowed Goo to exist.\n\n" +
|
||||
"Its gelatinous nature has let it absorb lots of dark energy, you feel a chill just from being near. " +
|
||||
"If goo is able to attack with this energy you won't live for long.";
|
||||
yell( Messages.get(this, "notice") );
|
||||
}
|
||||
|
||||
private final String PUMPEDUP = "pumpedup";
|
||||
@@ -282,7 +273,7 @@ public class Goo extends Mob {
|
||||
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( ToxicGas.class );
|
||||
RESISTANCES.add( Death.class );
|
||||
|
||||
@@ -26,13 +26,14 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.LightningTrap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.GreatCrabSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
|
||||
public class GreatCrab extends Crab {
|
||||
|
||||
{
|
||||
name = "great crab";
|
||||
spriteClass = GreatCrabSprite.class;
|
||||
|
||||
HP = HT = 25;
|
||||
@@ -66,8 +67,8 @@ public class GreatCrab extends Crab {
|
||||
//crab blocks all attacks originating from the hero or enemy characters or traps if it is alerted.
|
||||
//All direct damage from these sources is negated, no exceptions. blob/debuff effects go through as normal.
|
||||
if (enemySeen && (src instanceof Wand || src instanceof LightningTrap.Electricity || src instanceof Char)){
|
||||
GLog.n("The crab notices the attack and blocks with its massive claw.");
|
||||
sprite.showStatus( CharSprite.NEUTRAL, "blocked" );
|
||||
GLog.n( Messages.get(this, "noticed") );
|
||||
sprite.showStatus( CharSprite.NEUTRAL, Messages.get(this, "blocked") );
|
||||
} else {
|
||||
super.damage( dmg, src );
|
||||
}
|
||||
@@ -82,15 +83,4 @@ public class GreatCrab extends Crab {
|
||||
Dungeon.level.drop( new MysteryMeat(), pos );
|
||||
Dungeon.level.drop( new MysteryMeat(), pos ).sprite.drop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This crab is gigantic, even compared to other sewer crabs. " +
|
||||
"Its blue shell is covered in cracks and barnacles, showing great age. " +
|
||||
"It lumbers around slowly, barely keeping balance with its massive claw.\n\n" +
|
||||
"While the crab only has one claw, its size easily compensates. " +
|
||||
"The crab holds the claw infront of itself whenever it sees a threat, shielding " +
|
||||
"itself behind an impenetrable wall of carapace.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.GuardSprite;
|
||||
import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Callback;
|
||||
@@ -42,7 +43,6 @@ public class Guard extends Mob {
|
||||
private boolean chainsUsed = false;
|
||||
|
||||
{
|
||||
name = "prison guard";
|
||||
spriteClass = GuardSprite.class;
|
||||
|
||||
HP = HT = 30;
|
||||
@@ -104,7 +104,7 @@ public class Guard extends Mob {
|
||||
return false;
|
||||
} else {
|
||||
final int newPosFinal = newPos;
|
||||
yell("get over here!");
|
||||
yell( Messages.get(this, "scorpion") );
|
||||
sprite.parent.add(new Chains(pos, enemy.pos, new Callback() {
|
||||
public void call() {
|
||||
Actor.addDelayed(new Pushing(enemy, enemy.pos, newPosFinal), -1);
|
||||
@@ -134,11 +134,6 @@ public class Guard extends Mob {
|
||||
return 7;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "blocked";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Item createLoot() {
|
||||
//first see if we drop armor, chance is 1/8 (0.125f)
|
||||
@@ -156,13 +151,6 @@ public class Guard extends Mob {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Once keepers of the prison, these guards have long since become no different than the inmates. " +
|
||||
"They shamble like zombies, brainlessly roaming through the halls in search of anything out of place, like you!\n\n" +
|
||||
"They carry chains around their hip, possibly used to pull in enemies to close range.";
|
||||
}
|
||||
|
||||
private final String CHAINSUSED = "chainsused";
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -58,7 +59,6 @@ public class King extends Mob {
|
||||
private static final int MAX_ARMY_SIZE = 5;
|
||||
|
||||
{
|
||||
name = "King of Dwarves";
|
||||
spriteClass = KingSprite.class;
|
||||
|
||||
HP = HT = 300;
|
||||
@@ -103,11 +103,6 @@ public class King extends Mob {
|
||||
return 14;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "parried";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean getCloser( int target ) {
|
||||
return canTryToSummon() ?
|
||||
@@ -168,7 +163,7 @@ public class King extends Mob {
|
||||
GLog.p("Your beacon grows stronger!");
|
||||
}
|
||||
|
||||
yell( "You cannot kill me, " + Dungeon.hero.givenName() + "... I am... immortal..." );
|
||||
yell( Messages.get(this, "defeated") );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -225,26 +220,17 @@ public class King extends Mob {
|
||||
} while (dist < undeadsToSummon);
|
||||
}
|
||||
|
||||
yell( "Arise, slaves!" );
|
||||
yell( Messages.get(this, "arise") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notice() {
|
||||
super.notice();
|
||||
BossHealthBar.assignBoss(this);
|
||||
yell( "How dare you!" );
|
||||
yell( Messages.get(this, "notice") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"The last king of dwarves was known for his deep understanding of processes of life and death. " +
|
||||
"He has persuaded members of his court to participate in a ritual, that should have granted them " +
|
||||
"eternal youthfulness. In the end he was the only one, who got it - and an army of undead " +
|
||||
"as a bonus.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( ToxicGas.class );
|
||||
RESISTANCES.add( Death.class );
|
||||
@@ -257,7 +243,7 @@ public class King extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Paralysis.class );
|
||||
IMMUNITIES.add( Vertigo.class );
|
||||
@@ -273,7 +259,6 @@ public class King extends Mob {
|
||||
public static int count = 0;
|
||||
|
||||
{
|
||||
name = "undead dwarf";
|
||||
spriteClass = UndeadSprite.class;
|
||||
|
||||
HP = HT = 28;
|
||||
@@ -338,20 +323,8 @@ public class King extends Mob {
|
||||
public int dr() {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "blocked";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These undead dwarves, risen by the will of the King of Dwarves, were members of his court. " +
|
||||
"They appear as skeletons with a stunning amount of facial hair.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Death.class );
|
||||
IMMUNITIES.add( Paralysis.class );
|
||||
|
||||
@@ -48,7 +48,6 @@ public class Mimic extends Mob {
|
||||
private int level;
|
||||
|
||||
{
|
||||
name = "mimic";
|
||||
spriteClass = MimicSprite.class;
|
||||
|
||||
properties.add(Property.DEMONIC);
|
||||
@@ -69,7 +68,7 @@ public class Mimic extends Mob {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void restoreFromBundle( Bundle bundle ) {
|
||||
items = new ArrayList<Item>( (Collection<Item>) ((Collection<?>) bundle.getCollection( ITEMS ) ));
|
||||
items = new ArrayList<>( (Collection<Item>) ((Collection<?>) bundle.getCollection( ITEMS ) ));
|
||||
adjustStats( bundle.getInt( LEVEL ) );
|
||||
super.restoreFromBundle(bundle);
|
||||
}
|
||||
@@ -112,17 +111,10 @@ public class Mimic extends Mob {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Mimics are magical creatures which can take any shape they wish. In dungeons they almost always " +
|
||||
"choose a shape of a treasure chest, because they know how to beckon an adventurer.";
|
||||
}
|
||||
|
||||
public static Mimic spawnAt( int pos, List<Item> items ) {
|
||||
Char ch = Actor.findChar( pos );
|
||||
if (ch != null) {
|
||||
ArrayList<Integer> candidates = new ArrayList<Integer>();
|
||||
ArrayList<Integer> candidates = new ArrayList<>();
|
||||
for (int n : Level.NEIGHBOURS8) {
|
||||
int cell = pos + n;
|
||||
if ((Level.passable[cell] || Level.avoid[cell]) && Actor.findChar( cell ) == null) {
|
||||
@@ -146,7 +138,7 @@ public class Mimic extends Mob {
|
||||
}
|
||||
|
||||
Mimic m = new Mimic();
|
||||
m.items = new ArrayList<Item>( items );
|
||||
m.items = new ArrayList<>( items );
|
||||
m.adjustStats( Dungeon.depth );
|
||||
m.pos = pos;
|
||||
m.state = m.HUNTING;
|
||||
@@ -174,7 +166,7 @@ public class Mimic extends Mob {
|
||||
return m;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( ScrollOfPsionicBlast.class );
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level.Feeling;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||
@@ -56,6 +57,7 @@ import java.util.HashSet;
|
||||
public abstract class Mob extends Char {
|
||||
|
||||
{
|
||||
name = Messages.get(this, "name");
|
||||
actPriority = 2; //hero gets priority over mobs.
|
||||
}
|
||||
|
||||
@@ -184,7 +186,7 @@ public abstract class Mob extends Char {
|
||||
if ( enemy == null || !enemy.isAlive() || state == WANDERING ||
|
||||
((buff( Amok.class ) != null || buff(Corruption.class) != null) && enemy == Dungeon.hero )) {
|
||||
|
||||
HashSet<Char> enemies = new HashSet<Char>();
|
||||
HashSet<Char> enemies = new HashSet<>();
|
||||
|
||||
//if the mob is amoked or corrupted...
|
||||
if ( buff(Amok.class) != null || buff(Corruption.class) != null) {
|
||||
@@ -241,7 +243,7 @@ public abstract class Mob extends Char {
|
||||
super.add( buff );
|
||||
if (buff instanceof Amok) {
|
||||
if (sprite != null) {
|
||||
sprite.showStatus( CharSprite.NEGATIVE, TXT_RAGE );
|
||||
sprite.showStatus( CharSprite.NEGATIVE, Messages.get(this, "rage") );
|
||||
}
|
||||
state = HUNTING;
|
||||
} else if (buff instanceof Terror) {
|
||||
@@ -257,7 +259,7 @@ public abstract class Mob extends Char {
|
||||
public void remove( Buff buff ) {
|
||||
super.remove( buff );
|
||||
if (buff instanceof Terror) {
|
||||
sprite.showStatus( CharSprite.NEGATIVE, TXT_RAGE );
|
||||
sprite.showStatus( CharSprite.NEGATIVE, Messages.get(this, "rage") );
|
||||
state = HUNTING;
|
||||
}
|
||||
}
|
||||
@@ -426,7 +428,7 @@ public abstract class Mob extends Char {
|
||||
|
||||
int exp = exp();
|
||||
if (exp > 0) {
|
||||
Dungeon.hero.sprite.showStatus( CharSprite.POSITIVE, TXT_EXP, exp );
|
||||
Dungeon.hero.sprite.showStatus( CharSprite.POSITIVE, Messages.get(this, "exp", exp) );
|
||||
Dungeon.hero.earnExp( exp );
|
||||
}
|
||||
}
|
||||
@@ -456,7 +458,7 @@ public abstract class Mob extends Char {
|
||||
}
|
||||
|
||||
if (Dungeon.hero.isAlive() && !Dungeon.visible[pos]) {
|
||||
GLog.i( TXT_DIED );
|
||||
GLog.i( Messages.get(this, "dead") );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -497,7 +499,7 @@ public abstract class Mob extends Char {
|
||||
}
|
||||
|
||||
public String description() {
|
||||
return "Real description is coming soon!";
|
||||
return Messages.get(this, "desc");
|
||||
}
|
||||
|
||||
public void notice() {
|
||||
@@ -514,8 +516,8 @@ public abstract class Mob extends Char {
|
||||
}
|
||||
|
||||
public interface AiState {
|
||||
public boolean act( boolean enemyInFOV, boolean justAlerted );
|
||||
public String status();
|
||||
boolean act( boolean enemyInFOV, boolean justAlerted );
|
||||
String status();
|
||||
}
|
||||
|
||||
protected class Sleeping implements AiState {
|
||||
@@ -554,7 +556,7 @@ public abstract class Mob extends Char {
|
||||
|
||||
@Override
|
||||
public String status() {
|
||||
return Utils.format( "This %s is sleeping", name );
|
||||
return Messages.get(this, "status", name );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -591,7 +593,7 @@ public abstract class Mob extends Char {
|
||||
|
||||
@Override
|
||||
public String status() {
|
||||
return Utils.format( "This %s is wandering", name );
|
||||
return Messages.get(this, "status", name );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -630,7 +632,7 @@ public abstract class Mob extends Char {
|
||||
|
||||
@Override
|
||||
public String status() {
|
||||
return Utils.format( "This %s is hunting", name );
|
||||
return Messages.get(this, "status", name );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -668,7 +670,7 @@ public abstract class Mob extends Char {
|
||||
|
||||
@Override
|
||||
public String status() {
|
||||
return Utils.format( "This %s is fleeing", name );
|
||||
return Messages.get(this, "status", name );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,7 +687,7 @@ public abstract class Mob extends Char {
|
||||
|
||||
@Override
|
||||
public String status() {
|
||||
return Utils.format( "This %s is passive", name );
|
||||
return Messages.get(this, "status", name );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,17 +31,15 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Knuckles;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.MonkSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Monk extends Mob {
|
||||
|
||||
public static final String TXT_DISARM = "%s has knocked the %s from your hands!";
|
||||
|
||||
{
|
||||
name = "dwarf monk";
|
||||
spriteClass = MonkSprite.class;
|
||||
|
||||
HP = HT = 70;
|
||||
@@ -76,11 +74,6 @@ public class Monk extends Mob {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "parried";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void die( Object cause ) {
|
||||
Imp.Quest.process( this );
|
||||
@@ -106,7 +99,7 @@ public class Monk extends Mob {
|
||||
Dungeon.quickslot.clearItem(weapon);
|
||||
weapon.updateQuickslot();
|
||||
Dungeon.level.drop(weapon, hero.pos).sprite.drop();
|
||||
GLog.w(TXT_DISARM, name, weapon.name());
|
||||
GLog.w(Messages.get(this, "diarm", weapon.name()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -114,14 +107,7 @@ public class Monk extends Mob {
|
||||
return damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These monks are fanatics, who devoted themselves to protecting their city's secrets from all aliens. " +
|
||||
"They don't use any armor or weapons, relying solely on the art of hand-to-hand combat.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Amok.class );
|
||||
IMMUNITIES.add( Terror.class );
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.NewbornElementalSprite;
|
||||
public class NewbornElemental extends Elemental {
|
||||
|
||||
{
|
||||
name = "newborn fire elemental";
|
||||
spriteClass = NewbornElementalSprite.class;
|
||||
|
||||
HT = 65;
|
||||
@@ -62,13 +61,4 @@ public class NewbornElemental extends Elemental {
|
||||
super.die(cause);
|
||||
Dungeon.level.drop( new Embers(), pos ).sprite.drop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return "Fire elementals are a byproduct of summoning greater entities. " +
|
||||
"They are too chaotic in their nature to be controlled by even the most powerful demonologist.\n\n" +
|
||||
"This fire elemental is freshy summoned, and is weakened as a result. " +
|
||||
"In this state is it especially vulnerable to the cold. " +
|
||||
"Its offensive capabilities are still great though, caution is advised.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +39,6 @@ import com.watabou.utils.Random;
|
||||
public class Piranha extends Mob {
|
||||
|
||||
{
|
||||
name = "giant piranha";
|
||||
spriteClass = PiranhaSprite.class;
|
||||
|
||||
baseSpeed = 2f;
|
||||
@@ -140,15 +139,8 @@ public class Piranha extends Mob {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These carnivorous fish are not natural inhabitants of underground pools. " +
|
||||
"They were bred specifically to protect flooded treasure vaults.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Burning.class );
|
||||
IMMUNITIES.add( Paralysis.class );
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.watabou.utils.Random;
|
||||
public class Rat extends Mob {
|
||||
|
||||
{
|
||||
name = "marsupial rat";
|
||||
spriteClass = RatSprite.class;
|
||||
|
||||
HP = HT = 8;
|
||||
@@ -51,11 +50,4 @@ public class Rat extends Mob {
|
||||
public int dr() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Marsupial rats are aggressive but rather weak denizens " +
|
||||
"of the sewers. They have a nasty bite, but are only life threatening in large numbers.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@ import java.util.HashSet;
|
||||
public class RotHeart extends Mob {
|
||||
|
||||
{
|
||||
name = "rot heart";
|
||||
spriteClass = RotHeartSprite.class;
|
||||
|
||||
HP = HT = 80;
|
||||
@@ -102,14 +101,6 @@ public class RotHeart extends Mob {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"A Rotberry's fruit is very unique. Instead of rotting away and providing nutrients, the fruit grows, " +
|
||||
"hardens, and encompasses the seed. It provides protection for the internal organs which grow " +
|
||||
"inside the fruit. This giant orb is referred to as the heart of an adult rotberry plant.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( ToxicGas.class );
|
||||
|
||||
@@ -36,7 +36,6 @@ import java.util.HashSet;
|
||||
public class RotLasher extends Mob {
|
||||
|
||||
{
|
||||
name = "rot lasher";
|
||||
spriteClass = RotLasherSprite.class;
|
||||
|
||||
HP = HT = 40;
|
||||
@@ -101,14 +100,6 @@ public class RotLasher extends Mob {
|
||||
return 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"The rot lasher is a part of a mature rotberry plant's root structure, and also their primary means of defence. " +
|
||||
"Lashers are stuck into the ground, but will violently assault anything that gets near to them. " +
|
||||
"When there is no nearby prey, they stand motionless, attempting to blend in with surrounding vegetation.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( ToxicGas.class );
|
||||
@@ -119,10 +110,5 @@ public class RotLasher extends Mob {
|
||||
return IMMUNITIES;
|
||||
}
|
||||
|
||||
private class Waiting extends Mob.Wandering{
|
||||
@Override
|
||||
public String status() {
|
||||
return Utils.format("This %s is idle", name);
|
||||
}
|
||||
}
|
||||
private class Waiting extends Mob.Wandering{}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,6 @@ import com.watabou.utils.Random;
|
||||
public class Scorpio extends Mob {
|
||||
|
||||
{
|
||||
name = "scorpio";
|
||||
spriteClass = ScorpioSprite.class;
|
||||
|
||||
HP = HT = 95;
|
||||
@@ -106,14 +105,7 @@ public class Scorpio extends Mob {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These huge arachnid-like demonic creatures avoid close combat by all means, " +
|
||||
"firing crippling serrated spikes from long distances.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( Leech.class );
|
||||
RESISTANCES.add( Poison.class );
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.watabou.utils.Random;
|
||||
public class Senior extends Monk {
|
||||
|
||||
{
|
||||
name = "senior monk";
|
||||
spriteClass = SeniorSprite.class;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.watabou.noosa.Camera;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ResultDescriptions;
|
||||
@@ -42,10 +43,7 @@ public class Shaman extends Mob implements Callback {
|
||||
|
||||
private static final float TIME_TO_ZAP = 1f;
|
||||
|
||||
private static final String TXT_LIGHTNING_KILLED = "%s's lightning bolt killed you...";
|
||||
|
||||
{
|
||||
name = "gnoll shaman";
|
||||
spriteClass = ShamanSprite.class;
|
||||
|
||||
HP = HT = 18;
|
||||
@@ -89,7 +87,7 @@ public class Shaman extends Mob implements Callback {
|
||||
|
||||
boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos];
|
||||
if (visible) {
|
||||
((ShamanSprite)sprite).zap( enemy.pos );
|
||||
sprite.zap( enemy.pos );
|
||||
}
|
||||
|
||||
spend( TIME_TO_ZAP );
|
||||
@@ -110,7 +108,7 @@ public class Shaman extends Mob implements Callback {
|
||||
|
||||
if (!enemy.isAlive()) {
|
||||
Dungeon.fail( Utils.format( ResultDescriptions.MOB, Utils.indefinite( name ) ) );
|
||||
GLog.n( TXT_LIGHTNING_KILLED, name );
|
||||
GLog.n( Messages.get(this, "zap_kill") );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -125,16 +123,8 @@ public class Shaman extends Mob implements Callback {
|
||||
public void call() {
|
||||
next();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"The most intelligent gnolls can master shamanistic magic. Gnoll shamans prefer " +
|
||||
"battle spells to compensate for lack of might, not hesitating to use them " +
|
||||
"on those who question their status in a tribe.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( LightningTrap.Electricity.class );
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ShieldedSprite;
|
||||
public class Shielded extends Brute {
|
||||
|
||||
{
|
||||
name = "shielded brute";
|
||||
spriteClass = ShieldedSprite.class;
|
||||
|
||||
defenseSkill = 20;
|
||||
@@ -37,11 +36,6 @@ public class Shielded extends Brute {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "blocked";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void die( Object cause ) {
|
||||
super.die( cause );
|
||||
|
||||
@@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
@@ -41,7 +42,6 @@ public class Skeleton extends Mob {
|
||||
private static final String TXT_HERO_KILLED = "You were killed by the explosion of bones...";
|
||||
|
||||
{
|
||||
name = "skeleton";
|
||||
spriteClass = SkeletonSprite.class;
|
||||
|
||||
HP = HT = 25;
|
||||
@@ -84,7 +84,7 @@ public class Skeleton extends Mob {
|
||||
|
||||
if (heroKilled) {
|
||||
Dungeon.fail( Utils.format( ResultDescriptions.MOB, Utils.indefinite( name ) ) );
|
||||
GLog.n( TXT_HERO_KILLED );
|
||||
GLog.n( Messages.get(this, "explo_kill") );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,20 +110,7 @@ public class Skeleton extends Mob {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "blocked";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Skeletons are composed of corpses bones from unlucky adventurers and inhabitants of the dungeon, " +
|
||||
"animated by emanations of evil magic from the depths below. After they have been " +
|
||||
"damaged enough, they disintegrate in an explosion of bones.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Death.class );
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@ import com.watabou.utils.Random;
|
||||
public class Spinner extends Mob {
|
||||
|
||||
{
|
||||
name = "cave spinner";
|
||||
spriteClass = SpinnerSprite.class;
|
||||
|
||||
HP = HT = 50;
|
||||
@@ -96,14 +95,7 @@ public class Spinner extends Mob {
|
||||
super.move(step);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"These greenish furry cave spiders try to avoid direct combat, preferring to wait in the distance " +
|
||||
"while their victim, entangled in the spinner's excreted cobweb, slowly dies from their poisonous bite.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
|
||||
static {
|
||||
RESISTANCES.add(Poison.class);
|
||||
@@ -114,7 +106,7 @@ public class Spinner extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
|
||||
static {
|
||||
IMMUNITIES.add(Roots.class);
|
||||
|
||||
@@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon.Enchantment;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Death;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Leech;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.StatueSprite;
|
||||
import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
@@ -147,13 +148,11 @@ public class Statue extends Mob {
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"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 _" + weapon.name() + "_, it's wielding, looks real.";
|
||||
return Messages.get(this, "desc", weapon.name());
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( ToxicGas.class );
|
||||
RESISTANCES.add( Poison.class );
|
||||
|
||||
@@ -47,7 +47,6 @@ public class Succubus extends Mob {
|
||||
private int delay = 0;
|
||||
|
||||
{
|
||||
name = "succubus";
|
||||
spriteClass = SuccubusSprite.class;
|
||||
|
||||
HP = HT = 80;
|
||||
@@ -106,7 +105,7 @@ public class Succubus extends Mob {
|
||||
cell = route.path.get(route.dist-1);
|
||||
|
||||
if (Level.avoid[ cell ]){
|
||||
ArrayList<Integer> candidates = new ArrayList<Integer>();
|
||||
ArrayList<Integer> candidates = new ArrayList<>();
|
||||
for (int n : Level.NEIGHBOURS8) {
|
||||
cell = route.collisionPos + n;
|
||||
if (Level.passable[cell] && Actor.findChar( cell ) == null) {
|
||||
@@ -136,14 +135,7 @@ public class Succubus extends Mob {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"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.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( Leech.class );
|
||||
}
|
||||
@@ -153,7 +145,7 @@ public class Succubus extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Sleep.class );
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ import com.watabou.utils.Random;
|
||||
public class Swarm extends Mob {
|
||||
|
||||
{
|
||||
name = "swarm of flies";
|
||||
spriteClass = SwarmSprite.class;
|
||||
|
||||
HP = HT = 50;
|
||||
@@ -86,7 +85,7 @@ public class Swarm extends Mob {
|
||||
public int defenseProc( Char enemy, int damage ) {
|
||||
|
||||
if (HP >= damage + 2) {
|
||||
ArrayList<Integer> candidates = new ArrayList<Integer>();
|
||||
ArrayList<Integer> candidates = new ArrayList<>();
|
||||
boolean[] passable = Level.passable;
|
||||
|
||||
int[] neighbours = {pos + 1, pos - 1, pos + Level.WIDTH, pos - Level.WIDTH};
|
||||
@@ -122,11 +121,6 @@ public class Swarm extends Mob {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "evaded";
|
||||
}
|
||||
|
||||
private Swarm split() {
|
||||
Swarm clone = new Swarm();
|
||||
clone.generation = generation + 1;
|
||||
@@ -155,11 +149,4 @@ public class Swarm extends Mob {
|
||||
Dungeon.limitedDrops.swarmHP.count++;
|
||||
return super.createLoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"The deadly swarm of flies buzzes angrily. Every non-magical attack " +
|
||||
"will split it into two smaller but equally dangerous swarms.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.PrisonBossLevel;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SpearTrap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -54,7 +55,6 @@ import com.watabou.utils.Random;
|
||||
public class Tengu extends Mob {
|
||||
|
||||
{
|
||||
name = "Tengu";
|
||||
spriteClass = TenguSprite.class;
|
||||
|
||||
HP = HT = 120;
|
||||
@@ -116,7 +116,7 @@ public class Tengu extends Mob {
|
||||
//phase 1 of the fight is over
|
||||
if (beforeHitHP > HT/2 && HP <= HT/2){
|
||||
HP = (HT/2)-1;
|
||||
yell("Let's make this interesting...");
|
||||
yell(Messages.get(this, "interesting"));
|
||||
((PrisonBossLevel)Dungeon.level).progress();
|
||||
BossHealthBar.bleed(true);
|
||||
|
||||
@@ -144,7 +144,7 @@ public class Tengu extends Mob {
|
||||
GLog.p("Your beacon grows stronger!");
|
||||
}
|
||||
|
||||
yell( "Free at last..." );
|
||||
yell( Messages.get(this, "defeated") );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -216,20 +216,12 @@ public class Tengu extends Mob {
|
||||
BossHealthBar.assignBoss(this);
|
||||
if (HP <= HT/2) BossHealthBar.bleed(true);
|
||||
if (HP == HT) {
|
||||
yell("You're mine, " + Dungeon.hero.givenName() + "!");
|
||||
yell(Messages.get(this, "notice_mine", Dungeon.hero.givenName()));
|
||||
} else {
|
||||
yell("Face me, " + Dungeon.hero.givenName() + "!");
|
||||
yell(Messages.get(this, "notice_face", Dungeon.hero.givenName()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"A famous and enigmatic assassin, named for the mask grafted to his face.\n\n" +
|
||||
"Tengu is held down with large clasps on his wrists and knees, though he seems to have gotten rid of his chains long ago.\n\n" +
|
||||
"He will try to use traps, deceptive magic, and precise attacks to eliminate the only thing stopping his escape: you.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( ToxicGas.class );
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ThiefSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -149,7 +150,7 @@ public class Thief extends Mob {
|
||||
|
||||
if (item != null && !item.unique && item.level() < 1 ) {
|
||||
|
||||
GLog.w( TXT_STOLE, this.name, item.name() );
|
||||
GLog.w( Messages.get(this, "stole", item.name()) );
|
||||
Dungeon.quickslot.clearItem( item );
|
||||
item.updateQuickslot();
|
||||
|
||||
@@ -170,15 +171,10 @@ public class Thief extends Mob {
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
String desc =
|
||||
"Though these inmates roam free of their cells, this place is still their prison. " +
|
||||
"Over time, this place has taken their minds as well as their freedom. " +
|
||||
"Long ago, these crazy thieves and bandits have forgotten who they are and why they steal.\n\n" +
|
||||
"These enemies are more likely to steal and run than they are to fight. " +
|
||||
"Make sure to keep them in sight, or you might never see your stolen item again.";
|
||||
String desc = super.description();
|
||||
|
||||
if (item != null) {
|
||||
desc += String.format( TXT_CARRIES, Utils.capitalize( this.name ), item.name() );
|
||||
desc += Messages.get(this, "carries", item.name() );
|
||||
}
|
||||
|
||||
return desc;
|
||||
@@ -189,7 +185,7 @@ public class Thief extends Mob {
|
||||
protected void nowhereToRun() {
|
||||
if (buff( Terror.class ) == null && buff( Corruption.class ) == null) {
|
||||
if (enemySeen) {
|
||||
sprite.showStatus(CharSprite.NEGATIVE, TXT_RAGE);
|
||||
sprite.showStatus(CharSprite.NEGATIVE, Messages.get(this, "rage"));
|
||||
state = HUNTING;
|
||||
} else {
|
||||
|
||||
@@ -212,7 +208,7 @@ public class Thief extends Mob {
|
||||
|
||||
}
|
||||
|
||||
if (item != null) GLog.n("The thief gets away with your " + item.name() + "!");
|
||||
if (item != null) GLog.n( Messages.get(this, "escapes", item.name()));
|
||||
item = null;
|
||||
state = WANDERING;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Death;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.WarlockSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -44,10 +45,7 @@ public class Warlock extends Mob implements Callback {
|
||||
|
||||
private static final float TIME_TO_ZAP = 1f;
|
||||
|
||||
private static final String TXT_SHADOWBOLT_KILLED = "%s's shadow bolt killed you...";
|
||||
|
||||
{
|
||||
name = "dwarf warlock";
|
||||
spriteClass = WarlockSprite.class;
|
||||
|
||||
HP = HT = 70;
|
||||
@@ -92,7 +90,7 @@ public class Warlock extends Mob implements Callback {
|
||||
|
||||
boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos];
|
||||
if (visible) {
|
||||
((WarlockSprite)sprite).zap( enemy.pos );
|
||||
sprite.zap( enemy.pos );
|
||||
} else {
|
||||
zap();
|
||||
}
|
||||
@@ -114,7 +112,7 @@ public class Warlock extends Mob implements Callback {
|
||||
|
||||
if (!enemy.isAlive() && enemy == Dungeon.hero) {
|
||||
Dungeon.fail( Utils.format( ResultDescriptions.MOB, Utils.indefinite( name ) ) );
|
||||
GLog.n( TXT_SHADOWBOLT_KILLED, name );
|
||||
GLog.n( Messages.get(this, "bolt_kill") );
|
||||
}
|
||||
} else {
|
||||
enemy.sprite.showStatus( CharSprite.NEUTRAL, enemy.defenseVerb() );
|
||||
@@ -147,16 +145,8 @@ public class Warlock extends Mob implements Callback {
|
||||
|
||||
return loot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"When dwarves' interests have shifted from engineering to arcane arts, " +
|
||||
"warlocks have come to power in the city. They started with elemental magic, " +
|
||||
"but soon switched to demonology and necromancy.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( Death.class );
|
||||
}
|
||||
|
||||
@@ -42,7 +42,6 @@ public class Wraith extends Mob {
|
||||
private int level;
|
||||
|
||||
{
|
||||
name = "wraith";
|
||||
spriteClass = WraithSprite.class;
|
||||
|
||||
HP = HT = 1;
|
||||
@@ -83,24 +82,12 @@ public class Wraith extends Mob {
|
||||
defenseSkill = attackSkill( null ) * 5;
|
||||
enemySeen = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "evaded";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean reset() {
|
||||
state = WANDERING;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"A wraith is a vengeful spirit of a sinner, whose grave or tomb was disturbed. " +
|
||||
"Being an ethereal entity, it is very hard to hit with a regular weapon.";
|
||||
}
|
||||
|
||||
public static void spawnAround( int pos ) {
|
||||
for (int n : Level.NEIGHBOURS4) {
|
||||
@@ -131,7 +118,7 @@ public class Wraith extends Mob {
|
||||
}
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Death.class );
|
||||
IMMUNITIES.add( Terror.class );
|
||||
|
||||
@@ -47,6 +47,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBla
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Death;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.BurningFistSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
@@ -62,7 +63,6 @@ import com.watabou.utils.Random;
|
||||
public class Yog extends Mob {
|
||||
|
||||
{
|
||||
name = "Yog-Dzewa";
|
||||
spriteClass = YogSprite.class;
|
||||
|
||||
HP = HT = 300;
|
||||
@@ -76,11 +76,6 @@ public class Yog extends Mob {
|
||||
properties.add(Property.DEMONIC);
|
||||
}
|
||||
|
||||
private static final String TXT_DESC =
|
||||
"Yog-Dzewa is an Old God, a powerful entity from the realms of chaos. A century ago, the ancient dwarves " +
|
||||
"barely won the war against its army of demons, but were unable to kill the god itself. Instead, they then " +
|
||||
"imprisoned it in the halls below their city, believing it to be too weak to rise ever again.";
|
||||
|
||||
public Yog() {
|
||||
super();
|
||||
}
|
||||
@@ -133,7 +128,7 @@ public class Yog extends Mob {
|
||||
@Override
|
||||
public int defenseProc( Char enemy, int damage ) {
|
||||
|
||||
ArrayList<Integer> spawnPoints = new ArrayList<Integer>();
|
||||
ArrayList<Integer> spawnPoints = new ArrayList<>();
|
||||
|
||||
for (int i=0; i < Level.NEIGHBOURS8.length; i++) {
|
||||
int p = pos + Level.NEIGHBOURS8[i];
|
||||
@@ -177,23 +172,17 @@ public class Yog extends Mob {
|
||||
Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop();
|
||||
super.die( cause );
|
||||
|
||||
yell( "..." );
|
||||
yell( Messages.get(this, "defeated") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notice() {
|
||||
super.notice();
|
||||
BossHealthBar.assignBoss(this);
|
||||
yell( "Hope is an illusion..." );
|
||||
yell( Messages.get(this, "notice") );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return TXT_DESC;
|
||||
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
|
||||
IMMUNITIES.add( Death.class );
|
||||
@@ -223,7 +212,6 @@ public class Yog extends Mob {
|
||||
private static final int REGENERATION = 4;
|
||||
|
||||
{
|
||||
name = "rotting fist";
|
||||
spriteClass = RottingFistSprite.class;
|
||||
|
||||
HP = HT = 300;
|
||||
@@ -280,13 +268,7 @@ public class Yog extends Mob {
|
||||
if (lock != null) lock.addTime(dmg*0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return TXT_DESC;
|
||||
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( ToxicGas.class );
|
||||
RESISTANCES.add( Death.class );
|
||||
@@ -298,7 +280,7 @@ public class Yog extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Amok.class );
|
||||
IMMUNITIES.add( Sleep.class );
|
||||
@@ -366,7 +348,7 @@ public class Yog extends Mob {
|
||||
|
||||
if (!enemy.isAlive() && enemy == Dungeon.hero) {
|
||||
Dungeon.fail( Utils.format( ResultDescriptions.UNIQUE, name ) );
|
||||
GLog.n( TXT_KILL, name );
|
||||
GLog.n( Messages.get(Char.class, "kill", name) );
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -397,13 +379,7 @@ public class Yog extends Mob {
|
||||
if (lock != null) lock.addTime(dmg*0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return TXT_DESC;
|
||||
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> RESISTANCES = new HashSet<>();
|
||||
static {
|
||||
RESISTANCES.add( ToxicGas.class );
|
||||
RESISTANCES.add( Death.class );
|
||||
@@ -415,7 +391,7 @@ public class Yog extends Mob {
|
||||
return RESISTANCES;
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Amok.class );
|
||||
IMMUNITIES.add( Sleep.class );
|
||||
@@ -434,7 +410,6 @@ public class Yog extends Mob {
|
||||
public static class Larva extends Mob {
|
||||
|
||||
{
|
||||
name = "god's larva";
|
||||
spriteClass = LarvaSprite.class;
|
||||
|
||||
HP = HT = 25;
|
||||
@@ -461,11 +436,6 @@ public class Yog extends Mob {
|
||||
public int dr() {
|
||||
return 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return TXT_DESC;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,32 +46,8 @@ import com.watabou.utils.Bundle;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Blacksmith extends NPC {
|
||||
|
||||
private static final String TXT_GOLD_1 =
|
||||
"Hey human! Wanna be useful, eh? Take dis pickaxe and mine me some _dark gold ore_, _15 pieces_ should be enough. " +
|
||||
"What do you mean, how am I gonna pay? You greedy...\n" +
|
||||
"Ok, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, " +
|
||||
"I'm the only blacksmith around.";
|
||||
private static final String TXT_BLOOD_1 =
|
||||
"Hey human! Wanna be useful, eh? Take dis pickaxe and _kill a bat_ wit' it, I need its blood on the head. " +
|
||||
"What do you mean, how am I gonna pay? You greedy...\n" +
|
||||
"Ok, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, " +
|
||||
"I'm the only blacksmith around.";
|
||||
private static final String TXT2 =
|
||||
"Are you kiddin' me? Where is my pickaxe?!";
|
||||
private static final String TXT3 =
|
||||
"Dark gold ore. 15 pieces. Seriously, is it dat hard?";
|
||||
private static final String TXT4 =
|
||||
"I said I need bat blood on the pickaxe. Chop chop!";
|
||||
private static final String TXT_COMPLETED =
|
||||
"Oh, you have returned... Better late dan never.";
|
||||
private static final String TXT_GET_LOST =
|
||||
"I'm busy. Get lost!";
|
||||
|
||||
private static final String TXT_LOOKS_BETTER = "your %s certainly looks better now";
|
||||
|
||||
{
|
||||
name = "troll blacksmith";
|
||||
spriteClass = BlacksmithSprite.class;
|
||||
}
|
||||
|
||||
@@ -89,7 +65,7 @@ public class Blacksmith extends NPC {
|
||||
if (!Quest.given) {
|
||||
|
||||
GameScene.show( new WndQuest( this,
|
||||
Quest.alternative ? TXT_BLOOD_1 : TXT_GOLD_1 ) {
|
||||
Quest.alternative ? Messages.get(this, "blood_1") : Messages.get(this, "gold_1") ) {
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
@@ -104,7 +80,7 @@ public class Blacksmith extends NPC {
|
||||
} else {
|
||||
Dungeon.level.drop( pick, Dungeon.hero.pos ).sprite.drop();
|
||||
}
|
||||
};
|
||||
}
|
||||
} );
|
||||
|
||||
Journal.add( Journal.Feature.TROLL );
|
||||
@@ -114,15 +90,15 @@ public class Blacksmith extends NPC {
|
||||
|
||||
Pickaxe pick = Dungeon.hero.belongings.getItem( Pickaxe.class );
|
||||
if (pick == null) {
|
||||
tell( TXT2 );
|
||||
tell( Messages.get(this, "lost_pick") );
|
||||
} else if (!pick.bloodStained) {
|
||||
tell( TXT4 );
|
||||
tell( Messages.get(this, "blood_2") );
|
||||
} else {
|
||||
if (pick.isEquipped( Dungeon.hero )) {
|
||||
pick.doUnequip( Dungeon.hero, false );
|
||||
}
|
||||
pick.detach( Dungeon.hero.belongings.backpack );
|
||||
tell( TXT_COMPLETED );
|
||||
tell( Messages.get(this, "completed") );
|
||||
|
||||
Quest.completed = true;
|
||||
Quest.reforged = false;
|
||||
@@ -133,16 +109,16 @@ public class Blacksmith extends NPC {
|
||||
Pickaxe pick = Dungeon.hero.belongings.getItem( Pickaxe.class );
|
||||
DarkGold gold = Dungeon.hero.belongings.getItem( DarkGold.class );
|
||||
if (pick == null) {
|
||||
tell( TXT2 );
|
||||
tell( Messages.get(this, "lost_pick") );
|
||||
} else if (gold == null || gold.quantity() < 15) {
|
||||
tell( TXT3 );
|
||||
tell( Messages.get(this, "gold_2") );
|
||||
} else {
|
||||
if (pick.isEquipped( Dungeon.hero )) {
|
||||
pick.doUnequip( Dungeon.hero, false );
|
||||
}
|
||||
pick.detach( Dungeon.hero.belongings.backpack );
|
||||
gold.detachAll( Dungeon.hero.belongings.backpack );
|
||||
tell( TXT_COMPLETED );
|
||||
tell( Messages.get(this, "completed") );
|
||||
|
||||
Quest.completed = true;
|
||||
Quest.reforged = false;
|
||||
@@ -155,7 +131,7 @@ public class Blacksmith extends NPC {
|
||||
|
||||
} else {
|
||||
|
||||
tell( TXT_GET_LOST );
|
||||
tell( Messages.get(this, "get_lost") );
|
||||
|
||||
}
|
||||
}
|
||||
@@ -167,27 +143,27 @@ public class Blacksmith extends NPC {
|
||||
public static String verify( Item item1, Item item2 ) {
|
||||
|
||||
if (item1 == item2) {
|
||||
return "Select 2 different items, not the same item twice!";
|
||||
return Messages.get(Blacksmith.class, "same_item");
|
||||
}
|
||||
|
||||
if (item1.getClass() != item2.getClass()) {
|
||||
return "Select 2 items of the same type!";
|
||||
return Messages.get(Blacksmith.class, "diff_type");
|
||||
}
|
||||
|
||||
if (!item1.isIdentified() || !item2.isIdentified()) {
|
||||
return "I need to know what I'm working with, identify them first!";
|
||||
return Messages.get(Blacksmith.class, "un_ided");
|
||||
}
|
||||
|
||||
if (item1.cursed || item2.cursed) {
|
||||
return "I don't work with cursed items!";
|
||||
return Messages.get(Blacksmith.class, "cursed");
|
||||
}
|
||||
|
||||
if (item1.level() < 0 || item2.level() < 0) {
|
||||
return "It's a junk, the quality is too poor!";
|
||||
return Messages.get(Blacksmith.class, "degraded");
|
||||
}
|
||||
|
||||
if (!item1.isUpgradable() || !item2.isUpgradable()) {
|
||||
return "I can't reforge these items!";
|
||||
return Messages.get(Blacksmith.class, "cant_reforge");
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -212,7 +188,7 @@ public class Blacksmith extends NPC {
|
||||
((EquipableItem)first).doUnequip( Dungeon.hero, true );
|
||||
}
|
||||
first.upgrade();
|
||||
GLog.p( TXT_LOOKS_BETTER, first.name() );
|
||||
GLog.p( ScrollOfUpgrade.TXT_LOOKS_BETTER, first.name() );
|
||||
Dungeon.hero.spendAndNext( 2f );
|
||||
Badges.validateItemLevelAquired( first );
|
||||
|
||||
@@ -243,13 +219,6 @@ public class Blacksmith extends NPC {
|
||||
public boolean reset() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This troll blacksmith looks like all trolls look: he is tall and lean, and his skin resembles stone " +
|
||||
"in both color and texture. The troll blacksmith is tinkering with unproportionally small tools.";
|
||||
}
|
||||
|
||||
public static class Quest {
|
||||
|
||||
@@ -308,7 +277,7 @@ public class Blacksmith extends NPC {
|
||||
public static boolean spawn( Collection<Room> rooms ) {
|
||||
if (!spawned && Dungeon.depth > 11 && Random.Int( 15 - Dungeon.depth ) == 0) {
|
||||
|
||||
Room blacksmith = null;
|
||||
Room blacksmith;
|
||||
for (Room r : rooms) {
|
||||
if (r.type == Type.STANDARD && r.width() > 4 && r.height() > 4) {
|
||||
blacksmith = r;
|
||||
|
||||
@@ -39,10 +39,10 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.SewerLevel;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndSadGhost;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -54,7 +54,6 @@ import java.util.HashSet;
|
||||
public class Ghost extends NPC {
|
||||
|
||||
{
|
||||
name = "sad ghost";
|
||||
spriteClass = GhostSprite.class;
|
||||
|
||||
flying = true;
|
||||
@@ -62,39 +61,6 @@ public class Ghost extends NPC {
|
||||
state = WANDERING;
|
||||
}
|
||||
|
||||
private static final String TXT_RAT1 =
|
||||
"Hello %s... Once I was like you - strong and confident... " +
|
||||
"But I was slain by a foul beast... I can't leave this place... Not until I have my revenge... " +
|
||||
"Slay the _fetid rat_, that has taken my life...\n\n" +
|
||||
"It stalks this floor... Spreading filth everywhere... " +
|
||||
"_Beware its cloud of stink and corrosive bite, the acid dissolves in water..._ ";
|
||||
|
||||
private static final String TXT_RAT2 =
|
||||
"Please... Help me... Slay the abomination...\n\n" +
|
||||
"_Fight it near water... Avoid the stench..._";
|
||||
|
||||
private static final String TXT_GNOLL1 =
|
||||
"Hello %s... Once I was like you - strong and confident... " +
|
||||
"But I was slain by a devious foe... I can't leave this place... Not until I have my revenge... " +
|
||||
"Slay the _gnoll trickster_, that has taken my life...\n\n" +
|
||||
"It is not like the other gnolls... It hides and uses thrown weapons... " +
|
||||
"_Beware its poisonous and incendiary darts, don't attack from a distance..._";
|
||||
|
||||
private static final String TXT_GNOLL2 =
|
||||
"Please... Help me... Slay the trickster...\n\n" +
|
||||
"_Don't let it hit you... Get near to it..._";
|
||||
|
||||
private static final String TXT_CRAB1 =
|
||||
"Hello %s... Once I was like you - strong and confident... " +
|
||||
"But I was slain by an ancient creature... I can't leave this place... Not until I have my revenge... " +
|
||||
"Slay the _great crab_, that has taken my life...\n\n" +
|
||||
"It is unnaturally old... With a massive single claw and a thick shell... " +
|
||||
"_Beware its claw, you must surprise the crab or it will block with it..._";
|
||||
|
||||
private static final String TXT_CRAB2 =
|
||||
"Please... Help me... Slay the Crustacean...\n\n" +
|
||||
"_It will always block... When it sees you coming..._";
|
||||
|
||||
public Ghost() {
|
||||
super();
|
||||
|
||||
@@ -106,11 +72,6 @@ public class Ghost extends NPC {
|
||||
return 1000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "evaded";
|
||||
}
|
||||
|
||||
@Override
|
||||
public float speed() {
|
||||
return 0.5f;
|
||||
@@ -148,13 +109,13 @@ public class Ghost extends NPC {
|
||||
switch (Quest.type) {
|
||||
case 1:
|
||||
default:
|
||||
GameScene.show(new WndQuest(this, TXT_RAT2));
|
||||
GameScene.show(new WndQuest(this, Messages.get(this, "rat_2")));
|
||||
break;
|
||||
case 2:
|
||||
GameScene.show(new WndQuest(this, TXT_GNOLL2));
|
||||
GameScene.show(new WndQuest(this, Messages.get(this, "gnoll_2")));
|
||||
break;
|
||||
case 3:
|
||||
GameScene.show(new WndQuest(this, TXT_CRAB2));
|
||||
GameScene.show(new WndQuest(this, Messages.get(this, "crab_2")));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -181,13 +142,13 @@ public class Ghost extends NPC {
|
||||
switch (Quest.type){
|
||||
case 1: default:
|
||||
questBoss = new FetidRat();
|
||||
txt_quest = Utils.format(TXT_RAT1, Dungeon.hero.givenName()); break;
|
||||
txt_quest = Messages.get(this, "rat_1", Dungeon.hero.givenName()); break;
|
||||
case 2:
|
||||
questBoss = new GnollTrickster();
|
||||
txt_quest = Utils.format(TXT_GNOLL1, Dungeon.hero.givenName()); break;
|
||||
txt_quest = Messages.get(this, "gnoll_1", Dungeon.hero.givenName()); break;
|
||||
case 3:
|
||||
questBoss = new GreatCrab();
|
||||
txt_quest = Utils.format(TXT_CRAB1, Dungeon.hero.givenName()); break;
|
||||
txt_quest = Messages.get(this, "crab_1", Dungeon.hero.givenName()); break;
|
||||
}
|
||||
|
||||
questBoss.pos = Dungeon.level.randomRespawnCell();
|
||||
@@ -201,15 +162,8 @@ public class Ghost extends NPC {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"The ghost is barely visible. It looks like a shapeless " +
|
||||
"spot of faint light with a sorrowful face.";
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( Paralysis.class );
|
||||
IMMUNITIES.add( Roots.class );
|
||||
@@ -220,8 +174,6 @@ public class Ghost extends NPC {
|
||||
return IMMUNITIES;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class Quest {
|
||||
|
||||
private static boolean spawned;
|
||||
@@ -337,7 +289,7 @@ public class Ghost extends NPC {
|
||||
|
||||
public static void process() {
|
||||
if (spawned && given && !processed && (depth == Dungeon.depth)) {
|
||||
GLog.n("sad ghost: Thank you... come find me...");
|
||||
GLog.n( Messages.get(Ghost.class, "find_me") );
|
||||
for (Mob m : Dungeon.level.mobs){
|
||||
if (m instanceof Ghost)
|
||||
m.beckon(Dungeon.hero.pos);
|
||||
|
||||
@@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Journal;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Golem;
|
||||
@@ -32,10 +31,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.DwarfToken;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.CityLevel;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Room;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ImpSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndImp;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest;
|
||||
import com.watabou.utils.Bundle;
|
||||
@@ -44,36 +42,9 @@ import com.watabou.utils.Random;
|
||||
public class Imp extends NPC {
|
||||
|
||||
{
|
||||
name = "ambitious imp";
|
||||
spriteClass = ImpSprite.class;
|
||||
}
|
||||
|
||||
private static final String TXT_GOLEMS1 =
|
||||
"Are you an adventurer? I love adventurers! You can always rely on them " +
|
||||
"if something needs to be killed. Am I right? For a bounty of course ;)\n" +
|
||||
"In my case this is _golems_ who need to be killed. You see, I'm going to start a " +
|
||||
"little business here, but these stupid golems are bad for business! " +
|
||||
"It's very hard to negotiate with wandering lumps of granite, damn them! " +
|
||||
"So please, kill... let's say _6 of them_ and a reward is yours.";
|
||||
|
||||
private static final String TXT_MONKS1 =
|
||||
"Are you an adventurer? I love adventurers! You can always rely on them " +
|
||||
"if something needs to be killed. Am I right? For a bounty of course ;)\n" +
|
||||
"In my case this is _monks_ who need to be killed. You see, I'm going to start a " +
|
||||
"little business here, but these lunatics don't buy anything themselves and " +
|
||||
"will scare away other customers. " +
|
||||
"So please, kill... let's say _8 of them_ and a reward is yours.";
|
||||
|
||||
private static final String TXT_GOLEMS2 =
|
||||
"How is your golem safari going?";
|
||||
|
||||
private static final String TXT_MONKS2 =
|
||||
"Oh, you are still alive! I knew that your kung-fu is stronger ;) " +
|
||||
"Just don't forget to grab these monks' tokens.";
|
||||
|
||||
private static final String TXT_CYA = "See you, %s!";
|
||||
private static final String TXT_HEY = "Psst, %s!";
|
||||
|
||||
private boolean seenBefore = false;
|
||||
|
||||
@Override
|
||||
@@ -81,7 +52,7 @@ public class Imp extends NPC {
|
||||
|
||||
if (!Quest.given && Dungeon.visible[pos]) {
|
||||
if (!seenBefore) {
|
||||
yell( Utils.format( TXT_HEY, Dungeon.hero.givenName() ) );
|
||||
yell( Messages.get(this, "hey", Dungeon.hero.givenName() ) );
|
||||
}
|
||||
seenBefore = true;
|
||||
} else {
|
||||
@@ -98,11 +69,6 @@ public class Imp extends NPC {
|
||||
return 1000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "evaded";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void damage( int dmg, Object src ) {
|
||||
}
|
||||
@@ -126,11 +92,13 @@ public class Imp extends NPC {
|
||||
if (tokens != null && (tokens.quantity() >= 8 || (!Quest.alternative && tokens.quantity() >= 6))) {
|
||||
GameScene.show( new WndImp( this, tokens ) );
|
||||
} else {
|
||||
tell( Quest.alternative ? TXT_MONKS2 : TXT_GOLEMS2, Dungeon.hero.givenName() );
|
||||
tell( Quest.alternative ?
|
||||
Messages.get(this, "monks_2", Dungeon.hero.givenName())
|
||||
: Messages.get(this, "golems_2", Dungeon.hero.givenName()) );
|
||||
}
|
||||
|
||||
} else {
|
||||
tell( Quest.alternative ? TXT_MONKS1 : TXT_GOLEMS1 );
|
||||
tell( Quest.alternative ? Messages.get(this, "monks_1") : Messages.get(this, "golems_1") );
|
||||
Quest.given = true;
|
||||
Quest.completed = false;
|
||||
|
||||
@@ -138,26 +106,19 @@ public class Imp extends NPC {
|
||||
}
|
||||
}
|
||||
|
||||
private void tell( String format, Object...args ) {
|
||||
private void tell( String text ) {
|
||||
GameScene.show(
|
||||
new WndQuest( this, Utils.format( format, args ) ) );
|
||||
new WndQuest( this, text ));
|
||||
}
|
||||
|
||||
public void flee() {
|
||||
|
||||
yell( Utils.format( TXT_CYA, Dungeon.hero.givenName() ) );
|
||||
yell( Messages.get(this, "cya", Dungeon.hero.givenName()) );
|
||||
|
||||
destroy();
|
||||
sprite.die();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Imps are lesser demons. They are notable for neither their strength nor their magic talent, " +
|
||||
"but they are quite smart and sociable. Many imps prefer to live among non-demons.";
|
||||
}
|
||||
|
||||
|
||||
public static class Quest {
|
||||
|
||||
private static boolean alternative;
|
||||
|
||||
@@ -25,17 +25,12 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ImpSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||
|
||||
public class ImpShopkeeper extends Shopkeeper {
|
||||
|
||||
private static final String TXT_GREETINGS = "Hello, %s!";
|
||||
public static final String TXT_THIEF = "I thought I could trust you!";
|
||||
|
||||
|
||||
{
|
||||
name = "ambitious imp";
|
||||
spriteClass = ImpSprite.class;
|
||||
}
|
||||
|
||||
@@ -45,7 +40,7 @@ public class ImpShopkeeper extends Shopkeeper {
|
||||
protected boolean act() {
|
||||
|
||||
if (!seenBefore && Dungeon.visible[pos]) {
|
||||
yell( Utils.format( TXT_GREETINGS, Dungeon.hero.givenName() ) );
|
||||
yell( Messages.get(this, "greetings", Dungeon.hero.givenName() ) );
|
||||
seenBefore = true;
|
||||
}
|
||||
|
||||
@@ -66,11 +61,4 @@ public class ImpShopkeeper extends Shopkeeper {
|
||||
sprite.emitter().burst( Speck.factory( Speck.WOOL ), 15 );
|
||||
sprite.killAndErase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"Imps are lesser demons. They are notable for neither their strength nor their magic talent. " +
|
||||
"But they are quite smart and sociable, and many of imps prefer to live and do business among non-demons.";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,11 +37,9 @@ import com.watabou.utils.Random;
|
||||
public class MirrorImage extends NPC {
|
||||
|
||||
{
|
||||
name = "mirror image";
|
||||
spriteClass = MirrorSprite.class;
|
||||
|
||||
state = HUNTING;
|
||||
|
||||
}
|
||||
|
||||
public int tier;
|
||||
@@ -98,7 +96,7 @@ public class MirrorImage extends NPC {
|
||||
protected Char chooseEnemy() {
|
||||
|
||||
if (enemy == null || !enemy.isAlive()) {
|
||||
HashSet<Mob> enemies = new HashSet<Mob>();
|
||||
HashSet<Mob> enemies = new HashSet<>();
|
||||
for (Mob mob:Dungeon.level.mobs) {
|
||||
if (mob.hostile && Level.fieldOfView[mob.pos]) {
|
||||
enemies.add( mob );
|
||||
@@ -111,13 +109,6 @@ public class MirrorImage extends NPC {
|
||||
return enemy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This illusion bears a close resemblance to you, " +
|
||||
"but it's paler and twitches a little.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSprite sprite() {
|
||||
CharSprite s = super.sprite();
|
||||
@@ -140,7 +131,7 @@ public class MirrorImage extends NPC {
|
||||
Dungeon.hero.busy();
|
||||
}
|
||||
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<Class<?>>();
|
||||
private static final HashSet<Class<?>> IMMUNITIES = new HashSet<>();
|
||||
static {
|
||||
IMMUNITIES.add( ToxicGas.class );
|
||||
IMMUNITIES.add( Burning.class );
|
||||
|
||||
@@ -24,12 +24,12 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.RatKingSprite;
|
||||
|
||||
public class RatKing extends NPC {
|
||||
|
||||
{
|
||||
name = "rat king";
|
||||
spriteClass = RatKingSprite.class;
|
||||
|
||||
state = SLEEPING;
|
||||
@@ -68,19 +68,17 @@ public class RatKing extends NPC {
|
||||
sprite.turnTo( pos, Dungeon.hero.pos );
|
||||
if (state == SLEEPING) {
|
||||
notice();
|
||||
yell( "I'm not sleeping!" );
|
||||
yell( Messages.get(this, "not_sleeping") );
|
||||
state = WANDERING;
|
||||
} else {
|
||||
yell( "What is it? I have no time for this nonsense. My kingdom won't rule itself!" );
|
||||
yell( Messages.get(this, "what_is_it") );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return ((RatKingSprite)sprite).festive ?
|
||||
"This rat is a little bigger than a regular marsupial rat. " +
|
||||
"It's wearing a tiny festive hat instead of its usual crown. Happy Holidays!"
|
||||
: "This rat is a little bigger than a regular marsupial rat " +
|
||||
"and it's wearing a tiny crown on its head.";
|
||||
Messages.get(this, "desc_festive")
|
||||
: super.description();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,15 +20,15 @@
|
||||
*/
|
||||
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.SheepSprite;
|
||||
import com.watabou.utils.Random;
|
||||
|
||||
public class Sheep extends NPC {
|
||||
|
||||
private static final String[] QUOTES = {"Baa!", "Baa?", "Baa.", "Baa..."};
|
||||
private static final String[] LINE_KEYS = {"Baa!", "Baa?", "Baa.", "Baa..."};
|
||||
|
||||
{
|
||||
name = "sheep";
|
||||
spriteClass = SheepSprite.class;
|
||||
}
|
||||
|
||||
@@ -55,15 +55,8 @@ public class Sheep extends NPC {
|
||||
public void damage( int dmg, Object src ) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This is a magic sheep. What's so magical about it? You can't kill it. " +
|
||||
"It will stand there until it magcially fades away, all the while chewing cud with a blank stare.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interact() {
|
||||
yell( Random.element( QUOTES ) );
|
||||
yell( Messages.get(this, Random.element( LINE_KEYS )) );
|
||||
}
|
||||
}
|
||||
@@ -34,11 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndTradeItem;
|
||||
|
||||
public class Shopkeeper extends NPC {
|
||||
|
||||
public static final String TXT_THIEF = "Thief, Thief!";
|
||||
private int startPos = -1;
|
||||
|
||||
{
|
||||
name = "shopkeeper";
|
||||
spriteClass = ShopkeeperSprite.class;
|
||||
|
||||
properties.add(Property.IMMOVABLE);
|
||||
@@ -83,13 +79,6 @@ public class Shopkeeper extends NPC {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This stout guy looks more appropriate for a trade district in some large city " +
|
||||
"than for a dungeon. His prices explain why he prefers to do business here.";
|
||||
}
|
||||
|
||||
public static WndBag sell() {
|
||||
return GameScene.selectItem( itemSelector, WndBag.Mode.FOR_SALE, "Select an item to sell" );
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Challenges;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.CeremonialCandle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Journal;
|
||||
@@ -48,60 +49,8 @@ import com.watabou.utils.Random;
|
||||
public class Wandmaker extends NPC {
|
||||
|
||||
{
|
||||
name = "old wandmaker";
|
||||
spriteClass = WandmakerSprite.class;
|
||||
}
|
||||
|
||||
private static final String INTRO_WARRIOR =
|
||||
"Oh, what a pleasant surprise to meet a hero in such a depressing place! " +
|
||||
"If you're up to helping an old man out, I may have a task for you.\n\n";
|
||||
|
||||
private static final String INTRO_ROGUE =
|
||||
"Oh Goodness, you startled me! I haven't met a bandit from this place that still has his sanity, " +
|
||||
"so you must be from the surface! If you're up to helping a stranger out, I may have a task for you.\n\n";
|
||||
|
||||
private static final String INTRO_MAGE =
|
||||
"Oh, hello %s! I heard there was some ruckus regarding you and the wizards institute? " +
|
||||
"Oh never mind, I never liked those stick-in-the-muds anyway. If you're willing, I may have a task for you.\n\n";
|
||||
|
||||
private static final String INTRO_HUNTRESS =
|
||||
"Oh, hello miss! A friendly face is a pleasant surprise down here isn't it? " +
|
||||
"In fact, I swear I've seen your face before, but I can't put my finger on it... " +
|
||||
"Oh never mind, if you're here for adventure, I may have a task for you.\n\n";
|
||||
|
||||
private static final String INTRO_1 =
|
||||
"I came here to find a rare ingredient for a wand, but I've gotten myself lost, " +
|
||||
"and my magical shield is weakening. I'll need to leave soon, but can't bear to go without getting what I came for.";
|
||||
|
||||
|
||||
private static final String INTRO_DUST =
|
||||
"I'm looking for some _corpse dust_. It's a special kind of cursed bone meal that usually shows up in places like this. " +
|
||||
"There should be a barricaded room around here somewhere, I'm sure some dust will turn up there. " +
|
||||
"Do be careful though, the curse the dust carries is quite potent, _get back to me as fast as you can_ and I'll cleanse it for you.\n\n";
|
||||
|
||||
private static final String INTRO_EMBER =
|
||||
"I'm looking for some _fresh embers_ from a newborn fire elemental. Elementals usually pop up when a summoning ritual isn't controlled, " +
|
||||
"so just find some candles and a ritual site and I'm sure you can get one to pop up. " +
|
||||
"You might want to _keep some sort of freezing item handy_ though, elementals are very powerful, but ice will take them down quite easily.\n\n";
|
||||
|
||||
private static final String INTRO_BERRY =
|
||||
"The old warden of this prison kept a _rotberry plant_, and I'm after one of its seeds. The plant has probably gone wild by now though, " +
|
||||
"so getting it to give up a seed might be tricky. Its garden should be somewhere around here. " +
|
||||
"Try to _keep away from its vine lashers_ if you want to stay in one piece. Using fire might be tempting but please don't, you'll kill the plant and destroy its seeds.\n\n";
|
||||
|
||||
private static final String INTRO_2 =
|
||||
"If you can get that for me, I'll be happy to pay you with one of my finely crafted wands! " +
|
||||
"I brought two with me, so you can take whichever one you prefer.";
|
||||
|
||||
private static final String REMINDER_DUST =
|
||||
"Any luck with corpse dust, %s? Look for some barricades.";
|
||||
|
||||
private static final String REMINDER_EMBER =
|
||||
"Any luck with those embers, %s? You'll need to find four candles and the ritual site.";
|
||||
|
||||
private static final String REMINDER_BERRY =
|
||||
"Any luck with a Rotberry seed, %s? Look for a room filled with vegetation.";
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean act() {
|
||||
@@ -114,11 +63,6 @@ public class Wandmaker extends NPC {
|
||||
return 1000;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defenseVerb() {
|
||||
return "absorbed";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void damage( int dmg, Object src ) {
|
||||
}
|
||||
@@ -158,13 +102,13 @@ public class Wandmaker extends NPC {
|
||||
String msg = "";
|
||||
switch(Quest.type){
|
||||
case 1:
|
||||
msg = REMINDER_DUST;
|
||||
msg = Messages.get(this, "reminder_dust", Dungeon.hero.givenName());
|
||||
break;
|
||||
case 2:
|
||||
msg = REMINDER_EMBER;
|
||||
msg = Messages.get(this, "reminder_ember", Dungeon.hero.givenName());
|
||||
break;
|
||||
case 3:
|
||||
msg = REMINDER_BERRY;
|
||||
msg = Messages.get(this, "reminder_berry", Dungeon.hero.givenName());
|
||||
break;
|
||||
}
|
||||
GameScene.show(new WndQuest(this, Utils.format(msg, Dungeon.hero.givenName())));
|
||||
@@ -176,42 +120,42 @@ public class Wandmaker extends NPC {
|
||||
String msg2 = "";
|
||||
switch(Dungeon.hero.heroClass){
|
||||
case WARRIOR:
|
||||
msg1 += INTRO_WARRIOR;
|
||||
msg1 += Messages.get(this, "intro_warrior");
|
||||
break;
|
||||
case ROGUE:
|
||||
msg1 += INTRO_ROGUE;
|
||||
msg1 += Messages.get(this, "intro_rogue");
|
||||
break;
|
||||
case MAGE:
|
||||
msg1 += INTRO_MAGE;
|
||||
msg1 += Messages.get(this, "intro_mage", Dungeon.hero.givenName());
|
||||
break;
|
||||
case HUNTRESS:
|
||||
msg1 += INTRO_HUNTRESS;
|
||||
msg1 += Messages.get(this, "intro_huntress");
|
||||
break;
|
||||
}
|
||||
|
||||
msg1 += INTRO_1;
|
||||
msg1 += Messages.get(this, "intro_1");
|
||||
|
||||
switch (Quest.type){
|
||||
case 1:
|
||||
msg2 += INTRO_DUST;
|
||||
msg2 += Messages.get(this, "intro_dust");
|
||||
break;
|
||||
case 2:
|
||||
msg2 += INTRO_EMBER;
|
||||
msg2 += Messages.get(this, "intro_ember");
|
||||
break;
|
||||
case 3:
|
||||
msg2 += INTRO_BERRY;
|
||||
msg2 += Messages.get(this, "intro_berry");
|
||||
break;
|
||||
}
|
||||
|
||||
msg2 += INTRO_2;
|
||||
msg2 += Messages.get(this, "intro_2");
|
||||
final String msg2final = msg2;
|
||||
final NPC wandmaker = this;
|
||||
|
||||
GameScene.show(new WndQuest(wandmaker, Utils.format(msg1, Dungeon.hero.givenName())){
|
||||
GameScene.show(new WndQuest(wandmaker, msg1){
|
||||
@Override
|
||||
public void hide() {
|
||||
super.hide();
|
||||
GameScene.show(new WndQuest(wandmaker, Utils.format(msg2final, Dungeon.hero.givenName())));
|
||||
GameScene.show(new WndQuest(wandmaker, msg2final));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -220,13 +164,6 @@ public class Wandmaker extends NPC {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description() {
|
||||
return
|
||||
"This old yet hale gentleman wears a slightly confused " +
|
||||
"expression. He is protected by a magic shield.";
|
||||
}
|
||||
|
||||
public static class Quest {
|
||||
|
||||
private static int type;
|
||||
|
||||
Reference in New Issue
Block a user