diff --git a/android/assets/tiles_caves.png b/android/assets/tiles_caves.png index 0356ea08..f2358a76 100644 Binary files a/android/assets/tiles_caves.png and b/android/assets/tiles_caves.png differ diff --git a/android/assets/tiles_city.png b/android/assets/tiles_city.png index b362c45f..515dfc42 100644 Binary files a/android/assets/tiles_city.png and b/android/assets/tiles_city.png differ diff --git a/android/assets/tiles_halls.png b/android/assets/tiles_halls.png index 6c726034..07f3473f 100644 Binary files a/android/assets/tiles_halls.png and b/android/assets/tiles_halls.png differ diff --git a/android/assets/tiles_prison.png b/android/assets/tiles_prison.png index 888806cc..01103682 100644 Binary files a/android/assets/tiles_prison.png and b/android/assets/tiles_prison.png differ diff --git a/android/assets/tiles_sewers.png b/android/assets/tiles_sewers.png index 09c80a2a..24c66e35 100644 Binary files a/android/assets/tiles_sewers.png and b/android/assets/tiles_sewers.png differ diff --git a/build.gradle b/build.gradle index 88ee10c5..f47f7ed2 100644 --- a/build.gradle +++ b/build.gradle @@ -15,9 +15,9 @@ allprojects { apply plugin: "eclipse" apply plugin: "idea" - version = '0.7.0a' + version = '0.7.0c' ext { - versionCode = 305 + versionCode = 311 appName = 'shattered-pixel-dungeon' appTitle = 'Shattered Pixel Dungeon' appId = 'com.shatteredpixel.shatteredpixeldungeon' diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 410b6fe5..954b8dd0 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -23,7 +23,6 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Graphics; import com.shatteredpixel.shatteredpixeldungeon.input.GameAction; -import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.WelcomeScene; import com.watabou.noosa.Game; @@ -141,10 +140,6 @@ public ShatteredPixelDungeon(final PDPlatformSupport platformSupport com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion.class, "com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicalInfusion" ); - //v0.7.0 beta, remove before full release - com.watabou.utils.Bundle.addAlias( - MeatPie.class, - "com.shatteredpixel.shatteredpixeldungeon.items.food.Feast" ); } @SuppressWarnings("deprecation") diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 9756ac30..c9bd5dbe 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -495,7 +495,7 @@ public synchronized void updateSpriteState() { } } - public int stealth() { + public float stealth() { return 0; } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java index 2b25babe..c53fa975 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/MagicalSleep.java @@ -34,19 +34,19 @@ public class MagicalSleep extends Buff { @Override public boolean attachTo( Char target ) { if (!target.isImmune(Sleep.class) && super.attachTo( target )) { - - if (target instanceof Hero) + + target.paralysed++; + + if (target instanceof Hero) { if (target.HP == target.HT) { GLog.i(Messages.get(this, "toohealthy")); detach(); - return true; } else { GLog.i(Messages.get(this, "fallasleep")); } - else if (target instanceof Mob) - ((Mob)target).state = ((Mob)target).SLEEPING; - - target.paralysed++; + } else if (target instanceof Mob) { + ((Mob) target).state = ((Mob) target).SLEEPING; + } return true; } else { diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index 551370b1..c6bb8ffb 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -108,7 +108,6 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; -import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage; import com.shatteredpixel.shatteredpixeldungeon.windows.WndResurrect; @@ -411,25 +410,19 @@ public boolean canSurpriseAttack(){ } public boolean canAttack(Char enemy){ - if (enemy == null || pos == enemy.pos) + if (enemy == null || pos == enemy.pos) { return false; + } //can always attack adjacent enemies - if (Dungeon.level.adjacent(pos, enemy.pos)) + if (Dungeon.level.adjacent(pos, enemy.pos)) { return true; + } KindOfWeapon wep = Dungeon.hero.belongings.weapon; - if (wep != null && Dungeon.level.distance( pos, enemy.pos ) <= wep.reachFactor(this)){ - - boolean[] passable = BArray.not(Dungeon.level.solid, null); - for (Mob m : Dungeon.level.mobs) - passable[m.pos] = false; - - PathFinder.buildDistanceMap(enemy.pos, passable, wep.reachFactor(this)); - - return PathFinder.distance[pos] <= wep.reachFactor(this); - + if (wep != null){ + return wep.canReach(this, enemy.pos); } else { return false; } @@ -1299,11 +1292,11 @@ public void remove( Buff buff ) { } @Override - public int stealth() { - int stealth = super.stealth(); + public float stealth() { + float stealth = super.stealth(); if (belongings.armor != null){ - stealth = Math.round(belongings.armor.stealthFactor(this, stealth)); + stealth = belongings.armor.stealthFactor(this, stealth); } return stealth; diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index ff6320aa..bf8b4592 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -691,7 +691,7 @@ protected class Sleeping implements AiState { @Override public boolean act( boolean enemyInFOV, boolean justAlerted ) { - if (enemyInFOV && Random.Int( distance( enemy ) + enemy.stealth() + (enemy.flying ? 2 : 0) ) == 0) { + if (enemyInFOV && Random.Float( distance( enemy ) + enemy.stealth() + (enemy.flying ? 2 : 0) ) < 1) { enemySeen = true; @@ -726,7 +726,7 @@ protected class Wandering implements AiState { @Override public boolean act( boolean enemyInFOV, boolean justAlerted ) { - if (enemyInFOV && (justAlerted || Random.Int( distance( enemy ) / 2 + enemy.stealth() ) == 0)) { + if (enemyInFOV && (justAlerted || Random.Float( distance( enemy ) / 2f + enemy.stealth() ) < 1)) { enemySeen = true; diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java index cfee5a02..858589fa 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Statue.java @@ -98,7 +98,7 @@ protected float attackDelay() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= weapon.reachFactor(this); + return super.canAttack(enemy) || weapon.canReach(this, enemy.pos); } @Override diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java index 397e865c..665c2725 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java @@ -131,11 +131,7 @@ protected float attackDelay() { @Override protected boolean canAttack(Char enemy) { - if (hero.belongings.weapon != null){ - return Dungeon.level.distance( pos, enemy.pos ) <= hero.belongings.weapon.reachFactor(this); - } else { - return super.canAttack(enemy); - } + return super.canAttack(enemy) || (hero.belongings.weapon != null && hero.belongings.weapon.canReach(this, enemy.pos)); } @Override diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java index 0cd7cc21..831499c1 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java @@ -61,8 +61,6 @@ import java.util.LinkedList; public class Heap implements Bundlable { - - private static final int SEEDS_TO_POTION = 3; public enum Type { HEAP, @@ -81,6 +79,7 @@ public enum Type { public ItemSprite sprite; public boolean seen = false; + public boolean haunted = false; public LinkedList items = new LinkedList(); @@ -126,19 +125,17 @@ public void open( Hero hero ) { case REMAINS: case SKELETON: CellEmitter.center( pos ).start(Speck.factory(Speck.RATTLE), 0.1f, 3); - for (Item item : items) { - if (item.cursed) { - if (Wraith.spawnAt( pos ) == null) { - hero.sprite.emitter().burst( ShadowParticle.CURSE, 6 ); - hero.damage( hero.HP / 2, this ); - } - Sample.INSTANCE.play( Assets.SND_CURSED ); - break; - } - } break; default: } + + if (haunted){ + if (Wraith.spawnAt( pos ) == null) { + hero.sprite.emitter().burst( ShadowParticle.CURSE, 6 ); + hero.damage( hero.HP / 2, this ); + } + Sample.INSTANCE.play( Assets.SND_CURSED ); + } if (type != Type.MIMIC) { type = Type.HEAP; @@ -152,6 +149,17 @@ public void open( Hero hero ) { } } + public Heap setHauntedIfCursed( float chance ){ + for (Item item : items) { + if (item.cursed && Random.Float() < chance) { + haunted = true; + item.cursedKnown = true; + break; + } + } + return this; + } + public int size() { return items.size(); } @@ -428,6 +436,7 @@ else if (peek() instanceof Wand) private static final String SEEN = "seen"; private static final String TYPE = "type"; private static final String ITEMS = "items"; + private static final String HAUNTED = "haunted"; @SuppressWarnings("unchecked") @Override @@ -447,6 +456,8 @@ public void restoreFromBundle( Bundle bundle ) { } } + haunted = bundle.getBoolean( HAUNTED ); + } @Override @@ -455,6 +466,7 @@ public void storeInBundle( Bundle bundle ) { bundle.put( SEEN, seen ); bundle.put( TYPE, type.toString() ); bundle.put( ITEMS, items ); + bundle.put( HAUNTED, haunted ); } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/ItemStatusHandler.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/ItemStatusHandler.java index e6089116..7a613748 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/ItemStatusHandler.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/ItemStatusHandler.java @@ -93,6 +93,18 @@ public void saveSelectively( Bundle bundle, ArrayList itemsToSave ){ } } } + + public void saveClassesSelectively( Bundle bundle, ArrayList> clsToSave ){ + List> items = Arrays.asList(this.items); + for (Class cls : clsToSave){ + if (items.contains(cls)){ + Class toSave = items.get(items.indexOf(cls)); + String itemName = toSave.toString(); + bundle.put( itemName + PFX_LABEL, itemLabels.get( toSave ) ); + bundle.put( itemName + PFX_KNOWN, known.contains( toSave ) ); + } + } + } private void restore( Bundle bundle, ArrayList labelsLeft ) { diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java index d9bca15a..787d540c 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/KindOfWeapon.java @@ -20,10 +20,14 @@ */ package com.shatteredpixel.shatteredpixeldungeon.items; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.utils.PathFinder; import com.watabou.utils.Random; abstract public class KindOfWeapon extends EquipableItem { @@ -103,6 +107,21 @@ public float speedFactor( Char owner ) { public int reachFactor( Char owner ){ return 1; } + + public boolean canReach( Char owner, int target){ + if (Dungeon.level.distance( owner.pos, target ) > reachFactor(owner)){ + return false; + } else { + boolean[] passable = BArray.not(Dungeon.level.solid, null); + for (Char ch : Actor.chars()) { + if (ch != owner) passable[ch.pos] = false; + } + + PathFinder.buildDistanceMap(target, passable, reachFactor(owner)); + + return PathFinder.distance[owner.pos] <= reachFactor(owner); + } + } public int defenseFactor( Char owner ) { return 0; diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/AlchemistsToolkit.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/AlchemistsToolkit.java index 37ab6dfb..ad03c688 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/AlchemistsToolkit.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/AlchemistsToolkit.java @@ -112,7 +112,8 @@ public void absorbEnergy( int energy ){ partialCharge -= 1; charge++; - if (charge == chargeCap){ + if (charge >= chargeCap){ + charge = chargeCap; partialCharge = 0; break; } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index 3fccf493..e1a816c2 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -40,7 +40,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.AntiMagic; -import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfElements; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRetribution; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfPsionicBlast; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; @@ -504,11 +503,7 @@ protected float attackDelay() { @Override protected boolean canAttack(Char enemy) { - if (rose != null && rose.weapon != null) { - return Dungeon.level.distance(pos, enemy.pos) <= rose.weapon.reachFactor(this); - } else { - return super.canAttack(enemy); - } + return super.canAttack(enemy) || (rose != null && rose.weapon != null && rose.weapon.canReach(this, enemy.pos)); } @Override @@ -545,7 +540,7 @@ public int defenseProc(Char enemy, int damage) { public void damage(int dmg, Object src) { //TODO improve this when I have proper damage source logic if (rose != null && rose.armor != null && rose.armor.hasGlyph(AntiMagic.class, this) - && RingOfElements.RESISTS.contains(src.getClass())){ + && AntiMagic.RESISTS.contains(src.getClass())){ dmg -= Random.NormalIntRange(rose.armor.DRMin(), rose.armor.DRMax())/3; } @@ -575,11 +570,11 @@ public int defenseSkill(Char enemy) { } @Override - public int stealth() { - int stealth = super.stealth(); + public float stealth() { + float stealth = super.stealth(); if (rose != null && rose.armor != null){ - stealth = Math.round(rose.armor.stealthFactor(this, stealth)); + stealth = rose.armor.stealthFactor(this, stealth); } return stealth; diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java index aa8a7fc2..dff7a523 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/Potion.java @@ -167,7 +167,19 @@ public static void save( Bundle bundle ) { } public static void saveSelectively( Bundle bundle, ArrayList items ) { - handler.saveSelectively( bundle, items ); + ArrayList> classes = new ArrayList<>(); + for (Item i : items){ + if (i instanceof ExoticPotion){ + if (!classes.contains(ExoticPotion.exoToReg.get(i.getClass()))){ + classes.add(ExoticPotion.exoToReg.get(i.getClass())); + } + } else if (i instanceof Potion){ + if (!classes.contains(i.getClass())){ + classes.add(i.getClass()); + } + } + } + handler.saveClassesSelectively( bundle, classes ); } @SuppressWarnings("unchecked") diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java index 450b653d..1fd92e84 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/potions/elixirs/ElixirOfRestoration.java @@ -21,12 +21,16 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs; +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfCleansing; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.audio.Sample; public class ElixirOfRestoration extends Elixir { @@ -40,6 +44,22 @@ public void apply(Hero hero) { PotionOfCleansing.cleanse(hero); } + @Override + public void shatter(int cell) { + if (Actor.findChar(cell) == null){ + super.shatter(cell); + } else { + if (Dungeon.level.heroFOV[cell]) { + Sample.INSTANCE.play(Assets.SND_SHATTER); + splash(cell); + } + + if (Actor.findChar(cell) != null){ + PotionOfCleansing.cleanse(Actor.findChar(cell)); + } + } + } + @Override public int price() { //prices of ingredients diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java index ca1fd1a5..9766cc2f 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler; import com.shatteredpixel.shatteredpixeldungeon.items.Recipe; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfAntiMagic; import com.shatteredpixel.shatteredpixeldungeon.items.stones.Runestone; import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection; @@ -113,7 +114,19 @@ public static void save( Bundle bundle ) { } public static void saveSelectively( Bundle bundle, ArrayList items ) { - handler.saveSelectively( bundle, items ); + ArrayList> classes = new ArrayList<>(); + for (Item i : items){ + if (i instanceof ExoticScroll){ + if (!classes.contains(ExoticScroll.exoToReg.get(i.getClass()))){ + classes.add(ExoticScroll.exoToReg.get(i.getClass())); + } + } else if (i instanceof Scroll){ + if (!classes.contains(i.getClass())){ + classes.add(i.getClass()); + } + } + } + handler.saveClassesSelectively( bundle, classes ); } @SuppressWarnings("unchecked") diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java index 40466276..370f3631 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Bolas.java @@ -45,7 +45,7 @@ public int max(int lvl) { @Override public int STRReq(int lvl) { - return 15; + return 13; } @Override diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java index 30d805a5..f7896087 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CavesBossLevel.java @@ -201,7 +201,7 @@ protected void createItems() { do { pos = Random.IntRange( ROOM_LEFT, ROOM_RIGHT ) + Random.IntRange( ROOM_TOP + 1, ROOM_BOTTOM ) * width(); } while (pos == entrance); - drop( item, pos ).type = Heap.Type.REMAINS; + drop( item, pos ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java index 6ad8f381..f7bb04b9 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityBossLevel.java @@ -172,7 +172,7 @@ protected void createItems() { Random.IntRange( LEFT + 1, LEFT + HALL_WIDTH - 2 ) + Random.IntRange( TOP + HALL_HEIGHT + 2, TOP + HALL_HEIGHT + CHAMBER_HEIGHT ) * width(); } while (pos == entrance); - drop( item, pos ).type = Heap.Type.REMAINS; + drop( item, pos ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java index ee13aa83..ece56ac2 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java @@ -102,10 +102,10 @@ protected float[] trapChances() { } @Override - protected void createItems() { - super.createItems(); - + protected void createMobs() { Imp.Quest.spawn( this ); + + super.createMobs(); } @Override diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java index 368edc60..b1138063 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/HallsBossLevel.java @@ -162,7 +162,7 @@ protected void createItems() { do { pos = Random.IntRange( ROOM_LEFT, ROOM_RIGHT ) + Random.IntRange( ROOM_TOP + 1, ROOM_BOTTOM ) * width(); } while (pos == entrance); - drop( item, pos ).type = Heap.Type.REMAINS; + drop( item, pos ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java index 8f0cb5b5..dcc1227b 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/LastShopLevel.java @@ -120,7 +120,7 @@ protected void createItems() { do { pos = pointToCell(roomEntrance.random()); } while (pos == entrance); - drop( item, pos ).type = Heap.Type.REMAINS; + drop( item, pos ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java index ecb49541..237d5ca8 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java @@ -158,7 +158,7 @@ public Actor respawner() { protected void createItems() { Item item = Bones.get(); if (item != null) { - drop( item, randomRespawnCell() ).type = Heap.Type.REMAINS; + drop( item, randomRespawnCell() ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } drop(new IronKey(10), randomPrisonCell()); } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index 1ef1eec1..5c78c60a 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -341,7 +341,11 @@ protected void createItems() { addItemToSpawn(new GoldenKey(Dungeon.depth)); } } else { - drop( toDrop, cell ).type = type; + Heap dropped = drop( toDrop, cell ); + dropped.type = type; + if (type == Heap.Type.SKELETON){ + dropped.setHauntedIfCursed(0.75f); + } } } @@ -362,7 +366,7 @@ protected void createItems() { map[cell] = Terrain.GRASS; losBlocking[cell] = false; } - drop( item, cell ).type = Heap.Type.REMAINS; + drop( item, cell ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } //guide pages diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java index ad622f93..858a41b2 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java @@ -120,7 +120,7 @@ protected void createItems() { do { pos = pointToCell(roomEntrance.random()); } while (pos == entrance || solid[pos]); - drop( item, pos ).type = Heap.Type.REMAINS; + drop( item, pos ).setHauntedIfCursed(1f).type = Heap.Type.REMAINS; } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java index 729e82cd..ffae58de 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/features/HighGrass.java @@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barkskin; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle; @@ -43,7 +44,12 @@ public class HighGrass { public static void trample( Level level, int pos, Char ch ) { - Level.set( pos, Terrain.GRASS ); + if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){ + //Level.set(pos, Terrain.FURROWED_GRASS); + Level.set(pos, Terrain.GRASS); + } else { + Level.set(pos, Terrain.GRASS); + } GameScene.updateMap( pos ); int naturalismLevel = 0; @@ -61,8 +67,8 @@ public static void trample( Level level, int pos, Char ch ) { } if (naturalismLevel >= 0) { - // Seed, scales from 1/16 to 1/4 - if (Random.Int(16 - ((int) (naturalismLevel * 3))) == 0) { + // Seed, scales from 1/20 to 1/4 + if (Random.Int(20 - (naturalismLevel * 4)) == 0) { Item seed = Generator.random(Generator.Category.SEED); if (seed instanceof BlandfruitBush.Seed) { diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretSummoningRoom.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretSummoningRoom.java index 4e337512..5d15b64c 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretSummoningRoom.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretSummoningRoom.java @@ -51,7 +51,7 @@ public void paint(Level level) { Painter.fill(level, this, 1, Terrain.SECRET_TRAP); Point center = center(); - level.drop(Generator.random(), level.pointToCell(center)).type = Heap.Type.SKELETON; + level.drop(Generator.random(), level.pointToCell(center)).setHauntedIfCursed(0.75f).type = Heap.Type.SKELETON; for (Point p : getPoints()){ int cell = level.pointToCell(p); diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/LaboratoryRoom.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/LaboratoryRoom.java index a0e2373f..d3bfcfe3 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/LaboratoryRoom.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/LaboratoryRoom.java @@ -63,7 +63,7 @@ public void paint( Level level ) { int chapter = 1 + Dungeon.depth/5; Blob.seed( pot.x + level.width() * pot.y, 1 + chapter*10 + Random.NormalIntRange(0, 10), Alchemy.class, level ); - int n = Random.NormalIntRange( 2, 3 ); + int n = Random.NormalIntRange( 1, 3 ); for (int i=0; i < n; i++) { int pos; do { diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MassGraveRoom.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MassGraveRoom.java index 88c914fd..d631049c 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MassGraveRoom.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MassGraveRoom.java @@ -88,6 +88,7 @@ public void paint(Level level){ pos = level.pointToCell(random()); } while (level.map[pos] != Terrain.EMPTY_SP || level.heaps.get(pos) != null); Heap h = level.drop(item, pos); + h.setHauntedIfCursed(1f); h.type = Heap.Type.SKELETON; } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PitRoom.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PitRoom.java index 22bac57a..e1be94ce 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PitRoom.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/PitRoom.java @@ -80,7 +80,7 @@ public void paint( Level level ) { int n = Random.IntRange( 1, 2 ); for (int i=0; i < n; i++) { - level.drop( prize( level ), remains ); + level.drop( prize( level ), remains ).setHauntedIfCursed(0.75f); } } diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RunestoneRoom.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RunestoneRoom.java index 8c6844b0..a9f182c5 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RunestoneRoom.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RunestoneRoom.java @@ -50,7 +50,7 @@ public void paint( Level level) { Painter.drawInside( level, this, entrance(), 2, Terrain.EMPTY_SP); Painter.fill( level, this, 2, Terrain.EMPTY ); - int n = Random.NormalIntRange(2, 4); + int n = Random.NormalIntRange(2, 3); int dropPos; for (int i = 0; i < n; i++) { do { diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java index 6d932eab..82cf5ecc 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java @@ -283,7 +283,8 @@ protected static ArrayList generateItems() { default: rare = new Stylus(); } - rare.cursed = rare.cursedKnown = false; + rare.cursed = false; + rare.cursedKnown = true; itemsToSpawn.add( rare ); //hard limit is 63 items + 1 shopkeeper, as shops can't be bigger than 8x8=64 internally diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/Languages.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/Languages.java index b60a9ef3..cba6da35 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/Languages.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/Languages.java @@ -28,10 +28,10 @@ public enum Languages { KOREAN("한국어", "ko", Status.UNREVIEWED, new String[]{"Flameblast12"}, new String[]{"Cocoa", "Korean2017", "WondarRabb1t", "ddojin0115", "eeeei", "hancyel", "linterpreteur", "lsiebnie" }), RUSSIAN("русский", "ru", Status.REVIEWED, new String[]{"ConsideredHamster", "Inevielle", "yarikonline"}, new String[]{"AttHawk46", "HerrGotlieb", "HoloTheWise", "JleHuBbluKoT", "MrXantar", "Shamahan", "apxwn", "roman.yagodin", "un_logic", "Вoвa"}), GERMAN("deutsch", "de", Status.UNREVIEWED, new String[]{"Dallukas", "KrystalCroft", "Wuzzy", "Zap0", "bernhardreiter", "davedude" }, new String[]{"Ceeee", "DarkPixel", "ErichME", "LenzB", "Sarius", "Sorpl3x", "ThunfischGott", "Topicranger", "apxwn", "gekko303", "oragothen", "spixi"}), - FRENCH("français", "fr", Status.INCOMPLETE, new String[]{"Emether", "canc42", "kultissim", "minikrob"}, new String[]{"Alsydis", "Axce", "Basttee", "Dekadisk", "Draal", "Neopolitan", "RomTheMareep", "SpeagleZNT", "antoine9298", "go11um", "linterpreteur", "marmous", "solthaar", "vavavoum"}), + FRENCH("français", "fr", Status.UNREVIEWED, new String[]{"Emether", "canc42", "kultissim", "minikrob"}, new String[]{"Alsydis", "Axce", "Basttee", "Dekadisk", "Draal", "Neopolitan", "RomTheMareep", "SpeagleZNT", "antoine9298", "go11um", "linterpreteur", "marmous", "solthaar", "vavavoum"}), SPANISH("español", "es", Status.UNREVIEWED, new String[]{"Kiroto", "Kohru", "grayscales"}, new String[]{"Alesxanderk", "CorvosUtopy", "Dewstend", "Dyrran", "Fervoreking", "Illyatwo2", "JPCHZ", "STKmonoqui", "airman12", "alfongad", "benzarr410", "ctrijueque", "dhg121", "javifs", "jonismack1", "tres.14159"}), PORTUGUESE("português", "pt", Status.UNREVIEWED, new String[]{"TDF2001", "matheus208"}, new String[]{"Bigode935", "Chacal.Ex", "ChainedFreaK", "JST", "MadHorus", "Tio_P_(Krampus)", "ancientorange", "danypr23", "denis.gnl", "ismael.henriques12", "mfcord", "owenreilly", "rafazago", "try31"}), - POLISH("polski", "pl", Status.UNREVIEWED, new String[]{"Deksippos", "kuadziw", "szymex73"}, new String[]{"Chasseur", "Darden", "MJedi", "MrKukurykpl", "Peperos", "Scharnvirk", "VasteelXolotl", "bvader95", "dusakus", "michaub", "ozziezombie", "szczoteczka22", "transportowiec96"}), + POLISH("polski", "pl", Status.REVIEWED, new String[]{"Deksippos", "kuadziw", "szymex73"}, new String[]{"Chasseur", "Darden", "MJedi", "MrKukurykpl", "Peperos", "Scharnvirk", "VasteelXolotl", "bvader95", "dusakus", "michaub", "ozziezombie", "szczoteczka22", "transportowiec96"}), ITALIAN("italiano", "it", Status.REVIEWED, new String[]{"bizzolino", "funnydwarf"}, new String[]{"4est", "DaniMare", "Danzl", "andrearubbino00", "nessunluogo", "righi.a", "umby000"}), CHINESE("中文", "zh", Status.REVIEWED, new String[]{"Jinkeloid(zdx00793)"}, new String[]{"931451545", "HoofBumpBlurryface", "Lery", "Lyn-0401", "ShatteredFlameBlast", "endlesssolitude", "hmdzl001", "tempest102"}), CZECH("čeština", "cs", Status.REVIEWED, new String[]{"ObisMike"}, new String[]{"AshenShugar", "Buba237", "JStrange", "RealBrofessor", "chuckjirka"}), diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_cs.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_cs.properties index 332b778b..d8d2291e 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_cs.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_cs.properties @@ -405,10 +405,10 @@ actors.mobs.npcs.shopkeeper.desc=Tenhle chlápek vypadá vhodněji pro obchodní actors.mobs.npcs.wandmaker.name=Starý tvůrce hůlek actors.mobs.npcs.wandmaker.intro_warrior=Ach, jaké příjemné překvapení setkat se s hrdinou na tak depresivním místě! Pokud by jsi pomohl starému muži, měl bych pro tebe úkol. -actors.mobs.npcs.wandmaker.intro_rogue=Dobrý bože, ty jsi mě překvapil! Nepotkal jsem tu banditu který by byl ještě při smyslech, takže ty musíš být z povrchu! Pokud by jsi pomohl cizímu člověku, měl bych pro tebe úkol. -actors.mobs.npcs.wandmaker.intro_mage=Ach, %s! Zdravím! Slyšel jsem že byl kolem tebe nějaký rozruch na čarodějnickém institutu? No nevadí, stejně jsem ty knihomoly nikdy neměl rád. Pokud jsi ochoten, měl bych pro tebe úkol. +actors.mobs.npcs.wandmaker.intro_rogue=Dobrý bože, ty jsi mě překvapil! Nepotkal jsem tu zloděje, který by byl ještě při smyslech, takže ty musíš být z povrchu! Pokud by jsi pomohl cizímu člověku, měl bych pro tebe úkol. +actors.mobs.npcs.wandmaker.intro_mage=Ach, %s! Zdravím! Slyšel jsem, že byl mezi tebou a čarodějnickým institutem nějaký rozruch! No nevadí, stejně jsem ty knihomoly nikdy neměl rád. Pokud jsi ochoten, měl bych pro tebe úkol. actors.mobs.npcs.wandmaker.intro_huntress=Ach, zdravím madam! Přátelská tvář je tady dole příjemné překvapení, že ano? Přísahal bych že jsem tvou tvář už předtím viděl, ale ruku do ohně bych za to nedal... No nevadí, pokud zde hledáš dobrodružství, měl bych pro tebe úkol. -actors.mobs.npcs.wandmaker.intro_1=\n\nPřišel jsem zde hledat vzácnou ingredienci pro hůlku, ale sám jsem se ztratil a můj magický štít slábne. Budu muset brzy zmizet, ale nesnesl bych odejít bez toho pro co jsem sem přišel. +actors.mobs.npcs.wandmaker.intro_1=\n\nPřišel jsem zde hledat vzácnou ingredienci pro hůlku, ale sám jsem se ztratil a můj magický štít slábne. Budu muset brzy zmizet, ale nesnesl bych odejít bez toho, pro co jsem sem přišel. actors.mobs.npcs.wandmaker.intro_dust=Hledám nějaký _mrtvolný prach._ Je to speciální druh prokletého kostního prášku který se obvykle vyskytuje na místech jako toto. Někde by tu měla být zabarikádovaná místnost, jsem si jistý že v ní nějaký prach bude. Avšak pozor, prokletí kterým je prach posedlé, je velmi mocné. _Dostaň se co nejrychleji zpět ke mě_ a já jej pro tebe očistím. actors.mobs.npcs.wandmaker.intro_ember=Hledám nějaké _čerstvé uhlíky_ z novorozeného ohnivého elementála. Elementálové se obvykle zjeví když není vyvolávací rituál kontrolován, takže jen najdi pár svíček, rituální místo a jsem si jistý, že se jeden objeví. Možná budeš chtít _mít po ruce nějaký ledový předmět,_ elementálové jsou velmi silní, ale led je celkem snadno oslabí. actors.mobs.npcs.wandmaker.intro_berry=Starý strážce tohoto vězení měl kdysi _rostlinu Hnilůvku_ a já hledám jedno její semínko. Rostlina už se nejspíš divoce rozrostla, takže dostat ho z ní nebude lehké. Její zahrada by tu někde měla být. Snaž se _držet dál od jejích šlahounů_ pokud chceš zůstat pohromadě. I když to může být lákavé, vyhni se použití ohně. Zabiješ tím sice rostlinu, ale zničíš i semínko. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eo.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eo.properties index 2115e9e8..1773df07 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eo.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eo.properties @@ -430,7 +430,7 @@ actors.mobs.albino.desc=Ĝi estas nekutima dentobreĉa speco de poŝbesta rato k actors.mobs.bandit.name=freneza bandito actors.mobs.bat.name=vampira vesperto -actors.mobs.bat.def_verb=evitita +actors.mobs.bat.def_verb=evitite actors.mobs.bat.desc=Tiuj lertegaj kaj necedemaj loĝantoj de kavernaj kupoloj povas venki multe pli grandajn kontraŭuloj resanigante je iu sukcesa atako. actors.mobs.bee.name=orkolora abelo @@ -560,7 +560,7 @@ actors.mobs.succubus.name=sukubo actors.mobs.succubus.desc=Sukuboj estas demoninoj kiuj aspektas kiel amorvekaj (iomete gotik-maniere) virinoj. Per iliaj magiaĵoj, sukuboj povas ĉarmi heroon, kiu iĝos malpovi ataki ion ajn ĝis la fiĉarmo seniĝos. Kiam sukubo atakos ĉarmitan heroon, ŝi śtelos lian esencon de vivo. actors.mobs.swarm.name=muŝaro -actors.mobs.swarm.def_verb=evitita +actors.mobs.swarm.def_verb=evitite actors.mobs.swarm.desc=La minaca araĉo da muŝoj zumas furioze. Ĉiu ne-magia atako disigos ĝin al du malpli nombraj sed egale danĝeraj muŝaroj. actors.mobs.tengu.name=Tenguo @@ -582,7 +582,7 @@ actors.mobs.warlock.bolt_kill=La ombropafaĵo mortigis vin… actors.mobs.warlock.desc=Kiam gnomoj ekinteresiĝis pri fisorĉarto anstataŭ inĝenierarto, sorĉistoj komencis regi en la urbo. Ili komencis kun baza magio, sed post nelonge transinteresiĝis pri demonscienco kaj nekromancio. actors.mobs.wraith.name=fantomo -actors.mobs.wraith.def_verb=evitita +actors.mobs.wraith.def_verb=evitite actors.mobs.wraith.desc=Fantomo estas venĝema spirito de pekinto, kies tombo estis profanita. Estante ekstertera estaĵo, estas ege malfacile frapi ĝin per ordinara armilo. actors.mobs.yog.name=Jog-Dzeva diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eu.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eu.properties index f5e5b017..f0c14155 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eu.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors_eu.properties @@ -149,7 +149,7 @@ actors.buffs.fury.heromsg=Amorratuta zaude! actors.buffs.fury.desc=Haserre zaude, etsaiek ez dute gustuko izango zu haserretzea.\n\nSumin handi batek erretzen zaitu, eraso fisikoekin eragiten duzun kaltea %%50 areagotzen duena.\n\nSumin hau osasunaren %% 50 azpitik zauritua zauden bitartean iraungo dizu. actors.buffs.blobimmunity.name=Arazketa langa -actors.buffs.blobimmunity.desc=Indar bereziren batek babes mehe batez inguratzen zaitu, arez garraiatutako efektu kaltegarri guztiak kanpoan utziz.\n\nAreako efektu guztietatik salbuetsita zaude langak dirauen bitartean.\n\nGeratzen diren kutsagaiztasun txandak: %s. +actors.buffs.blobimmunity.desc=Indar bereziren batek babes mehe batez inguratzen zaitu, airez garraiatutako efektu kaltegarri guztiak kanpoan utziz.\n\nAreako efektu guztietatik salbuetsita zaude langak dirauen bitartean.\n\nGeratzen diren kutsagaiztasun txandak: %s. actors.buffs.haste.name=Lastertzea actors.buffs.haste.desc=Energiak zure muskuluak zeharkatzen ditu, abiadura sinesgaitzetan korrika egitea ahalbidetuz!\n\nPresaren efektuen menpe zaudela 3 aldiz azkarrago ibiliko zara, baina beste ekintzak abiadura arruntean egingo dituzu.\n\nGeratzen diren lastertze txandak: %s. @@ -400,7 +400,7 @@ actors.mobs.npcs.sheep.desc=Hau ardi magiko bat da. Zer du berezia? Ezin duzula actors.mobs.npcs.shopkeeper.name=dendaria actors.mobs.npcs.shopkeeper.thief=Lapurra, lapurra! -actors.mobs.npcs.shopkeeper.sell=Saldu objektu bat +actors.mobs.npcs.shopkeeper.sell=Saldu objektua actors.mobs.npcs.shopkeeper.desc=Tipo lodi hau hiri handi bateko merkatal guneari ziegari baino hobeto doakiola dirudi. Elementuen prezioak direla eta denda ziegan izatea nahiago duela argi dago. actors.mobs.npcs.wandmaker.name=zarta egile zaharra @@ -504,7 +504,7 @@ actors.mobs.king$undead.def_verb=blokeatuta actors.mobs.king$undead.rankings_desc=Ipotxen erregearen oinetara eroria actors.mobs.king$undead.desc=Ipotx ez-hil hauek, Ipotxen erregearen borondatez zutituak, bere gorteko kide izandakoak dira. Bizar txundigarria duten eskeletoak dirudite. -actors.mobs.mimic.name=imitatu +actors.mobs.mimic.name=itxuratia actors.mobs.mimic.desc=Mimikoak nahi duten forma har dezaketen izaki magikoak dira. Ziegetan daudenean altxor kutxen forma hartzen dute, abenturazaleak nola erakarri ondo dakitelako. actors.mobs.mob.died=Urrenean zerbait hiltzen entzuten duzu. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index 33838a1a..7e801dbc 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -824,7 +824,7 @@ items.scrolls.scrollofremovecurse.desc=The incantation on this scroll will insta items.scrolls.scrollofteleportation.name=scroll of teleportation 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.cant_reach=You can't teleport there +items.scrolls.scrollofteleportation.cant_reach=You can't teleport there. items.scrolls.scrollofteleportation.prompt=Choose a location to teleport items.scrolls.scrollofteleportation.desc=The spell on this parchment instantly transports the reader to a different location on the dungeon level. The scroll prioritizes areas the reader hasn't been to before, through it is not able to teleport past locked doors or barricades. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eo.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eo.properties index 60c40d87..2eb946b4 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eo.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eo.properties @@ -204,7 +204,7 @@ items.artifacts.driedrose$petal.maxlevel=La rozo estas kompleta! items.artifacts.driedrose$petal.levelup=Vi aldonis florfolieton al la rozo. items.artifacts.driedrose$petal.desc=Delikata sekigita florfolieto, kiu iel transdaŭris ĝin nun en la labirinto. items.artifacts.driedrose$ghosthero.name=trista fantomino -items.artifacts.driedrose$ghosthero.def_verb=evitita +items.artifacts.driedrose$ghosthero.def_verb=evitite items.artifacts.driedrose$ghosthero.hello=Saluton ree %s. items.artifacts.driedrose$ghosthero.introduce=Mia animo estas kunigita al tiu ĉi rozo, ĝi estas tre grava por mi, donaco de mia amato, kiun mi lasis en la supraĵo.\n\nMi ne povas reveni al li, tamen dank' al ci, mi havas alian ŝancon por plenumi mian vojaĝon. Kiam mi povos, mi respondos al cia alvoko kaj batalos kun ci.\n\nEspereble ci sukcesos tie, kie mi malvenkis… items.artifacts.driedrose$ghosthero.desc=Delikate aspektanta spirita aperaĵo kun homeca formo. Ŝia povo ŝajnas kunligita al la rozo, kiun vi posedas.\n\nTiu ĉi fantomino ne grandsignifas, kvankam ŝi estas via ununura amiko tie ĉi subtere. @@ -664,7 +664,7 @@ items.potions.exotic.potionofshroudingfog.name=eliksiro de nebula kurteno items.potions.exotic.potionofshroudingfog.desc=En kontakto kun la aero, la likvo en tiu ĉi flakono formos densan nebulon, kiu tute blokos la vidon. items.potions.exotic.potionofsnapfreeze.name=eliksiro de subita frostigo -items.potions.exotic.potionofsnapfreeze.desc=La ĥemiaĵo entenata en tiu ĉi boteleto rapide reagos kun la aero, tuje frostigante akaj senmovigante ĉion en la proksimo. +items.potions.exotic.potionofsnapfreeze.desc=La ĥemiaĵo entenata en tiu ĉi boteleto rapide reagos kun la aero, tuje frostigante kaj senmovigante ĉion en la proksimo. items.potions.exotic.potionofstamina.name=eliksiro de vigleco items.potions.exotic.potionofstamina.desc=Trinkado de tiu ĉi strange dolĉa likvo plenigos vin per longe daŭrantan pliigon de povo, ebligante al vi galopi por iom da tempo. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eu.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eu.properties index 88fe34fc..c5c51c6d 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eu.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_eu.properties @@ -789,7 +789,7 @@ items.scrolls.inventoryscroll.yes=Bai, ziur nago items.scrolls.inventoryscroll.no=Ez, iritziz aldatu dut items.scrolls.scrollofidentify.name=identifikazio eskuizkribua -items.scrolls.scrollofidentify.inv_title=Identifikatu objektu bat +items.scrolls.scrollofidentify.inv_title=Identifikatu objektua items.scrolls.scrollofidentify.it_is=Zure eskuizkribuak %s identifikatzen du. items.scrolls.scrollofidentify.desc=Eskuizkribu honek behin betirako azalarazten ditu objektu bakan baten sekretu guztiak. @@ -816,7 +816,7 @@ items.scrolls.scrollofrecharging.surge=Energia uholde batek zeharkatzen du zure items.scrolls.scrollofrecharging.desc=Pergamino honi estekatutako botere magiko gordinak, askatzean, erabiltzailearen zartak kargatuko ditu denboran zehar. items.scrolls.scrollofremovecurse.name=madarikazioa kentzeko eskuizkribua -items.scrolls.scrollofremovecurse.inv_title=Garbitu objektu bat +items.scrolls.scrollofremovecurse.inv_title=Garbitu objektua items.scrolls.scrollofremovecurse.cleansed=Zure objektua argi garbitzailearekin distira da, eta energia maltzurra desagertzen da! items.scrolls.scrollofremovecurse.not_cleansed=Zure objektua argi garbitzailearekin distira da, baina ez da ezer gertatzen. items.scrolls.scrollofremovecurse.desc=Eskuizkribu honen sorginkeriak atoan garbituko du madarikazioa arma, eraztun, armadura edo artefaktu batetik. @@ -835,13 +835,13 @@ items.scrolls.scrollofterror.many=Eskuizkribuak argi gorrizko distira itsugarri items.scrolls.scrollofterror.desc=Argi gorrizko distirak ikusgai dauden izakiak izuz itoko ditu, biratu eta ihes egingo dute. Ihesean dagoen arerio bati erasotzean efektua laburtuko du. items.scrolls.scrolloftransmutation.name=transmutazio eskuizkribua -items.scrolls.scrolloftransmutation.inv_title=Transmutatu objektu bat +items.scrolls.scrolloftransmutation.inv_title=Transmutatu objektua items.scrolls.scrolloftransmutation.nothing=Ez da ezer berezirik gertatzen. items.scrolls.scrolloftransmutation.morph=Zure objektua zerbait desberdin bihurtzen da! items.scrolls.scrolloftransmutation.desc=Eskuizkribu honek transmutazio magia boteretsua dauka. Objektu egokian erabilita mota bereko beste objektu batera eraldatuko du. Magiak hobekuntzak, sorginkeriak eta glifoak mantenduko ditu. items.scrolls.scrollofupgrade.name=hobekuntza eskuizkribua -items.scrolls.scrollofupgrade.inv_title=Hobetu objektu bat +items.scrolls.scrollofupgrade.inv_title=Hobetu objektua items.scrolls.scrollofupgrade.weaken_curse=Hobekuntza eskuizkribuak zure objektuaren madarikazioa ahultzen du. items.scrolls.scrollofupgrade.remove_curse=Hobekuntza eskuizkribuak zure objektuaren madarikazioa garbitzen du! items.scrolls.scrollofupgrade.desc=Eskuizkribu honek elementu bakar bat hobetuko du, bere kalitatea hobeagotuz. Zartak indartsuagoak izango dira eta karga gehiago izango dituzte, arma eta armadurek kalte gehiago egin eta blokeatuko dute, eta eraztunen efektuak indartuko dira. Eskuizkribuak madarikazioak ahuldu edota ezeztu ditzake, nahiz eta madarikazioa kentzeko eskuizkribua baino ahulagoa den. @@ -874,11 +874,11 @@ items.scrolls.exotic.scrollofconfusion.desc=Ozen irakurtzean, eskuizkribu honek items.scrolls.exotic.scrollofdivination.name=igartzapen eskuizkribua items.scrolls.exotic.scrollofdivination.nothing_left=Ez dago ezer identifikatzeke! -items.scrolls.exotic.scrollofdivination.desc=Eskuizkribu honek era iraunkorrean identifikatuko ditu ausazko lau elementuen motak: Identifikatutako motak edabeen koloreak, eskuizkribuen errunak eta eraztunetako bitxiak izan daitezke. Identifikatutako elementuak ez dute zertan gainean dituzunak izan. +items.scrolls.exotic.scrollofdivination.desc=Eskuizkribu honek era iraunkorrean identifikatuko ditu ausazko lau elementuen motak: Identifikatutako motak edabeen koloreak, eskuizkribuen errunak eta eraztunetako bitxiak izan daitezke. Identifikatutako elementuak ez dute zertan gainean dituzunak izan behar. items.scrolls.exotic.scrollofdivination$wnddivination.desc=Zure igartzapen eskuizkribuak honako objektu hauek identifikatu ditu: items.scrolls.exotic.scrollofenchantment.name=sorgintze eskuizkribua -items.scrolls.exotic.scrollofenchantment.inv_title=Sorgindu objektu bat +items.scrolls.exotic.scrollofenchantment.inv_title=Sorgindu objektua items.scrolls.exotic.scrollofenchantment.weapon=Hautatu zure armari aplikatzeko sorginkeria. items.scrolls.exotic.scrollofenchantment.armor=Hautatu armadurara aplikatzeko glifoa. items.scrolls.exotic.scrollofenchantment.cancel_warn=Ezezteak ere eskuizkribua kontsumituko du. @@ -928,7 +928,7 @@ items.spells.beaconofreturning.desc_set=Gailu hau %d pisuko tokiren batean ezarr items.spells.beaconofreturning.desc=Sorginkeria konplexu honek erabiltzaileari ezarritako kokaleku batetara itzultzea ahalbidetuko dio, distantzia dena dela. Sorginkeria itzultzean kontsumituko da besterik ez, eta nahi beste aldiz ezarri daiteke, baina ezarritako azken tokia besterik ez du gogoratuko. items.spells.curseinfusion.name=madarikazioaren txertatzea -items.spells.curseinfusion.inv_title=Madarikatu objektu bat +items.spells.curseinfusion.inv_title=Madarikatu objektua items.spells.curseinfusion.desc=Sorginkeria honek DM-300 batean aurkitu daiteken magia gaizkilea txertatuko dio ekipamenduko objektu bati. Objektua berehala madarikatuko da eta daukan edozein xarma edo glifo gainidatziko da. items.spells.featherfall.name=lumaren erorketa @@ -939,13 +939,13 @@ items.spells.spell.ac_cast=ESAN items.spells.spell.no_magic=Ezin dituzu sorginkeriak esan magiatik salbuetsita zaudela. items.spells.magicalinfusion.name=txertatze magikoa -items.spells.magicalinfusion.inv_title=Txertatu objektu bat +items.spells.magicalinfusion.inv_title=Txertatu objektua items.spells.magicalinfusion.infuse=Zure %s energia misteriotsuz txertatua dago! items.spells.magicalinfusion.desc=Sorginkeria honek arma edo armadura bati energia magiko boteretsua txertatuko dio.\n\nHobetzeaz gain, arma bati xarma magiko bat txertatuko zaio edo armadura batean glifo magiko bat inskribatuko da.\n\nObjektuak aurretik beste xarma edo glifo bat bazuen, hobekuntza honek ez du ezabatuko. items.spells.magicalporter.name=garraiatzaile magikoa items.spells.magicalporter.inv_title=Garraiatu elementu bat -items.spells.magicalporter.nowhere=Ez dago objektu bat nora garraiatu. +items.spells.magicalporter.nowhere=Ez dago objektua nora garraiatu. items.spells.magicalporter.desc=Sorginkeria honek magikoki garraiatuko du sorgindutako edozein elementu. Baina merkatariaren gailuarekin ez bezala, elementuak hurrengo mailako nagusiaren atarira eramango ditu. items.spells.phaseshift.name=fase-modulazioa @@ -957,12 +957,12 @@ items.spells.reclaimtrap.no_trap=Ez dago tranparik hemen. items.spells.reclaimtrap.desc=Sorginkeria honek DM-300aren konpontze-gaitasunaren aztarnak ditu. tranpa aktibo batean erabiltzean, tranparen botere mekanikoa energia magikora birziklatuko da eta erabiltzailearen zarta eta gailuak birkargatuko ditu. items.spells.recycle.name=birziklatu -items.spells.recycle.inv_title=Birziklatu objektu bat +items.spells.recycle.inv_title=Birziklatu objektua items.spells.recycle.recycled=Zure objektua honetara birziklatu da: %s. items.spells.recycle.desc=Sorginkeria honek transmutazio magiaren forma ahul bat du. Ez du tresnerian eraginik izango, baina eskuizkribuak, edabeak, haziak edo erruna harriak transformatu ditzake, mota bereko ausazko beste zera batera. items.spells.targetedspell.prompt=Hautatu helburu bat -items.spells.targetedspell.inv_title=Txertatu objektu bat +items.spells.targetedspell.inv_title=Txertatu objektua ###runestones @@ -975,7 +975,7 @@ items.stones.stoneofaggression.desc=Harri hau etsai batetik hurbil botatzean, ho items.stones.stoneofaggression$aggression.name=Erasokortasuna items.stones.stoneofaugmentation.name=emendio harria -items.stones.stoneofaugmentation.inv_title=Emendatu objektu bat +items.stones.stoneofaugmentation.inv_title=Emendatu objektua items.stones.stoneofaugmentation.desc=Erruna harri honek tresneriaren gaitasun bat emendatu dezakeen magia indartsu bat dauka, tresnaren bestelako gaitasun baten kaltetan.\n\nArma batean erabilita abiadura edo kaltea areagotzeko aukera izango duzu.\n\nArmadura batean erabilita babesa edo saihestea areagotu ahal izango dituzu. items.stones.stoneofaugmentation$wndaugment.choice=Zer areagotu nahi duzu? items.stones.stoneofaugmentation$wndaugment.speed=Abiadura @@ -1001,13 +1001,13 @@ items.stones.stoneofdeepenedsleep.name=lo sakonaren harria items.stones.stoneofdeepenedsleep.desc=Harri hau lo dagoen arerio batetik hurbil jaurtitzean, hura lo magiko sakonago batera eramango du. Magikoki lokartutako etsaiak betirako jarraituko dute lo, enbarazu egiten ez bazaie. items.stones.stoneofdetectcurse.name=madarikazioa antzemateko harria -items.stones.stoneofdetectcurse.inv_title=Antzeman objektu bat +items.stones.stoneofdetectcurse.inv_title=Antzeman objektua items.stones.stoneofdetectcurse.cursed=Gauza hori madarikatuta dagoela antzematen duzu! items.stones.stoneofdetectcurse.not_cursed=Ez dago magia maltzurra objektu horretan. items.stones.stoneofdetectcurse.desc=Madarikazioa kentzeko eskuizkribuaren magiaren bertsio ahulago bat darama harri honek. Ezin du objektu baten madarikazioa kendu, baina antzeman egingo du. items.stones.stoneofenchantment.name=sorgintze harria -items.stones.stoneofenchantment.inv_title=Sorgindu objektu bat +items.stones.stoneofenchantment.inv_title=Sorgindu objektua items.stones.stoneofenchantment.weapon=Zure arma iluntasunean distira da! items.stones.stoneofenchantment.armor=Zure armadura iluntasunean distira da! items.stones.stoneofenchantment.desc=Erruna harri honek xarma magia du. Hobekuntza eskuizkribu batek ez bezala, ez du objektu baten boterea zuzenean areagotuko, ordez, arma edo armadurari botere berri baten xarma txertatuko dio. @@ -1016,14 +1016,14 @@ items.stones.stoneofflock.name=artalde harria items.stones.stoneofflock.desc=Erruna harri honek ardi magikoak agerrarazten ditu denbora labur baterako jaurtikitako tokiaren inguruan. items.stones.stoneofintuition.name=sen harria -items.stones.stoneofintuition.inv_title=Aukeratu objektu bat +items.stones.stoneofintuition.inv_title=Aukeratu objektua items.stones.stoneofintuition.desc=Erruna harri honek identifikazio eskuizkribuaren magiaren bertsio ahulago bat du. Objektu bat zuzenean identifikatu ordez, zure sena areagotuko du, eta edabe edo eskuizkribu bat asmatuz identifikatzen saiatzea ahalbidetuko dizu. items.stones.stoneofintuition$wndguess.text=Asmatu identifikatu gabeko objektua zer den. Igartzen baduzu identifikatu egingo da! items.stones.stoneofintuition$wndguess.correct=Zuzena. Objektua identifikatu da! items.stones.stoneofintuition$wndguess.incorrect=Ez duzu asmatu. items.stones.stoneofshock.name=astinaldi harria -items.stones.stoneofshock.desc=Erruna harri honek energia elektrikoaren eztanda bat askatzen du inguruko helburuak labur geldiaraziz, eta jaurtitzaileari jotako arerio bakoitzagatik zartaren karga bat ematen dio. +items.stones.stoneofshock.desc=Erruna harri honek energia elektrikozko eztanda bat askatuko du inguruko helburuak labur geldiaraziz, eta jaurtitzaileak jotako arerio bakoitzagatik zarta karga bat irabaziko du. ###wands items.wands.cursedwand.ondeath=Zure %s propioak hil zaitu. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_fr.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_fr.properties index 488aba0b..3b67ad76 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_fr.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_fr.properties @@ -38,7 +38,7 @@ items.armor.glyphs.camouflage.name=%s de camouflage items.armor.glyphs.camouflage.desc=Ce glyphe permet au porteur de se fondre dans les herbes hautes, lui accordant une invisibilité temporaire. items.armor.glyphs.entanglement.name=%s d'enchevêtrement -items.armor.glyphs.entanglement.desc=Ce glyphe fait pousser de la Terracine autour du porteur pour absorber les dégâts, mais l'enracine s'il reste immobile. +items.armor.glyphs.entanglement.desc=Ce glyphe fait pousser de la Terracine autour du porteur pour absorber les dégâts, mais l'enracine tant qu'il reste immobile. items.armor.glyphs.flow.name=%s de flux items.armor.glyphs.flow.desc=Ce glyphe manipule le flux de l'eau autour du porteur, lui permettant de se déplacer bien plus rapidement à travers elle. @@ -159,7 +159,7 @@ items.artifacts.capeofthorns$thorns.inert=Votre cape est de nouveau inactive. items.artifacts.capeofthorns$thorns.radiating=Votre cape commence à irradier de l'énergie, vous vous sentez protégé ! items.artifacts.capeofthorns$thorns.levelup=Votre cape se renforce ! items.artifacts.capeofthorns$thorns.name=Épines -items.artifacts.capeofthorns$thorns.desc=Votre cape émet une énergie vous entourant dans un champ de force déflecteur !\n\nTous les dégâts reçus sont réduits tant que l'effet des épines est actif. De plus, si l'attaquant est proche de vous, les dégâts prévenus sont renvoyés à l'attaquant.\n\nTours d'épines restants : %s. +items.artifacts.capeofthorns$thorns.desc=Votre cape émet une énergie vous enveloppant dans un champ de force déflecteur !\n\nTous les dégâts reçus sont réduits tant que l'effet des épines est actif. De plus, si l'attaquant est proche de vous, les dégâts prévenus sont renvoyés à l'attaquant.\n\nTours d'épines restants : %s. items.artifacts.chaliceofblood.name=calice sanglant items.artifacts.chaliceofblood.ac_prick=PIQUER @@ -917,23 +917,23 @@ items.spells.alchemize.desc=Ce sort canalise l'énergie alchimique, vous permett items.spells.aquablast.name=souffle aquatique items.spells.aquablast.desc=Ce sort va éclabousser à l'emplacement de la cible. Il n’est pas assez puissant pour causer des dégâts (même à des ennemis ardents), mais cela propagera de l’eau sur le terrain à proximité et assommera très brièvement tout ce qui se trouve au centre de l'impact. -items.spells.beaconofreturning.name=beacon of returning -items.spells.beaconofreturning.preventing=The strong magic aura of this place prevents you from using the spell! -items.spells.beaconofreturning.creatures=The Psychic aura of neighbouring creatures doesn't allow you to teleport at this moment. -items.spells.beaconofreturning.set=The beacon was set at your current location. -items.spells.beaconofreturning.wnd_body=Setting will override the location the beacon was previously set to.\n\nReturning will return to your last set location and consume one use of the spell. -items.spells.beaconofreturning.wnd_set=Set -items.spells.beaconofreturning.wnd_return=Return -items.spells.beaconofreturning.desc_set=This beacon was set somewhere on floor %d. -items.spells.beaconofreturning.desc=This intricate spell grants the user the ability to return to a set location, regardless of distance. The spell will only be consumed by returning, it can be set as many times as you like, but it will only remember the most recent location it was set to. +items.spells.beaconofreturning.name=balise de retour +items.spells.beaconofreturning.preventing=La forte aura magique de ce lieu vous empêche d'utiliser le sort ! +items.spells.beaconofreturning.creatures=L'aura psychique des créatures voisines ne vous permettent pas de vous téléporter en ce moment. +items.spells.beaconofreturning.set=La balise a été placer sur votre position actuelle. +items.spells.beaconofreturning.wnd_body=Le réglage annule la position de la balise précédemment défini.\n\nLe retour vous déplacera à votre précédente position défini et utilisera un sort. +items.spells.beaconofreturning.wnd_set=Régler +items.spells.beaconofreturning.wnd_return=Retourner +items.spells.beaconofreturning.desc_set=La balise a été réglé quelque part dans l'étage %d. +items.spells.beaconofreturning.desc=Ce sort donne à l'utilisateur la capacité de retourner à un endroit défini,peu importe la distance.Les charges ne seront consommées seulement quand vous vous téléporterez, il peut être placé autant de fois que vous le voulez,mais ne prendra en compte que le dernier endroit sélectionné. items.spells.curseinfusion.name=infusion maudite items.spells.curseinfusion.inv_title=Maudire un objet -items.spells.curseinfusion.desc=This spell infuses a piece of equipment with the same malignant magic present within DM-300. The item it is used on will immediately be cursed, and any enchantment or glyph it may have had will be overridden. +items.spells.curseinfusion.desc=Ce sort infuse une pièce d'équipement avec la même magie maligne que celle présente dans le DM-300. L'item sur lequel vous l'utilisez sera instantanément maudit,et n'importe quel enchantement glyphe qu'il pourrait posséder sera effacé. items.spells.featherfall.name=chute de plume items.spells.featherfall.light=Vous vous sentez léger comme une plume! -items.spells.featherfall.desc=This spell manipulates gravity's effect on the caster, allowing them to fall great distances without harm for a short time. Each use of the spell will only provide enough protection for one chasm. +items.spells.featherfall.desc=Ce sort modifie l'effet qu'a la gravité sur le lanceur,lui permettant de tomber de très haut sans se blesser durant un court moment. Chaque utilisation de ce sort ne donne assez de protection que pour une seule chute. items.spells.spell.ac_cast=JETER items.spells.spell.no_magic=Vous ne pouvez pas jeter de sort quand vous êtes immunisé à la magie. @@ -941,16 +941,16 @@ items.spells.spell.no_magic=Vous ne pouvez pas jeter de sort quand vous êtes im items.spells.magicalinfusion.name=infusion magique items.spells.magicalinfusion.inv_title=Enchanter un objet items.spells.magicalinfusion.infuse=Votre %s est empli d'énergie arcanique ! -items.spells.magicalinfusion.desc=This spell 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 not be erased by the upgrade. +items.spells.magicalinfusion.desc=Ce sort insufflera à une arme ou une armure une puissante énergiee magique.\n\nEn plus d'être améliorée,une arme obtiendra un puissant enchantement,et une armure gagnera un glyphe magique.\n\nSi l'objet possède déjà un glyphe ou un enchantement,il ne sera pas effacé par l'amélioration. items.spells.magicalporter.name=poteur magique items.spells.magicalporter.inv_title=Porter un objet items.spells.magicalporter.nowhere=Il n’y a nulle part où transférer un élément. -items.spells.magicalporter.desc=This spell will magically transport any item it is cast on. Unlike a merchant's beacon however, the items will be transported to the entrance of the next boss floor. +items.spells.magicalporter.desc=Ce sort va téléporter un objet sur lequel vous le lancez. Contrairement à la Balise du marchand,cependant,les items seront transportés jusqu'à l'entrée du prochain étage de boss. items.spells.phaseshift.name=déphasage items.spells.phaseshift.tele_fail=Votre sort de téléportation échoue. -items.spells.phaseshift.desc=This chaotic spell will teleport any character it is aimed at to a random location on the current floor. This spell can be directed at a target or at the user themselves. +items.spells.phaseshift.desc=Ce sort chaotique téléportera n'importe quel personnage visé à un endroit aléatoire de l'étage actuel. Il peut être lancé sur une cible ou sur vous même. items.spells.reclaimtrap.name=piège de récupération items.spells.reclaimtrap.no_trap=Il n'y a pas de piège ici. @@ -959,7 +959,7 @@ items.spells.reclaimtrap.desc=Ce sort contient les restes de la capacité de ré items.spells.recycle.name=recycler items.spells.recycle.inv_title=Recycler un objet items.spells.recycle.recycled=Votre objet a été recyclé en : %s. -items.spells.recycle.desc=This spell contains a lesser form of transmutation magic. While it won't work on equipment, this spell will transform a scroll, potion, seed, or runestone into a random item of the same type. +items.spells.recycle.desc=Ce sort possède une forme moins puissante de la magie de transmutation.Si il ne marchera pas sur votre équipement,ce sort pourra transformer un parchemin,une potion,une graine ou une pierre runique en un objet aléatoire du même type. items.spells.targetedspell.prompt=Choisissez une cible items.spells.targetedspell.inv_title=Enchanter un objet @@ -968,7 +968,7 @@ items.spells.targetedspell.inv_title=Enchanter un objet ###runestones items.stones.inventorystone.ac_use=UTILISER -items.stones.runestone$placeholder.name=runestone +items.stones.runestone$placeholder.name=Pierre runique items.stones.stoneofaggression.name=pierre d'agressivité items.stones.stoneofaggression.desc=Quand cette pierre est lancée près d'un ennemi, elle va leur infliger de la magie d'agressivité.\n\nUn ennemi sous l'influence de l'agressivité sera forcé de vous attaquer avant n'importe quel allié, si des alliés sont présents. @@ -985,8 +985,8 @@ items.stones.stoneofaugmentation$wndaugment.defense=Défense items.stones.stoneofaugmentation$wndaugment.none=Retirer l'Augmentation items.stones.stoneofaugmentation$wndaugment.cancel=J'ai changé d'avis -items.stones.stoneofaffection.name=stone of affection -items.stones.stoneofaffection.desc=When this stone is thrown on or next to an enemy they will be temporarily charmed, and will attempt to target your allies instead of you. +items.stones.stoneofaffection.name=Pierre d'affection +items.stones.stoneofaffection.desc=Quand cette pierre est lancée à proximité ou sur un ennemi,il sera temporairement charmé,et préfèrera attaquer vos alliés plutôt que vous. items.stones.stoneofblast.name=pierre d'explosion items.stones.stoneofblast.desc=Cette pierre runique va exploser instantanément à l'endroit où elle a été lancée. Tout comme une bombe, l'explosion endommagera tout ce qui se trouve à sa portée. @@ -1034,7 +1034,7 @@ items.wands.cursedwand.transmogrify=Votre baguette se transforme en un autre obj items.wands.wand.ac_zap=Utiliser items.wands.wand.fizzles=Votre baguette s'interrompt ; elle doit manquer de charges. -items.wands.wand.no_magic=Votre baguette s'interrompt ; vous ne pouvez pas l'utiliser en étant immunisé à la magie. +items.wands.wand.no_magic=Votre baguette grésille; vous ne pouvez pas l'utiliser en étant immunisé à la magie. items.wands.wand.self_target=Vous ne pouvez pas vous cibler ! items.wands.wand.identify=Vous vous êtes familiarisés avec votre %s. items.wands.wand.cursed=Cette baguette est maudite, rendant sa magie chaotique et aléatoire. @@ -1250,7 +1250,7 @@ items.weapon.melee.magesstaff.cursed=Vous ne pouvez pas utiliser une baguette ma items.weapon.melee.magesstaff.warning=Voulez-vous vraiment imprégner votre bâton avec cette baguette magique ? \n\nSi la baguette utilisée pour imprégner le bâton est d'un niveau égal ou supérieur au bâton, ce dernier héritera du niveau de la baguette plus un dû à ses augmentations. \n\nCette imprégnation donnera un bâton de niveau %d. items.weapon.melee.magesstaff.yes=Oui je suis sûr. items.weapon.melee.magesstaff.no=Non, j'ai changé d'avis -items.weapon.melee.magesstaff.desc=Crafted by the Mage himself, this staff is a unique magical weapon. Rather than having innate magical power, this staff is instead imbued with magical energy from a wand. +items.weapon.melee.magesstaff.desc=Créé par le Mage lui même,ce bâton est une arme magique unique. Au lieu d'avoir un pouvoir magique inné,ce bâton sera à la place infusé de l'énergie magique d'une baguette. items.weapon.melee.magesstaff.no_wand=Le bâton n'a pas de magie en lui. Il doit être _infusé par le pouvoir d'une baguette_ avant de pouvoir lancer des sorts. items.weapon.melee.magesstaff.has_wand=Le bâton est imprégné avec _%s._ diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_ru.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_ru.properties index 52ea644b..595cf824 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_ru.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/items/items_ru.properties @@ -897,7 +897,7 @@ items.scrolls.exotic.scrollofpassage.desc=Заклинание в этом ма items.scrolls.exotic.scrollofpetrification.name=свиток окаменения items.scrolls.exotic.scrollofpetrification.desc=Вспышка красного света наполнит разумы всех существ в поле зрения таким сильным ужасом, что они просто застынут на месте. -items.scrolls.exotic.scrollofpolymorph.name=свиток превращения +items.scrolls.exotic.scrollofpolymorph.name=свиток полиморфа items.scrolls.exotic.scrollofpolymorph.desc=Этот свиток содержит мощную магию трансформации. При её задействовании все видимые противники превратятся в волшебных овец!\n\nЗаклинание необратимо, так что предметы в инвентарях пострадавших будут потеряны. Кроме того, боссы способны устоять перед данным эффектом. items.scrolls.exotic.scrollofprismaticimage.name=свиток радужного стража @@ -914,7 +914,7 @@ items.spells.alchemize.name=Трансмутация items.spells.alchemize.enemy_near=Ты не можешь делать это когда рядом есть враги. items.spells.alchemize.desc=Это заклинание позволяет вам превращать предметы так, как будто вы находитесь рядом с разряженным алхимическим котлом. -items.spells.aquablast.name=Водяной хлыст +items.spells.aquablast.name=Водяной шар items.spells.aquablast.desc=Это заклинание отправит водяной снаряд в указанное место. Это не нанесёт никакого урона (даже огненным элементалям), но может залить водой близлежащие клетки и ненадолго оглушить того, в кого попадёт. items.spells.beaconofreturning.name=Маяк возвращения @@ -933,7 +933,7 @@ items.spells.curseinfusion.desc=Это заклинание наделит ча items.spells.featherfall.name=Антигравитация items.spells.featherfall.light=Вы чувствуете себя легким, как пёрышко! -items.spells.featherfall.desc=Это заклинание манипулирует гравитацией использующего, позволяя ему пролетать большие расстояния без ушерба на короткий срок. Каждое использование даёт достаточно защиты только для одной пропасти. +items.spells.featherfall.desc=Это заклинание дарует частичный контроль над гравитацией, позволяя падать в пропасти без риска для здоровья. Времени действия заклинания хватает только на одно применение. items.spells.spell.ac_cast=ПРИМЕНИТЬ items.spells.spell.no_magic=Вы не можете использовать заклинания под действием антимагии. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal_ca.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal_ca.properties index 9d531515..5148a2ca 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal_ca.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/journal/journal_ca.properties @@ -24,7 +24,7 @@ journal.document.alchemy_guide.title=Guia d'alquímia journal.document.alchemy_guide.potions.title=Crear pocions journal.document.alchemy_guide.potions.body=Benvingut a les aplicacions pràctiques de l'alquímia!\n\nAquest llibre serveix com a referència de les receptes pels alquimistes aficionats o aventurers que busquen embrutir-se les mans.\n\nComençarem amb la recepta alquímica més emblemàtica: col·loca tres llavors en una olla d'alquímia per preparar una poció aleatòria!\n\nCada tipus de llavor serveix de contrapart a la poció, i la poció que creïs es pot relacionar amb una de les llavors utilitzades. L'ús de múltiples llavors del mateix tipus augmentarà la probabilitat de què això passi. journal.document.alchemy_guide.stones.title=Crear pedres rúniques -journal.document.alchemy_guide.stones.body=Ficar un pergamí dins d'un pot d'alquímia imbuirà la seva màgia a dues o tres pedres dins del pot. Això crea pedres rúniques! +journal.document.alchemy_guide.stones.body=Ficar un pergamí dins d'una olla d'alquímia imbuirà la seva màgia a dues o tres pedres dins del pot. Això crea pedres rúniques! journal.document.alchemy_guide.darts.title=Afegir puntes als dards journal.document.alchemy_guide.darts.body=Una llavor es pot combinar amb un o dos dards per afegir-los-hi puntes. Cada tipus de llavor produeix el seu propi tipus de dard amb punta, amb un efecte únic d'un sol ús. journal.document.alchemy_guide.exotic_potions.title=Pocions exòtiques @@ -32,7 +32,7 @@ journal.document.alchemy_guide.exotic_potions.body=Les pocions es poden augmenta journal.document.alchemy_guide.exotic_scrolls.title=Pergamins exòtics journal.document.alchemy_guide.exotic_scrolls.body=Els pergamins exòtics també es poden fer amb dues pedres rúniques i un pergamí. Són una mica més fortes que les pocions exòtiques, però les pedres també són més difícils d'aconseguir. journal.document.alchemy_guide.energy_food.title=Energia i menjar -journal.document.alchemy_guide.energy_food.body=Algunes receptes requereixen energia del mateix pot d'alquímia. L'energia s'utilitza en les receptes per produir més de la suma dels seus ingredients.\n\nNo totes les receptes amb energia són especialment místiques però. Aquestes receptes s'assemblen més a la cuina tradicional que a l'alquímia. +journal.document.alchemy_guide.energy_food.body=Algunes receptes requereixen energia de la mateixa olla d'alquímia. L'energia s'utilitza en les receptes per produir més de la suma dels seus ingredients.\n\nNo totes les receptes amb energia són especialment místiques però. Aquestes receptes s'assemblen més a la cuina tradicional que a l'alquímia. journal.document.alchemy_guide.bombs.title=Bombes millorades journal.document.alchemy_guide.bombs.body=Una bomba de pólvora negre normal i corrent es pot barrejar amb un ítem específic per crear una bomba millorada. journal.document.alchemy_guide.brews.title=Beuratges @@ -45,7 +45,7 @@ journal.document.alchemy_guide.spells.body=Els encanteris estan elaborats amb re journal.notes$landmark.well_of_health=pou de salut journal.notes$landmark.well_of_awareness=pou de coneixement journal.notes$landmark.well_of_transmutation=pou de transmutació -journal.notes$landmark.alchemy=pot d'alquímia +journal.notes$landmark.alchemy=olla d'alquímia journal.notes$landmark.garden=jardí journal.notes$landmark.statue=estatua animada journal.notes$landmark.ghost=fantasma trist diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels_ca.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels_ca.properties index 4822cd0b..e54fddc1 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels_ca.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels_ca.properties @@ -172,7 +172,7 @@ levels.level.empty_well_name=Pou buit levels.level.statue_name=Estatua levels.level.inactive_trap_name=Trampa activada levels.level.bookshelf_name=Prestatgeria -levels.level.alchemy_name=Pot d'alquímia +levels.level.alchemy_name=Olla d'alquímia levels.level.default_name=??? levels.level.chasm_desc=No pots veure el fons. levels.level.water_desc=Si t'estàs cremant fica't a l'aigua per extingir el foc. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/plants/plants_eu.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/plants/plants_eu.properties index 70cc76f9..b3f5d122 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/plants/plants_eu.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/plants/plants_eu.properties @@ -2,9 +2,9 @@ plants.blandfruitbush.name=Fruitutxepela plants.blandfruitbush.desc=Baiaustelaren familia urruna, fruitutxepel zuhaixkaren madari formako uztak hauts zaporea du. Fruitua nazkagarria eta elikagai gutxikoa da baina ez da pozoitsua. Agian prestatu egin daiteke. plants.blandfruitbush$seed.name=fruitutxepel hazia -plants.blindweed.name=Belaritsua -plants.blindweed.desc=Ukitzen zaionean belaritsuak argi distira bizi batean zentzen da. Distira hainbat segundoz orientazioa galtzea eragiteko bezain indartsua da. -plants.blindweed$seed.name=beraitsu hazia +plants.blindweed.name=Itsubelarra +plants.blindweed.desc=Ukitzen zaionean itsubelarrak argi distira bizi batean zentzen da. Distira hainbat segundoz orientazioa galtzea eragiteko bezain indartsua da. +plants.blindweed$seed.name=itsubelar hazia plants.dreamfoil.name=Ametshostoa plants.dreamfoil.refreshed=Freskatuta nabaritzen zara. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/scenes/scenes_eu.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/scenes/scenes_eu.properties index 0da69040..40475ae7 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/scenes/scenes_eu.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/scenes/scenes_eu.properties @@ -2,7 +2,7 @@ scenes.alchemyscene.title=Alkimia scenes.alchemyscene.text=Nahastu osagaiak zerbait berria sortzeko! -scenes.alchemyscene.select=Aukeratu objektu bat +scenes.alchemyscene.select=Aukeratu objektua scenes.alchemyscene.cost=Energia: %d scenes.alchemyscene.energy=Energia alkimikoa: %d diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_cs.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_cs.properties index 0551abb3..18ca298c 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_cs.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_cs.properties @@ -128,7 +128,7 @@ windows.wndsettings$audiotab.music_mute=Ztlumit hudbu windows.wndsettings$audiotab.sfx_vol=Hlasitost zvuků windows.wndsettings$audiotab.sfx_mute=Ztlumit zvuky -windows.wndstartgame.title=Vyber svého hrdinu +windows.wndstartgame.title=Vyber si svého hrdinu windows.wndstartgame.huntress_unlock=Poraz bosse na 15. podlaží k odemčení této postavy windows.wndstartgame.start=Začít hru diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_eu.properties b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_eu.properties index 7d75eb8b..f799fccc 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_eu.properties +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows_eu.properties @@ -139,11 +139,11 @@ windows.wndstory.city=Ipotxen metropolia ipotxen hiri-estatu handienetako bat ze windows.wndstory.halls=Iraganean pisu hauek Metropoliaren kanpoaldea osatzen zuten. Gerraren garaipen garestiaren ondoren jainko ipotx zaharrak ahulegi zeuden geratzen ziren deabruak garbitzeko. Apurka deabruak tokia bere egin dute eta orain deabruen aretoa deitzen da.\n\nOso abenturazale gutxi heldu dira hain urrun... windows.wndtradeitem.sale=SALGAI: %1$s - %2$d txanpon -windows.wndtradeitem.buy=Erori %d txanponengatik +windows.wndtradeitem.buy=Erori %d txanponen truk windows.wndtradeitem.steal=Lapurtu %d%% aukerekin -windows.wndtradeitem.sell=Saldu %d txanponengatik -windows.wndtradeitem.sell_1=Saldu 1 %d txanponengatik -windows.wndtradeitem.sell_all=Saldu guztiak %d txanponengatik +windows.wndtradeitem.sell=Saldu %d txanponen truk +windows.wndtradeitem.sell_1=Saldu 1 %d txanponen truk +windows.wndtradeitem.sell_all=Saldu denak %d txanponen truk windows.wndtradeitem.cancel=Ez du axola windows.wndwandmaker.dust=Hara, hautsa daukazula ikusten dut! Ez larritu mamuekin, arduratu naiteke. Agindu bezala, nire kalitate oneneko zartetako bat aukeratu dezakezu. diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java index 3bc514d7..95696166 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java @@ -148,10 +148,42 @@ public void onClick(float x, float y) { changes.hardlight( Window.TITLE_COLOR ); infos.add(changes); - changes = new ChangeInfo("", false, null); + changes = new ChangeInfo("v0.7.0b & v0.7.0c", false, null); changes.hardlight( Window.TITLE_COLOR ); infos.add(changes); + changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.POUCH, null), "Seed & stone droprate changes", + "With all the new items added in 0.7.0, people's inventories have started getting a bit clogged. I've decided to reign in some of the most frequently dropped items slightly, to reduced the inventory management burden. In particular, this should make the velvet pouch a bit less necessary in the earlygame.\n\n" + + "_-_ Seed droprates reduced by 20%. Footwear of nature seed boost increased slightly to compensate.\n\n" + + "_-_ Potion and Runestone droprates from special rooms reduced. Resulting in ~5% fewer potions and ~15% fewer stones overall.")); + + changes.addButton( new ChangeButton(Icons.get(Icons.PREFS), Messages.get(this, "misc"), + "_-_ Overhauled core logic for payment-handling in Google Play version. Should result in improvements to speed, reliability, and security.\n\n" + + "_-_ Overhauled core logic for google play games in Google Play version. Most notably, Google+ account information is no longer required (it was previously unused, but had to be requested).\n\n" + + "_-_ Improved the layering system for raised terrain like grass. This solves a few visual bugs immediately, but also allows for functionality like characters being inside of grass.\n\n" + + "_-_ Adjusted bone pile functionality to make it more clear that a spawning wraith means an item is cursed. Also fixed an exploit where items could be thrown into bone piles to check if they were cursed.")); + + changes.addButton( new ChangeButton(new Image(Assets.SPINNER, 144, 0, 16, 16), Messages.get(this, "bugfixes"), + "v0.7.0b:\n" + + "Fixed (Caused by v0.7.0):\n" + + "_-_ Exotic items not being identified in rankings (will not fix old rankings)\n" + + "_-_ Toolkit rarely being able to go above 100% charge\n" + + "_-_ Elixir of restoration doing nothing when thrown\n\n" + + "Fixed (Existed before v0.7.0):\n" + + "_-_ Bolas incorrectly requiring 15 strength\n" + + "_-_ Non-heroes being able to use reach weapons through walls\n" + + "_-_ Antimagic glyph applying to more effects when used by the sad ghost\n" + + "_-_ Some items not being known as uncursed when sold from shops\n\n" + + "v0.7.0c:\n" + + "Fixed (Caused by v0.7.0):\n" + + "_-_ Non-heroes not using reach weapons properly\n\n" + + "Fixed (Existed before v0.7.0):\n" + + "_-_ Obfuscation glyph not improving every upgrade\n" + + "_-_ Magical sleep rarely cancelling paralysis")); + + changes.addButton( new ChangeButton(Icons.get(Icons.LANGS), Messages.get(this, "language"), + "Updated Translations")); + changes = new ChangeInfo("v0.7.0a", false, null); changes.hardlight( Window.TITLE_COLOR ); infos.add(changes); diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index 833e084a..0db1d5d5 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -62,6 +62,7 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonWallsTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.FogOfWar; import com.shatteredpixel.shatteredpixeldungeon.tiles.GridTileMap; +import com.shatteredpixel.shatteredpixeldungeon.tiles.RaisedTerrainTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.TerrainFeaturesTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.WallBlockingTilemap; import com.shatteredpixel.shatteredpixeldungeon.ui.ActionIndicator; @@ -119,6 +120,7 @@ public class GameScene extends PixelScene { private DungeonTerrainTilemap tiles; private GridTileMap visualGrid; private TerrainFeaturesTilemap terrainFeatures; + private RaisedTerrainTilemap raisedTerrain; private DungeonWallsTilemap walls; private WallBlockingTilemap wallBlocking; private FogOfWar fog; @@ -242,6 +244,9 @@ public void draw() { mob.beckon( Dungeon.hero.pos ); } } + + raisedTerrain = new RaisedTerrainTilemap(); + add( raisedTerrain ); walls = new DungeonWallsTilemap(); add(walls); @@ -772,6 +777,7 @@ public static void resetMap() { scene.tiles.map(Dungeon.level.map, Dungeon.level.width() ); scene.visualGrid.map(Dungeon.level.map, Dungeon.level.width() ); scene.terrainFeatures.map(Dungeon.level.map, Dungeon.level.width() ); + scene.raisedTerrain.map(Dungeon.level.map, Dungeon.level.width() ); scene.walls.map(Dungeon.level.map, Dungeon.level.width() ); } updateFog(); @@ -783,6 +789,7 @@ public static void updateMap() { scene.tiles.updateMap(); scene.visualGrid.updateMap(); scene.terrainFeatures.updateMap(); + scene.raisedTerrain.updateMap(); scene.walls.updateMap(); updateFog(); } @@ -793,6 +800,7 @@ public static void updateMap( int cell ) { scene.tiles.updateMapCell( cell ); scene.visualGrid.updateMapCell( cell ); scene.terrainFeatures.updateMapCell( cell ); + scene.raisedTerrain.updateMapCell( cell ); scene.walls.updateMapCell( cell ); //update adjacent cells too updateFog( cell, 1 ); diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java index d76bef4b..65787075 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonTileSheet.java @@ -323,7 +323,7 @@ public static int stitchWallOverhangTile(int tile, int rightBelow, int below, in public static final int DOOR_SIDEWAYS_LOCKED = WALL_OVERHANG+24; public static final int STATUE_OVERHANG = WALL_OVERHANG+26; - public static final int ALCHEMY_POT_OVERHAND = WALL_OVERHANG+27; + public static final int ALCHEMY_POT_OVERHANG = WALL_OVERHANG+27; public static final int BARRICADE_OVERHANG = WALL_OVERHANG+28; public static final int HIGH_GRASS_OVERHANG = WALL_OVERHANG+29; diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java index 02eb06cc..fb1e796c 100644 --- a/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/DungeonWallsTilemap.java @@ -75,7 +75,7 @@ protected int getTileVisual(int pos, int tile, boolean flat){ } else if (pos + mapWidth < size && (map[pos+mapWidth] == Terrain.STATUE || map[pos+mapWidth] == Terrain.STATUE_SP)){ return DungeonTileSheet.STATUE_OVERHANG; } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.ALCHEMY){ - return DungeonTileSheet.ALCHEMY_POT_OVERHAND; + return DungeonTileSheet.ALCHEMY_POT_OVERHANG; } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.BARRICADE){ return DungeonTileSheet.BARRICADE_OVERHANG; } else if (pos + mapWidth < size && map[pos+mapWidth] == Terrain.HIGH_GRASS){ diff --git a/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java b/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java new file mode 100644 index 00000000..2fb65ded --- /dev/null +++ b/core/src/com/shatteredpixel/shatteredpixeldungeon/tiles/RaisedTerrainTilemap.java @@ -0,0 +1,52 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2018 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.tiles; + +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; + +public class RaisedTerrainTilemap extends DungeonTilemap { + + public RaisedTerrainTilemap() { + super(Dungeon.level.tilesTex()); + map( Dungeon.level.map, Dungeon.level.width() ); + } + + @Override + protected int getTileVisual(int pos, int tile, boolean flat) { + + if (flat) return -1; + + if (tile == Terrain.HIGH_GRASS){ + return DungeonTileSheet.getVisualWithAlts( + DungeonTileSheet.RAISED_HIGH_GRASS, + pos) + 1; + } + + return -1; + } + + @Override + protected boolean needsRender(int pos) { + return data[pos] != -1; + } +} diff --git a/desktop/VersionInfo.txt b/desktop/VersionInfo.txt index 73482c27..0b23f1fa 100644 --- a/desktop/VersionInfo.txt +++ b/desktop/VersionInfo.txt @@ -1,5 +1,5 @@ -305 +311 303 -v0.7.0a +v0.7.0c v0.7.0! -github.com/00-Evan/shattered-pixel-dungeon-gdx/releases/download/v0.7.0a/ShatteredPD.Desktop.v0.7.0a.jar \ No newline at end of file +github.com/00-Evan/shattered-pixel-dungeon-gdx/releases/download/v0.7.0c/ShatteredPD.Desktop.v0.7.0c.jar \ No newline at end of file diff --git a/desktop/src/com/watabou/pd/desktop/DesktopLauncher.java b/desktop/src/com/watabou/pd/desktop/DesktopLauncher.java index 10b098a8..19ebc66f 100644 --- a/desktop/src/com/watabou/pd/desktop/DesktopLauncher.java +++ b/desktop/src/com/watabou/pd/desktop/DesktopLauncher.java @@ -34,14 +34,14 @@ public class DesktopLauncher { public static void main (String[] arg) { String version = DesktopLauncher.class.getPackage().getSpecificationVersion(); if (version == null) { - version = "0.7.0a"; + version = "0.7.0c"; } int versionCode; try { versionCode = Integer.parseInt(DesktopLauncher.class.getPackage().getImplementationVersion()); } catch (NumberFormatException e) { - versionCode = 305; + versionCode = 311; } LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();