From bf280cc426994e2aeff158fed2514f1429abf3b3 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 1 Feb 2018 02:27:15 -0500 Subject: [PATCH] v0.6.3: reworked the wand of venom thematically, now wand of corrosion --- core/src/main/assets/buffs.png | Bin 1136 -> 1122 bytes core/src/main/assets/items.png | Bin 15572 -> 15548 bytes core/src/main/assets/large_buffs.png | Bin 2260 -> 2249 bytes .../ShatteredPixelDungeon.java | 13 +++ .../shatteredpixeldungeon/actors/Char.java | 6 +- .../{VenomGas.java => CorrosiveGas.java} | 8 +- .../actors/buffs/BlobImmunity.java | 10 -- .../buffs/{Venom.java => Corrosion.java} | 12 ++- .../actors/buffs/Poison.java | 6 ++ .../actors/buffs/ToxicImbue.java | 1 - .../actors/mobs/Piranha.java | 5 - .../actors/mobs/npcs/MirrorImage.java | 4 +- .../effects/MagicMissile.java | 8 +- .../shatteredpixeldungeon/effects/Speck.java | 12 +-- .../effects/particles/CorrosionParticle.java | 92 ++++++++++++++++++ .../items/Generator.java | 4 +- .../items/artifacts/DriedRose.java | 4 +- .../items/rings/RingOfElements.java | 5 +- ...{WandOfVenom.java => WandOfCorrosion.java} | 21 ++-- .../items/wands/WandOfCorruption.java | 4 +- .../items/weapon/melee/MagesStaff.java | 2 + .../journal/Catalog.java | 10 +- .../levels/CavesLevel.java | 4 +- .../levels/CityLevel.java | 4 +- .../levels/HallsLevel.java | 4 +- .../{VenomTrap.java => CorrosionTrap.java} | 12 +-- .../messages/actors/actors.properties | 12 +-- .../messages/items/items.properties | 8 +- .../messages/levels/levels.properties | 4 +- 29 files changed, 192 insertions(+), 83 deletions(-) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/{VenomGas.java => CorrosiveGas.java} (91%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/{Venom.java => Corrosion.java} (93%) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/CorrosionParticle.java rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/{WandOfVenom.java => WandOfCorrosion.java} (80%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/{VenomTrap.java => CorrosionTrap.java} (78%) diff --git a/core/src/main/assets/buffs.png b/core/src/main/assets/buffs.png index d512b6f71ad82ce680f71c08ec7af99ea72fa5c2..d27cca047d6bd4fb386b4cbf3d91b6a84ed8fad0 100644 GIT binary patch delta 949 zcmV;m14{hx2;vBkBqrWaOjJd3d{{XEIB(q|fk6h*#IRGJ7moJ%-!b^W|#!#aG000tnQchF< z|NsC0|NsC0|NsC0|NsC00OG&D5&!@LAxT6*RCobokcDC3Fbn|A_UnsbX4rqj3d%h* zNtdX1v|x;}*qq>nAVeVv{{;8|uLJxS9)w5XNpQlm@FKjvDwXAVo{>P|914_%1*)n- zff@j6ADXsnn-G6{9Qv3B02o+c98qAJX3Ae-L4jpiNMK!87T7)nb`m&9;JmKu{3ej) zDpPr;H6HRGC@l&A;XHVcEwq@q4UvbKAl=yH^RdD_(OoKk1h#DxfgJ@7E|{O{mq4z# zY9|7=EYZM$6abGcbVP_ekN^xU@YX(AC`$@ML9}Yg+FgIQl!q0l8h3Y}+5i8c*Ug1I zcb5~!gi!aIxy>Wct?Cg25l`rudsM>tT}_g9Q$YP1r~$? zOA4&Wo1SpIStmdM7Alam=%~PmRI1~(S&yr=agBe+r!p4=l7;zG7|5*G>&>L~ss)4A zW=l35u;^q0tJQ9|Tdf2EP+&3)0Xx9?J^`LT1qeIv0k>4ZCx8Ypf%c}&1UO#> zd;)()u#6lRU<9ETfPt0}^L+`$k_&<$2Z5h4u!dL;zeNEs9$ZeAc+)iq%Xzpe((@ra|JKVgt1AT+=Y&u=9Gdn^G6 zfEZ$!nl&~lkiB^Uo~Aw80ZkzNjPvC-ONe!B7erCycLAo~q5y99%8S5@z>C0(z>B~h XGB{p{8Tg_300000NkvXXu0mjf1V5kc delta 948 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 JZSHmVzX78wLWckV diff --git a/core/src/main/assets/large_buffs.png b/core/src/main/assets/large_buffs.png index ec8022243cc033b2fcc95b367db5c22cd5055224..e08d35f9b7693b909bddb2b6c51bf4fe73691898 100644 GIT binary patch delta 2060 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, - new HashSet( Arrays.asList(Bleeding.class, ToxicGas.class, Poison.class, Venom.class) )), + new HashSet( Arrays.asList(Bleeding.class, ToxicGas.class, Poison.class) )), BLOB_IMMUNE ( new HashSet(), new HashSet( Arrays.asList(Blob.class) )), FIERY ( new HashSet( Arrays.asList(WandOfFireblast.class)), new HashSet( Arrays.asList(Burning.class, Blazing.class))), - ACIDIC ( new HashSet( Arrays.asList(ToxicGas.class)), + ACIDIC ( new HashSet( Arrays.asList(ToxicGas.class, Corrosion.class)), new HashSet( Arrays.asList(Ooze.class))), ELECTRIC ( new HashSet( Arrays.asList(WandOfLightning.class, Shocking.class, Potential.class, Electricity.class)), new HashSet()), diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/CorrosiveGas.java similarity index 91% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/CorrosiveGas.java index aa10ab813..2b2a2e8b2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/VenomGas.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/CorrosiveGas.java @@ -25,13 +25,13 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Venom; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion; import com.shatteredpixel.shatteredpixeldungeon.effects.BlobEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.watabou.utils.Bundle; -public class VenomGas extends Blob { +public class CorrosiveGas extends Blob { private int strength = 0; @@ -50,7 +50,7 @@ public class VenomGas extends Blob { cell = i + j*Dungeon.level.width(); if (cur[cell] > 0 && (ch = Actor.findChar( cell )) != null) { if (!ch.isImmune(this.getClass())) - Buff.affect(ch, Venom.class).set(2f, strength); + Buff.affect(ch, Corrosion.class).set(2f, strength); } } } @@ -80,7 +80,7 @@ public class VenomGas extends Blob { public void use( BlobEmitter emitter ) { super.use( emitter ); - emitter.pour( Speck.factory(Speck.VENOM), 0.4f ); + emitter.pour( Speck.factory(Speck.CORROSION), 0.4f ); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java index fea0f2910..abea45a4f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/BlobImmunity.java @@ -22,16 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ConfusionGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Freezing; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ParalyticGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Regrowth; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.StenchGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Web; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.watabou.noosa.Image; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Venom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Corrosion.java similarity index 93% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Venom.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Corrosion.java index 44cc49aec..8c526976a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Venom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Corrosion.java @@ -27,10 +27,11 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.Image; import com.watabou.utils.Bundle; //FIXME do proper translation stuff for new text here in 0.6.3 (heromsg, ondeath, rankings_desc) -public class Venom extends Buff implements Hero.Doom { +public class Corrosion extends Buff implements Hero.Doom { private float damage = 1; protected float left; @@ -60,11 +61,16 @@ public class Venom extends Buff implements Hero.Doom { this.left = Math.max(duration, left); if (this.damage < damage) this.damage = damage; } - + @Override public int icon() { return BuffIndicator.POISON; } + + @Override + public void tintIcon(Image icon) { + icon.hardlight(1f, 0.5f, 0f); + } @Override public String toString() { @@ -104,8 +110,6 @@ public class Venom extends Buff implements Hero.Doom { @Override public void onDeath() { - Badges.validateDeathFromPoison(); - Dungeon.fail( getClass() ); GLog.n(Messages.get(this, "ondeath")); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Poison.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Poison.java index 14b5516b2..442b26da3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Poison.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Poison.java @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfElements; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.Image; import com.watabou.utils.Bundle; public class Poison extends Buff implements Hero.Doom { @@ -69,6 +70,11 @@ public class Poison extends Buff implements Hero.Doom { return BuffIndicator.POISON; } + @Override + public void tintIcon(Image icon) { + icon.hardlight(0.6f, 0.2f, 0.6f); + } + @Override public String toString() { return Messages.get(this, "name"); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java index 8e0a3fb08..f170d89c4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ToxicImbue.java @@ -93,6 +93,5 @@ public class ToxicImbue extends Buff { { immunities.add( ToxicGas.class ); immunities.add( Poison.class ); - immunities.add( Venom.class ); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java index c2fcc5c01..af43d6780 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Piranha.java @@ -25,12 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots; import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat; import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java index b690b2d61..4e156cd23 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/npcs/MirrorImage.java @@ -24,7 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; @@ -117,7 +117,7 @@ public class MirrorImage extends NPC { { immunities.add( ToxicGas.class ); - immunities.add( VenomGas.class ); + immunities.add( CorrosiveGas.class ); immunities.add( Burning.class ); } } \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/MagicMissile.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/MagicMissile.java index 4fa90344b..db6bb0e5a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/MagicMissile.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/MagicMissile.java @@ -22,9 +22,9 @@ package com.shatteredpixel.shatteredpixeldungeon.effects; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.CorrosionParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle; -import com.shatteredpixel.shatteredpixeldungeon.effects.particles.PoisonParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.RainbowParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; @@ -52,7 +52,7 @@ public class MagicMissile extends Emitter { public static final int MAGIC_MISSILE = 0; public static final int FROST = 1; public static final int FIRE = 2; - public static final int POISON = 3; + public static final int CORROSION = 3; public static final int FOLIAGE = 4; public static final int FORCE = 5; public static final int BEACON = 6; @@ -111,9 +111,9 @@ public class MagicMissile extends Emitter { size( 4 ); pour( FlameParticle.FACTORY, 0.01f ); break; - case POISON: + case CORROSION: size( 3 ); - pour( PoisonParticle.MISSILE, 0.01f ); + pour( CorrosionParticle.MISSILE, 0.01f ); break; case FOLIAGE: size( 4 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java index e49fe35d4..7bf53f4b7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/Speck.java @@ -57,7 +57,7 @@ public class Speck extends Image { public static final int RATTLE = 105; public static final int JET = 106; public static final int TOXIC = 107; - public static final int VENOM = 108; + public static final int CORROSION = 108; public static final int PARALYSIS = 109; public static final int DUST = 110; public static final int STENCH = 111; @@ -106,7 +106,7 @@ public class Speck extends Image { break; case JET: case TOXIC: - case VENOM: + case CORROSION: case PARALYSIS: case STENCH: case CONFUSION: @@ -279,8 +279,8 @@ public class Speck extends Image { lifespan = Random.Float( 1f, 3f ); break; - case VENOM: - hardlight( 0x8844FF ); + case CORROSION: + hardlight( 0xAAAAAA ); angularSpeed = 30; angle = Random.Float( 360 ); lifespan = Random.Float( 1f, 3f ); @@ -421,8 +421,8 @@ public class Speck extends Image { scale.set( 1 + p ); break; - case VENOM: - hardlight( ColorMath.interpolate( 0x8844FF, 0x00FF00 , p )); + case CORROSION: + hardlight( ColorMath.interpolate( 0xAAAAAA, 0xFF8800 , p )); case STENCH: am = (float)Math.sqrt( (p < 0.5f ? p : 1 - p) ); scale.set( 1 + p ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/CorrosionParticle.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/CorrosionParticle.java new file mode 100644 index 000000000..a4a66f83e --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/effects/particles/CorrosionParticle.java @@ -0,0 +1,92 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2017 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.effects.particles; + +import com.watabou.noosa.particles.Emitter; +import com.watabou.noosa.particles.PixelParticle; +import com.watabou.utils.ColorMath; +import com.watabou.utils.Random; + +public class CorrosionParticle extends PixelParticle { + + public static final Emitter.Factory MISSILE = new Emitter.Factory() { + @Override + public void emit( Emitter emitter, int index, float x, float y ) { + ((CorrosionParticle)emitter.recycle( CorrosionParticle.class )).resetMissile( x, y ); + } + @Override + public boolean lightMode() { + return false; + }; + }; + + public static final Emitter.Factory SPLASH = new Emitter.Factory() { + @Override + public void emit( Emitter emitter, int index, float x, float y ) { + ((CorrosionParticle)emitter.recycle( CorrosionParticle.class )).resetSplash( x, y ); + } + @Override + public boolean lightMode() { + return false; + }; + }; + + public CorrosionParticle() { + super(); + + lifespan = 0.6f; + + acc.set( 0, +30 ); + } + + public void resetMissile( float x, float y ) { + revive(); + + this.x = x; + this.y = y; + + left = lifespan; + + speed.polar( -Random.Float( 3.1415926f ), Random.Float( 6 ) ); + } + + public void resetSplash( float x, float y ) { + revive(); + + this.x = x; + this.y = y; + + left = lifespan; + + speed.polar( Random.Float( 3.1415926f ), Random.Float( 10, 20 ) ); + } + + @Override + public void update() { + super.update(); + // alpha: 1 -> 0; size: 1 -> 4 + size( 4 - (am = left / lifespan) * 3 ); + // color: 0xAAAAAA -> 0xFF8800 + color( ColorMath.interpolate( 0xFF8800, 0xAAAAAA, am ) ); + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index 97f19ae89..5c01c59a3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -96,7 +96,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPrismaticLight; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion; -import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger; @@ -252,7 +252,7 @@ public class Generator { WandOfLightning.class, WandOfDisintegration.class, WandOfFireblast.class, - WandOfVenom.class, + WandOfCorrosion.class, WandOfBlastWave.class, //WandOfLivingEarth.class, WandOfFrost.class, diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index ecbd7257b..6e7cf9f21 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -26,7 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; @@ -643,7 +643,7 @@ public class DriedRose extends Artifact { { immunities.add( ToxicGas.class ); - immunities.add( VenomGas.class ); + immunities.add( CorrosiveGas.class ); immunities.add( Burning.class ); immunities.add( ScrollOfPsionicBlast.class ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java index 0bee25e9b..a77e9c0b5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/rings/RingOfElements.java @@ -31,13 +31,12 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Venom; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Eye; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Shaman; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Warlock; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Yog; -import com.watabou.utils.Random; import java.util.HashSet; @@ -57,7 +56,7 @@ public class RingOfElements extends Ring { RESISTS.add( Ooze.class ); RESISTS.add( Paralysis.class ); RESISTS.add( Poison.class ); - RESISTS.add( Venom.class ); + RESISTS.add( Corrosion.class ); RESISTS.add( Weakness.class ); RESISTS.add( ToxicGas.class ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfVenom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java similarity index 80% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfVenom.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java index 04b45a2ff..268f2331b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfVenom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorrosion.java @@ -26,8 +26,10 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas; +import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.CorrosionParticle; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Venomous; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; @@ -38,7 +40,7 @@ import com.watabou.utils.Callback; import com.watabou.utils.ColorMath; import com.watabou.utils.PathFinder; -public class WandOfVenom extends Wand { +public class WandOfCorrosion extends Wand { { image = ItemSpriteSheet.WAND_VENOM; @@ -48,9 +50,10 @@ public class WandOfVenom extends Wand { @Override protected void onZap(Ballistica bolt) { - Blob venomGas = Blob.seed(bolt.collisionPos, 50 + 10 * level(), VenomGas.class); - ((VenomGas)venomGas).setStrength(level()+1); - GameScene.add(venomGas); + Blob corrosiveGas = Blob.seed(bolt.collisionPos, 50 + 10 * level(), CorrosiveGas.class); + CellEmitter.center(bolt.collisionPos).burst( CorrosionParticle.SPLASH, 10 ); + ((CorrosiveGas)corrosiveGas).setStrength(level()+1); + GameScene.add(corrosiveGas); for (int i : PathFinder.NEIGHBOURS9) { Char ch = Actor.findChar(bolt.collisionPos + i); @@ -68,7 +71,7 @@ public class WandOfVenom extends Wand { protected void fx(Ballistica bolt, Callback callback) { MagicMissile.boltFromChar( curUser.sprite.parent, - MagicMissile.POISON, + MagicMissile.CORROSION, curUser.sprite, bolt.collisionPos, callback); @@ -77,17 +80,17 @@ public class WandOfVenom extends Wand { @Override public void onHit(MagesStaff staff, Char attacker, Char defender, int damage) { - //acts like venomous enchantment + //TODO new Venomous().proc(staff, attacker, defender, damage); } @Override public void staffFx(MagesStaff.StaffParticle particle) { - particle.color( ColorMath.random( 0x8844FF, 0x00FF00) ); + particle.color( ColorMath.random( 0xAAAAAA, 0xFF8800) ); particle.am = 0.6f; particle.setLifespan( 1f ); particle.acc.set(0, 20); - particle.setSize( 0.5f, 2f); + particle.setSize( 0.5f, 3f ); particle.shuffleXY( 1f ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java index 6ffb7a061..ceccf0ed8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfCorruption.java @@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom; @@ -49,7 +50,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Roots; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Slow; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Venom; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Weakness; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Bee; @@ -113,7 +113,7 @@ public class WandOfCorruption extends Wand { MAJOR_DEBUFFS.put(Charm.class, 0f); MAJOR_DEBUFFS.put(MagicalSleep.class, 0f); MAJOR_DEBUFFS.put(SoulMark.class, 0f); - MAJOR_DEBUFFS.put(Venom.class, 0f); + MAJOR_DEBUFFS.put(Corrosion.class, 0f); MAJOR_DEBUFFS.put(Frost.class, 0f); MAJOR_DEBUFFS.put(Doom.class, 0f); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java index d80a1324c..e47eed504 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/MagesStaff.java @@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorruption; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfDisintegration; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; @@ -378,6 +379,7 @@ public class MagesStaff extends MeleeWeapon { public boolean lightMode() { return !((wand instanceof WandOfDisintegration) || (wand instanceof WandOfCorruption) + || (wand instanceof WandOfCorrosion) || (wand instanceof WandOfRegrowth)); } }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java index 2b17556ad..867184060 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java @@ -89,7 +89,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPrismaticLight; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion; -import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger; @@ -191,7 +191,7 @@ public enum Catalog { WANDS.seen.put( WandOfLightning.class, false); WANDS.seen.put( WandOfDisintegration.class, false); WANDS.seen.put( WandOfFireblast.class, false); - WANDS.seen.put( WandOfVenom.class, false); + WANDS.seen.put( WandOfCorrosion.class, false); WANDS.seen.put( WandOfBlastWave.class, false); //WANDS.seen.put( WandOfLivingEarth.class, false); WANDS.seen.put( WandOfFrost.class, false); @@ -334,6 +334,12 @@ public enum Catalog { if (bundle.contains(CATALOGS)) { List seen = Arrays.asList(bundle.getStringArray(CATALOGS)); + //pre-0.6.3 saves + //TODO should adjust this to tie into the bundling system's class array + if (seen.contains("WandOfVenom")){ + WANDS.seen.put(WandOfCorrosion.class, true); + } + for (Catalog cat : values()) { for (Class item : cat.items()) { if (seen.contains(item.getSimpleName())) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java index 55bb5c3e5..472ced65d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java @@ -38,7 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.PoisonDartTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.RockfallTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.StormTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap; -import com.shatteredpixel.shatteredpixeldungeon.levels.traps.VenomTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CorrosionTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WarpingTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; @@ -96,7 +96,7 @@ public class CavesLevel extends RegularLevel { @Override protected Class[] trapClasses() { - return new Class[]{ BurningTrap.class, PoisonDartTrap.class, FrostTrap.class, StormTrap.class, VenomTrap.class, + return new Class[]{ BurningTrap.class, PoisonDartTrap.class, FrostTrap.class, StormTrap.class, CorrosionTrap.class, GrippingTrap.class, ExplosiveTrap.class, RockfallTrap.class, GuardianTrap.class, ConfusionTrap.class, SummoningTrap.class, WarpingTrap.class, PitfallTrap.class }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java index 6a15e6cd7..3efe50892 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java @@ -38,7 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.PitfallTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.RockfallTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.StormTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap; -import com.shatteredpixel.shatteredpixeldungeon.levels.traps.VenomTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CorrosionTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WarpingTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WeakeningTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -88,7 +88,7 @@ public class CityLevel extends RegularLevel { @Override protected Class[] trapClasses() { - return new Class[]{ FrostTrap.class, StormTrap.class, VenomTrap.class, BlazingTrap.class, DisintegrationTrap.class, + return new Class[]{ FrostTrap.class, StormTrap.class, CorrosionTrap.class, BlazingTrap.class, DisintegrationTrap.class, ExplosiveTrap.class, RockfallTrap.class, FlashingTrap.class, GuardianTrap.class, WeakeningTrap.class, SummoningTrap.class, WarpingTrap.class, CursingTrap.class, PitfallTrap.class, DisarmingTrap.class }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java index 5d713d438..83d6a6394 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java @@ -40,7 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.PitfallTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.RockfallTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.StormTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap; -import com.shatteredpixel.shatteredpixeldungeon.levels.traps.VenomTrap; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.CorrosionTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WarpingTrap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.WeakeningTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -100,7 +100,7 @@ public class HallsLevel extends RegularLevel { @Override protected Class[] trapClasses() { - return new Class[]{ FrostTrap.class, StormTrap.class, VenomTrap.class, BlazingTrap.class, DisintegrationTrap.class, + return new Class[]{ FrostTrap.class, StormTrap.class, CorrosionTrap.class, BlazingTrap.class, DisintegrationTrap.class, ExplosiveTrap.class, RockfallTrap.class, FlashingTrap.class, GuardianTrap.class, WeakeningTrap.class, SummoningTrap.class, WarpingTrap.class, CursingTrap.class, GrimTrap.class, PitfallTrap.class, DisarmingTrap.class, DistortionTrap.class }; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/VenomTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java similarity index 78% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/VenomTrap.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java index 23114d285..7bcc88e89 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/VenomTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/CorrosionTrap.java @@ -23,24 +23,24 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.traps; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas; +import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; -public class VenomTrap extends Trap { +public class CorrosionTrap extends Trap { { - color = VIOLET; + color = GREY; shape = GRILL; } @Override public void activate() { - VenomGas venomGas = Blob.seed(pos, 80 + 5 * Dungeon.depth, VenomGas.class); + CorrosiveGas corrosiveGas = Blob.seed(pos, 80 + 5 * Dungeon.depth, CorrosiveGas.class); - venomGas.setStrength(1+Dungeon.depth/4); + corrosiveGas.setStrength(1+Dungeon.depth/4); - GameScene.add(venomGas); + GameScene.add(corrosiveGas); } } diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties index df5ec43f2..15b849b61 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/actors/actors.properties @@ -20,7 +20,7 @@ actors.blobs.toxicgas.desc=A greenish cloud of toxic gas is swirling here. actors.blobs.toxicgas.rankings_desc=Suffocated actors.blobs.toxicgas.ondeath=You died from the toxic gas... -actors.blobs.venomgas.desc=A cloud of foul acidic venom is swirling here. +actors.blobs.corrosivegas.desc=A cloud of deadly caustic gas is swirling here. actors.blobs.waterofawareness.procced=As you take a sip, you feel the knowledge pours into your mind. Now you know everything about your equipped items. Also you sense all items on the level and know all its secrets. actors.blobs.waterofawareness.desc=Power of knowledge radiates from the water of this well. Take a sip from it to reveal all secrets of equipped items. @@ -217,11 +217,11 @@ actors.buffs.terror.desc=Terror is manipulative magic which forces its target in actors.buffs.toxicimbue.name=Imbued with Toxicity actors.buffs.toxicimbue.desc=You are imbued with poisonous energy!\n\nAs you move around toxic gas will constantly billow forth from you, damaging your enemies. You are immune to toxic gas and poison for the duration of the effect.\n\nTurns of toxic imbue remaining: %s. -actors.buffs.venom.name=Venomed -actors.buffs.venom.heromsg=You are envenomed! -actors.buffs.venom.ondeath=You died from venom... -actors.buffs.venom.rankings_desc=Succumbed to Venom -actors.buffs.venom.desc=Venom is an extremely caustic and dangerous poison.\n\nUnlike poison, whose damage lowers over time, venom does increasing damage the longer it stays on a target.\n\nTurns of venom remaining: %1$s.\nCurrent venom damage: %2$d. +actors.buffs.corrosion.name=Corrosion +actors.buffs.corrosion.heromsg=You are melting! +actors.buffs.corrosion.ondeath=You melt away... +actors.buffs.corrosion.rankings_desc=Dissolved +actors.buffs.corrosion.desc=Acidic gas melts away flesh, metal, and bone. Things which ordinarily shouldn't melt.\n\nCorrosion damage increases over time, as the target continues to melt away.\n\nTurns of corrosion remaining: %1$s.\nCurrent corrosion damage: %2$d. actors.buffs.vertigo.name=Vertigo actors.buffs.vertigo.desc=Walking in a straight line can be difficult when the whole world is spinning.\n\nWhile under the effects of vertigo, characters who attempt to move will go in a random direction, instead of the one they intended to go in.\n\nTurns of vertigo remaining: %s. diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index 54b518a27..524139545 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -740,10 +740,10 @@ items.wands.wandoftransfusion.charged=Your staff is charged with the life energy items.wands.wandoftransfusion.desc=A fairly plainly shaped wand, it stands out due to its magenta hue and pitch black gem at the tip. items.wands.wandoftransfusion.stats_desc=This wand will take some of your life energy and blast it at a target. This effect is very versatile: allies will be healed, enemies will be temporarily charmed, and hostile undead will take considerable damage. The life drain is significant though, using this wand will deal damage to you in addition to consuming charges. -items.wands.wandofvenom.name=wand of venom -items.wands.wandofvenom.staff_name=staff of venom -items.wands.wandofvenom.desc=This wand has a purple body which opens to a brilliant green gem. -items.wands.wandofvenom.stats_desc=This wand shoots a bolt which explodes into a cloud of vile venomous gas at a targeted location. Anything caught inside this cloud will take continual damage, increasing with time. +items.wands.wandofcorrosion.name=wand of corrosion +items.wands.wandofcorrosion.staff_name=staff of corrosion +items.wands.wandofcorrosion.desc=This wand has a ashen body which opens to a brilliant orange gem. +items.wands.wandofcorrosion.stats_desc=This wand shoots a bolt which explodes into a cloud of highly corrosive gas at a targeted location. Anything caught inside this cloud will take continual damage, increasing with time. diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties index 6a77650ff..15043eec3 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/levels/levels.properties @@ -114,8 +114,8 @@ levels.traps.toxictrap.desc=Triggering this trap will set a cloud of toxic gas l levels.traps.trap.rankings_desc=Killed by: %s -levels.traps.venomtrap.name=venom gas trap -levels.traps.venomtrap.desc=Triggering this trap will set a cloud of deadly venom gas loose within the immediate area. +levels.traps.corrosiontrap.name=corrosive gas trap +levels.traps.corrosiontrap.desc=Triggering this trap will set a cloud of deadly acidic gas loose within the immediate area. levels.traps.warpingtrap.name=warping trap levels.traps.warpingtrap.desc=Whatever triggers this trap will be warped to some other location on this floor.