* Nuclear operatives have a christmas tree during the festive season
🆑 coiax
add: Nuclear operatives have a Christmas tree during the festive season.
/🆑
Minor buff to nuke ops during the Christmas period when trees have presents,
as they'll have access to random items just like the crew.
* Adds a second lightbulb to the bathroom
* Christmas tree SPAWNERS rather than LANDMARKS
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
cl
add: A wizard's scrying orb now grants both xray vision, and the ability to hear the dead to whoever possesses it.
balance: However, as soon as the orb is no longer in your possession, these abilities fade.
/cl
This was @XDTM's idea, when he implemented near death experiences.
It works even when in your backpack.
This also adds the TRAIT_XRAY_VISION, for non-genetic, non-eyeball sources of xray.
Why? Having a wizard talking to ghosts means it looks like he's talking to thin air. Also, this makes scrying orb a little more active in its knowledge gathering. Ghosts will have the chance to mislead the wizard with whatever they're talking about.
cl coiax
add: Adds the Spontaneous Brain Trauma to the event pool. Sometimes your brain just goes a little wrong.
/cl
Brain traumas are !fun!, and even more !fun! than your appendix getting inflamed.
All powers that don't have their own feedback calls, Absorb DNA and Linglink, now call ..() after any cancelling returns.
Fixes#41621, Absorb DNA would do an extra feedback call from try_to_sting()
tweak: Suppressed and dry fire sounds are now stored as a variable, and can be edited on a per gun basis.
sounddel: The standard gun dry fire sound was collapsed to one sound instead of 4. They were all just pitch variations anyways, which is now covered by built in sound pitch variation.
soundadd: Revolvers now have a unique gunshot sound that is slightly different for 357 and 38.
soundadd: Revolvers now have a unique dry fire sound.
soundadd: Revolvers now make a unique noise when emptying them besides just the sound of shells falling out.
soundadd: Spinning a revolver such as the Russian Revolver now makes a sound.
spellcheck: Syndicate sniper kit now includes a suppressor instead of a "supressor."
cl
tweak: spellbooks now count towards the survivalist objective if they were not used.
/cl
fixes#40857
It feels like shit if you don't know spellbooks don't count and you just lose out of nowhere. It also doesn't make sense for them to count if they still have magic powers.
cl XDTM
add: Added the Hypnotic Flash to the uplink for 7 TC.
add: The Hypnotic Flash temporarily confuses and pacifies those it's used on.
add: If the victim is in a mentally vulnerable state (hallucinating, insane, reduced mental activity) they will instead fall into a trance, and will be hypnotized by the next words they hear.
/cl
Controlled hypnosis for traitors. Usual caveats apply: Mindshield prevents the trance effect (but not the confusion/pacification) and it can still deconvert from hypnosis; a new hypnosis will override the previous one; and most importantly for any ambiguity the interpretation is mostly up to the victim, so it's not a 100% sure conversion (i'm hoping people won't use this clause to just ignore it).
cl Skoglol
add: Added click shortcuts to xenobiology console. You no longer have to aim with the camera eye to do slime science.
/cl
https://www.youtube.com/watch?v=zP5GP3sc0e0
Xenobiology is kind of a pain in its current state, where you gotta aim with the camera eye. The eye has inconsistent speed, and is prone to lag. This addition allows you to click the things you wish to manipulate instead, which is a lot smoother.
I've added a help action that explains the controls.
Threw together a icon for the button:
For now, shortcuts are:
Slime: Shift click slime to pick up, turf to drop all. Ctrl click to scan, alt click to feed potion.
Monkey: Ctrl click critted monkey to pick up, turf to drop a new one.
cl ShizCalev
fix: Fixed chem OD's causing damage to robotic limbs.
fix: Fixed wood golems repairing robotic limbs every tick of life()
fix: Fixed vampires repairing robotic limbs every tick of life()...
fix: Fixed shadowpeople healing robotic limbs every tick of life()
fix: Fixed poppeople healing robotic limbs every tick of life()
fix: Fixed adjustBruteLoss and adjustFireLoss not properly discriminating for limb status types.
tweak: Fixed bibles healing robotic limbs, because your false deity can't fix SCIENCE.
fix: Fixed the Starlight Condensation, Nocturnal Regeneration, Tissue Hydration, Regenerative Coma, and Radioactive Resonance virus symptoms repairing robotic limbs.
/cl
Gonna be away the next two weeks, so if there's anything major after today just go ahead and close it and I'll fix it when I get back.