Commit Graph

3950 Commits

Author SHA1 Message Date
SkyratBot
8dcae18a5a [MIRROR] Refsearch Info Injection [MDB IGNORE] (#23934)
* Refsearch Info Injection (#78574)

## About The Pull Request

Adds a proc that types can override to inject extra information into the
refsearch
This'll allow us to more easily track and deal with refs held by general
datums, like callbacks.
I've implemented a template example FOR callbacks, to provide an example
and assist in solving future issues

Done to help lumipharon from TGMC, they were having trouble with this
case.

This isn't perfectly optimized, but this proc has a LOT of issues just
in general. Need to rework it to cut down on string churn someday

* Refsearch Info Injection

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-09-26 15:49:21 -04:00
SkyratBot
a143e713b8 [MIRROR] Prevents players from getting antagonist if they can't qualify for any role beforehand. [MDB IGNORE] (#23874)
* Prevents players from getting antagonist if they can't qualify for any role beforehand.

* Update job.dm

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-24 07:01:16 -04:00
SkyratBot
9dd7c5580a [MIRROR] Allows admins to overrule God [MDB IGNORE] (#23864)
* Allows admins to overrule God (#78429)

## About The Pull Request

Adds a "manage religious sect" verb to the "game" menu of the admin
panel.
It can be used to assign the chaplain's sect if they haven't picked one
yet, or reassign it (to a different one, or to nothing) if they already
have.
This is likely mostly going to be used for ahelps where someone
misclicks or suddenly logs off and wants to be replaced by a different
chaplain with different ideas.

## Why It's Good For The Game

Admins asked me to make it

## Changelog

🆑
admin: Admins can now reset or modify the chaplain's sect from a UI
panel
/🆑

* Allows admins to overrule God

* Updates modular to use the reset signal for nulling the altars instead

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-23 14:34:23 -04:00
SkyratBot
4252aefe7b [MIRROR] Fixes Boneless Smite [MDB IGNORE] (#23854)
* Fixes Boneless Smite (#78449)

## About The Pull Request

The boneless smite was using a list of strings instead of a list of
numbers, and didn't work as a result. This just fixes it. Fixes #78437.
## Why It's Good For The Game

Bugfixes good.
## Changelog
🆑
admin: Boneless smite should work properly again.
/🆑

* Fixes Boneless Smite

---------

Co-authored-by: GPeckman <21979502+GPeckman@users.noreply.github.com>
2023-09-22 08:52:17 -07:00
SkyratBot
3f068acc58 [MIRROR] Replaces "Bread" smite with "Objectify" [MDB IGNORE] (#23835)
* Replaces "Bread" smite with "Objectify" (#78445)

Instead of turning people into bread, the bread smite can now turn people into any object (including bread).

* Replaces "Bread" smite with "Objectify"

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-21 02:57:54 -04:00
SkyratBot
d9624bdf97 [MIRROR] Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse [MDB IGNORE] (#23794)
* Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse

* Update hilbertshotel.dm

* Modular proc ref

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-19 13:26:14 -04:00
SkyratBot
ce76a871bf [MIRROR] Adds NONE to empty bitflags in VV [MDB IGNORE] (#23751)
* Adds NONE to empty bitflags in VV (#78355)

This has annoyed me forever. Let's do somethin about it.

* Adds NONE to empty bitflags in VV

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-09-17 15:33:07 -04:00
SkyratBot
9f3be12c19 [MIRROR] [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support [MDB IGNORE] (#23601)
* [TEST-MERGE FIRST] Wound refactor number two: Full synthetic support

* Wound refactor two compatability (#23618)

* Delam emergency procedure moth (#23483)

* safety moff

* delta/whitespace/examine

* icebox

* moff poster

* moff poster

* Update DelamProcedure.tsx

* Update scram.dm

* sound plays during warning

* remove nightshift, theres already a global proc

* scrubber hint

* missed that define

* Apply suggestions from code review

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* covered by ui_interact

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Automatic changelog for PR #23483 [ci skip]

* Automatic changelog compile [ci skip]

* [non modular] disables TG "hold up" for the foreseeable future (#23607)

Update gun.dm

* Automatic changelog for PR #23607 [ci skip]

* [MIRROR] Desouls Hivelord [MDB IGNORE] (#23609)

* Desouls Hivelord (#78213)

## About The Pull Request

![dreammaker_RJz4brjobM](https://github.com/tgstation/tgstation/assets/7483112/e5e4a3e9-ea6b-47f9-887c-3339d24d3fa8)

Replaces the sprite of the hivelord with a new one, in my continuing
quest to annihilate the old asteroid mob sprites.
A (never completed) asteroid mob resprite was actually my first PR, this
one is my 200th.
I am also planning on fucking with basic mob versions of these mobs some
time but the sprites can be atomised out.

In addition to replacing the old-ass MSPaint sprites, this PR also adds
a short death animation effect to the hivelord brood (from hivelords or
legions) which looks nicer than them just vanishing instantly upon
death.

Look at this video for an example of the animation:
https://www.youtube.com/watch?v=cKaskN5-y2A

## Why It's Good For The Game

Looks nicer.

## Changelog

🆑
image: Hivelords have a new sprite.
image: Hivelord and Legion brood have a death animation.
/🆑

* Desouls Hivelord

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>

* Automatic changelog for PR #23609 [ci skip]

* [MIRROR] Updates chem factory tank sprites [MDB IGNORE] (#23608)

* Updates chem factory tank sprites (#78209)

Updates chem factory tank sprites.

* Updates chem factory tank sprites

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>

* [MIRROR] Rice Dough can be made in a beaker [MDB IGNORE] (#23611)

* Rice Dough can be made in a beaker (#78062)

## About The Pull Request

Rice dough can be made in a beaker using 20u of Rice Flour and 10u of
Water. 10u of Rice Flour is made from 5u of Rice and 5u of Flour. Rice
dough can still be crafted manually using the crafting menu and the
original recipe.
## Why It's Good For The Game

Cooks can sometimes get swamped with work, especially on a high-pop
shift or when there are no botanists. By making rice dough more
convenient to make, cooks don't need to spend as much time in the
crafting menu.
Rice Flour is made from mixing equal parts Rice and Flour. Since no
recipe other than Rice dough uses both Rice and Flour in it's Recipe, it
should be fine to turn those regents into the intermediate reagent "Rice
Flour".
Fixes #77966
## Changelog
🆑
qol: Rice Dough may be made in beaker instead of being crafted, but the
rice and flour must be added first
/🆑

* Rice Dough can be made in a beaker

---------

Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>

* Automatic changelog for PR #23608 [ci skip]

* Automatic changelog for PR #23611 [ci skip]

* f

* awda

* unused type!!!

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* oh hey unused defines! bye

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: RatFromTheJungle <62520989+RatFromTheJungle@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
2023-09-16 11:24:49 -04:00
SkyratBot
d3fd951bf8 [MIRROR] Removes Sleep Printing Library [MDB IGNORE] (#23692)
* Removes Sleep Printing Library (#78324)

## About The Pull Request

#76286, which spawned it, is dead. Don't need to hang onto it anymore
per moth's instructions

* Removes Sleep Printing Library

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-09-14 23:38:05 -07:00
SkyratBot
996d022afe [MIRROR] Fixes the admin log when adding a new admin from the permissions panel not displaying the ckey of the new admin [MDB IGNORE] (#23635)
* Fixes the admin log when adding a new admin from the permissions panel not displaying the ckey of the new admin (#78245)

## About The Pull Request
It was just displaying nothing, which was only a mild annoyance, but
after tolerating it for a few years, today I've had enough and fixed it.

## Why It's Good For The Game
Finally others can know who was added to the team without having
`R_PERMISSIONS` themselves.

![image](https://github.com/tgstation/tgstation/assets/58045821/5a945bea-1f1f-4b3d-bd96-c18062cecae4)

## Changelog

🆑 GoldenAlpharex
fix: The message sent to admins when a new admin has been added via the
Permissions Panel will now properly show the new admin's ckey.
/🆑

* Fixes the admin log when adding a new admin from the permissions panel not displaying the ckey of the new admin

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-09-11 17:19:30 -04:00
GoldenAlpharex
4086fda4c9 The Player Panel will now list out the player's Player Ranks (#23621)
* Displays the player ranks into the player panel

* Player ranks can now be checked without considering the admin bypass
2023-09-10 20:56:15 -04:00
SkyratBot
1492750967 [MIRROR] The Create Command Report verb has the option to prevent printing reports now [MDB IGNORE] (#23600)
* The Create Command Report verb has the option to prevent printing reports now (#78208)

## About The Pull Request

Title summarizes all.
## Why It's Good For The Game

<details>

![image](https://github.com/tgstation/tgstation/assets/47710522/ae71a6f9-b22d-467a-8da9-6a0bec576215)

</details>

Prevents this nightmare on a comms console during an event with
particularly high centcom announcement traffic.

No, don't come at me with "it's soul", it's just highly annoying to deal
with and having the option to prevent it is better. If you leave a
downvote and tell me in the comments that I'm "taking" soul out of the
game then I will come find you and actually take your soul out of your
body.
## Changelog
🆑
admin: The "Create Command Report" verb now has the option to not print
report papers at communications consoles.
/🆑

* The Create Command Report verb has the option to prevent printing reports now

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
2023-09-09 16:54:39 -04:00
SkyratBot
eb31082053 [MIRROR] Choose your own Objective [MDB IGNORE] (#23570)
* Choose your own Objective

* Update changeling.dm

* Update heretic_antag.dm

* Update heretic_antag.dm

* Update malf_ai.dm

* Update AntagInfoHeretic.tsx

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-07 20:26:06 -04:00
SkyratBot
2bcbb36ab9 [MIRROR] [TEST-MERGE FIRST] Allows all limbs to be dismembered and significantly refactors wounds [MDB IGNORE] (#23407)
* [TEST-MERGE FIRST] Allows all limbs to be dismembered and significantly refactors wounds

* ah fuck it

* test

* edaawdawd

* Revert "edaawdawd"

This reverts commit 47be710fe61a1f4ca79212b29b3e88bf05ec9a3a.

* nothing but sheer hatred

* freaawd

* dzfxg

* Fixing some diffs here while we are at it.

* These are deprecated and should be removed

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: nikothedude <simon.prouty@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-09-05 13:24:22 -04:00
SkyratBot
e3f8dd884e [MIRROR] Better alert/announcment sounds and Status displays [MDB IGNORE] (#23481)
* Better alert/announcment sounds and Status displays

* skyrat edits

* Update status_display.dmi

* Update flavor_misc.dm

* Update communications.dm

* skyrat edits

* Update status_display.dmi

* Update _sm_delam.dm

* typo

* Update status_display.dmi

* Update status_display.dmi

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-09-03 00:43:12 -07:00
SkyratBot
103fcd9697 [MIRROR] Don't gib a player if you click the 'X' button in the confirmation window [MDB IGNORE] (#23449)
* Don't gib a player if you click the 'X' button in the confirmation window (#78043)

## About The Pull Request

Fixes #78011
Does the same thing also for the "force everyone to play as a random
character" button.

## Why It's Good For The Game

It shouldn't do that.

## Changelog

🆑
fix: Prevents admins from accidentally gibbing people by closing a
confirmation window.
/🆑

* Don't gib a player if you click the 'X' button in the confirmation window

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-01 17:12:12 -07:00
SkyratBot
f8b2329771 [MIRROR] Fixes issue where role banned players can still play roles they're banned from. [MDB IGNORE] (#23399)
* Fixes issue where role banned players can still play roles they're banned from.

* Update sql_ban_system.dm

* Some formatting updates

---------

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-31 00:10:42 -04:00
GoldenAlpharex
1b17b304f2 SQL-Based Player Ranks and Player Ranks Subsystem (#23099)
* Initial draft, most of the stuff is implemented, not really tested or cleaned up yet

* Refactors the handling into a datum-based approach, for more abstraction

* Added migration, properly hooked up the verb to the new system

* Removed some more dead code

* Fixes some missing stuff from the .dme because VSC is stupid sometimes with merge conflicts

* Fixes the schema

* Wow I was really getting tired huh

* A fool, I say, a fool!

* I hate lists of lists I hate lists of lists I hate lists of lists

* I somehow missed this one twice. TWICE!

* This won't actually work if it's defaulting to true, lmao

* Makes it not log stuff if the adding or removing of players is unsuccessful

* Adds a way to update all of the unlock_contents for preferences datums once the donator list is initialized

* Runs update_prefs_unlock_content on mob Login() (hopefully this helps)

* Fixes the bajillion of runtimes caused by my dumb ass trying to make some client calls on ckeys

* Man I was really tired that day

* I had this ready for three hours and forgot to push it
2023-08-29 16:12:01 +02:00
SkyratBot
2b154fd86e [MIRROR] Fixes an issue with the "recolor from string" option in the greyscale modify menu [MDB IGNORE] (#23365)
* Fixes an issue with the "recolor from string" option in the greyscale modify menu (#77798)

## About The Pull Request
The number of colors has to match the expected color of the greyscale
configuration, otherwise the whole proc chain behind the generation of
the resulting icon will crash here:
ac446d8bad/code/datums/greyscale/_greyscale_config.dm (L253)

## Why It's Good For The Game
One of the thousands runtimes I've seen in the runtime viewer.

## Changelog

🆑
fix: Fixed an issue with the "recolor from string" option in the
greyscale modify menu that resulted in invisible icons.
/🆑

* Fixes an issue with the "recolor from string" option in the greyscale modify menu

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-27 10:39:23 -07:00
SkyratBot
00a584184b [MIRROR] Fixes greyscale colors not updating when changing their colors via VV, and fixes some issues with accessories [MDB IGNORE] (#23346)
* Fixes greyscale colors not updating when changing their colors via VV, and fixes some issues with accessories (#77806)

## About The Pull Request

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23214

This fixes a few bugs and cleans up code a bit:

1) Greyscale colors that were changed via the VV modify greyscale menu
will now update the mob's worn clothing accordingly. It wasn't doing
this before. Accessories in particular needed a bit of extra work to
update in this way because it wasn't coded with this case in mind.

2) Accessories will call `equipped()` and `dropped()` when they get
added/removed. This will fix issues like item flags being incorrectly
set, action bars not being added, etc.

3) Accessories will now be returned by `get_all_gear()`. This will
probably fix a few issues I'm not aware of.

## Why It's Good For The Game

<details><summary>Works</summary>

![dreamseeker_xijzQB0ALa](https://github.com/tgstation/tgstation/assets/13398309/eccb35d5-e1ea-4e2c-9906-f5b8c2187d24)

</details>

<details><summary>get_all_gear()</summary>

![dreamseeker_WsG0Uu2tIe](https://github.com/tgstation/tgstation/assets/13398309/d5c272d4-1990-454c-b48f-4da7b6a5f859)

</details>

<details><summary>get_equipped_items()</summary>

![dreamseeker_qe4hMngAO3](https://github.com/tgstation/tgstation/assets/13398309/06469b93-2a58-49db-be7f-c748576bf481)

</details>

<details><summary>item_flags get set now, hopefully preventing future
issues related to that</summary>

![image](https://github.com/tgstation/tgstation/assets/13398309/29a0e25a-a88f-4547-99f8-888da6b85e4d)

</details>

## Changelog

🆑
fix: greyscale colors will now update on the mob when modifying them via
the VV menu
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Fixes greyscale colors not updating when changing their colors via VV, and fixes some issues with accessories

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-08-26 16:38:29 -04:00
SkyratBot
f8c5601160 [MIRROR] minor changes to living and mob vars [MDB IGNORE] (#23330)
* minor changes to living and mob vars

* Update mob_movement.dm

* Modular updates

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-26 04:21:42 -04:00
SkyratBot
c529b754fb [MIRROR] Fixes a bunch of callbacks that were being qdeleted, and code cleanup [MDB IGNORE] (#23319)
* Fixes a bunch of callbacks that were being qdeleted, and code cleanup (#77904)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/13398309/559eb50a-461c-4220-b628-55412baaffc3)

Continuing the work of
https://github.com/tgstation/tgstation/pull/77850.

it started with finding one that was being missed and causing a
runtime...then I noticed a whole lot more. While I was doing this I
found callbacks that weren't being nulled in `Destroy()`, so I added
that wherever I found these spots as well as some general code cleanup.

There were a lot more of these than I initially hoped to encounter so
I'm labeling it as a refactor.

## Why It's Good For The Game

Fixes lots of runtimes, improves code resiliency.

## Changelog

🆑
refactor: fixed a bunch of instances of callbacks being qdeleted and
cleaned up related code
/🆑

* Fixes a bunch of callbacks that were being qdeleted, and code cleanup

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-25 19:06:07 -04:00
SkyratBot
b123605da2 [MIRROR] Implements byond_status() for harddel hunting [MDB IGNORE] (#23257)
* Implements byond_status() for harddel hunting (#77818)

## About The Pull Request

In addition, improves dump_harddel_deets usage to hopefully hit in unit
testing

byond_status() will dump as a part of find_references(). While I'd like
to expand that if we ever get a proper version, this is good for how we
have things setup rn.

* Implements byond_status() for harddel hunting

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-23 01:19:13 -04:00
Bloop
3569f9fd94 [MISSED MIRROR] Loads Away Missions for Unit Testing (#76245) (#22534)
* Loads Away Missions for Unit Testing (#76245)

Hey there,

A pretty bad bug (#76226) got through, but it was fixed pretty quickly
in #76241 (cf92862daf). I realized that if
we were testing all the away missions, that this could theoretically get
caught and not happen again. Regardless, unit testing gateway missions
has been on my to-do list for a while now, and I finally got it nailed
down.

Basically, we just have a really small "station" map with the bare bones
(_teeny_ bit of fluff, maploading is going to take 30 seconds tops
anyways let me have my kicks) with a JSON map datum flag that causes it
to load all away missions in the codebase (which are all in one folder).
Just in case some admins were planning on invoking the proc on
`SSmapping`, I also decided to gate a `tgui_alert()` behind it because
you never can be too sure of what people think is funny these days (it
really does lock up your game for a second or so at a time).

I also alphabetized the maps.txt config because that was annoying me.

Things that break on production could(?) be caught in unit testing? I
don't know if the linked issue I mentioned above would have been caught
in retrospect, but it's likely to catch more than a few upcoming bugs
(like the UO45 atmospherics thing at the very top) and ensure that these
gateway missions, which tend to be the most neglected part of mapping,
stay bug-free.

This is also helpful in case someone makes a new away mission and wants
to see if stuff's broken. Helps out maptainers a bit because very, very
technically broken mapping will throw up runtimes. Neato.
Nothing that players should be concerned about.

Let me know if there's a better way to approach this, but I really think
that having a super-duper light map with the bare basics to load up
gateway missions and then all nine-ish gateway missions can sequentially
load during init. I can't think of a better way to do it aside from some
really ugly `#ifdef` shit. Also also, it has the added benefit of being
a map that will always load your away mission without touching a single
shred of config (and it's not likely to break if you follow sane
practices such as making your own areas)

* Update gateway_test.json

* Map Reset

* Gets rid of an area that was in a space turf

* Attempting to fix some runtimes

* Map Reset

* Lets remains spawn in xen water

* and acid, too

* Update remains.dm

* Removes extra airlock helper

* Delete research2.dmm

Surely this was a mistake?

* Merge branch 'master' into pr/22534

* Map Reset

* Update snowdin.dmm

* Revert "Update snowdin.dmm"

This reverts commit c860c6f4fbb463954d5b8da1b494305a2f45b44b.

* Update snowdin.dmm

* Update snowdin.dmm

* Revert "Update snowdin.dmm"

This reverts commit 47e7916056a47e12adfcb8b94b9748b7e56f378d.

* Update snowdin.dmm

* Revert "Update snowdin.dmm"

This reverts commit c82576bee69e09eda649d3cbf63d96dddaeeb380.

* Update immerse.dm

* Revert "Update immerse.dm"

This reverts commit 2ad622f3029a3ed17a05f8269299d0f25e747d11.

* Update immerse.dm

* Update maps.txt

* Fix hard dels in area spawn

* Update gateway_test.json

* Actually we can just get away with keeping a list of types here, no refs needed.

* Update area_spawn_subsystem.dm

* Update automapper.dm

* Let's just test to see if getting rid of black mesa stops the segfaults...

* Let's try deleting astrum too

* Revert "Let's just test to see if getting rid of black mesa stops the segfaults..."

This reverts commit de9a05708d451abbb78a635a3e03b2f460004496.

* Revert "Let's try deleting astrum too"

This reverts commit 2121a6357a54faf5719a42a762ba8b4698c008fb.

* Update waypointstation.dmm

* Update blackmesa.dmm

* Update decaySS.dm

* Update gateway_test.json

* Revert "Update gateway_test.json"

This reverts commit 93adc08819f05aecc8599980385e3fb10d02a1d2.

* Testing

* Revert "Testing"

This reverts commit 1d476d236953daac6adf59b93e56f2fab218085b.

* Testing

* Revert "Testing"

This reverts commit de05a74636c1f43e50fb7ec9f24978d270db4b88.

* Now try and actually fix the stupid thing

* Update clockwork_research.dm

---------

Co-authored-by: san7890 <the@san7890.com>
2023-08-19 20:51:34 -07:00
SkyratBot
68f4deff40 [MIRROR] MODLink System (+ NWTLMM) [MDB IGNORE] (#23199)
* MODLink System (+ NWTLMM) (#77639)

## About The Pull Request
A pact made with `@ Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)

## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑

* MODLink System (+ NWTLMM)

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-19 05:09:31 -04:00
SkyratBot
73b20dd8e9 [MIRROR] Few CTF changes. [MDB IGNORE] (#23192)
* Few CTF changes. (#77533)

## About The Pull Request
- Fixed that if you chose to press a cross while toggling instagib mode
it will react as `Yes` instead of just canceling
- Added description for assault class (with shotgun and rocket gloves)
so you know that you have faster moving speed and lover armor.
- Fixed that when you already chose a team and try to click on other
teams spawners you'll be asked to consider other teams to make them
equal.
- Decreased time of recharge start delay from 20 seconds to 12, because
when it takes soo much to regen your shield its just faster to die and
respawn with a new one.
- Added 1.7 scope to marksmans rifle.
- Little cleanup.

**Everything is arguable.**
**Ask if something is unclear or confusing.**
## Why It's Good For The Game
Less buggs, less wondering why do you die in 1 hit and others don't, a
little bit of consistency.
## Changelog
🆑
qol: CTF assault class' (with shotgun and rocket gloves) description now
mentions that it has low armor and increased moving speed.
balance: Decreased CTF recharge start delay for shields from 20 seconds
to 12 seconds.
balance: Marksmans rifle now has 1.7 scope.
fix: When toggling instagib mode for CTF and pressing a cross now will
just cancel instead of proceeding.
fix: When clicking on other CTF teams spawners and after you already
chose your team no more will ask you to join some other team to make
them even.
/🆑

* Few CTF changes.

---------

Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
2023-08-18 23:08:52 -04:00
SkyratBot
4ef9c407d6 [MIRROR] Add Mob Ability menu now displays ability names before typepath [MDB IGNORE] (#23167)
* Add Mob Ability menu now displays ability names before typepath (#77682)

## About The Pull Request

Look at this menu:

![image](https://github.com/tgstation/tgstation/assets/7483112/2ecf0839-a7b6-4038-b772-7ffcdec8bd8d)

Isn't this basically useless?
When you try to add a mob ability to a mob, it displays a huge list of
typepaths.
Literally none of the typepaths are short enough that they even fit in
the window, and the data about what the ability actually is usually lies
at the end of the typepath.
This is clearly silly.

I made it look like this instead:

![image](https://github.com/tgstation/tgstation/assets/7483112/13af9a9c-39b5-4a47-8ae4-3f6ac242f9f9)

Now you see the name _and_ the typepath (it's still useful information
in cases where there are several similar abilities).
Also I gave the lobster charge ability its own name because it didn't
have one.

## Why It's Good For The Game

Increases usability of this admin feature.

## Changelog

🆑
admin: The Add Mob Ability menu now prefixes the typepath of the ability
with the ability's name, so you can much more quickly see what the
ability is.
/🆑

* Add Mob Ability menu now displays ability names before typepath

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-08-17 19:44:35 -04:00
SkyratBot
2ac66a8a4a [MIRROR] Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently [MDB IGNORE] (#23081)
* Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently

* Update vox_procs.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-14 19:40:51 -04:00
GoldenAlpharex
05a6bc6b1d Makes the global ban option the default selected option (#23025)
Makes the global ban option the default
2023-08-14 16:35:23 -04:00
SkyratBot
30f436724b [MIRROR] More lua harddel fixes [MDB IGNORE] (#23064)
* More lua harddel fixes (#77556)

## About The Pull Request
Fixes some more lua harddel problems with lingering refs on the gc_guard
variable. This variable has been changed to a list instead and will get
cleared every time the SSlua subsystem fires so that lua instantiated
objects that are not tracked by the subsystem will essentially delete
themselves on the next tick, aka whenever the lua script sleeps.

Also removed the unnecessary and not completely functional
lua_reference_cleanup proc which wasn't even being called reliably
because the signal handler was the datum itself.

## Why It's Good For The Game
Fixes more harddel bugs, increases consistency.

Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

* More lua harddel fixes

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2023-08-13 18:37:01 -04:00
SkyratBot
306b828631 [MIRROR] Polishing the greyscale modify menu's lackluster support for non-atom targets. [MDB IGNORE] (#22965)
* Polishing the greyscale modify menu's lackluster support for non-atom targets. (#77322)

## About The Pull Request

So, I've been recently told that Skyrat uses the greyscale modify menu
for loadouts, and the new ui state kinda borked it. I honestly haven't
taken the possibility that the target could be anything but a subtype of
`/atom` (and still work) into account because much of the code assumes
the target is an atom. It's kinda crappy. Also I hadn't noticed we've an
`unlocked` variable, which makes `vv_mode` var superflous, so i'm going
to remove the latter.

* Polishing the greyscale modify menu's lackluster support for non-atom targets.

* I hope I won't have to get back and edit out the ability to modify the alpha on clothes for this

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-08-11 14:42:44 -04:00
SkyratBot
bd43197dd5 [MIRROR] Fixes some lua problems, specifically with qdeling callbacks and adds lua utility functions [MDB IGNORE] (#22983)
* Fixes some lua problems, specifically with qdeling callbacks and adds lua utility functions (#77468)

## About The Pull Request
See title. Callbacks were getting deleted in SS13.lua which is
non-ideal. They should be automatically collected by the garbage
collector.
Also adds some utility lua functions like SS13.is_valid,
SS13.stop_tracking, SS13.new_untracked, SS13.type and SS13.qdel

## Why It's Good For The Game
Fixes some harddel issues, as well as callbacks clogging up the garbage
subsystem.

## Changelog
🆑
admin: Added new lua functions: SS13.is_valid, SS13.stop_tracking,
SS13.new_untracked, SS13.type and SS13.qdel
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

* Fixes some lua problems, specifically with qdeling callbacks and adds lua utility functions

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2023-08-10 08:06:00 -04:00
SkyratBot
f349668a11 [MIRROR] Fixed lua-created atoms from hard deleting [MDB IGNORE] (#22921)
* Fixed lua-created atoms from hard deleting (#77391)

## About The Pull Request
Lua created atoms hard delete because they get added to a references
list without ever being cleared. This fixes that by registering a
qdeleting signal on them and removing them from the list on delete.

## Why It's Good For The Game
Harddel fixes

## Changelog
🆑
fix: Fixed a hard delete that would occur with lua-created atoms.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

* Fixed lua-created atoms from hard deleting

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2023-08-07 18:21:50 -07:00
lessthanthree
5d2eeccf74 [SEMI-MODULAR] Roundstart delam panic button (#22145)
* commit this before I lose it somehow

* bois bois bois

* stuff

* Update scram.dm

* Update scram.dm

* Update scram.dmi

* area checks are byond stupid

* deltashot

* trambox

* northmeta

* Update VoidRaptor.dmm

* so sad when it dies

* Update automapper_config.toml

* readme/var

* add biscuit card

* maps

* hear it outside the chamber, put biscuit in hand

* bit more delay, look at the pretty glow

* Update VoidRaptor.dmm

* add admin message for auto trigger

* add admeme powers

* Update admin.dm

* Update README.md

* rarrrgh space

* math is hard

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* admin procs

* define and doc

* trigger

* Update admin_scram.dm

* Update admin.dm

* Update airlock_override.dm

* Update scram.dm

* Update tramstation_supermatter.dmm

* Update scram.dm

* Update scram.dm

* try that

* Update code/__DEFINES/~skyrat_defines/events.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* move defines

* Apply suggestions from code review

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* defines

* do it some other way

* Apply suggestions from code review

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update modular_skyrat/modules/delam_emergency_stop/code/scram.dm

Co-authored-by: Bloop <vinylspiders@gmail.com>

* Update admin_scram.dm

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* change notification check

* give a jump link to the extra system(s)

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* review changes

* Update delam.dm

* review changes

* reduce sound ranges

* re-add area check to emitters

* Update scram.dm

* message/button

* Update tgstation.dme

* Update scram.dm

* Update scram.dm

* Update tgstation.dme

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Update scram.dm

* review edits

* update messages

* Update admin_scram.dm

* Update scram.dm

* notify radio about the skeleton crew

* the answer to 'does it really need that second check?' is 'yes'

* add href to toggle system

* Update delam.dm

---------

Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-07 21:19:00 -04:00
SkyratBot
a4cf2e451c [MIRROR] Adds a system for logging metadata about hard deletes [MDB IGNORE] (#22878)
* Adds a system for logging metadata about hard deletes (#76956)

## About The Pull Request

I'm sick of the progress bar harddel, and I've ran into this problem in
the past, so I'm just gonna do something about it

If you want to provide an individual logged bit of info about a harddel,
you can override `/datum/proc/dump_harddel_info()` and return a string
containing "whatever"

Use of this should be limited, this could potentially clutter del logs,
especially if it's used on something that fails often, like pipes

I do think it's still useful tho. It's output ingame, in the logs, and
in unit test failures. Hopefully all nicely tho I'm only really 100%
sure about in game.

* Adds a system for logging metadata about hard deletes

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-08-04 15:25:55 -07:00
SkyratBot
d0f20dae01 [MIRROR] Improved Imaginary Friend Smite [MDB IGNORE] (#22871)
* Improved Imaginary Friend Smite (#77331)

## About The Pull Request

By admin request:
- The Imaginary Friend smite now allows you to select "Offer to ghosts"
rather than selecting an observer mob manually.
- If you select this option you can also select to bulk-accept multiple
ghosts at a time, if you want to give people twelve imaginary friends
without having to smite them 12 times.

This necessitated changing the order of events a little bit so nwo you
choose whether they have a randomised appearance before picking a
candidate.

## Why It's Good For The Game

Makes it easier to drop the entire end of round deadchat into one guy's
brain with just a couple of clicks

## Changelog

🆑
admin: The imaginary friend smite now allows selecting "offer to ghosts"
instead of having to perform that poll yourself manually. When offering
to ghosts you can also offer for several ghosts to volunteer at the same
time.
/🆑

* Improved Imaginary Friend Smite

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-08-04 15:18:29 -04:00
SkyratBot
247d37c38a [MIRROR] Improved PDA Direct Messenger [MDB IGNORE] (#22865)
* Improved PDA Direct Messenger

* resolve conflicts

* Delete ntmessenger.dm

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-03 20:03:41 -04:00
SkyratBot
e99862325b [MIRROR] [NO GBP] Actually fixing the greyscale_modify_menu. [MDB IGNORE] (#22823)
* [NO GBP] Actually fixing the greyscale_modify_menu. (#77208)

## About The Pull Request
EDIT: So, I've to admit and bow my head: #77165 fucked up because I
hadn't properly tested the code. However, this time around, I can assure
you it's been tested.

## Why It's Good For The Game
Fixing my mistakes. This will fix #77246

## Changelog
N/A.

* [NO GBP] Actually fixing the greyscale_modify_menu.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-01 18:03:41 -04:00
SkyratBot
ef71cfb9e2 [MIRROR] Updates all the icons in under/suits.dmi and related sorting/cleanup [MDB IGNORE] (#22819)
* Updates all the icons in under/suits.dmi and related sorting/cleanup (#76865)

Somebody was pointing out how our suits varied WILDLY in quality
Figured I'd go through and tidy them up

* Updates all the icons in under/suits.dmi and related sorting/cleanup

* Rename Amish suit, remove scratch suit (was removed upstream)

* Fixes a rogue path

---------

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-01 09:14:44 -07:00
SkyratBot
c7e49e5fa3 [MIRROR] Doubles the time you can get the "Long shift" achievement, makes it not grant on admin restarts [MDB IGNORE] (#22771)
* Doubles the time you can get the "Long shift" achievement, makes it not grant on admin restarts (#77195)

## About The Pull Request

- "Long shift" can now be earned from sub 10 minute rounds rather than
sub 5 minute rounds

- Admin restarts no longer give out "Long shift"

## Why It's Good For The Game

I do not think this achievement can *possibly* be earned right now. Like
at all.

Nuke Ops and cult are the only antags that can possibly do it and it's
incredibly infeasible (requiring that they nuke the station or summon
Nar'sie in just 3 minutes!)

So I bumped up the timer to 10 minutes. This means that ops can get it
if they nuke the station in 8 minutes, cult can get it if they REALLY
speedrun, and revs can get it if they beeline the heads.

I checked the DB for stats on this achievement and it's only been earned
in 3 rounds across the last year - `208780` (admin restart due to a bug)
`192892` (admin restart due to a bug?) `186192` (admin restart).

So I also prevented admin forcing the round to end. (I don't know if it
catches admin reboots directly I'll have to check that.)

## Changelog

🆑 Melbert
balance: The "Long Shift" achievement is now feasibly obtainable, and
admins can no longer trigger it unknowingly
/🆑

* Doubles the time you can get the "Long shift" achievement, makes it not grant on admin restarts

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-07-29 16:02:36 -04:00
SkyratBot
369edffafe [MIRROR] Fixing the greyscale modify menu not sanitizing inputs. [MDB IGNORE] (#22756)
* Fixing the greyscale modify menu not sanitizing inputs. (#77165)

## About The Pull Request
exactly what it reads on the tin. Also the ui is now anchored to the
target and uses their state unless a specific one is set, so that it'll
correctly close or be unusable if the mob user is incapacitated or too
far.

## Why It's Good For The Game
this will fix #70444.

## Changelog

🆑
fix: Fixing some jank with the a greyscale modify menu, like inputs not
being sanitized.
/🆑

* Fixing the greyscale modify menu not sanitizing inputs.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-29 00:26:06 -04:00
SkyratBot
7b4237c692 [MIRROR] Implements usage of the REVERSE_DIR macro throughout the code. [MDB IGNORE] (#22743)
* Implements usage of the REVERSE_DIR macro throughout the code. (#77122)

## About The Pull Request
Replaces a ton of `turn(dir, 180)` calls with the aforementioned macro.

## Why It's Good For The Game
Afaik, `REVERSE_DIR` was coded to be faster than the classic `turn(dir,
180)` call, being a simple set of binary operations. To sum it up, micro
optimization.

## Changelog

N/A

* Implements usage of the REVERSE_DIR macro throughout the code.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-28 14:32:01 -04:00
SkyratBot
bdc4bbf32a [MIRROR] Fixes undeleted SQL queries in IsBanned() [MDB IGNORE] (#22707)
* Fixes undeleted SQL queries in `IsBanned()`

* Update IsBanned.dm

* Update IsBanned.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-07-27 19:07:23 +00:00
SkyratBot
8bc6e2530a [MIRROR] [NO-GBP] Changing shuttle events now alerts admins [MDB IGNORE] (#22688)
* [NO-GBP] Changing shuttle events now alerts admins (#76939)

If an admin forces 10 alien queen shuttle events, you'd probably want to
alert the other admins. Previously this just put it in the admin log
without telling anyone, but it's probably more fitting to just pop it in
asay for how infrequent it is and considering forcing other events does
it too

🆑
admin: Changing shuttle events now alerts admins
/🆑

Thanks to @ Rex9001 for calling it out

* [NO-GBP] Changing shuttle events now alerts admins

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-07-26 07:53:16 +00:00
SkyratBot
46ee262598 [MIRROR] made the bee a basic insect [MDB IGNORE] (#22652)
* made the bee a basic insect (#76971)

## About The Pull Request
the bee now a baisc insect he will now go to find his home and he will
go and pollinated the plants and helped the queen make children by
polliniting the plants and he will. the queen will leve the hive more
rarely than the normal bees so she can stay in the hive to make kids

## Why It's Good For The Game
the bee now is a basic insect so it means he have a better ai

## Changelog
🆑
balance: the bee now can fly over the machines so its easy for him to go
to the hydroponics machine
fix: player bees now will not be stuck inside the hive if he entered it,
they can now leave it
fix: fixed a har deleted when the hive is deleted all the bees still
have a refence to the hive now its fixed
fix: now when a player interacted with the bee hive the bees will now
leave the hive to defend the hive (it was glitched)
refactor: the bees now are a basic insect.
/🆑

* made the bee a basic insect

* Merge conflict

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-24 01:21:59 -04:00
SkyratBot
c19c197b95 [MIRROR] Fix APC related issues [MDB IGNORE] (#22635)
* Fix APC related issues (#77005)

## About The Pull Request
Fixes a bunch of stuff broken by #76822, including APC control console,
malf blackout ability, shunted malf pinpointing, Admin APC recharge and
others.
## Why It's Good For The Game
Yes.
## Changelog
:cl:Thebleh
fix: Fixed several APC related issues.
/🆑

* Fix APC related issues

---------

Co-authored-by: thebleh <43266738+rdragan@users.noreply.github.com>
2023-07-22 22:41:06 -04:00
SkyratBot
08c90f2116 [MIRROR] [MDB IGNORE] Angled Lights & Lighting Prototyping Tool [MDB IGNORE] (#22582)
* [MDB IGNORE] Angled Lights & Lighting Prototyping Tool  (#74365)

## About The Pull Request

Hello friends, I've been on a bit of a lighting kick recently, and I
decided I clearly do not have enough things to work on as it is.
This pr adds angle support to static lights, and a concepting/debug tool
for playing with lights on a map.

Let's start from first principles yeah?

### Why Angled Lights?

Mappers, since they can't actually see a light's effect in editor, tend
to go off gut.
That gut is based more off what "makes sense" then how things actually
work
This means they'll overplace light sources, and also they tend to treat
lights, particularly light "bars" (the bigger ones) as directional.
So you'll have two lights on either sides of a pillar, lights inside a
room with lights outside pointing out, etc.

![image](https://user-images.githubusercontent.com/58055496/228785032-63b86120-ea4c-4e52-b4e8-40a4b61e5bbc.png)

This has annoying side effects. A lot of our map is overlit, to the
point that knocking out a light does.... pretty much nothing.
I find this sad, and would like to work to prevent it. I think dark and
dim, while it does not suit the normal game, is amazing for vibes, and I
want it to be easier to see that.

Angled lights bring how lights work more in line with how mappers expect
lights work, and avoids bleedover into rooms that shouldn't be bled
into, working towards that goal of mine.

### How Angled Lights?

This is more complex then you'd first think so we'll go step by step

![image](https://user-images.githubusercontent.com/58055496/228786117-d937b408-9bc2-4066-9aee-aae21b047151.png)

Oh before we start, some catchup from the last time I touched lighting
code.
Instead of doing a lighting falloff calculation for each lighting corner
(a block that represents the resolution of our lights) in view we
instead generate cached lightsheets. These precalculate and store all
possible falloffs for x and y distances from a source.

This is very useful for angle work, since it makes it almost totally
free.

Atoms get 2 new values. light_angle and light_dir
Light angle is the angle the light uses, and light_dir is a cardinal
direction it displays in

We take these values, and inside sheetbuilding do some optional angle
work. getting the center angle, the angle of a pair of coords, and then
the delta between them.
This is then multiplied against the standard falloff formula, and job
done.

We do need some extra fenangling to make this all work nicely tho.

We currently use a pixel turf var stored on the light source to do
distance calculations.
This is the turf we pretend the light source is on for visuals, most
often used to make wall lights work nice.
The trouble is it's not very granular, and doesn't always have the
effect you might want.

So, instead of generating and storing a pixel turf to do our distance
calculations against, we store x and y offset variables.
We use them to expand our working range and sheet size to ensure things
visually make sense, and then offset any positions by them.

I've added a way for sources to have opinions on their offsets too, and
am using them for wall lights.
This ensures the angle calculations don't make the wall behind a light
fulldark, which would be silly.

### Debug Tool?

In the interest of helping with that core problem, lights being complex
to display, I've added a prototyping tool to the game.
It's locked behind mapping verbs, and works about like this.

Once the verb is activated, it iterates over all the sources in the
world (except turfs because those are kinda silly), outlining and
"freezing" them, preventing any future changes.
Then, it adds 3 buttons to the owners of a light source.

![image](https://user-images.githubusercontent.com/58055496/228776539-4b1d82af-1244-4ed6-8754-7f07e3e47cda.png)
The first button toggles the light on and off, as desired.
The third allows you to move the source around, with a little targeting
icon replacing your mouse
The second tho, that's more interesting.

The second button opens a debug menu for that light

![image](https://user-images.githubusercontent.com/58055496/228777811-ae620588-f08a-4b50-93a0-beea593aea77.png)
There's a lot here, let's go through it.

Bit on the left is a list of templates, which allow you to sample
existing light types (No I have no idea why the background is fullwhite,
need to work on that pre merge)
You can choose one by clicking it, and hitting the upload button.

This replaces your existing lighting values with the template's,
alongside replacing its icon and icon state so it looks right.
There are three types as of now, mostly for categorization. Bar, which
are the larger typically stronger lights, Bulb, which are well, bulbs,
and Misc which could be expanded, but currently just contains floor
lights.

Alongside that you can manually edit the power, range, color and angle
of the focused light.
I also have support for changing the direction of the light source,
since anything that uses directional lighting would also tie light dir
to it.
This isn't *always* done tho, so I should maybe find a way to edit light
dir too.

My hope is this tool will allow for better concepting of a room's
lights, and easier changing of individual object's light values to suit
the right visuals.

### Lemon No Why What

Ok so I applied angle lights to bars and bulbs, which means I am
changing the lighting of pretty much every map in the codebase.
I'm gonna uh, go check my work.

Alongside this I intend to give lighting some depth. So if there's room
to make a space warmer, or highlight light colors from other sources, I
will do that.

(Images as examples)

![image](https://user-images.githubusercontent.com/58055496/228786801-111b6493-c040-4199-ab99-ac1c914d034c.png)

I also want to work on that other goal of mine, making breaking lights
matter. So I'll be doing what I can to ensure you only need to break one
light to make a meaningful change in the scene.

This is semi complicated by one light source not ever actually reaching
fullbright on its own, but we do what we must because we can.

![image](https://user-images.githubusercontent.com/58055496/228786483-b7ad6ecd-874f-4d90-b5ca-6ef78cb70d2b.png)

I'm as I hope you know biased towards darker spaces, I think contrast
has vibes.
In particular I do not think strong lights really suit maintenance.

Most of what is used there are bulbs, so I'm planning on replacing most
uses with low power bulbs, to keep light impacts to rooms, alongside
reducing the amount of lights placed in the main tunnels

![image](https://user-images.githubusercontent.com/58055496/228786594-c6d7610c-611e-478b-bcba-173ebf4c4b12.png)

**If you take issue with this methodology please do so NOW**, I don't
want to have to do another pass over things.
Oh also I'm saving station maps for last since ruins are less likely to
get touched in mapping march and all.

### Misc + Finishing Thoughts

Light templates support mirroring vars off typepaths using a subtype,
which means all the templates added here do not require updating if the
source type changes somehow. I'd like to expand the template list at
some point, perhaps in future.

I've opened this as a draft to make my intentions to make my changes to
lights known, and to serve as motivation for all the map changes I need
to do.

### Farish Future

I'm unhappy with how we currently configure lights. I would like a
system that more directly matches the idea of drawing falloff curves,
along with allowing for different falloffs for different colors,
alongside extending the idea to angle falloff.
This would make out of engine lighting easier, allow for nicer looking
lights (red to pink, blue to purple, etc), and improve accessibility by
artists.

This is slightly far off, because I have other obligations and it's
kinda complicated, but I'd like to mention it cause it's one of my many
pipedreams.

## Changelog
🆑
add: Added angle lighting, applies it to most wall lights!
add: Adds a lighting prototyping tool, mappers go try it out (it's
locked behind the mapping verb)
/🆑

---------

Co-authored-by: MMMiracles <lolaccount1@ hotmail.com>

* [MDB IGNORE] Angled Lights & Lighting Prototyping Tool

* Update north_star.dmm

* Revert "Update north_star.dmm"

This reverts commit bb5b8b5a549f7edc3e23a369a147ed96bab41991.

* Updatepaths

* Update nukie_base.dmm

* Newer version of northstar with the penguins

* Update northstar_cryo.dmm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: MMMiracles <lolaccount1@ hotmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-21 00:43:21 -04:00
Pinta
4d7ba6ebcb [MANUAL MIRROR] Reworks Duffel Bags (Zippers) (#22363)
* Reworks Duffel Bags (Zippers)

* Update backpack.dm

* Duiffel Spotfix

* error fixes

* Update backpack.dm

* Update code/modules/antagonists/cult/cult.dm

* Update backpack.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-20 23:12:57 -04:00
Zonespace
9e515acf89 Antag Revamp*: The Nuclear-ish Option (#18110)
* awaiting maint talk

* all quiet on the western front

* guh

* Update modular_skyrat/modules/opposing_force/code/items.dm

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>

* Update antagonist_powers.dm

* Update OpposingForcePanel.js

* heretic clarity

* h

* Update examine_more.dm

* FUCK

* hopefully works

* a

* works, maybe???

* a

* part 1 of getting CI to shut the fuck up

* lazy but works...?

* TM STUFF

* fix and log

* clock

* cwc

* -ist

* Update modular_skyrat/modules/opposing_force/code/equipment/antagonist_powers.dm

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>

* TM stuff, again

* fix?

* hybrid system changes

* zonenotes are gone

---------

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-07-16 17:14:32 -04:00
SkyratBot
2f552919c1 [MIRROR] Icons folder cleaning wave two [MDB IGNORE] (#22454)
* Icons folder cleaning wave two

* Merge conflict resolution

* Modular path hell

* hmm

* Update 2022-10.yml

* Another modular thing

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 00:41:18 -04:00