* tram cameras, science tab on tram, lavaland dock
* adds 2 boxes of beakers + 1 bodybag in the main medical area
* buffers for chem heaters or w/e
* punny puns
* sci stuff
Redoes how geese handle eating shit, it was fucking stupid and caused harddels, and while this method is technically slower in the best case, it's a fucking goose
Fixes action related harddels, I hate how they work but at least this way they won't hold refs.
Fixes the hierophont causing its beacon to harddel
Removes the M variable from megafauna actions, it was used like a typed owner and caused harddels, so I burned it
Fixes target and targets_from harddels, replaces all setters of target with LoseTarget and GiveTarget, which should help maintain behavior. I'm not sure if this breaks anything, but if it does we should fix the assumptions that code makes instead of reverting this change
Fixes more area_senstive_contents related harddels, we need to allow the mob to move before clearing out its list.
Fixes marked object harddels (I'm coming for you admin team)
Fixes a language based human harddel
Fixes managed overlay related harddels (This was just emissive blockers, but I think this is a good safety net to have. If we clear the overlay list we should clear this one as well)
Fixes bot core harddels, I hate the fact that this exists but it has no reason to know who its owner is
Adds a walk(src, 0) to simple_animal destroy, it's the best bang for the buck in terms of stopping spurious harddels. Walk related harddels aren't that expensive in the first place, since byond does the same thing I'm doing here, but this makes finding mob harddels easier, so let's go with it
I fixed another source of part harddels, I hate fullupgrade so much
Fixes all the sound loop harddels
Everything that called turf.assume_air and turf.remove_air was already updating turfs, and all that not tying
the two together did was add more boiler plate, and break things when people forgot about it.
This shouldn't add any overhead outside of hotspots, but I think that's trivial
* FINALLY IT IS DONE FUCK
* tip of the round into ooc
* adds cyopod chat messages to the info chat filter
* last one I promise probably, mob spawner messages to info filter
* holoparasite, round will start in x and keybinding conflict to respective filters
* removed motd from constants, made it infoplain surrounded instead
* changed info to infoplain
* cargobus, start of gloves
* basics of the HAUL gauntlets
* fully mapped in
* almost forgot the gauntlets
* ntnet improvements
* cargo gaunts, tablet cargobus
* excludes body bags
* dmis and map back
* readd icons
* RCD repairs grilles before adding windows to them
- Grilles need to be clear of unanchored items for a window to fit on them
- Attempting to build a window on a grille with unanchored items on it will automatically move 20 of them to your tile
- If more than 20 items are on a tile, adding the window will fail (but you can just do it again to move 20 more)
- Grilles no longer rely on a subtype to break
* Uses text macro thing for simpler code
Aims to speed up the replacement of broken disposal pipes by making it less demanding on the player. Hopefully this will lead to it happening more often. Does this by:
Allowing the RPD to destroy broken disposal pipes
Automatically destroying broken disposal pipes before trying to secure new ones of the same direction over the top of them
Automatically crowbarring floor tiles while trying to secure disposal pipes over the top of them if a crowbar is held in the offhand
Speeds up the rate at which broken disposal pipes can be replaced.
At the moment to replace a disposal pipe you have to weld each end of the broken pipe. It requires fuel, activation of eye protection and three seconds per end. This becomes time consuming when you have a lot of pipes to replace. It only serves to further disincentivise repair of everything but small breaches.
This PR lessens the requirement to only an RPD and half a second per end. You can also just place a pipe of the same direction over a broken pipe and the ends will be deleted for you. If you place a disposal pipe over a broken pipe that's above a floor tile while holding a crowbar, the floor tile will be removed so the RPD can secure the pipe. All that's left is welding the pipe and replacing the floor tile.
Hopefully this will lead to more people replacing disposals. There's still undesirable difficulty in finding out where pipes went and which ones were used (if you can't figure it out the only solution is making do or looking at the .dmm -- usually it just doesn't get fixed) but that's out of scope for this pull request. Replacing disposal pipes is just one of several jobs involved in repairing hull breaches that players don't want to do. Hopefully this eases the tedium of replacing obvious pipes.
extends the tile reskinning functionality to iron, bronze, plastitanium, carpet and pod floors
makes a bit of tile code better
moves some paths around, like elevator shafts being plating instead of floor
adds rotating as a tile reskinning function available on chapel or side floors for example
lets players customize any rooms they would want much more than it is possible now, allowing for more creativity
This PR fixes issues with the chameleon jumpsuit and sneakers. In addition to that, it properly defines setting for GAGS worn and inhand icons instead of having them be in Initialize() for specific item types. Names for the prisoner jumpsuits and wheelys have also been reverted to how they were before the GAGS PR.
* Makes all uses of atmos_senstive pass in mapload as context
* Converts atmos senstive to connect_loc, does some general cleanup to the element, and makes it check the state of the tile the thing is on assuming creation didn't happen as a part of map loading
* Updates connect loc to match the new arg list
Tiny atomic one line change that makes plants stay in the same place when you drop them.
What's the point of being able to hide in a plant if anyone with basic object permanence can see that a plant that used to be offset off the tile is now centered?
Also I was tired of seeing all the plants in the bar turn really ugly and offset the second Pun Pun gets to them with no way of centering them again.
maxymax13, /vg/station, Citadel Station
I really wanted #58190 (A port of cit tiles, fucking ahewhads) but then nobody gave it mergies so i've redone it except not stale, not merge conflict'd and not using stack crafting instead of tile floofing!
I fully replaced the fugly diagonal one with my own nicer parquet one, adjusted red carpet to be less noisy, and made a damaged state.
Much more customization for wood flooring enjoyers, and it's obtainable ingame, in an out-of-the-way method! Think of the bar remodels you could do with this and some cans of paint! Now all we need is to make the vinyl siding and wood panel siding decals place-able...
3 new variations for wooden tiles are available (large, parquet, and tiled), the same way you color titanium tiles! Remember, use a screwdriver and not a crowbar!
A new red planetary pattern design is available for arcade carpet!
* Makes tanks only process when needed, rather then doing it constantly
* Makes portable atmos machines only process when needed, makes adding and removing atmos machinery cheaper, makes the tank processing logic actually work properly
* Makes pipelines only react() when their mix changes, fixes a ton of misuses of update_parents that were causing about 10ms of load for atmos just from reconcile_air()
* Adds in a new reaction framework alongside the old one for profiling related reasons
* whoops
* Cleanup, removes the react profiling code, I've chosen a direction to go here
* Cleans up some code, adds comments describing how to interact with portable atmos machines/tanks and their
mixes, adds a blurb to Atmospherics.md about the topic as a whole, leaves a line of bread for someone to follow
if I get hit by a bus in 2 days (Knock on wood)
* Removes priority from reactions, moves priority groups to the defines file
* whoops
* Converts air_contents to _air_contents, replaces all the out of file things that used it with return_air()
* Replaces the canister air contents uses, converts it back to air_contents, I decided I didn't like the _
* Fixes
* IDs now reset their account when imprinted
ID's can now properly be reused without giving people random economy accounts as the imprinting on the PDA painter now sets the ID's account back to null
Does what it says on the tin! I've noticed that the Rapid Service Fabricator and the science/chemistry plumbing devices had no in-hand sprites, and decided "screw it" and made some for them!
New sprites, especially for things that exist but have no in-hands, is awesome!
Adds a new obj_flag that prevents building on objects that shouldn't be built on.
Adds it to the stasis bed and the sleeper, as well as some machines that become undense when the doors opens (nanite chambers, DNA scanners, suit storage unit, and gulag teleporter).
If I forgot any feel free to lmk.
Fixes#58528 (Operating table + stasis bed memes)
Some objects/machines that aren't dense (or become undense in certain states) shouldn't be able to be built upon, so this flag allows for specifying that you can't build on it.
I realized while playing cook the other day that we did not have risotto as a recipe, I was very disappointed to see we did not have it.
Risotto is good, therefore it is good for the game. Our rice recipes are quite dull so hopefully, this will be a neat new thing to do with it.
Sprites borrowed/stolen from Aurora's Synnono Aurorastation/Aurora.3#2567
There was a math error in mail's implementation in the economy SS when I switched it over to delta_time, so that basically the time-based define MAX_MAIL_PER_MINUTE was being multiplied by delta_time. Just one problem, delta_time was being considered in deciseconds as usual, but my chimp brain failed to recognize that, meaning that the maximum amount of mail arriving on station was around 100x more than expected.
This corrects the delta_time variable to think in terms of MINUTE time defines, not just a static decimal multipliers.
Junk mail is funny and good, but you'll never read any of these if you get 200+ letters every shift just like it.
Additionally, adds some fluff text to the examine_more of letters, to let players know that you can use destination taggers to sne and distribute letters once they arrive.
QOL tweak is just to make cargo players and in-game purists lives easier.
* Adds explosion SFX to the blastcannon and explosive compressor
- Extracts the explosion SFX and screenshake proc from the SSexplosions explosion handling proc and lets the explosive compressor and blastcannon use it.
* Miscellaneous changes
- Adds defines for the internal explosion arglist keys
- Reverses the values of the explosion severity defines
- Changes almost everything that uses `/proc/explosion` to use named arguments
- Removes a whole bunch of argname = 0 in explosion calls.
* Removes named callback arguments.
* Changes the explosion signals to just use the arguments list
Adds a simple framework to let objects respond to explosions occurring inside of them.
Changes a whole bunch of explosions to use the object being exploded as the origin of the explosion rather than the turf the object is on.
Makes the explosive compressor and blastcannon actually use the TTVs they are given.
Adds support for things responding to internal explosions.
Less snowflake code for the explosive compressor and blastcannon calculating bomb range.*
Less confusing explosion severity defines.
Less opaque explosion arguments
*does not guarantee that the solution to letting them actually use the TTV is any less snowflake.
* Organizing
Moves the following:
Enchiladas, from MEAT, to MEXICAN
Meat Bun, from PASTRIES, to MEAT
Hotdog, from PASTRIES, to SANDWICHES
Melon Bowl, from MISC, to SALADS
Oatmeal, from SALAD, to SOUPS (And changes the object path to match.)
Does the traitorous task of adding the GRAIN tag to Enchiladas. May god have mercy on my soul.
* Adds a trailing new line
Co-authored-by: Winter Flare <7543955+Owai-Seek@users.noreply.github.com>
The emissives system is the system that both lets computer screens and vendors glow in the dark and lets mobs and items block those glows. The current implementation relies on using filters to let mobs and items mask out the glow in the dark overlays on some structures. This is difficult to extend properly without massively increasing maptick. This PR changes the emissives system to use BYONDs native image layering to mask emissive overlays. This should prove to be a more extensible option.
tldr; There exists a system that lets computer screens glow on the dark and lets mobs and items block the glow. It isn't very extensible and this PR attempts to make it more extensible.
How emissive overlays used to work
Currently emissive overlays and the emissive blockers that mask those overlays are handled using a system of inter-masking planes. The emissive overlays and the emissive blockers are placed on separate, hidden plane masters. These are essentially rendering layers and groups. The emissive blocker plane is then used to mask the emissive overlay plane which effectively allows the emissive blockers to block the emissive overlays from being seen. After is has been masked the emissive overlay plane is used to mask the lighting plane, essentially creating holes in the shadows wherever an unblocked glowing thing exists.
Why this is a potential problem
This system works fine. In fact it works great! The computer screens glow, any person or item that winds up on a computer blocks the glow, and everything just works. However, this system runs into some issues when you try to extend it to work on things other than structures. Namely, the current system only supports emissive overlays on structures and emissive overlays that are completely unblockable by any means. As a result, several interesting uses to the system require extending the system.
As a result, if you want to apply emissive overlays to items (which exist between structures and mobs) or emissive overlays to turfs (which exist below structures) you must extend the emissives system to get the emissive overlays and emissive blockers to properly function. Doing this naively, by adding extra emissive overlay and emissive blocker planes and applying all of the relevant masking filters, is not exactly performant.
Maptick is a major contributor to lag and the higher the maptick the more free lag you, the player, get delivered fresh to your client. Trying the naive method resulted in #55782 (1f1b58bb26), an attempt to add glowing carpet to the game. Since the PR revolved around adding glowing carpet it had to extend the emissives system to allow for emissive turfs and emissive blocking structures. Extending the system was done naively as described above and you can see the results. 1.5 times the maptick across the board. Ouch.
So, we know that extending the system in it's current form is impractical. At least if done naively. Thus we are stuck.
tldr; The emissive system currently uses inter-plane masking to allow for emissive blockers to function. This is difficult to reasonably extend without murdering maptick. See #56496 (1f1b58bb26) for the results of naively extending this system.
How emissive overlays are going to work
Alright, so we know that the current system of using planes to let the emissive blockers mask the emissive overlays is difficult to extend in it's current form. The solution is to change how the system works so that it can be extended in a more efficient manner. What we want is a system that allows one set of images to be out masked by another set of images and for the first set of images to be capable of masking the light plane. Preferably, we would also like the ability to interleave the masking effect between emissives and emissive blockers with almost arbitrary layering.
Conveniently, this layering and masking is something BYOND already does to normal items and objects. If we put the emissive overlays and the emissive blockers on the same plane we can use their layers to interleave them almost arbitrarily like any normal structures and items! All we need is a way to mask away the emissive blockers from the resulting rendered plane and we can mask the lighting plane with the remaining emissive overlays.
Luckily, BYOND has provided a single filter that is capable of this task. The color matrix filter. This filter can be used to apply a color matrix to an image! Provided that the emissive overlays and the emissive blockers are different colors we can use a color matrix filter to effectively mask out the emissive blockers from the plane! The resulting emissive plane can be applied as an alpha mask to the lighting plane as it used to, to the same effect. The best part is, we get layering practically for free!
This is exactly what this PR does. It converts the emissives system from the old plane and masking based blocking to a new layer-based system which uses BYONDs native layer handling to mask the emissive overlays.
now mail doesn't get sent to... BAD recipients. (Antags arm, just say antags)
fixes incorrect unwrapping message (bad usage of a visible message)
mail recipients wasn't shuffling either. I'm fairly certain this was leading to some people always getting mail and some never getting it.
removes the 75% chance on screwdrivers initialize to have a random pixel_y between 0 and 16
it looks bad now that the screwdriver is centered on the tile
You can see why this is bad from the issue, but it applies a lot of other places you can cram the projector into. Like transit tubes! Or vehicles! Or free escapes from welded lockers! Spooky.