Commit Graph

335 Commits

Author SHA1 Message Date
Fghj240
6b2409065a Empaths is now a component instead of a trait (#93680)
## About The Pull Request

Empath has become a component instead of a trait, letting it store
variables or whatever components are good for. Also, it works slightly
differently for empath quirk users and moon heretics alike.

Additionally:
- You can only shiver when you see an evil person once. After that it
won't happen again.
- Empaths no longer get a mood debuff from seeing someone distressed. 
- Moon heretic empaths no longer get smited by evil people. 
- Moon heretic empaths aren't scared of evil people.

The component also supports empaths being able to tell if a fake dead
body is actually dead, and being able to use empath on yourself, but
those aren't enabled for the empath quirk or moon heretics. (Self-empath
would probably powercreep self aware)

## Why It's Good For The Game

While the empath quirk is incompatible with the evil quirk, the trait
wasn't. That means you could potentially become an evil empath and still
feel bad about other people feeling bad and get smited by other evil
people. Being an empath is different from having empathy, and there's
now a personality trait (compassionate) that has a very similar feature
so the mood debuff got axed and moon heretics can't get smited by
mending touch anymore.

I think being a heretic and looking into pierced realities probably
means you have the mental fortitude to not freak out when you see an
evil person. Evil people are (probably) a lot less scary than whatever
mind destroying thing is in those holes.

As for the only-getting-scared-once bit, freaking out when you see an
evil person is flavorful but annoying after it happens multiple times.
Especially if it happens after examining the same person multiple times.
2025-11-06 18:04:07 -06:00
EnterTheJake
a2c7c8e57b Heretic Antagonist Full Overhaul. (#92119)
## About The Pull Request

Heretic has received a complete overhaul. This PR touches nearly every
aspect of the antagonist. For readability's sake, not every change is
going to be listed in this pull request.

For the full list of changes please refer to the design doc:
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.

Code by Me, @Xander3359 and @Arturlang 

TGUI by @Arturlang 

Sprites by OrcaCora and GregorDM

Writing bits by @necromanceranne 

### Core changes

- Cross-pathing has been removed. Main knowledge spells are now
exclusive to their path (for the most part).

- For every main knowledge unlocked (save for the robes and the blade
upgrade), Heretics can choose one option from a draft of 3 random side
knowledges (this is a free point).

- Heretics can now purchase side knowledges from a new tab, the
"Knowledge Shop". Side-knowledges have been divided by tier (Stealth,
Defense, Summons, Combat and Main). Tiers are unlocked as you progress
toward your main path.

- Heretics now gain the grasp and mark upgrade immediately, but their
main knowledge choices cost twice as much (except for the first spell,
the robes and the blade upgrade).

- Path specific robes have been introduced! They come with their own set
of quirks.

- Each Path has received a passive ability. This passive is upgraded
when you first create your robes, and again when you complete the Ritual
of Knowledge.

- Paths have been rebalanced as a result of the removal of cross-path
progression. Cosmic and Moon paths have received soft reworks.

- Upon unlocking the path 2nd level or reaching a total of 8 points
worth of knowledge, Heretics will lose the ability to blade break (and
the limit on blades all together).

- Ascension now automatically calls the shuttle with no possibility of a
recall.

- Late join Heretic has been removed.

### New UI 
<img width="750" height="635" alt="moon path ui"
src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990"
/>


### Knowledge shop

<img width="787" height="669" alt="Knowledge shop"
src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7"
/>




### Quality of life //General balance changes

- Heretics will now gain X-ray vision for a few seconds when nearby an
eldritch essence (this effect has a cooldown).

- Ritual of knowledge now requires 1 uncommon item instead of 2. You may
now use a stunprod instead of a baton to complete the ritual. Beartraps
have been removed from the list of possible reagents.

- The maximum number of possible sacrifices required to ascend has been
reduced from 6 to 5 while the minimum has been upped to 4.

- Codex Cicatrix no longer requires a special pen to be made.

### Passive abilities

- Heretics now start with a passive ability. You can find what it does
on the path info tab after a path has been selected, and what they gain
when upgraded.

- Crafting your first set of Eldritch robes will bump your passive to
level 2.

- Unlocking the 2nd level will subsequently unlock your "Ritual Of
Knowledge"

- Completing the ritual of knowledge or ascending will net you the final
level.

### Path Specific Robes

- Armorer's Ritual is no longer a side knowledge. Each path will have
their own unique version of the ritual. This is placed after the 2nd
spell in the tree.

- Robes can no longer be destroyed by fire and acid, grant t4 flash
protection (Moth Heretics stay winning) and protection against basic
syringes, to bring them on par with other antagonist's armor sets.

- The recipe to craft the robes is now a set of armor/vest, a mask (any
mask will do now, not just gas masks), plus the unique reagent required
for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so
on)

- Wearing the robes as a non-heretic may yield some unfortunate
side-effects.

### Moon Path Rework

Moon path  rework.

Moon Heretics gain immunity to brain traumas and slowly regenerate brain
health. Equipping the moon amulette channels its effects through the
moon blade; making it unblockable and cause sanity damage instead of
brute. Ring leader's Rise now summons an army of harmless clones that
explode when attacked; the explosion briefly stuns non-heretics and
cause sanity and brain damage to them. Moon blade can also now be used
when pacified and Moon spells are no longer blocked by regular anti
magic, only mind magic protection.


**Cosmic Path Rework**

Cosmic path has received the biggest batch of changes alongside Moon.
The path has been dead last in ascension and pickrate (less than 5%) for
almost 2 years. It did gain some popularity over the last few months,
reaching the highest ascension rate in the game (12%) while mantaining a
relatively low pickrate.

Cosmic sits in a weird spot, where pretty much every knowledge
surrounding the path is either mediocre or, in the case of the
ascension, dysfunctional. Yet it has maintained a smidge of relevancy
due to how quickly Cosmic heretics can capture and sacrifice targets
thanks to Star Touch.

As a result, the best course of action would be to rebalance the
entirety of the kit; granting the heretic more tools to manipulate space
and dictate the flow of a fight, while lessening their ability to end a
confrontation by instantly sleeping their opponents.

lastly The Star Gazer is now ghost controlled ; And they shoot lazers!

<img width="636" height="451" alt="gazer gag 3"
src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b"
/>


## Why It's Good For The Game


### Ok...but why do we want this?

Again, if you want my full reasoning, please check my doc
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.

To keep it short and concise; Heretic is too complex and unintuitive for
its own good. Too impenetrable for new players and too abusable for
experienced players. This can be chalked up to a lot of poor design
decisions. But ultimately, what I believe being the biggest contributor
to the current status of Heretic is the ability to move into different
paths, also known as "Cross-Pathing".

### Cross Pathing my beloathed.

Cross-pathing, while cool in theory, overcomplicates the antagonist and
overloads them with power. Players dealing with the heretic are
incapable of working out what a given heretic can do. This also leads to
late game heretics having 3 rows Worth of action buttons and virtually
no weakness.

