Commit Graph

2461 Commits

Author SHA1 Message Date
Bloop
f34174414d Cleans up some extra args in Destroy() (#80642)
## About The Pull Request

After https://github.com/tgstation/tgstation/pull/80628, these shouldn't
be needed anymore right?

## Why It's Good For The Game

Cleans up some vestigial code

## Changelog
EDIT: Not player-facing.
2023-12-30 03:54:07 +01:00
Mothblocks
c1d68698fb Micro-optimize qdel by only permitting one parameter (#80628)
Productionizes #80615.

The core optimization is this:

```patch
-	var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up.
+	var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up.
```

We avoid a heap allocation in the form of copying the args over to a new
list. A/B testing shows this results in 33% better overtime, and in a
real round shaving off a full second of self time and 0.4 seconds of
overtime--both of these would be doubled in the event this is merged as
the new proc was only being run 50% of the time.
2023-12-28 13:52:44 -08:00
Bloop
31da337b68 Spellchecks let's -> lets (#80612)
## About The Pull Request

This is a spellcheck pr

## Changelog

🆑
spellcheck: changes some let's to lets
/🆑
2023-12-27 17:56:22 -08:00
Bloop
fd82421286 Fixes throwing hard del (#80551)
## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/80472

## Why It's Good For The Game

Less CI failures

## Changelog

🆑
fix: fixes a hard del with thrown items
/🆑
2023-12-25 13:00:50 +01:00
Rex9001
d063d5c124 Allows ai's to eject from mech domination (#80357)
## About The Pull Request
Lets ais eject from dominated mechs

If this is too strong at 30 I'd be happy to bump it or apply some other
restrictions
## Why It's Good For The Game
They have a big eject button which is essentially bait at the moment, it
does nothing.

I think its fine to let combat upgraded ai's and malfunctional ai's to
use this mech domination ability more freely, because how it usually
goes is malf ai dominates mech, everyone sees occupants of mech get
tossed out and the ai is promptly killed. I don't think this is fun or
healthy for an ability which is pretty expensive and the only other way
I see it used is an ai just trying to live for a few moments more by
shunting into a cargo mech, from which they can't do a whole lot and
simply exist until the crew figure them out.

TLDR: For a very expensive ability it does not provide a lot of benefit
and is easily dispatched by the crew.
## Changelog
🆑
balance: Ai's using the mech domination ability can now eject from the
mech
/🆑

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-12-23 16:21:38 -05:00
Rhials
45405782ed Deviant Crew antag panel category, Obsessed crew now shown in orbit menu, Paradox Clone orbit tab is now white (#80450)
## About The Pull Request

This rounds up the "Other" (Brainwashed, Hypnotised, Wizard Revenge, and
Obsession) antagonist category into the new "Deviant Crew" category.
This tab is white!

Obsessed crew are now displayed in the orbit panel (no other antagonists
in this group are though).

The Spacetime Aberrations (Paradox Clone) group has also been changed to
be white.

Here's how that looks:


![image](https://github.com/tgstation/tgstation/assets/28870487/415b8cbb-7ac3-4e24-9f74-466480c2aab0)
## Why It's Good For The Game

As was the case with paradox clones, observers can already discern when
a player is obsessed. It shouldn't be a pain to observe these guys,
especially when they're a more RP oriented antag that are (usually)
deserving of the audience.

I made paradox clones and obsessed the same color because they're both
in the broader spectrum of "fucked up crew".

Also converts common text entries to a single define. That is good
coding practice I think.
## Changelog
🆑 Rhials
qol: Obsessed crewmembers are now displayed in the orbit panel.
qol: The Paradox Clone orbit menu tab is now white. Neat!
/🆑
2023-12-23 21:13:35 +01:00
Jacquerel
da2de35a53 Nightmares can (sometimes) dodge lasers (#80300)
## About The Pull Request

Fixes #70760
Nightmare (and Shadow Person) darkness regeneration is now a status
effect which is refreshed every life tick.
Projectile dodging is now handled by the presence or absence of this
status effect, rather than re-checking the luminosity of the tile at the
time of bullet impact.

This essentially means that you retain your ability to dodge projectiles
for a short time after exiting a dark place, such that "being shot with
a laser" (which emits light for an extremely temporary period) does not
disrupt your ability to dodge projectile fire, which was originally
implemented _so_ that you could dodge crew ranged weaponry.

Sustained laser fire will cause the area to remain lit for longer,
meaning that a barrage of lasers (or really just sustained fire in one
direction with a carbine) is still going to remove the effect and render
you vulnerable, but that's a skill issue.

Now if you want to kill a nightmare with bullets or lasers you need to
also ensure that it is well lit, or at least that you can keep firing
your laser.

## Why It's Good For The Game

This is a function that the antagonist was _supposed_ to have, but which
has been broken for a significant period of time.
In terms of "why it is good" more specifically, it refocuses dealing
with Nightmares to be around creating persistent light sources rather
than ones which both only last for a fraction of a second and also
cannot be reached by their light-eater.

Lasers have got stronger over time, and Nightmares (for when they are
caught _outside_ of the darkness) have a significant weakness to burn
damage, meaning that they've only become less and less capable of
surviving a chance encounter with a single crew member. This should make
them _slightly_ more persistent.

## Changelog

🆑
add: Nightmares retain their ability to dodge projectiles for a brief
period after leaving a dark area, meaning it is now possible to dodge
lasers.
qol: Nightmares and Shadow People now receive a screen alert when they
are in a sufficiently dark location that their abilities are active.
/🆑
2023-12-22 20:45:36 +01:00
13spacemen
908d6f1a2b Better Ghost Selection (#80283)
## About The Pull Request
Revived my old PR https://github.com/tgstation/tgstation/pull/68901

Replaces the annoying tgui alert popup "Do you want to be X? | Yes | No
| Never for this round" that is hard to read and steals window focus,
with a nice clean alert in the top right that counts down. If it's the
same event/mob they stack with 2x, 3x, etc. It also shows how many
candidates/ghosts are signed up.

The poll alerts have screentips too, they countdown and show if you're
signed up, how many people are signed up, if you chose "never for this
round" (which is cancelable)
## Why It's Good For The Game
![Screenshot 2023-12-13
030302](https://github.com/tgstation/tgstation/assets/46101244/04061a6b-cd9a-4546-9d71-bba6a6b70d87)

Way easier to see what role is available, you get a nice pic of the role
and get it's name in big text, you can cancel "never for this round",
and you can cancel signing up for a role before the timer is up
## Changelog
🆑
refactor: Ghost roles now offer ghosts a clickable poll button. Ghosts
can select a role, deselect it, alt-click it for "Never For This Round",
can cancel "Never", can see the countdown, and can see how many other
people are signed up for the role poll.
/🆑
2023-12-22 11:44:55 -08:00
MrMelbert
bd424b38ab Fix ling blackbox feedback incrementing changeling_power_purchase when nothing was purchased (#80480)
## About The Pull Request

#80108 added `on_purchase` calls to `regain_powers` as a bugfix, due to
some powers having effects ONLY in "purchase".

Unfortunately we put blackbox logging in there.

So every time `regain_powers` is called, it incremented the tally by one
despite the fact that they weren't purchasing anything, they were
already purchased.
2023-12-22 20:33:18 +01:00
Rhials
815490deb0 Wizard Apprentices now spawn at their summoning contract, instead of the Wizard Den (#80473)
## About The Pull Request

Wizard apprentices will now spawn on the summoning contract's turf,
instead of in the wizard den.

Originally, apprentices would be spawned on the contract with a puff of
smoke, and then sent to their spawn point by the wizard antag datum. It
makes more sense for them to spawn in with the smoke, and whoever
summoned them.
## Why It's Good For The Game

More consistency with how most other antag spawners work.

I watched a wizard get confused by this last night which was kind of
funny and prompted me to make this change.
## Changelog
🆑 Rhials
qol: Wizard apprentices now spawn on the same tile as the contract that
summoned them.
/🆑
2023-12-22 20:32:29 +01:00
Ghom
1a0d888d73 Fixed a runtime error with lobstrosity charge (also rust charge). (#80392)
## About The Pull Request
Small premise: `basic_charge` can call `hit_target` for objects and not
just mobs, unlike the parent type, also you usually call
`try_hit_target` and not `hit_target` directly. That said, this PR fixes
two small issues with a couple subtypes of the charge action.

## Why It's Good For The Game
Runtimes bad.

## Changelog
N/A
2023-12-18 17:26:25 +00:00
Fikou
2125aae0c4 adds head of staff job flag (#80415)
## About The Pull Request
as we added a command role that isn't a head of staff, itd be good to
untie some checks from the command department
so i added a job flag for that, and moved what made sense to different
traits that are added to head of staff minds

## Why It's Good For The Game
revs (the gamemode not the players) shouldnt care about the bridge
assistant existing

## Changelog
🆑
fix: bridge assistant no longer passes some head of staff checks
qol: if you steal a command member's liver, you can now sabre better!
/🆑
2023-12-18 16:07:25 +01:00
LemonInTheDark
0638b11dad Fire Alarm Lights (Lit version) (Also lumin cleanup) (#80384)
## About The Pull Request
[Removes redundant uses of
luminosity](dd4ec1fc73)

I had a bunch of these left over from an old pr, sweep sweep (Made
redundant because mobs can see through all byond darkness now)

[Starts working on the fire alarm
lighting](b555ba00c6)

Dimmer but wider fire alarms, dimmer but MUCH wider lights. The idea is
to highlight fire alarms while providing a not pitchblack but vibey
space.

## Why It's Good For The Game


https://github.com/tgstation/tgstation/assets/58055496/5058bab4-0b04-4891-82d7-e3130711e5d0

Looks nice

## Changelog
🆑
fix: Fire alarms no longer cause pitch blackness, instead creating a
dark but not black red light.
/🆑
2023-12-17 10:44:59 +01:00
Jacquerel
13cd42f761 Last Resort can be used while dead (#80352)
## About The Pull Request

This PR allows Last Resort to be used while dead, in crit, or during
your reviving stasis.
Additionally it increases the stun duration applied to bystanders from 2
to 4 seconds.
The confusion applied to bystanders has been increased from 3 to 12
seconds.

Additionally it fixes a runtime which was being triggered by Last Resort
where a body part was being passed into the argument for
`bodypart_remove` which expected to be passed a human, not a limb.

## Why It's Good For The Game

Last Resort is a rarely-used ability which makes you very vulnerable and
requires you to find (or create) a corpse as a fairly fragile mob in
order to return to the round (it's a last resort in other words). It
also costs 20 chemicals, which means you need to have saved those to do
this instead of Regenerative Coma or Fleshmend.

Because it was only usable while _alive_ (not even when in crit) it was
also actually quite difficult to trigger because it requires two inputs
(there's a confirmation box about whether you are sure you want to gib
yourself) during a narrow window (where you know you are going to lose a
fight, but haven't been knocked unconscious yet). Being usable while in
crit or dead means it can now be activated during the relatively common
scenario where you are dead, handcuffed, and being dragged towards a
machine which will destroy your body without first needing to wait for
regenerative coma to complete _and_ to regenerate an additional 20
chemicals.
This likely makes changelings potentially stickier and harder to
permanently remove, to which I think: good, they're too _easy_ to deal
with at the moment and seeing them get reborn due to careless corpse
disposal is fun.

Additionally I have _slightly_ increased the duration of the stun and
disorient applied to onlookers. Previously it applied a two second stun
(and a 3 second confusion, 2 seconds of which was spent stunned),
however the headslug only spawns after a one second delay. This makes
its chance of escaping essentially nil, even if the corpse bursts
directly on top of an air vent.
With a slightly longer stun there is some chance that it will escape,
though there is still a reasonable chance that if there's more than one
person around, they will manage to catch you before you crawl into a
vent.

## Changelog

🆑
balance: Last Resort can now be used while unconscious or dead.
balance: Last Resort stuns bystanders for slightly longer.
/🆑
2023-12-17 01:11:56 +01:00
zxaber
b36986d993 Compromised APCs now flicker their darkblue screen, and it cannot be seen from cameras. (#79929)
## About The Pull Request
- APCs now show the dark blue effect periodically, once every six to ten
seconds.
- This flicker is not visible from cameras, except if the mob is anyway
within view.
- Malf AIs will see their own APCs flicker through cameras, but other
AIs will not see them, except when the AI mob itself is nearby.
## Why It's Good For The Game
This is one of those "sacrificing soul for gameplay" things.

Malf AI does not win against an aware and uninjured crew. That's just
the nature of the game. It's not even a competition, humans have too
many tools that silicons simply have no answer for. That's fine, it
makes the fight asymmetric (which is cool), and plays further into Malf
AIs (and AIs in general) using underhanded tactics to quietly unravel
their disadvantages. It makes stealth the greatest asset for an AI.

Which is why the current hacked APC sprites are not great. The AI, by
its own nature, needs to be able to make the first move. But the game is
full of tools that allow the crew to, either accidentally or on purpose,
seek out the telltale sign of a Malf AI. It's poor design that the AI is
encouraged to not use any of it's antag tools because even the process
of preparing to buy them can place them in a losing position.
## Changelog
🆑
balance: Emagged and Hacked APCs now occasionally flicker a blue effect,
and the effect is not visible with cameras.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-15 00:36:48 +01:00
LemonInTheDark
f03084c1ca FOV is Dead (Long Live FOV) (#80062)
## About The Pull Request

FOV as it is currently implemented is incompatible* with wallening.
I'm doin wallening, so we gotta redo things here.

The issue is the masking of mobs. Wallening relies on sidemap (layering
based off physical position), which only works on things on the same
plane (because planes are basically sheets we render down onto)
So rather then masking mobs, let's reuse the masking idea from old fov,
and use it to cut out a bit of the game render plane, and
blur/over-saturate the bit that's masked out.

My hope is this makes things visible in light, but not as much in
darkness, alongside making more vivid shit more easily seen (just like
real life)

Here's some videos, what follows after is the commits I care about
(since I had to rip a bunch of planes to nothing, so the files changed
tab might be a bit of a mess)

Oh also I had to remove the darkness pref since the darkness is doing a
lot of the heavy lifting now. I'm sorry.

Edit:
NEW FOV SPRITES! Thanks dongle your aviator glasses will guide us to a
better future.


https://github.com/tgstation/tgstation/assets/58055496/afa9eeb8-8b7b-4364-b0c0-7ac8070b5609


https://github.com/tgstation/tgstation/assets/58055496/0eff040c-8bf1-47e4-a4f3-dac56fb2ccc8

## Commits I Care About

[Implements something like fov, but without the planes as layers
hell](a604c7b1c8)

Rather then masking out mobs standing behind us, we use a combo color
matrix and blur filter to make the stuff covered by fov harder to see.

We achive this by splitting the game plane into two, masking both by fov
(one normally and one inversely), and then applying effects to one of
the two.

I want to make the fov fullscreens more gradient, but as an effect this
is a good start

[Removes WALL_PLANE_UPPER by adding a WALL_PLANE overlay to material
walls (init cost comes
here)](2548933739)

@Mothblocks see this. comment in commit explains further but uh, we need
to draw material walls to the light mask plane so things actually can be
seen on them, but we can't do that and also have them be big, so they
get an overlay. Sorry, slight init time bump, about 0.5 seconds. I can
kill it with wallening.

[Moves SEETHROUGH_PLANE above
ABOVE_GAME_PLANE](beec4c00e0)

I don't think it actually wants to draw here
@Time-Green I think this was you so pinging for opinion

[Resprites FOV masks to be clean (and more
consistent)](f02ad13696)

[f02ad13](f02ad13696)

This is 100% donglesplonge's work, he's spent a week or so going back
and forth with me sharpening these to a mirror shine, real chill

## Why It's Good For The Game

Walls are closing in

## Changelog
🆑 LemonInTheDark, Donglesplonge
image: Redoes fov "mask" sprites. They're clean, have a very pleasant
dithering effect, and look real fuckin good!
del: Changed FOV, it no longer hides mobs, instead it blurs the hidden
area, and makes it a bit darker/oversaturated
/🆑

###### * It's technically possible if we start using render targets to
create 2 sets of sources but that's insane and we aren't doing it
2023-12-13 15:52:24 +01:00
Time-Green
53d2b41711 [NO-GBP] Fixes highlander gibbing the whole server (#80263)
Highlander was just deleting or dropping everything, including your
bodyparts and organs

🆑
fix: Highlander wont gib every person anymore
/🆑
2023-12-12 15:51:08 -07:00
Time-Green
54ab1e3936 Organ movement refactor *Un-nullspaces your organs* (#79687)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

closes #53931, #70916, #53931

## About The Pull Request

Organs were previously stored in nullspace. Now they are stored in their
prospective bodyparts. Bodyparts are now stored in the mob.

I've also had to refactor a lot of code concerning organ movement.
Previously, organs were only moved into bodyparts once the bodyparts
were removed. To accomodate this change, two major distinctions have
been made:

**Bodypart removal/insertion**
Called only when an organ is taken out of a bodypart. Bodypart overlays,
damage modifiers or other changes that should affect a bodypart itself
goes here.

**Mob insertion/removal**
Called when an organ is removed from a mob. This can either be directly,
by taking the organ out of a mob, or by removing the bodypart that
contains the organ. This lets you add and remove organ effects safely
without having to worry about the bodypart.

Now that we controle the movement of bodyparts and organs, we can fuck
around with them more. Summoning someones head or chest or heart will
actually kill them now (and quite violently I must say (chest summoning
gibs lol)).


https://github.com/tgstation/tgstation/assets/7501474/5efc9dd3-cfd5-4ce4-b70f-d0d74894626e

I´ve also added a unit test that violently tears apart and reconstructs
a person in different ways to see if they get put toghether the right
way

This will definitely need a testmerge. I've done a lot of testing to
make sure interactions work, but more niche stuff or my own incompetence
can always slip through.

## Why It's Good For The Game

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

A lot of organ work is quite restricted. You can't C4 someones heart,
you cant summon their organs and a lot of exceptions have to be made to
keep organs in nullspace. This lets organs (and bodyparts) play more
nicely with the rest of the game. This also makes it a lot easier to
move away from extorgans since a lot of their unique movement code has
been removed and or generalized.

I don't like making PRs of this size (I'm so sorry reviewers), but I was
in a unique position to replace the entire system in a way I couldn't
have done conveniently in multiple PRs

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
refactor: Your organs are now inside your body. Please report any issues
with bodypart and organ movement, including exotic organ, on github and
scream at me
fix: Cases of unexpected organ movement, such as teleporting bodyparts
and organs with spells, now invokes a proper reaction (usually violent
death)
runtime: Fixes HARS runtiming on activation/deactivation
fix: Fixes lag when species swapping
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2023-12-09 17:50:46 +00:00
YesterdaysPromise
71a1fee2f1 Explodes device.dmi (#80025)
## About The Pull Request

I woke up today and thought 'what would be easy thing to do today so I
can say I've done something?'. Then I remembered I saw several gangtool
usages the time I split radio up, and I could remedy those. 7 hours
later, device.dmi is split in a folder of its own, and I've also given
unique sprites to door remotes and landing desginators.


## Why It's Good For The Game

The device.dmi was kind of a mess.

## Changelog

🆑
/🆑
2023-12-09 13:31:50 +01:00
MrMelbert
1e76fd70b4 Attack chain refactoring: Broadening tool_act into item_interact, moving some item interactions to... atom/item_interact / item/interact_with_atom (#79968)
## About The Pull Request

Implements half of this (with some minor changes): 


![image](https://github.com/tgstation/tgstation/assets/51863163/bf5cc4bb-5a1f-42e3-921d-9a57bc6096cc)

The ultimate goal of this is to split our attack chain in two: 
- One for non-combat item interactions
  - Health analyzer scanning
  - using tools on stuff
  - surgery
  - Niche other interactions
- One for combat attacking
  - Item hit thing, item deal damage. 
  - Special effects on attack would go here.  

This PR begins this by broadining tool act into item interact. 

Item interact is a catch-all proc ran at the beginning of attack chain,
before `pre_attack` and such, that handles the first part of the chain.

This allows us to easily catch item interaction and cancel the attack
part of the chain by using deliberate bitflag return values, rather than
`TRUE` / `FALSE`*.

*Because right now, `TRUE` = `cancel attack`, no matter what, which is
unclear to people.

Instead of moving as much as possible to the new proc in this PR, I
started by doing some easy, obvious things. More things can be moved in
the future, or technically they don't even need to move in a lot of
cases.

## Changelog

🆑 Melbert
refactor: Refactored some methods of items interacting with other
objects or mobs, such as surgery and health analzyers. Report if
anything seems wrong
/🆑
2023-12-08 23:50:19 -07:00
Fikou
fe8fae8a13 fixes punished sect instant transformation from changing species (#80174)
## About The Pull Request
so for some fucking reason the signal for removing a limb doesnt send
whether or not its a special removal (which it does for adding)
and for another fucking reason the proc whether or not an organ should
matter for burden is NEVER CALLED
fixes #76163

also i think i fucked something up with echolocation. i should make it a
subsystem. i couldnt reproduce the bugs that i had but i had those bugs
when i was on a byond version without breakpoints so rip. a few days ago
an admin tried it on live and it made an infinite amount of images. i
tried it a few days later and it didnt happen? i have no fuckin clue

## Why It's Good For The Game
AHHHHHHHHHH!!!!!!!!!

## Changelog
🆑
fix: fixes punished sect giving you burden for stuff like changing
species
/🆑
2023-12-08 18:39:24 +01:00
KittyNoodle
871b1b0416 Adds wound armor to heretic robes and gives heretic blades knife level wounding (#80146)
## About The Pull Request
Adds 20 points of wound armor to ominous robes
Adds 10 points to void robes

Adds 5 wound bonus(15 bare) to heretic blades.

## Why It's Good For The Game
Literally every other armor piece has these, I don’t know why heretic
robes were included and honestly it seems like an oversight

Heretic blades are made from knives, knives have 5 wound bonus, it makes
no sense for heretic blades to be worse than 20 force knives.

## Changelog
🆑
balance: heretic robes now have wound armor
balance: heretic blades now have knife-level wound bonuses
/🆑
2023-12-08 10:01:33 +01:00
Higgin
e9f12be172 Changes Virology Rather Than Killing It (#79854)
## About The Pull Request
God, alright, here we go. See HackMD here:
https://hackmd.io/@Higgin/HJljdBuNp

Alternative proposal to #79849 addressing the big problems with
virology. ~~If you need a HackMD for it, I'll put one together, but I
made a comment on that PR and can make it pretty simple here.~~ its done

1. Makes viruses eventually self-cure as long as you're alive. If you
can keep somebody from dying, they can develop immunity.
2. Makes it so you can sleep comfortably and be well-fed to slow and
even potentially defeat viruses without a cure.
3. Makes it so more dangerous viruses can start self-curing faster. This
means Space Ebola is going to burn itself out quicker if a person stays
alive from the other effects.
4. Makes spaceacillin helpful in naturally curing viruses, period, but
with declining effectiveness over 100 cycles.
5. Makes it so curing a virus naturally without being well-fed or having
rode it out from the peak may allow you to be reinfected/not have
natural immunity.
6. Makes it so being well-fed is a much stronger protection against
random virus spread.
7. Makes it so bypasses_immunity stuff like fungal TB and heart failure
isn't subject to any of this.
8. Makes it so using ~~antibiotics~~ spaceacillin jesus christ or being
malnourished can make you lose your healing viruses too. Pay attention
to what you put in your body.
9. ** Makes it so blood can ~~transmit resistances again, not just
vaccines. It's been a hot minute, but it used to work like this.~~ blood
now can cure a virus if the donor has a resistance, but it doesn't
confer lasting immunity. You need to overcome the virus yourself, carry
a constant supply of pure blood, or get a vaccine to get a lasting fix.
10. ** makes severity a function of disease stats and all active
symptoms - not just the highest severity of the active symptoms.
11. ** makes it so you can nosell symptoms firing with spaceacillin or
resting down to a minimum chance of cure_chance to avoid symptoms each
cycle, declining over time, over 100 cycles for a given disease.
12. ** makes it so wearing protective equipment prevents you from
spreading respiratory-spread diseases normally - not just on the
cough/sneezing symptoms.
13. ** gives MDs virology access standard, paramedics and coroners
virology access on skeleton crew. virologists also get pharmacy access.
14. ** makes bypasses_immunity advanced diseases always override
non-bypasses_immunity advanced diseases and resist being overridden by
other advanced diseases. Sentient Disease now has bypasses_immunity.
Sentient Disease fans rejoice!
15. ** also gives SD a buffer of extra stealth points so it has a bit
longer to build up instead of almost uniformly getting spotted and dying
early.
16. ** viruses now scale their severity as a function of their max
symptoms. There's a lot more room to get viruses of varying duration and
severity by adding fewer symptoms now - so creating a tradeoff between
stats (and good thresholds) and the duration of your virus.
17. ** a whole bunch of defines to control all of this stuff - most
recently added a multiplier for symptom appearance frequency.

MAJOR UPDATES: REBALANCING TOWARDS 50% LETHALITY

https://docs.google.com/spreadsheets/d/e/2PACX-1vQ8rqMYFsR1mYj_FGzVjTfcnAF7un-VofOByPxcCCQr6lOOF5fhUgZga0oA4Q5-7K4hr7fCV0jFdmd9/pubhtml#
[Viro Rework Rebalance
Tests.pdf](https://github.com/tgstation/tgstation/files/13447208/Viro.Rework.Rebalance.Tests.pdf)

After a shitload of testing, makes some of the most reliable,
transmissible killers into less-reliable threats. See the above graphs
and pictures for demonstrations of exactly how this was tested and done.

## Why It's Good For The Game

It sucks to be hard-stuck to needing chemistry and medical to deal with
viruses that somebody can randomly blast out without a care in the
world, then be left to sit around waiting to die or otherwise be unable
to do anything as the max-level symptoms fire off on repeat.

This should put curing and surviving viruses much more back in the hands
of normal crew without always ending up at the chemistry front window,
although that is still the fastest and most reliable way to get better.

This also nerfs healing viruses a bit, or makes them a bit less
fire-and-forget if you fail to attend to your body. There's more I'd
like to do in the future and potentially some of the other classic
viruses that could use bypasses_immunity added, values tweaked, but for
now - this seems like the best way to preserve virology as a level of
depth and complexity in the game in a way that rewards people doing
intuitive things to counterplay it when used harmfully.

This also puts more of the mid-range bad symptoms into a better place
balance-wise because the worst ones pretty much only fire at max stages.
With the way this works out, you bounce back and forth between the max
stage and lower stages before, over time, trending towards a cure.
Symptoms that provide more significant effects at lower stages now have
a place that isn't totally overshadowed by the killdeath stage 5 ARDS +
junk symptoms virus Dr. Ambatu Popov shat out in five minutes (as long
as you survive the initial run-in with it.)

## Changelog

🆑
balance: most diseases can now be slowed, mitigated, and eventually
cured through being well-fed, resting, and using spaceacillin. Curing
diseases through this way will give you immunity if you experience them
at their peak/maximum and aren't starving/malnourished when they cure.
balance: disease symptoms can be forestalled for up to 100 cycles with a
declining chance of avoiding them over time using rest or spaceacillin.
balance: This does not apply to things like fungal TB; it does apply to
healing viruses if you don't take care of yourself by staying fed and
avoiding spaceacillin.
balance: disease can be cured through direct injection or ingestion of
cured blood. However, curing disease in this way does not provide
lasting immunity. You need to naturally beat the virus or get a vaccine
for that.
balance: Wearing internals or using protective equipment while infected
can limit the spread of respiratory illnesses from yourself to others.
Contact transmission is still possible however.
balance: Medical Doctors now have roundstart virology access. Paramedics
and coroners now get virology access on skeleton shift access.
Virologists now have roundstart pharmacy access.
balance: Sentient Diseases now resist being overridden by other advanced
diseases and can always override other advanced diseases; they also have
an extra bonus on their stealth stat to help make up for early outing
without a bit more testing.
balance: biohazard lockers now also contain a syringe of spaceacillin
(in line with the orderable kit from cargo.)
balance: Virus severity is now also a function of the number of symptoms
out of max your virus has. Experiment with different combinations using
less than six symptoms to make viruses that are deceptively less-obvious
and less quick to self-cure at the tradeoff of stats.
/🆑
2023-12-07 16:45:17 +13:00
san7890
ff087531e5 Nar'Sie Only Ends The Round After Specific Proc Is Called (#80127)
## About The Pull Request

Addresses at least one aspect of
https://github.com/tgstation/tgstation/issues/80125#issuecomment-1839262085

Nar'Sie will no longer end the round unless a specific proc is invoked.
There is a button in the VV Dropdown (although it is painful to get to
because the icon is so long) to invoke this proc (which is confirmation
guarded). Calling this proc directly via Atom Proccall will also give
you a confirmation prompt as well.
## Why It's Good For The Game

We trivially need to know what Nar'Sie looks like at times or just need
to access some variables about it, this greatly lowers the odds that the
whole round will be completely wacked out just because of this. It also
provides a nice QoL for admins to spawn in Nar'Sie and then varedit the
image to be of a cute kitty cat, and only after their setup is complete
can they start to torture players.
## Changelog
🆑
admin: Spawning in Nar'Sie will no longer automatically trigger the
round-ender, you need to specifically start this chain of events through
the new VV Dropdown Option "Begin Nar'Sie Roundender".
/🆑
2023-12-05 20:09:28 -08:00
Mothblocks
86f6072579 Blood brother gives chat log for conversions, fix blood brothers getting more antags (maybe?), better admin logging (#80095)
I think I fixed the issue of blood brothers getting more antags by
setting special_role. Dynamic rulesets are too complicated and this
shouldn't even be possible as a bug. I intend to completely rewrite how
rulesets work.
2023-12-05 06:20:34 +00:00
distributivgesetz
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. -->
2023-12-04 14:42:43 -08:00
Autisem
1bb6db807a Fix void adaptation not reapplying when born from a headslug (#80108)
## About The Pull Request

This bug happend because of 2 things, 
1. the traits where applied to the current mob on *purchase*
2. When head slug calls regain_powers, it uses the grant proc

There are 2 solutions for this. Either make void adapatation apply its
effects on grant or change regain powers to be on purchase.

This would break admin bussing non ling events into a lings
innate_powers. but saves having to rewrite all ling thingies from
on_purchase to on_grant

## Why It's Good For The Game

Permantly losing void adaptation  because of last resort is meh

## Changelog
🆑
fix: Rebirthing from headslug properly reapplys void adaptation
/🆑
2023-12-04 06:38:46 -05:00
distributivgesetz
d0438b31bd Replaces cosmic heretic clone damage with organ damage (#80051)
## About The Pull Request

This PR replaces clone damage dealt by the cosmic blade with damage to a
random organ (8, 12, 14 respectively). To compensate for this, burn
damage will now deal 5-14-28, which is slightly weaker immediate damage
than before (6-16-32).

Someone suggested that blades should remove blood from the victim,
however I felt like that was too punishing considering the speed of
blood regeneration.

Feel free to share suggestions in the comments, if you know of a better
idea. Main point of this PR is to get rid of clone damage sources.
## Why It's Good For The Game

These are the last sources of clone damage in the game. We don't need it
anymore.
## Changelog
🆑
balance: Clone damage dealt by the cosmic blade has been replaced with
organ damage and increased burn damage. Clone damage dealt by the cosmic
beam has been removed. The star gazer now deals burn damage instead of
clone damage.
fix: The health of mobs combo'd by a cosmic blade will now update
correctly.
/🆑
2023-12-03 04:41:32 +01:00
san7890
c52d688352 Retools IS_SPINNING_1 into a trait (#80060)
## About The Pull Request

This did NOT need to be on the `/atom` level `flags_1`- when on earth is
an area going to spin? Anyways, this was really only ever used on the
`/mob` sublevel in `spin()` code, but I think this would work far better
as a trait for source-management than moving it to a mob flag or
something. So, let's do that.
## Why It's Good For The Game

Frees up a slot on `flags_1`, which is neat, as well as makes the
framework for managing "things that make you spin" potentially better
for future expansion. It also properly scopes something that only works
for mobs right now to mobs (kinda), so it's a bit better that way too.
## Changelog
Nothing that concerns players.
2023-12-02 21:42:16 -05:00
distributivgesetz
f8b41f9442 Changes occurrences of recieve in code to receive (#80065)
## About The Pull Request

I've stumbled across this enough to finally go through the entire
codebase and fix it. I left out changelogs simply because rewriting
history logs is bad.
## Why It's Good For The Game

I find it pretty annoying because I stumble across words that are
misspelled for a few seconds, and I'm likely not the only one who feels
like this. Less spelling mistakes in code are better.
## Changelog
🆑
spellcheck: Occurrences of "recieve" has been changed to "receive".
/🆑
2023-12-02 14:50:57 -07:00
Ben10Omintrix
a3c24dd74e Basic bots (medibots) (#79955)
## About The Pull Request
refactors bots into basic bots. i decided to do medibots first because
they were the most complex bots and wanted to get them out of the way
first. if this pr gets merged then i will be rolling out the rest of the
bot refactors over the next months

medibots can now wear any type of hats! some of these hats can trigger
unique new recorded voicelines and interactions!

![chickembot](https://github.com/tgstation/tgstation/assets/138636438/09d4519d-0a34-4b7f-898b-260f894bfdce)

![hatbot](https://github.com/tgstation/tgstation/assets/138636438/088e0618-108d-4fb4-a29b-771cfa027fb3)


## Why It's Good For The Game
converts medbots into basic medbots. they are now a bit more responsive
than before but overall they should act similarly to how they did. also
adds the basic bot ai framework which has all the generic bot behaviors
that the next bots may or may not need to have in their ai. i tried my
best to improve their code and turned some of their bitflags into define
bitfields. this pr may need a careful review because i did it from
scratch as the old bot project branch was too outdated for me to use
## Changelog
🆑
refactor: medbots are now basic bots. please report any bugs
add: medbots can wear hats!
/🆑
2023-12-01 22:49:18 -07:00
san7890
7f7688b60a Demotes the "electrical conductivity" flag from flags_1 to obj_flags (#80033)
## About The Pull Request

Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game

Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.

I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
2023-12-01 21:43:46 -05:00
Mothblocks
714ff3ec54 Remove /datum/game_mode, we SSdynamic now [again] (#79965)
I don't remember what was hard about this last time it took me like 20
minutes this time so I'm scared.

Removes dynamic simulations, only I have used them and it's a lot more
complicated now with this. I plan on making Dynamic simulations a part
of moth.fans anyway
2023-12-02 10:25:48 +13:00
TJatPBnJ
5322066d79 Lings no longer get impossible identity theft objectives (#80012)
## About The Pull Request

Crew with TRAIT_NO_DNA_COPY are no longer valid targets for identity
theft objectives. Changes some code to make it easier to exclude
potential objective targets.
Changelings that roll an identity theft objective while there are no
valid targets will now get an ordinary escape objective rather than a
free objective.

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

Objectives are usually meant to be achievable. 
## Changelog
🆑
fix: Changelings will no longer get an objective to impersonate crew
without absorbable DNA.
fix: Changelings will no longer start without an escape objective.
/🆑
2023-12-01 00:10:32 +00:00
Mothblocks
08ab5d2731 Blood brothers is now a single person conversion antagonist (#79971)
## About The Pull Request
Instead of choosing 2-3 brothers, *one* person will be selected and
given a flash which can convert one other person over. In accordance to
the existing 10% chance for 3 members, there is a 10% chance that the
first person converted will receive a flash of their own.

Expectation is people will flash a friend or a robust guy or whatever.
My intent is primarily to see if this kind of blood brothers is more
enjoyable to play with/against, and if their inclusion in a round
increases the general chaos of it. My theory is that since most likely
blood brothers will be people who know each other, that it can become
more consistently interesting to the rest of the crew. That or they just
murderbone together idk

Fikou and head admins said they wanted this to replace rather than add
which I agree with.

## Why It's Good For The Game
Keeps the sandboxy aspect of blood brothers (no uplink) while likely
making it more enjoyable to play. Conversion is equally as simple as
revs for the user, and is just as intuitive to the one being converted
since there are no new mechanics thrown in your face.

Blood brothers is currently disabled everywhere on the main servers
except for MRP. I think this form will be more appealing to all
rulesets. If left enabled, Dynamic now has more antagonists to make
rounds diverse with and I want that

## Changelog

🆑
add: Instead of teaming up random people together, blood brothers will
now start out with one player and let them convert a single other person
over to blood brother using a flash.
/🆑
2023-11-29 22:02:51 +00:00
Ben10Omintrix
ce6f2724cd basic cats and mini kitchen helpers (#79800)
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


![catmouse](https://github.com/tgstation/tgstation/assets/138636438/8f146be4-c7b2-41d3-8301-734be49b5efc)

![catfish](https://github.com/tgstation/tgstation/assets/138636438/f8df54f2-9183-406d-afbd-f90f415f7f3d)

if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)


![cathouse](https://github.com/tgstation/tgstation/assets/138636438/9515a78c-fdfe-461b-bad2-6b497117c694)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts

## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai

## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
2023-11-28 21:51:37 -07:00
Profakos
4b4ada0339 Slime type datum, and cleans up slime related code (#79852)
## About The Pull Request

I have decided to help out with basic mobbing slimes, and found out,
that this code is ancient and crusty. So I have decided to refactor and
tweak things bit but but, until the moment I will hit AI related stuff.

I might have gone a bit overboard, and performed a melange of fixes. I
have done the following in order:

- Slime colour, core type and mutation list are now held by a single
`slime_type datum`. This means the slime's core is no longer spawned
using text operations on the slime's colour, and the slime's mutation is
no longer a single large switch statement that returns an exactly four
element length array. Icons are still based on the slime's colour
define, but that is now more changeable.
- Autodocced all the slime procs and vars I could find, while also
renamed them to be more descriptive. Also made Booleans actual booleans.
Also added code to confused code segments. For example, did you know
that slimes would forgive all its stacks of Feeling Very Attack Right
Now, if it has exactly one level of Discipline? I didn't, and I almost
turned the 1 in the check into a TRUE before I had a second look.
- Added defines to the slime hunger checks
- Cleaned up a lot of single letter vars in all code that referenced the
now changed variables.
- Large amount of if-chain pyramids have been turned into early returns.
More readable.
- Made the xenobiology camera shortcuts and actions always do the same
thing, though the action buttons still loop through all of the conents.
In addition, after seeing a comment lamenting about varied load orders,
I have made autolinking the monkey recycler is now done in
LateInitialize, which didn't exist when it was made.
- I have included an UpdatePath that changes the colours of premapped
slimes, but I did not do anything for the other values.
- I noticed slimes were unable to attack pacifist humans, due to trait
checking the human instead of the attacking slime. This has been fixed.
- The slime scanner has an examine block, and it now describes your
slimes' "mutation attempt chance", instead of like, performing math in
case the slime's current colour is one of the mutations, or hiding it if
it has none. This value is needed to breed rainbow slimes.

This has been an extremely large scrubbing. I am willing to try rip it
up into smaller chunks, even if most of it is just single letter vars
and if pyramids.

## Why It's Good For The Game

If code is more readable and expandable, it will aid in further
refactors.

## Changelog

🆑
refactor: Slimes's colour, core type and mutation list is now held in a
slime type datum
code: Slime's variables have been documented, and renamed a bit to add
clarity. Please report bugs that might stem from renaming.
fix: Slimes are not longer prevented from attacking pacifist humans.
qol: Slime scans now display the actual amount of genetic instability,
instead of hiding it if a slime doesn't mutate further, or tweaking it
if it might mutate back into itself. This will make it easier to parse
which slime to breed further to get a rainbow slime.
/🆑
2023-11-25 18:10:55 +00:00
Nathan Singer
f47378a80d Fixes cyborged heretics seeing influences (#79868)
## About The Pull Request

They simply weren't being removed from the influence list

Fixes https://github.com/tgstation/tgstation/issues/79510
## Why It's Good For The Game

cyborgs aren't supposed to see these things
## Changelog
🆑
fix: Fixes cyborged heretics seeing influences.
/🆑
2023-11-25 06:37:41 +01:00
YesterdaysPromise
f4535255c0 Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)
## About The Pull Request

Third /icon/ cleansing splinter 1. Comments on commits say all it does
pretty much.


![image](https://github.com/tgstation/tgstation/assets/122572637/6540e588-bed8-4e98-81f5-2a6f449c53c3)


## Why It's Good For The Game

Inhand for walkietalkie was requested in the project, gets rid of some
usecases of old 'gangtool', headset splitoff requested by Fazzie.
Inhands reflecting the items they are supposed to represent is nice.

## Changelog

🆑
image: Following now have unique item sprites: syndicate war declaration
radio, curator and chief beacon's, chaplain beacon.
image: Following now have unique inhand sprites: radio, export scanner,
walkie-talkie, syndicate war declaration radio, curator and chief
beacon's, chaplain beacon.
/🆑
2023-11-20 14:22:07 +01:00
MrMelbert
73e02ce3ec Adds an admin button to send nuke ops reinforcements (#79695)
## About The Pull Request

Often times I want to send a second wave of nukies if the first wave
completely flukes, but sending reinforcements is hard (I don't want to
trigger a whole new nuke team, the Infiltrator is deployed to NT space,
etc).

So I add a button to check-antagonists that allow admins to one-click
send more nuke ops.


![image](https://github.com/tgstation/tgstation/assets/51863163/a36484b7-9d8b-4741-a09d-e9c4f8303c52)

I also took the opportunity to polish up the other admin button,
particularly giving a reminder if it's being forced under the pop limit.

## Changelog

🆑 Melbert
admin: Adds a button to check-antagonists that allows admins to send
Nuke Op reinforcements with a single button
admin: Nuke Ops check antagonists now show you full war status (declared
/ not declared)
fix: Fixes multiple nuke teams (or an admin) being able to declare war
at once
/🆑
2023-11-19 10:45:59 -08:00
MrMelbert
5eb44ed037 Partial revert of "Heretic Rebalance - Main Knowledge gives free Side points" (the side path part) (#79804)
## About The Pull Request

Heretics no longer get free sidepath points. 

## Why It's Good For The Game

In the time since this PR was merged ascension rates have almost
doubled, which I do not want.

Ascension rate of heretics should be about 5%, and on average they have
gotten up to as high as 10%.

I am of the belief heretics get too much free stuff now, with mid-late
game heretics having a dozen spells.

Furthermore, I do not believe this succeeded in what it aimed to do -
the original intent was to make heretics less meta-y and more encouraged
to experiment with sidepaths, but instead heretics use the sidepath
points to rush the best spells every time.

I would be open to trying this again, but it would have to accompany a
rework of how side paths work in general.


![heretic1](https://github.com/tgstation/tgstation/assets/51863163/95b1791f-b850-4138-b9ed-4b215b2c5cf6)

## Changelog

🆑 Melbert
del: Heretic side path points are gone
/🆑
2023-11-19 16:52:18 +00:00
Jeremiah
bbe440b3d6 More standardization for ghost notifications (READY) (#79596)
## About The Pull Request
I'm still not satisfied with how ghost notifications work. This gives
every notification with a source (99% of all notifications, in other
words) a link to jump/orbit. Currently, notifications with "play"
interactions would only get the interact link, so jumping to the source
was pretty annoying.

It removes posting the entire message in the alert tooltip, as some got
pretty lengthy and it didn't seem to fit. To replace this, they will
always use headers

After:


![image](https://github.com/tgstation/tgstation/assets/42397676/debfce52-3627-4a43-8663-33d61d893161)


![image](https://github.com/tgstation/tgstation/assets/42397676/01f299ae-dc6a-45f8-a97a-cb2c815088b2)


![image](https://github.com/tgstation/tgstation/assets/42397676/99567376-063e-458e-af2a-2dd4306747cc)

NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference
seems to be whether it's a turf. The result shaves off some redundant
lines of code, since most-every usage of notify_ghosts uses
NOTIFY_ORBIT.
## Why It's Good For The Game
More standardization for the ghost notification system. Adds a few alert
headers that never had them. All in all, makes it easier for creators to
throw alerts at ghosts
## Changelog
🆑
qol: Nearly every ghost alert should now feature a "VIEW" button, even
those with click interaction.
del: Ghost alerts no longer show the entire message in the tooltip,
instead have been replaced with titles.
/🆑
2023-11-19 05:13:25 +01:00
Jeremiah
7a1b1fa9ad Splits placeontop proc (#79702)
## About The Pull Request
I find the proc hard to read honestly. There's no reason we can't split
this into two functions - the secondary functionality is used only once,
in reader.dmm.
## Why It's Good For The Game
Code improvement
Glorious snake case
## Changelog
N/A nothing player facing

---------

Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com>
2023-11-19 04:58:31 +01:00
san7890
b251b9dbb0 Refactors Parrots into Basic Mobs (ft. Ben10Omintrix/Kobsamobsa) (#79762) 2023-11-18 19:24:32 -08:00
Rhials
33b82e8bef Nukie Aliases and Some Hairspray (#79653)
## About The Pull Request

Nuclear operatives now receive an alias for their first name, instead of
a default human name. This alias is randomly selected, or can be set in
your name preferences.


![image](https://github.com/tgstation/tgstation/assets/28870487/2584b625-4668-4738-a662-8205476fac2f)

This does not affect Operative Leaders selecting the team's last name.
This means that **operative names are now "[Alias chosen by player]
[Team name chosen by leader]".**

There is a list of default aliases, in case no alias has been selected.
I randomly came up with a bunch of stuff from the top of my head and put
it in a text file. If you think of something better, choose it yourself!

**OH, ALSO:**

There's some hair dye in the Firebase dorms now. Useful if you want to
further differentiate between your Operative/Crew characters, or just
look pretty.
## Why It's Good For The Game

No longer shall nukies be "your character but with a different name".
Now you can give yourself a bit more identity instead of just a random
name.

More customization options means more opportunities for people doing
interesting stuff, and to branch away from the beaten path of boring
meta strats.
## Changelog
🆑 Rhials
add: Nuclear Operatives, in an attempt to appeal to the more "tacticool"
members of their cause, have begun using callsigns to designate
themselves. Check your preferences to set your Operative Alias!
qol: At the request of the more vain members of the cause, hair dye has
been added to the Operative Firebase dorms.
/🆑
2023-11-19 00:53:52 +00:00
John Willard
6bb2175fa5 [BOUNTY] Re-adds Contractors (#79737)
## About The Pull Request

Adds Contractors back to the game as a kit that Infiltrators (Only
midround/latejoin Traitors, not roundstart) can buy. Buying this will
give you access to the new Contractor items in the uplink (which
replaces the Contractor shop).
I've also refactored things about contractor and how it's handled, such
as removed its sleep calls, swapping its UI to tsx, making it actually
functional within more modern TG code and the reworked Traitors as a
whole, among other things.

I also fixed the contractor guide paper (the text was broken) and made
contractor kit boxes no longer empty.

Contractor items only appear once the contractor kit is purchased, but
they can't be bought until you make an account.

Video demonstration

https://github.com/tgstation/tgstation/assets/53777086/c6aed4e8-bbd4-4ba0-b6a2-9f58fd308d09

Regular Traitors can't access it

![image](https://github.com/tgstation/tgstation/assets/53777086/539b8121-a1fa-4f2d-8e69-ec3d9708152c)

The Contractor UI (Modified to not have a shop anymore) - Ignore the
Invalid Targets, those appear when there's no possible targets

![image](https://github.com/tgstation/tgstation/assets/53777086/e128aecc-0795-4a6b-b8c5-e6f431401330)

Roundend report

![image](https://github.com/tgstation/tgstation/assets/53777086/71b88262-61de-4652-862b-79a7d5ded979)

## Why It's Good For The Game

Contractor was a fun way of playing Traitor that isn't relying on RNG
objectives to pop up, this is instead constant stream of content for the
contractor that encourages non-lethal play, and is now a viable
alternative now that Infiltrators don't have Reputation anymore.

Link to bounty: https://tgstation13.org/phpBB/viewtopic.php?f=5&t=35160

Relevant image from bounty

![image](https://github.com/tgstation/tgstation/assets/53777086/b26a17b0-2f10-4e53-b8fc-25cf8130584e)

## Changelog

🆑
add: Infiltrators (Latejoin/Midround traitors) can now buy and use
Contract kits again.
del: Contractor baton can now only be purchased once.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-11-18 18:38:37 +00:00
MrMelbert
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
/🆑
2023-11-17 19:57:51 -07:00
MrMelbert
c15a73ed50 Heart code cleanup (#79602)
## About The Pull Request

General clean up of heart code. 

- Use `Stop` and `Restart` in `set_heart_attack`
- Use `SEND_SOUND()` rather than `playsound_local` for heartbeats
- Use `update_icon_blocker`
- Correctly ensures ethereal hearts get their overlay
   - Adds heartbeat animation to ethereal hearts

## Changelog

🆑 Melbert
code: General heart code cleanup.
fix: Heartbeat sound effects are no longer sourced to the exact tile you
fell into crit at
fix: Abductors glands are less likely to become invisible or look wrong
fix: Ethereal hearts are less likely to become invisible or look wrong,
and now properly spawn with their shine overlay
image: Adds heartbeat animation to beating Ethereal Hearts
/🆑
2023-11-14 16:37:42 -07:00
Andrew
2630cc119e New crates (#79665)
image: Crates got new sprites
image: Added more crate styles
2023-11-13 18:16:05 -05:00
Hoolny
6f1636b503 Fixes half covering glassware protecting eyes (#79592)
## About The Pull Request
Makes glasses that don't cover both eyes protect from dropper chemicals
onto eyes
## Why It's Good For The Game
It's annoying to spray something on someones exposed eye for it to not
transfer

MEDICS HAVE HAD IT GOOD FOR TO LONG resisting MY humanizing toxin with
their dumb one eye covering health huds THE MED MOTHS SHALL BE HUMAN
## Changelog
🆑
fix: fixes half-covering glassware protecting eyes from chemicals
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-11-13 13:43:32 +01:00