Spiritual successor and extension to #17798, an almost entire rebuild of the SQL ban system backend and interface.
Bantypes are removed per #8584 and #6174. All bans are now 'role bans', server bans are when a ban's role is server. Admin bans are a column, meaning it's possible to ban admins from jobs.
Bans now have only an expiry datetime, duration is calculated from this when queried.
unbanned column is removed as it's superfluous, checking unban status is now done through checking unban_datetime. unban_round_id column added. Each ip and computerid columns rearranged so ip is always first, like in other tables. Bans now permit a null ckey, ip and computerid.
Ban checking is split into two procs now is_banned_from() does a check if a ckey is banned from one or more roles and returns true or false. This effectively replaces jobban_isbanned() used in simple if() statements. If connected a client's ban cache is checked rather than querying the DB. This makes it possible for a client connected to two or more servers to ignore any bans made on one server until their ban cache is rebuilt on the others. Could be avoided with cross-server calls to update ban caches or just the removal of the ban cache but as is I've done neither since I think it's enough of an edge case to not be worth it.
The second proc is is_banned_from_with_details(), this queries the DB for a role ban on a player's ckey, ip or CID and returns the details. This replaces direct queries in IsBanned.dm and the preferences menu.
The legacy ban system is removed.
The interfaces for banning, unbanning and editing bans have been remade to require less clicking and easier simultaneous operations. The banning and jobban panel are combined. They also store player connection details when opened so a client disconnecting no longer stops a ban being placed.
New banning panel:
Key, IP and CID can all be toggled to allow excluding them from a ban.
Checking Use IP and CID from last connection lets you enter only a ckey and have the DB fill these fields in for you, if possible.
Temporary bans have a drop-menu which lets you select between seconds, minutes, hours, days, weeks, months and years so you don't need to calculate how many minutes a long ban would be. The ban is still converted into minutes on the DB however.
Checking any of the head roles will check both of the boxes for you.
The red role box indicates there is already a ban on that role for this ckey. You can apply additional role bans to stack them.
New unbanning panel:
Unbanning panel is now separate from the banning panel but otherwise functionally the same.
Ban editing panel:
Actually just a modified banning panel, all the features from it work the same here.
You can now edit almost all parameters of a ban instead of just the reason.
You can't edit severity as it's not really part of the ban.
The panels have been tested but I've not been able to get my local server to be accessible so ban functionality isn't properly confirmed. Plenty of testing will be required as I'd rather not break bans.
cl
admin: Ban interface rework. The banning and unbanning panels have received a new design which is easier to use and allows multiple role bans to be made at once.
prefix: Ban search and unbanning moved to unbanning panel, which is now a separate panel to the old banning panel.
/cl
* it's ready boi
* typos, things i forgot to uncomment and mindshields revealing hosts
* Requested bugfixes/syntax changes
* Fixes Network Invasion runtime and other misc fixes
* oops
* Fixes mindshield runtime
* Mind control and lots of fixes
* Admin logging and runtime fixes
* dumb bugs and fluff text
* Commented out code, typos and finalizing player numbers
* runtime
* Major runtime fixes, buffs and distortion field
* death on MC'd vessel death, destroy_hive and hive removal on death
* code review
* oops
* Mind Control realname fix
* -Fixed intelli potions requiring you to have Xeno toggled on in special preferences to be notified.
-Split xenos, intelli potions, and mind transfer potions into separate roles for a more precise role management.
* -Made sentience potions and mind transfer potion roles bannable from jobban panel.
-Gave Sentience potion role its own toggle in game preferences.
* Fixed bad reference
* Cleaned up role references
* Cleaned up a few defines
* Cleaned up more defines
* Overthrow gamemode, again!
* Fixes objectives even more, especially AI one, removes boss antag subtype
* Fixes and refactors objective code, especially AI
* Expands greeting msg, fixes AI getting storage implant, rewords objectives to make it clear that they're teamshared objectives
* Resets gamemode required players to production values
* Lowered the number of teams existing during highpop
* refactors code a bit, fixes special_report to not use roundstart list, renames converter
* Cannot convert mindshielded people anymore unless you remove the implant
* Changes the Nothing explanation_text of head objective to hint at autoupdating, updates greet()
* Fixes define compile error
* Extensive surgery additions
* ,
* bioware
* restrict
* implants
* oops my hand slipped
* "i only changed a few lines, surely it's gonna compile, let's just push it and be done with it" --me, once again
* zombie surgery
* Adds brainwashing antag datum
* Antur Reviews
* @Antur part 2
* wow
* Antag Panel & Friends Refactor
* Prettfying
* Removes abduction also blob from default configs.
* Ninja fixes
* Ninjafix
* First draft of the new check_antags
* I love coding without compiler
* Yes
* Fixes
* Check_antags part 2
* Fixes and cleanup
* Okay should be good now.
* Adds simple no move & no tc syndie for events
* Integrates toggle objective pr
* Why i even bother.
* Offer mob shows all antags
* Some minor visual stuff
* Proper name for the helper
* Disentangles blob from blob mode
* Observer examine
* Fixes runtimes
* Blob now has infinite points in critical mass and will consume the entire station visually
* Different icon
* Blob event more common
* All overminds get to pick their core location
* Blobs block the shuttle
* Not sure when controller would be different from overmind
A dead-simple traitor variant.
It's like traitor, except instead of an uplink you get a buddy: your blood brother. You must team up with your brother to complete your objectives. It runs along side regular traitor mode, thus the name "traitorbro".
* Add the system for managed global variables
* Travis ban old globals
* So you CAN inline proccall, that's neat
* Fix that
* master.dm
* Remove the hack procs
* Move InitGlobals to the proper spot
* configuration.dm
* Fix the missing pre-slash
* clockcult.dm
* This is probably for the best
* Doy
* Fix shit
* Rest of the DEFINES tree
* Fix
* Use global. for access
* Update find_references_in_globals
Always hated that proc
Whoever made it must've bee a r e a l idiot...
* __HELPERS tree
* Move global initialization to master.
Fix the declaration
* database.dm
* Dat newline
* I said DECLARATIVE order!
* Here's something you can chew on @Iamgoofball
* game_modes.dm
* Fix this
* genetics.dm
* flavor_misc.dm
* More stuff
* Do it mso's way. Keep the controllers as global
* Make master actually see it
* Fix
* Finish _globalvars/lists
* Finish the rest of the _globalvars tree
* This is weird
* Migrate the controllers
* SLOTH -> GLOB
* Lighting globals
* round_start_time -> ticker
* PAI card list -> pai SS
* record_id_num -> static
* Diseases list -> SSdisease
* More disease globals to the SS
* More disease stuff
* Emote list
* Better and better
* Bluh
* So much stuff
* Ahh
* Wires
* dview
* station_areas
* Teleportlocs
* blood_splatter_icons
* Stuff and such
* More stuff
* RAD IO
* More stuff and such
* Blob shit
* Changeling stuff
* Add "Balance" to changelogs
* Balance for changelog compiler + Auto Tagging
* Update the PR template
* hivemind_bank
* Bip
* sacrificed
* Good shit
* Better define
* More cult shit
* Devil shit
* Gang shit
* > borers
Fix shit
* Rename the define
* Nuke
* Objectives
* Sandbox
* Multiverse sword
* Announce systems
* Stuff and such
* TC con
* Airlock
* doppllllerrrrrr
* holopads
* Shut up byond you inconsistent fuck
* Sneaky fuck
* Burp
* Bip
* Fixnshit
* Port without regard
* askdlfjs;
* asdfjasoidojfi
* Protected globals and more
* SO MANY
* ajsimkvahsaoisd
* akfdsiaopwimfeoiwafaw
* gsdfigjosidjfgiosdg
* AHHHHHHHHHHHHHHHHHHHHHHH!!!!!
* facerolll
* ASDFASDFASDF
* Removes the unused parts of dmm_suite
* WIP
* Fix quote
* asdfjauwfnkjs
* afwlunhskjfda
* asfjlaiwuefhaf
* SO CLOSE
* wwwweeeeeewwwww
* agdgmoewranwg
* HOLY MOTHER OF FUCK AND THATS JUST HALF THE JOB?!?
* Fix syntax errors
* 100 errors
* Another 100
* So many...
* Ugh
* More shit
* kilme
* Stuuuuuufffff
* ajrgmrlshio;djfa;sdkl
* jkbhkhjbmjvjmh
* soi soi soi
* butt
* TODAY WE LEARNED THAT GLOBAL AND STATIC ARE THE EXACT SAME FUCKING THING
* lllllllllllllllllllllllllllllllllllllllllll
* afsdijfiawhnflnjhnwsdfs
* yugykihlugk,kj
* time to go
* STUFFF!!!
* AAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!
* ngoaijdjlfkamsdlkf
* Break time
* aufjsdklfalsjfi
* CONTROL KAY AND PRAY
* IT COMPILEELEELELAKLJFKLDAFJLKFDJLADKJHFLJKAJGAHIEJALDFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* Goteem
* Fix testing mode
* This does not belong in this PR
* Convert it to a controller
* Eh, fuck this option
* Revert controllerization Ill do it some other time
* Fix
* Working controllerization
* FOR THE LOVE OF CHRIST PROTECT THE LOGS
* Protect admins and deadmins
* Use the inbuilt proc
Adds cortical borers, a midround antag originally from Bay. The code here is from yogstation, baystation and paradise station.
Borers are little brainslugs that when adjacent to a human can infest them. They can supply you with useful chemicals such as medicines and meth, and can revive you from the dead if they have maximum chemicals. They can also take over your body, putting them in control of you while you become a "captive mind". A captive mind can take back control by doing Resist. Health analyzers show borers in people, while medHUDs show borers in control. If you have Sugar in your body the borer can do nothing, it gets kicked out of control if it's controlling and becomes docile. Organ Manipulation surgery on head to remove the borer. If the brain of the body gets removed (decapitation, brain removal surgery, gibbing) the borer falls out of the host and loses control if they were controlling. Changelings can remove borers with Anatomic Panacea or Lesser Form (or Last Resort). Borers can reproduce and have an objective to escape on the shuttle with X hosts alive.
I'm unhappy with the way revenants are right now, and my code for them is pretty unsatisfactory in comparison to what I know now. Although revenants will still fill the same role of just being spookier ghosts, they'll be a bit more passive - incapable, for instance, of giving diseases to people. The new revenants will be called umbras and will use vitae instead of essence.
Total change list:
Revenants have been renamed to umbras. Essence has been renamed to vitae. This may be temporary.
Umbra spawn events are now weighted higher and spawn an unoccupied umbra. Ghosts are alerted to the umbra's position and may interact with it to take control of it.
Umbras' health is not based on vitae but has a hard cap at 100.
Umbras have a passive vitae drain each tick, defaulting at 0.01. If the umbra runs out of vitae, they will die irrevocably. They also slowly regenerate health by doing this.
When an umbra dies, they leave behind umbral ashes that reform after one minute. They're difficult to see and can be scattered by activating them, although they also have high research levels if you're fast enough.
Harvesting vitae from critical targets no longer kills them. Harvesting a target in general prohibits them from being harvested until five minutes later, but they can be drained again after that.
EMPs revitalize umbras and give them hefty amounts of vitae due to their physical nature.
Umbras have four abilities: Toggle Nightvision, Discordant Whisper, Possess, and Thoughtsteal.
Toggle Nightvision is self-explanatory.
Discordant Whisper is identical to the original revenant's transmit.
Possess allows the umbra to slip into a human's body unnoticed. While in their body, umbras will slowly drain vitae from the human at a tiny rate - not enough to cause harm, but enough to induce adverse effects in the clueless human. These effects intensify over time and eventually lead to the umbra being forced out of their host.
Thoughtsteal paralyzes a living human for several seconds while the umbra steals their memories. After several seconds, the umbra copies the notes of the target's memories and turns invisible - the hapless victim is stunned for several seconds afterwards and can't be Thoughtstolen by the same umbra again. Umbras have an objective to steal the memories of 25% of the station's population.
Salt piles have been added, created by salt shaker or just by splashing salt. These piles will prevent an umbra from passing and reveal them briefly if they try.