v0.3.4: externalized wand strings

This commit is contained in:
Evan Debenham 2016-01-02 03:24:31 -05:00 committed by Evan Debenham
parent 1885fdc17a
commit 186c6cea91
15 changed files with 83 additions and 139 deletions

View File

@ -62,6 +62,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.LightningTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.LightningTrap;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
@ -250,7 +251,7 @@ public class CursedWand {
Sample.INSTANCE.play(Assets.SND_CURSED); Sample.INSTANCE.play(Assets.SND_CURSED);
if (!user.isAlive()) { if (!user.isAlive()) {
Dungeon.fail(Utils.format(ResultDescriptions.ITEM, wand.name())); Dungeon.fail(Utils.format(ResultDescriptions.ITEM, wand.name()));
GLog.n("You were killed by your own " + wand.name()); GLog.n(Messages.get(CursedWand.class, "ondeath", wand.name()));
} }
break; break;
} }
@ -258,7 +259,7 @@ public class CursedWand {
} }
}); });
} else { } else {
GLog.i("nothing happens"); GLog.i(Messages.get(CursedWand.class, "nothing"));
wand.wandUsed(); wand.wandUsed();
} }
break; break;
@ -307,7 +308,7 @@ public class CursedWand {
GameScene.add(sheep); GameScene.add(sheep);
CellEmitter.get(sheep.pos).burst(Speck.factory(Speck.WOOL), 4); CellEmitter.get(sheep.pos).burst(Speck.factory(Speck.WOOL), 4);
} else { } else {
GLog.i("nothing happens"); GLog.i(Messages.get(CursedWand.class, "nothing"));
} }
wand.wandUsed(); wand.wandUsed();
} }
@ -325,7 +326,7 @@ public class CursedWand {
if (misc1 != null) misc1.cursed = misc1.cursedKnown = true; if (misc1 != null) misc1.cursed = misc1.cursedKnown = true;
if (misc2 != null) misc2.cursed = misc2.cursedKnown = true; if (misc2 != null) misc2.cursed = misc2.cursedKnown = true;
EquipableItem.equipCursed(user); EquipableItem.equipCursed(user);
GLog.n("Your worn equipment becomes cursed!"); GLog.n( Messages.get(CursedWand.class, "cursed") );
wand.wandUsed(); wand.wandUsed();
break; break;
@ -383,8 +384,8 @@ public class CursedWand {
} while (Random.Int(5) != 0); } while (Random.Int(5) != 0);
new Flare(8, 32).color(0xFFFF66, true).show(user.sprite, 2f); new Flare(8, 32).color(0xFFFF66, true).show(user.sprite, 2f);
Sample.INSTANCE.play(Assets.SND_TELEPORT); Sample.INSTANCE.play(Assets.SND_TELEPORT);
GLog.p("grass explodes around you!"); GLog.p(Messages.get(CursedWand.class, "grass"));
GLog.w("you smell burning..."); GLog.w(Messages.get(CursedWand.class, "fire"));
wand.wandUsed(); wand.wandUsed();
break; break;
@ -413,17 +414,23 @@ public class CursedWand {
case 2: case 2:
try { try {
Dungeon.saveAll(); Dungeon.saveAll();
GameScene.show( if(!Messages.get(CursedWand.class, "nothing").equals("nothing happens")){
new WndOptions("CURSED WAND ERROR", "this application will now self-destruct", "abort", "retry", "fail") { //Don't bother doing this joke to none-english speakers, I doubt it would translate.
@Override GLog.i(Messages.get(CursedWand.class, "nothing"));
public void hide() { wand.wandUsed();
throw new RuntimeException("critical wand exception"); } else {
GameScene.show(
new WndOptions("CURSED WAND ERROR", "this application will now self-destruct", "abort", "retry", "fail") {
@Override
public void hide() {
throw new RuntimeException("critical wand exception");
}
} }
} );
); }
} catch(IOException e){ } catch(IOException e){
//oookay maybe don't kill the game if the save failed. //oookay maybe don't kill the game if the save failed.
GLog.i("nothing happens"); GLog.i(Messages.get(CursedWand.class, "nothing"));
wand.wandUsed(); wand.wandUsed();
} }
break; break;
@ -439,7 +446,7 @@ public class CursedWand {
} while (result.level() < 0 && !(result instanceof MissileWeapon)); } while (result.level() < 0 && !(result instanceof MissileWeapon));
if (result.isUpgradable()) result.upgrade(); if (result.isUpgradable()) result.upgrade();
result.cursed = result.cursedKnown = true; result.cursed = result.cursedKnown = true;
GLog.w("your wand transmogrifies into a different item!"); GLog.w( Messages.get(CursedWand.class, "transmogrify") );
Dungeon.level.drop(result, user.pos).sprite.drop(); Dungeon.level.drop(result, user.pos).sprite.drop();
wand.wandUsed(); wand.wandUsed();
break; break;

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
@ -56,11 +57,6 @@ public abstract class Wand extends Item {
public static final String AC_ZAP = "ZAP"; public static final String AC_ZAP = "ZAP";
private static final String TXT_FIZZLES = "your wand fizzles; it must not have enough charge.";
private static final String TXT_SELF_TARGET = "You can't target yourself";
private static final String TXT_IDENTIFY = "You are now familiar with your %s.";
private static final float TIME_TO_ZAP = 1f; private static final float TIME_TO_ZAP = 1f;
public int maxCharges = initialCharges(); public int maxCharges = initialCharges();
@ -183,7 +179,7 @@ public abstract class Wand extends Item {
@Override @Override
public String info() { public String info() {
return (cursed && cursedKnown) ? return (cursed && cursedKnown) ?
desc() + "\n\nThis wand is cursed, making its magic chaotic and random." : desc() + Messages.get(Wand.class, "cursed") :
desc(); desc();
} }
@ -254,7 +250,7 @@ public abstract class Wand extends Item {
curCharges -= cursed ? 1 : chargesPerCast(); curCharges -= cursed ? 1 : chargesPerCast();
if (!isIdentified() && usagesToKnow <= 0) { if (!isIdentified() && usagesToKnow <= 0) {
identify(); identify();
GLog.w( TXT_IDENTIFY, name() ); GLog.w( Messages.get(Wand.class, "identify", name()) );
} else { } else {
if (curUser.heroClass == HeroClass.MAGE) levelKnown = true; if (curUser.heroClass == HeroClass.MAGE) levelKnown = true;
updateQuickslot(); updateQuickslot();
@ -302,7 +298,7 @@ public abstract class Wand extends Item {
return price; return price;
} }
private static final String UNFAMILIRIARITY = "unfamiliarity"; private static final String UNFAMILIRIARITY = "unfamiliarity";
private static final String CUR_CHARGES = "curCharges"; private static final String CUR_CHARGES = "curCharges";
private static final String CUR_CHARGE_KNOWN = "curChargeKnown"; private static final String CUR_CHARGE_KNOWN = "curChargeKnown";
private static final String PARTIALCHARGE = "partialCharge"; private static final String PARTIALCHARGE = "partialCharge";
@ -340,7 +336,7 @@ public abstract class Wand extends Item {
int cell = shot.collisionPos; int cell = shot.collisionPos;
if (target == curUser.pos || cell == curUser.pos) { if (target == curUser.pos || cell == curUser.pos) {
GLog.i( TXT_SELF_TARGET ); GLog.i( Messages.get(Wand.class, "self_target") );
return; return;
} }
@ -360,7 +356,7 @@ public abstract class Wand extends Item {
CursedWand.cursedZap(curWand, curUser, new Ballistica( curUser.pos, target, Ballistica.MAGIC_BOLT)); CursedWand.cursedZap(curWand, curUser, new Ballistica( curUser.pos, target, Ballistica.MAGIC_BOLT));
if (!curWand.cursedKnown){ if (!curWand.cursedKnown){
curWand.cursedKnown = true; curWand.cursedKnown = true;
GLog.n("This " + curItem.name() + " is cursed!"); GLog.n(Messages.get(Wand.class, "curse_discover", curWand.name()));
} }
} else { } else {
curWand.fx(shot, new Callback() { curWand.fx(shot, new Callback() {
@ -375,7 +371,7 @@ public abstract class Wand extends Item {
} else { } else {
GLog.w( TXT_FIZZLES ); GLog.w( Messages.get(Wand.class, "fizzles") );
} }
@ -384,7 +380,7 @@ public abstract class Wand extends Item {
@Override @Override
public String prompt() { public String prompt() {
return "Choose a location to zap"; return Messages.get(Wand.class, "prompt");
} }
}; };

View File

@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
@ -100,7 +101,7 @@ public class WandOfBlastWave extends Wand {
if (!curUser.isAlive()) { if (!curUser.isAlive()) {
Dungeon.fail( Utils.format(ResultDescriptions.ITEM, name) ); Dungeon.fail( Utils.format(ResultDescriptions.ITEM, name) );
GLog.n("You killed yourself with your own Wand of Blast Wave..."); GLog.n( Messages.get( this, "ondeath") );
} }
} }
@ -212,13 +213,4 @@ public class WandOfBlastWave extends Wand {
} }
} }
@Override
public String desc() {
return "This wand is made of a sort of marbled stone, with gold trim and a round black gem at the tip. " +
"It feels very weighty in your hand.\n" +
"\n" +
"This wand shoots a bolt which violently detonates at a target location. There is no smoke and fire, " +
"but the force of this blast is enough to knock even the biggest of foes around.";
}
} }

View File

@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.*;
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
@ -54,12 +55,12 @@ public class WandOfCorruption extends Wand {
if (ch != null){ if (ch != null){
if(ch.buff(Corruption.class) != null){ if(ch.buff(Corruption.class) != null){
GLog.w("that character is already corrupted"); GLog.w( Messages.get(this, "already_corrupted") );
return; return;
} }
if (ch.properties().contains(Char.Property.BOSS) || ch.properties().contains(Char.Property.MINIBOSS)){ if (ch.properties().contains(Char.Property.BOSS) || ch.properties().contains(Char.Property.MINIBOSS)){
GLog.w("Bosses are immune to corruption"); GLog.w( Messages.get(this, "boss") );
return; return;
} }
@ -82,7 +83,7 @@ public class WandOfCorruption extends Wand {
//if we fail, lose all charges, remember we have 1 left to lose from using the wand. //if we fail, lose all charges, remember we have 1 left to lose from using the wand.
if (extraCharges >= curCharges){ if (extraCharges >= curCharges){
curCharges = 1; curCharges = 1;
GLog.w("The corrupting power was not strong enough, nothing happens."); GLog.w( Messages.get(this, "fail") );
return; return;
} }
@ -122,14 +123,4 @@ public class WandOfCorruption extends Wand {
particle.shuffleXY(2f); particle.shuffleXY(2f);
} }
@Override
public String desc() {
return "This wand radiates dark energy, if that weren't already obvious from the small decorative skull shaped onto its tip.\n" +
"\n" +
"This wand will release a blast of corrupting energy, attempting to bend enemies to your will. " +
"Full health enemies are dramatically harder to corrupt than weakened and debuffed ones. " +
"Successfully corrupting an enemy restores them to full health.\n" +
"\n" +
"This wand uses at least one charge per cast, but will often use more in an attempt to overpower more healthy enemies.";
}
} }

View File

@ -56,7 +56,7 @@ public class WandOfDisintegration extends Wand {
int maxDistance = Math.min(distance(), beam.dist); int maxDistance = Math.min(distance(), beam.dist);
ArrayList<Char> chars = new ArrayList<Char>(); ArrayList<Char> chars = new ArrayList<>();
int terrainPassed = 2, terrainBonus = 0; int terrainPassed = 2, terrainBonus = 0;
for (int c : beam.subPath(1, maxDistance)) { for (int c : beam.subPath(1, maxDistance)) {
@ -130,12 +130,4 @@ public class WandOfDisintegration extends Wand {
particle.shuffleXY(2f); particle.shuffleXY(2f);
} }
@Override
public String desc() {
return
"This wand is made from a solid smooth chunk of obsidian, with a deep purple light running up its side, " +
"ending at the tip. It glows with destructive energy, waiting to shoot forward.\n\n" +
"This wand shoots a beam that pierces any obstacle, and will go farther the more it is upgraded.\n\n" +
"This wand deals bonus damage the more enemies and terrain it penetrates.";
}
} }

View File

@ -170,13 +170,4 @@ public class WandOfFireblast extends Wand {
particle.shuffleXY(2f); particle.shuffleXY(2f);
} }
@Override
public String desc() {
return
"This wand is made from red-lacquered wood with golden leaf used liberally to make it look quite regal. " +
"It crackles and hisses at the tip, eager to unleash its powerful magic.\n" +
"\n" +
"This wand produces a blast of fire when used, extending out into a cone shape. As this wand is upgraded " +
"it will consume more charges, the effect becomes significantly more powerful the more charges are consumed.";
}
} }

