* 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>
* SM: Fix pressure bonus system (#62255)
* SM: Fix pressure bonus system
Fixes#62124 (Pressure wasn't actually doing anything)
> This is a multiplier meant to be used at low pressures.
> The lower the pressure the higher the multiplier.
> This is to encourage low pressure setups and so cold setups.
> At higher pressures (from around 100 kpa and up) it will max to 1
Current behavior is what follows.
As pressure drops, the multiplier remained at 1 until it dropped to 5.96kPa.
It then very marginally increased until it reaches x1.17 at 0kPa.
This commit introduces a system that solves the constants for the equation
based on human readable parameters, and sets provisional parameters for it. Also makes behavior better match the stated intent.
You can varedit the parameters to see the real effects of changes, just be
sure to proc call update_constants().
Constants default to what amounts to 0 so it fails loud (I WANT TO HEAR SUFFERING -Lemon)
* SM: Fix pressure bonus system
Co-authored-by: esainane <esainane+github@gmail.com>
* Makes the American sausage a sausage subtype & Advanced roasting stick fixes (#62193)
Makes the American sausage a proper subtype of sausage, which makes it actually edible, apparently. It also makes it stick on the advanced roasting stick!
The advanced roasting stick will no longer try to grill itself over a bonfire with a griddle installed, allowing you to use the actual bonfire for your roasting needs.
There was actually a check that was supposed to limit the amount of times you could roast a sausage to a measly 1. It wasn't actually working. This PR removes that in favor of mad cooks creating these:
* Makes the American sausage a sausage subtype & Advanced roasting stick fixes
* fixes
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
* Power generation (collectors, coils, grounding rods) cleanup (#62144)
* Energy collection: Mass rework
Radiation Collectors and Tesla Coils are now subtyles of a common
energy_accumulator type. This type combines common code such as smoothing
output over energy received, computing power output, and handling wire
connections.
Inline calculations using machine energy units are now performed by
common math functions in maths.dm. Rather than reference 0.1,
1 SECONDS is used to make it clear this is to calculate to and from
tickrate dependent units.
Constants which are written in terms of tickrate dependent units are now
written in terms of joules, and use these helpers to convert to and from
these units. With SSmachines.wait / (1 SECONDS) being 2, this usually
means doubling the values of constants which were previously defined in
terms of machine energy units.
* Energy collection: Map path update
> git ls-files | grep dmm | xargs sed -i 's1rad_collector1energy_accumulator/&1g'
> git ls-files | grep dmm | xargs sed -i 's1tesla_coil1energy_accumulator/&1g'
> git ls-files | grep dmm | xargs sed -i 's1grounding_rod1energy_accumulator/&1g'
* Power generation (collectors, coils, grounding rods) cleanup
* object path update (#8882)
* [MDB IGNORE] Missed some paths (#8886)
* object path update
* oops missed a couple paths
Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: ORCACommander <orcacommander1@gmail.com>
* SM: Randomly damage/heal on dusting a Clown (#62178)
When the SM dusts a true Clown (HoP assignment doesn't count), it randomly takes from -300 to 300 damage.
* SM: Randomly damage/heal on dusting a Clown
Co-authored-by: esainane <esainane+github@gmail.com>
* SM Zap: Fix forked target selection (#62143)
Supermatter forked lightning can now hit targets previously used by a sibling.
The default setup - and anything using two grounding rods - was still entirely safe, as "pass by ref begone" code did allow target reuse in ancestors. Any split could only exclude one grounding rod, and if one branch split again, neither branch's targets would be passed back to the target list of the first split.
The same issue was not present in `proc/tesla_zap`. Probably still shouldn't have two of these, though.
* SM Zap: Fix forked target selection
Co-authored-by: esainane <esainane+github@gmail.com>
* Bullets only directly damage the SM so much (#62079)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Bullets only directly damage the SM so much
Co-authored-by: Maurukas <66576896+Maurukas@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.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>
* SM: Prevent unmovable SM variants from moving (#62000)
Previously, a hostile statue could move it by bumping into it. It would
still be dusted, but this left open the possibility of supposedly
immobile engines moving, albeit slowly and expensively.
* SM: Prevent unmovable SM variants from moving, round 2
Co-authored-by: esainane <esainane+github@gmail.com>
* SM: Prevent unmovable SM variants from moving (#61970)
Previously, a hostile statue could move it by bumping into it. It would still be dusted, but this left open the possibility of supposedly immobile engines moving, albeit slowly and expensively.
Hostile Statues have a move_force of 9000, but continued to be able to bump the SM until move_force was varedited to 1999 or below. This means (at least) immovable rods and all megafauna could all bump an "immobile" SM one tile per life.
* SM: Prevent unmovable SM variants from moving
Co-authored-by: esainane <esainane+github@gmail.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>
* memories are no longer added if the target isn't aware of them. (#61375)
Fixing an oversight with the memories system. Memories shouldn't be added to people who aren't possibly aware of them.
* memories are no longer added if the target isn't aware of them.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Hulks and larvas will now dust when punching the supermatter (#60307)
* Hulks and larvas will now dust when punching the supermatter
Co-authored-by: TheSmallBlue <ilanmori@hotmail.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>
* 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>
* Ghosts can open the NT CIMS TGUI by clicking the SM Crystal. (#59475)
* Ghosts can open the NT CIMS TGUI by clicking the SM Crystal.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@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>
* Blind people no longer get hallucinations from supermatter crystals (#58718)
The Supermatter Crystal no longer causes blind people to get hallucinations. The SM causes hallucinations based on eyesight, which is why eye protection (meson glasses) can protect you from it. It makes sense that those who can't see don't get affected by the hallucinations.
It makes the mechanics more consistent. It also adds interesting situations, like if you can't find meson goggles, a blindfold will do in a pinch.
* Blind people no longer get hallucinations from supermatter crystals
Co-authored-by: MrZoraman <MrZoraman@Gmail.com>
* More HFR interactions, better damage control, better Meltdown (#58506)
Some more gas interactions with the HFR
-O2 will help remove iron content
-Antinoblium accumulation or damage over 60% will now start zaps similar to those of the SM (useful to produce power too)
-Bz will make more particles shoot out
-Meltdown now spew the hot fusion gases around the machine too (20% of the total gases are randomly placed around the machine in 10 open turfs each containing only 10% of that 20%)
-damage system now uses cooling temperature instead of the internal fusion temperature
* More HFR interactions, better damage control, better Meltdown
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.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>
* Pluoxium can currently be created in mico amounts on a lot of tiles, which creates a lot of unneeded active (#58306)
turfs, and wastes processing time.
Let's only make pluox in cold mixes then, and since it's not gonna mitigate high power runaways quite as hard
now, let's make it a net negative on waste gas output for the sm.
* Makes radiation related pluouxium only generate in cold conditions
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* tgui: Total Moles in SM Monitor, Own Defines File (#57270)
Ever wondered why you failed to setup the scrungularity?
Well, wonder no more! The NT CIMS tab has been made to show total moles. The pressure got kicked however, since it's practically useless. The bar also turns red if your SM is eligible for scrung.
Moved the supermatter defines into it's own files too.
* SM monitor shows total moles & SM gets it's own defines file.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* Do not lick the supermatter, it is not made of candy. (#57134)
Adds a special interaction for people attempting to lick the supermatter.
* Do not lick the supermatter, it is not made of candy.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Supermatter Can Display EER to Ghosts. (#56991)
I'm not sure that there's a way for ghosts to check out the EER of the spicy rock without someone logging in on the console. This lets ghosts know if an SM is going to spawn tesla/skeleton in advance.
The part at the trait section (thanks to mothblocks) is changed to not cause runtimes when the supermatter is examined by ghosts.
Co-authored-by: coiax <yellowbounder@ gmail.com>
* Supermatter Can Display EER to Ghosts.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>
* New supermatter sprites from Beestation (#56866)
Imageadd: Ports the supermatter sprite from Beestation
* New supermatter sprites from Beestation
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Miasma SM (#54487)
Makes the supermatter crystal consume miasma in the air to power itself. The rate at which it consumes miasma scales with the partial pressure of the miasma and the gas mix of the surrounding air.
Miasma also increases gasmix_power_ratio, but by half as much as is normally standard
* Miasma SM
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Move psychologist immunity from mind to skillchip (#55813)
Skillchips are neat, and this is the sort of "job-specific skill" that can remain job specific, but still gainable in the shift through in-universe means.
The logic behind the skillchip is that the supermatter is psychically sensitive, hence the hallucinations and headaches from looking at it and projecting the "correct mental aura" will help it calm down. But that is lore following mechanics.
Refactors skillchips to be able to automatically apply more than one trait.
* Move psychologist immunity from mind to skillchip
Co-authored-by: coiax <yellowbounder@gmail.com>
* Makes the supermatter crystal immune to radiation. Not sure how I missed this (#55710)
* Makes the supermatter crystal immune to radiation
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Refactor supermatter proximity effects (#55653)
- Psychologists are no longer mistakenly told they have headaches
when near the supermatter.
- Immunity to supermatter hallucinations is now provided by a new trait
`TRAIT_SUPERMATTER_MADNESS_IMMUNE`, provided by mesons, and being the
Psychologist.
- The ability for Psychologists to cause the supermatter to act slightly
differently (by turning pink, and having a higher minimum healing
temperature) is now a trait, `TRAIT_SUPERMATTER_SOOTHER`, which
currently only Psychologists get.
* Refactor supermatter proximity effects
Co-authored-by: coiax <yellowbounder@gmail.com>
* Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals (#55193)
Huge removal of dead vars, bad timers, and other sloppy jitteriness from beams. They go from checking movement to waiting for a signal.
VARIABLE KILL LIST:
sleep_time: signals baby
finished: signals BAYBEEE
target_oldloc: not only not typecasted as a turf or named as a turf, it was unused. when are we going to use this? the beam starts from the origin!
origin_oldloc: bad name, not typecasted. renamed to originturf
static_beam: how are you an unused variable and still get replaced by signals like really
timing_id: signallllss bbbaaaabbyy
recalculating: you get the drill by now signals baby
base_icon: unused, seemingly replaced by visuals I think
* Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* eh (#55529)
Fixes the supermatter not collecting unused/untouched gas type generated for percentage checking
* Supermatter gasmix cleanup
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Replace direct poi_list manipulation with element (#55416)
Replaces GLOB.poi_list |= src and GLOB.poi_list -= src with an element that handles it directly.
More consistent code, especially when a lot of code couldn't decide how to add/remove (some |=, some -=, some .Remove, etc).
* Replace direct poi_list manipulation with element
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Crystal invasion more rare (#54504)
This PR makes crystal invasion much rarer and confine it between 4500 and 5000 MeV
* Crystal invasion more rare
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>