mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 03:59:59 +01:00
docker-build
113
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
9b282a850e | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
d2f34e33be |
moves abstract_type up to datum, spawners wont spawn them (#92909)
## About The Pull Request moves all implementations (im aware of) for "Im a parent type dont spawn me please" to the datum layer to standardized behavior adds a standerized proc for filtering out "bad" items that we dont want spawning. applies to it the subtype vendor, gifts, and a new spawner and mystery box for a random gun (neither playerfacing) "port" of https://github.com/shiptest-ss13/Shiptest/pull/4621 https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa small warning: I dont have EVERY abstract type defined right now but, ive done a good enough job for now. Im tired of data entry rn ## Why It's Good For The Game standardizing behavior. Might be a micro hit to performance however having this lets us not rely on icon state to determine whether something is a parent type and makes it much easier to tell something is a parent type (could be applied further to things like admin spawning menus and things like that). need feedback on if this is actually good for the game. ## Changelog 🆑 add: Soda cans show up in the silver slime drink table. add: Examine tag for items that are not mean to show up ingame. refactor: Standardizes how gifts rule out abstract types. fix: gifts no longer check if something has an inhand, massively expanding the list of potential items. /🆑 |
||
|
|
26527f85e7 |
Da blobmob update! Indepedent strains, new sprites, egglike spores, fixes, sounds and buffs! #Cytology2025 (#91368)
This PR makes a number of changes focusing on improving the blob minions, spores, nauts, zombies and their associated component. The blob spore, blob zombie and blobbernaut has been resprited. The spore and zombie have been lightly touched to preserve the most of the original characteristics while given a cleaner look. The spore and zombie have a partially desaturated version used to let more of the strain colour through instead of them all ending up dark brown. The blobbernaut has been reshaded and the side sprite has been made coherent with the front state, I made decided how the front state was shaded should be the "canon" one (this might be a bit controversial but the wild inconsistency was bugging me.) The blobbernaut is a bit less veiny, but the veins look more natural and use the strain complementary colour. Many combinations are cool, some are a bit lacking due to the weird choices of complementary colour.   Blob mobs can now have strains independently of an overmind. The 15% mutation chance of vat grown creatures causes a spore or blobbernaut to get a random strain. When I first added the blob spore cell line, ghosts could click on cyto blob spores to posses them, they would then presumably(?) but not explicitly be free antags. This ability was lost when the blob spore code was modernised. Very few people knew about this, and no one grew blob spores anyway. This feature is coming back in a big way, vat grown blob spores present a new unique job hazard, they are automatically offered to ghost as an extremely shitty, but free antag. I have tested spawning like 15 antag pre-buff blob spores in a live round and they failed completely to antagonise the crew effectively, hopefully these buffed spores won't present too much of an issue to our great administration team, if that ends up being the case, there are many levers to pull to tone them down. Blob spores prior to this PR were almost completely useless. The main cause of this was the extremely dilute reagent smoke reaction; 10u divided over 20 seconds. This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely negligible and useless amount. The smoke reagent concentration has been massively increased(10u -> 40u) and the smoke duration has been reduced(20s -> 8s). The result of this is that blob spore clouds are something you want to avoid standing in, but they provide less smoke cover for the blob and nauts. Blob spores have also gained the ability to vent crawl. Simple mobs that can't either open doors or vent crawl feel super bad to play. They also deal a little more melee damage, but this is still pathetically low on account of their low attack speed. I have adjusted their supplementary reagents and reduced the amounts of spores produced per cycle(2 -> 1) to make them a bit harder to mass produce. I have not made this PR with the goal of buffing any particular strain, but some changes have affected blob strain balance: This was the only strain that was strongly mechanically tied to the core. In order to allow for independent debris devourer mobs, they can now eat trash(or any item really), they are independent, they store these items inside their mob, and use these for the debris devourer reactions. If they have an overmind, the item gets sent to the core. This should result in a nice buff to the strain, which I've been told is one of the bad ones. 5 years back another contributor removed the ability of blobs and blobbernauts to transfer reagents with their attacks(as their expose method is vapour). This was a completely undocumented change and possibly unintentional, so I am reverting it by giving blob reagents penetrates_skin = VAPOR again. This only really affects these two strains. It makes regenerative materia much stronger, while barely having any effect on cryogenic poison, because temperature normalisation changes has made it completely ineffective even with much more reagent applied. The spore reagent cloud buff might also give a boost to some strains with good expose effects, like electromagnetic web. Blob spores now drop spore sacks, they can be ground for spore toxin, or cracked on a griddle to create an egg-like treat! I also added a detoxification reaction to reduce the amount of toxin when cooked, might not work yet because I think griddles may not actually heat the food? Blob spores bursting and blobbernauts dying have sound effects. level 5 biohazard 🆑 image: blob mobs have been respectfully resprited. add: vat grown blob mobs can sometimes get born with a blob strain. add: blob spores drop spore sacks, crack them on the griddle. add: debris devourer mobs can now eat trash, sending it to the core, if there is one. add: vat grown blob spores are now sentient and evil. balance: blob spores now have much more concentrated smoke. balance: blob spores can ventcrawl. fix: regenerative materia and cryogenic poison strain blob tiles & nauts now inject chems again. sound: blob spores & blobbernaut now have death sound effects. /🆑 |
||
|
|
c5f1b7f8c3 |
Da blobmob update! Indepedent strains, new sprites, egglike spores, fixes, sounds and buffs! #Cytology2025 (#91368)
## About The Pull Request This PR makes a number of changes focusing on improving the blob minions, spores, nauts, zombies and their associated component. ## New sprites The blob spore, blob zombie and blobbernaut has been resprited. The spore and zombie have been lightly touched to preserve the most of the original characteristics while given a cleaner look. The spore and zombie have a partially desaturated version used to let more of the strain colour through instead of them all ending up dark brown. The blobbernaut has been reshaded and the side sprite has been made coherent with the front state, I made decided how the front state was shaded should be the "canon" one (this might be a bit controversial but the wild inconsistency was bugging me.) The blobbernaut is a bit less veiny, but the veins look more natural and use the strain complementary colour. Many combinations are cool, some are a bit lacking due to the weird choices of complementary colour.   ## New Cytology Related Features Blob mobs can now have strains independently of an overmind. The 15% mutation chance of vat grown creatures causes a spore or blobbernaut to get a random strain. When I first added the blob spore cell line, ghosts could click on cyto blob spores to posses them, they would then presumably(?) but not explicitly be free antags. This ability was lost when the blob spore code was modernised. Very few people knew about this, and no one grew blob spores anyway. This feature is coming back in a big way, vat grown blob spores present a new unique job hazard, they are automatically offered to ghost as an extremely shitty, but free antag. I have tested spawning like 15 antag pre-buff blob spores in a live round and they failed completely to antagonise the crew effectively, hopefully these buffed spores won't present too much of an issue to our great administration team, if that ends up being the case, there are many levers to pull to tone them down. ## Blob Spore Buffs Blob spores prior to this PR were almost completely useless. The main cause of this was the extremely dilute reagent smoke reaction; 10u divided over 20 seconds. This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely negligible and useless amount. The smoke reagent concentration has been massively increased(10u -> 40u) and the smoke duration has been reduced(20s -> 8s). The result of this is that blob spore clouds are something you want to avoid standing in, but they provide less smoke cover for the blob and nauts. Blob spores have also gained the ability to vent crawl. Simple mobs that can't either open doors or vent crawl feel super bad to play. They also deal a little more melee damage, but this is still pathetically low on account of their low attack speed. I have adjusted their supplementary reagents and reduced the amounts of spores produced per cycle(2 -> 1) to make them a bit harder to mass produce. ## Blob Strain Buffs I have not made this PR with the goal of buffing any particular strain, but some changes have affected blob strain balance: ### Debris Devourer This was the only strain that was strongly mechanically tied to the core. In order to allow for independent debris devourer mobs, they can now eat trash(or any item really), they are independent, they store these items inside their mob, and use these for the debris devourer reactions. If they have an overmind, the item gets sent to the core. This should result in a nice buff to the strain, which I've been told is one of the bad ones. ### Regenerative Materia & Cryogenic Poison 5 years back another contributor removed the ability of blobs and blobbernauts to transfer reagents with their attacks(as their expose method is vapour). This was a completely undocumented change and possibly unintentional, so I am reverting it by giving blob reagents penetrates_skin = VAPOR again. This only really affects these two strains. It makes regenerative materia much stronger, while barely having any effect on cryogenic poison, because temperature normalisation changes has made it completely ineffective even with much more reagent applied. ### Electromagnetic Web The spore reagent cloud buff might also give a boost to some strains with good expose effects, like electromagnetic web. ## Blob Cooking Blob spores now drop spore sacks, they can be ground for spore toxin, or cracked on a griddle to create an egg-like treat! I also added a detoxification reaction to reduce the amount of toxin when cooked, might not work yet because I think griddles may not actually heat the food? ## Sound Effects Blob spores bursting and blobbernauts dying have sound effects. ## Why It's Good For The Game level 5 biohazard ## Changelog 🆑 image: blob mobs have been respectfully resprited. add: vat grown blob mobs can sometimes get born with a blob strain. add: blob spores drop spore sacks, crack them on the griddle. add: debris devourer mobs can now eat trash, sending it to the core, if there is one. add: vat grown blob spores are now sentient and evil. balance: blob spores now have much more concentrated smoke. balance: blob spores can ventcrawl. fix: regenerative materia and cryogenic poison strain blob tiles & nauts now inject chems again. sound: blob spores & blobbernaut now have death sound effects. /🆑 |
||
|
|
690bfc04b4 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
This is a big one so please bear with me, wounds are complicated We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
57624ca1e2 |
Rebalances wound determination values, wounding escalation and wound armor to hopefully be less explosive (#91099)
## About The Pull Request This is a big one so please bear with me, wounds are complicated ### Max Potential Wound Rolls We've decreased the max contributed damage to wound rolls from 35 to 25. This results, after the exponent, a max possible wound roll of 1 to 91 before any modifiers (assuming the attack, after armor, is 25 or above). The minimum value to wound is still 5. ### Wound Escalation Penalties Most wounds were contributing significant numbers per wound type to the potential for a new wound to occur. Getting wounded once meant you were getting wound a lot, but actually getting past that first wounding may be the tricky part. We have significantly reigned in the wound penalty that having a wound contributes, and instead utilize the series wound penalty to allow same type wounds to escalate themselves faster as a priority. Having wounds still makes you more wound vulnerable, just not to such an extreme degree. The priority here for what wounds matter most for contributing to overall wounding vulnerability is ``Infected BURNS > BURNS > SLASH|PIERCE > BLUNT.`` ### Wound Armor Wound armor, unlike all other kinds of armor, was used as a additive value to the wound roll modifiers rather than a multiplicative value. We have reworked how wound armor is determined by changing how wound modifiers are calculated. Firstly, we're passing our entire injury roll into the ``check_woundings_mod()`` proc, as we're not treating this as a proc that just adds values anymore. Secondly, bare wound bonus only applies if there is no potential wound protection from any source, as expected. But it comes last in the calculations. Thirdly, wound protection is applied to the injury roll last, after wound bonuses from the attack, wound bonuses from other wounds and wound bonuses from a disabled limb are applied. This does not include serial wound bonuses, which are determined outside of this proc. Wound protection comes from two sources. Clothing and limb wound resistance. Your chest and head have an amount of wound resistance so long as they are not mangled in any fashion. Being mangled means having either a hairline fracture or a weeping avulsion wound. Wound protection reduces the final injury roll by a percentage. Say our roll is 50, and we have effectively 50% wound protection. The final roll would be 25. ### ~~Wound Armor on Clothing~~ Reverted ~~Most clothing have had their wound armor values changed. As a loose rule, I used the highest of melee or bomb armor, except where that value was 100, in which case I used the lowest instead. I'm basing this decision on how embeds are calculated, which is attack type agnostic.~~ ~~Some armor have inconsistent values because they are alternative armors to an existing armor type or are hyperspecialized armor. Ablative, bulletproof and security vests all share a value of 35, despite the former two not having decent melee or bomb armor.~~ ~~Some clothing missing wound armor that should have had them now have wound armor.~~ ~~This may need a bit of scrutiny in case one or two seem weirdly high. Some have maybe become too low. Its a bit hard to say.~~ ### The ``bare_wound_bonus`` variable I changed it to ``exposed_wound_bonus`` to better represent when it applies. You can be naked and still not be affected by this bonus if the limb has wound resistance. ## Why It's Good For The Game I'm not promising anything with this PR, but this is an attempt to sanity check the values on wounds so that we're not seeing what the data that determined the removal of beheading presented. An extreme over-representation of tier 3 wounds. ~~And, from that, maybe I can argue for beheadings coming back. That's my goal. I think beheadings happened so much because the numbers were in need of work.~~ Well okay I just wanna make wounds a bit more workable actually more than I want beheadings. Why is it that tier 3 wounds were so over-represented? Because wounds will often force more severe wounds of other types by merit of any wounds existing at all on a limb. Having **_a_** wound makes you more wound prone for any kind of wound, and not just making you more likely to suffer a more severe type of the same wound. The threshold mechanic was intended to simulate making a wound worse, but oddly just made a limb broadly more prone to getting worse from any kind of attack to such a degree that future wound rolls of different types were often going to start at the threshold necessary to be a tier 3 wound. Dismemberment, mind you, requires you to suffer a flesh wound while you have a bone wound of tier 2 or higher (with tier 3 giving a bonus to this). You can do this readily via just a sharp weapon, because having a mangled limb causes the wound to turn into a bone wound. Technically, this is meant to be less likely as the effective damage for this wound is halved. But the wound bonus from having a flesh wound was almost always significant enough to kick your new bone wound up to a tier 3. In other words; its not surprising that you saw so many beheadings, because the system wanted to behead you as fast as it possibly can thanks to all these escalating values. Wound armor was only applied as a flat reduction on the roll. The average for wound armor was 10. After receiving a single wound, you can expect wound rolls to reach upwards of 100, even if the actual damage roll was not particularly high, due to wound stacking bonuses form being wounded. This meant that wounds, if they happened, came thick and fast after the first, regardless of what your protection might be to wounds. It was just a matter of getting past the initial bump. This is why effects that forced wounds were so powerful. They basically made a given limb more prone to taking a wound without having to deal with the protection problem first. Finally, this is just a broad flaw with the system that is not its fault. It is actually a problem that isn't a problem. Most people in the game are not wearing helmets that protect their head. So most people are going to suffer from a higher proclivity of being wounded if people are aiming for the head. There is this...kind of cargo cult belief that aiming for the head means you do more damage, or can stun someone if you're lucky or what have you. It's entirely nonsense, but it has a grain of truth in that people rarely wear, or even have access too, headwear that provides wound protection or any protection at all. People have jumpsuits, which are universally wound protected, but that isn't true of the head. Look, the point is, they're not aiming at the head because it is usually less armored, its for other reasons but it just so happens to become true due to wounds and how wounds roll their type. To soften this issue, I've decided to treat wound resistance as armor until the limb suffers a tier 3 wound. This way, hits to the head MAY not necessarily escalate to tier 3 instantly as they would on live even from relatively low power weapons. Some weapons have very low force, but have extreme bare wound bonuses. This should be less likely after this change. I doubt this will necessarily make high damage high wound weapons like energy swords any less prone to cutting you clean open, but it might thanks to the reduction to contributed damage to the injury roll. The system is now _a bit more random_. ## Changelog 🆑 balance: Wounds do not make you as vulnerable to suffering wounds of all types as before. Instead, wounds make you more vulnerable to suffering worse versions of themselves as a priority. balance: Wound armor is now more impactful when protecting you from wounds when you have already been wounded. balance: Your head and chest are more difficult to wound until they have been mangled; either from suffering from a weeping avulsion or a hairline fracture. code: Changed the variable for bare_wound_bonus to exposed_wound_bonus to better explain what that variable is doing. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
c57341f771 |
Most fleshy mobs are vulnerable to stamina and stuns (#90675)
## About The Pull Request This PR enables most mobs to take stamina damage, become slowed as a result of taking stamina damage. It also gives most mobs CANSTUN which not only allows them to enter stamcrit from taking stamina damage but also makes them vulnerable to mechanics like stun batons. Mobs which already took stamina damage (Spiders and Space Dragons) still work the same way. Mechanical or artificial mobs, mining mobs, simple xenomorphs, ghosts, and most kinds of mob closely associated with antagonists still don't take stamina damage. ## Why It's Good For The Game A new player armed with a disabler will probably try and use it on aggressive animals and be disappointed, but I don't think there is any _reason_ for them to be disappointed when it's already something they are doing merely to delay being attacked rather than to kill the target. It's not intuitive for these mechanics not to function against simple mobs when they do against humans, _especially_ the kinds of mobs which look like humans, and there isn't any technical reason why it _couldn't_ work against most mobs which it looks like they should work against. While this reduces the threat level of some mobs against Security players I think the greater interaction with the sandbox is beneficial. I'm hopeful it doesn't have that much effect on many of the most common places you encounter dangerous mobs like Space Ruins or Gateways as they are also places where you can't reliably recharge your energy-based stamina weapons as most that don't require energy do require getting into melee and endangering yourself. ## Changelog 🆑 balance: Most biological mobs are now slowed by taking stamina damage, and can be stunned. Mechanical mobs, mining mobs, and several other special kinds (chiefly those invoked by antagonists) are unaffected. If this seems to effect any mob it probably shouldn't, please report it as a bug. /🆑 |
||
|
|
d19b8de989 |
Most fleshy mobs are vulnerable to stamina and stuns (#90675)
## About The Pull Request This PR enables most mobs to take stamina damage, become slowed as a result of taking stamina damage. It also gives most mobs CANSTUN which not only allows them to enter stamcrit from taking stamina damage but also makes them vulnerable to mechanics like stun batons. Mobs which already took stamina damage (Spiders and Space Dragons) still work the same way. Mechanical or artificial mobs, mining mobs, simple xenomorphs, ghosts, and most kinds of mob closely associated with antagonists still don't take stamina damage. ## Why It's Good For The Game A new player armed with a disabler will probably try and use it on aggressive animals and be disappointed, but I don't think there is any _reason_ for them to be disappointed when it's already something they are doing merely to delay being attacked rather than to kill the target. It's not intuitive for these mechanics not to function against simple mobs when they do against humans, _especially_ the kinds of mobs which look like humans, and there isn't any technical reason why it _couldn't_ work against most mobs which it looks like they should work against. While this reduces the threat level of some mobs against Security players I think the greater interaction with the sandbox is beneficial. I'm hopeful it doesn't have that much effect on many of the most common places you encounter dangerous mobs like Space Ruins or Gateways as they are also places where you can't reliably recharge your energy-based stamina weapons as most that don't require energy do require getting into melee and endangering yourself. ## Changelog 🆑 balance: Most biological mobs are now slowed by taking stamina damage, and can be stunned. Mechanical mobs, mining mobs, and several other special kinds (chiefly those invoked by antagonists) are unaffected. If this seems to effect any mob it probably shouldn't, please report it as a bug. /🆑 |
||
|
|
fc65fe33df |
Fix guardian basic attacks (#90911)
## About The Pull Request Fixes #90902 There were a couple of problems: - The check `if (!isliving(attacked_atom) || !isclosedturf(attacked_atom))` would obviously always early return before performing the war cry because we don't have any walls in the game which are also living mobs. I fixed it. - Attack chain refactoring meant that attacking nonliving targets as a basic mob would reset the attack cooldown to the default rather than the mob one. Maybe when we kill simple mobs we can remove that code and let basic mobs handle it themselves? - For some reason we were playing a sound on the loc of an attacked atom instead of the atom, which is an area if you are punching a wall, which runtimes. Now we just play it on the atom, IDK why we weren't doing that. ## Changelog 🆑 fix: Standard Holoparasites will once again yell their battlecry and can rapidly punch windows. /🆑 |
||
|
|
a658fe8ee8 |
Fix guardian basic attacks (#90911)
## About The Pull Request Fixes #90902 There were a couple of problems: - The check `if (!isliving(attacked_atom) || !isclosedturf(attacked_atom))` would obviously always early return before performing the war cry because we don't have any walls in the game which are also living mobs. I fixed it. - Attack chain refactoring meant that attacking nonliving targets as a basic mob would reset the attack cooldown to the default rather than the mob one. Maybe when we kill simple mobs we can remove that code and let basic mobs handle it themselves? - For some reason we were playing a sound on the loc of an attacked atom instead of the atom, which is an area if you are punching a wall, which runtimes. Now we just play it on the atom, IDK why we weren't doing that. ## Changelog 🆑 fix: Standard Holoparasites will once again yell their battlecry and can rapidly punch windows. /🆑 |
||
|
|
753d8e5ba4 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a | ||
|
|
431bf75d53 |
Color Code Audition: Human rendering hates me (#89702)
## About The Pull Request This trainwreck of a PR is (hopefully) a final solution to all rendering jank stemming from the new filter-based coloring system. I went over every single instance of RESET_COLOR, either adding KEEP_APART or rewriting them entirely so they render properly. I've also fixed blood rendering issues by utilizing alpha filters and adding an abstract "holder" appearance for worn items, which holds blood overlays on worn clothing as to avoid coloring it. I've also fixed horrible inconsistencies with atmos pipe coloring as a result (of getting sucked down that rabbit hole) and converted all uses of COLOR_VERY_LIGHT_GRAY in atmos code to ATMOS_COLOR_OMNI to avoid confusion. MODsuit modules still get colored into MOD unit's color, need to refactor their rendering for this. Closes #88989 Closes #87526 Closes #89837 ## Changelog 🆑 refactor: Audited all remaining coloring code - among noticeable changes, blood should no longer get colored or "leak out" of item bounds, atmos pipes no longer color weirdly and repairbots are white again. /🆑 |
||
|
|
6f0301d03b |
removes alot of click-related self registering signals on basic mobs (#87220)
## About The Pull Request there was no real benefit of using signals over proc overrides for many of these cases. ## Why It's Good For The Game registering signals on self when we can just override the proc is un-necessary, im responsible for most of these so im just confronting the sins of my past ## Changelog 🆑 /🆑 |
||
|
|
f8faccd70a | Merge branch 'master' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-24-10a | ||
|
|
bb70889f6e |
TG Upstream Part 1
3591 individual conflicts Update build.js Update install_node.sh Update byond.js oh my fucking god hat slow huh holy shit we all fall down 2 more I missed 2900 individual conflicts 2700 Individual conflicts replaces yarn file with tg version, bumping us down to 2200-ish Down to 2000 individual conflicts 140 down mmm aaaaaaaaaaaaaaaaaaa not yt 575 soon 900 individual conflicts 600 individual conflicts, 121 file conflicts im not okay 160 across 19 files 29 in 4 files 0 conflicts, compiletime fix time some minor incap stuff missed ticks weird dupe definition stuff missed ticks 2 incap fixes undefs and pie fix Radio update and some extra minor stuff returns a single override no more dupe definitions, 175 compiletime errors Unticked file fix sound and emote stuff honk and more radio stuff |
||
|
|
2438ff0213 |
removes alot of click-related self registering signals on basic mobs (#87220)
## About The Pull Request there was no real benefit of using signals over proc overrides for many of these cases. ## Why It's Good For The Game registering signals on self when we can just override the proc is un-necessary, im responsible for most of these so im just confronting the sins of my past ## Changelog 🆑 /🆑 |
||
|
|
4c4930c71d | Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit | ||
|
|
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> |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
2016156d6f |
Shift certain flying mob positions upon death (#85942)
## About The Pull Request Chasing more side effects of offsetting mobs and giving them shadows.  Some mobs are "flying" while they are alive, but not while they are dead. Some mobs (like Watchers) offset their death sprites in the dmi to make it look like they have dropped to the ground, others do not bother. For the ones which don't, we want to shift them down ourselves so it doesn't look like the corpse is levitating. I'm willing to accept better suggestions for how to implement this but this seemed like the most obvious. ## Why It's Good For The Game No more levitating corpses ## Changelog 🆑 fix: Carp, bat, parrot, and dragon corpses no longer float in the air. /🆑 |
||
|
|
9da38495b6 | Merge master | ||
|
|
a94b3c697a |
[MIRROR] Raising lobstrosities from chrabs is now a component. Adds in tadpoles which become frogs. (#29147)
Raising lobstrosities from chrabs is now a component. Adds in tadpoles which become frogs. (#85346) I've componentized part of the code that manages raising lobstrosities from chrabs so that it can be added to other fish too. As proof of concept, I've added tadpoles. Tadpoles are not fished like the rest, instead you merely right-click a puddle and after 5 seconds you'll get one. Tadpoles are fairly fragile, cannot be butchered, don't reproduce, require lukewarm freshwater, need to be feed frequently, and become frogs after about 3 minutes. A small needed refactor for the chrab code, plus another small fish to make it easier to complete the first fish scanning experiment. 🆑 add: Added tadpoles, which can be scooped from puddles with right-click. Functionally they're like most fish, which require an aquarium to survive, and also need to be fed fairly frequently, however they quickly become frogs after about 3 minutes of care. add: Every station now has a couple puddles. One at the public garden and the other in prison. qol: Changed the name of an aquarium UI button from "Reproduction Prevention" to "Reproduction and Growth", as it controls both fish breeding and growth. /🆑 Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
36ca9a8559 |
Raising lobstrosities from chrabs is now a component. Adds in tadpoles which become frogs. (#85346)
## About The Pull Request I've componentized part of the code that manages raising lobstrosities from chrabs so that it can be added to other fish too. As proof of concept, I've added tadpoles. Tadpoles are not fished like the rest, instead you merely right-click a puddle and after 5 seconds you'll get one. Tadpoles are fairly fragile, cannot be butchered, don't reproduce, require lukewarm freshwater, need to be feed frequently, and become frogs after about 3 minutes. ## Why It's Good For The Game A small needed refactor for the chrab code, plus another small fish to make it easier to complete the first fish scanning experiment. ## Changelog 🆑 add: Added tadpoles, which can be scooped from puddles with right-click. Functionally they're like most fish, which require an aquarium to survive, and also need to be fed fairly frequently, however they quickly become frogs after about 3 minutes of care. add: Every station now has a couple puddles. One at the public garden and the other in prison. qol: Changed the name of an aquarium UI button from "Reproduction Prevention" to "Reproduction and Growth", as it controls both fish breeding and growth. /🆑 |
||
|
|
fa65d517dd | fixups | ||
|
+18 |
ba5c112a86 |
Huge Mirror fixes (#27488)
* Fixes incorrect operator usage in mecha code (#82570)
## About The Pull Request
I completely screwed up and told the original PR author of #82415
(
|
||
|
|
45e52eb774 |
Merge remote-tracking branch 'skrat/master' into new-bubbermaster
# Conflicts: # _maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm # _maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm # _maps/map_files/Birdshot/birdshot.dmm # _maps/map_files/Deltastation/DeltaStation2.dmm # _maps/map_files/IceBoxStation/IceBoxStation.dmm # _maps/map_files/MetaStation/MetaStation.dmm # _maps/map_files/NorthStar/north_star.dmm # _maps/map_files/VoidRaptor/VoidRaptor.dmm # _maps/map_files/tramstation/tramstation.dmm # _maps/shuttles/pirate_ex_interdyne.dmm # code/__DEFINES/mobs.dm # code/__HELPERS/~skyrat_helpers/is_helpers.dm # code/datums/mood.dm # code/game/objects/effects/spawners/random/random.dm # code/modules/admin/verbs/adminhelp.dm # code/modules/clothing/head/jobs.dm # code/modules/mob/living/brain/brain_say.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_jelly.png # code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_jelly_stargazer.png # code/modules/uplink/uplink_items/job.dm # config/lavaruinblacklist.txt # icons/mob/actions/actions_changeling.dmi # icons/mob/clothing/mask.dmi # icons/obj/mining.dmi # modular_skyrat/master_files/code/modules/client/preferences/headshot.dm # modular_skyrat/master_files/code/modules/mob/living/examine_tgui.dm # modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm # modular_skyrat/master_files/icons/mob/clothing/under/skirts_dresses.dmi # modular_skyrat/master_files/icons/obj/clothing/under/skirts_dresses.dmi # modular_skyrat/modules/aesthetics/airlock/icons/airlocks/multi_tile/metal_overlays.dmi # modular_skyrat/modules/colony_fabricator/code/appliances/space_heater.dm # modular_skyrat/modules/company_imports/code/armament_datums/deforest_medical.dm # modular_skyrat/modules/hyposprays/code/hypospray_kits.dm # strings/traumas.json # tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/headshot.tsx |
||
|
+15 |
2b60c77e55 |
Yet another mirror batch (#27314)
* A skub-related station trait. Reduced weight of annoyingly frequent neutral traits. (#81388)
## About The Pull Request
This PR introduces a new station trait that lets people choose if they
want to be pro-skub or anti-skub (or neither, really). It works the same
lobby buttons that job-related station traits also use. Depending on
whether you chose to be pro or anti skub, you'll spawn in with a special
box that contains the (bulky) skub and a pro-skub shirt, or an anti-skub
shirt. EDIT: Both also receive a number of stickers to propagate their
causes.
Kudos to @Fikou for coding the lobby buttons to be accessible by any
station trait rather than only job-related ones when you made the
Cargorilla station trait.
Another thing this PR also halves the exaggerated weight of low-cost
traits such as scarves, wallets and glitched PDAs, which I clearly
underestimated.
## Why It's Good For The Game
We've learned that low-cost, high weight traits are a bit of a design
mistake, because they tend to tip the scales toward themselves over and
over and over, leveling the diverseness of the feature and therefore
making it shallow and boring.
Beside, I've been thinking of the popular [skub comic
strip](https://pbfcomics.com/comics/skub/) lately.
## Changelog
🆑
add: Added a Skub-related station trait. You can now choose if you want
to be pro-skub or anti-skub, complete of shirt and stickers. Please
don't shank each other over it.
balance: Halved the weight of station traits such as scarves, wallets
and glitched PDAs.
/🆑
* Fix some slime species subtypes not having burn resistance (#82164)
## About The Pull Request
All slime species limb subtypes now inherent from the parent `/jelly`
subtype, giving them all their proper burn resistance.
## Changelog
🆑 Melbert
fix: Slimepeople and Luminescents are now 50% burn resistant like
Stargazers
/🆑
* There we go
* FIX: Makes Hatsune mi-go a (friendly) gold slime mob (#82251)
## About The Pull Request:
The hatsune mi-go is now a friendly gold slime mob. This means it won't
try and kill you. It also now doesn't make your ears hurt, and drops a
keyboard synth on death (you monster.)

## Why It's Good For The Game
So in making my resprited mi-go and subsequent speedmerge, I failed to
realize that there are only 10 possible migo spawnpoints - 5 in snowdin
gateway, 3 on ceres whiteship, and 2 on kilo whiteship. This means at
most eight can exist on anyround, with a decent likelyhood of 0. This,
combined with the fact the hatsune migo is banned from spawning outside
of roundstart locations, along with the fact people seem to love the
thing, made it feel _too_ rare, even for a shiny mob. You still have to
roll the random odds with the life chem or friendly gold slime pools,
but you should actually see them outside of two mutually exclusive space
ruins and a gateway now. Also, they don't try and kill you now, because
it would have been wrong to add a hostile creature to the friendly pool.
🆑
fix: Hatsune mi-go now is a friendly gold slime mob, and doesn't hurt
your ears.
add: Hatsune mi-go drops a keyboard synth on death (you monster.)
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* [THE QUIRKENING] Adds customization options to Organ Prosthetic, Junkie, Smoker, and Alcoholic! (#82051)
## About The Pull Request
Lets people pick:
- The shitty organ they spawn with (still has the restrictions of not
being possible to get heart when you are a plasmamen, for example)
- Their favorite alcohol to blackout with
- Their favorite brand of cigs
- Their favorite brand of drugs!
A lot of the code was taken from a downstream, made by @Floofies, i
already had my own implementation but it was buggy and not nearly as
clean, then i was made aware of theirs.
## Why It's Good For The Game
Character Customization is good and fun and lets people have more choice
in their roleplay.
## Changelog
🆑
add: Prosthetic organ users are now allowed to pick what they want to
start with.
add: Junkie of all kinds, including smokers and alcoholics, are also
able to pick their favorite type.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* [NO GBP] Fixes the "Drop Pod: Syndies" deathmatch modifier. (#82216)
## About The Pull Request
I've had false memories of `pick_weight` working with assoc-value-less
lists.
## Why It's Good For The Game
This will fix an issue with deathmatch modifiers.
## Changelog
🆑
fix: Fixed the "Drop Pod: Syndies" deathmatch modifier.
/🆑
* Fix robocontrol access runtime (#82242)
## About The Pull Request

`check_access` expects an item, such as an ID card, to... check access.
Not a mob.
We can circumvent this entirely by using `allowed`.
But this has an averse effect in that `allowed` will only check the
user's ID, not the ID in the mod PC.
So we need to run a separate check of `check_access` for the computer ID
card.
## Changelog
🆑 Melbert
fix: Robocontrol should work better.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
* Adds a photobooth (#82105)
## About The Pull Request
Adds a photobooth machine to the HoP line which can be used to update
your security records photo.
It updates the records of the person's name, which means hiding your
identity and wearing an ID will let you change other people's photos. If
you aren't hiding your identity and are wearing someone else's ID, it
won't update at all because it will be unable to find your record.
There's 2 variants of this machine, one at the HoP line that's tied
behind Law Office access (so Lawyers have an extra thing they can help
out with if no one's available, but maybe it would be better behind
Library access since Curators are our "photographer" role?), and the
Security one that requires Security access.
The Security one has a special feature that it adds a height chart
behind the player.

This machine is used by either right-clicking on it or by pressing a
button, so the HoP can do it remotely from their line (except on Tram
where it's in the library), and after a few delays it'll update your
records automatically to how you look like.
Emagging the machine will remove its access restrictions but every time
it updates your photos it will spam camera flashing and blind you.
Sprites
Open

Closed

Security version on the left, has a red tint on it

Video demonstration (old sprites):
https://github.com/tgstation/tgstation/assets/53777086/a2e59f08-2d58-4f5b-b081-e137c7606d35
## Why It's Good For The Game
Current security records has no way to change your photo ID, something
that was a feature before it was moved to TGUI. The only alternative is
to fully delete your record and make a new one with a photo and the same
name, but this shares a major issue with the HTML UI: You're immediately
sold out by the fact you have a background. No matter how well you try
to cover your tracks, any security officer looking at records will see
you are the only photo on the manifest that has a background and even a
camera in your hand, which makes it impossible to get away with it
unless security essentially takes pity on you.
This opens up the ability to fully mask yourself in records, finally.
This is also better even for non antagonists because you can now
properly update your photos to match what you look like in the event of
an appearance change or even just a job change, which makes it a benefit
for HoPs who likes to keep records as up-to-date as possible.
## Changelog
🆑 JohnFulpWillard, Twox
add: Added a new photobooth machine to the HoP's line.
fix: Things checking for access now checks your off hand, too.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Converts slimes to basic mobs (#82176)
After months of preparation, and further months of work, I am finally
done. Please bear with me, as this is a massive refactor, but I have
already atomized everything I could. This is now ready for review.
General
- The hilbert hotel slimes are now a subtype instead of a varedit.
- The `use_mob_ability` subtree now also accepts non cooldown abilities.
If set_behaviours is set up properly, mobs won't keep continously
triggering it as if it were a 0 second cooldown action. The alternative
would have been turning the slime abilities into cooldown abilities.
- Wrestling off a slime now signs up to the `COMSIG_ATOM_ATTACK_HAND`
signal, instead of being part of attack_hand.
- Adds datum/ai_controller/controller as a fourth, optional argument to
`/datum/ai_behavior/find_hunt_target/valid_dinner()` to make it possible
to access blackboard keys.
- Slimes no longer attack windows if they would accidentally move into
them (when the conditions are met), since random walk behaviour ignores
tiles they can't go in. It was also not worth to keep. Did you know this
was the sole override of `ObjBump()`?
- Examine was made less snowflaky/bespoke. Also added a new element:
`/datum/element/basic_health_examine`, which is a simple bespoke element
that prints out a custom message based on how damaged the basic mob it
is attached to is.
- Slimes only perform knockdown instead of paralysis, as they can attack
more often now, and paralysis is not that fun.
- LAssailant has been removed due being archaic code. To befriend a
slime, you have to spawn a monkey with the slime console, or feed them a
sheet of plasma. Simple grabbing the monkey or stuffing them in
disposals do not work anymore. Slime console spawned monkeys will have a
visible status effect, with pheromones coming off them to make this
clearer.
Actions
- Feeding, reproduction and evolution is no longer a verb.
- Slime feeding is no longer an action button. You have to use right
click, or as previously, mousedrop. Slimes can always unbuckle from mobs
they are attached to.
Hunger
- Instead randomly changing the starvation and max nutrition values
while growing up, evolution costs 200 nutrion. This makes the code more
readable, and behaviour more predictable, while still giving the
intended time between evolving and splitting. As a result, I could also
turn these into defines.
- Added a component that handles doing an effect over time while buckled
to a mob, until the mob dies or you get unbuckled.
- Slimes gained nutrition is no longer randomly multiplied by the damage
config value, but rather gain nutrition equal to twice the damage dealt.
You'll have to eat one monkey to evolve, just as before.
- Slimes do not heal passively. They only heal from eating. It was a
rather miniscule value that did not have much effect.
- Slimes generate electricity from hunger threshold, instead of the
random amount of hunger threshold + 100.
Environment
- Slimes take 15 damage from cold every second, instead of using a
complex formula (that also decreased the damage up to a point?).
- Slimes still heal from burn damage, but this is now set on the damage
coefficient list.
- Slimes instead of getting stunned by the cold, freeze in an ice cube.
BZ instead of setting them unconscious, calls the stasis status effect,
allowing you to safely stash your hungry slimes for later. They also no
longer slow down from the cold, as they are already slowed down by the
damage they get. Conversely they no longer get a speed up from a random
amount of temperature. I could be convinced to readd this either as part
of the basic sensitive component, or a similar one.
AI
- Removed the attacked_stacks system. Slimes will just perform regular
retaliation if you hit them in a harmful manner.
- Slimes now use the pet orders component. They will interrupt their
feeding when given a command by their master.
- Slimes have their own subtrees. I tried to replicate as much as I
could from the old code, dividing ancient code artifacts and intentional
stuff, so there might be some weirdness.
- Slime speech has been almost fully reduced to basic blorbing, as you
can not even understand them anymore, and most of them require the slime
to loop through all of their surroundings.
- Discipline does not have stacks either. Disciplined baby slimes have a
chance to clear their attack and hunt blackboard keys. All slimes will
stop feeding on the target otherwise.
- Since discipline is not a stack, rabidity instead gets removed at a
10% chance per disciplining.
- Slimes faces are a bit more randomly picked now.
- We want to convert all simple animals to basic mobs. Old slime code
was also very strange, and had some systems that have been replicated by
components.
- Slimes fully paralyzing you is not fun at all. Knockdown should give
you a fighting chance when a slime would like to eat you.
- Slimes slow down from the heavy damage they get from the cold, so I
don't think they need extra slowdown, nor do they need to speed up from
warmth, as they are already fast.
- Slimes turning into an icecube instead of becoming paralyzed from the
cold is more fun for the slimes, as they can break out for a few
moments. It is also funny.
- Slimes entering proper stasis from BZ is not just a visual indicator
of a slime that is safe to approach, but also keeps the slimes's hunger
value in check, allowing it to not starve while stopped. They can also
look around and blorble, instead of staring at a black screen, if player
controlled.
- The attack_stack and discipline_stack behaviours were rather
overcomplicated, and the xenobio mains I talked with didn't even know it
was a thing, so I argue it needed simplification.
- The bespoke friendship system of slimes was also too complicated.
Slimes slowly gained levels of trust, and at certain levels commands
costed friendship, and other levels, they did not. The binary friend/not
friend system that everything else in the game uses is much more
sensible.
- Using right click for feeding is much more sensible than using an
action, and then picking someone from a dropdown.
- Slime speech was very soulful but not only did it loop through
everything in sight, you couldn't even understand it unless you spoke
slime. Maybe it can be readded later in a different form.
- Slime's passive healing was miniscule, and having them rely on feeding
is more interesting.
also
fixes #81463
🆑
refactor: Slimes are now basic mobs. Please report any strange
behaviours!
balance: Slimes only stun you for two seconds when they shock you, the
rest of the duration is a knockdown.
balance: Slimes are not stunned from the cold, but rather, get frozen in
a freon icecube. BZ also puts them in complete stasis, instead of making
them unconscious. Their speed is likewise unchanged by temperatures.
balance: Slimes do not passively heal, they instead rely on feeding.
fix: Slimes can use the buckling screen alert to unbuckle and stop
feeding, along with clicking on the mob they are riding
/🆑
* Oh, right.
* Fixes AI verb Jump To Network (#70016)
* check for camera loc to not be a silicon
* check for z=0 instead
* Update code/modules/mob/living/silicon/ai/ai.dm
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* evil touch
* redundancy
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Removes camera assembly structures (#81656)
Removes the camera assembly structure middleman between the camera
wallframe and camera machine. All its behavior has been instead moved to
the camera, and I've tried to keep as much of the behavior the same as
before.
This also fixes the issue that camera assemblies had where, upon the
construction being finished, it would move itself into the newly
finished camera machine, therefore taking itself off a wall, therefore
deconstructing itself. This resulted in 2 piece of iron being in each
camera machine (except roundstart ones), and because camera machines
rely on the assembly inside of them for upgrades and such, upgrading
didn't work at all.
I've also made camera nets use defines (not in map) so it's easier to
find a list of them all, and tried to add autodoc comments to nearly
every var in camera code.
Removes copy paste and spaghetti code between structure and machine
camera, thus making it easier to work around with.
Closes https://github.com/tgstation/tgstation/issues/79019
🆑
fix: Cameras built in-round can be upgraded again.
fix: Deconstructing cameras now more consistently return to you the
upgrades inside of the camera.
fix: RD's telescreen can now properly see Ordnance cameras again.
fix: [Deltastation] Library art gallery no longer has an invisible
camera.
/🆑
---------
Co-authored-by: san7890 <the@san7890.com>
* [MDB Ignore] Combines Cargobus consoles with Dept. Order Consoles, freeing all departments of 1 whole tile of space (#82210)
## About The Pull Request
- Departmental orders are now an NTOS app
- To download, they require `ACCESS_COMMAND`.
- To use, they require one access from the department.
- This means you cannot order things from not-your-department unless you
have an ID.
- When newly downloading the app, it will prompt a head of staff to
insert an ID, to determine which department to be linked to.
- Changes chat room overlay from the kind that AI uploads use to a new
icon.
- Minor refactors to department order in general.


## Why It's Good For The Game
These two computers are surprising waste spacers for two things which
are tied together.
So why not combine them?
The lesser used cargobus chat is still there, and departmental orders
are front and center.
This gives mappers a ton more leeway when mapping departments out and is
overall less clutter.
## Changelog
🆑 Melbert
qol: Cargobus chat console and Departmental Order console are now
combined into one.
qol: Mod PCs active on the "chat client" apps no longer look like AI
uploads (and now have their own sprite)
refactor: Departmental order consoles were refactored a bit, report any
oddities.
/🆑
* This should cut it.
* Was it really just skub?
* [No GBP] Fixes slow slime feed (#82284)
## About The Pull Request
Slimes were supposed to gain the same amount of nutrition as the damage
they dealt while feeding. However, I have accidentally multiplied this
again by `seconds_between_ticks` a second time. This meant that locally
slimes fed normally, but on the server they got about the third
nutrition they were supposed to, probably due to having more ticks per
second then my machine. This PR fixes that.
Also raised the nutrition gained by slimes by 20%, after careful
testing, one monkey wasn't always enough.
## Why It's Good For The Game
Fixes #82283
## Changelog
🆑
fix: Slimes now feed faster, and should only need one monkey to reach
their next lifestage.
/🆑
* [No GBP] Fixes a slime speed config and ai controller null error in slime nutrition handling (#82330)
## About The Pull Request
Someone has linked the runtimes logs of round 226376 to show off a
runtime, and I took a look, and found some unrelated runtimes in slime
code.
- The config file for slime slowdown was still using the simple_animal
path. This has been fixed.
- Somehow, a grey slime has lost its AI controller, and when it got
hungry, it runtimed. For now, a coalesce operator has been put in place.
Later, an investigation is needed to figure out where did its AI
controller go.
## Why It's Good For The Game
Runtimes bad.
## Changelog
🆑
fix: Slime properly load their slowdown values from the config files.
fix: Slimes who lose their AI controller will no longer runtime when
they get hungry.
/🆑
* [No GBP] Slime stasis fixes (#82304)
## About The Pull Request
`handle_environment` is never called when the target was in stasis, so
slimes stayed in stasis forever. This PR fixes that, albeit in an ugly
way.
It also makes slimes actually not get hungry while in stasis.
## Why It's Good For The Game
Fixes #82300
I also claimed slimes can be safely kept in stasis, but I didn't
actually put a stasis check before handle_nutrition. This is fixed now.
## Changelog
🆑
fix: Slimes stop being in stasis when taken out of a BZ filled
environment
fix: Slimes no longer become hungry while in stasis
/🆑
* Add a unit test to check that maploaded simple/basic mobs are in an environment they can survive in. (#82180)
I've recently noticed that the maploaded penguins from the snowdin away
mission were dying from unsafe atmos/temperature. This sparked the idea
of making a (focus only) unit test that would prevent this sort of
issues from happening.
This PR also implements the usage of the `atmos_requirements` and
`body_temp_sensitive` elements for simple animals too, cutting down the
copypaste.
More unit tests to make sure things are done correctly.
🆑
fix: Made sure that mapped critters (i.e. penguins on the snow cabin
away mission) can survive in the environment they're spawned in.
/🆑
* This all is going to suck.
* A step further
* Is this hell over?
* I hope it is.
* Autosort I suppose
* This should cut it for VoidRaptor
* And Blueshift
* Revert "Autosort I suppose"
This reverts commit 9100de67c30514fc25db3ba29df81d1b0ac54e24.
* Dear god, the chicken.
* I fucking hate mapping
* fixes gas analyzers (#82278)
## About The Pull Request
#82180 accidentally messed up air analyzers being able to read or send
readouts to the chat.
## Why It's Good For The Game
air analyzer good
## Changelog
🆑
fix: air analyzers work again
/🆑
* [NO GBP]Grind & juice fixes (#82272)
- Fixes #82266. Anything that has reagents can be either grinded or
juiced
- If something doesn't have reagents but has grind results it can still
be grinded but not juiced
🆑
fix: anything that has reagents can be either grinded or juiced
fix: stuff that does not have reagents but has grind results can still
be grinded but not juiced
/🆑
* Birdshot Engineering Retrofitting (#81840)
Warning: Nanotrasen Confidential Proprietary Information (NCPI) must
only be accessed and viewed within a Nanotrasen Virtual Environment
(NVE, vNTOS-3). Employees in violation of this information ordnance will
have their wages A) garnished, and B) sent to a labour camp up to a
maximum of ten (10y) years. Questions regarding policies related to NCPI
should be directed towards departmental heads or your sector Central
Command Information Authority (CCIA) personnel.
## About The Pull Request
Credentials Confirmed
The Birdshot Engineering Revitalization Plan (formerly proposal
Blindfold, now BERP) is a procurement effort to address growing
maintenance liabilities and costs on the Skitter-MDR Class Orbital
Station located in the Spinward Stellar Cluster (SSC, Sector 28-7b).
Over the course of the previous year, ongoing analysis data has provided
vital feedback since the station was once again brought into operation
after 17 years of abandonment; and using this data, 4 options were
outlined for the Blindfold Proposal.
1) Abandonment - No Cost. Operations on Birdshot will cease. 28-7b
operations will be moderately impacted.
2) Procurement - Medium Cost. Replace offending station sections
completely with low-cost, working alternatives. Operational gains in
28-7b expected.
3) Do Nothing - No Cost. Moderate long-term impacts to operations in
28-7b.
4) >>>_Was removed_
Option 2 was selected for BERP. Procurement efforts identified 3
solutions and later narrowed it down to 1. Following the selection
process architects were brought in to draft up low-impact refits to the
designated hulk. 5 selections made it past initial drafting, with 3
ultimately being selected for engineering board review. Penultimately
draft proposal 3 was selected for the project and now awaits engineering
certification. The draft plan is provided on the next page:

Following board certification, implementation of the plan will be
commenced by 28-7b Nanotrasen Enigneering Corps. (NECs). Construction
time-frame pending Project Foremans review.
## Why It's Good For The Game
Birdshot Engineering is where this whole station began. Back then,
things were going to look closer to Birdboat Station, but that became
looser and more ill-defined as progress was made on the overall station.
While I was satisfied of the decrepit feel of Birdshot Enigneering
initially, I knew that at some point, it would require modification to
better play into Birdshots strengths.
I've had a long laundry list of a roadmap that I've wanted to implement
since the station was added, and this was the top item. Tier Zero.
Problema Numero Uno. You get the idea. This has been a year of drafting,
redrafting, and redrafting everything until it fit Birdshot right. With
this, we're nearly there. I see this being the definitive Engineering
Department for this station for quite some time to come. However, this
is still a draft and some elements are subject to change as I begin to
work out some of the more minor kinks in the draft such as pipe
locations and transit tubes.
Presently Atmospherics is completely rebuilt from the bottom up. There
is more space, enough to do projects, but you'll have to tear down some
windows and walls to gain it. Nothing ventured, nothing gained. You also
have most of the gas distro line outside. I'm a firm believer in
enabling whatever antics ANY lunatic may have. Atmos techs can rest
assured that outside lines are completely reconfigurable (and powered)
enabling some... unique project prospects. You also gained an inside HFR
and Spare burn chamber. Enjoy.
The Engineering Common Areas are now inside the department proper
instead of the satellite treatment in the original implementation.
Security gets an actual outpost and engineers now have a proper office
to file engineering documentation. They say that office colleagues can
form tight bonds so let's see whose is stronger: Purples or Yellows?
The Supermatter Engine is more of an upgrade over the previous model
(Leaky SM is here to stay so deal with it). The room is larger with less
rock, allowing some manner of greater customization, but I believe
engineers will be more than happy to find that they now have a Burn
Chamber of their own. I have zero clue of what they'll do with it, but I
think any enterprising CE will be able to create something that even god
should fear.
Finally we have maint improvements. Nothing really to see here though
maybe there's the beginning of something for the future if you care to
speculate. I couldn't really keep the meandering maint of the previous
rock, so instead we now have some pseudo dead-ends. It's all connected
by transit tubes to the north (not shown) so you can slowly get around
if you will it. Of course there's plenty of cut-throughs,
not-so-finished sections, and opportunity for those who need it. Caution
to the blind, this whole rock is spicy.
Overall I'm happy with this and want to open it up in Draft Mode for
initial thoughts. I have a rough timeline on finishing this that
stretches out to the weekend, so the earlier comments are, the more
likely I'll be able to MAYBE do something about it. Thanks for the
patience and hopefully this is a doozy of an update for all our players.
Previous Engineering Provided for Point of Reference:

closes #75590
## Changelog
🆑
qol: Wholesale Revamp of Birdshots Engineering Department
fix: Some Birdshot Amtospherics Concerns
fix: Some Birdshot Engine Concerns
/🆑
* Bumps `dependencies.sh` to 515.1633 Stable (#82138)
## About The Pull Request
Two reasons for this.
1. It's the stable branch, so let's move it up. This PR will detect any
issues that we might have with the latest 515.1633 as far as the
codebase is concerned (the servers have been running 1633 for at least a
week now).
2. ~~I'm fucking sick of seeing the Lua Scripting Notice in CI even
though it was fixed a few days ago in #82074
(
|
||
|
|
4019835b3e |
Living Limb fixes (feat: Basic mobs attack random body zones again) (#82556)
## About The Pull Request Reworks Living Limb code to fix a bunch of runtimes and issues I saw while testing Bioscrambler. Specifically, the contained mobs are now initialised via element following attachment so that signal registration can occur at the correct time. This allows limbs to function correctly when added from nullspace via admin panel or bioscrambler. Secondarily (and more wide-ranging) at some point (probably #79563) we inadvertently made basic mobs only attack the target's chest instead of spreading damage. This is problematic for Living Flesh which can only attach itself to damaged limbs but was left unable to attack damaged limbs. I've fixed this in a way which is maybe stupid: adding an element which randomises attack zone pre-attack. Living limbs also limit this to _only_ limbs (although it will fall back to chest if you have no limbs at all). This is _technically_ still different, the previous behaviour used `adjustBruteLoss` and `adjustFireLoss` and would spread the damage across your entire body, but there isn't a route to that via the new interface and this seems close enough. ## Changelog 🆑 fix: Living Limbs created by Bioscrambler will be alive. fix: Living Limbs can once more attach themselves to your body. balance: Living Limbs will prioritise attacking your limbs. fix: Basic Mobs will once again spread their damage across body zones instead of only attacking your chest. /🆑 |
||
|
|
95b7fa1fb7 |
Add a unit test to check that maploaded simple/basic mobs are in an environment they can survive in. (#82180)
## About The Pull Request I've recently noticed that the maploaded penguins from the snowdin away mission were dying from unsafe atmos/temperature. This sparked the idea of making a (focus only) unit test that would prevent this sort of issues from happening. This PR also implements the usage of the `atmos_requirements` and `body_temp_sensitive` elements for simple animals too, cutting down the copypaste. ## Why It's Good For The Game More unit tests to make sure things are done correctly. ## Changelog 🆑 fix: Made sure that mapped critters (i.e. penguins on the snow cabin away mission) can survive in the environment they're spawned in. /🆑 |
||
|
|
e8f9767a11 | Merge remote-tracking branch 'Skyrat/upstream-merge-81373' into upstream-2024-3 | ||
|
|
7bb2f5055e |
[MIRROR] 81182 81367 81399 (#26492)
* Implements rgb2num, uses it to replace all our manual rgb reading. Redoes HSV management (#81182) [Converts all manual extraction of rbg with rgb2num. It's just better](https://github.com/tgstation/tgstation/commit/ae798eabd5aa94dd577169553905d3efd7a7136d) [Yanks out old HSV management, replaces it with list stuff](https://github.com/tgstation/tgstation/commit/4997e86051d6388e495524dccba1f3258a47bb48) There's this old lummy era clunky code that passed HSV as text We can now cleanly replace it with passing hsv as lists from a rgb2hsv proc So let's just do that. Also, cleans up spraytan code (and ethereal lighting) Code better * Refactors fire overlays once again to make it not get stuck so often (#81367) Maybe finally fixes #77701 A big reason why this kept happening is because fire uses standing overlays. But fire isn't managed by mobs anymore. Meaning in some situations, fire can cease to exist but the overlay can still be on the mob. So it gets stuck. So like, why use standing overlays anymore? We can just hook `update_overlays` signal. Isn't that neat. 🆑 Melbert refactor: Fire effects get added to mobs in a different way now. Maybe it will get stuck less. Report any oddities. /🆑 * Fix Flaky Failure From Fire (#81399) ## About The Pull Request Closes #81396 , Closes #81391 , Closes #81403, Closes #81402 I don't know why but I thought this proc was only called once, when the mob entered the turf. That was silly. And going back at it, I'm not entirely sure why I tied `TRAIT_NO_EXTINGUISH` to the element anyways, rather than the lava like it originally was. While going back over this, I cleaned up the proc a bit. ## Changelog Not necessary * There we go? * Bruh moment --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
d9243d1016 |
Refactors fire overlays once again to make it not get stuck so often (#81367)
## About The Pull Request Maybe finally fixes #77701 A big reason why this kept happening is because fire uses standing overlays. But fire isn't managed by mobs anymore. Meaning in some situations, fire can cease to exist but the overlay can still be on the mob. So it gets stuck. So like, why use standing overlays anymore? We can just hook `update_overlays` signal. Isn't that neat. ## Changelog 🆑 Melbert refactor: Fire effects get added to mobs in a different way now. Maybe it will get stuck less. Report any oddities. /🆑 |
||
|
|
4d8898fdef |
Merge remote-tracking branch 'skrat/master' into upstream-2024-02-03
# Conflicts: # _maps/map_files/IceBoxStation/IceBoxStation.dmm # _maps/map_files/KiloStation/KiloStation.dmm # _maps/map_files/tramstation/tramstation.dmm # _maps/skyrat/automapper/automapper_config.toml # code/controllers/subsystem/statpanel.dm # code/datums/chatmessage.dm # code/datums/quirks/negative_quirks/claustrophobia.dm # code/game/objects/items/tools/weldingtool.dm # code/modules/client/preferences/middleware/quirks.dm # code/modules/mob/living/carbon/carbon_defense.dm # code/modules/mob/living/carbon/human/human_defense.dm # code/modules/mob/living/carbon/human/inventory.dm # code/modules/mob/living/living_say.dm # code/modules/modular_computers/file_system/programs/jobmanagement.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/research/designs/mechfabricator_designs.dm # code/modules/research/machinery/_production.dm # code/modules/surgery/organs/internal/_internal_organ.dm # html/changelogs/archive/2024-01.yml # modular_skyrat/modules/automapper/code/area_spawn_entries.dm # modular_skyrat/modules/jukebox/code/jukebox_subsystem.dm # modular_skyrat/modules/loadouts/loadout_items/loadout_datum_heads.dm # modular_skyrat/modules/loadouts/loadout_items/loadout_datum_suit.dm # modular_skyrat/modules/loadouts/loadout_items/under/loadout_datum_under.dm # modular_skyrat/modules/synths/code/bodyparts/power_cord.dm # tgstation.dme # tgui/packages/tgui/components/Dropdown.tsx # tgui/packages/tgui/components/Input.tsx # tgui/packages/tgui/interfaces/Fabrication/DesignBrowser.tsx # tgui/packages/tgui/interfaces/Jukebox.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/QuirksPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/data.ts # tgui/packages/tgui/interfaces/common/SearchBar.tsx |
||
|
|
7374f7e617 |
[MIRROR] Minor say code refactor, fixes signers sometimes using the wrong verbs over radio [MDB IGNORE] (#26136)
* Minor say code refactor, fixes signers sometimes using the wrong verbs over radio (#80092) ## About The Pull Request Alternative title: "Baby's third pr: surprise say code refactor" While testing sign language I worked out that if the first message sent after toggling sign language involves speaking directly into a radio, it proceeds to use the wrong verb. After several hours of digging through say and telecomms code, I worked out the cause: the `verb_say` on humans is primarily updated to match tongue data during the verb _selection_ method `say_mod()` in `human_say.dm`, and as a consequence this meant the verb wasn't updated to the correct one until far after it had been copied to a virtualspeaker, leading to the incorrect verb being used for the radio message. This pr fixes this by refactoring this verb updating behaviour to be in a new method `update_verbs()`, which we then call _before_ attempting to call `radio()` to avoid wrongful copying and thus fixing the bug. There's theoretically also cases where the previous behaviour would use the wrong verb if one lost or gained a tongue between radio messages, or the wrong verb from those picked from a list for some simple/basic animals, but those are significantly less common. To note, I gave the new `update_verbs()` method the same arguments as the `say_mod()` method it got split out of, but having gone through all instances of it being used for this I don't feel it actually *needs* those arguments. So I'm unsure whether it should keep them or not. Opened as a draft for now for sanity's sake, and also cause, y'know, it touches say code. ## Why It's Good For The Game It was _really_ annoying. ## Changelog 🆑 fix: Signers no longer use the wrong verb when speaking directly into a radio for the first message after toggling sign language. refactor: Moved the updating of verb variables into a new method which is called earlier in living's say, which should avoid this happening for other things which updated their verbs the same way. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> * Minor say code refactor, fixes signers sometimes using the wrong verbs over radio --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> |
||
|
|
d131e74095 |
Minor say code refactor, fixes signers sometimes using the wrong verbs over radio (#80092)
## About The Pull Request Alternative title: "Baby's third pr: surprise say code refactor" While testing sign language I worked out that if the first message sent after toggling sign language involves speaking directly into a radio, it proceeds to use the wrong verb. After several hours of digging through say and telecomms code, I worked out the cause: the `verb_say` on humans is primarily updated to match tongue data during the verb _selection_ method `say_mod()` in `human_say.dm`, and as a consequence this meant the verb wasn't updated to the correct one until far after it had been copied to a virtualspeaker, leading to the incorrect verb being used for the radio message. This pr fixes this by refactoring this verb updating behaviour to be in a new method `update_verbs()`, which we then call _before_ attempting to call `radio()` to avoid wrongful copying and thus fixing the bug. There's theoretically also cases where the previous behaviour would use the wrong verb if one lost or gained a tongue between radio messages, or the wrong verb from those picked from a list for some simple/basic animals, but those are significantly less common. To note, I gave the new `update_verbs()` method the same arguments as the `say_mod()` method it got split out of, but having gone through all instances of it being used for this I don't feel it actually *needs* those arguments. So I'm unsure whether it should keep them or not. Opened as a draft for now for sanity's sake, and also cause, y'know, it touches say code. ## Why It's Good For The Game It was _really_ annoying. ## Changelog 🆑 fix: Signers no longer use the wrong verb when speaking directly into a radio for the first message after toggling sign language. refactor: Moved the updating of verb variables into a new method which is called earlier in living's say, which should avoid this happening for other things which updated their verbs the same way. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
5e950115a6 | Merge remote-tracking branch 'skyrat/master' into upstream-12/19/2023 | ||
|
|
a038931099 |
Fixes fire overlays. Possibly. Hopefully. Probably not. (#822)
## About The Pull Request Fixes fire overlays. Possibly. Hopefully. Probably not. ## Why It's Good For The Game Best case scenario, this PR fixes fire overlays being persistent. Worst case scenario, this does nothing. Will be sent to /tg/ upstream. if it works. Yeah I'm using Bubberstation as a testing grounds for fixing an extremely elusive bug, how can you tell? ## Changelog 🆑 BurgerBB fix: Fixes fire overlays. Possibly. Hopefully. Probably not. /🆑 <!-- 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. --> <!-- By opening a pull request. You have read and understood the repository rules located on the main README.md on this project. --> |
||
|
|
9c60ff1de1 |
[MIRROR] Removes Clone Damage [MDB IGNORE] (#25429)
* Removes Clone Damage * Update blackbox.dm * Modular * Update schema * Update database_changelog.md * More modular deprecated clone things --------- Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
274eb2a52e |
Removes Clone Damage (#80109)
<!-- 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. --> ## About The Pull Request Does what it says on the tin. We don't have any "special" sources of clone damage left in the game, most of them are rather trivial so I bunched them together into this PR. Notable things removed: - Clonexadone, because its entire thing was centered around clone damage - Decloner gun, it's also centered around cloning damage, I couldn't think of a replacement mechanic and nobody uses it anyways - Everything else already dealt clone damage as a side (rainbow knife deals a random damage type for example), so these sources were removed <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Consider the four sources of normal damage that you can get: Brute, Burn, Toxins and Oxygen. These four horsemen of the apocalypse are very well put together and it's no surprise that they are in the game, as you can fit any way of damaging a mob into them. Getting beaten to death by a security officer? Brute damage. Running around on fire? Burn damage. Poisoned or irradiated? Toxin damage. Suffocating in space? Brute, burn and oxygen damage. Technically there's also stamina damage but that's its own ballpark and it also makes sense why we have a damage number for it. Picture this now: We have this cool mechanic called "clone pods" where you can magically revive dead people with absolute ease. We don't want it to be for free though, it comes at a cost. This cost is clone damage, and it serves to restrain people from abusing cloning. Fast forward time a bit and cloning is now removed from the game. What stays with us is a damage number that is intrinsically tied to the context of a removed feature. It was a good idea that we had it for that feature at the time, but now it just sits there. It's the odd one out from all the other damage types. You can easily explain why your blade dealt brute damage, but how are you going to fit clone damage into any context without also becoming extremely specific? My point is: **clone damage is conceptually a flawed mechanic because it is too specific**. That is the major issue why no one uses it, and why that makes it unworthy of being a damage stat. Don't take my word for it though, because a while ago we only had a handful of sources for this damage type in the game. And in most of the rounds where you saw this damage, it came from only one department. It's not worthwhile to keep it around as a damage number. People also didn't know what to do with this damage type, so we currently have two ways of healing clone damage: Cryotubes as a roundstart way of healing clone damage and Rezadone, which instantly sets your clone damage to 0 on the first tick. As a medical doctor, when was the last time you saw someone come in with clone damage and thought to yourself, "Oh, this person has clone damage, I cannot wait to heal them!" ? Now we have replacements for these clone damage sources. Slimes? Slime status effect that deals brute instead of clone. Cosmic heretics? Random organ damage, because their mechanics are already pretty fleshed out. Decloning virus? The virus operated as a "ticking timebomb" which used cloning damage as the timer, so it has been reworked to not use clone damage. What remains after all this is now a basically unused damage type. Every specific situation that used clone damage is now relying on another damage type. Now it's time to put clone damage to rest once and for all. Sure, you can technically add some form of cellular degradation in the future, but it shouldn't be a damage number. The idea of your cells being degraded is a cool concept, don't get me wrong, but make it a status effect or maybe even a wound for that matter. <!-- 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. --> ## 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. --> 🆑 del: Removed clone damage. del: Removed the decloner gun. del: Removed clonexadone. /🆑 <!-- 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. --> |
||
|
|
f2b71e7686 |
Merge remote-tracking branch 'skrat/master' into upstream-nov-19-2023
# Conflicts: # _maps/skyrat/automapper/templates/deltastation/deltastation_armory.dmm # code/modules/mob/living/simple_animal/guardian/guardian.dm # html/changelogs/archive/2023-11.yml # modular_skyrat/master_files/code/datums/traits/neutral.dm # modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm # modular_skyrat/modules/mold/code/mold.dm # modular_skyrat/modules/mold/code/mold_mobs.dm |
||
|
|
b237afa316 |
[MIRROR] Mob attackedby / check_block refactor, plus some minor cleanup of attack_x procs [MDB IGNORE] (#25079)
* Mob `attackedby` / `check_block` refactor, plus some minor cleanup of `attack_x` procs * Fix the race condition * Modular * Ooops --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
365e50bbce |
Mob attackedby / check_block refactor, plus some minor cleanup of attack_x procs (#79563)
## About The Pull Request - Deletes `spec_attacked_by` - Elements simple/basic mob attack threshold - There was a skeleton mob that "mimics armor" but didn't use the actual mimicing armor thing we have, so I changed that. - Moves `check_shields` down to the living level, renames it to `check_block` - Martial art blocking is now signalized (only CQC uses it anyways) - Cleaned up a bit of `attack_x` procs, but not a lot. Should have an entire PR dedicated to this .... mess. - Deprecates `/obj/item/melee` ## Why It's Good For The Game Second verse, same as the first. - Less bad species related procs. - Largely brings a lot of code in line, making combat more consistent across types. - Makes it a lot easier to add new code relating to blocking or taking damage. ## Changelog 🆑 Melbert refactor: Refactored another large chuck of attack code, primarily involving melee item attacks and non-human mob attacks. Report if you see anything weird fix: Pacifists clicking on simple robots or silicons no longer causes sparks fix: Blocked thrown batons are now properly... blocked /🆑 |
||
|
|
42d245a4be |
[MIRROR] Basic Guardians/Holoparasites [MDB IGNORE] (#24921)
* Basic Guardians/Holoparasites (#79473) ## About The Pull Request Fixes #79485 Fixes #77552 Converts Guardians (aka Holoparasites) into Basic Mobs. Changes a bunch of their behaviours into actions or components which we can reuse. Replaces some verbs it would give to you and hide in the status panel with action buttons that you may be able to find more quickly. They _**should**_ work basically like they did before but a bit smoother. It is not unlikely that I made some changes by accident or just by changing framework though. My one creative touch was adding random name suggestions. The Wizard federation have a convention of naming their arcane spirit guardians by combining a colour and a major arcana of the tarot. The Syndicate of course won't truck with any of that mystical claptrap and for their codenames use the much more sensible construction of a colour and a gamepiece. This lets you be randomly assigned such creative names as "Sparkling Hermit", "Bloody Queen", "Blue World", or "Purple Diamond". You can of course still ignore this entirely and type "The Brapmaster" into the box if so desired. I made _one_ other intentional change, which is to swap to Mothblocks' nice leash component instead of instantly teleporting guardians back to you when they are pulled out of the edge of their range. They should now be "dragged" along behind you until they can't path, at which point they will teleport. This should make the experience a bit less disorienting, you have the recall button if you _want_ to instantly catch up. This is unfortunately a bumper-sized PR because it did not seem plausible to not do all of it at once, but I can make a project branch for atomisation if people think this is too much of a pain in the ass to review. Other changes: - Some refactoring to how the charge action works so I could individually override "what you can hit" and "what happens when you hit" instead of those being the same proc - Lightning Guardian damage chain is now a component - Explosive Guardian explosive trap is now a component - Added even more arguments to the Healing Touch component to allow it to heal tox/oxy damage and require a specific click modifier - Life Link component which implements the Guardian behaviour of using another mob as your health bar - Moved some stuff about deciding what guardians look and are described like into a theming datum - Added a generic proc which can return whether your mob is meant to apply some kind of damage multiplier to a certain damage type. It's not perfect because I couldn't figure out how ot cram limb modifiers in there, which is where most of it is on carbons. Oh well. - Riders of vehicles now inherit all movement traits of those vehicles, so riding a charging holoparasite will let you cross chasms. Also works if you piggyback someone with wings, probably. ## Changelog 🆑 refactor: Guardians/Powerminers/Holoparasites now use the basic mob framework. Please report any unexpected changes or behaviour. qol: The verbs used to communicate with, recall, or banish your Guardian are now action buttons. balance: If (as a Guardian) your host moves slightly out of range you will now be dragged back into range if possible, rather than being instantly teleported to them. balance: Protectors now have a shorter leash range rather than a longer one, in order to more easily take advantage of their ability to drag their charge out of danger. balance: Ranged Guardians can now hold down the mouse button to fire automatically. balance: People riding vehicles or other mobs now inherit all of their movement traits, so riding a flying mob (or vehicle, if we have any of those) will allow you to cross chasms and lava safely. /🆑 --------- Co-authored-by: san7890 <the@ san7890.com> * Basic Guardians/Holoparasites * Modular --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: san7890 <the@ san7890.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
a1e46c5d31 |
Basic Guardians/Holoparasites (#79473)
## About The Pull Request Fixes #79485 Fixes #77552 Converts Guardians (aka Holoparasites) into Basic Mobs. Changes a bunch of their behaviours into actions or components which we can reuse. Replaces some verbs it would give to you and hide in the status panel with action buttons that you may be able to find more quickly. They _**should**_ work basically like they did before but a bit smoother. It is not unlikely that I made some changes by accident or just by changing framework though. My one creative touch was adding random name suggestions. The Wizard federation have a convention of naming their arcane spirit guardians by combining a colour and a major arcana of the tarot. The Syndicate of course won't truck with any of that mystical claptrap and for their codenames use the much more sensible construction of a colour and a gamepiece. This lets you be randomly assigned such creative names as "Sparkling Hermit", "Bloody Queen", "Blue World", or "Purple Diamond". You can of course still ignore this entirely and type "The Brapmaster" into the box if so desired. I made _one_ other intentional change, which is to swap to Mothblocks' nice leash component instead of instantly teleporting guardians back to you when they are pulled out of the edge of their range. They should now be "dragged" along behind you until they can't path, at which point they will teleport. This should make the experience a bit less disorienting, you have the recall button if you _want_ to instantly catch up. This is unfortunately a bumper-sized PR because it did not seem plausible to not do all of it at once, but I can make a project branch for atomisation if people think this is too much of a pain in the ass to review. Other changes: - Some refactoring to how the charge action works so I could individually override "what you can hit" and "what happens when you hit" instead of those being the same proc - Lightning Guardian damage chain is now a component - Explosive Guardian explosive trap is now a component - Added even more arguments to the Healing Touch component to allow it to heal tox/oxy damage and require a specific click modifier - Life Link component which implements the Guardian behaviour of using another mob as your health bar - Moved some stuff about deciding what guardians look and are described like into a theming datum - Added a generic proc which can return whether your mob is meant to apply some kind of damage multiplier to a certain damage type. It's not perfect because I couldn't figure out how ot cram limb modifiers in there, which is where most of it is on carbons. Oh well. - Riders of vehicles now inherit all movement traits of those vehicles, so riding a charging holoparasite will let you cross chasms. Also works if you piggyback someone with wings, probably. ## Changelog 🆑 refactor: Guardians/Powerminers/Holoparasites now use the basic mob framework. Please report any unexpected changes or behaviour. qol: The verbs used to communicate with, recall, or banish your Guardian are now action buttons. balance: If (as a Guardian) your host moves slightly out of range you will now be dragged back into range if possible, rather than being instantly teleported to them. balance: Protectors now have a shorter leash range rather than a longer one, in order to more easily take advantage of their ability to drag their charge out of danger. balance: Ranged Guardians can now hold down the mouse button to fire automatically. balance: People riding vehicles or other mobs now inherit all of their movement traits, so riding a flying mob (or vehicle, if we have any of those) will allow you to cross chasms and lava safely. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
10772c60ff | Merge remote-tracking branch 'skrat/master' into upstream-oct-25-2023 | ||
|
|
8fab5b6ccb |
[MIRROR] basicmobs that qdel on death ghost before qdel [MDB IGNORE] (#24297)
* basicmobs that qdel on death ghost before qdel (#78931) ## About The Pull Request  ## Why It's Good For The Game its faster i think ## Changelog 🆑 code: basicmobs that delete on death, ghost before dying /🆑 * basicmobs that qdel on death ghost before qdel --------- Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com> |
||
|
|
9644fcbc08 |
basicmobs that qdel on death ghost before qdel (#78931)
## About The Pull Request  ## Why It's Good For The Game its faster i think ## Changelog 🆑 code: basicmobs that delete on death, ghost before dying /🆑 |
||
|
|
b2ccdeab8b |
[MIRROR] Basic Mob Gorillas [MDB IGNORE] (#24284)
* Basic Mob Gorillas (#78918) ## About The Pull Request Now we can make basic mobs with hands easily so I did, they don't actually use their hands for anything with AI. In the future we can come back and share the monkey AI where they pick up items to hit people with, but frankly few weapons are more deadly than a gorilla's fists. IIRC I didn't really change their behaviour much, this is mostly just a straight conversion. Main difference is that they will prioritise eating nearby bananas and fruit salads over punching people. When I make these conversions nowadays I need to decide between "does this attack at the speed that it did as an NPC mob or the speed it did as a player?" I am arbitrarily deciding that gorillas are usually not players and electing for the former, but tell me if you disagree. I also made "show basic inhand sprites" into a component shared by Gorillas, Drones, and Dextrous Guardians (all also now available to become basic, once I get around to it), And I added an AI behaviour to run a basic emote. This is similar but different to "random speech", which kind of sucks and needs rewriting anyway. Gorillas don't speak, only ooga. ## Why It's Good For The Game https://www.youtube.com/watch?v=npuuTBlEb1U ## Changelog 🆑 refactor: Gorillas now use the basic mob framework. Please report any unusual side effects. /🆑 * Basic Mob Gorillas * Modular paths --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
4a618d0561 |
[MIRROR] Watcher Nest Lavaland Ruin [MDB IGNORE] (#24286)
* Watcher Nest Lavaland Ruin (#78790) ## About The Pull Request Adds a small new lavaland ruin, the Watchers' Grave.   You will need to figure out yourself how to find a way through the walls surrounding it (it's not very hard). This is mostly just atmospheric but also serves as a delivery vehicle for a unique item; an orphaned Watcher egg. (That's kind of it in terms of loot, unless you count a handful of lavaland mob corpses and mushrooms). You can either eat this (it's an egg), throw it at someone to spawn an angry watcher, or keep hold of it for a while and see what happens. <details>  That's right it's your very own baby watcher. It orbits your head and shoots at lavaland creatures for unimpressive damage. It won't ever intentionally shoot a player but they might walk in front of it, as it doesn't hurt very much they will probably forgive you. If you die it will continue circling your corpse to guard it against predation. </details> In creating this ruin I also added a new component called "corpse description". It provides some extra examine text to a corpse which is removed permanently if the mob is revived. There's a field you can varedit on corpse spawners (or make a subtype) which will automatically apply it to spawned corpses. You can use it for environmental storytelling. Or admins can use it to make fun of how you died. Also I fixed basic mobs runtiming when examined by ghosts. ## Why It's Good For The Game More variety in map generation. It's cute. Adds a tool that mappers might like. ## Changelog 🆑 add: Adds a new lavaland ruin where you can find a unique egg. /🆑 * Watcher Nest Lavaland Ruin --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
eb28d04f08 |
Watcher Nest Lavaland Ruin (#78790)
## About The Pull Request Adds a small new lavaland ruin, the Watchers' Grave.   You will need to figure out yourself how to find a way through the walls surrounding it (it's not very hard). This is mostly just atmospheric but also serves as a delivery vehicle for a unique item; an orphaned Watcher egg. (That's kind of it in terms of loot, unless you count a handful of lavaland mob corpses and mushrooms). You can either eat this (it's an egg), throw it at someone to spawn an angry watcher, or keep hold of it for a while and see what happens. <details>  That's right it's your very own baby watcher. It orbits your head and shoots at lavaland creatures for unimpressive damage. It won't ever intentionally shoot a player but they might walk in front of it, as it doesn't hurt very much they will probably forgive you. If you die it will continue circling your corpse to guard it against predation. </details> In creating this ruin I also added a new component called "corpse description". It provides some extra examine text to a corpse which is removed permanently if the mob is revived. There's a field you can varedit on corpse spawners (or make a subtype) which will automatically apply it to spawned corpses. You can use it for environmental storytelling. Or admins can use it to make fun of how you died. Also I fixed basic mobs runtiming when examined by ghosts. ## Why It's Good For The Game More variety in map generation. It's cute. Adds a tool that mappers might like. ## Changelog 🆑 add: Adds a new lavaland ruin where you can find a unique egg. /🆑 |