View File

@ -118,12 +118,4 @@ public class WandOfFrost extends Wand {
particle.radiateXY(Random.Float(2f)); particle.radiateXY(Random.Float(2f));
} }
@Override
public String desc() {
return "This wand seems to be made out of some kind of magical ice. It grows brighter towards its " +
"rounded tip. It feels very cold when held, but somehow your hand stays warm.\n\n" +
"This wand shoots blasts of icy energy toward your foes, dealing significant damage and chilling, " +
"which reduces speed. The effect seems stronger in water. Chilled and frozen enemies " +
"take less damage from this wand, as they are already cold.";
}
} }

View File

@ -26,6 +26,7 @@ import java.util.HashSet;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shock; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shock;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
@ -73,7 +74,7 @@ public class WandOfLightning extends Wand {
if (!curUser.isAlive()) { if (!curUser.isAlive()) {
Dungeon.fail( Utils.format( ResultDescriptions.ITEM, name ) ); Dungeon.fail( Utils.format( ResultDescriptions.ITEM, name ) );
GLog.n( "You killed yourself with your own Wand of Lightning..." ); GLog.n(Messages.get(this, "ondeath"));
} }
} }
@ -147,14 +148,5 @@ public class WandOfLightning extends Wand {
particle.x -= dst; particle.x -= dst;
particle.y += dst; particle.y += dst;
} }
@Override
public String desc() {
return
"This wand is made out of solid metal, making it surprisingly heavy. " +
"Two prongs curve together at the top, and electricity arcs between them.\n\n" +
"This wand sends powerful lightning arcing through whatever it is shot at. " +
"This electricity can bounce between many adjacent foes, and is more powerful in water. " +
"If you're too close, you may get shocked as well.";
}
} }

