diff --git a/data/enemies.dat b/data/enemies.dat index 20db5aa..668d236 100644 --- a/data/enemies.dat +++ b/data/enemies.dat @@ -1,4 +1,10 @@ Enemy Name: Henry Pellatt Description: The owner of the Castle -Starting Room: Circle Room -Damage Given: 25 \ No newline at end of file +Starting Room: Apple Hallway +Damage Given: 25 +Loot: Crowbar +Enemy Name: Lady Pellatt +Description: The wife to the owner of the Castle +Starting Room: Lady Pellatt's Bedroom +Damage Given: 25 +Loot: Crowbar \ No newline at end of file diff --git a/data/rooms.dat b/data/rooms.dat index ddd92e6..be4ecab 100644 --- a/data/rooms.dat +++ b/data/rooms.dat @@ -146,7 +146,7 @@ Room name: Evergreen Bedroom Room Description: Oh look! Another bedroom! How exciting! This one's walls are even green this time.
Cool! Locked: false Boarded: false -Items: +Items:Sword Riddler: Exit Rooms: N-Silver Stairs (2nd Floor), W-Aspen Bedroom diff --git a/data/synonyms.dat b/data/synonyms.dat index a9b1aa8..0480e44 100644 --- a/data/synonyms.dat +++ b/data/synonyms.dat @@ -46,10 +46,12 @@ absorb, eat drink, eat i, inventory henry, henrypellatt -pellatt, henrypellatt +lady, ladypellatt shaving, shavingcream cream, shavingcream water, waterbottle bottle, waterbottle warm, warmbread -bread, warmbread \ No newline at end of file +bread, warmbread +battering, batteringram +ram, batteringram \ No newline at end of file diff --git a/data/words.dat b/data/words.dat index be128e2..08032e7 100644 --- a/data/words.dat +++ b/data/words.dat @@ -62,4 +62,7 @@ henrypellatt, enemy riddler, friend clock, item keyboard, item -lightbulb, item \ No newline at end of file +lightbulb, item +craft, verb +batteringram, item +ladypellatt, enemy \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java b/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java index 1128342..bf5e804 100644 --- a/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java +++ b/src/com/bayviewglen/zork/Entities/Enemies/Enemy.java @@ -7,6 +7,7 @@ public class Enemy extends Entity{ private String name; private String description; private String room; + private String loot; private boolean blinded; public Enemy(){ @@ -54,4 +55,10 @@ public class Enemy extends Entity{ public void setBlinded(boolean blinded) { this.blinded = blinded; } + public void setLoot(String loot) { + this.loot = loot; + } + public String getLoot() { + return loot; + } } diff --git a/src/com/bayviewglen/zork/Game.java b/src/com/bayviewglen/zork/Game.java index 2e79bcc..8305e06 100644 --- a/src/com/bayviewglen/zork/Game.java +++ b/src/com/bayviewglen/zork/Game.java @@ -161,7 +161,6 @@ class Game { } } catch (Exception ex) { } - masterEnemyMap.put(e, e.getRoom()); enemyScanner.close(); } @@ -277,15 +276,18 @@ class Game { if (command.hasDirection() && hasLockPick) { Room nextRoom = currentRoom.nextRoom(command.getDirection()); try { - if (nextRoom.getLocked()) { - nextRoom.setLocked(false); - player.removeFromInventory(new Lockpick()); - System.out.println( - "After a little bit of picking, a click is heard and the door opens slightly!"); - } else { - System.out.println("That door is already unlocked!"); - } - } catch (Exception e) { +if(nextRoom.getLocked()) { + nextRoom.setLocked(false); + player.removeFromInventory(new Lockpick()); + System.out.println("After a little bit of picking, a click is heard and the door opens slightly!"); + if(!nextRoom.getBoarded()) + break; + }else{ + System.out.println("That door is already unlocked!"); + if(!nextRoom.getBoarded()) + break; + } + }catch(Exception e) { System.out.println("There is no door there!"); } } else if (!command.hasDirection()) { @@ -317,7 +319,7 @@ class Game { } else if (!command.hasDirection()) { } else { - + System.out.println("What do you want to unboard the door with?"); } break; case "go": @@ -563,6 +565,51 @@ class Game { } } break; + case "craft": + if(command.hasItem()) { + Class clazz; + CraftableItem object; + try { + clazz = Class.forName("com.bayviewglen.zork.Items." + command.getItem().substring(0, 1).toUpperCase().trim() + command.getItem().substring(1).trim()); + Constructor ctor = clazz.getConstructor(); + object = (CraftableItem) ctor.newInstance(); + if(object.isCraftable()) { + boolean playerHasItems = true; + boolean hasItem = false; + for(Item i : object.getMaterials()) { + hasItem = false; + for(Item pi : player.getInventory()) { + if(i.equals(pi)) { + hasItem = true; + } + } + if(playerHasItems) { + playerHasItems = hasItem; + } + } + if(playerHasItems) { + if(player.addToInventory(object)) { + for(Item i : object.getMaterials()) { + player.removeFromInventory(i); + } + System.out.println("You have crafted a " + object.getName()); + }else { + System.out.println("You cannot carry any more!"); + } + }else { + System.out.println("You do not have the nessecary parts to make a " + object.getName() + "!"); + } + + }else { + System.out.println("You cannot make that item!"); + } + }catch(Exception e) { + System.out.println("You cannot make that item!"); + } + }else { + System.out.println("Craft what?"); + } + break; default: return false; } diff --git a/src/com/bayviewglen/zork/Items/Batteringram.java b/src/com/bayviewglen/zork/Items/Batteringram.java new file mode 100644 index 0000000..be8392f --- /dev/null +++ b/src/com/bayviewglen/zork/Items/Batteringram.java @@ -0,0 +1,10 @@ +package com.bayviewglen.zork.Items; + +public class Batteringram extends CraftableItem{ + public Batteringram() { + super(99, "Battering Ram", "Description", false, 1, 1); + super.addMaterial(new Base()); + super.addMaterial(new Cylinder()); + super.addMaterial(new Point()); + } +} \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Items/CraftableItem.java b/src/com/bayviewglen/zork/Items/CraftableItem.java new file mode 100644 index 0000000..5fffe2e --- /dev/null +++ b/src/com/bayviewglen/zork/Items/CraftableItem.java @@ -0,0 +1,20 @@ +package com.bayviewglen.zork.Items; + +import java.util.ArrayList; + +public class CraftableItem extends Item{ + private ArrayList materials; + public CraftableItem(int id, String name, String description, boolean isConsumable, int health, int weight) { + super(id, name, description, isConsumable, health, weight); + materials = new ArrayList(); + } + public boolean isCraftable() { + return true; + } + public void addMaterial(Item item) { + materials.add(item); + } + public ArrayList getMaterials(){ + return materials; + } +} diff --git a/src/com/bayviewglen/zork/Items/Item.java b/src/com/bayviewglen/zork/Items/Item.java index 5dfbd20..7e922bb 100644 --- a/src/com/bayviewglen/zork/Items/Item.java +++ b/src/com/bayviewglen/zork/Items/Item.java @@ -67,5 +67,7 @@ public class Item { public int getDamage() { return this.damage; } - + public boolean isCraftable() { + return false; + } }