v2.4.0: aqua blast and feather fall are now a brew and elixir
This commit is contained in:
@@ -729,12 +729,15 @@ items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized gla
|
|||||||
|
|
||||||
|
|
||||||
###brews
|
###brews
|
||||||
items.potions.brews.causticbrew.name=caustic brew
|
items.potions.brews.aquabrew.name=aqua brew
|
||||||
items.potions.brews.causticbrew.desc=This brew will spread corrosive ooze in a wide area around the location it shatters in. Anything caught by the ooze will slowly melt if it can't wash it off in water.
|
items.potions.brews.aquabrew.desc=When shattered, this brew will release a burst of pressurized water at its location. It's only forceful enough to damage fiery enemies, but it also spreads water to nearby terrain, douses fires, and knocks back characters near the burst.
|
||||||
|
|
||||||
items.potions.brews.blizzardbrew.name=blizzard brew
|
items.potions.brews.blizzardbrew.name=blizzard brew
|
||||||
items.potions.brews.blizzardbrew.desc=When shattered, this brew will unleash a swirling blizzard which quickly spreads like a gas.
|
items.potions.brews.blizzardbrew.desc=When shattered, this brew will unleash a swirling blizzard which quickly spreads like a gas.
|
||||||
|
|
||||||
|
items.potions.brews.causticbrew.name=caustic brew
|
||||||
|
items.potions.brews.causticbrew.desc=This brew will spread corrosive ooze in a wide area around the location it shatters in. Anything caught by the ooze will slowly melt if it can't wash it off in water.
|
||||||
|
|
||||||
items.potions.brews.infernalbrew.name=infernal brew
|
items.potions.brews.infernalbrew.name=infernal brew
|
||||||
items.potions.brews.infernalbrew.desc=When shattered, this brew will unleash a raging inferno which quickly spreads like a gas.
|
items.potions.brews.infernalbrew.desc=When shattered, this brew will unleash a raging inferno which quickly spreads like a gas.
|
||||||
|
|
||||||
@@ -755,6 +758,12 @@ items.potions.elixirs.elixirofaquaticrejuvenation$aquahealing.desc=You have temp
|
|||||||
items.potions.elixirs.elixirofdragonsblood.name=elixir of dragon's blood
|
items.potions.elixirs.elixirofdragonsblood.name=elixir of dragon's blood
|
||||||
items.potions.elixirs.elixirofdragonsblood.desc=When consumed, this elixir will send fiery power coursing through the drinker's veins. This effect will make the drinker immune to fire, and allow them to set enemies aflame with physical attacks.
|
items.potions.elixirs.elixirofdragonsblood.desc=When consumed, this elixir will send fiery power coursing through the drinker's veins. This effect will make the drinker immune to fire, and allow them to set enemies aflame with physical attacks.
|
||||||
|
|
||||||
|
items.potions.elixirs.elixiroffeatherfall.name=elixir of feather fall
|
||||||
|
items.potions.elixirs.elixiroffeatherfall.light=You feel light as a feather!
|
||||||
|
items.potions.elixirs.elixiroffeatherfall.desc=This elixir offers a weaker but more controlled levitation effect, allowing the drinker to fall great distances without harm for a short time. Each use of the elixir will only provide enough protection for one chasm.
|
||||||
|
items.potions.elixirs.elixiroffeatherfall$featherbuff.name=feather fall
|
||||||
|
items.potions.elixirs.elixiroffeatherfall$featherbuff.desc=You are under the effects of a feather fall elixir, allowing you to fall into a chasm without taking damage! This effect will expire when it is used, or after a bit of time passes.\n\nTurns remaining: %s.
|
||||||
|
|
||||||
items.potions.elixirs.elixirofhoneyedhealing.name=elixir of honeyed healing
|
items.potions.elixirs.elixirofhoneyedhealing.name=elixir of honeyed healing
|
||||||
items.potions.elixirs.elixirofhoneyedhealing.desc=This elixir combines healing with the sweetness of honey. When drank, it will satisfy a small amount of hunger, but it can also be thrown to heal an ally.\n\nCreatures with an affinity for honey might be pacified if this item is used on them.
|
items.potions.elixirs.elixirofhoneyedhealing.desc=This elixir combines healing with the sweetness of honey. When drank, it will satisfy a small amount of hunger, but it can also be thrown to heal an ally.\n\nCreatures with an affinity for honey might be pacified if this item is used on them.
|
||||||
|
|
||||||
@@ -1157,9 +1166,6 @@ items.spells.alchemize$wndalchemizeitem.energize=Turn into %d energy
|
|||||||
items.spells.alchemize$wndalchemizeitem.energize_1=Turn 1 into %d energy
|
items.spells.alchemize$wndalchemizeitem.energize_1=Turn 1 into %d energy
|
||||||
items.spells.alchemize$wndalchemizeitem.energize_all=Turn all into %d energy
|
items.spells.alchemize$wndalchemizeitem.energize_all=Turn all into %d energy
|
||||||
|
|
||||||
items.spells.aquablast.name=aqua blast
|
|
||||||
items.spells.aquablast.desc=This spell will create a burst of water at the target location. It's only forceful enough to damage fiery enemies, but it also spreads water to nearby terrain, douses fires, and knocks back characters near the burst.
|
|
||||||
|
|
||||||
items.spells.arcanecatalyst.name=arcane catalyst
|
items.spells.arcanecatalyst.name=arcane catalyst
|
||||||
items.spells.arcanecatalyst.desc=This ball of golden dust is made from the deconstructed essence of a scroll. It glimmers in the darkness of the dungeon.\n\nThis catalyst is primarily useful as an alchemy ingredient, but you can also channel the magic directly to get the effect of a random scroll.
|
items.spells.arcanecatalyst.desc=This ball of golden dust is made from the deconstructed essence of a scroll. It glimmers in the darkness of the dungeon.\n\nThis catalyst is primarily useful as an alchemy ingredient, but you can also channel the magic directly to get the effect of a random scroll.
|
||||||
|
|
||||||
@@ -1177,12 +1183,6 @@ items.spells.curseinfusion.name=curse infusion
|
|||||||
items.spells.curseinfusion.inv_title=Curse an item
|
items.spells.curseinfusion.inv_title=Curse an item
|
||||||
items.spells.curseinfusion.desc=This spell infuses a piece of equipment with the same powerful 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.\n\nIn the case of weapons, armor, and wands, the item will gain upgrades in addition to being cursed. Curse infusion upgrades do not stack, and the upgrades are lost if the item becomes uncursed.\n\nMultiple curse infusions can also be used to change the curse on a weapon or armor.
|
items.spells.curseinfusion.desc=This spell infuses a piece of equipment with the same powerful 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.\n\nIn the case of weapons, armor, and wands, the item will gain upgrades in addition to being cursed. Curse infusion upgrades do not stack, and the upgrades are lost if the item becomes uncursed.\n\nMultiple curse infusions can also be used to change the curse on a weapon or armor.
|
||||||
|
|
||||||
items.spells.featherfall.name=feather fall
|
|
||||||
items.spells.featherfall.light=You feel light as a feather!
|
|
||||||
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$featherbuff.name=feather fall
|
|
||||||
items.spells.featherfall$featherbuff.desc=You are under the effects of a feather fall spell, allowing you to fall into a chasm without taking damage! This effect will expire when it is used, or after a bit of time passes.\n\nTurns remaining: %s.
|
|
||||||
|
|
||||||
items.spells.spell.ac_cast=CAST
|
items.spells.spell.ac_cast=CAST
|
||||||
items.spells.spell.no_magic=You can't cast spells while magic immune.
|
items.spells.spell.no_magic=You can't cast spells while magic immune.
|
||||||
|
|
||||||
|
|||||||
@@ -44,9 +44,9 @@ journal.document.alchemy_guide.weapons.body=Some of the lighter or more magical
|
|||||||
journal.document.alchemy_guide.catalysts.title=Catalysts
|
journal.document.alchemy_guide.catalysts.title=Catalysts
|
||||||
journal.document.alchemy_guide.catalysts.body=Catalysts are made by combining a scroll or potion with a single seed or runestone. If the pair of items match, the alchemical energy cost is removed.\n\nCatalysts are most useful as components in recipes covered in the next two pages, but also can be used in a pinch for a random effect.
|
journal.document.alchemy_guide.catalysts.body=Catalysts are made by combining a scroll or potion with a single seed or runestone. If the pair of items match, the alchemical energy cost is removed.\n\nCatalysts are most useful as components in recipes covered in the next two pages, but also can be used in a pinch for a random effect.
|
||||||
journal.document.alchemy_guide.brews_elixirs.title=Brews and Elixirs
|
journal.document.alchemy_guide.brews_elixirs.title=Brews and Elixirs
|
||||||
journal.document.alchemy_guide.brews_elixirs.body=Brews and elixirs are advanced potions which provide a variety of effects with a single use.
|
journal.document.alchemy_guide.brews_elixirs.body=Brews and elixirs are advanced potions which provide a variety of effects, and usually have a single use.
|
||||||
journal.document.alchemy_guide.spells.title=Spells
|
journal.document.alchemy_guide.spells.title=Spells
|
||||||
journal.document.alchemy_guide.spells.body=Spells are contained in crystals and provide a variety of effects with multiple uses.
|
journal.document.alchemy_guide.spells.body=Spells are contained in crystals and provide a variety of effects, usually with multiple uses.
|
||||||
|
|
||||||
journal.document.intros.title=Region Introductions
|
journal.document.intros.title=Region Introductions
|
||||||
journal.document.intros.dungeon.title=Dungeon
|
journal.document.intros.dungeon.title=Dungeon
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@@ -47,6 +47,17 @@ public class ShatteredPixelDungeon extends Game {
|
|||||||
public ShatteredPixelDungeon( PlatformSupport platform ) {
|
public ShatteredPixelDungeon( PlatformSupport platform ) {
|
||||||
super( sceneClass == null ? WelcomeScene.class : sceneClass, platform );
|
super( sceneClass == null ? WelcomeScene.class : sceneClass, platform );
|
||||||
|
|
||||||
|
//pre-v2.4.0
|
||||||
|
com.watabou.utils.Bundle.addAlias(
|
||||||
|
com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall.class,
|
||||||
|
"com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall" );
|
||||||
|
com.watabou.utils.Bundle.addAlias(
|
||||||
|
com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall.FeatherBuff.class,
|
||||||
|
"com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall$FeatherBuff" );
|
||||||
|
com.watabou.utils.Bundle.addAlias(
|
||||||
|
com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew.class,
|
||||||
|
"com.shatteredpixel.shatteredpixeldungeon.items.spells.AquaBlast" );
|
||||||
|
|
||||||
//pre-v2.3.0
|
//pre-v2.3.0
|
||||||
com.watabou.utils.Bundle.addAlias(
|
com.watabou.utils.Bundle.addAlias(
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb.ConjuredBomb.class,
|
com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb.ConjuredBomb.class,
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat;
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
|
||||||
@@ -35,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight;
|
||||||
@@ -43,11 +45,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotio
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.AquaBlast;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.PhaseShift;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.PhaseShift;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap;
|
||||||
@@ -176,15 +176,15 @@ public abstract class Recipe {
|
|||||||
new ArcaneResin.Recipe(),
|
new ArcaneResin.Recipe(),
|
||||||
new BlizzardBrew.Recipe(),
|
new BlizzardBrew.Recipe(),
|
||||||
new InfernalBrew.Recipe(),
|
new InfernalBrew.Recipe(),
|
||||||
|
new AquaBrew.Recipe(),
|
||||||
new ShockingBrew.Recipe(),
|
new ShockingBrew.Recipe(),
|
||||||
new ElixirOfDragonsBlood.Recipe(),
|
new ElixirOfDragonsBlood.Recipe(),
|
||||||
new ElixirOfIcyTouch.Recipe(),
|
new ElixirOfIcyTouch.Recipe(),
|
||||||
new ElixirOfToxicEssence.Recipe(),
|
new ElixirOfToxicEssence.Recipe(),
|
||||||
new ElixirOfMight.Recipe(),
|
new ElixirOfMight.Recipe(),
|
||||||
|
new ElixirOfFeatherFall.Recipe(),
|
||||||
new MagicalInfusion.Recipe(),
|
new MagicalInfusion.Recipe(),
|
||||||
new AquaBlast.Recipe(),
|
|
||||||
new BeaconOfReturning.Recipe(),
|
new BeaconOfReturning.Recipe(),
|
||||||
new FeatherFall.Recipe(),
|
|
||||||
new PhaseShift.Recipe(),
|
new PhaseShift.Recipe(),
|
||||||
new Recycle.Recipe(),
|
new Recycle.Recipe(),
|
||||||
new TelekineticGrab.Recipe(),
|
new TelekineticGrab.Recipe(),
|
||||||
|
|||||||
@@ -156,7 +156,12 @@ public class Bag extends Item implements Iterable<Item> {
|
|||||||
|
|
||||||
loading = true;
|
loading = true;
|
||||||
for (Bundlable item : bundle.getCollection( ITEMS )) {
|
for (Bundlable item : bundle.getCollection( ITEMS )) {
|
||||||
if (item != null) ((Item)item).collect( this );
|
if (item != null){
|
||||||
|
if (!((Item)item).collect( this )){
|
||||||
|
//force-add the item if necessary, such as if its item category changed after an update
|
||||||
|
items.add((Item) item);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
loading = false;
|
loading = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,34 +19,33 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.spells;
|
package com.shatteredpixel.shatteredpixeldungeon.items.potions.brews;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfStormClouds;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfStormClouds;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GeyserTrap;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GeyserTrap;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
|
||||||
public class AquaBlast extends TargetedSpell {
|
public class AquaBrew extends Brew {
|
||||||
|
|
||||||
{
|
|
||||||
image = ItemSpriteSheet.AQUA_BLAST;
|
|
||||||
usesTargeting = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void affectTarget(Ballistica bolt, Hero hero) {
|
|
||||||
int cell = bolt.collisionPos;
|
|
||||||
|
|
||||||
|
{
|
||||||
|
image = ItemSpriteSheet.BREW_AQUA;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void shatter(int cell) {
|
||||||
GeyserTrap geyser = new GeyserTrap();
|
GeyserTrap geyser = new GeyserTrap();
|
||||||
geyser.pos = cell;
|
geyser.pos = cell;
|
||||||
geyser.source = this;
|
geyser.source = this;
|
||||||
if (bolt.path.size() > bolt.dist+1) {
|
|
||||||
geyser.centerKnockBackDirection = bolt.path.get(bolt.dist + 1);
|
int userPos = curUser.pos;
|
||||||
|
Ballistica aim = new Ballistica(userPos, cell, Ballistica.STOP_TARGET);
|
||||||
|
if (aim.path.size() > aim.dist+1) {
|
||||||
|
geyser.centerKnockBackDirection = aim.path.get(aim.dist + 1);
|
||||||
}
|
}
|
||||||
geyser.activate();
|
geyser.activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int value() {
|
public int value() {
|
||||||
return (int)(60 * (quantity/8f));
|
return (int)(60 * (quantity/8f));
|
||||||
@@ -56,18 +55,19 @@ public class AquaBlast extends TargetedSpell {
|
|||||||
public int energyVal() {
|
public int energyVal() {
|
||||||
return (int)(12 * (quantity/8f));
|
return (int)(12 * (quantity/8f));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
|
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
|
||||||
|
|
||||||
{
|
{
|
||||||
inputs = new Class[]{PotionOfStormClouds.class};
|
inputs = new Class[]{PotionOfStormClouds.class};
|
||||||
inQuantity = new int[]{1};
|
inQuantity = new int[]{1};
|
||||||
|
|
||||||
cost = 11;
|
cost = 11;
|
||||||
|
|
||||||
output = AquaBlast.class;
|
output = AquaBrew.class;
|
||||||
outQuantity = 8;
|
outQuantity = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -19,12 +19,10 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.spells;
|
package com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation;
|
||||||
@@ -33,36 +31,28 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.watabou.noosa.Image;
|
import com.watabou.noosa.Image;
|
||||||
import com.watabou.noosa.audio.Sample;
|
|
||||||
|
|
||||||
public class FeatherFall extends Spell {
|
public class ElixirOfFeatherFall extends Elixir {
|
||||||
|
|
||||||
{
|
{
|
||||||
image = ItemSpriteSheet.FEATHER_FALL;
|
image = ItemSpriteSheet.ELIXIR_FEATHER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCast(Hero hero) {
|
public void apply(Hero hero) {
|
||||||
Buff.append(hero, FeatherBuff.class, FeatherBuff.DURATION);
|
Buff.append(hero, FeatherBuff.class, FeatherBuff.DURATION);
|
||||||
hero.sprite.operate(hero.pos);
|
|
||||||
Sample.INSTANCE.play(Assets.Sounds.READ );
|
hero.sprite.emitter().burst(Speck.factory(Speck.JET), 20);
|
||||||
hero.sprite.emitter().burst( Speck.factory( Speck.JET ), 20);
|
|
||||||
|
|
||||||
GLog.p(Messages.get(this, "light"));
|
GLog.p(Messages.get(this, "light"));
|
||||||
|
|
||||||
detach( curUser.belongings.backpack );
|
|
||||||
updateQuickslot();
|
|
||||||
Invisibility.dispel();
|
|
||||||
hero.spendAndNext( 1f );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class FeatherBuff extends FlavourBuff {
|
public static class FeatherBuff extends FlavourBuff {
|
||||||
//does nothing, just waits to be triggered by chasm falling
|
//does nothing, just waits to be triggered by chasm falling
|
||||||
{
|
{
|
||||||
type = buffType.POSITIVE;
|
type = buffType.POSITIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final float DURATION = 30f;
|
public static final float DURATION = 50f;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int icon() {
|
public int icon() {
|
||||||
@@ -79,7 +69,7 @@ public class FeatherFall extends Spell {
|
|||||||
return Math.max(0, (DURATION - visualcooldown()) / DURATION);
|
return Math.max(0, (DURATION - visualcooldown()) / DURATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int value() {
|
public int value() {
|
||||||
return (int)(60 * (quantity/2f));
|
return (int)(60 * (quantity/2f));
|
||||||
@@ -89,18 +79,19 @@ public class FeatherFall extends Spell {
|
|||||||
public int energyVal() {
|
public int energyVal() {
|
||||||
return (int)(12 * (quantity/2f));
|
return (int)(12 * (quantity/2f));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
|
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe.SimpleRecipe {
|
||||||
|
|
||||||
{
|
{
|
||||||
inputs = new Class[]{PotionOfLevitation.class};
|
inputs = new Class[]{PotionOfLevitation.class};
|
||||||
inQuantity = new int[]{1};
|
inQuantity = new int[]{1};
|
||||||
|
|
||||||
cost = 17;
|
cost = 17;
|
||||||
|
|
||||||
output = FeatherFall.class;
|
output = ElixirOfFeatherFall.class;
|
||||||
outQuantity = 2;
|
outQuantity = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Effects;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Effects;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.AquaBlast;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Elastic;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Elastic;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
@@ -163,7 +162,7 @@ public class WandOfBlastWave extends DamageWand {
|
|||||||
if (ch.isActive()) {
|
if (ch.isActive()) {
|
||||||
Paralysis.prolong(ch, Paralysis.class, 1 + finalDist/2f);
|
Paralysis.prolong(ch, Paralysis.class, 1 + finalDist/2f);
|
||||||
} else if (ch == Dungeon.hero){
|
} else if (ch == Dungeon.hero){
|
||||||
if (cause instanceof WandOfBlastWave || cause instanceof AquaBlast){
|
if (cause instanceof WandOfBlastWave){
|
||||||
Badges.validateDeathFromFriendlyMagic();
|
Badges.validateDeathFromFriendlyMagic();
|
||||||
}
|
}
|
||||||
Dungeon.fail(cause);
|
Dungeon.fail(cause);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
||||||
@@ -130,7 +130,7 @@ public class Chasm implements Hero.Doom {
|
|||||||
|
|
||||||
Hero hero = Dungeon.hero;
|
Hero hero = Dungeon.hero;
|
||||||
|
|
||||||
FeatherFall.FeatherBuff b = hero.buff(FeatherFall.FeatherBuff.class);
|
ElixirOfFeatherFall.FeatherBuff b = hero.buff(ElixirOfFeatherFall.FeatherBuff.class);
|
||||||
|
|
||||||
if (b != null){
|
if (b != null){
|
||||||
hero.sprite.emitter().burst( Speck.factory( Speck.JET ), 20);
|
hero.sprite.emitter().burst( Speck.factory( Speck.JET ), 20);
|
||||||
|
|||||||
@@ -592,6 +592,7 @@ public class ItemSpriteSheet {
|
|||||||
public static final int BREW_BLIZZARD = BREWS+1;
|
public static final int BREW_BLIZZARD = BREWS+1;
|
||||||
public static final int BREW_SHOCKING = BREWS+2;
|
public static final int BREW_SHOCKING = BREWS+2;
|
||||||
public static final int BREW_CAUSTIC = BREWS+3;
|
public static final int BREW_CAUSTIC = BREWS+3;
|
||||||
|
public static final int BREW_AQUA = BREWS+4;
|
||||||
|
|
||||||
private static final int ELIXIRS = xy(9, 25); //8 slots
|
private static final int ELIXIRS = xy(9, 25); //8 slots
|
||||||
public static final int ELIXIR_HONEY = ELIXIRS+0;
|
public static final int ELIXIR_HONEY = ELIXIRS+0;
|
||||||
@@ -601,9 +602,12 @@ public class ItemSpriteSheet {
|
|||||||
public static final int ELIXIR_TOXIC = ELIXIRS+4;
|
public static final int ELIXIR_TOXIC = ELIXIRS+4;
|
||||||
public static final int ELIXIR_ICY = ELIXIRS+5;
|
public static final int ELIXIR_ICY = ELIXIRS+5;
|
||||||
public static final int ELIXIR_ARCANE = ELIXIRS+6;
|
public static final int ELIXIR_ARCANE = ELIXIRS+6;
|
||||||
|
public static final int ELIXIR_FEATHER = ELIXIRS+7;
|
||||||
static{
|
static{
|
||||||
for (int i = BREWS; i < BREWS+16; i++)
|
for (int i = BREWS; i < BREWS+16; i++)
|
||||||
assignItemRect(i, 12, 14);
|
assignItemRect(i, 12, 14);
|
||||||
|
|
||||||
|
assignItemRect(BREW_AQUA, 9, 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
//16 free slots
|
//16 free slots
|
||||||
@@ -615,9 +619,7 @@ public class ItemSpriteSheet {
|
|||||||
public static final int WILD_ENERGY = SPELLS+3;
|
public static final int WILD_ENERGY = SPELLS+3;
|
||||||
public static final int RETURN_BEACON = SPELLS+4;
|
public static final int RETURN_BEACON = SPELLS+4;
|
||||||
public static final int SUMMON_ELE = SPELLS+5;
|
public static final int SUMMON_ELE = SPELLS+5;
|
||||||
|
|
||||||
public static final int AQUA_BLAST = SPELLS+7;
|
|
||||||
public static final int FEATHER_FALL = SPELLS+8;
|
|
||||||
public static final int RECLAIM_TRAP = SPELLS+9;
|
public static final int RECLAIM_TRAP = SPELLS+9;
|
||||||
|
|
||||||
public static final int CURSE_INFUSE = SPELLS+11;
|
public static final int CURSE_INFUSE = SPELLS+11;
|
||||||
@@ -632,8 +634,6 @@ public class ItemSpriteSheet {
|
|||||||
assignItemRect(RETURN_BEACON, 8, 16);
|
assignItemRect(RETURN_BEACON, 8, 16);
|
||||||
assignItemRect(SUMMON_ELE, 8, 16);
|
assignItemRect(SUMMON_ELE, 8, 16);
|
||||||
|
|
||||||
assignItemRect(AQUA_BLAST, 11, 11);
|
|
||||||
assignItemRect(FEATHER_FALL, 11, 11);
|
|
||||||
assignItemRect(RECLAIM_TRAP, 11, 11);
|
assignItemRect(RECLAIM_TRAP, 11, 11);
|
||||||
|
|
||||||
assignItemRect(CURSE_INFUSE, 10, 15);
|
assignItemRect(CURSE_INFUSE, 10, 15);
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat;
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.AlchemicalCatalyst;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew;
|
||||||
@@ -44,6 +45,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight;
|
||||||
@@ -52,11 +54,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotio
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.AquaBlast;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ArcaneCatalyst;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.FeatherFall;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.PhaseShift;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.PhaseShift;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap;
|
import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap;
|
||||||
@@ -364,15 +364,16 @@ public class QuickRecipe extends Component {
|
|||||||
result.add(new QuickRecipe(new CausticBrew.Recipe()));
|
result.add(new QuickRecipe(new CausticBrew.Recipe()));
|
||||||
result.add(new QuickRecipe(new BlizzardBrew.Recipe()));
|
result.add(new QuickRecipe(new BlizzardBrew.Recipe()));
|
||||||
result.add(new QuickRecipe(new InfernalBrew.Recipe()));
|
result.add(new QuickRecipe(new InfernalBrew.Recipe()));
|
||||||
|
result.add(new QuickRecipe(new AquaBrew.Recipe()));
|
||||||
result.add(new QuickRecipe(new ShockingBrew.Recipe()));
|
result.add(new QuickRecipe(new ShockingBrew.Recipe()));
|
||||||
result.add(null);
|
result.add(null);
|
||||||
result.add(null);
|
|
||||||
result.add(new QuickRecipe(new ElixirOfHoneyedHealing.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfHoneyedHealing.Recipe()));
|
||||||
result.add(new QuickRecipe(new ElixirOfAquaticRejuvenation.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfAquaticRejuvenation.Recipe()));
|
||||||
result.add(new QuickRecipe(new ElixirOfMight.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfMight.Recipe()));
|
||||||
result.add(new QuickRecipe(new ElixirOfDragonsBlood.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfDragonsBlood.Recipe()));
|
||||||
result.add(new QuickRecipe(new ElixirOfIcyTouch.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfIcyTouch.Recipe()));
|
||||||
result.add(new QuickRecipe(new ElixirOfToxicEssence.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfToxicEssence.Recipe()));
|
||||||
|
result.add(new QuickRecipe(new ElixirOfFeatherFall.Recipe()));
|
||||||
result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe()));
|
result.add(new QuickRecipe(new ElixirOfArcaneArmor.Recipe()));
|
||||||
return result;
|
return result;
|
||||||
case 9:
|
case 9:
|
||||||
@@ -382,9 +383,7 @@ public class QuickRecipe extends Component {
|
|||||||
result.add(new QuickRecipe(new BeaconOfReturning.Recipe()));
|
result.add(new QuickRecipe(new BeaconOfReturning.Recipe()));
|
||||||
result.add(new QuickRecipe(new SummonElemental.Recipe()));
|
result.add(new QuickRecipe(new SummonElemental.Recipe()));
|
||||||
result.add(null);
|
result.add(null);
|
||||||
result.add(new QuickRecipe(new AquaBlast.Recipe()));
|
|
||||||
result.add(new QuickRecipe(new ReclaimTrap.Recipe()));
|
result.add(new QuickRecipe(new ReclaimTrap.Recipe()));
|
||||||
result.add(new QuickRecipe(new FeatherFall.Recipe()));
|
|
||||||
result.add(null);
|
result.add(null);
|
||||||
result.add(new QuickRecipe(new Alchemize.Recipe(), new ArrayList<>(Arrays.asList(new Plant.Seed.PlaceHolder(), new Runestone.PlaceHolder())), new Alchemize().quantity(8)));
|
result.add(new QuickRecipe(new Alchemize.Recipe(), new ArrayList<>(Arrays.asList(new Plant.Seed.PlaceHolder(), new Runestone.PlaceHolder())), new Alchemize().quantity(8)));
|
||||||
result.add(new QuickRecipe(new MagicalInfusion.Recipe()));
|
result.add(new QuickRecipe(new MagicalInfusion.Recipe()));
|
||||||
|
|||||||
@@ -473,10 +473,10 @@ public class v1_X_Changes {
|
|||||||
"_-_ Released March 23rd, 2022\n" +
|
"_-_ Released March 23rd, 2022\n" +
|
||||||
"_-_ 103 days after Shattered v1.1.0\n\n" +
|
"_-_ 103 days after Shattered v1.1.0\n\n" +
|
||||||
"v1.2.0 focused on a number of improvements to try and make Shattered play just as well for desktop users as it does for phone users. While these changes weren't perfect right at launch, they played a major role in making Shattered feel like more than a mobile port and helped it have a successful launch on Steam.\n" +
|
"v1.2.0 focused on a number of improvements to try and make Shattered play just as well for desktop users as it does for phone users. While these changes weren't perfect right at launch, they played a major role in making Shattered feel like more than a mobile port and helped it have a successful launch on Steam.\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"One big change for desktop users that's external to the game itself was native executables. Previously Shattered's desktop version required a separate installation of Java to run. After v1.2.0, I started making versions of Shattered with built-in Java instead. This meant that most users could just download the game and run it, much nicer.\n" +
|
"One big change for desktop users that's external to the game itself was native executables. Previously Shattered's desktop version required a separate installation of Java to run. After v1.2.0, I started making versions of Shattered with built-in Java instead. This meant that most users could just download the game and run it, much nicer.\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"v1.2.0 also included a variety of little additions and tweaks. Most of them are self-explanatory, but the badge additions in particular were timed with the game's release on Steam so they could tie into steamworks achievements and give newer players a little more to do."));
|
"v1.2.0 also included a variety of little additions and tweaks. Most of them are self-explanatory, but the badge additions in particular were timed with the game's release on Steam so they could tie into steamworks achievements and give newer players a little more to do."));
|
||||||
|
|
||||||
changes.addButton( new ChangeButton(Icons.get(Icons.DISPLAY_LAND), "Desktop Enhancements and Steam Release!",
|
changes.addButton( new ChangeButton(Icons.get(Icons.DISPLAY_LAND), "Desktop Enhancements and Steam Release!",
|
||||||
"_Shattered Pixel Dungeon has received a bunch of new features in preparation for its release on Steam!_\n\n" +
|
"_Shattered Pixel Dungeon has received a bunch of new features in preparation for its release on Steam!_\n\n" +
|
||||||
@@ -583,7 +583,7 @@ public class v1_X_Changes {
|
|||||||
"_- Summon Elemental_ energy cost down to 6 from 8\n" +
|
"_- Summon Elemental_ energy cost down to 6 from 8\n" +
|
||||||
"_- Alchemize_ energy cost down to 2 from 3"));
|
"_- Alchemize_ energy cost down to 2 from 3"));
|
||||||
|
|
||||||
changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.AQUA_BLAST), "Alchemy Buffs",
|
changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.ENERGY), "Alchemy Buffs",
|
||||||
"Several recipes have also been buffed, in addition to the cost reductions:\n\n" +
|
"Several recipes have also been buffed, in addition to the cost reductions:\n\n" +
|
||||||
"_- Scroll of Foresight_ duration up to 400 from 250\n" +
|
"_- Scroll of Foresight_ duration up to 400 from 250\n" +
|
||||||
"_- Scroll of Dread_ now grants 1/2 exp for defeated enemies\n" +
|
"_- Scroll of Dread_ now grants 1/2 exp for defeated enemies\n" +
|
||||||
|
|||||||
Reference in New Issue
Block a user