From 7d5115ded4abc63b8219ad9bc10f4109e1355e55 Mon Sep 17 00:00:00 2001 From: LeonardoVAC Date: Fri, 16 Oct 2026 00:38:47 -0300 Subject: [PATCH] feat: Add ghost mode --- src/TerraSharp/Core/Hotkeys.cs | 1 + src/TerraSharp/Core/Settings.Json.cs | 1 + src/TerraSharp/Core/Settings.cs | 2 +- src/TerraSharp/Features/PlayerFeatures.cs | 12 ++++++++++++ src/TerraSharp/UI/MainWindow.Pages.cs | 1 + src/TerraSharp/UI/MainWindow.Tooltips.cs | 1 + src/TerraSharp/UI/MainWindow.cs | 2 +- 7 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/TerraSharp/Core/Hotkeys.cs b/src/TerraSharp/Core/Hotkeys.cs index 76ea5ec..3e12801 100644 --- a/src/TerraSharp/Core/Hotkeys.cs +++ b/src/TerraSharp/Core/Hotkeys.cs @@ -31,6 +31,7 @@ public static class Hotkeys new(InterfaceGroup, "NpcSpawner", "NPC Spawner", () => WindowManager.Toggle(WindowManager.Npcs)), Toggle("Player", "GodMode", "God Mode", () => Settings.GodMode, v => Settings.GodMode = v), + Toggle("Player", "GhostMode", "Ghost Mode", () => Settings.GhostMode, v => Settings.GhostMode = v), Toggle("Player", "AutoHeal", "Auto Heal", () => Settings.AutoHeal, v => Settings.AutoHeal = v), Toggle("Player", "AutoMana", "Auto Mana", () => Settings.AutoMana, v => Settings.AutoMana = v), new("Player", "FullHeal", "Full Heal", PlayerFeatures.FullHeal), diff --git a/src/TerraSharp/Core/Settings.Json.cs b/src/TerraSharp/Core/Settings.Json.cs index 4a6a8a3..fe994f0 100644 --- a/src/TerraSharp/Core/Settings.Json.cs +++ b/src/TerraSharp/Core/Settings.Json.cs @@ -17,6 +17,7 @@ public static partial class Settings [nameof(AutoMana)] = "Player.AutoMana.Enabled", [nameof(AutoManaAt)] = "Player.AutoMana.Threshold", [nameof(BuffMinutes)] = "Player.Buffs.Minutes", + [nameof(GhostMode)] = "Player.GhostMode", [nameof(Fly)] = "Movement.Fly.Enabled", [nameof(FlySpeed)] = "Movement.Fly.Speed", diff --git a/src/TerraSharp/Core/Settings.cs b/src/TerraSharp/Core/Settings.cs index b002aba..1433706 100644 --- a/src/TerraSharp/Core/Settings.cs +++ b/src/TerraSharp/Core/Settings.cs @@ -23,7 +23,7 @@ public enum EspBoxStyle public static partial class Settings { public static bool GodMode, InfHealth, InfMana, InfBreath, InfFlight, InstantRespawn; - public static bool AutoHeal, AutoMana; + public static bool AutoHeal, AutoMana, GhostMode; public static float AutoHealAt = 40f, AutoManaAt = 25f, BuffMinutes = 10f; public static bool Fly, SuperSpeed, HighJump, NoFallDamage, LavaImmune, WaterWalk, NoKnockback, GravityFlip, ExtendedReach; diff --git a/src/TerraSharp/Features/PlayerFeatures.cs b/src/TerraSharp/Features/PlayerFeatures.cs index 7670d5a..9da08e7 100644 --- a/src/TerraSharp/Features/PlayerFeatures.cs +++ b/src/TerraSharp/Features/PlayerFeatures.cs @@ -92,9 +92,21 @@ public static class PlayerFeatures Player.tileRangeY = Settings.ReachY; } + if (Settings.GhostMode) + ApplyGhost(player); + ApplyVision(player); } + // ResetEffects clears both every tick; NPC.TargetClosest and SetTargetTrackingValues read them. + static void ApplyGhost(Player player) + { + player.aggro = -10000; + bool[] passive = player.npcTypeNoAggro; + for (int i = 0; i < passive.Length; i++) + passive[i] = true; + } + static void ApplyVision(Player player) { if (Settings.Spelunker) diff --git a/src/TerraSharp/UI/MainWindow.Pages.cs b/src/TerraSharp/UI/MainWindow.Pages.cs index 908dff0..5430b99 100644 --- a/src/TerraSharp/UI/MainWindow.Pages.cs +++ b/src/TerraSharp/UI/MainWindow.Pages.cs @@ -19,6 +19,7 @@ public sealed partial class MainWindow { Group("Survival"); Toggle("God Mode", ref Settings.GodMode); + Toggle("Ghost Mode", ref Settings.GhostMode); Toggle("Infinite Breath", ref Settings.InfBreath); Toggle("Infinite Flight", ref Settings.InfFlight); Toggle("Infinite Health", ref Settings.InfHealth); diff --git a/src/TerraSharp/UI/MainWindow.Tooltips.cs b/src/TerraSharp/UI/MainWindow.Tooltips.cs index 9bbf979..c6b54b8 100644 --- a/src/TerraSharp/UI/MainWindow.Tooltips.cs +++ b/src/TerraSharp/UI/MainWindow.Tooltips.cs @@ -12,6 +12,7 @@ public sealed partial class MainWindow ["Infinite Flight"] = "Unlimited wing and rocket boot flight time.", ["Auto Heal"] = "Uses Quick Heal below the set health level. Waits for potion sickness to end.", ["Auto Mana"] = "Uses Quick Mana below the set mana level.", + ["Ghost Mode"] = "Enemies stop chasing you. Bosses and some flying enemies still attack.", ["Fly"] = "Move through blocks with your movement keys. Up or Jump rises; Down descends.", ["Gravity Flip"] = "Walk on the ceiling.", ["Lava Immune"] = "Also protects against hot blocks.", diff --git a/src/TerraSharp/UI/MainWindow.cs b/src/TerraSharp/UI/MainWindow.cs index c7e6273..4c566b6 100644 --- a/src/TerraSharp/UI/MainWindow.cs +++ b/src/TerraSharp/UI/MainWindow.cs @@ -30,7 +30,7 @@ public sealed partial class MainWindow : Window Open = true; _pages = [ - new Page("Player", PlayerPage, () => Count(Settings.GodMode, Settings.InfHealth, Settings.InfMana, Settings.InfBreath, Settings.InfFlight, Settings.InstantRespawn, Settings.AutoHeal, Settings.AutoMana)), + new Page("Player", PlayerPage, () => Count(Settings.GodMode, Settings.InfHealth, Settings.InfMana, Settings.InfBreath, Settings.InfFlight, Settings.InstantRespawn, Settings.AutoHeal, Settings.AutoMana, Settings.GhostMode)), new Page("Movement", MovementPage, () => Count(Settings.Fly, Settings.SuperSpeed, Settings.HighJump, Settings.GravityFlip, Settings.NoFallDamage, Settings.LavaImmune, Settings.WaterWalk, Settings.NoKnockback, Settings.ExtendedReach)), new Page("Combat", CombatPage, () => Count(Settings.RapidAttack, Settings.AutoSwing, Settings.DamageBoost, Settings.NoManaCost, Settings.NoSpread, Settings.Aimbot, Settings.AutoAttack, Settings.KillAura, Settings.HitMagnet, Settings.FreezeEnemies, Settings.WeakenEnemies)), new Page("Items", ItemsPage, () => Count(Settings.InstantBreak, Settings.InfItems, Settings.ItemVacuum, Settings.AutoFish, Settings.Sonar)),