Commit Graph

401 Commits

Author SHA1 Message Date
Cyprex
6bb27a496f Add our icon path to CI 2023-03-14 10:06:45 +01:00
Cyprex
e6bb4098c4 Revert "Merge upstream" 2023-03-11 18:51:44 +01:00
Cyprex
6ae63227df Merge pull request #48 from ShamanSliph/felinid-Fix
Felinid Skintone Bandaid Fix
2023-03-11 17:52:51 +01:00
Cyprex
c5573eb59f Merge remote-tracking branch 'skyrat/master' into upstream_merge3 2023-03-08 18:51:21 +01:00
JonaMaz
a4926abd34 Sprite Test now uses the Right parts 2023-03-05 11:20:31 -05:00
ShamanSliph
6772bd6b75 Merge branch 'master' into felinid-Fix 2023-03-04 23:32:18 -05:00
Paxilmaniac
3fb3c7add2 Gun code override unshittening part like, two by this point (#18957)
* this code is so fucking funny it makes me want to merge w/o looking

* safety component stuff

* safeties should be finished

* I loooove safety component

* I swear that's all for gun safety

* manufacturer component

* cant forget this

* this is so awful

* 1100 line long gun file

* ok it actually compiles now

* that should not be an addition of any sort

* these defines should not be used anymore

* why?? the fuck??? are there var edited fire modes on black mesa?????

* how did that even happen

* maybe ci will shut up now

* oh man so many guns are lacking autofire now

* probably fixes safety toggling

* that should reference the gun not the component

* that should probably return

* makes it replicate current behavior, defaults safeties to being ON

* and that is all i have to say about that

* its automagically
2023-03-04 19:53:15 +00:00
Cyprex
59b587131a Merge from upstream 2023-03-03 19:22:13 +01:00
SkyratBot
f5e63175ec [MIRROR] Fixes all antag datum moodlets being removed when any single antag datum is removed [MDB IGNORE] (#19237)
* Fixes all antag datum moodlets being removed when any single antag datum is removed (#73305)

## About The Pull Request

All antag datums operated under the `antag_moodlet` mood category, which
is clearly an issue when you can (and commonly) have multiple antag
datums of different types on your mob.

New antag datums of different type will now no longer override older
antag datum moodlets, now they will stack. This means traitor
revolutionaries are the most zealous folk on the station.

This has a few potential oversights down the line:
- Someone adds an antag datum players can have duplicates of, and also
has a moodlet associated
- Re-used moodlets in antag datums that can easily be stacked will be
noticed
- Most solo antags used `focused` right now, but none can stack outside
of admemes

But I don't think it's an issue for now.

## Why It's Good For The Game

Prevents a quick revolution from stripping you of your joy.

Fixes #67313

## Changelog

🆑 Melbert
fix: Revolutionary Heretics and Cultists Traitors no longer lose all of
their joy in life after being de-converted from their respective causes.
/🆑

* Fixes all antag datum moodlets being removed when any single antag datum is removed

* fix

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
2023-03-03 06:28:53 +00:00
Halcyon
524788d29f More skyrat specific GAGS color palette cleanups and facelifts. (#19587)
* custom winter coat

* beret poncho sneakers

* teshari and vox beret versions

* single pixel fuck up

* teshari poncho update

* forgor the obj

* Updates a bunch of Teshari fallback sprites

* That too, fuck

* screenshots
2023-03-02 22:05:38 -08:00
SkyratBot
3d629de231 [MIRROR] It Came From Outer Spess: Adds midround changelings, delivered by an absolutely disgusting changeling meteor [MDB IGNORE] (#19154)
* It Came From Outer Spess: Adds midround changelings, delivered by an absolutely disgusting changeling meteor

* Update dynamic_rulesets_midround.dm

---------

Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-03-02 21:03:08 -08:00
JimmyDrop
ec5604786f Hemophage, More like 💤 phage 2023-03-02 16:55:38 -05:00
SkyratBot
fce25b931a [MIRROR] Fixes an issue with nightmare revival, Unit tests some fully heal stuff [MDB IGNORE] (#19599)
* Fixes an issue with nightmare revival, Unit tests some fully heal stuff (#73612)

## About The Pull Request

- Same issue as Ethereals. Owner was `null`ed because the heart was
recreated. I opted for a more permanent solution, that being introducing
a new flag to avoid recreating organs.

- Adds some unit tests for fully heal stuff to make sure it works.

## Why It's Good For The Game

More cases of revival working as expected

## Changelog

🆑 Melbert
fix: Nightmare revival acts less funky - stops it from re-creating the
Light Eater.
/🆑

---------

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

* Fixes an issue with nightmare revival, Unit tests some fully heal stuff

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-03-01 01:15:12 -08:00
Tom
f6edbf0b86 [MANUAL MIRROR] Return to Tiny: Reworks heights to use filters, allows spacemen to have varying heights (#72344) (#19451)
* Return to Tiny: Reworks heights to use filters, allows spacemen to have varying heights (#72344)

Re-pr of #66644 with some changes to get it working

![image](https://user-images.githubusercontent.com/51863163/209893337-6a35207b-f097-4fd8-bc51-e66b3273919c.png)

- [x] ~~Huds get cut off~~ Resolved
- [x] ~~Very tall helmets get cut off~~ Resolved
- [x] Hair gets cut off
- [x] ~~Needs optimization before releasing to the world as a pref~~ jk
lol

Look at that fella so cute

🆑 Melbert, That REALLY Good Soda Flavor, FatFat, AndreyGusev
add: Spacemen can now have varying height. (Admin only for now)
add: Dwarfs are now slightly shorter, but look way better.
/🆑

Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>

* fix conflict

* clarity

* update rouny

* update screenshots

* Revert "update screenshots"

This reverts commit a5427a5238e574869fe364568b7f043bbd287c79.

* Fixes the dwarf screenshot.

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-02-28 16:27:27 -05:00
SkyratBot
20c684b7b0 [MIRROR] Adds a unit test to detect double stacked lights [MDB IGNORE] (#19564)
* Adds a unit test to detect double stacked lights

* we really need to get that night vision pr done

* lints fixes

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
2023-02-27 00:48:21 -05:00
GoldenAlpharex
3096e0f8f0 Fixes the paradox clone screenshot test (#19518) 2023-02-25 00:49:24 +00:00
Shroopy
e26ef72625 [MANUAL MIRROR] [NEW GHOST ANTAG] The Paradox Clone (#71141) (#19481)
[NEW GHOST ANTAG] The Paradox Clone (#71141)

![image](https://user-images.githubusercontent.com/114319683/200192566-e596ab83-8180-4f4c-a799-6e68e435fd43.png)

[DESIGN DOC]
https://hackmd.io/@tGKknGe5Q7qtddEspif79g/BJ3w9QLri/edit

Bluespace technology has destabilized the very fabric of reality, even
time itself!

Sometimes during a shift, it's possible for a PARADOX CLONE to spawn
somewhere on the station (usually maintenance). This paradox clone has
the exact appearance and DNA as a random crew member on the station,
wearing the same clothes they were at the start of the shift, including
their ID.

To maintain timeline coherency, the paradox clone must now hunt down and
kill the original and take their place or die trying, if the original
survives they have failed.

The only thing the paradox clone spawns with is a mechanical toolbox
that helps them from being stuck in maints if their ID doesn't have
maints access.

The inclusion of this antag encourages good crew coordination and adds a
less destructive, more personalized antag to the roster.

This antag rewards good detective work, as both the clone and the
original are identical in every way, and will therefore require a
detective to break out their detective skills to figure out who the
clone is.

Also a possible tie-in with the Chrono Legionnaires in the future.

🆑
add: Time and space has destabilized even further due to Nanotrasen
bluespace research, now, on occasion, clones from different timelines
can appear on the station and hunt you down to maintain timeline
stability! Beware the Paradox Clone!
/🆑

---------

Co-authored-by: 1bw0kopy <xz2rbf23@protonmail.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: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
(cherry picked from commit 214174874c)

Co-authored-by: Shadyyy66 <114319683+Shadyyy66@users.noreply.github.com>
2023-02-21 16:04:35 -08:00
JonaMaz
141bbc4513 New screenshot for the Unit Test 2023-02-20 16:02:48 -05:00
SkyratBot
db625af910 [MIRROR] Optimize cardboard cutouts saving 1.5s+ on init times [MDB IGNORE] (#19435)
* Optimize cardboard cutouts saving 1.5s+ on init times (#73404)

New regression in init times. Closes
https://github.com/tgstation/dev-cycles-initiative/issues/32. CC @ Fikou

- Instead of creating a human and icon for *every* cardboard cutout when
initialized, only creates the one we're actually using. When you're
about to use a crayon, creates all of them.
- Instead of using getFlatIcon, uses appearances directly.

* Optimize cardboard cutouts saving 1.5s+ on init times

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-02-19 22:52:00 +00:00
SkyratBot
aa8d114bff [MIRROR] Wraps all instances of invoking Fail() into the TEST_FAIL Macro [MDB IGNORE] (#19384)
* Wraps all instances of invoking Fail() into the TEST_FAIL Macro (#73407)

We shouldn't really be invoking the proc itself because then we don't
pass along the failing line/file to our consumers, let's use the macro
in all instances that really need it.

I noticed people were invoking the `Fail()` proc directly rather than
using `TEST_FAIL` instead, so they weren't getting those neat
annotations on their failing code because we never passed along the
failing line/file to actually apply those annotations. That's silly. We
don't even return on `TEST_FAIL` either, so there's no reason to not do
this (only upsides wahoo).

* Wraps all instances of invoking Fail() into the TEST_FAIL Macro

* Correct macro in opfor unit test

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2023-02-16 19:41:29 -05:00
SkyratBot
e70d3fd63c [MIRROR] Fixes changing species causing you to drop held items, Fixes loss of right arm not applying typical "lost arm" effects [MDB IGNORE] (#19323)
* Fixes changing species causing you to drop held items, Fixes loss of right arm not applying typical "lost arm" effects (#73356)

## About The Pull Request

`drop_limb(special = TRUE)` will now no longer drop held items. This can
cause issues if people are misusing `special`, but if people are not
then it's fine, as it's supposed to be replaced just after.

Also cut out some copy-pasta from arm and leg `drop_limb`. Since they're
one unified type, they no longer needed to carry across both. This fixed
another bug

Also also, I was able to move the held index check out of core bodypart
code, and down to arm level. This MAY have side effects, which I'm
observing for.

## Why It's Good For The Game

Changing species let you drop no-drop items, super lame

## Changelog

🆑 Melbert
fix: Changing species no longer drops all held items
fix: Losing your right hand not un-cuffing you or dropping your gloves
/🆑

* Fixes changing species causing you to drop held items, Fixes loss of right arm not applying typical "lost arm" effects

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-02-13 13:54:14 -08:00
SkyratBot
19608fbac6 [MIRROR] Barsign UI/UX Improvements - Emissive effects, balloon alerts, and refactored code [MDB IGNORE] (#19121)
* Barsign UI/UX Improvements - Emissive effects, balloon alerts, and refactored code (#73106)

The barsign code is over a decade old so this is a big refactor with
some notable improvements:

- Emissive effects (neon lights now glow in the dark)
- Balloon alerts instead of `to_chat` messages
- Mapping helpers based on direction and all_access
- Barsigns are considered machinery now and use power

* Barsign UI/UX Improvements - Emissive effects, balloon alerts, and refactored code

* fixes modular maps

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
2023-02-13 12:59:01 -05:00
SkyratBot
dfbaf63d71 [MIRROR] Fix underlying armor logic and fix bug with constructed ripleys having zero armor [MDB IGNORE] (#19310)
* Fix underlying armor logic and fix bug with constructed ripleys having zero armor (#73319)

## About The Pull Request

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

Messed up one of the armor procs; it changed the given values but never
carried over existing values.
So you would end up with an armor of that one specific value and nothing
else.

This wasn't actually used anywhere other than mecha, lava burning, and
sentient viruses, so the issue isn't that bad.
It's still an issue however.
## Changelog
🆑
fix: Mechs no longer have zero armor when built.
/🆑

* Fix underlying armor logic and fix bug with constructed ripleys having zero armor

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-02-12 22:17:07 -08:00
nevimer
3bddc6c821 Missed Mirror: Remove NTNet from doors (saves 0.2s of init) -- Fixes windoors not wo (#18976)
* Remove NTNet from doors (saves 0.2s of init) -- Fixes windoors not working with remotes, and balloons them (#71735)

## About The Pull Request
Removes NTNet from doors. NTNet as a whole is getting excised, but this
was an enormous cost to initialize. Was only used for door remotes, so
just changes them to act on the door directly.

Windoors were supposed to be controllable, but were broken at some point
to always display an error message in chat.

Closes https://github.com/tgstation/dev-cycles-initiative/issues/3

## Changelog

🆑
fix: Door remotes now open windoors again.
qol: Door remotes now use balloon alerts for failures.
/🆑

(cherry picked from commit db2566f44d)

# Conflicts:
#	code/game/machinery/doors/airlock.dm

* Update airlock.dm

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-02-11 23:39:17 -08:00
SkyratBot
8b6170583a [MIRROR] Fixes new regal rat sprite & removes duplicate file [MDB IGNORE] (#19266)
* Fixes new regal rat sprite & removes duplicate file (#73306)

Removes a duplicate file which was preventing the new regal rat sprite from being used.

* Fixes new regal rat sprite & removes duplicate file

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-02-11 00:06:46 -08:00
Tastyfish
9230082c4f [NON-MODULAR] Fix vox with normal legs shoes, fix edge case birb/snout clothing rendering (#18914)
* Fix vox with normal legs shoes, fix edge case birb/snout clothing rendering

* Code owners

* Restores screenshots from before regression
2023-02-08 02:42:54 +00:00
lessthanthree
12d989be4c [MANUAL MIRROR] Adds an Escape Menu (#19217)
* Adds an Escape Menu (#72906)

* suicide

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-02-08 02:20:09 +00:00
Paxilmaniac
3bf1881cc3 Gives assault ops a proper antag prefs icon, one that isn't just the goldeneye disk (#19161)
* this is gonna look so cool

* oops

* ok that didnt quite work

* maybe we can keep the disk in the preview

* oh right dont give the previews ids

* yeah it really hates belt modsuits doesnt it

* updates the screenshot test
2023-02-08 02:14:15 +00:00
SkyratBot
1fe0d145a3 [MIRROR] Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind [MDB IGNORE] (#18760)
* Converts blindness and nearsightedness to status effects, scratches some VERY dumb blindness handling that resulted in mobs becoming "incurably" blind

* Fixes the conflicts and makes shit compile!

* Fixes other things that didn't show up because I hadn't updated

* Fixes the lints.

* Okay NOW it's ready (please don't add anything else that touches blindness I beg you)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-02-03 16:08:32 -05:00
SkyratBot
0586d4c294 [MIRROR] [NO GBP] Lazy Template Cordoning | Double Runtime Fix [MDB IGNORE] (#19042)
[NO GBP] Lazy Template Cordoning | Double Runtime Fix (#72709)

## About The Pull Request

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

## Why It's Good For The Game

## Changelog

---------

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-02-02 16:11:52 +00:00
SkyratBot
3cbd4752fd [MIRROR] Stack traces when a cliented or ckeyed mob is Destroy()ed. [MDB IGNORE] (#19031)
Stack traces when a cliented or ckeyed mob is Destroy()ed. (#72797)

## About The Pull Request

One thing that repeatedly pops up in admin channels is investigating
causes of death when a player just vanishes from the game. These are
almost universally qdeletion issues.

9 years ago `/mob/Destroy()` was commented with:
`//This makes sure that mobs with clients/keys are not just deleted from
the game.`

Whatever code may have existed back then has long since been replaced.

**I consider that Destroy()ing a cliented or ckeyed mob is a runtime
error case.**

Code which may result in deleting a mob should handle removing and/or
reassigning any client or ckey - or call generic procs that do so -
prior to destruction. This should ideally result in a clear log trail
that allows admins to see what happened. Where this isn't the case, a
stack trace will now be available to help narrow down the cause of
qdeletion so an issue report can be made, and so admins have SOME info
to investigate on.

An example of where this would help catch bugs is #72782 - It was
clearly unintended behaviour to qdel the mob in the first place and this
stack trace would have immediately highlighted exactly where the death
came from.
```
[2023-01-18 12:44:40.415] runtime error: Mob with client has been deleted. (code/modules/mob/mob.dm:29)
 - proc name:  stack trace (/proc/_stack_trace)
 -   source file: stack_trace.dm,4
 -   usr: Julia Watson (/mob/living/carbon/human)
 -   src: null
 -   usr.loc: the floor (111,143,2) (/turf/open/floor/iron)
 -   call stack:
 -  stack trace("Mob with client has been delet...", "code/modules/mob/mob.dm", 29)
 - Julia Watson (/mob/living/carbon/human): Destroy(0)
 - Julia Watson (/mob/living/carbon/human): Destroy(0)
 - Julia Watson (/mob/living/carbon/human): Destroy(0)
 - Julia Watson (/mob/living/carbon/human): Destroy(0)
 - qdel(Julia Watson (/mob/living/carbon/human), 0)
 - the mouse (/mob/living/basic/mouse): try consume cheese(Julia Watson (/mob/living/carbon/human))
 - the mouse (/mob/living/basic/mouse): tamed(the mouse (/mob/living/basic/mouse), Julia Watson (/mob/living/carbon/human))
 - /datum/callback (/datum/callback): Invoke(the mouse (/mob/living/basic/mouse), Julia Watson (/mob/living/carbon/human))
 - /datum/component/tameable (/datum/component/tameable): on tame(the mouse (/mob/living/basic/mouse), Julia Watson (/mob/living/carbon/human))
 - the mouse (/mob/living/basic/mouse):  SendSignal("simplemob_sentiencepotion", /list (/list))
 - the intelligence potion (/obj/item/slimepotion/slime/sentience): attack(the mouse (/mob/living/basic/mouse), Julia Watson (/mob/living/carbon/human), "icon-x=16;icon-y=7;left=1;butt...")
 - the mouse (/mob/living/basic/mouse): attackby(the intelligence potion (/obj/item/slimepotion/slime/sentience), Julia Watson (/mob/living/carbon/human), "icon-x=16;icon-y=7;left=1;butt...")
 - the intelligence potion (/obj/item/slimepotion/slime/sentience): melee attack chain(Julia Watson (/mob/living/carbon/human), the mouse (/mob/living/basic/mouse), "icon-x=16;icon-y=7;left=1;butt...")
 - Julia Watson (/mob/living/carbon/human): ClickOn(the mouse (/mob/living/basic/mouse), "icon-x=16;icon-y=7;left=1;butt...")
 - the mouse (/mob/living/basic/mouse): Click(the floor (112,143,2) (/turf/open/floor/iron), "mapwindow.map", "icon-x=16;icon-y=7;left=1;butt...")
 - 
```
See also #67300.

An example of where this would help identify causes of death where
previously there were none - Scenarios that were fixed by #62949 and
#66104 caused administrative headaches figuring out causes of death when
players in exploding crates just got literally fucking qdeleted. Which
was pretty trivial for players to do to other players.

Issue reports can be made and bugs can be fixed as we go along.

There are examples of quote "false positives" unquote.

Right click -> Delete, which can be used on any atom.
```
[2023-01-18 11:40:54.597] runtime error: Mob without client but with associated ckey has been deleted. (code/modules/mob/mob.dm:32)
 - proc name:  stack trace (/proc/_stack_trace)
 -   source file: stack_trace.dm,4
 -   usr: Norah Rader (/mob/dead/observer)
 -   src: null
 -   usr.loc: the floor (109,143,2) (/turf/open/floor/iron)
 -   call stack:
 -  stack trace("Mob without client but with as...", "code/modules/mob/mob.dm", 32)
 - Fulton Enderly (/mob/dead/observer): Destroy(0)
 - Fulton Enderly (/mob/dead/observer): Destroy(0)
 - qdel(Fulton Enderly (/mob/dead/observer), 0)
 - Timberpoes (/client): admin delete(Fulton Enderly (/mob/dead/observer))
 - Timberpoes (/client): Delete(Fulton Enderly (/mob/dead/observer))
```
 
Admin gibself
```
[2023-01-18 11:41:17.635] runtime error: Mob with client has been deleted. (code/modules/mob/mob.dm:29)
 - proc name:  stack trace (/proc/_stack_trace)
 -   source file: stack_trace.dm,4
 -   usr: Norah Rader (/mob/living/carbon/human)
 -   src: null
 -   usr.loc: the floor (109,145,2) (/turf/open/floor/iron)
 -   call stack:
 -  stack trace("Mob with client has been delet...", "code/modules/mob/mob.dm", 29)
 - Norah Rader (/mob/living/carbon/human): Destroy(0)
 - Norah Rader (/mob/living/carbon/human): Destroy(0)
 - Norah Rader (/mob/living/carbon/human): Destroy(0)
 - Norah Rader (/mob/living/carbon/human): Destroy(0)
 - qdel(Norah Rader (/mob/living/carbon/human), 0)
 - Norah Rader (/mob/living/carbon/human): gib(1, 1, 1, 0)
 - Norah Rader (/mob/living/carbon/human): gib(1, 1, 1, 0)
 - Timberpoes (/client): Gibself()
```

Over time these stack traces can be checked for how well the true cause
of death is logged, and whether there is a better procedure for deleting
cliented/ckeyed mobs than just qdel(target).
## Why It's Good For The Game

qdeletion of cliented or ckeyed mobs is death and often lacks any
specific logging.

This obfuscates bugs and hinders admin investigation.

stack_tracing highlights where this happens, revealing the previously
obfuscated bugs more clearly. It also provides relevant information on a
cause of death that can allow admin investigation to take place despite
the absence of logging.
## Changelog
🆑
admin: When a player-owned mob is deleted from the game world, a stack
trace is now dropped in the runtime logs. This allows admins and coders
to investigate these issues easier.
/🆑

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2023-01-31 02:16:52 +00:00
SkyratBot
64f94d0f14 [MIRROR] Updates Mob_Spawn Unit Test To Use NAMEOF [MDB IGNORE] (#19035)
Updates Mob_Spawn Unit Test To Use NAMEOF (#73035)

## About The Pull Request

One of the key functions of this test is to iterate vars to see if it is
null or not, and then error if something is defined where it should not
be. Just to futureproof this test in case someone changes the name of a
variable on the mob spawner (e.g. haircolor to hair_color), we still
want this unit test to work!

So, let's switch it all over to NAMEOF to ensure that all of our stuff
still works the way we want it: safe-guarded against trivial changes
(it'll throw a compile error if one of these vars are changed, which is
good because it compels the coder to fix it).

I also re-arranged the unit test since we didn't need to have those
bulky lists in the middle of the actual checking code, and it should
work a-okay.
## Why It's Good For The Game

Someone in the future will sob a few tears if this unit test breaks and
remains broken throwing runtimes and bricking tgui or whatever because
it's very easy to just have this unit test not be useful in a very
"simple code improvement"
## Changelog
Nothing that concerns players.

Co-authored-by: san7890 <the@san7890.com>
2023-01-31 02:09:13 +00:00
Funce
60bfb76832 [MIRROR] Dynamic Human Icon Generation For Simple/Basic Mobs (& Cardboard Cutouts) [MDB IGNORE] (#18884)
* Dynamic Human Icon Generation For Simple/Basic Mobs (& Cardboard Cutouts) (#72517)

revive of #68760
this time a proc, not an element
this time supports cardboard cutouts
this time supports mob corpses

![image](https://user-images.githubusercontent.com/23585223/211064291-81070650-189f-4afa-8116-81b687e3ea35.png)

prevents these icons ever being outdated, they'll always look what they
are supposed to, saves spriting work

🆑 Fikou, a hood by Viro
refactor: humanoid mobs and cardboard cutouts automatically generate
their sprites, they no longer will be outdated
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>

* Modular!

* Fix signal override merge skew (#72882)

Caused by https://github.com/tgstation/tgstation/pull/72517, with
https://github.com/tgstation/tgstation/pull/72561 raising an error that
was being hidden before

This changes equip logic somewhat so that set_wearer was being called
twice.

I don't think this should be being run in visualsOnly at all, as it does
a ton of stuff like registering signals, updating UI, etc etc etc. Don't
have time to investigate further.

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-01-27 13:56:00 -05:00
RatFromTheJungle
bf95cd0d0a [awh hell naw] the first step of the great cargo renamen-ing (#18670)
* Update alt_job_titles.dm

* Create cargo_technician.dm

* Create quartermaster.dm

* Update tgstation.dme

* Update wardrobes.dm

* Update loadout_datum_heads.dm

* Create clothing_overrides

* Update tgstation.dme

* despite claims to the contrary, I did not forget to put a .dm when transplanting this from where it was before

* so be it

* does the entire list like that

* why didn't this fail on local

* Update alt_job_titles.dm

* Delete screenshot_antag_icons_bloodbrother.png

* Add files via upload

* Update modular_skyrat/modules/alternative_job_titles/code/alt_job_titles.dm

Co-authored-by: Dragonfruits <51841793+Spc-Dragonfruits@users.noreply.github.com>

* pressed tab 68x, also, removes or edits two redundant comments

* Update cargo_technician.dm

* Update quartermaster.dm

* Update alt_job_titles.dm

* oop

* vile wretched ghoul released a plague upon this wo

rld and then the evil when the when he

Co-authored-by: Dragonfruits <51841793+Spc-Dragonfruits@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-24 14:28:54 -08:00
SkyratBot
8594566b4b [MIRROR] Ensures the unit test zone is fully lit [MDB IGNORE] (#18931)
Ensures the unit test zone is fully lit (#72879)

## About The Pull Request

This is required for view() checks to work as we expect, and is the
typical state of the game

The only reason things like the strippable test functioned is because we
had tests that were improperly New()ing turfs instead of using
changeturf

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-01-24 07:20:12 -05:00
GoldenAlpharex
86dc0cdf65 [MIRROR] Water will now make you wet (#72844) (#18888)
Water will now make you wet (#72844)

Water, when exposed to a mob either via `TOUCH` or `VAPOR` application,
will now apply wet stacks to said mob according to the amount of water
used. For touch application, the ratio is 0.5 wet stack per unit of
water, whereas for vapor application (so for foam and sprays), that
ratio is lowered to 0.1 wet stack per unit of water. Yes, that would
mean that you could now put someone out by spraying enough water at them
with a spray bottle (usually around 50-150u), and I think that is quite
simply hilarious.

I also updated the unit test of water's `expose_mob()` proc, to check
that wet stacks were being applied properly, hopefully making sure that
there's no regression on that part in the future.
2023-01-22 16:20:02 -08:00
Tastyfish
0611a0e895 [SEMI-MODULAR] Fixes some previews (#18618)
* Fixes some previews

* Screenshots
2023-01-22 16:00:41 +00:00
SkyratBot
c5ca08fd01 [MIRROR] Adds spaces around logical operators [MDB IGNORE] (#18776)
* Adds spaces around logical operators

* Update code/modules/admin/verbs/admingame.dm

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2023-01-21 22:16:43 -08:00
SkyratBot
6a40d17bb5 [MIRROR] Fixes and buffs Metal Hydrogen golems [MDB IGNORE] (#18659)
* Fixes and buffs Metal Hydrogen golems (#72482)

## About The Pull Request

Metal Hydrogen golems as of now are quite literally not even immune to
_space_ and _the cold_, despite their description insinuating the exact
opposite and their manner of creation being more time-intensive than any
other golem. This PR fixes that, putting them on-par with all other
golems in regards to temperature and space immunity, whilst also
_hugely_ buffing them so they're not simply an antimagic version of
adamantine golems - instead, they're now most metal golems rolled into
one power-wise, with the armor of diamond golems as is befitting.

Also, I fixed their colors and wording (metal hydrogen isn't a
_mineral_, it doesn't naturally occur)

## Why It's Good For The Game

Creating metal hydrogen golems is not wholly difficult if you understand
atmospherics and practice safety in doing so, but compared to all other
golems they are _woefully_ underpowered and nigh-useless in most
practical applications. Adamantine golems are better in effectively
every way, and they're the standard for easily-created golems. Properly
fixing them and buffing them to ensure they're worth making is an
effective way to make metal hydrogen a more worthy endeavor for
atmospherics, and also metal hydrogen is simply cool.

## Changelog

🆑
fix: metal hydrogen golems no longer die to low pressures and cold
temperatures
fix: metal hydrogen golems are no longer solid white, and are now the
actual color of metal hydrogen
balance: metal hydrogen golems are also now immune to most environmental
threats, and get more armor
/🆑

Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>

* Fixes and buffs Metal Hydrogen golems

Co-authored-by: dawsonkeyes <76002401+dawsonkeyes@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-01-21 16:39:52 -05:00
SkyratBot
78cc603187 [MIRROR] Fixes strange geyser and geyser regen [MDB IGNORE] (#18808)
Fixes strange geyser and geyser regen (#72221)

Called the random reagent code after it was initialized
Registered the reagent del/remove signal on the geyser, not the reagent
datum of the geyser

Closes #72037 

🆑
fix: Strange geysers have random reagents again
fix: Geysers regen reagents again
/🆑

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2023-01-19 15:27:26 -05:00
SkyratBot
2785d37cf0 [MIRROR] Cutting the Burdened Cheese Part 1: Removes free burden points from removing unnecessary or cosmetic organs. [MDB IGNORE] (#18493)
* Cutting the Burdened Cheese Part 1: Removes free burden points from removing unnecessary or cosmetic organs. (#71938)

Burdened organs now only count for the main organs only. Cyberimplants
don't count, alien organs don't count, etc. This is because someone
could get a bunch of extra organs, and then take the burdened sect and
remove them for free burden points.

Useless organs for species also do not count (stomachs given to species
that do not hunger, for instance)

Removes the error on burden points clamping on negative values. This can
happen when someone previously disabled takes burden sect.

Cheese is being used to bypass the unique gameplay goals burdened sect
provides. Will throw another pr when fikou finishes bat mutants ;)

🆑
fix: Removed some cheese strategies from burdened sect.
/🆑

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

* Modular!

* Aaaaaa

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2023-01-17 14:06:18 +13:00
SkyratBot
4b3371f1c9 [MIRROR] Removes cargo culting from human mob icon update [MDB IGNORE] (#18671)
* Removes cargo culting from human mob icon update

* Fixes dem conflicts yo

* Updates the screenshots

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-01-16 17:50:37 -05:00
SkyratBot
090174da7a [MIRROR] Biogen shows default reagent container icons instead of beakers [MDB IGNORE] (#18503)
* Biogen shows default reagent container icons instead of beakers (#72247)

## About The Pull Request

With the new crafting menu some reagents now have default container
assigned.
I applied these to visualize reagents in biogen UI too.

<img alt="060ybChTkI"
src="https://user-images.githubusercontent.com/3625094/209483256-e4159a05-46ae-47b8-bc42-9d003cf6c303.png">

## Why It's Good For The Game

Better representation of a reagent.

## Changelog

🆑
qol: Biogenerator shows default reagent containers instead of beakers
/🆑

* Biogen shows default reagent container icons instead of beakers

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2023-01-13 16:18:14 -08:00
Tastyfish
c44843b738 [MANUAL MIRROR] Abstract away stuff that acts on baseturfs directly into their own procs, and kills some dead code related to baseturfs + tests (#72117) (#18655)
Abstract away stuff that acts on baseturfs directly into their own procs, and kills some dead code related to baseturfs + tests (#72117)

Adds some new procs relating to baseturfs that replaces some code that
reads and sets them directly. Moves them to their own file. **To
reviewers: Any proc in baseturfs.dm that is snake_case is mine, anything
else is just moved**.

Adds tests for the existing procs of baseturfs.

I'm going to be doing some optimizations to baseturfs that change the
actual representation of baseturfs, and so I'm prepping these to be
implementation agnostic.

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-01-12 12:18:28 -08:00
SkyratBot
20d03b6483 [MIRROR] Avoid creating string list of turf platings, rename some of the APIs, and improve focused test support - 160ms+ (more on prod) of init savings [MDB IGNORE] (#18357)
* Avoid creating string list of turf platings, rename some of the APIs, and improve focused test support - 160ms+ (more on prod) of init savings (#72056)

Looking at some stuff that uses `Join` right now as targets, this one's
pretty straight forward.

`/turf/open/floor/Initialize`, called 20,000 times without ruins,
creates a string list of the broken and burnt states. This carries the
fixed cost of `Join`, which is very expensive, as well as some (not
crazy, but not negligible) proc overhead.

These vars were used for effectively nothing, and have been replaced
with just using the list when necessary, which only adds an extra
millisecond of cost to update_overlays.

This was also used to automatically set `broken` and `burnt` at runtime.
However, this looks like it has gone completely unused. Adds a unit test
which adds it as a static field to the only type that cared about it,
which was abductor tiles, which is wrong anyway, but Whatever. I want to
support people making a subtype of floor tiles that are pre-broken
without it messing up stuff silently, so the test is there.

While I'm at it, renames `setup_broken_states` and `setup_burnt_states`
to remove `setup_`, since they don't really do that anymore (and never
did).

Also also, adds support for `PERFORM_ALL_TESTS` to work with multiple
focuses.

For reviewing, basically all of the changes are in floor.dm, aside from
test stuff, which is unit_test.dm.

* Avoid creating string list of turf platings, rename some of the APIs, and improve focused test support - 160ms+ (more on prod) of init savings

* a

* FUCK

* nope

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2023-01-12 11:39:51 -05:00
SkyratBot
c2fb78284c [MIRROR] Basic Faithless Mob [MDB IGNORE] (#18616)
* Basic Faithless Mob (#72479)

## About The Pull Request
Turns the faithless mob into a basic mob with unique behaviors, it will
now break lights and drag around victims bodies. Can also punch open
airlocks if they can be opened.
## Why It's Good For The Game
Now the faithless mob has its own unique behavior and it is cool to see
more AI variety.
## Changelog
🆑
add: Faithless will now also break lights and drag victims around
refactor: Faithless into basic mob
/🆑

* Basic Faithless Mob

* SR

Co-authored-by: Comxy <tijntensen@gmail.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
2023-01-11 18:01:48 -08:00
SkyratBot
509b89f45c [MIRROR] Contextual tutorials for swapping hands and dropping items [MDB IGNORE] (#18604)
* Contextual tutorials for swapping hands and dropping items

* Fixes

* Oops

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2023-01-10 14:26:08 +01:00
SkyratBot
be18901411 [MIRROR] [ready] unit tests all worn icons [MDB IGNORE] (#18491)
* [ready] unit tests all worn icons (#72370)

Fixes #71692

🆑 ShizCalev
code: Added a unit test for ALL worn icons.
fix: Fixed a bunch of broken worn icons!
/🆑

* [ready] unit tests all worn icons

* Should have fixed most of the failures now

* Here, hopefully that should fix what was left

* Okay maybe it just hadn't been fixed yet

* I can be a bit dumb sometimes

* Okay, now it's going to work, I promise

* I'm so tired of this

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-01-09 21:10:28 -05:00
SkyratBot
ce22bf5dc7 [MIRROR] Makes flags_inv better at actually hiding things when used on non-suit clothing [MDB IGNORE] (#18356)
* Makes `flags_inv` better at actually hiding things when used on non-suit clothing

* big diff

* fixes

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 14:01:12 -05:00
SkyratBot
8e8002b555 [MIRROR] Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars [MDB IGNORE] (#18348)
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars

* merge conflicts

* adjust_eye_blur and set_eye_blur_if_lower

* adjust drowsiness overdoses

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2023-01-09 13:14:47 -05:00