Over the last year, I've often received the understandable but also kind
of unfair accusations of making Heretic too powerful without a clear aim
or purpose.

My goal with the paths I've reworked over the last year (Rust,Void and
Blade) wasn't necessarily to just make them stronger (although that was
also part of the goal, as they were paths that were underperforming),
but for them to have more interactions with the sandbox and to better
live up to the fantasy presented to the player.

If an harbringer of frost gets countered by a cup of coffee, we probably
messed something up.


Unfortunately, the current incarnation of Heretic doesn't really allow
for surgical balance changes to specific paths. Every time a knowledge
gets buffed, we make every path that can easily tap onto that knowledge
stronger by default. It doesn't take a genius to understand why this
system is ultimately unsustainable.

### Blade Breaking

I feel that after a heretic has reached the near peak of their power,
they no longer need the ability to instantly escape any encounter. Check
my doc for my full reasoning.

## Less versatile, more specialized paths.

By removing cross-pathing, we remove a huge maintainability burden from
the antagonist. Paths can now be designed around clearer strengths and
weaknesses. They become easier to balance and less of an headache to
understand for everyone.

It also means we can give paths some needed quality of life quirks
without having to worry how such a change might have a knock-on effect
for other paths.

Ash heretics can finally let loose without dying by their own flames.
Cosmic Heretic can go to space without having to carry a modsuit. Moon
Heretic can use their abilities without fear of one random trauma
ruining their day, and so on.

### What a horrible night to have a curse...., wait how do I curse
people again?

As of right now the heretic tree has quite a hefty amount of trinkets
that pretty much never see use.

Partly because the tree itself is a nightmare to navigate. And partly
because why would anyone set up an elaborate plan or scheme when they
can unleash 2 rows of spell in the span of bunch of seconds.

Heretics mostly gravitate towards powers that push them towards greater,
more potent combat strength. If it doesn't contribute to killing people
quicker, it isn't worth doing for most. And given the opportunity cost
associated for taking those powers, they will remain that way so long as
there are better choices to be poached.

The new draft system encourages Heretics to play more with the tools at
their disposal. If you want to go for a specific combo from the side
path options, you may now do so by tapping into the knowledge shop.

Yes, the shop does include a few knowledges from the other paths. But
these are limited to 1 per path, are very expensive and can only be
unlocked very late into the shift.

## Drip Of the Mansus

The iconic heretic robe is actually sequestered to a side path that is
most easily access by only two paths at a time. Since heretic paths are
being made to be much more specialized, the most obvious way in which
this can be showcased is through an easily
identifiable outfit.

By using the robes, we can both telegraph WHAT heretic you are looking
at, and just how much power they've accumulated and when it is
reasonable to take the kid gloves off and treat them as a genuine
threat. If a heretic is in their
robes, that heretic is now a significantly more prominent danger to the
station.

It also serves as a useful means for gating some of the more powerful
effects of a heretic's path behind the robes, AND enable options for
disarming them of that power should they be captured without making it
something endemic to their mob.

A major problem with heretics is a lack of certainty as to how powerful
they have become. A heretics robes is one of the milestones to help
players dealing with heretics identify that.

### Will this be 100% fair and balanced?

This is a massive overhaul to a pretty complex and bloated antagonist.
I've done my best to show the changes to several maintainers and other
members of the community for their feedback. But at some point we'll
have to see how this behave in the environment to get a feel if
something is over or undertuned. (that's my way of saying, yes this is
likely gonna require a testmerge or two).

What I will say is that I'm not trying to change the core identity of
Heretic.

Heretics should have the upperhand in single encounters early on, be
able to joust a small group of players after they unlock their final
spell, and end the round when they ascend. They're a progression
antagonist. They should retain their payoff as well as pose a danger as
they grow stronger.

