v0.3.4: externalized artifacts part 1
This commit is contained in:
parent
250029c19d
commit
33bef1c6cb
|
@ -153,7 +153,6 @@ public class DM300 extends Mob {
|
||||||
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
|
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
|
||||||
if (beacon != null) {
|
if (beacon != null) {
|
||||||
beacon.upgrade();
|
beacon.upgrade();
|
||||||
GLog.p("Your beacon grows stronger!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yell( Messages.get(this, "defeated") );
|
yell( Messages.get(this, "defeated") );
|
||||||
|
|
|
@ -160,7 +160,6 @@ public class King extends Mob {
|
||||||
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
|
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
|
||||||
if (beacon != null) {
|
if (beacon != null) {
|
||||||
beacon.upgrade();
|
beacon.upgrade();
|
||||||
GLog.p("Your beacon grows stronger!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yell( Messages.get(this, "defeated") );
|
yell( Messages.get(this, "defeated") );
|
||||||
|
|
|
@ -141,7 +141,6 @@ public class Tengu extends Mob {
|
||||||
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
|
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
|
||||||
if (beacon != null) {
|
if (beacon != null) {
|
||||||
beacon.upgrade();
|
beacon.upgrade();
|
||||||
GLog.p("Your beacon grows stronger!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yell( Messages.get(this, "defeated") );
|
yell( Messages.get(this, "defeated") );
|
||||||
|
|
|
@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.KindofMisc;
|
import com.shatteredpixel.shatteredpixeldungeon.items.KindofMisc;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
|
||||||
|
@ -44,10 +45,6 @@ public class Artifact extends KindofMisc {
|
||||||
private static final String TXT_TO_STRING_LVL = "%s%+d";
|
private static final String TXT_TO_STRING_LVL = "%s%+d";
|
||||||
private static final String TXT_TO_STRING_LVL_CHARGE = "%s%+d (%d/%d)";
|
private static final String TXT_TO_STRING_LVL_CHARGE = "%s%+d (%d/%d)";
|
||||||
|
|
||||||
private static final String TXT_UNEQUIP_TITLE = "Unequip one item";
|
|
||||||
private static final String TXT_UNEQUIP_MESSAGE =
|
|
||||||
"You can only wear two misc items at a time.";
|
|
||||||
|
|
||||||
protected Buff passiveBuff;
|
protected Buff passiveBuff;
|
||||||
protected Buff activeBuff;
|
protected Buff activeBuff;
|
||||||
|
|
||||||
|
@ -87,7 +84,7 @@ public class Artifact extends KindofMisc {
|
||||||
if ((hero.belongings.misc1 != null && hero.belongings.misc1.getClass() == this.getClass())
|
if ((hero.belongings.misc1 != null && hero.belongings.misc1.getClass() == this.getClass())
|
||||||
|| (hero.belongings.misc2 != null && hero.belongings.misc2.getClass() == this.getClass())){
|
|| (hero.belongings.misc2 != null && hero.belongings.misc2.getClass() == this.getClass())){
|
||||||
|
|
||||||
GLog.w("you cannot wear two of the same artifact");
|
GLog.w( Messages.get(Artifact.class, "cannot_wear_two") );
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
} else if (hero.belongings.misc1 != null && hero.belongings.misc2 != null) {
|
} else if (hero.belongings.misc1 != null && hero.belongings.misc2 != null) {
|
||||||
|
@ -97,7 +94,8 @@ public class Artifact extends KindofMisc {
|
||||||
final Artifact art = this;
|
final Artifact art = this;
|
||||||
|
|
||||||
ShatteredPixelDungeon.scene().add(
|
ShatteredPixelDungeon.scene().add(
|
||||||
new WndOptions(TXT_UNEQUIP_TITLE, TXT_UNEQUIP_MESSAGE,
|
new WndOptions(Messages.get(Artifact.class, "unequip_title"),
|
||||||
|
Messages.get(Artifact.class, "unequip_message"),
|
||||||
Utils.capitalize(m1.toString()),
|
Utils.capitalize(m1.toString()),
|
||||||
Utils.capitalize(m2.toString())) {
|
Utils.capitalize(m2.toString())) {
|
||||||
|
|
||||||
|
@ -134,7 +132,7 @@ public class Artifact extends KindofMisc {
|
||||||
identify();
|
identify();
|
||||||
if (cursed) {
|
if (cursed) {
|
||||||
equipCursed( hero );
|
equipCursed( hero );
|
||||||
GLog.n( "the " + this.name + " painfully binds itself to you" );
|
GLog.n( Messages.get(Artifact.class, "cursed_worn") );
|
||||||
}
|
}
|
||||||
|
|
||||||
hero.spendAndNext( TIME_TO_EQUIP );
|
hero.spendAndNext( TIME_TO_EQUIP );
|
||||||
|
@ -200,7 +198,7 @@ public class Artifact extends KindofMisc {
|
||||||
public String info() {
|
public String info() {
|
||||||
if (cursed && cursedKnown && !isEquipped( Dungeon.hero )) {
|
if (cursed && cursedKnown && !isEquipped( Dungeon.hero )) {
|
||||||
|
|
||||||
return desc() + "\n\nYou can feel a malevolent magic lurking within the " + name() + ".";
|
return desc() + "\n\n" + Messages.get(Artifact.class, "curse_known");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
@ -39,7 +40,7 @@ public class CapeOfThorns extends Artifact {
|
||||||
chargeCap = 100;
|
chargeCap = 100;
|
||||||
cooldown = 0;
|
cooldown = 0;
|
||||||
|
|
||||||
defaultAction = "NONE";
|
defaultAction = "NONE"; //so it can be quickslotted
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -49,17 +50,13 @@ public class CapeOfThorns extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "These collapsed sheets of metal from the DM-300 have formed together into a rigid wearable " +
|
String desc = Messages.get(this, "desc");
|
||||||
"cape. The metal is old and coated in thick flakes of rust. It seems to store a deep energy, " +
|
|
||||||
"perhaps it has some of the DM-300's power?";
|
|
||||||
if (isEquipped( Dungeon.hero )) {
|
if (isEquipped( Dungeon.hero )) {
|
||||||
desc += "\n\n";
|
desc += "\n\n";
|
||||||
if (cooldown == 0)
|
if (cooldown == 0)
|
||||||
desc += "The cape feels reassuringly heavy on your shoulders. You're not sure if it will directly " +
|
desc += Messages.get(this, "desc_inactive");
|
||||||
"help you in a fight, but it seems to be gaining energy from the damage you take.";
|
|
||||||
else
|
else
|
||||||
desc += "The cape seems to be releasing some stored energy, " +
|
desc += Messages.get(this, "desc_active");
|
||||||
"it is radiating a protective power at all angles. ";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return desc;
|
return desc;
|
||||||
|
@ -73,7 +70,7 @@ public class CapeOfThorns extends Artifact {
|
||||||
cooldown--;
|
cooldown--;
|
||||||
if (cooldown == 0) {
|
if (cooldown == 0) {
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
GLog.w("Your Cape becomes inert again.");
|
GLog.w( Messages.get(this, "inert") );
|
||||||
}
|
}
|
||||||
updateQuickslot();
|
updateQuickslot();
|
||||||
}
|
}
|
||||||
|
@ -87,7 +84,7 @@ public class CapeOfThorns extends Artifact {
|
||||||
if (charge >= chargeCap){
|
if (charge >= chargeCap){
|
||||||
charge = 0;
|
charge = 0;
|
||||||
cooldown = 10+level();
|
cooldown = 10+level();
|
||||||
GLog.p("Your Cape begins radiating energy, you feel protected!");
|
GLog.p( Messages.get(this, "radiating") );
|
||||||
BuffIndicator.refreshHero();
|
BuffIndicator.refreshHero();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +102,7 @@ public class CapeOfThorns extends Artifact {
|
||||||
if (exp >= (level()+1)*5 && level() < levelCap){
|
if (exp >= (level()+1)*5 && level() < levelCap){
|
||||||
exp -= (level()+1)*5;
|
exp -= (level()+1)*5;
|
||||||
upgrade();
|
upgrade();
|
||||||
GLog.p("Your Cape grows stronger!");
|
GLog.p( Messages.get(this, "levelup") );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -115,17 +112,12 @@ public class CapeOfThorns extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Thorns";
|
return Messages.get(this, "name");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
return "Your cape is radiating energy, surrounding you in a field of deflective force!\n" +
|
return Messages.get(this, "desc", dispTurns(cooldown));
|
||||||
"\n" +
|
|
||||||
"All damage you receive is reduced while the thorns effect is active. Additionally, " +
|
|
||||||
"if the attacker is next to you, the reduced amount is deflected back at the attacker.\n" +
|
|
||||||
"\n" +
|
|
||||||
"Your cape will continue radiating energy for " + dispTurns(cooldown) + ".";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ResultDescriptions;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot;
|
import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
@ -39,15 +40,6 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
public class ChaliceOfBlood extends Artifact {
|
public class ChaliceOfBlood extends Artifact {
|
||||||
|
|
||||||
private static final String TXT_CHALICE = "Chalice of Blood";
|
|
||||||
private static final String TXT_YES = "Yes, I know what I'm doing";
|
|
||||||
private static final String TXT_NO = "No, I changed my mind";
|
|
||||||
private static final String TXT_PRICK =
|
|
||||||
"Each time you use the chalice it will drain more life energy, "+
|
|
||||||
"if you are not careful this draining effect can easily kill you.\n\n"+
|
|
||||||
"Are you sure you want to offer it more life energy?";
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
image = ItemSpriteSheet.ARTIFACT_CHALICE1;
|
image = ItemSpriteSheet.ARTIFACT_CHALICE1;
|
||||||
|
|
||||||
|
@ -74,7 +66,10 @@ public class ChaliceOfBlood extends Artifact {
|
||||||
if (damage > hero.HP*0.75) {
|
if (damage > hero.HP*0.75) {
|
||||||
|
|
||||||
GameScene.show(
|
GameScene.show(
|
||||||
new WndOptions(TXT_CHALICE, TXT_PRICK, TXT_YES, TXT_NO) {
|
new WndOptions(Messages.get(this, "name"),
|
||||||
|
Messages.get(this, "prick_warn"),
|
||||||
|
Messages.get(this, "yes"),
|
||||||
|
Messages.get(this, "no")) {
|
||||||
@Override
|
@Override
|
||||||
protected void onSelect(int index) {
|
protected void onSelect(int index) {
|
||||||
if (index == 0)
|
if (index == 0)
|
||||||
|
@ -102,28 +97,19 @@ public class ChaliceOfBlood extends Artifact {
|
||||||
hero.sprite.operate( hero.pos );
|
hero.sprite.operate( hero.pos );
|
||||||
hero.busy();
|
hero.busy();
|
||||||
hero.spend(3f);
|
hero.spend(3f);
|
||||||
|
GLog.w( Messages.get(this, "onprick") );
|
||||||
if (damage <= 0){
|
if (damage <= 0){
|
||||||
GLog.i("You prick yourself, and your blood drips into the chalice.");
|
damage = 1;
|
||||||
} else if (damage < 25){
|
|
||||||
GLog.w("You prick yourself and the chalice feeds on you.");
|
|
||||||
Sample.INSTANCE.play(Assets.SND_CURSED);
|
|
||||||
hero.sprite.emitter().burst( ShadowParticle.CURSE, 6 );
|
|
||||||
} else if (damage < 100){
|
|
||||||
GLog.w("Your life essence drains into the chalice.");
|
|
||||||
Sample.INSTANCE.play(Assets.SND_CURSED);
|
|
||||||
hero.sprite.emitter().burst( ShadowParticle.CURSE, 12 );
|
|
||||||
} else {
|
} else {
|
||||||
GLog.w("The chalice devours your life energy.");
|
|
||||||
Sample.INSTANCE.play(Assets.SND_CURSED);
|
Sample.INSTANCE.play(Assets.SND_CURSED);
|
||||||
hero.sprite.emitter().burst( ShadowParticle.CURSE, 18 );
|
hero.sprite.emitter().burst( ShadowParticle.CURSE, 4+(damage/10) );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (damage > 0)
|
hero.damage(damage, this);
|
||||||
hero.damage(damage, this);
|
|
||||||
|
|
||||||
if (!hero.isAlive()) {
|
if (!hero.isAlive()) {
|
||||||
Dungeon.fail(Utils.format( ResultDescriptions.ITEM, name ));
|
Dungeon.fail(Utils.format( ResultDescriptions.ITEM, name ));
|
||||||
GLog.n("The Chalice sucks your life essence dry...");
|
GLog.n( Messages.get(this, "ondeath") );
|
||||||
} else {
|
} else {
|
||||||
upgrade();
|
upgrade();
|
||||||
}
|
}
|
||||||
|
@ -145,32 +131,18 @@ public class ChaliceOfBlood extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "This shining silver chalice is oddly adorned with sharp gems at the rim. ";
|
String desc = super.desc();
|
||||||
if (level() < levelCap)
|
|
||||||
desc += "The chalice is pulling your attention strangely, you feel like it wants something from you.";
|
|
||||||
else
|
|
||||||
desc += "The chalice is full and radiating energy.";
|
|
||||||
|
|
||||||
if (isEquipped (Dungeon.hero)){
|
if (isEquipped (Dungeon.hero)){
|
||||||
desc += "\n\n";
|
desc += "\n\n";
|
||||||
if (cursed)
|
if (cursed)
|
||||||
desc += "The cursed chalice has bound itself to your hand, and is slowly tugging at your life energy.";
|
desc += Messages.get(this, "desc_cursed");
|
||||||
else if (level() == 0)
|
else if (level() == 0)
|
||||||
desc += "As you hold the chalice, you feel oddly compelled to prick yourself on the sharp gems.";
|
desc += Messages.get(this, "desc_1");
|
||||||
else if (level() < 3)
|
|
||||||
desc += "Some of your blood is pooled into the chalice, you can subtly feel the chalice feeding life " +
|
|
||||||
"energy into you. You still want to cut yourself on the chalice, even though you know it will hurt.";
|
|
||||||
else if (level() < 7)
|
|
||||||
desc += "The chalice is about half full of your blood and you can feel it feeding life energy " +
|
|
||||||
"into you. you still want to hurt yourself, the chalice needs your energy, it's your friend.";
|
|
||||||
else if (level() < levelCap)
|
else if (level() < levelCap)
|
||||||
desc += "The chalice is getting pretty full, and the life force it's feeding you is stronger than " +
|
desc += Messages.get(this, "desc_2");
|
||||||
"ever. You should give it more energy, you need too, your friend needs your energy, it needs " +
|
|
||||||
"your help. Your friend knows you have limits though, it doesn't want you to die, just bleed.";
|
|
||||||
else
|
else
|
||||||
desc += "The chalice is filled to the brim with your life essence. You can feel the chalice pouring " +
|
desc += Messages.get(this, "desc_3");
|
||||||
"life energy back into you. It's your best friend. It's happy with you. So happy. " +
|
|
||||||
"You've done well. So well. You're being rewarded. You don't need to touch the sharp gems anymore.";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return desc;
|
return desc;
|
||||||
|
|
|
@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
|
@ -74,9 +75,9 @@ public class CloakOfShadows extends Artifact {
|
||||||
if (action.equals( AC_STEALTH )) {
|
if (action.equals( AC_STEALTH )) {
|
||||||
|
|
||||||
if (!stealthed){
|
if (!stealthed){
|
||||||
if (!isEquipped(hero)) GLog.i("You need to equip your cloak to do that.");
|
if (!isEquipped(hero)) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (cooldown > 0) GLog.i("Your cloak needs " + cooldown + " more rounds to re-energize.");
|
else if (cooldown > 0) GLog.i( Messages.get(this, "cooldown", cooldown) );
|
||||||
else if (charge <= 1) GLog.i("Your cloak hasn't recharged enough to be usable yet.");
|
else if (charge <= 1) GLog.i( Messages.get(this, "no_charge") );
|
||||||
else {
|
else {
|
||||||
stealthed = true;
|
stealthed = true;
|
||||||
hero.spend( 1f );
|
hero.spend( 1f );
|
||||||
|
@ -90,14 +91,12 @@ public class CloakOfShadows extends Artifact {
|
||||||
hero.sprite.alpha(0.4f);
|
hero.sprite.alpha(0.4f);
|
||||||
}
|
}
|
||||||
hero.sprite.operate(hero.pos);
|
hero.sprite.operate(hero.pos);
|
||||||
GLog.i("Your cloak blends you into the shadows.");
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
stealthed = false;
|
stealthed = false;
|
||||||
activeBuff.detach();
|
activeBuff.detach();
|
||||||
activeBuff = null;
|
activeBuff = null;
|
||||||
hero.sprite.operate( hero.pos );
|
hero.sprite.operate( hero.pos );
|
||||||
GLog.i("You return from underneath your cloak.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else
|
} else
|
||||||
|
@ -138,28 +137,6 @@ public class CloakOfShadows extends Artifact {
|
||||||
return super.upgrade();
|
return super.upgrade();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String desc() {
|
|
||||||
String desc = "This light silken cloak shimmers in and out of your vision as it sways in the air. When worn, " +
|
|
||||||
"it can be used to hide your presence for a short time.\n\n";
|
|
||||||
|
|
||||||
if (level() < 5)
|
|
||||||
desc += "The cloak's magic has faded and it is not very powerful, perhaps it will regain strength through use.";
|
|
||||||
else if (level() < 10)
|
|
||||||
desc += "The cloak's power has begun to return.";
|
|
||||||
else if (level() < 15)
|
|
||||||
desc += "The cloak has almost returned to full strength.";
|
|
||||||
else
|
|
||||||
desc += "The cloak is at full potential and will work for extended durations.";
|
|
||||||
|
|
||||||
|
|
||||||
if ( isEquipped (Dungeon.hero) )
|
|
||||||
desc += "\n\nThe cloak rests around your shoulders.";
|
|
||||||
|
|
||||||
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final String STEALTHED = "stealthed";
|
private static final String STEALTHED = "stealthed";
|
||||||
private static final String COOLDOWN = "cooldown";
|
private static final String COOLDOWN = "cooldown";
|
||||||
|
|
||||||
|
@ -231,7 +208,7 @@ public class CloakOfShadows extends Artifact {
|
||||||
if (turnsToCost == 0) charge--;
|
if (turnsToCost == 0) charge--;
|
||||||
if (charge <= 0) {
|
if (charge <= 0) {
|
||||||
detach();
|
detach();
|
||||||
GLog.w("Your cloak has run out of energy.");
|
GLog.w( Messages.get(this, "no_charge") );
|
||||||
((Hero)target).interrupt();
|
((Hero)target).interrupt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,7 +217,7 @@ public class CloakOfShadows extends Artifact {
|
||||||
if (exp >= (level()+1)*50 && level() < levelCap) {
|
if (exp >= (level()+1)*50 && level() < levelCap) {
|
||||||
upgrade();
|
upgrade();
|
||||||
exp -= level()*50;
|
exp -= level()*50;
|
||||||
GLog.p("Your cloak grows stronger!");
|
GLog.p( Messages.get(this, "levelup") );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (turnsToCost == 0) turnsToCost = 2;
|
if (turnsToCost == 0) turnsToCost = 2;
|
||||||
|
@ -260,7 +237,7 @@ public class CloakOfShadows extends Artifact {
|
||||||
if (exp >= (level()+1)*50 && level() < levelCap) {
|
if (exp >= (level()+1)*50 && level() < levelCap) {
|
||||||
upgrade();
|
upgrade();
|
||||||
exp -= level()*50;
|
exp -= level()*50;
|
||||||
GLog.p("Your cloak grows stronger!");
|
GLog.p( Messages.get(this, "levelup") );
|
||||||
}
|
}
|
||||||
|
|
||||||
updateQuickslot();
|
updateQuickslot();
|
||||||
|
@ -275,17 +252,12 @@ public class CloakOfShadows extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Cloaked";
|
return Messages.get(this, "name");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
return "Your cloak of shadows is granting you invisibility while you are shrouded by it.\n" +
|
return Messages.get(this, "desc");
|
||||||
"\n" +
|
|
||||||
"While you are invisible enemies are unable to attack or follow you. " +
|
|
||||||
"Most physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility.\n" +
|
|
||||||
"\n" +
|
|
||||||
"You will remain cloaked until it is cancelled or your cloak runs out of charge.";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -37,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShaftParticle;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBlast;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBlast;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
@ -88,7 +89,7 @@ public class DriedRose extends Artifact {
|
||||||
if (action.equals(AC_SUMMON)) {
|
if (action.equals(AC_SUMMON)) {
|
||||||
|
|
||||||
if (spawned) GLog.n("sad ghost: \"I'm already here\"");
|
if (spawned) GLog.n("sad ghost: \"I'm already here\"");
|
||||||
else if (!isEquipped( hero )) GLog.i("You need to equip your rose to do that.");
|
else if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge != chargeCap) GLog.i("Your rose isn't fully charged yet.");
|
else if (charge != chargeCap) GLog.i("Your rose isn't fully charged yet.");
|
||||||
else if (cursed) GLog.i("You cannot use a cursed rose.");
|
else if (cursed) GLog.i("You cannot use a cursed rose.");
|
||||||
else {
|
else {
|
||||||
|
@ -140,19 +141,12 @@ public class DriedRose extends Artifact {
|
||||||
|
|
||||||
if (isEquipped( Dungeon.hero )){
|
if (isEquipped( Dungeon.hero )){
|
||||||
if (!cursed){
|
if (!cursed){
|
||||||
desc += "\n\nThe rose rests in your hand, it feels strangely warm.";
|
|
||||||
|
|
||||||
if (level() < 5)
|
if (level() < levelCap)
|
||||||
desc+= "\n\nThe rose has lost most of its petals. It feels extremely frail, like it " +
|
desc+= "\n\nIt seems to be missing some petals. Perhaps reattaching them out strengthen the rose.";
|
||||||
"could snap any moment.";
|
|
||||||
else if (level() < 10)
|
|
||||||
desc+= "\n\nYou have reattached many petals and the rose has started to somehow come back to life."+
|
|
||||||
" It almost looks like it's ready to bloom.";
|
|
||||||
else
|
|
||||||
desc+= "\n\nThe rose has blossomed again through some kind of magic, its connection to your spirit"+
|
|
||||||
" friend is stronger than ever.";
|
|
||||||
} else
|
} else
|
||||||
desc += "\n\nThe cursed rose is bound to you hand, it feels eerily cold.";
|
desc += "\n\nThe cursed rose is bound to your hand, it feels eerily cold.";
|
||||||
}
|
}
|
||||||
|
|
||||||
return desc;
|
return desc;
|
||||||
|
|
|
@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Chains;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
|
||||||
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.scenes.CellSelector;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
@ -71,9 +72,9 @@ public class EtherealChains extends Artifact {
|
||||||
|
|
||||||
curUser = hero;
|
curUser = hero;
|
||||||
|
|
||||||
if (!isEquipped( hero )) GLog.i("You need to equip the chains to do that.");
|
if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge < 1) GLog.i("Your chains do not have any available charge.");
|
else if (charge < 1) GLog.i( Messages.get(this, "no_charge") );
|
||||||
else if (cursed) GLog.w("You can't use cursed chains.");
|
else if (cursed) GLog.w( Messages.get(this, "cursed") );
|
||||||
else {
|
else {
|
||||||
GameScene.selectCell(caster);
|
GameScene.selectCell(caster);
|
||||||
}
|
}
|
||||||
|
@ -104,16 +105,16 @@ public class EtherealChains extends Artifact {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (newPos == -1){
|
if (newPos == -1){
|
||||||
GLog.w("That won't do anything");
|
GLog.w( Messages.get(this, "does_nothing") );
|
||||||
} else {
|
} else {
|
||||||
final int newMobPos = newPos;
|
final int newMobPos = newPos;
|
||||||
final Char affected = Actor.findChar( chain.collisionPos );
|
final Char affected = Actor.findChar( chain.collisionPos );
|
||||||
int chargeUse = Level.distance(affected.pos, newMobPos);
|
int chargeUse = Level.distance(affected.pos, newMobPos);
|
||||||
if (chargeUse > charge) {
|
if (chargeUse > charge) {
|
||||||
GLog.w("Your chains do not have enough charge.");
|
GLog.w( Messages.get(this, "no_charge") );
|
||||||
return;
|
return;
|
||||||
} else if (affected.properties().contains(Char.Property.IMMOVABLE)) {
|
} else if (affected.properties().contains(Char.Property.IMMOVABLE)) {
|
||||||
GLog.w("Your chains cannot pull that target");
|
GLog.w( Messages.get(this, "cant_pull") );
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
charge -= chargeUse;
|
charge -= chargeUse;
|
||||||
|
@ -144,12 +145,12 @@ public class EtherealChains extends Artifact {
|
||||||
if (!Level.solid[i] && Actor.findChar(i) == null) newPos = i;
|
if (!Level.solid[i] && Actor.findChar(i) == null) newPos = i;
|
||||||
}
|
}
|
||||||
if (newPos == -1) {
|
if (newPos == -1) {
|
||||||
GLog.w("That won't do anything");
|
GLog.w( Messages.get(this, "does_nothing") );
|
||||||
} else {
|
} else {
|
||||||
final int newHeroPos = newPos;
|
final int newHeroPos = newPos;
|
||||||
int chargeUse = Level.distance(curUser.pos, newHeroPos);
|
int chargeUse = Level.distance(curUser.pos, newHeroPos);
|
||||||
if (chargeUse > charge){
|
if (chargeUse > charge){
|
||||||
GLog.w("Your chains do not have enough charge.");
|
GLog.w( Messages.get(this, "no_charge") );
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
charge -= chargeUse;
|
charge -= chargeUse;
|
||||||
|
@ -171,7 +172,7 @@ public class EtherealChains extends Artifact {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
GLog.i("There is nothing to grab there");
|
GLog.i( Messages.get(this, "nothing_to_grab") );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -180,7 +181,7 @@ public class EtherealChains extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String prompt() {
|
public String prompt() {
|
||||||
return "Choose a location to target";
|
return Messages.get(this, "prompt");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -191,18 +192,14 @@ public class EtherealChains extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "These large clanky chains glow with spiritual energy. They move with a certain heft, " +
|
String desc = super.desc();
|
||||||
"but are surprisingly almost weightless. These chains can be used to grab surfaces, pulling you " +
|
|
||||||
"towards terrain or pulling enemies toward you. The ethereal nature of the chains even allows them to " +
|
|
||||||
"extend and pull targets through walls!";
|
|
||||||
|
|
||||||
if (isEquipped( Dungeon.hero )){
|
if (isEquipped( Dungeon.hero )){
|
||||||
if (!cursed) {
|
desc += "\n\n";
|
||||||
desc += "\n\nThe chains rest around your side, slowly siphoning the spiritual energy of those you defeat. " +
|
if (cursed)
|
||||||
"Each charge is a link in the chain, which will extend out exactly one tile.";
|
desc += Messages.get(this, "desc_cursed");
|
||||||
|
else
|
||||||
}else
|
desc += Messages.get(this, "desc_equipped");
|
||||||
desc += "\n\nThe cursed chains are locked to your side, constantly swinging around, trying to trip or bind you";
|
|
||||||
}
|
}
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +241,7 @@ public class EtherealChains extends Artifact {
|
||||||
|
|
||||||
if (exp > 100+level()*50 && level() < levelCap){
|
if (exp > 100+level()*50 && level() < levelCap){
|
||||||
exp -= 100+level()*50;
|
exp -= 100+level()*50;
|
||||||
GLog.p("Your chains grow stronger!");
|
GLog.p( Messages.get(this, "levelup") );
|
||||||
upgrade();
|
upgrade();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
@ -65,7 +66,6 @@ public class HornOfPlenty extends Artifact {
|
||||||
public static final String AC_EAT = "EAT";
|
public static final String AC_EAT = "EAT";
|
||||||
public static final String AC_STORE = "STORE";
|
public static final String AC_STORE = "STORE";
|
||||||
|
|
||||||
protected String inventoryTitle = "Select a piece of food";
|
|
||||||
protected WndBag.Mode mode = WndBag.Mode.FOOD;
|
protected WndBag.Mode mode = WndBag.Mode.FOOD;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -84,8 +84,8 @@ public class HornOfPlenty extends Artifact {
|
||||||
|
|
||||||
if (action.equals(AC_EAT)){
|
if (action.equals(AC_EAT)){
|
||||||
|
|
||||||
if (!isEquipped(hero)) GLog.i("You need to equip your horn to do that.");
|
if (!isEquipped(hero)) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge == 0) GLog.i("Your horn has no food in it to eat!");
|
else if (charge == 0) GLog.i( Messages.get(this, "no_food") );
|
||||||
else {
|
else {
|
||||||
((Hunger) hero.buff(Hunger.class)).satisfy(energy * charge);
|
((Hunger) hero.buff(Hunger.class)).satisfy(energy * charge);
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ public class HornOfPlenty extends Artifact {
|
||||||
hero.busy();
|
hero.busy();
|
||||||
SpellSprite.show(hero, SpellSprite.FOOD);
|
SpellSprite.show(hero, SpellSprite.FOOD);
|
||||||
Sample.INSTANCE.play(Assets.SND_EAT);
|
Sample.INSTANCE.play(Assets.SND_EAT);
|
||||||
GLog.i("You eat from the horn.");
|
GLog.i( Messages.get(this, "eat") );
|
||||||
|
|
||||||
hero.spend(TIME_TO_EAT);
|
hero.spend(TIME_TO_EAT);
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ public class HornOfPlenty extends Artifact {
|
||||||
|
|
||||||
} else if (action.equals(AC_STORE)){
|
} else if (action.equals(AC_STORE)){
|
||||||
|
|
||||||
GameScene.selectItem(itemSelector, mode, inventoryTitle);
|
GameScene.selectItem(itemSelector, mode, Messages.get(this, "prompt"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,28 +140,14 @@ public class HornOfPlenty extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "This horn can't be blown into, but instead seems to fill up with food over time.\n\n";
|
String desc = super.desc();
|
||||||
|
|
||||||
if (charge == 0)
|
|
||||||
desc += "The horn is completely empty.";
|
|
||||||
else if (charge < 3)
|
|
||||||
desc += "The horn is almost empty, a few small fruits and berries sit in the back.";
|
|
||||||
else if (charge < 7)
|
|
||||||
desc += "The horn is partially filled, you can see several fruits & vegetables inside.";
|
|
||||||
else if (charge < 10)
|
|
||||||
desc += "The horn is getting quite full, several pieces of fresh produce are poking up towards the front.";
|
|
||||||
else
|
|
||||||
desc += "The horn is overflowing! A delicious array of fruit and veg is filling the horn up to its brim.";
|
|
||||||
|
|
||||||
if ( isEquipped( Dungeon.hero ) ){
|
if ( isEquipped( Dungeon.hero ) ){
|
||||||
if (!cursed) {
|
if (!cursed) {
|
||||||
desc += "\n\nThe horn rests at your side and is surprisingly lightweight, even with food in it.";
|
if (level() < levelCap)
|
||||||
|
desc += "\n\n" +Messages.get(this, "desc_hint");
|
||||||
if (level() < 15)
|
|
||||||
desc += " Perhaps there is a way to increase the horn's power by giving it food energy.";
|
|
||||||
} else {
|
} else {
|
||||||
desc += "\n\nThe cursed horn has bound itself to your side, " +
|
desc += "\n\n" +Messages.get(this, "desc_cursed");
|
||||||
"it seems to be eager to take food rather than produce it.";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +180,7 @@ public class HornOfPlenty extends Artifact {
|
||||||
image = ItemSpriteSheet.ARTIFACT_HORN1;
|
image = ItemSpriteSheet.ARTIFACT_HORN1;
|
||||||
|
|
||||||
if (charge == chargeCap){
|
if (charge == chargeCap){
|
||||||
GLog.p("Your horn is full of food!");
|
GLog.p( Messages.get(this, "full") );
|
||||||
partialCharge = 0;
|
partialCharge = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +201,7 @@ public class HornOfPlenty extends Artifact {
|
||||||
public void onSelect( Item item ) {
|
public void onSelect( Item item ) {
|
||||||
if (item != null && item instanceof Food) {
|
if (item != null && item instanceof Food) {
|
||||||
if (item instanceof Blandfruit && ((Blandfruit) item).potionAttrib == null){
|
if (item instanceof Blandfruit && ((Blandfruit) item).potionAttrib == null){
|
||||||
GLog.w("your horn rejects the unprepared blandfruit.");
|
GLog.w( Messages.get(HornOfPlenty.class, "reject") );
|
||||||
} else {
|
} else {
|
||||||
Hero hero = Dungeon.hero;
|
Hero hero = Dungeon.hero;
|
||||||
hero.sprite.operate( hero.pos );
|
hero.sprite.operate( hero.pos );
|
||||||
|
@ -225,9 +211,9 @@ public class HornOfPlenty extends Artifact {
|
||||||
curItem.upgrade(((Food)item).hornValue);
|
curItem.upgrade(((Food)item).hornValue);
|
||||||
if (curItem.level() >= 30){
|
if (curItem.level() >= 30){
|
||||||
curItem.level(30);
|
curItem.level(30);
|
||||||
GLog.p("your horn has consumed all the food it can!");
|
GLog.p( Messages.get(HornOfPlenty.class, "maxlevel") );
|
||||||
} else
|
} else
|
||||||
GLog.p("the horn consumes your food offering and grows in strength!");
|
GLog.p( Messages.get(HornOfPlenty.class, "levelup") );
|
||||||
item.detach(hero.belongings.backpack);
|
item.detach(hero.belongings.backpack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,24 +56,6 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
public class LloydsBeacon extends Artifact {
|
public class LloydsBeacon extends Artifact {
|
||||||
|
|
||||||
private static final String TXT_PREVENTING =
|
|
||||||
"Strong magic aura of this place prevents you from using the lloyd's beacon!";
|
|
||||||
|
|
||||||
private static final String TXT_CREATURES =
|
|
||||||
"Psychic aura of neighbouring creatures doesn't allow you to use the lloyd's beacon at this moment.";
|
|
||||||
|
|
||||||
private static final String TXT_RETURN =
|
|
||||||
"The lloyd's beacon is successfully set at your current location, now you can return here anytime.";
|
|
||||||
|
|
||||||
private static final String TXT_INFO =
|
|
||||||
"Lloyd's beacon is an intricate magic device, which grants the user control of teleportation magics.\n" +
|
|
||||||
"\n" +
|
|
||||||
"The beacon can be used to return to a set location, but can also expel bursts of random teleportation " +
|
|
||||||
"magic once it has charged from being equipped. This magic can be directed at a target or at the user themselves.";
|
|
||||||
|
|
||||||
private static final String TXT_SET =
|
|
||||||
"\n\nThis beacon was set somewhere on the level %d of Pixel Dungeon.";
|
|
||||||
|
|
||||||
public static final float TIME_TO_USE = 1;
|
public static final float TIME_TO_USE = 1;
|
||||||
|
|
||||||
public static final String AC_ZAP = "ZAP";
|
public static final String AC_ZAP = "ZAP";
|
||||||
|
@ -132,13 +114,13 @@ public class LloydsBeacon extends Artifact {
|
||||||
|
|
||||||
if (Dungeon.bossLevel()) {
|
if (Dungeon.bossLevel()) {
|
||||||
hero.spend( LloydsBeacon.TIME_TO_USE );
|
hero.spend( LloydsBeacon.TIME_TO_USE );
|
||||||
GLog.w( TXT_PREVENTING );
|
GLog.w( Messages.get(this, "preventing") );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i < Level.NEIGHBOURS8.length; i++) {
|
for (int i=0; i < Level.NEIGHBOURS8.length; i++) {
|
||||||
if (Actor.findChar( hero.pos + Level.NEIGHBOURS8[i] ) != null) {
|
if (Actor.findChar( hero.pos + Level.NEIGHBOURS8[i] ) != null) {
|
||||||
GLog.w( TXT_CREATURES );
|
GLog.w( Messages.get(this, "creatures") );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,8 +131,8 @@ public class LloydsBeacon extends Artifact {
|
||||||
curUser = hero;
|
curUser = hero;
|
||||||
int chargesToUse = Dungeon.depth > 20 ? 2 : 1;
|
int chargesToUse = Dungeon.depth > 20 ? 2 : 1;
|
||||||
|
|
||||||
if (!isEquipped( hero )) GLog.i("You need to equip the beacon to do that.");
|
if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge < chargesToUse) GLog.i("Your beacon does not have enough energy right now.");
|
else if (charge < chargesToUse) GLog.i( Messages.get(this, "no_charge") );
|
||||||
else {
|
else {
|
||||||
GameScene.selectCell(zapper);
|
GameScene.selectCell(zapper);
|
||||||
}
|
}
|
||||||
|
@ -166,7 +148,7 @@ public class LloydsBeacon extends Artifact {
|
||||||
hero.sprite.operate( hero.pos );
|
hero.sprite.operate( hero.pos );
|
||||||
Sample.INSTANCE.play( Assets.SND_BEACON );
|
Sample.INSTANCE.play( Assets.SND_BEACON );
|
||||||
|
|
||||||
GLog.i( TXT_RETURN );
|
GLog.i( Messages.get(this, "return") );
|
||||||
|
|
||||||
} else if (action == AC_RETURN) {
|
} else if (action == AC_RETURN) {
|
||||||
|
|
||||||
|
@ -243,7 +225,7 @@ public class LloydsBeacon extends Artifact {
|
||||||
|
|
||||||
} else if (ch.properties().contains(Char.Property.IMMOVABLE)) {
|
} else if (ch.properties().contains(Char.Property.IMMOVABLE)) {
|
||||||
|
|
||||||
GLog.w("The teleportation magic fails.");
|
GLog.w( Messages.get(this, "tele_fail") );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -266,7 +248,7 @@ public class LloydsBeacon extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String prompt() {
|
public String prompt() {
|
||||||
return "Choose a location to zap.";
|
return Messages.get(this, "prompt");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -277,14 +259,19 @@ public class LloydsBeacon extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Item upgrade() {
|
public Item upgrade() {
|
||||||
|
if (level() == levelCap) return this;
|
||||||
chargeCap ++;
|
chargeCap ++;
|
||||||
|
GLog.p( Messages.get(this, "levelup") );
|
||||||
return super.upgrade();
|
return super.upgrade();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
return TXT_INFO + (returnDepth == -1 ? "" : Utils.format( TXT_SET, returnDepth ) );
|
String desc = super.desc();
|
||||||
|
if (returnDepth != -1){
|
||||||
|
desc += "\n\n" + Messages.get(this, "desc_set", returnDepth);
|
||||||
|
}
|
||||||
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reset() {
|
public void reset() {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.watabou.utils.Random;
|
import com.watabou.utils.Random;
|
||||||
|
|
||||||
|
@ -43,13 +44,10 @@ public class MasterThievesArmband extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "This purple velvet armband bears the mark of a master thief. This doesn't belong to you, but " +
|
String desc = super.desc();
|
||||||
"you doubt it belonged to the person you took it from either.";
|
|
||||||
|
|
||||||
if ( isEquipped (Dungeon.hero) )
|
if ( isEquipped (Dungeon.hero) )
|
||||||
desc += "\n\nWith the armband around your wrist you feel more dexterous and cunning. Every piece of gold " +
|
desc += "\n\n" + Messages.get(this, "desc_worn");
|
||||||
"you find makes you desire others property more. " +
|
|
||||||
"You wonder if Pixel Mart accepts the five finger discount...";
|
|
||||||
|
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@ public class SandalsOfNature extends Artifact {
|
||||||
GameScene.selectItem(itemSelector, mode, inventoryTitle);
|
GameScene.selectItem(itemSelector, mode, inventoryTitle);
|
||||||
} else if (action.equals(AC_ROOT) && level() > 0){
|
} else if (action.equals(AC_ROOT) && level() > 0){
|
||||||
|
|
||||||
if (!isEquipped( hero )) GLog.i("You need to equip them to do that.");
|
if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge == 0) GLog.i("They have no energy right now.");
|
else if (charge == 0) GLog.i("They have no energy right now.");
|
||||||
else {
|
else {
|
||||||
Buff.prolong(hero, Roots.class, 5);
|
Buff.prolong(hero, Roots.class, 5);
|
||||||
|
@ -101,39 +101,23 @@ public class SandalsOfNature extends Artifact {
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "";
|
String desc = "";
|
||||||
if (level() == 0)
|
if (level() == 0)
|
||||||
desc += "What initially seem like sandals made of twine are actually two plants! The footwear moves ever " +
|
desc += "What initially seem like sandals made of twine are actually two plants! They seem very weak and pale, perhaps they need to be given nutrients?";
|
||||||
"so slightly when being held. They seem very weak and pale, perhaps they need to be given nutrients?";
|
|
||||||
else if (level() == 1)
|
else if (level() == 1)
|
||||||
desc += "The footwear has grown and now more closely resemble two tailored shoes. They seem to match the " +
|
desc += "The footwear has grown and now more closely resemble two tailored shoes. Some colour has returned to them, perhaps they can still grow further?";
|
||||||
"contours of your feet exactly. Some colour has returned to them, perhaps they can still grow further?";
|
|
||||||
else if (level() == 2)
|
else if (level() == 2)
|
||||||
desc += "The plants have grown again and now resembles a pair of solid tall boots. They appear to be made" +
|
desc += "The plants have grown again and now resembles a pair of solid boots made from bark.The plants seem to have " +
|
||||||
" of solid bark more than vine now, yet are still very flexible. The plants seem to have " +
|
|
||||||
"regained their strength, but perhaps they can still grow further";
|
"regained their strength, but perhaps they can still grow further";
|
||||||
else
|
else
|
||||||
desc += "Now almost tall enough to make full pants, the bark-mesh artifact seems to have reached its " +
|
desc += "The plants seem to have reached their maximum size, they resemble a pair of armored greaves. The greaves are a deep brown " +
|
||||||
"maximum size. Perhaps the two plants don't want to merge together? The greaves are a deep brown " +
|
|
||||||
"and resemble a very sturdy tree.";
|
"and resemble a very sturdy tree.";
|
||||||
|
|
||||||
if ( isEquipped ( Dungeon.hero ) ){
|
if ( isEquipped ( Dungeon.hero ) ){
|
||||||
desc += "\n\n";
|
desc += "\n\n";
|
||||||
if (level() == 0) {
|
|
||||||
if (!cursed)
|
|
||||||
desc += "The sandals wrap snugly around your feet, they seem happy to be worn.";
|
|
||||||
else
|
|
||||||
desc += "The cursed sandals wrap tightly around your feet.";
|
|
||||||
}
|
|
||||||
else if (level() == 1)
|
|
||||||
desc += "The shoes fit on loosely but quickly tighten to make a perfect fit.";
|
|
||||||
else if (level() == 2)
|
|
||||||
desc += "The boots fit snugly and add a nice heft to your step.";
|
|
||||||
else
|
|
||||||
desc += "The greaves are thick and weighty, but very easy to move in, as if they are moving with you.";
|
|
||||||
|
|
||||||
if (!cursed)
|
if (!cursed)
|
||||||
desc += " You feel more attuned with nature while wearing them.";
|
desc += " You feel more attuned with nature while wearing this artifact.";
|
||||||
else
|
else
|
||||||
desc += " They are blocking any attunement with nature.";
|
desc += " The cursed sandals are blocking any attunement with nature.";
|
||||||
|
|
||||||
if (level() > 0)
|
if (level() > 0)
|
||||||
desc += "\n\nThe footwear has gained the ability to form up into a sort of immobile natural armour, " +
|
desc += "\n\nThe footwear has gained the ability to form up into a sort of immobile natural armour, " +
|
||||||
|
@ -169,7 +153,6 @@ public class SandalsOfNature extends Artifact {
|
||||||
|
|
||||||
|
|
||||||
private static final String SEEDS = "seeds";
|
private static final String SEEDS = "seeds";
|
||||||
private static final String NAME = "name";
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void storeInBundle( Bundle bundle ) {
|
public void storeInBundle( Bundle bundle ) {
|
||||||
|
@ -200,7 +183,7 @@ public class SandalsOfNature extends Artifact {
|
||||||
public void onSelect( Item item ) {
|
public void onSelect( Item item ) {
|
||||||
if (item != null && item instanceof Plant.Seed) {
|
if (item != null && item instanceof Plant.Seed) {
|
||||||
if (seeds.contains(item.name())){
|
if (seeds.contains(item.name())){
|
||||||
GLog.w("Your " + name + " have already gained nutrients from that seed recently.");
|
GLog.w("Your footwear have already gained nutrients from that seed recently.");
|
||||||
} else {
|
} else {
|
||||||
seeds.add(item.name());
|
seeds.add(item.name());
|
||||||
|
|
||||||
|
@ -217,7 +200,7 @@ public class SandalsOfNature extends Artifact {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
GLog.i("Your " + name + " absorb the seed, they seem healthier.");
|
GLog.i("The footwear absorbs the seed, they seem healthier.");
|
||||||
}
|
}
|
||||||
item.detach(hero.belongings.backpack);
|
item.detach(hero.belongings.backpack);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
|
@ -66,8 +67,8 @@ public class TalismanOfForesight extends Artifact {
|
||||||
super.execute(hero, action);
|
super.execute(hero, action);
|
||||||
if (action.equals(AC_SCRY)){
|
if (action.equals(AC_SCRY)){
|
||||||
|
|
||||||
if (!isEquipped(hero)) GLog.i("You need to equip your talisman to do that.");
|
if (!isEquipped(hero)) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge != chargeCap) GLog.i("Your talisman isn't full charged yet.");
|
else if (charge != chargeCap) GLog.i( Messages.get(this, "no_charge") );
|
||||||
else {
|
else {
|
||||||
hero.sprite.operate(hero.pos);
|
hero.sprite.operate(hero.pos);
|
||||||
hero.busy();
|
hero.busy();
|
||||||
|
@ -86,7 +87,7 @@ public class TalismanOfForesight extends Artifact {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GLog.p("The Talisman floods your mind with knowledge about the current floor.");
|
GLog.p( Messages.get(this, "scry") );
|
||||||
|
|
||||||
Buff.affect(hero, Awareness.class, Awareness.DURATION);
|
Buff.affect(hero, Awareness.class, Awareness.DURATION);
|
||||||
Dungeon.observe();
|
Dungeon.observe();
|
||||||
|
@ -101,16 +102,14 @@ public class TalismanOfForesight extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc = "A smooth stone, almost too big for your pocket or hand, with strange engravings on it. " +
|
String desc = super.desc();
|
||||||
"You feel like it's watching you, assessing your every move.";
|
|
||||||
if ( isEquipped( Dungeon.hero ) ){
|
if ( isEquipped( Dungeon.hero ) ){
|
||||||
if (!cursed) {
|
if (!cursed) {
|
||||||
desc += "\n\nWhen you hold the talisman you feel like your senses are heightened.";
|
desc += "\n\n" + Messages.get(this, "desc_worn");
|
||||||
if (charge == chargeCap)
|
|
||||||
desc += "\n\nThe talisman is radiating energy, prodding at your mind. You wonder what would " +
|
|
||||||
"happen if you let it in.";
|
|
||||||
} else {
|
} else {
|
||||||
desc += "\n\nThe cursed talisman is intently staring into you, making it impossible to concentrate.";
|
desc += "\n\n" + Messages.get(this, "desc_cursed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +156,7 @@ public class TalismanOfForesight extends Artifact {
|
||||||
|
|
||||||
if (smthFound && !cursed){
|
if (smthFound && !cursed){
|
||||||
if (warn == 0){
|
if (warn == 0){
|
||||||
GLog.w("You feel uneasy.");
|
GLog.w( Messages.get(this, "uneasy") );
|
||||||
if (target instanceof Hero){
|
if (target instanceof Hero){
|
||||||
((Hero)target).interrupt();
|
((Hero)target).interrupt();
|
||||||
}
|
}
|
||||||
|
@ -180,7 +179,7 @@ public class TalismanOfForesight extends Artifact {
|
||||||
charge++;
|
charge++;
|
||||||
} else if (charge >= chargeCap) {
|
} else if (charge >= chargeCap) {
|
||||||
partialCharge = 0;
|
partialCharge = 0;
|
||||||
GLog.p("Your Talisman is fully charged!");
|
GLog.p( Messages.get(this, "full_charge") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,19 +191,19 @@ public class TalismanOfForesight extends Artifact {
|
||||||
exp++;
|
exp++;
|
||||||
if (exp >= 4 && level() < levelCap) {
|
if (exp >= 4 && level() < levelCap) {
|
||||||
upgrade();
|
upgrade();
|
||||||
GLog.p("Your Talisman grows stronger!");
|
GLog.p( Messages.get(this, "levelup") );
|
||||||
exp -= 4;
|
exp -= 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "Foresight";
|
return Messages.get(this, "name");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
return "You feel very nervous, as if there is nearby unseen danger.";
|
return Messages.get(this, "desc");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
@ -41,14 +42,6 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
public class TimekeepersHourglass extends Artifact {
|
public class TimekeepersHourglass extends Artifact {
|
||||||
|
|
||||||
private static final String TXT_HGLASS = "Timekeeper's Hourglass";
|
|
||||||
private static final String TXT_STASIS = "Put myself in stasis";
|
|
||||||
private static final String TXT_FREEZE = "Freeze time around me";
|
|
||||||
private static final String TXT_DESC =
|
|
||||||
"How would you like to use the hourglass's magic?\n\n" +
|
|
||||||
"While in stasis, time will move normally while you are frozen and completely invulnerable.\n\n" +
|
|
||||||
"When time is frozen, you can move as if your actions take no time. Note that attacking will break this.";
|
|
||||||
|
|
||||||
{
|
{
|
||||||
image = ItemSpriteSheet.ARTIFACT_HOURGLASS;
|
image = ItemSpriteSheet.ARTIFACT_HOURGLASS;
|
||||||
|
|
||||||
|
@ -78,23 +71,26 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
public void execute( Hero hero, String action ) {
|
public void execute( Hero hero, String action ) {
|
||||||
if (action.equals(AC_ACTIVATE)){
|
if (action.equals(AC_ACTIVATE)){
|
||||||
|
|
||||||
if (!isEquipped( hero )) GLog.i("You need to equip your hourglass to do that.");
|
if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (activeBuff != null) GLog.i("Your hourglass is already in use.");
|
else if (activeBuff != null) GLog.i( Messages.get(this, "in_use") );
|
||||||
else if (charge <= 1) GLog.i("Your hourglass hasn't recharged enough to be usable yet.");
|
else if (charge <= 1) GLog.i( Messages.get(this, "no_charge") );
|
||||||
else if (cursed) GLog.i("You cannot use a cursed hourglass.");
|
else if (cursed) GLog.i( Messages.get(this, "cursed") );
|
||||||
else GameScene.show(
|
else GameScene.show(
|
||||||
new WndOptions(TXT_HGLASS, TXT_DESC, TXT_STASIS, TXT_FREEZE) {
|
new WndOptions( Messages.get(this, "name"),
|
||||||
|
Messages.get(this, "prompt"),
|
||||||
|
Messages.get(this, "stasis"),
|
||||||
|
Messages.get(this, "freeze")) {
|
||||||
@Override
|
@Override
|
||||||
protected void onSelect(int index) {
|
protected void onSelect(int index) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
GLog.i("The world seems to shift around you in an instant.");
|
GLog.i( Messages.get(this, "onstasis") );
|
||||||
GameScene.flash(0xFFFFFF);
|
GameScene.flash(0xFFFFFF);
|
||||||
Sample.INSTANCE.play(Assets.SND_TELEPORT);
|
Sample.INSTANCE.play(Assets.SND_TELEPORT);
|
||||||
|
|
||||||
activeBuff = new timeStasis();
|
activeBuff = new timeStasis();
|
||||||
activeBuff.attachTo(Dungeon.hero);
|
activeBuff.attachTo(Dungeon.hero);
|
||||||
} else if (index == 1) {
|
} else if (index == 1) {
|
||||||
GLog.i("everything around you suddenly freezes.");
|
GLog.i( Messages.get(this, "onfreeze") );
|
||||||
GameScene.flash(0xFFFFFF);
|
GameScene.flash(0xFFFFFF);
|
||||||
Sample.INSTANCE.play(Assets.SND_TELEPORT);
|
Sample.INSTANCE.play(Assets.SND_TELEPORT);
|
||||||
|
|
||||||
|
@ -145,22 +141,15 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
String desc =
|
String desc = super.desc();
|
||||||
"This large ornate hourglass looks fairly unassuming, but you feel a great power in its finely carved" +
|
|
||||||
" frame. As you rotate the hourglass and watch the sand pour you can feel its magic tugging at you, " +
|
|
||||||
"surely invoking this magic would give you some power over time.";
|
|
||||||
|
|
||||||
if (isEquipped( Dungeon.hero )){
|
if (isEquipped( Dungeon.hero )){
|
||||||
if (!cursed) {
|
if (!cursed) {
|
||||||
desc += "\n\nThe hourglass rests at your side, the whisper of steadily pouring sand is reassuring.";
|
|
||||||
|
|
||||||
if (level() < levelCap )
|
if (level() < levelCap )
|
||||||
desc +=
|
desc += "\n\n" + Messages.get(this, "desc_hint");
|
||||||
"\n\nThe hourglass seems to have lost some sand with age. While there are no cracks, " +
|
|
||||||
"there is a port on the top of the hourglass to pour sand in, if only you could find some...";
|
} else
|
||||||
}else
|
desc += "\n\n" + Messages.get(this, "desc_cursed");
|
||||||
desc += "\n\nThe cursed hourglass is locked to your side, " +
|
|
||||||
"you can feel it trying to manipulate your flow of time.";
|
|
||||||
}
|
}
|
||||||
return desc;
|
return desc;
|
||||||
}
|
}
|
||||||
|
@ -366,23 +355,17 @@ public class TimekeepersHourglass extends Artifact {
|
||||||
hourglass.upgrade();
|
hourglass.upgrade();
|
||||||
Sample.INSTANCE.play( Assets.SND_DEWDROP );
|
Sample.INSTANCE.play( Assets.SND_DEWDROP );
|
||||||
if (hourglass.level() == hourglass.levelCap)
|
if (hourglass.level() == hourglass.levelCap)
|
||||||
GLog.p("Your hourglass is filled with magical sand!");
|
GLog.p( Messages.get(this, "maxlevel") );
|
||||||
else
|
else
|
||||||
GLog.i("you add the sand to your hourglass.");
|
GLog.i( Messages.get(this, "levelup") );
|
||||||
hero.spendAndNext(TIME_TO_PICK_UP);
|
hero.spendAndNext(TIME_TO_PICK_UP);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
GLog.w("You have no hourglass to place this sand into.");
|
GLog.w( Messages.get(this, "no_hourglass") );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String desc(){
|
|
||||||
return "This small bag of finely ground sand should work perfectly with your hourglass.\n\n" +
|
|
||||||
"It seems odd that the shopkeeper would have this specific item right when you need it.";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int price() {
|
public int price() {
|
||||||
return 20;
|
return 20;
|
||||||
|
|
|
@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
@ -95,7 +96,7 @@ public class UnstableSpellbook extends Artifact {
|
||||||
if (action.equals( AC_READ )) {
|
if (action.equals( AC_READ )) {
|
||||||
|
|
||||||
if (hero.buff( Blindness.class ) != null) GLog.w("You cannot read from the book while blinded.");
|
if (hero.buff( Blindness.class ) != null) GLog.w("You cannot read from the book while blinded.");
|
||||||
else if (!isEquipped( hero )) GLog.i("You need to equip your spellbook to do that.");
|
else if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") );
|
||||||
else if (charge == 0) GLog.i("Your spellbook is out of energy for now.");
|
else if (charge == 0) GLog.i("Your spellbook is out of energy for now.");
|
||||||
else if (cursed) GLog.i("Your cannot read from a cursed spellbook.");
|
else if (cursed) GLog.i("Your cannot read from a cursed spellbook.");
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -76,23 +76,87 @@ items.armor.warriorarmor.desc=While this armor looks heavy, it allows a warrior
|
||||||
|
|
||||||
###artifacts
|
###artifacts
|
||||||
items.artifacts.alchemiststoolkit.name=alchemists toolkit
|
items.artifacts.alchemiststoolkit.name=alchemists toolkit
|
||||||
|
##this one isn't dropped, so for now no i18n
|
||||||
|
|
||||||
items.artifacts.capeofthorns.name=cape of Thorns
|
items.artifacts.artifact.unequip_title=Unequip one item
|
||||||
|
items.artifacts.artifact.unequip_message=You can only wear two misc items at a time.
|
||||||
|
items.artifacts.artifact.cannot_wear_two=You cannot wear two of the same artifact.
|
||||||
|
items.artifacts.artifact.cursed_worn=The artifact painfully binds itself to you.
|
||||||
|
items.artifacts.artifact.curse_known=You can feel a malevolent magic lurking within the artifact.
|
||||||
|
items.artifacts.artifact.need_to_equip=You need to equip your artifact to do that.
|
||||||
|
|
||||||
|
items.artifacts.capeofthorns.name=cape of thorns
|
||||||
|
items.artifacts.capeofthorns.desc=These collapsed sheets of metal from the DM-300 have formed together into a rigid cape. It seems to store a deep energy, perhaps it has some of the DM-300's power?
|
||||||
|
items.artifacts.capeofthorns.desc_inactive=The cape feels reassuringly heavy on your shoulders, it seems to be gaining energy from the damage you take.
|
||||||
|
items.artifacts.capeofthorns.desc_active=The cape seems to be releasing stored energy, it is radiating a protective power.
|
||||||
|
items.artifacts.capeofthorns$thorns.inert=Your Cape becomes inert again.
|
||||||
|
items.artifacts.capeofthorns$thorns.radiating=Your Cape begins radiating energy, you feel protected!
|
||||||
|
items.artifacts.capeofthorns$thorns.levelup=Your Cape grows stronger!
|
||||||
|
items.artifacts.capeofthorns$thorns.name=Thorns
|
||||||
|
items.artifacts.capeofthorns$thorns.desc=Your cape is radiating energy, surrounding you in a field of deflective force!\n\nAll damage you receive is reduced while the thorns effect is active. Additionally, if the attacker is next to you, the reduced amount is deflected back at the attacker.\n\nYour cape will continue radiating energy for %s.
|
||||||
|
|
||||||
items.artifacts.chaliceofblood.name=chalice of blood
|
items.artifacts.chaliceofblood.name=chalice of blood
|
||||||
|
items.artifacts.chaliceofblood.yes=Yes, I know what I'm doing
|
||||||
|
items.artifacts.chaliceofblood.no=No, I changed my mind
|
||||||
|
items.artifacts.chaliceofblood.prick_warn=Each time you use the chalice it will drain more life energy, if you are not careful this can easily kill you.\n\nAre you sure you want to offer it more life energy?
|
||||||
|
items.artifacts.chaliceofblood.onprick=You prick yourself, and your life essence drains into the chalice.
|
||||||
|
items.artifacts.chaliceofblood.ondeath=The Chalice sucks your life essence dry...
|
||||||
|
items.artifacts.chaliceofblood.desc=This shining silver chalice is oddly adorned with sharp gems at the rim.
|
||||||
|
items.artifacts.chaliceofblood.desc_cursed=The cursed chalice has bound itself to your hand, and is inhibiting your ability to regenrate health.
|
||||||
|
items.artifacts.chaliceofblood.desc_1=As you hold the chalice, you feel oddly compelled to prick yourself on the sharp gems.
|
||||||
|
items.artifacts.chaliceofblood.desc_2=Some of your blood is pooled into the chalice, you can subtly feel the chalice feeding life energy into you. You still want to cut yourself on the chalice, even though you know it will hurt.
|
||||||
|
items.artifacts.chaliceofblood.desc_3=The chalice is filled to the brim with your life essence. You can feel the chalice pouring life energy back into you.
|
||||||
|
|
||||||
items.artifacts.cloakofshadows.name=cloak of shadows
|
items.artifacts.cloakofshadows.name=cloak of shadows
|
||||||
|
items.artifacts.cloakofshadows.cooldown=Your cloak needs %d more rounds to re-energize.
|
||||||
|
items.artifacts.cloakofshadows.no_charge=Your cloak hasn't recharged enough to be usable yet.
|
||||||
|
items.artifacts.cloakofshadows.desc=A priceless magical cloak, stolen from the royal armory many years ago by the Rogue. When worn, it can be used to turn completely invisible for a short time.\n\nThe more the cloak is used, the stronger it will become, allowing the Rogue to become invisible more frequently and for longer durations.
|
||||||
|
items.artifacts.cloakofshadows$cloakstealth.no_charge=Your cloak has run out of energy.
|
||||||
|
items.artifacts.cloakofshadows$cloakstealth.levelup=Your cloak grows stronger!
|
||||||
|
items.artifacts.cloakofshadows$cloakstealth.name=Cloaked
|
||||||
|
items.artifacts.cloakofshadows$cloakstealth.desc=Your cloak of shadows is granting you invisibility while you are shrouded by it.\n\nWhile you are invisible enemies are unable to attack or follow you. Physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility.\n\nYou will remain cloaked until it is cancelled or your cloak runs out of charge.
|
||||||
|
|
||||||
items.artifacts.driedrose.name=dried rose
|
items.artifacts.driedrose.name=dried rose
|
||||||
items.artifacts.driedrose$petal.name=dried petal
|
items.artifacts.driedrose$petal.name=dried petal
|
||||||
|
|
||||||
items.artifacts.etherealchains.name=ethereal chains
|
items.artifacts.etherealchains.name=ethereal chains
|
||||||
|
items.artifacts.etherealchains.no_charge=Your chains do not have enough charge.
|
||||||
|
items.artifacts.etherealchains.cursed=You can't use cursed chains.
|
||||||
|
items.artifacts.etherealchains.does_nothing=That won't do anything.
|
||||||
|
items.artifacts.etherealchains.cant_pull=Your chains cannot pull that target.
|
||||||
|
items.artifacts.etherealchains.nothing_to_grab=There is nothing to grab there.
|
||||||
|
items.artifacts.etherealchains.prompt=Choose a location to target.
|
||||||
|
items.artifacts.etherealchains.desc=These large yet lightweight chains glow with spiritual energy. They can be used to pull you towards terrain, or pull enemies toward you. The ethereal nature of the chains even allows them to extend through walls!
|
||||||
|
items.artifacts.etherealchains.desc_cursed=The cursed chains are locked to your side, constantly swinging around, trying to trip or bind you
|
||||||
|
items.artifacts.etherealchains.desc_equipped=The chains rest around your side, slowly siphoning the spiritual energy of those you defeat. Each charge is a link in the chain, which will extend out exactly one tile.
|
||||||
|
items.artifacts.etherealchains$chainsrecharge.levelup=Your chains grow stronger!
|
||||||
|
|
||||||
items.artifacts.hornofplenty.name=horn of Plenty
|
items.artifacts.hornofplenty.name=horn of plenty
|
||||||
|
items.artifacts.hornofplenty.eat=You eat from the horn.
|
||||||
|
items.artifacts.hornofplenty.prompt=Select a piece of food
|
||||||
|
items.artifacts.hornofplenty.no_food=Your horn has no food in it to eat!
|
||||||
|
items.artifacts.hornofplenty.full=Your horn is full of food!
|
||||||
|
items.artifacts.hornofplenty.reject=Your horn rejects the uncooked blandfruit.
|
||||||
|
items.artifacts.hornofplenty.maxlevel=Your horn has consumed all the food it can!
|
||||||
|
items.artifacts.hornofplenty.levelup=The horn consumes your food offering and grows in strength!
|
||||||
|
items.artifacts.hornofplenty.desc=This horn can't be blown into, but instead seems to fill up with food over time when equipped.
|
||||||
|
items.artifacts.hornofplenty.desc_hint=Perhaps there is a way to increase the horn's power by giving it food energy.
|
||||||
|
items.artifacts.hornofplenty.desc_cursed=The cursed horn has bound itself to your side, it seems to be eager to take food rather than produce it.
|
||||||
|
|
||||||
items.artifacts.lloydsbeacon.name=lloyd's beacon
|
items.artifacts.lloydsbeacon.name=lloyd's beacon
|
||||||
|
items.artifacts.lloydsbeacon.no_charge=Your beacon does not have enough energy right now.
|
||||||
|
items.artifacts.lloydsbeacon.tele_fail=The teleportation magic fails.
|
||||||
|
items.artifacts.lloydsbeacon.prompt=Choose a location to zap.
|
||||||
|
items.artifacts.lloydsbeacon.levelup=Your beacon grows stronger!
|
||||||
|
items.artifacts.lloydsbeacon.preventing=Strong magic aura of this place prevents you from using the lloyd's beacon!
|
||||||
|
items.artifacts.lloydsbeacon.creatures=Psychic aura of neighbouring creatures doesn't allow you to use the lloyd's beacon at this moment.
|
||||||
|
items.artifacts.lloydsbeacon.return=The lloyd's beacon is successfully set at your current location, now you can return here anytime.
|
||||||
|
items.artifacts.lloydsbeacon.desc=Lloyd's beacon is an intricate magical device which grants the user control of teleportation magics. The beacon can be used to return to a set location, but can also expel bursts of random teleportation magic once it has charged from being equipped. This magic can be directed at a target or at the user themselves.
|
||||||
|
items.artifacts.lloydsbeacon.desc_set=This beacon was set somewhere on the level %d of Pixel Dungeon.
|
||||||
|
|
||||||
items.artifacts.masterthievesarmband.name=master thieves' armband
|
items.artifacts.masterthievesarmband.name=master thieves' armband
|
||||||
|
items.artifacts.masterthievesarmband.desc=This purple velvet armband bears the mark of a master thief. This doesn't belong to you, but it probably didn't belong to the person you took it from either.
|
||||||
|
items.artifacts.masterthievesarmband.desc_worn=With the armband around your wrist, every piece of gold you find makes you desire other people's property more. Perhaps it wouldn't be too hard to steal from pixel mart...
|
||||||
|
|
||||||
items.artifacts.sandalsofnature.name=sandals of nature
|
items.artifacts.sandalsofnature.name=sandals of nature
|
||||||
items.artifacts.sandalsofnature.name_1=shoes of nature
|
items.artifacts.sandalsofnature.name_1=shoes of nature
|
||||||
|
@ -100,13 +164,39 @@ items.artifacts.sandalsofnature.name_2=boots of nature
|
||||||
items.artifacts.sandalsofnature.name_3=greaves of nature
|
items.artifacts.sandalsofnature.name_3=greaves of nature
|
||||||
|
|
||||||
items.artifacts.talismanofforesight.name=talisman of foresight
|
items.artifacts.talismanofforesight.name=talisman of foresight
|
||||||
|
items.artifacts.talismanofforesight.no_charge=Your talisman isn't fully charged yet.
|
||||||
|
items.artifacts.talismanofforesight.scry=The Talisman floods your mind with knowledge about the current floor.
|
||||||
|
items.artifacts.talismanofforesight.desc=A smooth stone with strange engravings on it. You feel like it's watching everything around you, keeping an eye out for anything unusual.
|
||||||
|
items.artifacts.talismanofforesight.desc_worn=When you hold the talisman you feel like your senses are heightened.
|
||||||
|
items.artifacts.talismanofforesight.desc_cursed=The cursed talisman is intently staring into you, making it impossible to concentrate.
|
||||||
|
items.artifacts.talismanofforesight$foresight.name=Foresight
|
||||||
|
items.artifacts.talismanofforesight$foresight.levelup=Your Talisman grows stronger!
|
||||||
|
items.artifacts.talismanofforesight$foresight.full_charge=Your Talisman is fully charged!
|
||||||
|
items.artifacts.talismanofforesight$foresight.uneasy=You feel uneasy.
|
||||||
|
items.artifacts.talismanofforesight$foresight.desc=You feel very nervous, as if there is nearby unseen danger.
|
||||||
|
|
||||||
items.artifacts.timekeepershourglass.name=timekeeper's hourglass
|
items.artifacts.timekeepershourglass.name=timekeeper's hourglass
|
||||||
|
items.artifacts.timekeepershourglass.in_use=Your hourglass is already in use.
|
||||||
|
items.artifacts.timekeepershourglass.no_charge=Your hourglass hasn't recharged enough to be usable yet.
|
||||||
|
items.artifacts.timekeepershourglass.cursed=You cannot use a cursed hourglass.
|
||||||
|
items.artifacts.timekeepershourglass.onstasis=The world seems to shift around you in an instant.
|
||||||
|
items.artifacts.timekeepershourglass.onfreeze=Everything around you suddenly freezes.
|
||||||
|
items.artifacts.timekeepershourglass.stasis=Put myself in stasis
|
||||||
|
items.artifacts.timekeepershourglass.freeze=Freeze time around me
|
||||||
|
items.artifacts.timekeepershourglass.prompt=How would you like to use the hourglass's magic?\n\nWhile in stasis, time will move normally while you are frozen and completely invulnerable.\n\nWhen time is frozen, you can move as if your actions take no time. Note that attacking will break this.
|
||||||
|
items.artifacts.timekeepershourglass.desc=This large ornate hourglass looks fairly unassuming, but you feel a great power in its finely carved frame. As you rotate the hourglass and watch the sand pour you can feel its magic tugging at you, surely using this magic would give you some control over time.
|
||||||
|
items.artifacts.timekeepershourglass.desc_hint=The hourglass seems to have lost some sand, if only you could find some...
|
||||||
|
items.artifacts.timekeepershourglass.desc_cursed=The cursed hourglass is locked to your side, you can feel it trying to manipulate your flow of time.
|
||||||
items.artifacts.timekeepershourglass$sandbag.name=bag of magic sand
|
items.artifacts.timekeepershourglass$sandbag.name=bag of magic sand
|
||||||
|
items.artifacts.timekeepershourglass$sandbag.levelup=You add the sand to your hourglass.
|
||||||
|
items.artifacts.timekeepershourglass$sandbag.maxlevel=Your hourglass is filled with magical sand!
|
||||||
|
items.artifacts.timekeepershourglass$sandbag.no_hourglass=You have no hourglass to place this sand into.
|
||||||
|
items.artifacts.timekeepershourglass$sandbag.desc=This small bag of fine sand should work perfectly with your hourglass.\n\nIt seems odd that the shopkeeper would have this specific item right when you need it...
|
||||||
|
|
||||||
items.artifacts.unstablespellbook.name=unstable spellbook
|
items.artifacts.unstablespellbook.name=unstable spellbook
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
###bags
|
###bags
|
||||||
items.bags.bag.name=backpack
|
items.bags.bag.name=backpack
|
||||||
|
|
||||||
|
@ -215,62 +305,50 @@ items.potions.potion.sure_throw=Are you sure you want to throw it? In most cases
|
||||||
items.potions.potion.shatter=The flask shatters and %s liquid splashes harmlessly
|
items.potions.potion.shatter=The flask shatters and %s liquid splashes harmlessly
|
||||||
|
|
||||||
items.potions.potionofexperience.name=potion of experience
|
items.potions.potionofexperience.name=potion of experience
|
||||||
items.potions.potionofexperience.initials=Ex
|
|
||||||
items.potions.potionofexperience.desc=The storied experiences of multitudes of battles reduced to liquid form, this draught will instantly raise your experience level.
|
items.potions.potionofexperience.desc=The storied experiences of multitudes of battles reduced to liquid form, this draught will instantly raise your experience level.
|
||||||
|
|
||||||
items.potions.potionoffrost.name=potion of frost
|
items.potions.potionoffrost.name=potion of frost
|
||||||
items.potions.potionoffrost.initials=Fr
|
|
||||||
items.potions.potionoffrost.desc=Upon exposure to open air this chemical will evaporate into a freezing cloud, causing any creature that contacts it to be frozen in place unable to act and move. The freezing effect is much stronger if the environment is wet.
|
items.potions.potionoffrost.desc=Upon exposure to open air this chemical will evaporate into a freezing cloud, causing any creature that contacts it to be frozen in place unable to act and move. The freezing effect is much stronger if the environment is wet.
|
||||||
|
|
||||||
items.potions.potionofhealing.name=potion of healing
|
items.potions.potionofhealing.name=potion of healing
|
||||||
items.potions.potionofhealing.initials=He
|
|
||||||
items.potions.potionofhealing.heal=Your wounds heal completely.
|
items.potions.potionofhealing.heal=Your wounds heal completely.
|
||||||
items.potions.potionofhealing.desc=An elixir that will instantly return you to full health and cure poison.
|
items.potions.potionofhealing.desc=An elixir that will instantly return you to full health and cure poison.
|
||||||
|
|
||||||
items.potions.potionofinvisibility.name=potion of invisibility
|
items.potions.potionofinvisibility.name=potion of invisibility
|
||||||
items.potions.potionofinvisibility.initials=In
|
|
||||||
items.potions.potionofinvisibility.invisible=You see your hands turn invisible!
|
items.potions.potionofinvisibility.invisible=You see your hands turn invisible!
|
||||||
items.potions.potionofinvisibility.desc=Drinking this potion will render you temporarily invisible. While invisible, enemies will be unable to see you. Attacking an enemy, as well as using a wand or a scroll before enemy's eyes, will dispel the effect.
|
items.potions.potionofinvisibility.desc=Drinking this potion will render you temporarily invisible. While invisible, enemies will be unable to see you. Attacking an enemy, as well as using a wand or a scroll before enemy's eyes, will dispel the effect.
|
||||||
|
|
||||||
items.potions.potionoflevitation.name=potion of levitation
|
items.potions.potionoflevitation.name=potion of levitation
|
||||||
items.potions.potionoflevitation.initials=Le
|
|
||||||
items.potions.potionoflevitation.float=You float into the air!
|
items.potions.potionoflevitation.float=You float into the air!
|
||||||
items.potions.potionoflevitation.desc=Drinking this curious liquid will cause you to hover in the air, able to drift effortlessly over traps and pits. Throwing this potion will create a cloud of unrefined gas, disorienting anything caught in it.
|
items.potions.potionoflevitation.desc=Drinking this curious liquid will cause you to hover in the air, able to drift effortlessly over traps and pits. Throwing this potion will create a cloud of unrefined gas, disorienting anything caught in it.
|
||||||
|
|
||||||
items.potions.potionofliquidflame.name=potion of liquid flame
|
items.potions.potionofliquidflame.name=potion of liquid flame
|
||||||
items.potions.potionofliquidflame.initials=LF
|
|
||||||
items.potions.potionofliquidflame.desc=This flask contains an unstable compound which will burst violently into flame upon exposure to open air.
|
items.potions.potionofliquidflame.desc=This flask contains an unstable compound which will burst violently into flame upon exposure to open air.
|
||||||
|
|
||||||
items.potions.potionofmight.name=potion of might
|
items.potions.potionofmight.name=potion of might
|
||||||
items.potions.potionofmight.initials=Mi
|
|
||||||
items.potions.potionofmight.msg_1=+1 str, +5 hp
|
items.potions.potionofmight.msg_1=+1 str, +5 hp
|
||||||
items.potions.potionofmight.msg_2=Newfound strength surges through your body.
|
items.potions.potionofmight.msg_2=Newfound strength surges through your body.
|
||||||
items.potions.potionofmight.desc=This powerful liquid will course through your muscles, permanently increasing your strength by one point and health by five points.
|
items.potions.potionofmight.desc=This powerful liquid will course through your muscles, permanently increasing your strength by one point and health by five points.
|
||||||
|
|
||||||
items.potions.potionofmindvision.name=potion of mind vision
|
items.potions.potionofmindvision.name=potion of mind vision
|
||||||
items.potions.potionofmindvision.initials=MV
|
|
||||||
items.potions.potionofmindvision.see_mobs=You can somehow feel the presence of other creatures' minds!
|
items.potions.potionofmindvision.see_mobs=You can somehow feel the presence of other creatures' minds!
|
||||||
items.potions.potionofmindvision.see_none=You can somehow tell that you are alone on this level at the moment.
|
items.potions.potionofmindvision.see_none=You can somehow tell that you are alone on this level at the moment.
|
||||||
items.potions.potionofmindvision.desc=After drinking this, your mind will become attuned to the psychic signature of distant creatures, enabling you to sense biological presences through walls. Also this potion will permit you to see through nearby walls and doors.
|
items.potions.potionofmindvision.desc=After drinking this, your mind will become attuned to the psychic signature of distant creatures, enabling you to sense biological presences through walls. Also this potion will permit you to see through nearby walls and doors.
|
||||||
|
|
||||||
items.potions.potionofparalyticgas.name=potion of paralytic gas
|
items.potions.potionofparalyticgas.name=potion of paralytic gas
|
||||||
items.potions.potionofparalyticgas.initials=PG
|
|
||||||
items.potions.potionofparalyticgas.desc=Upon exposure to open air, the liquid in this flask will vaporize into a numbing yellow haze. Anyone who inhales the cloud will be paralyzed instantly, unable to move for some time after the cloud dissipates. This item can be thrown at distant enemies to catch them within the effect of the gas.
|
items.potions.potionofparalyticgas.desc=Upon exposure to open air, the liquid in this flask will vaporize into a numbing yellow haze. Anyone who inhales the cloud will be paralyzed instantly, unable to move for some time after the cloud dissipates. This item can be thrown at distant enemies to catch them within the effect of the gas.
|
||||||
|
|
||||||
items.potions.potionofpurity.name=potion of purification
|
items.potions.potionofpurity.name=potion of purification
|
||||||
items.potions.potionofpurity.initials=Pu
|
|
||||||
items.potions.potionofpurity.freshness=You feel uncommon freshness in the air.
|
items.potions.potionofpurity.freshness=You feel uncommon freshness in the air.
|
||||||
items.potions.potionofpurity.no_smell=You've stopped sensing any smells!
|
items.potions.potionofpurity.no_smell=You've stopped sensing any smells!
|
||||||
items.potions.potionofpurity.desc=This reagent will quickly neutralize all harmful gases in the area of effect. Drinking it will give you a temporary immunity to such gases.
|
items.potions.potionofpurity.desc=This reagent will quickly neutralize all harmful gases in the area of effect. Drinking it will give you a temporary immunity to such gases.
|
||||||
|
|
||||||
items.potions.potionofstrength.name=potion of strength
|
items.potions.potionofstrength.name=potion of strength
|
||||||
items.potions.potionofstrength.initials=St
|
|
||||||
items.potions.potionofstrength.msg_1=+1 str
|
items.potions.potionofstrength.msg_1=+1 str
|
||||||
items.potions.potionofstrength.msg_2=Newfound strength surges through your body.
|
items.potions.potionofstrength.msg_2=Newfound strength surges through your body.
|
||||||
items.potions.potionofstrength.desc=This powerful liquid will course through your muscles, permanently increasing your strength by one point.
|
items.potions.potionofstrength.desc=This powerful liquid will course through your muscles, permanently increasing your strength by one point.
|
||||||
|
|
||||||
items.potions.potionoftoxicgas.name=potion of toxic gas
|
items.potions.potionoftoxicgas.name=potion of toxic gas
|
||||||
items.potions.potionoftoxicgas.initials=TG
|
|
||||||
items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized glass will cause its contents to explode into a deadly cloud of toxic green gas. You might choose to fling this potion at distant enemies instead of uncorking it by hand.
|
items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized glass will cause its contents to explode into a deadly cloud of toxic green gas. You might choose to fling this potion at distant enemies instead of uncorking it by hand.
|
||||||
|
|
||||||
|
|
||||||
|
@ -384,67 +462,55 @@ items.scrolls.inventoryscroll.yes=Yes, I'm positive
|
||||||
items.scrolls.inventoryscroll.no=No, I changed my mind
|
items.scrolls.inventoryscroll.no=No, I changed my mind
|
||||||
|
|
||||||
items.scrolls.scrollofidentify.name=scroll of identify
|
items.scrolls.scrollofidentify.name=scroll of identify
|
||||||
items.scrolls.scrollofidentify.initials=Id
|
|
||||||
items.scrolls.scrollofidentify.inv_title=Select an item to identify
|
items.scrolls.scrollofidentify.inv_title=Select an item to identify
|
||||||
items.scrolls.scrollofidentify.it_is=It is %s
|
items.scrolls.scrollofidentify.it_is=It is %s
|
||||||
items.scrolls.scrollofidentify.desc=This scroll permanently reveals all of the secrets of a single item.
|
items.scrolls.scrollofidentify.desc=This scroll permanently reveals all of the secrets of a single item.
|
||||||
|
|
||||||
items.scrolls.scrolloflullaby.name=scroll of lullaby
|
items.scrolls.scrolloflullaby.name=scroll of lullaby
|
||||||
items.scrolls.scrolloflullaby.initials=Lu
|
|
||||||
items.scrolls.scrolloflullaby.sooth=The scroll utters a soothing melody. You feel very sleepy.
|
items.scrolls.scrolloflullaby.sooth=The scroll utters a soothing melody. You feel very sleepy.
|
||||||
items.scrolls.scrolloflullaby.desc=Reading this scroll emits a soothing melody will lull all who hear it into a deep magical sleep.
|
items.scrolls.scrolloflullaby.desc=Reading this scroll emits a soothing melody will lull all who hear it into a deep magical sleep.
|
||||||
|
|
||||||
items.scrolls.scrollofmagicalinfusion.name=scroll of magical infusion
|
items.scrolls.scrollofmagicalinfusion.name=scroll of magical infusion
|
||||||
items.scrolls.scrollofmagicalinfusion.initials=MaI
|
|
||||||
items.scrolls.scrollofmagicalinfusion.inv_title=Select an item to infuse
|
items.scrolls.scrollofmagicalinfusion.inv_title=Select an item to infuse
|
||||||
items.scrolls.scrollofmagicalinfusion.infuse=your %s is infused with arcane energy!
|
items.scrolls.scrollofmagicalinfusion.infuse=your %s is infused with arcane energy!
|
||||||
items.scrolls.scrollofmagicalinfusion.desc=This scroll will infuse a weapon or armor with powerful magical energy.\n\nIn addition to being upgraded, A weapon will gain a magical enchantment, or armor will be imbued with a magical glyph.\n\nIf the item already has an enchantment or glyph, it will never be erased by this scroll.
|
items.scrolls.scrollofmagicalinfusion.desc=This scroll will infuse a weapon or armor with powerful magical energy.\n\nIn addition to being upgraded, A weapon will gain a magical enchantment, or armor will be imbued with a magical glyph.\n\nIf the item already has an enchantment or glyph, it will never be erased by this scroll.
|
||||||
|
|
||||||
items.scrolls.scrollofmagicmapping.name=scroll of magic mapping
|
items.scrolls.scrollofmagicmapping.name=scroll of magic mapping
|
||||||
items.scrolls.scrollofmagicmapping.initials=MM
|
|
||||||
items.scrolls.scrollofmagicmapping.layout=You are now aware of the level layout.
|
items.scrolls.scrollofmagicmapping.layout=You are now aware of the level layout.
|
||||||
items.scrolls.scrollofmagicmapping.desc=When this scroll is read, an image of crystal clarity will be etched into your memory, alerting you to the precise layout of the level and revealing all hidden secrets. The locations of items and creatures will remain unknown.
|
items.scrolls.scrollofmagicmapping.desc=When this scroll is read, an image of crystal clarity will be etched into your memory, alerting you to the precise layout of the level and revealing all hidden secrets. The locations of items and creatures will remain unknown.
|
||||||
|
|
||||||
items.scrolls.scrollofmirrorimage.name=scroll of mirror image
|
items.scrolls.scrollofmirrorimage.name=scroll of mirror image
|
||||||
items.scrolls.scrollofmirrorimage.initials=MI
|
|
||||||
items.scrolls.scrollofmirrorimage.desc=The incantation on this scroll will create illusionary twins of the reader, which will chase their enemies.
|
items.scrolls.scrollofmirrorimage.desc=The incantation on this scroll will create illusionary twins of the reader, which will chase their enemies.
|
||||||
|
|
||||||
items.scrolls.scrollofpsionicblast.name=scroll of psionic blast
|
items.scrolls.scrollofpsionicblast.name=scroll of psionic blast
|
||||||
items.scrolls.scrollofpsionicblast.initials=PB
|
|
||||||
items.scrolls.scrollofpsionicblast.ondeath=The Psionic Blast tears your mind apart...
|
items.scrolls.scrollofpsionicblast.ondeath=The Psionic Blast tears your mind apart...
|
||||||
items.scrolls.scrollofpsionicblast.desc=This scroll contains destructive energy that can be channeled to tear apart the minds of all visible creatures. The power unleashed by the scroll will also temporarily blind, stun, and seriously harm the reader.
|
items.scrolls.scrollofpsionicblast.desc=This scroll contains destructive energy that can be channeled to tear apart the minds of all visible creatures. The power unleashed by the scroll will also temporarily blind, stun, and seriously harm the reader.
|
||||||
|
|
||||||
items.scrolls.scrollofrage.name=scroll of rage
|
items.scrolls.scrollofrage.name=scroll of rage
|
||||||
items.scrolls.scrollofrage.initials=Ra
|
|
||||||
items.scrolls.scrollofrage.roar=The scroll emits an enraging roar that echoes throughout the dungeon!
|
items.scrolls.scrollofrage.roar=The scroll emits an enraging roar that echoes throughout the dungeon!
|
||||||
items.scrolls.scrollofrage.desc=When read aloud, this scroll will unleash a great roar that draws all enemies to the reader, and enrages nearby ones.
|
items.scrolls.scrollofrage.desc=When read aloud, this scroll will unleash a great roar that draws all enemies to the reader, and enrages nearby ones.
|
||||||
|
|
||||||
items.scrolls.scrollofrecharging.name=scroll of recharging
|
items.scrolls.scrollofrecharging.name=scroll of recharging
|
||||||
items.scrolls.scrollofrecharging.initials=Re
|
|
||||||
items.scrolls.scrollofrecharging.surge=A surge of energy courses through your body, invigorating your wands!
|
items.scrolls.scrollofrecharging.surge=A surge of energy courses through your body, invigorating your wands!
|
||||||
items.scrolls.scrollofrecharging.desc=The raw magical power bound up in this parchment will, when released, charge up all the users wands over time.
|
items.scrolls.scrollofrecharging.desc=The raw magical power bound up in this parchment will, when released, charge up all the users wands over time.
|
||||||
|
|
||||||
items.scrolls.scrollofremovecurse.name=scroll of remove curse
|
items.scrolls.scrollofremovecurse.name=scroll of remove curse
|
||||||
items.scrolls.scrollofremovecurse.initials=RC
|
|
||||||
items.scrolls.scrollofremovecurse.cleansed=Your pack glows with a cleansing light, and a malevolent energy disperses.
|
items.scrolls.scrollofremovecurse.cleansed=Your pack glows with a cleansing light, and a malevolent energy disperses.
|
||||||
items.scrolls.scrollofremovecurse.not_cleansed=Your pack glows with a cleansing light, but nothing happens.
|
items.scrolls.scrollofremovecurse.not_cleansed=Your pack glows with a cleansing light, but nothing happens.
|
||||||
items.scrolls.scrollofremovecurse.desc=The incantation on this scroll will instantly strip from the reader's weapon, armor, rings and carried items any evil enchantments that might prevent the wearer from removing them.
|
items.scrolls.scrollofremovecurse.desc=The incantation on this scroll will instantly strip from the reader's weapon, armor, rings and carried items any evil enchantments that might prevent the wearer from removing them.
|
||||||
|
|
||||||
items.scrolls.scrollofteleportation.name=scroll of teleportation
|
items.scrolls.scrollofteleportation.name=scroll of teleportation
|
||||||
items.scrolls.scrollofteleportation.initials=TP
|
|
||||||
items.scrolls.scrollofteleportation.tele=In a blink of an eye you were teleported to another location of the level.
|
items.scrolls.scrollofteleportation.tele=In a blink of an eye you were teleported to another location of the level.
|
||||||
items.scrolls.scrollofteleportation.no_tele=Strong magic aura of this place prevents you from teleporting!
|
items.scrolls.scrollofteleportation.no_tele=Strong magic aura of this place prevents you from teleporting!
|
||||||
items.scrolls.scrollofteleportation.desc=The spell on this parchment instantly transports the reader to a random location on the dungeon level. It can be used to escape a dangerous situation, but the unlucky reader might find themselves in an even more dangerous place.
|
items.scrolls.scrollofteleportation.desc=The spell on this parchment instantly transports the reader to a random location on the dungeon level. It can be used to escape a dangerous situation, but the unlucky reader might find themselves in an even more dangerous place.
|
||||||
|
|
||||||
items.scrolls.scrollofterror.name=scroll of terror
|
items.scrolls.scrollofterror.name=scroll of terror
|
||||||
items.scrolls.scrollofterror.initials=Te
|
|
||||||
items.scrolls.scrollofterror.none=The scroll emits a brilliant flash of red light.
|
items.scrolls.scrollofterror.none=The scroll emits a brilliant flash of red light.
|
||||||
items.scrolls.scrollofterror.one=The scroll emits a brilliant flash of red light and the %s flees!
|
items.scrolls.scrollofterror.one=The scroll emits a brilliant flash of red light and the %s flees!
|
||||||
items.scrolls.scrollofterror.many=The scroll emits a brilliant flash of red light and the monsters flee!
|
items.scrolls.scrollofterror.many=The scroll emits a brilliant flash of red light and the monsters flee!
|
||||||
items.scrolls.scrollofterror.desc=A flash of red light will overwhelm all creatures in your field of view with terror, and they will turn and flee. Attacking a fleeing enemy will dispel the effect.
|
items.scrolls.scrollofterror.desc=A flash of red light will overwhelm all creatures in your field of view with terror, and they will turn and flee. Attacking a fleeing enemy will dispel the effect.
|
||||||
|
|
||||||
items.scrolls.scrollofupgrade.name=scroll of upgrade
|
items.scrolls.scrollofupgrade.name=scroll of upgrade
|
||||||
items.scrolls.scrollofupgrade.initials=Up
|
|
||||||
items.scrolls.scrollofupgrade.inv_title=Select an item to upgrade
|
items.scrolls.scrollofupgrade.inv_title=Select an item to upgrade
|
||||||
items.scrolls.scrollofupgrade.looks_better=your %s certainly looks better now
|
items.scrolls.scrollofupgrade.looks_better=your %s certainly looks better now
|
||||||
items.scrolls.scrollofupgrade.desc=This scroll will upgrade a single item, improving its quality. A wand will increase in power and in number of charges; a weapon will inflict more damage or find its mark more frequently; a suit of armor will deflect additional blows; the effect of a ring on its wearer will intensify. Weapons and armor will also require less strength to use, and any curses on the item will be lifted.
|
items.scrolls.scrollofupgrade.desc=This scroll will upgrade a single item, improving its quality. A wand will increase in power and in number of charges; a weapon will inflict more damage or find its mark more frequently; a suit of armor will deflect additional blows; the effect of a ring on its wearer will intensify. Weapons and armor will also require less strength to use, and any curses on the item will be lifted.
|
||||||
|
@ -496,7 +562,7 @@ 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.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.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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user