diff --git a/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Item.java b/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Item.java index 4135d6d..1de094a 100644 --- a/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Item.java +++ b/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Item.java @@ -91,6 +91,8 @@ public enum Item { Slime("Slime", 340, new String[] {"Smelly", "and sticky.", "A bit like glue."}, 0, null, null, null, null), Fur("Fur", 346, new String[] {"From the hide", "of some wild beast."}, 0, null, null, null, null), Duranium("Duranium", 347, new String[] {"A magical material", "incredibly strong."}, 0, null, null, null, null), + + MagicLamp("Magic Lamp", 352, new String[] {"No wishing for","more wishes"}, 0, null, null, Usable.of("Rub", magicLamp()), null), ; public final String name; @@ -113,6 +115,19 @@ public enum Item { this.combat = combat; } + private static UsableFunc magicLamp() { + + return (i, g) -> { + g.getRun().pg.inventoryAdd(i, -1); // remove lamp + g.getLog().add(15, "You rub ", 14, i.name, 15, " and express your wishes!"); + g.getRun().pg.addEffect(Effect.BARRIER, 20); + g.getRun().pg.addEffect(Effect.MAGNETIC, 20); + g.getRun().pg.addEffect(Effect.MUSCLES, 20); + g.getRun().pg.addEffect(Effect.REGENERATION, 20); + g.getRun().pg.addEffect(Effect.LUCKY, 20); + }; + } + private static UsableFunc bagOfGold() { return (i, g) -> { int num = DoorsOfDoom.r.nextInt(21) + 20; diff --git a/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/MonsterDef.java b/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/MonsterDef.java index aa84846..c5ce86e 100644 --- a/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/MonsterDef.java +++ b/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/MonsterDef.java @@ -324,6 +324,17 @@ public enum MonsterDef { Loot.of(1, Item.BagOfGold, range(2, 3)), Loot.of(1, Item.Blood, range(4, 6)) ), + TROLL( + "TROLL", -41, + range(50, 80), + range(25, 50), + range(80, 100), + range(10, 15), + Loot.of(2, Item.Armour, range(1, 1)), + Loot.of(1, Item.Clover, range(2, 3)), + Loot.of(1, Item.Spinach, range(2, 3)), + Loot.of(1, Item.Slime, range(3, 5)) + ), DEVIL( "DEVIL", -24, range(100, 200), // hp @@ -360,6 +371,18 @@ public enum MonsterDef { Loot.of(1, Item.Venom, range(5, 8)), Loot.of(1, Item.BigPotion, range(2, 3)) ), + GENIE( + "GENIE", -42, + range(80, 100), + range(60, 80), + range(130, 1000), + range(10, 20), + Loot.of(10, Item.Phlogiston, range(3, 5)), + Loot.of(10, Item.BigPotion, range(2, 2)), + Loot.of(10, Item.BagOfGold, range(1, 1)), + Loot.of(1, Item.MagicLamp, range(1, 1)) + ), + DUNGEON_BOSS( "DUNGEON BOSS", -37, range(400, 400), diff --git a/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Pg.java b/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Pg.java index 7f1512e..cb1d2d1 100644 --- a/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Pg.java +++ b/doorsofdoom/src/main/java/com/github/msx80/doorsofdoom/model/Pg.java @@ -47,6 +47,7 @@ void ricalcola() { Item e = this.equip.get(p); if (e != null) arm += e.armour; } + if(arm>=100) arm = 99; // do not exceed 99% this.armour = arm; // maxHp @@ -125,7 +126,12 @@ public boolean isEquipped(Item item) { public void addEffect(Effect e) { - effects.put(e, effects.getOrDefault(e, 0) + e.turns); + addEffect(e, e.turns); + } + + + public void addEffect(Effect e, int turns) { + effects.put(e, effects.getOrDefault(e, 0) + turns); ricalcola(); } diff --git a/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet4.png b/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet4.png index 09bb1d4..224a73e 100644 Binary files a/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet4.png and b/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet4.png differ diff --git a/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet5.png b/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet5.png index 6539632..452791e 100644 Binary files a/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet5.png and b/doorsofdoom/src/main/resources/com/github/msx80/doorsofdoom/sheet5.png differ