From 228aa7e210372eef1ecfe7fb762bb023d4e88831 Mon Sep 17 00:00:00 2001 From: Eric Robinson <68359262+kphoenix137@users.noreply.github.com> Date: Tue, 12 Nov 2024 04:14:10 -0500 Subject: [PATCH] Revise Teleport Target (#7531) * Revise teleport target --------- Co-authored-by: Stephen C. Wills --- Source/player.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/player.cpp b/Source/player.cpp index 430b5f0451d..c10df6bcf37 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -3154,8 +3154,18 @@ void CheckPlrSpell(bool isShiftHeld, SpellID spellID, SpellType spellType) LastMouseButtonAction = MouseActionType::SpellPlayerTarget; NetSendCmdParam5(true, CMD_SPELLPID, PlayerUnderCursor->getId(), static_cast(spellID), static_cast(spellType), spellLevel, spellFrom); } else { + Point targetedTile = cursPosition; + if (spellID == SpellID::Teleport && myPlayer.executedSpell.spellId == SpellID::Teleport) { + // Check if the player is attempting to queue Teleport onto a tile that is currently being targeted with Teleport, or a nearby tile + if (cursPosition.WalkingDistance(myPlayer.position.temp) <= 1) { + // Get the relative displacement from the player's current position to the cursor position + WorldTileDisplacement relativeMove = cursPosition - static_cast(myPlayer.position.tile); + // Target the tile the relative distance away from the player's targeted Teleport tile + targetedTile = myPlayer.position.temp + relativeMove; + } + } LastMouseButtonAction = MouseActionType::Spell; - NetSendCmdLocParam4(true, CMD_SPELLXY, cursPosition, static_cast(spellID), static_cast(spellType), spellLevel, spellFrom); + NetSendCmdLocParam4(true, CMD_SPELLXY, targetedTile, static_cast(spellID), static_cast(spellType), spellLevel, spellFrom); } }