diff --git a/data/synonyms.dat b/data/synonyms.dat index c6e80bd..3267bc8 100644 --- a/data/synonyms.dat +++ b/data/synonyms.dat @@ -51,4 +51,6 @@ 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..704478d 100644 --- a/data/words.dat +++ b/data/words.dat @@ -62,4 +62,6 @@ henrypellatt, enemy riddler, friend clock, item keyboard, item -lightbulb, item \ No newline at end of file +lightbulb, item +craft, verb +batteringram, item \ No newline at end of file diff --git a/src/com/bayviewglen/zork/Game.java b/src/com/bayviewglen/zork/Game.java index 98b3334..7dc9af3 100644 --- a/src/com/bayviewglen/zork/Game.java +++ b/src/com/bayviewglen/zork/Game.java @@ -540,6 +540,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; + } }