mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-28 16:32:21 +01:00
088409bbe376a7adcd4d1fb747cf4a5e4f257c5b
301 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ad111f4950 |
Spacemove refactor - Newtonian physics (#84869)
## About The Pull Request This PR significantly enhances how zero-g movement works. Its no longer locked to one of 8 directions, everything now has inertia and is affected by weight. This means that throwing a piece of wire will no longer completely reverse your movement direction, and that being thrown out of mass driver no longer will slow you down to a halt at some point. This leads to following gameplay changes: * Guns now accelerate you. Ballistics have higher acceleration than lasers, and higher calibers have higher acceleration than smaller ones. This means that firing full-auto weapons in zero-g will make you drift and accelerate significantly. While this can be a hilarious way to travel in space, it makes using them trickier. * Impacting a wall or an object while moving at high speeds will cause you to violently crash into it as if you were thrown. Careful when exploring! * Jetpacks now have inertia. Changes introduced in #84712 have been mostly reverted, although speed buff has been reduced to 0.3 instead of 0.5 (although this is compensated by new movement mechanics, so overall speed should be roughly equal). All MODsuit jetpacks now possess the speed boost. Advanced MODsuit jets (which has also been added back) and captain's jetpack instead have higher acceleration and stabilization power, providing much more precise control over your movement. * Firing guns while moving on a jetpack will partially negate your pack's acceleration, slowing you down. Non-advanced jetpacks' stabilization is not enough to compensate for heavy caliber weaponry as sniper rifles, shotguns or rocket launchers. * You no longer instantly decelerate upon sliding along a wall. Instead, it may take a few tiles if you are moving at extreme speeds. Passing over lattices still allows you to grab onto them! As space movement is angle-based instead of dir-based now, its much more smooth than before due to using new movement logic. Example of jetpack stabilization in action: https://github.com/tgstation/tgstation/assets/44720187/6761a4fd-b7de-4523-97ea-38144b8aab41 And, of course, you can do this now.  **This pull request requires extensive gameplay testing before merging**, as a large amount of numbers have been picked arbitrarily in an attempt to keep consistency with previous behavior (guns and normal-sized items applying 1 drift force, which is equal to what everything applied before this PR). Jetpacks and impacts may also require adjustments as to not be frustrating to use. Closes #85165 ## Why It's Good For The Game Zero-G refactor - currently our zero-g movement is rather ugly and can be uncomfortable to work with. A piece of cable being able to accelerate you the same as a duffelbag full of items when thrown makes no sense, and so does instantly changing directions. Inertia-based version is smoother and more intuitive. This also makes being thrown into space more of a hazard (possibly opening the door for explosive decompressions?) Jetpack inertia and gun changes - this is mostly a consequence of inertia-based movement. However, zero-g combat being preferred during modes like warops was an issue due to it negatively affecting everyone without jetpacks which are in limited supply onboard. This reverts the mobility changes which severely impacted space exploration, while making zero-g combat more dangerous and having it require more skill to be a viable option. ## What's left - [x] Refactor moth wings to use jetpack code - [x] Refactor functional wings to use jetpack code - [x] Locate and fix a recursion runtime that sometimes occurs upon splattering against a wall - [x] Add craftable tethers and modify engineering MOD tethers to use the same system ## Changelog 🆑 add: You can now craft tether anchors, which can be secured with a wrench and attached to with right click. They won't let you drift into space and you can adjust tether length/cut it via lmb/rmb/ctrl click on the wire. add: MOD tethers now remotely place and connect to tether anchors instead of throwing you at where they landed. balance: MOD tethers can now be used in gravity balance: Jetpacks are now inertia-based. balance: Guns can accelerate you significantly in zero-g. balance: All jetpacks now give you equal speed buff, however advanced MOD ion jets and captain's jetpack have higher acceleration/deceleration values. refactor: Refactored zero-g movement to be inertia-based and utilize angles instead of directions. /🆑 |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
c7f547f9f8 |
Acromegaly no longer makes you bonk your head on airlocks while you're inside of objects (#86121)
## About The Pull Request Closes #86118 ## Changelog 🆑 fix: Acromegaly no longer makes you bonk your head on airlocks while you're inside of objects /🆑 |
||
|
|
91baa94ac5 |
event based incapicated and able_to_run (#86031)
## About The Pull Request this is a revival of #82635 . i got permission from potato to reopen this, he did almost all the work. i only just solved the conflicts and fixed all the bugs that were preventing the original from being merged (but it should be TMed first) ## Why It's Good For The Game slightly improves the performance of basic mob AI ## Changelog 🆑 LemonInTheDark refactor: able_to_run and incapacitated have been refactored to be event based /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: ZephyrTFA <matthew@tfaluc.com> |
||
|
|
e1bf793264 |
Spelling and Grammar Fixes (#86022)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
d2c7806047 |
Spelling and Grammar Fixes (#85992)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
1b19505cc1 |
Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe (#85724)
## About The Pull Request Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe It's a "skillchip" that forces you to sing while implanted and active (these messages were typed normally)    ## Why It's Good For The Game Makes it easier for entertainers to put on their own version of that historic musical ## Changelog 🆑 Melbert add: Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe /🆑 |
||
|
|
0bb92105aa |
Monkification Fixes Fixes (#85104)
## About The Pull Request Fixes #85100 Roundstart monkeys are monkeys before they're monkeys, whoops. ## Changelog 🆑 Melbert fix: Fixed roundstart monkeys not having monkified fix: Fixed being "de-monkified" while dead making it difficult to actually de-monkey you going forward fix: Fixed genetic scanner showing dead mobs as "transforming" /🆑 |
||
|
|
8e56364e98 |
Monkification fixes (#85064)
## About The Pull Request - Being monkified / humanified no longer knocks you down - Fairly certain this was one of the consequences of the stun refactors of ages past, using `Paralyze` rather than `Stun`. - Having monkifiaction cured now gives you the cure text - Didn't call parent for some reason - Monkification grant / cure text now has spans - Self evident - Being humanified now tells you what species you are rather than you're "Human" - Just a small tweak ## Changelog 🆑 Melbert fix: When Monkified or Humanified, you are no longer knocked down. fix: When cured of Monkified, you get the cure text now. fix: The text shown when cured / given Monkification now has color. fix: Being humanified now tells you what species you become rather than assuming you are a human. /🆑 |
||
|
|
34f3f479ae |
Small hulk cleanup / nukes TRAIT_IGNOREDAMAGESLOWDOWN (#85003)
## About The Pull Request I was investigating a bug with hulk in which using it while damaged doesn't put you back on full speed I noticed `TRAIT_IGNOREDAMAGESLOWDOWN` on its own was subtly broken, in that it did nothing if the user did not call `updatehealth` afterwards And guess what, most (if not all) uses of the trait did not do this, so it never applied correctly So I nuked the trait entirely, made all uses of it use the same thing morphine uses (`/datum/movespeed_modifier/damage_slowdown`) And since I was auditing this I saw the ball module was broke, it removed the immunity but never added it. Quick fix I also cleaned up some Hulk stuff while I was in the area because I was in the area. I removed all instances of `check_mutation` and replaced it with trait checking because it made more sense. I also also fixed a bug with the simple flying element never removing on detach because I touched something that uses it for the above change. ## Changelog 🆑 Melbert fix: Using hulk (and a myriad of similar effects) now properly updates your movespeed to ignore the damage movespeed penalty fix: Some things which temporarily make you fly don't make you fly forever fix: MODsuit ball module now properly makes you immune to damage movespeed penalty when in ball form fix: Adding Hulk via VV dropdown doesn't default to adding the strongest hulk available (that which is used by the medieval pirates) /🆑 |
||
|
|
978a817283 |
Adds Ork subtype of hulk mutation with funny speech modifiers (#84883)
## About The Pull Request Adds a subtype of hulk mutation created by mixing it with clumsy. Makes the owner's skin olive green and forces a funny speech impediment on them. Essentially revival of #69473 with some more lines  ## Why It's Good For The Game WARBOYZ NEEDA MOAR DAKKA funny flavor subtype for hulks which makes them sound even more brain damaged ## Changelog 🆑 add: A new ork mutation which can be acquired by mixing hulk and clumsy. /🆑 |
||
|
|
ed8edd5a35 |
H.A.R.S. no longer disables your skillchips (and also doesn't show you the brain-removal text) (#84841)
## About The Pull Request So, this one needs some explanation. First, how does H.A.R.S. work code wise? Well, it's pretty simple: https://github.com/tgstation/tgstation/blob/7d7a6da73542f9958ab99a502b2d66459e5539f4/code/datums/mutations/body.dm#L611-L613 It removes the victim's brain from their head and then immediately puts it back into their chest. It also sets that special flag to true. This is what the docs have to say about that flag: https://github.com/tgstation/tgstation/blob/7d7a6da73542f9958ab99a502b2d66459e5539f4/code/modules/surgery/organs/organ_movement.dm#L27 So basically, it suppresses the side effects of having the organ removed. This is why H.A.R.S. doesn't kill you instantly despite removing your brain. So why does still deactivate skillchips, since that's also a side effect? Well, that's because brain code doesn't actually take it into account properly: https://github.com/tgstation/tgstation/blob/7d7a6da73542f9958ab99a502b2d66459e5539f4/code/modules/mob/living/brain/brain_item.dm#L112-L119 Instead of treating the special flag as "should we prevent side effects?" It treats it as "should we make this silent?" So I just took the obvious route and changed that part. There was also another bug, where you'd be shown this text upon gaining or losing H.A.R.S.: > You feel slightly disoriented. That's normal when you're just a brain. That obviously shouldn't be happening, so I made H.A.R.S. pass `movement_flags = NO_ID_TRANSFER` as well. Fixes #84010 ## Why It's Good For The Game Bugfix. To know why I fixed the bug in this way specifically, see above. ## Changelog 🆑 fix: H.A.R.S. will no longer disable your skillchips or show you text reserved for total brain removal. /🆑 |
||
|
|
565c548108 |
Converts common speech modifiers into a component (#84675)
## About The Pull Request Added a ``/datum/component/speechmod`` component which can be used to perform basic speech modifications. It use either simple replacements or regex, add a string at the end of any message (at a chance if required) and convert speech to uppercase. However, a good chunk of speechmods are far too niche and specific to be put into a speechmod component and thus have been left alone. ## Why It's Good For The Game Cuts down on copypasted code, makes making new speechmods easier. ## Changelog 🆑 refactor: Refactored a lot of speech modifiers to use a component instead of copied over code. /🆑 |
||
|
|
b6c84135c3 |
Refactors embedding to use datums instead of storing data in bespoke elements (#84599)
## About The Pull Request This refactors embedding elements to make them use singleton datums (similarly to armor) instead being bespoke and creating a new element every time armor values are supposed to be adjusted. Default values have been removed from defines due to now being declared in base class itself. Additionally fixes vending machines and tackling gloves setting generated shards (which they instantly embed into their victim) embed properties to null after running the embedding code, despite said shards having non-null embedding values by default, making them not be able to embed into anyone else, also potentially breaking the pain/jostling code if they somehow get updated. ## Why It's Good For The Game Current embedding system is an unnecessarily complicated mess as bespoke elements are hard to work with, and creating a new element every time you change values is hacky at best. This change should make it easier to read and work with. ## Changelog 🆑 fix: Fixed glass shards generated from falling vending machines or tackling windows not being able to embed into anyone. refactor: Refactored embedding code to use datums instead of bespoke elements and ugly associated lists. /🆑 |
||
|
|
880a552d43 |
Properly fixes Mending Touch (#84569)
## About The Pull Request fixed MT hurting simplemobs Fixed the multiplier bug properly (last fix overrode coefficients), Improved its wound effects, allowing it to transfer severe and critical wounds if upgraded. Allowed it to transfer blood between the patient and doctor as well. It adds a teensy bit of toxin damage if the blood types are incompatible. Added balloon alerts on various failure states. Added an inability to use the mutation if your active arm is inorganic. Improved the code of the mutation overall, improving and updating the comments. ## Why It's Good For The Game > Fixed the multiplier bug properly (last fix overrode coefficients), I forgor to draft it... in my defence it hadn't been approved or been up for 24 hours so I didn't expect a speedmerg. > Improved its wound effects, allowing it to transfer severe and critical wounds if upgraded. Felt lacking that it couldn't transfer severe wounds, or critical ones if you went the extra mile. > Allowed it to transfer blood between the patient and doctor as well. It adds a teensy bit of toxin damage if the blood types are incompatible. Blood is an important part of medbay now, it's wack that I didn't gave it that before. Also the tox thing is funny. > Added balloon alerts on various failure states. Player feedback : GOOD > Added an inability to use the mutation if your active arm is inorganic. How are you gonna transfer wounds to you if you have a robot arm? ## Changelog 🆑 fix: fixed MT hurting simplemobs fix: Fixed the multiplier bug properly (last fix overrode coefficients), add: Improved its wound effects, allowing it to transfer severe and critical wounds if upgraded. add: Allowed it to transfer blood between the patient and doctor as well. It adds a teensy bit of toxin damage if the blood types are incompatible. imageadd: Added balloon alerts on various failure states. add: Added an inability to use the mutation if your active arm is inorganic. code: Improved the code of the mutation overall, improving and updating the comments. /🆑 |
||
|
|
6d13e2ec44 |
Fixed adaptations not conflictnig (#84642)
## About The Pull Request Fixed adaptations not conflictnig ## Why It's Good For The Game Haha whoops ## Changelog 🆑 fix: Fixed temp n space adaptations not conflicting /🆑 |
||
|
|
dc203278bc |
Fixes mending touch for simplemobs (#84523)
## About The Pull Request Closes #84522 Mending touch should no longer have a reverse effect on simplemobs and silicons ## Changelog 🆑 fix: Mending touch no longer damages non-humans /🆑 |
||
|
|
8e9fc98a93 |
Fixed various issues with the genetics powers PR (#84515)
## About The Pull Request https://github.com/tgstation/tgstation/issues/84509 #84557 Removed Trichromatic Larynx per @mothblocks decision that it looks uggo. Replaced heckacious laryncks' color and size changes with random bolding, italics, and underlining. Stoner has been un-locked and replaces TL in the above's recipe. Fixed elastic arms users being unable to use abstract items like mending touch or shock touch. Fixed mending touch being bad ## Why It's Good For The Game > Removed Trichromatic Larynx per @mothblocks decision that it looks uggo. They say it looks ugly and bad. It also works like poop. So away it goes! > Replaced heckacious laryncks' color and size changes with random bolding, italics, and underlining. Removed color, but replaced with something just as neat. > Stoner has been un-locked and replaces TL in the above's recipe. No reason to lock it as far as I know. > Fixed elastic arms users being unable to use abstract items like mending touch or shock touch. Bugge ## Changelog 🆑 del: Removed Trichromatic Larynx per @mothblocks decision that it looks uggo. del: Replaced heckacious laryncks' color and size changes with random bolding, italics, and underlining. add: Stoner has been un-locked and replaces TL in the above's recipe. fix: Fixed elastic arms users being unable to use abstract items like mending touch or shock touch. fix: Fixed mending touch being bad /🆑 |
||
|
|
ff836e10be |
First Genetics Content in 5 Years (Adds new positive mutations!) (#83652)
## About The Pull Request Sister PR to #83439, that needs to be merged before this. Adds a plethora of new positive mutations to the game! Mutations now have a variable that directly adds and removes traits instead of manually doing so for idk Tripled cryobeam range. Made the mushroom hallucinogen's code more readable. - Adrenaline Rush Trigger your body's adrenaline response, granting you 10 * P units of pump-up, synaptizine, and determination. After 25 seconds, you crash, recieving 7 * S units of tiring and dizzying solution. Can be Energized, Powered, and Synchronized. - Mending Touch Transfer injuries from the target to yourself! Heal 35 * P damage, recieving up to 35 * S damage in turn. Transfers moderate wounds, fire stacks, and attempts to parallel limb-to-limb damage. Has bonuses for pacifist players. Can be Energized, Powered, and Synchronized. - Elastic Arms Your arms become floppy and you can interact with things as if you were adjacent to them from one tile further! Does not work through walls or dense objects, and you become unable to lift huge items, pull large corpses, and you get chunky fingers. Split temperature adaptation into three: - Cold Adaptation Gain cold immunity, gain ice slip immunity! - Heat Adaptation Gain heat and ash storm immunity - Thermal Adaptation Resist both cold and heat, but no extra fancies. The sprite is green now! Pressure Adapt has a purple sprite. You can mix the cold mutations with Fiery Sweat to make these new ones: - Cindikinesis Instead of summoning snow, you can now summon... ash. Wow. Very cool. - Pyrokinesis You can fire fire now! Fires beams of heat that, unlike the temperature gun, actually ignite on hit. Higher instability cost than its sister mutation. The changes have been themed primarily around classic superhero gimmicks. Genetics feels like a natural spawning point for superheroes, and its mutations show this via the good ol' 'radiation made me fire eye lasers' hero backstory. Adding more ways to be a superhero is fun. Also, added two new speech mutations: - Trichromatic Larynx Every word you say is now either red, green, or blue! - Heckacious Larynx (Trichromatic Larynx x Wacky) You sound, well. Absolutely ridiculous. Spectacularly silly. Profoundly wacky. Don't give it to the clown. Unlocked the Elvis mutation as well. ## Why It's Good For The Game > Adds a plethora of new positive mutations to the game! Genetics is in desperate need of new content, all it's had for years is a slow gutting and removal of the few things it does have. Hulk is, being real, stupid, dumb, stagnated, and overpowered, but it's been begrudgingly accepted because genetics is quite literally just, nothing without it. I'm here to add the somethings to genetics and add some more variety (and no i'm not touching hulk) > Mutations now have a variable that directly adds and removes traits instead of manually doing so for every mutation. Less stupid > Tripled cryobeam range. Shit joke mutation is now long-range shit joke mutation! > Made the mushroom hallucinogen's code more readable. Slightly OOS because I was going to add color blind mutations but decided not to creep. This piece o shit code has been hurting my head for years and now that I've finally understood it I want to make sure others don't go through that pani. > - Adrenaline Rush A quick burst of some mild chemicals at the cost of eventual nausea, sounds like a fair trade to me! If you're already on the ground, this isn't going to do anything. > - Mending Touch Healing is something that's lacking from the mutations, and this puts a fun spin on it, making the caster a damage pincushion as they heal and absorb damage. > - Elastic Arms Classic superhero power, very funny, lots of silly and sandbox potential. Has innate drawbacks because 1. thematic and 2. it's pretty strong > Split temperature adaptation into three: They combine into the same thing it used to be, so don't freak out. This just adds some separation between the immune types, for things like themed superheroes. > - Cold Adaptation Perhaps mildly concerning, but I think this might be a fun spin on it? TODO: make hiking boots effect? > - Heat Adaptation Nothing to say. It's cool. > - Thermal Adaptation Nothing wrong with this mutation so it stays in > You can mix the cold mutations with Fiery Sweat to make these new ones: How can we have frozone and not, uh human torch or something. why are there no heavy hitter fire superheroes in marvel or dc??? > - Cindikinesis Can't really summon an equivalent to snow that's actually useful, so here's this instead. Clown might like it, or maybe the chemist. > - Pyrokinesis The ignition effect is fairly weak and mostly a deterrent. I think this is the most dangerous ranged mutation in the game, which is kinda sad. > - Trichromatic Larynx Colors are fun! We have speech mutations that change words but none that change their color. Though, to be fair, this was mostly added for the mutation below's combination. > - Heckacious Larynx (Trichromatic Larynx x Wacky) I felt that Wacky wasn't nearly wacky enough. It just made your speech comic sans. That's great and all, but. It's not much? This will be a truly clownly mutation, the Genetics equivalent of a HONK mech. I made it a combination mutation specifically to restrain its power level. > Unlocked the Elvis mutation as well. Was there a reason to lock this? ## Changelog 🆑 add: Added tons of new mutations to Genetics, alongside some recipes! add: Thermal Adaptation has been made a combination mutation from the stronger but narrower Cold and Heat adaptations. balance: Cryobeams have 9 tile range, and fiery sweat doesn't cause spread on contact. image: Added some neat new sprites for the new mutations, and added a greyscale version of the magic hand sprites. code: Infinitesmally improved mutation code. /🆑 |
||
|
|
d50ac1c067 |
Fixes the Stimmed mutation instability being defined twice (#84237)
## About The Pull Request What is says on the tin. This was likely missed during the genetics rework when instability was defined. ## Why It's Good For The Game Little accidents happen in a big shake up. |
||
|
|
f0c80a0611 |
Nullblade; nullrod for stabbing people in contrived circumstances to get less than equivalent damage to a normal chaplain (#83848)
## About The Pull Request  Adds the nullblade, a nullrod variant that is a shortsword that deals 1d6 + A strength bonus derived from your attacking arm's lower and upper melee force divided by 4 (plus any extra values from being sharpened or enchanted). But has the potential to do more damage if the target is debilitated in some way or you attack them from behind. The sneak attack damage is 3d6, and has a heavy wound chance. The swingy nature of the damage means most of the time, this null rod is much weaker than your standard null rod and struggles to even reasonably compete with the other null rods unless you are orchestrating the various methods to apply a sneak attack. <details> <summary>Overly complicated rules about sneak attacking within:</summary> You can sneak attack a target if; - Your target is turned away from you. - Your target is on the floor. - Your target is unable to use their hands. - You are standing in the same tile as your target. - Your target is blind (sucks to be anyone with that quirk). - Your target is staggered (from being shoved or recently tackled). - Your target is confused (from being flashed or hit with a baton). - Your target is being grabbed aggressively. - Your target is spinning in place. You cannot sneak attack a target if; - Your target is a slime. - Your target is incorporeal (this doesn't include revealed revenants). - Your target is a mind reader, and you don't have anti-mind reading technology fitted to your skull. - A 50% chance of failure if your target does not need a heart. - A 50% chance of failure if your target is some kind of Mansus entity, which have weird anatomy. - You are fucking blind. Your sneak attacks are augmented by the following ways; - +1d6 if your target is unconscious. - +1d6 if you are Morbid and your target has been dissected. - +2 if your target has been rebuked by the Eye of God. - x0.5 if your target has recently been batonned. (This is way too easy to combo together) </details> ### Misc. stuff I fixed the shortsword sprite having a misaligned handle to the rest of the sword I arranged the nullrod page to place the various subtypes into categories, and removed some unnecessary subtyping. Someone named a trait really poorly so I fixed that and also alphabetized some traits. ## Why It's Good For The Game I just thought a rogue-ish chaplain would be a neat change of pace to the various tools of stabbing people to death that they already have. We have a few chaplains sects that seem appropriate for this, and I enjoy adding little minigames to our combat mechanics to make them more engaging than simply stabbing people to death in a very direct fashion. I had considered replacing one of the null rods that are kind of boring or lack unique mechanics, but I'll hold off for now. |
||
|
|
0119b95d2d |
Genetics Rebalance: Negative mutations add stability, standarized instability cost for mutations (#83439)
## About The Pull Request PR has been reworked a bunch! Changes in bold. Some of the **HATE** is now outdated. **Negative mutations now allow you to have more positive mutations, via reducing your instability!** **All mutations have been overall standardized via defines on their instability values. Many mediocre positive mutations have had their cost reduced significantly!** ``` /// Negatives that are virtually harmless and mostly just funny (language) // Set to 0 because munchkinning via miscommunication = bad #define NEGATIVE_STABILITY_MINI 0 /// Negatives that are slightly annoying (unused) #define NEGATIVE_STABILITY_MINOR -20 /// Negatives that present an uncommon or weak, consistent hindrance to gameplay (cough, paranoia) #define NEGATIVE_STABILITY_MODERATE -30 /// Negatives that present a major consistent hindrance to gameplay (deaf, mute, acid flesh) #define NEGATIVE_STABILITY_MAJOR -40 /// Positives that provide basically no benefit (glowy) #define POSITIVE_INSTABILITY_MINI 5 /// Positives that are niche in application or useful in rare circumstances (parlor tricks, geladikinesis, autotomy) #define POSITIVE_INSTABILITY_MINOR 10 /// Positives that provide a new ability that's roughly par with station equipment (insulated, cryokinesis) #define POSITIVE_INSTABILITY_MODERATE 25 /// Positives that are unique, very powerful, and noticeably change combat/gameplay (hulk, tk) #define POSITIVE_INSTABILITY_MAJOR 35 ``` Added a new height mutation: Acromegaly! It's the opposite of Dwarfism and makes you uncannily tall. It also makes you hit your head 8% or 4% (with synch) of the time you pass through airlocks. Wear a helmet! **Injectors and activators' duration is now dependent on the in/stability (absolute value) of the mutations to be injected! With a minimum of 5-10-15 seconds for each type of injector. Also changed up a bit how part upgrade cooldowns work, by making each tier reduce cooldowns by 25-15-10% for each injector type.** ## Why It's Good For The Game **> Negative mutations now allow you to have more positive mutations, via reducing your instability!** Genetics has been long in dire need of a rework. This isn't really one, but it IS intended to increase genetics depth a bit and stave off its stagnation, making it slightly more interesting than 'free shit', by making it so **you can now gain more positive mutations, but you need to figure out what you're going to take as a downgrade in turn.** Genetic powers are heavily themed around comic book superheroes, and you know what those had a lot? Debilitating drawbacks to their powers. Let's replicate that. **I intend to make a sister PR for this that adds more interesting positive mutations (for the first time in decades) to genetics, so there's an actual element of pick-and-choose involved** > Added a new height mutation: Acromegaly! It's the opposite of Dwarfism and makes you uncannily tall. It also makes you hit your head 8% or 4% (with synch) of the time you pass through airlocks. Wear a helmet! We have Super Tall. Let's add it to the game somewhere! With a fun downside, of course. **Gigantism is now a recipe mutation, mix Acromegaly with Strength to get it.** > **Injectors and activators' duration is now dependent on the in/stability (absolute value) of the mutations to be injected! With a minimum of 5-10-15 seconds for each type of injector. Also changed up a bit how part upgrade cooldowns work, by making each tier reduce cooldowns by 25-15-10% for each injector type.** **Made no sense that a Glowy injector cost the same as a Hulk injector. Just annoying. The cooldown is based on the absolute value, so a -30 instability injector would take ~30 seconds. This mostly so that geneticists can't make a million modded syringe gun supersyringes** |
||
|
|
c2e1ab080c |
Transcendent Olfaction fix: Pesky closets (#83993)
## About The Pull Request Change to using the more robust get_turf method to get locations, as all pinpointers currently do. ## Why It's Good For The Game The transcendent olfaction mutation is currently broken. When the target is inside a container, its x y z becomes zero, so it will always say the target is below you when comparing your z level to it, and it won't even point in the right direction. This PR fixes that. ## Changelog 🆑 fix: Transcendent Olfaction mutation now works properly /🆑 |
||
|
|
4339c0ba49 |
Mutadone restores your original monkey status (#83720)
## About The Pull Request Before PR: Giving mutadone to a monkey turns it into a human Giving mutadone to a human does nothing about its human status After PR: Giving mutadone to a monkey created from a monkey cube does nothing about its monkey status Giving mutadone to a monkey which was originally a human restores it to being a human Giving mutadone to a human who has never been a monkey does nothing about its human status Giving mutadone to a human who was originally a monkey returns it to being a monkey I couldn't think of any better way to achieve this than putting a trait on the monkey typepath but if anyone has one, I'd love to hear it (actually, maybe I could just typecheck the mob... but that seems equally gross) ## Why It's Good For The Game Treating "being a monkey" as a mutation makes sense from the perspective of the DNA console but not from the perspective of certain other game mechanics. A chemical which "removes all mutations" should _intuitively_ restore people to the state they were in at the start of the round (so monkeys turned into humans should return to monkey, and vice versa) rather than unilaterally enact rapid evolution upon monkeys. At least, I don't _think_ it's meant to be a lore implication that all test apes on the station are transformed humans... This has a couple of side effects, both of which I think are desirable. Firstly- some mechanics work on humans but not monkeys (see #83698), and can be circumvented by spraying mutadone gas into a monkey pen. This will now only be achievable by individually mutating each monkey, which requires more effort for whatever your desired result is. Secondly- this adds a downside to the common "cure-all" surgical method of turning a monkey into a human and transplanting a brain into it. This new body will still genetically remember being a monkey, adding some element of risk to this otherwise undramatic means of curing basically any ailment in the game. Thirdly- Some people have admitted to using mutadoned monkeys to create a large number of humans to kill for Heretic and Changeling progression, which I also don't want them to do, so making this take longer is a positive. ## Changelog 🆑 balance: Mutadone restores your originally monkey status, rather than always turning monkeys into humans /🆑 |
||
|
|
b5fa92d691 |
Adds Medieval Pirates (and small assault_pod change) (#82392)
## About The Pull Request (short, slightly outdated video compilation of the pirates) https://youtu.be/j9BNFzcUSjc Adds the **MEDIEVAL WARMONGERS** pirate gang, these pirates are focused on causing chaos directly on the station with the use of melee weaponry and swarming tactics. they are not very smart when it comes to using technology, so they crash in the station in an attempt to dock. the pirates spawn with the NOGUN trait as they have never used guns before but have access to dashing and the unbreakable component(small heal burst upon reaching crit). Warlord spawns with a better version of hulk(isnt removed upon crit and can still do stuff while critted) and gigantism mutation by default because ~~Chad Maximus~~ the other pirates require someone to run to when stuff like flashbangs, batons or lasers are present. The warlord spawns with a boarding axe which is a better axe that is good at destroying things and a meat hook. **there's a total of 5 pirates.** the pirate shuttle has: - thermite barrel and 3 large beakers - single weak claymore - 3 extra military spears - 3 kite shields - 3 heavy bolas - 4 regular bolas - a stack of wood - 2 stacks of mourning poultice (15 uses each) - one burn medkit **shuttle was made by striders18, big thanks to him**  things added: - the new pirate gang - a gamberson jumpsuit - crude armor (good melee and wound protection but lacks on the rest) - warlord armor (extreme protection at the cost of slowdown) - a shortsword(bootleg claymore with 30 block chance and goes on belt instead of back) - military spear (better at throwing, better wounding, deals blunt wounds instead of sharp) - axe with better damage and demolition mod for the warlord - a var to specify the name of the landing zone destination for the assaultpod - an assault pod targeting device item for the medieval shuttle - a thermite barrel - kite shields - new hulk variant that doesnt go away when crit and has tenacity ## Why It's Good For The Game I always liked the chaotic nature of the russian bounty hunters that would come from their extra numbers and lack of tools. i thought something of a similar idea on pirates would be good, a very direct and scary militia rushing in with sword and faith would create some awesome scenarios ## Changelog 🆑 add: New heavy weight pirates, medieval warmongers add: Adds military spear, shortsword, boarding axe, kite shields add: Adds warlord and crude armor add: Adds medieval shuttle (made by striders18) /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
ca2ff33292 |
Rocky DLXIII: Fitness to Athletics, Athletics skill influences Boxing against Boxers, Boxing overhaul, Evil Boxing (#82611)
## About The Pull Request ### Changes Fitness skill to Athletics skill; Removes the sprite growth as the only meaningful reward Basically just a rebranding so that it is more broad in its concept. It isn't just about peak physique. It's about how you can apply it too. Reaching Legendary rewards you with the Golden Gloves. ### Boxing Overhaul I started it in this pr here https://github.com/tgstation/tgstation/pull/80635 But this is a more significant overhaul of boxing from the ground up. Namely, it now is majorly influenced by the Athletics skill, and also more thoroughly aligns with conventional punching in its current state. However, a major component of this is that boxing's breadth of mechanics is only relevant when used against another boxer. Non-boxer targets are only ever going to get smacked by a stamina punch, as it is currently (and more or less the same values too). Additionally, boxers cannot punch someone who is either unconscious or in stamina crit, so it can't be used to maintain stamcrit. - Boxing now has a One-Two Punch mechanic. Swapping between the left and right mouse buttons to punch and maintaining this causes every second punch to do more damage (to boxers). Breaking this chain by punching with the same button twice will cause you to lose damage (against boxers). - Boxing now can have crits occur below 50 stamina damage (against boxers). However, to knock someone out clean, the target must be staggered from a previous crit first. (Or I guess be staggered at all, maybe their shoelaces were tied or something). Crit probabilities are determined by adding your Athletics probability skill bonuses to your unarmed effectiveness, and then reduced by the targets own Athletics skill bonuses. It is hard for two athletes to knock each other out in one blow. It is trivial for a legendary boxer to knock out a novice in a single punch. Cybernetically enhanced boxers are dangerously effective at boxing. - Boxers can block other boxers by using throw mode, but the chances of doing so is based on Athletics skill bonuses. A successful block causes the attacker to take stamina damage (as does the blocker, but less so). - Participating in boxing increases the Athletics skill. Your gains are probably slower than normal training, but you at least get some reward for doing so. Only relevant if your opponent is a boxer. Get a sparring partner! ### Evil Boxing (Admin Only) So this is all well and good, but what if you're a scoundrel with no care for the other person in this equation? Well, that's where Evil Boxing comes in. Evil Boxing has absolutely no restrictions at all, and can freely use its boxing abilities against anyone. Even non-boxers. You can even grab people! Wow, what a scumbag. I bet you even king hit people. Thankfully, only an admin can make you into an Evil Boxer. ### Strength and Stimmed Mutations now benefit Exercising and Boxing (against boxers) Both mutations have a flimsy increase to instability of 5 because of how incredibly particular the bonus is. Strength now reduces the amount of stamina damage inflicted via exercising by half. Strength also adds a +2 damage bonus on boxing punches while boxing against boxers (this doesn't influence normal unarmed attacks whatsoever, or boxing against nonboxers). Obviously, evil boxers just get this benefit against everyone because they're knaves. Stimmed increases the duration of the exercised status effect by one factor. (That is, if you have no other modifiers, it will double the duration on its own) ## Why It's Good For The Game @Jacquerel was racking their brain trying to come up with an alternative to the skill rewards of Fitness. At the moment, sprite growth is not only a really bad bonus (it does literally nothing but make you big, and thus is actually a detriment due to how intrusive sprite size is with interaction, and plays weird with other sprite changing effects), but isn't really all that interesting for all the effort put in. Problem is, how do you make Fitness meaningful without making it a powergame mechanic? Simple! You make it applicable to a really niche, self-contained but still utilized game mechanic that is engaging to participate in and makes you meaningfully very good in it. AND scratches that power scaling itch that many players have. Boxing is reasonably self-contained as is, but pretty bland due to how old it is. While maintaining that self-contained nature, I hoped to expand the interactivity of boxing a little bit by giving it a small mini-game in of itself. And also introduce ways to simulate the idea of boxing a bit better. The idea of being an Evil Boxer is funny. For every Rocky, there is a [Insert Rocky Villain Here that isn't Creed]. But in this case, it's probably some Syndicate douchebag looking to punch clowns into a coma and inspire the mime to take up shadowboxing in revenge. ## Changelog 🆑 add: Replaces Fitness with Athletics; same skill, but now more specifically applicable to boxing. add: Athletics does not increase sprite size. balance: Overhauls Boxing to add a lot more depth to the interactions. Only applicable to other boxers, however. You can still punch the snot out of non-boxers though. But only up to stamcrit or unconsciousness. No hitting someone who can't fight back! balance: Adds Evil Boxing, which is the evil and fucked up version of boxing that you kill people with and are allowed to flout the sacred rules of boxing as you please. Everyone is a victim! /🆑 |
||
|
|
931d1f7286 |
Adds anosmia quirk (#82206)
## About The Pull Request Adds anosmia quirk. Anosmia, also known as smell blindness, is the loss of the ability to detect one or more smells. I tried to find all smells action and (most likely) update all of them, unfortunately I can't change descriptions for this quirk. ## Why It's Good For The Game Some characters will be able to not feel smells That affect: * Gases feelings and alerts (CO2, Plasma, miasm) - you don't feel them * Bakery and cooking * Changeling ability to feel other changelings by smell * Some unimportant spans |
||
|
|
9723b4b317 |
Replaces even more deciseconds with SECONDS (#82438)
## About The Pull Request
Using these search regexes:
Ending in 0:
`addtimer\((.*),\s?(\d{1,3})0\b\)`
replacement:
`addtimer($1, $2 SECONDS)`
Two digit ending in odd:
`addtimer\((.*), (\d)([1-9])\)$`
replacement:
`addtimer($1, $2.$3 SECONDS)`
Single digit ending odd:
`addtimer\((.*), ([1-9])\)$`
replacement:
`addtimer($1, 0.$2 SECONDS)`
## Why It's Good For The Game
Code readability
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
|
||
|
|
1ace94c7bb |
Aheal no longer turns monkies in to humans (#82393)
## About The Pull Request Also changes the Make Monkey Admin button to turn you into a monkey with mutations instead of just creating a new being. Closes: https://github.com/tgstation/tgstation/issues/80744 Mabye Closes: https://github.com/tgstation/tgstation/issues/81722 ## Changelog 🆑 fix: aheal no longer turns monkies into humans qol: Player panel "make monkey" turns humans into monkeys through mutation instead of making a new mob /🆑 |
||
|
|
c1f11f26ce |
Converts arbitrary energy units to the joule. Fixes conservation of energy issues relating to charging cells. (#81579)
## About The Pull Request Removes all arbitrary energy and power units in the codebase. Everything is replaced with the joule and watt, with 1 = 1 joule, or 1 watt if you are going to multiply by time. This is a visible change, where all arbitrary energy units you see in the game will get proper prefixed units of energy. With power cells being converted to the joule, charging one joule of a power cell will require one joule of energy. The grid will now store energy, instead of power. When an energy usage is described as using the watt, a power to energy conversion based on the relevant subsystem's timing (usually multiplying by seconds_per_tick or applying power_to_energy()) is needed before adding or removing from the grid. Power usages that are described as the watt is really anything you would scale by time before applying the load. If it's described as a joule, no time conversion is needed. Players will still read the grid as power, having no visible change. Machines that dynamically use power with the use_power() proc will directly drain from the grid (and apc cell if there isn't enough) instead of just tallying it up on the dynamic power usages for the area. This should be more robust at conserving energy as the surplus is updated on the go, preventing charging cells from nothing. APCs no longer consume power for the dynamic power usage channels. APCs will consume power for static power usages. Because static power usages are added up without checking surplus, static power consumption will be applied before any machine processes. This will give a more truthful surplus for dynamic power consumers. APCs will display how much power it is using for charging the cell. APC cell charging applies power in its own channel, which gets added up to the total. This will prevent invisible power usage you see when looking at the power monitoring console. After testing in MetaStation, I found roundstart power consumption to be around 406kW after all APCs get fully charged. During the roundstart APC charge rush, the power consumption can get as high as over 2MW (up to 25kW per roundstart APC charging) as long as there's that much available. Because of the absurd potential power consumption of charging APCs near roundstart, I have changed how APCs decide to charge. APCs will now charge only after all other machines have processed in the machines processing subsystem. This will make sure APC charging won't disrupt machines taking from the grid, and should stop APCs getting their power drained due to others demanding too much power while charging. I have removed the delays for APC charging too, so they start charging immediately whenever there's excess power. It also stops them turning red when a small amount of cell gets drained (airlocks opening and shit during APC charge rush), as they immediately become fully charged (unless too much energy got drained somehow) before changing icon. Engineering SMES now start at 100% charge instead of 75%. I noticed cells were draining earlier than usual after these changes, so I am making them start maxed to try and combat that. These changes will fix all conservation of energy issues relating to charging powercells. ## Why It's Good For The Game Closes #73438 Closes #75789 Closes #80634 Closes #82031 Makes it much easier to interface with the power system in the codebase. It's more intuitive. Removes a bunch of conservation of energy issues, making energy and power much more meaningful. It will help the simulation remain immersive as players won't encounter energy duplication so easily. Arbitrary energy units getting replaced with the joule will also tell people more meaningful information when reading it. APC charging will feel more snappy. ## Changelog 🆑 fix: Fixes conservation of energy issues relating to charging powercells. qol: APCs will display how much power they are using to charge their cell. This is accounted for in the power monitoring console. qol: All arbitrary power cell energy units you see are replaced with prefixed joules. balance: As a consequence of the conservation of energy issues getting fixed, the power consumption for charging cells is now very significant. balance: APCs only use surplus power from the grid after every machine processes when charging, preventing APCs from causing others to discharge while charging. balance: Engineering SMES start at max charge to combat the increased energy loss due to conservation of energy fixes. /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
466b3df048 |
Refactor removing unused defines. (#82115)
## About The Pull Request Refactors a lot of the unused defines. ## Why It's Good For The Game Refactors a lot of the unused defines. ## Changelog Nothing player facing --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
ef714c1c34 |
Overlay Lighting Color/Intensity Pass (#81425)
## About The Pull Request I was looking at screenshots of the game and realized we had a lot of light sources that were really... flat. Medium intensity, not colored at all, cringe. So I went over all the uses of overlay styled lighting (since I've done matrix lighting already) and gave them more unique features. Colors that match the sprite they're used with, intensity to produce vibes, that sort of thing. It's kinda impossible to go one by one cause there's a LOT. I may have gone a bit overboard with a few, I'm messing around with some things like giving bots colors based off their department, etc. We'll see how this all turns out. Oh also I tweaked how the cone of overlay lighting is drawn. It seemed a bit too present to me so I dropped the alpha down from like 200 to 120 at max (so it's roughly half of the mask's alpha so it's less overwhelming ## Why It's Good For The Game Lighting should be impactful, subtle and colorful <details> <summary> Old Lights </summary>           </details> <details> <summary> New Lights </summary>           </details> ## Changelog 🆑 add: Tweaked the saturation, color and intensity of a bunch of lights /🆑 |
||
|
|
855b447c7e |
Rebalances and adds more ambush-style cling abilities, buffs chameleon skin and adds a new ability! "Darkness Adaptation" (#81373)
## About The Pull Request This PR adds a new ambush ability to changelings, "Darkness Adaptation" and tweaks the balance of "Chameleon Skin". The new cling ability, "Darkness Adaptation". makes your character translucent and slightly dark while also giving the ability to see slightly better into dark than normally (30% better). While this ability is active, flash protection is lowered by one. Buffs "Chameleon Skin" by reducing the DNA cost to 1 from 2, and sped up the time it takes to go full invisible by 2.5x and zero instability cost Below is the picture of the translucency through normal non-night-vision vision: (note: this is using extremely dark armor already)  Below is the picture of the translucency through the poor night-vision that the ability gives you:  ## Why It's Good For The Game This ability was added in #11148 back in 2015 and hasn't been touched for 9 years. The original ability just gave you the _extremely_ situational "chameleon skin" mutation (one that is accessible to the crew through genetics already). for a whopping **2 mutation points** cost. The mutation makes you invisible after half a minute or so of standing still and is immediately broken the second you move or get pushed. Compared to other similarly costed powers you get for 2 mutation points, this is by far the worst bang for your buck by a large margin. Needless to say, considering with how power-crept everything else in the game is after all these years. this ability that hasn't been touched for ages have fell into disuse to the point of uselessness, especially with the heavy cost it that came with it. This PR buffs that ability by making it cheaper, in line with the cost of other less powerful abilities that clings have. and made it 2.5x faster to turn invisible. The PR also adds another ambush-oriented ability, "Darkness adaptation". The ability allows your character to become translucent and slightly dark while also giving the ability to see slightly better into dark than normally (30% better); with the downside of your eyes being slightly worse than before. This ability follows the general spirit of clings, an stealth-generalist oriented antag that you never know when they would strike (disguises already have this effect, but them being far more able to jump you in maint even more so.). and encourages more creative strategy than just your average murderbone. A Perfect force multiplier for maint combat and maint ambushes. Also synergises well with augmented sight, and the blackish cling armor. Don't worry if you think the new ability, combined with the faster cham skin would make you invisible to the naked eye. The mutation cancels out the translucency of the adaptation. ## Changelog 🆑 add: Adds a new changeling ability, "Darkness Adaptation". Making you more translucent, especially in darkness and allowing you to see slightly better in the dark balance: The changeling power "Chameleon Skin" has been buffed, Reduces the cost to 1 and sped up the time it takes to turn invisible /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
a87932c704 |
Fixes hars nullspacing da brain (#80400)
Fixes #80399 This was still old organ code, I updated gain but not loss. 🆑 fix: Fixes losing HARS nullspacing your brain /🆑 |
||
|
|
3a1496bb18 |
[NO GBP] Fixes a mistake with mutation cleanup (#80242)
## About The Pull Request Fixes https://github.com/tgstation/tgstation/issues/80199 `on_lose()` tends to call the parent first, where the `qdel(src)` was happening. The issue with that: it returns from the parent call, and now due to being qdeled the `owner` is set to `null`. Certain mutations try to access owner to do various things post-removal, cue the runtimes... --- I just moved the mutation qdeletion out of the proc and into `force_lose()` instead. There are only two other places where `on_lose()` gets called, one of which is for unstable mutations and it already immediately qdels the mutation afterwards. The other is when hulks get put into crit. I added a qdel to the latter. This should ensure that mutations always get deleted after removal (but without breaking anything this time). Also renamed some abbreviated vars. Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/25543 ## Why It's Good For The Game Fixes a bug that I accidentally introduced. ## Changelog 🆑 fix: fixes a bug which was causing certain mutations to only get partially removed /🆑 |
||
|
|
54ab1e3936 |
Organ movement refactor *Un-nullspaces your organs* (#79687)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> closes #53931, #70916, #53931 ## About The Pull Request Organs were previously stored in nullspace. Now they are stored in their prospective bodyparts. Bodyparts are now stored in the mob. I've also had to refactor a lot of code concerning organ movement. Previously, organs were only moved into bodyparts once the bodyparts were removed. To accomodate this change, two major distinctions have been made: **Bodypart removal/insertion** Called only when an organ is taken out of a bodypart. Bodypart overlays, damage modifiers or other changes that should affect a bodypart itself goes here. **Mob insertion/removal** Called when an organ is removed from a mob. This can either be directly, by taking the organ out of a mob, or by removing the bodypart that contains the organ. This lets you add and remove organ effects safely without having to worry about the bodypart. Now that we controle the movement of bodyparts and organs, we can fuck around with them more. Summoning someones head or chest or heart will actually kill them now (and quite violently I must say (chest summoning gibs lol)). https://github.com/tgstation/tgstation/assets/7501474/5efc9dd3-cfd5-4ce4-b70f-d0d74894626e I´ve also added a unit test that violently tears apart and reconstructs a person in different ways to see if they get put toghether the right way This will definitely need a testmerge. I've done a lot of testing to make sure interactions work, but more niche stuff or my own incompetence can always slip through. ## Why It's Good For The Game <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> A lot of organ work is quite restricted. You can't C4 someones heart, you cant summon their organs and a lot of exceptions have to be made to keep organs in nullspace. This lets organs (and bodyparts) play more nicely with the rest of the game. This also makes it a lot easier to move away from extorgans since a lot of their unique movement code has been removed and or generalized. I don't like making PRs of this size (I'm so sorry reviewers), but I was in a unique position to replace the entire system in a way I couldn't have done conveniently in multiple PRs ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 refactor: Your organs are now inside your body. Please report any issues with bodypart and organ movement, including exotic organ, on github and scream at me fix: Cases of unexpected organ movement, such as teleporting bodyparts and organs with spells, now invokes a proper reaction (usually violent death) runtime: Fixes HARS runtiming on activation/deactivation fix: Fixes lag when species swapping /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> |
||
|
|
71a1fee2f1 |
Explodes device.dmi (#80025)
## About The Pull Request I woke up today and thought 'what would be easy thing to do today so I can say I've done something?'. Then I remembered I saw several gangtool usages the time I split radio up, and I could remedy those. 7 hours later, device.dmi is split in a folder of its own, and I've also given unique sprites to door remotes and landing desginators. ## Why It's Good For The Game The device.dmi was kind of a mess. ## Changelog 🆑 /🆑 |
||
|
|
3294d7bb2d |
Makes mutations clean up after themselves (#80107)
## About The Pull Request They weren't doing this before. This was an issue because they hold refs to a `mob/living/carbon/owner` as well as a `datum/dna`, making it a potential source of hard dels. As far as I can tell, I do not see this causing any issues as `remove_mutation(mutation)` takes a type path as an arg rather than a reference, same thing with `get_mutation(mutation)`. I couldn't find any examples of a reference to a mutation being reused by anything after being removed. --- When I was investigating potential reasons for why it might have been like this I found more problem code. Timed dna injectors were setting `target` to the return value of `add_mutation()`/`remove_mutation()` which is a bool. This made no sense and would cause runtimes as well as mislead people into thinking that the return value of those procs was a `mob/living/carbon`. ## Why It's Good For The Game Fixes an oversight, and headache further down the line. ## Changelog 🆑 fix: fixed mutations holding onto refs after removal fix: fixes timed dna injectors /🆑 |
||
|
|
376781879c |
Different pen types have unique behavior when used in foam darts. (#79587)
## About The Pull Request This PR makes the following changes: - Refactors inserting items into foam darts into a component on items that can be inserted into darts - Adds the aforementioned component to pens - Provides an inspection tip for how to modify a foam dart - Gives different pen types specific behavior when used in a foam dart Pens typically give a foam dart 5 brute and 50% embed chance (affected by falloff). The following types of pens give the specified properties (usually directly derived from the pen's stats and additional functions): - Red pen (and four-color pen set to red): Slightly faster dart - Captain's fountain pen: Slightly faster dart, and 75% base embed chance - Sleepypen: Tries to inject its reagents into the hit mob, but doesn't penetrate thick clothing like syringe guns do - Energy Dagger: 35 brute, 100% base embed chance, and slightly faster dart - Survival Pen: Mines rocks on impact - Fine Tip Pen (if someone somehow manages to get one): 100 bare wound bonus and 9000 demolition modifier ## Why It's Good For The Game Expands the emergent gameplay possibilities of using pens in foam darts. While there are balance risks involved with traitors being able to buy the equivalent of reusable 45u syringe shots and 35 brute bullets, you are not likely to get your pen back once it hits its target, unless you somehow have the recall spell and have bound the pen to it. There are probably more TC-efficient ways to achieve comparable projectile weaponry, but foam dart guns have an air of subtlety to them... at least until your skin is pierced by a pointy writing implement that may also be something more deadly. If maintainers still have balance concerns, please let me know. ## Changelog 🆑 add: Certain types of pens now function like you expect they would when inserted into a foam dart qol: Examining a foam dart closely will show you how to modify it, or what it is modified with /🆑 |
||
|
|
f4535255c0 |
Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)
## About The Pull Request Third /icon/ cleansing splinter 1. Comments on commits say all it does pretty much.  ## Why It's Good For The Game Inhand for walkietalkie was requested in the project, gets rid of some usecases of old 'gangtool', headset splitoff requested by Fazzie. Inhands reflecting the items they are supposed to represent is nice. ## Changelog 🆑 image: Following now have unique item sprites: syndicate war declaration radio, curator and chief beacon's, chaplain beacon. image: Following now have unique inhand sprites: radio, export scanner, walkie-talkie, syndicate war declaration radio, curator and chief beacon's, chaplain beacon. /🆑 |
||
|
|
f77d9a7270 |
Fixes a race condition in mutations code (#79829)
## About The Pull Request One of the timers has a callback to the `modify()` proc which also doesn't check whether the mutation owner has been deleted since the timer began, potentially resulting in a runtime.  ## Why It's Good For The Game Fixes bugs ## Changelog 🆑 fix: fixed a race condition with mutations /🆑 |
||
|
|
130b3dfa64 |
Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)
## About The Pull Request More code improvements for reagent holder. As you can see it removes a lot more code than it adds so code savings are significant. This does not touch on any floating point arithmetic, all that is behind us, this focuses on removing redundant procs and merging existing procs to achieve the same functionality so if you do see any changes in reagent related behaviour it's not intentional and should be reported as a bug here. The following code changes can be summarized into points. **1. Removes procs `get_master_reagent_id()` & `get_master_reagent_name()`** Both of these procs have the exact same functionality as `get_master_reagent()` with the only exception of returning a different value. Instead we can just call `get_master_reagent()` directly and infer the name & type of it ourselves rather than creating a wrapper proc to do it for us, therefore reducing overall code **2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`** The proc `remove_all_type()` is highly inefficient, it first uses a for loop to look for the reagent to remove & then it again calls `remove_reagent()` on the reagent once it has found it. We can just embed this functionality directly into `remove_reagent()` by simply adding an additional parameter `include_subtypes`. This way the operation is faster, and we reduce the code to get the job done. Also now `remove_reagent()` will return the total volume of reagents removed rather that a simple TRUE/FALSE **3. Removes & Merges `trans_id_to()` proc into `trans_to()`** Both these procs have the same job of transferring either a single reagent or all reagents. `trans_id_to()` is a scaled down version of `trans_to()` because - It does not have any `method` var. This means if you want to transfer a single reagent to a mob/organ or any other object it does not have the functionality to expose the target to that transferred reagent. - It does not have a `multiplier` var to scale reagent volumes - It does not have code to deal with organs or stop reactions i.e. it does not have the `no_react` var. We can overcome all these short comings by simply adding an extra var `target_id` to specify what specific reagent to transfer therefore attaining the same functionality while keeping the benefits of `trans_to()` proc therefore reducing overall code **4. Lowers plumbing reaction chamber tick usage for balancing ph.** Rather than invoking a while loop to balance ph it's much easier for the player to simply make the reaction chamber wait for e.g. add a reagent that will never come. This will make the chamber wait therefore giving the reaction chamber ample time to correctly balance the ph and then remove that reagent from the list therefore getting correct ph levels. No need to create code hacks when the player can do it themselves so the while loop has been removed ## Changelog 🆑 code: removed redundant procs `get_master_reagent_id()` & `get_master_reagent_name()` code: merged `remove_all_type()` proc with `remove_reagent()` now this proc can perform both functions. `remove_reagent()` now returns the total volume of reagents removed rather than a simple TRUE/FALSE. code: merged `trans_id_to()` proc with `trans_to()` now this proc can perform both functions refactor: plumbing reaction chamber will now use only a single tick to balance ph of a solution making it less efficient but more faster. Just make the reaction chamber wait for longer periods of time to accurately balance ph refactor: reagent holder code has been condensed. Report any bugs on GitHub /🆑 |
||
|
|
15e2aa056d |
[NO GBP]Fixes tesla zaps. (#79398)
## About The Pull Request Closes #79297 Closes #79312 Due to the new cutoff parameter being added to tesla_zap() (from #78310), and most callers used positional arguments instead of keywords, the zap flags was getting fed the shocked_targets list and maybe other junk. This caused a bunch of unusual phenomena. This is fixed by using keyword arguments. Tesla zaps that use the grid were significantly weaker in terms of damage than they're supposed to be. This was a byproduct of trying to convert everything to joules and removing unnecessary power multipliers. This is fixed by reverting the damage scaling and zap power of zap sources that aren't based on grid. Technically this will cause the zaps from other sources to have less power, but these tend to not be able to put power on grid, so this wouldn't have any change other than what a grounding rod displays. Doesn't really matter. Logs machine explosions from zap_act. Not the most helpful log (would take a lot of effort to add an extra parameter to pass the source), but better than nothing. Probably other stuff I did, lol. ## Why It's Good For The Game Stops zap fuckery. Admins can now find the explosions when a 9GeV engine decides to go haywire or whatever. ## Changelog 🆑 fix: Fixes tesla zaps being weird. admin: Logs explosions from explosive zaps. /🆑 |
||
|
|
dcedf89c70 |
Fixes being able to punch yourself (#79033)
## About The Pull Request Fixes #79031 Fixes #79042 I forgot some logic here when making the human override. Not the cleanest way to do it but it'll suffice. ## Changelog 🆑 Melbert fix: You can punch yourself again /🆑 |
||
|
|
9664d24c13 |
Refactors UnarmedAttack so we don't have like 4 Unarmed Attack signals, kills two more snowflake species procs (#78991)
## About The Pull Request - Deletes `spec_unarmedattack` - Deletes `spec_unarmedattacked` - Replaces `COMSIG_HUMAN_EARLY_UNARMED_ATTACK` with `COMSIG_LIVING_EARLY_UNARMED_ATTACK` - Replaces uses of `COMSIG_HUMAN_MELEE_UNARMED_ATTACK` with `COMSIG_LIVING_EARLY_UNARMED_ATTACK` - Fixes(?)(I've never seen this work) / Elementizes Monkey ability to bite while handcuffed - Monkey clever `attack paw` / `attack hand` thing is now handled the same on the human level (via `resolve_unarmed_attack`) ## Why It's Good For The Game Atomized from swing branch. I was really annoyed with these two signals, this kinda unifies the behavior between living and human mobs (they were already quite similar). One thing of note is that this will make dis-coordinated humans use `attack_paw` rather than `attack_hand`, so they'll bite people instead of punching them. I'm not sure if this is what we want, if we wanna tweak that before then I can by all means. ## Changelog 🆑 Melbert refactor: Refactored unarmed attacking mechanisms, this means dis-coordinated humans will now bite people like monkeys (like how coordinated monkeys punch people like humans?) refactor: Dis-coordinated humans smashing up machines now use their hands, rather than their paws /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
58d929461d |
Fixes an issue w/ antiglow. (#78865)
## About The Pull Request Antiglow's ``glow`` var used to be how strong it would glow, but it was renamed to ``glow_power`` when ``/obj/effect/dummy/lighting_obj/moblight`` got added to it, which took its previous name of ``glow``. Antiglow was never updated for this, so they set the moblight as -1.5, which is supposed to be its strength. I also removed some unused defines dw about that ## Why It's Good For The Game Fixes an unintentional change that maybe breaks something idk. ## Changelog 🆑 fix: Antiglow now probably has negative glow power. /🆑 |
||
|
|
d6f79f4427 |
Refactor gib code to use bitflags and have documentation (#78754)
## About The Pull Request This takes all the gib related procs: - `gib()` - `spawn_gibs()` - `spill_organs()` - `spread_bodyparts()` And adds heavy documentation that communicates what the procs are used for and how the different bitflags affect them. The difference is noticeable: `gib(TRUE, FALSE, FALSE, null)` vs `gib(DROP_ORGANS|DROP_BODYPARTS)` The code is now much more legible which is important considering it's used in a lot of places! Another robust change, is that we had several places in the code where there were double negatives like so: ``` /mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts) if(!no_bodyparts) // DOUBLE NEGATIVES ARE BAD M'KAY?!? // do stuff here ``` This is a mindfuck to untangle. I inverted a lot of these parts so we don't lose our sanity. Last thing that was changed was a big `if()` loop in the `spill_organ()` proc. This was refactored to just be a simple `for` loop with `continue` statements where we needed to skip enabled bitflags. It's now shorter and cleaner than before. The only slight gameplay change this affects is that gibbing a mob now guarantees to drop all items unless the `DROP_ITEMS` bitflag is deliberately omitted. Some places like admin gib self, we don't want this to happen. ## Why It's Good For The Game Gib code is very old. (~15 years) People kept adding more arguments to the procs when it should have been a bitflag initially. By doing it this way, there is more flexibility and readability when it comes to adding new code in the future. ## Changelog 🆑 refactor: Refactor gib code to be more robust. qol: Gibbing a mob will result in all items being dropped instead of getting deleted. There are a few exceptions (like admin gib self) where this will not take place. /🆑 |
||
|
|
9e1c71f794 |
Reworks transformation sting to be temporarily in living mobs, forever in dead mobs (#78502)
## About The Pull Request
- Reworks transformation sting.
- Transformation sting is now temporary, lasting 8 minutes (number not
final) in humans.
- If used on a monkey, it lasts forever instead.
- While the target mob is dead or in stasis, the duration will not
progress, making it functionally infinite until revived and taken off
stasis, where it will resume its timer where it left off.
- Chemical cost reduced to 33
- DNA cost reduced to 2
- Removes TRAIT_NO_TRANSFORMATION_STING, instead just checks for
TRAIT_NO_DNA_COPY
- These were essentially the same traits, so I just combined the two
- Organizes some trait lists alphabetically
- Adds TRAIT_STASIS, to allow for reacting to mobs entering and exiting
stasis via COMSIGS
- Everything that checks IS_IN_STASIS now checks HAS_TRAIT TRAIT_STASIS,
which is probably more performant, so that's a bonus.
## Why It's Good For The Game
A lot of people don't like the current iteration of Transformation
Sting, me included
Right now it's only use is for a meme - you make the entire station into
felinids until you get lynched, and that's it.
It's not really a healthy ability for ling's current kit, so this pr
attempts to soft rework it to make it a bit more in line with how ling
should be acting - turning it into a source of short term confusion
between people, or using it on a body to cover your tracks.
This accomplish it two fold - One, it is now cheap enough to use twice
in rapid succession, allowing for quick on-the-spot "BE CONFUSED"
situations while you abscond. Two, as mentioned in the last paragraph,
you can poke a body of someone you murder to obfuscate the crime scene
and maybe help out in taking over someone's identity.
## Changelog
🆑 Melbert
balance: Transformation sting now lasts 8 minutes, down from permanent.
However, the effect is paused for dead and stasis mobs, making it
permanent SO LONG AS they stay dead or in stasis. The effect is also
permanent if used on a monkey.
balance: Transformation sting now costs 33 chemicals, down from 50.
balance: Transformation sting now costs 2 dna points, down from 3.
fix: Transformation sting works on monkeys again.
refactor: Refactored a bit of human randomization.
/🆑
|
||
|
|
f861532d24 | Basic Legion & Hivelord (#78624) | ||
|
|
64cbbdbf2c |
[NO GBP]Zap strength is now measured in joules. NT CIMs will now display the power transmission from the zaps, accounting for every factor. (#78310)
## About The Pull Request Zap strength is now measured in joules. Scales everything to account for this. NT CIMS will now display the zap power transmission in watts, instead of a modifier. This will allow you to actually see how much power the supermatter is generating accurately, without knowledge of hidden multipliers. NT CIMs will also show the internal energy gain from heat in eV/K/s, so you can easily figure out how internal energy gain works, and how much energy gain it actually gives. The internal energy measurement will also adjust its prefix. Internal energy is now a measure of internal energy, rather than internal energy density, removing the "/cm^3". Here is what it looked like:  This image was created on an earlier commit where the numbers were wrong due to a hidden multiplier that got removed later, so keep that in mind. Also fixes inactive supermatters unnecessarily scaling delta time. The high energy (>5GeV) additional zaps now also scale with delta time. The code in this PR is absolute garbage trash and there are some major issues, so I'm drafting this for now. ## Why It's Good For The Game Makes it more clear what the factors add, and also how much power the SM is releasing. Zap strength being measured in joules will simplify a lot of things, making power balance more clear rather than guessimating. Adjusting the prefix for internal energy is just the natural thing to do. The per cubic centimeter part of internal energy would imply it is energy density, however it is functionally not. It would probably confuse people thinking the volume of the turf or the size of the supermatter actually matters for what the internal energy does, when it does not (except for gas absorption I guess, which changes heating/mol requirements, but nothing else), so I am removing that part. ## Changelog 🆑 qol: NT CIMs shows how much power the supermatter is releasing. qol: NT CIMs internal energy will adjust its prefix. qol: Energy displays (such as multitooling grid) will use the full range of SI prefixes available, up to the peta prefix if you somehow managed to reach that. del: Removes the per cubic centimeter part of internal energy. fix: Fix unnecessary delta time scaling on inactive supermatters. fix: Fix high energy zaps not scaling with delta time. fix: Fixes grounding rods lying about potential power you can generate. code: Convert supermatter_zap() and tesla_zap() zap_str argument unit to be in joules, and scales everything that uses that argument. /🆑 |