package net.scapeemulator.game.model.player.action; import net.scapeemulator.game.dialogue.Dialogue; import net.scapeemulator.game.dialogue.DialogueContext; import net.scapeemulator.game.model.mob.action.MobInteractionAction; import net.scapeemulator.game.model.npc.NPC; import net.scapeemulator.game.model.player.Player; /** * Written by Hadyn Richard */ public final class StartDialogueAction extends MobInteractionAction<Player, NPC> { private final Dialogue dialogue; private DialogueContext context; private boolean dialogueDisplayed; public StartDialogueAction(Player player, NPC target, Dialogue dialogue) { super(player, target, 1); this.dialogue = dialogue; this.target = target; } @Override public void executeAction() { if(!dialogueDisplayed) { context = dialogue.displayTo(mob); mob.turnToTarget(target); target.turnToTarget(mob); dialogueDisplayed = true; return; } if(context.isStopped()) { mob.resetTurnToTarget(); if(target.getTurnToTarget().equals(mob)) { target.resetTurnToTarget(); } stop(); } } }