Commit Graph

1113 Commits

Author SHA1 Message Date
小月猫
62cf2ef21b small refactor to can_interact() so that borg range is fully respected (#60693)
Its a relatively small refactor that changes the previous machinery "can_interact()" proc that literally did a full override despite half of their checks already existing in not one, but TWO parent procs, so i removed the redundant checks, added callbacks to its parents and then added the cyborg range check on the can_interact_with() itself. in doing so i also moved the interaction range var from silicons only, to mobs as a whole and defaulted it to a single tile, silicons override it to 7 (so pAIs and borgs like before) but then set AI and AI.eye to "null", because i have a check in can_interact that if there is no range set, then the range is effectively unlimited. and i even added code for when AI is carded and their wireless transmission is disabled it sets their range to "0" aka, it has no range to do anything even if it could

this was really complicated for me so despite my extensive testing it probably would be a bad thing if any of you want to test my code yourself to ensure there isnt a bug with this (theres no runtimes ive come across)

note: i did a lot of searching and going through machinery to ensure i caught all the little snowflake overrides and added can_interact() checks to them, but i may have missed one or two things, especially maybe a altclick or ctrlclick somewhere, however i believe i caught most of them

one nice side effect of this refactor is that you can actually set another mobs range to something other than 1 tile and they can interact at range, rather than only silicons getting this ability, an admin could VV a human to have a 3 tile arm reach as a meme if they want
2021-08-31 13:59:39 -04:00
esainane
d0e8bf35de Many smart pipe fixes (#60981)
* Smart pipes now actually go over smart pipes

This was ostensibly the main feature of smart pipes, so should be
fairly important

Parentheses are technically not required around the |, but I think
it's important to emphasise the importance of parentheses around
bitwise operators as this was apparently broken since 3e8407c471

Also purge var/connections and var/connection_num, since it's
literally only used for a `machine.connection_num < 3` check
which is completely redundant, and we already build a bitfield
tracking active directions.

* Smart pipes bridge over straight pipe types

This improves bridging to now go over most devices where possible,
letting you, for example, bridge over a perpindicular layer adapter.

* Pipe construction: Better documentation

Cleans up smart pipe documentation to match what's actually happening.

No functional changes.

* Skip pipes on different layers earlier

This prevents a pipe being made into a bridge perpindicular to a pipe
on a completely different layer, then failing to turn into a bridge
perpindicular to a relevant pipe.

* Pop superfluous parentheses

* Prevent creation of stub pipes

Setting the RPD to create a smart pipe that can only connect in one
direction would cause it to create invisible pipes that would still
block the placement of other pipes.

* The RPD can now reprogram smart pipes

The RPD can only affect smart pipes in directions that they are not
currently connected to.

This makes it easier to adjust designs after the fact, including
prevening round-start pipes from eagerly linking to a grey layer
adapter.

* Even smarter pipes

No more turning into bridge pipes. We now only try to be smart if
placement would fail, and we do our best to find a solution
whenever there is at least one smart pipe involved, regardless
of whether we're currently placing a smart pipe or not.

We never reconfigure any directions that a smart pipe is currently
connected, and we never reconfigure a smart pipe to have one or less
usable directions.

* Smartly go across perpindicular layer adapters

Also works when we're placing a layer adapter perpindicular to a
promiscuous smart pipe

* Pipes: Factor out loops and some bitfiddling

Create and use helpers with documented purposes over inline bitfiddling,
when it makes sense.

Many loops and switch statements were recreating information that was
already there.

Some relationships between pipe bitfield states were already assumed.
This centralises the functionality that relies upon these assumptions,
places them where the bits are defined, and documents them.

Rewrite some bitwise operations to be more idiomatic.

* Smart pipes: Debugging output

I normally clean history before pushing changes to any project,
but I feel like this should be saved.

* Revert "Smart pipes: Debugging output"

This reverts commit bb3aa76cf6d08e4d0951113a26fc9d48b6bc1735.

* Add trailing comma

The lack of this was making the linter sad
2021-08-29 15:42:53 +03:00
Ghilker
8a68ad52d3 More thermomachine fixes (#60998)
fix error when typing the mole efficiency (instead of 0.1 it was 0.001, didn't push the change)
fix infinite power consumption (capped)
fix efficiency not being tied to laser tiers (issue connected to infinite power consumption)
Also fix #61006 (Thermos not working at all because of the efficency stuff added recently)
2021-08-27 13:52:06 -07:00
esainane
e8d4f1593f Fix thermomachines always having "grey" name (#61026)
Using a multitool on an open TCU changes its pipe color. However, the name was not being updated, leaving them to always appear to be grey TCUs.
2021-08-26 15:24:59 -03:00
esainane
28438bcad3 Fix HFR recipe cooling modifier description (#61028) 2021-08-26 15:23:26 -03:00
170141183460469231731687303715884105727
00d73f70e4 Smart pipes direction fix. (#60804)
All smart pipes had a direction of 2, and never changed. You could only place horizontal bridge pipes on any smart pipe. This fixes that by changing smart pipe direction.
2021-08-23 20:00:13 -07:00
esainane
78163d21ef Fix HFR box edge directions (#60979)
Using the multitool on the HFR boxes creates an HFR with all corners correctly oriented, but all edges oriented in the opposite direction. This PR changes it so that the edge components have the correct orientation relative to the core.
2021-08-23 01:22:33 -07:00
Ghilker
0e0335d734 Fix crystallizer from getting stuck (#60839)
This Pr stops the crystallizer from getting randomly stuck untill the recipe get changed
should fix other minor issues too by limiting the inserted gases by double the recipe amount (overshoot most of the time but is a non issue)
2021-08-19 22:23:00 -07:00
Ghilker
1ff8b2e2b2 Fix thermomachine temperature abuse (#60841)
* no more abuse

* derp

* some changes
2021-08-20 07:36:20 +08:00
EOBGames
b08632353c [MDB IGNORE] Eliminates Toxins (#60619)
Repaths everything referring to "toxins" while actually meaning either the room in science or plasma gas. While this PR might be disrespectful to our forefathers, given this is (I believe) a holdover from as far back as the Exadv1 days, this has constantly irked me since I started working with the code. None of the player-facing stuff has referred to plasma as toxin since before 4407 hit, besides the Toxins Lab, and yet all of the type-paths are still pointing at toxins, making it a nightmare to search for in a map editor, and making the code needlessly easy to confuse with that of toxin damage. So this just fires it into the sun.

Anything relating to Toxins, the science subdepartment, now makes reference to Ordnance instead. This felt fitting enough given the focus of the subdepartment is around the creation of and testing of explosives.
Anything relating to plasma gas has, fittingly, been made to refer to plasma gas.

Edit: Ah yes, I feel I should probably apologise off the bat for the size of this PR- the code touched is mostly atmos machinery and simplemobs, a few sprites here and there, and of course the station maps + a few offstation maps.

Makes the code more legible and makes mapping less painful.

(The payment has been made)
2021-08-17 11:49:47 -07:00
LemonInTheDark
cd576ab519 Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
2021-08-15 21:09:26 -07:00
Emmett Gaines
1188053c55 Removes a source of nonexistent parent pipenets during update (#60853)
Shouldn't have any visible effects. Atmos machines would occasionally complain about parent pipenets not existing during an update and this should resolve a category of those kinds of warning.

(This is a pain side effect of rebuilding being non instant, shoulda been dealt with a long time ago. Thank you -Lemon)
2021-08-14 23:01:29 -07:00
Ghilker
1548352cf2 Healium crystal changes (#60477)
Healium crystals now straight up fix the air in a room instead of giving an undetermined amount of gas
Area fixed is now a 7x7
Changed the recipe to no longer require freon but O2 instead
2021-08-14 16:01:02 -07:00
Ghilker
2960d9b401 color fix (#60857)
Fixes constructed atmos devices' name being always grey
2021-08-14 15:49:00 -07:00
Ghilker
bf8a91d30c Crystal foam - crystallizer new recipe (#60535)
Adds crystal foam, a crystal grenade made in the crystallizer from CO2, N2O and H2O. When used it will release a big foamed area that will close any breaches, similar to the smart foam grenade.
2021-08-14 15:47:50 -07:00
Ghilker
a03c6a020e HFR fuel issue fix (#60813) 2021-08-13 17:06:39 -07:00
LemonInTheDark
79dc58fe2a Redoes how alarms are handled, moves their behavior to datums (#60060)
* Adds in a set of datums to support sending, listening and storing alerts
In contrast to the old system, we now store a list of send alerts on the listener, rather then the area itself.

This makes clearing "our" alerts on destroy not a massive headache.

In addition, we now use a direct ref to the area's cameras list and signals to prevent camera hard deletes. This, combined with the aformentioned ability to clear, virtually eliminates hard deletes
sourced from alerts caused by strange senarios like the alert source moving its tile.

* Converts areas to the system, of note is the fact that areas no longer store a bool that determins if an alert
for power or atmos has been sent, that's instead handled by the alert sender datum. This means the sources list
on alert listeners actually means something

additionally, in order to prevent dumbassery with fire alarms since they're area based, fire alerts are sent by
an alert handler on the area itself
2021-08-13 11:54:44 -07:00
Gurkenglas
e0fad671fd Input ports now connect to multiple output ports. Remove combiner. (#60494)
* tgui bsod

* debug disconnections

* prelim

* recomment

* set_value -> put ._.

* DAMN IT

* reinsert subsystem

* prepare

* unditch signals

* remove combiner

* remove combiner some more

* how did router.dm get here? deleting.

* These two COMSIGS should be one.

* critical typo

* inline cast

* have your signals

* Have your set_input & set_output.

* make compile

* upgrade save/load to n-to-n-wires

* have your documentation

* have your unsafe proc

* pay no attention to the compile errors

* unlist the ref

* paste my for block back in ._.

* fix manual input

* oops pushed too soon

* Have your !port.connected_to?.length

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-08-11 18:48:29 +03:00
InsaneRed
3af8f31c19 adds the hyper-noblium crystal (#60436)
hopefully this should give atmos a thing to do that doesnt take 45 minutes into the round and they can sell / distrbute it to the station ive also added a place to store crystallizer items as it could get disorganized if more stuff are added and for more ease of acesss


Did some talking with insane, he's hoping to use this as an attraction to atmos tech, and putting on a timer will just make people use space adaptation instead. I plan on nuking space protection memes (genetics, xeno, this?) soon, but I can't do that until I do some other more pain changes. Gonna have to wait till next month anyhow.

I'll leave this be, maybe I'm wrong here, but I'm willing to yield on it for now
-Lemon
2021-08-10 23:02:25 -07:00
Watermelon914
13296f5f74 Refactors port types completely and adds the option type. Refactors options to use this new type (#60571)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-04 09:06:48 -07:00
SmArtKar
f3aabe932e Adds USB port to air alarm (#60526) 2021-08-02 18:25:20 -07:00
Gurkenglas
aa018a857a Circuit component descriptions and module names are now visible to the naked eye. (#60545) 2021-07-31 21:19:43 -07:00
Tim
2ec9596d38 Fix gas meters to display properly (#60433) 2021-07-29 02:21:44 -07:00
Ghilker
b8b169257e fix HFR from being indestructible (#60475) 2021-07-28 01:39:57 -07:00
Tim
014dedc1a3 Fix vent pump icon state (#60409) 2021-07-24 17:25:25 -07:00
Tim
a455259b3f GAGS coloring for Atmos that displays changes in temperature (#59924)
This PR adds temperature based coloring for atmos gas meters and freezers.

These values are based on the BODYTEMP icon warnings that you get when a room is too hot or too cold. There is also some minor code improvements where some of the icon heat and cold warnings were hardcoded values. I made this a constant in the __DEFINES.atmospherics.dm file that you can see below. These values have been applied to air alarms, thermomachines, gas meters, and species code.

This is a QoL update for atmos tech nerds. Instead of having to manually examine a gas meter or use an analyzer to determine what temperature is in the pipes you can rely on the colored icons to communicate that information rapidly. This should also help prevent harmful gas leaks where a person unwrenches a pipe without realizing there is hot gas inside it. And you should be able to troubleshoot a delaming SM faster and easier with these colors.
2021-07-21 14:40:33 -07:00
vincentiusvin
952cb885b6 Fixes an atmos related runtime involving rotating machineries (#60244)
* Adds a simple if check to prevent runtimes

* Deletes a mistaken comment that I added in the prev commit

* Implemented the check for TEG and HFR.
Also moved cryo nullifyPipenet check and firing to only happen if a node is present.
2021-07-20 21:52:12 -04:00
LemonInTheDark
96cc4a7260 EVEN MORE HARDDEL FIXES (#60228)
Fixes a ton of harddels, sourced from #59996 
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.

See you on the other side

Makes the cryopod control computer into a weakref, never trust bee code 
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
 Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @stylemistake 
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything

Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.

<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->

## Why it's not good for the game

I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
2021-07-19 12:41:21 -04:00
Ghilker
82deba9c7a rebalance fuel, moderators and cooling (#60246)
Fuel have a max amount before the machine start taking more damage (10k moles, it gains 1 damage every 1000 moles exceeding 10k. this damage overseed the capped one)
Moderators have the same treatment, but instead of adding damage, they'll crack open the machine releasing gases (depends on the pressure achieved) there is a small explosion or a big one.
Cooling volume has been added, that way the cooling can be made stronger or weaker based on the current situation and need

added downsides to shoving too much fuel/moderator inside the machine, the cooling volume can be adjusted in the GUI to make it stronger/weaker based on the user needs
2021-07-18 23:45:58 -07:00
RandomGamer123
7d0a21d9d3 Fixes stationary tanks starting out with 5000L instead of 2500L (#60001)
Prior to this, the first stationary tank in a group you placed down would have 5000L, while the second, third, etc. would add 2500L each to make it 7500L and 10000L for two and three tanks respectively.
2021-07-11 23:57:44 -07:00
RandomGamer123
54e13139a1 Makes roundstart stationary air tanks actually have a ratio that is breathable and matches normal air (#59965)
See title. Prior to this roundstart stationary air tanks had a ratio of 1:5 between oxygen and nitrogen, ie 16.667% oxygen and 83.333% nitrogen. This fixes that and makes it have 21% oxygen and 79% nitrogen.
2021-07-11 23:56:18 -07:00
Ghilker
0b3c8fd5c7 [PORT] Pipe overlays overhaul and bitmasking (#60052) 2021-07-10 02:08:17 -07:00
Ghilker
29599fc615 thermomachines will not rotate automatically when moved (#60053)
Fix an issue when pulling or pushing the thermomachine would cause the pipes to behave weirdly
2021-07-07 23:36:46 -07:00
RandomGamer123
f9a2fcfdb0 Removes plasteel as a custom material for tanks to prevent bugs (#59963) 2021-07-04 16:42:29 -07:00
RandomGamer123
066e34148c Makes tanks display their max pressure and only return their analysed contents once (#59946) 2021-07-03 14:46:43 -03:00
Rohesie
2c5a357035 Reverts Entered() passing dir instead of old loc (#59910) 2021-07-01 17:06:42 -07:00
LemonInTheDark
d368e4d49d Changes how weather sends sound to players, reduces sound loop overtime (#59284)
* Converts looping sounds from a list of play locations to just the one

* Updates all uses of looping sounds to match the new arg

* Adds an area based sound manager that hooks into looping sounds to drive the actual audio. I'll be using this to redo how weather effects handle sound

* Some structrual stuff to make everything else smoother
Timers now properly return the time left for client based timers
Weather sends global signals when it starts/stops
Looping sounds now use their timerid var for all their sound related timers, not just the main loop

* This is the painful part
Adds an area sound manager component, it handles the logic of moving into new areas potentially creating new
sound loops. We do some extra work to prevent stacking sound loops.
Adds an ash storm listener element that adds a tailored area sound manager to clients on the lavaland z level.
It's removed on logout.
Adds the ash_storm_sounds assoc list, a reference to this is passed into area sound managers, and it's modified
in a manner that doesn't break the reference in ash_storm (This is what I hate)

* Hooks ash storm listener into cliented mobs and possessed objects

* Documents the odd ref stuff, adds an ignore start var to looping sounds, fixes some errors and lint issues

* Applies kyler's review

banging

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>

* Cleans up some var names, reduces the amount of looping we do in some areas

* Makes the code compile, redoes the movement listener to be more general

* fuck

* We don't need to detach on del if we're just removing signals on detach

* Should? work

* if(direct) memes

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-06-30 20:51:35 -04:00
Emmett Gaines
67c89fa1ab Greyscale Mat Datum Stationary Smooth Tanks (#59556)
Stationary gas tanks have been in a terrible place for a long time, this addresses some of the issues with a more balance focused change coming in a second mapping pr after this one.

Stationary gas tanks have been made constructable and act similarly to canisters in that they can be damaged, repaired, and over-pressurized to explode. Additionally, they can be made with any rigid material and their stats depend on that material. A glass tank is going to have far less pressure capability than one made of plasteel.

In terms of gameplay there are two main differences now: Adjacent stationary tanks will merge together both graphically and with their internal storage. Any port on any of the tanks can access this shared storage. Also stationary tanks no longer magically have many times the volume for gas as the tile it's in, instead they have a pressure cap and a normal amount of volume.

Of interest to coders this pr also adds a generic grouping datum that acts similar to how pipe networks work. It maintains a listing of all adjacent objects whose type falls within a specified filter. In this case it's used for the gas tanks to know of every other tank in the group. I'll be looking into spreading it's usage elsewhere where this can replace existing one off systems.

Some (de)construction:
First a glass tank is constructed which is then immediately damaged by the high pressure in the gas storage that is now shared. After repairing it for a moment another metal tank is built.
2021-06-26 19:26:33 -07:00
LemonInTheDark
4e982e3a19 Fixes space having gas sometimes (#59817)
Ok so uhhhhhhhhh
Passive vents were using return_air and equalize to operate on potentially space turfs
This was causing the contents of the passive vent to "teleport" to other tiles, especially if it was placed on a
space turf with no connected normal turfs

It would also occasionally form a grid, due to turfs activating from superconduction

HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
2021-06-25 23:46:13 -07:00
Watermelon914
921416b5d8 Adds the airlock shell, refactors USB code to be easier to use, implements USB cables for the binary valve and more. (#59728)
Adds the airlock shell. The circuit has full control over the airlock.
Refactors USB code to be easier to use for less experienced coders.
Implements USB cables for the binary valve to be able to open/close the valve.
Adds a private channel for radios that only lets circuits with the same owner's ID to interact with it.
2021-06-24 14:22:19 -03:00
LemonInTheDark
6fcbce39cd Makes turfs persist their signals, uses this to optimize connect_loc (#59608)
* Makes turfs persist signals

* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear

* Converts all uses of connect_loc over to the new patterns

* Adds some comments, actually makes turfs persist signals

* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work

* bro fuck documentation

* Changes from a var to a proc, prevents admemems and idiots

* Extra detail on why we do the copy post qdel
2021-06-22 23:12:34 -04:00
Rohesie
e03cd1aada Refactors move procs to support multitle objects (#59658)
Enter(), Entered(), Exit() and Exited() all passed the old loc forward, but everything except a single a case cared about the direction of the movement more than about the specific source.
Since moving multi-tile objects will have multiple sources of movement but a single direction, this change makes it easier to track their movement.

Cleaned up a lot of code around and made proc inputs compatible.

I'll add opacity support for multi-tile objects in a different PR after this is merged, as this has grown large enough and I don't want to compromise the reviewability.

Tested this locally and as expected it didn't impair movement nor produced any runtimes.
2021-06-20 14:55:37 -07:00
RandomGamer123
3f7ca7b1f4 Fixes powerfist randomly not working when using mixed gas types (#59234)
Adds a bit of wiggleroom so QUANTIZE being called on gas_mixture.remove() doesn't randomly and occasionally makes the powerfist think there isn't enough gas. This seems to be the only feasible way of fixing it.

Adds a helper proc to do this generically
2021-06-17 11:59:11 -07:00
Rohesie
0ec599786a Adds a setter for density (#59529)
Adds set_density()
Fixes one instance of a duplicate density assignment on an object.
Comments two hacky usages of density which will have to forgo using the setter for now.

Lets us append code to the event of density changing.
Pretty sure this is leading up to some multitile object thing -Lemon
2021-06-16 15:06:10 -07:00
Watermelon914
375a20e49b Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
2021-06-14 13:03:53 -07:00
vincentiusvin
ade169a2a9 Converted some atmos devices to use balloon alerts on alt-click. (#59601)
Devices: vol/pressure/passive/temp pumps, pressure/temperature gate, thermomachine, injectors, filter & mixer.

Currently for alt-click only. There are some to_chats hooked to unwrenching etc. Let me know if those should be bundled in or if it's better to be made into a atmospherics/components level proc on another PR.
2021-06-13 03:04:53 -03:00
vincentiusvin
e37c324a0b Stimformation requirements list fix + some small heads-up on the requirements list (#59599)
Atomized out of my stimball PR #55558, stimformation has a min() proc hooked to the gas formed that accounts for the amount of plasma present inside it, while not explicitly stating that in the requirements list. This PR would make stimformation/react() not get called by gas_mixture/react() when no gas will be formed.
Also added a short doc-comment to the requirements list in case someone else wanted to add new requirement interactions.
2021-06-11 19:34:05 -03:00
LemonInTheDark
f90e8cf7a3 Fixes a bunch of harddels that are sourced from player action (#59371)
Sourced from #59118 and a cursed project I'll pr later, This pr contains a lot of harddel fixes for stuff that pops up after a player interacts with something. I'm not gonna list them all here because there's something like 60 130, check the commit log if you're curious

Oh and I moved ref tracking screaming to a separate define, and made some optimizations to the thing in general. I think that's it, this pr is a bit of a frankenstine
2021-06-10 21:44:23 -03:00
Rohesie
d990b71da2 set_anchored() (#59532) 2021-06-08 12:07:34 -07:00
vincentiusvin
83c03b2161 Hotspots / LINDA_fire docs. (#59493)
Writes some documentation on hotspot itself, perform_exposure, hotspot_expose, and process.
2021-06-05 10:51:50 -03:00