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
Since the gamemode isn't wanted here, even just to maintain (and especially now that progression Traitors are being added which will break IAA even more), I'm gonna give my alternate idea to just remove IAA entirely.
This is also to help downstream, as any plan on just 'adding it downstream' is kinda screwed over by it TECHNICALLY still being upstream, and its code conflicting with my own, even if it is just broken and unmaintained.
What the title says. But why?
I generally have a rule when making a contribution, that is "don't make the game less fun"
I'm not salting, I didn't die to a swarmer.
... Yet that's the problem. Swarmers are the griefiest antag in the game, but when you complain that they're annoying or unfun, you're doomed to hear "lol they can't even hurt you though."
WELL THAT ACTUALLY MAKES THEM WORSE. I would rather die to a hundred xenos and space dragons than be forced to untie myself in maintenance for 45 seconds while the shuttle leaves.
Why It's Good For The Game
Unfun game modes should be removed from the game.
Being griefed by swarmers is annoying
Playing as a swarmer is not very exciting either. Click on iron.
lastly, because oranges authorized it
Changelog
cl
del: Removes swarmers! The griefiest, lowest fun value antagonist is removed from the game.
/cl
About The Pull Request
See title.
Fixes#62672
Why It's Good For The Game
Allows us to keep the excellent ban video while nullifying the issue raised in #62672
Changelog
cl
admin: The banning video is now shown before the ban appeals link, instead of after, to improve visibility of the ban appeals link.
/cl
Now a short autoplaying video is included, that will explain to the user why they are no longer able to access tgstation resources.
It may be suitable to host the video on tgstation's cdn instead
About The Pull Request
Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.
Splits game preferences into its own window.
Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.
This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.
Fixes#60823Fixes#28907Fixes#44887Fixes#59912Fixes#58458Fixes#59181
Major TODOs
Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc
A lot of specialized testing so that people's real data don't get corrupted
Changelog
cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
* Re-Adds Header Checkboxes
- Ban Panel categories can now be clicked to click all the checkboxes in their category
- Adds a new js method called header_click_all_checkboxes whichs clicks all the checkboxes whose class is the hidden checkbox's name
Re-introduces a function that was lost with #60578 (6c4134d1ea) , closes#60903 (Admins being unable to click on the ban category and check all subcheckboxes). The method was largely copied, but was changed to comply with the toggle_other_checkboxes() method introduced with the aforementioned PR by replacing a .checked assignment with a .click() call to ensure that duplicate entries are properly marked
Admins can now click categories to more easily ban people from all entries in that category. Demonstrated below to show that checkboxes are being toggled correctly in all relevant categories
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
This happened because clients are incredibly fickle and may disappear at any time.
In this case searching for the DB took long enough to cause this.
Improved a little code around it, in the process.
(It's more like the db sleeps, so byond has a chance to nuke the client datum. but this is good either way)
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)
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
Its all over the place, messy, and overall a bad enough gamemode to be removed from rotation.
A rework would have to tear out everything as is so there is no reason to allow the shitcode to live beyond tripping up everything.
* Case of lower
* More changes
* Ruins the nice 420 diff, brainfart when doing the second batch of conversions
* More changes
* Next batch. I think
* Converts even more paths
* Restarts bots
* Capital Free Zone
* Come on travis, do something
* Renames areas
* Bots, please stop dying
* Updates CONTRIBUTING.md and updates a few paths I missed.
* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
* basic antag items
hey
based
game is on
ree
e
brings back good sprites
eueuuee
eeeeeeeeeeeeeeeeeeee
more
tgui baby
FINALLY
e
Small changes
adds better point s
Finishing touch!
FINISHED
ANTAG FINISHED. FUCKING. FINALLY
grammer
E
E?
* rebuilt tgui
* gamemode fixes
* i love inconsistent var names
* sprootes
* ath review
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Automatic changelog compile [ci skip]
* a shit ton of changes
* Apply suggestions from code review
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* sprootes
* more changes ree
* Fixes and upgrades
* sprootes done
* dmdoc compliance
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* mewtewnew revieww ~~
* e
* Automatic changelog compile [ci skip]
* e
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* E
* autodoc
* E
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* removed Destroy()
* * 0.5
* bugsquash
* e
* changes to ashlord's rite
* e
e
* e?
* the fuck
* adds station wide alerts for ascension events
* fixes an autodoc
* tgui
* e
e
* removes a redundant line of code
* sickly blade is now normal size item
* changes a line of code in flesh
* no revives for ghouls!
* uwu
* Update code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com>
* E
* E2
* Automatic changelog compile [ci skip]
* Makes eldritch cult into HERETICS
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* E
* unfucks medallions code
* long live list loops
* E
* E
* i love my git crashing
* Magics
* E
* removes TRAIT_GHOUL since it was redundant
* Update code/modules/mob/living/carbon/inventory.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/mob/living/carbon/inventory.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/mob/living/carbon/human/species.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/mob/living/carbon/human/species.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/mob/living/carbon/human/human_update_icons.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* fixies uwu
* hopefully i fixed all return ..()
* E
* EEEEEEE
* wormie now is refactored
* removes destroy
* Update code/modules/surgery/bodyparts/bodyparts.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Automatic changelog compile [ci skip]
* Update code/modules/mob/living/simple_animal/eldritch_demons.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* E
* E
* Update code/modules/mob/living/simple_animal/eldritch_demons.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/mob/living/simple_animal/eldritch_demons.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/mob/living/simple_animal/eldritch_demons.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* E
* E?
* E
* one more
* k
* OH SHIT OH FUCK
* replaces ROLE_ECULT with ROLE_HERETIC and fixes preferences
* REE
* fleshy fixes
* fixes summonings
* REE
* texture fix
* fixes a stupid fucking runtime that i noticed coz i forgot people can be borged. FUCK
* grammer
* nullrods can now remove runes
* HOLY SHIT, HOTFIX NERF
* E
* E
* TEMPORARY SOLUTION TO MAKE HERETICS SPAWN NATURALLY
* Update code/modules/antagonists/eldritch_cult/eldritch_antag.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/antagonists/eldritch_cult/eldritch_book.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/antagonists/eldritch_cult/eldritch_effects.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* SECOND TEMPORARY FIX
* fixes fixes fixes fixes
* i hope this no longer will qdel summons
* E
* please push this asap
* E
* buffs sickly blade to 17 damage and only allowes culties to use it
* Explanations uwu
* examine changes ree
* e
* E
* )
* E
* E
* Ash fix
* changes to mad touch
* replaces e_cult with heretics and fixes protect objective to suceed when someone suicides
* E
* makes worm code use COMSIG_MOVABLE_MOVED
* replaces bad var names
* makes eldritch knowledge an assoc list
* E
* Update code/modules/mob/living/simple_animal/eldritch_demons.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* what the fuck
* the fuck
* fixies
* EEE
* fixes
* e
* fixes
* mansus grasp slight buff
* changes overall changes
* E
* logging
* changes the eldritch armor into a nicer looking kryson robes
* tgui bundle
* QOL sprites and a spell to contract armsy
* SPRITES
* readds rust floors
* Fixes pointed out by anturk
* E
* E
* E
* Apply suggestions from code review
Co-authored-by: Rohesie <rohesie@gmail.com>
* Cleanup
* Fixes
* E
* EEEEEEEEEEE
* makes heretics a little bit more common
* Update code/modules/antagonists/eldritch_cult/knowledge/flesh_lore.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* EEE
* eee
* E
* E
* Init
* Makes shit more readable
* h
* e
* E
* wounds compatibility patch
* hnng
* rusty better sprite
* turn
* Apply suggestions from code review
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* E
* further renames e
* E
* JS side
* changes reee
* e
* E
* yeesh
* e
* E
* pr
* e
* E
* changes re
* AAAAAAAAAAAAAA
* e
* antag huud
* e
* e
* hnnng
* hnng
* HNNNNG final patch - LAST TESTMERGABLE COMMIT
* HNNG NEVERMIND THIS IS THE LAST TESTMERGABLE COMMIT DONT LISTEN TO LIES BELOW
* e
* FINAL PATCH - MERGE READY
Adds defines, buffs blood siphon a bit so it can utilize wounds and replaces ROLE_CULTIST with ROLE_HERETIC
* forgot about a single debug line aaa
* hnnnhng
* hng
* a!
* aaa
* applies code review
* e
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
I tested with general logging on, these parameters were being passed as '' instead from DM's "" to NULL in sql.
i.e.
WHERE ('dave' IS NULL OR ckey = 'dave') AND
(NULL IS NULL OR a_ckey = NULL) AND
('' IS NULL OR ip = INET_ATON('')) AND
('' IS NULL OR computerid = '')
Haven't checked if this is happening elsewhere.
cl
refactor: BSQL has been replaced with rust-g, improving SQL reliability and safety.
/cl
Queries were parameterized as much as possible. Careful code read by someone else also versed in SQL would be a good idea. Things seemed fine spot-testing roundstart, library, bans, and polls, but more stress-testing may be useful.
Also updates rust-g to v0.4.5:
Improved Linux .so detection
Perlin noise functions
Also updates Travis script to bionic.
An almost complete rework of how creating polls, their data and voting on them is handled.
Instead of repeatedly querying for poll data, running polls are loaded at runtime into poll_question and poll_option datums that stores all the needed variables for both. This datum is then used for creating, editing and accessing poll data. The database is only contacted when saving changes or votes.
Creating polls and options is now done with a html window instead of a series of popups akin to how the banning panel works. The form data is parsed and error-checked before passing to be saved.
This is done in two stages, first time a poll's details are entered and it must be initialized (created as a datum) before options can be added and all of both are saved to the database. Instructions about how this work are shown on the poll creation window.
A new field for polls has been added, subtitles, which is text only shown when a poll is opened by a player instead of on the list of polls. Intended so the actual question text can be kept to only a name and important information about a poll goes in a subtitle.
All polls can now have revoting enabled on them.
Polls can have a starting datetime specified, this can be in the past but why would you do that?
Polls and options can be edited once created, excluding the type of a poll. Doing so will by default clear all existing poll votes. Votes can also be cleared by a button.
The handling of how votes are processed has been adapted for the datum system but is on the whole not functionally that different aside from poll validation not being roughly copypasted across each poll type's vote proc
All poll tables now have a deleted column for retaining 'deleted' data.
poll_question has also gained the columns created_datetime, subtitle, allow_revoting, their function explained above, and a change of idx_pquest_time_admin to idx_pquest_time_deleted_id.
A stored procedure set_poll_deleted has been added. This is called when setting a poll as deleted to avoid needing 4 separate queries from the server or one fairly long 4-way joined
Create Poll verb is renamed to Server Poll Management
* demos (ported from yogstation)
rustg update + write with no format
use external hook for logging
use proper log vars
fix + clarifying comment
don't start the log
release build of rust-g
fix something caught by the lint
Update code/__DEFINES/subsystems.dm
Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>
Update code/controllers/subsystem/demo.dm
Co-Authored-By: JJRcop <jrubcop@gmail.com>
Update code/controllers/subsystem/demo.dm
Co-Authored-By: JJRcop <jrubcop@gmail.com>
moves hooks out of a dedicated file
len = 0 to Cut(), remove semicolons
untyped loop
* updated rust_g
* 513 updates
* Nanotrasen fires the Wave Motion Gun at the Clock Cult
* Fixes a random changelog appearing from the reebe void.
* Fixes a wrong type reference regarding the bronze sheets in the Lavaland Ruin for it.
* Fixes redundant cells after CC removal in ruin by populating them with varied ore chunks, or destruction clutter.
* why is it /obj/item/stack/sheet/metal but not /obj/item/stack/sheet/iron
* Fixes the lavaland ratvar ruin to have fluff variant structures of deleted shit it referenced instead what I thought was reasonable.
CID defaults to always checked.
Use IP and CID from last connection now defaults to enabled unless all the default checked values are provided.
Use IP and CID from last connection now only fills in checked values, rather then forcing both IP and CID.
Use IP and CID from last connection no longer triggers an error if the user can not be found, instead asking the banning admin if the want to continue (same behavior as when this happens without that option checked).
The main reason behind this is that your avg 1 to 2 day ban shouldn't impact everybody on the same network, especially when it comes to colleges and shared internet. The old system worked such that ip bans were only possible on perma server bans, this still gives full flexibility.
Fixes#42146
Fixes ban created notes being double escaped.
Fixes admin tickets not being resolved for a disconnected client when banned.
Re-adds ban reason to admin log for a ban as requested