Added new framework for handling special ground items

This commit is contained in:
Ceikry 2020-03-28 06:20:14 -05:00
parent 25142860b2
commit 217ac01c88
4 changed files with 71 additions and 13 deletions

View file

@ -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(){
}
}

View file

@ -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);}
}

View file

@ -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<NPC> 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;

View file

@ -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<NPC> npcs = RegionManager.getLocalNpcs(player);
for (NPC n : npcs) {
if (n.getId() == 188) {
n.sendChat("Hands off zamorak's wine!");
n.getProperties().getCombatPulse().attack(player);
}
}
}
}