From 1654a28d11b36695c53a303444ffe744145c913d Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 11 Apr 2015 19:42:33 -0400 Subject: [PATCH] v0.3.0: added Wand of Prismatic Light --- assets/items.png | Bin 22694 -> 22653 bytes .../effects/particles/RainbowParticle.java | 60 +++++++ .../items/wands/WandOfPrismaticLight.java | 149 ++++++++++++++++++ 3 files changed, 209 insertions(+) create mode 100644 src/com/shatteredpixel/shatteredpixeldungeon/effects/particles/RainbowParticle.java create mode 100644 src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfPrismaticLight.java diff --git a/assets/items.png b/assets/items.png index dfc8887fbe12fc656b1577548ff5e53dd7d2d506..d45cc7a8db2af6a45ec6321a1b288832d1f77dd2 100644 GIT binary patch literal 22653 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 diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/effects/particles/RainbowParticle.java b/src/com/shatteredpixel/shatteredpixeldungeon/effects/particles/RainbowParticle.java new file mode 100644 index 000000000..a2b6c6f24 --- /dev/null +++ b/src/com/shatteredpixel/shatteredpixeldungeon/effects/particles/RainbowParticle.java @@ -0,0 +1,60 @@ +package com.shatteredpixel.shatteredpixeldungeon.effects.particles; + +import com.watabou.noosa.particles.Emitter; +import com.watabou.noosa.particles.PixelParticle; +import com.watabou.utils.PointF; +import com.watabou.utils.Random; + +/** + * Created by Evan on 11/04/2015. + */ +public class RainbowParticle extends PixelParticle { + + public static final Emitter.Factory BURST = new Emitter.Factory() { + @Override + public void emit( Emitter emitter, int index, float x, float y ) { + ((RainbowParticle)emitter.recycle( RainbowParticle.class )).resetBurst( x, y ); + } + @Override + public boolean lightMode() { + return true; + } + }; + + + public RainbowParticle() { + super(); + color( Random.Int( 0x1000000 ) ); + lifespan = 0.5f; + } + + + public void reset( float x, float y ) { + revive(); + + this.x = x; + this.y = y; + + speed.set( Random.Float(-5, +5), Random.Float( -5, +5 ) ); + + left = lifespan; + } + + public void resetBurst( float x, float y ) { + revive(); + + this.x = x; + this.y = y; + + speed.polar( Random.Float( PointF.PI2 ), Random.Float( 16, 32 ) ); + + left = lifespan; + } + + @Override + public void update() { + super.update(); + // alpha: 1 -> 0; size: 1 -> 5 + size( 5 - (am = left / lifespan) * 4 ); + } +} diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfPrismaticLight.java b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfPrismaticLight.java new file mode 100644 index 000000000..b811960e4 --- /dev/null +++ b/src/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfPrismaticLight.java @@ -0,0 +1,149 @@ +package com.shatteredpixel.shatteredpixeldungeon.items.wands; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.DungeonTilemap; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.*; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; +import com.shatteredpixel.shatteredpixeldungeon.effects.Beam; +import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; +import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.RainbowParticle; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Paralysis; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; +import com.shatteredpixel.shatteredpixeldungeon.levels.Level; +import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; +import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Callback; +import com.watabou.utils.Random; + +import java.util.Arrays; +import java.util.HashSet; + +/** + * Created by Evan on 10/04/2015. + */ +public class WandOfPrismaticLight extends Wand { + + { + name = "Wand of Prismatic Light"; + //TODO: final sprite + image = ItemSpriteSheet.WAND_PRISMATIC_LIGHT; + + collisionProperties = Ballistica.MAGIC_BOLT; + } + + //FIXME: this is sloppy + private static HashSet evilMobs = new HashSet(Arrays.asList( + //Any Location + Mimic.class, Wraith.class, + //Sewers + Ghost.FetidRat.class, + Goo.class, + //Prison + Skeleton.class , Thief.class, Bandit.class, + //Caves + + //City + Warlock.class, Monk.class, Senior.class, + King.class, King.Undead.class, + //Halls + Succubus.class, Eye.class, Scorpio.class, Acidic.class, + Yog.class, Yog.RottingFist.class, Yog.BurningFist.class, Yog.Larva.class + )); + + @Override + protected void onZap(Ballistica beam) { + Char ch = Actor.findChar(beam.collisionPos); + if (ch != null){ + affectTarget(ch); + } + affectMap(beam); + + if (curUser.viewDistance < 4) + Buff.prolong( curUser, Light.class, 10f+level*5); + } + + private void affectTarget(Char ch){ + //TODO: final balancing + int dmg = Random.NormalIntRange(level, (int) (8+(level*(level/5f)))); + + //two in (5+lvl) chance of failing + if (Random.Int(5+level) >= 2) { + Buff.prolong(ch, Blindness.class, 2f + (level * 0.5f)); + ch.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 6 ); + } + + if (evilMobs.contains(ch.getClass())){ + ch.sprite.emitter().start( ShadowParticle.UP, 0.05f, 10+level ); + Sample.INSTANCE.play(Assets.SND_BURNING); + + ch.damage((int)(dmg*1.5), this); + } else { + ch.sprite.centerEmitter().burst( RainbowParticle.BURST, 10+level ); + + ch.damage(dmg, this); + } + + } + + private void affectMap(Ballistica beam){ + boolean noticed = false; + for (int c: beam.subPath(0, beam.dist)){ + for (int n : Level.NEIGHBOURS9DIST2){ + int cell = c+n; + if (!Level.insideMap(cell)) + continue; + + if (Level.discoverable[cell]) + Dungeon.level.mapped[cell] = true; + + int terr = Dungeon.level.map[cell]; + if ((Terrain.flags[terr] & Terrain.SECRET) != 0) { + + Level.set( cell, Terrain.discover( terr ) ); + GameScene.updateMap(cell); + + GameScene.discoverTile( cell, terr ); + ScrollOfMagicMapping.discover(cell); + + noticed = true; + } + } + + CellEmitter.center(c).burst( RainbowParticle.BURST, Random.IntRange( 1, 2 ) ); + } + if (noticed) + Sample.INSTANCE.play( Assets.SND_SECRET ); + + Dungeon.observe(); + } + + @Override + protected void fx( Ballistica beam, Callback callback ) { + curUser.sprite.parent.add( + new Beam.LightRay(curUser.sprite.center(), DungeonTilemap.tileCenterToWorld(beam.collisionPos))); + callback.call(); + } + + @Override + public void onHit(MagesStaff staff, Char attacker, Char defender, int damage) { + //acts like stunning enchant + new Paralysis().proc(staff, attacker, defender, damage); + } + + @Override + public String desc() { + return super.desc(); + } +}