Commit Graph

36105 Commits

Author SHA1 Message Date
Mothblocks af8902331d Amortize the cost of creating preference assets by caching them per git revision on production, reducing best case init times by ~20 seconds (#63503)
Preference asset creation, which while consistently created in early assets, can be requested at any time before then and often is, currently takes about 15 to 25 seconds to produce. Because of extremely hard to reproduce BYOND icon bugs, most of this is done on the same tick.

Lowering the cost of initialization itself is very tricky. Some of it we can theoretically optimize, such as creating humans for antagonists, others we can't, such as the raw cost of icon blending.

Furthermore, adding new icons later down the line would just increase this initialization time even more.

Instead of optimizing the asset creation, which is an uphill battle, this instead chooses to amortize the cost by caching preference assets created per git revision. This means that preference assets will be created, with their long delay, only once whenever the code changes.

This is done on a config, defaulting to on so that production needs no changes, as the whole point of these being made at runtime at all is that it keeps assets/art styles consistent, and PRs making subtle bugs that break preference generation in some way is not uncommon. On development, your git revision will stay the same until you commit, no matter what code changes you make.
2022-01-01 04:36:30 +00:00
SmArtKar c7ac1eee59 Fixes runtime when MODsuit gets EMPed (#63706)
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2021-12-31 15:57:38 -08:00
Whoneedspacee 155bd7d9ab Mob Abilities (#63520)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-12-31 15:56:26 -08:00
Seth Scherer 595780ffea Bodies will no longer (sometimes) be fully deleted when escaping a disposal pipe trap. (#63694)
Fixes #26512
handles a small edge case, don't want people being fucking deleted
2021-12-31 13:38:37 +00:00
san7890 31b8c57da0 Tidies up some grammar in the Exosuit Fabricator (#63702) 2021-12-30 22:37:11 -08:00
TemporalOroboros 7c5860c1bd Miscellaneous projectile phasing fixes/tweaks + fixes a typo in the blastcannon projectile. (#63581)
* Fix blastcannon typo. Hopefully fix blastwave phasing.

* Fix projectile phasing on direct target

* Should unspaghetti sniper bullet var definitions

* Makes phasing rounds phase

* Preserve original behavior of sniper rounds
2021-12-30 23:08:22 -06:00
GoldenAlpharex ad54077822 Makes blackmarket uplinks not runtime and get broken at mapload (#63680) 2021-12-30 18:49:05 -05:00
Seth Scherer 4f5819b55b Fixes hearing sounds in crit, that shouldn't be heard (#63687)
* fix'

* don't need src

* better
2021-12-30 18:46:18 -05:00
Seth Scherer add6479183 Possesing a mob no longer lowercases your ckey in admin messages #63686 2021-12-30 18:41:39 -05:00
Jeremiah 9c6fdb567d TGUI list conversions + bug fixes (#63354)
About The Pull Request

    Converts more inputs to TGUI. Possibly all user-facing input lists in the game.
    Did any surrounding text/number inputs as well
    Added null choice support so users can press cancel.
    Added some misc TGUI input fixes
    Fixed custom vendors while I was there

I refactored a lot of code while just poking around.
Primarily, usage of .len in files where I was already working on lists.
Some code was just awful - look at guardian.dm and its non use of early returns
If there are any disputes, I can revert it just fine, those changes are not integral to the PR.
Why It's Good For The Game

Fixes #63629
Fixes #63307
Fixes custom vendors /again/
Text input is more performant.
Part of a long series of TGUI conversion to make the game more visually appealing
Changelog

cl
refactor: The majority of user facing input lists have been converted to TGUI.
refactor: Tgui text inputs now scale with entered input.
fix: Many inputs now properly accept cancelling out of the menu.
fix: Fixes an edge case where users could not press enter on number inputs.
fix: Custom vendor bluescreen.
fix: You can now press ENTER on text inputs without an entry to cancel.
/cl
2021-12-31 11:07:28 +13:00
Tim 566b9ee1d8 Fix Turf Transparency for MultiZ (#62875)
Fixes #62794 (Catwalk Tiles placed on the lower level of tram appear to be on the upper level)
Fixes #57654 (Open Space shading not always applied)
Fixes #53666 (When standing on a glass floor above a light on the Z level below you the light effect is rendered above the character. This makes light have ugly glows on the floors above. This also happens with grills and lattice.)

Transparent turfs, catwalks, and lighting overlays were badly broken with MultiZ issues. This fixes any transparent turf to appear and be on the same z-level if it has the turf_transparent element. Catwalks will appear and be on the same z-level as well. They were initially glitching to top z-levels causing people to walk over an illusion that caused them to fall to their deaths.

After I fixed these issues I noticed that lighting overlays were also glitching to top z-levels, which looked rather strange as there were lights in the middle of rooms and hallways with no supporting walls. Lights now appear under the transparent turfs properly.

The mapping icons for catwalks displayed the wrong icon_state so I fixed that too.

I made a big refactor for transparency and catwalks code that had to be done to get all of this to work properly.

You no longer have to be afraid of falling off of glass floors, catwalks, or transparent tiles. Also lighting overlays don't glitch through upper z-levels anymore for transparent tiles.
2021-12-29 21:42:49 -08:00
Seth Scherer e6837eaeb7 Ablative Trenchoat HUD Fix (#63671) 2021-12-29 23:36:48 -06:00
MrMelbert 00ad2556e7 Exploration Drone Launcher code update + hard-del (and other) fixes (#63551)
Fixes exploration drone launcher overlays not being updated properly when fuel is consumed / changes
    Fixes crowbarring out a fuel pellet not updating the sprite, also fixes crowbarring out a fuel pellet after-attacking the exo-drone launcher
    Fixes fuel pellets not getting deleted when empty
    Fixes exploration drone launchers hard-delling if broken with a fuel pellet within
    Corrected fuel pellet description grammer, and added a proper description to the exodrone launcher
    Improved the code + documentation in general (early returns, better vars)

Fuel pellets are very obtuse when working on exploration drones. Hopefully, a few of these fixes helps some of those clear up.

When fuel pellets run out of uses, they're intended to delete, but never did - meaning you held around a buncha empty fuel.
Trying to replace the fuel pellets was very confusing as the icon didn't update properly.
2021-12-29 21:01:41 -08:00
Seth Scherer 851fb2a346 Fixes spidercharges blowing up anywhere (#63679)
the spider charge should only be blowing up in the given location
2021-12-29 17:14:27 -08:00
Y0SH1M4S73R ab96241446 suicided bodies can be used for brain transplants (#63565) 2021-12-29 16:23:40 -08:00
Fikou 4adebd7f02 modsuit works with speed potions + ai movement fix + file sortage (#63670)
modsuit examining now tells you about wire panels
fixes being able to remove stuff with the dna lock
fixes 63650
fixes 63633
sorts module files
2021-12-29 13:44:27 -08:00
DragonTrance 8e79265542 fixes a bar venue order with no value (#63651) 2021-12-29 12:40:36 -05:00
TemporalOroboros 6b7df7b174 Fixes gunpowder and teslium grenades being completely nonfunctional. (#63393)
* Makes gunpowder work in grenades and bomb cores.

* Cleans up some of the code

* Commit

* Clears grenades reagent holder on detonation.

* Variable casing/bombcore holder volume, O(n*r) large chem grenades, and including holder reagents in the chem splash reagent check.

* Fix inverted early return
2021-12-29 17:03:06 +01:00
John Willard c2e26b94a2 Fixes ghosts not being able to enter posibrains if there's already had a ghost in it (#63623)
* fix re-entering ghosted posibrains

* re-adds not re-entering the same posibrain
2021-12-29 14:21:10 +13:00
John Willard f3ea83e4d9 Fixes some reported bugs for Mules/Bots (#63138)
Bots will now allow pAI's to be placed in them again
MULEbots can be turned on/off again
MULEbots' wires can now be interacted with again

Closes #63133 (Can't turn on/off MULEbots)
Closes #63101 (Can't put pais in new bots)
Fixes bugs, improves code, I see no downside here.
2021-12-28 15:15:33 -08:00
Seris02 42ee1f72b2 fixes a radio emoting bug (#63591) 2021-12-28 12:19:08 -08:00
Iamgoofball a3146afaa0 Revert "adds a new janiborg sprite! (#63619)" (#63621)
This reverts commit c6d5a35199.
2021-12-28 20:18:25 +13:00
dragomagol 18d35ceea4 Adds family objectives to the traitor panel (#63645) 2021-12-27 23:09:16 -08:00
MrMelbert cd08b03a7a (Finally) Fixes dirt piles being able to hold double expected capactity of reagents. (#63532) 2021-12-27 22:52:57 -08:00
vincentiusvin 17a77d58ca Fixes zombie powder (#63575) 2021-12-28 01:00:13 -05:00
Fikou f58848e2ec modsuit patch one (#63638)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2021-12-27 14:47:59 -08:00
Tim 95d983cbea Fixes immortality behavior for lich phylactery (#63540)
Players were able to use a soulstone on a lich's corpse or cut out their brains and stick them inside MMIs. This prevented revival from a phylactery.

With my changes, lich's gain a TRAIT_NO_SOUL when using a phylactery that prevents soulstone capture. This trait could be useful for other portions of the codebase, especially religious stuff but this is beyond the scope of the PR. To fix debraining into MMIs I used the code from how lings and dullahans work to have fake brains.

Please note - I am using webedits (laptop is broken atm) and cannot test any of the code until after new years. If someone wants to be a Chad and test this for me it would be much appreciated!
2021-12-27 01:23:35 -08:00
John Willard 237f3ba8ab removes <b> from cult objective (#63627) 2021-12-27 01:19:08 -08:00
tralezab c84c672554 Fixes some weird stuff with clown corpses (#63614) 2021-12-26 22:38:53 -06:00
Zonespace 7d23b40526 Optimizes the output_part_info() proc in Mech Fabricators. (#63379)
It turns out the mech fabricator updated the list of what was available every time anyone opened it, which is incredibly expensive.

I optimized it to only update the list on Init and when the console is re-synced with the R&D console, in addition to making the proc much, much lighter to run.
2021-12-26 17:13:51 -08:00
Mothblocks 58cf5d5641 Move MouseEntered to a queue, such that only the most recently hovered atom will be processed (#63567)
bout The Pull Request

MouseEntered currently fires multiple (multiple) times per frame, presumably over every atom that was hovered in some timeframe (though it appears to be much worse than that).

This makes MouseEntered only add to a queue, while a per-tick subsystem ensures only the most recent MouseEntered gets the screentip work done on it, through a generic on_mouse_enter proc call.

Contextual screen tips are coming and are going to make the screen tip code more computationally expensive, so slimming it down is going to be a must.

Would like to hear from @LemonInTheDark if this makes any obvious difference in time dilation, since it of course won't be as easy as just checking MouseEntered overtime anymore.
2021-12-27 13:02:21 +13:00
Y0SH1M4S73R 9653fa06e0 save shell component properly loads shells that come with their own circuit (#63628)
Attempting to load a BCI or circuit MODsuit module with the save shell component yields an empty circuit. This PR fixes that by making the save shell component check for and delete any pre-existing circuit in the loaded shell.
2021-12-26 22:37:29 +00:00
John Willard 4aaf031bb1 Fixes and standardizes antag greet/farewell messages (#63469)
Standardizes ALL greet/farewell antag messages.
Also makes them all \improper so \the actually works.
2021-12-25 23:08:01 -08:00
tralezab 7fae5ecb38 Separatist code refactors, Readds(?) admin gamemode turned ruleset for nations, documentation, and all that good stuff (#63440)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-12-25 22:41:13 -08:00
Seth Scherer defa54d22f Improves mask FOV code + fixes sechailer having fov, and swat mask having tint (#63535) 2021-12-25 22:40:48 -08:00
Seth Scherer 8049a4ad35 Makes all cyborg storage items drop their contents on module change (#63461) 2021-12-25 17:55:06 -08:00
Iamgoofball abf1da1952 AI VOX announcements are now additionally sent through say(";[message]"). (#63594) 2021-12-25 14:22:27 -08:00
Cheshify bcb1e1e4b9 Pandemic Resprite (#63563)
imageadd: The PanD.E.M.I.C 2200 is now visually different than the ChemMaster
2021-12-25 15:42:35 -03:00
AxieTheAxolotl d7e905e4d5 Tactical Suit Resprite (#63584)
imageadd: Resprited the Tactical Turtleneck
2021-12-25 15:40:55 -03:00
Fikou 74f5a84d20 fixes an issue where tall borgs would not compile (#63620) 2021-12-25 04:48:54 -08:00
Fikou c6d5a35199 adds a new janiborg sprite! (#63619) 2021-12-25 04:41:40 -08:00
Jeremiah fe9bc91693 Tgui list input hotfix + changes (#63515)
Previous issues addressed:

- You could not reselect search just by keying
- Pressing enter sometimes deselected
- Double click would deselect - which was intentional, but useless really
- Default values were not implemented in original
- Validation is required for tgui inputs but truly only one "needs" it, it costs performance otherwise

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-12-25 11:37:05 +02:00
Kylerace 6207f14e80 creates SSspeech_controller so the MC can control say() execution (#63118)
makes say_verb() not execute immediately and instead put itself in the queue of the subsystem meant to process it: SSspeech_controller so that it executes at the start of the next tick during the MC's run instead of outside of it.

i considered making this part of #61422 (d005d76f0b) but this is good regardless of how that one pans out and i already overstuffed that one.

tldr the REAL cause of get_hearers_in_view() overtime is an effect of how byond schedules verbs within the tick.

when the server is overloaded there isnt much time between when SendMaps finishes and when the next tick was supposed to start, but verbs still need to be executed. So verbs will eat into the time the next tick should have started and the MC cant compensate for it at all since it uses byonds internal tick scheduler instead of our external tick scheduler.
2021-12-24 21:37:37 -08:00
John Willard 49f79c809e fixes bad hop job datum path (#63577) 2021-12-24 23:34:51 -06:00
Bond 1a33ff8f8f Reactive armour code improvements (#63586) 2021-12-24 20:31:49 -08:00
Fikou 7b38dd4ff7 MODsuits (#59109) 2021-12-24 12:00:24 -08:00
Krysonism ecee2f2cb6 A christmas miracle! Adds english fruitcake. (#63557)
This PR adds the ability to craft english fruitcakes using:
    1 plain cake
    1 raisin
    1 cherry
    5u rum

It is an absolute holiday classic and quite different than most of our other cakes which are more sponge style cakes.
2021-12-24 10:54:41 -08:00
John Willard aa1a07663d fixes latejoin tgui menu (#63598)
Alt to #63596
2021-12-24 16:27:09 +00:00
Jeremiah dcab86ba2c More standard tgui input conversions (#63464) 2021-12-24 13:04:18 +02:00
Jeremiah 42fb48f33f Fixes NtOS chat bluescreen, muting (#63433) 2021-12-24 13:02:21 +02:00