* Refactors SM gas behavior to be datum based instead of list based + powerloss co2 buff (#69158)
About The Pull Request
Title!
The CO2 thing is there because it makes my job much easier. Can probably find a way to make it move slowly if a maint insist on it. Prefer not to though.
Drafting because I want to make a second PR that have more sweeping changes (clean vars up, make a simpler formula for damage and heat production, delete underused behaviors, etc). Would honestly prefer if both this and that gets merged at the same time but I'm separating it out since it might be rejected. Or maybe ill combine it here we'll see.
Ignore that, looks like i can keep this one absolutely atomic.
Why It's Good For The Game
Had a lot of trouble when trying to document the SM gas interactions into the wiki, the interactions are all scattered and tracking down everything a gas does is extremely annoying. Hopefully this fixes that.
Changelog
cl
balance: CO2 powerloss inhibition now works immediately based on gas composition instead of slowly ramping up.
refactor: refactored how the SM fetches it's gas info and data. No changes expected except for the co2 thing.
/cl
* Refactors SM gas behavior to be datum based instead of list based + powerloss co2 buff
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* [MDB IGNORE] Fix High Capacity APC Inheritance (#69526)
Doing some mapping work downstream and I noticed there were both directional and non directional high caps. Code dived to figure out which was the valid one to use and found the directional high caps were not actually inheriting the upgraded power cells do to bad name structure. Corrected inheritance structure. Updated Kilo and Icebox to use directional high caps as standard and updated several ruin and gateway missions to standard directional high caps
* [MDB IGNORE] Fix High Capacity APC Inheritance
Co-authored-by: ORCACommander <orcacommander1@gmail.com>
* Unit tests range suck (#69352)
* Unit tests range suck
Ok so we currently rely on some undefined behavior in energy_ball code
Namely, the range() family will return turfs in least/greatest get_dist
This is VERY useful for optimizing the tesla, but it's also undefined,
and lummy could change it any day now.
So let's at least unit test it so if it breaks we can remove it
* Unit tests range suck
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Reduces CO2 heat penalty to 2, from 6, and halves the zap power boost. (#69145)
Reduces CO2 heat penalty to 2, from 6, and removes the power transmission bonus. A heat penalty of 2 seems low, but the heat produced is also scales power, which CO2 increases, and is still 4 times higher than old CO2 (0.1, but gets clamped to the minimum value of 0.5).
Most engineers have a skill issue with CO2 before they can let its powerloss inhibitors to have a significant effect. Unless someone tries to intentionally sabotage with CO2, the skill issues will just make CO2 look like another high heat penalty gas, which is boring as it masks its gimmick of reducing powerloss. The high heat penalty made it produce more gas, which lowered CO2 composition, so it hard a harder time staying in the high power levels, and the high power levels were a unique danger for CO2 engines due to its more destructive zaps and anomalies.
I think the effect of having a skill issue when it reaches the dangerous power levels is a lot more interesting than having a skill issue at normal power levels, as high power delams are significantly more dangerous than low power delams.
Removing its power transmission (multiplier for power gained when teslas absorb the zaps, not the supermatter's power) will mean that CO2 will provide no benefit unless it is put at the composition to raise its power levels, which should bring CO2 usage back to its more interesting purpose of powerloss inhibition.
* Reduces CO2 heat penalty to 2, from 6, and halves the zap power boost.
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* Removes ComponentInitialize()
* Fixes a leftover merge conflict marker
* Fixes the oversight that came from the upstream merge skew
* Fixes all of the instances where we used ComponentInitialize() when we shouldn't've been
* Fixes CI being broken because of the HEV suits
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Replaces the mood component with a mood datum
* Fixes merge conflicts and updates all of our mood events to use the new mood datums
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* [NO GBP] Fixed an edge case when SM delam messages failed to update. (#68968)
About The Pull Request
Forgot to update the last delam var.
* [NO GBP] Fixed an edge case when SM delam messages failed to update.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* Simplifies the SM transmission calculation a bit. (#68972)
Reframes the existing interactions into the transmission modifier framework. The code there is more robust than snowflaked separate checks like this.
BZ: #45676 Looks like it was intended to be a quite good gas for power buffing, but it has lost its intended purpose over the years. Current status quo is that it strengthens the modifier, either positive or negative. I've decided to use a pure BZ sm as a baseline, so its fully negative now.
Water: #49624 Intended to nerf the SM power, but it ended up as a transmission dampener (opposite of BZ) because of changes to the SM over the years. So it makes the weak a bit less weak and the strong a bit less strong. A pure water vapor has zero effect on power (since transmit modifier is zero) so i cant use it as a baseline. So i followed the author's original intention of it being a bad for power gas.
Freon: Nukes power when above 30%. Changed it to 33% because the transmit numbers are a bit nicer. It checks out try it in your head. (1 + (1/3 * -30 / 10) = 0. Difference is its affected by other gases now
CO2: Same with freon, barely any changes. Apparently doubles power when at 100% comp. Affected by other gases now.
Easier to maintain and explain, and we don't really lose out on much. I attempted to preserve the behavior as best as i can.
To be perfectly fair I have no quarrels with the number at all, don't really care which one is stronger than which. Just want to keep the old behavior. If you want any of them changed LMK.
* Simplifies the SM transmission calculation a bit.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* [GBP No Update] Perish, individual logging runtime (#69024)
missed 2 or 3(lol it was more when I look back at the files), LOG_GAME tags on the log_message line, and did some cleaning up since i was looking through every log_message again
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* [GBP No Update] Perish, individual logging runtime
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* Emitter status shows minimum and maximum firing delay (#68921)
About The Pull Request
Emitter status display on examine will now display the minimum and maximum firing delay depending in place of an inaccurate static speed.
Why It's Good For The Game
Fixes#68820
As the emitter shoots at a random speed (inexplicably, it seems to create more issues than it solves), saying it'll fire "one beam every x seconds" is inaccurate as it's subject to change.
* Emitter status shows minimum and maximum firing delay
Co-authored-by: Charlotte <98856144+orthography@users.noreply.github.com>
* Fix grammar for solar panel construction (#69010)
About The Pull Request
Fixes#69001
"into place" only shows up when securing a solar panel using ? : conditional.
Why It's Good For The Game
Grammar fix.
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* Fix grammar for solar panel construction
Co-authored-by: XyzzyThePretender <106030730+XyzzyThePretender@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: tattle <66640614+dragomagol@ users.noreply.github.com>
* silicons can interact with floodlights (#68858)
About The Pull Request
Uses attack_robot and attack_ai to let attack_hand receive silicons as mob/user.
Replaces some magic numbers using the given defines.
Adds some documentation for specified vars.
Fixes#66758
Why It's Good For The Game
Addresses an inconsistency for silicon interaction.
Standardization good.
Emergent Issues
Floodlights, fire alarms, the mining shuttle beacon, barsigns, and the advanced camera console redirect ai/borg attacks into an attack_hand proc using identical code.
Floodlight code does not use ISBROKEN or relevant interaction flags.
Floodlights are unbolted when broken.
Changelog
cl
fix: Silicons can now interact with floodlights.
/cl
* silicons can interact with floodlights
Co-authored-by: XyzzyThePretender <106030730+XyzzyThePretender@users.noreply.github.com>
* [MDB Ignore][Bounty][Complete Refactor] Papercode Redux: Too Many Damn Files <Map Conflict Edition>
* Fixes merge conflicts and compilation errors, alongside fixing the joker card to make it fully functional again
* Fixed a bunch of info variables in map files
* Alright this is why I wanted this merged yesterday
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Tweaks brightness for red, blacklight presets. Adds dim red light preset (#68576)
Tweaked blacklight,red - Added dim red
* Tweaks brightness for red, blacklight presets. Adds dim red light preset
Co-authored-by: Mickyan <38563876+Mickyan@users.noreply.github.com>
* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033)
* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs
* wew
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fixes supermatter engine being unable to spawn bioscrambler anomalies when delaminating (#68498)
Supermatter can spawn bioscramblers again
And I said, "Bioscrambler? I hardly know 'er!"
* Fixes supermatter engine being unable to spawn bioscrambler anomalies when delaminating
Co-authored-by: VioletN <violetnottellin@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
* Prevent removing turbine's rotor when its on or if its panel is closed (#68114)
* Prevent removing turbine's rotor when its on or if its panel is closed
* Prevent removing turbine's rotor when its on or if its panel is closed
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* [NO GBP]You no longer need to change 2 other defines based on math in order to change one of the powerloss defines. (#67982)
Adds powerloss_linear_offset constant, which gets calculated to offset the linear function to allow the transition between the cubic and linear powerloss functions to be differentiable.
* [NO GBP]You no longer need to change 2 other defines based on math in order to change one of the powerloss defines.
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* Completely removes `proc_holders` from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code.
* our changes
* yes
* 0
* Update blackmesa.dmm
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE
* fex
* fex
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Rename "Delimber" anomaly to "Bioscrambler" anomaly. (#67886)
Renames all occurrences of "delimber", "delimber_anomaly", "delimbering", etc. to "bioscrambler", "bioscrambler_anomaly", and "bioscrambling", etc.
* Rename "Delimber" anomaly to "Bioscrambler" anomaly.
Co-authored-by: skylord-a52 <skylord-a52@users.noreply.github.com>
* The transition between the cubic powerloss and linear powerloss for the supermatter is now smooth. (#67515)
* Smooths the transition.
Changes the supermatter's linear powerloss function to occur when the derivative of the cubic power loss is equal to the rate of the linear power loss. Offsets the linear powerloss function so the transition between the two functions is completely smooth.
Also adds defines for powerloss related magic numbers.
Change the requirement for the linear powerloss to occur when the derivative of the cubic powerloss is equal to the rate of the linear powerloss. Offsets linear powerloss to make the transition between the two functions completely smooth. Adds defines for the powerloss magic numbers. Changes the powerloss inhibitor stuff to just reduce the powerloss instead of reducing the functions, meaning that reducing it by 90% would always reduce it by 90%.
Well, the consequence of powerloss being a cubic function means at one point the derivative of power minus powerloss will be negative, and at one insane point, this could make adding more emitters (or extremely high temperature) actually cause the SM to have lower power than if they didn't add emitters (or extremely high temperature), because linear powerloss doesn't occur in time.
This should make the powerloss function for high power supermatters to be more intuitive, where powerloss doesn't punish giving the supermatter high power to the point of being worse than giving it lower power. Changing powerloss inhibition related stuff will make it more intuitive for people to understand.
* The transition between the cubic powerloss and linear powerloss for the supermatter is now smooth.
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* APC balloon alerts (#67755)
Changes the to_chat messages from building/repairing/deconstruction/etherealing APCs to balloon alerts.
I tried to standardize the multiple names that some items get into one, example: control board or electronics into just board.
Renamed other things just to be cleaner on what tools to use, example: power terminal was change to cable terminal.
And added ! at the end of all error messages so it is easier to know that your attempt failed.
* APC balloon alerts
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* 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>
* Nerfs pre-loaded pacman plasma sheets (#67614)
* PACMANs are now loaded with 15 sheets of plasma roundstart, brought down from 50 sheets.
* Nerfs pre-loaded pacman plasma sheets
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Roundstart engineering SMESes start with ROUGHLY 4-5 more minutes of power (#67391)
eyeballin'
* Roundstart engineering SMESes start with ROUGHLY 4-5 more minutes of power
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* improves SM cascade performances and fixes announcement text (#67240)
Changes the cascade walls from turfs to objects to improve the performances of the roundending cascade.
The issue was that ChangeTurf() was a pretty expensive proc to be called that many times so i moved the cascade wall into an object. It doesn't delete anything other than living mobs and the portal to prevent edge case runtimes.
Plus remove a span_bold() from the announcement text since it wasn't making the text bold but was leaving behind
* improves SM cascade performances and fixes announcement text
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Moves APC Mapping Checks to Mapload rather than New (CI IS SAVED EDITION) (#67193)
* Moves APC Mapping Checks to Mapload rather than New
We've been dealing with this issue for a few months now, and I've grown tired of explaining the problem after I figured it out and decided to finally fix it today.
Basically, this check ran at _all_ times, rather than just on mapload (even though it logs to log_mapping). Not good, let's fix that by shuffling some stuff around. I tested this code and I was able to organically create an APC, and all the APCs on load didn't appear to be absolutely fucked in some horrific way.
* dmdoc
* Moves APC Mapping Checks to Mapload rather than New (CI IS SAVED EDITION)
Co-authored-by: san7890 <the@san7890.com>
* [MDB IGNORE] More /area/ typepath organization and cleanup (#67107)
This further continues what I did in b4fb8f3ed1 (but instead of just stations, its now every (most) applicable area in the game
* [MDB IGNORE] More /area/ typepath organization and cleanup
* wew
* e
* Update CentCom_skyrat.dmm
* wew
* ews
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>