tweak: Fusion has been reworked to be a whole lot deadlier!
tweak: You can now use analyzers on gas mixtures holders (canisters, pipes, turfs, etc) that have undergone fusion to see the power of the fusion reaction that occurred.
balance: Several gases' fusion power and fusion's gas creation has been reworked to make its tier system more linear and less cheese-able.
Fusion, even after my rework, is still kinda lackluster in the 'risk <-> reward' department. It's pretty easy to bypass the consequences of fusion as it stands right now, so I wanted to change that. I think you can suspend your disbelief enough for the new effects. Also, there are a couple balance changes to fusion that I'll outline more below that I noticed happening and theorized could happen, so I tackled those here as well.
More specific reasoning for every change:
Addition of nuclear particles/tesla zap
As said before, I thought fusion should be more dangerous. As to why these specifically, I chose the addition of nuclear particles because I felt like it was at least decently thematically appropriate, and had a lot of potential to look visually interesting. The sprite is pretty much just a downscaled gumball with some added fluff. They all have random colors that are chosen when created, and fire out from the fusion holder's turf in random angles and with a 1 decisecond delay. I chose tesla zaps because.. well, they're pretty cool, felt reasonable enough (an extremely powerful release of energy goes well with fusion) and they mix up the damage types caused by fusion (brute from explosion, burn from zap, tox from radiation/particles). I added TESLA_FUSION_FLAGS because the tesla zaps defaultly just ended up exploding whatever they came out of (canisters usually) and ruined the whole thing.
BZ fusion power nerf, nitryl fusion power buff
These go hand in hand. When I first made BZ useful for fusion, I completely forgot (or maybe it just wasn't merged yet, don't remember) that xenobio started with a BZ canister. So, it was super easy to cheese high/super tier fusion by just stealing the canister from xenobio. Thus, I switched BZ's role in fusions progression to nitryl instead, which is harder to make and currently doesn't see much usefulness outside of making it for stimulum.
Fusion analyzing, addition of analyzer_results to datum/gas_mixture
I quickly realized after my fusion rework that there wasn't any ingame way to really quantify how good a fusion reaction was, which is a mistake on my part. Now, you can analyze the power of a fusion reaction and its tier after it happens. I added analyzer_results, since reaction_results worked in a matter that didn't fit what I wanted (reset completely every react() cycle) and I didn't want to change it. analyzer_results is only ever initialized when it's actually going to be used, which currently is only for fusion.
Overall fusion code cleanup
Pretty self-explanatory. I moved all the effects (radiation, tesla zap, etc) to one area instead of having it happen separately for every tier. Now the tiers just set variables used for those effects. Apologies if the diff is kinda hard to read.
Changes to gases created
Low tier is now BZ/CO2, mid tier is nitryl/N2O, high tier is stimulum/pluoxium, and super tier is tritium.
Gas creation numbers are lower across the board, mostly for bz/nitryl/stim.
BZ/nitryl/stim were added in low quantities to the tiers to help with the progression of the various tiers. It didn't really make sense that before, super tier fusion gave stimulum/pluox when the only feasible way to get super tier fusion was using stimulum, and the low tier rewards were straight up useless. Tritium for super tier was chosen because I think it's the gas with the most potential of causing a massive disaster in this scenario.
Plasma no longer counts towards gases fused
Before this change, I realized that you could just stack as much plasma as humanly possible and a minimum amount of trit to instantly get several thousand moles of BZ and potentially other gases for free. No thank you.
I'm still not 100% satisfied with fusion, so expect more PRs like this in the future.
* different guns can be inserted into emitters
* fixes portal gun runtime
* You can now switch type through wires
* makes one line more readable
* Fixes being able to grab nodrop guns from emitters
cl
experimental: Hitscanning tracers now have lighting effects
experimental: Projectile pathing has been changed - instead of moving to a turf 32 pixels forward using byond's built in step_towards() proc, it now increments 2 pixel 16 times (subject to change). While this will increase the processing overhead, this will more or less eliminate cases of "projectiles clipping past corners in some angles but not others".
It is my belief that science weaponry should exist but not be "just better energy guns/whatever". Right now, portal guns are actually pretty powerful, as their random teleport can space people (especially if they have bohs), and actually does burn damage, albeit very little. I want to make scilathe weapons into useful utility things that can be weaponized if you use it right and in somewhat niche scenarios.
This PR will make wormhole projectors into more utility than combat.
* changes cost of AP ammo from 6 to 8
* incendiary damage from 15 to 20
* AP ammo 8 TC to 9
felt that 2 extra TC per magazine was not a significant enough difference
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.
* adds signal and modifies each call of afterattack to call it's inherited proc
* uses new macro for sendsignal()
* map fuck
* skip precommithooks
* combine and negate 2 ifs
Why not give the ops a 300 TC instantly obtain the disk button? Or a 300 tc mech that can't be damaged in any way except by pulse lasers?
Just because something is high commitment doesn't mean you can put it at a power level that the station cannot fucking deal with.
someone actually holds this opinion
rscadd: Blast cannons have been fixed and are now available for purchase by traitorous scientists for a low low price of 14TC.
rscadd: Blast cannons take the explosive power of a TTV bomb and ejects a linear projectile that will apply what the bomb would do to a certain tile at that distance to that tile. However, this will not cause breaches, or gib mobs, unless the gods (admins) so will it.
experimental: Blast cannons do not respect maxcap. (Unless the admins so will it.)
* Tones down values for a lot of different hotspot_expose calls
* Update LINDA_fire.dm (#38217)
* Automatic changelog compile, [ci skip]
* Slight changes to camera network code (#38223)
* Removes a useless var and corrects two cameras to use the automatic naming system to reduce dv usage.
* Damn github didnt notice this was here....
* Fixes datediff not returning (#38215)
* Fixes pocket items being deleted when monkeyizing (#38220)
* Automatic changelog generation for PR #38220 [ci skip]
* readds atmos heating from hotspot_expose(), as requested by naksu
* Tones down hotspot_expose values for sparks moving and destroying
* tones down item heat by a lot. no more burning your face off after smoking a cigarette
The logging is now stored in the persistent client/player_details datum,
that will survive an entire round
The existing mob log is retained and a new admin verb is added to access
it. It will only show logs for the mob in question, across all players
who possibly spent time in that mob
A new log type is added that tracks the mobs the player changes across
into and the times they occured, to better help admins manage complex
situations, this also appears in the mob log as a record of the players
who entered/exited control of the mob
* Reduces selfcharge gun processing/icon work
* More efficient gun overlays, adds old_ratio var
* oh my god it was calling the egun's update_icon?
* percent proc
* Attachment overlay overhaul
* Cut overlays in egun update
* ebow 1000% better overlay management
* Update gun.dm
* Pointless check
* Giving KA and children consistent icon behavior
* Update kinetic_accelerator.dm
* Fixed
* ..() readded
* ..() readded
* ..() readded
* Antur didnt catch this one heck
* Because confusing vars are apparently more maintainable
* Gun overlays 2: Electric boogaloo
* another one
* Chameleon guns are removed
* tentacles everywhere
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.
The component is initialized with any combination of three flags, EMP_PROTECT_SELF protects against effects that target the object itself, EMP_PROTECT_WIRES protects against wires being messed with similar to the NO_EMP_WIRES_1 flag which this PR removes, EMP_PROTECT_CONTENTS protects against things that are inside the object like organs, internal "non-virtual" power cells and the like
This enables (but doesn't introduce) new mechanics such as adding EMP shielding at runtime to any atom, or taking it away.