Control

If you liked this item, please rate it up on Steam Workshop page.

Author: Geneosis

Last revision: 13 Jan at 11:10 UTC

File size: 936.96 KB

On Steam Workshop

Description:

Provides a variety of telekinetic powers.

Now in v1.2.0! (see full patch notes)

My humble attempt at reproducing those from the game Control 😉

FEATURES
– Control: You have various telekinetic abilities as well as enhanced movements.

KEYBOARD CONTROLS
[R]: Telekinetic Grab/Throw (hold/release).
[RightClick]: Rubble shield (hold).
[Space]: Higher jump (hold).
[Space]: Hover (hold).
[W/A/S/D]+[Shift]: Dash in that direction.
[MiddleClick]: Ground slam.
[]: Open options menu.
Set they key bindings you want in Main menu>Play>Mods>Control>Options

CHARACTERISTICS
– Once enabled in the options, this mod is always active (independently of your current tool). There is an option to keep the powers active only when the Control tool is in hour hand.
– If you want to keep only some of the abilities, clear the key binding of those you don’t want.
– Telekinesis can only grab dynamic items (no static).
– Telekinesis will pick the object at cursor if possible, else the closest available object.
– When building a rubble shield, if not enough pieces are near, some ground around you will be broken to try and provide more.
– You can only dash in a certain direction if your momentum in that direction is low.
– You can only ground slam when in the air and aiming below you.
– Hover will maintain you at a fixed altitude, and will lose efficiency after some time (you can change or remove that duration it in the options).
– Parts of the rubble shield and objects grabbed by telekinesis do not collide with each other.

KNOWN BUGS
– Telekinesis may grab objects attached to something else and cause a lot of chaos.
– You may be sent flying when telekinesis/shield grabs an object from behind you.
– Object manipulated by telekinesis can break when holding it: you can turn it unbreakable in the options.
– Shield pieces are somtimes too thin: drop it and build another one until satisfied.
– Shield pieces may break quite easily: you can turn them unbreakable in the options.
– Trying to build a shield near explosives may send you to limbo (restart your game if that happen).

DEV NOTES

Originally posted by About this mod:

This idea came from one of my other mods comments (couldn’t find it back sadly :/) and I initially declined the suggestion as there was already a few telekinesis mods in the game and this felt a bit like a duplicated of those… Yet the author of the comment argued that having all of the abilites from that game packed together in a single mod so that they would interact well with each-other would be nice, and I agreed on that point so I kept the idea in the back of my head for a while.
Another limitation that prevented me from starting this mod earlier was having a function that can easily reorient an object in the direction I want. Thankfully the Dicord modding community helped a lot on that point and I finally managed to get one working 😉
So using some gameplay video from Control as reference, I started building the abilities from that game into Teardown ^^
First of all the telekinesis grab/throw was the main part of it: I made some sort of auto-selection of nearby objects fitting for a grab in a similar way as the original game. Then I needed a way to have an object stuck on the side of the screen until the player want to launch it, which was made a lot easier with the object rotation function mentionned earlier. Once all of those were done all I had to do is launch the object: the initial code for that is pretty easy but I encountered a bug where the object would sometimes just drop down instead of being launched, so I had to make some workaround to prevent that from happening.
Then I added the dash ability by simply giving the player a little speed boost depending on the direction key pressed. I had to come up with some limitations though or you could just keep dashing in the same direction to increase your speed over and over, so instead of slowing down the player right after a dash, I decided to disable the dash function if you are already moving too fast in the direction you are trying to dash into.
After that I tried to increase the jump heigh: My initial idea was to give the player an initial boost up wwhen pressing the jump key and leave it be, but the game have some pretty weird behavior when jumping that will cap your vertical speed really fast so it was not really working as intended -_- Instead I went for a hold-button behavior that would keep your jump momentum longer making for a slower upward levitation that looks a bit more like what happens in Control.
Once I had some air, I could bring in hovering to maintain it longer. I started with the hover code from my Ultimate Jetpack mod, but sadly it no longer appear to work in the current version of the game, so I had to edit it a little and move it to the update() function instead of tick() to get something to work. I also added some hover decay after a certain time to better mimic what happens in the original game.
Another ability that required to be in the air to work was the ground slam, so I added it right after. This was not that hard to reproduce, just force the player velocity in a given direction until it hits the ground and then use MakeHole() to crumble the largest possible area of ground at the landing location. I also added a few particles to make it feel more impactful.
And I kept the most tricky ability for last: the shield one. For that one I had a very precise idea of what I wanted to do, but realizing took some time. First I wanted to find some objects that were flat enough to become shield parts, this was made using some ratio test on the weight/height/width of objects. Then I needed to hold them at several fixed locations in front of the player, but most importantly to hold them with the right angle so that they will cover the maximum possible area in front of the player. Once again the function to enforce a certain object orientation I was talking about in the beginning came in clutch as this allowed me to easily enforce the correct side of the object to be up. Like for the slam, I also added some particle effects to make this one look a bit more like the one from the game.