Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix sleep and purity lints not counting proc overrides #214

Merged
merged 5 commits into from
Oct 9, 2020

Conversation

spookydonut
Copy link
Collaborator

@spookydonut spookydonut commented Oct 7, 2020

#204 but better.

handles some weird edgecases i found


Fixes #203

SpaceManiac pushed a commit to tgstation/tgstation that referenced this pull request Oct 9, 2020
…4230)

overrides weren't detected by should not sleep, i think i've mostly 
fixed that with SpaceManiac/SpacemanDMM#214

Some of these are wacky but overall this pr is harmless

signals shouldnt sleep even in weird 1 in a million situations or due 
to other people adding bad code

overrides of changeling can_sting() use alert() and input() and that's 
just too fucked for me to fix in this pr
SkyratBot pushed a commit to Skyrat-SS13/Skyrat-tg that referenced this pull request Oct 9, 2020
…4230)

overrides weren't detected by should not sleep, i think i've mostly
fixed that with SpaceManiac/SpacemanDMM#214

Some of these are wacky but overall this pr is harmless

signals shouldnt sleep even in weird 1 in a million situations or due
to other people adding bad code

overrides of changeling can_sting() use alert() and input() and that's
just too fucked for me to fix in this pr
@SpaceManiac SpaceManiac changed the title Fix overrides Fix sleep and purity lints not counting proc overrides Oct 9, 2020
@SpaceManiac SpaceManiac merged commit ed0b94d into SpaceManiac:master Oct 9, 2020
Azarak pushed a commit to Skyrat-SS13/Skyrat-tg that referenced this pull request Oct 9, 2020
…vements (#1216)

* Fix some potential sleeps as detected by SpacemanDMM improvements (#54230)

overrides weren't detected by should not sleep, i think i've mostly
fixed that with SpaceManiac/SpacemanDMM#214

Some of these are wacky but overall this pr is harmless

signals shouldnt sleep even in weird 1 in a million situations or due
to other people adding bad code

overrides of changeling can_sting() use alert() and input() and that's
just too fucked for me to fix in this pr

* Fixes some potential sleeps as detected by SpacemanDMM improvements

Co-authored-by: spookydonut <github@spooksoftware.com>
MarkSuckerberg pushed a commit to MarkSuckerberg/WaspStation-1.0 that referenced this pull request Nov 6, 2020
…4230)

overrides weren't detected by should not sleep, i think i've mostly
fixed that with SpaceManiac/SpacemanDMM#214

Some of these are wacky but overall this pr is harmless

signals shouldnt sleep even in weird 1 in a million situations or due
to other people adding bad code

overrides of changeling can_sting() use alert() and input() and that's
just too fucked for me to fix in this pr
Maldaris pushed a commit to Whitesands13/Whitesands that referenced this pull request Nov 13, 2020
* Adds a signal for storage exit and insert, uses it to make trading cards zoom properly (#52737)

* Adds a signal for storage exit and insert, uses it to make trading cards shirk properly

* Adds storage param

* Smoothing cleanup, variables moved, atom movable three Destroy() merged into one (#51878)

* smooth

* derp

* parent call order

* defined

* merge stuff

* tab

* merge conflicts

* call parent first

* Renames smooth var to smoothing_flags (#52427)

* smooth_flags

* SMOOTH_FALSE

* smooth_flags

* canSmoothWithAreas typecache turned into a boolean (#52606)

Exactly the same functionality for a cheaper cost, no typecache lists being built.

One could argue that this diminishes expansibility. I'd argue back that this is a rather lazy hack and shouldn't be expanded on.
If you want to add more complex smoothing functionality then don't make it area-based.

* Catwalk block uplifting from below. Base for similar Z move blocking things. (#52141)

* BLOCK_Z_FALL separate

Separate BLOCK_Z_FALL flag to BLOCK_Z_OUT_DOWN, BLOCK_Z_OUT_UP, BLOCK_Z_IN_DOWN, BLOCK_Z_IN_UP

* Propertly Z blocking for catwalk

Catwalk block z falling and uplifting from below

* Walkable lattice

Now lattice can support spaceman

* Replace BLOCK_Z_FALL flag

* Update _open.dm

* Update openspace.dm

* Update ladders.dm

* Update away_props.dm

* Icon smooth refactor (#52864)

Co-authored-by: L <rohesie@gmail.com>

* Icon smooth refactor (#52864)

Co-authored-by: L <rohesie@gmail.com>

* Speeds up /datum/light_source/proc/update_corners() by 16% or so (#51004)

About The Pull Request

Just moving /turf/proc/get_corners() into its only caller, slightly shuffled.

Also #defining /proc/GetRedPart() etc, which should flatten down to a copytext+text2num operation with #51005. Also defining parse_light_color() since it has two callers and does something trivial (splits #ff0000 into three luminance vars).

cl Naksu
code: Lighting corner updates are ever so slightly faster.
/cl

* Opacity refactor (#52881)

    Moves all opacity var manipulation to a proc which sends a signal.
    light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
    has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
    Some opacity-related sight procs optimized as a result of this.
    Some variables moved to the object's definition.
    A define or two added into the mix for clarity.
    Some code cleaning, like turning booleans into their defines.
    One file renamed for clarity.

Changelog

cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl

* Delays loading of random books (#51144)

* delays loading of random books

* fix map var

* review

* return

Co-authored-by: Jordie0608 <=>

* Datum view and some other things (#51208)

* Datumizes all uses of change_view

* Cleanup and helper procs

* tweaks values to match the format, hint hint, (value - 0.5) works just fine

* And there's the rest

* woop, braindamage

* and one more

* fuck you menu file

* woops

* we should apply that

* fixes tooltip drift, thank you goon coders

* you can shake but you can't zoom

* [s] sanity checks vv_edit_var() values (#52255)

cl ShizCalev
fix: Added some sanity checking for varedit values.
/cl
* sanity checks vv_edit_var() values

* this should be an or

* one more fix

* Add look up verb for multi-z (#50782)

* Add look up verb

* Made requested changes

* Added a toggle

* Removed redundant arg from signal

* Update code/modules/mob/living/living.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* Update code/modules/mob/living/living.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* Adds keybinding description

* Removed unused signal

Co-authored-by: Rohesie <rohesie@gmail.com>

* Adds glass floors (That work with multi-z) (#50831)

* Hotfix for broken lobby menu (#51260)

* letting me down letting me down letting me down

* tumbling down tumbling down tumbling down

* Unfucks smallscreen, removes my stupidity (#51266)

* slightly less SHIT FUCK SHIT FUCK

* Turns out we do need this

* YaYeet

* That should do it

* Merge pull request #51085 from dootdoom/dootdoom

Straight Jackets have bigger text when it's being put on you.

* Adds a knockedout trait, begins refactoring mobility 2.0 (#51348)

* ko

* change request

* Makes all anchored changes use setAnchored(), COMSIG_MOVABLE_SETANCHORED now only sent if an AM's anchored var has changed for more reliable usage. (#52254)

* Converts everything to use setAnchored() + other fixes

* Fixed singulo debug

* singulo again

* forgot to move the vv_edit proc

* caught that this time :)

* changes

* Update code/game/atoms_movable.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

Co-authored-by: Rohesie <rohesie@gmail.com>

* immobilized (#52578)

    Adds an immobilized trait.
    Adds procs for several variable changes so we can respond to their events.
    Adds some signals for said variables changing.

Need to turn the variation in number of usable legs and arms (get_num_legs() and get_num_arms()) into events we can respond to, but they are pretty annoying to do so. Probably for a different PR.

* Fixes glow/antiglow (#51378)

* Fixes glow

* Removes unneeded variable

* Picks random colors

* Applies the lower strength

* Color standardization, vars moved, and signals (#52574)

    Defined all the existing light_color values.
    Moved their definitions to colors.dm
    Made white the default color. It was so already, but that was very obscured.
    Moved the atom light-related variables to the atom definition.
    Wrapped changes to variables such as light_color into procs that report the event through signals.
    Moved the light_on variable to the atom level, also adding a signal for its changing, to represent toggling lights.
    Cleaned up a little bit of code in where new variables were defined before redefinitions.

This is all atomization to reduce changes in #52413
None of this affect gameplay at all, it's all code cleaning and refactoring.

There's more colors to standardize, a search for color = will find lots of targets, and I see little need to have both the LIGHT_COLOR and COLOR patterns, but I don't want to make this PR bigger than it already is.

* Adds eye contact (#52108)

* doesn't do it for me

* signal and hijinx

* creep stare

* less lazy code

* Cleanable cleanup (#52477)

* Don't initialize the atom_colours list on atoms until it's actually needed

* Moved bloody_hands var to mob/living/carbon/human instead

* Added COMSIG_COMPONENT_CLEAN_RADIATION signal to reduce moms spaghetti

The shower and suit storage unit now calls this signal instead of either doing it manually or doing it via the washed proc

* Cleaned up carbon washing, renamed washed to wash

* The wash proc now doesn't take the washer as first arg because that wasn't used anywhere
* The wash strength is no longer optional
* Carbons now overrides the wash proc instead of using the signal
* Properly check for obscuredness before washing any equipped items
* Properly wash all items and bloody hands etc
* Added clean_lips proc for humans for cleaning any lipstick

* Cleaned up washing. Washy stuff now calls wash instead of calling the clean signal directly

* Renamed is_cleanable to ismopable, gives this category a more fitting purpose. Many things beyond floor decals are cleanable. It is now also determined using the atom layer instead to make it more generic.
* Properly utilize the is_cleanable define
* Added wash override for turfs where they also wash any mopables on the same tile
* Space cleaner and cleaning element etc now simply washes the mob instead of doing its own manual cleaning on ~some~ equipped items

* Non-component washables now simply override wash instead of registering for the clean signal

* Fixed some left over clean signal registers not returning true

* Added clean_strength var to space cleaner

* Moved human wash proc next to the other washing procs

* Also wash glasses and mask if not obscured when washing face

* Fixed attempting to "scoop up" cleanable decals using a rag

* Fixed plasmaman spacehelm icon not updating when washed

Also removed a duplicated worn_overlays proc

* Fixed head icon not updating when washing lipstick

* Moved radioactive clean signal register to where it should be

* Added atom radiate VV verb for debugging

* Redesigned the CLEAN constants into a more sensible flags setup

This makes it more dynamic, cleaning apparatuses can clean more specific than just a cleaning strength.

* CLEAN_TYPE_* flags indicate a specific cleanable, such as blood, fingerprints or disease
* CLEAN_* consts consist of a combination of cleaning types to make cleaning apparatuses have a consistent behaviour on what they clean

* Fixed broken rad removal logic in showers

* Apply suggestions from code review

Co-authored-by: Rohesie <rohesie@gmail.com>

* Removed unneccesary bool from sink code

* Fixed wrongly named variable in turf wash

* Renamed bloody_hands to blood_in_hands

Co-authored-by: Rohesie <rohesie@gmail.com>

* Fixes Null Reference + Qdel Issue in Runechat (#50830)

* runtimes bye bye

* rohesie wants it this way

* oranges fixies

* more rohesie suggestions

* cleanies

* on parent qdel moment

* Fixes a throwing-related hard delete source (#52237)

* hard del

* runtime

* more throw_impact possible qdeleting

* merge solving

* hard dels (#52399)

* Adds a message modification packet to saycode to allow for unordered parsing of operator chars, like ;, #, :, or % (#51790)

* Fixes mobs that aren't able to speak being able to cast spoken spells (#52054)

* Fixes wizard speaking

* defines

* Runechat emotes (#52212)

* runechat emotes

* rename

* tweaks

* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)

Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.

Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.

This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.

To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.

Requested by @optimumtact.
Changelog

cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl

* Overlay lighting component (#52413)

Sparks no longer lag, projectile beams move super smoothly, same with mobs and whatnot. This also allows for easy expansion into directional lights, field-of-view, wee-woo rotating lights or whatever.

It does have a downside: things right-clicked or checked through the alt+click tab will show the light overlay:

This is a BYOND limitation, very well worth it IMO.

🆑
add: Smooth movable lighting system implemented. Projectiles, sparks, thrown flashlights or moving mobs with lights should be much smoother and less laggy.
balance: Light sources no longer stack in range, though they still do in intensity.
/🆑

* Directional lighting (#54520)

Co-authored-by: Azarak <azarak10@gmail.com>

* map fixes

* ok I concede

* Fix some potential sleeps as detected by SpacemanDMM improvements (#54230)

overrides weren't detected by should not sleep, i think i've mostly
fixed that with SpaceManiac/SpacemanDMM#214

Some of these are wacky but overall this pr is harmless

signals shouldnt sleep even in weird 1 in a million situations or due
to other people adding bad code

overrides of changeling can_sting() use alert() and input() and that's
just too fucked for me to fix in this pr

* Adds a coder override emote so manual custom emotes work properly (#52602)

* Adds a coder override emote to skip dumb shit with me

* I know this sucks, I can't comprehend how to do this cleanly without a full rewrite

* cleaner now

* a few minor tweaks and fixes

* woops

* Restyles Stat Panel, Adds Subpanel Sub-Categories (#53947)

Co-authored-by: bobbahbrown <bobbahbrown@gmail.com>

* Adds a living time config to the panic bunker (#54341)

* 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>

* Interview System / Soft Panic Bunker (#54465)

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.
/🆑

* rebuilds tgui

* Area lighting colours (#2144)

* the return of qwerty lighting (#2567)

* fixes light floors

* Implements jungle generation and area map generator datums (#51082)

* adds better grass sprites (#53421)

adds better grass sprites, ported from eris
converts fairygrass into those sprites too
makes "plating" grass and jungle grass smooth with cool stuff on the edges
adds a sandy dirt tile, removes the old "sand" icon which was just puke colored noise

* minor fixes

* whoops

* please and thank you

* throwing fix

* fuck

* please

* final gunlight fixes

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Dennok <Deneles@yandex.ru>
Co-authored-by: vuonojenmustaturska <naksu@youzen.ext.b2.fi>
Co-authored-by: Jordie <4343468+Jordie0608@users.noreply.github.com>
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Koshenko <53068134+Koshenko@users.noreply.github.com>
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
Co-authored-by: nemvar <47324920+nemvar@users.noreply.github.com>
Co-authored-by: Daniel Hultgren <daniel.cf.hultgren@gmail.com>
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
Co-authored-by: skoglol <33292112+kriskog@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
Co-authored-by: spookydonut <github@spooksoftware.com>
Co-authored-by: PowerfulBacon <jakeymortlock@gmail.com>
Co-authored-by: Isaac <qwertytrogi@gmail.com>
Co-authored-by: Fikou <piotrbryla@onet.pl>
@SpaceManiac SpaceManiac added this to the suite v1.6 milestone Dec 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SHOULD_NOT_SLEEP does not check overrides of procs being called for sleeps
2 participants