diff --git a/Server/src/org/crandor/game/interaction/SpecialGroundInteraction.java b/Server/src/org/crandor/game/interaction/SpecialGroundInteraction.java new file mode 100644 index 000000000..441b2f816 --- /dev/null +++ b/Server/src/org/crandor/game/interaction/SpecialGroundInteraction.java @@ -0,0 +1,15 @@ +package org.crandor.game.interaction; + +import org.crandor.game.node.entity.player.Player; + +/** + * Stub class for special ground item interactions + * @author ceik + */ +public class SpecialGroundInteraction { + public void handle(Player player, Option option){ + } + public void configure(){ + + } +} diff --git a/Server/src/org/crandor/game/interaction/SpecialGroundItems.java b/Server/src/org/crandor/game/interaction/SpecialGroundItems.java new file mode 100644 index 000000000..fb8d9e4ae --- /dev/null +++ b/Server/src/org/crandor/game/interaction/SpecialGroundItems.java @@ -0,0 +1,32 @@ +package org.crandor.game.interaction; + +import org.crandor.game.node.item.GroundItem; +import org.crandor.game.node.item.GroundItemManager; +import org.crandor.game.world.map.Location; +import plugin.interaction.city.falador.WineOfZamorakInteraction; +import plugin.interaction.city.portsarim.AhabBeerInteraction; + +/** + * Handles interactions for special ground items + * @author ceik + */ +public enum SpecialGroundItems { + //Ahab's beer + AHAB_BEER(1917,new Location(3049,3257,0), new AhabBeerInteraction()), + WINE_OF_ZAMORAK(245, Location.create(2931, 3515, 0), new WineOfZamorakInteraction()); + + private int itemid; + private Location location; + private SpecialGroundInteraction inter; + + SpecialGroundItems(int itemId, Location location, SpecialGroundInteraction inter){ + this.itemid = itemId; + this.location = location; + this.inter = inter; + } + + public SpecialGroundInteraction getInteraction() { return inter;} + public int getItemid() {return itemid;} + public Location getLocation() {return location;} + public GroundItem asGroundItem(){return GroundItemManager.get(itemid,location,null);} +} diff --git a/Server/src/plugin/interaction/city/FaladorNodePlugin.java b/Server/src/plugin/interaction/city/FaladorNodePlugin.java index 963196537..08ec5fa44 100644 --- a/Server/src/plugin/interaction/city/FaladorNodePlugin.java +++ b/Server/src/plugin/interaction/city/FaladorNodePlugin.java @@ -83,19 +83,6 @@ public final class FaladorNodePlugin extends OptionHandler { case 2290: player.getDialogueInterpreter().open(id, node); return true; - case 245: - if (node.getLocation().equals(new Location(2931, 3515, 0))) { - final List npcs = RegionManager.getLocalNpcs(player); - for (NPC n : npcs) { - if (n.getId() == 188) { - n.sendChat("Hands off zamorak's wine!"); - n.getProperties().getCombatPulse().attack(player); - } - } - } else { - return PickupHandler.take(player, (GroundItem) node); - } - break; case 5020: player.getDialogueInterpreter().sendDialogue("You must visit Keldagrim before you are allowed to ride mine carts."); break; diff --git a/Server/src/plugin/interaction/city/falador/WineOfZamorakInteraction.java b/Server/src/plugin/interaction/city/falador/WineOfZamorakInteraction.java new file mode 100644 index 000000000..f41405b84 --- /dev/null +++ b/Server/src/plugin/interaction/city/falador/WineOfZamorakInteraction.java @@ -0,0 +1,24 @@ +package plugin.interaction.city.falador; + +import org.crandor.game.interaction.Option; +import org.crandor.game.interaction.SpecialGroundInteraction; +import org.crandor.game.interaction.SpecialGroundItems; +import org.crandor.game.node.entity.npc.NPC; +import org.crandor.game.node.entity.player.Player; +import org.crandor.game.world.map.RegionManager; + +import java.util.List; + +public class WineOfZamorakInteraction extends SpecialGroundInteraction { + @Override + public void handle(Player player, Option option){ + player.faceLocation(SpecialGroundItems.WINE_OF_ZAMORAK.getLocation()); + final List npcs = RegionManager.getLocalNpcs(player); + for (NPC n : npcs) { + if (n.getId() == 188) { + n.sendChat("Hands off zamorak's wine!"); + n.getProperties().getCombatPulse().attack(player); + } + } + } +}