* Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed
* Fixing conflicts
* Makes it compile, yeet all the RAD armor from everywhere (thanks RegEx!)
* Removing more lingering rad armor (woo)
* Damnit powerarmors
* Bye bye rad collectors!
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before. (#61943)
* Adds SHOULD_NOT_SLEEP to Destroy. Why didn't we do this before.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* [TM Candidate] Overhauls orbit and POI code to fix part of issue #61508 where players could observe /mob/living/new_player on the lobby.
* E
* Missed merge
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Removes Tactical Resting (#61552)
About The Pull Request
If you are on combat mode, your bullets will hit people lying down or stunned, otherwise they pass through.
Why It's Good For The Game
The original PR that added it was labeled a fix (#55495) only mentioning it in the changelog once, when it was a balance change, as resting to avoid bullets was intentionally removed after we added crawling and a rest button, for being fucking stupid.
The thing that original pr "fixed" was mobs being bullet sponges, which you can now prevent by switching off combat mode, so it is no longer needed.
Avoiding people shooting at you while also having guns of your own you are perfectly able to shoot is stupid.
It makes mobs like beepsky super annoying, where unless youre in a large area the robot chasing you with one of the only hardstuns left in the game will be really hard to hit.
Changelog
cl
balance: If you are on Combat Mode, your bullets no longer pass through prone people
/cl
* Removes Tactical Resting
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Slight refractor to borg reboot boards, allows them to be reusable (#61232)
Refractors the cyborg reboot module to be an independent item rather than a subtype of cyborg upgrades. The new item is no longer consumed during use.
Rebooting now makes a different sound when rebooting an AI shell or ghostless borg, rather than no sound at all.
A recent PR fixed a longstanding apparent bug that allowed reboot boards to be resused. A bug it may have been, but the reboot board being a single-use item is kinda terrible, and doesn't make a lot of sense that the board is somehow destroyed when used. Mothblocks, who merged the bugfix PR, has given me permission to PR this change.
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* Slight refractor to borg reboot boards, allows them to be reusable
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
* Fix broken mech delay (#61163)
This seems to have been supposed to be a delay for god knows what reason
I assume it was supposed to slow you down or something but its not needed or useful and currently breaks changes your speed
* Fix broken mech delay
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* mechas have their 5 default damage back (#61167)
mechas used to have 5 force, this was broken in the mecha refactor making the non-combat ones do no damage with punches
* mechas have their 5 default damage back
Co-authored-by: Fikou <23585223+Fikou@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>
* lava and weather immunities refactor (also jump boots fix) (#61003)
In remembrance of all those people who used jump boots to cross lava unaware of an issue c*ders wouldn't fix....
EDIT: This is now a lava and weather immunities refactor:
Weather immunities are now status traits since they have a multitude of sources (especially for lava) which might conflict with one another otherwise.
The lava burn_stuff proc has also been been refactored in different procs, mostly because of that snowdin subtype with inconsistent, old checks.
Weather datums should now use can_weather_act instead of weather_act to check if something can be affected by weather or not, as they should.
All movables can protect contained mobs if they have the relative weather immunity traits. This works at any contents depth.
No more snowflake weather_protection variable for closets.
Removed the weather_immunities list from living mobs (simple animals still have it but it's only for traits assignment on init because way too many child types lack the immunities of their parents).
Removed some unused defines.
Renamed some variables as per guidelines.
It has been tested.
And yea, jump boots fixed because that's the original scope of this PR.
(Initially just made throwing make you fire immune, that was blocked because it breaks perma stuff, instead it ended up be a refactor to make jumpboots usable with weather immumnity stuff
* lava and weather immunities refactor (also jump boots fix)
* Update Ashwalkers.dm
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Fixes Oingo Boingo Punch-face! not displacing airlocks (#60820)
Gives the relevant safe_throw MOVE_FORCE_EXTREMELY_STRONG so it can overcome airlock resistance restoring its intended "sends atoms flying (including anchored ones and things that make no sense to move because -clowns-)" behavior.
* Fixes Oingo Boingo Punch-face! not displacing airlocks
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Exosuit Proto-kinetic Accelerator (#60384)
Adds new equipment for mechas: the Exosuit Proto-kinetic Accelerator, unlocked with the mining tech research. Compared to the standard one, it is able to hit 5 tiles away with a low cooldown.
However, unlike the handheld version, it draws a considerable amount of power from the battery, pretty much requiring you to bring generator equipment or upgraded parts.
The projectile is identical to the standard handheld version otherwise and will do little damage in pressurized environments.
* Exosuit Proto-kinetic Accelerator
Co-authored-by: InvalidArgument3 <51190031+InvalidArgument3@users.noreply.github.com>
* cuts down honker mech ui pasta and fixes their lack of an equipment menu. (#60115)
This will fix#59726 (Honk mechs being unable to drop equipment)
* cuts down honker mech ui pasta and fixes their lack of an equipment menu.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Ban posibrains and mmis from savannah ivanov (#59772)
Savannah Ivanov cannot have mmis or posibrains in them.
Now I know that sounds BAD... but I originally intended to do this as it removes a huge trust element and bypasses recruiting people for cooperation. I simply uuuh genuinely forgot to include this, so sorry for the DRAMA.
I was considering blocking the AI too, but AIs are actually more likely to be turned against you than fellow crewmembers
Co-authored-by: coiax <yellowbounder@ gmail.com>
* bans posibrains and mmis from savannah ivanov
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
* Fixes bug in Ripley mech construction where it would say "securing the screwdriver" (#59795)
[I] in this case refers to the inhand item so in this case it would be the screwdriver / hand drill, this changes it to properly reflect that the capacitor is being screwed in.
* Fixes bug in Ripley mech construction where it would say "securing the screwdriver"
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@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>
* Revert "Adds two clown-spection scanners that print clowncrypted reports (#59306) (#6176)"
This reverts commit 91e1aa4fe4.
* Revert "Two Person Mecha for Robotics: The Only Real Solution To An Imminent Geometer Summoning 💪 (#59249) (#6177)"
This reverts commit cf2c1ca19d.
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.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>
* Converts some of mech actions into balloons (#59255)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Converts some of mech actions into balloons
Co-authored-by: InsaneRed <47158596+InsaneRed@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Is that a fucking rocke- (#59056)
Being hit directly by a rocket launcher now has a 1% chance to make you briefly try processing what's about to happen before exploding you.
* Is that a fucking rocke-
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.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>
* Removes some boiler plate from working with atmos code (#58885)
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
* Removes some boiler plate from working with atmos code
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>