Created
June 14, 2025 20:02
-
-
Save VariableVixen/527ba8f547bba85ac9db30245d020a2c to your computer and use it in GitHub Desktop.
Core Keeper - Teleport to anywhere at anytime - SCRIPT FIX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using Unity.Mathematics; | |
| using Unity.Transforms; | |
| using Pug.UnityExtensions; | |
| using HarmonyLib; | |
| [HarmonyPatch] | |
| class teleportmod { | |
| [HarmonyPrefix, HarmonyPatch(typeof(MapMarkerUIElement), "OnLeftClicked")] | |
| public static bool OnLeftClicked(MapMarkerUIElement __instance) { | |
| if (__instance.markerType == MapMarkerType.Portal || | |
| __instance.markerType == MapMarkerType.Waypoint || | |
| __instance.markerType == MapMarkerType.PlayerGrave || | |
| __instance.markerType == MapMarkerType.Ping || | |
| __instance.markerType == MapMarkerType.Unique || | |
| __instance.markerType == MapMarkerType.UserPlacedMarker) | |
| { | |
| PlayerController playerController = Manager.main.player; | |
| float2 rhs = EntityUtility.GetObjectData(__instance.mapMarkerEntity, __instance.world).variation == 20 | |
| ? new float2(1f, 1f) | |
| : new float2(1f, -0.25f); | |
| playerController.QueueInputAction(new UIInputActionData { | |
| action = UIInputAction.Teleport, | |
| position = EntityUtility.GetComponentData<LocalTransform>(__instance.mapMarkerEntity, __instance.world).Position.ToFloat2() + rhs | |
| }); | |
| if (Manager.ui.isShowingMap) { | |
| Manager.ui.OnMapToggle(); | |
| } | |
| } | |
| return false; | |
| } | |
| } |
Author
Referring to this mod for a change:
- Jumping to a ping marker doesn't seem to be working, at least not with latest CK version.
- It would be better if another key, e.g. LShift, had to be pressed together with LMB to avoid accidental teleports while panning the map. I have tried this and it seems to work:
Add on top:
using UnityEngine;
Add afterpublic static bool OnLeftClicked(MapMarkerUIElement __instance) {:
if (!Input.GetKey(KeyCode.LeftShift)) {
return true;
}
(Basically just aborts OnLeftClicked if LShift is not held down.)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I don't actually have the CK SDK, I just decompiled the mod on a lark to see if there was anything obviously broken when linked against the game's live assets. It turned out to be a very simple mod, and IIRC the issue was a missing
usingstatement or two, which I was able to track down. I tested it by editing the source file on my local drive and launching the game, and when it worked I decided to upload the fix for others.I can't guarantee I'll have the mental energy to look into anything, and even if I do I also can't guarantee I'll be able to do anything, but I'll keep it in mind.