logic.player.offerInteraction(null);
this.interactable = false;
}
+ if ((this.teleport_instructions) && (game.physics.arcade.distanceBetween(this, logic.player) > (game.width + 200))) {
+ this.position = this.teleport_instructions.newPosition;
+ this.teleport_instructions.callback(this.teleport_instructions.callbackValue);
+ this.teleport_instructions = null;
+ }
}
actionTalk() {
endTalk() {
return true;
}
+
+ offscreenTeleportation(newPosition, callback, callbackValue) {
+ this.teleport_instructions = { newPosition: newPosition, callback: callback, callbackValue: callbackValue };
+ console.log("Offscreen teleport request registered:", this.teleport_instructions);
+ }
}
class NPC_Clara extends GameNPC {
{ actor: this, text: "Indeed. But this is the point. He's stuck in one place, cannot move. Like you in life. So you feel sympathy for him." },
{ actor: logic.player, text: "You have a point." },
{ actor: this, text: "I think I'll catch Carlos and talk to him. I always liked that guy but I didn't know he's such imaginative." } ] ));
- //this.offscreenTeleportation(new Phaser.Point(logic.carlos.x + 128, logic.carlos.y), this.tpdone);
+ this.offscreenTeleportation(new Phaser.Point(logic.carlos.x, logic.carlos.y + 64), this.tpDone, this);
}
else {
if (Phaser.Math.random() < 0.5) {
endTalk() {
return (logic.carlos.alive);
}
+
+ tpDone(value) {
+ console.log("Woot-woot! Teleport complete:", value);
+ }
}