* 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>
* Rad collectors gone, tesla coils to generate power (#61917)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Rad collectors gone, tesla coils to generate power
* replaces rad collectors
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Kat <evesovereign@hotmail.co.uk>
* Rename freon_gas_act to freeze_turf (#61958)
This was only used from two places, neither of which involved freon.
* Rename freon_gas_act to freeze_turf
Co-authored-by: esainane <esainane+github@gmail.com>
* fixes penetrator rounds phasing through vehicles (#61907)
When I gave vehicles the PASSMACHINE flag in #61793 I forgot that penetrator rounds existed leading to them completely ignoring mechs. This time I created a new flag for vehicles, added it to water particle effects, and excluded it from the penetrator rounds.
Additionally this flag has been added to the heretic's phasing ability.
* fixes penetrator rounds phasing through vehicles
Co-authored-by: Invalid <51190031+InvalidArgument3@users.noreply.github.com>
* Meteor guns, the admin weapon, once again harms living mobs (#61520)
When explosions got refactored, this stopped harming mobs because it lacked a check. Goof must have missed this, but it's also probably not as simple to put everything back as it was. This mostly restores old behaviour by putting the relevant code into on_hit() and out of Bump() when handling living mobs, since it's a projectile and all. I don't know if the values I added are appropriate but given that the old behaviour was a high damage localized explosion, it almost certainly isn't far off.
fixes#61244
* Meteor guns, the admin weapon, once again harms living mobs
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* The Odysseus is no longer an artillery mech. (#61372)
Removes the ability for the Odysseus to fire syringes filled with dangerous chemical combos that only react on impact. Does this by removing the NO_REACT flag when syringe darts are created.
This doesn't change any behaviour of handheld syringe guns. You can't fire a Water/Potassium syringe out of a handheld syringe gun as doing so requires creating a syringe of Water/Potassium, which will instantly react. The same holds true for other chem reactions. The traitor reagent dartgun which synths its own syringes uses different projectiles that are not impacted by this change. It functions identically to how it did before and is unchanged and untouched.
This change specifically targets Ody behaviour.
The Ody is intended to be a medical support mech. Stop using the Ody as a cheap spammable artillery mech with RDX/Teslium combos.
Use the Odysseus the way God himself intended. Fire sleepy chems into your victim, abduct him in your vore chamber and keep him sedated with a slow infusion of sleepy chems for the rest of the shift.
* The Odysseus is no longer an artillery mech.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixes being able to spam ghost role notifications. (#61085)
There are methods that let players spam the everloving shit out of ghosts with BONG BONG BONG BONG BONG BONG BONG etc. through being able to constantly poll ghosts for roles with no restriction or cooldown.
Examples are laughter and slaughter demon antag_spawners.
It makes no sense to be able to concurrently poll for the same mob. As a result, I've now added a guard against this. The proc has been given a static list of mobs it's polling for ghost roles for. If it's already polling for ghost roles for a given mob, then it just early returns with an empty list, otherwise it adds the mob to the static list when the poll starts and removes it when the poll ends.
I've also done a little cleanup in var names and the proc name, with a find-and-replace done. There weren't many things calling it and none used named keywords in the args so should be fine.
There is also poll_candidates_for_mobs (also included in my cleanup) - This proc is basically only called by admins via sentience balloons and they have their own guards against spamming (the balloon pops and thus can only be used once)
Also fixes an issue in /mob/living/silicon/robot/proc/replace_banned_cyborg() where incorrect args were used in the proc call to poll for candidates.
* Fixes being able to spam ghost role notifications.
* a
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
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 shotgun meteorslugs not displacing airlocks (#60808)
Gives meteorslugs MOVE_FORCE_EXTREMELY_STRONG force.
Turns out safe_throw_at was created to fix "situations involving mechas and the clock cult, and meteor slugs moving grav gen" (rip clock clut) and then later some force checks were added that made some movables resist meteorslugs with default force like airlocks.
* Fixes shotgun meteorslugs not displacing airlocks
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Fix polymorph behavior for pAIs and mimics (#60502)
This fixes#58258. Basically anytime a pAI holoform gets shot with a staff of changing or polymorph item it would change their mob type. This allowed ghost roles infinite respawns since the pAI card is not destroyed when it gets polymorphed. An unlimited army can be created with no downsides since you can keep bringing people back to life with the pAI requests.
I also went and fixed another strange behavior with polymorph, where if you used a staff of animate on an object, you could turn around and then polymorph the object into a mob. The animate magic is supposed to wear off the object after a certain while so I made the mimic immune to polymorph effects.
* Fix polymorph behavior for pAIs and mimics
Co-authored-by: Tim <timothymtorres@gmail.com>
* EVEN MORE HARDDEL FIXES (#60228)
Fixes a ton of harddels, sourced from #59996
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.
See you on the other side
Makes the cryopod control computer into a weakref, never trust bee code
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @ stylemistake
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything
Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @ MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.
<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->
## Why it's not good for the game
I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
* EVEN MORE HARDDEL FIXES
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fix honkstaff not being affected by antimagic (#60164)
* Fix honkstaff not being affected by antimagic
* Update special.dm
removes a line that doesnt do anything
* Fix honkstaff not being affected by antimagic
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code)
* Mirror
* genetically-editable mutant bodyparts and colors - skyrat edition
Co-authored-by: Funce <funce.973@gmail.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>
* 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>
* 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>
* 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>
* 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>
* Implements Plant Biotype (#57108)
Implements a plant biotype for plant based mobs. Changes the wood golem mob to be an organic, humanoid, and plant biotype---because wood is an organic substance, not a mineral.
This additionally adds the ability for plantbgone/weedkiller to deal damage to plant biotypes.
Why It's Good For The Game
There's a curious lack of a defined plant biotype, despite plants sharing a unique number of traits. Ideally, this behavior can be more consistently implemented with something like biotypes. A minor example of this is utilized in this PR: weedkiller and plantbgone impacting plant-like mobs, which is what you'd expect.
Changelog
cl
add: Plant-like mobs are now impacted and take damage from plant-b-gone and weedkiller reagents
add: Plant-like mobs can be health scanned with a plant analyzer
add: Plant-like mobs are impacted by the floral gun in the same manner pod people are
/cl
* Implements Plant Biotype
Co-authored-by: Fox McCloud <Fox-McCloud@users.noreply.github.com>
* Full-Automatic Guns (#57084)
* fullauto component
* eh
* h
* brap
* it works!
* FUCK SHITUP
* dumbass
* l6
* oops
* GOD
* THE LAST 10% OF A PROJECT IS 90% OF THE WORK
* slopwer projecitles, replaces the tesla gun
* heavy
* minigun
* minigun stuff
* runtime fixes, pointer icon
* nuh uh
* makes modifeirs things
* nerf this
* yes
* aghh
* agh
* real high intensity changes here
Co-authored-by: Ryll-Ryll <3589655+Ryll-Ryll@ users.noreply.github.com>
* Full-Automatic Guns
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Ryll-Ryll <3589655+Ryll-Ryll@ users.noreply.github.com>
* Replaces 9x19mm with 9mm, makes the PP-95 use a damage multiplier (#57687)
* Replaces 9x19mm with 9mm, makes the PP-95 use a damage multiplier instead.
* forgot the define
* actually if this is .35 it's 10 shots again so let's do that instead wow a .1 difference DOES matter fuck our health system
* Replaces 9x19mm with 9mm, makes the PP-95 use a damage multiplier
Co-authored-by: necromanceranne <40847847+necromanceranne@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>
* Buff 50 cal and add module
* Add warning in master file
* Rebalance firing delays to accomodate changes
* Fine tuning
* Fine tuning v.2
* Apply code suggestion + fine tuning 3
* Fixes the randomly failing unit test that sometimes happens. (#57266)
* Fixes the randomly failing unit test that sometimes happens.
Co-authored-by: Thalpy <33956696+Thalpy@users.noreply.github.com>
* moves gun related icons to guns folder (#57077)
moves ammo icons, projectile icons and hitscan effect icons to guns folder
renames projectile.dmi to ballistic.dmi so its less confusing
moves rcd ammo from ammo.dmi to tools.dmi with the rcd
* moves gun related icons to guns folder
Co-authored-by: Fikou <piotrbryla@onet.pl>
* improves fire extinguisher code, and makes fire extinguisher water go through machinery, lockers, and crates (#57004)
* improves fire extinguisher code, and makes fire extinguisher water go through machinery, lockers, and crates
Co-authored-by: Tlaltecuhtli <33834933+Tlaltecuhtli@users.noreply.github.com>
* replaces all instances of ammo_casing/BB to loaded_projectile again without crashing this time
* a
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>