Commit Graph

37736 Commits

Author SHA1 Message Date
ShizCalev
14a0dca7ae unifies security record printing 2022-08-01 18:58:41 -04:00
Jacquerel
3fb221e5e2 [NO GBP] Fixes cyborg existentialism upon encountering syndicate posters (#68913)
Renames proc and inverts return.
2022-08-01 16:32:17 -04:00
SuperSlayer
0d50287437 Fixes alien/attack_alien harm/help intents working backwards (#68872)
Now aliens properly nuzzle/bite eachother, also removes the "No attacking people at spawn, you jackass." message when attacking other aliens, because it is useless since they can't directly harm eachother.
2022-08-01 20:28:10 +02:00
Kylerace
77c2b7f50c 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
2022-07-31 14:56:18 -07:00
Y0SH1M4S73R
0debbf03c4 Adds the COMSIG_PROJECTILE_RANGE signal and the pixel_speed_multiplier var for projectiles (#68647)
The COMSIG_PROJECTILE_RANGE signal can be used to add signal handlers for behaviors that a projectile should execute each step of its travel. Currently, nothing uses it, but it is available for use in admin circuits or lua scripts.

The pixel_speed_multiplier var for projectiles acts as the value passed to the trajectory_multiplier argument of pixel_move, which originally was passed a constant value of 1. By lowering this var, you can reduce the speed of projectiles without them becoming jumpy. As an example, magic missile, gauntlet echo, the demonic watcher's temp beam, and the demonic frost miner's projectiles have all been changed to use this var. As such, their movement will be much smoother (but still the same effective speed).
2022-07-31 10:30:45 +03:00
Y0SH1M4S73R
e72ec7445a Fixes a lua state null return related to the print wrapper, improves the lua editor ui formatting, and implements a stopgap lua lag fix (#68816)
This PR fixes this issue by making sure every proc called in the stack of /proc/wrap_lua_print which could sleep is called using INVOKE_ASYNC, and to prevent such problems in the future, marks all the wrappers as SHOULD_NOT_SLEEP(TRUE). I also figured out how to fix the dumb overflowing problem of the lua editor ui.

Due to lag concerns regarding lua states with a large number of global variables (including fields within global tables), I have made it so the global table and state log are hidden by default - they can be shown using a toggle button in the editor ui.
2022-07-31 10:09:01 +03:00
Fikou
1034e7d2b4 fixes nuke ops leaders not spawning (#68855)
this code was untestable because

it required a config flag to be set on, this flag is false by default on local
it requires multiple people on the server
so it turned out that leader spawning is broken. this should fix it
2022-07-30 12:45:09 -07:00
ShizCalev
3b09158d83 Adds safety to necropolis chests if they fail to spawn loot (#68719)
Necropolis chest will no longer consume your key if it fails to generate a reward. Also, if it fails to generate, it'll allow you to attempt it again.
2022-07-30 21:38:32 +02:00
ShizCalev
94b683add1 People with epilepsy now have a chance to have a seizure when they're flashed! (#68845)
Gives folks with epilepsy a 30% chance of having a seizure when they're flashed
2022-07-30 21:37:55 +02:00
Riggle
8a680eb9ec Purrbation toggle and organ insert code refactor (#68738)
This PR improves the purrbation toggle code. Admins can now put any human species on purrbation.
2022-07-30 20:57:10 +02:00
Tim
02e415bb82 Add when bubblegum megafauna devours corpses it now spawns demonic bubblegum candy (#68701)
* Add bubblegum corpse devour spawns bubblegum candy

* Change spawn location for bubblegum candy

* Change bubblegum taste description

* Fix bubblegum gum to spawn on ground
2022-07-30 05:06:33 -04:00
Fikou
2a12a84479 everyone is a traitor mode disables progression (#68841) 2022-07-30 05:03:37 -04:00
tattle
c9acff2c3c Fixes admin-triggered xeno event (#68827)
alien event now works

Co-authored-by: tattle <article.disaster@gmail.com>
2022-07-30 05:03:13 -04:00
Coffee
70ac23050e Fixes RPEDs being unable to pick up beakers and assemblies (#68822)
does the pr
2022-07-30 05:02:18 -04:00
Charlotte
bb581a94fe The All-In-One Grinder shakes when activated. (#68803)
Fixes https://github.com/tgstation/tgstation/issues/68802
2022-07-30 04:59:49 -04:00
StormCloud
f7b79e3f93 Cyber Stomach consistency (#68790)
* missing a 0

* If you change the code, update the comments..
2022-07-30 04:57:16 -04:00
MrMelbert
be73a7f67d Fixes slime transformation requiring wizard clothes (#68782)
Fixes slime transformation requiring wizard garb
2022-07-30 04:52:19 -04:00
Higgin
99652439ef Makes liver/stomach repair surgery consistent with heart/lung repair. (#68766)
* Makes liver/stomach repair consistent with heart/lung repair - everybody gets one.

* Replicates operated vars for stomach/liver.

* It'd be good if the surgery wasn't repeatable.

* And if the fix didn't break it.
2022-07-30 04:50:25 -04:00
Charlotte
486a9068ae Updates the obsessed photo objective text. (#68753)
Adds some more specificity to the obsessed photo objective to prevent confusion such as with #68517
2022-07-30 04:45:16 -04:00
Jacquerel
dcd86153fe Fixes some quirks with motorised wheelchair density (#68715)
* Motorised Wheelchairs will not become dense when someone is buckled.
Motorised Wheelchairs will manually bump living mobs they tried to move through.

* Removes unnecessary check for emag, we want this behaviour at all times.
2022-07-30 04:40:23 -04:00
Coffee
17a1a5542d Fixes holoparasite renaming text displaying to others (#68708)
fixes dat bug
2022-07-30 04:38:34 -04:00
distributivgesetz
f9a2dd01dd Fix APC constantly clicking during a grid check (#68835)
* apc update change

* apcs should probably force update
2022-07-30 04:31:07 -04:00
MrMelbert
a9bf19ecc7 Fixes seed extractors not taking seeds from plant bags. (#68842)
* Fixes seed extractors not taking seeds from plant bags.
- When refactored, it accidently changed it from taking the seed "from its loc" to "from the extractor itself", which always failed

* Unit test

* Genericises it a bit
2022-07-30 04:16:56 -04:00
necromanceranne
01e04fbc96 Nukie Update 3: Uplink Spring Cleaning (I hit delete and call myself a developer) (#68539)
* Toy guns are only available to clown operatives.

* Removes from both operative uplinks: Camera Bug, Combat Gloves Plus (already removed from leaders), Guerrilla Gloves, FRAME disc, Radioactive Microlaser, Blood-Red Magboots (the standalone ones, not the modules), Power Beacon, Bioterror everything (including the bundle), Stechkin APS machine pistol and ammo, AI Detector.
2022-07-29 16:38:20 -04:00
Fikou
92840db585 Nuke Ops Leader update (#68830)
makes the nuke op player with the most nuke ops playtime the leader
makes the leader start with loud mode on on their radio

idea for that second one from BeeStation/BeeStation-Hornet#6631

making the most playtime nuke op the leader prevents 1st time players from rolling it, they will generally be more competent, and able to be entrusted, just like you can trust a head of staff more. a player with more competency will also probably be better at actually leading and not just clicking a button to open the ship, if they try.
the radio is a tiny change to make the leader matter more, and able to give better leadership, because im pretty sure most people dont even realize the leader has access to loud mode
2022-07-29 17:02:43 +03:00
Watermelon914
eaa77cca41 Fixes a merge skew with #68036 (#68852)
fixes merge skew
2022-07-29 14:44:19 +02:00
MrMelbert
4dfce7bfdd Fix: Cult construct can attack while their spells are on cooldown (All spells no longer have a Melee CD by default) (#68806)
Fixes #68779

#68382 Added a "melee cooldown" to ALL cooldown actions by default, which is something I wasn't sure about in the PR, but Space suggested it wouldn't affect anything. Turns out did affect some things

I instead have overridden all the new cooldown actions (Alien, spells, and some misc ones) to have a 0 second melee cooldown, allowing constructs and similar to attack and use spells freely
2022-07-29 15:01:35 +03:00
Watermelon914
69226b3bd7 Drastically improved the USB connection for air alarms. Any airlock can now be made into a shell (#68632)
The USB connections for air alarms have been improved and now include scrubber control, vent control and the setting of the air alarm mode. Also fixes a bug where the limits were not being properly set.

The scrubber, vent and limit control can be duplicated in the circuit to allow multiple limits/scrubbers/vents to be controlled by one circuit.

Any airlock can be made into a shell during construction by configuring the airlock electronic before insert.
2022-07-29 13:52:29 +02:00
MrMelbert
2e6ad23e12 Logs the use of the DNR verb (#68819)
Logs when people use DNR on the player (ghost) and the body.
2022-07-29 14:37:56 +03:00
Watermelon914
74dddffb29 Refactored fundamental circuit components that have varying inputs. Improvements to the integrated circuit UI. Improves and rebalances the drone shell (#68586)
* Refactored fundamental circuit components that have varying inputs. Made the integrated circuit UI slightly better.

* Fixes with UI

* Removes logger

* Ran prettier

* Fixed documentation

* Rebalances drone circuit

* Drones can now charge in chargers

Co-authored-by: Watermelon914 <hidden@hidden.com>
2022-07-28 23:55:41 -07:00
Jacquerel
ecc4f91444 Two more early traitor objectives for minor vandalism (#68036)
* Test commit, adds file.

Adds the actual game implementation

Revert "Feature/ratlain"

Adds hiding shards behind posters.
Begins adding evil posters which make you sad if you look at them.

Refactors 'seeing' to use proximity sensors.
This is both more efficient and allows both propaganda tools to share code.
Added most of the implementation for grafitti too, needs splitting into its own file.

* Separated objectives into different files
* Adds the graffiti objective
* Adds demoraliser component for shared behaviour between disparate items
* Soap now calls wash() instead of just qdeling things by itself

Adds file I forgot to commit.

* Remove pointless 'var's
* Makes my abstract objective abstract, probably?

Missed one remaining instance of unecessary var

* Alphabetises tgstation.dme

Tiny change to flavour text.

Removes random unwanted pixel.

* * Refactors how signals are handled across the code and moves filtering to a more appropriate place.
* Handily removes owner object which we don't need any more.
* Adds some early returns.
* Adds missing call to super in contraband.dm attackby.

* That was supposed to be a commit not also a push.
Reverts one change I didn't want to make which also allows this to compile.

* * Removes unecessary tracking of rune in spraycan
* Simplifies spam protection
* Unregister signals in "ungenerate_objective" rather than bespoke proc
* Removes pointless type cast applied two lines before type guarding it again
* Fixes some formatting
* Replaces mob/living/human with mob/living in demoraliser, if Ian get a mood component then why not demoralise him too?
* Adds missing comment
* Updates bad proc name

* * Moves proc from demoraliser to mood
* Replaces reference to glass shard trap with a weakref
* Cleans up some lines which were left after refactoring
* Corrects timing of setting `drawing_rune`
* More early returns

* Test

* Removes trailing /
Replaces . = ..() with a later return ..() in a couple of places

* Restores failure penalty
Adds weight to objective category

* Adds penalty to missed file.

* Separates slipping on graffiti to its own signal
Removes a duplicate comment
More early returns

* Renames vague var.
2022-07-29 09:42:37 +03:00
Tastyfish
24aa9bc9d0 Makes result of decal painter and tile sprayer not cleanable like the map-start decals (#68088)
The decals from decal painters and tile sprayers are identical to the ones from roundstart, except they're washable. This is good for if you need to undo or erase mistakes. Or to janicart clown nonsense quickly. But it sucks if you're trying to cement some proper borders and queue arrows and whatnot in.

So, they now are not washable, but instead you crowbar the floor tiles up, just like with map-start decals.

    Also added ink level meter for toner cartridges.
    Also, replaced my previous half-effort "white" and "black" tile sprayer colors with neutral and dark. Makes neutral and bar burgundy use the correct unusual alpha values as with the real ones.

Why It's Good For The Game

So that these aesthetic improvements aren't accidentally wiped by the janitor cleaning up.

As well, the extremely common neutral tile overlays can now be painted.
Changelog

cl
add: The results of the tile sprayer and decal painter can now only be removed by crowbarring the tile, just like map-start.
fix: Tile sprayer's "white" replaced with "neutral", the most common tile overlay color.
/cl
2022-07-29 12:24:06 +12:00
IndieanaJones
1f40eed9d2 Fix Legionnaire's Charge When Hitting Allies (#68814)
* Fixed legionnaire's charge glitching when hitting allies by returning rather than continuing a for() loop.
2022-07-28 19:56:59 -04:00
FernandoJ8
c165fcd492 Partially fixes xenomorphs not taking damage from being on fire - High firestacks edition (#68608)
* The reason why xenos survive fire better than humans goes further than this. The original PR partially fixes it, and makes it so that, on high firestacks, xenos reliably die considerably faster than humans do. However, on low firestacks it's a different story.

The way humans handle being on fire is that their external temeperature (or skin temperature or body temperature, there's no consistent name for it but the var name is bodytemperature) increases based on the line that I copied over to xeno code here. However, being on fire also cancels all other procs that I could find that would ordinarily regulate external temperature through interacting with the atmos around the mob and from equalizing the core and external temperatures of a mob. This equalization still happens, but it becomes a one-way street. The core heats up from equalizing it's temp with the skin but the skin doesn't reduce it's temperature in turn, so even though the body could offset the temperature delta caused by being on fire with few firestacks, it doesn't get the chance to.

Meanwhile, xenos (and all other carbons) don't have two different temperature values. Their external temperature doubles as core temperature and so they suffer differently from being on fire. Their temperature won't interact with the environment to cool itself while on fire, but their metabolism will still lower their temperature if it strays out of safe parameters.

Because of this, while humans are by design unable to offset the temperature increase from fire, other carbons, xenos included, are able to reset their temperature to neutral faster than a fire with low firestacks can raise it and so they can be on fire indefinitely. When high firestacks are involved this is still true, but their metabolism will be overwhelmed, their temperature will start to steadily rise and because of the way their bodies react to high temperatures they will take more damage and die faster than humans.
2022-07-28 18:04:08 -04:00
Ekaterina-von-Russland
d0d321875b Fixes the stress experiment sometimes not working and rebalances it (#68691)
* Fixes the stress experiment sometimes not working, allowing it to have a scan leeway of 2% each way.
2022-07-27 22:26:25 -04:00
Tim
7afb582398 [NO GBP] Fix slime potions used on simple mobs to inherit all language abilities from the user (for real this time) (#68316)
Fix language for sentience potions for real
2022-07-27 20:32:17 -05:00
Ghom
b4b9c6776d 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.
2022-07-28 02:40:34 +02:00
RaveRadbury
9c3502582a Adds old maid apron accessory to autodrobe (#68648)
Adds old maid apron accessory

Renames new maid apron to maid corset
2022-07-27 18:29:06 -05:00
ShizCalev
7082dc4254 Fixes surgical moth wing reconstruction trying to repair not moth wings. (#68774)
Fixes moth wing repair surgery runtime
2022-07-28 00:54:22 +03:00
ShizCalev
030ada2513 Cleans up drop_organ() to use drop_location() (#68772)
Standardizes drop_organ with drop_location()
2022-07-28 00:53:30 +03:00
Charlotte
295590e837 Minor grammar change on the golden wheelchair. (#68756)
* Replaces `he's` with `must've` in the golden wheelchair's description, to make up for people who don't play as male characters.
2022-07-27 17:20:01 -04:00
ShizCalev
ac4af925c1 Fixes runtime that occurs on the last hit of bubblegum (#68695) 2022-07-27 15:35:57 -05:00
ShizCalev
4e65712361 Fixes runtime when screwdriving a card slot laying on the ground (#68696) 2022-07-27 15:34:41 -05:00
Fikou
731f87895a [NO GBP] fixes tk firing for real (#68804) 2022-07-27 15:31:50 -04:00
MrMelbert
c9e16c44bf Fixes some alien actions not working. (#68625)
* Fixes alien actions bricking due to cooldowns.
- Sanity checking for availaibility failed due to being "on cooldown".
2022-07-27 15:09:27 -04:00
Salex08
8a8fa9c99c Replaces GetComponent in Mining items with Signalers (#68575)
* Replaces many instances of GetComponents in mining items with signals and better uses overall of Components, in drills and the GPS handcuffs.
* To do this, also added 3 new signals to mechs when you are adding/removing mech equipment onto one.
2022-07-27 14:30:04 -04:00
Fikou
0ff9909c97 secondary fires no longer kill the user (#68734) 2022-07-27 14:27:06 -04:00
Coffee
ac5f3dc4fd Fixes cleanbot animation & speed (#68707)
* Fixes the bug, turns cleaning time into a var, and fixes some extra space
2022-07-27 11:01:50 -04:00
Mothblocks
cb24aa4cb5 Bump auxlua to 1.0.0 (#68729)
* Bump auxlua to 1.0.0

* This should be automated at some point, but meh

* Fix caps diff
2022-07-27 00:12:14 -04:00
Fikou
4fc6e1839c Nukie Update 4: Reinforcement Flavors (#68731)
* reinforcement flavors

* bustin

* oh yeah

* Merge branch 'master' of https://github.com/tgstation/tgstation into donkin

* fixes the scarf

* aaaaaaaaaaaaaa

* GOD

* better description
2022-07-27 00:08:12 -04:00