Creates update_name and update_desc
Creates the wrapper proc update_appearance to batch update_name, update_desc, and update_icon together
Less non-icon handling code in update_icon and friends
Signal hooks for things that want to change names and descriptions
99%+ of the changes in this are just from switching everything over to update_appearance from update_icon
Done using this command sed -Ei 's/(\s*\S+)\s*\t+/\1 /g' code/**/*.dm
We have countless examples in the codebase with this style gone wrong, and defines and such being on hideously different levels of indentation. Fixing this to keep the alignment involves tainting the blames of code your PR doesn't need to be touching at all. And ultimately, it's hideous.
There are some files that this sed makes uglier. I can fix these when they are pointed out, but I believe this is ultimately for the greater good of readability. I'm more concerned with if any strings relied on this.
Hi codeowners!
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Each time new keybindings are added, we receive a message at the
beginning of each round telling us about keybindings we've set that
conflict with what the new ones default to. This is desirable. However,
it could take up less space while still drawing the eye.
About The Pull Request
This PR removes intents and replaces them with a combat mode. An explanation of what this means can be found below
Major changes:
Disarm and Grab intents have been removed.
Harm/Help is now combat mode, toggled by F or 4 by default
The context/verb/popup menu now only works when you do shift+right-click
Right click is now disarm, both in and out of combat mode.
Grabbing is now on ctrl-click.
If you're in combat mode, and are currently grabbing/pulling someone, and ctrl-click somewhere else, it will not release the grab (To prevent misclicks)
Minor interaction changes:
Right click to dissasemble tables, racks, filing cabinets (When holding the right tool to do so)
Left click to stunbaton, right click to harmbaton
Right click to tip cows
Right click to malpractice surgery
Right click to hold people at gunpoint (if youre holding a gun)
Why It's Good For The Game
Intents heavily cripple both the code and the UI design of interactions. While I understand that a lot of people will dislike this PR as they are used to intents, they are one of our weakest links in terms of explaining to players how to do specific things, and require a lot more keypresses to do compared to this.
As an example, martial arts can now be done without having to juggle 1 2 3 and 4 to switch intents quickly.
As some of you who saw the first combat mode PR, the context menu used to be disabled in combat mode. In this version it is instead on shift-right click ensuring that you can always use it in the same way.
In this version, combat mode also no longer prevents you from attacking with items when you would so before, as this was something that was commonly complained about.
The full intention of this shift in control scheme is that right click will become "secondary interaction" for items, which prevents some of the awkward juggling we have now with item modes etcetera.
Changelog
cl Qustinnus
add: Intents have been replaced with a combat mode. For more info find the PR here: #56601
/cl
negative quirks were impossible to create because there was zero nuance between how bad traits were, for example if you got light drinker and family heirloom, two relatively easy quirks to manage, you can get freerunner. This meant a ton of neutral quirks had to be neutral quirks because giving them even -1 points would make it too easy to get good traits. I've bumped up most quirks by x4 to allow for more nuance between what quirks are actually worth. With some of them being lowered (Like family heirloom and light drinker) as theyre not really supposed to be worth so much for so little.
quick log of changes for CB:
- Every quirk not mentioned had it's point value increased x4 (e.g. 1 -> 4, 4 -> 16)
- mime / clown fan is 2 points (change of -50% with this pr)
- musician is 2 points (change of -50% with this pr)
- depression goes from -1 to -3 points (change of -25% with this pr)
- nyctophobiagoes from -1 to -3 points (change of -25% with this pr)
- junkie from -2 to -6 points (change of 25% with this pr)
- frail from -2 to -6 points (change of 25% with this pr)
- smoker from -2 to -6 points (change of 25% with this pr)
- unstable -2 to -10 points (change of 25% with this pr)
The emote CSS class was no longer in use, it has been unitalicized and made into the actual emote class, back into local.
A CSS class for info has been created which has no special CSS.
The who verb has been put into info. (infoplain CSS class)
PDA message receiving has been put into info (PDA message sending was already in info). (infoplain CSS class)
Supply radio has been properly placed into radio.
Service radio has been properly placed into radio.
Binary talk has been placed into radio.
A CSS class for minor announcements has been created.
Minor announcements (shuttle purchases, head of staff office announcements, silicon announcements, etc) have been placed into radio (major announcements are already in radio). (minorannounce CSS class)
Filter refactor + In Game Filter Editor
Accessed via VV in the dropdown of atoms. "Edit Filters.
Makes filters actually usable.
Co-authored-by: ghgh <hghgh>
About The Pull Request
• Resolves a probably unknown oversight allowing players to find out who plays who by using the ignore verb, which if the user is a ghost, will list the names of people's mobs alongside their ckey if they are also a ghost.
Why It's Good For The Game
Removes a potential method of metagrudging and addresses a privacy concern for those who wish to play anonymous characters. Yes, you can still see this stuff in the round-end report.
We don't lose anything here. If we're using this verb, we're doing it because we want to ignore someone's OOC messages. We don't need this additional information. I feel like this is just an oversight.
Changelog
🆑
fix: Players can no longer us the ignore verb to gather a list of people's characters and ckeys together.
/🆑
About The Pull Request
Honestly, I'm not sure this is the... Correct solution? But people more familiar with this will likely show me da wae.
Prohibits creating names that can't actually be spoken in-character due to chat filters by adding CHAT_FILTER_CHECKs to the procs that handle sanitising them.
For admin-utilised renaming procs, they'll be given a simple alert box to warn them their chosen name contains words prohibited by the IC chat filter and be allowed to confirm or cancel out.
Why It's Good For The Game
If you can't speak the name IC, chances are the name shouldn't be allowed at all. Players may occasionally be forced to ahelp certain names because they contain words prohibited in chat filters.
Adds TGUI-based alerts to replace the old tgalert system. Replaces all uses of tgalert with tgui_alert except for one, the 'Report Issue' button, as people were (understandably) concerned that this button using tgui will prevent a tgui bug from being easily reported.
These windows have a nice little progress bar indicator of how much time they have left, and will automatically close themselves after this time elapses.
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
A new option has been added to the AI display radial menu alongside random, "Portrait"
It opens a small menu that lets you peruse all of the portraits and select one as your display.
This can let avid artists draw exactly what they want their AI to be like, and not-so-avid artists to bring tears to my eyes.
This makes it so the Settings menu and the Ghost and Sound submenus have their names capitalised like the rest of the options on the menu bar at the top of the screen.
It was being rounded to 1, which breaks one of the options.
I've added a float sanitize proc that accepts a degree to round to, I've set it to 0.5 in this case.
About The Pull Request
Ports and improves my interview system that has been previously used in the summer ball and toolbox tournament events. Allows for a 'softer' panic bunker, wherein players who fall below the required living time limit can still join the server and be restricted to filling out a questionnaire. Upon completing the questionnaire, the player may be allowed into the server by an administrator. If the application is approved, they get a notification that they will be reconnected and upon reconnecting will have all verbs as they usually would. If the application is denied the user is put on a cooldown after which they may submit a new questionnaire.
Players who are being interviewed (herein interviewees) have no verbs other than those required for the stat panel to function, as well as a verb to pull up the interview panel. Interviews do not persist through restarts, and the ability to join that is granted by an accepted interview is only valid for the duration of that round.
Open interviews are listed under a new 'interviews' tab for admins, which is VERY similar to the existing tickets tab.
Below is what a player who is flagged as an interviewee will see when they join the server. They can do nothing but respond to the questionnaire or leave.
image
This is what an administrator sees after an interview is submitted, they will also see a corresponding message within their chatbox, and an age-old BWOINK when an interview is submitted.
image
The interviews tab, which is similar to the tickets menu. You can open the interview manager panel to view all active (including non-submitted) interviews, queued (submitted) interviews, and closed interviews.
image
FAQ:
What happens if someone submits an interview when no admins are on? It's treated like adminhelps are, the message gets sent to TGS to be dispatched off to configured end-points (like Discord or IRC), and the user is notified that their interview was handled this way.
Can you configure the questions? Yes, in config/ there is now a interviews.txt file in which the welcome message and the individual questions can be set and modified.
Can this be turned on and off during a round? Yes, it can be toggled like the panic bunker. It requires the panic bunker to be raised in order to function.
Can interviewees have further questions asked to them? Yes, if you admin-pm them, which is possible using regular means or a conveniently placed button on the interview UI, they will be able to respond to the message.
Technical details
To use the interview system you must have the panic bunker enabled, this is an additional setting for the panic bunker. It can be set through the PANIC_BUNKER_INTERVIEW setting in config.txt, or alternatively enabled in-game as prompted during the panic bunker toggling process. It also can be toggled on its own using a verb added for this purpose, Toggle PB Interviews found under the server tab. These new actions are included in the logging for the panic bunker. I have also added a reporting stat to the world topic status keyword, which now reports if the interview system is on using the keyword interviews.
As mentioned above, for server operators, configure the questions and welcome message in config/interviews.txt.
Note to maintainers and those with big brains I had to add a call to init_verbs on the stat panel window being ready because seemingly a race condition exists wherein the add_verb of the 'view my interview' verb doesn't cause a refresh of the tabs (and therefore doesn't show the 'Interview' tab) when running in dream daemon but running it directly from visual studio code properly shows the tab. Adding a init_verbs call directly after adding the verb didn't seem to help.
A note for downstreams
If you don't use the HTML stat panel (which may not be a bad thing) then you will have to do some conversion from the HTML stat panel stuff used here to the old style stat panels. It's pretty trivial, but just be aware of that. You can see how I used to use the old stat panels in my PR from the summer ball, here, which should be helpful.
Why It's Good For The Game
This allows for a softer version of the panic bunker which impedes the flow of malicious players while allowing genuine players a chance to enter a round to gain enough time to not be affected by the panic bunker's restrictions.
Changelog
🆑 bobbahbrown
add: Added the interview system, a 'soft' panic bunker which lets players who would normally be blocked from joining be interviewed by admins to be selectively allowed to play.
/🆑
default_features and mutant_bodyparts have been used ambivelently since a long time, so I'm merging the two together and replacing relevant 'in' list access operations with '[ ]' for performance while I'm at it.
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
* Adds a living time value to the panic bunker, so you can keep people out based on time spent playing the game
* updates the admin verb, and enables %minutes% as an option
* Makes a proc call more clear
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* than
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
About The Pull Request
This adds a new default help intent suicide, a dance.
Why It's Good For The Game
I think fondly of our suicides getting more and more fun over time, and even the defaults go from "bites his tongue" to now "getting high on life" and I think this is a fun new default suicide.
Changelog
cl
add: adds a new default suicide, a dance.
/cl
I re-styled the CSS for the stat panel in hopes to make it look nice, and I also added the ability to use sub-categories (currently a single level) of verbs using a . (period), an example being Admin.Fun instead of the previous Admin - Fun. This now results in a sub-category being automagically generated in the stat panel.
Removes the antennae part of the original moth wing sprites and adds them back as a mutant bodypart.
Seeing as they were then separated I made it a preference so that players can choose which antennae sprite they would like to have, instead of being restricted solely to the ones built into the wing sprite.