Commit Graph

923 Commits

Author SHA1 Message Date
SkyratBot
055b747abf [MIRROR] Patches some cargo shuttle Centcom exploits. [MDB IGNORE] (#23894)
* Patches some cargo shuttle Centcom exploits. (#78540)

## About The Pull Request

Globally prevents anything blacklisted from actually getting to the
Centcom z-level by shipping blacklisted items back to their location of
origin just before the shuttle docks at Centcom.

Everything rejected in this way is logged and admins are given an alert
to let them know something funky went on.

![image](https://github.com/tgstation/tgstation/assets/24975989/09717f16-1115-45f2-8f8b-85b316ed4bc6)

![image](https://github.com/tgstation/tgstation/assets/24975989/af149939-1cf1-49f1-b458-7d5d4ff6ae89)
## Why It's Good For The Game

Hopefully universally patches all current methods of getting to the
Centcom Z-level via getting on the cargo shuttle mid-transit.

Individual methods to accomplish this can still be patched individually,
but this tries to blanket prevent such exploits from working on a more
fundamental level.
## Changelog
🆑
fix: Centcom now rejects contraband that somehow makes it way onto the
cargo shuttle mid-transit and returns it.
/🆑

* Patches some cargo shuttle Centcom exploits.

---------

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2023-09-24 21:39:49 -07:00
SkyratBot
d9624bdf97 [MIRROR] Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse [MDB IGNORE] (#23794)
* Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse

* Update hilbertshotel.dm

* Modular proc ref

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-19 13:26:14 -04:00
SkyratBot
466d7a5081 [MIRROR] Emergency shuttle is aware of security level [MDB IGNORE] (#23678)
* Emergency shuttle is aware of security level (#78271)

## About The Pull Request

The emergency shuttle maintains its security level coefficient and does
the calculation instead of outside procs that aren't aware of what alert
it was when the shuttle was first called.

If the shuttle auto-call timer should be capped at the current security
level timer, that can be done in a different PR.

## Why It's Good For The Game

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

## Changelog

🆑 LT3
fix: Emergency shuttle should correctly scale timer up/down when
changing security levels
/🆑

* Emergency shuttle is aware of security level

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-09-13 15:44:24 -07:00
SkyratBot
a08ee56788 [MIRROR] Exploration drones can no longer be used to get to centcom [MDB IGNORE] (#23597)
* Exploration drones can no longer be used to get to centcom (#78197)

## About The Pull Request
Fixes #73417
Implements a check for exploration drones to make sure that containers
inside the storage don't have blacklisted items in them before launch.
Now you won't able to hide beacons and living beings inside bluespace
body bags.

Also adds exploration drone launchers to cargo shuttle's blacklist to
prevent potential shenanigans in the future.

[I suck at explaining, so here's a poorly made video that shows how to
do this](https://www.youtube.com/watch?v=U45ifQGQxzI)

~also, why does it take 10 hours to get the "Time Waster" achievement.
how did 6 people even get it??~

## Why It's Good For The Game
centcom is scary and exploits are bad

## Changelog
🆑
fix: Exploration drones can't be used to reach Centcom anymore.
/🆑

* Exploration drones can no longer be used to get to centcom

---------

Co-authored-by: leaKsi <59278564+leaKsi@users.noreply.github.com>
2023-09-09 10:33:07 -04:00
SkyratBot
71da4ca73f [MIRROR] Refactors the notransform variable into a trait. [MDB IGNORE] (#23566)
* Refactors the `notransform` variable into a trait.

* Update robot_upgrades.dm

* modular

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-07 20:24:59 -04:00
SkyratBot
e3f8dd884e [MIRROR] Better alert/announcment sounds and Status displays [MDB IGNORE] (#23481)
* Better alert/announcment sounds and Status displays

* skyrat edits

* Update status_display.dmi

* Update flavor_misc.dm

* Update communications.dm

* skyrat edits

* Update status_display.dmi

* Update _sm_delam.dm

* typo

* Update status_display.dmi

* Update status_display.dmi

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-09-03 00:43:12 -07:00
Paxilmaniac
1f204e806e Guncargo 2023 : I love the free market : No interest, no buying companies, no money down! : Cheaper literally everything (#23244)
* ea nasir damn you

* surely there are no consequences to any of this

* nineteen dollar pistol, just a week away

* i love buying product

* look at all these great deals!

* just a week away

* should fix windows build

* should let borgs place requests

* lets borgs use it fr

* epic logic L

* actually for real fixes silicons ordering from imports

* get real

* makes cargo ordered stuff not show up locked in a crate

* makes it impossible to get that infinite cash from small orders

* i dont think we need this anymore?

* switches up the selection a tiny bit to fit the new system

* removes a bit i commented out but didnt delete

* lets see if moving that to static data makes it still work fine

* turns out that it was not, in fact, fine

* Update modular_skyrat/modules/company_imports/code/armament_datums/deforest_medical.dm

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

* makes adv tools more expensive and fixes budget orders

* restricts some large weapons i forgot to

* fixes some magazine import pathing

* those dont exist anymore pal!

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-30 16:20:01 -04:00
SkyratBot
4a5a371713 [MIRROR] Updates message for HREF Dock Exploit [MDB IGNORE] (#23320)
* Updates message for HREF Dock Exploit (#77891)

## About The Pull Request

Hey there,

![image](https://github.com/tgstation/tgstation/assets/34697715/86282805-5c5d-4e13-aec4-91a5877831ed)

This message randomly popped up while I was adminning, and it was
completely dogshit useless (as well as not being an HREF exploit since
Snowdin was loaded and you should be expected to do that, but that's
indicative of a harder bug). Let's yeet the `message_admins()` portion
(as well as make it actually actable information rather than just
'Unknown' and give it an actual follow jump button) and if then if we
don't have a client, stack_trace (in case people want to make basic mobs
keymash to send shuttles in the future).
## Why It's Good For The Game

This is completely useless and confusing. It's not even an HREF exploit
because this behavior is completely intended. It's more helpful to
coders now too because this thing failing isn't just locked to
admin-only logs, it stack traces (which is publically available).
## Changelog
🆑
admin: The "HREF Dock Exploit" message should now contain a bit more
usable information (such as a jump link) so you can investigate if
something is really going wacky with shuttles.
/🆑

---------

Co-authored-by: Gallyus <5572280+francinum@ users.noreply.github.com>

* Updates message for HREF Dock Exploit

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Gallyus <5572280+francinum@ users.noreply.github.com>
2023-08-25 19:06:28 -04:00
SkyratBot
53955051d0 [MIRROR] Adds a check grep for using src as a trait source rather that REF(src) [MDB IGNORE] (#23264)
* Adds a check grep for using `src` as a trait source rather that `REF(src)` (#77836)

## About The Pull Request

Using `src` as a trait source is an error and can often lead to
hard-deletes

If you wish to tie a source to a certain datum, it is common to use
`REF(src)` instead.

Ideally, we would lint or test for any use of a reference rather than a
string in use in trait sources, but that's a bit harder to setup.
Currently (from what I can see) the *only* erroneous use of references
as sources are via `src`, so it being the most common error, I see it
fine to lint for it.

## Changelog

Nothing player facing.

* Adds a check grep for using `src` as a trait source rather that `REF(src)`

* Update style.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-23 01:18:53 -04:00
SkyratBot
c3ac650746 [MIRROR] Makes bluespace navigation gigabeacons both significantly nicer to use, and significantly cooler [MDB IGNORE] (#23023)
* Makes bluespace navigation gigabeacons both significantly nicer to use, and significantly cooler

* Removes icon override

* No more circuit boards to build these. Instead they unfold.

---------

Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-11 23:49:54 -04:00
SkyratBot
008b044ac5 [MIRROR] Emergency shuttle information display improvements [MDB IGNORE] (#23016)
* Emergency shuttle information display improvements

* Update emergency.dm

* Update emergency.dm

* Modular shuttles

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-11 22:39:32 -04:00
SkyratBot
250c316a5d [MIRROR] Prevents shuttle events running in-case of catastrophic failure [MDB IGNORE] (#23011)
* Prevents shuttle events running in-case of catastrophic failure

* Update code/modules/shuttle/emergency.dm

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-08-11 08:07:38 -04:00
SkyratBot
b8792d5317 [MIRROR] Add admin blackhole(s) shuttle event [MDB IGNORE] (#22978)
* Add admin blackhole(s) shuttle event (#77188)

## About The Pull Request
This adds a new **Black Hole** admin shuttle event while the escape
shuttle is in transit. The regular version spawns a small 1x1
singularity that falls through the ship. There is also a special
adminbus Kobayashi Maru version that spawns multiple black holes
rapidly.

## Why It's Good For The Game

![dreamseeker_MxqHmKXXQ8](https://github.com/tgstation/tgstation/assets/5195984/e169669a-fb71-48c5-8314-df82852eef3b)

Tell me this doesn't look fun?

## Changelog
🆑
add: Add admin blackhole shuttle event with a normal version and
suicidal version.
fix: Fix several shuttle event runtimes
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>

* Add admin blackhole(s) shuttle event

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Time-Green <7501474+Time-Green@ users.noreply.github.com>
2023-08-10 08:07:56 -04:00
SkyratBot
1cc3e0d865 [MIRROR] [no gbp] Fixes runtimes in shuttle event and shuttle cling [MDB IGNORE] (#22918)
* [no gbp] Fixes runtimes in shuttle event and shuttle cling (#77343)

Fixes no-candidate runtime from pick() on an empty list
Fixes spawning null movables if run out of mobs to spawn
Fixes shuttle cling qdeling on Initialize due to lattices not counting
as hyperspace

🆑
runtime: Fixes runtimes in shuttle event and shuttle cling code
/🆑

---------

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

* [no gbp] Fixes runtimes in shuttle event and shuttle cling

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-08-07 09:36:00 -04:00
SkyratBot
3fa227223a [MIRROR] convert the bear to a basic mobster [MDB IGNORE] (#22751)
* convert the bear to a basic mobster

* Merge conflicts

* Fixing the diffs

* Merge conflicts

* Update mob.dm

* Update VoidRaptor.dmm

* why is this pr so cursed

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-29 04:40:27 -04:00
SkyratBot
7b4237c692 [MIRROR] Implements usage of the REVERSE_DIR macro throughout the code. [MDB IGNORE] (#22743)
* Implements usage of the REVERSE_DIR macro throughout the code. (#77122)

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

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

## Changelog

N/A

* Implements usage of the REVERSE_DIR macro throughout the code.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-28 14:32:01 -04:00
SkyratBot
6aa21d0527 [MIRROR] Refactors vendor tipping and adds 2 new malf modules: Remote vendor tipping, and the ability to roll around and crush anything in your path. [MDB IGNORE] (#22727)
* Refactors vendor tipping and adds 2 new malf modules: Remote vendor tipping, and the ability to roll around and crush anything in your path.

* Update _vending.dm

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-07-27 17:29:54 -04:00
SkyratBot
c2c8f00d16 [MIRROR] Fixes triple carp shuttle event failing [MDB IGNORE] (#22539)
* Fixes triple carp shuttle event failing (#76860)

* Fixes triple carp shuttle event failing

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-07-18 16:43:53 -04:00
SkyratBot
2f552919c1 [MIRROR] Icons folder cleaning wave two [MDB IGNORE] (#22454)
* Icons folder cleaning wave two

* Merge conflict resolution

* Modular path hell

* hmm

* Update 2022-10.yml

* Another modular thing

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 00:41:18 -04:00
SkyratBot
0a03e8a2a7 [MIRROR] Machine list is now stored in SSmachines | Remove excessive use of global lists for specific machine types [MDB IGNORE] (#22481)
* Machine list is now stored in SSmachines | Remove excessive use of global lists for specific machine types

* Resolve merge conflicts

* Modular adjustments

* destroy this double return on destroy

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 22:51:23 -04:00
SkyratBot
e264ee3644 [MIRROR] Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts [MDB IGNORE] (#22469)
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts

* Update communications.dm

* Modular override

* Some modular adjustments, removes 'emagged' vars in favor of obj_flags

* whoops, mobs don't have obj_flags.

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 16:46:17 -04:00
SkyratBot
a97aab7642 [MIRROR] Refactors bardrone area based godmode into an element [MDB IGNORE] (#22419)
* Refactors bardrone area based godmode into an element (#76619)

Let's this be used for more than just bardrones and for more than just
the exit shuttle in the future

* Refactors bardrone area based godmode into an element

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
2023-07-13 08:57:14 -04:00
SkyratBot
d8a19cf7ae [MIRROR] Makes cargo orders and req forms easier to differentiate [MDB IGNORE] (#22227)
* Makes cargo orders and req forms easier to differentiate

* Update code/modules/shuttle/supply.dm

Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>

* removes one skyrat edit in favor of this

* Too much whitespace

---------

Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-07-12 06:38:10 +00:00
SkyratBot
fcaa706706 [MIRROR] Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead [MDB IGNORE] (#22110)
* Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead (#76296)

## About The Pull Request

Title.

Also, fixes https://github.com/tgstation/tgstation/issues/75568 at the
request of @ TheVekter

## Why It's Good For The Game

This subtype only exists to append ore box behavior and is clearly a
relic of pre-2020 mechcode.
Keeping it around will only make it harder in the future to add new
mechs with ore box support.

## Changelog

🆑
fix: Clarke ore box now has a less confusing dump contents button.
/🆑

---------

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

* Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead

* updatepaths

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2023-07-04 13:35:22 +00:00
SkyratBot
8b7bdc4959 [MIRROR] Shuttle events [MDB IGNORE] (#21917)
Shuttle events

Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: ghost sheep <sheepwiththemask@gmail.com>
2023-06-18 15:02:04 +02:00
SkyratBot
cacc7a0831 [MIRROR] dont send raw href to admins [MDB IGNORE] (#21906)
* dont send raw href to admins (#76125)

## About The Pull Request
if href exploiting the shuttle computer it no longer sends admins the
raw html

## Why It's Good For The Game
lol

## Changelog

* dont send raw href to admins

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-06-18 13:45:41 +01:00
coldud13
757966ddf9 [MANUAL MIRROR] People can now witness a shuttle hijacker complete their hacking stag (#21140)
People can now witness a shuttle hijacker complete their hacking stage, rather than somehow be entirely oblivious to someone typing on a keyboard. (#69377)

* Alerts people around the hijacker that they're hijacking.

* Also double-checks to make sure you have your hands free before you can manipulate the console.

* Update emergency.dm

Fixes a reversed check

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2023-05-15 16:41:57 +01:00
SkyratBot
7ffc0e786e [MIRROR] Cargo category cleanup [MDB IGNORE] (#21119)
* Cargo category cleanup (#75374)

## About The Pull Request

I accidentally discovered that when #55504 removed cargo export
categories being a thing during export value evaluation, in two
instances, they forgot to remove passing over the now defunct export
categories, causing it to be passed in as the elasticity value, and by
sheer coincidence, this was not causing problems (due to being overriden
by a named argument in the pirates case, and cargo_exports being
evaluated as true in another).

This PR fixes the arguments, preventing possible bugs in the future.
This also removes the code that set if the cargo shuttle could sell
contraband and emagged items, as that is no longer a thing. I talked
with @ ArcaneMusic about this, and they agreed, albeit with the caveat
that if someone finds a good use case for this feature, it could be
saved.

This PR also autodocs several export related files, and cleans up
various single and two letter vars.

## Why It's Good For The Game

Cleaner code, unused code removed.

## Changelog

🆑
code: cleaned up cargo export code a bit
/🆑

* Cargo category cleanup

---------

Co-authored-by: Profakos <profakos@gmail.com>
2023-05-14 16:02:52 -07:00
Shadow-Quill
1d38274c0f Unsnowflakifies a part of the arrival shuttle (#20944) 2023-05-06 17:51:27 +01:00
SkyratBot
d06e6270b9 [MIRROR] Removes current destination for a shuttle in transit from the destination list [MDB IGNORE] (#20967)
* Removes current destination for a shuttle in transit from the destination list (#75170)

## About The Pull Request

Shuttles with multiple destinations will no longer show the current
destination as a selectable choice during transit.

<details>
<summary>Example</summary>
A shuttle has two possible destinations. A and B. <br>
While at A, the only valid destination is B and vice-versa. <br>
But while in transit to B, _both_ A and B can be chosen as destinations.
<br><br>
The change now hides B as a valid destination, as you are already going
there. <br>
It has the nice side effect of making shuttles with only two
destinations never showing a dropdown list while in transit.
</details>

## Why It's Good For The Game

Telling the shuttle to go to the same place as you're going to doesn't
do anything.

## Changelog
🆑
qol: Shuttles will no longer show their current destination as a choice
while in transit.
/🆑

* Removes current destination for a shuttle in transit from the destination list

---------

Co-authored-by: Shadow-Quill <44811257+Shadow-Quill@users.noreply.github.com>
2023-05-06 17:37:44 +01:00
SkyratBot
16b64484e9 [MIRROR] Ore silo will put machines off its level on hold, instead of disconnecting [MDB IGNORE] (#20859)
* Ore silo will put machines off its level on hold, instead of disconnecting (#74990)

## About The Pull Request

There's a problem where people would try to rebuild a whiteship and use
an Ore Silo for it. However, it would automatically unlink everything
when moving, because it's checking for z level as soon as it changes z
level itself, before the Ore silo has 'moved' as well.

~~To fix this, I'm now only disconnecting ore silos when a shuttle
moves. This mostly does the same as before, but technically you can sync
an unwrenchable connected machine and bring it to space with you
(without using a shuttle) to stay connected, but I don't see this as a
problem, and my original point of the PR was to prevent Lavaland ORMs.~~

I decided against this, instead I've made it so machines that aren't on
a valid level (either both on the same z level or both on the station
level) will be considered 'on-hold', much like if the QM has set it to
hold through the silo directly. This means that machines no longer
disconnect from the Ore silo on moving, they just can't access the
materials in it. This affects gameplay in 2 ways:

1. You no longer need to resync when you bring the machine back
2. It won't unsync itself every time you move station z-level with its
silo (such as on a whiteship).

I also made disconnecting from an ore silo actually remove them from the
ore silo's list of connected machines.

## Why It's Good For The Game

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

## Changelog

🆑
balance: Machines (such as ORM and Techfabs) will no longer unsync from
Ore silos when it moves Z-level, instead it will prevent materials from
being used, as if it was on hold.
/🆑

* Ore silo will put machines off its level on hold, instead of disconnecting

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-05-02 15:50:25 -04:00
SkyratBot
7028b1d32e [MIRROR] Converts Spiderlings from Structures to Basic Mobs [MDB IGNORE] (#20852)
* Converts Spiderlings from Structures to Basic Mobs (#75001)

If I could've made this more atomic, I would have in a heartbeat, trust
me.

## About The Pull Request

Hey there. People were mocking us for having spiderlings still be a
subtype of `/obj/structure`. I decided to take a lot of time to fix
that. A lot of behavior it was implementing was just pseudo-mob stuff,
so it was actually easier than it looked for the raw conversion. A lot
of the footwork on spider stuff in the basic framework was already done
previously by Jacquerel, so that was pretty nice.

However, there are two new things that weren't introduced in the code
that had to be put in.

A) A component to handle growth and differentiation into a mob. This may
have already existed, no clue. If it does (and it's NOT
evolutionary_leap), let me know.
B) AI Behavior to handle seeking out a vent, entering a vent, and then
exiting out of a different vent. I may have gone a bit wacky on the
code, but it certainly works as expected (spiderling goes in one vent,
exits the other). Let me know if you can think of a way it can be better
optimized, but it was deliberately written to be very failsafey in case
shit goes yonkers.

One fundamental difference between structure spiderlings and basic mob
spiderlings (beyond the AI and not just a random prob() check for
movement) is the fact that they had vent movement coded in... but we
_really_ don't need stuff like that for our intents and purposes. If the
range turns out to be too OP in the current framework, we can always
change it up a bit, but also there's a _lot_ of vents we can end up in
the station (my testing had one spiderling end up in the AI sat to get
obliterated).
## Why It's Good For The Game

Spiderlings aren't structures! They behave like a mob should! Players
can possess spiderlings! They work seamlessly with differentiating into
a giant spider! Better AI! More room for people to add into this very
under-utilized buggers!
## Changelog
🆑
refactor: Spiderlings are now basic mobs, report any complete
weirdness/deviation from known behavior. They should be a lot more
intelligent now though.
add: AI Spiderlings are super fragile, but they're also super fast,
especially when they get into a vent. Once they're in circulation, they
could end up everywhere! Maybe in the armory, maybe in a locked closet
in maintenance. Be sure to be vigilant and splat them whenever you can
to save the station from a whole lotta heartache!
/🆑

---------

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

* Converts Spiderlings from Structures to Basic Mobs

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-04-30 12:54:58 -07:00
SkyratBot
5d66a77c49 [MIRROR] Refactors Navigational Beacons [MDB IGNORE] (#20471)
* Refactors Navigational Beacons

* Update all_nodes.dm

---------

Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:11:00 +01:00
SkyratBot
1b8d0b3a2f [MIRROR] New sprites for requests, pod, and gulag wall consoles [MDB IGNORE] (#20406)
* New sprites for requests, pod, and gulag wall consoles (#74456)

## About The Pull Request

Changes ancient sprites for requests _(don't confuse them with cargo
requests computer)_ and pod wall consoles, to the new polished ones with
the same style as the newscaster. Also makes the gulag/pod console
actually use overlays, instead of having the screen melted into its icon
(so now when it has no electricity it screen turns off).
Now pods and gulag console's screen changes when they get emagged.

Requests console:

![req_console](https://user-images.githubusercontent.com/42353186/229344252-fd79536a-faa8-47e5-8aa6-01eb172d2efd.png)
![req_0
big](https://user-images.githubusercontent.com/42353186/229344253-3f090c0b-1264-4303-9b83-38fd1a258ef5.gif)
![req_1
big](https://user-images.githubusercontent.com/42353186/229344254-3a5f2c17-a10c-4a76-9fb0-ca2e82e8291b.gif)
![req_2
big](https://user-images.githubusercontent.com/42353186/229344255-95e27da3-1180-4de6-9984-5da503bdfe44.gif)
![req_3
big](https://user-images.githubusercontent.com/42353186/229344256-7d2c44c8-047b-413b-bce8-a1a8c52ea48f.gif)

Pod console:

![pod_console](https://user-images.githubusercontent.com/42353186/229344287-60b33b09-1c36-47d1-8c0c-163be7ffdcd9.png)
![pod_0
big](https://user-images.githubusercontent.com/42353186/229344289-c315e3a4-69f1-4067-83fd-e855e2b9ec39.gif)

Gulag item retrieval console:
![gulag_0
big](https://user-images.githubusercontent.com/42353186/229344308-b09349cf-e607-4c0c-b4b5-e6f53aa6934f.gif)

![gulag_console](https://user-images.githubusercontent.com/42353186/229344310-9bfebc88-a5a4-4525-acb1-34b677fe8c95.png)

Emagged gulag/pod console:
![emagged
big](https://user-images.githubusercontent.com/42353186/229344319-1d523d2c-ca57-4da7-937d-459a5ddec515.gif)

## Why It's Good For The Game
The old sprites of them are really ancient, have bad looks and that old
isometric perspective.
![old gulag and pod
console](https://user-images.githubusercontent.com/42353186/229344549-dae413e1-98e2-4aa8-94fa-fde74ea4a4df.png)
![old req
console](https://user-images.githubusercontent.com/42353186/229344551-3d12705a-8cb6-4c4c-b4f7-adfa013b1956.png)

Having new sprites is always great for people's eyes. This also will
make the requests console more noticeable, that way _maybe_ people will
start using it more often.
Making them use overlays instead of having the screen icon merged into
the base icon is good because it gives more dynamic, as when electricity
turns out it signals more to the players that it's not functional right
now.

<!-- 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

🆑 DrDiasyl aka DrTuxedo#0931
imageadd: Requestions consoles got a new sprite!
imageadd: Gulag consoles got a new sprite!
imageadd: Escape and assault pod consoles got a new sprite!
qol: Now the gulag and pods consoles use overlays, instead of having
turned ON screen in their base icon.
qol: Now the gulag and pods consoles screen change when they are
emagged.
qol: Requests console now shows examine prompt on how to open their
panel. Also shows a prompt if they were hacked.
/🆑

---------

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

* New sprites for requests, pod, and gulag wall consoles

* update modular

* overlays are a fuck

* Update computer.dmi

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-12 20:01:28 +01:00
SkyratBot
2356234a38 [MIRROR] [MDB IGNORE] Gets rid of the /brig shuttle floor subtype [MDB IGNORE] (#20242)
* [MDB IGNORE] Gets rid of the /brig shuttle floor subtype (#74100)

## About The Pull Request

Removes the /brig red plastitanium shuttle floor, replaces the checks
related to it with checking if the area is the shuttle brig
From what I checked in vscode, all the shuttles that use this floor
already also have the shuttle brig area on the same tiles so it changes
nothing (and might even fix things if shuttles don't use this floor type
for their shuttle brig)

## Why It's Good For The Game

Why the fuck are we checking for a TURF

## Changelog

Not player facing

* [MDB IGNORE] Gets rid of the /brig shuttle floor subtype

* rest the affected maps

* Update emergency_outpost.dmm

---------

Co-authored-by: SgtHunk <68669754+SgtHunk@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-04-01 21:41:50 +01:00
Gandalf
e4b4d4d3c0 MISSED MIRROR [Lints Against Unmanaged Local Defines] (#20204)
* https://github.com/tgstation/tgstation/pull/74333

https: //github.com/tgstation/tgstation/pull/74333
Co-Authored-By: tattle <66640614+dragomagol@users.noreply.github.com>

* var stuff

Co-Authored-By: tattle <66640614+dragomagol@users.noreply.github.com>

* vars

* Update sol_fed.dm

---------

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
2023-04-01 01:15:22 +01:00
SkyratBot
4d8daa742a [MIRROR] March into Mapness: The Waystation [MDB IGNORE] (#20185)
* March into Mapness: The Waystation (#74192)

* March into Mapness: The Waystation

---------

Co-authored-by: Singul0 <127663818+Singul0@users.noreply.github.com>
2023-03-30 00:55:48 -04:00
Gandalf
cd7b6bb74a Map Reset (#20106)
* MAP RESET PART

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/20068

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/20089

* https://github.com/Skyrat-SS13/Skyrat-tg/pull/20100
2023-03-27 03:28:58 +01:00
SkyratBot
2728bbe9a9 [MIRROR] Polishes some side sources of light and color [MDB IGNORE] (#19860)
* Polishes some side sources of light and color (#73936)

## About The Pull Request

[Circuit Floor
Polish](6b0ee98132)

Circuit floors glow! but it looks like crap cause it's dim and the
colors are washed out.
I'd like to make them look nicer. Let's make them more intense and
longer range, and change the colors over to more vivid replacements.

While I'm here, these should really use power and turn on and off based
off that.
Simple enough to do, just need to hook into a signal (and add a setter
for turf area, which cleans up other code too).

[Desklamp
Upgrade](8506b13b9c)

Desklamps look bad. They're fullwhite, have a way too large
range.Crummy.
Let's lower their lightrange from 5 to 3.5, and make the ornate ones
warmer, and the more utilitarian ones cooler. The clown one can be
yellow because it's funny

I'm renaming a color define here so I'm touching more files then you'd
expect

[Brightens
Niknacks](835bae28e9)

Increases the light range of request consoles, status displays,
newscasters, and air alarms (keycard machines too, when they're awaiting
input at least)
Increases the brightness of air alarms, I think they should be on par
with apcs, should be able to tell when they're good/bad.
Increases the brightness of vending machines (I want them to light up
the tiles around them very lightly, I think it's a vibe)

Fixes a bug with ai status displays where they'd display an emissive
even if they didn't have anything on their screen, looking stupid.
This was decently easy but required a define. Looked really bad tho

## Why It's Good For The Game

Pretty

<details>
<summary>
Circuit Floors
</summary>

Old

![image](https://user-images.githubusercontent.com/58055496/224534470-c6eac5f5-5de6-40e9-897d-3212b8796d81.png)

![image](https://user-images.githubusercontent.com/58055496/224534477-ad412ad9-f7c4-44ae-ad75-a1a2c9bd17be.png)

New

![image](https://user-images.githubusercontent.com/58055496/224534486-b7b408a3-546c-4f90-aa9f-0e58bf8128ad.png)

![image](https://user-images.githubusercontent.com/58055496/224534496-626458f7-ab63-429c-a5db-eae9c784d06a.png)
</details>

<details>
<summary>
Desk Lights
</summary>

Old

![image](https://user-images.githubusercontent.com/58055496/224534513-9868b0b8-bc73-4b45-b986-8445078a8653.png)

![image](https://user-images.githubusercontent.com/58055496/224534518-bbbc8c6d-b59e-4f28-a31c-6c6a7e2c2885.png)

New

![image](https://user-images.githubusercontent.com/58055496/224534529-7988f440-03be-42ef-894c-b9e77f577ae5.png)

![image](https://user-images.githubusercontent.com/58055496/224534532-c3f2c6bf-c925-4a59-a8f9-10bb955a9942.png)
</details>

The niknack changes are more minor so I'm not gonna grab photos for
them. I can if you'd like but I don't think it's necessary. Mostly a
vibes in dark spaces sorta thing

## Changelog

🆑
add: I made circuit floors brighter and more vivid.
add: Made air alarms, vending machines, newscasters, request consoles,
status displays and keycard machines slightly "brighter" (larger light
range, tho I did make air alarms a bit brighter too)
add: Tweaked desklamps. Lower range, and each type gets its own coloring
instead of just fullwhite.
fix: AI displays are no longer always emissive, they'll stop doing it if
they aren't displaying anything. Hopefully this'll look nicer
/🆑

* Polishes some side sources of light and color

* yellow

* Update dance_machine.dm

* Merge branch 'upstream-merge-73936' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-merge-73936

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
2023-03-26 01:39:17 -07:00
SkyratBot
408f0e9c5a [MIRROR] Audits usage of isanimal() vs isanimal_or_basic_mob() [MDB IGNORE] (#19938)
* Audits usage of isanimal() vs isanimal_or_basic_mob() (#74029)

## About The Pull Request

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

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

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

## Why It's Good For The Game

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

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

alright here goes

## Changelog

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

* Audits usage of isanimal() vs isanimal_or_basic_mob()

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-03-18 03:15:31 -07:00
SkyratBot
f7293128a6 [MIRROR] Fixes the pubbystation monastery pod [MDB IGNORE] (#19954)
* Fixes the pubbystation monastery pod (#73990)

## About The Pull Request

Fixes Pubby's monastery pod, as emergency pod changes have broken it
overtime.
- Calling it from Lavaland now works
- Using it as a pod still works
- Sending it off using the console on the pod itself and from the
station also now works again (which had broken ~4 months ago).

## Why It's Good For The Game

Closes https://github.com/tgstation/tgstation/issues/54370
This isn't player-facing unless an Admin runs it from Map Depot, where
it's still maintained.

## Changelog

🆑
fix: Pubbystation, if run, will now have a working monastery pod shuttle
again.
/🆑

* Fixes the pubbystation monastery pod

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2023-03-17 22:48:43 -04:00
SkyratBot
36cf718cc7 [MIRROR] Adds a stack_trace for emissives with invalid icon_states, fixes all that appeared roundstart [MDB IGNORE] (#19678)
* Adds a stack_trace for emissives with invalid icon_states, fixes all that appeared roundstart (#73678)

## About The Pull Request
So, this spiraled from one missing icon being fixed to an entire check
for said icons.
Several icon files no longer use error icons because its assumed that
the checks will handle any missing ones, but the checks don't apply to
emissives nor overlays at all. This led to the radsuit having an
emissive but no icon_state for it - a relic of the old radsuit. This was
only noticed because of a downstream with an error icon appearing for
it...

I was curious how many were actually having the same issue, so I made a
small little stack_trace in the mutable_appearance proc.
There were like, 2k. Lots of them were icons named, like, "transparent"
or "blank" too...
I moved that check to the emissives proc because I semi-understand that
system so could actually fix it, and it moved to around fourty
roundstart. Much more achievable.

(The error usually has more info if you click on it, including the item
that caused it. I dunno how to add that to the check itself because of
where it's located, though.)

![F99cOII1XJ](https://user-images.githubusercontent.com/76465278/221503786-63dc6980-a48b-4290-b891-23c0499500ff.png)

This fixes all the ones I could find, including...
Nonexistant icons that shouldn't be adding emissives on:
- Empty Barsign
- Radsuit
- Mass Driver Controllers
- Telescreens
- Aux Base Consoles
- PanDEMIC
- Kobayashi computer (holodeck)
- Abductor camera console
- Syndie drop pod
- BSA controller
Entirely missing icons on:
- Pwr Game Vendor (this was just misnamed)
- Generic Soda Vendor
- Engivend
- Security Laptop (proud of this one.,.,)
![dreamseeker_36PwO4HSLO](https://user-images.githubusercontent.com/76465278/221544806-3c5ae33a-1360-49e0-ba80-afea6c0a9339.gif)

There are no doubt more of them hidden about, but I don't really know
what I'm doing... If there's a check that'd be better than this, please
review telling me what to change <3
## Why It's Good For The Game
Fixes missing icons, fixes attempts to add icons where we don't need
them, and adds a check to help fix more of the two issues as they occur.
## Changelog
🆑
fix: fixed missing emissives on the Engivend, Pwr-Game Soda, and generic
Soda vendors. Also fixed the seclaptop having no valid screen icon!
fix: fixed a few items trying to apply emissives when they shouldn't.
code: added a stack_trace for emissives with missing icon states.
/🆑

* Adds a stack_trace for emissives with invalid icon_states, fixes all that appeared roundstart

* Update cryopod.dm

---------

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 06:11:13 +00:00
lessthanthree
7305d12d29 [MANUAL MIRROR] Nightvision Rework (In the name of color) (#19608)
* Nightvision Rework (In the name of color) (#73094)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Take a list like this

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

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

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

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

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

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

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

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

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

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

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

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

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

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

filter transitions.
Found this when testing this pr, seemed silly.

This avoids dumbass overlay lighting lighting up wallmounts.
We switch modes if some turfflags are set, to accomplish the same thing
with more overhead, and support showing things through the darkness.

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

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

color with a sprite

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

vision goggles and such
Side affect of removing see_in_dark. This logic is a bit weak atm, needs
some work.

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

trasnparent won't render

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

</details>

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

Demonstration of ghost lighting, and color

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

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

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

Diagnostic nightvision goggles and see_in_dark not hiding emissives

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

Sec nightvision (I just think it looks neat)

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

Medical nightvision goggles and other colors

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

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

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

Thermal goggles and coloring displayed mobs

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

</details>

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

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

🆑
add: The darkness that glasses and hud goggles that impact your
nightvision (think mesons, nightvision goggles, etc) lighten is now
tinted to match the glasses. S pretty IMO, and hopefully it helps with
forgetting you're wearing X.
balance: Nightvision is darker. I think bright looks bad, and things
like mesons do way too much
balance: Mesons (and mobs in general) no longer have a static distance
you can see stuff in the dark. If a tile is lit, you can now see it.
fix: Nightvision no longer dims colored lights, instead simply
thresholding off bits of darkness that are dimmer then some level.
/🆑

* modular edits

* see_in_dark

* [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>

* Update augments_eyes.dm

* Update augments_eyes.dm

* eeee

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-03-10 04:17:22 +00:00
SkyratBot
6267035649 [MIRROR] Fixes pirates and starfury assailants transferring minds [MDB IGNORE] (#19724)
* Fixes pirates and starfury assailants transferring minds (#73833)

## About The Pull Request

Same issue as before, these skipped the spawn step and snowflaked their
own creation process.

So I split off the create part of attack ghost so these could share.

Fixes #73823 , may fix also #73822 but I don't *think* it will, whatever
changed spawners a few months ago is a little sus

## Why It's Good For The Game

Changeling pirate bad

## Changelog

🆑 Melbert
fix: Fixes pirates and starfury assailants keeping minds of past lives
/🆑

* Fixes pirates and starfury assailants transferring minds

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-03-08 11:36:36 +00:00
SkyratBot
9a0e94aaa2 [MIRROR] Fixes hijacked shuttles not counting as escaped, cleans up associated code [MDB IGNORE] (#19652)
* Fixes hijacked shuttles not counting as escaped, cleans up associated code (#73623)

## About The Pull Request

Fixes #72240

So, in the past, `onCentCom` ran a check at the end that said "if we're
on centcom z, in centcom area, or in shuttle that is endgame launched:
return TRUE"

Meanwhile its brother `onSyndieBase` did not need to run the same
checks, because it was also on the centcom z-level.

This meant that for the purposes of `considered_escaped`, `onCentCom`
pretty much entirely eclipsed `onSyndieBase`, only mattering for, well,
Nuke Ops

So the fix was simple - add the check for "in shuttle that is engame
launched" to `onSyndieBase`.

I took this opportunity to do a quick audit of associated "escaped" and
"alive" code. Did you know that hardcore random only checked that you
were on centcom to award survival points? Instead of any other checks
for escaped like stat?

Also the ancient "romerol zombies can't be used as an easy way to
greentext escape" was broken, because it checked the wrong species ID?

Bonus performance optimization: `in area` -> `in
area.get_contained_turfs()`

## Why It's Good For The Game

Hijack does not turn around to become an L

## Changelog

🆑 Melbert
fix: Hijacked shuttles now count as "escaping alive" once agian
fix: Hardcore random survival now actually checks that you've escaped
alive, and not just made it to centcom
fix: Intelligent zombies can now escape.
fix: Infectious zombies now don't count as escaped as intended.
/🆑

* Fixes hijacked shuttles not counting as escaped, cleans up associated code

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-03-04 13:00:17 +00:00
SkyratBot
8fb16e5b91 [MIRROR] Escape pod early launch fixes [MDB IGNORE] (#19397)
* Escape pod early launch fixes (#73442)

## About The Pull Request

Ever since dynamic shuttle dock size calculation, escape pods failed to
select the random lavaland/icemoon docking ports as a valid target, as
those ports had no shuttle attached to them, and thus, their dimensions
were stuck at 0. This PR makes permits these to be always a valid
target, similar to hyperspace transit docking ports.

Also, the various pods connected to the pod computer multiple times.
Each of them has added pod_lavaland as its valid destination lists, and
then when the escape pod port's id got updated with a counter to ensure
a unique ID, they have added pod_[counter]_lavaland to its destination.
This meant that every pod past the first had a dropdown, so they could
select which destination they could land at, instead of just the one
intended for solely them. This is also fixed.

Also autodocs two vars, and replaces some single letter vars.

## Why It's Good For The Game

fixes #72966

## Changelog

🆑
fix: emagged/delta pods properly fly to lavaland
/🆑

* Escape pod early launch fixes

---------

Co-authored-by: Profakos <profakos@gmail.com>
2023-02-17 18:02:46 -08:00
SkyratBot
5f9f60713b [MIRROR] Starlight Polish (Space is blue!) [MDB IGNORE] (#19059)
* Starlight Polish (Space is blue!) (#72886)

<!-- 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

Adds support to underlays to realize_overlays
Ensures decals properly handle plane offsets
Fixes space lighting double applying if it's changeturf'd into. this
will be important later
Makes solar vis_contents block emissives as expected
Moves transit tube overlays to update_overlays, adds emissive blockers
to them

#### Adds render steps

An expansion on render_target based emissive blockers. 
They allow us to hijack an object's appearance and draw it somewhere
else, or even modify it, THEN draw it somewhere else.
They chain quite nicely

Fixes shuttles deleting z holder objects

#### Makes space emissive, makes walls and floors block emissives
The core idea here goes like this:
We make space glow, and give its overlays some color

This way, the tile and space parallax remain fullbright, along with
anything that doesn't block emissives, but anything that does block
emissives will instead get shaded the color of starlight

This requires a bit of extra work, see later

This is done automatically with render relays, which now support
specifiying layer and color (Need to make an editor for these one of
these days)

The emissive blocking floor stuff requires making a second render plate
to prevent double scaling

Also adds some new layering defines for lighting, and ensures all turf
lights have a layer. We'll get to this soon

#### Makes things in space blue

We color them the same as starlight, by taking advantage of space being
emissive
This means that things in space that block emissive will block it
correctly and be colored blue by the light overlay, but space itself
will remain fullbright

This does require redefining what always_lit means, but nothing but
cordons use that so it's fineee


#### Makes glass above space glow, and some other stuff

Glass tiles that sit above space will now shine light with matching
color to the glasses color. This includes mat tiles.

Glass tiles (not mat because they have no alpha) also only partially
block emissives.
Adds a new proc that uses render steps to acomplish this, essentially
we're cutting out bits below X alpha and drawing what remains as an
emissive.

#### Modifies partial space showing to support glow

Essentially, alongside displaying space as an underlay, we also display
a light overlay colored like starlight.
That starlight overlay gets masked to only be visible in bits that do
not contain any alpha.

We also mask the turf lighting to not go into bits that have no alpha,
to ensure we get the effect we want.
This is done with that lighting layer thing I mentioned earlier.

#### Makes appearance realization's list output ordered

I want it output in order of overlay, sub overlay suboverlay, next
overlay
Need to use insert for that

## Why It's Good For The Game

Pretty!
Also having space be emissive is a very very good way to test for fucked
emissive blockers (If it's broken why are we even drawing the overlay)
I know for a fact mob blockers on lizards and socks are kinda yorked, I
think there's more

<details>
<summary>
Old
</summary>


![image](https://user-images.githubusercontent.com/58055496/213916157-d4b38aa7-3ab6-42a4-989f-7bfba2dc2cba.png)

![image](https://user-images.githubusercontent.com/58055496/213916077-637fa288-bbee-477d-aded-730d9683477e.png)

![image](https://user-images.githubusercontent.com/58055496/213916088-0657a8a2-5627-48e2-8c4b-870c90ef2072.png)

</details>


<details>
<summary>
New
</summary>


![image](https://user-images.githubusercontent.com/58055496/213916107-2af74e64-1817-4a44-b528-180a9160cb9e.png)

![image](https://user-images.githubusercontent.com/58055496/213916115-5fa36fcc-b988-4ccf-850e-21c26ed463d0.png)

![image](https://user-images.githubusercontent.com/58055496/213916120-6833187d-b12e-42a7-ac4b-63c56deb71e5.png)

</details>

## Changelog

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

🆑
add: Space now makes things in it starlight faintly blue
fix: Glass floors that display space now properly let space shine
through them, rather then hiding it in the dark
add: Glass floors above space now glow faintly depending on their glass
type
/🆑

<!-- 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: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>

* update modular

* Update _decal.dm

* Update _decal.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-02-12 00:42:28 -08: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
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](9f215c5316)

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](b830002443)

[Ensures lighting backdrops ALWAYS exist for each lighting
plane.](0e931169f7)

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](244b2b25ba)

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.](092581a5c0)

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
SkyratBot
9c5408fe27 [MIRROR] Optimizes changing z level as a ghost by something like 85% [MDB IGNORE] (#19030)
Optimizes changing z level as a ghost by something like 85% (#73005)

<!-- 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

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

Optimizes hud image addition/removal on z change

We were doing a lot of repeated work here, not to mention all the proc
calls.
So I pushed the "operate on loops" behavior into its own proc, so I
could ensure we only do some of this stuff once

This plus some removal of safeties saves 75% of the cost of z level
transitions as a ghost

Prevents double on_changed_z_level calls from ghosts and shuttles

Reacting to z changes used to be done off doMove or one of those
children, timber moved it to Moved, but did not remove the calls that
assumed things like abstract_move wouldn't trigger it

This means that moving up/down as a ghost was causing a double call of
the whole z move stack. Suprised this never broke anything tbh

Makes csv stat tracking actually encode numbers properly, cleans up an
indev comment from plane group code

## Why It's Good For The Game

Speed, and fixes

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2023-01-29 23:50:33 +00:00