* 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>
* Fixed holosigns not registering it's projector (#61755)
Before the mapload PR got merged, the mapload param got treated incorrectly as the loc param, allowing the proc to work without problems since source_projector is in the right place. But now that the mapload param is implemented here properly, the previous bad implementation turned into a working feature turned back into a bug. This took way longer than it should have.
* Fixed holosigns not registering it's projector
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* Firelocks can't close if an holofan is placed on their turf (#58332)
* Firelocks can't close if an holofan is placed on their turf
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Tramstation: choo choo MORE MAP COMIN' THROUH
* Tramstation: Skyrat Edition (#4104)
* Decals Fixed
* Modularity? Whatever
* Fuck me if I need to make a second PR for this
* Blueshield + Cryo + Ian Fursuit
* Automatic changelog generation for PR #4104 [ci skip]
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
* Adds tourist robots that order food and drinks from the bar and cafeteria (#57010)
* Adds Tourism Economy
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds tourist robots that order food and drinks from the bar and cafeteria
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Emmanuel S. <emmanuelssr@ gmail.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)
Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:
Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:
Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake
Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).
I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.
Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.
scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.
scan_moved_turf() (WIP) will be used for handling moving onto a turf.
permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.
A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types
UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game
Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.
Fixes penetrating projectiles like sniper penetrators
This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)
* pass_flags handling refactor + rewrites a part of projectiles for the n-th time
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
* fixes the flags of some shocks (#54906)
## About The Pull Request
The shocks from the shock touch mutation now ignore insulated gloves, because you're touching your victim's body, not giving them a handshake.
The shocks from punching charged energy fields (special holosigns from emagged cyborgs) now DON'T ignore insulated gloves, because you're literally punching them with your hand.
The shocks from running into charged energy fields now DON'T ignore insulated gloves, to be consistent with things like electrified doors.
The shocks from the on_mob_life() effect of liquid electricity now ignore insulated gloves, like the shocks from the on_mob_life() effect of teslium do (thanks for pointing this out, Angustmeta!).
## Why It's Good For The Game
Logical sense and consistency in what forms of protection shocks check for are good things, I think.
* fixes the flags of some shocks
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Makes all CanPass procs call parent
* Makes CanPass more extendable and gives the mover a say in the matter
* Replace CanPass with CanAllowThrough to use the new system
Regex replace `(?<!proc)/CanPass\(` => `/CanAllowThrough(`
* Simple optimization pass
* Switches out the three billion args of electrocute act for flags
* Adds autodoc to electrocute flags, sets the boolean I removed and tries to fix the ed209 file
* tries to fix ed209 again
* Fixes 209 hopefully
* Finally fixes that darn file
* one final one to fix the diff
* Or i guess i'll just do it myself
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability
* 1/4 done? maybe?
* more
* stuff
* incremental stuff
* stuff
* stuff & things
* mostly done but not yet
* stuffing
* stuffing 2: electric boogaloo
* Git Commit and the Kingdom of the Crystal Skull
* make it actually compile
* found more stuff
* fixes
* fix AI laws appearing out of order
* fix windows
* should be the remaining stuff
* this time for real
* i guess it should compile too
* fix sechuds
* Fixes projectiles not hitting mobs, some refactoring too
* some stuff for projectile can hit target to work with not being ontop of an object
* Yeah let's just refactor bullet_act while we're at it.
* Yeah let's just refactor bullet_act while we're at it.
* Yeah let's just refactor bullet_act while we're at it.
* CanPass returns true to projectiles regardless of hit
* snakecase?
* You can now click on objects and mobs below flaps and signs
* Update admins.txt
* Update code/controllers/subsystem/vis_overlays.dm
Co-Authored-By: nicbn <nicolas.nattis@gmail.com>
cl cacogen
balance: Space cleaner in spray bottles travels 5 tiles instead of 3 (doesn't affect other reagents)
balance: Trash bag fits in exosuit slot of janitor biosuit
balance: All soaps are faster
balance: Soaps now clean all decals on a tile instead of just one
balance: Soap now has limited uses (100 for most, 300 for NT brand which janitor gets)
balance: Mops are considerably faster
balance: Basic mop holds twice the reagents
balance: Janitorial cart now refills mops completely with one click
balance: Basic and advanced mops are more robust (8 force and 12 force)
balance: Galoshes no longer leave bloody footprints
balance: Chameleon noslips no longer leave bloody footprints
fix: Bulb boxes can be used on light replacers refill them in bulk
balance: Light replacer can be used in-hand to change all bulbs on a tile
add: Custodial barrier projector which creates solid wet floor signs that force people to walk to pass (available through service protolathe)
/cl
Janitor's been an exercise in futility for years, and the job is made redundant by janitor cyborgs who can't even keep up with the mess themselves. Spreading blood is instant, but takes a lot longer to clean. The goal here is to make it easier to keep up with the mess and make the controls less finicky while avoiding affecting combat too much (the mop and spray bottle are is a good weapons after all).
* Radiation toxin damage has been slightly increased.
* Contaminated objects are overall a bit weaker but are easier to create in the
first place.
* Showers deal with high amounts of contamination much faster but aren't that
great at dealing with weakly contaminated objects.
* Atmos holo-barriers have been given radiation insulation like the engineering
ones.
Adds a simple way to quarantine individuals but doesn't make it roundstart, as it has potential to make 2 antags have a very difficult time: Bad virologists and (mainly) sentient diseases. Uses a sliver of silver because of this.
It uses the exact same proc as the MEDHUD, so it CAN be countered by buffing stealth. Virologists can also activate the free-access so long as they do it while not infected with anything bad.
That said, it has a build delay and is relatively easy to destroy. Think of it as a more obvious visual for people without huds to know "hey, I should probably avoid everyone else until I get better" and not necessarily an actual barrier device.
sprites edited by me if you like them, by someone else if you don't!
This is in preparation for step_x support as the default behavior for these procs is necessary for proper functionality.
turf/Enter and atom/movable/Move default code got rewritten to replicate default byond functionality with minor changes.
* radiation rework and subsystem
* moves a few things to initialize and adds radiation insulation
* adds a radiation contamination mechanic and makes requested changes
I'm terrified by the possibilities from this
* radiated objects give off light
and hopefuly contamination is balanced
* fixes runtimes and an mc crash kek
removed the lighting part of contaminated objects
attempted some more balancing
* Collectors output power in process() gradualy
And some more balancing tweaks
* Excludes a bunch of things from becoming radioactive
* Ready for testmerge balancing
* Inverse square law was swapped
* testmerge balancing
fixes the geiger counter
buffs collector power gen
nerfs sm radiation
slightly buffs rad insulation
nerfs rad damage (and its burn)
raised the minimum radiation
* disabling the radiation subsystem won't build up rad wave datums forever
* rewrites how mobs handle radiation
upgrades geiger counter functionality
and more balance tweaks
* cleans up stuff and removes debug message
* Slight contamination buff
* Major rad wave performance boost
Also improves rad insulation
Buffs contamination, again
* Fixes insulation runtime
More balance and performance tweaks
* fixes rad collectors not receiving power
* The final balance commit
Fixes a major bug causing radiation to underperform
More geiger counter changes that will be changed more to add sounds
* Monkey business
* Geiger counter sounds
* cleanup and move components to their own initialize
* Some code cleanup
And forgotten changes
* Cleans up some trailing returns
* Mapping changes
* Grammar fixes to atom descriptions
- Capitalization and punctuation on most descriptions
- CentCom instead of centcom where appropriate
- Earth instead of earth where appropriate
* Remove spaces before newlines and oneline some strings
In light of the change of Bump to Collide, this should also be done
as it will make it less confusing for devs in the future
I also ended up changing a bunch of the code in the CollidedWith procs,
things that were assuming types, doing bad loc changes and so forth