Full augment sets on the left, partial mix/match on the right.
This PR aims to make augmenting slightly more interesting than just turning your body grey, while also begin reminiscent of the cyborg parts that are actually used in the process.
Using the augment manipulator now found in robotics, one can insert a part and custom fit it to one of three different styles (security, engineering, and standard). Mix and match if you so choose, or make a full set for maximum style.
A complete rewrite of the dock proc for shuttles to make it more maintainable and readable and also bring over some new features while we're at it. This allows for multi-area shuttles and more control over the effects of anything being moved.
Areas, and movable atoms all have (before|on|after)ShuttleMove procs, turfs have (from|to)ShuttleMove procs which are called the same as beforeShuttleMove.
All ShuttleMove procs have been moved to a single file in the shuttle module.
Stationary docks will have their baseturf_type and area_type modified in maps once the problems have been worked out.
Click catcher now supports mousemove/mousedrag. Basically, mouse location can now be captured even if the user isn't mousing over a visible location
Added procs to allow for projectiles to be fired with just an angle for pixel projectiles, instead of requiring a target turf and pixel x/y
Added procs to get angle of user's mouse from their viewpoint (Time to rework gang machine guns again!)
Beam rifles now have different zoom modes
Free directional zooms out and tracks the angle of your mouse from the center of the screen. However, you can't target with very good accuracy on this (Shots can't be properly aimed on non dense objects/lying down mobs.)
Locked directional zooms like free directional but doesn't automatically turn if your aim changes.
Center view, just increases your view in all directions (2x weaker)
No zoom mode, in which you just retain your normal view.
You can select beam rifle zooming rates to be instant or stepped.
Stepped zooming rates zoom out 5 tiles per second. This will likely help with people not being able to use it without lagging because their computers aren't as beefy!
Beam rifles no longer require zoom to be fired
Beam rifle aiming beams now instantly update instead of on process
Beam rifle aiming beams are now one object instead of 150. This'll help with the lag caused by it during gameplay that I've observed.
Angular penalty reduced by 0.1 for a nice even number.
Instances of client.view = have been replaced with client.change_view() as that'll properly update the click catcher
Hopefully shooting yourself in the face when you hit a blob tile or whatnot is fixed with the new and improved code..
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
This reduces confusion arising from the fact byond already has a built
in byond proc also named Bump.
We used an argument called yes to distinguish our Bump from byond's
builtin bump, but then we failed to make sure everyone of our bumps
properly override it, so a bunch of things have been double bumping
This resolves that issue permanently
I've also removed the second argument as it no longer has a purpose
I also cleaned up the recycler bump as it didn't do anything the
parent procs didn't already do
🆑 XDTM
experiment: Viruses and symptoms have been havily reworked.
add: Symptoms now have statistic thresholds, that give them new properties or improve their existing ones if the overall virus statistic is above the threshold. Check the pull request in github or the wiki (soon) for the full list.
del: Some symptoms no longer scale linearly with stats, and instead have thresholds.
tweak: The symptom limit is now 6.
del: Viruses can no longer be made invisible to the Pandemic
tweak: Symptoms no longer trigger with a 5% chance every second, but instead have a minimum and maximum number of seconds between each activation, making them more consistent.
del: The symptoms Blood Vomit and Projectile Vomit have been removed, and are now bonuses for the base Vomit symptom.
del: The Weakness symptom has been removed as it was completely useless.
tweak: The Sensory Destruction symptom has been reworked into Narcolepsy, which causes drowsiness and sleep.
tweak: Viral Aggressive Metabolism now has a timer before it starts decaying the virus. It scales with the highest between Resistance or Stage Speed.
add: You can now neuter symptoms, making them inactive. They will still affect stats. Adding formaldehyde to a virus will neuter a random symptom. A bottle of formaldehyde starts in the virus fridge.
/🆑
Full list of threshold bonuses:
Facial Hypertrichosis - None
Choking
Stage Speed 8 : Acts more often
Stealth 4: Suppresses early warnings
Acute respiratory distress syndrome
Stage Speed 8: Adds paralyzing chems (removed from base version)
Infect 8: Stronger damage
Confusion
Stealth 4: Suppresses early warnings
Resistance 6: Also deals some brain damage, not above 80
Infect 6: Stronger confusion
Cough
If AIRBORNE: Coughing causes a spread at range 1
Resistance 3: Coughing drops small items (removed from base)
Resistance 10: Can cause coughing fits that stun briefly
Speed 6: Increases cough frequency
Deafness
Stealth 4: Suppresses early warnings
Resist 9: Deafness is permanent instead of temporary
Dizziness
Stealth 4: Suppresses early warnings
Infect 6: Also adds the druggy effect
Fever
Resist 5: Heats more, can go above the damage threshold
Resist 10: Heats even more per activation
Shiver
Speed 5: Cools more, can go below the damage threshold
Speed 10: Cools even more
Spontaneous Combustion
Stealth 4: Suppresses early warnings
Speed 5: Increases fire stacks and damage
Speed 10: Increases fire_stacks and damage even more
Infect 8: Spreads the virus when igniting
Alkali Perspiration
Resist 9: Increases time between ignitions but increases power as well
Speed 8: Doubles the explosion range when wet
Infect 8: Also adds napalm and clf3 (removed from base version)
Necrotizing Fasciitis
Resist 7: Causes extra bleeding
Infect 8: Deals additional stamina damage
Autophagocytosis Necrosis
Stealth 5: Suppresses early warnings
Speed 7: Adds Heparin and Lipolicide (removed from base version)
[PROPOSED REQUESTING APPROVAL] Infect 13: Adds romerol, turning the victim into a zombie on death.
DNA Saboteur
Stealth 5: DNA won't reset after curing
Speed 10: Increases mutation frequency
Resist 8: Mutate twice instead of once
Hallucigen
Stealth 4: Suppresses early warnings, and gives off the messages of positive symptoms instead
Speed 7: Stronger hallucinations
Headache
Stealth 4: Reduces early message frequency
Speed 6: Deals some stamina damage when headaching
Speed 9: Reduces frequency, headaches are strong enough to stun
Healing Symptoms
Stealth 4: Hides the overlay when healing
Speed 7: Increases healing rate
Speed 15: Further increases healing rate
Itching
Infect 6: Increases frequency
Speed 7: Itching causes scratching, dealing minor brute damage (0.5)
Narcolepsy
Infect 7: Deals stamina damage when it triggers
Resistance 10: Triggers more often
Self-Respiration
Resist 8: Regenerates blood
Sensory Restoration
Resist 6: Also heals brain damage (removed from base)
Infect 8: Also purges alcohol (removed from base)
Sneezing
Infect 9: Increases spread range
Stealth 4: Suppresses early warnings
Hyphema
Stealth 4: Suppresses early warnings
[REQUESTING APPROVAL] Resist 13: Eyes fall off instead of just being blinded
Voice Change
Stealth 3: Suppresses early warnings
Speed 7: Changes voice fater
[REQUESTING APPROVAL] Infect 14: Changes the infectee's language along with the voice
Vomit
Stealth 4: Suppresses early warnings
Resist 7: Blood Vomit
Infect 7: Projectile Vomit
Unlisted symptoms do not have threshold bonuses!
All balance is not final, i'll tweak the numbers as necessary.
Why
Threshold bonuses: The reasoning behind these is that they feel more rewarding and impactful than simple number scaling, and gives the option to dedicate symptom space to more symptoms or to upgrade a few central ones instead.
Symptom activation change: the intention behind this is RNG consistency and ease of balance. Currently all symptoms have a 5% chance of activate with few exceptions, making it complicated to tweak.
Neutering: Upgrading positive symptoms by putting a ton of negative ones doesn't work well, in my opinion, especially when they'll trigger their own thresholds making the virus somewhat dangerous instead. Neutering allows players to sidestep that, but i recognize that it swings a bit too far on the other side of the risk/reward balance. I plan on finding a better system to manage virus statistics in the future.
Fixes the following bug
(https://github.com/tgstation/tgstation/issues/28969) : "Invisible when
spawned, you have to take it on and off the costume to make it visible
on the sprite, but still has no in-hand or separate sprite"