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 7d15379d1..3b3becdd0 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java
@@ -141,8 +141,10 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortswor
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.FishingSpear;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Javelin;
+import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Kunai;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken;
+import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingClub;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingHammer;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingSpear;
@@ -382,15 +384,17 @@ public class Generator {
MIS_T2.classes = new Class>[]{
FishingSpear.class,
+ ThrowingClub.class,
Shuriken.class
};
- MIS_T2.probs = new float[]{ 4, 3 };
+ MIS_T2.probs = new float[]{ 6, 5, 4 };
MIS_T3.classes = new Class>[]{
ThrowingSpear.class,
+ Kunai.class,
Bolas.class
};
- MIS_T3.probs = new float[]{ 4, 3 };
+ MIS_T3.probs = new float[]{ 6, 5, 4 };
MIS_T4.classes = new Class>[]{
Javelin.class,
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java
new file mode 100644
index 000000000..8bcd3f3cf
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/Kunai.java
@@ -0,0 +1,68 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2019 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;
+
+import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
+import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
+import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
+import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+import com.watabou.utils.Random;
+
+public class Kunai extends MissileWeapon {
+
+ {
+ image = ItemSpriteSheet.KUNAI;
+
+ tier = 3;
+ baseUses = 5;
+ }
+
+ private Char enemy;
+
+ @Override
+ protected void onThrow(int cell) {
+ enemy = Actor.findChar(cell);
+ super.onThrow(cell);
+ }
+
+ @Override
+ public int damageRoll(Char owner) {
+ if (owner instanceof Hero) {
+ Hero hero = (Hero)owner;
+ if (enemy instanceof Mob && ((Mob) enemy).surprisedBy(hero)) {
+ //deals 60% toward max to max on surprise, instead of min to max.
+ int diff = max() - min();
+ int damage = augment.damageFactor(Random.NormalIntRange(
+ min() + Math.round(diff*0.6f),
+ max()));
+ int exStr = hero.STR() - STRReq();
+ if (exStr > 0) {
+ damage += Random.IntRange(0, exStr);
+ }
+ return damage;
+ }
+ }
+ return super.damageRoll(owner);
+ }
+
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java
new file mode 100644
index 000000000..041e2c0fa
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/ThrowingClub.java
@@ -0,0 +1,41 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2019 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;
+
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+
+public class ThrowingClub extends MissileWeapon {
+
+ {
+ image = ItemSpriteSheet.THROWING_CLUB;
+
+ tier = 2;
+ baseUses = 15;
+ sticky = false;
+ }
+
+ @Override
+ public int max(int lvl) {
+ return 4 * tier + //8 base, down from 10
+ (tier) * lvl; //scaling unchanged
+ }
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java
index e19add185..d6ac6bf76 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/MissileSprite.java
@@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.FishingSpear;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Javelin;
+import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Kunai;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Shuriken;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingSpear;
@@ -85,6 +86,7 @@ public class MissileSprite extends ItemSprite implements Tweener.Listener {
ANGULAR_SPEEDS.put(ThrowingKnife.class, 0);
ANGULAR_SPEEDS.put(FishingSpear.class, 0);
ANGULAR_SPEEDS.put(ThrowingSpear.class, 0);
+ ANGULAR_SPEEDS.put(Kunai.class, 0);
ANGULAR_SPEEDS.put(Javelin.class, 0);
ANGULAR_SPEEDS.put(Trident.class, 0);
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 a61fa630b..a934ae9cd 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
@@ -1382,15 +1382,15 @@ items.weapon.missiles.boomerang.name=boomerang
items.weapon.missiles.boomerang.desc=Thrown to the enemy this flat curved wooden missile will return to the hands of its thrower.
items.weapon.missiles.boomerang.durability=Due to its solid construction, this boomerang will not break from use.
-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.fishingspear.name=fishing spear
items.weapon.missiles.fishingspear.desc=Tiny throwing spears designed for fishing. They work well as an improvised weapon too.
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.
+items.weapon.missiles.kunai.name=kunai
+items.weapon.missiles.kunai.desc=These small knives are very powerful in the hands of a skilled user. They are most effective against unaware enemies.
+
items.weapon.missiles.missileweapon.stats=This _tier-%1$d_ thrown weapon deals _%2$d-%3$d damage_ and requires _%4$d strength_ to use properly.
items.weapon.missiles.missileweapon.distance=This weapon is designed to be used at a distance, it is more accurate against distant enemies, but also much less accurate at melee range.
items.weapon.missiles.missileweapon.durability=Thrown weapons will wear out and break as they are used.
@@ -1401,6 +1401,9 @@ items.weapon.missiles.missileweapon.about_to_break=Your thrown weapon is about t
items.weapon.missiles.shuriken.name=shuriken
items.weapon.missiles.shuriken.desc=Star-shaped pieces of metal with razor-sharp blades. They are lightweight and easy to use on the move. A single shuriken can be thrown instantly after moving.
+items.weapon.missiles.throwingclub.name=throwing club
+items.weapon.missiles.throwingclub.desc=A fairly simply thrown weapon, essentially a large rock fastened to a stick. While they are a bit lacking in damage, their solid stone head means they are quite durable, and won't stick to enemies.
+
items.weapon.missiles.throwinghammer.name=throwing hammer
items.weapon.missiles.throwinghammer.desc=These hefty hammers are designed to be thrown at an enemy. While they are a bit lacking in damage, their smooth all-metal construction means they are quite durable, and won't stick to enemies.