* New contraband peanuts (#59638)
Adds a new variety of peanuts to Getmore
Tweaks peanuts to have a higher price, since they're currently the best thing to buy in the vendor.
* New contraband peanuts
Co-authored-by: YakumoChen <king_yoshi42@yahoo.com>
* POLICE TAPE WOO
hmmgh
* Much things, read desc
Placed tape is a structure now instead of an item, door sprites are actually torn, all code besides destruction works (mostly)
* TAPE WORKS 99%
just need to have a visual for lifted tape..
* Adds lifted visual + starts on making tape obtainable
ahgghbkaghb
* finishes the vendors. 100% complete(?)
AAAAAAAAAAAAAAAAAAA
* detdrobe vending
abghb
* lifted alpha is better
hbgb
* change opacity hngh
* indentation bhgjknbg
im so tired
* walking can crumple the tape too
* desc
* [modular][ready]adds the sec ushanka to the vendor
* Update vending.dm
* cargo, chap and med
* hl scientist
* Update head.dm
* Update wardrobes.dm
* UHHHH
Co-authored-by: louiseedwardstuart <bonniefluff>
* Makes washing machines support GAGS recoloration (#59292)
* Makes washing machines support GAGS recoloration
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Adds new sprites for assembly part vendors and custom vendors (#59051)
* Adds new sprites for assembly part vendors and custom vendors
Co-authored-by: Kokonut <38844529+maxymax13@users.noreply.github.com>
* [semi modular][ready]adds the collars to the dorm vendor, two blue gloves to the medidrobe on request
* ballgags
Co-authored-by: louiseedwardstuart <bonniefluff>
* 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>
* quaaludes
* cocaine runnin round in my brain
* crack + cocaine powder + other shit
* Update cocoa_vanilla.dm
* newlines
* adds export value to crack and cocaine, fixes descriptions
* good god why is it failing its fine ingame
* please just fucking work
* remove shit that i put in by mistake
* Update cocaine.dm
now deals heart damage less tox damage on overdose, and now gives you a speed boost
* adds opium, heroin, and cocaine bricks + tweaks
* forgot to add poppies to the vendor, whoops
* makes the growing sprite actually show up
* fixes description of black tar heroin
* Adds Welding Hardhat variants to the engidrobe + other tweaks
Also fixes/adds missing sprites cuz honk
* whoop
bad comment a
* CONFLICTS
ababababa
* comments
aaaaaaaaaaaaaaaaa
* OCD sorting
colr with color
* Adds two new cargo uniforms
Honestly should have had this in the original Utility port but they weren't in the right files h
* gorkajacket
gorkagorkagorka
* fuckin conflicts
AAAAAAAAAAA
* CONFLICT AA
aaaaaaaaaaaaaaaaaaaaa
* aaaaaaaaaaaa
fucking CONFLICTS
* Modifies SecTech ad from beating capitalists to communists (#58083)
* Modifies SecTech ad from beating capitalists to communists
Co-authored-by: Swept <sweptwastaken@protonmail.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>
* You can now put food on plates, and plate no longer materialize out of nowhere as you cook
* Update dish_drive.dm
* aaaaaaaaaaaaaaa
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>