* Enforce preserving parent proc return values across ui_act call stacks (#53964)
All ui_act procs should call parent by default. All procs should preserve the value of the parent proc when it's TRUTHY and pass it down the call stack. No UI should be interactible when its flags or state indicate it should not be, except when explicity overriden by child procs intentionally disregarding parent return values to achieve a specific goal.
* Enforce preserving parent proc return values across ui_act call stacks
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Refactors machine_stat and is_processing() to process on demand (#53150)
* Refactors machine_stat and is_processing() to process on demand
* Fixes master (#53193)
* fixes master, damn it me/mothblocks
* fuck again
* ANOTHER ONE
* Fixes master
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes tesla coil hell contraptions (#52889)
Removes the ability for tesla coils to generate power with more then 85% efficiency.
Cleans up the remainder of my zap_act refactor, making the proc better fit its usecase and removing some unneeded code.
Adds a check in the tesla coil zap() proc that makes sure we're not trying to use power that's not there.
Removes some seemingly complex math from said proc, replaces it with a static 20% draw * the efficiency.
* Fixes tesla coil hell contraptions
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
About The Pull Request
/area/proc/usage() attempts to give list-like access to a bunch of vars. Why not make it a list instead and avoid all the proc calls? Might be room for followup here, to do something to powered(), use_power() etc.
Some legacy machinery was ignoring the default machinery use_power pulling from the machine's power channel by default
Total power usage was unused, APCs ignored it in favor of calculating it themselves :)
I also renamed the defines because they were in the danger zone of being very common words.
Changelog
cl Naksu
code: optimized area power usage calculations.
/cl
Trying this again. When *spin-ing as a cyborg, the way mobs are thrown off you depends on your intent. On help intent, they will be thrown a shorter distance from you and will never be damaged or stunned (they will still be knocked down). On harm intent, they will be thrown the current distance and will be damaged and stunned if they hit a wall or another person.
WHAT THIS ACTUALLY CHANGES:
Currently, whether or not *spin-ing will actually hurt/stun someone depends on whether or not the *spin-ing borg is emagged. This PR also reduces the range of the help intent throw, but since the knockdown happens whether or not the thrown mob hits something this is in most circumstances a cosmetic change. So, in summary, if you are a non-emagged borg in help intent the only thing this changes is you will chuck people a slightly shorter distance.
Why It's Good For The Game
This isn't exactly the most important change, but a borg should be able to control their behavior. Having damage/stun from throwing determined solely by emag-ness seems more like a hacky kludge than a legitimate design choice. Also, having the behavior of borg-throwing determined in the code for carbons is messy.
Changelog
🆑
add: The behavior of cyborg's *spin emote now changes with intent; on harm intent, it will throw its passenger farther and damage and stun them if they hit a wall or another person.
/🆑
Living and machine stat vars are pretty different, one uses flags and other number-defines.
This should make some other mass-replacements and searches a bit easier.
* Goof I will find you and I will berate you
holy hell
Calm and peaceful ahhhhh
I swear goofs pc failing was the biggest tragedy in gaming
Fixes some flags
More touchups
Now to squash
Goofs PC failing was the biggest tragady in GAMING
* Fixing some misspellings before the bee gets me
* GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
* Full vehicle support
* Changes some flags around, "fixes" some bugs, makes being shocked less insane
* Makes spliting more reasonable, unfucks some shitty tesla code I copypasta'd into the sm, godspeed shitcode,
none noticed you.
* Removes my tesla_ignore_1 fix, another pr is up that should solve things, so we're just leaving it in for now,
gonna have to deal with merge conflicts when it gets merged, but that won't be too bad
* tfw
* Nothing to see here folks
* I'm a boomer
About The Pull Request
Similar to #46485
Now all relevant uses of power_change() call parent, theres a signal sent when a machine changes the NOPOWER flag, all remaining machines that were using power_change() instead of update_icon() have been fixed.
Why It's Good For The Game
code quality, eventually signal stuff. and signal stuff
The way stat |= BROKEN was done was a mess, this makes everywhere use obj_break with proper parent calls and adds a signal for when a machine enters the broken state.
Why It's Good For The Game
Better code quality, more signals.
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
* High Gravity - First Draft
* Replaces has_gravity defines for areas.
* Default gravity ztrait
* Adds some gravity effect and skips damage at gravity = 2
* Paralysis icon
* Antigravity grenades for some abuse
* Makes the damage treshold a define and makes alert description more accurate.
* Bluh
experimental: Tesla damage has been reworked to structures and objects have been worked with a linear scaling.
experimental: All tesla weapons now no longer need to hit a mob to arc lightning; however, they will no longer stun, and only hit each target once.
tesla_zap vars are now a single bitfield.
* small changes
* Adds a use_tool helper and changes some tools to use it
* Ports most tool operations to use_tool
* Converts more tool operations to use_tool and tool_act
* Changes some things to default_unfasten_wrench
* Improves tool_behavior support in mech construction
* Code review memes
* Fixes all instant use_tool calls failing
* Code improvements
* merge fixes
* Free codebase churn
* fixes dviewmob
* a commit
* Partial revert "Free codebase churn"
This reverts commit 9dd41b3860c331637bbc85e694dd32dc59768ad5.
* better fix to dviewmob
* renames living_mob_list to alive_mob_list, adds mob_living_list and carbon_list
* make some use out of the shiny carbon list
* make some use out of the shiny new living list
* more things, also make the mobs subsystem (Life) use living list
* bonus
* domo arigato mr. roboto
* compile fixes, also made the drone code less dumb
* better?
* make admin message prettier
* honk
* fixes blobs
* rev fixes
* one small thing
* noisy
* Adds sounds to modular computers
* Adds range modifier var to sound loops
* finetunes computer sound range
* maybe fixes stuff
* changes some of the sound lengths
* borgs and some small changes
* sanity
* gravgen makes noise too
(reverted from commit ea523084c2)
* noisy
* Adds sounds to modular computers
* Adds range modifier var to sound loops
* finetunes computer sound range
* maybe fixes stuff
* changes some of the sound lengths
* borgs and some small changes
* sanity
* gravgen makes noise too
* 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