Commit Graph

41719 Commits

Author SHA1 Message Date
Isratosh
bec3e82b11 Fix nuclear operative induction implants (#79554)
## About The Pull Request
Fixes #79547 

#78597 broke induction implants by replacing the "has antag datum" check
with a "does not have a fake antag datum" check which passes on a null
case. I added an `isnull()` check to cover this.

The introduced `antag_flags` var was by default set to
`FLAG_FAKE_ANTAG`, presumably in error as the only antag datums to
override this are ERT and Valentines and they just set it to
`FLAG_FAKE_ANTAG` anyways. This also means the induction implants ONLY
worked on non-antags and anybody with any antag datum would fail the
implant. I changed the default to `NONE`. This may have some knock-on
effects as `is_special_character()` was returning `FALSE` with any antag
datum (unless allow_fake_antags was passed) but no special role which
this also fixes.
## Why It's Good For The Game
Non-antags can no longer self-antag their way onto a nuclear operative
team and antags can now antag their way onto a nuclear operative team.
## Changelog
🆑
fix: Nuclear operative induction implants now work correctly on
antagonists and fail on non-antagonists
/🆑
2023-11-07 14:04:05 +01:00
Jeremiah
e2529818aa Reverts reverted toast icons (#79538)
## About The Pull Request
During the notify ghosts refactor I was unsure why we were creating a
custom overlay for each ghost alert when new_master did the same. Turns
out - it resets icons, which is useful here. This also caused #79415.

The original notify ghosts was performing this transformation operation
O(n), which I've made O(1)
## Why It's Good For The Game
Fixes #79415

![Screenshot 2023-11-05
131336](https://github.com/tgstation/tgstation/assets/42397676/c8b63b14-e1b8-48f5-b811-4c38ef1fa224)
## Changelog
🆑
fix: The screen alert should no longer break ghost UI when it's huge
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-11-07 13:59:21 +01:00
san7890
dfb3a1f5ba Slimes can only reproduce out in the open (#79552)
## About The Pull Request

Fixes #79296

This code was a bit wack since we used `drop_location()` instead of
checking if we even had a valid turf to jump to, so slimes would spawn
directly on a turf above the pipe. This has been changed to see our
`loc` is actually a valid turf before we continue on in the verb.

Also this code was really fuckin' old so I just did a bunch of early
returns in the area to make it just a little bit easier to bear when
some poor sod has to refactor all of this into the basic framework.
## Why It's Good For The Game

Bug: Fixed  
Code: Improved  
Issue Tracker: One Less Thing  
## Changelog
🆑
fix: Slimes now need to be on an open turf to reproduce and split into
more slimy slimes, instead of getting away with using phasing powers in
pipes.
/🆑
2023-11-07 01:12:26 -05:00
san7890
568033220e All vehicles can no longer cross Force Fields (#79553)
## About The Pull Request

Fixes #78625

The check only applied to mecha vehicles, when in reality there
shouldn't be any vehicle that can freely transverse containment fields,
since that vehicle will have a mob in it, which itself shouldn't be
allowed to traverse containment fields.
## Why It's Good For The Game

Makes behavior more consistent and expectable.
## Changelog
🆑
fix: All vehicles (such as VIMs operated by a mouse or a lizard) will no
longer be able to phase through containment fields.
/🆑
2023-11-07 01:12:15 -05:00
Thunder12345
acbe9282bd Renames the icon var in barsign datums to icon_state for sanity (#79559)
## About The Pull Request

See title.

## Why It's Good For The Game

Calling this var `icon` is confusing and illogical. It will be applied
to the barsign's `icon_state`, and is not an actual icon itself.
Renaming to `icon_state` makes this var consistent with `name` and
`desc`, which are also applied the same named vars on the sign.

## Changelog
Not player facing
2023-11-06 19:52:45 -07:00
Ghom
8ec6e075de Adds a sleeve of tiling colors for several holidays. (#79188)
## About The Pull Request
Inspired by #79108. This concerns Christmas, many national holidays and
a few gimmicky ones where it'd make sense.

Oh, yeah, I've also added "Sacrebleu" to the list of possible station
prefixes for the Bastille day, since "Merde" is already there.

<details>
<summary>some screenshots (got tired of restarting the server over and
over halfway through)</summary>

### St. Patrick (Ireland) : 
![Booze Complex Fifty-Four 2023-03-17
090724](https://github.com/tgstation/tgstation/assets/42542238/c09e6c3d-8fab-45d6-802e-13687e83b9a7)

### Bastille Day (France) : 
![Merde Tomb Seventeen 2023-07-14
084422](https://github.com/tgstation/tgstation/assets/42542238/045f7c32-9a17-4e24-9d33-c51596e348e6)

### Waitangi Day (Union Jack colors, New Zealand) :
**No, it isn't the french flag again, it's the tram tiles that always
display the pattern in vertical stripes...**
![Southern Cross Outpost 39 2023-02-06
012622](https://github.com/tgstation/tgstation/assets/42542238/f6e24875-35b0-4b03-a4f8-72f8d976005d)

### Christmas (Before I realized it looks like the italian flag so I've
removed the white) :
![Festive Space-hulk XLIII 2023-12-25
013720](https://github.com/tgstation/tgstation/assets/42542238/8328ff54-88d9-4be6-9d5e-773fbba7046c)
</details>


## Why It's Good For The Game
Implemeting a smidge of festivity and/or celebration to several
holidays. Open to suggestions and thoughts.

## Changelog

🆑
image: Several holidays now have themed floor and tram tiling.
/🆑
2023-11-06 23:16:11 +00:00
Watermelon914
00be4978ae Adds a user type to integrated circuits, refactors the list pick component. (#79412)
## About The Pull Request
Added a user type to integrated circuits that can't be stored as a user
type but can be typecasted to entity. Useful for components that
directly ask for an input from the user, like the list pick component.

Refactored the list pick component to use this user port and to also
send failure signals whenever a success signal is not sent.
Removed the triggered port for the list pick component.

Also fixes a runtime that occurs with the list pick component if the
list passed in only contains null values.

## Why It's Good For The Game
Can't force a prompt onto people who haven't interacted with your
circuit.

## Changelog
🆑
add: Added a user type to integrated circuits
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2023-11-06 23:10:04 +01:00
Higgin
b666f6b760 Fixes synthflesh not causing toxin damage on healing brute/burn. (#79534)
## About The Pull Request

does what it says on the tin - after the refactor of damage application,
it was going with the minimum value of brute or burn loss vs. the amount
healed, so in fact you could get toxin healing from synthflesh.

## Why It's Good For The Game

synth could probably use some tweaks but this just takes it back to what
it was supposed to do before, it should have a tradeoff of some sort
2023-11-06 13:33:47 -06:00
Tim
33abff9004 Improve emote help text display (#79365)
## About The Pull Request
This adds a examine block to emote help and highlights which emotes have
sound effects in blue.

## Why It's Good For The Game
Before:


![dreamseeker_gBXU4tSkh4](https://github.com/tgstation/tgstation/assets/5195984/dea12f6a-7ab7-4ae6-a218-07348168bbe3)

After:


![dreamseeker_upqL52GDjM](https://github.com/tgstation/tgstation/assets/5195984/1c67d1da-b27f-4cff-b0be-2953f43c64d9)


## Changelog
🆑
qol: Improve the emote help verb to be more user friendly
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-11-06 15:41:18 +00:00
NeonNik2245
06583a6684 Makes notepad available for laptops and consoles (#79475)
## About The Pull Request
Makes it so that notepad can be used on consoles and laptops

## Why It's Good For The Game
Now everyone have more places to write important information. Also
someone who doesn't have PDA (ghost-role for example) will be able to
use laptop's notepad.

## Proof of Testing
<details>
<summary>Screenshots/Videos</summary>


![laptop-notepad](https://github.com/Skyrat-SS13/Skyrat-tg/assets/106491639/49ba817a-ab4f-4df0-8df6-9ce98cc10cbb)

</details>

## Changelog

🆑
qol: Make notepad available for everyone, who has only laptop or
console.
/🆑
2023-11-06 14:59:36 +00:00
cnleth
db0155ff86 Fix incorrect metabolization rates in chem dispenser's reagent lookup (#79499)
## About The Pull Request
Chem dispenser was dividing the metabolization rate value by 2 despite
it already being in units per second, I fixed that. Now the rates match
those in chemmaster's reagent lookup

![lookup](https://github.com/tgstation/tgstation/assets/113535457/0ab1a2dc-a836-42b4-99f4-dafde2ed55fa)
## Why It's Good For The Game
Fixes #79482 
## Changelog
🆑
fix: Reagent lookup in chem dispensers now shows correct reagent
metabolization rates
/🆑
2023-11-06 15:23:15 +01:00
Time-Green
b8c11a8cb7 Fixes mafia achievements desyncing you from the database (#79555)
I swear to fucking god

PDA mafia has two bodies, the real player body, and the fake mafia
stand-in. When an achievement is obtained, it's marked as achieved
directly on the players client, but then passes the empty mafia stand-in
for any afterwork. This causes achievement notifications to be muted,
the code to runtime and for it not to update every appropriatew database
table (like the achievement highscore table).

On a somewhat related note, anyone that has gotten PDA mafia
achievements (which includes me) is now desynced from the
ACHIEVEMENTS_SCORE table. Looks like the only fix is to reset the score
in the ACHIEVEMENTS_SCORE to a non-numerical value and force the game to
recount every achievement
2023-11-06 08:19:23 +00:00
Bloop
f158947a17 Makes tails stop wagging in death (#79511)
## About The Pull Request

What it says on the tin. Tails would keep wagging after the mob died. It
would also not update the sprite if the `stop_after` option was used, so
I fixed that too. Not a commonly seen thing except downstream, but
nevertheless!

edit: I also noticed some improperly ordered parameters and fixed those.
Did you know that the way it was set up, tails would actually _start
wagging_ after they got `Remove()`d? It wouldn't do anything because
they're no longer on the mob, but still...

unsettling

## Why It's Good For The Game

Removes the super cursed tails.

## Changelog

🆑
fix: tails will no longer keep wagging even in death
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-11-05 23:32:24 -07:00
Bloop
23f0284cab Adds some trailing commas to lists, fixes typo (#79422)
## About The Pull Request

What it says on the tin. Another one of these PR's. Is there a reason
why we don't use the linters to enforce trailing commas?

## Why It's Good For The Game

Cleaner diffs

## Changelog

🆑
code: added some trailing commas in lists that were missing them, fixed
a typo in comments
/🆑
2023-11-05 22:34:45 -07:00
vvvv-vvvv
6aaae2b1b1 Fix refresh button in log viewer (#79520)
## About The Pull Request

`re-render` is a typo?
137aa7dc60/tgui/packages/tgui/interfaces/LogViewer.tsx (L66)

## Changelog

🆑
fix: Fix refresh button in log viewer
/🆑
2023-11-05 22:32:35 -07:00
MrMelbert
290c271b07 You can fish out of hydroponics trays (#79443)
## About The Pull Request

Adds a fishing spot to hydroponics trays. 

Chances 

- 33% nothing
- 33% grass
- 20% random seed (discludes rarer seeds, such as gatfruit and most
mutations)
- 10% grass seeds
- 1% strange seed
- 1% axolotl
- 1% frog

Lightly inspired by something (I think) is possible on Goon, but
obviously entirely new code.

## Why It's Good For The Game

Mostly just for laughs, they're basins of water so surely you can get
something out of it.

## Changelog

🆑 Melbert
add: Fishers can now try their luck at fishing out of hydroponics
basins.
/🆑
2023-11-05 22:32:06 -07:00
Jacquerel
1189b22dc2 Golems cannot turn into Plasmamen (#79249)
## About The Pull Request

Fixes #79155 
Also cleans up the code in plasma river "lava" a bit

The plasma river code was a little crusty and confusing and made some
interesting decisions.
To start with it would do _two_ burn damage per tick to people entering
it.
Then _15 toxic and 25 more burn damage_ to specifically humans?
This seems... unintended? So now it does the same amount of damage
equally to anyone regardless of if they are human or not.

In terms of the "turning dead people into dead plasmamen" behaviour we
will now:
- Not attempt to transform any limbs which cannot be dismembered, with
the assumption that those aren't meant to be replaceable.
- Not attempt to transform anyone with the undismemberable trait, with
the assumption that their body is supposed to be immutable.
- Not attempt to transform anyone with the new "don't transform me,
plasma river" trait which replaces an explicit species check for being
an android or plasmaman (already).

I also simply made golems immune to the plasma river _anyway_, because
people expect them to be able to wade into lava and the fact that this
is "cold lava" probably shouldn't impede that.

I also made golems unable to become husks because... none of the three
occasions where this could happen really apply and also if they get
husked they turn into gross-looking humans instead of golems until
fixed, which is weird.

Finally I did some more fucking around with husking because it's
visually weird.
I added a new flag to bodyparts (applied to robotic and skeletal parts)
which means that they will never be replaced with a husk icon. It might
be preferable to instead make custom husk sprites for these limbs? But
half of them are on species which cannot be husked in the first place so
this would only appear when they are transplanted onto a species which
can.

## Changelog

🆑
fix: The plasma river is about as deadly for animals as it is for
humans.
fix: Golems can now wade in the plasma river unscathed.
fix: Undismemberable limbs will no longer be dismembered by the plasma
river.
balance: Golems and plasmamen cannot become husked.
image: Robotic and Skeletal parts will remain distinct while the rest of
the body is husked.
/🆑
2023-11-05 22:30:09 -07:00
orange man
a32de2b627 Automatic TGS DMAPI Update (#79177)
This pull request updates the TGS DMAPI to the latest version. Please
note any changes that may be breaking or unimplemented in your codebase
by checking what changes are in the definitions file:
code/__DEFINES/tgs.dm before merging.

Co-authored-by: tgstation-server <tgstation-server@users.noreply.github.com>
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
2023-11-06 01:15:36 +00:00
Ben10Omintrix
42c8e1adf9 new wizard ability and basic leaper refactor (#79237)
## About The Pull Request
refactors leapers into basic mobs and adds a new ability for wizards.
for 2 points wizards can buy their own leaper pet. they will get a
contract which lets them pick their pet's name and color

![thefrogs](https://github.com/tgstation/tgstation/assets/138636438/8df9b893-d07d-4e51-a9fa-644830cc7a81)

after they sign the contract they will get a frog statue which is used
to contain the leaper. players can use this statue to release or recall
the leaper into the statue. when its in the statue it will slowly regain
health or even revive from the dead, but if it gets gibbed then the
statue will be useless.

also adds a new ai behavior for leapers which lets them go swim in water
(and splash around) for a period of time. i gave this behavior to frogs
and crabs too

when riding the leaper, the players will get access to all its
abilities, it now has new abilities, it can create frog minions that
suicide bomb the enemies and it can also create a shower of poisonous
structures.


https://github.com/tgstation/tgstation/assets/138636438/931aa7b4-09f0-493f-bdb6-f3bdd0915b22

also when riding the leaper, players can point at walls near it so it
will destroy it. alternatively players can give commands to their
leapers to use abilities and to follow them if they are not riding it.
wizards cant be force dismounted from their frogs, and only wizards can
ride the frogs.

this also removes leapers from cytology as they now are much more
dangerous and have a new home


## Why It's Good For The Game
refactors leapers into basic mobs, and gives more gameplay opportunities
for wizards
## Changelog
🆑
refactor: leapers have been refactored into basic mobs please report any
bugs
add: wizards can now summon a leaper pet
removal: removes leapers from cytology
/🆑
2023-11-06 00:05:29 +00:00
Rhials
3c7005a37c Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request

This helps clean up my favorite helper proc in the whole codebase,
`notify_ghosts()`.

The notify_suiciders, ignore_mapload, and flashwindow args are GONE.
They have been replaced with the notify_flags bitflag argument. This was
intended to make deadchat announcements a bitflag argument too, but
those got reverted right before I originally wanted to submit this PR.

The on-screen popup now shows the notification body when you hover it
with your mouse again. The format is now `[notify_ghosts message] --
[click action (orbit/jump/play)]`

Every single `notify_ghosts()` call has been changed to multiline format
and has been given trailing commas. Pretty!
## Why It's Good For The Game

Cleans up a proc that is very popular and going through a lot of changes
at the time.

Allows for further flexibility when this proc inevitably gets tweaked or
improved. 12 -> 10 args is an improvement, and it doesn't impact the
helper's flexibility at all.
## Changelog
🆑 Rhials
code: The notify_ghosts proc has been cleaned up. Please report any
abnormal changes in deadchat notification behavior.
qol: The on-screen deadchat popups now contain the notification blurb
when hovered with your mouse again.
/🆑
2023-11-05 15:26:50 -08:00
SyncIt21
1a3f456416 Re-adds rounding tweaks for reagent volumes & plumbing reaction chamber tweaks (#79478)
## About The Pull Request
- Closes #79464

This takes the important fixes mentioned in the above PR and adds them
here. The above PR implemented the fixes by reverting a bunch of reagent
PR's but in the process of doing so it has brought back really
inefficient code & even some bugs that were previously fixed.

Rather than reviewing them & bringing back those changes which is time
consuming this PR extracts only those important rounding operations
required for the fix leaving all other optimizations intact

Mentioned @CliffracerX in the changelog so they can get their GBP

Also plumbing reaction chamber is more active in taking in reagents.
That is if a reagent is not available in the pipe net rather than
waiting for it to become available it will simply skip over it & look
for other listed reagents thus saving time

- Fixes #31206

## Changelog
SyncIt21, CliffracerX
🆑
fix: reagent volumes should be consistent & non breaking across plumbing
& chemistry as a whole
fix: plumbing reaction chambers are more proactive. Will attempt to take
in reagents more frequently
/🆑
2023-11-05 12:50:12 -08:00
John Willard
88bb3afcce Mafia now starts without admin intervention (#79348)
## About The Pull Request

Mafia should now start without the need of admin intervention.
I made a unit test that should always have a PDA and a ghost spawning in
a game of Mafia and having it run through basic setup to confirm they
both successfully sign up and the game starts.

I had to change a lot of things in order to get this working, such as
giving unique ckeys to mock clients, fixing harddels in Mafia, and
plenty of minor fixes. This is the first time any of this code is put in
CI, so a lot of uncaught errors are now showing their faces.

Because loading maps mid-round runtimes due to smoothing, I have mafia
their own unit test-only map that doesn't use smoothing.

I also split the mafia ui code into its own file, and moved a single
helper that was sitting around in mafia's file into a helpers file.

I also added some comments to explain why certain things are the way
they are, because I wrote some undocumented code previously and forgot a
few things, leading to self-inflicted wasted time.

## Why It's Good For The Game

^

## Changelog

🆑
fix: Mafia games can now start properly.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-11-05 01:26:24 +00:00
lessthanthree
312cd8880d Station announcements cleanup (#79315)
## About The Pull Request

- As the size of the announcement proc has grown over the past few PRs,
did a pass over them for readability and consistency
- Include the arg names for coders unfamiliar with the new announcement
format
- Replaced leftover hardcoded Central Command text with the command name
proc, so all announcements reflect the command name if changed by an
admin
- Replaced hard coded emergency shuttle timer text with the actual
timeleft vars, so it's correct if the timers are changed for any reason
- Darkens the dark mode blue/red headers to be more red less pink, while
staying in accessibility standards
- Adds a lower profile grey colour for automated non-Central Command
announcements

## Changelog

🆑 LT3
code: Emergency shuttle announcements no longer use hardcoded values
code: Central Command announcements now correctly use its new name when
changed
spellcheck: Consistency pass on event announcements
/🆑
2023-11-04 18:38:52 -06:00
Jacquerel
89e918df78 [no gbp] Don't try and have a status effect destroy walls (#79500)
## About The Pull Request

Fixes #79497


![280296547-1bd169d0-0ccf-4dfb-91a3-9c51e11d020b](https://github.com/tgstation/tgstation/assets/7483112/9d976cb0-7905-4fe4-962b-a6e5374b40b9)
Missed something important here. I put it back.

## Changelog

🆑
fix: Fugu can correctly destroy walls when they get big.
/🆑
2023-11-04 16:02:55 -06:00
san7890
9a04a09f21 prevents infinite paper glitch in HFR framework (#79493)
## About The Pull Request

Fixes #79492 . Infinite paper isn't so much an exploit as much as it is
annoying to have someone spam the multitool action and just end up
having dogshit amounts of stuff.
## Why It's Good For The Game

There's no particular need for more than one guide to the HFR, this is
an oversight.
## Changelog
🆑
fix: The HFR will not print out a piece of paper every time you
multitool it, saving any desired energy to use for more useful
processes.
/🆑
2023-11-04 19:17:45 +01:00
lizardqueenlexi
07f2214ac4 Basic Wizards (#79476)
## About The Pull Request

Makes NPC wizard mobs into basic mobs. These aren't actually used
anywhere, since their away mission was removed, so I figured I'd have
some fun with them.


![image](https://github.com/tgstation/tgstation/assets/105025397/901f3a92-74a3-492b-8435-43813ad2afa8)

Noteworthy changes are as follows:
- Wizard mobs can now wear any of the four basic colors of wizard robe
and hat. Rarely, they will wear the witch ("Marisa") outfit instead.
There was going to be a rare Tape Wizard spawn too, but the outfit
doesn't work correctly for some reason (see comments below).
- Wizard mobs no longer have a set spell loadout. Instead, they always
receive a random **targeted, primary spell**, a random **untargeted,
secondary spell**, and the spell **Blink**.
- Wizard subtypes (or var-edited wizards) can have any of the above
specified rather than random.
- Wizard AI will try to avoid ever being in melee, and will fire off
spells whenever possible with the priority order of primary > secondary
> blink. There is a mandatory 1-second waiting period between casts.
- Wizard mobs use "lesser" versions of Fireball and Blink. Lesser
Fireball does a little less damage and has a smaller explosion, though
it is still extremely dangerous. Lesser Blink simply has a smaller blink
radius so that wizard mobs don't just decide to leave.

Depending on their spell loadout, wizards can be _incredibly_ dangerous
mobs - stunning you with tesla blasts, shooting you with fireballs, and
more. Even weakened, fireball is the nastiest of these by far, able to
set you on fire or remove your limbs if you aren't properly protected.
Watch out!

The random lists have been kept pretty small, since I only wanted to use
spells that I know for sure work. Spell cards is pretty weak in AI
hands, since they don't take advantage of the fact that a human player
can spam it, but I wanted there to be a little variety in primary
attacks.

I included an UpdatePaths script here in case a downstream is using
these, but I doubt it was necessary.
## Why It's Good For The Game

Removes another simplemob.

The actual impact of this change is negligible, since this is an unused
mob, but it's possible that this lays the groundwork for these actually
being used - particularly since mappers can make them as powerful or
weak as they want by specifying a spell loadout. Wizards may make for a
tough boss challenge for a ruin or away mission, or a very mean surprise
for an admin to drop on an unsuspecting station.
## Changelog
As this is an unused mob, there are no player-facing changes.
2023-11-04 16:22:19 +00:00
Tim
9cc70a94d0 Port salute emote sound from CM SS13 (#79382)
## About The Pull Request
This adds a crisp sound to the salute emote that is from the Colonial
Marines server.

## Why It's Good For The Game
Mah Immersion!

## Changelog
🆑 timothymtorres, Rahlzel
sound: Port salute emote sound from Colonial Marines SS13 attributed to
Rahlzel
/🆑
2023-11-04 04:21:22 +01:00
lizardqueenlexi
7b720a0081 Basic Shades (#79469)
## About The Pull Request

Makes shades into basic mobs. As they are solely player-controller and
have no AI, this was a very simple conversion.

Things of note:
- I've made shades use the same "theme" system as constructs, to
determine their drops and coloration - as opposed to these things being
manually set by the type of soulstone they're held in.
- I've reorganized files slightly, putting both constructs and shades in
a new "cult" basic mob folder.

That's more or less it. As I said, shades are simple.
## Why It's Good For The Game

Basic-izes another mob and cleans up the code a little. Removes the last
cult-related simplemob, too.
## Changelog
🆑
refactor: Shades now use the basic mob framework. Please report any
bugs.
/🆑
2023-11-03 22:39:33 +00:00
Bloop
4d7f97ddba Makes softspoken quirk no longer apply when using sign language (#79456)
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/24715

## About The Pull Request

Just makes the softspoken quirk match its description that it should be
for spoken languages. You should still be able to have people view your
signs from a distance.

## Why It's Good For The Game

You can still 'subtly sign' using *whisper with that quirk, but you are
no longer restricted to only doing that. It didn't really make sense
that you were previously.

## Changelog

🆑
fix: Softspoken quirk will no longer be applied to sign language
/🆑
2023-11-03 13:53:08 -06:00
MrMelbert
8d69710d52 Fix admins without R_POLL getting (an unusable) poll verb (#79461)
## About The Pull Request

Copy paste error, I assume. 

`admin_verbs_poll` only contains `/client/proc/poll_panel` which
requires `R_POLL` to use.

## Changelog

🆑 Melbert
admin: Admins without `R_POLL` no longer have access to "Server Poll
Management", not that they could have used it anyways.
/🆑
2023-11-03 13:46:57 -06:00
nikothedude
4e4e8266ac Allows TGUI labelled lists to use tooltips, and enables this behavior on preferencelists + adds descs to most character preferences (#79356)
## About The Pull Request

Title.


https://github.com/tgstation/tgstation/assets/59709059/c9fa7d41-6ca4-4b8b-97ec-fdfdd437ce25

## Why It's Good For The Game

The inability to use descriptions in character preferences really limits
the context you can give to readers, which becomes a big problem when
preferences become complicated or laden with policy that must be given
to the reader.
## Changelog
🆑
qol: Character preferences now have descriptions as tooltips - hover
over their names to see them
/🆑
2023-11-03 16:32:51 +00:00
Zergspower
3911968402 Fixes Virology bounties (#79459)
## About The Pull Request

fixes what https://github.com/tgstation/tgstation/pull/79136 broke, not
sure if it was an oversight or not but the viro stuff wasnt logged in
the CL and may have just been overlooked. The var and object were named
the same thing and broke the ability to turn Viro bounties in

## Why It's Good For The Game

Virus bounties work again

![image](https://github.com/tgstation/tgstation/assets/22140677/8893a60a-a499-43d5-871d-8e8ea3cd6db1)


## Changelog
:cl:Zergspower
fix: Bounties - Virus bounties work once more
/🆑
2023-11-03 10:08:27 -04:00
Jeremiah
6a0d88d4d9 Better feedback on fulton extraction (#79452)
## About The Pull Request
Just playing issues roulette when I came across this gem of old code.
Granted, it's not fully rewritten to perfection, but it should at least
be better. Added feedback for both parties, sounds, documentation, and
swapped references for weakrefs.

Note: It looked like it was trying to put the target around the beacon,
but this didn't seem to be working. Fixed this, so now it places them in
an open spot around the beacon (unless its blocked)

## Why It's Good For The Game
Fixes #35783
Not cool for someone to just zip you up and send you away with no
feedback
The original issue might not even apply since most(?) only work indoors,
but this fixes any case
Might fix a hard del??
## Changelog
🆑
fix: Added feedback for both extractor and extractee while using fulton
extraction packs.
qol: Extraction packs now have better exam text.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-11-03 14:00:12 +00:00
san7890
e03822fe1d Standardizes Adding Datum Actions into a proc/define (Bonus AI Support) (Bonus Useless Code Cleanup) (#79389)
## About The Pull Request

The way we add multiple actions has been very unstandardized, with
several implementations of this code doing certain things wrongly (i.e.
not nullchecking `ai_controller`), so let's do something in the vein of
#74037 and just make one nice big ol' proc that catches a lot of these
cases. There are still a few things that simply can't be done here, but
this gets the most generic "give my mob some actions and also maybe tell
the AI about it" stuff done.

This is only useful in cases where we don't ever need to reference the
ability ever again when it's added. In an ideal world we would never
need to reference the ability again and it would all be self-contained,
but this is not an ideal world. However, a lot of the latticework has
been built around certain implementations of this behavior making
refactoring it just a bit easier.

I also did a lot of auditing on `Destroy()` stuff, because
`/datum/action`s listen to signals when their parent is `qdel`ing, so we
don't need to neither hold nor clear references on our mob's
`Destroy()`. This was all cleaned up now because even if we couldn't use
`grant_multiple_actions()` (the new proc I add in this PR), it's just
not useful at all and will further hinder efforts to implement this new
proc.

Also also, I noticed in some places (such as megafauna) that we were
initializing a lot of datum actions _in nullspace_. We didn't pass the
`src` argument to `New()`. I quickly fixed that, as well as got rid of
the useless types we had going on.

Also also also, I added a define macro to handle some of the cases that
melbert was speaking about in his review down below. All you need to do
is invoke the define on the typepath, and you should be good to go from
there. There's probably a better way to do it, lmk though. we do the
whole `do while` thing in order to prevent code leakages.

## Why It's Good For The Game

* Very easy to change the implementation. In case we need to do
something different in how we add actions or anything like that, we can
simply just edit instances where this proc is located.
* Standardizes addition behavior. There's a lot of cases like the
aforementioned not-null-checking `ai_controller` that we really need to
look out for, so having it all in one accessible proc ensures standard
behavior.
* Reduces copy-pasta. A lot of mobs had their own individual
implementation of this, so let's just clean up all those lines of code.
## Changelog
🆑
refactor: The way mobs get specialized actions (like revenants shocking
lights or regal rats summoning rats to their side when you slap them)
have been modified, please report any bugs.
/🆑

This doesn't touch the following case FTR:
* Instances where we need to do work on the `/datum/action` after we
`Grant()` it, like if we were to edit some variable on the action or if
we need to call procs on said action. I don't like how the current code
is so reliant on storing a variable to it, but that's a windmill to
attack another time.
2023-11-03 04:02:26 +00:00
Jeremiah
a6b194c51c Removes virtual-specific subtypes of drinking glass + adds a new fishing map (#79423)
## About The Pull Request
Changed how loot signals work with bitrunning entirely, which allows map
creators to attach functionality to objects without creating subtypes of
the item

As a bonus I added a fishing minigame map which uses it
## Why It's Good For The Game
It's a messy solution to need to create subtypes just for the one-off
map that needs them
## Changelog
🆑
add: Added a new fishing map to bitrunning.
add: You are no longer limited to pina coladas on the beach bar domain.
Cheers!
/🆑
2023-11-03 02:19:26 +00:00
Jacquerel
72c8a02f6c Wall smashing > Wall tearing (#79432)
## About The Pull Request

This PR replaces a bunch of instances of mobs being able to smash walls
by clicking them once to being able to tear walls by standing next to
them for a few seconds while an animation occurs. Wall tearing is a
three-part animation and can be cancelled and resumed at any point from
the most recently completed step so it isn't _exactly_ a single two
second interaction, and is resultingly harder to interrupt.


![dreamseeker_pmnBB9YzNi](https://github.com/tgstation/tgstation/assets/7483112/edca2d02-58f1-499a-a01c-6155ad49a7b2)

Some mobs still destroy walls in a single click, such as Flesh Worms and
Star Gazers. Really whether I replaced this or not was largely down to
vibes.

It also deletes the `tear_walls` element because it was the same as
`wall_tearer` but without the fun visuals.

## Why It's Good For The Game

Deleting walls instantly with a single click is pretty obnoxious. This
method slows it down a _little_ bit but also looks visually cooler and
gives people on the _other_ side of the wall a warning that something is
about to bust through kool-aid man style.

## Changelog

🆑
balance: Gorillas, Seedlings, Gold Grubs, Mooks, Constructs, Ascended
Knock Heretics, Fugu and mobs subject to a Fugu Gland now rip up walls
in a slightly slower but more cinematic way.
/🆑
2023-11-02 19:52:27 -06:00
jimmyl
c15a877170 [no gbp] venus human traps actually heal in kudzu (#79442)
## About The Pull Request

adjust_damage sucks

## Why It's Good For The Game

oops

## Changelog
🆑
fix: venus human traps heal in kudzu again
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-02 15:27:51 +00:00
MrMelbert
236fe3e39c Fix autosurgeons not respecting implant time (#79404)
## About The Pull Request

Fixes autosurgeons not respecting the passed implant time in
`use_autosurgeon`.

Fixes some spans on autosurgeons. 

I noticed it working on a downstream. 

## Changelog

This will have 0 effect on /tg/, as the only occurrence of passing an
`implant_time`, passed 8 seconds.

No, this will not make self-use autosurgery take time.
2023-11-02 15:27:13 +00:00
Profakos
2d0adcf758 Boot occupants now perform unarmed attacks (#79454)
## About The Pull Request

When you put on your cowboy boots, and it had a snake in it, they did
not poison you, as the code was checking for a retaliate simple animal
subtype, meaning say, if you somehow put a goose in your shoe (the last
remaining simple animal), they could poison you.

I have removed the direct damage apply and the reagent add, and replaced
with a call for UnarmedAttack. This way snakes will not inject you with
a hardcoded amount of toxins, instead they will respect their venom
component.

If you place a headslugs or larvae in the shoe, they will bite you, but
headslugs only infect dead people, and the larva will do just a small
amount of damage, so that is okay.

The downside is that you can not pass targetting through attacks, so the
animals will not bite you in the foot but rather in a random bodypart.
At least, if you are missing a leg, you still have a chance to not to
disturb the slumbering creature, that has been unchanged.

## Why It's Good For The Game

Removed a check for a soon to be removed subtype, and creatures will use
their actual attack behaviour to bite you.

## Changelog

🆑
code: creatures in cowboy boots will retaliate properly
/🆑
2023-11-02 14:16:34 +00:00
Jeremiah
6b768b32e5 Fixes heretic bitrunner issue [NO GBP] (#79451)
## About The Pull Request
Returning a player to their body counts as a body transfer, thus they
lose their living heart
## Why It's Good For The Game
Fixes #78780
## Changelog
🆑
fix: Heretics won't lose their living heart while bitrunning anymore.
/🆑
2023-11-02 13:30:45 +00:00
MrMelbert
bbdfba68fc Changelings take much longer to revive when killed by Megafauna (#79439)
## About The Pull Request

Changelings take 8x as long to revive when felled by Megafauna. (5
minutes 20 seconds, rather than 40 seconds.)

## Why It's Good For The Game

Prior to #77731 , changeling miners had to be cautious around Megafauna
as anyone else.

This is fair, lings should be afraid of Megafauna. As with any other
antagonist, taking on a Megafauna for their loot presents option to
become a much stronger antagonist at risk of losing your antag round.

But now, a ling can just get up again and again until they win the war
of attrition. This is rather lame. It completely eliminates the risk
part of the risk reward, and makes clearing lavaland brain-dead.

I wanted to make them gib lings again, but this raises a big metagaming
issue that I would rather not tackle. ("Lol someone got gibbed, RIP ling
bozo")

I also considered making it so being gutted completely prevents ling
revival, so you need to be revived like any other miner, but I am
certain people would complain about how it makes no sense why a ling
just couldn't Get Up Lol.

So I thought to approach this with a compromise - making it take much
much longer to revive if you are gutted by a megafauna. This makes
clearing all of lavaland less of a brain-dead, risk free thing, as dying
forces you to sit out for a while, but you still have some ling safety
to fallback on.

## Changelog

🆑 Melbert
balance: Changelings gutted by Megafauna now take 8x as long to finalize
revival stasis (~5 minutes).
/🆑
2023-11-02 13:27:18 +00:00
Jeremiah
550ec9b1d9 Cleans up signal use in bitrunning [NO GBP] (#79426)
## About The Pull Request
Atomized #78997
Broke up duplicate signal usage - though they do the same thing, this is
convention & it makes it easier to debug
Removed custom alert subtypes in favor of just setting values directly
Removed some unnecessary vars like the console ref from the server
Since I'm just copying this over, it has added exam text for net pods,
which fixes an issue reported to me in Discord
## Why It's Good For The Game
Code improvement
## Changelog
🆑
add: Added some clarity to the range of netpods (4 tiles) in their exam
text.
/🆑
2023-11-02 13:23:48 +00:00
Jeremiah
af00850356 Removes virtual-specific megafauna, fixes boss map issues [NO GBP] (#79424)
## About The Pull Request
Another atomization of the content patch-
Let's not subtype everything into virtual variants

This also fixes some bugs that were present with vdom boss maps
- Made the bubblegum map larger so he wouldn't teleport out
- Legion is just far too annoying to have to fix code wise, given that
few if anyone tries it with the base virtual equipment

<details>
<summary>what do you mean too annoying?</summary>

Legion doesn't handle dying like the standard megafauna - each time it
"dies" it looks to see if there's another legion in the entire game
world. Given the real one very likely exists, this basically means it
won't drop anything. I'd have to modify legion's death proc specifically
for the virtual domain. No other megafauna has this level of weirdness
(nor splitting behavior) and coupled with the fact I think no one tries
the domain, I'm just removing it.

</details>

## Why It's Good For The Game
Cleans up megafauna subtypes that were specific for the virtual domain.
Now, we won't need to keep adding to the list if there's ever a new one
Fixes #79203
Fixes #79200

## Changelog
🆑
fix: Bubblegum should no longer teleport out of the simulation when
threatened
del: Chamber of Echoes map removed as it conflicts with the actual
Legion
/🆑
2023-11-02 13:21:04 +00:00
moocowswag
86d1e448d7 Fixes a bug that caused space dragon's carp to often die in one hit (especially against lasers) (#79448)
## About The Pull Request
#75607 Intended to strip space carp of their ability to avoid combat and
sabotage the station and instead made them serve as body guards meant to
help the space dragon defend the portal by gutting their movement speed
and object damage but with compensation to health and raw damage they
can deal should they somehow get in melee with their now slow and bulky
speed.


Except their health increase was only to their initial health value and
didnt bump up their max health which meant as soon as something updated
their health they would go back down to pre-reworked health.

This just gives the new "bulky" carps a max health value to match
## Why It's Good For The Game

Its not fun to be slow and immobile when your health value is still
balanced as if you are fast and nimble.

I mean just look at the changelog at a glance you can tell something was
wrong


That being said I`m open to similar behavior in the future where carp
come in, they get a one time health boost, possibly in the form of a
bubble that the rift blew them out in, and that bubble is like a
temporary health pool that gets used up and cant be recovered......but
the current iteration im 99% sure is a bug.
## Changelog
🆑

fix: Space carp that arrive via rifts are no longer stricken with rift
travel related sickness that causes them to become weaker.
/🆑
2023-11-02 12:58:02 +00:00
Mothblocks
8f29ff6e97 Revert "Emote Panel TGUI" (#79474)
Reverts tgstation/tgstation#79434

---

Dude


![image](https://github.com/tgstation/tgstation/assets/35135081/d4b07766-331d-45d7-93cf-ae5e5b01a2ab)
2023-11-02 09:14:25 +01:00
larentoun
5ef9f3e80d Emote Panel TGUI (#79434)
## About The Pull Request
Adds Emote Panel TGUI in IC category. It shows all the available emotes
for the character on the moment of opening the panel. It also has
filters for:
* If the emote is visible;
* If the emote is audible;
* If the emote has sound;
* If the emote requires hands;
* If the emote can have params (such as target);

<details><summary>Images</summary>


![Screenshot_1](https://github.com/tgstation/tgstation/assets/31931237/c6bd549c-de33-44dd-8189-7b92fa2f4ac9)

![Screenshot_8](https://github.com/tgstation/tgstation/assets/31931237/2d444a86-459a-441c-bb88-d12760229d65)

![Screenshot_2](https://github.com/tgstation/tgstation/assets/31931237/59145517-e8bc-4a46-8e82-6b738865eb83)

![Screenshot_3](https://github.com/tgstation/tgstation/assets/31931237/60d52f97-4331-40c7-a925-72019304ebea)

![Screenshot_4](https://github.com/tgstation/tgstation/assets/31931237/0eb49e6d-4046-4f56-bcf9-7bfda7444ee2)

![Screenshot_5](https://github.com/tgstation/tgstation/assets/31931237/58e1f491-532d-4225-9048-b98f8a3caa78)

![Screenshot_6](https://github.com/tgstation/tgstation/assets/31931237/dfe8f436-2954-4f2b-9949-d96b0928cfff)

![Screenshot_7](https://github.com/tgstation/tgstation/assets/31931237/7c543a7e-66dd-4192-a6de-698dc027c258)

</details>

## Why It's Good For The Game
Easier for newer players to use emotes without the use of "*help" and
keybindings. Also shows if the emote is visible/audible/etc, so there is
less need to spam each of them to see which have sound.

## Changelog
🆑
add: Emote Panel TGUI added in IC category.
/🆑
2023-11-02 00:15:08 -07:00
kawoppi
dc9376a85e basic mobs use their disarm response when shoved by humans (#79441)
## About The Pull Request
So basic mobs have variables which can change what message is displayed
when they are shoved. But right now these are only used if they are
shoved by aliens. This PR changes it so that they're also used when
they're shoved by humans.

![shove2](https://github.com/tgstation/tgstation/assets/94711066/80bc08e9-7ab2-4eb6-a01f-ed5a2e1cd63b)
## Why It's Good For The Game
It seems a bit weird for these to only show up when aliens are involved.
It seems more appropriate to shoo a tiny creature away compared to
shoving it.
## Changelog
🆑
spellcheck: basic mobs getting shoved by humans now display the mob's
disarm response
/🆑
2023-11-01 17:08:28 -06:00
lizardqueenlexi
08274f8343 Basic Constructs: Proteon (#79425)
## About The Pull Request

Last one! Makes proteons into a basic mob, and completely removes the
simple_animal construct supertype.

Proteons aren't really designed to be played by a player, instead being
a nuisance mapped into various ruins and traps. As such, they don't
really have any special abilities. Instead, the hostile variant has a
somewhat unique behavior. They'll viciously attack anyone who comes
close, but, being frail little cowards, if a proteon takes damage it
will immediately flee. After a random period between 2 and 4 seconds, it
will stop fleeing and come back for more.

In addition to this, a few other things have been done, some only
related because they're in files I touched.
- Moved proteons from the file for the Cleric's Den to their own file in
the basic constructs folder. Given that they're used in several
different ruins, they might as well not just be in the file for one.
- Simple constructs have been cut, and with them the procs for
healing/repairing on shades and cult structures, as those are no longer
needed.
- Because I was touching it anyway, I touched up the file for trap
structures. They no longer use any one-letter variable names, and time
is now universally listed in seconds rather than deciseconds in that
file.
- I removed a completely unused blackboard key from ice demons. This is
something I noticed due to a change I ended up not making while working
on proteon AI, but I figured I might as well leave it gone.
## Why It's Good For The Game

Kills the last three simple construct typepaths, bringing us to the
destined 19 removed. Huzzah!

The proteon AI routine should inject a little spice into fighting
proteons, especially for the unprepared - unlike many mobs, they won't
stand there and take it if you decide to fight back, but you can never
safely ignore them when they run away. They still aren't particularly
dangerous.
## Changelog
🆑
refactor: Proteon constructs now use the basic mob framework. The ones
encountered in ruins are a bit flightier now, and will briefly flee
combat if attacked - only so that they can return and menace you again
soon after. Please report any bugs.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-11-01 17:07:20 -06:00
DrTuxedo
b5654d7203 Security Pen and Penlight improvement (#79299)
## About The Pull Request
Improves penlight sprite and code.

A new type of pen has been introduced - the Security Pen. This pen is
red and can create a holograph around a person, similar to a medical
penlight. The holograph prompts the person to surrender for 30 seconds,
and the holograph itself is visible for 5. There is a 30-second cooldown
between usage.

Holosign itself does nothing except be visual, just like medical
holosign **(DO NOT MISTAKE HOLOSIGNS FOR HOLOBARRIERS)**


https://github.com/tgstation/tgstation/assets/42353186/1ee5f794-7218-4e52-b04f-3ebb50bd224a

Now every Security member spawns with a Security Pen in their PDA.

Now you can print Security Pens at Security Techfab, and Penlights at
Medical Techfab.
## Why It's Good For The Game
The only way to prompt someone to perform the surrender emote is by
holding them up with a gun. However, this mechanic can be quite
unreliable, even after updates, especially if the person is moving. As a
result, many players are unaware of how to prompt the surrender emote or
even about its existence, so they don't know they can trigger it
themselves by typing "*surrender".
This enables non-lethal arrests without stun batons or other tools.

Sprites are a significant improvement as the previous penlight sprites
were outdated.
## Changelog
🆑
qol: There is now a more convenient way to prompt surrender to emote -
the Security Pen. Each officer is equipped with one in their PDA. Simply
click someone with it to prompt a 30-second surrender. They are
printable at Security Techfab as well.
qol: Penlights now are printable at Medical Techfab.
image: Penlights got a new cleaner sprite to replace its ancient one
code: The code for Penlight's holographic sign has been improved.
/🆑
2023-11-01 21:00:09 +00:00
SyncIt21
c3bbf4d9a0 [NO GBP] Limits plumbing reaction chamber ph balance attempts (#79429)
## About The Pull Request
- Fixes #79427

It's not a memory leak but a dedicated while loop that will run as many
times as required to accurately balance the ph of the solution.
Sometimes it makes way too many attempts causing high tick usage. Now
the loop will run for a maximum of 5 times before giving up preventing
lag.

I decided 5 because that should be sufficient for most cases but it can
be adjusted later by anyone interested by changing the value of the
`MAX_PH_ADJUSTMENTS` define

## Changelog
🆑
fix: plumbing reaction chamber will attempt to balance the ph of the
solution a maximum of 5 times before giving up and thus preventing
infinite loops, high tick usage
/🆑
2023-11-01 13:03:03 +01:00