Files
Bubberstation/tools/UpdatePaths
TastyfishandGitHub e9d4eb45d1 [MDB IGNORE] Improves status display even more, makes the brig door timers based on status displays (#69153)
This PR was originally just going to be a re-factor of brig doors to be based on status displays, as a big chunk of their code was duplicating the exact same appearance, but then I realized "Cell 1" would have marqueed for being 6 characters and ended up doing the second half of the status display overhaul I meant to do a while back.

So firstly:

Yes, brig doors are now subtypes of status displays.
The main improvement out of that refactor, other than a lot of code trimming, is that the on-screen timer updates its readout as you set it, which looks nice.
Also handled various states in a more consistent way in some edge cases.
The timer now also displays the cell's actual name instead of the internal ID on the top line.
Now for status displays:

Long ago, I wanted the marquee to be continuous but the math required knowing the actual measured text width, though without a user that is impossible.
I recently realized the scope of the text usable on status displays (no formatting, or icons) is so narrow, I can cheat it like crazy into a small lookup table and a looping function.
No, this method can't possibly extend to runetext.
So now the marquees loop seemlessly without any gaps! In fact behind the scenes they loop the very first pixel possible, and still done as a one-and-done animate() sequence as before. (click the preview below if you want to see it smoother)

Status displays are now a bit more colorful and have gapless marquee text.
Brig door timers were massively refactored behind the scenes. Door control should still work as before but be mindful.
2022-08-26 16:53:57 -06:00
..

UpdatePaths

How To Use:

Drag one of the scripts in the “Scripts” folder onto the .bat file “Update Paths” to open it with the .bat file (or use the Python script directly depending on your operating system). Let the script run to completion.

Use this tool before using MapMerge2 or opening the map in an map editor. This is because the map editor may discard any unknown paths not found in the /tg/station environment (or what it builds after parsing tgstation.dme).

Scriptmaking:

This tool updates paths in the game to new paths. For instance:

If you have a path labeled /obj/structure/door/airlock/science/closed/rd and wanted it to be /obj/structure/door/airlock/science/rd/closed, this tool would update it for you! This is extremely helpful if you want to be nice to people who have to resolve merge conflicts from the PRs that you make updating these areas.


How do I do it?

Simply create a .TXT file and type this on a line:

/obj/structure/door/airlock/science/closed/rd : /obj/structure/door/airlock/science/rd/closed{@OLD}

The path on the left is the old, the path on the right is the new. It is seperated by a ":" If you want to make multiple path changes in one script, simply add more changes on new lines.

Putting {@OLD} is important since otherwise, UpdatePaths will automatically discard the old variables attached to the old path. Adding {@OLD} to the right-hand side will ensure that every single variable from the old path will be applied to the new path.


On Variable Editing

If you do not want any variable edits to carry over, you can simply skip adding the {@OLD} tag (although this is not advisable under normal circumstances). There are also a bunch of neat features you can use with UpdatePaths variable filtering, such as ensuring all new paths get a certain variable edit, filtering old paths if they have a certain variable edit, or even splitting one path into multiple paths on a map. You can find out more about this by reading https://github.com/tgstation/tgstation/blob/master/tools/UpdatePaths/__main__.py#L9.

If you get lost, look at other scripts for examples.