View File

@ -62,10 +62,5 @@ public class WandOfMagicMissile extends Wand {
protected int initialCharges() { protected int initialCharges() {
return 3; return 3;
} }
@Override
public String desc() {
return
"This wand launches missiles of pure magical energy, dealing moderate damage to a target creature.";
}
} }

View File

@ -147,13 +147,4 @@ public class WandOfPrismaticLight extends Wand {
particle.radiateXY(1f); particle.radiateXY(1f);
} }
@Override
public String desc() {
return
"This wand is made of a solid piece of translucent crystal, like a long chunk of smooth glass. " +
"It becomes clear towards the tip, where you can see colorful lights dancing around inside it.\n\n" +
"This wand shoots rays of light which damage and blind enemies and cut through the darkness of the dungeon, " +
"revealing hidden areas and traps. Demonic and undead foes will burn in the bright light " +
"of the wand, taking significant bonus damage.";
}
} }

View File

@ -81,7 +81,7 @@ public class WandOfRegrowth extends Wand {
float numPlants, numDews, numPods, numStars; float numPlants, numDews, numPods, numStars;
int chrgUsed = chargesPerCast(); int chrgUsed = chargesPerCast();
//numbers greater than n*100% means n garunteed plants, e.g. 210% = 2 plants w/10% chance for 3 plants. //numbers greater than n*100% means n guaranteed plants, e.g. 210% = 2 plants w/10% chance for 3 plants.
numPlants = 0.2f + chrgUsed*chrgUsed*0.020f; //scales from 22% to 220% numPlants = 0.2f + chrgUsed*chrgUsed*0.020f; //scales from 22% to 220%
numDews = 0.05f + chrgUsed*chrgUsed*0.016f; //scales from 6.6% to 165% numDews = 0.05f + chrgUsed*chrgUsed*0.016f; //scales from 6.6% to 165%
numPods = 0.02f + chrgUsed*chrgUsed*0.013f; //scales from 3.3% to 135% numPods = 0.02f + chrgUsed*chrgUsed*0.013f; //scales from 3.3% to 135%
@ -242,19 +242,6 @@ public class WandOfRegrowth extends Wand {
particle.y += dst; particle.y += dst;
} }
@Override
public String desc() {
return
"This wand is made from a thin shaft of expertly carved wood. " +
"Somehow it is still alive and vibrant, bright green like a young tree's core.\n" +
"\n" +
"When used, this wand will consume all its charges to blast magical regrowth energy outward " +
"in a cone. This magic will cause grass, roots, and rare plants to spring to life.\n" +
"\n" +
"\"When life ceases new life always begins to grow... The eternal cycle always remains!\"";
}
public static class Dewcatcher extends Plant{ public static class Dewcatcher extends Plant{
{ {

View File

@ -43,6 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
@ -181,7 +182,7 @@ public class WandOfTransfusion extends Wand {
if (!curUser.isAlive()){ if (!curUser.isAlive()){
Dungeon.fail( Utils.format(ResultDescriptions.ITEM, name) ); Dungeon.fail( Utils.format(ResultDescriptions.ITEM, name) );
GLog.n("You killed yourself with your own Wand of Transfusion..."); GLog.n( Messages.get(this, "ondeath") );
} }
} }
@ -198,7 +199,7 @@ public class WandOfTransfusion extends Wand {
if (Random.Int( level() + 10 ) >= 9){ if (Random.Int( level() + 10 ) >= 9){
//grants a free use of the staff //grants a free use of the staff
freeCharge = true; freeCharge = true;
GLog.p("Your staff is charged with the life energy of your enemy!"); GLog.p( Messages.get(this, "charged") );
attacker.sprite.emitter().burst(BloodParticle.BURST, 20); attacker.sprite.emitter().burst(BloodParticle.BURST, 20);
} }
} }
@ -236,11 +237,6 @@ public class WandOfTransfusion extends Wand {
@Override @Override
public String desc() { public String desc() {
return "A fairly plainly shaped wand, it stands out due to its magenta hue and pitch black gem at the tip.\n" + return "";
"\n" +
"This wand will take some of your life energy and blast it at a target. This effect is very versatile: " +
"allies will be healed, enemies will be temporarily charmed, and hostile undead will take considerable damage. " +
"The life force effect can also be potent at dispelling curses as well. " +
"The life energy drain is significant though, using this wand will deal damage to you in addition to consuming charges.";
} }
} }

View File

@ -74,12 +74,4 @@ public class WandOfVenom extends Wand {
particle.shuffleXY(2f); particle.shuffleXY(2f);
} }
@Override
public String desc() {
return
"This wand has a purple body which opens to a brilliant green gem. " +
"A small amount of foul smelling gas leaks from the gem.\n\n" +
"This wand shoots a bolt which explodes into a cloud of vile venomous gas at a targeted location. " +
"Anything caught inside this cloud will take continual damage, increasing with time.";
}
} }

