Commit Graph

13976 Commits

Author SHA1 Message Date
Tim
f5f6b26e2d Fix xeno hivemind talk causing hissing sound (#69844)
* Fix xeno hivemind talk causing hissing sound

* Fix dullahan speech arg

Add message_range and saymode to say arguments

Add new say args to other say procs

Add new say args to other say procs

* Revert "Fix dullahan speech arg"

This reverts commit abff2bec1a03c1270b2896faa547c465e046ad78.

* Fix speech_args to be list

* Refactor hulk speech signal handler

* Revert "Revert "Fix dullahan speech arg""

This reverts commit 58997930096ef6b7fa8a1c79395595e61db954c6.

* Change filterproof to be null like other say procs

* Remove unused COMSIG_MOB_SAY defines

* Readd defines for COMSIGH_MOB_SAY
2022-10-03 23:10:45 -04:00
MrMelbert
581fd7605d Adds proper multiz support to AI robocontrol (#70255)
* Adds proper multiz support to AI robocontrol

* Comment
2022-10-03 22:32:07 -04:00
Tastyfish
087c74290b Fixes FOV (blindness) effects and typing indicator while blind (#70276)
* fix FOV effects

* Typing indicators and make it offsettable
2022-10-03 22:15:46 -04:00
Gamer025
677827e87d Expands mob_tags logging (#70259)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-10-03 04:37:42 +00:00
John Willard
91f02f2a6b canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE (#69790)
* canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE

The most idiotic thing I've seen is canUseTopic's defines, they literally just define TRUE, you can use it however you want, it doesn't matter, it just means TRUE. You can mix and match the args and it will set that arg to true, despite the name.

It's so idiotic I decided to remove it, so now I can reclaim a little bit of my sanity.
2022-10-01 09:47:52 -07:00
tralezab
4e041ce765 The Link to the Changeling Hivemind has been Reestablished (#70193)
Readds the changeling hivemind, but in a simplified form.

    There is no linglinking. It was rarely used and imma be real with you, stupid.
    Hivemind isn't an unlocked ability, it is just a default.
    Bz still mutes lings
    Fallen changelings now get an agonizing message about being locked out. We love fallen changeling flavor
    Changelings have their Honorific names back! Hello, Mr. Omnicron!
    This does NOT readd changeling team objectives, or really anything encouraging teaming beyond the hivemind itself.

    I think antagonists have generally lost a lot of power versus the station, and this is one big way to pump up the heat for this antag in particular. Changelings, given an ability to possibly team up, are much MUCH scarier.
    One reason it was removed years ago was because teaming was too often, but back then there were entire gamemodes about changelings having team objectives and many other things to encourage it. I'm bringing us back to a point BEFORE all those design ideas were explored, because I don't think they worked out.

Add information about the changeling hivemind, and the dangers of being turned into a fallen changeling if you get betrayed to the Changeling Antag Info UI

Changelog

add: Changelings once again have reestablished their changeling hivemind, and can secretly communicate between each other.
fix: Fixed up the Changeling UI a bit, like for example some dimmers would never render.
2022-09-29 18:00:23 -07:00
Carmine
a92719210e Adds the Moffra wing pattern (and antennae) (#70064)
Adds the moffra wing pattern and antennae based off of mothra.

New choices to express yourself is always good and it seems like a fun reference.

cl
imageadd: Adds Moffra wing and antennae sprites
/cl
2022-09-30 11:02:02 +13:00
John Willard
abe15dea7f Bot Code Improvement - Cleanbots (#69925)
About The Pull Request

    Removes a ton of unused vars
    Replaces blood/trash/pests/drawn vars with flags
    Adds docs to most remaining vars
    Registers cleanbot's on_entered when they get deputized instead of on initialize, removing calling procs uselessly.
    Also makes the title only update when they get a new one, also removing useless proc calls.
    Reworks how updating titles work so it isn't copy pasting its own code.
    Cleanbot stealing names now check for the mind's assigned job, rather than the living's job.
    Replaces single letter vars in many areas
    Removes two places of checking what targets to scan for, makes use of the generalized scanning proc instead.
    Slightly reworks process_scan to return null
    Replaces cleanbot's cleaning time with a define
    replaces 'initial' weapon force with just initial(weapon.force)

Why It's Good For The Game

Continuing my past work that since I haven't done a bot code improvement PR in a pretty long while, I thought I would try to get back into this with cleanbots, which used to be one of the worst bots but I fixed some major problems in the past already, so it wasn't too bad.
Changelog

cl
refactor: Cleanbots have been entirely reworked, please report any bugs you might find.
/cl
2022-09-30 11:00:11 +13:00
ShizCalev
dab1cfe277 Fixes facehugger exploit (#70166) 2022-09-29 14:17:53 -07:00
Salex08
d35e7d1ec1 Adds missing blood filter in medical borg module (#70185) 2022-09-29 10:45:07 -07:00
John Willard
edafd89abe Native FOV is tied to eyes, Flypeople don't have native FOV (#69913)
About The Pull Request
Native FOV is now tied to the eyes instead of the mob, and Flypeople are immune to it.
This doesn't affect TG because it's disabled in config, but I played on a server that does have it enabled, and I found it strange that Flypeople had it.

Why It's Good For The Game
Quickly searching it up says that Flies can see nearly in 360, so I think this should be reflected in-game too.
It give Flypeople a small benefit to being flashable from all directions, and while it could be implanted in regular humans, they'd have to then live with them big ol' eyes.
2022-09-29 10:30:27 -07:00
MrMelbert
cf0f039c8e Reverts #68155 (Fix simple mob deaths causing deadchat notifications), Fixes living level mobs being able to die while dead (#70103) 2022-09-27 22:33:27 -07:00
John Willard
dafbcf29bd Prosthetic surgery now checks if you can attach the bodypart (#70157)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-09-27 22:30:24 -07:00
John Willard
243231eb48 Properly checks flags with & instead of == (#70130)
* Makes flags properly check themselves

Byond ref: https://www.byond.com/docs/ref/#/operator/&
Basically, flags should use & instead of ==
We can have more than 1 slot on any item, so it's preferred that we do this instead. Even if it doesn't immediately fix any problems, it's something that should be the standard anyways to prevent it from ever being a problem.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-09-27 21:51:45 +00:00
LemonInTheDark
23bfdec8f4 Multiz Rework: Human Suffering Edition (Contains PLANE CUBE) (#69115)
About The Pull Request

I've reworked multiz. This was done because our current implementation of multiz flattens planes down into just the openspace plane. This breaks any effects we attach to plane masters (including lighting), but it also totally kills the SIDE_MAP map format, which we NEED for wallening (A major 3/4ths resprite of all wall and wall adjacent things, making them more then one tile high. Without sidemap we would be unable to display things both in from of and behind objects on map. Stupid.)

This required MASSIVE changes. Both to all uses of the plane var for reasons I'll discuss later, and to a ton of different systems that interact with rendering.

I'll do my best to keep this compact, but there's only so much I can do. Sorry brother.
Core idea

OK: first thing.
vis_contents as it works now squishes the planes of everything inside it down into the plane of the vis_loc.
This is bad. But how to do better?

It's trivially easy to make copies of our existing plane masters but offset, and relay them to the bottom of the plane above. Not a problem. The issue is how to get the actual atoms on the map to "land" on them properly.

We could use FLOAT_PLANE to offset planes based off how they're being seen, in theory this would allow us to create lens for how objects are viewed.
But that's not a stable thing to do, because properly "landing" a plane on a desired plane master would require taking into account every bit of how it's being seen, would inherently break this effect.

Ok so we need to manually edit planes based off "z layer" (IE: what layer of a z stack are you on).

That's the key conceit of this pr. Implementing the plane cube, and ensuring planes are always offset properly.
Everything else is just gravy.
About the Plane Cube

Each plane master (except ones that opt out) is copied down by some constant value equal to the max absolute change between the first and the last plane.
We do this based off the max z stack size detected by SSmapping. This is also where updates come from, and where all our updating logic will live.

As mentioned, plane masters can choose to opt out of being mirrored down. In this case, anything that interacts with them assuming that they'll be offset will instead just get back the valid plane value. This works for render targets too, since I had to work them into the system as well.

Plane masters can also be temporarily hidden from the client's screen. This is done as an attempt at optimization, and applies to anything used in niche cases, or planes only used if there's a z layer below you.
About Plane Master Groups

BYOND supports having different "maps" on screen at once (IE: groups of items/turfs/etc)
Plane masters cannot cover 2 maps at once, since their location is determined by their screen_loc.
So we need to maintain a mirror of each plane for every map we have open.

This was quite messy, so I've refactored it (and maps too) to be a bit more modular.

Rather then storing a list of plane masters, we store a list of plane master group datums.
Each datum is in charge of the plane masters for its particular map, both creating them, and managing them.

Like I mentioned, I also refactored map views. Adding a new mapview is now as simple as newing a /atom/movable/screen/map_view, calling generate_view with the appropriate map id, setting things you want to display in its vis_contents, and then calling display_to on it, passing in the mob to show ourselves to.

Much better then the hardcoded pattern we used to use. So much duplicated code man.

Oh and plane master controllers, that system we have that allows for applying filters to sets of plane masters? I've made it use lookups on plane master groups now, rather then hanging references to all impacted planes. This makes logic easier, and prevents the need to manage references and update the controllers.

image

In addition, I've added a debug ui for plane masters.
It allows you to view all of your own plane masters and short descriptions of what they do, alongside tools for editing them and their relays.

It ALSO supports editing someone elses plane masters, AND it supports (in a very fragile and incomplete manner) viewing literally through someone else's eyes, including their plane masters. This is very useful, because it means you can debug "hey my X is yorked" issues yourself, on live.

In order to accomplish this I have needed to add setters for an ungodly amount of visual impacting vars. Sight flags, eye, see_invis, see_in_dark, etc.

It also comes with an info dump about the ui, and plane masters/relays in general.

Sort of on that note. I've documented everything I know that's niche/useful about our visual effects and rendering system. My hope is this will serve to bring people up to speed on what can be done more quickly, alongside making my sin here less horrible.
See https://github.com/LemonInTheDark/tgstation/blob/multiz-hell/.github/guides/VISUALS.md.
"Landing" planes

Ok so I've explained the backend, but how do we actually land planes properly?
Most of the time this is really simple. When a plane var is set, we need to provide some spokesperson for the appearance's z level. We can use this to derive their z layer, and thus what offset to use.

This is just a lot of gruntwork, but it's occasionally more complex.
Sometimes we need to cache a list of z layer -> effect, and then use that.
Also a LOT of updating on z move. So much z move shit.

Oh. and in order to make byond darkness work properly, I needed to add SEE_BLACKNESS to all sight flags.
This draws darkness to plane 0, which means I'm able to relay it around and draw it on different z layers as is possible. fun darkness ripple effects incoming someday

I also need to update mob overlays on move.
I do this by realiizing their appearances, mutating their plane, and then readding the overlay in the correct order.

The cost of this is currently 3N. I'm convinced this could be improved, but I've not got to it yet.
It can also occasionally cause overlays to corrupt. This is fixed by laying a protective ward of overlays.Copy in the sand, but that spell makes the compiler confused, so I'll have to bully lummy about fixing it at some point.
Behavior changes

We've had to give up on the already broken gateway "see through" effect. Won't work without managing gateway plane masters or something stupid. Not worth it.
So instead we display the other side as a ui element. It's worse, but not that bad.

Because vis_contents no longer flattens planes (most of the time), some uses of it now have interesting behavior.
The main thing that comes to mind is alert popups that display mobs. They can impact the lighting plane.
I don't really care, but it should be fixable, I think, given elbow grease.

Ah and I've cleaned up layers and plane defines to make them a bit easier to read/reason about, at least I think.
Why It's Good For The Game
<visual candy>

Fixes #65800
Fixes #68461
Changelog

cl
refactor: Refactored... well a lot really. Map views, anything to do with planes, multiz, a shit ton of rendering stuff. Basically if you see anything off visually report it
admin: VV a mob, and hit View/Edit Planes in the dropdown to steal their view, and modify it as you like. You can do the same to yourself using the Edit/Debug Planes verb
/cl
2022-09-27 20:11:04 +13:00
John Willard
7c990173e0 Removes network cards and printers from tablets (#70110) 2022-09-26 11:18:58 -07:00
Rhials
d7fe609c2f Prevents Regal Rats from being possessed pre-round (#70055) 2022-09-26 11:17:12 -07:00
LemonInTheDark
72a5b79555 Removes overlay queuing, saves 6/7 seconds of initialize. Lightly modifies stat tracking macros (#69696)
* Removes overlay queuing, saves 6/7 seconds of initialize. Lightly modifies stat tracking macros

So we have this overlay queuing system right? It's build with the assumption
that the "add to overlay list" operation is real expensive, and is
thus useful to queue removals or additions.

It turns out that it just isn't, at least during init. In my testing the
operation of queuing took LONGER then the actual overlay add/remove did.

That's ignoring the cost of the subsystem's work.

I've also modified part of the stat tracking macro, since it took a good
bit of cpu time, and didn't seem to well, do anything. So far as I can
tell it always evaluates to 1
2022-09-26 08:46:46 -07:00
Tim
c300c5e90d Fix tongue tied restricting infectious zombie communication (#69840)
* Fix tongue tied communication being restricted with hand objects and adds support for people with more than 2 hands.
* Makes zombie claws 'hand objects'.
2022-09-25 07:30:34 -04:00
Twaticus
b6925f6ef9 Underwear Resprite (#70095)
Co-authored-by: TWAT <twaticus.tg@gmail.com>
2022-09-24 17:01:39 -07:00
MrMelbert
45516f4741 Adds macros to help with common set_- and adjust_timed_status_effect uses (#69951)
* Adds helpers for status effect application
2022-09-24 11:04:26 -04:00
ShizCalev
5c9d863998 Demoralization fixes (#69924)
* Demoralization fixes

Blind mobs will no longer be demoralized by posters and graffiti.
Illiterate mobs will no longer be demoralized by the words on posters.
Mobs will no longer be demoralized by posters & graffiti if it's too dark to see them.

Also makes can_read use reading check flags, one for literacy and one for light.
2022-09-24 03:26:31 -04:00
MrMelbert
64a2cd0d29 Fixes internals turning themselves off by moving them between slots (#70085)
Fixes internals turning themselves off when moving them between inventory slots.
2022-09-24 02:52:51 -04:00
pizzie11
7574bb1ce4 Lets cats attack mobs in the rat faction (#70051) 2022-09-23 23:38:40 -07:00
MrMelbert
b774f63b70 Replaces obj flag being_shocked and flag_1 shocked_1 with TRAIT_BEING_SHOCKED (#69978)
* Replaces `being_shocked` and `shocked_1` with `TRAIT_BEING_SHOCKED`, removing a flag_1, taking us away from the possibility of hitting the flag limit.
2022-09-22 23:52:37 -04:00
Kapu1178
ab6dcbf4ca Virtual Limbsanity (#69841)
* virtual limbsanity

* remove old file

* indent fail

* dumbassery cleanup

* unlint + tweak

* stop coding while high

* internal screaming

* kill another species dependancy

* make sure it has a default

* makes the unit test actually work

* fix monkeys
2022-09-21 20:07:10 -07:00
John Willard
a0442ee002 Removes persistence of items through changing species when not allowed to (#70008)
* Removes persistence of species-restricted items through changing

Makes use of item's mob_can_equip instead of mob's can_equip, making it take the item's restrictions into account.

Also, fixes the inventory's color, so it's properly red when you can't equip such an item, by making it also use mob_can_equip.

Finally, expands the species clothing unit test to take that into account, to prevent it breaking in the future.
2022-09-21 10:32:33 -07:00
MrMelbert
6baebf47a1 Completely refactors hallucinations, and also adds a few (#69706)
* Refactors hallucinations slightly, organizes them

* Refactors hallucination into a status effect

* Further hallucination proper refactoring

* Refactors battle hallucinations

* Refactors "fake item other" hallucination

* Gets it a bit closer to working state

* Refactors screwydoll and fake alerts

* Refactors fake inhand items

* Refactors a few more.
- Fake death
- Fake messages
- Fake sounds
- Projectiles

* Refactoring delusions, hallucination effects

* Furthering the hallucination status effect
- removes copypaste of hallucination pulses

* Almost finalizes the changeover to status effect

* Last staus effect stuff

* Delusion business

* Airlocks, fire, and more delusion stuff

* Finishes screwyhud. It compiles now!

* Swaps screwyhud over to a grouped status effect

* Removes hal_screwyhud

* Comment

* Bugfixing

* image cleaning

* Get rid of this it came back

* What if I finished this branch?

* Oops

* Messing with the randomness

* Mass hallucination tweaks

* +

* Some more mass tweaks

* Review

* Updates

* Unit tests hallucination icons

* More tweaks

* Move folder

* Another re-name

* Minor tweaks

* Anomaly unity

* Mass hallucination buffs

* t

* Sig

* Merge

* Lints

* Unit test already coming in clutch

* Another failure

* Use named args for cause_hallucination via some define trickery

* Some cleanup

* This is better

* adds some hallucinations

* Oops

* More sounds

* Tweaks

* Some additional documentation

* Flash

* Fixes mass hallucination

* Json changes

* Updates documentation

* Json conflicts

* Makes it work

* Missed that one too

* Helpers

* More signalization (WIP)

* Fixes bump

* Missed a helper use

* Dumb
2022-09-21 01:30:04 -04:00
MrMelbert
7a5fa1cff9 Fixes an internals related hard delete (#70024) 2022-09-20 12:24:53 -07:00
Tim
b0b02230d0 Change infectious zombies to be illitearate (#69888)
* Infectious zombies now have their own mutant brain which is primitive and no longer literate.
2022-09-19 19:56:04 -04:00
kawoppi
28597066d3 adds axolotls (#69973)
Axolotls have a chance of spawning roundstart at each moisture trap, just like their fellow amphibians. Their spawn chance is half that of a frog.
2022-09-19 10:02:45 -07:00
MrMelbert
132ef0414f Unit tests say signal gets the correct list passed with it (#69854) 2022-09-16 08:01:02 -07:00
scriptis
f264509b46 Fix ghost follow link being on a different line than binarysay on light mode (#69928)
On light mode, and in light mode only, .binarysay is display: block. This generates a newline because I moved the follow link outside of the relevant span.

fix: ghost follow links no longer appear above binary messages using light theme
2022-09-15 18:20:42 -07:00
Tim
8f59a6dbac Fix plasma cutter or guns that burn not being able to ignite plasma (#69584)
* Plasmacutter projectiles now deal BURN instead of BRUTE
* BURN projectiles now properly detonate plasma and explodables.
2022-09-14 23:43:58 -04:00
itseasytosee
8cfe4c73f7 Fixes skeletons not having a bone stomach (#69894)
* Skeletons now have bone stomachs again.
2022-09-14 23:24:20 -04:00
scriptis
7e1c1b8610 AIs now have BIG TEXT in binary chat (#69871)
* Make AIs loud

* Remember to commit the stylesheet

* Be consistent with loud radio

* Use my eyeballs to observe that it didn't work properly
2022-09-14 11:56:43 -04:00
John Willard
8e656a57f3 Adds a unit test for species changes keeping clothings (#69788)
* Adds a unit test for species changes keeping clothings

Adds a unit test that checks if people who species change into a Lizard keeps their non-digitigrade shoes or not, which will also affect Monkeys.
2022-09-13 19:10:33 -07:00
Seth Scherer
7eefd68afd Readds shoe stealing shortcut (#69792)
* Readds shoe stealing shortcut
Readds the shoe stealing shortcut! Everything is the same, you must have
legs selected, the target must be lying down, and now you must have the
slap emote enabled.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-09-13 19:09:19 -07:00
ShizCalev
9e47cd551b fixes runtime when trying to inject someone in a missing limb (#69851) 2022-09-13 14:35:50 -04:00
YakumoChen
b3014db427 changes holodeck crab to a holographic crab (#69850)
Properly makes the crab on the holodeck beach into a holocrab

RUDE people were butchering the poor crab for infinite crab meat
leave him alone hes nice :(
2022-09-13 12:25:54 -06:00
GoblinBackwards
974a56b720 Fixes bileworms being unable to act (#69874)
* Makes bileworm AI use weakrefs for targets

* Apply suggestions from code review

* Update code/datums/ai/basic_mobs/basic_ai_behaviors/try_mob_ability.dm

* question mark

Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
2022-09-13 09:12:34 -04:00
dopamiin0
63a9399650 pAIs and other pets that can be picked up no longer know shadow clone jutsu. (#69625)
* Exiting as a held mob now immediately drops you no matter what.
2022-09-11 20:30:59 -04:00
小月猫
146d0fd59d 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
2022-09-11 02:24:00 -07:00
John Willard
adfe046065 Ai interact uses is_valid_z_level helper (#69759)
* Makes AI can_interact_with use the valid z level helper

* Makes AI's ``can_interact_with`` proc use ``is_valid_z_level`` instead helper instead of manually doing it.

* Minor code improvement while im here 👍
2022-09-08 21:45:01 -04:00
John Willard
a02ae46bb4 Fixes SaturnX (#69765) 2022-09-08 17:28:50 -07:00
Profakos
ba0366210e Sentience preference selection and antag datum (#69569) 2022-09-07 17:59:50 -07:00
John Willard
e51e3baa75 Xenomorph powers require hands and mobility up to use (#69538)
* Xenomorph powers require hands and mobility up to use

Xenomorphs usually don't have hands blocked/are immobile, so this mostly just affects Humans, who can use neurotoxin spit while stunned.

* Neurotoxin checks for muzzle instead of hands blocked

Reverses hands check for Xeno powers, instead Neurotoxin specifically will check for muzzled.
2022-09-07 11:41:17 -04:00
itseasytosee
dc3f5f9175 Small grammer fix to monkey trip toggleing (#69712)
* Replaces 'not' with 'now' in monkey trip toggling.
2022-09-07 11:22:57 -04:00
tralezab
814cea6c3b Removes 3 exclusive species from magic mirrors (#69613)
* adios exclusives

* don't think i forgot you

* you get to stay
2022-09-06 08:28:28 -04:00
LemonInTheDark
930c5e635e Moves "catch this var/flag" code from obj/init and datum/new into the types that use it (#69634)
* Optimizes away /obj/Initialize

We were spending like 0.15 seconds just checking for blueprints, obj
flags and network ids
All these things can just be applied where they're wanted, saves time

Oh and I replaced object flags with an emag injector. I'll give it a
sprite and name later I promise

* Requires a GenerateTag() call to set DF_USE_TAG, rather then doing a check in atom New

This is technically harder to use, but I don't really want people using
tags, and it saves 0.15 seconds

* Moves generatetag to /datum

* I am dumb

* Saves 0.5 seconds, makes init emissive blockers actually work

Ok so background. If an overlay is added with add_overlay, and not
"managed" somehow, it will effectively never be removed, because
nothing's tracking it.

Update_overlays uses the managed_overlays list/var (one of those) to do
this.
I'm gonna piggyback off this to make emissive overlays actually like,
respect overlay updates.

Oh and uh, I've saved maybe 0.5 seconds by caching the new emissive, and
not using add_overlay. There's a chance this will lead to overlay
corruption, but since we never readd the flattened, I think we'll be
safe

* Fixes plane not being set right, changes color logic too, since alpha will override past color sets

* Makes it actually work. also makes rand posters update appearance to clear away the overlay, since it shows on right click and looks bad

* Fixes blockers showing as emissives. It turns out alpha sets override the color list we use. Not sure why we pretend to support them

* Makes the injector support traits, adds an amazing sprite
2022-09-06 03:17:17 -07:00