* Nanotransen Legal Liability Initiative - Weapon Stats but more RP (#58865)
* Weapon Descriptions (And Also Reversion)
Adds support for weapon statistics to be shown as part of examining an item, similar to the tags found on armor. Also, reverts the small changes I made on master because I'm a fucking idiot and made those changes on master.
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Nanotransen Legal Liability Initiative - Weapon Stats but more RP
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* optimizes some internals of signal and component code (#59154)
* optimizes some internals of signal and component code
* comment and a better var name
* gets rid of DF_SIGNAL_ENABLED and all referencing code because its dumb
* gets rid of NONE | CallAsync(stuff)
* fixes conflicts
* puts NONE back in
* optimizes some internals of signal and component code
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Minor repalettes of some ID cards and trims (#59240)
* Add files via upload
* Update jobs.dm
* Minor repalettes of some ID cards and trims
Co-authored-by: Kokonut <38844529+maxymax13@users.noreply.github.com>
* Fix stupid casing where we have both icons/Testing and icons/testing (#59220)
In this PR, mothblocks malds.
* Fix stupid casing where we have both icons/Testing and icons/testing
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* makes LoadComponent() a macro like AddComponent() is so it supports named arguments
* Update miscellaneous.dm
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fixes a bug in signal unregistration code that was causing unrelated objects to lose their registration in a (#59116)
This was causing unrelated objects to lose their registration in a hyper rare case.
The process went something like:
when object foo is registered to something and object bar is registered to the same object with a different
signal it will remove foo's signal only when foo is the only one registered to the object with that signal
Why it's good for the game
This was breaking #58918 when blood wasn't qdel'd post test. I'm so happy I found this.
It's a rare case, so I doubt it'll effect a lot of things, but I can trust UnregisterSignal again, which is very nice.
* Fixes a bug in signal unregistration code
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fix issue where Plumbing Reaction Chambers can get stuck filling (#59131)
About The Pull Request
This Pull Requests aims to fix the issue #58993 by changing two parts of the logic I've seen the chambers get stuck on.
Chamber gets stuck requesting a unit that is always rounded down to 0
Chamber gets stuck requesting an insanely small number that gets eaten by float math
Part 1 Explanation
Take the example where a chamber is trying to request one unit of chemical from three synthesizers. A chamber will divide it's request amongst all suppliers who can satisfy it. In this case, 1 / 3 becomes asking each synthesizer for 0.33 (due to rounding). After one update, the chamber has 0.99 of the chemical, not 1. On the second update, it then requires 0.01 of the chemical and asks each chamber for 0.0033, which gets rounded down to 0. This means the chamber NEVER fills as it spends every update cycle doing the same logic and trying to transfer in parts of 0 in size.
This has been fixed by changing it from flat dividing the amount required by the number of suppliers to a more dynamic approach that looks at the target volume and how many requests it needs to make. This mean that instead of asking for 0.33 three times in the above example, it actually works out more to asking for 0.33 then 0.34 then 0.33. Meaning it gets the whole 1 it wanted in the first update, fixing the issue.
Part 2 Explanation
Even with the above fix, when working with the right numbers, floats do not add as expected. Take the above example. I lied. 1/3 as a float is NOT 0.33. 0.33 does not exist as a float, so the actual closest value is 0.32999998, which is what the code will use, even when rounding to 0.01. What this causes is, in some scenarios, chambers getting incredibly close to their target volume but never being able to actually reach it because currentVolume + missingAmount comes out as just currentVolume, due to the insanely small float that it's missing having no impact on the larger float when added together. Again, this is due to how floats work.
So to avoid a chamber getting stuck on 98.9999999998 when it needs 99, I'm adding the CHEMICAL_QUANTISATION_LEVEL constant (used elsewhere for similar issues) to the chamber's volume when checking if it has enough. This way, the chamber will exit the filling mode even though it was short by a tiny fraction. These discrepancies seem to get handled anyway in the actual reaction code so I haven't seen any changes/problems to my outputs. For all intents and purposes, 98.9999999998 is 99 in float arithmetic when rounding as we do.
Why It's Good For The Game
Fixes an incredibly annoying issue that plagues chemistry automation. Machines, in many scenarios, currently get stuck when they shouldn't. This means a chemist has to actively keep monitoring all their machines and then do some investigation when suddenly something stops. Eventually finding the problem chamber that is stuck on "Filling" and then plungering it. Not all Chemists know of this either and just assume it's something they have done or that it's just broken and unaware how to fix it.
Now a Chemist can move on to automating more or helping elsewhere rather than babysitting their setups.
Changelog
cl
fix: fixed issue where plumbing Reaction Chambers get stuck on "Filling"
/cl
* Fix issue where Plumbing Reaction Chambers can get stuck filling
Co-authored-by: mGuv <mguv.dev@gmail.com>
* Balloon alerts - Text for minor actions w/o other feedback (#59130)
Currently only applies to beakers changing amounts as a proof of concept of an action that we can't really provide any non-text feedback on, as opposed to something you could have different sounds for.
Inspired by SS14.
Why It's Good For The Game
In the right place, balloon alerts will let you keep your eyes on the game itself, rather than constantly looking at the chat. This is especially important when chat messages will collapse into each other. This is in most cases warranted, but can make other cases (such as changing beaker amounts) confusing.
Changelog
cl
qol: Changing a reagent container's transfer amount will now give you feedback in the form of text on the container itself.
/cl
* Balloon alerts - Text for minor actions w/o other feedback
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes sound loops not well, stopping. They were being removed from the wrong subsystem (#59138)
* Fixes sound loops not well, stopping.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Makes timer subsystems available as a new subsystem type (#59073)
* Makes timer subsystems available as a new subsystem type
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* changes duct layer of alkaline input in reaction chamber to 4th (#59095)
* Changes Duct Layer of Alkaline Input in Reaction Chamber to 4th
Co-authored-by: Greniza <61635418+Greniza@users.noreply.github.com>
* Stop singularities from consuming themselves (#58987)
This bug was fixed by one of the connect_loc PRs, but this is still useful as it contains a CRASH for when it happens if this bug comes back again.
* Stop singularities from consuming themselves
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes a ci error caused by adding an element to something that'd being deleted (#59108)
So that's why mythril coins kept harddeleting.
Man I'm glad I added an error on adding elements to qdeleted objects.
* Fixes a ci error caused by adding an element to something that'd being deleted
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Adds deflection messages for no damage attacks against objects (#58873)
* Adds deflection messages for no damage attacks
* Changes the addition to ", which doesn't leave a mark" instead
* Adds deflection messages for no damage attacks against objects
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* big connect_loc fix. teleporters dont cause runtimes and movables registered to things entering their turf no longer have themselves entering their turf sent to them (#59065)
* big connect_loc fix. teleporters dont cause runtimes and movables registered to things entering their turf no longer have themselves entering their turf sent to them
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Fixes connect_loc related hard dels (#58945)
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Fixes connect_loc related hard dels
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Fixes some fucked Destroy()s (#58973)
Some stuff was failing to return qdel hints, might as well sweep that upppppp
(Hey mothblocks I know you're reading this, we should really lint for this, but don't push yourself over it I
know you're busy as it is)
* Fixes some fucked Destroy()s
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes a runtime with ai trying to use a browser ui (#59062)
* Fixes a runtime with ai trying to use a browser ui
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* validate THIS integration tests (#59024)
Hi, the #58882 PR missed that validate takes an item, no parent var lookup required.
Why It's Good For The Game
UNFUCKS MASTER
* [SPEEDMERGE CANDIDATE] Validate THIS integration tests
Co-authored-by: Funce <funce.973@gmail.com>
* Tidy HTML folder (#58761)
This PR aims to make the HTML folder a little more organized, as well as remove a few unused files.
Why It's Good For The Game
Doesn't change anything for the player, however makes the files more organized.
* Tidy HTML folder
Co-authored-by: Celotajs <81999976+celotajstg@users.noreply.github.com>
* Removes bad return from processables that broke cooking (#58983)
* Removes bad return from processables that broke cooking 🐀
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* fixes master (adds a name to the venomous prefix, fixes bad signal in udders.dm)
* Update signals.dm
* AAAAA
* Update udder.dm
* Update CentCom_skyrat_z2.dmm
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more) (#58882)
* Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more)
* AAAAAAAA
* Update spellbook.dm
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* GOOFUDDERS: YOU CAN MILK ANYTHING (You can only milk cows, goats gutlunches but with componentized goodcode) (#58910)
Co-authored-by: 81Denton <32391752+81Denton@ users.noreply.github.com>
Co-authored-by: Qustinnus <Floydje123@ hotmail.com>
* GOOFUDDERS: YOU CAN MILK ANYTHING (You can only milk cows, goats gutlunches but with componentized goodcode)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: 81Denton <32391752+81Denton@ users.noreply.github.com>
Co-authored-by: Qustinnus <Floydje123@ hotmail.com>
* Fixes big roundstart ductnets breaking world init (#58659)
closes: #58623 (Having two stationary plumbing tanks connected broke the map)
you can now map infinitely huge plumbing networks
Byond mistakes big chains of connecting ducts for an infinite loops, so when a lot of ducts (about 60) initialize at once and chain connect, byond kills the worldtick.
Plumbing already had an internal duct limit of about 800~ ducts, which has now finally been fixed aswell. The plumbing subsystem (SSfluids, I need to rename this shit) tells one duct to start connecting and uses the timer subsystem to call them one by one.
* Fixes big roundstart ductnets breaking world init
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Gives the monkey a gun (#58565)
This adds a rare-ish negative station trait that gives Pun Pun a weapon, fills their heart with anger, and bloodies up the location they spawn in. (Yes the weapon is even more rarely a gun)
A request for one of the weapons to be a sign meant that a random sign type was added here as well.
* Gives the monkey a gun
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Tend Wounds and Debride Infection surgeries now estimate how long you have left to finish (#58682)
* Tend Wounds and Debride Infection surgeries now estimate how long you have left to finish
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>