Commit Graph

2490 Commits

Author SHA1 Message Date
SkyratBot
7579176eed [MIRROR] Adds lazyloading to the asset subsystems [MDB IGNORE] (#15960)
* Adds lazyloading to the asset subsystems (#69454)

* Adds lazyloading to the asset subsystems

This currently applies only to spritesheets because of how monumentally
expensive they are.
If an asset is requested it will immediately be fully loaded, but
otherwise we slowly load them in with a separate subsystem.

This allows us to not hold up initialize with hair stuff. Saves roughly
33% (16 seconds with LOW_MEMORY_MODE) of initialize on my machine

My target is something closer to the 9 second init that had back in
2019, this is a good first step. Lets see how much more we can do yeah
lads?

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

* Adds lazyloading to the asset subsystems

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2022-09-02 19:49:04 -04:00
SkyratBot
d30e6fcb10 [MIRROR] Converts SSblackbox feedback to an associative list [MDB IGNORE] (#15955)
* Converts SSblackbox feedback to an associative list (#69399)

About The Pull Request
I DID NOT TEST THIS. I DO NOT KNOW DATABASE STUFF. I JUST NOTICED IT WHILE WORKING ON AN UNRELATED PR.

Title.
Why It's Good For The Game

Speeds up a hot proc substantially

* Converts SSblackbox feedback to an associative list

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
2022-09-02 19:44:07 -04: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
d9ba002500 [MIRROR] fixes qdeling atoms being thrown by explosions [MDB IGNORE] (#15979)
* fixes qdeling atoms being thrown by explosions (#69604)

fixes the Qdeleted thing being thrown around. runtimes spamming the shit out of the logs

* fixes qdeling atoms being thrown by explosions

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-09-01 18:03:08 -04:00
SkyratBot
4adcaed888 [MIRROR] Minor QuerySelect code improvements, QuerySelect documented. [MDB IGNORE] (#15940)
* Minor QuerySelect code improvements, QuerySelect documented. (#69383)

* Minor QuerySelect improvements coded from the porcelain throne.

We don't handle bad values being given in the query list well enough. This normally won't matter, runtimes are runtimes, but if mixed with real queries, it can lead to inconsistent state where we have query datums that have been ran, and query datums that have not been ran.

pre-checking is also an option, so that it can just refuse to run any of them if one is bad by checking before, but my main goal was to prevent runtimes from bad inputs leading to undeleted queries spam while being more clear about where the bug is, not try to perfectly handle the side effects of bad code.

(To be clear, i started intending to just add codedoc but now it uses as anything and typechecks because that was just eating at me while typing up the codedoc.)

* Update code/controllers/subsystem/dbcore.dm

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

* Minor QuerySelect code improvements, QuerySelect documented.

Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2022-08-31 09:33:04 -07: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
1dce8047e5 [MIRROR] Refactors z level trait checking to be less shit [MDB IGNORE] (#15751)
* Refactors z level trait checking to be less shit (#69334)

* Puts level traits and their associated z into a list and then uses it to make the z level trait procs less shit. They no longer need to loop through every z level to do what they aim to do.

* Also removes get_level from level_trait because it just does the same checks as already done above in the proc.

* Refactors z level trait checking to be less shit

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
2022-08-24 18:40:45 -04:00
SkyratBot
f73c2edb39 [MIRROR] Fixes login() runtime when players connect before SSsecurity_level finishes initializing [MDB IGNORE] (#15704)
* Fixes login() runtime when players connect before SSsecurity_level finishes initializing (#69152)

Fixes login() runtime when players connect before SSsecurity_level finished initializing

* Fixes login() runtime when players connect before SSsecurity_level finishes initializing

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-08-19 12:32:49 +01:00
SkyratBot
487d273284 [MIRROR] Ambience no longer uses reverb [MDB IGNORE] (#15613)
* Ambience no longer uses reverb (#69003)

* no more local sound

* setup volume settings

* Update code/controllers/subsystem/ambience.dm

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

* Update ambience.dm

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

* Ambience no longer uses reverb

Co-authored-by: CapybaraExtravagante <110635252+CapybaraExtravagante@users.noreply.github.com>
Co-authored-by: Capybara <Capybara@ CapybaraMailingServices.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2022-08-13 17:29:20 -07:00
SkyratBot
5a33abb773 [MIRROR] Event menu rewrite [MDB IGNORE] (#15396)
* Event menu rewrite

* Update topic.dm

* Update _event.dm

* Update event_chaos_system.dm

Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 01:15:12 +01:00
SkyratBot
d17278c273 [MIRROR] Revolution victories now call the shuttle when enough of the station is revolutionaries [MDB IGNORE] (#15428)
* Revolution victories now call the shuttle when enough of the station is revolutionaries

* Update revolution.dm

* Update emergency.dm

* Update emergency.dm

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 01:12:14 +01:00
SkyratBot
6016cf97b4 [MIRROR] individual LOG_GAME [MDB IGNORE] (#15401)
* individual LOG_GAME

* e

* Update teleporter.dm

Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 01:11:55 +01:00
SkyratBot
6ef42d16d7 [MIRROR] fixes verbs not actually queuing. [MDB IGNORE] (#15444)
* fixes verbs not actually queuing.  (#68990)

thanks to Vallat for pointing this out

whoops turns out most verbs havent been queued since may 11th because I made /datum/controller/subsystem/verb_manager have the SS_NO_INIT flag, without also removing a check in verb_manager/proc/can_queue_verb() that stops the verb callback from being queued if the subsystem isnt initialized yet. since subsystems with SS_NO_INIT obviously never have initialized set to TRUE, this always failed for every verb manager subsystem except for SSinput (because it doesnt have SS_NO_INIT).

also adds a debug var to force a subsystem to always queue incoming verbs if possible.

now the default verb management subsystem, and speech_controller will successfully queue verbs again. SSinput always queued verbs so that shouldnt change.

* fixes verbs not actually queuing.

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-08-06 21:51:38 -07:00
SkyratBot
923cbe2ea8 [MIRROR] Radiation pulses will yield to MC for every turf they iterate through. [MDB IGNORE] (#15446)
* Radiation pulses will yield to MC for every turf they iterate through. (#68525)

* Be less scary.

Changes radiation pulses so that they store the turfs they need to irradiate, iterate through them and remove them from the list of turfs to irradiate, then yield to MC if MC got angry, and put the radiation pulse with the remaining turfs to irradiate to the back of the radiation processing list.

Radiation pulses pulse information will no longer popleft the processing list. It will delete itself once there are no turfs to process, or if the source is null.

Caches the turfs to process to loop through, adds a counter for how many turfs it iterated through, and cuts the turfs to process by the turfs that got iterated.

* Radiation pulses will yield to MC for every turf they iterate through.

Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
2022-08-06 21:51:22 -07:00
SkyratBot
4c07e13f42 [MIRROR] Makes epicenters not explode mobs twice [MDB IGNORE] (#15412)
* Makes epicenters not explode mobs twice (#68860)

About The Pull Request

Ports yogstation13/Yogstation#13983

This pr effectively halves the damage of explosion epicenters by making them only affect mobs once. Specifically, it removes them from the list of things to explode created by the get_all_contents proc, originally meant to ensure stuff in bags and boxes will set off other bombs in the same bag or box. This had the un(?)intended side-effect of making any objects in the epicenter of the blast take damage a second time, resulting in heavy blasts instakilling and very small explosions doing way too much damage. This is half a balance change and half a bug fix.
Why It's Good For The Game

This allows for more explosion-based weaponry as they now won't all be complete one-shot-win weapons. It also stops things like X4 bolas or explosive holoparasite bolas (you guys have those right?) instantly killing people with no counterplay. Also fireball is now probably a little less meta as a spell since it ONLY PROBABLY immediately wins fights and won't two-shot-crit people, usually. If yall want stuff to still do the same amount of damage just add an extra single-tile explosion to things you want to be more powerful.
Changelog

cl Mqiib, ToasterBiome
balance: Explosion epicenters no longer explode mobs twice; Fireballs and other explosive projectiles are significantly less-damaging

/cl

* Makes epicenters not explode mobs twice

Co-authored-by: Mqiib <43766432+Mqiib@users.noreply.github.com>
2022-08-05 10:03:48 -07:00
SkyratBot
b1bd40e760 [MIRROR] [MDB Ignore][Bounty][Complete Refactor] Papercode Redux: Too Many Damn Files <Map Conflict Edition> [MDB IGNORE] (#15362)
* [MDB Ignore][Bounty][Complete Refactor] Papercode Redux: Too Many Damn Files <Map Conflict Edition>

* Fixes merge conflicts and compilation errors, alongside fixing the joker card to make it fully functional again

* Fixed a bunch of info variables in map files

* Alright this is why I wanted this merged yesterday

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-04 15:50:15 +01:00
Tastyfish
8f3bc2f3b4 [MDB IGNORE] [MODULAR] Makes automapper work with Centcom (#15332)
* Automapper working with CentCom

* old comment

* Fix multi-file maps, CC storage

* blep

* test CI again to find quantum harddels
2022-08-03 01:26:42 +01:00
GoldenAlpharex
bbbe0682d8 Optimizes SQL logging and adds missing related default config entries (#15330)
* Adds a new config entry for SQL game log bundle query size

Also adds documentation to existing config entries that don't currently appear in any default entry files on the repo.

* Adds a new config file for database-related configs for Skyrat

* Adds a `add_log_to_mass_insert_queue` proc to handle bundling insert queries into bigger, less frequent queries

* Modifies log_message() to utilise the new add_log_to_mass_insert_queue() proc

* Actually makes the MassInsert() call asynchronous, to completely remove the freezes

* Adds code to handle sending all unsent logs to the database before the subsystem is shutdown, to reduce the loss of logs at the end of a round
2022-08-02 18:04:18 -04:00
SkyratBot
603cc0116d [MIRROR] fixes chameleon card reset issues and makes nuke op trim have a hud icon [MDB IGNORE] (#15339)
* fixes chameleon card reset issues and makes nuke op trim have a hud icon (#68879)

* partial fix

* outfits now update ids

* fixes chameleon card reset issues and makes nuke op trim have a hud icon

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-08-01 14:16:53 -07:00
SkyratBot
d8da1153b7 [MIRROR] Biddle Verbs: Queues the Most Expensive Verbs for the Next Tick if the Server Is Overloaded [MDB IGNORE] (#15329)
* Biddle Verbs: Queues the Most Expensive Verbs for the Next Tick if the Server Is Overloaded (#65589)

This pr goes through: /client/Click(), /client/Topic(), /mob/living/verb/resist(), /mob/verb/quick_equip(), /mob/verb/examinate(), and /mob/verb/mode() and makes them queue their functionality to a subsystem to execute in the next tick if the server is overloaded. To do this a new subsystem is made to handle most verbs called SSverb_manager, if the server is overloaded the verb queues itself in the subsystem and returns, then near the start of the next tick that verb is resumed with the provided callback. The verbs are called directly after SSinput, and the subsystem does not yield until its queue is completely finished.

The exception are clicks from player input since they are extremely important for the feeling of responsiveness. I considered not queuing them but theyre too expensive not to, suffering from a death of a thousand cuts performance wise from many many things in the process adding up. Instead clicks are executed at the very start of the next tick, as the first action that SSinput completes, before player movement is processed even.

A few months ago, before I died I was trying to figure out why games at midpop (40-50 people) had non zero and consistent time dilation without maptick being consistently above 28% (which is when the MC stops yielding for maptick if its overloaded). I found it out, started working on this pr, then promptly died. luckily im a bit less dead now

the current MC has a problem: the cost of verbs is completely and totally invisible to it, it cannot account for them. Why is this bad? because verbs are the last thing to execute in the tick, after the MC and SendMaps have finished executing.
tick diagram2
If the MC is overloaded and uses 100% of the time it allots itself this means that if SendMaps uses the amount its expected to take, verbs have at most 2% of the tick to execute in before they are overtiming and thus delaying the start of the next tick. This is bad, and im 99% sure this is the majority of our overtime.

Take Click() for example. Click isnt listed as a verb but since its called as a result of client commands its executed at the end of the tick like other verbs. in this random 80 pop sybil round profile i had saved on my computer sybil 80 pop (2).txt /client/Click() has an overtime of only 1.8 seconds, which isnt that bad. however it has a self cpu of 2.5 seconds meaning 1.8/2.5 = 72% of its time is overtiming, and it also is calling 80.2 seconds worth of total cpu, which means that more than 57.7 seconds of overtime is attributed to just /client/Click() executing at the very end of a tick. the reason why this isnt obvious is just because the verbs themselves typically dont have high enough self cpu to get high enough on the rankings of overtiming procs to be noticed, all of their overtime is distributed among a ton of procs they call in the chain.

Since i cant guarantee the MC resumes at the very start of the next tick due to other sleeping procs almost always resuming first: I time the duration between clicks being queued up for the next tick and when theyre actually executed. if it exceeds 20 milliseconds of added latency (less than one tenth the average human reaction time) clicks will execute immediately instead of queuing, this should make instances where a player can notice the added latency a vanishingly small minority of cases. still, this should be tm'd

* Biddle Verbs: Queues the Most Expensive Verbs for the Next Tick if the Server Is Overloaded

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-07-31 22:03:59 +00:00
SkyratBot
6503f2c596 [MIRROR] Fixes a lua state null return related to the print wrapper, improves the lua editor ui formatting, and implements a stopgap lua lag fix [MDB IGNORE] (#15320)
* Fixes a lua state null return related to the print wrapper, improves the lua editor ui formatting, and implements a stopgap lua lag fix (#68816)

This PR fixes this issue by making sure every proc called in the stack of /proc/wrap_lua_print which could sleep is called using INVOKE_ASYNC, and to prevent such problems in the future, marks all the wrappers as SHOULD_NOT_SLEEP(TRUE). I also figured out how to fix the dumb overflowing problem of the lua editor ui.

Due to lag concerns regarding lua states with a large number of global variables (including fields within global tables), I have made it so the global table and state log are hidden by default - they can be shown using a toggle button in the editor ui.

* Fixes a lua state null return related to the print wrapper, improves the lua editor ui formatting, and implements a stopgap lua lag fix

Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
2022-07-31 08:43:52 -07:00
SkyratBot
99cdbe4ce2 [MIRROR] Reworks pAIs [MDB IGNORE] (#15162) 2022-07-27 19:10:14 -04:00
Zonespace
a1aee41c68 Ports upstream LUA PRs (#15200)
* 1

* Launch Dreamseeker is the default vscode launch config once again (#68666)

Co-authored-by: William Wallace <me@wiox.me>
2022-07-27 15:14:22 -07:00
Zonespace
15a223ff2d [MIRROR] Admin lua scripting (#65635) (#15118)
[Ready for Review] Admin lua scripting (#65635)

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

Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-07-24 19:55:53 +01:00
sqnztb
6aec9b5dff Nerve Staple Blacklist Fix (#15156)
nerve staple blacklist fix
2022-07-24 11:54:36 -07:00
SkyratBot
ca20cbb5a1 [MIRROR] Fixes security level alerts playing the incorrect sounds [MDB IGNORE] (#15116)
* Fixes security level alerts playing the incorrect sounds

* Fixes the merge conflict

* Slightly improves the code on our end, adds the documentation that we were now missing

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-07-23 16:26:40 -04:00
SkyratBot
29229c6202 [MIRROR] Removes the Families gamemode [MDB IGNORE] (#14995)
* Removes the Families gamemode

* f

* Repathing! And new updates!

* some nights I stay up cashing in my bad luck

* Additional Fixes for the gang boys!~

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-07-23 13:59:30 -04:00
SkyratBot
85f02c8323 [MIRROR] Fixes force irradiation not working. [MDB IGNORE] (#15141)
* Fixes force irradiation not working. (#68597)

Moment

* Fixes force irradiation not working.

Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
2022-07-23 12:40:23 +01:00
SkyratBot
7ac51736fe [MIRROR] Some nightshift fixes [MDB IGNORE] (#15126)
* Some nightshift fixes (#68566)

Fixes APC night shift manual cycling balloon alert; update_nightshift uses the correct variable

* Some nightshift fixes

Co-authored-by: Profakos <profakos@gmail.com>
2022-07-22 11:50:43 -07:00
SkyratBot
d3c3f4fbed [MIRROR] Greyscale ID Department Colors (+ Rainbow ID Card) [MDB IGNORE] (#14965)
* Greyscale ID Department Colors (+ Rainbow ID Card)

* Update clown.dm

Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-07-19 01:29:58 +00:00
SkyratBot
4af0dd0b8f [MIRROR] addresses reviews on the tram pr made after merge, fixes diagonal movement bugs [MDB IGNORE] (#14943)
* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033)

* addresses reviews on the tram pr made after merge, fixes diagonal movement bugs

* wew

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-07-19 00:51:33 +00:00
GoldenAlpharex
f7e0956b02 [MIRROR] Ambience tweaks (#68264) (#15040)
Ambience tweaks (#68264)

* cleans up code and adjusts volume

* Removes can_hear() check

* volume

* review

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
2022-07-18 22:32:28 +00:00
SkyratBot
0b7aa724b6 [MIRROR] Tweaks response provided by sssecurity_level during initialization [MDB IGNORE] (#14999)
* Tweaks response provided by sssecurity_level during initialization (#68500)

* Tweaks response provided by sssecurity_level during initialization

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-07-18 08:41:38 -07:00
SkyratBot
4e1f7228b8 [MIRROR] Fixes active turf message speaking gibberish [MDB IGNORE] (#15004)
* Fixes active turf message speaking gibberish (#68499)

* Fixes active turf message speaking gibberish

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-07-18 08:39:24 -07:00
SkyratBot
ea83b1444c [MIRROR] Fixes world status runtiming during initialize [MDB IGNORE] (#14939)
* Fixes world status runtiming during initialize

* Update world.dm

resolve a code conflict

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
2022-07-17 14:34:57 -04:00
SkyratBot
38ccfe7b25 [MIRROR] Adds Baseballs [MDB IGNORE] (#14892)
* Adds Baseballs (#68249)

Adds baseballs to the game (There is a baseball field in the holodeck).
You can now bat thrown objects with the baseball bat to launch them away at high speed.
https://streamable.com/471jvv (baseball is a boomerang here because otherwise this would have been impossible to test singleplayer)
Why It's Good For The Game

it could be fun to have a game of baseball, and people trying to bat an item thrown at them sounds funny
image
Changelog

cl Fikou, sprite by Mooster
add: Baseballs are now available in the Baseball Field on the Holodeck.
add: Baseball Bats can now hit thrown objects mid-air to send them back.
/cl

* Adds Baseballs

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-07-13 15:42:22 +01:00
SkyratBot
a72e485eea [MIRROR] Prevents overtime in the economy SS [MDB IGNORE] (#14858)
* Prevents overtime in the economy SS (#68078)

* Prevents overtime in the economy SS

Ok so like, we were doing a LOT of work all at once without yielding,
which is fine cause like, it's only fired once every 5 minutes, but it's
still kinda dumb

So I've cleaned up the subsystem to make it support an ssair style of
yielding, alongside an optimization to vending machine z level checks
that I suspect was taking a lot of cpu.

Remind me to refactor z level lookup someday bestie

Anyway yeah now we won't see strangely high overtime for ssecon anymore

* vending gang (renames a variable to not just be v

* It is done

* Prevents overtime in the economy SS

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-07-12 01:13:40 +01:00
SkyratBot
5131104c88 [MIRROR] New player job selection fixes pack [MDB IGNORE] (#14818)
* New player job selection fixes pack

* Update job.dm

* Reflects the changes to our modularized Topic() proc

Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-07-10 08:56:20 -07:00
SkyratBot
49e4651f20 [MIRROR] Improves ambience [MDB IGNORE] (#14774)
* Improves ambience

* Update lavaland.dm

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2022-07-08 01:17:01 +01:00
Gandalf
a3e90a91f0 Automapper - IMPORTANT, READ ME [MDB IGNORE] (#14679)
* wew

* Update area_spawn_subsystem.dm

* Update area_spawn_subsystem.dm

* Update area_spawn_entries.dm

* wew

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* Update summon_beacon.dm

* yeees

* Update area_spawn_entries.dm

* qwqw

* e

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* yes

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* automapper

* mmkay

* wew

* science post

* Update DeltaStation2_skyrat.dmm

* fc

* starting on delta

* Update metastation_science_post.dmm

* better loading system, metastation, delta, better file system

* unit tests, bugfixes, multiz support

* Update automapper.dm

* Update _compile_options.dm

* Kilo and tramstation

* wew

* Update area_spawn_entries.dm

* Update automapper_config.toml

* Update automapper_subsystem.dm

* Update Skyrat_Map_Reset.dmm

* remove redundant maps

* Update _basemap.dm

* wew

* Update automap_template.dm

* guard outposts no need

* wew

* NTR offices

* e

* Update area_spawn_entries.dm

* Update area_spawn_entries.dm

* Update icebox_ntrep_office.dmm

* 0

* iucebox arrivals fix

* Update area_spawn_entries.dm

* Update automap_template.dm

* Update readme.md
2022-07-06 15:24:57 +01:00
SkyratBot
5aeb64a542 [MIRROR] Fixes some cases which references are used in trait sources, potentially causing hard deletes [MDB IGNORE] (#14716)
* Fixes some cases which references are used in trait sources, potentially causing hard deletes (#67974)

About The Pull Request

Fixes some cases in which actual references were used in trait sources instead of keys (or ref() keys).

This can cause some rare and difficult to find hard deletes.

Trait sources should be a string key relating to the source of it, not an actual reference to what added it. References within trait sources are never handled in Destroy(), because it's not expected behavior, meaning it can cause hanging references.

So, I went through with a regex to find some cases and replaced them.
I used the following and just picked through the few by hand to find erroneous ones.
ADD_TRAIT\(.+, .+, [a-z]+\)
REMOVE_TRAIT_TRAIT\(.+, .+, [a-z]+\)
Why It's Good For The Game

Less hard deletes, probably.
Changelog

cl Melbert
code: Some traits which mistakenly were sourced from a hard reference are no longer.
/cl

* Fixes some cases which references are used in trait sources, potentially causing hard deletes

* wew

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-07-04 01:10:42 +01:00
SkyratBot
c68fea7cba [MIRROR] Completely removes proc_holders from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code. [MDB IGNORE] (#14666)
* Completely removes `proc_holders` from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code.

* our changes

* yes

* 0

* Update blackmesa.dmm

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-07-01 20:33:30 +01:00
SkyratBot
583a5e704a [MIRROR] Fullscreen, status bar hiding, chat input following the theme [MDB IGNORE] (#14555)
* Fullscreen, status bar hiding, chat input following the theme (#67987)

* Initial commit

* input is colored according to the theme

* removed unused setting

* Fullscreen, status bar hiding, chat input following the theme

Co-authored-by: Andrew <mt.forspam@gmail.com>
2022-06-27 02:15:25 +01:00
Tom
430f5d3661 fixes ghost hearing (#14534) 2022-06-27 00:06:26 +01:00
SkyratBot
48ac7b572d [MIRROR] Security Level Datums [MDB IGNORE] (#14504)
* Security Level Datums

* wew

* Update security_level_datums.dm

Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-06-25 02:04:50 +01:00
SkyratBot
18a56ffeeb [MIRROR] (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE [MDB IGNORE] (#14477)
* (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE

* fex

* fex

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-06-25 01:24:00 +01:00
SkyratBot
98e95fde9b [MIRROR] Rename "Delimber" anomaly to "Bioscrambler" anomaly. [MDB IGNORE] (#14484)
* Rename "Delimber" anomaly to "Bioscrambler" anomaly. (#67886)

Renames all occurrences of "delimber", "delimber_anomaly", "delimbering", etc. to "bioscrambler", "bioscrambler_anomaly", and "bioscrambling", etc.

* Rename "Delimber" anomaly to "Bioscrambler" anomaly.

Co-authored-by: skylord-a52 <skylord-a52@users.noreply.github.com>
2022-06-24 21:01:08 +01:00
SkyratBot
51027e4809 [MIRROR] Fix for randomized recipes not working (metalgen and secret sauce) [MDB IGNORE] (#14470)
* Fix for randomized recipes not working (metalgen and secret sauce) (#67904)

* Fix for randomized recipes not working (metalgen and secret sauce)

Co-authored-by: antropod <antropod@gmail.com>
2022-06-23 22:33:46 +01:00
SkyratBot
7156f4e38d [MIRROR] Resonance cascade polishening, bugfixes and better logging [MDB IGNORE] (#14351)
* Resonance cascade polishening, bugfixes and better logging

* Update light.dm

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-06-19 22:43:21 +01:00
SkyratBot
49df4e02f9 [MIRROR] Arconomy expansion pack 1: Convenience and Luxury goods [MDB IGNORE] (#14410)
* Arconomy expansion pack 1: Convenience and Luxury goods (#67417)

* Arconomy expansion pack 1: Convenience and Luxury goods

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
2022-06-19 10:07:16 -07:00