From c4bb414ab4c0e80530a2ce73a794b5a7acb3fbbb Mon Sep 17 00:00:00 2001 From: k0rd Date: Tue, 1 Oct 2013 19:00:03 -0400 Subject: [PATCH] Change remembered position teleporter to a short delay --- TShockAPI/TSPlayer.cs | 8 +++++++- TShockAPI/TShock.cs | 26 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index da45965d..e7d6fcd4 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -62,7 +62,13 @@ namespace TShockAPI /// A timer to keep track of whether or not the player has recently thrown an explosive // public int RecentFuse = 0; - + + /// + /// A system to delay Remembered Position Teleports a few seconds + /// + + public int RPPending = 0; + /// /// A queue of tiles destroyed by the player for reverting. /// diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index a69ea01d..987936cb 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -677,6 +677,20 @@ namespace TShockAPI if (player.RecentFuse >0) player.RecentFuse--; + + if (player.RPPending >0) + { + if (player.RPPending == 1) + { + var pos = RememberedPos.GetLeavePos(player.Name, player.IP); + player.Teleport(pos.X*16, pos.Y*16 ); + player.RPPending = 0; + } + else + { + player.RPPending--; + } + } if (player.TileLiquidThreshold >= Config.TileLiquidThreshold) { @@ -1088,14 +1102,12 @@ namespace TShockAPI player.LastNetPosition = new Vector2(Main.spawnTileX*16f, Main.spawnTileY*16f); - if (Config.RememberLeavePos) + if (Config.RememberLeavePos && (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero)) { - if (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero){ - var pos = RememberedPos.GetLeavePos(player.Name, player.IP); - - player.Teleport(pos.X*16, pos.Y*16 ); - }} - + player.RPPending=3; + player.SendMessage("You will be teleported to your last known location...", Color.Red); + } + args.Handled = true; }