Commit Graph

3793 Commits

Author SHA1 Message Date
John Willard
9ced062af8 Removes network ID and some minor other things (#74789)
## About The Pull Request

Removes network_id as it was completely unused now.

Also reworks the maints access secret buttons to work with how accesses
work now, taking into account req_one_access. This is theoretically a
problem when we moved to req_one_access more often in maints so
departments can access their own maint areas.

## Why It's Good For The Game

This is just minor changes I found while trying to edit other things,
and thought I should PR it.

## Changelog

🆑
admin: Secret buttons for Engineering/Brig maint accesses should now
work more consistently.
/🆑
2023-04-17 20:51:55 -06:00
lessthanthree
f5e92812b2 Fixes forcing night shift on/off (#74657)
## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/74587
When nightshift is forced on/off by an admin the subsystem is in an idle
state, so the tick check always fails and the lights don't change.

## Changelog

🆑 LT3
fix: Fixed forcing night shift lighting on/off
/🆑
2023-04-13 21:57:14 -06:00
Fikou
80317d02b9 admin sound playing now tells the key, not the ckey (#74650)
## About The Pull Request
its meant for players, ckey is useless there
also mentions playing a sound, not specifically music

## Changelog
too minor to mention
2023-04-11 15:17:30 -06:00
Kyle Spier-Swenson
eab953bc0e Failed logins should log the ckey, not the key (#74649)
This makes searching logs harder, and makes filtering cids and ips from
publics less exact if it has to account for spaces existing here.
2023-04-11 15:17:01 -06:00
NamelessFairy
670136a239 Refactors CTF (#74342)
## About The Pull Request
CTF code is rather infamous for being poor and hard to actually work
with, I wanted to add a feature for a mapping march project but the code
would not allow for it, so here we are refactoring the entire thing.
## Why It's Good For The Game

Replaces some really bad code with slightly less bad code. Should make
it much easier to add features onto CTF in the future.
## Changelog
🆑
refactor: CTF has been entirely refactored.
fix: Respawn times for CTF now work.
qol: CTF players are alerted during control point games when one team is
half way to winning.
admin: CTF instagib mode can now be toggled from the secrets panel.
/🆑
2023-04-09 17:13:06 -06:00
NamelessFairy
b3cce8cfa4 Fixes the basketball and thunderdome baseturf issue. (#74461)
## About The Pull Request

Simply modifies the should_place_on_top value on these maps templates so
that they overwrite their baseturfs rather that creating an evergrowing
stack. I've also done the same for Mafia and CTF which should also not
be creating stacked baseturfs.
Fixes #69711
Should fix #74443 too since its the same issue.
## Why It's Good For The Game

Bugfix good.
## Changelog
🆑
fix: Basketball and Thunderdome maps should not load with broken turfs
are several resets of their maps.
/🆑
2023-04-06 16:26:49 -06:00
Zephyr
7fd64dcf3d Auxtools is now a config opt-in (#74501)
See https://github.com/tgstation/tgstation/pull/74497

Causes auxtools to not be a default part of the server environment and
requires server operators to manually enable it.

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-04-05 15:36:26 -07:00
Jordan Dominion
8b45c788a5 Fix DMAPI errors regarding validated chat commands (#74495)
Always check the runtime log
2023-04-04 14:58:18 -06:00
Kyle Spier-Swenson
8fc56cbda0 Block connections to the server from new ckeys if the panic bunker is up and not in interview mode (#74496)
The living hours check in client/New is still valid, this only cares
about never before seen players without regard for that config.
2023-04-04 14:57:31 -06:00
SomeRandomOwl
1635db4337 Play Internet Sound, Admin CKEY instead of character name (#74426)
## About The Pull Request

This fixes a minor oversight I had on my last PR that altered
`PlaySound.dm` Where it shows the admins character name instead of CKEY
like it was before I updated it. This wasn't intentional to show the
character name instead of CKEY.

## Why It's Good For The Game

Fixes a a unintended bug to return the name of the shown admin back to
how it was previously as being their CKEY rather than character name

<details>
<summary>Screenshots/Videos</summary>


![dreamseeker_szXvINGPN6](https://user-images.githubusercontent.com/2568378/229268382-8f57d039-50e3-4132-8f56-447ae117beb1.png)

</details>


## Changelog

🆑
fix: Play Internet Sound will no longer show an admins Character name
and returns back to showing CKEY as previously
/🆑
2023-04-02 17:02:29 +01:00
NamelessFairy
ef8d3f9c36 Highlander will not be activated if admins exit the highlander delay window. (#74400)
## About The Pull Request

Starting highlander as an admin prompts admins if they want it to start
with or without a warning. If you exit the window it treats it as if you
selected the 40 second warning. This makes it so admins can now cancel
out of this window.
## Why It's Good For The Game

Sometime, somewhere and admin is going to accidently click this button
and be unable to stop the unintended incoming highlander round. This
should prevent this.
## Changelog
🆑
admin: Exiting the highlander delay window without selecting an option
will no longer start highlander mode.
/🆑
2023-04-01 19:19:00 +02:00
Bloop
eed95e320d Makes silicons able to receive headset messages from admins (#74387)
## About The Pull Request

This just makes silicons able to receive headset messages from admins,
as stated in the title.

It doesn't really make sense from a technical point of view why a
silicon mob should not be able to receive headset messages from admins,
seeing as they have a built in radio. As long as their radio is intact
they will get the message.

Some testing screenshots-- it is working as intended.

<details>
<summary>Balloon alert still displays</summary>
  

![image](https://user-images.githubusercontent.com/13398309/229042590-b9511db7-1072-469d-9ca8-b64b0b208e0d.png)

</details>


<details>
<summary>No radio/headset still prevents message from being
sent</summary>
  

![image](https://user-images.githubusercontent.com/13398309/229042446-241c1ffa-11f5-4050-b6fe-beabcddb79fe.png)



![image](https://user-images.githubusercontent.com/13398309/229042420-d6414fc2-b64c-4a6f-af41-7ac364815cdc.png)

</details>


Closes https://github.com/Skyrat-SS13/Skyrat-tg/issues/14164

## Why It's Good For The Game

Fixes an oversight, more tools for admins to play with is always nice.

## Changelog

🆑
fix: admins may now send headset messages to silicon mobs as long as
they have a radio
/🆑
2023-03-31 22:12:48 -06:00
Jordan Dominion
958ce2be83 Implement TGS DMAPI 6.1.0 features (#74341)
Mainly just addressing warnings #74324 (36396bb4c2) added
2023-03-30 16:17:23 -06:00
SomeRandomOwl
b2f6058c92 Music Widget Modifications + Request Music Verb (#74170)
## About The Pull Request

This PR alters the Play Internet Sound, First off it modifies the Widget
To clean up some info on the widget to hide information when that
information is not available to be shown. Secondly it makes the URL
input prompt for Play Internet Sound to be a TGUI text input box, as
well as adds in a warning if a song being played is >10 minutes long,
and adds in a proc to play music with a supplied variable.

Secondly This PR adds in a new player facing VERB in the OOC tab called
`Request Internet Sound` functionally the verb is similar to Pray but it
grants admins the ability to play URL's directly from the chat or
Request Manager, where it will prompt the admin if they wish to play the
song.

<details>
<summary>Screenshots/Videos</summary>


![dreamseeker_PJ1PCCWxT3](https://user-images.githubusercontent.com/2568378/226795466-541def6e-d1cc-4481-b14a-21d2690c80b3.png)

<details>
<summary>Widget</summary>


![image](https://user-images.githubusercontent.com/2568378/226794671-ab1f6f3f-08e4-44f7-9569-634ff70e8462.png)

![image](https://user-images.githubusercontent.com/2568378/226794685-4f2e71bd-c3f9-4409-86f1-8b5be28bed41.png)

![image](https://user-images.githubusercontent.com/2568378/226794696-2725fadf-0066-4cd4-b975-e9e69f1ef4c9.png)
</details>

<details>
<summary>New Prompts</summary>


![tO6QsZdHfe](https://user-images.githubusercontent.com/2568378/226794891-ce2e6737-409d-479c-90f2-57d55fc89561.png)

![RZVwU417nX](https://user-images.githubusercontent.com/2568378/226794912-0261e374-a7fa-4864-b5b8-99821cff32a8.png)
</details>

<details>
<summary>Videos</summary>


https://user-images.githubusercontent.com/2568378/226794939-4ca018b3-bba5-4893-9301-6858b0d433b9.mp4


https://user-images.githubusercontent.com/2568378/226794783-ca750840-3149-489c-9239-00014ac4ca5c.mp4
</details>
</details>

## Why It's Good For The Game

This cleans up the UI for the Play Internet Sound so that things to hide
info when admins choose to hide it, or to not show it if that
information exists at all. As well as grants players a ability to
request music to be played via Admin Midi and sorts them with prayers
and allows admins to directly play URL's simultaneously cleaning up any
music requests made through prays as well as a more obvious way for
people to request music rather than them Ahelping for music

## Changelog

🆑
add: New VERB, Request Internet Sound, It is in the OOC tab and allows
you to request music from admins to play, by default only allows
bandcamp, youtube, and soundcloud links
fix: Fixes the Admin Midi Widget UI to only present info that is
available to players to be seen
admin: Play Internet Sound URL input is now TGUI
admin: Play Internet Sound warns you if a song length is >10 Minutes
admin: Added new mute type to mute internet sound requests from a player
config: Added thee new config options, LOG_INTERNET_REQUEST,
REQUEST_INTERNET_SOUND, REQUEST_INTERNET_ALLOWED
/🆑

---------

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2023-03-29 19:04:41 -06:00
san7890
ccef887efe Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR
TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW
RATHER THAN AFTER THE FACT.

## About The Pull Request

Hey there,

This took a while to do, but here's the gist:

Python file now regexes every file in `/code` except for those that have
some valid reason to be tacking on more global defines. Some of those
reasons are simply just that I don't have the time right now (doing what
you see in this PR took a few hours) to refactor and parse what should
belong and what should be thrown out. For the time being though, this PR
will at least _halt_ people making the mistake of not `#undef`ing any
files they `#define` "locally", or within the scope of a file.

Most people forget to do this and this leads to a lot of mess later on
due to how many variables can be unmanaged on the global level. I've
made this mistake, you've made this mistake, it's a common thing. Let's
automatically check for it so it can be fixed no-stress.

Scenarios this PR corrects:

* Forgetting to undef a define but undeffing others.
* Not undeffing any defines in your file.
* Earmarking a define as a "file local" define, but not defining it.
* Having a define be a "file local" define, but having it be used
elsewhere.
* Having a "local" define not even be in the file that it only shows up
in.
* Having a completely unused define*

(* I kept some of these because they seemed important... Others were
junked.)
## Why It's Good For The Game

If you wanna use it across multiple files, no reason to not make it a
global define (maybe there's a few reasons but let's assume that this is
the 95% case).

Let me know if you don't like how I re-arranged some of the defines and
how you'd rather see it be implemented, and I'd be happy to do that.
This was mostly just "eh does it need it or not" sorta stuff.

I used a pretty cool way to detect if we should use the standardized
GitHub "error" output, you can see the results of that here
https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792
## Changelog
Nothing that really concerns players.

(I fixed up all this stuff using vscode, no regexes beyond what you see
in the python script. sorry downstreams)
2023-03-29 10:17:03 -07:00
Sol N
c4b95c7ccd Fix Respawn Character Admin Verb (#74295)
## About The Pull Request

while testing #74293 i tried to use this verb and it didnt work because
some stuff wasnt parsing in correctly so i fixed it

## Why It's Good For The Game

we want all of the admin tools to work

## Changelog


🆑
fix: admin respawn character verb works properly
/🆑
2023-03-28 23:22:22 -06:00
John Willard
05efe0b872 Curators now have D-notice newscaster access, Officers can issue warrants (#74269)
## About The Pull Request

Newscasters now have Library access for handing out D-Notices, and
Security access for Wanted issues, instead of both being tied to Armory
access.

Also allows Ntos Newscaster to work if ran by someone without Library
access, so Curator can download the app for others if they want.

## Why It's Good For The Game

- Newscasters have turned into one of the Curator's largest gameplay
aspects and it would be nice if they were able to moderate it as well,
instead of being the Warden who has absolutely no interest in
Newscasters.
- Allowing Officers to send out Wanted issues is more just in hopes it
will result in it being used more, though it seems like a very similar
feature to the wanted posters, maybe we can merge these two together one
day.
- The Ntos Newscaster access change is more of an oversight, I like it
when people can download apps for eachother as it gives a reason to seek
others and lend them your PDA for an application you want, blocking the
person from using the app after getting a Curator to download it for
them kinda sucks in-game.

## Changelog

🆑
balance: Curators/HoP can now manage Newscaster D-Notices (previously
was Warden/HoS).
balance: Security Officers/Detectives can now issue Wanted notices on
Newscasters.
balance: Ntos Newscaster now requires Library access only to download,
not to run.
/🆑
2023-03-28 12:12:48 +01:00
Zephyr
ecbcef778d Refactors Regenerate Organs, and a few organ helpers (#74219)
## About The Pull Request

Refactors regenerate organs to be slightly more intelligent in handling
organ changes and replacements.
Noteably:
- We don't remove organs that were modified by the owner; such as
changing out your heart for a cybernetic
- We early break out of the for loop if they aren't supposed to have an
organ there and remove it
- We check for the organ already being correct, and just healing it and
continuing if it is

Also changes the names of some of the organ helpers into snake_case
### Mapping March
Ckey to receive rewards: N/A

## Why It's Good For The Game
## Changelog

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-03-26 17:54:36 +01:00
LemonInTheDark
8ef97dbdec Allows populating new vv'd lists (#74064)
You get an alert, and can continue to enter variables until you hit
cancel. Not sure if this is good ux or not, yell at me if not
## Why It's Good For The Game

Fikou asked me for it and that guy's pretty cool. Also it's annoying to
not be able to feed lists into procs

## Changelog
🆑
admin: You can now optionally populate new lists created via vv. hit
cancel to stop filling them up
/🆑
2023-03-18 01:33:16 -06:00
san7890
bf6f81a9b5 Implements AddTraits and RemoveTraits procs for adding/removing multiple traits + swag unit test (#74037)
On the tin, doing it like this means we can reduce our overall line
fingerprint whenever we have to add two or more traits from the same
source on the same target. Especially helps when we get to the 4+ range
of traits, a breath of fresh air even.

Doesn't mean we have to do for loops, as that's already handled within
the define as well. I replaced some of the checks with `length()`
checks, let me know if I should switch it over to something else (maybe
`islist()`)? We stack_trace whenever we're not passed a list reference
on purpose, and sometimes var/lists are null by default (or just empty,
making this redundant).
## Why It's Good For The Game

I commonly feel the urge to write "use `AddTraits()`" or something in
reviews, then am sad when I remember it doesn't exist. I will no longer
be sad.

Can ensure a lot more trait safety as well by using static lists- when
both ADD_TRAIT_LIST and REMOVE_TRAIT_LIST re-use the same list, you are
confident (from a static point of view) that everything that you want to
be adding/removing works.

I may have missed a few things where this could be used, but both macros
implemented in this PR still use the same framework that was being used
in the last four years- so stuff won't break if left untouched. Just a
nifty new tool for developers.

also fixed up some code in the area, numerous bugs were found and
exploded
2023-03-18 01:57:06 +00:00
Jacquerel
0fe4dea03f Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)
## About The Pull Request

There's a couple of open issues which fix places where only simple
animals were considered, but they are doing it piecemeal.
I decided to just go through every instance of `isanimal` or
`subtypesof(mob/living/simple_animal)` I could find, identify which
should also affect basic mobs, and fix them.

I left out the two others which are already in PR, I'm not stealing your
GBP.

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

## Why It's Good For The Game

Consistency, mostly. 
As far as I can tell all of these things _should_ have effected basic
mobs, but didn't.
This fixes a fair number of bugs but also they're bugs that nobody
noticed or reported.

There are a couple of places I did not update which will need updating
in future. These are:
- Dextrousness checks, because basic mobs don't have that yet.
- The Charge cooldown action, because frankly I couldn't tell what it
was trying to do.

alright here goes

## Changelog

🆑
fix: Carp will once again be healed from being near carp rifts
fix: Sepia slime cores and the rewind camera now work on Ian
fix: Sapient ridden carp (or cows) can throw off their riders by shoving
them, or by performing the spin emote.
fix: Giant Spider AI will be disabled by the timestop spell
fix: Ian can eat envirochow
fix: Mice, Frogs, and Cockroaches will no longer set off bear traps
fix: You can put a macrobomb implant into Cayenne (or Ian)
fix: Ian will now recognise that being squeezed by a cyborg is a nice
hug
fix: The player panel will tell admins if you're currently a corgi
fix: The staff of storms deals massive damage to Bileworms and Giant
Spiders
fix: Ian will whimper if forced to scream
fix: Slimes can consume space carp
fix: Mice can be captured in xenoballs
fix: You can use pacifying potions on Giant Spiders
fix: Sgt Araneus can be fitted with a xenobiological radio implant
fix: Sapient corgis no longer count as living players for the purpose of
highlander escape objectives
fix: The random sentience event can now target corgis and sergeant
araneus
add: The random sentience event can target a wider array of farm animals
fix: Petsplosion wizard event can target corgis
add: Petsplosion wizard event will now target farm animals and
mothroaches
fix: The colossus possession crystal can now actually possess the
cockroach it spawns, does not kill you instantly upon ending possession
/🆑
2023-03-17 13:47:07 -06:00
Time-Green
9843c23657 Replaces internal_organs with organs (#73918)
Internal_organs now also contains external organs, so the naming was
incorrect

Requested by @tralezab in #72734

Also removed some now incorrect 'as anythings' that assumed everything
in the internal_organs list was an internal_organ (which is a lie since
I put extorgans in there which means runtimes and unintentionakl
behaviour

🆑
fix: fixes deadly harvesting just taking harmless extorgans
code: renames internal_organs to organs now that it can also contain
external_organs
/🆑
2023-03-14 18:33:35 -06:00
MrMelbert
9f314ac49b Fixes the null law check for the law panel not working adds an alert for non-observers using it (#73859)
## About The Pull Request

- The `null` law check for the law panel existed in the UI side, but on
the dm side it didn't pass it as null correctly. Fixes that

- Adds a message admins for non-observers using the panel, a la Check
Antagonists. Just to be safe

## Changelog

Nothing player facing
2023-03-10 18:57:34 -05:00
NamelessFairy
105dff5058 Refactors admin event setup (again) (#73801)
## About The Pull Request

Requested by @tralezab 

Admin event setups now use a list rather than a single setup. This means
common functionality list setting position and picking an option from a
list can be applied to events that have multiple customizable factors
rather than needing to making entirely overridden subtypes for every
event.

Adds a few new subtypes of event_admin_setup:
- input_number for setting a number value. An example can be found in
the heart attack event.
- set_location for causing an event to occur in a specific location. An
example can be found in the stray cargo pod event.
- question, yes no question that returns true/false. An example of its
usage can be found in immovable rod
- candidate_check, a more niche subtype used to block events that do not
function unless theres a specific number of valid candidates. An example
of its usage can be found in the disease events.

While doing the refactor I also implemented some simple extra options
for some of the refactored events. Classic Disease now has an option for
admins to roll **any** disease rather than just the "safe" ones. And
shuttle catastrophe now allows admins to select which shuttle is used.
## Why It's Good For The Game

Cuts back on duplicate lines of code a lot, should make adding more
customization to events slightly easier. Also more admin customization.
## Changelog
🆑
refactor: Admin event setup's have been refactored to use lists.
fix: When admins customize the pirate event all options will be
available rather than just options that have not been randomly rolled.
fix: The stray meteor event no longer runtimes when customized by
admins.
admin: Admins can now select the shuttle brought in by the shuttle
catastrophe event.
admin: Admins can now randomize the disease outbreak classic event to
roll any disease type, including transformation diseases so have fun
with that.
/🆑
2023-03-08 09:50:59 -07:00
Kyle Spier-Swenson
57db2c1cd1 Add config to validate admin discord commands with discord links and admin ranks (#73818)
This adds a config to secure discord chat commands used by admins.

When enabled it compares the discord id the chat command came from with
the linked discords db to find their ckey, then checks they have the
correct admin rights.

The check automatically self disables if the db is down or if legacy
admin ranks are enabled. (There is no config for discord account linking
or i'd just use that.)

Moved non-admin discord commands out of the admin modules folder and
into the discord modules folder.

Deleted some defunct shit. There was a global list and admin only notify
command that was used by nothing.

There was a whole discord config section that was used by nothing.
2023-03-07 15:26:00 -07:00
Sol N
9eb1d99e1b new smite: deadchat control (#73725)
## About The Pull Request

I played around with the deadchat control component for some stuff
downstream and then decided to turn it into a smite, something that is
harsh but really funny especially with all of the inputs that ghosts
have.

The emotes are ones that have the character do something, coordinated
spins and flips have their usual consequences probably, drop causes them
to drop their held items, fall causes them to fall over (and drop their
held items), throw makes them throw whatever item they are holding in
their active hand in a random direction, shove causes them to shove a
random person or mob around them, sit and stand make them buckle and
unbuckle themselves from a chair, and run and walk change their speed
intent. Seven second cooldown and on anarchy ruleset because it _is_ a
smite.

There is a large range of smites from the small pay docking to the
instant and absolute gib but it doesn't feel like there's a lot in for a
nuisance. This would give an option that lets all of the ghosts annoy
one person in particular as they struggle to play while ghosts interfere
with them and constantly make them drop their items and interfere with
their movements, which is obviously fun for the ghosts.

Also I personally think that it is very funny.
2023-03-04 16:37:44 +00:00
MrMelbert
430e3b8af3 Adds the "Law panel", a control center for admins interacting with silicon laws (#73747)
Adds the Law Panel.

The Law Panel shows all silicons in the world and their lawsets.

From this panel, an admin can add new laws, remove old laws, edit
existing laws, or even re-arrange law order.

This allows for admins to get a lot more creative in creating custom
silicon lawsets. It also gives a much easier way for admins to deal with
law grief at a glance.

Additionally, the panel allows for admins to force a silicon to state
laws, privately announce the laws to the player, or give them a the
"laws updated" alert as normal.
2023-03-04 16:34:31 +00:00
LemonInTheDark
ab307032ed Nightvision Rework (In the name of color) (#73094)
## About The Pull Request

Relies on #72886 for some render relay expansion I use for light_mask
stuff.

Hello bestie! Night vision pissed me off, so I've come to burn this
place to the ground.
Two sections to discuss here. First we'll talk about see_in_dark and why
I hate it, second we'll discuss the lighting plane and how we brighten
it, plus introducing color to the party.

### `see_in_dark` and why it kinda sucks

https://www.byond.com/docs/ref/#/mob/var/see_in_dark

See in dark lets us control how far away from us a turf can be before we
hide it/its contents if it's dark (not got luminosity set)
We currently set it semi inconsistently to provide nightvision to mobs.

The trouble is stuff that produces light != stuff that sets luminosity.
The worst case of this can be seen by walking out of escape on icebox,
where you'll see this


![image](https://user-images.githubusercontent.com/58055496/215683654-587fb00f-ebb8-4c83-962d-a1b2bf429c4a.png)

Snow draws above the lighting plane, so the snow will intermittently
draw, depending on see_in_dark and the luminosity from tracking lights.
This would in theory be solvable by modifying the area, but the same
problem applies across many things in the codebase.
As things currently stand, to be emissive you NEED to have a light on
your tile. People are bad at this, and honestly it's a bit much to
expect of them. An emissive overlay on a canister shouldn't need an
element or something and a list on turfs to manage it.
This gets worse when you factor in the patterns I'm using to avoid
drawing lights above nothing, which leads to lights that should show,
but are misoffset because their parent pixel offsets.

It's silly. We do it so we can have things like mesons without just
handing out night vision, but even there the effect of just hiding
objects and mobs looks baddddddd when moving. It's always bothered me.
I'll complain about mesons more later, but really just like, they're too
bright as it is.

I'm proposing here that rather then manually hiding stuff based off
distance from the player, we can instead show/hide using just the
lighting plane. This means things like mesons are gonna get dimmer, but
that's fine because they suck.

It does have some side effects, things like view() on mobs won't hide
stuff in darkness, but that's fine because none actually thinks about
view like that, I think.

Oh and I added a case to prevent examining stuff that's in darkness, and
not right next to you when you don't have enough nightvision, to match
the old behavior `see_in_dark` gave us.

Now I'd like to go on a mild tangent about color, please bare with me

### Color and why `lighting_alpha` REALLY sucks

You ever walk around with mesons on when there's a fire going, or an
ethereal or firelocks down.
You notice how there isn't really much color to our lights? Doesn't that
suck?

It's because the way we go about brighting lighting is by making
everything on the lighting plane transparent.
This is fine for brightening things, but it ends up looking kinda crummy
in the end and leads to really washed out colors that should be bright.
Playing engineer or miner gets fucking depressing.

The central idea of this pr, that everything else falls out of, is
instead of making the plane more transparent, we can use color matrixes
to make things AT LEAST x bright.

https://www.byond.com/docs/ref/#/{notes}/color-matrix

Brief recap for color matrixes, fully expanded they're a set of 20
different values in a list
Units generally scale 0-1 as multipliers, though since it's
multiplication in order to make an rgb(1,1,1) pixel fullbright you would
need to use 255s.

A "unit matrix" for color looks like this:
```
list(1, 0, 0, 0,
     0, 1, 0, 0,
     0, 0, 1, 0,
     0, 0, 0, 1,
     0, 0, 0, 0
)
```

The first four rows are how much each r, g, b and a impact r, g, b and
well a.
So a first row of `(1, 0, 0, 0)` means 1 unit of r results in 1 unit of
r. and 0 units of green, blue and alpha, and so on.
A first row of `(0, 1, 0, 0)` would make 1 red component into 1 green
component, and leave red, blue and alpha alone, shifting any red of
whatever it's applied to a green.

Using these we can essentially color transform our world. It's a fun
tool. But there's more.

That last row there doesn't take a variable input like the others.
Instead, it ADDS some fraction of 255 to red, green, blue and alpha.

So a fifth row of `(1, 0, 0, 0)` would make every pixel as red as it
could possibly be.

This is what we're going to exploit here. You see all these values
accept negative multipliers, so we can lower colors down instead of
raising them up!
The key idea is using color matrix filters
https://www.byond.com/docs/ref/#/{notes}/filters/color to chain these
operations together.

Pulling alllll the way back, we want to brighten darkness without
affecting brighter colors.
Lower rgb values are darker, higher ones are brighter. This relationship
isn't really linear because of suffering reasons, but it's good enough
for this.
Let's try chaining some matrixes on the lighting plane, which is bright
where fullbright, and dark where dark.

Take a list like this

```
list(1, 0, 0, 0,
     0, 1, 0, 0,
     0, 0, 1, 0,
     0, 0, 0, 1,
     -0.2, -0.2, -0.2, 0
)
```
That would darken the lighting a bit, but negative values will get
rounded to 0
A subsequent raising by the same amount
```
list(1, 0, 0, 0,
     0, 1, 0, 0,
     0, 0, 1, 0,
     0, 0, 0, 1,
     0.2, 0.2, 0.2, 0
)
```
Will essentially threshold our brightness at that value.
This ensures we aren't washing out colors when we make things brighter,
while leaving higher values unaffected since they basically just had a
constant subtracted and then readded.

### But wait, there's more

You may have noticed, we gain access to individual color components
here.
This means not only can we darken and lighten by thresholds, we can
COLOR those thresholds.
```
list(1, 0, 0, 0,
     0, 1, 0, 0,
     0, 0, 1, 0,
     0, 0, 0, 1,
     0.1, 0.2, 0.1, 0
)
```
Something like the above, if applied with its inverse, would tint the
darkness green.
The delta between the different scalars will determine how vivid the
color is, and the actual value will impact the brightness.

Something that's always bothered me about nightvision is it's just
greyscale for the most part, there isn't any color to it.
There was an old idea of coloring the game plane to match their lenses,
but if you've ever played with the colorblind quirk you know that gets
headachey really fast.
So instead of that, lets color just the darkness that these glasses
produce.
It provides some reminder that you're wearing them, instead of just
being something you forget about while playing, and provides a reason to
use flashlights and such since they can give you a clearer, less tinted
view of things while retaining the ability to look around things.

I've so far applied this pattern to JUST headwear for humans (also those
mining wisps)
I'm planning on furthering it to mobs that use nightvision, but I wanted
to get this up cause I don't wanna pr it the day before the freeze.

Mesons are green, sec night vision is red, thermals orange, etc.

I think the effect this gives is really really nice. 
I've tuned most things to work for the station, though mesons works for
lavaland for obvious reasons.

I've tuned things significantly darker then we have them set currently,
since I really hate flat lighting and this system suffers when
interacting with it.

My goal with these is to give you a rough idea of what's around you,
without a good eye for detail.
That's the difference between say, mesons, and night vision. One helps
you see outlines, the other gives you detail and prevents missing
someone in the darkness.

It's hard to balance this precisely because of different colored
backgrounds (looking at you icebox)
More can be done on this front in future but I'm quite happy with things
as of now

### **EDIT**

I have since expanded to all uses of nightvision, coloring most all of
them.

Along the way I turned some toggleable nightvision into just one level. 
Fullbright sucks, and I'd rather just have one "good" value.

I've kept it for a few cases, mostly eyes you rip out of mobs.
Impacted mobs are nightmares, aliens, zombies, revenants, states and
sort of stands.

I've done a pass on all mobs and items that impact nightvision and added
what I thought was the right level of color to them. This includes stuff
like blobs and shuttle control consoles
As with glasses much of this was around reducing vision, though I kept
it stronger here, since many of these mobs rely on it for engaging with
the game

<details>
<summary>
Technical Changes
</summary>

#### Adds filter proc (the ones that act like templates) support to
filter transitions.
Found this when testing this pr, seemed silly.

#### Makes our emissive mask mask all light instead
This avoids dumbass overlay lighting lighting up wallmounts.
We switch modes if some turfflags are set, to accomplish the same thing
with more overhead, and support showing things through the darkness.

Also fixes a bug where you'd only get one fullscreen object per mob, so
opening and closing a submap would take it away

Also also fixes the lighting backdrop not actually spanning the screen. 
It doesn't actually do anything anymore because of the fullscreen light
we have, but just in case that's unsued.
Needs cleanup in future.

#### Moves openspace to its own plane that doesn't draw, maxing its
color with a sprite

This is to support the above
We relay this plane to lighting mask so openspace can like, have
lighting

#### Changes our definition of nightvision to the light cutoff of night
vision goggles and such
Side affect of removing see_in_dark. This logic is a bit weak atm, needs
some work.

#### Removes the nightvision spell
It's a dupe of the nightvision action button, and newly redundant since
I've removed all uses of it

#### Cleans up existing plane master critical defines, ensures
trasnparent won't render

These sucked
Also transparent stuff should never render, if it does you'll get white
blobs which suck

</details>

## Why It's Good For The Game

Videos! (Github doesn't like using a summary here I'm sorry)
<details>

Demonstration of ghost lighting, and color


https://user-images.githubusercontent.com/58055496/215693983-99e00f9e-7214-4cf4-a76a-6e669a8a1103.mp4

Engi-glass mesons and walking in maint (Potentially overtuned, yellow is
hard)


https://user-images.githubusercontent.com/58055496/215695978-26e7dc45-28aa-4285-ae95-62ea3d79860f.mp4

Diagnostic nightvision goggles and see_in_dark not hiding emissives


https://user-images.githubusercontent.com/58055496/215692233-115b4094-1099-4393-9e94-db2088d834f3.mp4

Sec nightvision (I just think it looks neat)


https://user-images.githubusercontent.com/58055496/215692269-bc08335e-0223-49c3-9faf-d2d7b22fe2d2.mp4

Medical nightvision goggles and other colors


https://user-images.githubusercontent.com/58055496/215692286-0ba3de6a-b1d5-4aed-a6eb-c32794ea45da.mp4

Miner mesons and mobs hiding in lavaland (This is basically the darkest
possible environment)


https://user-images.githubusercontent.com/58055496/215696327-26958b69-0e1c-4412-9298-4e9e68b3df68.mp4

Thermal goggles and coloring displayed mobs


https://user-images.githubusercontent.com/58055496/215692710-d2b101f3-7922-498c-918c-9b528d181430.mp4

</details>

I think it's pretty, and see_in_dark sucks butt.

## 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. -->

🆑
add: The darkness that glasses and hud goggles that impact your
nightvision (think mesons, nightvision goggles, etc) lighten is now
tinted to match the glasses. S pretty IMO, and hopefully it helps with
forgetting you're wearing X.
balance: Nightvision is darker. I think bright looks bad, and things
like mesons do way too much
balance: Mesons (and mobs in general) no longer have a static distance
you can see stuff in the dark. If a tile is lit, you can now see it.
fix: Nightvision no longer dims colored lights, instead simply
thresholding off bits of darkness that are dimmer then some level.
/🆑
2023-02-17 18:10:39 -07:00
Zephyr
5122fb07cb Refactor SPELL_REQUIRES_OFF_CENTCOM to SPELL_REQUIRES_STATION (#73348)
When I refactored stuff to use lazy templates it broke a few needed checks, this is one of those checks.
Although there is no reason this shouldn't have been checking for station level over not CC
2023-02-12 20:49:22 +00:00
Fikou
c3f504bc1e more sdql2 wrapper procs (#73336)
## About The Pull Request
adds findtext (+ex), view, viewers, rectangle turfs and flick as sdql2
wrappers

## Why It's Good For The Game
more fun admin stuff

## Changelog
🆑
admin: adds findtext (+ex), view, viewers, rect_turfs and flick as sdql2
wrappers
/🆑
2023-02-10 12:41:46 -07:00
lessthanthree
fdaec05ebe Watchlist notification text color (#73304)
## About The Pull Request
Changes the adminnotice text for watchlists to a similar pink used in
the TGUI box for asay.


![image](https://user-images.githubusercontent.com/83487515/217653246-e13b91dd-d510-447a-9460-c0d03865898f.png)

![image](https://user-images.githubusercontent.com/83487515/217653391-562fa69a-a7b9-4057-afd2-0055cdcc7756.png)

## Why It's Good For The Game
Color has better contrast for dark mode users (where it's currently a
pain) without much of a contrast hit for light mode users. For
accessibility, WCAG 2.0 level AA requires a contrast ratio of at least
4.5:1. D100D1 scores 4.53:1 on white and 4.63:1 on black, meeting
standards for both.
## Changelog
🆑 LT3
admin: Changed color for watchlist notifications
/🆑
2023-02-09 23:18:44 -07:00
Bloop
e41cc39888 Fixes being able to breathe in space, fixes any lingering biotype related damage issues (#73147)
## About The Pull Request

Fixes #73276

This is a followup PR from my series of biotype updates. Changed oxyloss
to default to ignoring biotype requirements. Fixes a bug in lung code
that was preventing mobs from suffocating under certain conditions.

~~Now biotype requirements for oxyloss are respected only when `forced`
is set to `FALSE`, which I have done for all applicable reagents. This
is more of a temporary fix for until the damage system gets a refactor
to better accommodate biotypes. @Time-Green and @LemonInTheDark would
know what I mean, we were just talking about this. There is a problem
with `MOB_ORGANIC` being the deafult and this is the ugly workaround.~~

Edit: I felt that oxyloss (which should be renamed to something else at
this point) should have its own flag to check what type of respiration
the mob's lungs can do. Because you can have organic mobs that breathe
different gases. It gets messy when you try to use the same flag for
everything.

So I refactored oxyloss to use a new lung flag, `respiration_type`,
which is automatically set based on the `safe_min_oxygen`,
`safe_min_plasma` etc variables within the lung code. This will allow
for individual lung types to dynamically determine whether they can take
oxyloss from reagents, or any other sources that pass the
`respiration_type` in the `adjustOxyLoss` proc.

## Why It's Good For The Game

Plasmamen can't breathe without plasma anymore. Humans can't breathe
without oxygen anymore. Etc.

Adds better handling for dealing with the 'oxyloss' damage type,
allowing it to be applied based on the type of gas being breathed by the
specific lung. The argumentless default is to apply it regardless of
respiration_type e.g. it behaves exactly as it did before.

## Changelog

🆑
fix: fixes oxyloss not being applied when there is a partial pressure of
0 (no more being able to breathe in space)
code: fixes any lingering damage-application issues related to non
MOB_ORGANIC biotypes
refactor: refactored lungs to have a respiration_type flag which is then
used by adjustOxyloss/setOxyloss to determine whether to take 'oxygen'
damage.
/🆑
2023-02-06 22:56:20 -08:00
tralezab
4e72832db4 Admin Request: Trigger Event Panel Includes a Gear on Events That Have Admin Setups (#73151)
## About The Pull Request


![image](https://user-images.githubusercontent.com/40974010/216196611-64c943f1-7919-4be5-bd85-021d6c228f37.png)

Admin events with admin setups now have a gear icon on the right of the
button.

## Why It's Good For The Game

Requested by @NamelessFairy for future admin compatibility development
and a small indication in game of potentially more customizable events
for... well, admin events!

## Changelog
🆑
admin: There's a cog next to events you can trigger if it has an admin
setup.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-02-05 22:49:39 +00:00
scriptis
4e1fc078d7 literally just hook asay into tgui say (#73212)
## About The Pull Request

pressing f3 now opens asay in tgui say
## Why It's Good For The Game

![john willard gets
banned](https://user-images.githubusercontent.com/12202230/216750445-addb4f3f-0df4-47da-891d-4ef4820a10ab.png)

also fixes double-escaped special characters caused by #72407 and
finally gets rid of the gross regular tgui input popup
## Changelog
🆑
fix: asays are no longer double-escaped
admin: asay now uses tgui say
/🆑

---------

Co-authored-by: Scriptis <scriptis@duck.com>
2023-02-04 23:25:53 -07:00
Mothblocks
d67555a0b5 the inevitable Revert "Refactors admin verbs from giant ass lists into datums" in case stuff breaks (#73206)
Reverts tgstation/tgstation#72407
2023-02-05 11:44:38 +13:00
Zephyr
fca90f5c78 Redoes the admin verb define to require passing in an Admin Visible Name, and restores the usage of '-' for the verb bar when you want to call verbs from the command bar. Also cleans up and organizes the backend for drawing verbs to make it easier in the future for me to make it look better (#73214)
## About The Pull Request

Damn that's a long title.

Admin Verbs can be used in the verb bar with hyphens instead of spaces
again.
## Why It's Good For The Game

Admin muscle memory
## Changelog
2023-02-04 01:20:18 -08:00
Zephyr
7f25d7f17b Refactors admin verbs from giant ass lists into datums (#72407)
## About The Pull Request

See title.
## Why It's Good For The Game

Makes it easier for people to add new admin buttons, and also removes
the giant ass ugly lists that are an affront to my eyes.

Yes you are still able to call them manually via the verb bar

![image](https://user-images.githubusercontent.com/12817816/210163285-2ecb4b59-67b4-47d2-b324-77048ce852fe.png)

![image](https://user-images.githubusercontent.com/12817816/210163288-5a0ec98c-9589-4cab-8a6b-1ab5151aa040.png)
## Changelog
🆑
refactor: Admin verbs are now datums with a dedicated panel handler
admin: Admin verbs now come with a handy description when you hover over
them!
/🆑

---------

Signed-off-by: GitHub <noreply@github.com>
2023-02-03 16:32:37 -08:00
ATH1909
96117e742d sending a message with telepathy (or an abductor gadget or prayer response) now gives your target a balloon alert (#73087)
## About The Pull Request

revenant telepathy, genetic telepathy, eldritch telepathy, and split
personality communing now give the person you're sending a message to a
balloon alert to get them to check their chat window

EDIT: also added prayer responses, abductor messaging, and abductor mind
control to this list

EDIT: also added additional feedback for antimagic blocking telepathy
and tinfoil blocking abductor mind control

EDIT: also changed the telepathy reception message to more closely
resemble the prayer response one (they're still not identical, though)


![image](https://user-images.githubusercontent.com/42606352/215655699-5c6156a3-02ec-43e8-8cce-55a217888a7b.png)

![image](https://user-images.githubusercontent.com/42606352/215940716-d62706a6-294e-4677-8278-21bc1a969d19.png)

![image](https://user-images.githubusercontent.com/42606352/215940801-d842c448-4924-45e8-822c-bd74c66ca87f.png)
I tested the prayer stuff too, you'll just have to trust me on that one.

## Why It's Good For The Game

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

## Changelog

🆑 ATHATH
qol: Revenant telepathy, genetic telepathy, eldritch telepathy, split
personality communing, prayer responses, abductor-to-abductee messaging,
and abductor mind control now give the person you're sending a message
to a balloon alert to get them to check their chat window.
qol: Failing to send a telepathic message and failing to use abductor
mind control on someone now gives better feedback.
tweak: The telepath-ee notification message has been slightly altered.
/🆑
2023-02-02 17:43:35 +00:00
sergeirocks100
6bae072739 Fixes a spelling error in the Reload Configuration confirmation dialog. (#73129)
## About The Pull Request

This, as the title states, fixes a spelling error in the confirmation
dialog for the Reload Configuration verb.

Specifically, it changes "modificat**oi**ns" to "modificat**io**ns".

## Why It's Good For The Game

It's nice to not have to look at spelling errors.

## Changelog
🆑
spellcheck: The word "modifications" is now spelled correctly in the
Reload Configuration confirmation dialog.
/🆑
2023-02-02 15:41:20 +01:00
tralezab
bdf5e7b60a Refactors Admin Setups on Forced Events + Refactors Vending Sentience + Refactors Shuttle Loans (#72998)
## About The Pull Request

- [x] TEST EVERYTHING
tested:
- Pirates
- Vending Machines
- Shuttle Catastrophe
- Anomalies
- Immovable Rod
- Sandstorms
- Scrubber Overflow
- Stray Meteor
- Madness
- Department Revolt (Well obviously, it is my super robust code after
all)
- Shuttle Loan
- Mass Hallucination
- Heart Attack
- False Alarm

Disease Outbreak is probably fine aha... It correctly reports that there
are no candidates before aborting.

#### The biggest change you'll notice is that some admin setup questions
allow you to let the game decide where previously you had to choose!

### Refactors Admin Setups on Forced Events

I need to refactor and datumize how admins set up special conditions on
forced events, so I did! Now `/datum/event_admin_setup` handles admin
settings, with a few prototypes to make it easier to give events admin
options in the future. This was exhausting and what 90% of the pr is.

### Refactors Vending Sentience

The code was so bad I could not datumize the admin part of it so I
cleaned it up, making a lot of things in the event get decided in
`setup()` where they should.

### Refactors Shuttle Loans

The code was so bad I could not datumize the admin part of it so I
cleaned it up AS WELL, by datumizing the shuttle loans. Should be easier
to add more types in the future, actually kinda stoked.

## Why It's Good For The Game

This is preparation for a tgui change to ForceEvent.ts an admin has
requested. Phew!

## Changelog
🆑
refactor: Refactored a bunch of admin-related event code, hopefully you
won't notice much
admin: ... But you specifically may notice some minor differences. Raw
inputs changed into tgui ones, minor soul removal, etc.
/🆑
2023-01-30 17:57:12 +00:00
Zephyr
5dbaa25f91 [NO GBP] Lazy Template Cordoning | Double Runtime Fix (#72709)
## About The Pull Request

Adds automatic cordoning to block reservations.
Also fixes an issue where ChangeTurf would cause SSicon_smoothing to
throw runtimes by calling QUEUE_SMOOTH regardless of initialization
completion

## Why It's Good For The Game

## Changelog

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-01-29 18:48:38 -08:00
Mothblocks
9d0cdfe909 Adds an Escape Menu (#72906) 2023-01-26 00:25:16 -08:00
Jeremiah
5e80257423 Refactors crew records (#72725)
## About The Pull Request
I have attempted or otherwise started this project at least 4 times. I
am sick of it being on my calendar. The code needs it. I need it.

- This makes crew records a proper datum rather than assigning
properties record.fields.
- General, medical, and security records are merged.
- Did some slight refactoring here and there for things that looked
obvious.
- Wanted states are now defined (and you can suspect someone through
sechud)
- pAI (unrelated but annoying) had some poorly named exported types that
i made more specific
- Job icons are moved back to the JS side (I wanted to get icons for
initial rank without passing trim)

<details>
<summary>previews</summary>

Editable fields & security console

![CM6d74brnC](https://user-images.githubusercontent.com/42397676/213950290-af6cfd76-eb8b-48e9-b792-925949311d9a.gif)

Medical records

![bFJErsvOaN](https://user-images.githubusercontent.com/42397676/214132534-59af1f8c-9920-4b51-8b27-297103649962.gif)

Look and feel of the more current version

![cxGruQsJpP](https://user-images.githubusercontent.com/42397676/214132611-0134eef0-e74c-4fad-9cde-328ff7c06165.gif)

</details>

## Why It's Good For The Game
TGUI'd some of the worst UIs in the game.
Creating new records is made much simpler. 
Manifest_inject is made readable.
Probably bug fixes

## Changelog

🆑
refactor: Crew records have been refactored.
refactor: Medical records -> TGUI
refactor: Security records -> TGUI
refactor: Warrants console -> TGUI
qol: Players are now alerted when their fines are paid off.
qol: Cleaned up sec hud examination text.
qol: Adding and deleting crimes is easier.
qol: Writing crimes in the console sets players to arrest.
qol: You can now mark someone as a suspect through sec hud.
/🆑

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-01-24 18:34:27 +00:00
SomeRandomOwl
41af6ec137 Update the Play Internet Sound Verb (#72805)
## About The Pull Request

This changes it to expose additional metadata as well as remove unused
Metadata that wasn't provided by youtube-dl, It also changes the widget
itself to display a little extra info on the currently playing track.

Also adds in a new prompt to either show or hide the name of the admin
who played the music

## Why It's Good For The Game

It will now show additional info to players when a admin plays a song
using the verb, such as making the link always available to the player
so if they like the song they dont need to ask for the link, as well as
other info that might be scraped by youtube-dl so players know if you
simply queued a 2 minute long song or a 10 minute long one as well other
simple info such as artist and album if that info is available.

And now there is the option to show players who played songs, or to keep
it anonymous

<details>
<summary>Screenshots</summary>


![image](https://user-images.githubusercontent.com/2568378/213298504-1aa5bf74-9606-4214-a908-82cf275850c5.png)


![image](https://user-images.githubusercontent.com/2568378/213350021-5eaf1510-ccd7-45c1-9b84-1210023e36bf.png)


![image](https://user-images.githubusercontent.com/2568378/213298581-bbee80f7-6c1f-491c-b881-a954ccc61a80.png)


![image](https://user-images.githubusercontent.com/2568378/213346931-33884c65-fadc-46f8-ba8d-1f66722e0479.png)


![image](https://user-images.githubusercontent.com/2568378/213346943-b61cd243-ae81-4dab-b8d1-62642c85c4e5.png)

</details>

## Changelog

🆑
admin: Modified the Play Internet Sound Verb so it now displays extra
info about any song being actively played as well as showing the link
/🆑

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-01-19 21:39:19 +01:00
Jeremiah
872e64fb05 Adds spaces around logical operators (#72603)
## About The Pull Request
Part of a prior PR that was closed (#72562). This version does not add
the check in CI.
## Why It's Good For The Game
The work is already done, so I figured why not.
## Changelog
N/A Nothing player facing

Co-authored-by: Jeremiah Snow <jlsnow301@pm.me>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-01-16 16:56:35 -08:00
MrMelbert
c3a1f21c1a Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind (#72267)
## About The Pull Request

- Nearsighted is now a grouped status effect.
- Blindness is now a grouped status effect.
   - Eye handling of blindness has improved. 
- When eyes are removed, they now cause you to become blind, rather than
handling it in `update_tint`.
- Being ahealed no longer blinds you for one tick, meaning that black
overlay on aheal is gone.
- Temporary Blindness is now a status effect.
- Both Nearsightedness and Blindness have been exorcised from mob vars
and life chains. This means that we've finally cut 2 procs from life,
`handle_status_effect` and `handle_traits`, and moved both to event
based processing. Wooo optimizations.
- Swapped pacifism status effect to use apply and set helpers. 
- Removed an unused admin toggle that disabled welding helmet tint but
also tint from every clothing item and also blindness from losing your
eyes.
- Clothes now generally all blind their mob more consistently.
- Oculine, eye surgery, and sensory restoration are now no longer the
only way to fix blindness from eye damage. If your eyes are healed
through any other means, it will also heal your blindness.
- Some things that made you blind, such as ling blind sting, no longer
just flat made you blind from eye damage forever. They now cause eye
damage directly, which in turn makes you blind from eye damage, as
expected.
- Pacifists can't eyestab anymore. Eyestabs now have a limit on the
amount of blur applied.
- Refactored some `is_x_covered` procs to accept flags rather than have
a lot of arguments for some silly reason.
- Unit tests for blindness. 

## Why It's Good For The Game

Blindness was exceptionally poorly handled prior, primarily due to the
fact that it was tied to the mob instead of separated out

On top of that the system put a LOT of faith in proper handling of
blindness on the coder's end which was misplaced evidently. Many places
didn't update or handle blindness correctly, or just let people
perma-blind.

Deferring it to a status effect improves this a lot

## Changelog

🆑 Melbert
refactor: Refactored blindness and nearsightedness. Important to note is
that all mobs are naturally blind until their eyes are actually created.
refactor: Refactored "is covered" procs
fix: Less sources of blindness now cause permanent blindness. Includes
the "Blind" Spell and "Blind Sting" from changelings.
admin: Ahealing someone no longer flashes the blind overlay for 1 tick.
admin: I removed an unused (sort of) inaccessible admin verb that
allowed you to toggle the tint from all welding helmets (and clothing)
(and lack of eyes) in existence, let me know if you want similar back
balance: Changeling "Blind Sting" now causes eye damage (enough to
blind) rather than arbitrarily forcing blindness.
balance: Visionloss virus symptom now causes eye damage (enough to
blind) rather than arbitrarily forcing blindness.
balance: Oculine has been reworked slightly. Prior, Oculine arbitrarily
healed blindness and nearsightedness from eye damage reagrdless of how
damaged the eyes were, and applied blur on success. Now, Oculine just
heals eye damage, and blindness / nearsightedness is restored in the
process. There is now a probability every tick that eye blur is applied
based on how pure the oculine is while healing very damaged eyes.
balance: Pacifists can no longer eyestab.
balance: Any clothing item that covers your eyes contributes to getting
the bonus while sleeping, and to removing temporary blindness faster
/🆑
2023-01-15 23:01:40 -08:00
lessthanthree
1146097cec Change admin comm console alert sound [NO GBP] (#72637)
## About The Pull Request
The original sound I used for the admin comm/fax notification causes
confusion with shuttle uplink being enabled/disabled for various
reasons.
## Why It's Good For The Game
You wonder who disabled the shuttle, but it's just a fax.
## Changelog
🆑 LT3
admin: Changed admin comm/fax notification sound to be less confusing
/🆑
2023-01-15 22:37:58 -08:00
Zonespace
1eea329ac7 Allows admins to skip some paper sanitization (#72553)
## About The Pull Request
This PR allows admins with R_FUN to create paper that doesn't sanitize
as much HTML as the default, player-accessible paper. Specifically, the
ability for admins with R_FUN to add images that papercode would
normally sanitise via HTML img tags.

## Why It's Good For The Game
I'd like to make some fancy papers to send as faxes, but the current
sanitization doesn't allow for images.


![image](https://user-images.githubusercontent.com/41448081/211176186-c33d611d-8ac3-4683-bef8-10016e34eaf4.png)

This was a fax I threw together in a few minutes after making the logo
## Changelog
🆑
admins: Admins with the appropriate permissions can now use HTML image
tags in paper and faxes.
/🆑
2023-01-14 20:42:09 +00:00
John Willard
c1a87224f8 Improves duplication (#72572)
## About The Pull Request

- Improves duplication code significantly
- Removes 'perfectcopy', 'newloc', 'nerf' and 'holoitem' args. These
were made for holodeck items, but holodeck items do not use this proc so
it's since been unused.
- Adds many things to duplicate forbidden vars, such as external organs
(and fixes internal organs), overlays, and signals. The signal part is
what broke basic things for duplicated mobs, such as dying, huds, and
lying down.
- Duplicated mobs now properly carry over the identity of the old mob
without losing anything in the process, and now actually work as a mob,
with visible HUDs and everything. They also carry implants over now.
- Duplicated mobs also now no longer cut all their contents and rebuild
the entire mob, they don't carry overlays at all (so we don't have the
problems that come along with it, like clothing sprites from clothes
that don't exist).
- As a minor detail, makes DuplicateObject use snake_case instead, and
makes duplicate_forbidden_vars protected.

- Removes copy_contents_to because it's unused. It was originally meant
for Holodeck, but holodecks now use map templates so it's no longer used
in-game.


![image](https://user-images.githubusercontent.com/53777086/211224777-6b417c6c-17d3-486b-85a4-41de30c6cfd2.png)

![image](https://user-images.githubusercontent.com/53777086/211223163-0cbb4581-c194-4251-9c7b-58d8c4bbaeb2.png)

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/42212

Duplicating mobs no longer gives a broken mob, which was a common
problem with cloning pods (the admin pods, that you drop down onto
people).
Updates very old code to modern code standards.
This PR was made to help out
https://github.com/tgstation/tgstation/pull/71141 too, the author of
that PR is aware of this one.

## Changelog

🆑
refactor: Duplicating mobs now should now give properly functioning
mobs, as duplications in general have been reworked. Admins can feel
free to use the pod feature on people.
/🆑
2023-01-13 20:35:18 -08:00
Kyle Spier-Swenson
f116442e34 Unprotects the whitelist (#72547)
This was unneeded.
2023-01-08 18:56:46 -08:00