From b0b4cbd4bfca33ed5d8359a268ad9d3bc52dcccb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Wed, 24 Feb 2021 01:48:08 -0500
Subject: [PATCH] Erase/redrw character when x/y variables are set directly

Fixes glitch when giving the guard at the bridge an apple to get to
Castle Coldrake.
---
 xtrn/lord2/lord2.js | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/xtrn/lord2/lord2.js b/xtrn/lord2/lord2.js
index e04cbab363..b54b1c56b2 100644
--- a/xtrn/lord2/lord2.js
+++ b/xtrn/lord2/lord2.js
@@ -595,8 +595,8 @@ var vars = {
 	'`d':{type:'const', val:'\b'},
 	'`\\':{type:'const', val:'\r\n'},
 	'`*':{type:'const', val:dk.connection.node},
-	x:{type:'fn', get:function() { return player.x }, set:function(x) { player.x = clamp_integer(x, 's8') } },
-	y:{type:'fn', get:function() { return player.y }, set:function(y) { player.y = clamp_integer(y, 's8') } },
+	x:{type:'fn', get:function() { return player.x }, set:function(x) { erase (player.x-1, player.y-1); player.x = clamp_integer(x, 's8'); update(true); } },
+	y:{type:'fn', get:function() { return player.y }, set:function(y) { erase (player.x-1, player.y-1); player.y = clamp_integer(y, 's8'); update(true); } },
 	map:{type:'fn', get:function() { return player.map }, set:function(map) { player.map = clamp_integer(map, 's16') } },
 	dead:{type:'fn', get:function() { return player.dead }, set:function(dead) { player.dead = clamp_integer(dead, 's8') } },
 	sexmale:{type:'fn', get:function() { return player.sexmale }, set:function(sexmale) { player.sexmale = clamp_integer(sexmale, 's16') } },
@@ -1757,7 +1757,6 @@ function run_ref(sec, fname)
 			player.name = getvar('`s10');
 		},
 		'moveback':function(args) {
-			// TODO: After giving the guard north of Stoneport or whatever an apple from the left, you "stick"
 			erase(player.x - 1, player.y - 1);
 			player.x = player.lastx;
 			player.y = player.lasty;
-- 
GitLab