From b8f4160a5d361a2af4249ac3c16c2bf5adcd62de Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 4 Feb 2018 22:38:59 -0500 Subject: [PATCH] v0.6.3: overhauled tipped darts --- .../ShatteredPixelDungeon.java | 47 ++++++---- .../shatteredpixeldungeon/actors/Char.java | 3 +- .../items/Generator.java | 12 +-- .../shatteredpixeldungeon/items/Recipe.java | 2 +- .../items/potions/PotionOfHealing.java | 11 +-- .../items/weapon/missiles/MissileWeapon.java | 1 + .../weapon/missiles/darts/BlindingDart.java | 43 ++++++++++ .../weapon/missiles/darts/ChillingDart.java | 47 ++++++++++ .../weapon/missiles/{ => darts}/Dart.java | 3 +- .../weapon/missiles/darts/DisplacingDart.java | 86 +++++++++++++++++++ .../weapon/missiles/darts/HealingDart.java | 46 ++++++++++ .../items/weapon/missiles/darts/HolyDart.java | 42 +++++++++ .../missiles/{ => darts}/IncendiaryDart.java | 2 +- .../ParalyticDart.java} | 10 +-- .../weapon/missiles/darts/PoisonDart.java | 43 ++++++++++ .../items/weapon/missiles/darts/RotDart.java | 50 +++++++++++ .../weapon/missiles/darts/ShockingDart.java | 52 +++++++++++ .../weapon/missiles/darts/SleepDart.java | 50 +++++++++++ .../missiles/{ => darts}/TippedDart.java | 48 ++++++++--- .../levels/rooms/special/ShopRoom.java | 4 +- .../levels/traps/PoisonDartTrap.java | 4 +- .../levels/traps/WornDartTrap.java | 2 +- .../mechanics/ShadowCaster.java | 2 +- .../sprites/GnollTricksterSprite.java | 4 +- .../sprites/ItemSpriteSheet.java | 10 +-- .../sprites/ScorpioSprite.java | 2 +- .../windows/WndAlchemy.java | 2 +- .../shatteredpixeldungeon/windows/WndBag.java | 2 +- .../messages/actors/actors.properties | 2 +- .../messages/items/items.properties | 46 ++++++++-- .../messages/windows/windows.properties | 2 +- 31 files changed, 605 insertions(+), 75 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/BlindingDart.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ChillingDart.java rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/{ => darts}/Dart.java (93%) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/DisplacingDart.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HealingDart.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/{ => darts}/IncendiaryDart.java (99%) rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/{CurareDart.java => darts/ParalyticDart.java} (86%) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/PoisonDart.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/RotDart.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/SleepDart.java rename core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/{ => darts}/TippedDart.java (63%) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 6fe477aa6..e37ece691 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -24,7 +24,6 @@ package com.shatteredpixel.shatteredpixeldungeon; import android.content.pm.ActivityInfo; import android.os.Build; import android.os.Bundle; -import android.util.Log; import android.view.View; import android.view.WindowManager; @@ -57,24 +56,6 @@ public class ShatteredPixelDungeon extends Game { public ShatteredPixelDungeon() { super( WelcomeScene.class ); - //v0.6.3 - com.watabou.utils.Bundle.addAlias( - com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk.class, - "com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tamahawk" ); - - com.watabou.utils.Bundle.addAlias( - com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion.class, - "com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom" ); - com.watabou.utils.Bundle.addAlias( - com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas.class, - "com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas" ); - com.watabou.utils.Bundle.addAlias( - com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion.class, - "com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Venom" ); - com.watabou.utils.Bundle.addAlias( - com.shatteredpixel.shatteredpixeldungeon.levels.traps.CorrosionTrap.class, - "com.shatteredpixel.shatteredpixeldungeon.levels.traps.VenomTrap" ); - //v0.6.0 com.watabou.utils.Bundle.addAlias( com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MassGraveRoom.Bones.class, @@ -131,6 +112,34 @@ public class ShatteredPixelDungeon extends Game { com.shatteredpixel.shatteredpixeldungeon.actors.buffs.BlobImmunity.class, "com.shatteredpixel.shatteredpixeldungeon.actors.buffs.GasesImmunity" ); + //v0.6.3 + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk.class, + "com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tamahawk" ); + + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart.class, + "com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.IncendiaryDart.class, + "com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.IncendiaryDart" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.ParalyticDart.class, + "com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart" ); + + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion.class, + "com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas.class, + "com.shatteredpixel.shatteredpixeldungeon.actors.blobs.VenomGas" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion.class, + "com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Venom" ); + com.watabou.utils.Bundle.addAlias( + com.shatteredpixel.shatteredpixeldungeon.levels.traps.CorrosionTrap.class, + "com.shatteredpixel.shatteredpixeldungeon.levels.traps.VenomTrap" ); + } @SuppressWarnings("deprecation") diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 3838dd66b..7ece04901 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -59,6 +59,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Blazin import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Grim; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shocking; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.ShockingDart; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.features.Door; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -558,7 +559,7 @@ public abstract class Char extends Actor { new HashSet( Arrays.asList(Burning.class, Blazing.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)), + ELECTRIC ( new HashSet( Arrays.asList(WandOfLightning.class, Shocking.class, Potential.class, Electricity.class, ShockingDart.class)), new HashSet()), IMMOVABLE; 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 5c01c59a3..9deb4f73d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -87,6 +87,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave; +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.WandOfFireblast; @@ -96,7 +97,6 @@ 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.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; @@ -124,10 +124,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Whip; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.FishingSpear; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.IncendiaryDart; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Javelin; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken; @@ -135,6 +132,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingHa import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Trident; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.IncendiaryDart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.ParalyticDart; import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; import com.shatteredpixel.shatteredpixeldungeon.plants.Blindweed; import com.shatteredpixel.shatteredpixeldungeon.plants.Dreamfoil; @@ -334,9 +334,9 @@ public class Generator { MIS_T2.classes = new Class[]{ Shuriken.class, IncendiaryDart.class, - CurareDart.class + ParalyticDart.class, }; - MIS_T2.probs = new float[]{ 5, 2, 2 }; + MIS_T2.probs = new float[]{ 8, 3, 3 }; MIS_T3.classes = new Class[]{ FishingSpear.class, diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java index f15f2b99d..8fb7e8946 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Recipe.java @@ -24,7 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.TippedDart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart; import java.util.ArrayList; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java index 8ae4e0cd3..5e13c87e9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/PotionOfHealing.java @@ -21,6 +21,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.potions; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; @@ -48,11 +49,11 @@ public class PotionOfHealing extends Potion { GLog.p( Messages.get(this, "heal") ); } - public static void cure( Hero hero ) { - Buff.detach( hero, Poison.class ); - Buff.detach( hero, Cripple.class ); - Buff.detach( hero, Weakness.class ); - Buff.detach( hero, Bleeding.class ); + public static void cure( Char ch ) { + Buff.detach( ch, Poison.class ); + Buff.detach( ch, Cripple.class ); + Buff.detach( ch, Weakness.class ); + Buff.detach( ch, Bleeding.class ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java index cde6aa885..b7e064c80 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/MissileWeapon.java @@ -33,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfSharpshooting; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Projecting; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.watabou.utils.Bundle; import com.watabou.utils.Random; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/BlindingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/BlindingDart.java new file mode 100644 index 000000000..e40e331f4 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/BlindingDart.java @@ -0,0 +1,43 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + + +public class BlindingDart extends TippedDart { + + { + image = ItemSpriteSheet.BLINDING_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + Buff.affect(defender, Blindness.class, 10f); + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ChillingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ChillingDart.java new file mode 100644 index 000000000..c4f54c20c --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ChillingDart.java @@ -0,0 +1,47 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class ChillingDart extends TippedDart { + + { + image = ItemSpriteSheet.CHILLING_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + if (Dungeon.level.water[defender.pos]){ + Buff.prolong(defender, Chill.class, 10f); + } else { + Buff.prolong(defender, Chill.class, 6f); + } + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Dart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java similarity index 93% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Dart.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java index fe9ea022b..4fe122c06 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Dart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/Dart.java @@ -19,9 +19,10 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; public class Dart extends MissileWeapon { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/DisplacingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/DisplacingDart.java new file mode 100644 index 000000000..633de97ad --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/DisplacingDart.java @@ -0,0 +1,86 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation; +import com.shatteredpixel.shatteredpixeldungeon.mechanics.ShadowCaster; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.utils.Random; + +import java.util.ArrayList; +import java.util.HashMap; + +public class DisplacingDart extends TippedDart { + + { + image = ItemSpriteSheet.DISPLACING_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + if (!defender.properties().contains(Char.Property.IMMOVABLE)){ + + int startDist = Dungeon.level.distance(attacker.pos, defender.pos); + + HashMap> positions = new HashMap<>(); + + for (int pos = 0; pos < Dungeon.level.length(); pos++){ + if (Dungeon.level.heroFOV[pos] + && Dungeon.level.passable[pos] + && Actor.findChar(pos) == null){ + + int dist = Dungeon.level.distance(attacker.pos, pos); + if (dist > startDist){ + if (positions.get(dist) == null){ + positions.put(dist, new ArrayList()); + } + positions.get(dist).add(pos); + } + + } + } + + float[] probs = new float[ShadowCaster.MAX_DISTANCE+1]; + + for (int i = 0; i <= ShadowCaster.MAX_DISTANCE; i++){ + if (positions.get(i) != null){ + probs[i] = i - startDist; + } + } + + int chosenDist = Random.chances(probs); + + if (chosenDist != -1){ + int pos = positions.get(chosenDist).get(Random.index(positions.get(chosenDist))); + ScrollOfTeleportation.appear( defender, pos ); + Dungeon.level.press( pos, defender ); + } + + } + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HealingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HealingDart.java new file mode 100644 index 000000000..f20f85c35 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HealingDart.java @@ -0,0 +1,46 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class HealingDart extends TippedDart { + + { + image = ItemSpriteSheet.HEALING_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + //heals 30 hp at base, scaling with enemy HT + Buff.affect( defender, Healing.class ).setHeal((int)(0.5f*defender.HT + 30), 0.333f, 0); + PotionOfHealing.cure( defender ); + + return super.proc(attacker, defender, damage); + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java new file mode 100644 index 000000000..81aff56d1 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/HolyDart.java @@ -0,0 +1,42 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bless; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class HolyDart extends TippedDart { + + { + image = ItemSpriteSheet.HOLY_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + Buff.affect(defender, Bless.class, 20f); + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/IncendiaryDart.java similarity index 99% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/IncendiaryDart.java index 5b362deaf..43e318120 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/IncendiaryDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/IncendiaryDart.java @@ -19,7 +19,7 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/CurareDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ParalyticDart.java similarity index 86% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/CurareDart.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ParalyticDart.java index 007fcc845..69e0af7f5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/CurareDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ParalyticDart.java @@ -19,24 +19,22 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -public class CurareDart extends TippedDart { - - public static final float DURATION = 3f; +public class ParalyticDart extends TippedDart { { - image = ItemSpriteSheet.CURARE_DART; + image = ItemSpriteSheet.PARALYTIC_DART; } @Override public int proc( Char attacker, Char defender, int damage ) { - Buff.prolong( defender, Paralysis.class, DURATION ); + Buff.prolong( defender, Paralysis.class, 5f ); return super.proc( attacker, defender, damage ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/PoisonDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/PoisonDart.java new file mode 100644 index 000000000..db52534b2 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/PoisonDart.java @@ -0,0 +1,43 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class PoisonDart extends TippedDart { + + { + image = ItemSpriteSheet.POISON_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + Buff.affect( defender, Poison.class ).set( 3 + Dungeon.depth / 3 ); + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/RotDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/RotDart.java new file mode 100644 index 000000000..81a9873dd --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/RotDart.java @@ -0,0 +1,50 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + + +public class RotDart extends TippedDart { + + { + image = ItemSpriteSheet.ROT_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + if (defender.properties().contains(Char.Property.BOSS) + || defender.properties().contains(Char.Property.MINIBOSS)){ + Buff.affect(defender, Corrosion.class).set(5f, Dungeon.depth/3); + } else{ + Buff.affect(defender, Corrosion.class).set(10f, Dungeon.depth); + } + + return super.proc(attacker, defender, damage); + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java new file mode 100644 index 000000000..fd13fa6f9 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/ShockingDart.java @@ -0,0 +1,52 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.effects.Lightning; +import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.utils.PointF; +import com.watabou.utils.Random; + +import java.util.ArrayList; + +public class ShockingDart extends TippedDart { + + { + image = ItemSpriteSheet.SHOCKING_DART; + } + + @Override + public int proc(Char attacker, Char defender, int damage) { + + defender.damage(Random.NormalIntRange(8, 12), this); + + CharSprite s = defender.sprite; + ArrayList arcs = new ArrayList<>(); + arcs.add(new Lightning.Arc(new PointF(s.x, s.y + s.height/2), new PointF(s.x + s.width, s.y + s.height/2))); + arcs.add(new Lightning.Arc(new PointF(s.x + s.width/2, s.y), new PointF(s.x + s.width/2, s.y + s.height))); + defender.sprite.parent.add( new Lightning( arcs, null ) ); + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/SleepDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/SleepDart.java new file mode 100644 index 000000000..47847b789 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/SleepDart.java @@ -0,0 +1,50 @@ +/* + * 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.items.weapon.missiles.darts; + +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class SleepDart extends TippedDart { + + { + image = ItemSpriteSheet.SLEEP_DART; + } + + @Override + public int proc(Char attacker, final Char defender, int damage) { + + //need to delay this so damage from the dart doesn't break the sleep + new FlavourBuff(){ + {actPriority = VFX_PRIO;} + public boolean act() { + Buff.affect( defender, Sleep.class ); + return super.act(); + } + }.attachTo(defender); + + return super.proc(attacker, defender, damage); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java similarity index 63% rename from core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java rename to core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java index a8c243ab6..aca9293c2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/TippedDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java @@ -19,19 +19,30 @@ * along with this program. If not, see */ -package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles; +package com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.PinCushion; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Recipe; +import com.shatteredpixel.shatteredpixeldungeon.plants.Blindweed; +import com.shatteredpixel.shatteredpixeldungeon.plants.Dreamfoil; import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot; +import com.shatteredpixel.shatteredpixeldungeon.plants.Fadeleaf; import com.shatteredpixel.shatteredpixeldungeon.plants.Firebloom; +import com.shatteredpixel.shatteredpixeldungeon.plants.Icecap; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; +import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry; +import com.shatteredpixel.shatteredpixeldungeon.plants.Sorrowmoss; +import com.shatteredpixel.shatteredpixeldungeon.plants.Starflower; +import com.shatteredpixel.shatteredpixeldungeon.plants.Stormvine; +import com.shatteredpixel.shatteredpixeldungeon.plants.Sungrass; import java.util.ArrayList; +import java.util.HashMap; public abstract class TippedDart extends Dart { @@ -57,6 +68,20 @@ public abstract class TippedDart extends Dart { return 6 * quantity; } + private static HashMap, Class> types = new HashMap<>(); + { + types.put(Blindweed.Seed.class, BlindingDart.class); + types.put(Dreamfoil.Seed.class, SleepDart.class); + types.put(Earthroot.Seed.class, ParalyticDart.class); + types.put(Fadeleaf.Seed.class, DisplacingDart.class); + types.put(Firebloom.Seed.class, IncendiaryDart.class); + types.put(Icecap.Seed.class, ChillingDart.class); + types.put(Rotberry.Seed.class, RotDart.class); + types.put(Sorrowmoss.Seed.class, PoisonDart.class); + types.put(Starflower.Seed.class, HolyDart.class); + types.put(Stormvine.Seed.class, ShockingDart.class); + types.put(Sungrass.Seed.class, HealingDart.class); + } public static class TipDart extends Recipe{ @@ -85,7 +110,7 @@ public abstract class TippedDart extends Dart { if (ingredients.get(0).quantity() >= 2 && seed.quantity() >= 1 - && (seed instanceof Firebloom.Seed || seed instanceof Earthroot.Seed)){ + && types.containsKey(seed.getClass())){ return true; } @@ -104,21 +129,24 @@ public abstract class TippedDart extends Dart { ingredients.get(0).quantity(ingredients.get(0).quantity() - 2); ingredients.get(1).quantity(ingredients.get(1).quantity() - 1); - if (ingredients.get(1) instanceof Firebloom.Seed){ - return new IncendiaryDart().quantity(2); - } else { - return new CurareDart().quantity(2); + try{ + return types.get(ingredients.get(1).getClass()).newInstance().quantity(2); + } catch (Exception e) { + ShatteredPixelDungeon.reportException(e); + return null; } + } @Override public Item sampleOutput(ArrayList ingredients) { if (!testIngredients(ingredients)) return null; - if (ingredients.get(1) instanceof Firebloom.Seed){ - return new IncendiaryDart().quantity(2); - } else { - return new CurareDart().quantity(2); + try{ + return types.get(ingredients.get(1).getClass()).newInstance().quantity(2); + } catch (Exception e) { + ShatteredPixelDungeon.reportException(e); + return null; } } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java index badb9d696..5c27cc4f2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/ShopRoom.java @@ -62,14 +62,14 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.FishingSpear; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.IncendiaryDart; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Javelin; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingHammer; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Trident; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.IncendiaryDart; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java index 043876baa..a08050b2f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/PoisonDartTrap.java @@ -28,7 +28,7 @@ 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.Poison; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.PoisonDart; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite; import com.watabou.noosa.audio.Sample; @@ -77,7 +77,7 @@ public class PoisonDartTrap extends Trap { protected boolean act() { final Actor toRemove = this; ((MissileSprite) ShatteredPixelDungeon.scene().recycle(MissileSprite.class)). - reset(pos, finalTarget.sprite, new Dart(), new Callback() { + reset(pos, finalTarget.sprite, new PoisonDart(), new Callback() { @Override public void call() { int dmg = Random.NormalIntRange(1, 4) - finalTarget.drRoll(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java index 4150158dc..2303b1e4a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/traps/WornDartTrap.java @@ -26,7 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite; import com.watabou.noosa.audio.Sample; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/ShadowCaster.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/ShadowCaster.java index fe79549aa..62d6f836c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/ShadowCaster.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/mechanics/ShadowCaster.java @@ -27,7 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.utils.BArray; //based on: http://www.roguebasin.com/index.php?title=FOV_using_recursive_shadowcasting public final class ShadowCaster { - private static final int MAX_DISTANCE = 8; + public static final int MAX_DISTANCE = 8; //max length of rows as FOV moves out, for each FOV distance //This is used to make the overall FOV circular, instead of square diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java index 758d9c8ae..b05c70d22 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/GnollTricksterSprite.java @@ -23,7 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.ParalyticDart; import com.watabou.noosa.MovieClip; import com.watabou.noosa.TextureFilm; import com.watabou.utils.Callback; @@ -61,7 +61,7 @@ public class GnollTricksterSprite extends MobSprite { if (!Dungeon.level.adjacent(cell, ch.pos)) { ((MissileSprite)parent.recycle( MissileSprite.class )). - reset( ch.pos, cell, new CurareDart(), new Callback() { + reset( ch.pos, cell, new ParalyticDart(), new Callback() { @Override public void call() { ch.onAttackComplete(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index 8fb76f12d..8d6ff1b81 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -244,17 +244,17 @@ public class ItemSpriteSheet { } public static final int TIPPED_DARTS = xy(1, 11); //16 slots - public static final int ADRENALINE_DART = TIPPED_DARTS+0; + public static final int ROT_DART = TIPPED_DARTS+0; public static final int INCENDIARY_DART = TIPPED_DARTS+1; public static final int HOLY_DART = TIPPED_DARTS+2; public static final int BLINDING_DART = TIPPED_DARTS+3; public static final int HEALING_DART = TIPPED_DARTS+4; - public static final int FREEZING_DART = TIPPED_DARTS+5; - public static final int VERTIGO_DART = TIPPED_DARTS+6; + public static final int CHILLING_DART = TIPPED_DARTS+5; + public static final int SHOCKING_DART = TIPPED_DARTS+6; public static final int POISON_DART = TIPPED_DARTS+7; public static final int SLEEP_DART = TIPPED_DARTS+8; - public static final int CURARE_DART = TIPPED_DARTS+9; - public static final int WARPING_DART = TIPPED_DARTS+10; + public static final int PARALYTIC_DART = TIPPED_DARTS+9; + public static final int DISPLACING_DART = TIPPED_DARTS+10; static { for (int i = TIPPED_DARTS; i < TIPPED_DARTS+16; i++) assignItemRect(i, 15, 15); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java index d0c0529c2..953cc8421 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ScorpioSprite.java @@ -23,7 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.watabou.noosa.TextureFilm; import com.watabou.utils.Callback; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndAlchemy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndAlchemy.java index 1d6dc4645..9c26c0270 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndAlchemy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndAlchemy.java @@ -27,7 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Recipe; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java index 646d10b61..9eb5cb5f2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBag.java @@ -43,7 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang; -import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Dart; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.BlandfruitBush; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant.Seed; 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 15b849b61..e972779fc 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 @@ -221,7 +221,7 @@ 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.corrosion.desc=Powerful acid melts away flesh, metal, and bone at an alarming rate.\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 383f26bb0..a3a6c0722 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 @@ -927,6 +927,45 @@ items.weapon.melee.wornshortsword.desc=A quite short sword, worn down through he ###missile weapons +items.weapon.missiles.darts.blindingdart.name=blinding dart +items.weapon.missiles.darts.blindingdart.desc=These darts are tipped with a blindweed-based compound which will blind their target for a short time. They do not disorient however, so an enemy will still know where they last saw you. + +items.weapon.missiles.darts.chillingdart.name=chilling dart +items.weapon.missiles.darts.chillingdart.desc=These darts are tipped with an icecap-based compound which will significantly chill their target. + +items.weapon.missiles.darts.dart.name=dart +items.weapon.missiles.darts.dart.desc=These simple shafts of spike-tipped wood are weighted to fly true and sting their prey with a flick of the wrist. +items.weapon.missiles.darts.dart.durability=Due to their size and simple construction, darts will never break from use. However specially tipped darts will lose their effect after one use. + +items.weapon.missiles.darts.displacingdart.name=displacing dart +items.weapon.missiles.darts.displacingdart.desc=These darts are tipped with a fadeleaf-based compound which will teleport their target a short distance away. + +items.weapon.missiles.darts.healingdart.name=healing dart +items.weapon.missiles.darts.healingdart.desc=These darts are tipped with a sungrass-based compound which grants a burst of healing to their target. The dart itself is still harmful though. + +items.weapon.missiles.darts.holydart.name=holy dart +items.weapon.missiles.darts.holydart.desc=These darts are tipped with a starflower-based compound which grants a boost in power to their target. The dart itself is still harmful though. + +items.weapon.missiles.darts.paralyticdart.name=paralytic dart +items.weapon.missiles.darts.paralyticdart.desc=These darts are tipped with an earthroot-based compound which will paralyze their target for a short time. + +items.weapon.missiles.darts.incendiarydart.name=incendiary dart +items.weapon.missiles.darts.incendiarydart.desc=These darts are tipped with a firebloom-based compound which will burst into brilliant flames on impact. + +items.weapon.missiles.darts.poisondart.name=poison dart +items.weapon.missiles.darts.poisondart.desc=These darts are tipped with a sorrowmoss-based compound which will poison their target. + +items.weapon.missiles.darts.rotdart.name=rot dart +items.weapon.missiles.darts.rotdart.desc=These wicked darts are tipped with an acidic rotberry-based compound, which will aggressively eat through anything the dart comes into contact with. Powerful foes will resist most of the effect, but the corrosion is strong enough to easily kill most standard enemies. + +items.weapon.missiles.darts.shockingdart.name=shocking dart +items.weapon.missiles.darts.shockingdart.desc=These darts are tipped with a stormvine-based compound which will deliver a nasty shock to their target. + +items.weapon.missiles.darts.sleepdart.name=sleep dart +items.weapon.missiles.darts.sleepdart.desc=These darts are tipped with a dreamfoil-based compound which will instantly put their target into a light sleep. + + + items.weapon.missiles.bolas.name=bolas items.weapon.missiles.bolas.desc=These unusual ranged weapons aren't very damaging, but they do an excellent job of slowing their targets. @@ -937,16 +976,9 @@ items.weapon.missiles.boomerang.durability=Due it its solid construction, this b items.weapon.missiles.curaredart.name=curare dart items.weapon.missiles.curaredart.desc=These darts are tipped with an earthroot-based compound which will paralyze their target for a short time. -items.weapon.missiles.dart.name=dart -items.weapon.missiles.dart.desc=These simple shafts of spike-tipped wood are weighted to fly true and sting their prey with a flick of the wrist. -items.weapon.missiles.dart.durability=Due to their size and simple construction, darts will never break from use. However specially tipped darts will lose their effect after one use. - items.weapon.missiles.fishingspear.name=fishing spear items.weapon.missiles.fishingspear.desc=Lightweight throwing spears designed for fishing. They work well as an improvised weapon too. -items.weapon.missiles.incendiarydart.name=incendiary dart -items.weapon.missiles.incendiarydart.desc=These darts are tipped with a firebloom-based compound which will burst into brilliant flames on impact. - items.weapon.missiles.javelin.name=javelin items.weapon.missiles.javelin.desc=These larger throwing spears are weighted to keep the spike at their tip foremost as they sail through the air. diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties index c7502dddd..d3d943b7c 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties @@ -4,7 +4,7 @@ windows.wndalchemy.combine=Combine windows.wndalchemy.close=Close windows.wndalchemy.select=Select an item windows.wndalchemy.recipes_title=Recipes -windows.wndalchemy.recipes_text=_Random Potion:_\nMix three seeds of any type to create a random potion. The potion is more likely to relate to one of the seeds used.\n\n_Cooked Blandfruit:_\nMix a blandfruit with one seed to imbue the blandfruit with that seed's properties.\n\n_Tipped Darts:_\nMix two regular darts with a seed of either firebloom or earthroot to create two tipped darts! +windows.wndalchemy.recipes_text=_Random Potion:_\nMix three seeds of any type to create a random potion. The potion is more likely to relate to one of the seeds used.\n\n_Cooked Blandfruit:_\nMix a blandfruit with one seed to imbue the blandfruit with that seed's properties.\n\n_Tipped Darts:_\nMix two regular darts with a seed to create two tipped darts! windows.wndblacksmith.prompt=Ok, a deal is a deal, here's what I can do for you: I can reforge 2 items and turn them into one of a better quality. windows.wndblacksmith.select=Reforge an item