* 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>
* Fixes bitwise flag negation errors. (#58870)
These have been in the codebase for many years. Love, ZeWaka
* Fixes bitwise flag negation errors
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Lighter Grammar Fix (#58813)
* Sing -> Singe Replacement
Self explanatory. Replaces sing with singe
* Removes Scorch, Just In Case
* Lighter Grammar Fix
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* Adds a new obj_flag that prevents building on objects that shouldn't be built on. (#58719)
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.
* Adds a new obj_flag that prevents building on objects that shouldn't be built on.
Co-authored-by: Seth Scherer <supernovaa41@protonmail.com>
* Makes the explosive compressor and blastcannon actually use the TTVs they're given + the explosion changes to support that. (#58015)
* 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.
* Makes the explosive compressor and blastcannon actually use the TTVs they're given + the explosion changes to support that.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Emissive system refactor (#58130)
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.
* Emissive system refactor
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Full Auto Update: no crit firing, no spamclicking, more autofire, more balance
* aaa
* Update fullauto.dm
* aaaaa
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Stabilized light pink extract makes you a pacifist while active (#58498)
* Stabilized light pink extract makes you a pacifist while active
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Allows the Nanite Chamber to work on the same entities as the public chamber
* explaining what exactly was changed in the if statement wouldn't be a bad idea
Co-authored-by: Matthew <matthew@tfaluc.com>
* Renews Maintenance Drones
* And these have conflicts too, but you can't see them
* Skyrat Map Updates (Adding Supermatter Room Area)
Co-authored-by: Jonathan Rubenstein <jrubcop@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Fixes material amounts not updating when affected by stabilized metal extracts (#58277)
Co-authored-by: TemporalOroboros <TemporalOroboros@ gmail.com>
* Fixes material amounts not updating when affected by stabilized metal extracts
Co-authored-by: TheVekter <TheVekter@users.noreply.github.com>
Co-authored-by: TemporalOroboros <TemporalOroboros@ gmail.com>
* TGUI Limbgrower + Limbgrower refactoring and design expansion (#57955)
Refactors the limbgrower to modernize the code. Now, the limbgrower can accept any type of reagent in limbgrower designs.
Adds simple plumbing demand to the limbgrower, so you can pipe synthflesh into it.
Adds monkey tails, felinid ears and tails, lizard digitigrade legs, lizard tongues, fake lizard tails (unusable in lizard-wine and similar recipes), plasmaman organs, and ethereal organs (minus the heart) to the limbgrower via limbgrower design disks. These disks can be printed from the medical lathe once the required technology has been researched.
Adds a technology node to unlock the limbgrower design disks after advanced biotech, xenoorgan biology. In the future, this could have an experiment requirement - maybe to scan multiple types of species.
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* TGUI Limbgrower + Limbgrower refactoring and design expansion
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* changes most uses of SSvis_overlays.add_vis_overlay() inside of update_overlays() to true overlays (#57985)
* changes most uses of SSvis_overlays.add_vis_overlay() inside of update_overlays() to true overlays
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Layer overhaul (#57915)
## About The Pull Request
Changes up some layer and plane defines for no particular reason lol
## Why It's Good For The Game
Planes actually override layers, and layers control ordering within planes. A lot of the usage of plane and layer was wholly unnecessary. This refactor helps future maintainability while also being needed staging for _future features._
* Layer overhaul
* aaaaaaaaa
a
Co-authored-by: Rob Bailey <actioninja@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Now that batongs have been debatonged it's time to rebatong the new batong
* aaa
* aaaaaaaaaaa
* Update packs.dm
* RMOV BANTONG
* Update peacekeeper_baton.dm
* Update peacekeeper_baton.dm
* Update peacekeeper_items.dmi
* Desnowflakes tank integrity (#56443)
Makes tanks use obj_integrity instead of their own snowflaked version.
Makes tanks check for exploding when they are destroyed, rather than once every process.
Makes tanks always leak their gases when they are deconstructed.
Removes the ability for tanks to seal themselves back up over time.
Makes the bomb spawner actually produce functional bombs.
Removes the extraneous syndicate bomb spawner subtype.
Miscellaneous code improvements to tanks, bomb spawners, and the blastcannon.
Fixes the explosives compressor doubling the power of any bomb you put in it.
The changes to tank rupturing behavior shouldn't effect most tritium fueled TTVs including the 50K recipe. Toxins players don't need to worry about suddenly being incapable of getting points or refining anomaly cores. They should only really effect singlecaps, but I don't know enough about singlecaps to know what recipes I should test. I have confirmation that at least one mix is not effected by this.
The self-sealing properties of tanks have been removed. I'm not sure what the purpose of it was, I have heard that it was used to enable hand-portable plasmaflooding, but I'm not familiar with the practice.
As it turns out, the basic bomb spawners were broken on master! I have made the bombs they produce maxcap instead of just spring a leak. Since they maxcap by default now I have removed the syndicate subtype used to spawn the TTV produced by the cuban pete arcade game and replaced it with the normal timer subtype. Since none of the bomb spawner subtypes were used for anything else this shouldn't have any effect on the game.
On a similar note, I have discovered that the maxcap recipe on the wiki stopped working at some point since it was written. I will replace it with a functioning set of instructions.
Less snowflake code.
Bomb spawners are actually functional now.
Slightly better code.
The explosives compressor accurately reflects the power of the bomb you put into it.
* Desnowflakes tank integrity
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Some explosions code cleanup (#57493)
Clears out two deprecated explosions systems (explosion ids and explosion levels)
Refactors a bunch of contents_explosions procs to be maybe slightly faster.
Cleans up a bunch of ex_act code.
Slightly cleaner code
A few less unused vars on /atom and /turf
* Some explosions code cleanup
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Prevents abuse of the BEPIS to syphon cash from cargo. (#57610)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Prevents abuse of the BEPIS to syphon cash from cargo.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* changes the filepath of "nanomachines" to "cyborg_mutation_nanomachines" (#57539)
* changes the filepath of "nanomachines" to "cyborg_mutation_nanomachines"
Co-authored-by: Clyde-Thunderpants <80003925+Clyde-Thunderpants@users.noreply.github.com>
* Replace some turf in range() with RANGETURFS and fix(?) bspace trauma (#57566)
* Replace some turf in range() with RANGETURFS and fix(?) bspace trauma
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* Add Restaurant and Bar Holosigns to the Protolathe (#57339)
* Add Restaurant and Bar Holosigns to the Protolathe
Co-authored-by: Funce <funce.973@gmail.com>
* Creates offstation variants of the protolathe and circuit imprinter for offstation and ghost roles. (#57367)
* Creates offstation variants of the protolathe and circuit imprinter for offstation and ghost roles.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>