From c803537ecde8fac4ed86b43e050dd0fe61c8bccc Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Tue, 29 Oct 2019 19:45:06 -0400 Subject: [PATCH] v0.8.0: reskinned prison shamans as DM-100s --- .../actors/mobs/Bestiary.java | 16 +++++----- .../actors/mobs/{Shaman.java => DM100.java} | 7 ++-- .../items/armor/glyphs/AntiMagic.java | 4 +-- .../items/rings/RingOfElements.java | 4 +-- .../{ShamanSprite.java => DM100Sprite.java} | 32 ++++++++++--------- .../messages/actors/actors.properties | 6 +++- 6 files changed, 38 insertions(+), 31 deletions(-) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/{Shaman.java => DM100.java} (94%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/{ShamanSprite.java => DM100Sprite.java} (68%) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java index 098828a71..ec85f8dde 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bestiary.java @@ -72,23 +72,23 @@ public class Bestiary { Thief.class, Swarm.class)); case 7: - //3x skeleton, 1x thief, 1x shaman, 1x guard + //3x skeleton, 1x thief, 1x DM-100, 1x guard return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Skeleton.class, Thief.class, - Shaman.class, + DM100.class, Guard.class)); case 8: - //2x skeleton, 1x thief, 2x shaman, 2x guard, 1x necromancer + //2x skeleton, 1x thief, 2x DM-100, 2x guard, 1x necromancer return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Thief.class, - Shaman.class, Shaman.class, + DM100.class, DM100.class, Guard.class, Guard.class, Necromancer.class)); case 9: case 10: - //1x skeleton, 1x thief, 2x shaman, 2x guard, 2x necromancer + //1x skeleton, 1x thief, 2x DM-100, 2x guard, 2x necromancer return new ArrayList<>(Arrays.asList(Skeleton.class, Thief.class, - Shaman.class, Shaman.class, + DM100.class, DM100.class, Guard.class, Guard.class, Necromancer.class, Necromancer.class)); @@ -109,14 +109,14 @@ public class Bestiary { return new ArrayList<>(Arrays.asList( Bat.class, Brute.class, Brute.class, Brute.class, - Shaman.class, + //DM100.class, Spinner.class)); case 14: case 15: //1x bat, 3x brute, 1x shaman, 4x spinner return new ArrayList<>(Arrays.asList( Bat.class, Brute.class, Brute.class, Brute.class, - Shaman.class, + //DM100.class, Spinner.class, Spinner.class, Spinner.class, Spinner.class)); // City diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM100.java similarity index 94% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM100.java index a31fe003e..01ad16a8e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Shaman.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM100.java @@ -28,18 +28,18 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.ShamanSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.DM100Sprite; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; -public class Shaman extends Mob implements Callback { +public class DM100 extends Mob implements Callback { private static final float TIME_TO_ZAP = 1f; { - spriteClass = ShamanSprite.class; + spriteClass = DM100Sprite.class; HP = HT = 18; defenseSkill = 8; @@ -51,6 +51,7 @@ public class Shaman extends Mob implements Callback { lootChance = 0.33f; properties.add(Property.ELECTRIC); + properties.add(Property.INORGANIC); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/AntiMagic.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/AntiMagic.java index 99ff32b31..7fcf664af 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/AntiMagic.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/armor/glyphs/AntiMagic.java @@ -25,7 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; 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.DM100; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Warlock; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Yog; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; @@ -69,7 +69,7 @@ public class AntiMagic extends Armor.Glyph { RESISTS.add( WandOfTransfusion.class ); RESISTS.add( WandOfWarding.Ward.class ); - RESISTS.add( Shaman.LightningBolt.class ); + RESISTS.add( DM100.LightningBolt.class ); RESISTS.add( Warlock.DarkBolt.class ); RESISTS.add( Eye.DeathGaze.class ); RESISTS.add( Yog.BurningFist.DarkBolt.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 c7e127036..2b44693f1 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 @@ -34,7 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison; 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.DM100; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Warlock; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Yog; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave; @@ -98,7 +98,7 @@ public class RingOfElements extends Ring { RESISTS.add( ToxicGas.class ); RESISTS.add( Electricity.class ); - RESISTS.add( Shaman.LightningBolt.class ); + RESISTS.add( DM100.LightningBolt.class ); RESISTS.add( Warlock.DarkBolt.class ); RESISTS.add( Eye.DeathGaze.class ); RESISTS.add( Yog.BurningFist.DarkBolt.class ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ShamanSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM100Sprite.java similarity index 68% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ShamanSprite.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM100Sprite.java index dcde80d7e..4da85c4e1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ShamanSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM100Sprite.java @@ -24,35 +24,37 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; -import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Shaman; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM100; import com.shatteredpixel.shatteredpixeldungeon.effects.Lightning; import com.watabou.noosa.TextureFilm; import com.watabou.noosa.audio.Sample; -public class ShamanSprite extends MobSprite { +//TODO currently just uses DM-300's sprite scaled to 60% +public class DM100Sprite extends MobSprite { - public ShamanSprite() { + public DM100Sprite () { super(); - texture( Assets.SHAMAN ); + texture( Assets.DM300 ); - TextureFilm frames = new TextureFilm( texture, 12, 15 ); + TextureFilm frames = new TextureFilm( texture, 22, 20 ); - idle = new Animation( 2, true ); - idle.frames( frames, 0, 0, 0, 1, 0, 0, 1, 1 ); + idle = new Animation( 10, true ); + idle.frames( frames, 0, 1 ); - run = new Animation( 12, true ); - run.frames( frames, 4, 5, 6, 7 ); + run = new Animation( 10, true ); + run.frames( frames, 2, 3 ); - attack = new Animation( 12, false ); - attack.frames( frames, 2, 3, 0 ); + attack = new Animation( 15, false ); + attack.frames( frames, 4, 5, 6, 0 ); zap = attack.clone(); - die = new Animation( 12, false ); - die.frames( frames, 8, 9, 10 ); + die = new Animation( 20, false ); + die.frames( frames, 0, 7, 0, 7, 0, 7, 0, 7, 0, 7, 0, 7, 8 ); play( idle ); + scale.set( 0.6f ); } public void zap( int pos ) { @@ -60,9 +62,9 @@ public class ShamanSprite extends MobSprite { Char enemy = Actor.findChar(pos); if (enemy != null) { - parent.add(new Lightning(center(), enemy.sprite.destinationCenter(), (Shaman) ch)); + parent.add(new Lightning(center(), enemy.sprite.destinationCenter(), (DM100) ch)); } else { - parent.add(new Lightning(center(), pos, (Shaman) ch)); + parent.add(new Lightning(center(), pos, (DM100) ch)); } Sample.INSTANCE.play( Assets.SND_LIGHTNING ); 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 e6c9fa32c..a91c2fa4e 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 @@ -456,6 +456,10 @@ actors.mobs.causticslime.desc=This slime seems to have been tainted by the dark actors.mobs.crab.name=sewer crab actors.mobs.crab.desc=These huge crabs are at the top of the food chain in the sewers. They are extremely fast and their thick carapace can withstand heavy blows. +actors.mobs.dm100.name=DM-100 +actors.mobs.dm100.zap_kill=The lightning bolt killed you... +actors.mobs.dm100.desc=The DM-100 is an early model of dwarven 'defense machine' which was designed to protect dwarven miners in the caves below. Their electrical shocks proved too weak however, and so they were gifted to the human prison above. The warden initially deemed them too cruel to use, but as the prisoners became more unruly they became a necessity. + actors.mobs.dm300.name=DM-300 actors.mobs.dm300.notice=Unauthorised personnel detected. actors.mobs.dm300.defeated=Mission failed. Shutting down. @@ -606,7 +610,7 @@ actors.mobs.newtengu$fireability$fireblob.desc=Tengu has thrown a fine powder th actors.mobs.newtengu$shockerability$shockerblob.desc=Electrical energy is building here, anything standing on this tile will be shocked next turn! actors.mobs.newtengu$shockerability$shockeritem.name=Shocker actors.mobs.newtengu$shockerability$shockeritem.cant_pickup=It's putting out too much electricity, you can't grab it! -actors.mobs.newtengu$shockerability$shockeritem.desc=Tengu has thrown a curious machine here, which seems to be made of robot parts. The machine is constantly arcing electricity around it, but it seems to be going in a predictable pattern.\n\nWith all the electricity arcing around it, there's no way you can pick this up. +actors.mobs.newtengu$shockerability$shockeritem.desc=Tengu has thrown a curious machine here, which seems to be made of DM-100 parts. The machine is constantly arcing electricity around it, but it seems to be going in a predictable pattern.\n\nWith all the electricity arcing around it, there's no way you can pick this up. actors.mobs.oldtengu.name=Tengu actors.mobs.oldtengu.notice_mine=You're mine, %s!