But if more players feel like they are more reliably able to play the
antagonist in more varied and interesting ways, rather than the
antagonist largely existing as a measuring stick for 'robustness' due to
its elitist design philosophy, then the rework has been a success. There
should be something for
everyone in the antagonist, as is true for all of our antagonist roles.
2025-10-15 22:34:51 +00:00
die
0204ab8fdd Canreach refactor (#93165)
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147

full credit to @Kapu1178 for the juice

instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
2025-10-07 20:28:59 +02:00
MrMelbert
ce50179f7c Mind readers can read what people are typing (#93059)
## About The Pull Request

When a Mind Reader examines someone who is typing, it will show them
what they are actively typing

<img width="518" height="97" alt="image"
src="https://github.com/user-attachments/assets/8d54aa56-85fc-4e03-b0a3-bfb8e475beff"
/>

No, it won't read OOC messages.

## Why It's Good For The Game

Your next line is, "This sounds really funny for gimmicks like security
interrogations or fortune telling, or for getting the jump on someone as
they try to get the jump on you, or just to be a badass by finishing
people sentences"

## Changelog

🆑 Melbert
add: When a mind reader examines a mob, they'll get a glimpse into what
that mob is currently typing, before they even send the message.
qol: Mind Reader now groups up all the information it gives you in a box
admin: Mind Reader now logs everything the reader gleamed from the
read-ee
/🆑
2025-10-04 01:29:31 +02:00
deltanedas
49ae3ade8f fix elvis mutation constructor copy paste (#93144)
## About The Pull Request

fixed copy paste mistake where there are 2 constructors for chav, 1
below elvis since it was copy pasted without being changed

## Why It's Good For The Game

chav accent might have been using the elvis word replacements and elvis
didn't replace words at all??

## Changelog
nobody will notice this :trollface:
2025-09-30 17:20:49 +02:00
necromanceranne
300b41d998 The Roidening: Getting swole improves your unarmed damage floor and possible stagger combo outcome. (#93125)
## About The Pull Request

Increases the minimum possible damage an unarmed attack can inflict by
your athletics level.

For a normal human punch, you would typically roll between 5 and 10
damage. For a legendary athlete, they will always roll 10 damage.

For a normal human kick, you would typically roll between 7 and 15. For
a legendary athlete, they will instead roll between 14 and 15.

This alteration cannot increase your maximum potential damage. Only
improve the floor. If your arm has a max value of 1, it will be still 1
even if you're a legendary athlete.

TRAIT_STRENGTH increases the maximum possible damage you can roll by 2,
regardless of limb values. You still need to roll that damage, and this
is not a flat increase to the damage you deal.

The Strength gene has a higher instability due to its new functionality.
(5 > 10)

Your athletics skill also improves the possible outcomes of a stagger
combo.

## Why It's Good For The Game

Kryson has been nudging about this for weeks at this point so I'm taking
him up on his offer and implementing athletics benefits to standard
unarmed attacks.

Damage consistency does improve the average unarmed damage output of the
standard spaceman's humble fist, but it still keeps it within a
particular damage bound. Effects that increase the actual damage are
still gated behind temporary buffs, limb improvements or genetics, which
mostly means you're interacting with other players in some fashion or
will need to interact with other players to get the full monty of
possible unarmed improvements.

It also just _feels_ right. Improving fitness gives a lot of minor
imrpovements, but this one seems obvious for what it otherwise
thematically should be doing. If you appear to be strong, getting
punched by you probably will hurt and you are probably pretty good at
hitting with a particular kind of explosive power consistently.

## Changelog
🆑
balance: Unarmed attacks deal more consistent damage and more impactful
against staggered opponents the more athletic you are.
balance: The strength gene now improves your unarmed upper potential
damage a bit. It increases instability slightly more as a result.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-09-27 17:39:36 +02:00
necromanceranne
d556e92d52 Special version of hulk (wizard, warlord superhuman powers) no longer suffer recoil damage from breaking walls. Recoil actually uses wound rolls and not forced wounds (#92992)
## About The Pull Request

### Special versions are no longer vulnerable to recoil

There are two versions of hulk that are not available under normal
circumstances. The version given by wizard's Transformation, and the
version that Warlord pirates spawn with. These versions no longer break
their arms when destroying walls.

Normal versions, like the genetic hulks and the orc variant, still
suffer this effect.

### oof ow my bones

Hulk recoil damage now utilizes RNG wound determination. This allows for
the wound to escalate normally if the wound meets the threshold. The
damage passed means that there is a roughly 50/50 chance to cause a
dislocation, a very slim chance to roll a fracture, and this probability
will grow worse once the arm is wounded and threshold penalties start to
take effect.

This also means that the mutation respects wound resistance and wound
vulnerability, where as the previous behavior did not.

### Cleans up some mutation code a smidge

There is clearly some leftovers from prior refactors still littered
through mutation code, so I did some maintenance while I was here.

## Why It's Good For The Game

https://github.com/tgstation/tgstation/pull/51389 introduced this
weakness to dissuade hulks from flattening walls all the way to the
armory (for the fuckbillionth time). However, it applies to all versions
of hulk, including instances where it is an antagonist's ability or
power. Rather than have antagonists suffer from balance considerations
largely aimed at crew/tiders, we make them exempt so that they can SMASH
to their heart's content.

Hulk wound determination was kind of weird. For one, it relied heavily
on the arm health consistently being 50. When it wasn't, you started
getting into less reliable behaviour. In addition, it does not at all
respect any kind of vulnerability or resistance to wounding.

It is possible that utilizing this system was so that the wounding
effects would be staggered out rather than sporadic, and so slightly
fairer on the user by being more reliable. However, I think letting it
operate similarly to how our natural wound determination effects work
provides some more interesting outcomes for those who might want to use
the mutation in an earnest fashion, and still otherwise limits those
people who are just looking to low effort grief.

I think in retrospect this might have been a pretty heavy-handed nerf,
but I'm not wholly reversing it, I'm just making it...different.
Outcomes should be largely the same.
2025-09-22 19:54:07 -05:00
MrMelbert
135a09182b Refactors obscured (#92779)
## About The Pull Request

Fixes #85028

Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.

Closes #92760

Just removes the species exception checks for not making sense

Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.

## Why It's Good For The Game

Stops a million excessive calls to `check_obscured_slots`

Makes obscured behavior more consistent

Makes obscured behavior easier to use

Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)

## Changelog

🆑 Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/🆑
2025-09-07 09:24:34 +02:00
Tim
dce0bf9f9a Correct bitwise logic for bitfield checks (#92609)
## About The Pull Request
This fixes several bitfield operations that were missing parenthesis
encapsulation. I noticed this problem in:
- #92601

And decided to use regex to search for similar patterns which I came
across in:
- Move loops bypassing the `MOVELOOP_STATUS_RUNNING` status
- Elastic arms mutation bypassing `ABSTRACT` object flags for picking up
objects
- Species radiation bypassing `HEAD_HAIR` hairstyle flags for balding
- Damaged APC board status bypassing `EMAGGED` and `BROKEN` status for
screentips
- Shuttle cleanup code bypassing `MOVE_CONTENTS` for moving old turfs
- Tram crossing signals bypassing `NORTH` and `EAST` direction checks

## Why It's Good For The Game
Code behaves as intended.
2025-09-01 02:16:22 +00:00
Arturlang
0bc42d6940 Fixes the issue of usr pointing to admins by making Trigger pass down clicker (#92354)
## About The Pull Request
Fixes the issue of usr pointing to admins by making Trigger pass down
clicker, as usr is fucky and can be passed down by other unrelated
procs. Fun.
Added the clicker arg to all usages of Trigger as well
Also changes isobserver check in antagonist ui_act code that prevents
observers from clicking UI's instead to check if the ui.user is
owner.current
## Why It's Good For The Game
Fixes admins giving heretic to people opening the heretic UI for the
admin instead
2025-08-05 22:58:40 -05:00
Y0SH1M4S73R
aac161bce9 Allows blocking language speech and comprehension separately (#91884)
## About The Pull Request

There was a PR I wanted to make, but one of the features I wanted the
addition to have was for an affected mob to only speak aphasic, but
understand whatever languages they'd normally be able to understand.
This, in turn, required refactoring language holders to separately block
language speech and comprehension. This change, I decided, would be good
to split into its own PR.

## Why It's Good For The Game

Allows more fine-grained control over what languages an atom is blocked
from speaking or understanding. This will be useful for future PRs or
admin events.

## Changelog

no player-facing changes
2025-07-07 15:55:16 +12:00
Ghom
5096b311b8 Fixing more dna console / mutation issues [NO GBP] (#91717) 2025-06-21 03:12:07 +02:00
Ghom
14fb86e3e8 Mutation code cleanup, mutations now have sources to avoid concurrency problems. (#91346)
## About The Pull Request
This PR aims to clean or bring up to date portions of code about dna,
the dna console and mutations. This includes taking care of or removing
some of the awful choices like the pratically useless
`datum/mutation/human` pathing, or the class variable, in favor of using
sources to avoid potential issues with extraneous sources of a mutation.

The files changed are over a hundred just because I removed the
`datum/mutation/human` path, but the actual bulk of the code is mainly
shared between the datum/dna.dm, _mutations.dm and dna_console.dm.

## Why It's Good For The Game
Mutation shitcode is hurting my future plans for infusions a little.
Also it's a much needed refactor. Drafted 'till I'm sure it works
without issues.

## Changelog

🆑
refactor: Refactored mutation code backend. Report any issue.
/🆑
2025-06-08 13:57:10 +02:00
SmArtKar
b4061f1800 [MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request

Refactors most of blood handling code untouched by #90593 and completely
rewrites all blood decals, components and reagents.

- Blood types now have behavioral flags which allow them to control
where they leave decals/DNA/viruses. Oil no longer transfers DNA and
viruses with it, while podpeople water-blood doesn't leave visible
decals on turfs and items, but still can be picked up by DNA scanners.
- Multiple blood types have received unique handling - liquid
electricity blood now glows in the dark, oil trails are flammable and
lube ones are slippery. Oil blood can be restored with fuel, lube with
silicon and slime with stable plasma (as normal plasma already passively
regenerates their blood), instead of everything using iron. Saline
solution only supplements on iron-based blood and won't do anything to
help with bloodloss for species who rely on different blood types.
(Roundstart this applies only to Ethereals)
- All blood logic has been moved away from the blood reagent itself into
a blood element that is assigned to the blood reagent by default, and to
any reagent that's drawn from a mob as their "blood" (in
``transfer_blood_to``). This means that blood you draw from lizards will
be green and have lizard's blood description instead of mentioning red
blood cells, Ethereal "blood" will actually contain their DNA and genes,
etc.
- Refactored all blood decals. Blood states are no more, everything is
now handled via blood DNA. Credits to MrMelbert and Maplestation, as a
significant amount of code has been taken from
https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his
followup PRs. Oil and xenomorph splatters are now subtypes of blood,
blood drying is now animated, blood trails now curve and can be
diagonal.
- Rewrote bloodysoles and bloody_spreader components, credits to Melbert
again for the former, while latter now makes more sense with its
interactions. Bloody soles no longer share blood DNA with your hands.
- Ported Melbert's bloody footprint sprites and bot-blood-spreading
functionality.
- Removed all species-side reagent interactions, instead they're handled
by said species' livers. (This previously included exotic blood
handling, thus the removal)
- Slightly optimized human rendering by removing inbetween overlay
holders for clothing when they're not needed.
- Blood-transmitted diseases will now get added to many more decals than
before.
- Cleaned up and partially refactored replica pods, fixed an issue where
monkeys/manipulators were unable to harvest mindless pods.
- Exotic bloodtype on species now automatically assigns their blood
reagent, without the need to assign them separately.
- Clown mobs now bleed (with colorful reagent instead of blood during
april fools), and so do vatbeasts (lizard blood)
- Implemented generic procs for handling bleeding checks, all sorts of
scanners now also correctly call your blood for what it is.
- Podpeople's guts are now lime-green like their organs, instead of
being weirdly greyish like their water-blood. (Their bleeding overlays
are still grey, as they're bleeding water)
- Slimepeople now can bleed. Their jelly is pale purple in color, but
their wound overlays copy their body color.
- Injecting/spraying/splashing/etc mob with a reagent preserves its
data, so you could theoretically recycle fine wines from someone's
bloodstream
- Fixed burdened chaplain's sect never actually giving a blessing when
applying effects, and giving a blessing when nothing can be healed.
Inverted check strikes again.

- Closes #91039 

#### Examples

A lot of blood here has dried, visually the blood colors are almost
exactly the same as before either of the blood refactors.


![dreamseeker_BSP7FE9pRB](https://github.com/user-attachments/assets/45711fa0-ae65-4ec2-9e89-753fa7dd876f)

![dreamseeker_zyv9ssh5VN](https://github.com/user-attachments/assets/7b112854-b7e3-4bfe-b78b-199a55b5b051)
2025-05-31 19:38:07 -05:00
Ghom
075ed50650 Mutation chromosomes code improvement (#91033)
## About The Pull Request
I was about to start working on something, but then I've noticed
chromosomes-related code was looking quite old and had some magic
numbers in it, so I've decided to update it a little.

## Why It's Good For The Game
Better code.

## Changelog
N/A

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-05-17 12:41:25 -07:00
MrMelbert
19eb41a53c Clear Farsight and Rock Absorber effects on mutation removal (#90787)
## About The Pull Request

Fixes #90637

Adds on remove effects for Farsight and Rock Absorber, because I forgot.

## Changelog

🆑 Melbert
fix: Losing Farsight or Rock Absorber mutations will properly drop their
effects as well
/🆑
2025-04-25 15:17:19 +00:00
MrMelbert
e99048d37f Adds some positive mutations (#90393)
## About The Pull Request

- Hypermetabolic Blood
   - You bleed 1.5x more, but regenerate blood 6x faster. 
- For reference: A moderate slash wound is ~2 blood loss per tick, a
crit slash wound is ~4 blood loss per tick, and you regenerate ~0.25
blood per tick.
- For weak bleed wounds, you will net lose less blood per tick with the
mutation than without.
- However, for strong bleed wounds you will net lose more blood per tick
with the mutation.
- Ultimately, you will (obviously) recover much faster once closing the
wound.
   - Affected by synchronizer and power
- Rock Eater
 	- You can eat materials like a golem.
- Rock Absorber
- You can eat materials like a golem, and you will also gain golem buffs
from them.
	- Combination gene from "Rock Eater" and "Stoner" 
- I didn't (deeply) vet if any of these effects would be OP combined
with other genes, but I'm chalking it up to emergent gameplay if I miss
something
- Farsight
	- Gives you an action button which lets you expand your view range
	- Affected by power
 - Inexorable
- Disables soft crit, but entering the threshold for soft crit will
cause ticking brute/toxin damage and force you to whisper.
       - No slimepeople can't cheese this 
    - Also is an innate "painkiller".
    - Affected by synchronizer

## Why It's Good For The Game

Just some random mutation ideas I had, for more genetics shenanigans.
They're all relatively unobtrusive but have some niche potential
(Bleeding more for Blood Cult? Farsight + Thermals? Inexorable +
Martyrdom?)

## Changelog

🆑 Melbert
add: "Hypermetabolic Blood" Mutation
add: "Rock Eater" Mutation
add: "Rock Absorber" Combination Mutation
add: "Farsight" Mutation
add: "Inexorable" Mutation
/🆑
2025-04-12 14:02:53 +10:00
MichiRecRoom
b458137f8c The radioactive mutation now ensures it has an owner before modifying the radioactivity (#89805)
## About The Pull Request
https://github.com/Monkestation/Monkestation2.0/pull/5690 exposed the
fact that `/datum/mutation/human/radioactive/modify()` assumes we have
an owner.

However, the parent proc, `/datum/mutation/human/modify()`, does not
make this assumption - and as such,
`/datum/mutation/human/radioactive/modify()` shouldn't either.

This PR modifies `/datum/mutation/human/radioactive/modify()` to check
if our `owner` variable is set (and valid!) before applying the
radioactivity changes.
2025-03-08 13:43:19 -06:00
MrMelbert
ffd97819c1 Pixel adjustments to mobs are now sourced / Refactors riding (#89320)
## About The Pull Request

Fixes #85980

- Pixel adjustments are now sourced

When tweaking a mob's pixel w, x, y, z, is is now done via `add_offsets`
and must have a source string associated

- Refactors riding

Refactors how riding component selects the offsets to use. It's now all
done via the getter rather than a weird mix of a var, a cache, and a
getter.

- Moves a bunch of animations to use `pixel_w` / `pixel_z`

Largely to prevent conflicts with adjustments to a mob's pixel position,
but also as many animations are not actual movements, but visual
movements. Floating is one such example.

## Why It's Good For The Game

It just works

## Changelog

🆑 Melbert
fix: Fixed grab offsets not showing for anything but passive grab
fix: Fix jank with mob offsets when riding things
refactor: Refactored riding component, particularly how it selects layer
and offsets. Report any oddities
refactor: Refactored pixel offsets of mobs. Report any oddities
/🆑
2025-02-12 17:16:13 -07:00
necromanceranne
705da6a08f Removes TRAIT_ALLOWED_HONORBOUND_ATTACK since it is deprecated (#89151)
## About The Pull Request

fixes https://github.com/tgstation/tgstation/issues/89149

## Why It's Good For The Game

This trait not only no longer is needed, but functionally allows for an
exploit! Let's get rid of it.
2025-01-30 14:24:42 -06:00
SmArtKar
3499727a6d Implements datumized embedding handlers in place of element-component-datum triad (#88511)
## About The Pull Request

This PR completely rewrites our embedding system in favor of embedding
datum handlers which acts as containers for all embedding-related data
and logic.

Currently embedding logic relies on an element-component-datum triad,
where elements on the items handle embedding logic, singleton datums
store embedding data and components (which get assigned to ***mobs*** in
whom the item embedded) handle pain and the item being ripped out. How
do we access all the procs? By using comsigs as procs, which is really
bad. This code was written back in 2020 when DCS was hot stuff but in
hindsight this implementation was a mistake, as it heavily restricts
custom embedding behaviors unless you're willing to constantly run
GetComponent (bad, ugly, incarnation of evil)

This PR rewrites all that logic to be handled by lazyloaded
``/datum/embedding``, which is stored similarly to current
``/datum/embed_data``. Upon being requested, it is initialized and
assigned to a parent from whom all the logic is handled, from being
embedded to pain and having the item ripped out. On projectiles this
only handles one proc, after which it copies itself down to the shrapnel
item instead and runs the chain further from there.
Ideally, most embedding-related logic now should be handled purely
datum-side - in most cases items should not be hooking up to themselves
like they did before (unless said logic is for when the item is made
sticky or smth) and instead the code should be handled by the embedding
datum (see sholean grapes implementation in this PR). This should allow
us to do fancy stuff like syringe guns embedding syringes into targets
and injecting them that way, and fix some bugs along the way.

Closes #88115
Closes #87946

Also fixed a bug with scars not displaying when examined closely from
#86506 because i was in the area anyways
2025-01-02 23:18:27 +00:00
SmArtKar
7ddc30783a Adds better attack animations and alternate attack modes (#88418)
## About The Pull Request

This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.

Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).

Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!

https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1

Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)

Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.

Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
2024-12-17 12:35:52 -06:00
SmArtKar
bbb7a41743 Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.

### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.

<details>

<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>


Before:


https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e

After:


https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915

</details>


<details>

<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>


Before:


https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348

After:


https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238

</details>

### But how will this affect the ~~trout population~~ gameplay?

Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.

This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.

Closes #71822
Closes #78547
Closes #78871
Closes #83901
Closes #87802
Closes #88073

## Why It's Good For The Game

Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.

Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.

## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
2024-11-23 04:02:35 -08:00
carlarctg
3c81163f65 Reverts change that altered pyrokinesis recipe to require firebreath instead of fiery sweat (#87949)
## About The Pull Request

Reverts change that altered pyrokinesis recipe to require firebreath
instead of fiery sweat

## Why It's Good For The Game

I don't know who did this and why. Fiery breath is a PITA to obtain and
I never wanted it to need it.

## Changelog

🆑
fix: Reverts change that altered pyrokinesis recipe to require
firebreath instead of fiery sweat
/🆑
2024-11-17 04:18:12 +01:00
Roxy
413207b9c2 Refactor gene combination recipes to not use strings (#87629)
## About The Pull Request
Rewrite `/datum/generecipe` to have two variables, `input_one` and
`input_two` that hold the type path of the ingredients for the recipe,
instead of it being a semicolon-separated string.

## Why It's Good For The Game

Better code, will catch invalid type paths in recipes at compile-time.

## Changelog

No player-facing changes
2024-11-03 14:40:42 +01:00
Roxy
1a1365efc8 Fix two broken gene combination recipes (#87581)
## About The Pull Request
Changes the required genes for `/datum/generecipe/cindikinesis` and
`/datum/generecipe/pyrokinesis` to have the correct path to the fire
breath gene.

## Why It's Good For The Game
Bug fix is good.

## Changelog
🆑
fix: The gene recipes for cindikinesis and pyrokinesis should now work
properly.
/🆑
2024-11-01 00:24:57 +01:00
Ghom
778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
necromanceranne
7a7a2df02f Shock Touch is less-than-lethal, doing less lethal damage but now doing some stamina damage, staggers instead of chaining (#87289)
## About The Pull Request

Shock Touch does slightly less burn damage from its shock (5), but does
a reasonable amount of stamina damage in return (20). The cooldown is
also lower. This makes it a less-than-lethal attack. The damage is
reduced by the targets energy armor. Obviously, still does nothing
against targets immune to shocks.

If it has a power chromosome, rather than chain, it instead staggers for
6 seconds.

Still does full lethal damage to any non-carbon mobs.

## Why It's Good For The Game

Shock touch is vaguely useful, but fairly mediocre except as a surprise.
While it does indeed remove weapons from peoples hands, just disarming
mostly for free isn't quite enough to turn a fight sometimes. I've
definitely disarmed someone only for them to pull out a new weapon and
keep fighting, since I didn't stop them actually responding easily. The
confusion effect is fairly light, and it wasn't quite working as a 'zap
and run' kind of power.

With this change, it definitely makes it more useful for defensive
purposes all around, without necessarily being too good as an actual
fight closer. An emergency tool at most, and maybe a decent attack to
mix in during the right circumstances.

Especially, much, much more enticing to security, who I think are the
ones this power should be most attractive too but I've struggled to
convince sec players to take the power when offered (they're quite happy
to take insulated though).

It also makes the cooldown reduction or power increase an actual choice.
Attack more often, and reduce stamina faster, or get a stagger off and
potentially slow a target down and make them easier to hit/easier for
you or harder for them to flee?

The power upgrade, previously, was complete dogshit. It mostly was just
for friendly firing a bunch of people in the vicinity of the target for
fairly minor damage at best, and didn't really contribute very much to
ending a fight sooner. Meanwhile, spamming more shock touches means more
damage output, so it was always the best option to take.

## Changelog
🆑
balance: Shock touch is now less-than-lethal, dealing a decent amount of
stamina damage at the cost of lethal damage. Lower cooldown. Power
chromosome makes it force a stagger rather than cause a chain lightning
effect (this used to do like only 5 damage so...)
/🆑
2024-10-25 02:33:36 +02:00
necromanceranne
5dcf5519b4 Finishes the reviews from #87187 that got missed before merge (#87363)
## About The Pull Request

As it says on the tin. This is just cleaning up some of the code from
reviews that got missed due to an early merge.

## Why It's Good For The Game

Oops. 

No real player facing changes since I doubt anyone has noticed anything
yet. They might during Halloween though so hopefully this is merged
before then.
2024-10-23 14:01:10 +02:00
necromanceranne
e0668a916a Fundamentally Evil People/Undead are burned horribly by Mending Touch. Chaplains are not shaken by discovering EVAAAAL! Pacifist safe! Evil unsafe! Empaths beware! (#87187)
## About The Pull Request

At a baseline, Mending Touch now burns anyone who is undead or
fundamentally evil.

Pacifists can still heal evil people, but avoid touching the undead with
the healing hand.

Evil people psychically crush empaths, so long as they're not undead.
Evil people can heal other evil people and undead (includeling evil
chaps)

Undead can heal as normal, including other undead, but not evil people
(its not a mutual friendship)

Chaplains incinerate potential targets especially well using mending
touch. Chaplains and spiritualists even shout out their god's name as
they do so. (but only chaps get the extra damage)

Empathic Chaplains are not shaken by identifying evil people. **THEY
JUST SEE A NEW TARGET TO SMITE FOR THE CRUSADE.**

## Why It's Good For The Game

**Consistency:** Undead are negatively impacted by healing effects of a
similar nature. Rather than make a whole new mutation to heal undead,
instead, we apply some different rules to allow undead or evil people
the opportunity to apply and have applied different effects based on
their status.

**Evil people are already arbitrarily shafted by niche aspects of the
game for fun:** It'd be funny if a well meaning medical staff member
tries to use mending touch on an evil guy and they just burst into
flames instead. Why? They took the quirk to screw over empaths and
nothing else.

**Undead are immensely uncommon:** This isn't going to come up much
whatsoever given that undead are almost unseen outside of Halloween.
~~What do you mean that's a few weeks away?~~

**Dumb Bullshit:** Empaths and Evil people are diametrically opposed for
silly reasons. If Empaths still hurt undead, it stands to reason that
evil people heal them out of pure spite. The two sides hurt one another
with the mutation.

**Chaplains smiting people is funny:** Chaplains aren't the main users
for the mutation, its mostly for medical staff, but they damn will seek
it out a lot of the time to augment their existing healing powers. Since
this is a feature about moral self-righteousness, its now especially
funny for chaplains to be either one of the quirk holders primary enemy
if they're on the opposing side.

## Changelog
🆑
add: Mending touch now has additional effects based on whether or not
the target or user is evil, an undead or an empath. Don't use mending
touch on evil people or undead, or they might go up in flames. Though
evil people can get back at empaths specifically and heal udnead as
normal.
add: Chaplains engulf people using mending touch's harmful reactions to
diametrically opposed entities especially well. Because of religious
zeal, of course.
add: Empath chaplains ignore the fear consequences of examining an evil
person. They instead get additional information about what to do to
these people if the need arises.
/🆑

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2024-10-20 16:19:03 +02:00
SmArtKar
70d8e92e2a Changes variable_color on limbs to use a priority system (#87216)
## About The Pull Request

Its now a priority -> color assoc list with a pair of helper procs to
wrap lazylist stuff. New priorities should go to
``code/__DEFINES/bodyparts.dm`` as defines as to be seen and not
overridden.

## Why It's Good For The Game

Wasn't a problem until carps came along as before only hulks used this
thing, now we've got clashing.

## Changelog
🆑
fix: Losing hulk after becoming a carp no longer turns you black
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-10-15 18:03:03 +02:00
Bloop
241514f520 Fixes improper static list declarations + adds grep for it (#87207)
## About The Pull Request

I randomly came across a `var/list/static` in the code, which does not
actually do what was intended, and thought it was silly. A ctrl+f
revealed that this was a fairly common mistake, so I went and fixed all
the instances of it I could find.

~~Including one in lighting code, which it looked like they were trying
to create a global list to cache generated lighting sheet values for
speed, but it was just a normal list that got created each time
pointlessly. Now those values are actually being cached (using a global
var, because a `static` list was not the right thing to use there in the
first place).~~

Nevermind, it seems that this was in fact being cached even if it
shouldn't have been, because byond. Just rearranged it there seeing as
it works either way.


## Why It's Good For The Game

Code that does what it's supposed to

## Changelog

🆑
fix: fixes a bunch of improper static list declarations
/🆑
2024-10-14 22:36:41 -06:00
necromanceranne
6658d9f324 Pyro/Cryokinesis cast range is the same as the projectile's range. Pyro and ash mutations are no longer subtypes (#87144) 2024-10-13 00:47:45 +03:00
necromanceranne
834f983f3a Adds the Fundamentally Evil quirk. Interactions with Empathy and Honorbound. (#87045)
## About The Pull Request

Adds the Fundamentally Evil quirk. The quirk does nothing in of itself.

If an Empath examines you, they will be shaken up by the fact that you
are totally evil.

Mindreaders can literally see that you're evil. If they're ALSO evil, it
gives a gives a unique message.

Honorbound chaplains can freely attack you without first declaring you
evil. You are already evil. There is no outward tells for this fact, but
if the chaplain pays attention to the medical records, you might have a
problem on your hands.

You are significantly harmed by holy water and holy explosions. So don't
drink holy water if you can help it.

## Why It's Good For The Game

I just think it'd be funny to have some crew, for whatever reason, be
fully committed to being evil for no reason other than it is funny to
bother empaths.

I want a chaplain to come to the realization that I'm evil and see what
happens.

## Changelog
🆑
add: Fundamentally Evil quirk. You might act normal, but you know deep
down that you totally don't give a shit about anyone but yourself.
Empaths better watch out.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
2024-10-08 07:27:13 +02:00
SmArtKar
ad111f4950 Spacemove refactor - Newtonian physics (#84869)
## About The Pull Request

This PR significantly enhances how zero-g movement works. Its no longer
locked to one of 8 directions, everything now has inertia and is
affected by weight. This means that throwing a piece of wire will no
longer completely reverse your movement direction, and that being thrown
out of mass driver no longer will slow you down to a halt at some point.

This leads to following gameplay changes:
* Guns now accelerate you. Ballistics have higher acceleration than
lasers, and higher calibers have higher acceleration than smaller ones.
This means that firing full-auto weapons in zero-g will make you drift
and accelerate significantly. While this can be a hilarious way to
travel in space, it makes using them trickier.
* Impacting a wall or an object while moving at high speeds will cause
you to violently crash into it as if you were thrown. Careful when
exploring!
* Jetpacks now have inertia. Changes introduced in #84712 have been
mostly reverted, although speed buff has been reduced to 0.3 instead of
0.5 (although this is compensated by new movement mechanics, so overall
speed should be roughly equal). All MODsuit jetpacks now possess the
speed boost. Advanced MODsuit jets (which has also been added back) and
captain's jetpack instead have higher acceleration and stabilization
power, providing much more precise control over your movement.
* Firing guns while moving on a jetpack will partially negate your
pack's acceleration, slowing you down. Non-advanced jetpacks'
stabilization is not enough to compensate for heavy caliber weaponry as
sniper rifles, shotguns or rocket launchers.
* You no longer instantly decelerate upon sliding along a wall. Instead,
it may take a few tiles if you are moving at extreme speeds. Passing
over lattices still allows you to grab onto them!

As space movement is angle-based instead of dir-based now, its much more
smooth than before due to using new movement logic.

Example of jetpack stabilization in action:

https://github.com/tgstation/tgstation/assets/44720187/6761a4fd-b7de-4523-97ea-38144b8aab41

And, of course, you can do this now.

![jetpack_500](https://github.com/tgstation/tgstation/assets/44720187/37b11cd8-2bd1-4640-ae0c-5e0cc505bf52)

**This pull request requires extensive gameplay testing before
merging**, as a large amount of numbers have been picked arbitrarily in
an attempt to keep consistency with previous behavior (guns and
normal-sized items applying 1 drift force, which is equal to what
everything applied before this PR). Jetpacks and impacts may also
require adjustments as to not be frustrating to use.

Closes #85165

## Why It's Good For The Game

Zero-G refactor - currently our zero-g movement is rather ugly and can
be uncomfortable to work with. A piece of cable being able to accelerate
you the same as a duffelbag full of items when thrown makes no sense,
and so does instantly changing directions. Inertia-based version is
smoother and more intuitive. This also makes being thrown into space
more of a hazard (possibly opening the door for explosive
decompressions?)
Jetpack inertia and gun changes - this is mostly a consequence of
inertia-based movement. However, zero-g combat being preferred during
modes like warops was an issue due to it negatively affecting everyone
without jetpacks which are in limited supply onboard. This reverts the
mobility changes which severely impacted space exploration, while making
zero-g combat more dangerous and having it require more skill to be a
viable option.

## What's left

- [x] Refactor moth wings to use jetpack code
- [x] Refactor functional wings to use jetpack code
- [x] Locate and fix a recursion runtime that sometimes occurs upon
splattering against a wall
- [x] Add craftable tethers and modify engineering MOD tethers to use
the same system

## Changelog
🆑
add: You can now craft tether anchors, which can be secured with a
wrench and attached to with right click. They won't let you drift into
space and you can adjust tether length/cut it via lmb/rmb/ctrl click on
the wire.
add: MOD tethers now remotely place and connect to tether anchors
instead of throwing you at where they landed.
balance: MOD tethers can now be used in gravity
balance: Jetpacks are now inertia-based. 
balance: Guns can accelerate you significantly in zero-g.
balance: All jetpacks now give you equal speed buff, however advanced
MOD ion jets and captain's jetpack have higher acceleration/deceleration
values.
refactor: Refactored zero-g movement to be inertia-based and utilize
angles instead of directions.
/🆑
2024-09-26 02:49:54 -07:00
grungussuss
58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00
SmArtKar
c7f547f9f8 Acromegaly no longer makes you bonk your head on airlocks while you're inside of objects (#86121)
## About The Pull Request
Closes #86118

## Changelog
🆑
fix: Acromegaly no longer makes you bonk your head on airlocks while
you're inside of objects
/🆑
2024-09-05 09:31:51 +02:00
Ben10Omintrix
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>
2024-09-04 10:02:49 -04:00
klorpa
e1bf793264 Spelling and Grammar Fixes (#86022)
## About The Pull Request
Fixes several errors to spelling, grammar, and punctuation.
## Why It's Good For The Game
## Changelog
🆑
spellcheck: fixed a few typos
/🆑
2024-08-23 21:49:46 +02:00
klorpa
d2c7806047 Spelling and Grammar Fixes (#85992)
## About The Pull Request
Fixes several errors to spelling, grammar, and punctuation.
## Why It's Good For The Game
## Changelog
🆑
spellcheck: fixed a few typos
/🆑
2024-08-21 17:07:02 +12:00
MrMelbert
1b19505cc1 Adds a copy of the famous 1995 musical "Space Station 13: The Musical" to contraband of the autodrobe (#85724)
## About The Pull Request

Adds a copy of the famous 1995 musical "Space Station 13: The Musical"
to contraband of the autodrobe

It's a "skillchip" that forces you to sing while implanted and active

(these messages were typed normally)


![image](https://github.com/user-attachments/assets/127a4418-0863-41c1-91ba-adc21438ca9b)


![image](https://github.com/user-attachments/assets/a9da1c4f-1337-4f76-93ac-82922fe153b9)


![image](https://github.com/user-attachments/assets/b5da247a-b8c4-48f9-8a8b-41dcbfc63ca0)

## Why It's Good For The Game

Makes it easier for entertainers to put on their own version of that
historic musical

## Changelog

🆑 Melbert
add: Adds a copy of the famous 1995 musical "Space Station 13: The
Musical" to contraband of the autodrobe
/🆑
2024-08-14 13:27:11 +02:00
MrMelbert
0bb92105aa Monkification Fixes Fixes (#85104)
## About The Pull Request

Fixes #85100 

Roundstart monkeys are monkeys before they're monkeys, whoops.

## Changelog

🆑 Melbert
fix: Fixed roundstart monkeys not having monkified 
fix: Fixed being "de-monkified" while dead making it difficult to
actually de-monkey you going forward
fix: Fixed genetic scanner showing dead mobs as "transforming"
/🆑
2024-07-20 11:03:30 +02:00
MrMelbert
8e56364e98 Monkification fixes (#85064)
## About The Pull Request

- Being monkified / humanified no longer knocks you down
- Fairly certain this was one of the consequences of the stun refactors
of ages past, using `Paralyze` rather than `Stun`.
- Having monkifiaction cured now gives you the cure text
   - Didn't call parent for some reason
- Monkification grant / cure text now has spans
   - Self evident
- Being humanified now tells you what species you are rather than you're
"Human"
   - Just a small tweak
  
## Changelog

🆑 Melbert
fix: When Monkified or Humanified, you are no longer knocked down.
fix: When cured of Monkified, you get the cure text now. 
fix: The text shown when cured / given Monkification now has color. 
fix: Being humanified now tells you what species you become rather than
assuming you are a human.
/🆑
2024-07-19 00:56:38 +02:00
MrMelbert
34f3f479ae Small hulk cleanup / nukes TRAIT_IGNOREDAMAGESLOWDOWN (#85003)
## About The Pull Request

I was investigating a bug with hulk in which using it while damaged
doesn't put you back on full speed

I noticed `TRAIT_IGNOREDAMAGESLOWDOWN` on its own was subtly broken, in
that it did nothing if the user did not call `updatehealth` afterwards

And guess what, most (if not all) uses of the trait did not do this, so
it never applied correctly

So I nuked the trait entirely, made all uses of it use the same thing
morphine uses (`/datum/movespeed_modifier/damage_slowdown`)

And since I was auditing this I saw the ball module was broke, it
removed the immunity but never added it. Quick fix

I also cleaned up some Hulk stuff while I was in the area because I was
in the area. I removed all instances of `check_mutation` and replaced it
with trait checking because it made more sense.

I also also fixed a bug with the simple flying element never removing on
detach because I touched something that uses it for the above change.

## Changelog

🆑 Melbert
fix: Using hulk (and a myriad of similar effects) now properly updates
your movespeed to ignore the damage movespeed penalty
fix: Some things which temporarily make you fly don't make you fly
forever
fix: MODsuit ball module now properly makes you immune to damage
movespeed penalty when in ball form
fix: Adding Hulk via VV dropdown doesn't default to adding the strongest
hulk available (that which is used by the medieval pirates)
/🆑
2024-07-17 01:14:08 +02:00
SmArtKar
978a817283 Adds Ork subtype of hulk mutation with funny speech modifiers (#84883)
## About The Pull Request

Adds a subtype of hulk mutation created by mixing it with clumsy. Makes
the owner's skin olive green and forces a funny speech impediment on
them. Essentially revival of #69473 with some more lines

![изображение](https://github.com/tgstation/tgstation/assets/44720187/2f41dbee-5c54-4f80-bef5-fd8549afbbef)

## Why It's Good For The Game

WARBOYZ NEEDA MOAR DAKKA

funny flavor subtype for hulks which makes them sound even more brain
damaged

## Changelog
🆑
add: A new ork mutation which can be acquired by mixing hulk and clumsy.
/🆑
2024-07-12 23:52:15 +02:00
GPeckman
ed8edd5a35 H.A.R.S. no longer disables your skillchips (and also doesn't show you the brain-removal text) (#84841)
## About The Pull Request

So, this one needs some explanation. First, how does H.A.R.S. work code
wise? Well, it's pretty simple:


7d7a6da735/code/datums/mutations/body.dm (L611-L613)

It removes the victim's brain from their head and then immediately puts
it back into their chest. It also sets that special flag to true. This
is what the docs have to say about that flag:


7d7a6da735/code/modules/surgery/organs/organ_movement.dm (L27)

So basically, it suppresses the side effects of having the organ
removed. This is why H.A.R.S. doesn't kill you instantly despite
removing your brain. So why does still deactivate skillchips, since
that's also a side effect? Well, that's because brain code doesn't
actually take it into account properly:


7d7a6da735/code/modules/mob/living/brain/brain_item.dm (L112-L119)

Instead of treating the special flag as "should we prevent side
effects?" It treats it as "should we make this silent?" So I just took
the obvious route and changed that part.

There was also another bug, where you'd be shown this text upon gaining
or losing H.A.R.S.:

> You feel slightly disoriented. That's normal when you're just a brain.

That obviously shouldn't be happening, so I made H.A.R.S. pass
`movement_flags = NO_ID_TRANSFER` as well.

Fixes #84010 
## Why It's Good For The Game

Bugfix. To know why I fixed the bug in this way specifically, see above.
## Changelog
🆑
fix: H.A.R.S. will no longer disable your skillchips or show you text
reserved for total brain removal.
/🆑
2024-07-12 00:23:59 +02:00
SmArtKar
565c548108 Converts common speech modifiers into a component (#84675)
## About The Pull Request

Added a ``/datum/component/speechmod`` component which can be used to
perform basic speech modifications. It use either simple replacements or
regex, add a string at the end of any message (at a chance if required)
and convert speech to uppercase. However, a good chunk of speechmods are
far too niche and specific to be put into a speechmod component and thus
have been left alone.

## Why It's Good For The Game

Cuts down on copypasted code, makes making new speechmods easier.

## Changelog
🆑
refactor: Refactored a lot of speech modifiers to use a component
instead of copied over code.
/🆑
2024-07-08 22:52:45 -06:00
SmArtKar
b6c84135c3 Refactors embedding to use datums instead of storing data in bespoke elements (#84599)
## About The Pull Request

This refactors embedding elements to make them use singleton datums
(similarly to armor) instead being bespoke and creating a new element
every time armor values are supposed to be adjusted.
Default values have been removed from defines due to now being declared
in base class itself.
Additionally fixes vending machines and tackling gloves setting
generated shards (which they instantly embed into their victim) embed
properties to null after running the embedding code, despite said shards
having non-null embedding values by default, making them not be able to
embed into anyone else, also potentially breaking the pain/jostling code
if they somehow get updated.

## Why It's Good For The Game

Current embedding system is an unnecessarily complicated mess as bespoke
elements are hard to work with, and creating a new element every time
you change values is hacky at best. This change should make it easier to
read and work with.

## Changelog
🆑
fix: Fixed glass shards generated from falling vending machines or
tackling windows not being able to embed into anyone.
refactor: Refactored embedding code to use datums instead of bespoke
elements and ugly associated lists.
/🆑
2024-07-07 23:20:07 +02:00
carlarctg
880a552d43 Properly fixes Mending Touch (#84569)
## About The Pull Request

fixed MT hurting simplemobs

Fixed the multiplier bug properly (last fix overrode coefficients), 

Improved its wound effects, allowing it to transfer severe and critical
wounds if upgraded.

Allowed it to transfer blood between the patient and doctor as well. It
adds a teensy bit of toxin damage if the blood types are incompatible.

Added balloon alerts on various failure states.

Added an inability to use the mutation if your active arm is inorganic.

Improved the code of the mutation overall, improving and updating the
comments.

## Why It's Good For The Game

> Fixed the multiplier bug properly (last fix overrode coefficients), 

I forgor to draft it... in my defence it hadn't been approved or been up
for 24 hours so I didn't expect a speedmerg.

> Improved its wound effects, allowing it to transfer severe and
critical wounds if upgraded.

Felt lacking that it couldn't transfer severe wounds, or critical ones
if you went the extra mile.

> Allowed it to transfer blood between the patient and doctor as well.
It adds a teensy bit of toxin damage if the blood types are
incompatible.

Blood is an important part of medbay now, it's wack that I didn't gave
it that before. Also the tox thing is funny.

> Added balloon alerts on various failure states.

Player feedback : GOOD

> Added an inability to use the mutation if your active arm is
inorganic.

How are you gonna transfer wounds to you if you have a robot arm?

## Changelog

🆑
fix: fixed MT hurting simplemobs
fix: Fixed the multiplier bug properly (last fix overrode coefficients),
add: Improved its wound effects, allowing it to transfer severe and
critical wounds if upgraded.
add: Allowed it to transfer blood between the patient and doctor as
well. It adds a teensy bit of toxin damage if the blood types are
incompatible.
imageadd: Added balloon alerts on various failure states.
add: Added an inability to use the mutation if your active arm is
inorganic.
code: Improved the code of the mutation overall, improving and updating
the comments.
/🆑
2024-07-07 14:34:11 +02:00
carlarctg
6d13e2ec44 Fixed adaptations not conflictnig (#84642)
## About The Pull Request

Fixed adaptations not conflictnig

## Why It's Good For The Game

Haha whoops

## Changelog

🆑
fix: Fixed temp n space adaptations not conflicting
/🆑
2024-07-05 20:00:38 +02:00