* Fixes a turf signal unregistration I missed, makes the transparent turf element detach (#60064)
* Forgot to patch this up, the transparency element both does not detach on parent destroy, and with the new signal changes leads to signals persisting, which is bad and ick. This fixes that
* Fixes a turf signal unregistration I missed, makes the transparent turf element detach
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Reverts Entered() passing dir instead of old loc (#59910)
* Reverts Entered() passing dir instead of old loc
Co-authored-by: Rohesie <rohesie@gmail.com>
* 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>
* Changes how weather sends sound to players, reduces sound loop overtime
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
* Jaunting no longer allows you to end up inside a wall (#59520)
Jaunting now keeps track of the last five non-blocked tiles you moved across while in the jaunt. Upon exit, it will attempt to deposit you into the last unblocked tile. Should it run out of tiles to try, you will be returned to your starting location. As such, jaunting mobs can no longer end up inside walls or dense objects. Tables, and anything else with the climbable element, are still allowed.
Added support to /turf/proc/is_blocked_turf() to allow ignoring climbable atoms.
Added the TRAIT_CLIMBABLE trait, applied by the climbable element, to accomplish the above.
* Jaunting no longer allows you to end up inside a wall
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
* Fix missing SIGNAL_HANDLER
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* 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
* Makes turfs persist their signals, uses this to optimize connect_loc
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
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
Co-authored-by: Rohesie <rohesie@gmail.com>
* Auto doc'd much of grown botany food and plant traits and renamed a buncha variables and parameters to match modern contribution guidelines.
* Cleaned up a good bit of plant gene code left over from the prior refactor and modernized some of it.
All plant effects that were once unique to a plant are now un-graftable, un-mutatable, un-shearable plant traits - called IMMUTABLE traits.
The ultimate goal of this PR was to make all of the hidden, arcane traits that are spread through botany's various plants and add a way to figure out they exist in game. Take omega-weed, for example, which has a maximum volume of 420 units.
What does this mean for the enterprising botanist?
In most cases, all the plants should act the same way. None of the immutable traits are graftable from any of the plants, they cannot be sheared off of the plant, and they cannot be mutated randomly from strange seeds or high instability mutations.
Though, in refactoring these traits, two things have been fixed: Novaflower's on hit and Deathnettle's on hit now proc again. If you aren't aware, Novaflowers apply firestacks and Deathnettles paralyze on hit. They've been in an unreachable code segment for a few years now and i'm not sure if they should be "fixed" or not, since I think they don't need any buffs.
A few other things have changed:
* Liquid Contents can no longer be applied to plants with Hypodermic Prickles, and visa-versa. They already didn't work together, but this means you need to go through an extra step to make LC-deathnettles.
* Killer Tomatos no longer have liquid contents. Didn't really make sense, anyways.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
* 0
* A
* a
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Turns lighting objects into a datum, makes all lighting be performed with an underlay. big maptick fix very good!
* Mirror!
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Add component and element templates
* Convert compoinent and element templates to markdown files
* Change element example in template to stateless
* Replace element example with gong moving sound
Co-authored-by: Jonathan Rubenstein <jrubcop@gmail.com>
* Improve plastic kitchenware messages and code (#59398)
* Improve plastic kitchenware messages and code
- When shattering a plastic tool through random chance, the message
printed will now say the tool has broken, and not whatever you broke
it on.
- The code for plastic spoons, plastic knives, and plastic forks
breaking has been refactored into a new "easily_fragmented" element.
* Improve plastic kitchenware messages and code
Co-authored-by: coiax <yellowbounder@gmail.com>
* Makes obj_integrity only updated through procs (#59474)
Having things updating integrity directly is just going to cause more problems down the line as more elements and components depend on being notified of integrity changes. It's an easy mistake to make so making it private should deal with the problem.
get_integrity() might be useful in the future but is mainly a side effect of making obj_integrity private as that also disallows reads.
* Makes obj_integrity private and only updated through procs
* Mirror!
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Unregistering with a list of lists will fail, but not loudly, which causes some really painful errors. Let's make a stack trace for it, and fix the one case I know of (#59434)
* Complains about annomalus unregisters, hopefully this helps downline
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Prevents a forced qdel from fucking with things that expect more then one arg from Detach() (#59303)
* Fixes fucked behavior with forced qdels and complex detach elements
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Makes canister leaking and blowing up use a component and element respectively (#59075)
I want to use this behavior on some other things so into a component and element it goes. Gas leaking is handled by a component so it can process whereas the object breaking and causing an explosion is handled by an element. Some minor changes were made so canisters were more consistent in leaking.
* Makes canister leaking and blowing up use a component and element respectively
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Nanotransen Legal Liability Initiative - Weapon Stats but more RP (#58865)
* Weapon Descriptions (And Also Reversion)
Adds support for weapon statistics to be shown as part of examining an item, similar to the tags found on armor. Also, reverts the small changes I made on master because I'm a fucking idiot and made those changes on master.
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Nanotransen Legal Liability Initiative - Weapon Stats but more RP
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* big connect_loc fix. teleporters dont cause runtimes and movables registered to things entering their turf no longer have themselves entering their turf sent to them (#59065)
* big connect_loc fix. teleporters dont cause runtimes and movables registered to things entering their turf no longer have themselves entering their turf sent to them
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Fixes connect_loc related hard dels (#58945)
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Fixes connect_loc related hard dels
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* Removes bad return from processables that broke cooking (#58983)
* Removes bad return from processables that broke cooking 🐀
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* 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>
* (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc
* WHEW THAT WAS EASY
* Update ammo.dm
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Allow for proper damage / blood spatters on GAGS icons (#58738)
GAGS-generated clothing can now have proper blood splatters and damage (bets on this breaking some dumb interaction?)
* Allow for proper damage / blood spatters on GAGS icons
Co-authored-by: Celotajs <81999976+celotajstg@users.noreply.github.com>
* Converts the atmos senstive component over to connect_loc (#58266)
* 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
* Converts the atmos senstive component over to connect_loc
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* High-danger plants like deathnettles now require botanical gloves to hold instead of any glove type (#58503)
* High-danger plants like deathnettles now require botanical gloves to hold instead of any glove type
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Hollowpoints and similar attacks/weapons double existing armor, not add total armor, to the their targets (#58114)
* Hollowpoints and similar attacks/weapons double existing armor, not add total armor, to the their targets
* a
* Update tools.dmi
* Update tools.dmi
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
Fixes all simple mobs being able to strip, as well as being able to strip when your hands are blocked (e.g. cuffed).
Fixes#58260.
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.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>
* Teensy tiny improvements for freerunning (#58187)
Since climb_time is multiplied by 0.8, climb_stun should also be. Not much point in taking it if whoever is chasing you can still arrive with you stunned on the table and simply pull you off it. If this is too much taken off in total, in my opinion, the stun time should be adjusted, rather than the climb time.
Also reduces the ZImpactDamage knockdown multiplier. Right now both with freerunning and without you get knocked down the same amount, now with it you're actually better at catching yourself on those z level falls and so suffer less of a knockdown.
* Teensy tiny improvements for freerunning
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* Refactor /obj/item/food/chewable into a chewable element (#58243)
* Refactor /obj/item/food/chewable into a chewable component
* Element, always process
* Refactor /obj/item/food/chewable into a chewable element
* Update maint_loot_trash.dm
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Allows the connect_loc element to have a listener different from the tracked object (#58276)
* Allows the connect_loc element to have a listener different from the tracked object
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>