Commit Graph

4024 Commits

Author SHA1 Message Date
SkyratBot
7117ad7809 [MIRROR] Refactors fancy type generation (#26415)
* Refactors fancy type generation (#81259)

## About The Pull Request

[Refactors fancy type
generation](3f218ac7b7)

Ok so we have this proc that generates concatenated names for types so
admins have a nice list to sort through.

The trouble is this is done by, for each type, iterating all possible
replacements, and seeing which ones apply (with expensive string
operations)

A clean run of this applied to all datums takes about 3.5 seconds on my
pc.
This sucks.

Ok so can we do better. Well, yes, pretty easily.

Rather then, for each potential type, iterating all the options, let's
build a zebra typecache (a lookup list of type -> string to use), and
use that.
Then we can use a list of replacement -> the bit to tear out to figure
out what to remove.

This works quite well. It does mean that we're doing it based off the
type tree and not type paths, so if we didn't have a replacement for
like, mob, it'd look weird, but we don't have cases like that so it's
fine.

Or well we sorta did, didn't have anything for atom movables or areas,
but I fixed that so sall good.

Anyway, we only need to do this work once. It takes about 0.3 seconds on
my machine, so we can cache it.

Just this on its own would technically slow init, since we have a some
code that's running this proc off static, but we can just not, that's
fine (technically saves init time too since we don't have to burn 0.1
seconds on it anymore).

This brings the cost of generating this list for all datums from 3
seconds to 0.16, assuming we have the static pre generated.

We could in theory pre-generate just like, all the strings?
But I don't think the cached cost is high enough for that to be a real
problem. IDK open to other thoughts

Oh also I had to reorder the strings in that list, cause
zebra_typecacheof has reverse priority. s life

[Updates stat tracking macro to work at world
start](1fbfb701a1)

It for some reason doesn't actually get anything this early, but now at
least the logging would in theory function

## Why It's Good For The Game

Better response times for admins, faster code, more better

* Refactors fancy type generation

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-02-08 21:13:10 +01:00
SkyratBot
b485162a04 [MIRROR] Station Goals are now handled by SSstation instead of a global list (#26313)
* Station Goals are now handled by SSstation instead of a global list (#81177)

## About The Pull Request

You can now get station goals in a slightly better way over using a
`locate() in` call on a global list.
The Meteor Satellite goal no longer stores a giant list of ALL OBJECTS
in view. And now correctly only counts turfs.
## Changelog
🆑
fix: Meteor Satellites no longer erroneously count every piece of paper
as a protected turf.
fix: As a result the station goal is slightly more difficult
/🆑

---------

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

* Station Goals are now handled by SSstation instead of a global list

* Will it work? I do not know. But it compiles.

---------

Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-08 16:21:12 +01:00
SkyratBot
11b83c5c2f [MIRROR] Newspapers now use TGUI (#26243)
* Newspapers now use TGUI (#80991)

## About The Pull Request

Newspapers work as a static newscaster that is not affected by things
like D-notices and changing wanted issues after its been printed. It
doesn't store comments or get any updates after its been printed.
You can also scribble on the paper to leave notes on a specific page,
which is a feature I have never seen in my life but it is still here I
guess.

Minor things I've added:
- Sound effect when printing the newspaper in the first place
- 2 second do-after when scribbling just for some player feedback and
consistency
- Balloon alerts
- Context tips for scribbling and burning

I also fixed an issue with wanted issues on newscasters when there isn't
an image.
As a minor note, I replaced the instances of ``content`` in Buttons I
saw in newscaster's UI because it's marked as deprecated.

Too lazy to take a video sorry

![image](https://github.com/tgstation/tgstation/assets/53777086/6944965e-e949-4c22-a6a2-1dbe2f2d09c4)

![image](https://github.com/tgstation/tgstation/assets/53777086/5af44877-6170-424d-9766-46d1ad9f77be)

![image](https://github.com/tgstation/tgstation/assets/53777086/5c5cdfc5-541a-417e-a60d-9522227d0687)

## Why It's Good For The Game

Fixes an issue with newscasters and makes newspapers use a nice TGUI
that feels more responsive than before.
Helps further https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA even more.

## Changelog

🆑
refactor: Newspapers now use TGUI.
fix: Fixed the newscaster's wanted section showing a non-existent photo.
/🆑

* Newspapers now use TGUI

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-01-25 23:01:58 -05:00
SkyratBot
ab5a4d0f99 [MIRROR] split area.contained_turfs up by zlevel, make init 10 seconds faster (#26161)
* split area.contained_turfs up by zlevel, make init 10 seconds faster (#80941)

## About The Pull Request

Situation: areas have a list of all turfs in their area.

Problem: `/area/space` is an area and has a 6 to 7 digit count of turfs
that has to be traversed for every turf we need to remove from it. This
can take multiple byond ticks just to preform this action for a single
space rune

Solution: split the list by zlevel, and only search the right zlevel
list when removing turfs from areas.

replaces `area.get_contained_turfs()` with a few new procs:

* `get_highest_zlevel()` - returns the highest zlevel the area contains
turfs in. useful for use with `get_turfs_by_zlevel`
* `get_turfs_by_zlevel(zlevel)` - returns a list of turfs in the area in
a given zlevel. Useful for code that only cares about a specific zlevel
or changes behavior based on zlevel like lighting init.
* `get_turfs_from_all_zlevels()` - the replacement for
`get_contained_turfs()`, renamed as such so anybody copying/cargo
culting code gets a hint that a zlevel specific version might exist.
Still used in for loops that type checked so byond would do that all at
once
* `get_zlevel_turf_lists()` - returns the area's zlevel lists of lists
but only for non-empty zlevels. very useful for for loops.

The area contents unit test has been rewritten to ensure any improper
data triggers failures or runtimes by not having it use the helpers
above (some of which ensure a list is always returned) and access the
lists directly.

* split area.contained_turfs up by zlevel, make init 10 seconds faster

* eeyes

* Update area_spawn_subsystem.dm

* Unshits turf contain code slightly (#81023)

Literally just implements my reviews from #80941 
I am frankly a smidge pissed that the pr was merged without them being
handled. No code is worth merging past known issues, and if the author
is just gonna dip then that's life.
I don't like privileging mso on stuff like this, especially because
frankly I'm kinda mad at him rn but also because when a pr is made the
onus on finishing it falls to the person who made it.

Should not need to clean up after someone as a maintainer, and shouldn't
normalize doing it. I'm not like mad at zypher directly mind he offered
to do this too, just the idea he was espousing here.

---------

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-01-21 03:34:23 +00:00
SkyratBot
782a04859a [MIRROR] Macro Optimizes Map Saving (100x) DO NOT CHURN STRINGS Edition (#26189)
* Macro Optimizes Map Saving (100x) DO NOT CHURN STRINGS Edition  (#80845)

## About The Pull Request

Yello!
This one is reasonably quick, tho I did some fixes too

This is the big one, fixes the buildmode tool sometimes locking disabled
for the whole round.
We do this by replacing the static var on buildmode with global var and
a global proc
This keeps a harddel on the buildmode datum from permalocking is_running
to TRUE

Also makes flipping the var BACK if something breaks significantly
easier for admins, so that's nice

Alright, smaller things now

Fixes lists of numbers failing to encoded improperly This was fixed on
shiptest, we failed to actually port their most recent revision
Fixes the shuttle flag not actually working because it used istype
instead of ispath
Changes obj_blacklist to a typecache for optimization's sake
Renames/moves some vars around to prevent weird double typing things
Removes a checktick in key gen, it's just costing more time then it
would save in overtime
Properly handles lists. We were only doing var encoding one layer deep,
need to do it alll the way down

Alright, now the optimizations

This proc is fucking HOT, and it's for really dumb reasons

This is a text gen proc, and it makes the mistake of generating text and
concatinating it with MORE text.
This is HORRIFICALLY EXPENSIVE because byond caches strings (can only be
one of each) and string churn fucks up that caching system something
fierce
Moving from strings to lists of strings we join at the end takes us from
like idk 100 seconds to save bare metastation to like 1.5
This is applied basically everywhere for obvious reasons

While I'm here, storing keys in a flat list and then using find to find
them, then using that index to lookup into another flat list is a bit
silly. Let's just make it an assoc list. Faster lookup, cleaner.

Oh also rather then iterating over all the vars on an object, let's
iterate over just the ones we care about yeah?

Let's see... no sense genning a key we'll never use, and having suffixes
be often non existent is silly just embrace the slight mess.

That's it I think, this takes us from 100 seconds to save metastation to
2.5 seconds to save ALL of metastation (I removed the vars limiter so I
could make sure var saving didn't fuck me up)

## Why It's Good For The Game

Cleans up some issues that we failed to port the fixes for, MASSIVELY
optimizes this (so it can finish in like 5/10 seconds and not 300!) and
ensures admins can always use the thing and don't risk dropping their
pet buildastation to the void.

Worth noting, this tool really should not be used for station mapping
outside an event context. It produces sorta buggy var edits, and WILL
fail to pull over context for shit. Please don't use it as such

Profiles (csv files I promise)

[Before](https://github.com/tgstation/tgstation/files/13853313/profiler.json)

[After](https://github.com/tgstation/tgstation/files/13853271/profiler.json)

I'd include my line by lines but I don't know how much you'd get out of
them. Here's an image tho

![image](https://github.com/tgstation/tgstation/assets/58055496/3f3148c5-8b1e-4bda-aa65-3983f9944a91)

## Changelog
🆑
fix: The map saving tool will no longer lock up and prevent all further
action at random
fix: Map saving now takes on the order of seconds, not minutes
fix: Fixes an issue with lists that caused strongdmm to report saved
maps as broken
/🆑

* Macro Optimizes Map Saving (100x) DO NOT CHURN STRINGS Edition

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-01-20 23:39:52 +01:00
SkyratBot
e9d215ee10 [MIRROR] Remove unused output var from sql_message_system.dm [MDB IGNORE] (#26131)
* Remove unused `output` var from `sql_message_system.dm` (#80951)

## About The Pull Request
Fixes this
![Screenshot
(382)](https://github.com/tgstation/tgstation/assets/110812394/39f8ae38-0632-4429-9d46-3355d16b9e86)

## Changelog
N/A

* Remove unused `output` var from `sql_message_system.dm`

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2024-01-16 19:37:25 +00:00
SkyratBot
ebc069d742 [MIRROR] Optimizes Reftracking (Bigly) (Plus harddel fixes) [MDB IGNORE] (#26138)
* Optimizes Reftracking (Bigly) (Plus harddel fixes) (#80443)

## About The Pull Request

### Reftracking BS

Alllright so reftracking is slow, really really slow.
That's a problem for me, both because I want it to be fast so I can more
efficiently torture players by running it on live, but also because it
impedes both local and CI runs.

So I've set out to micro optimize the DoSearchVar proc, one of the
hottest in the game.
I've done this in a few different ways.

#### The simple shit

Removing redundant proc args
Yeeting assoc arg setting (extra cost)
Moving if statements around to prioritize the more common case
Ignoring empty lists.

#### The not simple shit

Throwing our snowflake list checking into the sun
(Background, byond has some special lists that cannot be accessed like
an assoc list, trying to will lead to runtimes)
The way we handle this involves inspecting their ref string, and it eats
a LOT of time.

Faster then to mark all the lists we know are special by var name, and
then use try/catch to detect and silence anything that sneaks through
(this is on the order of like 1/3 per run, kinda curious what they are
tbh)
Thanks to MSO for the idea for this btw.

Removes the vars and logic that tied ref searching to clients.
It's not how this code is used, and it slows everything else down for
really no reason

Added support for handing in a known "hanging reference" count, and then
searching for that.
This lets us early exit the ref search if we find everything we were
looking for, which is REALLY powerful, and why I asked for refcount() in
the first place.

### Harddel Fixes

[Fixes some harddels w gulag stuff born of the 515 one way ref
issues](046d7daa03)

[Ensures proximity cameras clean their ref to their proximity datum if
it's
deleted](ff607e9ccb)

[Deleting a pipe connected via the gas_machine_connector datum to a
machine should also delete that machine (harddel
fix)](9eecca22e7)
## Why It's Good For The Game

All this combined speeds up refsearching massively, on the order of
hundreds of seconds, and makes it far less time consuming for both CI
and running on live.
I'll be bullying some servers semi soon, want to see what I can cut out.

* Optimizes Reftracking (Bigly) (Plus harddel fixes)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-01-16 17:33:15 +01:00
SkyratBot
4b6d69046c [MIRROR] fixes null plane debuggers for admins [MDB IGNORE] (#26114)
* fixes null plane debuggers for admins (#80939)

## About The Pull Request
Yeah, why would we delete the plane debugger while the admin is active?

## Why It's Good For The Game
Broken debugging tool.

## Changelog
N/A

* fixes null plane debuggers for admins

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-14 14:24:07 +00:00
SkyratBot
47f8ddd4b9 [MIRROR] Fixes the "Saw this admin message" button not working [MDB IGNORE] (#26107)
* Fixes the "Saw this admin message" button not working (#80908)

## About The Pull Request

Wrong fuckin name brother (also topic doesn't automake textnums into
nums)

## Why It's Good For The Game

Closes #80020

## Changelog
🆑
admin: Confirming that you have read an admin message now uh, works.
it's been 2 years bros
/🆑

* Fixes the "Saw this admin message" button not working

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-01-14 06:35:58 +01:00
SkyratBot
d55095b95c [MIRROR] Adds a Debug command to stop all weather. [MDB IGNORE] (#26073)
Adds a Debug command to stop all weather. (#80848)

Atomizing out of #78524 as a result of that PR being too big and this
was quite easy to do.

This adds a debug (admin) command that allows you to stop all weather
effects that are going on across the map in a given instance. This is
useful for when you are testing something on lavaland and need the storm
to stop, or if you otherwise had some other kind of weather effect
interfering with testing something. It's worth noting this directly
calls end() on the active weather effect, meaning that for more
complicated weather that may have different side effects, it may need
some extra finess, but as of current writing no weather does anything
interesting in their wind_down() procs.

God weather is so annoying while testing lavaland, plus this is just
straight admin and testing tooling so there's no harm.

🆑
admin: Added a new admin verb that ends all active weather within the
weather subsystem.
/🆑

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2024-01-12 03:47:36 +01:00
SkyratBot
c41dd0e2f4 [MIRROR] Saves some free lag by removing some in area (in world) loops [MDB IGNORE] (#25977)
* Saves some free lag by removing some in area (in world) loops (#80644)

## About The Pull Request

Goes through and changes some `in area` / `in a` loops to use
`get_contained_turfs` to cut down on `in_world` loops. Saves some free
lag.

## Changelog

🆑 Melbert
fix: Some things which affect everything in an area are less laggy, the
"all lights are broken" station trait especially
/🆑

* Saves some free lag by removing some in area (in world) loops

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-01-04 16:59:25 +00:00
SkyratBot
4d019655c1 [MIRROR] Make server announcement OOC [NO GBP] [MDB IGNORE] (#25975)
* Make server announcement OOC [NO GBP] (#80741)

## About The Pull Request

Makes the server admin announcement use tgchat's OOC colors and stops
using announcement.ogg, so players don't mistake it for a Centcom
announcement.

![image](https://github.com/tgstation/tgstation/assets/83487515/32b965a3-58df-45d5-9238-fdb954c8448e)

![image](https://github.com/tgstation/tgstation/assets/83487515/3174d8c9-4194-4a96-844b-d92a6723dce2)

## Why It's Good For The Game

Melbert was right.

## Changelog

🆑 LT3
fix: OOC announcements will now be in shown in OOC colors
/🆑

* Make server announcement OOC [NO GBP]

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2024-01-04 16:58:56 +00:00
SkyratBot
d270fb2b2d [MIRROR] Fixes some runtimes in pathfinding (and bonus) [MDB IGNORE] (#25969)
* Fixes some runtimes in pathfinding (and bonus) (#80735)

## About The Pull Request

Found these while running a test server all night. I am not sure if the
second one really causes issues because `.` is being set to something
but it is is certainly polluting the runtime logs.

Also fixes an unrelated runtime with one of the admin verbs, where it
would runtime if you canceled out of the input prompt.

## Why It's Good For The Game

Less runtime spam.

![IklvTShHJB](https://github.com/tgstation/tgstation/assets/13398309/2441ad6b-67b7-4d65-83a3-eabba4516fe9)

![veGkt0Eyul](https://github.com/tgstation/tgstation/assets/13398309/e99eced9-89e6-4065-93d9-578795ddbd8d)

## Changelog

🆑
fix: fixes some runtimes in pathfinding code, as well as one in the give
direct control admin verb
/🆑

* Fixes some runtimes in pathfinding (and bonus)

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-01-04 16:57:38 +00:00
SkyratBot
6cefa2b9ab [MIRROR] Map export admin verb/buildmode [MDB IGNORE] (#25965)
* Map export admin verb/buildmode (#80326)

## About The Pull Request

The base for the PR was taken from
https://github.com/shiptest-ss13/Shiptest/pull/206 and thank them for
that.

The point of this verb is to save pieces of the map to your computer for
further use. It's not that necessary, but rarely, it can be useful.

[Video](https://i.imgur.com/M6mdDTC.mp4)

## Why It's Good For The Game

Transferring buildings from one round to another, preserving the decor
made in the game.

## Changelog
🆑 Vishenka0704
admin: The ability to export a part(or z-level) of the map has been
added.
/🆑

* Map export admin verb/buildmode

---------

Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
2024-01-02 22:13:11 +00:00
SkyratBot
8eeca186df [MIRROR] Cleans up some extra args in Destroy() [MDB IGNORE] (#25907)
* Cleans up some extra args in Destroy() (#80642)

## About The Pull Request

After https://github.com/tgstation/tgstation/pull/80628, these shouldn't
be needed anymore right?

## Why It's Good For The Game

Cleans up some vestigial code

## Changelog
EDIT: Not player-facing.

* Cleans up some extra args in Destroy()

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-12-30 01:21:26 -05:00
Gandalf
888e1c82c9 Adds Epsilon alert level (#25857)
* yes

* tyes
2023-12-25 18:43:39 -05:00
Gandalf
e2285feacd https://github.com/Skyrat-SS13/Skyrat-tg/pull/25828 2023-12-25 00:16:37 +00:00
SkyratBot
922ec66ee7 [MIRROR] Better Ghost Selection [MDB IGNORE] (#25789)
* Better Ghost Selection

* yes

* oldcode updates and compat

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-25 00:11:10 +00:00
Gandalf
9361376345 PDA update (Messenger works while dead, Microwave works, etc). (#80069) [REMIRROR] (#25829)
* PDA update (Messenger works while dead, Microwave works, etc). (#80069)

This is an update that touches many more things all at once (compared to
my other PRs) meant to make PDAs in general feel more consistent and not
take away from one of the experiences we want to encourage: interaction
between players.

1. Replaced all checks of a 'pda' with a 'modular pc'. This means
technically (though not done in-game currently) other modpcs can hold an
uplink, and microwaves can charge laptops.
2. Speaking of microwave, they now don't break and require
deconstruction if the cell is removed mid-charge.
3. When a Mod PC is out of power, it will now allow the Messenger to
work (which now also doesn't consume any additional power), if the app
exists on the PC. Here's a video demonstration

https://github.com/tgstation/tgstation/assets/53777086/7ae12f81-a271-49b8-95fa-2ba54d2e2d1f

4. Flashlights can't be turned on while the cell is dead
5. I replaced a bunch of program vars with ``program_flags`` and renamed
``usage_flags`` to ``can_run_on_flags``.
6. Added a debug modPC that has every app installed by default. Mafia
had some issues in the past that were unknown because Mafia wasn't
preinstalled with any tablet so was never in create & destroy nor in any
other unit test. This was just an easy solution I had, but PDAs should
get more in-depth unit tests in the future for running apps n stuff- I
just wanted to make sure no other apps were broken/harddeling.

Currently when a PDA dies, its only use is to reply to PDA messages sent
to you, since you can still reply to them. Instead of just fixing it and
telling players to cope, I thought it would be nice to allow PDA
Messenger to still work, as it is a vital app.
You can call it some emergency power mode or whatever, I don't really
mind the reason behind why it is this way.

When I made cells used more on PDAs, my main goal was to encourage
upgrading your PDA and/or limiting how many apps you use at once, I did
not want this to hit on players who use it as a form of interaction.
This is the best of both worlds, I think.

The rest of the changes is just for modularity, if some downstream wants
to add tablets, phone computers, or whatever the hell else, they can
still get just as far as PDAs should be able to get to, hopefully.

🆑
add: PDAs with a dead power cell are now limited to using their
Messenger app.
fix: Microwaves now stop charging PDAs if the cell was removed
mid-charge.
fix: Microwaves can now charge laptops.
fix: PDA Flashlights can't be turned on while the PDA is dead.
fix: You can now hold a laptop up to a camera (if it has a notekeeper
app installed) like PDAs already could.
/🆑

---------

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

* ok

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-12-24 23:20:11 +00:00
SkyratBot
218fcdb8d5 [MIRROR] adds head of staff job flag [MDB IGNORE] (#25705)
* adds head of staff job flag

* Update jobs.dm

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 23:05:59 +00:00
SkyratBot
d21f0a63f5 [MIRROR] Remove /datum/game_mode, we SSdynamic now [again] [MDB IGNORE] (#25371)
* Remove /datum/game_mode, we SSdynamic now [again]

* Modular

* OLD CODE + repath

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:57:35 +00:00
SkyratBot
d718af9913 [MIRROR] Bridge Assistant Station Trait [MDB IGNORE] (#25667)
* Bridge Assistant Station Trait

* Diffs

* fixes

* Update job_traits.dm

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:54:11 +00:00
SkyratBot
0f1761fa40 [MIRROR] Color matrix defines for filters and identity [MDB IGNORE] (#25823)
* Color matrix defines for filters and identity (#80320)

This PR converts the procs `color_matrix_identity`,
`color_matrix_lightness` and `color_matrix_contrast` into
defines/macros. Also adds in defines for common color matrix filters.

I don't like how `color_matrix_identity` is a one-line proc with no arg.
Also these help people identify the sort of color matrix filter is being
used.

* Color matrix defines for filters and identity

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-24 20:58:26 +00:00
SkyratBot
b79167c173 [MIRROR] Organ movement refactor *Un-nullspaces your organs* [MDB IGNORE] (#25530)
* Organ movement refactor *Un-nullspaces your organs*

* Fix conflicts

I checked the conflicts on the two weird conflicts and no previous TG pr touches them i assume its just github being github because those shoulden't be conflicts *shrug

* Fix #1 uhh...this is going to be a long one

* Fix #2 Modular Movement Flags

* Fix #3 It builds now

* Fix #4 Oh god it builds now, I missed some things

* Fix #5 No more Runtimesplosion Now time for Synths

* Update nightmare_organs.dm

* on_mob_insert

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

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

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

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

* bro the fucking brain does not go into the chest.

* seriously? undocumented code causing shit. if it breaks ghouls, so be it.

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 19:06:09 +00:00
SkyratBot
07127f688e [MIRROR] Admin server announcement uses new announcement span [MDB IGNORE] (#25737)
* Admin server announcement uses new announcement span (#80403)

## About The Pull Request

The current admin announce is just notice span text, which is easily
missed mixed in with all the other white noise of the chat box.
Currently admins have to fill it with linebreaks or manually add their
own spans to increase visibility.

This updates the admin announcement proc to use the new alert box divs,
similar to other announcements, making it more visible.

## Why It's Good For The Game

Admin server-wide announcements are generally things you want the
players to notice

![image](https://github.com/tgstation/tgstation/assets/83487515/460bacbb-3a7f-4855-9e16-24b1533f61bd)

## Changelog

🆑 LT3
admin: Server wide admin announcements now use an alert box like other
announcements
/🆑

---------

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

* Admin server announcement uses new announcement span

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-12-19 14:41:34 -06:00
SkyratBot
70c12a6baf [MIRROR] SDQL2 Query doesn't automatically bake in span_admin() [MDB IGNORE] (#25596)
* SDQL2 Query doesn't automatically bake in `span_admin()` (#80221)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/34697715/81d1b517-6b69-4303-b389-5c41f0b806c6)

this shit is UGLY to see in Discord, let's not automatically bake in
`span_admin()` every time we send this stuff out and only use it in the
context where it matters (sending the message results `to_chat()` to an
admin who is actually in the game)

## Changelog

irrelevant

* SDQL2 Query doesn't automatically bake in `span_admin()`

---------

Co-authored-by: san7890 <the@san7890.com>
2023-12-13 08:34:17 -05:00
SkyratBot
ef6fe48e08 [MIRROR] Refactors Object Possession into a Component (moar modular, less /mob vars) [MDB IGNORE] (#25534)
* Refactors Object Possession into a Component (moar modular, less `/mob` vars) (#80160)

## About The Pull Request

We have two verbs that allow any given mob to take control of an object
and move it ephemerally, `/proc/possess()` and `/proc/release()`. These
ones leveraged two vars present on every `/mob`: `name_archive` and
`control_object`. I don't like having vars clog up my VV and this just
injected snowflake behavior in a lot of spots - let's just make it a
component that'll clean everything else up.

This also opens up the ability to have more objects be under mob control
without giving someone verbs that spit out to the blackbox as an admin
verb + logs + message admins but that's a later thing. This just subs in
the behavior in a nice way.

Also, since it's a component, I added a small QoL that we can support
now: A screen alert that allows you to get out of the possession early
without navigating the stat panel for the specific verb. I think it's
neat. You can also trigger the aghost keybind if that's something you
want as well.

Also also, nothing actually ever cleaned up `control_object` by setting
it to null. This means that in the old framework, if a mob got qdelled
during a possession, that would have triggered a hung ref harddel. That
won't happen anymore.
## Why It's Good For The Game

Two less variables taking up crud space in the VSC debugger + view
variables panel. Better behavior injection that is far more reusable.
Component handling this behavior allows for better extensibility of this
function in the future.

![image](https://github.com/tgstation/tgstation/assets/34697715/a84238af-e014-4cff-9b4b-6cbaa36c44fd)
## Changelog
🆑
admin: Object Possession has been reworked, please report any potential
bugs.
qol: Object Possession should now throw a screen alert for you to
unpossess the object instead of you having to search the stat-panel for
the "release obj" verb. You can still use the verb but it's a lot nicer
now. Aghosting will also work now.
/🆑

* Refactors Object Possession into a Component (moar modular, less `/mob` vars)

* Refactor hydra quirk

The name_archive var is gone, let's store it in the quirk instead

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-09 21:58:57 -05:00
SkyratBot
4433c8491d [MIRROR] Turns the "Admin Permission Elevation Notification" into a macro [MDB IGNORE] (#25474)
* Turns the "Admin Permission Elevation Notification" into a macro (#80149)

## About The Pull Request
Turns this boilerplate message into a centralized macro because this
code is important, but not so important that every coder know the nitty
gritty details of it. In case someone wants to add more logging/handling
(or update the message), there's now a central macro to update for all
nine events in which we check.

This shouldn't break anything because it's the exact same thing we were
doing previously and the early return checks are still all there, but it
does work on my machine regardless ✔️

![image](https://github.com/tgstation/tgstation/assets/34697715/db4405d3-e57d-4c29-8a01-b32ba185041b)

* Turns the "Admin Permission Elevation Notification" into a macro

---------

Co-authored-by: san7890 <the@san7890.com>
2023-12-06 21:59:06 -05:00
SkyratBot
6001394929 [MIRROR] Reworks invisimin variable to a trait [MDB IGNORE] (#25440)
* Reworks `invisimin` variable to a trait (#80121)

## About The Pull Request

This was a variable that existed on the `/mob` level despite only ever
being altered in one place. Perfect to just make a trait since it's all
managed in one spot anyways (and no other code is really reliant on this
flag being flipped, it's just for the code to know to add/remove
invisimin status).

I also tweaked some messages so they could be more consistent, lmk if
that should be changed
## Why It's Good For The Game

Less not-useful stuff to scroll through in View Variables, better
scoping of a variable to an intended location.
## Changelog
Not necessary

* Reworks `invisimin` variable to a trait

---------

Co-authored-by: san7890 <the@san7890.com>
2023-12-05 02:32:07 -06:00
SkyratBot
9c60ff1de1 [MIRROR] Removes Clone Damage [MDB IGNORE] (#25429)
* Removes Clone Damage

* Update blackbox.dm

* Modular

* Update schema

* Update database_changelog.md

* More modular deprecated clone things

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-04 23:01:54 -05:00
SkyratBot
801484bcab [MIRROR] Moves the new "Turn Target into MMI" verb into a VV dropdown option and rewrites the code around it. [MDB IGNORE] (#25413)
* Moves the new "Turn Target into MMI" verb into a VV dropdown option and rewrites the code around it. (#80097)

## About The Pull Request

Removes the Turn Target into MMI verb and re-adds it as a VV dropdown
option.

Rewrites the code around this to support what is effectively an
admin-forced action, which MMI code previously didn't support cleanly.
## Why It's Good For The Game

#79896 added a new debug verb, unfortunately because of how that debug
verb was defined (it has args for a target mob in the proc params) it
automatically gets added to the right click context menu instead...

![image](https://github.com/tgstation/tgstation/assets/24975989/26529f7c-4393-45cc-a8e2-7aa2405384a2)

Which is not ideal for admins as they're one misclick away from just
deleting a mob.

This moves it to the VV dropdown menu for humans and rewrites the code
behind it, which previously relied on the MMI attackby proc which
expects a user and thus has side effects as a result.

This new code is more suited to an admin force-insertion than the old
code which removed the brain and forced the now brainless mob to insert
its former brain into the MMI (with the potential to fail on user input
for the now brainless mob).

![dreamseeker_VUBPYXOmEJ](https://github.com/tgstation/tgstation/assets/24975989/89e8b1ab-15f7-4187-a5db-b064b0861014)
## Changelog
🆑
admin: Removed the "Turn Target into MMI" right click context menu verb
entirely, and instead added the same command as a VV dropdown on human
mobs.
/🆑

* Moves the new "Turn Target into MMI" verb into a VV dropdown option and rewrites the code around it.

---------

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2023-12-03 19:02:31 -05:00
SkyratBot
1885856425 [MIRROR] Adds Mob Tag data to log messages + player panel [MDB IGNORE] (#25366)
* Adds Mob Tag data to log messages + player panel

* Update _logging.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-03 02:07:16 -05:00
SkyratBot
e06ec3e714 [MIRROR] Bumps compile to 515 [MDB IGNORE] (#25257)
* Bumps compile to 515 (#79134)

## About The Pull Request

LSP supports it, let's GOOOOOO
I've removed the 515 tests since they're stable, alongside the libcall
wrapper. left the rustgcall wrapper cause yaknow memes
Just removed all the 515 and 514 particular define wrappers. gaming

## Changelog
🆑
server: Minimum compile version has been bumped to 515. clients still
support 514 but we're gonna start using 515 restricted features for
serverside now.
/🆑

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>

* Bumps compile to 515

* Fixes a TGS regression in its API

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-12-02 21:48:21 -05:00
SkyratBot
6c4c965ea4 [MIRROR] Changes occurrences of recieve in code to receive [MDB IGNORE] (#25393)
* Changes occurrences of `recieve` in code to `receive`

* Fix conflict

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
2023-12-02 20:40:07 -06:00
SkyratBot
fdaaa7b78b [MIRROR] Fix bug where MMI's cannot open doors [MDB IGNORE] (#25367)
* Fix bug where MMI's cannot open doors (#79896)

## About The Pull Request

While #69556 did fix it for posi brains. it did not account for MMI's
meaning only posi brains got fixed

as a bonus, im throwing in a shitty debug command because MMI's put all
there logic in attackby

## Why It's Good For The Game

bugs bad

## Changelog
🆑
admin: A new debug verb to turn yourself into an MMI(almost the funniest
thing)
fix: MMI's inside mechs can now properly open doors like there posibrain
counterparts
/🆑

---------

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

* Fix bug where MMI's cannot open doors

---------

Co-authored-by: Autisem <36102060+Autisem@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-12-01 17:07:25 -05:00
SkyratBot
faddb632cc [MIRROR] turns triple ai mode into a station trait [MDB IGNORE] (#25346)
* turns triple ai mode into a station trait (#79995)

## About The Pull Request
removes the triple ai mode secret and makes it into a station trait

## Why It's Good For The Game
it seems to be an interesting way to spice up the gameplay of a given
round

## Changelog
🆑
add: turns triple ai mode into a station trait
/🆑

* turns triple ai mode into a station trait

* Set the weight to 0

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com>
2023-11-29 23:39:33 -06:00
SkyratBot
df861dc697 [MIRROR] Adds localhost case to the Player Panel [MDB IGNORE] (#25333)
* Adds `localhost` case to the Player Panel (#79999)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/34697715/2fd2b8fd-dc86-4150-8f0f-b8ac6a5dc03c)

This always confused me debugging on local, the thing in the parenthesis
is supposed to the be the IP Address of the client currently in the mob.
However, local hosts have a `null` IP Address (BYOND thing). So, let's
add handling to this so this little thing won't be so confusing anymore
## Why It's Good For The Game

![image](https://github.com/tgstation/tgstation/assets/34697715/b365e107-cfcf-497c-92da-f5930666cbb0)

Better.
## Changelog
Not really relevant.

* Adds `localhost` case to the Player Panel

---------

Co-authored-by: san7890 <the@san7890.com>
2023-11-29 16:02:41 -05:00
SkyratBot
77019ace50 [MIRROR] Fixes secrets panel disease outbreak button [MDB IGNORE] (#25304)
* Fixes secrets panel disease outbreak button (#79946)

## About The Pull Request

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

Hadn't been updated to the new system where candidates are found during
round event setup. Changes the failure message for clarity on why it
fails, and sends a message to admins same as a successful outbreak.

## Changelog

🆑 LT3
fix: Disease outbreak: classic spawned from the admin secrets panel no
longer fails to start
fix: Disease outbreak provides a message about why it fails to start
/🆑

---------

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

* Fixes secrets panel disease outbreak button

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2023-11-27 23:57:28 -05:00
SkyratBot
84e42fd0eb [MIRROR] Removes some code soul (IF YOU ARE COPY PASTING THIS...), replaces it with a macro [MDB IGNORE] (#25272)
* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro (#79935)

## About The Pull Request

Replaces all instances of `SSblackbox.record_feedback\("tally",
"admin_verb", 1, (.+)\)` with `BLACKBOX_LOG_ADMIN_VERB($1)`

This makes so the funny comment isn't necessary.

It also reveals one location which someone did not heed the comment, the
`debug_controller` proc copy+pasted the line but did not change the
fourth argument. PEOPLE DON'T READ!

* Removes some code soul (`IF YOU ARE COPY PASTING THIS...`), replaces it with a macro

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-27 01:02:37 -05:00
SkyratBot
9c5fcda897 [MIRROR] Kills spec_updatehealth, replaces it with use of COMSIG_LIVING_HEALTH_UPDATE [MDB IGNORE] (#24152)
* Kills `spec_updatehealth`, replaces it with use of `COMSIG_LIVING_HEALTH_UPDATE`

* Diffs

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-21 14:31:52 -05:00
SkyratBot
5540632705 [MIRROR] Reworks transformation sting to be temporarily in living mobs, forever in dead mobs [MDB IGNORE] (#24002)
* Reworks transformation sting to be temporarily in living mobs, forever in dead mobs

* Modular updates

* Recaches the icons generated in the `changeling` unit test

* Pain

* More tweaks

* Disable unit test

* Let's see if we can pass test temporarily

* Makes transformation sting unobtainable more cleanly

* Unit test

* Cursed proc

* Kill the unholy copy pasta

Seriously this stuff is just awful. This is not maintainable.

* test this

* Update comments

* Fixing the screenshot test, maybe?

* grrr

* Update changeling.dm

* Attempt to fix this nonsense

* Update changeling.dm

* Update changeling.dm

* Update changeling.dm

* Update dna.dm

* Fixes it?

* Screenshot test

* Update _traits.dm

* Update _traits.dm

* Fix this

* Update dna.dm

* Update dna.dm

* Hmm

* This proc needs a new name

* I want to scream but I have no mutant parts

* Fix

* Update species.dm

* Update species.dm

* Update species.dm

* Update species.dm

* Some touch ups

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
2023-11-21 13:21:37 -05:00
Bloop
17cba0dccf [MISSED MIRROR] Puts all traits in the globalvars file + CI Testing (#79642) (#25131)
* Puts all traits in the globalvars file + CI Testing (#79642)

Fixes #76349

I didn't know that people needed to add any new traits to a global list
so they can be easily read in View Variables, and was pretty shocked to
find out many other people didn't know it was a thing. Let's make it a
thing by testing it using a new CI Python Linter to check this. But oh
no-

![image](https://github.com/tgstation/tgstation/assets/34697715/c093f1a8-00ce-40a6-8e1d-f344107ce7b8)

There were about 200+ missing traits. Alright, so let's do the
following:

* Move trait defines to their own dedicated folder in the `_DEFINES`
folder.
* Split up the traits mega-file into different files, for better
organization. One for the macros, one for the sources, and a few for the
"trait declarations"
* Run the linter a load of times and add everything to the globalvars
file, removing anything that's no longer used and figuring out where the
best categorization of it is. also minor code improvements. also rename
all of the ones that look weird. also fix list indentations
* Also alphabetize the lists because it's easy
* Move everything to a new `traits_by_type` list, while keeping the
admin one the way it is for the time being while we figure out a better
way to show that list to admins.
* Profit

Mapping trait injectors will now work for any type of trait. You
shouldn't add any trait via this injector though, but you're no longer
limited to coders remembering to add it to that critical list you
needed.

Lays the framework for a better view variables experience. This work is
too lengthy to presently do, but hopefully we can get this done sooner
rather than later. we will need a code-accessible way to view these
traits for such a framework to be implemented, so let's just do that.

Future steps are to break down the mega-declarations file into a folder
full of separate files by typepath, but that requires a lot of auditing.
Does need to happen one day though, there's a lot of mob traits mingled
with datum traits and auuugh we gotta do this later this PR is already
massive.

there's probably ways to game this but this catches _my_ mistakes so
good luck to everyone else (it should work for 99% of everyone)

Nothing applicable to players. However, to mappers, the mapping trait
injector should always be able to add any kind of trait (which is rather
good for the times when you need it).

* Update tgstation.dme

* Update _traits.dm

* Comment these out for now

---------

Co-authored-by: san7890 <the@san7890.com>
2023-11-19 18:12:03 -05:00
SkyratBot
48bfa3b337 [MIRROR] Adds an admin button to send nuke ops reinforcements [MDB IGNORE] (#25124)
* Adds an admin button to send nuke ops reinforcements (#79695)

## About The Pull Request

Often times I want to send a second wave of nukies if the first wave
completely flukes, but sending reinforcements is hard (I don't want to
trigger a whole new nuke team, the Infiltrator is deployed to NT space,
etc).

So I add a button to check-antagonists that allow admins to one-click
send more nuke ops.

![image](https://github.com/tgstation/tgstation/assets/51863163/a36484b7-9d8b-4741-a09d-e9c4f8303c52)

I also took the opportunity to polish up the other admin button,
particularly giving a reminder if it's being forced under the pop limit.

## Changelog

🆑 Melbert
admin: Adds a button to check-antagonists that allows admins to send
Nuke Op reinforcements with a single button
admin: Nuke Ops check antagonists now show you full war status (declared
/ not declared)
fix: Fixes multiple nuke teams (or an admin) being able to declare war
at once
/🆑

* Adds an admin button to send nuke ops reinforcements

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-19 14:37:38 -05:00
SkyratBot
5e6b28b5cc [MIRROR] Fixes Invisimin to not show up on HUDs [MDB IGNORE] (#25000)
* Fixes Invisimin to not show up on HUDs (#79605)

## About The Pull Request

Adds _**2 lines of code**_ that enables and disables being able to be
spotted with sec/med huds.
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/72198 and
https://github.com/tgstation/tgstation/issues/36709 since they're the
same issue. This has been around for almost a year now which suggets
that maybe this verb wasn't being used much anyways. But fixes are fixes
and fixed code is healthy code.

## Changelog
🆑 TwistedSilicon
fix: invisimin verb now makes you invisible to all HUDs too! No more
floating healthbars or job identifiers giving you away while you sneak
around.
/🆑
<details>
  <summary>Before</summary>

https://github.com/tgstation/tgstation/assets/106436013/02b7999b-ae7b-4f79-bd0e-d353d0026db2

</details>
<details>
  <summary>After</summary>

### MedHuds

https://github.com/tgstation/tgstation/assets/106436013/0845c623-8ea1-4c95-825b-008d0be1a428

### SecHuds

https://github.com/tgstation/tgstation/assets/106436013/8af5cd9d-ad6a-4758-8efd-1cce9ca7a643

</details>

No more of this:

![Before](https://github.com/tgstation/tgstation/assets/106436013/6800f2f5-91c7-447d-bfb3-84eea1eee433)
(So for the love of GOD do not invismin next to a chasm or SM shard,
since not even you know where you are anymore.)

* Fixes Invisimin to not show up on HUDs

---------

Co-authored-by: TwistedCicrularConvexLens <106436013+TwistedCicrularConvexLens@users.noreply.github.com>
2023-11-13 23:04:17 -05:00
SkyratBot
761cdc3d20 [MIRROR] Station announcements cleanup [MDB IGNORE] (#24792)
* Station announcements cleanup

* Fix diffs

* Space indentation

* skyrat edits

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-05 01:58:16 -05:00
SkyratBot
61ecc53c2e [MIRROR] Fix admins without R_POLL getting (an unusable) poll verb [MDB IGNORE] (#24767)
* Fix admins without `R_POLL` getting (an unusable) poll verb (#79461)

## About The Pull Request

Copy paste error, I assume.

`admin_verbs_poll` only contains `/client/proc/poll_panel` which
requires `R_POLL` to use.

## Changelog

🆑 Melbert
admin: Admins without `R_POLL` no longer have access to "Server Poll
Management", not that they could have used it anyways.
/🆑

* Fix admins without `R_POLL` getting (an unusable) poll verb

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-11-03 19:36:26 -04:00
SkyratBot
f92318b04f [MIRROR] Fixes vv of things in lists [MDB IGNORE] (#24611)
* Fixes vv of things in lists (#79282)

I forgot name could be a number for list indexes, so this switches to
using `in` instead.

Also improves the error message a little bit so reported issues can at
least say *something* about the value throwing an error.

fixes #79280
fixes #79264

* Fixes vv of things in lists

---------

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2023-10-27 03:56:35 -04:00
SkyratBot
99da88db82 [MIRROR] Reworks the styling of the announcements and expands major announcements to also be colourable. [MDB IGNORE] (#24596)
* Reworks the styling of the announcements and expands major announcements to also be colourable.

* Skyrat edits

* Skyrat edits

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-25 22:22:52 -07:00
SkyratBot
031b17eaad [MIRROR] Adds charges to omens and omen smiting. Reduces omen bad luck if nobody's nearby. [MDB IGNORE] (#24583)
* Adds charges to omens and omen smiting. Reduces omen bad luck if nobody's nearby.

* Update door.dm

* Update door.dm

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-25 15:22:41 -04:00
SkyratBot
aa44dfee39 [MIRROR] Precalculates special list var names and avoids incorrect vv targets [MDB IGNORE] (#24553)
* Precalculates special list var names and avoids incorrect vv targets (#79154)

## About The Pull Request

This adds a global list to precalculate lists that need to be handled
special by vv instead of manually updating such a list. @ LemonInTheDark
brought up a potential issue with handling all lists in the way special
lists are handled, that modifying a list in vv can in some cases result
in the wrong list being opened for editing. This makes only special
lists have the issue instead of blindly accessing all lists the same
way.

* Precalculates special list var names and avoids incorrect vv targets

---------

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2023-10-24 14:40:58 -04:00