diff --git a/src/main/java/com/comandante/creeper/ConfigureCommands.java b/src/main/java/com/comandante/creeper/ConfigureCommands.java index dc186d2f089ce6a54e64c55eae29e875ab50d242..27664b1bfdc254617611b91d2259f0488d4fd59c 100644 --- a/src/main/java/com/comandante/creeper/ConfigureCommands.java +++ b/src/main/java/com/comandante/creeper/ConfigureCommands.java @@ -94,5 +94,6 @@ public class ConfigureCommands { creeperCommandRegistry.addCommand(new SpellsCommand(gameManager)); creeperCommandRegistry.addCommand(new LeaveCommand(gameManager)); creeperCommandRegistry.addCommand(new BackCommand(gameManager)); + creeperCommandRegistry.addCommand(new RecallCommand(gameManager)); } } diff --git a/src/main/java/com/comandante/creeper/command/RecallCommand.java b/src/main/java/com/comandante/creeper/command/RecallCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..ddb5cbb159c68b6022ae814eac5f2ed28c942196 --- /dev/null +++ b/src/main/java/com/comandante/creeper/command/RecallCommand.java @@ -0,0 +1,42 @@ +package com.comandante.creeper.command; + +import com.comandante.creeper.managers.GameManager; +import com.comandante.creeper.player.CoolDown; +import com.comandante.creeper.player.CoolDownType; +import com.comandante.creeper.player.PlayerMovement; +import org.jboss.netty.channel.ChannelHandlerContext; +import org.jboss.netty.channel.MessageEvent; + +import java.util.Arrays; +import java.util.List; + +public class RecallCommand extends Command { + + final static List<String> validTriggers = Arrays.asList("recall"); + final static String description = "Return to the lobby, once every 5 minutes."; + final static String correctUsage = "back"; + + public RecallCommand(GameManager gameManager) { + super(gameManager, validTriggers, description, correctUsage); + } + + @Override + public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { + execCommand(ctx, e, () -> { + if (player.isActiveFights()) { + write("You can't move while in a fight!"); + return; + } + + if (player.isActive(CoolDownType.PLAYER_RECALL)) { + write("You can not recall right now."); + return; + } + + PlayerMovement playerMovement = new PlayerMovement(player, player.getCurrentRoom().getRoomId(), GameManager.LOBBY_ID, "vanished into the ether.", ""); + player.addCoolDown(new CoolDown(CoolDownType.PLAYER_RECALL)); + player.movePlayer(playerMovement); + }); + } + +} \ No newline at end of file diff --git a/src/main/java/com/comandante/creeper/player/CoolDownType.java b/src/main/java/com/comandante/creeper/player/CoolDownType.java index 2993ef20b5e7a2988fd2593b1d917efc2578a097..caa1d3567d45461101a0bd6e037e5f763a15ea00 100644 --- a/src/main/java/com/comandante/creeper/player/CoolDownType.java +++ b/src/main/java/com/comandante/creeper/player/CoolDownType.java @@ -11,7 +11,8 @@ public enum CoolDownType { SPELL("",0), NPC_FIGHT("fight",30), NPC_ROAM("npc-roam", 1200), - NPC_ALERTED("npc-alerted", 30); + NPC_ALERTED("npc-alerted", 30), + PLAYER_RECALL("recall", 600); private final String name; private final int ticks; diff --git a/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java b/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java index 1c74b828abafbea70ddc4f0650735f33c3d2c079..3f91acdf619026175684d9795ffdf34e244e3319 100644 --- a/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java +++ b/src/main/java/com/comandante/creeper/spells/LightningSpellRunnable.java @@ -65,7 +65,6 @@ public class LightningSpellRunnable implements SpellRunnable { } long burnEffectPower = (long) ((stats.getLevel() * .05) + (1 * stats.getIntelligence())); return getBurnEffect(burnEffectPower, 2); - } private void executeSpellAgainstPlayer(Player player, Player destinationPlayer) {