224 Commits
Author SHA1 Message Date
GhomandGitHub 96c0c0b12c Fish infusion (#87030)
## About The Pull Request
I'm adding a new infusion ~~(actually four, but two of them are just
holders for specific organs tied to a couple fish traits)~~ to the game.
As the title says, it's about fish.

The infusion is composed of three primary organs, plus another few that
can be gotten from fish with specific traits.

The primary organs are:
- Gills (lungs): Instead of breathing oxygen, you now need to stay wet
or breathe water vapor.
- fish-DNA infused stomach: Can safely eat raw fish.
- fish tail: On its own, it only speeds you up on water turfs, but it
has another effect once past the organ set threshold. It also makes you
waddle and flop like a fish while crawling (I still gotta finish sprites
on this one)

Other organs are:
- semi-aquatic lungs: A subtype of gills from fish with the 'amphibious'
trait, falls back on oxygen if there's no water. Can also be gotten from
frogs, axolotl and crabs.
- fish-DNA infused liver: From fish with the 'toxic' trait. Uses
tetrodotoxin as a healing chem instead of a toxin. Also better tolerance
to alcohol if you want to drink like a fish (ba dum tsh).
- inky tongue: From fish with the 'ink production' trait. Gives mobs the
ability to spit ink on a cooldown, blinding and confusion foes
temporarily.

The main gimmick of this infusion revolves around being drenched in
water to benefit from it, In the case you get the gills organ, this also
becomes a necessity, to not suffocate to death (alternatively, you can
breathe water vapor, without any benefit). To enable the bonus of the
organs set, three organs need to be infused. They can be gills, stomach,
tail and/or liver, while the inky tongue doesn't count towards it.

Once the threshold is reached, the following bonus are enabled:
- Wetness decays a lot slower and resists fire a bit more.
- Ink spit becomes stronger, allowing it to very briefly knock down
foes.
- Fishing bonuses and experience
- Resistance to high pressures
- Slightly expanded FOV
- drinking water and showers mildly heal you over time.
- for felinids: You won't hate getting sprayed by water or taking a
shower.
- While wet:
- - If the fish tail is implanted, crawling speed is boosted.
- - You no longer slip on wet tiles.
- - You also become slippery when lying on the floor.
- - You get a very mild damage resistance and passive stamina
regeneration, and cool down faster.
- - You resist grabs better.
- - get a very weak positive moodlet.
- However, being dry will make you quite squisher, especially against
fire damage, slower and give you a modest negative moodlet.

While working on it, I've also noticed a few things that explained why
tetrodotoxin (TTX) did jackshit at low doses, because livers have a set
toxin tolerance value, below which, any amount of toxin does nothing.
Also I've felt like reagents like multiver & co were a bit too strong
against a reagent that's supposed to work at very low doses, with slow
metabolization, so I've added a couple variables to buff TTX a bit,
making it harder to purge and resistant to liver toxin tolerance (also
added a bit of lungs damage).



