Commit Graph

3392 Commits

Author SHA1 Message Date
Ghom
4e1f343bd8 Adds a safety check to the "Release Obj" admin proc. (#60163) 2021-07-13 02:32:19 -07:00
Kylerace
5d6e93510f makes a bunch of lists that use typecacheof() static. doesnt find out why its overtiming at all but what the hell it helps (#60147)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-12 14:08:46 -07:00
LemonInTheDark
8b579a822b mob/dead/new_player harddel fix (#60072) 2021-07-08 17:07:31 -07:00
Wayland-Smithy
0d1ef29662 Drastic Lag Mitigation Subsystem: SSlag_switch (#59717)
Requested by oranges and inspired by the upcoming event. A new subsyetem, non-processing (for now), aimed at providing some toggle switches that can be flipped as a last ditch effort to save some CPU cycles by sacrificing some non-critical mechanics. Below you can see each individual toggle.

Screenshot of the admin panel:
image
Surely there are more opportunities for toggles I missed, but adding new ones is not very difficult at all.
Why It's Good For The Game

Better performance during extreme pop, I hope.
Changelog

cl
code: Introduces the Lag Switch subsystem for when a smoother experience is worth trading a few bells and whistles for. Performance enhancement measures can be togged by admins with the Show Lag Switches admin verb or enabled automatically at a pop amount set via config.
config: Added a new config var: number/auto_lag_switch_pop
2021-07-08 11:02:52 +12:00
Wayland-Smithy
e29c6c7a89 Hookup Change Command Name to Create Command Report (#59941)
Adds and defaults the contents of command_name() to the list of names in the Create Command Report tgui presets if changed from Central Command.
2021-07-03 14:35:33 -03:00
LemonInTheDark
d368e4d49d Changes how weather sends sound to players, reduces sound loop overtime (#59284)
* Converts looping sounds from a list of play locations to just the one

* Updates all uses of looping sounds to match the new arg

* Adds an area based sound manager that hooks into looping sounds to drive the actual audio. I'll be using this to redo how weather effects handle sound

* Some structrual stuff to make everything else smoother
Timers now properly return the time left for client based timers
Weather sends global signals when it starts/stops
Looping sounds now use their timerid var for all their sound related timers, not just the main loop

* This is the painful part
Adds an area sound manager component, it handles the logic of moving into new areas potentially creating new
sound loops. We do some extra work to prevent stacking sound loops.
Adds an ash storm listener element that adds a tailored area sound manager to clients on the lavaland z level.
It's removed on logout.
Adds the ash_storm_sounds assoc list, a reference to this is passed into area sound managers, and it's modified
in a manner that doesn't break the reference in ash_storm (This is what I hate)

* Hooks ash storm listener into cliented mobs and possessed objects

* Documents the odd ref stuff, adds an ignore start var to looping sounds, fixes some errors and lint issues

* Applies kyler's review

banging

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>

* Cleans up some var names, reduces the amount of looping we do in some areas

* Makes the code compile, redoes the movement listener to be more general

* fuck

* We don't need to detach on del if we're just removing signals on detach

* Should? work

* if(direct) memes

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-06-30 20:51:35 -04:00
Bobbahbrown
71e2191f5f Add 'other tickets by user' to adminhelp ticket panel (#59882)
added a list of other tickets that have been opened by a user, when relevant, to the adminhelp ticket panel.
2021-06-30 13:40:22 -03:00
Kyle Spier-Swenson
7ace8da9e0 Adds configs to disable laggy hard deletes (#59750)
cl
server: Added configs to disable laggy hard deletes once they lag the server too much.
admin: laggy hard deletes only output once per type path.
/cl

closes #58379
2021-06-28 10:31:03 +12:00
Emmett Gaines
67c89fa1ab Greyscale Mat Datum Stationary Smooth Tanks (#59556)
Stationary gas tanks have been in a terrible place for a long time, this addresses some of the issues with a more balance focused change coming in a second mapping pr after this one.

Stationary gas tanks have been made constructable and act similarly to canisters in that they can be damaged, repaired, and over-pressurized to explode. Additionally, they can be made with any rigid material and their stats depend on that material. A glass tank is going to have far less pressure capability than one made of plasteel.

In terms of gameplay there are two main differences now: Adjacent stationary tanks will merge together both graphically and with their internal storage. Any port on any of the tanks can access this shared storage. Also stationary tanks no longer magically have many times the volume for gas as the tile it's in, instead they have a pressure cap and a normal amount of volume.

Of interest to coders this pr also adds a generic grouping datum that acts similar to how pipe networks work. It maintains a listing of all adjacent objects whose type falls within a specified filter. In this case it's used for the gas tanks to know of every other tank in the group. I'll be looking into spreading it's usage elsewhere where this can replace existing one off systems.

Some (de)construction:
First a glass tank is constructed which is then immediately damaged by the high pressure in the gas storage that is now shared. After repairing it for a moment another metal tank is built.
2021-06-26 19:26:33 -07:00
Kyle Spier-Swenson
d8d4066635 Properly fix postpones in the mc. (#59813)
I broke shuttles and other things by trusting queued_time.

This fixes it better, by tracking the ticks it's suppose to miss.

closes: #59805 (this doesn't actually work anymore it seems)
2021-06-25 20:51:47 +01:00
DragonTrance
279c93a0a7 Adds Defines for Species IDs (#59797)
Simply puts species IDs into defines ("lizard" turns into #define SPECIES_LIZARD "lizard"). This does not affect any gameplay, and is purely for making sure future code doesn't go all fucked up because someone accidentally misspells something

I only changed code that was spelt correctly, so if there actually is a typo somewhere, it isn't changed
2021-06-25 15:30:16 -03:00
Watermelon914
d42bf33df6 Minimum compiler version update (#59771)
Updates the minimum compiler version to 514.1556
Additionally implements `as anything` in parts that requested it with a warning
2021-06-23 12:51:41 -04:00
Watermelon914
f7117797d4 Refactors dbcore and limits the maximum amount of concurrent async queries to a variable amount (#59676)
Refactors dbcore to work off a subsystem if executed async and limits the maximum amount of concurrent async queries to 25.

This has been tested locally on a mysql docker image and there were no crashes (as long as you didn't run it with debug extools) + data was getting recorded fine.
Why It's Good For The Game

May or may not resolve terry crashes, however, each query creates a new thread which takes up 2mb, preventing the game from using that 2mb. This can lead to ooms if they stack up, e.g. due to poor connectivity. This solves that issue.

maintainer note: this did not actually resolve the crashes, but has value anyway. Crashes were sidestepped fixed by finding out Large Address Awareness works


cl
refactor: Refactors dbcore.dm to possibly resolve the crashes that happen on Terry.
/cl
2021-06-22 09:33:42 +12:00
Jonathan Rubenstein
5d44d536e2 Change admins music title hiding to hide on media player (#59667) 2021-06-21 20:35:10 +01:00
Y0SH1M4S73R
63e33bd709 Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code) (#59636)
I noticed that various nonhuman body features can't be changed using genetics. I corrected this by adding a block to character genomes allowing you to edit features in the DNA console.
2021-06-20 16:20:09 -03:00
Ryll Ryll
d25e17241f Fixes OOC heart commendations (#59543)
At some point in the last few weeks, the OOC heart commendations that players were polled for during the shuttle's return trip at the end of the round stopped appearing for people on the live servers, even though admin logs showed it was still calculating how many people were supposed to be asked, and it seemed to be working fine on my local server. My only guess is it might somehow be related to #58419 since that was the last PR to touch hearted.dm, even if it's not clear how it might've broken it.

I also neaten up the code for commendations a bit, making it so the procs are easier to follow and have less unnecessary checks. Also, the proc nominate_heart has been reworked to receive_heart, since it makes more sense for it to run on the person receiving the commendation as opposed to the person sending it. It will also properly cancel polling if the "how many to ask" check returns 0 people, rather than always polling at least one.

Edit: Figured it out, #58419 was indeed the culprit, it blindly replaced src with usr without considering that src and usr aren't necessarily the same thing (as it was here, since query_heart() was called by the ticker SS)
2021-06-19 18:26:42 -03:00
Watermelon914
375a20e49b Refactors most spans into span procs (#59645)
Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.

Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.

(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
2021-06-14 13:03:53 -07:00
LemonInTheDark
f90e8cf7a3 Fixes a bunch of harddels that are sourced from player action (#59371)
Sourced from #59118 and a cursed project I'll pr later, This pr contains a lot of harddel fixes for stuff that pops up after a player interacts with something. I'm not gonna list them all here because there's something like 60 130, check the commit log if you're curious

Oh and I moved ref tracking screaming to a separate define, and made some optimizations to the thing in general. I think that's it, this pr is a bit of a frankenstine
2021-06-10 21:44:23 -03:00
LemonInTheDark
825143825c Deep sendmaps profiling (#59581)
* Adds in support for basic send maps profiling, I'd still like to get something that tracks with the round a bit
better, but we can worry about that later

* Adds a debug verb that displays the sendmaps profiling page, as basic as it is

* Define respect

* Patches over an error where profiles would persist through rounds, somehow. Adds the maptick stuff to performance logging, so we can look at how things change over a short period of time
2021-06-10 23:09:34 +02:00
Mothblocks
3e1e7f7f92 2FA for Admins (#59467)
Adds a 2FA system for admins. When a config is enabled, a database storing your last CID and IP will be checked to see if you have connected through there before. If not, you will not be able to admin until you are verified. Verification is done by opening a website (decided by config), which is tasked with updating the database entry, which will then let you reverify.

MSO wants to implement this as a forum page, but the DM-side is completely agnostic to whatever the implementation is, just that it updates the database. This means that it could potentially be some TOTP stuff, even.

If the database is down, a backup file is checked for your most recent verified connection (IP + CID). If you are on this connection, you will be able to connect fine. If the database is down and you are on a new connection, someone with +PERMISSIONS can manually verify you through the Permissions Panel.

We've had repeated attacks of admins getting their accounts stolen, it's time.
2021-06-09 17:07:36 -07:00
Timberpoes
01eba3bbdd Admins will no longer accidentally undelay round end or reboot the server when multiple admins attempt to delay it at the same time. (#59551)
Delaying/undelaying round end is no longer a toggle under the same href.

Delaying and undelaying the round end are now explicit operations. If two admins attempt to delay round end at the same time, the first admin to input a reason wins and the second admin instead gets an alert that the round end is already delayed along with the reason instead of accidentally untoggling it.

FINALLY, undelaying round end will no longer trigger an immediate auto server reboot when SSticker.ready_for_reboot is TRUE. The admins are messaged that they must Reboot World manually. This is the final guard against admins accidentally undelaying when they're not actually ready to do so.
2021-06-08 19:00:00 -03:00
tralezab
909c81866d Detaches Anonymous themes and Triple AI from SSTicker (+ more anonymous themes and content) (#59373)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-06-05 14:19:09 -07:00
Emmett Gaines
888f29db92 Improved GAGS debug (#59392) 2021-06-04 21:46:56 -07:00
Cyprex
9380b0335b Make Toggle-CDN use alert() instead of tgui_alert() (#59478)
Co-authored-by: orbit <orbit@book>
2021-06-03 16:55:52 +03:00
Kyle Spier-Swenson
ef0ebaeb8d allows editing expired and removed bans (#59431)
This is needed for the rare case that the situation described in the ban turns out to be inaccurate, so future searches for the user in the ban db don't lead admins to the wrong opinion.

Creating a situation where the admin has to remember to edit the ban reason before unbanning them is kinda lame

I'd love to make it so only the reason is editable, but that is far too much work for too little benefit.

fixes #59424
2021-06-03 01:02:57 +01:00
Mothblocks
e2b929974e Remove a bunch of old gamemode code (#59067)
* Beep beep gamemode removal coming through

* More cleaning

* More cleaning

* Clean up station_was_nuked

* Station nuke source

* Remove name

* More unused functions

* Remove antag rep, which was unused in dynamic

* Remove more antag rep stuff, which was UNUSED IN DYNAMIC

* Station goals outside of mode

* Remove setup_done

* Remove player lists

* Move some older procs

* Fix simulations

* Attempt to fix this stupid case sensitive bullshit

* Revert "Attempt to fix this stupid case sensitive bullshit"

This reverts commit 8693c02d67602543d7d4b92130a7a32cd973e5bf.

* ???

* Delete icons/Testing directory

* Move station_goals global definition
2021-05-29 11:03:41 +02:00
norill
6047ff9c38 Fixes check plumbing admin verb (#59263)
* - fixes check plumbing admin verb

* oof

Co-authored-by: norill <4>
2021-05-26 14:25:57 +02:00
Emmett Gaines
c8822b59ab Makes washing machines support GAGS recoloration (#59292) 2021-05-25 21:17:59 +02:00
Emmett Gaines
10bfcad34e Fixes admin mode greyscale debug menu config selection (#59281) 2021-05-25 19:52:37 +02:00
AnturK
f989da1fc1 Moves explorer adventures to the database. (#59089)
* Moves explorer adventures to the database.

* Fixes default images not showing up in playtest.

* Review changes.

* Please

* SPACING

* Makes this a bit atomic.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-05-24 16:56:14 -04:00
Kyle Spier-Swenson
7fe5e1294e Re-add the debug controller verb (#59027) 2021-05-23 19:10:10 -07:00
Celotajs
190d0a0384 Replace alert usage with tgui_alert (#58419)
Pretty much every alert() call is replaced with tgui_alert, except one I replaced with tgalert as a fallback. If tgui_alert exists, why not use it?
2021-05-20 22:43:27 +12:00
Emmett Gaines
c448104b30 Adds greyscale color selection to vending machines (#58901)
Yes this is blatant bait to get more things converted.

While working on this I fixed item greyscale updates to include their held and worn states, the vending machine ui is now tsx instead of js, icons generated by gags are created with an error state by default, the greyscale color menu defaults to not show you the full debug preview, and the wording in the debug menu is a bit more in-character friendly.
Changelog

cl
add: Greyscale items using GAGS in vending machines can have their colors chosen before vending. Not many things are capable of this yet but expect more to come.
/cl
2021-05-20 22:39:14 +12:00
dragomagol
b830067022 ignore admin proximity for sentience fun balloons (#59149)
When I changed sentience fun balloons to TGUI I accidentally made it so they can't be edited or popped unless you were next to them or had AI interact turned on. This allows admins to pop them at any range.
Why It's Good For The Game

Fixes #59136
Changelog

cl
fix: sentience fun balloons now work consistently again!
/cl
2021-05-19 19:47:53 +12:00
tralezab
b8b1c48747 actionninja's code now properly insults admins without any messed up spans (#59102) 2021-05-15 01:51:11 -07:00
LemonInTheDark
cfc75f5a84 Fixes some more holes in the ref tracker (#58972)
* Fixes some more holes in the ref tracker

The reference tracker was failing to check null keyed assoc list entries, along with being unable to check both
lists in a list(list() = list()) pair
This resolves that, and adds some new logic to the unit test to check for this sort of thing

* Seperates the ref tracking unit test into 6 subtasks as requested
2021-05-14 16:32:13 -07:00
tralezab
afe8039a2e refactors rpg loot is now a global datum singleton and so is embedopocalypse and stickapocalypse (#59093)
* ogey

* lint
2021-05-14 16:29:59 -04:00
Emmett Gaines
6bb29f051d Adds back in a signal dropped by #45217 (#59053) 2021-05-13 04:13:04 -07:00
Timberpoes
f36c7fa43f Split malf AI antag datum away from traitor, enable malf AI roundstart ruleset. (#59064)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-05-13 02:39:16 -07:00
tralezab
ea57e3f960 Kills BOTH /poison paths by turning poisonous into an element. (+fantasty prefix, sanity on attackingtarget signal, and more) (#58882) 2021-05-09 16:49:59 -07:00
dragomagol
42e4c95917 Sentience Fun Balloon TGUI (#58724)
Gives the sentience fun balloon a TGUI interface before popping! Set the group name and balloon range without needing to VV!
2021-05-08 09:32:40 +03:00
Kylerace
08df8798ce (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc (#58340)
Co-authored-by: Jared-Fogle <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
2021-05-07 03:54:03 -07:00
Fikou
241ce53d37 moves sdql spell to vv dropdown (#58911) 2021-05-06 23:17:09 -07:00
LemonInTheDark
c906c44393 Fixes a fuck ton more harddels (#58779)
Redoes how geese handle eating shit, it was fucking stupid and caused harddels, and while this method is technically slower in the best case, it's a fucking goose
Fixes action related harddels, I hate how they work but at least this way they won't hold refs.
Fixes the hierophont causing its beacon to harddel
Removes the M variable from megafauna actions, it was used like a typed owner and caused harddels, so I burned it
Fixes target and targets_from harddels, replaces all setters of target with LoseTarget and GiveTarget, which should help maintain behavior. I'm not sure if this breaks anything, but if it does we should fix the assumptions that code makes instead of reverting this change
Fixes more area_senstive_contents related harddels, we need to allow the mob to move before clearing out its list.
Fixes marked object harddels (I'm coming for you admin team)
Fixes a language based human harddel
Fixes managed overlay related harddels (This was just emissive blockers, but I think this is a good safety net to have. If we clear the overlay list we should clear this one as well)
Fixes bot core harddels, I hate the fact that this exists but it has no reason to know who its owner is
Adds a walk(src, 0) to simple_animal destroy, it's the best bang for the buck in terms of stopping spurious harddels. Walk related harddels aren't that expensive in the first place, since byond does the same thing I'm doing here, but this makes finding mob harddels easier, so let's go with it
I fixed another source of part harddels, I hate fullupgrade so much
Fixes all the sound loop harddels
2021-05-05 10:57:27 -04:00
ZeWaka
b86aaf3307 Fixes bitwise flag negation errors. (#58870)
These have been in the codebase for many years. Love, ZeWaka
2021-05-05 01:37:56 -04:00
Seris02
ff2f6abe83 Sort the majority of the rest of the unsorted chat (#58821)
* FINALLY IT IS DONE FUCK

* tip of the round into ooc

* adds cyopod chat messages to the info chat filter

* last one I promise probably, mob spawner messages to info filter

* holoparasite, round will start in x and keybinding conflict to respective filters

* removed motd from constants, made it infoplain surrounded instead

* changed info to infoplain
2021-05-05 05:57:40 +03:00
Celotajs
489d47a4b1 Move give SDQL spell to Debug.Admin (#58825)
Co-authored-by: celotajstg <celotajstg@users.noreply.github.com>
2021-05-03 21:53:44 +01:00
Emmett Gaines
8c6d67ed3b Adds support for dirs and config changing in GAGS debug menu (#58794)
Previously, the menu wouldn't show you the generation steps for icons other than the south dir icons. You can now specify which you want to see. In addition the config type itself can be changed so as to allow previewing of icons that normally are not displayed directly on the map.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-04-30 21:31:25 -07:00
Y0SH1M4S73R
3bd7a0db6b SDQL Spells & Menu to Give Them to Players (#58118)
SDQL spells are spells that execute an SDQL query. This requires a config flag to be enabled in game_options.txt. When enabled, admins with debug verbs have the ability to open a menu allowing them to define all the relevant vars for the spell, including icons and spell requirements.

It also fixes a bug with superuser SDQL queries always runtime if they try to call a proc.

Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2021-04-28 03:23:51 +03:00
TemporalOroboros
9f598a9662 Makes the explosive compressor and blastcannon actually use the TTVs they're given + the explosion changes to support that. (#58015)
* Adds explosion SFX to the blastcannon and explosive compressor

- Extracts the explosion SFX and screenshake proc from the SSexplosions explosion handling proc and lets the explosive compressor and blastcannon use it.

* Miscellaneous changes

- Adds defines for the internal explosion arglist keys
- Reverses the values of the explosion severity defines
- Changes almost everything that uses `/proc/explosion` to use named arguments

- Removes a whole bunch of argname = 0 in explosion calls.

* Removes named callback arguments.

* Changes the explosion signals to just use the arguments list

Adds a simple framework to let objects respond to explosions occurring inside of them.

Changes a whole bunch of explosions to use the object being exploded as the origin of the explosion rather than the turf the object is on.

Makes the explosive compressor and blastcannon actually use the TTVs they are given.

Adds support for things responding to internal explosions.
Less snowflake code for the explosive compressor and blastcannon calculating bomb range.*
Less confusing explosion severity defines.
Less opaque explosion arguments

*does not guarantee that the solution to letting them actually use the TTV is any less snowflake.
2021-04-26 17:31:25 -07:00