Commit Graph

1550 Commits

Author SHA1 Message Date
SkyratBot
59dc5c36b7 [MIRROR] Cleans up the fallout from plane cube [MDB IGNORE] (#17003)
* Cleans up the fallout from plane cube (#70235)

* Cleans up the fallout from plane cube

Alright.
Makes cleaning bubbles respect planes
Adds support for updating overlays on move, fixing an issue with pointing at items
Adds better error messages for failing to provide args for mutable_appearance()
Fixes a bug where string overlays were not respecting insertion order

* Adds documentation for offset spokesman and offset_const

* Better stack trace

* Removes some redundant uses of cached MAs

At this scale, attempting to cache MAs like this has 0 impact on anything
And just makes things more messy then they need to be

* ensures fullscreen objects START offset, so things are always proper

* ensures chatmessages always have the right offset

* fixes compile

* whoops, the above lighting plane should actually be ABOVE the lighting plane

* fixes compile, also cleans up the fire overlay a tad

* Adds a unit test for plane masters that are shrunk by multiz being double shrunk

This is slightly hacky because of how I'm handing the plane master
group, but it's not THAT bad, and gives me some real good coverage

* Properly targets the seethrough plane at the game world plate. This fixes unit tests, and also just makes more sense

* whoops

* oh

* adds datum support for allocate(), cleans up a harddel from testing

* Makes camera chunks index at 1, and also makes them support non powers of two sizes, since that was unneeded

* fixes runtime in allocate

* Cleans up the fallout from plane cube

* liquid tweaks

* oop

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-19 19:43:05 -04:00
SkyratBot
fe184a3a51 [MIRROR] Fixes lung swapping giving you false air alerts and slightly improves their descriptions [MDB IGNORE] (#17002)
* Fixes lung swapping giving you false air alerts and slightly improves their descriptions (#70630)

* Fixes lung swapping giving you false air alerts and slightly improves their descriptions

Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
2022-10-19 21:51:45 +01:00
SkyratBot
c107436eba [MIRROR] Adds a brand-new HUD: The Trasen-Knox HUD! [MDB IGNORE] (#16965)
* Adds a brand-new HUD: The Trasen-Knox HUD! (#70474)

Hello everyone! Today I bring to you all a fancy new HUD for you lot to enjoy: The Trasen-Knox HUD! Lovingly based off of the Common Core lore maintained by EOBGames!

Well, what is it?

Its a HUD with a special theming based on the old 1970's CRT screens that were commonplace at the time, including the iconic neon green and the beige plastic casing!

This PR also includes a new behavior so that its possible for each active hand icon to be unique, instead of it being a sole highlighted icon as it was before.
image

And for those wondering, it does indeed account for multiple limbs!
image

Finally, as seen in the first screenshot, this PR adds the behavior to hide the HUD icon when you insert a piece of equipment into the slot. Thank you for adding the behavior, Fikou!

This is all as a step for upgrading and changing how the HUDs we interact with on a daily basis can be upgraded in the future to be more appealing visually! That, and it is simply gorgeous :)

PositiveEntropy, Fikou
add: Adds a new HUD: The Trasen-Knox HUD! With a theming based on classic 1970s CRT screen computers!
code: Added behavior for unique icons for active hands.
code: Added behavior that makes it so when you equip an item, the icon behind it defaults to the blank template type.

* Adds a brand-new HUD: The Trasen-Knox HUD!

Co-authored-by: Imaginos16 <77556824+Imaginos16@users.noreply.github.com>
2022-10-19 01:25:32 +01:00
RimiNosha
f58cf51ae4 [MODULARIZING] Partial Refactoring of Organic Interface Code (#16019)
This took a long time to review, but at long last, it's done.

* HUD clutter, good bye, you will not be missed.

* Oh my god so much pain

* No commented code. Bad.

* Uwaaaa

* Add a couple of warning messages for common scenarios, use defines

* AAAAA

* AAAAAAAAAAA

* UWAAAA

* UUUUWAAAA, DOCUMENTED SNOWFLAKE CODE

* FUCK

* Apply suggestions!

* Apply suggestions part one!

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Apply suggestions part two!

* Static list

I think this is how it works, it compiles, sooo

* Split the giga monolith that's known as technical_stuff_for_lewd into two parts, human_helpers, and whatever else isn't a human helper. Also add a helper proc for mass update_inv on organic interface slots.

* I can't believe you did this

* Did you know that organic interface code didn't clean up it's defines? Neither did I!

* Less ifs

* Apply last suggestion that I know how to

* That was a lie

* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

I HAVEN'T EVEN TOUCHED THE WORST CODE

* Oops

* Pain

* No copypaste

* Proc is 🦀

* No, bad, no commenting code.

* List prittification for chems, reduces the sheer amount of update_body calls

* Allow non-lewd empath users to not have to suffer raunchy inspect messages

* Oop

* DEEEEEEEEEEEEFINES

* Oh yea, that review. Definitely remembered.

* Formatting

* Breast defines

* MUCH cleaner and MUCH MUCH EASIER to expand incubus draft code

* Credit myself if I'm gonna spend days of my time combing through this

* Oops

* Chems cleanup

* Whyyyyyyy

* Climax rework, suffering.

* Wtf is this name

* Oh yea, arousal clamping.

* Haha, oops

* Bad, this is stupid easy to modularize

* Why is body_size in here

* List formatting, grammar stuff, and also breast size is now letters

* This took too long for me to figure out and I'm not proud

* Even I can make shitcode!

* Oops, typo

* You know, this makes more sense.

* Mhhh, this shouldn't be named like this

* Wrong file

* Rename `adjustPain`

* Dead code go yeet

* Y U NO READ DOCS

* Doc proc, minor optimisation

* Reviews part 1

* Whoever made this should read good coding practices. For any language.

* DEEEEFINNNEEEEESSSS

* SUFFER

* No more fluids

* EEEEEEEEEEE

* AAAAAAAAAAAAAAA

* MOB IS 🦀

* AAAAAAAAAAAAAAAAAA

* AAAAAA

* UWA

* And also solve tastfish's reviews!

* Partial revert, cause DM hates that

* I am very smart

* EEE

* AAAAAA

* Haha keyboard go click clack

* CODE

* FUCK

* FUUUUUCK

* PERFORMANCE

* Reset horny to 0 if erp disabled

* Arousal minimum is now 0, cause negatives are dumb and I hate them

Also cuts out some code that isn't needed as far as I can tell.

* Apply suggestions!

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* AAAAA

* AAAAAAAAAA I CAN'T CODE

* Aaaaa

* WHY GIT

* I am very smart part... uh, four?

* Minor formatting changes

* Oops, fix potential cause of multiple climax attempts

* WAIT, WHY AREN'T YOU USING THE DEFINE?!

* Magic number slightly less magicky, sorta.

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-10-04 11:06:12 -04:00
SkyratBot
9bf006d189 [MIRROR] Multiz Rework: Human Suffering Edition (Contains PLANE CUBE) [MDB IGNORE] (#16472)
* Multiz Rework: Human Suffering Edition (Contains PLANE CUBE)

* skyrat changes

* bodyparts merge

* unres door floorlight fix

* Future upstream fix for blindness

* upcoming upstream airlock fix

* fix button emissive

* Fix FOV markings?

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-10-02 23:30:09 -04:00
SkyratBot
586b1d4fcb [MIRROR] Baguette swords make proper sounds and are toggled from left clicking the baguette, not right click [MDB IGNORE] (#16527)
* Baguette swords make proper sounds and are toggled from left clicking the baguette, not right click

* Update code/_onclick/item_attack.dm

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-09-29 22:45:55 -07:00
SkyratBot
32db6d2411 [MIRROR] Properly checks flags with & instead of == [MDB IGNORE] (#16487)
* Properly checks flags with & instead of ==

* merge fixed for changeling

* skyrat equipment updated

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
2022-09-28 16:38:59 -04:00
SkyratBot
1925dceab9 [MIRROR] Fixes a bug with null clients in parallax code [MDB IGNORE] (#16473)
* Fixes a bug with null clients in parallax code (#70141)

* Fixes a bug with null clients in parallax code

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-09-27 16:42:23 -04:00
SkyratBot
68e962fa21 [MIRROR] Adds seethrough component [MDB IGNORE] (#16421)
* Adds seethrough component (#69642)

Adds a seethrough component!
Standing behind a big object with this component will make the object transparent:

https://youtu.be/nnyWMJakVtE

And no one else can see it:

And yes you can click through it thanks to the power of plane masters!

Standing behind a tree is a pretty big meme and people will have to either shift right click or bump into you to ever find you. This makes it so much better to implement big objects, since they no longer obscure the tiles behind them
It's also useful for existing big objects, like billboards and the likes

🆑
qol: You can now see through big trees when you stand behind them!
refactor: Adds a seethrough component to make it easier to add big stationairy objects without reducing visibility
/🆑

Info

This is done by sending an override overlay to the user that obscures the normal object and plays an animation.

It registers an ENTERED signal on specific turfs. Those tiles in which it hides stuff is defined as a list of list coordinates, for which I made a global list with some defines. It's really crappy and I'd appreciate some feedback on that

* Adds seethrough component

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2022-09-25 14:56:36 -07:00
SkyratBot
d27cd97f74 [MIRROR] [IDB IGNORE] [MDB IGNORE] Makes the icons/mob folder sane [MDB IGNORE] (#16030)
* [IDB IGNORE] [MDB IGNORE] Makes the icons/mob folder sane

* fix map merges

* icon paths and merge conflicts

Co-authored-by: skylord-a52 <skylord-a52@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-24 20:10:28 -04:00
SkyratBot
47a6316b32 [MIRROR] Removes persistence of items through changing species when not allowed to [MDB IGNORE] (#16356)
* Removes persistence of items through changing species when not allowed to

* fixes racist clothing

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
2022-09-24 16:56:35 -04:00
SkyratBot
ca52e49d3b [MIRROR] Fixes two status effect related hard deletes [MDB IGNORE] (#16340)
* Fixes two status effect related hard deletes (#70026)

* Fixes two status effect related hard deletes

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-09-20 20:51:06 -07:00
SkyratBot
19e524ac84 [MIRROR] Object Window Niceties [MDB IGNORE] (#16292)
* Object Window Niceties  (#69825)

* Object Window Niceties

Alright. I got bored and polished up the object/alt click window.

It had a few issues:
First, we generated all our images in bulk, as soon as requested
Second, the caching was global, despite only working on a client to
client basis
Third, we only generated up to 10 images. This could be fine, but the
javascript code will continuiously rerender assuming unrendered images
will come eventually, and they well, weren't. This caused MASSIVE
clientside lag
Fourth and finally, I did not like how moving away from the viewed turf
lagged behind, in sync with the stat tab update. Looked bad.

I've resolved all these.
I solved the first three issues by reworking how obj images were
generatated and managed.

Rather then storing a basic cache on the subsystem, and doing all the
image generation at once, we queue up image generation as we like, and
generate images inside a new processing subsystem fire.
This isn't the best solution, since it still eats cpu somewhat, but it's
a whole lot better then the other options, outside either removing the
need to getflat, or somehow predicting what items a client will want to
see

I've started storing three bits of info. First, a list of all the
objects we currently want to display.
Second, a list of atom -> image html
Third, a list of atoms to imageify.

This information is stored on a datum on /client, since I want this to
have a lifetime linked to well, clients.

I've used this datum to solve that fourth bit, using a component I made
for parallax a bit back. This lets me react to our client's mob, and
update the tab linked to that, rather then on a subsystem call by call
basis.

That's about it.

Co-authored-by: san7890 <the@ san7890.com>

* Object Window Niceties

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2022-09-17 22:27:19 -07:00
SkyratBot
9704261ac6 [MIRROR] Fixes a couple simple issues with interactability [MDB IGNORE] (#16167)
* Fixes a couple simple issues with interactability (#69762)

first things first, back when LemonInTheDark changed the interact_range code he did a slight modification that broke the AI cards, namely, he did this (not saying its a bad change, it is actually a good change, just mentioning what change caused the issue im fixing now):

now, his change does make sense, since he changed the range default to 0 instead of 1, however "null" is also used as a range, specifically for AIs, now this normally isnt an issue for the AI itself, as the AI generally gets a TRUE in its interaction checks before it gets down this deep (machines have a bypass specifically for AI), but there is one situation in which it does go this deep: AI Cards, when in an AI card the AIs interaction range is set to 0 and their interaction is disabled, thereby making it impossible for them to interact with anything, now when a player opens the card UI and enables the AIs ability to interact, this sets their range back to null, aka unlimited, the issue now however, is that since "null" is treated the same as "0", and AIs in cards dont hit the same bypasses an AI core does, Lemons change to submit a false return for 0, is also submitting false for null, meaning the AI card cannot interact with anything except the tile its on, despite having null/unlimited range....

fixed by changing the null value to infinity where it is used

additionally my fix of can_interact() code apparently had the unintended side effect of not allowing rotations of machines if theres no power, i missed this entirely because thats such a specific situation, since you try rotating with APC power in most cases, it also didnt affect most machines, that said the fix was simple, just changed the proc being called to only check distance, not power. fixes #61852

and last but not least, fixes some code with the syndie bombs interactability, namely removes a redudant section, and adds a check for range, turns out there were no checks for range so you could in theory open the UI and walk away and then activate it from another location, so added a quick check to ensure you actually CAN interact with it before letting you push buttons in the UI

* Fixes a couple simple issues with interactability

Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
2022-09-11 16:02:41 +01:00
SkyratBot
24de6b009d [MIRROR] Fixes our rendering for 514.1587 [MDB IGNORE] (#16125)
* Fixes our rendering for 514.1587 (#69778)

About The Pull Request

Ok so we have a blackness plane master right? it's setup to catch byond darkness but it doesn't rn cause we don't got the sight flags set.

So what it does is just sit there and do NOTHING.

BUT some genius put a color var on it, prob meant to just make it fully black.
But I think they just wrote it wrong, because byond just treats it as "make this plane have alpha 255 everywhere"

The problem is it's got zip on it, so if it actually worked this would black out everything below plane 0.
BUT it didn't work before, because setting anything on non overlay PMs broke them, and made them invis.

Then lummy fixed that, and now we get this.

I've fixed this bug by just removing the color set. It's not actually used for anything so outside this accidential working as intended behavior, it effects nothing, and doesn't actually impact darkness even if we used the sight flag. (I know this because I did this same thing in my multiz pr, which uses the sightflag)

Anyho I think they just wrote it wrong, because byond just treats it as "make this plane have alpha 255 everywhere"

We support 514.1587 now, so that's nice (NOT FOR RUNTIME THO CAUSE IT BROKE ?. LUMMOX ALSO KNOWS THIS)

Fixes #69774
Changelog

cl
fix: Hey, we support byond version 514.1587 now. You can upgrade if you'd like. I hope.
/cl

* Fixes our rendering for 514.1587

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-09-08 09:55:43 -04:00
SkyratBot
471760e96a [MIRROR] Fixes storage mass transfer being generally broken, adds mass transferring onto griddles [MDB IGNORE] (#15729)
* Fixes storage mass transfer being generally broken, adds mass transferring onto griddles  (#69084)

* - Fixes storage mass transfer
- Brings some sanity to storage procs
- Implements a griddle feature that never was

* Uncomment this

* Right-click attack fix

* Scoop fix

* Smartfridges use silent

* Restores some lost checks

* Fixes storage implants

* Fixes storage mass transfer being generally broken, adds mass transferring onto griddles

* update modular

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-09-03 18:01:54 +01:00
SkyratBot
88c85fe1f7 [MIRROR] [MDB IGNORE] Refactors drinks and fixes a lot of food problems [MDB IGNORE] (#15577)
* [MDB IGNORE] Refactors drinks and fixes a lot of food problems

* [MDB IGNORE] Refactors drinks and fixes a lot of food problems

* forgto 2 commit

* im slowly going insane

* why does find and replace not FIND everything

* hnghnnngh

* h

* l

* a

* a

* so close...

* delta fix

* I thought I committed this already, guess not

* this PR has been the bane of my fucking life

* orange juice

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
2022-08-25 03:17:10 +01:00
SkyratBot
70b4a01a17 [MIRROR] Cleans up update_icons, makes the update_icon_updates_onmob element bespoke, updates CODEOWNERS [MDB IGNORE] (#15673)
* Cleans up update_icons, makes the update_icon_updates_onmob element bespoke, updates CODEOWNERS

* Update CODEOWNERS

* Cleans up update_icons, makes the update_icon_updates_onmob element bespoke

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-08-18 17:20:48 +01:00
SkyratBot
48685b4356 [MIRROR] Replaces the mood component with a mood datum [MDB IGNORE] (#15549)
* Replaces the mood component with a mood datum

* Fixes merge conflicts and updates all of our mood events to use the new mood datums

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-08-12 14:58:14 -04:00
SkyratBot
24c9fc0296 [MIRROR] Fixes 118(give or take) cases of mapload not being passed to initilaize [MDB IGNORE] (#15546)
* Fixes 118(give or take) cases of mapload not being passed to initilaize (#69107)

fixes 114 cases of mapload not being passed to initilaize

* Fixes 118(give or take) cases of mapload not being passed to initilaize

* Fixes a lot (give or take) cases of mapload not being passed to initilaize

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-08-11 08:31:27 -07:00
SkyratBot
bc36a7f6af [MIRROR] blind people know when things happen to them [MDB IGNORE] (#15427)
* blind people know when things happen to them

* Update strippable.dm

Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 01:12:08 +01:00
SkyratBot
6016cf97b4 [MIRROR] individual LOG_GAME [MDB IGNORE] (#15401)
* individual LOG_GAME

* e

* Update teleporter.dm

Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-08-08 01:11:55 +01:00
SkyratBot
4f17f09ee9 [MIRROR] mining modsuit changes [MDB IGNORE] (#15452)
* mining modsuit changes (#69011)

the mining modsuit now costs 3000 from 2500
the mining modsuit now still slows you down over lava, though you still resist it
the plasma core now accepts plasma both in sheet form and ore form
the plasma core should no longer buggily not refill you
the mining modsuit bombs should now have enemies target you

* mining modsuit changes

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2022-08-07 08:43:24 -07:00
SkyratBot
64a61cb49f [MIRROR] ventcrawling exploit fix [MDB IGNORE] (#15421)
* ventcrawling exploit fix (#68965)

* ventcrawling

* haha parenthesis moment

* ventcrawling exploit fix

Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
2022-08-05 10:02:53 -07:00
SkyratBot
d8da1153b7 [MIRROR] Biddle Verbs: Queues the Most Expensive Verbs for the Next Tick if the Server Is Overloaded [MDB IGNORE] (#15329)
* Biddle Verbs: Queues the Most Expensive Verbs for the Next Tick if the Server Is Overloaded (#65589)

This pr goes through: /client/Click(), /client/Topic(), /mob/living/verb/resist(), /mob/verb/quick_equip(), /mob/verb/examinate(), and /mob/verb/mode() and makes them queue their functionality to a subsystem to execute in the next tick if the server is overloaded. To do this a new subsystem is made to handle most verbs called SSverb_manager, if the server is overloaded the verb queues itself in the subsystem and returns, then near the start of the next tick that verb is resumed with the provided callback. The verbs are called directly after SSinput, and the subsystem does not yield until its queue is completely finished.

The exception are clicks from player input since they are extremely important for the feeling of responsiveness. I considered not queuing them but theyre too expensive not to, suffering from a death of a thousand cuts performance wise from many many things in the process adding up. Instead clicks are executed at the very start of the next tick, as the first action that SSinput completes, before player movement is processed even.

A few months ago, before I died I was trying to figure out why games at midpop (40-50 people) had non zero and consistent time dilation without maptick being consistently above 28% (which is when the MC stops yielding for maptick if its overloaded). I found it out, started working on this pr, then promptly died. luckily im a bit less dead now

the current MC has a problem: the cost of verbs is completely and totally invisible to it, it cannot account for them. Why is this bad? because verbs are the last thing to execute in the tick, after the MC and SendMaps have finished executing.
tick diagram2
If the MC is overloaded and uses 100% of the time it allots itself this means that if SendMaps uses the amount its expected to take, verbs have at most 2% of the tick to execute in before they are overtiming and thus delaying the start of the next tick. This is bad, and im 99% sure this is the majority of our overtime.

Take Click() for example. Click isnt listed as a verb but since its called as a result of client commands its executed at the end of the tick like other verbs. in this random 80 pop sybil round profile i had saved on my computer sybil 80 pop (2).txt /client/Click() has an overtime of only 1.8 seconds, which isnt that bad. however it has a self cpu of 2.5 seconds meaning 1.8/2.5 = 72% of its time is overtiming, and it also is calling 80.2 seconds worth of total cpu, which means that more than 57.7 seconds of overtime is attributed to just /client/Click() executing at the very end of a tick. the reason why this isnt obvious is just because the verbs themselves typically dont have high enough self cpu to get high enough on the rankings of overtiming procs to be noticed, all of their overtime is distributed among a ton of procs they call in the chain.

Since i cant guarantee the MC resumes at the very start of the next tick due to other sleeping procs almost always resuming first: I time the duration between clicks being queued up for the next tick and when theyre actually executed. if it exceeds 20 milliseconds of added latency (less than one tenth the average human reaction time) clicks will execute immediately instead of queuing, this should make instances where a player can notice the added latency a vanishingly small minority of cases. still, this should be tm'd

* Biddle Verbs: Queues the Most Expensive Verbs for the Next Tick if the Server Is Overloaded

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-07-31 22:03:59 +00:00
SkyratBot
e8bb36ed27 [MIRROR] Ladders take left/right clicks to go up or down (+ extra balance and QOL) [MDB IGNORE] (#15239)
* Ladders take left/right clicks to go up or down (+ extra balance and QOL) (#67913)

You now left click to climb up and right click to climb down a ladder. A delay of 1 second has also been added, since otherwise it'd take only one click to immediately move vertically and would be much more spammable.
Ghosts still use the old radials, because their right clicks are bound to the default byond popup menu.

* Ladders take left/right clicks to go up or down (+ extra balance and QOL)

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2022-07-28 11:45:12 -07:00
SkyratBot
99cdbe4ce2 [MIRROR] Reworks pAIs [MDB IGNORE] (#15162) 2022-07-27 19:10:14 -04:00
SkyratBot
758914d69a [MIRROR] Fix: #41250 You can't use a tablet while inside a locker [MDB IGNORE] (#15177)
* Fix: #41250 You can't use a tablet while inside a locker (#68171)

* Fix: #41250 You can't use a tablet while inside a locker

Co-authored-by: Matt <gavxn@zanidrak.com>
2022-07-25 11:49:11 +01:00
SkyratBot
6683493eba [MIRROR] Removes Internals HUD element [MDB IGNORE] (#15104)
* Removes Internals HUD element

* Removes the proc calls that were no longer necessary

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-07-23 15:49:57 -04:00
SkyratBot
29229c6202 [MIRROR] Removes the Families gamemode [MDB IGNORE] (#14995)
* Removes the Families gamemode

* f

* Repathing! And new updates!

* some nights I stay up cashing in my bad luck

* Additional Fixes for the gang boys!~

Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2022-07-23 13:59:30 -04:00
SkyratBot
ff158c562a [MIRROR] adds a null check to CanReach() [MDB IGNORE] (#14956)
* adds a null check to CanReach()

* Update click.dm

fix a code conflict

Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-07-18 08:55:25 -07:00
magatsuchi
4f9df17cb1 [FIXED MIRROR] Tsu's Brand Spanking New Storage: or, How I Learned to Refactor For Skyrat (#14868)
* Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code

* Delete storage.dm

* yippee

* shit

* holy shit i am stupid

* more fixes

* fuck

* woops
2022-07-17 21:16:59 -04:00
SkyratBot
24267f7768 [MIRROR] Readds Alien Vore [MDB IGNORE] (#14967)
* Readds Alien Vore

* Update parts.dm

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
2022-07-17 03:54:40 -07:00
SkyratBot
57059c6842 [MIRROR] Mild plane tweaks, thermomachine dropshadow [MDB IGNORE] (#14806)
* Mild plane tweaks, thermomachine dropshadow (#68185)

Adds the area plane to the game and colorblind plane master controllers
Mostly because it's actually used now, for weather, and should be
blurred/recolored

Sets the thermomachine on the game plane
I want it to have a dropshadow, and right now it's on the floor plane,
just from atmospherics, which I think is stupid

* Mild plane tweaks, thermomachine dropshadow

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-07-09 03:27:27 +01:00
SkyratBot
18a56ffeeb [MIRROR] (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE [MDB IGNORE] (#14477)
* (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE

* fex

* fex

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-06-25 01:24:00 +01:00
SkyratBot
7a653adfbb [MIRROR] TGUI Say: Upgrades chat input with modern features [MDB IGNORE] (#14375)
* TGUI Say: Upgrades chat input with modern features

* yes

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-06-17 02:12:42 +01:00
Useroth
81b8f962b7 Mirror 66967 & 67411 (#14279)
* Implements a Demolition Modifier variable to items, affects damage vs structures and robots. (#66967)

Adds a modifier variable which can be used to increase or decrease a given items damage to structures, machinery, vehicles, and robots (including cyborgs, simple-bots, and anything else with the MOB_ROBOTIC biotype)

* Fixes attacks on mech equipment ignoring armor / melee damage, also fixes mech equipment not being disabled at 0% health, also also unit tests mech armor (#67411)

Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-06-12 21:03:17 +01:00
SkyratBot
44df188a33 [MIRROR] Fixes issues where players can enter the game without accepted interviews. [MDB IGNORE] (#14153)
* Fixes issues where players can enter the game without accepted interviews.

* Update login.dm

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2022-06-08 02:13:31 +01:00
SkyratBot
112904ec1f [MIRROR] replaces some slot names with proper names [MDB IGNORE] (#14107)
* replaces some slot names with proper names (#67481)

replaces o_clothing, i_clothing, storage1, and storage2 with suit, uniform, left pocket, and right pocket respectively

* replaces some slot names with proper names

Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
2022-06-06 00:08:36 +01:00
SkyratBot
6e2042a9ae [MIRROR] Fix asteroid parallax layering issue [MDB IGNORE] (#14091)
* Fix asteroid parallax layering issue (#67353)

* Fix asteroid parallax layering issue

Co-authored-by: Kugamo <thekugamo@gmail.com>
2022-06-05 04:27:26 +01:00
SkyratBot
63ac8f0f62 [MIRROR] Reimplements breathedeep's scan into atmozphere. [MDB IGNORE] (#14072)
* Reimplements breathedeep's scan into atmozphere. (#67438)

* AtmoZphere tablet app now has the previous functionality of the BreatheDeep cartridge's scanning ability, meaning you can swap to analyzer mode to analyze with right-click.

* Reimplements breathedeep's scan into atmozphere.

Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
2022-06-03 14:39:41 +01:00
SkyratBot
99bdd9c71b [MIRROR] Adds the Ninja MODsuit [MDB IGNORE] (#14025)
* Adds the Ninja MODsuit

* fixes (#14034)

Co-authored-by: nevimer <foxmail@protonmail.com>

* Fixed the empty contractor outfit breaking CI

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: nevimer <77420409+nevimer@users.noreply.github.com>
Co-authored-by: nevimer <foxmail@protonmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2022-06-02 03:32:51 +01:00
SkyratBot
29a9e3f499 [MIRROR] Removes Rad Text Plane (MOTHHHHH) [MDB IGNORE] (#13973)
* Removes Rad Text Plane (MOTHHHHH) (#67337)

>Be mothblocks

* Removes Rad Text Plane (MOTHHHHH)

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-05-28 13:52:13 +01:00
Gandalf
7c2a649bf7 Familiar lobbyscreen (#13835)
* wew

* e

* e

* ye

* yes

* e

* wew

* batch review, lobby > title

* yeh

* Update code/_onclick/hud/screen_objects.dm

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Update code/_onclick/hud/new_player.dm

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Update code/_onclick/hud/new_player.dm

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* wew

* wew

* fixes changing title screen

* yes

* tes

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-05-26 23:29:38 +01:00
SkyratBot
196d6f500a [MIRROR] Fix transparent floors ignoring blur effects [MDB IGNORE] (#13924)
* Fix transparent floors ignoring blur effects (#67191)

* Fix transparent floors ignoring blur effects

Co-authored-by: Tim <timothymtorres@gmail.com>
2022-05-26 23:25:02 +01:00
SkyratBot
a079903ecb [MIRROR] refactors statpanel to use tgui API [MDB IGNORE] (#13646)
* refactors statpanel to use tgui API

* fix

Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
2022-05-20 15:02:16 +01:00
SkyratBot
f293336aaf [MIRROR] Fixes initial floating action buttons failing to properly position [MDB IGNORE] (#13698)
* Fixes initial floating action buttons failing to properly position (#67068)

Also cleans up artificer stuff a bit, their rune button should align
with their spells.

Basically, when we grant someone a button, it gets positioned in its
default location. If the button's floating, their location var becomes
an invalid arg to position_action. Then we called position action with
their location var.

Big fucky.

I've cleaned up the logic a bit, and ensured that you can never position
to FLOATING directly, since it's a marker rather then a real position on
the screen

* Fixes initial floating action buttons failing to properly position

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2022-05-18 20:00:29 +01:00
SkyratBot
edfaf90ebf [MIRROR] Ventcrawling improvements, performance and visual [MDB IGNORE] (#13461)
* Ventcrawling improvements, performance and visual (#66709)

* Initial pipecrawl work

Ok so pipecrawl images were updating EVERY TIME YOU MOVED
This was not good mojo

What I've done here is twofold
First, I ensured pipecrawl updates only when the net changes. This
breaks the current implementation, but I intend on fixing that

Second, I moved our method of getting pipes to the spatial grid
This isn't that great at the moment, but I intend on adding support for
tracking entered/exited cells, which should make this much better

* Much faster pipecrawling processing, niceties

Adds a concept called a cell tracker datum.
It manages a list of cells a passed in bound is "inside", and when
queried will return a list of new cells, and old cells.

Because we only really care about maintaining an absolute window of
"CELLS WE ARE IN" and less about always removing cells we're not in, we
can manage a second window to prevent moving up and down on a cell line
causing a ton of updates.

Uses this concept to optimize pipecrawling significantly, from 3ms per
call before to roughly 0.03ms per call.

Also moves pipecrawl images to their own plane, so they don't overlap ui
elements

* Pipecrawling effects niceties, direction help

You can now move in more then one direction when pipecrawling
This works as expected, if you hold up and left, move up for a while,
and come to a fork, you'll go left

Added some effects to pipecrawling. It'll darken the lighting plane
slightly, so you get a nice effect instead of just fullbright.
Also added a color matrix and drop shadow to the pipe images, this way
they stand out a bit more.

You now glide between pipe moves, rather then moving instantly. This
doesn't effect your actual move rate, but it no longer feels jittery
with say, 60fps

* Bounds

* Fixes runtimes, cache something somethign sonic speed

* Reworks how being interested in the spatial grid is tracked

Rather then checking multiple variables on the atom to consider, we
instead check for the existence of a string key.

This key is used by a list on the spatial grid subsystem to retrive a
cached list of all of the atoms "types"

Doing this requires doing a bit of extra work in
important_recursive_contents code, but it allows us to separate being a
part of the spatial grid from using important recursive contents, which
is very nice.

As a consequence, I've had to unroll some lazylist macros in important
recursive contents logic. It's not ""that"" bad but it's not great
either.

Oh and this adds a slight cost to enter/exit cell, but it's minimal.
Basically, rather then checking for different features of a grid member,
we just iterate the list their string key points to. Very handy

So there's an added cost of a list copy and all, but we save the
headache of more types technically increasing the cost of
addition/removal.

I also made adding/removing from the grid into one "pulbic" proc rather then two
different ones for each operation, because it was starting to get silly

* waaa waa it doesn't compile

* chord -> coord

* Ensures important_recursive_contents is actually emptied on removal

* Removes soul

* Kyler's review

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Kyler's review 2

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Kyler's review 3

Moves some procs around, improves some documentation, catches a few
small issues

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Ventcrawling improvements, performance and visual

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
2022-05-09 15:06:38 +01:00
Useroth
4d07f3a620 Missed mirror (#13460)
* Converts drunkness and dizziness to status effects. Refactors status effect examine text (and, subsequently, stabilized black extracts).  (#66340)

* Refactors dizziness into a status effect

* Refactors the dizziness setter to use the new kind

* Drunkness.
- Should drunk continue to work off of a magic value or be swapped to duration? I've not yet decided: For understandability it's preferabale for "drunk" to use a timer (they are drunk for 3 more minutes), but both adding drunk and decreasing drunk currently use weird calculations which would be difficult to carry over.
- Ballmer is a liver trait

* Dizzy was a setter, not an adjuster

* Does all the drunk effects over
- refactors examine text fully
- refactors stabilized blacks because of this

* Removed

* repaths, fixes some issues

* Minor fixes

* Some erroneous changes

* Fixes some dizziness errors

* Consistency thing

* Warning

* Undoes this change, I dont like its implementation

* max_duration

* Max amount

* Should be a negative

* max duration

* drunk doesn't tick on death

* Rework dizziness strength

* Erroneous dizzy change

* Fixes return type

* this should do it?

* well, one more

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-05-09 15:05:42 +01:00
SkyratBot
9592e8096c [MIRROR] Changes stripped_input to behave like tgui_text [MDB IGNORE] (#13443)
* Changes stripped_input to behave like tgui_text (#66757)

After a little bit of EVEN MORE misunderstanding, it's apparent that tgui text handles null differently, which meant fixing last whisper for tgui inputs users (chads) would mean that it would be broken for byond input users (lizards).

All jokes aside, this changes it so that text inputs will return null when you hit cancel or X for BOTH tgui and stripped_input.

* Changes stripped_input to behave like tgui_text

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2022-05-08 12:06:30 -07:00