## Why It's Good For The Game
I wanted to take a shot at coding a DNA infusion and see how chock-full
I could make it. DNA infusions are like a middle point between "aha,
small visual trinket" and organs with generally ok effects. I seek to
make something a bit more complex ~~(also tied to fishing ofc because
that's more or less the recurrent gag of my recent features)~~ primaly
focused around the unique theme of being strong when wet and weaker when
dry.

EDIT: The PR is now ready, have a set of screenshots of the (fairly mid)
fish tails (and gills, barely visible) on randomly generated spessman
and one consistent joe:

![immagine](https://github.com/user-attachments/assets/a4965508-22e2-4d3a-8523-29fec6bce91e)


## Changelog

🆑
add: Added a new infusion to the game: Fish. Its main gimmick revolves
around being stronger and slippery when wet while weaker when dry.
balance: Buffed tetrodotoxin a little against liver tolerance and
purging reagents.
/🆑
2024-10-09 02:03:50 +02:00
3f0b4abb8d Replaces world.icon_size (and some magic numbers) with defines (#86819)
## About The Pull Request

All usages of world.icon_size in code have been replaced with new
`ICONSIZE_X`, `ICONSIZE_Y` and `ICONSIZE_ALL` defines depending on
context

Replaces some "32" magic numbers with the defines

A few bits of code have been modified to split up x/y math as well

## Why It's Good For The Game

Magic number bad, code more readable, code more flexible and I'm told
there's an access cost to doing world.icon_size so minor performance
gains

## Changelog

🆑 tonty
code: made some code relating to the world's icon size more readable
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-09-29 13:28:32 +00:00
grungussussandGitHub 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

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

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

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

-- instrumental --

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

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

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

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

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

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

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

- [ ] attributions

## Why It's Good For The Game

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

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00
tgstation-ci[bot]GitHubtgstation-ci <179393467+tgstation-ci[bot]@users.noreply.github.com>Jordan DominionGhomsan7890MrMelbert
9a9b428b61 Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
8868a5d1fe and replaying the PRs skipping
#85491.

The following 239 (39 + Wallening Main PR excluded) PRs need to be
replayed (DO NOT EDIT THIS LIST MANUALLY, IT IS USED BY THE BOT TO TRACK
PROGRESS):

  - [x] #85777 - Reverted in 3
  - [x] #85767 - Reverted in 2
  - [x] #85763 - Reverted in c
  - [x] #85762 - Reverted in 2
  - [x] #85760 - Reverted in dbc19df13b033ac8bb5a83fa38c5cf140cf31836
  - [x] #85733 - Reverted in 22f17d057eac71661b86c3f2186489568c130043
  - [x] #85721 - Reverted in 6d90643dbbc90f3d21f2d25dc85dc4d4f706d6a3
  - [x] #85719 - Reverted in c52954648309ad4786238f409cd33142d486190f
  - [x] #85705 - Reverted in 3b5ddabfd5ab2cfec226a643be6e8a8fd656c831
  - [x] #85684 - Reverted in cbc1839625f44ba67bcd5489c3629ef98e31b2d4
  - [x] #85662 - Reverted in 69cac24e236604c262093abea7b9566ecbd092c4
  - [x] #85663 - Reverted in f394c3b1430d346b0598abf19fe511b30c3f4676
  - [x] #85673 - Reverted in 8a9ae0411488c9c779a54c5c41076238c230a304
  - [x] #85718 - Reverted in f8f18d8b626e963b06555f76850702740d5de0c3
  - [x] #85667 - Reverted in a1365766d178b727b6c6b503ad410e9d88d57ddd
  - [x] #85683 - Reverted in 3bdb0207d883de8db6f726d976025517cc6d3cba
  - [x] #85676 - Reverted in 0a5d667b2c8a9a2519af2a4fda8cd39f568e5049
  - [x] #85661 - Reverted in 49fc6bc1815133644d7173aa7914ede6c900218a
  - [x] #85682 - Reverted in b41efe96fd72228b079319ac07c660f4cd974af6
  - [x] #85695 - Reverted in 89a173b136cb0297070cef39c5bc9783b6323f02
  - [x] #85654 - Reverted in 1e4836b5173a40fbeb8755e0fb76ebc8d39fe1e0
  - [x] #85655 - Reverted in b4dde41eebd0422e1ec440b4d8d54229fc9617f4
  - [x] #85634 - Reverted in 0c352fc785762da025a68873438593b508f757d9
  - [x] #85700 - Reverted in 1327cf7fe48d7f4fd227120508f77c831aefa4ca
  - [x] #85633 - Reverted in c71c8c9d43112a1f4c6331bbba546881dcffd59d
  - [x] #85649 - Reverted in 73484337077f616878e63208d9bf2309f0d2e579
  - [x] #85475 - Reverted in 839f700001a57646109e75332d5311fe27bbc957
  - [x] #85467 - Reverted in 6f08421f64d01b13775d146cf7a451f9f38e195a
  - [x] #85472 - Reverted in 63c6a9b04e72e8130df5eeb2861c75f80a97e3de
  - [x] #85300 - Reverted in 7c776034f34ee6a76810c1a3779f169f2430c418
  - [x] #85249 - Reverted in 257d02273751fc1f939f76756f70b614a6e06789
  - [x] #85236 - Reverted in f9f4c444c8fc027dea87d4dbe0ebb8dd6bc67154
  - [x] #85299 - Reverted in f24ddff51dc3fec7145a2e97f057f1b286921db3
  - [x] #85228 - Reverted in cb8c318f7e2183d9f941c582f79e4c8b2503d95c
  - [x] #84910 - Reverted in 2a562ca26d9d13f335c276487f66edaa0d21b3bd
  - [x] #84889 - Reverted in 679da6885b034bcd8843f7f4c855388bce263733
  - [x] #84766 - Reverted in 4035dd7adee74af0fed82c14a8749585b2ab1c96
  - [x] #85607 - Reverted in dc9a0462b4c287cee2d541925f8a9988d18d9d85
  - [x] #85618 - Reverted in 2a06f57c89939dc31e9273ef250bd050cff17ff1
  - [x] #85619 - Reverted in b98661affc90e44c68a58c05e57cdf1dfd094c93
  - [x] #85608 - Reverted in 57a935126233f90255aef0a55dab16524be1faac
  - [x] #85648 - Reverted in ab82c66a95d4fbff86040b421a86cc82dca73009
  - [x] #85692 - Reverted in f04fac92bd3594f12f244bae9ea0c5c300c737fb
  - [x] #85544 - Reverted in 7b1198eb5c700e85ec163e60828c01fac55a9909
  - [x] #85631 - Reverted in 81c04ceb553f9887d59f8edf8b2526ff3807264b
  - [x] #85529 - Reverted in 2a7e2c8e3856d67cdefda0d25803393070a6e996
  - [x] #85525 - Reverted in 6ed2d9f28a9333c705eafd21acf54771b8e4db36
  - [x] #85514 - Reverted in a4fa2aa79d93b69d15e0fb9cb1fb7a5bc288bb34
  - [x] #85520 - Reverted in 6e1bd4b11cd55e36cab332c5a0c90c76a2e43703
  - [x] #85521 - Reverted in 79afdac194da5f42b38fb0fdfc394f2b8d485266
  - [x] #85519 - Reverted in a967cae1fb3feea23fdf196595e496431740f52d
  - [x] #85513 - Reverted in e3934edf8794f93a37dc7f63c60aa64ed7b60736
  - [x] #85498 - Reverted in cf1fadbc54a1365362aaeb142cbbd4e2c3be6f15
  - [x] #85485 - Reverted in 2a650ef9c0454bd650d6a13d10c0cb71bb134b2b
  - [x] #85494 - Reverted in bbb97958010dc0f74cee279fd304a7fcaccb625e
  - [x] #85552 - Reverted in f1780715bd054300e50e9102ad150c76690d4ca1
  - [x] #85724 - Reverted in 6933699cef8b01f9aef989f36ca079680a2777ff
  - [x] #85735 - Reverted in a6564f19226ef3969bec0573b49fa772d6e6df31
  - [x] #85729 - Reverted in f728d121a2f27a3cc7973fc2041df9b7193b796d
  - [x] #85704 - Reverted in 38f5b034a3370eda4657a2a5a6adcf3df6ec280c
  - [x] #85660 - Reverted in 7db39869d37ff5b39574d88ffc872449ab5b457c
  - [x] #85752 - Reverted in 1f2988028b7cccad121fc658d6547d89453703b7
  - [x] #85592 - Reverted in 263cbcfcb54746a9361369d86b44cc3e2d375199
  - [x] #85580 - Reverted in a92d53624198dce844c108b5dbea09cf2a16cd10
  - [x] #85573 - Reverted in a7d51042355798038ced44f64e987261b85e93bc
  - [x] #85534 - Reverted in 31787e7d1ce4fec2ce20776672099bf35486a296
  - [x] #85511 - Reverted in 2567a2eb56cdb7058f89ea298e53197147198d82
  - [x] #85508 - Reverted in 69de2ac16c20d968adcd19f0732fd2f84a4ae90e
  - [x] #85680 - Reverted in 44437ac406c708b9a3ab3b47f4e3c10e77a0b91b
  - [x] #85551 - Reverted in 7f17d428fd2787a6982534bfc9ac9188fd4b8675
  - [x] #85478 - Reverted in bd9e575dafc62dc7e1259e8c19199ba15d82be4f
  - [x] #85476 - Reverted in 4ce8052076de0bb52f1ed87663920e98482ade62
  - [x] #85593 - Reverted in 9ff5924d3d56fcba3f180fc4b539568fb2013323
  - [x] #85441 - Reverted in db96015adaec01f3fbcb978796a0d7abd5668932
  - [x] #85567 - Reverted in 62696ad04fb34fd946708309bd3e439db9b3f488
  - [x] #85337 - Reverted in 1267e9f002d03c33187afd2e734e95a78a5ca6ac
  - [x] #85348 - Reverted in 4fcc3c659ee2a38d978e137252309644d5adde8f
  - [x] #85350 - Reverted in e691c833dd5aca2e7808591516e8443e8ccf1b27
  - [x] #85744 - Reverted in 251578d2868a691981b824a268c540b9c15a424e
  - [x] #85772 - Reverted in bc6804a04aa9368074bcc853e689c8fe6de2cb3a
  - [x] #85797 - Reverted in a05e36ec4a0129ff6901ea07488120b54a8ee124
  - [x] #85787 - Reverted in a5393f94b9e71d9ea0625e5fcfb5baaf16af38d3
  - [x] #85742 - Reverted in cd99a2aeaa1347b790c9bfdae35e41900e2ada9a
  - [x] #85440 - Reverted in 8b5ead7c7f0d8087b41256a296e730443752f17d
  - [x] #85739 - Reverted in 3511aae5a4798104220b79ad0e5b2b357dc1e83b
  - [x] #85293 - Reverted in fc687ca36ef476ab9080f0c62b427ab0af533d68
  - [x] #85716 - Reverted in 130b32a222a7585cfdde71aa561fb8b2c7d8083b
- ~~[ ] #85848 - Reverted in f6c46ca2f5cb2d039e4b26731570ca801741cc5d~~
(SKIPPED)
  - [x] #85795 - Reverted in 4684c3325a9135b6bf10eb43026f373993bf605d
  - [x] #85859 - Reverted in 0e0838fe11b7d9af4f62af4f7388ed8fb57bf49c
  - [x] #84873 - Reverted in 34407b79a45718a305f3bfe3fac7f129b4f1c51f
  - [x] #85864 - Reverted in 4b25a209c5019bb65922cd793aff339f20c3d026
- ~~[ ] #85845 - Reverted in a326246e81b7b9242bbf45e7ab3b31caf9ce8147~~
(SKIPPED)
  - [x] #85844 - Reverted in bdf1e6c1e3469884550d3211e51ec9303a022482
- ~~[ ] #85843 - Reverted in 41a8acb196af0988372b06ade7131d07d03daab3~~
(NOT BEING INCLUDED)
- ~~[ ] #85840 - Reverted in 4807bacea8418000f84d62ca0fb122846cab4929~~
(NOT BEING INCLUDED)
- ~~[ ] #85837 - Reverted in bc9edfa8666de14ca4e57e466146d753182a3a71~~
(NOT BEING INCLUDED)
  - [x] #85865 - Reverted in 14c958b465af40f0ff28b100047c4c572919ae19
- ~~[ ] #85818 - Reverted in a77256f74e2d330f5f76141eb9c994a8e5e45810~~
(NOT BEING INCLUDED)
  - [x] #85822 - Reverted in caba685be95fd336f0b09e88bccfb8856d5ad9b4
  - [x] #85794 - Reverted in 0d4de984eb8513d065e8ac724e8cde11f01d4ef7
  - [x] #85756 - Reverted in 9c5a7e1a5f895851493e149ccb5cd50e35cd6101
  - [x] #85852 - Reverted in 74303e5bbae8426a073d068ef4342d8acc420a09
- ~~[ ] #85841 - Reverted in e5831ce3cc87765cb13e6d342417bc1730780392~~
(NOT BEING INCLUDED)
- ~~[ ] #85834 - Reverted in 1be665204da791ec7520d0799c015157fc625953~~
(NOT BEING INCLUDED)
  - [x] #85792 - Reverted in 33b4e48175040f9f76ef83d3154f10c69589b6ad
  - [x] #85646 - Reverted in fd23a0d6c4c96470b688dc0a35370c61c7e32f61
- ~~[ ] #85799 - Reverted in 4a7a6d812f2f301c1e749c92f324223f9bde8a39~~
(NOT BEING INCLUDED)
  - [x] #85819 - Reverted in 8bf001b7889d3a4282947cd332833c473b98eac1
  - [x] #85479 - Reverted in 6aeb5ef4582c03febe0c914185d29f75df4d5d94
- ~~[ ] #85824 - Reverted in 9ca3edfaa17d97306ac73207ef32fd1272061f6b~~
(SKIPPED)
  - [x] #85406 - Reverted in 702280ff48c8aef44f4da9a85eb33a7bc5faa013
  - [x] #85778 - Reverted in ce0ec5c685aadb02ae049d6714f1d2fd6dae1f26
- ~~[ ] #85851 - Reverted in 610c68b275cf3c54181d36ce48bd97b0cce0665c~~
(NOT BEING INCLUDED)
  - [x] #85754 - Reverted in 5cbdda00c5335db79ea50aedba097de1d06bf91b
  - [x] #85266 - Reverted in abdfec798e5223dfa9d67e1967d7618454dbec28
- ~~[ ] #85823 - Reverted in 86b766abd3d77af8ad835a3464fc5ff95cc11079~~
(NOT BEING INCLUDED)
- ~~[ ] #85842 - Reverted in 7ddd47e26ef1bc336e92a6675a33ec3191039c16~~
(NOT BEING INCLUDED)
  - [x] #85857 - Reverted in e32312ee20e9fdccb6dd7c4dc2d185540bd2276b
  - [x] #85856 - Reverted in 7d5d74c2b55a08ef5553568e996053157359dbe2
  - [x] #85276 - Reverted in 1d6fa881e4aef1e6b368d5b6809bccb021fbbd2a
  - [x] #85886 - Reverted in f27d6cabdf8f06f29926616345fa82c4e1e48708
- ~~[ ] #85771 - Reverted in 019d898b601c9ef4d45b7ee0f2144518ee127ca9~~
(SKIPPED)
  - [x] #85464 - Reverted in adc00417795deb85f8aa6170b0f0a07c40c8798c
- ~~[ ] #85870 - Reverted in d69b998420bfb39693bb59b9b9a20611880fdafa~~
(NOT BEING INCLUDED)
- ~~[ ] #85869 - Reverted in 0063c69f111bb67144f9b379476250ce86c99eee~~
(NOT BEING INCLUDED)
  - [x] #85530 - Reverted in b40c93399411d277b3899e149196f3eb974f841f
- ~~[ ] #85871 - Reverted in 63908bbd0a71d0a2bd0a4691816c17cc9eb5310c~~
(NOT BEING INCLUDED)
- ~~[ ] #85832 - Reverted in b29dab083f091198d65a9b0754536f13a935dc2c~~
(SKIPPED)
- ~~[ ] #85825 - Reverted in d072b294ca3bc526df5128df45653db97ba38fe1~~
(NOT BEING INCLUDED)
  - [x] #85632 - Reverted in 290092c7d826aa5b100a38cd4bacc5330b39a934
  - [x] #85902 - Reverted in 76118d620e71f1819a9385863b689d9a8d4ea810
  - [x] #85906 - Reverted in 82623c2cc0fd9aee3e79c95fe5558146c59bc941
  - [x] #85907 - Reverted in 68b7305f21240ca28c33afc904ee532966b7c4bd
  - [x] #85449 - Reverted in ab86a79339ef7b01ceb08dc7279c698927ebcbfa
- ~~[ ] #85875 - Reverted in 0a1fcda90e638e66d574c247e93f0669d0c27b0e~~
(NOT BEING INCLUDED)
- ~~[ ] #85861 - Reverted in 6dad5111aa144860371c93a2d78094fe3d39a7e1~~
(NOT BEING INCLUDED)
  - [x] #85264 - Reverted in dc1d2dcc995f33fc5773e037f5171e9516897281
  - [x] #85726 - Reverted in dbd9ec81586c87c1ab2afc43d43c4f020907dc1b
  - [x] #85730 - Reverted in 7de2c2a1d012ccb03f82c6beabd71a66aa0f910a
  - [x] #85880 - Reverted in 02169d2f28611765997fa332dda69c8031436fd1
  - [x] #85176 - Reverted in e3c85aae1cf665c9892bf7280b7b48ea42323198
- ~~[ ] #85887 - Reverted in 56b35f294b303fd30fbd7685011d37b456d584c7~~
(NOT BEING INCLUDED)
  - [x] #85883 - Reverted in 53be06a505ebd8581114bba8590e378d387b6c1a
- ~~[ ] #85882 - Reverted in a8877ff0083ca5753e3d3b1b9c9edc3613fa6570~~
(NOT BEING INCLUDED)
  - [x] #85895 - Reverted in 741235d41b3a19a40434653f1c14fc0999fac9c3
- ~~[ ] #85746 - Reverted in b7aebb6e5788f6c484173f0a5e29f042ea0c8560~~
(NOT BEING INCLUDED)
- ~~[ ] #85889 - Reverted in d677231d8c55efcd2cf427d510d961cd00f186c7~~
(NOT BEING INCLUDED)
- ~~[ ] #85888 - Reverted in 693f79abae54980ee098d602ed79926d51d5094b~~
(NOT BEING INCLUDED)
  - [x] #85898 - Reverted in 4f41fda23e6b9711aef5d00836591c1ac230612e
- ~~[ ] #85821 - Reverted in 738c9a75f65c4a376da36ad208e1fd8fdeac1ff0~~
(NOT BEING INCLUDED)
  - [x] #85694 - Reverted in f7ea4d19cdaa2067c87c43362b514c684b56b1f3
  - [x] #85308 - Reverted in 4a89b62774da5e9ec9ea241c60ec2a99f51f9bed
  - [x] #85904 - Reverted in 999dbe1773cc7488c629bb8d0d21be5454dbef60
- ~~[ ] #85901 - Reverted in bbf832da9e0c61ad25221530df3b1e93cace25dd~~
(NOT BEING INCLUDED)
- ~~[ ] #85896 - Reverted in 542fe408728faaef8a16869e13c4661018a8a07c~~
(NOT BEING INCLUDED)
  - [x] #85927 - Reverted in 7dc87df28e79ef3e9f3fad83cc0907d2dc867c47
  - [x] #85908 - Reverted in bcca80f073a486ca7908e9636d0e8b275c2085bf
  - [x] #85929 - Reverted in 094bf3610a73961f6433a52ada1a52f25d853738
  - [x] #85877 - Reverted in 5874cafd0dab8d3bd61cf1f662793c2708f42dcc
  - [x] #85903 - Reverted in b3ba8fffc5548e0f2ae6bada3baf10bad3c75e54
- ~~[ ] #85913 - Reverted in 67f7ec48d20f9a64ce4664fa2c452a25b60db59e~~
(SKIPPED)
  - [x] #85914 - Reverted in 7efcd3a5f7fef33c2a1625386bfead80a6ed5309
  - [x] #85917 - Reverted in fc50a5ff998d0e7269131a029e533e90e9dc3c54
- ~~[ ] #85949 - Reverted in 10a8e0f5c69e3ca1eb6e26f00945bfe226598bc2~~
(NOT BEING INCLUDED)
- ~~[ ] #85338 - Reverted in 847549ab938f77464829b1392a1b6f2b2f4b9e8f~~
(SKIPPED)
- ~~[ ] #85922 - Reverted in 3d9388249b8c322aac5dd4980d4ab4673ca01006~~
(SKIPPED)
  - [x] #85923 - Reverted in 2c6ffa4decf40eb52a92353aeb98aee8cbc7b4a2
- ~~[ ] #85920 - Reverted in 1de5b03981d9fcf9c2e6823bffa515fb939aa541~~
(NOT BEING INCLUDED)
  - [x] #85919 - Reverted in 1773e9baccdc941285f56ccb416f5c7125b031ef
  - [x] #85271 - Reverted in aecf8002cf2807a76b6b295867e50392b4bc4534
  - [x] #85918 - Reverted in 023ec3a4d1b1b2fc8f596fea65a77ddc9a06689f
  - [x] #85924 - Reverted in e4886079ad90f33628ac59e0793dfbbc8b8b9420
  - [x] #85928 - Reverted in 7470b7d5ac40be21c345e8825f4c4efc4738e29f
  - [x] #85926 - Reverted in 7761c9e3a1f442f37d4db4b27e5d78fae95edf00
  - [x] #85900 - Reverted in 633736cb0655dc464e9794666c63ae6ec7689826
  - [x] #85909 - Reverted in a47c7ec8a77bd02f8b7bb1ce3c621efbe57077c3
- ~~[ ] #85931 - Reverted in 9bc7a412982da6fbdb9cd24570d98877b76a45c3~~
(NOT BEING INCLUDED)
- ~~[ ] #85894 - Reverted in c15e1711656929aeb59f482145ecf029b40d58b8~~
(SKIPPED)
- ~~[ ] #85759 - Reverted in f45d70be0ffb9bf007bfa18a1bd1b5ce23d6dcfc~~
(SKIPPED)
- ~~[ ] #85892 - Reverted in fc08dc1a7160f584c94e368962eb56c18dccc86a~~
(SKIPPED)
- ~~[ ] #85915 - Reverted in 428f475c26f383998a689560a16de86da3f17557~~
(NOT BEING INCLUDED)
  - [x] #85222 - Reverted in 66e7ac2f00735c90acdb69a50c9e485a0f4e1552
  - [x] #85150 - Reverted in 3079387f926e41febb576105ec0b3acec2f7beba
  - [x] #85935 - Reverted in ce6114f644593ead295763362a61d19077f22acf
- ~~[ ] #85936 - Reverted in f601fa796bce7e70645a84fff91391cbb6ed8e37~~
(NOT BEING INCLUDED)
  - [x] #85937 - Reverted in 64242f589df3d9118fd5c09d19574758260c76a1
- ~~[ ] #85940 - Reverted in a979c6c24705a8729efab5eca40840f1c8070f1d~~
(NOT BEING INCLUDED)
- ~~[ ] #85942 - Reverted in 9562c14083212fc962b8687663ba5fac2ebfdd1a~~
(NOT BEING INCLUDED)
  - [x] #85944 - Reverted in adf8e1927e4b9886c9042d6a0eaaef74e4e0e102
  - [x] #85605 - Reverted in 88dbfb4f859f12549e8cf8ed5204ee8d7183d40f
  - [x] #85945 - Reverted in dea9e79a9c298eae05b8d173d8df4a37218e2d9c
  - [x] #84964 - Reverted in 234481fb1d92a266768fcbca49245151236803ed
  - [x] #85952 - Reverted in c62d87ab54d687db64b1551b319195527ca92924
  - [x] #85953 - Reverted in bd0e46245ccb597081b8baa4f81ff85949f672be
- ~~[ ] #85943 - Reverted in 697b6841391354885ef2d314d9185b8eee7a5cb0~~
(NOT BEING INCLUDED)
  - [x] #85946 - Reverted in f4afd4d330b6fc28397f7707bca8773d44cb15ed
  - [x] #85950 - Reverted in 394fffcb836f32f4e1b1fd91a621249e0e5d7d67
  - [x] #85955 - Reverted in 2230a5bc141cd11fc79ccf6b4b653257508a7e65
  - [x] #85319 - Reverted in fdaddd9cd6ed0bdd1cd78ba3c9729035936abcbd
- ~~[ ] #85934 - Reverted in 41bb6122b6d6e3c38c500d5ddf63808836ab090e~~
(NOT BEING INCLUDED)
- ~~[ ] #85255 - Reverted in 3e213b8554b40e53f6429969d6e9dbaa357fb09e~~
(SKIPPED)
- ~~[ ] #85961 - Reverted in 6f3d000b3601dc7f75f7edd221fab3edc3bbbd8c~~
(NOT BEING INCLUDED)
  - [x] #85956 - Reverted in a5bf22a93ca1a149ca839e6c874d088b32c7c25f
  - [x] #85958 - Reverted in c964a46741bd26a600bb75bc6463c629c11c914f
- ~~[ ] #85969 - Reverted in b599cd4bd3ae223210eb0d3b47c3bd814e1cb08c~~
(NOT BEING INCLUDED)
  - [x] #85252 - Reverted in 5a0e2f31a6e1093ab47970056f5bb3af54172e12
  - [x] #85984 - Reverted in b000da82f62bb48b059a881d596f3a2e7d985d21
  - [x] #85137 - Reverted in 1f31b558e41fc66d5da9db30a83d89cbb9949eae
  - [x] #85881 - Reverted in f3913f94c4557c4fc9d5605cd8e875accabebda6
  - [x] #85972 - Reverted in d3afed87a3a8eed7e0016512d2186b6aded0fca9
  - [x] #85998 - Reverted in 3d286b763cf2f7fe11b6f0ccb2456130570726c2
  - [x] #85358 - Reverted in 75f84bda1b3c80d54ae94a567bf96016aaae45b2
- ~~[ ] #85964 - Reverted in be1aeb010afa20c1b6949218d8911ee9e900b3d7~~
(SKIPPED)
  - [x] #85960 - Reverted in 69cbfce1529377ce7cd998ab474add0d61650d7f
  - [x] #85992 - Reverted in 89e4a7bb0b793461338ba1b0a3d332bf78ef140c
  - [x] #85967 - Reverted in d398e418eb340f309be523514ae0befdf1869560
  - [x] #84888 - Reverted in bb98eb09f06a1fdc0bbb733d6a42d711e6d477bc
- ~~[ ] #85983 - Reverted in 81152a9cd347eb7b4073758e2e96490e6e729ca9~~
(NOT BEING INCLUDED)
  - [x] #85976 - Reverted in 93c091347ca8f04763b91fd4c39ccdff848a0d50
- ~~[ ] #85962 - Reverted in de32ea25b534c725e3d55418ef0363145f0ed2b0~~
(NOT BEING INCLUDED)
  - [x] #85977 - Reverted in 393652a1ef065014748ae6977a9f36b32c99dc7c
  - [x] #85959 - Reverted in 52e6e07eb98bcb74a423934b14d5850dbf2c6647
- ~~[ ] #85988 - Reverted in a5853ccde46b5fee2d9eb31755384de15e7a5a87~~
(SKIPPED)
- ~~[ ] #85974 - Reverted in eab20ba04e6b06f862a0fb35cedb6374af7b93c0~~
(SKIPPED)
  - [x] #85939 - Reverted in ca85b05692f55f6b3e4bd0b3f30c63f89531c33f
  - [x] #85878 - Reverted in 3b3d3dbff9148e46b01f3af28f17f66bef4dfd16
  - [x] #85858 - Reverted in 08d6082e62d07117170ff5ffd065daad1278e853
  - [x] #85651 - Reverted in b76ab4a2114dd0eb78336878b2825d9919c210cc
  - [x] #85505 - Reverted in 0958eaa7b6f4d48400bea4e215e11edaa933ba8a
- ~~[ ] #85352 - Reverted in 620cec18618e514bbe4d3eb0a0d0db1528b9d312~~
(SKIPPED)
  - [x] #85279 - Reverted in ba0fd529ef94ba793fe2eee40975533fe8f475e3
  - [x] #85954 - Reverted in d7fe0336f2a968b93fd02361814930236e3b8ddf
- ~~[ ] #85996 - Reverted in 5fbd62139e0c1b668aaaf35d249d527cdc276b93~~
(SKIPPED)
  - [x] #85994 - Reverted in c99a03c6833ac58e0288111953573f697488234f
  - [x] #85470 - Reverted in fbd5ac46d84d27455cbcf5f998741124ed6de625
- ~~[ ] #85981 - Reverted in dc74c75011ddfb1b16d644fd2ca5607599532d6f~~
(NOT BEING INCLUDED)
  - [x] #86011 - Reverted in b14b42e70e2bd21f19d443065b2342e4591c5e05
  - [x] #85820 - Reverted in 26248546b9f7d0fedec52e7b2f7def40d457e29f
  - [x] #86013 - Reverted in e17ac14f53d08be988f0516e7c39d31496a35184
  - [x] #85986 - Reverted in 4021ffea0b1bbb1f6c5b26a296abd5a8bda1d5b3
  - [x] #86019 - Reverted in c0801b3aa5dbdd33ca7c6c81e80c9fa573ada9e1
  - [x] #86010 - Reverted in 10dff005729305b75deaf1c5755a94125fa5141d
  - [x] #86029 - Reverted in 664619213db52930fa22007561dad01fe8bb3de4
  - [x] #86024 - Reverted in e74ea4368cbd2cd085aa6e8bbe83db07800b0bd4
  - [x] #86022 - Reverted in 0b2fc6a1f478c48546b161fd3ddd571f7ed6000f
  - [x] #86015 - Reverted in b99d93592dbf8840a035f22f26b64bcf27c817cb
  - [x] #85415 - Reverted in d6102c7339838675c03eb771d7a3b5a9bea4035d
- ~~[ ] #85703 - Reverted in 339b7edf3c0318f9f02922018d6918211660234f~~
(SKIPPED)
  - [x] #85890 - Reverted in 4e54f376e07071f84ed283e7468e334aaf6e4e02
  - [x] #86046 - Reverted in 0bbe2c9a048c229d151682e08aca1fa176c3ad91
  - [x] #86008 - Reverted in a0a0635cd6618618c49fda7cf150231d62a14236
  - [x] #86042 - Reverted in fa376315a064b945ed9846225c7f48e38e9b55ed
  - [x] #85891 - Reverted in 603dcd691e9eaad0a610c60c94fee522391bd2b3
  - [x] #86040 - Reverted in e42fc7618194b4b01cb68ca0c61385e465d0cb05
  - [x] #86025 - Reverted in 536bb25fe91845fe05bb7d512d8e73cc193b67ff
  - [x] #86012 - Reverted in 5cb4ec5bdf87653a5bb651c536f21423db30887e
  - [x] #86004 - Reverted in e9536143e78e3b0614d3ce6ee2c9a40005ba9b91
  - [x] #85989 - Reverted in 88a92322c2f028d2e3a2be18951d35d1135a6268
  - [x] #86044 - Reverted in d0a5fb5956be23144e325d3d51f53cb103dd5bbe
  - [x] #86001 - Reverted in 195c3597044315c9b10d002e6196911ac0622c45
  - [x] #86030 - Reverted in 5265796286b481d34fc91a1f8c58b6373d23415e
  - [x] #86055 - Reverted in e82138798cda028b673fe7ac83890e5a6b9e16d2
  - [x] #86057 - Reverted in c921900e6151552aa0768b4c9d7cc58c58dfbcc0
  - [x] #86014 - Reverted in c004d4e989a2faa672793f58fd98bd6fded8194e
  - [x] #85304 - Reverted in 611510bd7f65ee06738b7344326d72f57a131f8a
  - [x] #86061 - Reverted in f14b0a245dcf164bb99f7696e180847bb5be9b11
  - [x] #86075 - Reverted in 5339fe6c098d48769eda3f9935aa3488faa73097
  - [x] #86089 - Reverted in 10b5398e6b55f4799ca7d6740ac50c031e157c43
  - [x] #86081 - Reverted in ba86f43383cd2e8417c0a465c23fe3227fcd5520
  - [x] #85609 - Reverted in 9e5208feaca3163b7f4237c316d880161933777f
  - [x] #86114 - Reverted in cf410a97b8348381f96cc784a6489d7c1dea49ba
  - [x] #86023 - Reverted in a7a2e95c0c1b0598f15019934c80ccc80a9f89af
  - [x] #86027 - Reverted in 9cf71611befac64d26d326c060ef082262aeca70
  - [x] #86016 - Reverted in b67fa06e1559c8de87899bd06d09891b4c7ae947
  - [x] #86095 - Reverted in dc5abd827bb56e1609afe5a9d2bdd957d40cc75c
  - [x] #86105 - Reverted in f5b8e7ecbe99cb38e829a98a4f6eb2c200af8b91
  - [x] #86070 - Reverted in 6c460bbc22827bdbc566b524b8e6a959cbb61c37

After that some startup commits on this branch need to be reverted then
it can be merged.

---------

Co-authored-by: tgstation-ci <179393467+tgstation-ci[bot]@users.noreply.github.com>
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: MrMelbert <kmelbert4@gmail.com>
2024-09-03 10:41:51 +02:00
+16 4b4e9dff1d Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## What's going on here

Kept you waitin huh!

This pr resprites most all walls, windows and other "wall adjacent"
things to a 3/4th perspective, technical term is "tall" walls (we are
very smart).

If you're trying to understand the technical details here, much of the
"rendering tech" is built off the idea of split-vis. Basically, split a
sprite up and render it on adjacent turfs, to prevent seeing "through"
walls/doors, and to support seeing "edges" without actually seeing the
atom itself.

Most of the rest of it is pipelining done to accommodate how icons are
cut.

## Path To Merge

Almost* all sprites and code is done at this point. 
There are some things missing both on and off the bounty list, but that
will be the case forever unless we force upstream (you guys) to stop
adding new shit that doesn't fit the style.
I plan on accepting and integrating prs to the current working repo
<https://github.com/wall-nerds/wallening> up until a merge, to make
contribution simpler and allow things like bounties to close out more
easily

This pr is quite bulky, even stripping away map changes it's maybe 7000
LOC (We have a few maps that were modified with UpdatePaths, I am also
tentatively pring our test map, for future use.)
This may inhibit proper review, although that is part of why I am
willing to make it despite my perfectionism. Apologies in advance.

Due to the perspective shift, a lot of mapping work is going to need to
be done at some point. This comes in varying levels of priority. Many
wallmounts are offset by hand, some are stuck in the wall/basically
cannot be placed on the east/west/north edges of walls (posters), some
just don't look great good in their current position.

Tests are currently a minor bit yorked, I thought it was more important
to get this up then to clean them fully.

## What does it look like?


![dreamseeker_hBsU6wCu91](https://github.com/user-attachments/assets/5392fa3b-60f6-40ea-876f-e686f25f996a)

![dreamseeker_CTiK0Je5iR](https://github.com/user-attachments/assets/1aee23bd-a5ec-4679-b094-d044401b7222)

![dreamseeker_HYkS1Q9GRq](https://github.com/user-attachments/assets/bad8844b-3179-4856-8684-f912e14e844a)

![dreamseeker_Pa18tgyKYp](https://github.com/user-attachments/assets/c2e1d222-9e5c-4500-8829-dd065428644a)

![dreamseeker_BfOBwS2mjH](https://github.com/user-attachments/assets/7dc51153-111d-4b17-93c3-8389daa6b60b)

![dreamseeker_iJazOumiMQ](https://github.com/user-attachments/assets/5837e203-3865-4f60-854e-62b4875c6b99)

## Credits

<details>
<summary>Historical Mumbojumbo</summary>

I am gonna do my best to document how this project came to be. I am
operating off third party info and half remembered details, so if I'm
wrong please yell at me.

This project started sometime in late 2020, as a product of Rohesie
trying to integrate and make easier work from Mojave Sun (A recently
defunct fallout server) with /tg/.

Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man
is insane) was working with tall walls, IE walls that are 48px tall
instead of the normal 32. This was I THINK done based off a technical
prototype from aao7 proving A it was possible and B it didn't look like
dogwater.

This alongside oranges begging the art team for 3/4th walls (he meant
TGMC style) lead to Rohesie bringing on contributors from general /tg/,
including actionninja who would eventually take over as technical lead
and Kryson, who would define /tg/'s version of the artstyle. Much of the
formative aspects of this project are their work.

The project was coming along pretty well for a few months, but ran into
serious technical issues with `SIDE_MAP`, a byond map_format that allows
for simpler 3/4th rendering.
Due to BULLSHIT I will not detail here, the map format caused issues
both at random with flickering and heavily with multiz.

Concurrent with this, action stepped down after hacking out the
rendering tech and starting work on an icon cutter that would allow for
simpler icon generation, leaving ninjanomnom to manage the project.

Some time passed, and the project stalled out due to the technical
issues. Eventually I built a test case for the issues we had with
`SIDE_MAP` and convinced lummox jr (byond's developer) to explain how
the fuckin thing actually worked. This understanding made the project
theoretically possible, but did not resolve the problems with multi-z.
Resolving those required a full rework of how rendering like, worked. I
(alongside tattle) took over project development from ninjanomnom at
this time, and started work on Plane Cube (#69115), which when finished
would finally make the project technically feasible.

The time between then and now has been slow, progressive work. Many many
artists and technical folks have dumped their time into this (as you can
see from the credits). I will get into this more below but I would like
to explicitly thank (in no particular order) tattle, draco, arcanemusic,
actionninja, imaginos, viro and kylerace for keeping the project alive
in this time period. I would have curled up into a ball and died if I
had to do this all myself, your help has been indispensable.

</details>

<details>
<summary>Detailed Credits</summary>

Deep apologies if I have forgotten someone (I am sure I have, if someone
is you please contact me). I've done my best to collate from the git
log/my memory.

Thanks to (In no particular order):
Raccoff: Being funny to bully, creating threshold decals for airlocks
aa07: (I think) inspiring the project
ActionNinja: Laying the technical rock we build off, supporting me
despite byond trying to kill him, building the icon cutter that makes
this possible
ArcaneMusic: Artistic and technical work spanning from the project's
start to literally today, being a constant of motivation and positivity.
I can't list all the stuff he's done
Armhulen: Key rendering work (he's the reason thindows render right), an
upbeat personality and a kick in the ass. Love you arm
Azlan: Damn cool sprites, consistently
Ben10Omintrix: You know ben showed up just to make basic mobs work, he's
just fuckin like that man
BigBimmer: A large amount of bounty work, alongside just like, throwing
shit around. An absolute joy to work with
Capsandi: Plaques, blastdoors, artistic work early on
CapybaraExtravagante: Rendering work on wall frames
Draco: SO MUCH STUFF. Much of the spritework done over the past two
years is his, constantly engaged and will take on anything. I would have
given up if not for you
Floyd: Early rendering work, so early I don't even know the details.
Enjoy freedom brother
Imaginos16: A guiding hand through the middle years, handled much of the
sprite review and contribution for a good bit there
Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of
effort dissecting feedback with a focus on making things as good as they
can be at the jump
Infrared: Part of the impetus for the project, made all the xenomorph
stuff in the MS style
Jacquerel: A bunch of little upkeep/technical things, has done so much
sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES)
Justice12354: Solved a bunch of error sprites (and worked out how to
actually make prs to the project) Thanks bro!
Kryson: Built the artstyle of the project, carrying on for years even
when it was technically dying, only stopping to casually beat cancer. So
much of our style and art is Kryson
KylerAce: Handled annoying technical stuff for me, built window frame
logic and fully got rid of grilles.
LemonInTheDark: Rendering dirtywork, project management and just so much
fucking time in dreammaker editing sprites
Meyhazah: Table buttons, brass windows and alll the old style doors
Mothblocks: Has provided constant support, gave me a deadline and
motivation, erased worries about "it not being done", gave just SO much
money to fill in the critical holes in sprites. Thanks moth
MTandi: Contributed art despite his own blackjack and hookers club
opening right down the road, I'm sorry I rolled over some of your
sprites man I wish we had finished earlier
Ninjanomnomnom: Consulted on gags issues, kept things alive through some
truly shit times
oranges: This is his fault
Rohesie: Organized the effort, did much of the initial like, proof of
concept stuff. I hope you're doin well whatever you're up to.
san7890: Consulting on mapper UX/design problems, being my pet mapper
Senefi: Offsetting items with a focus on detail/the more unused
canidates
SimplyLogan: Detailed map work and mapper feedback, personally very kind
even if we end up talking past each other sometimes. Thank you!
SpaceSmithers: Just like, random mapping support out of nowhere, and
bein a straight up cool dude
Tattle: A bunch of misc project management stuff, organizing the
discord, managing the test server, dealing with all the mapping bullshit
for me, being my backup in case of bus. I know you think you didn't do
much but your presence and work have been a great help
Thunder12345: Came out of nowhere and just so much of the random
bounties, I'm kind of upset about how much we paid him
Time-Green: I hooked him in by fucking with stuff he made and now he's
just doin shit, thanks for helping out man!
Twaticus: Provided artistic feedback and authority for my poor feeble
coder brain, believed in the project for YEARS, was a constant source of
❤️ and affirmation
unit0016: I have no god damn idea who she is, popped out of nowhere on
the github one day and dealt with a bunch of annoying
rendering/refactoring. Godspeed random furry thank you for all your
effort and issue reports
Viro: A bunch of detailed spriting moving towards 3/4ths, both on and
off the wallening fork. If anyone believed this project would be done,
it was viro
Wallem: Artistic review and consultation, was my go-to guy for a long
time when the other two spritetainers were inactive
Waltermeldon: Cracked out a bunch of rendering work, he's the reason
windows look like not dogwater. Alongside floyd and action spent a TON
of time speaking to lummox/unearthing how byond rendering worked trying
to make this thing happen
ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin
bugaboo that was living in my brain like it was nothing. Love you
brother

And finally:
The Mojave Sun development team. They provided a testbed for the idea,
committed hundreds and hundreds of hours to the artstyle, and were a
large reason we caught issues early enough to meaningfully deal with
them. Your work is a testament to what longterm effort and deep detailed
care produce. I hope you're doing well whatever you're up to. Go out
with a bang!
</details>

## Changelog
🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan,
Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd,
Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson,
KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom,
oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner,
SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016,
Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team!
add: Resprites or offsets almost all "tall" objects in the game to match
a 3/4ths perspective
add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: = <stewartareid@outlook.com>
Co-authored-by: Capsandi <dansullycc@gmail.com>
Co-authored-by: ArcaneMusic <hero12290@aol.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com>
Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com>
Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Rob Bailey <github@criticalaction.net>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
2024-08-14 09:07:45 +00:00
474ffe50ef [MIRROR] Flattens The Floor Plane (Camera Update Too) (#28632)
* Flattens The Floor Plane (Camera Update Too) (#84350)

## About The Pull Request

Ok so like, side map right? It makes things higher up in the world
render above things lower down in the world.

Most of the time this is what we want, but it is NOT what we want for
floors.
Floors are allowed to be larger then 32x32, and if they are we want them
to render based off JUST their layer.
If we don't allow this grass turfs and others get cut off on their
bottom edge, which looks WEIRD.

In order to make this happen, we can add TOPDOWN_LAYER to every layer on
the floor plane and disable sidemap.

I've added documentation for this to VISUALS.md, and have also
implemented unit test errors to prevent mixing TOPDOWN layers with non
topdown planes (or vis versa).
This new test adds ~1 second to tests, which is I think a perfectly
scrumpulent number.

EDIT:

I nerd sniped myself and implemented sidemap layering and lighting for
cameras (also larger then 32x32 icon support for getflat)
The lighting isn't perfect, we don't handle things displaying in the
void all that well (I am convinced getflat blending is broken but I have
no debugger so I can't fix it properly), but it'll do.

This came up cause I had to fix another layering issue in cameras and
thought I might as well go all in.

![image](https://github.com/tgstation/tgstation/assets/58055496/601b422c-f6aa-42ba-bcd9-b1faebe236e3)

## Why It's Good For The Game

Old:

![image](https://github.com/tgstation/tgstation/assets/58055496/d4102386-420d-4346-b05c-b819e62d98d0)

New:

![image](https://github.com/tgstation/tgstation/assets/58055496/1f5e303e-adee-427d-8fe3-76c8f2dbe098)

## Changelog
🆑
fix: Grass turfs will render properly now. Reworked how floors render,
please report any bugs!
fix: Cameras now properly capture lighting
fix: The layering seen in photos should better match the actual game
/🆑

* Flattens The Floor Plane (Camera Update Too)

* modular things

* Update fluff.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-07-13 18:39:17 +05:30
6f7494fd09 [MIRROR] New Traitor mech: Justice. (#28628)
* New Traitor mech: Justice. (#84097)

## About The Pull Request

Adds new mech that can be created from emaged fabricator. To craft this
mech you need:
1. Emag Fabricator to recive Justice disgine(done this, fabricator will
emit a text and sound signal that can reveal you).
2. You need to craft it like any other mech but you also need 8
telecrystals to finish constraction.
3. To board a mech you need syndicate access (traitor can get it by
purchasing an agent card).
About Mech:
Video:
https://youtu.be/QwJfO_lbLK0
Text:
Health 200
Damage 60
Only melee attacks(can't attach range weapons(can't attach anything in
his arms at all))
Block chanse 60
Speed - in safty mode 2.5 in combat mode 4.5
Attack effects:
In addition to damage, it has a 50 percent chance of cutting off an arm
or leg (does not put you to sleep or give a knockdown
effect when hit like regular combat mechs do).
If a target in crit or stun makes a finishing attack instead of a
regular attack, the mech says an epic phrase and after a second cuts off
the target's head by dashing through the target.

Special actions(can't be used if mech in safty mode):

Invisability - Makes the mech invisible for 20 seconds. If the mech is
pushed or collides with someone or if the pilot presses the invisibility
button again, the mech will no longer be invisible and will go into a 5
second cooldown (the same will happen after 20 seconds). If you attack
in invisibility, then instead of a normal attack the mech will make an
AoE 3x3 attack 1 second after pressing (the attack will be accompanied
by a sound and visual effect and for a second the mech will not be able
to move, which gives enemies time to run away from the attack). Upon
completion AoE attack, everyone( except peoples in crit and in stunned
condition) in a 3x3 radius will receive 35 damage and a 25 chance of
having one of their limbs cut off.

Charge Attack - Mech makes a dash towards the cursor at a distance of up
to 7 cells, breaking all obstacles in its path. If the obstacle is a
living person (and he is not in crit and is not stunned) then he will
receive 35 damage and a 25 chance of cutting off a limb. Cooldown 5
Seconds.
P.S.
Also added emag_act on fabricator so you can put any new secret traitor
mechs on it.
Also made the sounds of mech melee attacks to vars so that it would be
more convenient to change them.

Also fix a runtime error where if you set something in the mech's
max_equip_by_category to 0, the mech UI panel doesn't load.

## Why It's Good For The Game

Adds a traitor mech with fun and interesting mechanics. This is a new
mech with new unique abilities that turns the battle with you into a
boss fight.

## Changelog

🆑
add: New traitor mech: Justice. Emag fabricator to get it.
/🆑

---------

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

* New Traitor mech: Justice.

---------

Co-authored-by: Xackii <120736708+Xackii@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2024-07-05 10:38:46 +05:30
LemonInTheDarkandGitHub e90a9b4b68 Flattens The Floor Plane (Camera Update Too) (#84350)
## About The Pull Request

Ok so like, side map right? It makes things higher up in the world
render above things lower down in the world.

Most of the time this is what we want, but it is NOT what we want for
floors.
Floors are allowed to be larger then 32x32, and if they are we want them
to render based off JUST their layer.
If we don't allow this grass turfs and others get cut off on their
bottom edge, which looks WEIRD.

In order to make this happen, we can add TOPDOWN_LAYER to every layer on
the floor plane and disable sidemap.

I've added documentation for this to VISUALS.md, and have also
implemented unit test errors to prevent mixing TOPDOWN layers with non
topdown planes (or vis versa).
This new test adds ~1 second to tests, which is I think a perfectly
scrumpulent number.

EDIT:

I nerd sniped myself and implemented sidemap layering and lighting for
cameras (also larger then 32x32 icon support for getflat)
The lighting isn't perfect, we don't handle things displaying in the
void all that well (I am convinced getflat blending is broken but I have
no debugger so I can't fix it properly), but it'll do.

This came up cause I had to fix another layering issue in cameras and
thought I might as well go all in.

![image](https://github.com/tgstation/tgstation/assets/58055496/601b422c-f6aa-42ba-bcd9-b1faebe236e3)


## Why It's Good For The Game

Old:

![image](https://github.com/tgstation/tgstation/assets/58055496/d4102386-420d-4346-b05c-b819e62d98d0)

New:

![image](https://github.com/tgstation/tgstation/assets/58055496/1f5e303e-adee-427d-8fe3-76c8f2dbe098)


## Changelog
🆑
fix: Grass turfs will render properly now. Reworked how floors render,
please report any bugs!
fix: Cameras now properly capture lighting
fix: The layering seen in photos should better match the actual game
/🆑
2024-07-04 12:10:41 -07:00
82f92cb983 New Traitor mech: Justice. (#84097)
## About The Pull Request

Adds new mech that can be created from emaged fabricator. To craft this
mech you need:
1. Emag Fabricator to recive Justice disgine(done this, fabricator will
emit a text and sound signal that can reveal you).
2. You need to craft it like any other mech but you also need 8
telecrystals to finish constraction.
3. To board a mech you need syndicate access (traitor can get it by
purchasing an agent card).
About Mech:
Video:
https://youtu.be/QwJfO_lbLK0
Text:
Health 200
Damage 60
Only melee attacks(can't attach range weapons(can't attach anything in
his arms at all))
Block chanse 60
Speed - in safty mode 2.5 in combat mode 4.5
Attack effects:
In addition to damage, it has a 50 percent chance of cutting off an arm
or leg (does not put you to sleep or give a knockdown
effect when hit like regular combat mechs do).
If a target in crit or stun makes a finishing attack instead of a
regular attack, the mech says an epic phrase and after a second cuts off
the target's head by dashing through the target.

Special actions(can't be used if mech in safty mode):

Invisability - Makes the mech invisible for 20 seconds. If the mech is
pushed or collides with someone or if the pilot presses the invisibility
button again, the mech will no longer be invisible and will go into a 5
second cooldown (the same will happen after 20 seconds). If you attack
in invisibility, then instead of a normal attack the mech will make an
AoE 3x3 attack 1 second after pressing (the attack will be accompanied
by a sound and visual effect and for a second the mech will not be able
to move, which gives enemies time to run away from the attack). Upon
completion AoE attack, everyone( except peoples in crit and in stunned
condition) in a 3x3 radius will receive 35 damage and a 25 chance of
having one of their limbs cut off.

Charge Attack - Mech makes a dash towards the cursor at a distance of up
to 7 cells, breaking all obstacles in its path. If the obstacle is a
living person (and he is not in crit and is not stunned) then he will
receive 35 damage and a 25 chance of cutting off a limb. Cooldown 5
Seconds.
P.S.
Also added emag_act on fabricator so you can put any new secret traitor
mechs on it.
Also made the sounds of mech melee attacks to vars so that it would be
more convenient to change them.

Also fix a runtime error where if you set something in the mech's
max_equip_by_category to 0, the mech UI panel doesn't load.

## Why It's Good For The Game

Adds a traitor mech with fun and interesting mechanics. This is a new
mech with new unique abilities that turns the battle with you into a
boss fight.

## Changelog

🆑
add: New traitor mech: Justice. Emag fabricator to get it.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-07-04 12:01:42 -07:00
16c66010c9 [MIRROR] /icons/ folder cleansing crusade part 3 (#27859)
* /icons/ folder cleansing crusade part 3

* fixes

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com>
2024-06-09 12:00:28 +05:30
YesterdaysPromiseandGitHub 8eb3b51ad9 /icons/ folder cleansing crusade part 3 (#83420)
## About The Pull Request

In my effort to make the /icons/ folder cleaner and more intuitive
instead of having to rely on recalling names of stuff and looking them
up in code to find them for poor sods such as myself, plus in spurt of
complusion to organize stuff, here goes. I've tracked all changes in
commit descriptions. A lot still to be done, but I know these waves go
over dozens of files making things slow, so went lighter on it.
Destroyed useless impostor files taking up space and cleaned a stray
pixel on my way.

## Why It's Good For The Game

Cleaner /icons/ file means saner spriters, less time spent. Stray pixels
and impostor files (ones which are copies of actually used ones
elsewhere) are not good.

## Changelog

🆑
image: Cleaned a single stray pixel in a single frame of a bite
telegraphing accidentaly found while re-organizing the files.
/🆑
2024-05-25 21:08:08 -07:00
ae3a8acb8e * Turns mush cap into an extorgan
* Trimming the fat

* Trimming the fat

* Update mushpeople.dm

* Adds colorblindness as a mild brain trauma (#76527)

What the title says.
The brain trauma makes the whole screen monochrome until cured.

![image](https://github.com/tgstation/tgstation/assets/82850673/442d24a8-6625-454c-bc28-64b786b03f49)

I feel like the current pool for mild brain traumas is quite lame, this
helps spice it up a bit with something that is quite annoying and
distracting but not game breaking (as mild brain traumas should
generally be).

🆑
add: Added colorblindness as a mild brain trauma.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>

* Fix species `var/hair_color` not being used for, well, hair color (#82168)

`var/hair_color` for species was intended to be used as a "this species
uses this type of hair color thing"

But at some point that got completely lost and now it's only used for
sprite accessories

This fixes that. That means Slimepeople now have properly slimey hair.
And Ethereals are less snowflake once more.

🆑 Melbert
fix: Fixed Slimepeople's hair not matching their slimey colors.
/🆑

* Revert "Fix species `var/hair_color` not being used for, well, hair color (#82168)"

This reverts commit c4cb756.

* Revert "Adds colorblindness as a mild brain trauma (#76527)"

This reverts commit eb815f5.

* Update _species.dm

* unused var

* Caps list..

* Update mushpeople.dm

* Update mushpeople.dm

* Update mushpeople.dm

* Update mushpeople.dm

* Update mushpeople.dm

* Attempts to fix CI errors

* Update cap.dm

* Update _external_organ.dm

* Update monkey.dm

* Revert "Update monkey.dm"

This reverts commit 29f54c8.

* Revert "Update _external_organ.dm"

This reverts commit 8de5ea7.

* Update _external_organ.dm

* Revert "Update _external_organ.dm"

This reverts commit 644cc56.

* Fix CI maybe?

* Update cap.dm

* Update DNA.dm

* Some cleanup/updating to upstream

* Update global_lists.dm

* Mush

* Update mushpeople.dm

* Hopefully the last fix

* Doing this differently

* Update organ.dm

* Update organ.dm

* Update organ.dm

* Update organ.dm

* Update organ.dm

* OK

* Update organ.dm

* Update podpeople.dm

* maybe

* Hm

* Hm

* Will this break things?

* Revert "Will this break things?"

This reverts commit bd288c6.

* Test

* Update organ.dm

* Update organ.dm

* Revert "Update organ.dm"

This reverts commit ca77ff9.

* Update organ.dm

* .

* .

* .

* Update snail.dm

* Monkeys now use height offset (and monkey tail works) (#81598)

This PR adds the ability for monkeys to wear any jumpsuit in the game,
and adds support for them to wear things like coats, gloves, and shoes
(though this cannot be obtained in-game and is solely achieved through
admins, which I also improved a bit upon by adding a defined bitfield
for no equip flags).

This reverts a lot of changes from
tgstation/tgstation#73325 - We no longer check
height from limbs and such to bring sprites down, instead monkeys now
work more similarly to humans, so the entire PR was made irrelevant, and
I didn't really want to leave around dead code for the sake of having a
human with longer legs.

I've now also added support for Dwarfism, which makes monkeys look even
smaller. Very minor change but at least now the mutation doesn't feel
like it does literally nothing to monkeys (since they can already walk
over tables).

Here's a few examples of how it can appear in game (purely for
demonstration, as it is currently intentionally made impossible to
obtain in-game, though if someone wants to change that post-this PR now
that support is added, feel free):

Tails have been broken for a while now, the only reason you see them
in-game is because they are baked into the monkey sprites. This fixes
that, which means humans can now get monkey tails implanted into them
(hell yeah) and monkeys can have their tails removed (also hell yeah)

* Removes unneeded files

* Revert "Removes unneeded files"

This reverts commit 6469d37.

* .

* ok

* Update tails.dm

* Update monkey.dm

* Fix monkey screenshot test

* Update species.dm

* Update reinf_walls.dm

* Maintenance

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Mal <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: vinylspiders <13398309+vinylspiders@users.noreply.github.com>
2024-05-23 02:37:43 +02:00
MothblocksandSkyratBot 8c4cf753f5 Remove data systems in favor of global datums (#82943) 2024-04-30 05:48:11 +00:00
MothblocksandGitHub bc4e7d3b4e Remove data systems in favor of global datums (#82943) 2024-04-29 22:47:36 -07:00
+26 55d1c715e5 Pulls2 (#27514)
* New docking port sprites (#82729)

* Adds text to lootpanel items [no gbp] (#82722)

## About The Pull Request
Just some qol, this captures a small portion of the item name and fixes
some icon clipping issues

I clipped it at 5 because monke
![Screenshot 2024-04-17
034211](https://github.com/tgstation/tgstation/assets/42397676/64d9ce18-3722-4382-a58d-f58eb6b9f26c)


![gXR2XjslzR](https://github.com/tgstation/tgstation/assets/42397676/3fc93110-e35e-434a-b63b-89aa669090e7)
## Why It's Good For The Game
Handy if youre in a rush and won't upgrade byond to fix the issue
## Changelog
🆑
fix: Lootpanel additions: Condensed item names for the quick of draw
/🆑

* Fixes tgui alert buttons (#82714)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
Been on my mind for a long time
I did this while relatively inexperienced (how do I center a div etc)

Fixes an issue inherent to our stack implementation where reversing the
direction caused strange spacing issues. This effectively reverses the
extra margins in css so it looks identically spaced whether reversed/not

<details>
<summary>before/after</summary>

Before (normal buttons)

![image](https://github.com/tgstation/tgstation/assets/42397676/a91f5522-b363-4069-9e71-9852b15e9d98)

Before (large buttons)

![image](https://github.com/tgstation/tgstation/assets/42397676/1448b6db-9417-4f93-bbe3-3cb39c70d6a4)

After (normal buttons)
![Screenshot 2024-04-16
234002](https://github.com/tgstation/tgstation/assets/42397676/e19f6a71-bd11-4f21-8cfc-b29e89020f5c)

After (large buttons)
![Screenshot 2024-04-16
234015](https://github.com/tgstation/tgstation/assets/42397676/6adc55cc-42ca-4c1a-a18c-c2dadf3413ce)

Long buttons (normal)
![Screenshot 2024-04-17
174208](https://github.com/tgstation/tgstation/assets/42397676/b919c049-658c-4b9e-ab3f-6d06eb9d467e)

Long buttons (large buttons (I am 35 and yet still fight the forces of
chaos))
![Screenshot 2024-04-17
174202](https://github.com/tgstation/tgstation/assets/42397676/01fae7ff-8c51-4789-88ac-9d533e1f0eeb)
</details>

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
Looks better, runs smoother, no clipping
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

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

🆑
fix: TGUI Alerts shouldn't have such wonky buttons any more
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>

* MetaStation: Replaces the tools in the Primary Surgery Theatre with filled surgery trays (#82730)

## About The Pull Request

Replaces the tools on the tables with 2 surgery trays.

![image](https://github.com/tgstation/tgstation/assets/139372157/91d195f0-10d4-4b73-843a-a2da88fc5d33)

## Why It's Good For The Game

Makes surgery a bit less painful in the surgery theatre, Using tools
from a tray is much nicer than having to open the context menu on the
piles of tools on the tables.

## Changelog
🆑

qol: Replaced the surgical tools in the Primary Surgery Theatre with 2
Surgery Trays.

/🆑

* Fixes smart pipe & cryo gas reallocation (#82701)

## About The Pull Request

**1. Smart Pipe Problem**
 - Fill a pipe with any gas, plasma for e.g.
 - Unwrench the pipe to deconstruct
- The pressure sends you flying but notice plasma is nowhere to be seen
from the now destroyed pipe
 
**2. Cryo pipe connector problem**
The gas gets reallocated when the object is deleted. We only want this
when its deconstructed not deleted to prevent any side effects

This PR fixes them

## Changelog
🆑
fix: smart pipes release their gases into the air when unwrenched
fix: cryo pipe connector component has no side effects of gas
reallocation when deleted
/🆑

* Fix Primal Instincts (#82741)

## About The Pull Request

#82539 randomly made these two lines switch their AI controllers to idle
rather than on, when the intent was for them to wake up immediately to
do make the mob attack or fight or do something

## Changelog

🆑 Melbert
fix: Primal Instincts and Living Flesh should be a tad more reactive
/🆑

* Fix handcuffing (#82760)

## About The Pull Request

Changed this to an early return but then didn't invert the condition


## Changelog

🆑 Melbert
fix: You can handcuff people with 2 arms and you can no longer handcuff
people with 0 arms
/🆑

* Gets rid of UNIT_TESTS compiler warning (#82695)

## About The Pull Request

Basically every single CI Run is throwing the following warning:
```txt
code/modules/unit_tests/lootpanel.dm:24:warning (unused_var): new_box: variable defined but not used
```

You may find an example here:
https://github.com/tgstation/tgstation/actions/runs/8698627681/job/23855921813#step:9:24

This is pretty silly but I don't really know why we even have this
variable (I assume there's something far more complicated underneath the
surface based on what the unit test is asserting), but assuming it is
important let's just insert a do-nothing procedure to get rid of the
compiler warning while ensuring the unit test is actually operating as
it should.

I also don't really like the fact that this is a warning instead of an
error but let's tackle this problem one step at a time by at least
getting rid of the compiler warning in a quick advance PR while I dwell
on this issue (is there a way to get the Dreamchecker linter to look at
the unit test files? it's caught perfectly fine in the langserver)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Makes dropdowns better (#82697)

## About The Pull Request
Kind of a pain to work with, confusing people with its prop names (many
such cases!)
After recently discovering deathmatch it's very obvious to me how broken
it is, so I made it less so
(now comes with a complete ui upgrade!)

It now scrolls with the selection and to the selection on open, which
felt like major QoL

<details>
<summary>pics/vids</summary>

In motion

![7627sWJ2nS](https://github.com/tgstation/tgstation/assets/42397676/982427b2-6dc8-4c91-90cf-6e17d211f5ae)

Deathmatch got some UI facelifts

![GAotCHxtZg](https://github.com/tgstation/tgstation/assets/42397676/769317ad-7a9f-410a-a60f-4ddfb377210c)


![Ca2UJSpxlY](https://github.com/tgstation/tgstation/assets/42397676/ea188cda-a79b-4ca0-9209-1c69f57231dc)

Fixes #75741

![image](https://github.com/tgstation/tgstation/assets/42397676/d30a1ae4-cf08-4512-9ce6-5499084647b4)

</details>

## Why It's Good For The Game
Better UX
Bug fixes
Potential exploit patched (ui validation for ai voice changer)
Fixes #81506
## Changelog
🆑
fix: Dropdowns received some much-needed QoL, like having the scrollbar
follow your selection.
fix: AI voice changer now shows its current voice selection.
fix: Deathmatch screen has been touched up.
fix: Prefs menu has their dropdowns simplified, hopefully fixing issues
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>

* Fixes the NT SWAT helmet sprite (#82743)

* Mass Item Creation (#82455)

## About The Pull Request
Have you ever had to click the "Make" button a dozen times for a chef
making soup? I've also had it, so with this PR you can press the button
and everything will repeat itself as long as possible.

## Why It's Good For The Game
Makes life easier for chefs, now they can play chess on their cool
smartphone and craft food. (actually you can transfer it to other items
as well, see for yourself).

* Adds Retain volume flag on the ants reaction (#82718)

Fixes #82575

We'd expect feeding ants to always result in more ants I imagine.

* Borg movement now has sounds (#82704)

## About The Pull Request
adds sound effects to cyborgs when they move
Demo: 
https://imgur.com/a/7Mu98pQ

Open to feedback on this sound so please tell me what you think.
## Why It's Good For The Game
a hunk of metal moving at you without any sound is frightening
## Changelog
🆑 grungussuss
sound: cyborgs now have sounds to indicate they are moving
/🆑

* Use cell defined constants for various stuff (#82594)

## About The Pull Request
This re writes most cell power usage cases with 2 defines
`STANDARD_CELL_CHARGE`(Joules) & `STANDARD_CELL_RATE`(Watts) so changing
cell capacity values in the future won't cause discrepancies.

## Changelog
🆑
code: most cell power usages are scaled with defined constants to help
adapt to future changes
/🆑

* Plumbing machinery power & processing tweaks (#82702)

## About The Pull Request
- Plumbing machinery begins processing only when wrenched & ends
processing when unwrenched. The machines plumbing component
`/datum/component/plumbing/process()` already does this but the
underlying machines processing proc for e.g.
`/obj/machinery/plumbing/synthesizer/process()` is always processing
regardless of its wrenched state or not. We can optimize this & save
power when unwrenched

- Fixes #82621. This adds plumbing machines `idle_power_usage` on top of
its `active_power_usage` ensuring it only uses power when actively doing
work, So if your factory is say full of reagents & cannot do any more
work it will use less energy i.e almost enter an stand by mode,
efficiency

- Plumbing grinder chemical will grinds & juice stuff correctly i.e.
prefer grinding over juicing most of the time

## Changelog
🆑
fix: plumbing machinery begins processing only when wrenched & ends when
unwrenched
fix: plumbing machinery uses energy only when wrenched & doing work,
will stop/use less energy when idle
fix: plumbing grinder chemical will grinds & juice stuff correctly i.e.
prefer grinding over juicing for most stuff
/🆑

* Carps migrating through the station no longer idle so they don't get stuck after spawning until someone walks by. (#82744)

## About The Pull Request

Carps migrating through the station no longer idle so they don't get
stuck after spawning until someone walks by.

## Why It's Good For The Game

Bugfix for Carp Migrations.

## Changelog
🆑
fix: Carps migrating through the station no longer idle so they don't
get stuck after spawning until someone walks by.
/🆑

* Alt click no longer conflicts with mech suit [no gbp] (#82758)

## About The Pull Request
Get in the gundam shinji!!!

Context: Mech users hold ALT to disable strafe, which would trigger the
lootpanel to come up while committing war crimes (annoying!)

This prevents the panel from appearing and fixes the previous behavior,
meaning you can alt click your own mech to disable strafing.


![dreamseeker_mpU1ObsHNI](https://github.com/tgstation/tgstation/assets/42397676/59270585-a2c7-4fc6-a57a-aad6265d3543)

It also makes toggling strafe a balloon alert with sound. Parties for
all occupants!!
## Why It's Good For The Game
Fixes #82753
## Changelog
🆑
fix: Mecha pilots are no longer bothered by incessant loot panels while
holding ALT for strafe disable.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Adds a Wizard-themed map to the deathmatch (#81640)

## About The Pull Request
Deathmatch is severely lacking in HIGH IMPACT MAGIC LARPING. So I added
a big ass wizard arena. The arena itself is based off the wizard den.

Loadouts:
**Wizard:** Standard all-rounder. Got magic missile, jaunt, and
forcewall. Regular gear.
**Pyromancer:** Fire guy. Red robes, fireball, smoke.
**Electromancer:** Zappy guy. Lightning and tesla shock.
**Necromancer:** Is a skeleton. Has Scream for Me and blink.
**LARPer:** Straight from Station & Spessmen. Fake robes and can only
throw lightning and repulse.
**Chuunibyou:** Classic animage. Got chuuni buff and magic cards.
**Battlemage:** Melee fighter. Got some armor and a big hammer with
instant summons.
**Apprentice:** Underpowered until they find a mystery box. Got charge.
**Gunmancer:** Who needs magic when you have guns? Starts with an m1911,
lesser gun summons, and knock.
**Monkeymancer:** Is a monkey. Can summon monkeys and gorillas. Has a
banana.
**Chaosmancer:** Jumbled robes. Starts with a chaos rod. Can rod form
and summon traps for high chaos.
**Funnymancer:** It's just a clown with a banana staff.

The map itself is a pretty standard arena with a long sightline in the
middle. Each participant spawns in their own room complete with a magic
item box. The very southern portion of the ship has a standard mystery
gun box. Soon after the round starts, a hostile gelatinous cube in the
center of the map will break out and attack whoever it sees. Inside its
enclosure is a free death wand. Map has been tested to make sure
deathmatch participants can't escape the deathmatch.
## Why It's Good For The Game
Deathmatch provides a unique opportunity for people to play with
mechanics they will not often get to use. Allowing people to play wizard
for a few minutes shouldn't cause too much harm aside from admin logging
from explosions, which hopefully a fix is in the pipeline for.
## Changelog
:cl:Motho
add: Added wizard-themed deathmatch map.
add: Added mystery wand box.
/🆑

* Makes viewers() defines (#82767)

* Fixes Pseudo circuit delay & some missed cell define usages (#82771)

## About The Pull Request
- Fixes #82688 
If the circuit cost is<= 1% of `STANDARD_CELL_CHARGE` then the delay is
5 seconds, if the circuit cost is >= 50% of `STANDARD_CELL_CHARGE` then
delay is 1 minute. All other delay values are interpolated in between
these 2.
- Pseudo circuits don't use power when used on cooldown
- Makes `INSPECTOR_ENERGY_USAGE_*` defines values use standard cell
values
## Changelog
🆑
fix: pseudo circuit adapter computes recharge delay durations correctly
& won't use power when on cooldown
code: uses standard cell defines for N-spect scanner
/🆑

* Lava/Plasma River tiles now immerse you in them (#82736)

## About The Pull Request

This adds the "immerse" element to lava tiles. 

![lava tests but smaller
file](https://github.com/tgstation/tgstation/assets/28870487/a03555bf-6d2a-46d9-a437-da49a636a61a)

It's a tad hard to see because you're super on-fire, but it still looks
nice.
## Why It's Good For The Game

Eye candy, pretty...
## Changelog
🆑 Rhials
qol: Lava and plasma rivers now immerse you in them.
/🆑

* Adds `ALLOW_RESTING` to a bunch of items (#82761)

## About The Pull Request

Allows you to alt-click a bunch of items while resting. 

Fixes #82788

## Why It's Good For The Game

Some of these, such as storage, are bugfixes. You shouldn't need to be
standing up to configure a spray can, or change the direction of your
bedsheet

Others are just sensible changes. 

## Changelog

🆑 Melbert
fix: You can open bags with alt click while resting again
qol: Many items which previously required you to stand to alt-click now
don't, such as bedsheets and spray cans
/🆑

* Fixes sight range on lootpanel [no gbp] (#82765)

## About The Pull Request
When asked to make lootpanel visible at range they did not just mean
_any range_
AI alt click was a little weird (still is) but now it works

(TM BUG)
Fixes #82768

* Adds Omnitools for engineer and medical cyborgs, reducing on inventory clutter. (#82425)

[This PR is a bounty requested by Ophaq and worked on by
Singul0.](https://tgstation13.org/phpBB/viewtopic.php?f=5&t=36013)

All of the following description in this PR is written by Ophaq as to
what this PR entails:
In this PR, the medical and engineering cyborg's tools are completely
reworked and condensed into an arm similar to the implant a carbon would
get. The tools are shown in a radial wheel around the character to quick
select what is needed instead of looking for it in a cluttered bag of
items. There are a few tools such as the blood filter for the medical
cyborg, as well as the welder, gas analyzer, and t-ray scanner for the
engineering cyborg excluded from the radial wheel. mostly due to their
inherent inmodularity

![image](https://github.com/tgstation/tgstation/assets/127663818/f66425b3-771a-46a0-86e5-958124a3dd6f)

![image](https://github.com/tgstation/tgstation/assets/127663818/45e75c47-8f61-42aa-9ba3-01b25f266941)

Each cyborg gets two arms in case the player wishes to have one on the
side to quick swap to, like having a scalpel in one arm and a hemostat
in the other on the hotbar for convenience or just preference. An
upgraded version of the tools has been added to each respective cyborg
upgrade node with somewhat faster action speed. The upgrade replaces the
arms and transforms them into the "advanced" version which is currently
the same sprite as the regular but just a faster and more efficient
version. The sprites for the surgical arm currently look good but may
need replacing later if someone who wishes to resprite them down the
line decides to do so.
As it currently stands, the medical cyborg's magical bag of gadgets
takes up a lot of your screen space and as a player who plays medical A
LOT, this was a MUCH NEEDED quality of life feature.

The amount of clutter in a medical cyborg's bag makes it in my opinion,
hard to see at the bottom of the screen and a nuisance to constantly
close compared to other models. My standard set up for playing medical
cyborg on the hotbar is 1=med analyzer, 2=usually a secondary surgery
tool or injector, and 3=another surgery tool. The flow of gameplay
during surgery ends up being surgery tool, hit 3 and drop it, surgery
tool, repeat or for efficiency using X to swap between the two surgery
tools I need on 2 and 3. This gets tedious especially after so many
hours of playing medical cyborg. I know some people may disagree, but I
think it would help a lot of help to speed up this flow of gameplay
during surgery and declutter.

By turning the medical cyborg's toolset into an omni-surgery tool which
functions like the surgery arm implant's radial wheel, this would
greatly declutter by like an entire row and make things easier on
medical cyborg players. Having a secondary in the bag helps with
efficiency for those players who like having an extra tool on their
hotbar and swapping back and forth would also improve efficiency and
make less swapping by hitting Z needed. Additionally with the upgraded
version as an optional upgrade in the mediborg tech, this also lets them
be on par with players who use advanced tools late game but not at the
level of alien tools where players would obviously out compete a
mediborg in terms of action speed.

Engineering models also benefit from this rework but at a slightly
different and lesser way whereas certain tools are excluded such as the
welder, due to the way they work on refill and the gas scanner and t-ray
scanner not counting as tool components are not included in the arms.

Syndicate versions of the engineering and medical cyborg also get these
arms, unupgraded.
🆑
add: Adds an omnitoolset for both engineering and medical cyborgs,
containing various basic tools
qol: Engineer and Medical module inventory space is now significantly
decluttered
/🆑

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>

* Fixes dropdown displaytext not working for numeric values (#82778)

## About The Pull Request

https://github.com/tgstation/tgstation/pull/82697 broke the prefs menu
downstream; we have a couple of dropdown choices that are numeric but
that make use of `display_names` to map those choices to appropriate
strings.

The code was assuming that `value` would always be a string when calling
`capitalizeFirst(value)`. Basically it should be doing
`display_names[value]` when `display_names` are present.

## Why It's Good For The Game

Fixes an oversight/bug.

## Changelog

🆑
fix: dropdowns that use display_names as an alias for numeric values
will no longer cause tgui bluescreens
/🆑

* [NO GBP] HPLC can purify inverted chems (#82727)

## About The Pull Request
- Fixes #82725

Inverted chems are now coloured green and classified as clean (like
before my general maintenance PR) which means they can be purified
again.

Only chems that are too impure to use & have an inverted chem value are
coloured red in the UI and not when they are just of the inverted type

## Changelog
🆑
fix: HPLC can purify inverted chems and are now coloured green(clean) in
the UI
/🆑

* Lathes compute their local storage size correctly (#82770)

## About The Pull Request
Basically we have to add the material container before we call parent
Initialize(which calls `RefreshParts()`), else the container doesn't get
initialized early and we skip over computing storage sizes

## Changelog
🆑
fix: off station & round start lathes with local storage don't have
infinite storage size.
/🆑

* Arcmining QoL: GPS component to scanned vents and vent(pin)pointer (#82724)

## About The Pull Request
Scanning ore vents will now tag them on GPS so you can find them easily
when you are prepared (and remove them when they are tapped). Also adds
special pinpointer to help with finding unscanned vents in a first
place. And adds missing uranium overlays for scanned vents. Because why
not.
<details>


![image](https://github.com/tgstation/tgstation/assets/8430839/d13df20f-79c0-46a7-a602-81c630309a2d)


![image](https://github.com/tgstation/tgstation/assets/8430839/72690bec-dffd-41a8-8a5e-1ceb7ae182d0)
</details>

## Why It's Good For The Game
While looking at mineral density to find vents is somewhat fun and
entertaining, having some sort of upgrade to make finding them easier
adds a bit of a progression. Also re-finding already scanned vents can
be a bit annoying. You need to fill your backpacks with GPSs and tag
them manually. It is also inconsistent with geysers that are added to
positioning after you scan them. And with tendrils, which are always
visible.
## Changelog
🆑
add: added ventpointer that points toward nearby ore vents and can be
bought with mining points
balance: scanned ore vents can now be found with GPS
fix: fixed ore vents missing overlay icon for uranium
/🆑

* Fix oven tray runtime (#82782)

## About The Pull Request
Fixes a lil typo from the interaction refactors that broke the ability
to load oven trays from containers
## Why It's Good For The Game
squamsh bug
## Changelog
🆑
fix: loading oven trays from serving trays and other containers works
again
/🆑

* Fix flaky test detection (#82790)

- Add missing job pagination.
- Fix multiple jobs being able to fail if they aren't in
`CONSIDERED_JOBS`

* Add utf8 support for state laws button (#82789)

## About The Pull Request
Adds UTF-8 support for state laws HTML page. Now it supports more than
just English

## Why It's Good For The Game
Support for other symbols, such as cyrillic
![Screenshot 2024-04-21
015220](https://github.com/tgstation/tgstation/assets/31931237/57ca6d56-14da-4f10-a9b6-63b541c5eb5b)

* Update highest available sound channel (#82780)

Current channels are:
```
```
So, the highest available now is 1013

Updating the thing which everyone forgot for 7 years. Not that many
special channels were added either way

* Revert "Borg movement now has sounds" (#82795)

Reverts tgstation/tgstation#82704

The sound ingame appears much louder than the original author intended.
Not to mention that the sound loops stack for every borg moving near
you.

* Use defines for "General Research" where it's not used (#82785)

## About The Pull Request
There is a define for it, so why not use it?

## Why It's Good For The Game
Defines good

* [READY] the unfuckening of clothing rendering (#79784)

refactors clothing visors to use the same system, including masks being
toggled and stuff like riot helmets toggling using the same system and
welding helmets and such
adds a handler that updates all visuals in slots that an item has
obscured, each visual proc calls that so you no longer have weird shit
happening like having to hardcode a proc for heads where you need to
also update hair, mask, glasses everytime you put on an item

one thing here i could also do is make check_obscured_slots return the
HIDEX flags instead of item slots, because in 99% of cases its hardcoded
to be ran against specific slots (like eye code running it against the
glasses slot), but maintainers didnt seem to like that :/

fuck this 2003 bullshit

theres like several bugs here i fixed but i forgot them all and they are
small

* Allows vv investigate /appearance + better checking image (#82670)

* Fixes Alien Numerical Identifier Transfer System (#82762)

## About The Pull Request

Fixes #82756

I'm not sure what the root cause of the issue is or why it broke so
recently (this has been a thing since #49150) but I went and cleaned up
the code and ensured that we always reset the `name` to the `initial()`
value we have for it if we determine that we need to transfer over the
`numba` from the old xenomorph. This is done by a new proc which is a
lot less convoluted from the old system (always respecting var-edited
names and stuff like that) that should make it flow a lot better and
make it more hardy against double-addition of the `numba` to the name.
## Why It's Good For The Game

Having two numbers in your name is weird, should only have one.

[x] I tested this PR
## Changelog
🆑
fix: Evolved aliens should no longer have two numbers in their name.
/🆑

* [NO GBP] Fixes runtime in advanced camera console (#82699)

## About The Pull Request
We only unset machine if we have a user who has logged in

## Changelog
🆑
fix: Fixes runtime in advanced camera console when power is turned off
/🆑

* Refactors how basic ais do their success/failures (#82643)

* Rocky DLXIII: Fitness to Athletics, Athletics skill influences Boxing against Boxers, Boxing overhaul, Evil Boxing (#82611)

as the only meaningful reward

Basically just a rebranding so that it is more broad in its concept. It
isn't just about peak physique. It's about how you can apply it too.

Reaching Legendary rewards you with the Golden Gloves.

I started it in this pr here
https://github.com/tgstation/tgstation/pull/80635

But this is a more significant overhaul of boxing from the ground up.
Namely, it now is majorly influenced by the Athletics skill, and also
more thoroughly aligns with conventional punching in its current state.
However, a major component of this is that boxing's breadth of mechanics
is only relevant when used against another boxer. Non-boxer targets are
only ever going to get smacked by a stamina punch, as it is currently
(and more or less the same values too). Additionally, boxers cannot
punch someone who is either unconscious or in stamina crit, so it can't
be used to maintain stamcrit.

- Boxing now has a One-Two Punch mechanic. Swapping between the left and
right mouse buttons to punch and maintaining this causes every second
punch to do more damage (to boxers). Breaking this chain by punching
with the same button twice will cause you to lose damage (against
boxers).

- Boxing now can have crits occur below 50 stamina damage (against
boxers). However, to knock someone out clean, the target must be
staggered from a previous crit first. (Or I guess be staggered at all,
maybe their shoelaces were tied or something). Crit probabilities are
determined by adding your Athletics probability skill bonuses to your
unarmed effectiveness, and then reduced by the targets own Athletics
skill bonuses. It is hard for two athletes to knock each other out in
one blow. It is trivial for a legendary boxer to knock out a novice in a
single punch. Cybernetically enhanced boxers are dangerously effective
at boxing.

- Boxers can block other boxers by using throw mode, but the chances of
doing so is based on Athletics skill bonuses. A successful block causes
the attacker to take stamina damage (as does the blocker, but less so).

- Participating in boxing increases the Athletics skill. Your gains are
probably slower than normal training, but you at least get some reward
for doing so. Only relevant if your opponent is a boxer. Get a sparring
partner!

So this is all well and good, but what if you're a scoundrel with no
care for the other person in this equation? Well, that's where Evil
Boxing comes in. Evil Boxing has absolutely no restrictions at all, and
can freely use its boxing abilities against anyone. Even non-boxers. You
can even grab people! Wow, what a scumbag. I bet you even king hit
people. Thankfully, only an admin can make you into an Evil Boxer.

(against boxers)

Both mutations have a flimsy increase to instability of 5 because of how
incredibly particular the bonus is.

Strength now reduces the amount of stamina damage inflicted via
exercising by half. Strength also adds a +2 damage bonus on boxing
punches while boxing against boxers (this doesn't influence normal
unarmed attacks whatsoever, or boxing against nonboxers). Obviously,
evil boxers just get this benefit against everyone because they're
knaves.

Stimmed increases the duration of the exercised status effect by one
factor. (That is, if you have no other modifiers, it will double the
duration on its own)

@Jacquerel was racking their brain trying to come up with an alternative
to the skill rewards of Fitness. At the moment, sprite growth is not
only a really bad bonus (it does literally nothing but make you big, and
thus is actually a detriment due to how intrusive sprite size is with
interaction, and plays weird with other sprite changing effects), but
isn't really all that interesting for all the effort put in.

Problem is, how do you make Fitness meaningful without making it a
powergame mechanic? Simple! You make it applicable to a really niche,
self-contained but still utilized game mechanic that is engaging to
participate in and makes you meaningfully very good in it. AND scratches
that power scaling itch that many players have.

Boxing is reasonably self-contained as is, but pretty bland due to how
old it is. While maintaining that self-contained nature, I hoped to
expand the interactivity of boxing a little bit by giving it a small
mini-game in of itself. And also introduce ways to simulate the idea of
boxing a bit better.

The idea of being an Evil Boxer is funny. For every Rocky, there is a
[Insert Rocky Villain Here that isn't Creed]. But in this case, it's
probably some Syndicate douchebag looking to punch clowns into a coma
and inspire the mime to take up shadowboxing in revenge.

🆑
add: Replaces Fitness with Athletics; same skill, but now more
specifically applicable to boxing.
add: Athletics does not increase sprite size.
balance: Overhauls Boxing to add a lot more depth to the interactions.
Only applicable to other boxers, however. You can still punch the snot
out of non-boxers though. But only up to stamcrit or unconsciousness. No
hitting someone who can't fight back!
balance: Adds Evil Boxing, which is the evil and fucked up version of
boxing that you kill people with and are allowed to flout the sacred
rules of boxing as you please. Everyone is a victim!
/🆑

* Cargo ui refactor -> TS (#82745)

Refactors cargo ui, fixing some visual bugs, just making it look better
in general

Should be no gameplay effect other than it looking better

<details>
<summary>pics</summary>

![Il0e6EWjUa](https://github.com/tgstation/tgstation/assets/42397676/d16e83a5-ee36-4346-9411-7ea76907994d)

![Screenshot 2024-04-17
230621](https://github.com/tgstation/tgstation/assets/42397676/f5e15b04-c148-4be4-8f7e-7a195ac8e815)

![Screenshot 2024-04-17
235319](https://github.com/tgstation/tgstation/assets/42397676/d3085f70-74ca-41fb-bbcd-e3bd6c990cee)

![Screenshot 2024-04-17
234758](https://github.com/tgstation/tgstation/assets/42397676/95df59ae-e7e3-4349-a63c-7bfbe6777561)

Fixes #81442
![Screenshot 2024-04-18
000750](https://github.com/tgstation/tgstation/assets/42397676/2d97ba9c-68d7-4ac3-9ff8-3bc5cfecf0f6)

Made a type grabber for backend data in case you want to make your own
typescript uis
`logger.log(getShallowTypes(data))`

![image](https://github.com/tgstation/tgstation/assets/42397676/ff914895-3302-4aca-982c-46af3299a4af)
Otherwise cargo's data is unreadable

</details>

Any UI over 500 lines should get broken up to reduce cognitive load
~~Any ui in javascript shouldn't exist~~
Cargo UI is better
Typescript
🆑
fix: Cargo's supply console has been upgraded visually.
/🆑

---------

Co-authored-by: EricZilla <81941674+EricZilla@users.noreply.github.com>
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>

* Makes lavaland stone tiles prevent immersion (#82807)

## About The Pull Request
Adds the same trait that lavaproof rods have to the stone tiles, so
things can continue being visually outside of the lava
## Why It's Good For The Game
this shit looks goofy

![324271923-9c1e353d-70ff-4321-839c-8bac2fd03c01](https://github.com/tgstation/tgstation/assets/25628932/d120458d-8f65-418c-a0c8-7d1f939a472b)
## Changelog
🆑 FlufflesTheDog
fix: Stone tiles (and things on them) no longer get immersed in lava
/🆑

* Getting up from prone, z movement, and mod de/activation don't do cogwheels (#82794)

Adds `hidden` to getting up (from prone), moving up (z-movement), moving
down (z-movement), and de/activating MODsuits

- Getting up from prone happens very often, makes it a bit hard to
differentiate when people are doing actions or just crawling around.
    - If we want feedback for getting up, should just be a chat message.
- Moving up and down is just movement. Only affects using the verbs.
- Same as before: If we want feedback, it should just be a chat message.
- Other methods of moving up/down (IE, ladders) are untouched / retain
their cogwheel.
- De/activating modsuits have their own visual feedback and sound
effects associated. Both feels unnecessary.

🆑 Melbert
qol: Getting up from prone, moving up or down a z-level (not via
ladders, naturally. Like flight), and de/activating your modsuit no
longer shows cogwheel effect
/🆑

* [NO GBP]Inversely scale mechanical favor with STANDARD_CELL_CHARGE. (#82801)

## About The Pull Request
Makes the mechanical sect cell sacrifice favor adjustment inversely
scale with STANDARD_CELL_CHARGE. This reduces it by a factor of 1,000.
## Why It's Good For The Game
So they don't get 1,000 times the favor as intended from a cell.
## Changelog
🆑
fix: Fixes mechanical sect gaining 1,000 times the favor from a cell
sacrifice.
/🆑

* Fix all types of damage to the head causing brain damage (#82763)

## About The Pull Request

5 months ago when I separated this stuff out to its own proc I forgot a
damagetype check.

## Changelog

🆑 Melbert
fix: Only brute damage causes brain damage when applied to the forehead,
rather than all damage types
/🆑

* Converts ListInputModal to actually be a Modal | Adds ListInputWindow which uses it (#82792)

## About The Pull Request

If we say something is a Modal it should actually be a Modal

## Why It's Good For The Game

You can now use this system in other windows if you want.
Fixed the misnomer.

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>

* Higher capacity SMES variant for low maintenance areas; miners can access their maintenance area on mining base, gulag no longer saps all power from the main base (#82713)

## About The Pull Request

Creates a higher capacity version of the SMES unit that spawns in with
super capacity cells, as well as a full version. Places the full version
into all the AI sats (which all have independent grids for the most
part), some remote space ruins and the mining base. These SMES units are
intended for areas where players aren't expected or cannot reasonably be
expected to constantly monitor power usage within the length of a
standard round.

Miners can access their power stations, telecommunications box and
atmospheric station on the mining base. They're really the only people
who care, after all.

The gulag's SMES (also now upgraded) no longer saps power from the main
base due to having its input terminal rigged to the main base power
grid, and thus demanding all power from the grid greedily. To revert
this in-game is a single power cable placed back east of the SMES unit.

## Why It's Good For The Game

The power changes made some of the once largely low-maintenance areas
much more likely to run out of power more quickly than you would expect.
These aren't areas expected to be maintained or monitored by engineering
(probably because they're not easily accessed), and they're just kind of
troublesome to deal with on a round-to-round basis.

Mining had this problem triple-fold. It had significant drain with no
convenient method of installing power generation at all, miners couldn't
access what power generation there was without using their 'skeleton
key' to open the way (only engineers could, and they aren't expected to
come down to mining at all), and even then, there was the gulag SMES
just eating all the power anyway. I'm pretty sure that SMES unit was the
biggest culprit of them all, but I think this conveniently future proofs
these issues for the time being.

## Changelog
🆑
add: Adds a higher capacity SMES unit to lower maintenance areas and
maps.
fix: Miners can actually access and fix their engineering issues on the
lavaland base via the engineering section of the base.
fix: The gulag SMES unit is no longer needlessly draining the entire
power grid of the main mining base.
/🆑

* Revert "Higher capacity SMES variant for low maintenance areas; miners can access their maintenance area on mining base, gulag no longer saps all power from the main base (#82713)"

This reverts commit af8d69f889.

* New views for mc controller ui (#82769)

## About The Pull Request
Lots of qol improvements for controller tgui

- Auto sort order based on type
- Bar view for items in deciseconds

<details>
<summary>vids</summary>

in a live round

![image](https://github.com/tgstation/tgstation/assets/42397676/52fd4677-763a-4ea9-965a-386ab59cd353)

modals

![Tzp0i9yfwP](https://github.com/tgstation/tgstation/assets/42397676/06ca6d9e-c528-4f02-8dbb-d302d2380396)

bar view with defaults for decisecond sorts

![2X6IqQIE7c](https://github.com/tgstation/tgstation/assets/42397676/88b80fd4-1116-4ba1-aa0b-6bac56827e6b)

</details>

## Why It's Good For The Game
Better admin tools
## Changelog
🆑
add: Admin tools buffed, check the Controller Overview
add: Controller Overview moved to debug tab
/🆑

* Revert "Converts ListInputModal to actually be a Modal | Adds ListInputWindow which uses it" (#82841)

Reverts tgstation/tgstation#82792

* [no gbp] Fixes cargo express console (#82843)

## About The Pull Request
Cargo express console does not send amounts by name

Fixed and touched up the express console a bit
![Screenshot 2024-04-22
195254](https://github.com/tgstation/tgstation/assets/42397676/c099cdc0-6b4d-4348-9b5b-f9d4cc325d0b)
## Why It's Good For The Game
Bug fix (no issue yet)
## Changelog
🆑
fix: Cargo express console fixed: No more bluescreen
/🆑

* Plumbing & chem reaction chamber patches (#82781)

## About The Pull Request
1. Both Plumbing & Chem reaction chamber will use the beakers
`heat_capacity()` proc instead of the formulae `SPECIFIC_HEAT_DEFAULT *
reagents.total_volume`. This yields the exact same results as before but
will mean in the future if individual reagents heat capacities are
changed then the heating effects will be accurately reflected here. It
also uses that amount of power for heating
2. Plumbing rection chamber will not use energy when its either
'emptying' or when no reagents are present in its internal buffer
3. You can hit the chem reaction chamber with items like beakers,
screwdrivers, crowbars and what not

## Changelog
🆑
fix: plumbing & chem reaction chamber heating effects accurately reflect
the beakers heat capacity & power usage
fix: plumbing reaction will not use power when emptying or when there
are no reagents to heat
fix: you can hit the chem reaction chamber with items like beakers,
screwdrivers, crowbars and what not
/🆑

* fixes brimdemon AI (and some other mobs) (#82831)

## About The Pull Request
i noticed brimdemons werent attacking when i tried investigating the
problem i saw it extends to other mobs

## Why It's Good For The Game
brimdemons, as well as other mobs, will behave normally

## Changelog
🆑
fix: brimdemons (and other mobs) will act normally
/🆑

* Implements data systems (#82816)

## About The Pull Request
Subsystems currently come in two different flavors:
1. Systems that process at intervals with the master controller
2. Global data containers that do not fire

And I think they should be split up...


This moves 4 non firing, non init subsytems -> datasystem

## Why It's Good For The Game
Clarity in code

* fixes ammo_bench data system

* [no gbp] express console: Bluescreen on cart (#82844)

## About The Pull Request
Truly,
## Why It's Good For The Game
Bug fix before you even issue report it

* Adds Medieval Pirates (and small assault_pod change) (#82392)

## About The Pull Request

(short, slightly outdated video compilation of the pirates)
https://youtu.be/j9BNFzcUSjc

Adds the **MEDIEVAL WARMONGERS** pirate gang, these pirates are focused
on causing chaos directly on the station with the use of melee weaponry
and swarming tactics.
they are not very smart when it comes to using technology, so they crash
in the station in an attempt to dock.

the pirates spawn with the NOGUN trait as they have never used guns
before but have access to dashing and the unbreakable component(small
heal burst upon reaching crit).
Warlord spawns with a better version of hulk(isnt removed upon crit and
can still do stuff while critted) and gigantism mutation by default
because ~~Chad Maximus~~ the other pirates require someone to run to
when stuff like flashbangs, batons or lasers are present. The warlord
spawns with a boarding axe which is a better axe that is good at
destroying things and a meat hook. **there's a total of 5 pirates.**

the pirate shuttle has:
- thermite barrel and 3 large beakers
- single weak claymore
- 3 extra military spears
- 3 kite shields
- 3 heavy bolas
- 4 regular bolas
- a stack of wood
- 2 stacks of mourning poultice (15 uses each)
- one burn medkit

**shuttle was made by striders18, big thanks to him**

![image](https://github.com/tgstation/tgstation/assets/114047053/766d0b96-4487-47d3-b524-70d811ce4d73)


things added:

- the new pirate gang
- a gamberson jumpsuit
- crude armor (good melee and wound protection but lacks on the rest)
- warlord armor (extreme protection at the cost of slowdown)
- a shortsword(bootleg claymore with 30 block chance and goes on belt
instead of back)
- military spear (better at throwing, better wounding, deals blunt
wounds instead of sharp)
- axe with better damage and demolition mod for the warlord
- a var to specify the name of the landing zone destination for the
assaultpod
- an assault pod targeting device item for the medieval shuttle
- a thermite barrel
- kite shields
- new hulk variant that doesnt go away when crit and has tenacity
## Why It's Good For The Game
I always liked the chaotic nature of the russian bounty hunters that
would come from their extra numbers and lack of tools. i thought
something of a similar idea on pirates would be good, a very direct and
scary militia rushing in with sword and faith would create some awesome
scenarios

## Changelog
🆑
add: New heavy weight pirates, medieval warmongers
add: Adds military spear, shortsword, boarding axe, kite shields
add: Adds warlord and crude armor
add: Adds medieval shuttle (made by striders18)
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* fix for pirate suit

* Adds sorting options and a search bar to the crew monitor (#82732)

## About The Pull Request
This PR adds buttons in the crew monitor UI to sort by name, position,
or vitals, as well as a search bar for searching for specific people.
For vitals, people are sorted first by life status (living, crit, dead,
etc), then by damage. Also TS-ifies the UI.



https://github.com/tgstation/tgstation/assets/42454181/a7c0c262-8ea7-4e9f-8de6-6b9cf7481b23


## Why It's Good For The Game
Currently, finding a specific person, or a person in a specific place,
is a pain in the butt with the crew monitor. You have to go through an
unsorted list of people grouped only by department. Don't know the
person's job? Tough luck, you're going down the list one by one. It is
not at all a friendly user experience. With this PR, it becomes a
breeze, and makes the crew monitor much easier to use.
## Changelog
🆑
add: The crew monitor now has sorting options and a search bar.
/🆑

* Accessing Datasystem Manager from MC controller panel (#82848)

* [NO GBP] fixes issues with human rendering fixes (#82852)

## About The Pull Request
fixes #82838, forgot to add the attack_self there
fixes #82869
fixes the atmos hardhat not using flags_inv and transparent_protection
correctly (you could pull off someones glasses through it for example
makes modsuits use the new rendering stuff
fixes rendering stuff not working correctly with adjustable clothing
fixes quick equip dropping the item if you cant equip it

## Why It's Good For The Game
waow its awesome

## Changelog
🆑
fix: you can no longer take off someones glasses or mask through atmos
hardhat
fix: once you adjust a welding helmet or something it no longer makes
your cigarette or sunglasses invisible
fix: welding gas mask works once again
fix: quick equips dont drop the item if you cant equip it
/🆑

* fixes erp slots

* Redoes how appearance VV works because it scares me (#82851)

* [NO GBP] Critical fixes for cyborg omnitools (#82825)

## About The Pull Request
Fixes several critical fixes for cyborg omnitools, surgical omnitools in
peculiar. Which is:
1. bonesetter omnitool can do compound fracture surgery now
2. omnitool butchering not properly disabled works (why didn't that
runtime. fucking dreammaker)
3. omnitool surgery_initiator not properly disabled
4. cautery in offhand not working

Fixes #82805
Fixes #82868

Honestly I have now regretted for doing this kind of implementation at
the start. with how shoddily coded it is.
Planning to refactor cyborg omnitools, admin omnitool and ayys omnitool
(all have the same base of implementation) to be less snowflakey. but
that's for the future. and will take some time. This is a bandaid fix
for now
## Why It's Good For The Game
this is cbt
## Changelog
🆑
fix: fixed cyborg bonesetter not working for compound fractures
fix: butchering not disabling in cyborg omnitool
fix: fixes a bug where if you select the omnitool it would be stuck in
surgery initiator mode
fix: cautery in off hand for cyborg omnitools not working
/🆑

* fixes ai controllers hard deletes (#82861)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/138636438/47010ad2-64ef-40dd-94d3-b928e4216d1b)
i noticed almost all ai controllers were being hard deleted, its because
the controller itself was being addedto the behavior_cooldowns list
rather than the behavior itself

## Why It's Good For The Game
fixes hard deletes

## Changelog
🆑
/🆑

* [no gbp] actually fixes bot access (#82809)

## About The Pull Request
real fix to bots having AA. also i forgot to address simple bots in my
previous attempt so this fixes them too

## Why It's Good For The Game
fixes bots having AA 

## Changelog
🆑
fix: all bots have their normal accesses restored
/🆑

* [no gbp] Adds silicon interaction flags (#82822)

## About The Pull Request
A few items with special silicon interactions did not have the proper
flags to permit their use at distance (airlocks for instance)
## Why It's Good For The Game
Fixes #82800
## Changelog
🆑
fix: Restored silicon alt-clicking capability
/🆑

* Monkey eyes fix and noticable organ display refactor; AI monkeys no longer catatonic (#82669)

## About The Pull Request

It turns out monkeys being catatonic got broken 2 years ago in a PR that
was meant to fix something else; also, it turns out monkeys are supposed
to have primal eyes when turned into humans, and that got broken too. I
fixed both of those things, and while I was at it I did a refactor to
make it easier to give noticable organs (or anything else that you'd
want correct pronoun and verb tenses) easier to implement.

1) AI controlled mobs now properly display their noticable organs when
appropriate
2) Added some macros and a helper proc for replacing appropriate
pronouns and verb tenses in text
3) The noticable organ HTML is no longer broken, so you can pass text
with spans into it, if you want the text to be pretty or big or whatever
4) Monkeys are no longer catatonic if they have an active AI controller;
this goes for any carbon actually but I think monkeys are the only one
with AI controllers at the moment
## Why It's Good For The Game

Fixes the logic for displaying organs on AI controller mobs (currently
monkeys)
Makes it easier to add these kind of organs for carbons, AI controlled
or not, in the future

Look! An actual use-case for split editor:

![image](https://github.com/tgstation/tgstation/assets/49173900/8cd0d69e-8091-4431-9418-6bd29e1713b5)
## Changelog

Humanized monkeys now have their primal eyes again; monkeys with active
AI are no longer catatonic.
🆑 Bisar
fix: AI controlled monkeys are no longer catatonic, and they have primal
eyes again when turned into humans.
spellcheck: Noticable organs now have more modular grammar, and their
current grammar is fixed.
refactor: Refactored the code for displaying the messages for noticable
organs.
config: Added a documented define of all our pronouns
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* DNA Infusion Refactor: Separates DNA Infusion Behavior from DNA Infuser (#82829)

## About The Pull Request

- infuser entries global is now an assoc list type -> singleton. makes
it easier to pick specific entries as needed
- separated infusion behavior onto both movable level (for machine
occupants and things that can potentially be infused) and human level
(for the actual infusion into a human)

- [x] tested

## Why It's Good For The Game

Upcoming plans is to fix up maintenance sect's organ replacement system
that just so happens to work a lot like how infusions do with actual
infusion mechanics, and that requires this prerequisite. In general
outside of that vision I see a lot of potential in alternate infusion
sources, from wherever they may be.

## Changelog
no player side changes, this is a refactor

---------

Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: starrm4nn <139372157+starrm4nn@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Bm0n <92271472+Bm0n@users.noreply.github.com>
Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
Co-authored-by: Pink <sightld2@gmail.com>
Co-authored-by: Sadboysuss <96586172+Sadboysuss@users.noreply.github.com>
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Name <w4rd3nn@gmail.com>
Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: Singul0 <127663818+Singul0@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Iajret <8430839+Iajret@users.noreply.github.com>
Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
Co-authored-by: larentoun <31931237+larentoun@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: EricZilla <81941674+EricZilla@users.noreply.github.com>
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: uaioy <114047053+uaioy@users.noreply.github.com>
Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
Co-authored-by: Joshua Kidder <49173900+Metekillot@users.noreply.github.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
2024-04-29 21:15:33 +02:00
JeremiahandGitHub c1a775efe1 Implements data systems (#82816)
## About The Pull Request
Subsystems currently come in two different flavors:
1. Systems that process at intervals with the master controller
2. Global data containers that do not fire

And I think they should be split up...


This moves 4 non firing, non init subsytems -> datasystem

## Why It's Good For The Game
Clarity in code
2024-04-22 21:27:15 -06:00
42f6f57dc0 [MIRROR] Replaces even more deciseconds with SECONDS (#27205)
Replaces even more deciseconds with SECONDS

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Waterpig <wtryoutube@seznam.cz>
2024-04-16 12:58:35 +02:00
9723b4b317 Replaces even more deciseconds with SECONDS (#82438)
## About The Pull Request
Using these search regexes:

Ending in 0:
`addtimer\((.*),\s?(\d{1,3})0\b\)`
replacement:
`addtimer($1, $2 SECONDS)`

Two digit ending in odd:
`addtimer\((.*), (\d)([1-9])\)$`
replacement:
`addtimer($1, $2.$3 SECONDS)`

Single digit ending odd:
`addtimer\((.*), ([1-9])\)$`
replacement:
`addtimer($1, 0.$2 SECONDS)`

## Why It's Good For The Game
Code readability

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-04-06 15:18:49 -06:00
651e480576 [MIRROR] Temporary bees animate on death and no longer produce corpses (#26683)
* Temporary bees animate on death and no longer produce corpses (#81714)

## About The Pull Request

I requested this as a change on the Hive Head PR but Ghommie didn't
notice and merged it anyway so I had to do it myself instead of forcing
the underclass to do it for me 😔

![dreamseeker_d8pI4uCCqt](https://github.com/tgstation/tgstation/assets/7483112/bff1a2d7-98c7-49d2-854b-a16f709520ab)

Anyway now bees created by the "beesplosion" reaction and by the Hive
Head changeling power no longer produce corpses, and have a death
animation.

## Why It's Good For The Game

It looks better.
It was weird that the bees would create corpses if killed but not if
they expired.

## Changelog

🆑
image: adds a visual effect for hive head bees despawning
/🆑

* Temporary bees animate on death and no longer produce corpses

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-02-29 22:55:26 +01:00
JacquerelandGitHub f2ceb77a41 Temporary bees animate on death and no longer produce corpses (#81714)
## About The Pull Request

I requested this as a change on the Hive Head PR but Ghommie didn't
notice and merged it anyway so I had to do it myself instead of forcing
the underclass to do it for me 😔


![dreamseeker_d8pI4uCCqt](https://github.com/tgstation/tgstation/assets/7483112/bff1a2d7-98c7-49d2-854b-a16f709520ab)

Anyway now bees created by the "beesplosion" reaction and by the Hive
Head changeling power no longer produce corpses, and have a death
animation.

## Why It's Good For The Game

It looks better.
It was weird that the bees would create corpses if killed but not if
they expired.

## Changelog

🆑
image: adds a visual effect for hive head bees despawning
/🆑
2024-02-28 19:22:09 +01:00
9a3fb5c5c1 [MIRROR] FOV is Dead (Long Live FOV) [MDB IGNORE] (#25600)
* FOV is Dead (Long Live FOV)

* Update _megafauna.dm

* Update _vehicle.dm

* FOV Hotfix: Actually offsets gameplane render relays

* removes redundant visual_shadow

* removes GAME_PLANE_UPPER references

* Update mob_movement.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-23 17:47:07 +00:00
LemonInTheDarkandGitHub f03084c1ca FOV is Dead (Long Live FOV) (#80062)
## About The Pull Request

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

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

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

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

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

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


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


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

## Commits I Care About

[Implements something like fov, but without the planes as layers
hell](https://github.com/tgstation/tgstation/commit/a604c7b1c8d74cd27af4d806d85892c1f7e35ba8)

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

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

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

[Removes WALL_PLANE_UPPER by adding a WALL_PLANE overlay to material
walls (init cost comes
here)](https://github.com/tgstation/tgstation/commit/25489337392f708cb337fbf05a2329eacdfc5346)

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

[Moves SEETHROUGH_PLANE above
ABOVE_GAME_PLANE](https://github.com/tgstation/tgstation/commit/beec4c00e01d34a04fba7c2bb98a9b70d27ead82)

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

[Resprites FOV masks to be clean (and more
consistent)](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d)

[f02ad13](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d)

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

## Why It's Good For The Game

Walls are closing in

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

###### * It's technically possible if we start using render targets to
create 2 sets of sources but that's insane and we aren't doing it
2023-12-13 15:52:24 +01:00
5209631c68 [MIRROR] Adds wibbles to certain anomalous entities [MDB IGNORE] (#24851)
* Adds wibbles to certain anomalous entities (#79549)

## About The Pull Request

Adds wibble animation to portals, some anomalies, and bluespace rifts.

https://github.com/tgstation/tgstation/assets/51863163/9355dc53-590e-4558-82a3-15145829ce16

## Why It's Good For The Game

It looks kinda cool.
Helps cement these as anomalous, wacky things that don't necessarily fit
in our plane of existence.

## Changelog

🆑 Melbert
add: Anomalies, portals, and bluespace rifts will now wibble a bit.
/🆑

* Adds wibbles to certain anomalous entities

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-07 21:03:44 -05:00
MrMelbertandGitHub 73d108025f Adds wibbles to certain anomalous entities (#79549)
## About The Pull Request

Adds wibble animation to portals, some anomalies, and bluespace rifts.


https://github.com/tgstation/tgstation/assets/51863163/9355dc53-590e-4558-82a3-15145829ce16

## Why It's Good For The Game

It looks kinda cool.
Helps cement these as anomalous, wacky things that don't necessarily fit
in our plane of existence.

## Changelog

🆑 Melbert
add: Anomalies, portals, and bluespace rifts will now wibble a bit. 
/🆑
2023-11-07 17:41:42 -07:00
4b4119e4b6 [MIRROR] New Muzzle Flash + Temperature gun Baking beam change [MDB IGNORE] (#24557)
* New Muzzle Flash + Temperature gun Baking beam change

* Update _energy.dm

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-24 20:06:57 +00:00
DrTuxedoandGitHub 28559aa7fc New Muzzle Flash + Temperature gun Baking beam change (#79212)
## About The Pull Request
Now there are new muzzle flash sprites for the guns. There are 3 types:

**BALLISTICS**


https://github.com/tgstation/tgstation/assets/42353186/82d7b285-fcf0-4780-8479-143691641e0a

**BLUE**


https://github.com/tgstation/tgstation/assets/42353186/331c926d-8556-4715-ab61-9a4998dd93d2

**RED**


https://github.com/tgstation/tgstation/assets/42353186/c814646d-6d56-4426-bde7-b7a7a06caa39

Also, now temperature gun "BAKE" mode beams have different sprites from
the "FREEZE" beams:


https://github.com/tgstation/tgstation/assets/42353186/c78363ac-ad04-4534-9323-dc13ba017823
## Why It's Good For The Game

Muzzle flashes were one of the most oldest effect sprites in the base,
and are rather bad and bland looking.
This makes them more good-looking. Also gives variety, previously there
only been Ballistic and Energy one, and they weren't even different.

Temperature gun "BAKE" mode beam having a different colour will help
distinguish what the hell you're being shot with.
## Changelog
🆑
image: Muzzle flashes got a new sprite, each direction included!
image: Temperature Gun "BAKE" beams are now lava colored
/🆑
2023-10-24 13:05:34 -04:00
897b7faab2 [MIRROR] Adds a passive scan to the Active Sonar module [MDB IGNORE] (#24117)
* Adds a passive scan to the Active Sonar module (#78734)

## About The Pull Request
Adds a passive, radial scan to the Active Sonar module.
This will scan a 1/8th slice around the player for any creatures, and
place a much smaller marker over them for the player to see.
These small markers do not update their location when the scanned
creature moves, unlike the normal markers.
Activating the module initiates the normal full scan, which scans the
entire radius at once rather than just a slice. Doing so will put _both_
scans in cooldown.

https://github.com/tgstation/tgstation/assets/66052067/96226090-fa32-42d5-99f4-a8dbdc36cf98
## Why It's Good For The Game
Honestly I still felt the Active Sonar was a little weak even after I
tried to buff it a little.
I wanted to initially find a way to make the large scan effects smoothly
move with whoever you're following, but since I couldn't manage to
figure that out instead I went with a recommendation from ninjanomnom to
make a radial scan.
I think this is far more interesting either way
## Changelog
🆑 Wallem
add: Buffs the Active Sonar module with a radial scan, and makes the
power costs more in-line with other modules.
/🆑

* Adds a passive scan to the Active Sonar module

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-10-04 23:49:41 -04:00
WallemandGitHub f62015cf5c Adds a passive scan to the Active Sonar module (#78734)
## About The Pull Request
Adds a passive, radial scan to the Active Sonar module.
This will scan a 1/8th slice around the player for any creatures, and
place a much smaller marker over them for the player to see.
These small markers do not update their location when the scanned
creature moves, unlike the normal markers.
Activating the module initiates the normal full scan, which scans the
entire radius at once rather than just a slice. Doing so will put _both_
scans in cooldown.


https://github.com/tgstation/tgstation/assets/66052067/96226090-fa32-42d5-99f4-a8dbdc36cf98
## Why It's Good For The Game
Honestly I still felt the Active Sonar was a little weak even after I
tried to buff it a little.
I wanted to initially find a way to make the large scan effects smoothly
move with whoever you're following, but since I couldn't manage to
figure that out instead I went with a recommendation from ninjanomnom to
make a radial scan.
I think this is far more interesting either way
## Changelog
🆑 Wallem
add: Buffs the Active Sonar module with a radial scan, and makes the
power costs more in-line with other modules.
/🆑
2023-10-05 00:30:19 +00:00
55135555a0 [MIRROR] Nuclear Operative Jump Jets [MDB IGNORE] (#23659)
* Nuclear Operative Jump Jets (#78088)

## About The Pull Request

This PR gives operative MODsuits access to "jump jets".
This is an activated module (starts pinned) with a 30 second cooldown
which removes your personal gravity for 5 seconds and (if possible)
pushes you upwards by one z level. In combination with your regular
jetpack this allows you to fly over gaps, and (most importantly) out of
pits such as you may inadvertently find yourself wandering into on
Icebox.
I have a few other changes I want to make specifically targetted at the
experience of Icebox station destruction causing people to fall several
z levels and get trapped, but this is the first one.

You have to stand still for 1 second to activate the jump jet. This is
because jetpack movement without gravity is actually usually faster than
an operative will walk, and I don't want them to just toggle it as a
sprint button while running around. If people find other tactical uses
for this though I think that's cool.

This module currently isn't available to crew on the tech web, although
maybe someone could add it later if they wanted to. It's not quite so
useful if you don't _also_ have a jetpack though.
I bumped the available complexity of the suits I attached it to up by
the complexity cost of this module so it's not taking up previously
available space.

## Why It's Good For The Game

It's funny when the whole ops team falls in a hole after an explosion
they caused and gets stuck in there fighting Snow Legions but they
should probably have some method for dealing with that.
It also lets them pop back up from the tram hole, a risky proposition
because any flying mob hit by the tram dies almost instantly.

## Changelog

🆑
add: Operative MODsuits now have an attached "jump jet" which sends you
upwards and allows you to use your jetpack under gravity for a few
seconds, perfect for navigating the pits and valleys of Icebox Station.
/🆑

* Nuclear Operative Jump Jets

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-12 13:14:22 -07:00
JacquerelandGitHub 172f65989e Nuclear Operative Jump Jets (#78088)
## About The Pull Request

This PR gives operative MODsuits access to "jump jets".
This is an activated module (starts pinned) with a 30 second cooldown
which removes your personal gravity for 5 seconds and (if possible)
pushes you upwards by one z level. In combination with your regular
jetpack this allows you to fly over gaps, and (most importantly) out of
pits such as you may inadvertently find yourself wandering into on
Icebox.
I have a few other changes I want to make specifically targetted at the
experience of Icebox station destruction causing people to fall several
z levels and get trapped, but this is the first one.

You have to stand still for 1 second to activate the jump jet. This is
because jetpack movement without gravity is actually usually faster than
an operative will walk, and I don't want them to just toggle it as a
sprint button while running around. If people find other tactical uses
for this though I think that's cool.

This module currently isn't available to crew on the tech web, although
maybe someone could add it later if they wanted to. It's not quite so
useful if you don't _also_ have a jetpack though.
I bumped the available complexity of the suits I attached it to up by
the complexity cost of this module so it's not taking up previously
available space.

## Why It's Good For The Game

It's funny when the whole ops team falls in a hole after an explosion
they caused and gets stuck in there fighting Snow Legions but they
should probably have some method for dealing with that.
It also lets them pop back up from the tram hole, a risky proposition
because any flying mob hit by the tram dies almost instantly.

## Changelog

🆑
add: Operative MODsuits now have an attached "jump jet" which sends you
upwards and allows you to use your jetpack under gravity for a few
seconds, perfect for navigating the pits and valleys of Icebox Station.
/🆑
2023-09-12 18:54:58 +02:00
2c5c5fa46e [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>
2023-09-10 03:13:58 -07:00
JacquerelandGitHub ed10226825 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.
/🆑
2023-09-10 00:42:07 -04:00
a6d1a3a8ad [MIRROR] Fixes hitting RCD effects when they're done [MDB IGNORE] (#23311)
* Fixes hitting RCD effects when they're done (#77896)

## About The Pull Request

https://github.com/tgstation/tgstation/pull/77641 made it so that RCD
effects can be hit while they're constructing to stop their
construction. however, the construction effect itself lingers a bit
after things are done constructing, allowing it to eat up clicks. this
fixes it by removing the flag when it's done constructing.

## Why It's Good For The Game

fix good 👯 👯‍♂️ 👯‍♀️ 🎉 🏖️ 🐝

## Changelog

🆑
fix: You should no longer attack RCD effects when they're done
constructing.
/🆑

* Fixes hitting RCD effects when they're done

---------

Co-authored-by: iwishforducks <65363339+iwishforducks@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-08-24 22:19:41 -04:00
iwishforducksandGitHub bff941ded8 Fixes hitting RCD effects when they're done (#77896)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/77641 made it so that RCD
effects can be hit while they're constructing to stop their
construction. however, the construction effect itself lingers a bit
after things are done constructing, allowing it to eat up clicks. this
fixes it by removing the flag when it's done constructing.

## Why It's Good For The Game

fix good 👯 👯‍♂️ 👯‍♀️ 🎉 🏖️ 🐝 

## Changelog

🆑
fix: You should no longer attack RCD effects when they're done
constructing.
/🆑
2023-08-24 19:05:32 -06:00
2399e88e7b [MIRROR] Gives engineers the RCD round start and nerfs its base abilities to compensate [MDB IGNORE] (#23158)
* Gives engineers the RCD round start and nerfs its base abilities to compensate (#77641)

## About The Pull Request
- Gives engineers an RCD as part of their round start equipment
- RCD by default will build/deconstruct slower if you already have
another one in progress. This can be upgraded with the new cooling
upgrade disk. Reconstructing (anything that was there roundstart as per
the destructive scan) doesn't have this downside, only
construction/deconstruction.
- RCD construction effects can now be attacked in order to cancel them.
This can be deterred with the anti-disruption upgrade disk.
- RCDs for nukies and whatever don't have these downsides
- The CE's roundstart RCD also doesn't have these downsides

## Why It's Good For The Game
Construction and reconstruction are currently one of the worst aspects
of SS13--they are so slow and tedious that any sort of mass destruction
goes unfixed for 10-30+ minutes, if fixed at all. This limits us because
it means people don't want traitors to create large explosions, for
instance--I do and so I think it's crucial that we fix construction.

Reconstruction has already been improved on the RCD with the destructive
scans, but I see no reason to limit this to something so out of the way.

Ideally the RCD even gets more functionalities, like the ability to
print stock parts (or having stock parts removed), etc, in order to
lessen this burden.

## Changelog
🆑
add: Engineers now have an RCD round start.
balance: RCD construction/deconstruction effects can now be attacked in
order to cancel them. You can get the anti-disruption upgrade disk to
prevent this.
balance: RCD construction/deconstruction is now slower if you already
have another effect up. This does not effect reconstruction.
balance: Both of the above effects do not effect the CE's roundstart
RCD, nor any other RCDs such as combat RCDs.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Gives engineers the RCD round start and nerfs its base abilities to compensate

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-08-17 16:56:29 -04:00
766144a443 Gives engineers the RCD round start and nerfs its base abilities to compensate (#77641)
## About The Pull Request
- Gives engineers an RCD as part of their round start equipment
- RCD by default will build/deconstruct slower if you already have
another one in progress. This can be upgraded with the new cooling
upgrade disk. Reconstructing (anything that was there roundstart as per
the destructive scan) doesn't have this downside, only
construction/deconstruction.
- RCD construction effects can now be attacked in order to cancel them.
This can be deterred with the anti-disruption upgrade disk.
- RCDs for nukies and whatever don't have these downsides
- The CE's roundstart RCD also doesn't have these downsides

## Why It's Good For The Game
Construction and reconstruction are currently one of the worst aspects
of SS13--they are so slow and tedious that any sort of mass destruction
goes unfixed for 10-30+ minutes, if fixed at all. This limits us because
it means people don't want traitors to create large explosions, for
instance--I do and so I think it's crucial that we fix construction.

Reconstruction has already been improved on the RCD with the destructive
scans, but I see no reason to limit this to something so out of the way.

Ideally the RCD even gets more functionalities, like the ability to
print stock parts (or having stock parts removed), etc, in order to
lessen this burden.

## Changelog
🆑
add: Engineers now have an RCD round start.
balance: RCD construction/deconstruction effects can now be attacked in
order to cancel them. You can get the anti-disruption upgrade disk to
prevent this.
balance: RCD construction/deconstruction is now slower if you already
have another effect up. This does not effect reconstruction.
balance: Both of the above effects do not effect the CE's roundstart
RCD, nor any other RCDs such as combat RCDs.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-17 20:20:31 +02:00
35e28a5b4a [MIRROR] Goliath basic mob [MDB IGNORE] (#22412)
* Goliath basic mob (#76754)

## About The Pull Request

Converts Goliaths to the basic mob framework and gives them some new
moves because I can't leave things well enough alone.
I am planning on touching all the lavaland fauna and then maybe even the
icebox ones if I haven't got bored. The Golaith is the first because it
is iconic.

https://www.youtube.com/watch?v=JNcKvMwT4-Q
Here's me getting killed by one as a demonstration. Despite my poor
performance I would contend that they aren't a _lot_ more dangerous, but
they are a little more dangerous.

The chief difference here is that they have two new attacks which they
will only use in response to being attacked.
If fired at from range, they will target the attacker with a line of
tentacles (it doesn't track you, so is easily sidestepped).
If attacked in melee, they will surround _themselves_ with tentacles, on
a longer cooldown.

Something else you may notice in this video: I discovered that basic
mobs are actually _too smart_ to be Lavaland fauna.
Typically (unlike their old form) a mob on our new AI system is smart
enough to attack someone _the moment they come into range_ rather than
only checking on predictable ticks, which would make using the Crusher
an essentially unviable prospect.
To counteract this, Goliaths now have a delayed attack component which
gives you a visual warning and short duration to get out of range before
they swing at you. I will probably put this on all mining fauna that get
reworked, it wouldn't be a terrible thing to put on other mobs to be
honest.

Other changes: The goliath stun is now a status effect with _buckles_
you to the tentacle as if grabbed, as well as its previous effects.
While this seems purely worse, any nearby helpers can now help-click on
you to instantly remove the debuff.
Experiencing the effect of a Lobstrosity Rush Gland makes you immune to
being grabbed by tentacles and an implanted one will automatically
trigger and free you if you are hit, and the explosive effect of
Brimdust also causes the tentacle to retract (although you'd need to
take damage for this to happen). Using the tools of the land, you can
make these creatures less threatening.

The ability for a Goliath to chain-apply the ability has now also been
reduced, it won't refresh its duration if you are hit when already
buckled.

When not occupied hounding miners, Goliaths will intermittently dig up
the asteroid sand and eat any worms that this produces.
I also made some new sprites for riding a Goliath because they've been
broken since the Lavaland mob update and also kind of were ugly before
then anyway:

![image](https://github.com/tgstation/tgstation/assets/7483112/90580403-d82f-4c29-b3e1-6c462e01edda)

Other code changes:
- I made an element which only lets an attached object move every x
seconds. This is because Goliaths are far too slow to use the speed
system (the glide just looks bugged as hell) but one thing I am invested
in when converting these is to make sure that they share the same
behaviour when player or AI controlled. This is disabled while you're
riding them because it was interminably slow.
- The Goliath tentacle trail uses a supertype object now shared with the
Meteor Heart which did something kind of similar.

## Why It's Good For The Game

It begins the process of moving one of our larger subsets of NPCs onto
the newer framework for NPC behaviour.
It adds a little bit more life to an iconic but slightly uninteresting
foe which mostly just walked at you slowly.
This PR contains a few components I expect to apply more widely to other
mobs in the future.

## Changelog

🆑
refactor: Goliaths now use the Basic Mob framework, please report any
unusual behaviour.
add: Goliaths learned a couple of new attacks which they will use in
self-defence.
balance: Help-clicking a miner grabbed by Goliath tentacles will
immediately free them, as will the effect of several items you can
scavenge from around Lavaland.
image: New sprites for the Goliath saddle.
/🆑

* Goliath basic mob

* Update ash_rituals.dm

* fixes icon diff

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-14 03:10:50 +00:00
JacquerelandGitHub 16cecf864d Goliath basic mob (#76754)
## About The Pull Request

Converts Goliaths to the basic mob framework and gives them some new
moves because I can't leave things well enough alone.
I am planning on touching all the lavaland fauna and then maybe even the
icebox ones if I haven't got bored. The Golaith is the first because it
is iconic.

https://www.youtube.com/watch?v=JNcKvMwT4-Q
Here's me getting killed by one as a demonstration. Despite my poor
performance I would contend that they aren't a _lot_ more dangerous, but
they are a little more dangerous.

The chief difference here is that they have two new attacks which they
will only use in response to being attacked.
If fired at from range, they will target the attacker with a line of
tentacles (it doesn't track you, so is easily sidestepped).
If attacked in melee, they will surround _themselves_ with tentacles, on
a longer cooldown.

Something else you may notice in this video: I discovered that basic
mobs are actually _too smart_ to be Lavaland fauna.
Typically (unlike their old form) a mob on our new AI system is smart
enough to attack someone _the moment they come into range_ rather than
only checking on predictable ticks, which would make using the Crusher
an essentially unviable prospect.
To counteract this, Goliaths now have a delayed attack component which
gives you a visual warning and short duration to get out of range before
they swing at you. I will probably put this on all mining fauna that get
reworked, it wouldn't be a terrible thing to put on other mobs to be
honest.

Other changes: The goliath stun is now a status effect with _buckles_
you to the tentacle as if grabbed, as well as its previous effects.
While this seems purely worse, any nearby helpers can now help-click on
you to instantly remove the debuff.
Experiencing the effect of a Lobstrosity Rush Gland makes you immune to
being grabbed by tentacles and an implanted one will automatically
trigger and free you if you are hit, and the explosive effect of
Brimdust also causes the tentacle to retract (although you'd need to
take damage for this to happen). Using the tools of the land, you can
make these creatures less threatening.

The ability for a Goliath to chain-apply the ability has now also been
reduced, it won't refresh its duration if you are hit when already
buckled.

When not occupied hounding miners, Goliaths will intermittently dig up
the asteroid sand and eat any worms that this produces.
I also made some new sprites for riding a Goliath because they've been
broken since the Lavaland mob update and also kind of were ugly before
then anyway:

![image](https://github.com/tgstation/tgstation/assets/7483112/90580403-d82f-4c29-b3e1-6c462e01edda)

Other code changes:
- I made an element which only lets an attached object move every x
seconds. This is because Goliaths are far too slow to use the speed
system (the glide just looks bugged as hell) but one thing I am invested
in when converting these is to make sure that they share the same
behaviour when player or AI controlled. This is disabled while you're
riding them because it was interminably slow.
- The Goliath tentacle trail uses a supertype object now shared with the
Meteor Heart which did something kind of similar.

## Why It's Good For The Game

It begins the process of moving one of our larger subsets of NPCs onto
the newer framework for NPC behaviour.
It adds a little bit more life to an iconic but slightly uninteresting
foe which mostly just walked at you slowly.
This PR contains a few components I expect to apply more widely to other
mobs in the future.

## Changelog

🆑
refactor: Goliaths now use the Basic Mob framework, please report any
unusual behaviour.
add: Goliaths learned a couple of new attacks which they will use in
self-defence.
balance: Help-clicking a miner grabbed by Goliath tentacles will
immediately free them, as will the effect of several items you can
scavenge from around Lavaland.
image: New sprites for the Goliath saddle.
/🆑
2023-07-12 18:52:02 -06:00
f8ee9961d5 [MIRROR] Fixes some inconsistencies with the chaplain revolver and gets rid of a weird ammo define [MDB IGNORE] (#22108)
* Fixes some inconsistencies with the chaplain revolver and gets rid of a weird ammo define (#76237)

## About The Pull Request

Firstly, I gave the revolver a new sprite. I mean, this isn't so much of
an improvement as it is a reference I wanted to go with, so if people go
'no not a new sprite' I don't mind reverting.

What's the reference? Check the new name I added as a potential name
roll.

![lucky
38](https://github.com/tgstation/tgstation/assets/40847847/e11874be-1416-4e21-bda9-4881d49cad1b)

Secondly; I applied to the gun itself revenant bane, the ability to
clear runes, and proper magic immunity as a full null rod would enable.
This last bit was a deliberate design choice, but the divine bow has
full magic protection, so I think this is now more of a consistency
consideration compared to the divine bow.

Thirdly, the revolver is a .38 revolver, HOWEVER, it uses a damage
multiplier to bring it back to the damage it did originally. It also
cannot be reloaded without the prayer action. No cheating. Effectively,
this is the same mechanically as it was before.

It rarely does a funny crit fanfare. This does nothing mechanically, I
just thought it was a funny nod to the sprite's reference (and I guess
another game that the crit fanfare is based on). Borrowed parts of the
code and sprite from this April Fool's pr by Wallemations >
https://github.com/tgstation/tgstation/pull/74425

## Why It's Good For The Game

I think this might have been a little forgotten since implementation now
that we have another projectile weapon for the chaplain. So I'm brushing
it up a bit.

## Changelog
🆑
fix: Makes the chaplain's revolver consistent with its immediate
sibling, the Divine Bow, by giving it similar statistics.
code: Makes the chaplain revolver a .38 but prevents it from being
loaded without using the special prayer action. Also applies a damage
multiplier to keep it at the original 18 force. Mechanically, no
different.
sprite: Gives the chaplain revolver a new sprite.
code: Removes an unnecessary admin log when removing runes.
/🆑

* Fixes some inconsistencies with the chaplain revolver and gets rid of a weird ammo define

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-07-11 22:11:54 -04:00
necromanceranneandGitHub 8af20d1577 Fixes some inconsistencies with the chaplain revolver and gets rid of a weird ammo define (#76237)
## About The Pull Request

Firstly, I gave the revolver a new sprite. I mean, this isn't so much of
an improvement as it is a reference I wanted to go with, so if people go
'no not a new sprite' I don't mind reverting.

What's the reference? Check the new name I added as a potential name
roll.

![lucky
38](https://github.com/tgstation/tgstation/assets/40847847/e11874be-1416-4e21-bda9-4881d49cad1b)

Secondly; I applied to the gun itself revenant bane, the ability to
clear runes, and proper magic immunity as a full null rod would enable.
This last bit was a deliberate design choice, but the divine bow has
full magic protection, so I think this is now more of a consistency
consideration compared to the divine bow.

Thirdly, the revolver is a .38 revolver, HOWEVER, it uses a damage
multiplier to bring it back to the damage it did originally. It also
cannot be reloaded without the prayer action. No cheating. Effectively,
this is the same mechanically as it was before.

It rarely does a funny crit fanfare. This does nothing mechanically, I
just thought it was a funny nod to the sprite's reference (and I guess
another game that the crit fanfare is based on). Borrowed parts of the
code and sprite from this April Fool's pr by Wallemations >
https://github.com/tgstation/tgstation/pull/74425

## Why It's Good For The Game

I think this might have been a little forgotten since implementation now
that we have another projectile weapon for the chaplain. So I'm brushing
it up a bit.

## Changelog
🆑
fix: Makes the chaplain's revolver consistent with its immediate
sibling, the Divine Bow, by giving it similar statistics.
code: Makes the chaplain revolver a .38 but prevents it from being
loaded without using the special prayer action. Also applies a damage
multiplier to keep it at the original 18 force. Mechanically, no
different.
sprite: Gives the chaplain revolver a new sprite.
code: Removes an unnecessary admin log when removing runes.
/🆑
2023-06-27 20:57:02 -06:00
210e29ca14 [MIRROR] Optimizes timer insertion by 80% (W QDEL_IN micro) [MDB IGNORE] (#21986)
* Optimizes timer insertion by 80% (W QDEL_IN micro) (#76214)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

[Reduces timer insertion cost by
80%](https://github.com/tgstation/tgstation/commit/c9e5b285ed74e60108fddd3f6b45d6d3995c92a8)

Timer name generation involved a LOT of string shit, some in ways where
the string only existed for a moment.
This costs a good bit of time, and can be reduced with only minimal
impacts on the end product, so let's do that. Includes a compile flag to
flip it back if we ever have trouble in future.

This is about 0.1s off init, since we do a lot of timer stuff then too

[Removes STOPPABLE flag from QDEL_IN, moves it to a bespoke
macro](https://github.com/tgstation/tgstation/commit/e7a5d7f2a78fcf0dce4742ced258c9505411b202)

Its a waste most of the time, tho I would LOVE to analyze at compile
time to work out if we care
## Why It's Good For The Game

I like it when we don't spend all of our cpu time just setting the name
var on timers. that's good and not bad.
This saves time fucking everywhere. 15% off explosions, 0.1 seconds off
init, bunch of time off foam. it's just good.

Cherry picked out of #76104 since that was too cluttered (sannnnnn)

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

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

* Optimizes timer insertion by 80% (W QDEL_IN micro)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-06-23 16:15:40 -07:00
LemonInTheDarkandGitHub a8e16030f8 Optimizes timer insertion by 80% (W QDEL_IN micro) (#76214)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

[Reduces timer insertion cost by
80%](https://github.com/tgstation/tgstation/commit/c9e5b285ed74e60108fddd3f6b45d6d3995c92a8)

Timer name generation involved a LOT of string shit, some in ways where
the string only existed for a moment.
This costs a good bit of time, and can be reduced with only minimal
impacts on the end product, so let's do that. Includes a compile flag to
flip it back if we ever have trouble in future.

This is about 0.1s off init, since we do a lot of timer stuff then too

[Removes STOPPABLE flag from QDEL_IN, moves it to a bespoke
macro](https://github.com/tgstation/tgstation/commit/e7a5d7f2a78fcf0dce4742ced258c9505411b202)

Its a waste most of the time, tho I would LOVE to analyze at compile
time to work out if we care
## Why It's Good For The Game

I like it when we don't spend all of our cpu time just setting the name
var on timers. that's good and not bad.
This saves time fucking everywhere. 15% off explosions, 0.1 seconds off
init, bunch of time off foam. it's just good.

Cherry picked out of #76104 since that was too cluttered (sannnnnn)

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

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
2023-06-21 23:54:20 -06:00
637ac53109 [MIRROR] Now blocking is more noticeable! New blocking and parrying sounds [MDB IGNORE] (#21090)
* Now blocking is more noticeable! New blocking and parrying sounds

* Update code/game/objects/items/dualsaber.dm

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-05-15 18:07:25 +01:00
265632419b Mildly buffs Active Sonar module (#75174) (#21195)
Lowers the cooldown from 25 seconds to 15 seconds
Lowers the power drain from 25 to 20
Sonar visuals now move for the duration of their existence (see below)

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-05-15 17:06:48 +01:00
a4822c165b Now blocking is more noticeable! New blocking and parrying sounds (#74998)
## About The Pull Request
Now whenever an attack is blocked, the sound will play and deflection
with the item now plays sound too:


https://github.com/tgstation/tgstation/assets/42353186/1a0cc5b7-f2af-4d72-88d7-57cc11f5baa3

The parry.ogg was updated to a better-sounding one


https://github.com/tgstation/tgstation/assets/42353186/5ffc53d8-0b3c-4e6b-9256-b7b9735918bc

Every item now has a "block_sound" that can be set, it determines what
sound is played when you block an attack with it.
Cult items no longer have their own way of fuckery to play parry sounds,
now they use this system as well.

Now shield bash sound is 80% smaller after cutting out all of its noise
and silence.
## Why It's Good For The Game
Adds feedback on whether the attack was blocked or not, signalling both
to the attacker and defender that it didn't go through even if the
animation played, which is a great QoL. Same with the deflection sound
(although deflection is still pretty visible, the sound would not hurt)

New sounds add more flavour to the weapons, especially the energy sword,
giving it even more badassery.

Cutting down the noise from the shield bash sound has made it better to
listen and saved some kilobytes of information. And making every item
use the universal system for blocking sounds, removing cultist items'
own code for playing parrying sounds.
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
qol: Now blocking an attack will play a sound and display a spark
effect, giving back feedback
sound: parry.ogg was updated to a better-sounding version
sound: shieldbash.ogg no longer has noise and unnecessary silence
sound: New block_shield.ogg and block_blade.ogg for shields and energy
swords
code: Cultists items no longer have their own code for playing parrying
sounds
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-05-11 17:53:46 +00:00
WallemandGitHub ceff62c6a9 Mildly buffs Active Sonar module (#75174)
Lowers the cooldown from 25 seconds to 15 seconds
Lowers the power drain from 25 to 20
Sonar visuals now move for the duration of their existence (see below)
2023-05-08 13:46:53 -05:00
ffac8f0df0 [MIRROR] Fixes critical plane masters improperly not being readded in show_to [MDB IGNORE] (#19060)
Fixes critical plane masters improperly not being readded in show_to (#72604)

## About The Pull Request

[Adds support for pulling z offset context from an atom's
plane](https://github.com/tgstation/tgstation/commit/9f215c5316e5cfdbedf6a23ff97dfee0e523354b)

This is needed to fix paper bins, since the object we plane set there
isn't actually on a z level.
Useful elsewhere too!

[Fixes compiler errors that came from asserting that plane spokesmen had
a plane
var](https://github.com/tgstation/tgstation/commit/b830002443f2fbe230e9ff00236d7a46a9f2eec7)

[Ensures lighting backdrops ALWAYS exist for each lighting
plane.](https://github.com/tgstation/tgstation/commit/0e931169f7c5336333bc6f41353c82f603fc1170)

They can't float becuase we can see more then one plane at once yaknow?

[Fixes parallax going to shit if a mob moved zs without having a
client](https://github.com/tgstation/tgstation/commit/244b2b25baecfc644505a3ea1e348e0cb97a04e0)

Issue lies with how is_outside_bounds just blocked any plane readding
It's possible for a client to not be connected during z moves, so we
need to account for them rejoining in show_to, instead of just blocking
any of our edge cases.

Fixing this involved having parallax override blocks for show_plane and
anything with the right critical flags ensuring mobs have JUST the right
PMs and relays.
It's duped logic but I'm unsure of how else to handle it and frankly
this stuff is just kinda depressing.
Might refactor later

[show_to can be called twice successfully with no hide_from
call.](https://github.com/tgstation/tgstation/commit/092581a5c06f7f884f48d41c96fa9300327ef214)

Ensures no runtimes off the registers from this

## Why It's Good For The Game

Fixes #72543
Fixes lighting looking batshit on multiz. None reported this I cry into
the night.

## Changelog
🆑
fix: Fixes parallax showing up ABOVE the game if you moved z levels
while disconnected
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
2023-01-31 16:30:01 -05:00
51f02b5acc Fixes critical plane masters improperly not being readded in show_to (#72604)
## About The Pull Request

[Adds support for pulling z offset context from an atom's
plane](https://github.com/tgstation/tgstation/commit/9f215c5316e5cfdbedf6a23ff97dfee0e523354b)

This is needed to fix paper bins, since the object we plane set there
isn't actually on a z level.
Useful elsewhere too!

[Fixes compiler errors that came from asserting that plane spokesmen had
a plane
var](https://github.com/tgstation/tgstation/commit/b830002443f2fbe230e9ff00236d7a46a9f2eec7)

[Ensures lighting backdrops ALWAYS exist for each lighting
plane.](https://github.com/tgstation/tgstation/commit/0e931169f7c5336333bc6f41353c82f603fc1170)

They can't float becuase we can see more then one plane at once yaknow?

[Fixes parallax going to shit if a mob moved zs without having a
client](https://github.com/tgstation/tgstation/commit/244b2b25baecfc644505a3ea1e348e0cb97a04e0)

Issue lies with how is_outside_bounds just blocked any plane readding
It's possible for a client to not be connected during z moves, so we
need to account for them rejoining in show_to, instead of just blocking
any of our edge cases.

Fixing this involved having parallax override blocks for show_plane and
anything with the right critical flags ensuring mobs have JUST the right
PMs and relays.
It's duped logic but I'm unsure of how else to handle it and frankly
this stuff is just kinda depressing.
Might refactor later

[show_to can be called twice successfully with no hide_from
call.](https://github.com/tgstation/tgstation/commit/092581a5c06f7f884f48d41c96fa9300327ef214)

Ensures no runtimes off the registers from this

## Why It's Good For The Game

Fixes #72543
Fixes lighting looking batshit on multiz. None reported this I cry into
the night.

## Changelog
🆑
fix: Fixes parallax showing up ABOVE the game if you moved z levels
while disconnected
/🆑

---------

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2023-01-31 10:25:38 +00:00
5c6c91144c [MIRROR] Changes the missing food icon test to cover ALL /obj's [MDB IGNORE] (#18139)
* Changes the missing food icon test to cover ALL /obj's

* Update implant.dm

* Hopefully fixes all the failing integration tests!

* Fixes more missing icons

* Even more icon fixes

* Hopefully that was all of them

* Okay now SURELY that's all of them

* I'm tired of this shit man

* Hopefully that's all, for real this time!

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-12-28 19:30:05 -05:00
ae8ed395e1 Changes the missing food icon test to cover ALL /obj's (#71908)
Might as well cover everyyyyyyyyything. :)

Fixes https://github.com/tgstation/tgstation/issues/71953
Fixes https://github.com/tgstation/tgstation/issues/71983

🆑 ShizCalev
code: We now unit test all /obj's for missing icons. :)
/🆑


todo: Fix the fucked up icons.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-12-13 17:51:40 -08:00