View File

@ -316,11 +316,11 @@ actors.mobs.mimic.desc=Mimics are magical creatures which can take any shape the
actors.mobs.mob.died=You hear something died in the distance actors.mobs.mob.died=You hear something died in the distance
actors.mobs.mob.rage=#$%^ actors.mobs.mob.rage=#$%^
actors.mobs.mob.exp=%+dEXP actors.mobs.mob.exp=%+dEXP
actors.mobs.mob$sleeping.status=This %s is sleeping actors.mobs.mob$sleeping.status=This %s is sleeping.
actors.mobs.mob$wandering.status=This %s is wandering actors.mobs.mob$wandering.status=This %s is wandering.
actors.mobs.mob$hunting.status=This %s is hunting actors.mobs.mob$hunting.status=This %s is hunting.
actors.mobs.mob$fleeing.status=This %s is fleeing actors.mobs.mob$fleeing.status=This %s is fleeing.
actors.mobs.mob$passive.status=This %s is passive actors.mobs.mob$passive.status=This %s is passive.
actors.mobs.monk.name=dwarf monk actors.mobs.monk.name=dwarf monk
actors.mobs.monk.disarm=The monk knocks the %s from your hands! actors.mobs.monk.disarm=The monk knocks the %s from your hands!
actors.mobs.monk.def_verb=parried actors.mobs.monk.def_verb=parried
@ -335,7 +335,7 @@ actors.mobs.rotheart.name=rot heart
actors.mobs.rotheart.desc=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. actors.mobs.rotheart.desc=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.
actors.mobs.rotlasher.name=rot lasher actors.mobs.rotlasher.name=rot lasher
actors.mobs.rotlasher.desc=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. actors.mobs.rotlasher.desc=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.
actors.mobs.rotlasher$waiting.status=This %s is idle actors.mobs.rotlasher$waiting.status=This %s is idle.
actors.mobs.scorpio.name=scorpio actors.mobs.scorpio.name=scorpio
actors.mobs.scorpio.desc=These huge arachnid-like demonic creatures avoid close combat by all means, firing crippling serrated spikes from long distances. actors.mobs.scorpio.desc=These huge arachnid-like demonic creatures avoid close combat by all means, firing crippling serrated spikes from long distances.
actors.mobs.senior.name=senior monk actors.mobs.senior.name=senior monk
@ -557,21 +557,51 @@ items.scrolls.scrollofteleportation.name=scroll of teleportation
items.scrolls.scrollofterror.name=scroll of terror items.scrolls.scrollofterror.name=scroll of terror
items.scrolls.scrollofupgrade.name=scroll of upgrade items.scrolls.scrollofupgrade.name=scroll of upgrade
items.wands.cursedwand.ondeath=You were killed by your own %s
items.wands.cursedwand.nothing=nothing happens
items.wands.cursedwand.cursed=Your worn equipment becomes cursed!
items.wands.cursedwand.grass=grass explodes around you!
items.wands.cursedwand.fire=you smell burning...
items.wands.cursedwand.transmogrify=your wand transmogrifies into a different item!=
items.wands.wand.fizzles=your wand fizzles; it must not have enough charge.
items.wands.wand.self_target=You can't target yourself
items.wands.wand.identify=You are now familiar with your %s.
items.wands.wand.cursed=\n\nThis wand is cursed, making its magic chaotic and random.
items.wands.wand.curse_discover=This %s is cursed!
items.wands.wand.prompt=Choose a location to zap
items.wands.wandofblastwave.name=wand of blast wave items.wands.wandofblastwave.name=wand of blast wave
items.wands.wandofblastwave.ondeath=You killed yourself with your own Wand of Blast Wave...
items.wands.wandofblastwave.desc=This wand is made of a sort of marbled stone, with gold trim and a round black gem at the tip. It feels very weighty in your hand.\n\nThis wand shoots a bolt which violently detonates at a target location. The force of this blast is strong enough to send most enemies flying.
items.wands.wandofcorruption.name=wand of corruption items.wands.wandofcorruption.name=wand of corruption
items.wands.wandofcorruption.already_corrupted=That character is already corrupted.
items.wands.wandofcorruption.boss=Bosses are immune to corruption.
items.wands.wandofcorruption.fail=The corrupting power was not strong enough, nothing happens.
items.wands.wandofcorruption.desc=This wand radiates dark energy, if that weren't already obvious from the small decorative skull shaped onto its tip.\n\nThis wand will release a blast of corrupting energy, attempting to bend enemies to your will. Full health enemies are much harder to corrupt than weakened ones.\n\nThis wand uses at least one charge per cast, but will often use more in an attempt to overpower more healthy enemies.
items.wands.wandofdisintegration.name=wand of disintegration items.wands.wandofdisintegration.name=wand of disintegration
items.wands.wandofdisintegration.desc=This wand is made from a solid smooth chunk of obsidian, with a deep purple light running up its side, ending at the tip. It glows with destructive energy, waiting to shoot forward.\n\nThis wand shoots a beam that pierces any obstacle, and will go farther the more it is upgraded.\n\nThis wand deals bonus damage the more enemies and terrain it penetrates.
items.wands.wandoffireblast.name=wand of fireblast items.wands.wandoffireblast.name=wand of fireblast
items.wands.wandoffireblast.desc=This wand is made from red-lacquered wood with golden leaf used liberally to make it look quite regal. It crackles and hisses at the tip, eager to unleash its powerful magic.\n\nThis wand produces a blast of fire when used, extending out into a cone shape. As this wand is upgraded it will consume more charges, the effect becomes significantly more powerful the more charges are consumed.
items.wands.wandoffrost.name=wand of frost items.wands.wandoffrost.name=wand of frost
items.wands.wandoffrost.desc=This wand seems to be made out of some kind of magical ice. It grows brighter towards its rounded tip. It feels very cold when held, but somehow your hand stays warm.\n\nThis wand shoots blasts of icy energy toward your foes, dealing significant damage and chilling, which reduces speed. The effect seems stronger in water. Chilled and frozen enemies take less damage from this wand, as they are already cold.
items.wands.wandoflightning.name=wand of lightning items.wands.wandoflightning.name=wand of lightning
items.wands.wandoflightning.ondeath=You killed yourself with your own Wand of Lightning...
items.wands.wandoflightning.desc=This wand is made out of solid metal, making it surprisingly heavy. Two prongs curve together at the tip, and electricity arcs between them.\n\nThis wand sends powerful lightning arcing through whatever it is shot at. This electricity can bounce between many nearby foes, and is more powerful in water. If you're too close, you may get shocked as well.
items.wands.wandofmagicmissile.name=wand of magic missile items.wands.wandofmagicmissile.name=wand of magic missile
items.wands.wandofmagicmissile.desc=This fairly plain wand launches missiles of pure magical energy, dealing moderate damage to a target.\n\nWhile not as strong as other wands, it makes up for it somewhat with more available charges.
items.wands.wandofprismaticlight.name=wand of prismatic light items.wands.wandofprismaticlight.name=wand of prismatic light
items.wands.wandofprismaticlight.desc=This wand is made of a solid piece of translucent crystal, like a long chunk of smooth glass.\n\nThis wand shoots rays of light which damage and blind enemies and cut through the darkness of the dungeon, revealing hidden areas and traps. Demonic and undead foes will burn in the bright light of the wand, taking significant bonus damage.
items.wands.wandofregrowth.name=wand of regrowth items.wands.wandofregrowth.name=wand of regrowth
items.wands.wandofregrowth.desc=This wand is made from a thin shaft of expertly carved wood. Somehow it is still alive and vibrant, bright green like a young tree's core.\n\nWhen used, this wand will consume all its charges to blast magical regrowth energy outward in a cone. This magic will cause grass, roots, and rare plants to spring to life.\n\n"When life ceases new life always begins to grow... The eternal cycle always remains!
items.wands.wandofregrowth$dewcatcher.name=Dewcatcher items.wands.wandofregrowth$dewcatcher.name=Dewcatcher
items.wands.wandofregrowth$dewcatcher.desc=Dewcatchers camouflage as grass to avoid attention, but their bulges of collected dew give them away. items.wands.wandofregrowth$dewcatcher.desc=Dewcatchers camouflage as grass to avoid attention, but their bulges of collected dew give them away.
items.wands.wandofregrowth$seedpod.name=Seed Pod items.wands.wandofregrowth$seedpod.name=Seed Pod
items.wands.wandofregrowth$seedpod.desc=Seed Pods look pretty, but the seeds they carry are actually stolen from other plants they kill with their roots. items.wands.wandofregrowth$seedpod.desc=Seed Pods look pretty, but the seeds they carry are actually stolen from other plants they kill with their roots.
items.wands.wandoftransfusion.name=wand of transfusion items.wands.wandoftransfusion.name=wand of transfusion
items.wands.wandoftransfusion.ondeath=You killed yourself with your own Wand of Transfusion...
items.wands.wandoftransfusion.charged=Your staff is charged with the life energy of your enemy!
items.wands.wandoftransfusion.desc=A fairly plainly shaped wand, it stands out due to its magenta hue and pitch black gem at the tip.\n\nThis wand will take some of your life energy and blast it at a target. This effect is very versatile: allies will be healed, enemies will be temporarily charmed, and hostile undead will take considerable damage.\n\nThe life drain is significant though, using this wand will deal damage to you in addition to consuming charges.
items.wands.wandofvenom.name=wand of venom items.wands.wandofvenom.name=wand of venom
items.wands.wandofvenom.desc=This wand has a purple body which opens to a brilliant green gem.\n\nThis wand shoots a bolt which explodes into a cloud of vile venomous gas at a targeted location. Anything caught inside this cloud will take continual damage, increasing with time.
items.weapon.enchantment.death.name=grim %s items.weapon.enchantment.death.name=grim %s
items.weapon.enchantment.fire.name=blazing %s items.weapon.enchantment.fire.name=blazing %s

View File

@ -41,7 +41,7 @@ public class WndInfoMob extends WndTitledMessage {
StringBuilder builder = new StringBuilder( mob.description() ); StringBuilder builder = new StringBuilder( mob.description() );
builder.append( "\n\n" + mob.state.status() + "." ); builder.append( "\n\n" + mob.state.status() );
return builder.toString(); return builder.toString();
} }