diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png
index 2cab2c07f..34ce11af5 100644
Binary files a/core/src/main/assets/items.png and b/core/src/main/assets/items.png differ
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java
index 6a8d14a96..e13041fab 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Bandit.java
@@ -38,8 +38,8 @@ public class Bandit extends Thief {
{
spriteClass = BanditSprite.class;
- //1 in 50 chance to be a crazy bandit, equates to overall 1/150 chance.
- lootChance = 0.333f;
+ //1 in 50 chance to be a crazy bandit, equates to overall 1/100 chance.
+ lootChance = 0.5f;
}
@Override
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java
index abde634f7..47fdd81d3 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DM300.java
@@ -35,9 +35,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
-import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey;
+import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
@@ -48,6 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.Camera;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
+import com.watabou.utils.PathFinder;
import com.watabou.utils.Random;
public class DM300 extends Mob {
@@ -59,8 +60,6 @@ public class DM300 extends Mob {
EXP = 30;
defenseSkill = 18;
- loot = new CapeOfThorns();
- lootChance = 0.333f;
properties.add(Property.BOSS);
properties.add(Property.INORGANIC);
@@ -146,6 +145,16 @@ public class DM300 extends Mob {
GameScene.bossSlain();
Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop();
+ //60% chance of 2 shards, 30% chance of 3, 10% chance for 4. Average of 2.5
+ int shards = Random.chances(new float[]{0, 0, 6, 3, 1});
+ for (int i = 0; i < shards; i++){
+ int ofs;
+ do {
+ ofs = PathFinder.NEIGHBOURS8[Random.Int(8)];
+ } while (!Dungeon.level.passable[pos + ofs]);
+ Dungeon.level.drop( new MetalShard(), pos + ofs ).sprite.drop( pos );
+ }
+
Badges.validateBossSlain();
LloydsBeacon beacon = Dungeon.hero.belongings.getItem(LloydsBeacon.class);
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java
index 98d4ba4be..a91d3e404 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Goo.java
@@ -33,8 +33,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
-import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey;
+import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
@@ -56,9 +56,6 @@ public class Goo extends Mob {
defenseSkill = 8;
spriteClass = GooSprite.class;
- loot = new LloydsBeacon();
- lootChance = 0.333f;
-
properties.add(Property.BOSS);
properties.add(Property.DEMONIC);
properties.add(Property.ACIDIC);
@@ -236,6 +233,16 @@ public class Goo extends Mob {
GameScene.bossSlain();
Dungeon.level.drop( new SkeletonKey( Dungeon.depth ), pos ).sprite.drop();
+ //60% chance of 2 blobs, 30% chance of 3, 10% chance for 4. Average of 2.5
+ int blobs = Random.chances(new float[]{0, 0, 6, 3, 1});
+ for (int i = 0; i < blobs; i++){
+ int ofs;
+ do {
+ ofs = PathFinder.NEIGHBOURS8[Random.Int(8)];
+ } while (!Dungeon.level.passable[pos + ofs]);
+ Dungeon.level.drop( new GooBlob(), pos + ofs ).sprite.drop( pos );
+ }
+
Badges.validateBossSlain();
yell( Messages.get(this, "defeated") );
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java
index 0afc90948..80056fd2c 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Thief.java
@@ -28,10 +28,10 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
+import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Gold;
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
-import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ThiefSprite;
@@ -52,8 +52,7 @@ public class Thief extends Mob {
EXP = 5;
maxLvl = 10;
- //see createloot
- loot = null;
+ loot = Random.oneOf(Generator.Category.RING, Generator.Category.ARTIFACT);
lootChance = 0.01f;
WANDERING = new Wandering();
@@ -102,15 +101,6 @@ public class Thief extends Mob {
}
super.rollToDropLoot();
}
-
- @Override
- protected Item createLoot(){
- if (!Dungeon.LimitedDrops.THIEVES_ARMBAND.dropped()) {
- Dungeon.LimitedDrops.THIEVES_ARMBAND.drop();
- return new MasterThievesArmband().identify();
- } else
- return new Gold(Random.NormalIntRange(100, 250));
- }
@Override
public int attackSkill( Char target ) {
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 55d4d75d5..20d47f069 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java
@@ -224,7 +224,7 @@ public class Generator {
return item instanceof Bag ? Integer.MAX_VALUE : Integer.MAX_VALUE - 1;
}
- private static final float[] INITIAL_ARTIFACT_PROBS = new float[]{ 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1};
+ private static final float[] INITIAL_ARTIFACT_PROBS = new float[]{ 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1};
static {
GOLD.classes = new Class>[]{
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java
new file mode 100644
index 000000000..09e14b8a7
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/GooBlob.java
@@ -0,0 +1,48 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2018 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.quest;
+
+import com.shatteredpixel.shatteredpixeldungeon.items.Item;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+
+public class GooBlob extends Item {
+
+ {
+ image = ItemSpriteSheet.BLOB;
+ stackable = true;
+ }
+
+ @Override
+ public boolean isUpgradable() {
+ return false;
+ }
+
+ @Override
+ public boolean isIdentified() {
+ return true;
+ }
+
+ @Override
+ public int price() {
+ return 40;
+ }
+}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java
new file mode 100644
index 000000000..88ac4c2d7
--- /dev/null
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MetalShard.java
@@ -0,0 +1,48 @@
+/*
+ * Pixel Dungeon
+ * Copyright (C) 2012-2015 Oleg Dolya
+ *
+ * Shattered Pixel Dungeon
+ * Copyright (C) 2014-2018 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.quest;
+
+import com.shatteredpixel.shatteredpixeldungeon.items.Item;
+import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
+
+public class MetalShard extends Item {
+
+ {
+ image = ItemSpriteSheet.SHARD;
+ stackable = true;
+ }
+
+ @Override
+ public boolean isUpgradable() {
+ return false;
+ }
+
+ @Override
+ public boolean isIdentified() {
+ return true;
+ }
+
+ @Override
+ public int price() {
+ return 80;
+ }
+}
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 cb6c4f79d..58e874217 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java
@@ -33,13 +33,11 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.RogueArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.WarriorArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit;
-import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty;
-import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
@@ -219,13 +217,13 @@ public enum Catalog {
RINGS.seen.put( RingOfWealth.class, false);
ARTIFACTS.seen.put( AlchemistsToolkit.class, false);
- ARTIFACTS.seen.put( CapeOfThorns.class, false);
+ //ARTIFACTS.seen.put( CapeOfThorns.class, false);
ARTIFACTS.seen.put( ChaliceOfBlood.class, false);
ARTIFACTS.seen.put( CloakOfShadows.class, false);
ARTIFACTS.seen.put( DriedRose.class, false);
ARTIFACTS.seen.put( EtherealChains.class, false);
ARTIFACTS.seen.put( HornOfPlenty.class, false);
- ARTIFACTS.seen.put( LloydsBeacon.class, false);
+ //ARTIFACTS.seen.put( LloydsBeacon.class, false);
ARTIFACTS.seen.put( MasterThievesArmband.class, false);
ARTIFACTS.seen.put( SandalsOfNature.class, false);
ARTIFACTS.seen.put( TalismanOfForesight.class, false);
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 616b7dd41..809961bbe 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java
@@ -588,6 +588,8 @@ public class ItemSpriteSheet {
public static final int PICKAXE = QUEST+4;
public static final int ORE = QUEST+5;
public static final int TOKEN = QUEST+6;
+ public static final int BLOB = QUEST+7;
+ public static final int SHARD = QUEST+8;
static{
assignItemRect(SKULL, 16, 11);
assignItemRect(DUST, 12, 11);
@@ -596,6 +598,8 @@ public class ItemSpriteSheet {
assignItemRect(PICKAXE, 14, 14);
assignItemRect(ORE, 15, 15);
assignItemRect(TOKEN, 12, 12);
+ assignItemRect(BLOB, 10, 9);
+ assignItemRect(SHARD, 8, 10);
}
private static final int BAGS = xy(1, 31); //16 slots
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 4ac7ac57b..d26cd1104 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
@@ -260,8 +260,8 @@ items.artifacts.lloydsbeacon.desc=Lloyd's beacon is an intricate magical device
items.artifacts.lloydsbeacon.desc_set=This beacon was set somewhere on the level %d of Pixel Dungeon.
items.artifacts.masterthievesarmband.name=master thieves' armband
-items.artifacts.masterthievesarmband.desc=This purple velvet armband bears the mark of a master thief. This doesn't belong to you, but it probably didn't belong to the person you took it from either.
-items.artifacts.masterthievesarmband.desc_worn=With the armband around your wrist, every piece of gold you find makes you desire other people's property more. Perhaps it wouldn't be too hard to steal from pixel mart...
+items.artifacts.masterthievesarmband.desc=This purple velvet armband bears the mark of a master thief. This doesn't belong to you, but it probably didn't belong to its last user either.
+items.artifacts.masterthievesarmband.desc_worn=With the armband around your wrist, every piece of gold you find makes you desire other people's property more. Perhaps it wouldn't be too hard to steal from a shop...
items.artifacts.sandalsofnature.name=sandals of nature
items.artifacts.sandalsofnature.name_1=shoes of nature
@@ -672,6 +672,12 @@ items.quest.dwarftoken.desc=Many dwarves and some of their larger creations carr
items.quest.embers.name=elemental embers
items.quest.embers.desc=Special embers which can only be harvested from young fire elementals. They radiate thermal energy.
+items.quest.gooblob.name=blob of goo
+items.quest.gooblob.desc=A jiggly blob of goop, split off from Goo as it died. It's almost like a big ball of jelly, though you wouldn't dare eat it.\n\nIt does nothing on its own, but perhaps it could be used as an ingredient. At the very least it should sell for a decent price.
+
+items.quest.metalshard.name=cursed metal shard
+items.quest.metalshard.desc=A shard of rusted cursed metal, which broke off DM-300 as it was destroyed. You can feel an inactive malevolent magic within it.\n\nIt does nothing on its own, but perhaps it could be used as an ingredient. At the very least it should sell for a decent price.
+
items.quest.pickaxe.name=pickaxe
items.quest.pickaxe.ac_mine=MINE
items.quest.pickaxe.no_vein=There is no dark gold vein near you to mine.