AddComponent/AddElement now support named arguments. This requires passing around an argument list instead of using actual proc args which a bit gross but we can blame byond for forcing this.
InheritComponent uses mirrored init arguments instead of an argument list which means no more accessing it via index to get to the same arguments as in init.
As a small bonus I restructured dcs defines to be a bit more manageable. Mainly just splits them into separate files and gives them their own folder.
* Makes abductor baton child of stun baton
- Clarify var names and reorder vars in baton defines
- Slightly simplify active baton wash code
* forget about ()
Trying this again. When *spin-ing as a cyborg, the way mobs are thrown off you depends on your intent. On help intent, they will be thrown a shorter distance from you and will never be damaged or stunned (they will still be knocked down). On harm intent, they will be thrown the current distance and will be damaged and stunned if they hit a wall or another person.
WHAT THIS ACTUALLY CHANGES:
Currently, whether or not *spin-ing will actually hurt/stun someone depends on whether or not the *spin-ing borg is emagged. This PR also reduces the range of the help intent throw, but since the knockdown happens whether or not the thrown mob hits something this is in most circumstances a cosmetic change. So, in summary, if you are a non-emagged borg in help intent the only thing this changes is you will chuck people a slightly shorter distance.
Why It's Good For The Game
This isn't exactly the most important change, but a borg should be able to control their behavior. Having damage/stun from throwing determined solely by emag-ness seems more like a hacky kludge than a legitimate design choice. Also, having the behavior of borg-throwing determined in the code for carbons is messy.
Changelog
🆑
add: The behavior of cyborg's *spin emote now changes with intent; on harm intent, it will throw its passenger farther and damage and stun them if they hit a wall or another person.
/🆑
* Adds a function to grant research points for slime cores
* I meant to change it to 1k points before pushing
* changes slimes so they give different points based on what tier they're on
* A few fixes and more efficient code
* Adds sanity checks, used extracts can't be cashed in
* Refactored code
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.
Makes use of the do while(FALSE) trick to give it its own context and makes it possible for the inserted value to be different from the compared value so #48747 can use it.
About The Pull Request
Discovered via paramedics missing their start landmarks, jobs without landmarks would spawn on the last landmark to be loaded in the map. This appears to not have been intended, and they now spawn on the arrivals shuttle if available. If that fails they spawn in the error room.
I am touching job distribution code so I'd like this to be testmerged for a bit before getting merged.
Why It's Good For The Game
This is a bug in an error condition, so it will only show up if there are map bugs, which is why we haven't uncovered it for so long.
Changelog
🆑 JJRcop
fix: Jobs missing spawns will spawn on the arrivals shuttle.
/🆑
* Log fetch and write costs in SSprofiler.
* Update profiler.dm
* Update profiler.dm
* Add performance enhancements
This should ensure it doesn't lag the server too much.
* Minor text changes
* Unicode support Part 2 -- copytext()
This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved.
I replaced a ton of
````
var/something = sanitize(input())
something = copytext(something, 1, MAX_MESSAGE_LEN)
````
with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there.
This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs.
* Makes the code functional
* Assume color hex strings are always # followed by ascii.
Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there.
* Removes ninjaspeak since it's unused
* DB ticket procs
* Schema changes for DB tickets
* Schema version update
* Fixes requested by Jordie
* SQL updates
Adds a recipient column
* Still one dangling issue where this DOESN'T WORK
* Alright, this should work
* Requested SQL fixes
* Rogue changes
* less bad defaults
* utf8 for the utf8 gods
* aaaaaa
* Update tgstation_schema_prefixed.sql
* Update tgstation_schema.sql
* Update database_changelog.txt
Co-authored-by: Jordie <4343468+Jordie0608@users.noreply.github.com>