* Ref Tracking: Revengance
Fixes reference tracking ignoring self references due to a poorly thought out tick checking system.
Fixes reference tracking ignoring the contents of assoc lists
Makes the reference tracking printouts actually describe what list the ref is in, rather then just saying "list"
Adds REFERENCE_TRACKING_DEBUG, a define which toggles tracking info for the ref tracking procs, which allows for
oversight on how the proc is working
Allows for direct calls of qdel_and_find_ref_if_fail(), makes it use ref rather then REF(), fixing it breaking
for mobs. (Ditto for the qdel hint which does the same thing)
Moves REAGENTS_TESTING out of the reftracking define block
Makes unit tests define REFERENCE_TRACKING, REFERENCE_TRACKING_DEBUG, and FIND_REF_NO_CHECK_TICK
Adds a unit test that sanity checks the reference finder proc
Adds a new CBT define which is automatically created when building. If this define is absent, the build will fail.
This is what Cyberboss tried to do with USE_BUILD_BAT_INSTEAD_OF_DREAM_MAKER.dm, but couldn't.
The reasoning behind this is CBT is already a requirement to build a fresh project, otherwise the tgui bundle files won't exist. This gives a readable error to go along with that. However, you can currently build once then just use Dream Maker. This is a footgun - not only are we already adding new things to CBT like tgfont which will fail later on, but also it will create weird scenarios when we add tasks to CBT that don't immediately fail if not ran, or otherwise create out of sync builds.
Also replaces rmSync with unlinkSync, which works on older Node versions.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm
We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous.
There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this.
Hi codeowners!
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Brings a heavily improved, rewritten, and optimised fermichem to tg. I saw that tg seemed receptive to it, so I thought I’d do it myself. If you know of fermichem – there’s a lot changed and improved, so looking at other documents regarding it will not be accurate.
Revamps the main chemistry reaction handler to allow for over time reactions instead of instant reactions. This revamp allows for simultaneous reactions, exo/endothermic reactions and pH consuming/producing behaviours. Most of the reactions in game will now inherit an easy one size fits all reaction.
Temperature mechanics
Temperature affects reaction rate
The higher it is, the faster it is, but be careful, as chem reactions will perform special functions when overheated (presently it DOESN’T explode)
Temperature will increase or decrease depending on the exo/endothermic nature of the reaction
pH mechanics
Each reaction requires the pH of a beaker to be within a certain range.
If you are outside of the optimal, you'll incur impurity, which has a negative effect on the resultant chem
pH of a beaker will change during a reaction
Reacting Impure chem effects can vary from chem to chem, but for default will reduce the purity of other reagents in the beaker
Consuming an impure chem will either cause liver or tox damage dependant on how impure it is as well as reducing consumed volume
Purity can (presently) only be seen with a chemical analyser
Impure chems can purposely be made by making the reagent with a low, but not explosive, purity.
A chem made under the PurityMin will convert into the reagent’s failed chem in the beaker.
Optional catalysts
Reactions can use an optional catalyst to influence the reaction - at the more framework exists from tmeprature, reaction rate and pH changes as a result of a catalyst. Catalysts can be set to only work on a specific reagent subtype. It is preferable to those building upon this code that optional catalysts only affect a subsection of reagents.
Presently the only catalyst that uses this is Palladium synthate catalyst - a catalyst that increases the reaction speed of medicines.
Reaction agents
These are reagents that will consume themselves when added to a beaker - even a full one, and apply effects to the total solution. One example being Tempomyocin which will speed up a reaction, or the buffer reagents which change the pH.
Competitive reactions
These reactions will go towards a certain product depending on the conditions of the holder. The example one given is a little tricky and requires a lot of temperature to push it towards one end.
New and charged reactions
(see the wiki for details)
Acidic /basic buffer - These reagents will adjust the pH of a beaker/solution when added to one. If the beaker is empty it will fill it instead.
Tempomyocin - This will instantly speed up any reaction added it is added to, giving it a short burst of speed. Adding this reagent to a reaction will give it a suddent speed boost up to 3x times - with the output purity of the boost modified by the Tempomyocin's purity.5u per 100u will give you 2x, 10 u per 100u will give you 3x. IIt caps at 3x for a single addition, but there is nothing preventing you from adding multiple doses for multiple boosts.
Purit tester - this will fizzle if the solution it is added to has an inverse purity reagent present.
A few other reactions have been tweaked to make sure they work too. An example being meth - see the wikipage linked above.
A note on all reactions
The one size fits all reaction for all chems generally won’t create impure chems – it is very forgiving. The only thing to remember is to avoid heating reactions over 900 or you’ll reduce your yield, and try to keep your pH between 5 -9.
This PR doesn’t have specific example chems included (except for the buffers) – they will be atomised out and they use the mechanics in more depth
A note on plumbing
I reached out to Time Green and we worked together to make sure plumbing was fine. Time Green did some of his own tests too, and surprisingly it doesn't look like much needs to be changed.
* Uses 514's map_cpu var when it's available
* Uses auxtools for the debugger, to supply cross verison compatibility
* Nukes extools reference tracking, reinstates the old ref tracking system
* Adds an atmos debugging tool and excited group visualizer
* rebuild moment
* yarn install -> yarn run build
* Sigh
* Fixed UI, did not test, needs a rebuild.
* Proper flexing
* Adds varied colors, improved ui courtusy of stylemistake:
* Fixes a runtime, updates tgui
* added superconductors, cleaned up some shitcode, removed a clashing color
* Woop
* Speed
* rebuild
* Adds a tick count
* begone auto-update
* color defines
* rebuild moment
* color improvements, fixes updating
* adds another preprocesser define to handle showing max shares in the ui
* test of application system?
* patches up some display issues, allows for smooth flowing from one group to another
* overlay-ified
* client testing
* dmi moment
* plane master
* it fucking works
* size change
* passthrough
* rebuild moment
* adresses review concerns, toggles active turf vis on when testing
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
About The Pull Request
Adds extools-powered reference tracking. Includes a couple procs that retrieve the back and forward references of a datum - Back references let you see what is referencing your object and potentially preventing it from garbage collecting, and forward ones show you what your object in turn references. Also made a cool GUI to inspect and follow these references.
The tracking adds some overhead to all variable sets and list operations. Init time is increased by ~15%. I haven't actually benched it so it might impact the actual game less.
Why It's Good For The Game
no lagging caused by hard dels scanning the entire planet (once coders fix them)
About The Pull Request
The num_to_hex pr #51005 updated the required version without updating the error message sweep sweep sweep
Why It's Good For The Game
This looks like a bug at first glance, let's fix that.
Changelog
🆑
fix: Dear out of date coders, you will now be yelled at to update to the correct version of byond, rather then an unsupported one.
/🆑
* Unicode support Part 1
Makes all calls to ascii2text() and text2ascii() unicode aware as well as all calls in code/__HELPERS/text.dm.
Adds defines for the footext_char() procs to maintain 512 support.
I did some cleanup on the text helpers since a lot of them were really, really bad.
reject_bad_text() and reject_bad_name() have an arg to reject non-ascii chars which defaults to TRUE.
* Give travis a more recent beta
* Ultimate compat
Added the _char procs I was missing
Test the build instead of the version because Lummox is a goddamn moron
* Suggested fixes, removes the last of the dd_ helpers
* Reading the reference is very important!
* Minor code improvements and a comment
* Typo
This was supposed to be 1 or 2 (2 preloads uploaded resources) in the repo and set to 0 in [`server_side_modifications.dm`](https://tgstation13.org/parsed-logs/basil/server_side_modifications.dm) but i messed that up when i switched it from a test merging pr to something mergable.
* Adds test run
* Add OVERRIDE_LOG_DIRECTORY_PARAMETER
* Fails travis if a test run fails
* Fix travis looping
* Move the unit tests behind a define
* Fix various test run things
* Remove the DEBUG check because that's just you shooting yourself in the foot
* Adds readability spacing. Makes RunUnitTests a generic proc
* Remove unit tests
Adds define to run the world in a reduced memory usage mode by skipping the creating of the space zlevels loading only centcom and runtime station. Mainly for lummox.
* wip
* wip2
* makes code actually compile on 511 + fixes
* versioning
* s
* adds python conversion script, schema change and removes 'force ' from item_used_for_combat
* fix to compile
* forgot to actually commit this
* Find references fix.
Made it go from taking years to hours
Removed Datum based recursion, this was unneeded.
Fixed it calling a proc for what ended up being a costly noop millions of times (this was a moderate speed up as it would call DoSearchVar on every fucking number or string or null in a things vars list.)
Fixed it calling itself on the vars list. luckily it only checked keys, so this didn't stack overflow.
I'm intentionally leaving the debugging stuff in right now so that its on the record somewhere. I'll remove that when I pr line by line profiling as its own separate thing
* Remove debugging stuff
* i forgot
* Wizard datum
* This can go in this one actually
* Old proc
* Delete equipment
* Academy wizard datum
* didn't notice the spawn before
* otufit
* Some special_role removal
Player Notes can now fade out over time so admins don't accidentally ban players for 4 year old notes
Deleted messages now remain in the database and are instead just hidden from view.
Two things relating to messages I've been meaning to do for ever.
* Ports Paradise Job exp system
* changed to use json_decode and json_encode as recommended by oranges
* updates changelog
* Reee cyberboss
* Changes to use a seperate table
* Updates database changelog
Changes to use mediumint
* Back to wip we go.
Changes sql stuff to how mso suggested
Attempts the changes requested in the other pr.
* work on stuff.
* work on stuff.
* Renamed proc for time remaining.
Fixed updating time amounts.
Added delay to fix firing at roundstart
* exp is now stored in a global list, and only updated to the db at round end.
* some stuff
* Added button to toggle exempt status on a player.
Still need to make it update the db
* REEE Jordie.
Undoes delaying exp updating to round end.
Adds the updating filtering to the update_exp_client proc which is used again
* Lowers a bunch of the times needed.
* Makes tracking per job instead of per department.
Department time is now calculated from job time.
* Whoops forgot to update master first. Lemme save this
Reverb should play cheeki breeki to people
* I think I did this right.
Too tired to test atm.
Busy rewatching twintails ni narimasu
* Removes var from proc arguments
Fixes database stuff
* Does some requested changes.
Makes special_role be tracked instead of bundled under special.
* Done, but need to refactor how it handles ghost roles.
* Less false data wew
* Changes
* Updates db version
More changes
* More changes
* More changes
* revision fix
* OOPS
* fix schemas
* Makes SQL error logging handled by Execute
Gang role tracking now strips out the gang name and is generic.
* Adds a database versioning schema table
All it does right now is warn admins when the version in the db gets behind
the defined version in the compile options file
This also moves the db connection warning messages to the
CheckSchemaVersion proc in world, out of the roundid proc
as it's the first db proc called in a world round
* Update database_changelog.txt
* Update tgstation_schema.sql
* Update tgstation_schema_prefixed.sql
* TGS3
* Fix line endings
* Enable 16-bit long topics
* Cleans up topic socket usage
* Reduces and refines the IRC status throttle
* Increase the CP status delay to a reasonable amount
* Fixes the testmerge command not having a keyword
* Clean up rebooting a bit
* Get error codes from windows when symlinking fails
* Clean up world announces
* Aborting compilation will kill the DD process
* Add support for changing the project name
* Removes the log page
* Add support for compile cancellation
* Version bumps and docs
* Add merge-pr repo CL command
* Fixes DM cancel command's help message
* Refactor command line to show better formatted help text
* Corrects a typo
* Multi-key game options must be manually edited
* Moving of the server installation from the control panel
* Fix a bug with server moving
* Corrects webclient disposal syntax
* Service now handles the PR Json the game uses properly
* PR listing command for CL
* Fixes reversed testmerge and update help entries
* Windows scheduling to help avoid reboot crashes
* Generalization of chat infastructure
* Brings a file name in line with everything else
* Shutdown exceptions no longer keep the service online
* Enable provider switching on the backend. More thread safety
* Support for switching, password encryption and defaults.
* Removes boilerplate on log writing
* Discord integration
* Update the installer dependencies
* Version bump
* Adds support for getting the latest byond version
* Fixes issue with not being able to set discord channels
* Fix being able to reconnect if chat is disabled
* Extra validation for interface types
* Add the Chat page for the control panel
* Various cleanup
* Set read ACL on the data directory
* Remove redundant namespace usage
* Fixes some buttons not updating the server page
* Future proof against upcoming removal of repo data directory
* Normalize Main declaration
* Update the IRC library
* Enables CTCP
* Removes useless hack
* Logging + enable IRC private messages
* Jobs config
* And finally the maps config
* Save the last config panel visited
* Not gonna use these
* Minor formatting cleanup
* Fixes the chat page not refereshing after clicking reconnect
* Fixes server page not initializing correctly
* Repo now defaults to tgstation github when not found
* Revert "Set read ACL on the data directory"
This reverts commit 15b0021ec51532bca14690a884caa81e811fbc46.
* Design the admin config page
* Prep format the repo's admin_ranks.txt
* Add a negative permissions field
* IRC now RFC quits before disconnecting
* Turns out that fixed the disconnect lag
* Updates the admin ranks config api to work for us
* Done with this config shit
* @optimumtact
* Fix this
* Fix the .wxs
* Try to get md5/sha1 working.
* Add FCIV to appveyor
* Generalize the command class
* Revert "Generalize the command class"
This reverts commit 5c61f6df58d66f0fea4170c8aee0cd5beaa99b5d.
* ITS THE FUCKING SEX NUMBER!!!!
* Final touches
* No THESE are the final touches
* Do not advertise
* Revert "Do not advertise"
This reverts commit f64281d486f9ca27e39f19635ab4deacb2d7e1ac.
* Hopefully the last version bump for long time
* Fix line endings
* Fix default dbconfig.txt
* Fix Discord not checking the right admin channel
* Fix discord listening on ALL channels instead of configured ones
* Package the discord fixes for @JamieH
* Format the testmerge data a little better
* Apply 7 character clamping of commit strings
* Fold admin hard reboot into regular reboot list
* Backward ahelp compatibility with the adminbus bot
* Removes an unecessary semicolon
* Fix stray merge conflict in the config
* Fix Newtonsoft being included by the commandline
* Improve byond update logging
* Chat cleanup
* Fixes some setup non-errors from being displayed
* Repository no longer counts being busy as being valid
* Repository no longer valid while cloning
* Fixes a nudge socket change issue
* Frontend cleanup
* Fixes CanStart race condition
* Fixes compile cancel delays
* Various fixes
* More fixes
* Better readme
* More readme
* Fix a config command description
* Add missing repo status command
* Never delete the backups
* Log the compiles
* More logging
* Stuff
* A thing happened, but I'm not sure what
* Tiny
* INB4 second squash
* Version bump
* Shallow clones should speed things up
* Regular clones
* This is how it's set on travis
* Fix this dupe
* Add backup tag support to backend and command line
* Add some missing repo commands, fix GetHead. Fix reset on branches
* Remove the interfaces for commit and push
* Remove that generate changelog checkbox
* Yeah, that's a misunderstanding
* Make changelog pushing a config, with no way to enable for now
* Add Reset and Recompile option
* Update readme
* Repo page cleanup
* Fixed NudgePort message possible repeating
Fixed Reset and Recompile option always being visible
* Fixed compilation copy not overwriting files
Fixed compiler trying to unecessarily delete the whole A/B folder
Improved game folder initialization speed
* Selectively stage the html folder
* Make the restriction a config
* Switch to using LibGit2Sharp+SSH
* WIP SSH support
* Removes some success chat messages
* Make repo authentication purely file based
* Quick IRC fix
* Should all work in theory...
* More fine grained
* Remove the username thing
* Use the right default email for tgstation-server
* Update the readme
* That's worthy of a version bump
* Speling
* Makes it do as the readme says
* Fix testmerge list not having a scrollbar
* Trying out commit message based deployment [TGSDeploy]
* Whoops
* Testing
* Better
* Version Bump [TGSDeploy]
* Need to set the var at parent scope [TGSDeploy]
* Use the commit message
* Try this [TGSDeploy]
* Try just this
* This maybe? [TGSDeploy]
* >like [TGSDeploy]
* Wildcard, bitches [TGSDeploy]
* Saner title [TGSDeploy]
* Readme update
* This should loin ya
* Fix it [TGSDeploy]
* Readme, cleanup, and doc updates
* Improve DD crash handling
* Version bump [TGSDeploy]
* TGS3 Config Changes
* Line endings
* Map config code change
* Missed a few
* Security and Visibility selectors for the Server page
* Fixes OCD
* Fax it
* Fixes
* Version bump [TGSDeploy]
* eh
* The word comment has lost it's meaning to me
* This is a terrible name but whatever
* Support config changes
* This is part of the code so it belongs with the code
* ExportService now has a return value
* Copying of the logs dir during compile for #27674
* Version bump [TGSDeploy]
* Removes some uneedful
* Moves daemon config to BYOND folder, much safer
* Fix a config comment translation miss
* Fix project settings issue
* Fix config apply button not showing up after repo clone
* Fix anchoring for Backup Tags: label
* Version Bump [TGSDeploy]
* Nudge port only listens while server is running
* Fix some instances of the control panel crashing when the service stops
* Add start menu shortcuts
* Remove the actual server
* Remove appveyor
* Fix gitignore
* And this
* Readd HTTPS_Get for now
* Readd legacy support
* Fix
* Fix this stuff
* Last thing
* Line endings
* Final touches
* Dat newline
* More stuff
* Where'd that go?
* Real final touches
* Ups the player and station name length limits
I think they could use a buff in length, as I've seen captains have pretty creative names get cut in half and the joke ruined, and the name limit is really fucking small like come on goddamn
* changes