* Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED
* modular RegisterSignals
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Replaces some bad trait sources and updates two trait names (#71375)
## About The Pull Request
Traits should never use a hard reference as their trait source, if you
want to use a "reference" to a datum use `REF()` instead, or it will
cause hard deletes
Also renamed some traits which didn't use the "standard" scheme, because
I saw it while regexing
## Why It's Good For The Game
- Prevents some hard deletes
- Uses a less confusing naming scheme
## Changelog
Not necessary
* Replaces some bad trait sources and updates two trait names
* Fixes SR trait sources
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code
* Delete storage.dm
* yippee
* shit
* holy shit i am stupid
* more fixes
* fuck
* woops
* This tail refactor turned into an organ refactor. Funny how that works.
* Firstly, fixing all the conflicts.
* Fixes all our maps (hopefully)
* Actually, this should fix pod people hair :)
* Almost everything is working, just two major things to fix
* Fixed a certain kind of external organ
* Cleaning up some more stuff
* Turned tail_cat into tail because why the fuck are they separate?
* Moved all the tails into tails.dmi because that was just dumb to have like 3 in a different file
* Adds relevant_layers to organs to help with rendering
* Makes stored_feature_id also check mutant_bodyparts
* Fixes the icon_state names of ALL the tails (pain)
* Fixes wagging, gotta refactor most mutant bodyparts later on
* I Love Added Failures
* Fixed some organs that slipped through my searches
* This could possibly fix the CI for this?
* It doesn't look like it did fix it
* This will make it pass, even if it's ugly as sin.
* Fixed Felinids having a weird ghost tail
* Fixes instances of snouts and tails not being properly colored
Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Makes smoke and foam attempt to fill the available space.
* wew
* reset
* Revert "reset"
This reverts commit 75be4f934504793ceb5c9bf2f3774dc24517df5a.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fixes exodrones erroneously reporting "travelling back to station" in the status panel of their console UI. (#64487)
This PR will rearrange the obj/item/exodrone/ui_description so that it won't be assumed that the drone is traveling back to station if in travel mode and its location (which is changed on arrival, not departure) isn't null, which basically means the drone is travelling from site to site, and specify which target site the drone is travelling to in the text string.
* Fixes exodrones erroneously reporting "travelling back to station" in the status panel of their console UI.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Exploration Drone Launcher code update + hard-del (and other) fixes (#63551)
Fixes exploration drone launcher overlays not being updated properly when fuel is consumed / changes
Fixes crowbarring out a fuel pellet not updating the sprite, also fixes crowbarring out a fuel pellet after-attacking the exo-drone launcher
Fixes fuel pellets not getting deleted when empty
Fixes exploration drone launchers hard-delling if broken with a fuel pellet within
Corrected fuel pellet description grammer, and added a proper description to the exodrone launcher
Improved the code + documentation in general (early returns, better vars)
Fuel pellets are very obtuse when working on exploration drones. Hopefully, a few of these fixes helps some of those clear up.
When fuel pellets run out of uses, they're intended to delete, but never did - meaning you held around a buncha empty fuel.
Trying to replace the fuel pellets was very confusing as the icon didn't update properly.
* Exploration Drone Launcher code update + hard-del (and other) fixes
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Adds New Aquarium Fish! (#62840)
* fish
* fixes broken stuff
* no emulsijack betrayal, emuslijacks will now reproduce
* Adds New Aquarium Fish!
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
* removes double spaces before symbols
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Baton refactor. item/melee/baton is now a subtype of item/melee/baton (formerly classic_baton)
* EEEE
* E
* follow the fucking guidelines
* E
* Update CentCom_skyrat.dmm
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Adds a Return Value (#61221)
The firelance's afterattack() proc now actually returns after notifying the user it ran out of battery
* Firelance Can No Longer Be Used When Out of Charge
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* large refactor of machine/power code to cut down on processing time and wasted lists (#60317)
original pr here: #59789 (Closed because he didn't think it was good enough)
came back to this because i realized that
all machines were area sensitive, meaning they had a list with at least a reference to themselves (assuming they arent in the contents of another movable which most arent) for the purposes of handling power differences when their area changes
pipes are machines
there are ~14k machines and ~6k pipes
i made this problem worse with a recent pr by making it a nested list
so i needed to track what machines needed power, and this pr had work already done that could be used for that purpose. now machines that have use_power == NO_POWER_USE do not have this extra memory overhead for no reason
currently every machine that uses power draws that amount from its area from a dynamic channel via auto_use_power() which is called every SSmachines fire(), then in apc/process() the area's dynamic power draw is reset and the power is used. with static power its not calculated then reset every loop, its just taken from the grid. so now machines handle updating their static power usage from their current area (this doesnt touch power machines that require a wire connection). in order to allow this, use_power, idle_power_usage, and active_power_usage have setters to track state correctly and update the static power usage on the machines current area and handle area sensitivity.
also goes through a lot of heavy abusers of SSmachine processing time and tries to make it faster. makes airalarm/process() into a signal handler for COMSIG_TURF_EXPOSE since air alarms only need to process for changes.
Why It's Good For The Game
SSmachines isnt the heaviest hitter in terms of total cpu and certainly not in terms of overtime, but its not a lightweight. it frequently takes > 50ms to complete a run and seems to be in the top 5 or so of subsystem costs looking at some round profilers
also gets rid of a few thousand lists since every pipe no longer has two useless lists each (and any other machines that dont use power)
Love ya kyler
Co-authored-by: Rohesie <rohesie@ gmail.com>
* large refactor of machine/power code to cut down on processing time and wasted lists
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Rohesie <rohesie@ 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>
* 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>
* refactors pods, new helper for spawning items from pods through code (#58222)
* refactors pods, new helper for spawning items from pods through code
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>