Commit Graph

3761 Commits

Author SHA1 Message Date
SkyratBot
64e6a57ca6 [MIRROR] Fix admin 2fa not syncing authorized admins to the player table in the db. [MDB IGNORE] (#17262)
* Fix admin 2fa not syncing authorized admins to the player table in the db. (#70910)

* Fix admin 2fa not syncing authorized admins.

* make it a bit more clear what this code does, since the if wording is misleading.

* Fix admin 2fa not syncing authorized admins to the player table in the db.

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2022-10-31 14:09:28 +00:00
SkyratBot
375fea374a [MIRROR] Optimizes qdel related things (slight init time savings) [MDB IGNORE] (#17240)
* Optimizes qdel related things (slight init time savings)

* lang holder

* cleanup custom spawners slightly

* ref update

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-30 23:15:38 -04:00
SkyratBot
4759d84a2e [MIRROR] Admin verb to send message on PDA [MDB IGNORE] (#17252)
* Admin verb to send message on PDA (#70790)

* base

* oh, oh.

* uh, dots?

* no hdd, only computer

* kill let in UI(but not in func)

* Admin verb to send message on PDA

Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
2022-10-30 21:46:37 -04:00
SkyratBot
fa739c701e [MIRROR] Add security(in round, alive, dead) in check antagonists [MDB IGNORE] (#17125)
* Add security(in round, alive, dead) in check antagonists (#70681)

* add security in check antagonists

* minor fixes + antagonists

* Add security(in round, alive, dead) in check antagonists

Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
2022-10-23 19:33:04 -04:00
SkyratBot
7522903c16 [MIRROR] Seven Billion Hour Wait Time - Or, Expanded Job Config (TOML time) [MDB IGNORE] (#16962)
* Seven Billion Hour Wait Time - Or, Expanded Job Config (TOML time)

* conflict

* update modular

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-10-22 08:11:56 -07:00
SkyratBot
7b2b8f1f05 [MIRROR] Admins can now safely cancel the "Admin PM" verb [MDB IGNORE] (#17093)
* Admins can now safely cancel the "Admin PM" verb (#70705)

* Admins can now safely cancel the "Admin PM" verb

Co-authored-by: Funce <funce.973@gmail.com>
2022-10-22 02:29:16 -04:00
SkyratBot
612568daa0 [MIRROR] Swaps sleep() to use SECONDS define [MDB IGNORE] (#16973)
* Swaps sleep() to use SECONDS define

* merge conflicts and skyrat modules

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-19 19:43:24 -04:00
SkyratBot
2853e3ffef [MIRROR] Wizard DLC - Tower of Babel [MDB IGNORE] (#16978)
* Wizard DLC - Tower of Babel (#69629)

About The Pull Request

This adds a new status effect called - Tower of Babel

Any carbon mob afflicted by the status effect will lose knowledge of every known language and gain a randomized one as a replacement. The affected mob will also be hit with a depressing moodlet that lasts for 15 seconds. Silicons are immune to all effects.

This effect is implemented in several ways:

    Tower of Babel wizard event (all crew on the station z level are affected. The wizard is not and gains mastery of every language to taunt their victims)
    Admin smite option
    Admin secret event (can be reversed)
    Staff of Babel (formerly the Staff of Sapping) will spawn during spawn magic wizard event
    Magicarp will randomly shoot bolts of babel
    Staff of Chaos will randomly shoot bolts of babel
    Overdosing on Mushroom Hallucinogen will temporarily and sporadically acquire the effect

The effect can be blocked or cured in several ways:

    Curators are given immunity
    Reading a book of babel (via lavaland loot) cures and gives immunity
    Reading a language book cures and gives immunity ONLY for that particular language

Note - The Tower of Babel does not allow tongueless, mute, or tongue tied people the ability to speak

* Wizard DLC - Tower of Babel

Co-authored-by: Tim <timothymtorres@gmail.com>
2022-10-19 12:25:29 +01:00
SkyratBot
4ce4ef74f4 [MIRROR] Player Panel's "Make AI" Now Respects Closing The Input Menu [MDB IGNORE] (#16841)
* Player Panel's "Make AI" Now Respects Closing The Input Menu (#70449)

Player Panel's Make AI Now Respects Closing

Hey there,

Before, this wouldn't respect it if the user calling this via the Player Panel just hit the X button, instead of "cancel" on the TGUI input message. If you hit the X button, it would just create an AI at the normal AI landmark anyways (very stupid!). I fell for this like twice in the last week, so let's get this outta here.

* Player Panel's "Make AI" Now Respects Closing The Input Menu

Co-authored-by: san7890 <the@san7890.com>
2022-10-13 17:21:11 -04:00
SkyratBot
3795ed1a6b [MIRROR] [MDB Ignore]Hats DMI split [MDB IGNORE] (#16693)
* [MDB Ignore]Hats DMI split

* e

* STAFE

* e

* e

Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-10-09 23:00:42 +01:00
SkyratBot
2847b2b37e [MIRROR] [ready] adds unit test for missing inhand icons. fixes a bunch of missing inhand icons [MDB IGNORE] (#16649)
* [ready] adds unit test for missing inhand icons. fixes a bunch of missing inhand icons

* cf

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-10-09 22:36:07 +01:00
SkyratBot
33a025b3f5 [MIRROR] makes radios use paths instead of new [MDB IGNORE] (#16607)
* makes radios use paths instead of new (#70252)

* makes radios initialize in Initialize instead of init()

* makes radios use paths instead of new

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-10-03 16:02:27 +01:00
SkyratBot
9bf006d189 [MIRROR] Multiz Rework: Human Suffering Edition (Contains PLANE CUBE) [MDB IGNORE] (#16472)
* Multiz Rework: Human Suffering Edition (Contains PLANE CUBE)

* skyrat changes

* bodyparts merge

* unres door floorlight fix

* Future upstream fix for blindness

* upcoming upstream airlock fix

* fix button emissive

* Fix FOV markings?

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-02 23:30:09 -04:00
SkyratBot
235ca1df15 [MIRROR] List Them Out - A Modern Revision On Extracting Global Lists [MDB IGNORE] (#16531)
* List Them Out - A Modern Revision On Extracting Global Lists (#70080)

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

* List Them Out - A Modern Revision On Extracting Global Lists

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
2022-09-29 22:44:53 -07:00
SkyratBot
097bf08323 [MIRROR] Game panel is a bit more generous when spawning multiple paths for admins [MDB IGNORE] (#16544)
* Game panel is a bit more generous when spawning multiple paths for admins (#70078)

Changes the limit of paths to spawn via game panel from a hardcoded 5 to be based on the admin spawn limit.
Why It's Good For The Game

5 is a bit limiting, especially as it's easily possible to spawn more than five types of something in other ways. QOL.
Changelog

cl Melbert
admin: The game panel now lets you make more than five different types of something at once.
/cl

* Game panel is a bit more generous when spawning multiple paths for admins

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-09-29 21:27:38 -07:00
SkyratBot
b61a3f981d [MIRROR] Unit tests powernets to make sure the whole station is connected. [MDB IGNORE] (#16503)
* Unit tests powernets to make sure the whole station is connected. (#70090)

* Unit tests powernets to make sure the whole station is connected.

* fixes cable tests for blueshift and raptor

* single cable misplacement

* hard map reset

* hec

* tramstation armory stray cable

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-09-29 01:24:37 -04:00
SkyratBot
7db8cb7348 [MIRROR] Removes newscaster admin topics and vars [MDB IGNORE] (#16505)
* Removes newscaster admin topics and vars (#70158)

* Removes newscaster admin topics and vars

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-09-28 11:09:50 +01:00
SkyratBot
e142e098b4 [MIRROR] Removes overlay queuing, saves 6/7 seconds of initialize. Lightly modifies stat tracking macros [MDB IGNORE] (#16449)
* Removes overlay queuing, saves 6/7 seconds of initialize. Lightly modifies stat tracking macros

* merge conflict

* other changes

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-27 17:52:53 -04:00
SkyratBot
eefbd40ce6 [MIRROR] Adds macros to help with common set_- and adjust_timed_status_effect uses [MDB IGNORE] (#16410)
* Adds macros to help with common `set_`- and `adjust_timed_status_effect` uses

* merge conflicts

* modular skyrat and missed changes

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-26 17:56:24 -04:00
SkyratBot
4734ca7490 [MIRROR] Fixes linda heat capacity errors [MDB IGNORE] (#16445)
* Fixes linda heat capacity errors (#70071)

We make the assumption that a turf's heat capacity will never be 0. This is safe because we've got an override of /datum/gas_mixture for turfs that overrides 0 heat cap with 7000 (SPACE)
This is done to make cold actually flow through empty tiles, because we are hacks.

I forgot to include type in my gas mixture creation logic, so this was being dropped. FIXXXX

* Fixes linda heat capacity errors

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-09-26 13:13:24 +01:00
SkyratBot
173da94792 [MIRROR] Sentience preference selection and antag datum [MDB IGNORE] (#16124)
* Sentience preference selection and antag datum

* Update antags.dm

* Update xenobiology.dm

* update modular

* Fixes a warning in the unit tests (whoops)

Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-09-25 19:59:55 -04:00
SkyratBot
8f033ead91 [MIRROR] Completely refactors hallucinations, and also adds a few [MDB IGNORE] (#16348)
* Completely refactors hallucinations, and also adds a few

* delete 5 old hallucination types that should have been removed

* Fixed old leftover tips conflicts

* Fixes all the leftover conflicts and otherwise broken code

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-09-25 19:43:45 -04:00
SkyratBot
d27cd97f74 [MIRROR] [IDB IGNORE] [MDB IGNORE] Makes the icons/mob folder sane [MDB IGNORE] (#16030)
* [IDB IGNORE] [MDB IGNORE] Makes the icons/mob folder sane

* fix map merges

* icon paths and merge conflicts

Co-authored-by: skylord-a52 <skylord-a52@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-24 20:10:28 -04:00
SkyratBot
c8776ecbbb [MIRROR] Refactors team antagonists and roundend report handling [MDB IGNORE] (#16308)
* Refactors team antagonists and roundend report handling (#69585)

* Refactors team antagonists and roundend report handling

Refactors teams and subtypes
* Makes use of ``as anything`` and ``\improper``
* Removes many single letter variables
* Moves team code to the team file
* Makes team objectives only allow objectives for SpacemanDMM
* Makes members and objectives clear when a team is deleted
* Generalizes team's add_objective
* Checks for show_roundend_report in roundend
* Replaces ``get_team == src`` with a simple mind check
* Makes Bloodbrothers fit using parent's endround report.
* Removes the unused procs ``is_solo`` and ``antag_listing_footer``
* Makes replaces ``get_team_antag`` ``specific`` with ``include_subtypes`` to be consistent with Antag helpers (and because I thought it looked better that way)

* Refactors team antagonists and roundend report handling

* improper borers

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-23 22:29:34 -04:00
SkyratBot
dd8931e60a [MIRROR] Adds a quick way to view notes from ticket panel [MDB IGNORE] (#16366)
* Adds a quick way to view notes from ticket panel (#69988)

* Adds a quick way to view notes from ticket panel

One thing that I hear be thrown around administration channels a lot is "If I had checked the notes, I would have been more fair on their ban!". Well, have a fast way to keep checking those notes!

* Adds a quick way to view notes from ticket panel

Co-authored-by: san7890 <the@san7890.com>
2022-09-23 17:05:38 +01:00
SkyratBot
cb4f6915d9 [MIRROR] Fixes Bread Smite Causing Some Fucked Up Shit [MDB IGNORE] (#16254)
* Fixes Bread Smite Causing Some Fucked Up Shit (#69853)

* Fixes Bread Smite Causing Some Fucked Up Shit

Hey there,

So basically, when you had the bread smite done on you, you were _just_ added to the contents of the bread. Nothing more. That means that you could pick it up. You couldn't add it to your bag (it would always return back into your hand(?)), but it would create some weird oddities that was just cursed in general. Let's make it so you can't hold the container that you are contained within by giving you HANDS_BLOCKED.

* actually we don't need the named arg

lets get rid of the cursed thing entirely

* removes sanity check

* we do a bit of component trolling

THIS TOOK ME TWO HOURS FUCK YOU

* removes cruft comment

* cleans up code a teeny bit, upgrades to incapacitated

* wait that named arg is still there wtf

* Review Time

Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>

* wrong operator and wrong order of operations

* null out the container

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

* checks to see if container is qdeld

* weakref time

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

* Fixes Bread Smite Causing Some Fucked Up Shit

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Seth Scherer <supernovaa41@ gmx.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2022-09-15 11:32:16 -07:00
SkyratBot
ae57b755ab [MIRROR] fixes check power mapping debug option w/ multilayer wire support [MDB IGNORE] (#16250)
* fixes check power mapping debug option w/ multilayer wire support (#69820)

* fixes check power mapping debug option w/ multilayer wire support

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-09-15 11:05:37 +01:00
SkyratBot
0ff14796e7 [MIRROR] Fixes weird blank in Watchlist Update Messages when adding a expiration date [MDB IGNORE] (#16252)
* Fixes weird blank in Watchlist Update Messages when adding a expiration date (#69897)

 When you add a watchlist expiration date without having previously set one, the logged message should now be more clear as to this.

* Fixes weird blank in Watchlist Update Messages when adding a expiration date

Co-authored-by: san7890 <the@san7890.com>
2022-09-15 11:03:15 +01:00
SkyratBot
01f1249810 [MIRROR] Examine Blocks Out The Debug Z-Levels Verb [MDB IGNORE] (#16190)
* Examine Blocks Out The Debug Z-Levels Verb (#69845)

Hey there,

It's mostly on the tin. It really looked kinda ugly spitting out the information + the drawing right into chat, so let's wrap it in a nice examine_block to keep it looking good. I added some line breaks because I thought it also aided the formatting.

* Examine Blocks Out The Debug Z-Levels Verb

Co-authored-by: san7890 <the@san7890.com>
2022-09-14 20:37:50 -07:00
SkyratBot
50968086a0 [MIRROR] Adds hint that antag panel objectives do not show team objectives [MDB IGNORE] (#16220)
* Adds hint that antag panel objectives do not show team objectives (#69746)

* Adds hint that antag panel objectives do not show team objectives

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
2022-09-14 10:39:12 -07:00
Yaroslav Nurkov
62af5af19b LOOC muting again (#16159)
i hate toxins
2022-09-13 15:23:51 -04:00
SkyratBot
00d7e1f375 [MIRROR] Rocking The Boat, er, Map Vote [MDB IGNORE] (#16083)
* Rocking The Boat, er, Map Vote (#69561)

* Rocking The Boat, er, Map Vote

Hey there,

A while ago, I spooke (typo intentional) to some other people. One frustration I heard was the fact that people would sometimes sneak through map votes during the very start of a shift, during a high-paced portion, or just as a meme. People in OOC would then flood the vote, putting in any given station. However, if a vote happens 10 minutes in- and the round goes for 70 minutes and not many of the original players are around, then it's not particularly fair to those who have to play next shift on a map they bemoan.

So, we can rock the vote! If a player isn't particularly chuffed with the hand they are given, they can poll the players to see if they want to change the map as well. If rocking the vote goes through, huzzah, you get the ability to vote for the map again. If it doesn't go through: tough luck. You can rock the vote one time per shift by default, and server operators can change the amount of times you can call to rock the map vote at their discretion. Calling to rock the vote either successfully or non-successfully counts as a "call", and when that limit is exceeded: no more calls.

Does this mean that we will only rotate between two maps because pissants will keep rocking the vote until they get what they like? Maybe? I still see people bemoan getting Tram or shit the bed over IceBox, but I think enough people get sick of bread-on-butter to take the server where it need to go. If operators don't really like seeing only two maps play, they can always adjust the config to ensure it doesn't happen.

* makes the grammar grammar

it would be "Rock the Vote vote" otherwise

* Rocking The Boat, er, Map Vote

Co-authored-by: san7890 <the@san7890.com>
2022-09-11 20:18:14 -07:00
SkyratBot
7559990f20 [MIRROR] [MDB IGNORE] Shuttle engine code improvement and fixes [MDB IGNORE] (#16116)
* [MDB IGNORE] Shuttle engine code improvement and fixes

* what even happened in shuttlepanel.dm

* should be the last few

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
2022-09-10 18:28:57 -04:00
SkyratBot
248b2d49ce [MIRROR] Cleans up populate world code [MDB IGNORE] (#16129)
* Cleans up populate world code (#69752)

* cleans up populate world

* fix debug text

* cleanup

Co-authored-by: tattle <article.disaster@ gmail.com>

* Cleans up populate world code

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
2022-09-08 17:54:56 +01:00
Yaroslav Nurkov
b4719d7147 Adminping fix w/ server config option (#15904)
* the mop can only absorb liquid within 1 tile

* return back tickets ping with config

* Revert "the mop can only absorb liquid within 1 tile"

This reverts commit 2cdd22363349835c6eab10a7f45403e41be27a59.

* mhm

* add init

* some changes

* some mistakes

some mistakes

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

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-09-08 08:45:55 -04:00
SkyratBot
1a04ce7fc3 [MIRROR] CTF qol update for admins, map selection and admins can't render CTF unplayable by accident anymore. [MDB IGNORE] (#16103)
* CTF qol update for admins, map selection and admins can't render CTF unplayable by accident anymore. (#69710)

About The Pull Request

When CTF map unloading was originally created in had an unforeseen consequence of not entirely removing parts of the ongoing CTF round, namely the flags, as a result of this, this system that was originally made as a precursor to map rotation was not really usable. Since this was added various PRs have made this more and less buggy but the recent CTF voting PR has caused unloading CTF rounds to be a one way process without far more involved admin intervention to reverse. As such, I've made the disable CTF buttons admins have access to only disable CTF and not unload the map entirely. I've left the function to unload the map in incase a situation arises where an admin or maintainer really needs to get rid of the CTF map.

Removing this functionality also removes a really clunky but theoretical function of it, being that you could repeatedly unload and reload the CTF map to get one of your choice, since this is not an option anymore this PR also allows admins to pick a CTF map when they start CTF themself.

EDIT: I fixed the bug introduced by the CTF voting PR, CTF maps can now be reloaded after being unloaded, the flag issue is still around so it shouldn't be used without admin supervision however. Also unloading is a debug verb now.
Why It's Good For The Game

Map unloading was super buggy so it shouldn't be easily accessible.
Since admins cannot repeatedly unload and reload CTF maps anymore to get the one they want they can now just pick the one they want from a list which is significantly less dumb.
Changelog

cl
admin: When admins start CTF they can now choose which map is played or choose random as its always been
admin: Admins can no-longer permanently break CTF by unloading the map accidentally
spellcheck: Fixed a typo in the Map Description for CTF Cruiser
fix: CTF can now be reloaded after being unloaded
/cl

* CTF qol update for admins, map selection and admins can't render CTF unplayable by accident anymore.

Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
2022-09-07 01:00:06 +01:00
SkyratBot
9cc7e72158 [MIRROR] Atmos init speedup, saves 4 seconds [MDB IGNORE] (#16090)
* Atmos init speedup, saves 4 seconds (#69697)

* Micro optimizes ssair's turf init, saving 2 seconds

Most of this is making existing operations do more legwork, or cheaper.
I did add cycle checking to ONLY init turf linking, which required
creating a new proc.
Did some horrible horrible things in said proc to save like 0.8 seconds.
I think it was worth it.

* Atmos init speedup, saves 4 seconds

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-09-06 16:24:54 +01:00
SkyratBot
8add735177 [MIRROR] Return of the scrubber overflow event [MDB IGNORE] (#15998)
* Return of the scrubber overflow event (#68378)

About The Pull Request

Brings back the scrubber overflow event, previously removed in #53549
This version has nerfed numbers because foam changes made it stupidly powerful.

Also snake_cases some event variables.
Why It's Good For The Game

More dangerous but not station-damaging events. Bonus: janitor content.
Changelog

cl
add: Re-adds the scrubber overflow event as a random event
/cl

* Return of the scrubber overflow event

* update modular and fix missing non modular edit

* update stray meteor event

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-09-04 19:27:59 +01:00
SkyratBot
1e7569e0b6 [MIRROR] Fixes hard-dels related to lua signal handlers [MDB IGNORE] (#15965)
* Fixes hard-dels related to lua signal handlers (#69555)

When I changed the syntax of SS13.lua to account for the ability to properly index tables with datums, it turns out that the callbacks created for signal handlers and timeouts had circular references, resulting in hard-deletes.

My first solution was to make it so signal handler and timeout callbacks use weakrefs, which get resolved in lua_state/call_function, but it turns out that, when calling the signal cleanup function, a qdeleted-but-not-yet-garbage-collected datum's weakref resolves to null because datum.gc_collected is set to GC_CURRENTLY_BEING_QDELETED before COMSIG_PARENT_QDELETING gets sent.

To resolve this issue, Potato and Oranges both recommended that I make a snowflake variant of resolve which ignores whether the datum a weakref points to is qdeleted - only that it is null or it's weakref isn't the very weakref resolve was called on. This proc was given a lengthy autodoc comment describing when it should or shouldn't be used, to ensure it is only used in cases similar to the one I needed to create it for (needing to resolve a weakref to a datum in a COMSIG_PARENT_QDELETING handler registered on that very datum).

* Fixes hard-dels related to lua signal handlers

Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
2022-09-04 13:58:36 +01:00
SkyratBot
9c33d03245 [MIRROR] [Lua] You can now await expensive non-sleeping procs. [MDB IGNORE] (#15962)
* [Lua] You can now `await` expensive non-sleeping procs. (#69570)

When trying to run getFlatIcon using lua scripting, I discovered that it was so expensive that, for certain atoms like complex humans, there is no way it will complete within the lua execution limit. While Mothblocks would suggest just raising the execution limit, the idea leaves a bad taste in my mouth due to the possibility of a script causing extreme lag by consistently overrunning the BYOND tick.

I instead elected to make /datum/auxtools_promise sleep once before invoking its assigned proc, thus immediately returning execution to lua, even if the proc being awaited wouldn't sleep. This allows for awaiting extremely expensive non-sleeping procs (like the aforementioned getFlatIcon)

* [Lua] You can now `await` expensive non-sleeping procs.

Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
2022-09-02 19:49:54 -04:00
SkyratBot
0073dbce09 [MIRROR] admin deadsay now uses deadchat_broadcasts as it ought to. [MDB IGNORE] (#16013)
* admin deadsay now uses deadchat_broadcasts as it ought to. (#69593)

About The Pull Request

The admin deadsay command is old and still based on the assumption that ghosts and admins are the only ones that can hear deadchat messages, while using a snowflake loop that's pretty much superseded by the deadchat_broadcast proc.

* admin deadsay now uses deadchat_broadcasts as it ought to.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2022-09-02 11:30:08 +01:00
SkyratBot
e7230e8b4a [MIRROR] Resolves is_banned_from headaches and lag (Speeds up roundstart significantly) [MDB IGNORE] (#16001)
* Resolves is_banned_from headaches and lag (Speeds up roundstart significantly) (#69376)

About The Pull Request

Just to be clear, when I refer to time here, I am not talking about cpu time. I'm talking about real time.
This doesn't significantly reduce the amount of work we do, it just removes a lot of the waiting around we need to do for db calls to finish.

Adds queuing support to sql bans, so if an ongoing ban retrieval query is active any successive ban retrieval attempts will wait for the active query to finish

This uses the number/blocking_query_timeout config option, I hope it's still valid

This system will allow us to precache ban info, in parallel (or in batches)
With this, we can avoid needing to setup all uses of is_banned_from to support parallelization or eat the cost of in-series database requests

Clients who join after initialize will now build a ban cache automatically

Those who join before init is done will be gathered by a batch query sent by a new subsystem, SSban_cache.

This means that any post initalize uses of is_banned_from are worst case by NATURE parallel (since the request is already sent, and we're just waiting for the response)

This saves a lot of headache for implementers (users) of the proc, and saves ~0.9 second from roundstart setup for each client (on /tg/station)

There's a lot of in series is_banned_from calls in there, and this nukes them. This should bring down roundstart join times significantly.

It's hard to say exactly how much, since some cases generate the ban cache at other times.
At base tho, we save about 0.9 seconds of real time per client off doing this stuff in parallel.
Why It's Good For The Game

    When I use percentages I'm speaking about cost per player

I don't like how slow roundstart feels, this kills about 66% of that. the rest is a lot of misc things. About 11% (it's actually 16%) is general mob placing which is hard to optimize. 22% is manifest generation, most of which is GetFlatIcons which REALLY do not need to be holding up the main thread of execution.

An additional 1 second is constant cost from a db query we make to tell the server we exist, which can be made async to avoid holding the proc chain.

That's it. I'm bullying someone into working on the manifest issue, so that should just leave 16% of mob placing, which is really not that bad compared to what we have now.
Changelog

cl
code: The time between the round starting and the game like, actually starting has been reduced by 66%
refactor: I've slightly changed how ban caches are generated, admins please let me know if anything goes fuckey
server: I'm using the blocking_query_timeout config. Make sure it's up to date and all.
/cl

* Resolves is_banned_from headaches and lag (Speeds up roundstart significantly)

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-09-01 22:11:40 -04:00
SkyratBot
e41823a56e [MIRROR] remove unnecessary list copy [MDB IGNORE] (#15906)
* remove unnecessary list copy (#69511)

* remove unnecessary list copy

Co-authored-by: ZeWaka <zewakagamer@gmail.com>
2022-08-29 20:20:55 -04:00
SkyratBot
1b7f17f107 [MIRROR] [IDB IGNORE] The Great Sweep: Moving dmis into subfolders (part 1) [MDB IGNORE] (#15801)
* [IDB IGNORE] The Great Sweep: Moving dmis into subfolders (part 1)

* Fixes all the conflicts and all of our modular files using core icon files with broken paths

Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-08-28 15:11:04 -04:00
SkyratBot
a8c10d1659 [MIRROR] Converts a shitload of istypes to their more concise macros [MDB IGNORE] (#15702)
Converts a shitload of istypes to their more concise macros

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-27 16:23:44 -04:00
SkyratBot
8790837555 [MIRROR] Bumps auxlua to 1.2.1 (+ several other ui fixes and qol tweaks) [MDB IGNORE] (#15786) 2022-08-26 15:48:00 -07:00
SkyratBot
fc89469491 [MIRROR] Fixes weakref resolving in View Variables not working [MDB IGNORE] (#15820)
* Fixes weakref resolving in View Variables not working (#69375)

m

* Fixes weakref resolving in View Variables not working

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
2022-08-25 14:48:44 +01:00
SkyratBot
7f5a0216e2 [MIRROR] Obstructed Vents and Scrubbers? - Debug Them Out! [MDB IGNORE] (#15760)
* Obstructed Vents and Scrubbers? - Debug Them Out! (#68890)

* Obstructed Vents and Scrubbers? - Debug Them Out!

Hello there,

In _May of 2014_, Ikarrus wrote the following (here)[https://tgstation13.org/phpBB/viewtopic.php?f=11&t=327]:

"Avoid placing scrubbers and air vents under objects. It's better to leave them in the open and visible so people can use them."

How far we have fallen. However, during a review I did in the last week, I accidentally let one of these (in multiple occurrences!) slip past me:

I don't want that to happen again. It's especially hard when they're under tables, or big bulky lockers, and under computers sometimes! They're not obvious to the human eye, so we must rely on technology. This creates a new Debug Mapping Verb that will flag out any vent, scrubber, or canister port that is being obstructed by an invalid object (directionals and undertiles are excluded). It will be a gargantuan effort unlike anything you've seen to get rid of all of them, but at least this is the first stone in a grand arch.

* Updates some variable names, adds some more logging

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

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

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

* no more single letter var

* early continue

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

* Obstructed Vents and Scrubbers? - Debug Them Out!

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
2022-08-24 18:28:22 -04:00
SkyratBot
18d253a989 [MIRROR] adds location atom to deletion message [MDB IGNORE] (#15764)
* adds location atom to deletion message (#69372)

Helps with debugging to know that a flash was deleted from engi borg #424 at robotics than just a flash was deleted at X,Y,Z.

* adds location atom to deletion message

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-08-24 18:25:22 -04:00
SkyratBot
5cd946f4d0 [MIRROR] De-hardcodes randomize_human() and fixes some related issues along the way [MDB IGNORE] (#15638)
* De-hardcodes randomize_human() and fixes some related issues along the way

* Update create_mob.dm

* Update species.dm

* hhhh fuck

* Fixes what was still broken with the mirror

Co-authored-by: FernandoJ8 <80640114+FernandoJ8@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-24 18:13:52 -04:00