* Adds surgical sounds
Rough implementation as I don't have too much time tonight.
* Fixed falure_sound
Fixed a typo
* Removed the lists
Removed the lists and added sounds to revival surgery, stuff will probably break
* Fixes the playsounds still using pick
* Added sounds to more surgeries
Added sounds to four more surgeries
This PR adds 2 new BCI components: VOX component which allows to play vox announcements(for the user only!) and Thought Listener component which allows user to input a string upon activation.
I've also added a rotation port for the object overlay component so you can make pinpointers using it.
This PR requires #65604
Adds view sensor component to circuits which allows to get all visible(no ghost detectors, sorry) movable atoms in a 5 tile range. It only works when your circuit's shell is placed on the ground or is held in hands.
Fix an overlooked crystallizer issue where gases wouldn't get consumed because of a fixed rate of removal instead of an percentage based one.
Instead of removing a max of 500 moles from the final gas consumption (allowing some recipes to not consume gases at all) the quality removes a percentage of the recipe requirement maxing at 85% decrease (on poor quality you will still consume double the amount)
fix an exploit with the machine
Main Takeaways For Mappers:
Use monitored pathed atmos devices very carefully. Also dont put atmos_sensors willy nilly. They are used to hook to atmos control monitors.
We want to keep at most one device broadcasting for each of the atmos sensor, inlets, and outlets. Run the mapping verb Check Atmos Chamber Devices to be sure, though this might not catch everything.
Some of the warning are pretty harmless. For example if you have reconnected the "station atmos monitor" and you get no listener for distro/waste loop warning, it's safe to ignore.
I don't know what the maptainer policy is on making new subtypes for offstation content, but if you do please branch off the general ones instead of the specific gas ones. If you aren't making a new subtype, varedit the general ones too.
About The Pull Request:
Need Would prefer this to be merged before #65271 (In game atmos guide).
Not strictly necessary, just makes me sleep better knowing the handbook wont die alongside the rest of the UI.
Fixes#36668 (Atmos Monitoring Consoles don't update it's sensors to the new tank after reconnect())
Fixes#32122 (Mix console fucked after reconnecting it)
Also made the distro meter thing broadcast more info instead of just the pressure, because I'm sure nobody would care and it would make my life easier.
A small high-level overview in case this breaks again in the future:
A signal datum (not DCS) is sent by the atmospheric devices (injectors and vents) and will be received by the atmos computers. The data is then stored at the monitor object and then passed to the UI. This initial signal is sent by `broadcast_signal()`, called by `atmos_init()`.
New sensors/vents (if you can actually get them in game, still only adminspawn/wrenchables afaik) will also initiate the conversation if atmos_init() is called, so it works fine. This means you need to unwrench and re-wrench the devices if you adminspawn them though, ugh.
In case of a newly built computer, it needs to be the one that prompt the data to the devices, so we send a request signal. This is a bit inefficient since it doesnt work off of callbacks and assocs like DCS, but won't really matter since we're doing this rarely.
We only talk with the injectors and vents when necessary here, while sensors and meters keep beeping with every process_atmos() tick so they rarely break.
Why It's Good For The Game:
Messy code gone (debatable).
Refactored the atmos control console devices. The ones that hook to the big turf chambers.
Distro meter now broadcast the whole gasmix info instead of just pressure to the monitors.
Lavaland syndie's atmos chamber vents are now actually configurable. Moved a few things around to accomodate this.
Lavalannd syndie chambers hooked to distro and moved distro pipe to layer2
atmos monitors can detect reactions now.
Some minor code changes to how anomaly refinery and implosion compressor show the gas info. No changes expected, report if bug.
recoded checks for atmos chamber abnormalities in debug verbs.
refactor the Electrolyzer to use datumized reactions for its checks instead of just hard coded one in process.
added another reaction as proof of concept, the Hypernoblium to Antinoblium conversion
refactored the electrolyzer to use datumized reactions instead of hardcode them in process
added the hypernoblium to antinoblium conversion, when hypernoblium is exposed to the electrolyzer it will be converted to antinoblium
* Fixes tritium fire radiation stuff.
The reaction cleanup reverted the radiation chance from tritium fire changes, and did the energy release threshold incorrectly, making tritium fires release no radiation unless you had an astronomically high amount of tritium.
This fixes that by making sure air.volume gets divided by CELL_VOLUME before getting cubed. Adds tritium radiation release threshold define, which uses the correct amount of energy required.
Adds minimum radiation range define, and brings it back for radiation range from tritium fires (which accidentally got reverted), and changes the radiation range divisor to its proper value.
Adds back scaling chance for irradiation, and adds define for energy release required for a 50% chance for everything in range to get irradiated.
* H
The new defines had 2 /es instead of 3. Adds the third one.
* Water vapour condensation fix.
The define for water vapour condensation was set to (T0C + 10); however, the previous functionality for condensation checked if it was below (T20C + 10) instead of (T0C + 10). The new define is lower than what the check used to be, low enough that room temperature water vapour did not condense.
This changes WATER_VAPOUR_CONDENSATION_POINT define to be (T20C + 10) instead of (T0C + 10), so you don't need to cool it in order to make the tiles slippy.
* Blob mobs use astar/jps for automated movement pathing, no longer get blocked by blob mobs
I could easily make all hostile mobs do this, but there are *concerns*. behavior isn't the same, performance would be bad, requires more careful testing.
Where as overriding this just for blobs fixes a mob that is functionally broken right now as they think they can't cross blob tiles because they use byond's walk_to and that checks density
* Minor improvements
Fixes the description for the mouse being incredibly rude, judgmental, and insulting towards mice, who are objectively adorable.
Why It's Good For The Game
I mean, just look at these little guys, aren't they just adorable? How can we be so mean to such friendly animals? We're nice to cats, we should be nice to mice too.
* Fixes a runtime in build modes KABOOM
These values will runtime because eventually they get passed into
explode code which square roots them (WHICH IS IMPOSISBLE!!!)
Zero works, and DOESN'T RUNTIME!
* actually lets do this right
* improves a bit
headcoder wanted me to do it so lets go
every modsuit now has some amount of armor, this armor is pretty minor (ranging from 5 to 20) and department-dependant (engineers have more laser armor due to having to deal with emitters and whatnot, security suits have more bullet armor etc)
the wound armor values got nerfed for some of the suits
cc @tralezab as person with space armor opinions
Adds a wiremod component called "Format List" and one called "Format Associative List" that you get at round-start.
It accepts a format string and a list of parameters.
For "Format List":
The format string contains normal text, and codes of the form %n (eg. %1, %2, %3) that correlate to indexes in the param list.
For "Format Associative List":
The format string contains normal text, and codes of the form %key (eg. %name, %health) that correlate to keys in the associative param list.
The param list can contain any types, which will be automatically converted to strings.
Conversion of entities to strings still follows the range rule of To String. Important to keep in mind if you're formatting an NTNet transmission.
For the associative version, the keys must be strings comprised of letters, numbers, or underscore.
Simplest example that says "Bob McToolbox pressed the button.":
Swaps the weakref list of targets heretics use to a list of hard references, due to handling them on deletion
Uses a proc for removing sacrifice targets
Sacrifice targets which are deleted for some reason in game will automatically remove themselves from the heretic's sacrifice list, allowing them to reroll easier
Apparently, having one of your targets gibbed as a heretic is pretty unfortunate.
As I was holding weakrefs to targets, they persisted despite deletion (which I did not expect to be a problem)
So, now, when a body is completely gone (and you can no longer sacrifice them), the slot is freed for you.
adds some documentation to resonators
adds spreading to resonators, where the field has a chance (that lowers each spread) to spawn more fields.
the spreading idea did come from yogstation, but I changed how it decides to spread
You can click someone directly with shift+ctrl+click to offer an item only to them. This is in contrast with pressing G, which offers the item to every adjacent carbon mob.
Also fixes a runtime where the Give screen alert on a potential recipient was trying to remove itself on proximity loss after the Offering status effect had already done it.
Removes duplicate range check on Give screen alert that was causing the runtime as Offering status effect takes care of it.
Also adds a check after clicking the screen alert to take something to make sure we're not dead or incapacitated, so dead people can no longer take things.
Also adds a screentip for this functionality.
Also adds some more checks to give() to make sure we can do it before sending the message to players that we're offering something.
* Feeeeeeeeeeeeeeeeesh
* OOPS
* It's tiziran? I've been saying tirizan, why didn't someone tell me i've been making an idiot out of myself.
* Update packs.dm
About The Pull Request
Moves Thief antag policy from hardcode to get_policy.
Example with policy in policy.json
image
Example with no policy in policy.json
image
Why It's Good For The Game
https://github.com/tgstation/tgstation/blob/master/.github/guides/POLICYCONFIG.md
This antag type doesn't support the POLICY config mechanism.
Changelog
No player-facing changes.
This PR changes how assemblies and assembly holders work, and allows you to connect more than just a signaler and an igniter together. You could have a signaler, a repeating timer, and an igniter together to constantly produce sparks. Making the assembly holder is the same as before, but now you can add assemblies to it. This also allows signalers to be triggered via right clicking them while holding them in your active hand.
* Refactors phylactery to be a component
- Overall improves lich code
- Changed the SOUL_IMBUE signal to return a bitflag
- Minor style improvements (indentation and such)
* Tweak initialize + fixes a bug with being gibbed
* adds a clarification comment
* And fixes a compile error oops
* reorganizing
* clear the revive timer, just in case
* oops this should drop stuff
* missing no soul trait
* type in a variable name
* god damn devil removal
- this check was removed when devil was and i think it's kinda important to prevent stacking lichdom
* rework this a bit
* plurals
* also, wrong source
* updates the description
* Some review + undoes some changes
- Corrects some comments
- Uses defines
- Rewords the lichdom entry and spell desc
- Sets default time per res to 0 secs to avoid changing behaviors
About The Pull Request
Alternative to #65354
Ok so like, there was a lot of not floor types on /floor. They didn't actually want any of their parent type's functionality, except maybe reacting to breaking (which was easy to move down) and some other minor stuff.
Part of what we don't want them to have is "plateable" logic.
I should not be able to put floor tiles on the snow and be fine. It's dumb.
Instead, I've moved all non floor types down to a new type, called /misc.
It holds very little logic. Mostly allowing pipes and wires and preventing blob stuff.
It also supports lattice based construction, which is one of the major changes here. I think it makes more sense, and it fixes an assumption in shuttle code that assumed you couldn't place "a new tile" by just hitting some snow with a floor tile.
Oh and lattices don't smooth with asteroid tiles anymore, this looks nicer I think.
Moving on to commits, and minor changes
Changes clf3 to try and burn any turfs it's exposed to, instead of just floors
Moves break_tile down to the turf definition, alongside burn_tile
If you're in basic buildmode and click on anything that's not handled in a targeted way, you just build plating
FUNCTION CHANGE: you can't use cult pylons to convert misc tiles over anymore
Generalizes building floors on top of something into two helper procs on /turf/open, reducing copypasta
Adds a new turf flag, IS_SOLID, that describes if a turf is tangible or not.
Uses this alongside a carpet and open check to replace plating and floor checks in carpet code. This does mean that non iron tiles can be carpeted, but I think that's fine
Moves the /floor update_icon -> update_visuals call to /open
This change is horrificly old, dating back to 8e112f6 but that commit describes nothing about why it was done. Choosing to believe it was a newfriend mistake. Uncomfortable nuking it though, because of just how old it is. Moving down instead
Create a buildable "misc" type off open, moves /dirt onto it
Basically, we want a type we can use to make something support
construction, since that can be a messy bit of logic. Also enough
structure to set things up sanely.
I'm planning on moving most misc turfs onto it, if only because
constructing on a dirt tile with rods should be possible, and the same
applies to most things
Murders captain planet, disentangles /turf/open/floor/grass/snow/basalt
Adds a diggable component that applies the behavior of "digging"
something out from a turf.
Uses it to free the above pain typepath into something a bit more
sensible
The typepaths that aren't actually used by floor tiles are moved onto
/misc
The others are given names that better describe them, and kept in
fancy_floor
Oh and snowshoes don't work on basalt anymore, sorry
Snowed over platings now actually have broken/burned icon states, fixing black holes to nowhere
Misc turfs no longer smooth as floors, so lattices will ignore them
Placing a lattice will no longer scrape the tile it's on
Ok this is a really old one.
I believe this logic is a holdover from kor's baseturf pr
(97990c9)
It used to be that turfs didn't have a concept of "beneath" and instead
just decided what should be under them by induction. This logic of "if
it's being latticed scapeaway to space" made sense then, but has since
been somewhat distorted
We do want to scape away on lattice spawn sometimes, mostly when we're
being destroyed, but not always. We especially don't want to scape away
if someone is just placing a rod, that's dumb.
Adds a path updating script for this change
I've done my best to find all the errors this repathing will pull out, but I may have missed some. I'm sorry.
Why It's Good For The Game
Very old code made better, more consistent turfs for lavaland and icebox, better visuals, minor fix to snowed plating, demon banishment in lattice placement, fixes the icebox mining shuttle not being repairable
Changelog
cl
add: Rather then being tileable with just floor tiles, lavaland turfs, asteroid and snow (among other things) now support lattice -> floor tile construction
fix: Because of the above, you can now properly fix the icebox mining shuttle
refactor: Non floor turfs are no longer typed as floor. This may break things, please yell at me if it does
/cl
Thunder12345
Contributor
Thunder12345 commented yesterday
About The Pull Request
Removes lean, its sprite, and all appearances of it in code.
Why It's Good For The Game
Lean is an annoying, overused flavour of the month meme, totally devoid of character or originality. The only reason for it to exist here is because somebody saw it once, giggled for a few milliseconds, and made a maintainer giggle for a similar length of time.
It serves no useful gameplay purpose, and which I have never personally seen even being used, yet its mere existence empowers and legitimises people to reach sometimes borderline OOC in IC levels of talking about lean, safely protected by the shield of lean existing as an ingame thing regardless of how rarely seen.
Due to this ability to cover for annoying behaviour, its rarity and its lack of functional purpose in gameplay when actually made, I do not see any way in which lean existing is not a net negative.
tl;dr lean sucks
Changelog
cl
del: Lean has been removed entirely from the game
/cl