* 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
* Fixes non rustable turfs from being rusted (#65343)
* changes it to a turf flag
* Wood Is Not Metal
* Fixes non rustable turfs from being rusted
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
* Contextual screentips -- Screentips now show you what items/objects can do (#64502)
Adds the foundational system for contextual screentips, which will show you what you can do with objects/items, including through context, such as what you are holding.
Provides several helper elements for most use cases, and applies it to a handful of common objects in order to show the full breadth of the system.
Changes screentips preference from on/off to on/off/only with context. Players who originally had it on off will have it migrated to only with context, though can re-disable it.
* Contextual screentips -- Screentips now show you what items/objects can do
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* 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
* Miscellaneous projectile phasing fixes/tweaks + fixes a typo in the blastcannon projectile.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed
* Fixing conflicts
* Makes it compile, yeet all the RAD armor from everywhere (thanks RegEx!)
* Removing more lingering rad armor (woo)
* Damnit powerarmors
* Bye bye rad collectors!
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Binary and Decimal Conversion Components. (#61889)
Added a couple components that convert a number into an array of binary digits and viceversa.
May help players mak more complex and advanced components without filtering those lacking knowledge in the binary field.
* Binary and Decimal Conversion Components.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Rad collectors gone, tesla coils to generate power (#61917)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Rad collectors gone, tesla coils to generate power
* replaces rad collectors
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Kat <evesovereign@hotmail.co.uk>
* fixes penetrator rounds phasing through vehicles (#61907)
When I gave vehicles the PASSMACHINE flag in #61793 I forgot that penetrator rounds existed leading to them completely ignoring mechs. This time I created a new flag for vehicles, added it to water particle effects, and excluded it from the penetrator rounds.
Additionally this flag has been added to the heretic's phasing ability.
* fixes penetrator rounds phasing through vehicles
Co-authored-by: Invalid <51190031+InvalidArgument3@users.noreply.github.com>
* Revert "Revert "[MIRROR] Refactor area and turf lighting (#7775)" (#7902)"
This reverts commit 64c4c52d12.
* This should probably fix it
* I love linters
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Adds Neon Carpet (#59140)
Adds a couple varieties of neon carpet.
Makes decals care about their plane in addition to their layer.
* 0
* A
* a
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* optimizes some internals of signal and component code (#59154)
* optimizes some internals of signal and component code
* comment and a better var name
* gets rid of DF_SIGNAL_ENABLED and all referencing code because its dumb
* gets rid of NONE | CallAsync(stuff)
* fixes conflicts
* puts NONE back in
* optimizes some internals of signal and component code
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Advanced Greyscale Sprite Generation (#58112)
* Nonfunctional greyscale code
* Functional greyscale sprites via filter
Probably going to set the icon instead later
* Switches to greyscale json config
* Adds the reference layer type and converts the other canister types
* Working previews
* Adds readme
* Fixes overlays and breaking
* Removes old canister sprites
* Removes an unused var
* Fixes tgui lints
* Removes a bunch of the old canister icon states
Yeah I need to fix relabeling as well
* Removes some debug sprites
* Sorts canister type list and breaks up base shader step
* Removes an unnecessary preview hack
* Makes prototype canister greyscale
* Properly sizes the ui
* Fills in the canister map sprite
* Adds some more warnings to layers
* Makes broken overlay more prominent
* Removes a preview var that isn't needed anymore
* Cleans up client ref in Destroy
* Cleans up the tgui window a bit
* Update GreyscaleModifyMenu.tsx
* Animates the canister falling over
* Removes a commented out line that's no longer needed
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* Advanced Greyscale Sprite Generation
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Aleksej Komarov <stylemistake@ gmail.com>
* Removes the Chameleon Skillchip from the game. (#57620)
* Removes the Chameleon Skillchip from the game.
* Update CentCom_skyrat_z2.dmm
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Removes the excited cleanup subprocess (#57381)
When I was in the process of developing my atmos fixes/optimizations, I focused heavily on maintaining the area
of excited groups, since growing delayed self_breakdown(), and lead to shitty behavior which I thought was the
result of my sleeping changes.
This was not the case, those who came before me knew better, as always.
Especially now, since I've unhooked breakdown from excited groups gaining new tiles, my concern was unfounded,
and actually lead to shitty behavior and wasted time.
I failed to recognize the value in random garbage_collect()s, they help prevent mass gas equalization over large
spaces, they make gas appear to move more consistently when in these large spaces, and they lessen the amount of
self_breakdown()s over large turf lists, which is very helpful for lowering the overall overtime of the
subsystem.
This fixes my mistake, and purges the excited cleanup subprocess from the air subsystem. It's free real estate
babyyyyyyyy.
* Removes the excited cleanup subprocess
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* adds a bitflag for no random pixel shift on dropping, adds turf_flags var to replace usage of flags_1 on turfs (#57263)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* adds a bitflag for no random pixel shift on dropping, adds turf_flags var to replace usage of flags_1 on turfs
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* improves fire extinguisher code, and makes fire extinguisher water go through machinery, lockers, and crates (#57004)
* improves fire extinguisher code, and makes fire extinguisher water go through machinery, lockers, and crates
Co-authored-by: Tlaltecuhtli <33834933+Tlaltecuhtli@users.noreply.github.com>
* Hovering your mouse over things now shows their name on the top of the screen (#56729)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Hovering your mouse over things now shows their name on the top of the screen
* a
* Update preferences_savefile.dm
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Moves /datum/var/signal_enabled to datum flags (#56372)
* Moves /datum/var/signal_enabled to datum flags
`signal_enabled` is a variable on /datum, so present almost every object
in the game. Folding it into the existing `datum_flags` variable will
save allocating a variable on every datum in the game.
- Clown weaponry was using the `signal_enabled` variable to turn their
attached slippery component on and off when the shield/sword was
toggled. They now just remove/add the component, rather than touching
deep datum internals.
* Moves /datum/var/signal_enabled to datum flags
Co-authored-by: coiax <yellowbounder@gmail.com>
* Prevents everything except carbons, PAIs and cats from resting to fix Ian paralysis (this time with bitflags). (#56089)
There is now a mobility flag that determines a mob's ability to rest. Only works with living mobs. Most living mobs shouldn't be able to rest, so it's only true for carbons, cats and PAIs. Fixes#56034. Fixes#55975 by making borgs unable to rest.
* Prevents everything except carbons, PAIs and cats from resting to fix Ian paralysis (this time with bitflags).
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* [READY] Kitchen Rework part 1: I just want to griddle! (#55319)
This PR essentialy moves away from the extremely microwave dependent cooking we have for meat right now, and making it a bit more sensical by making you use a grill to grill meat. The grill takes a different time (with variation) for different grilled things. Once finished it will turn that food into something else.
Yes, this does mean creating burgers takes longer, but in return you can make more patties at once, and you are not required to stay at the grill while its going. This lets you cook as much as you want at once, just make sure your meat doesn't burn!
In the future, I hope to move more things like this to machines similar to this (Pasta boiling, putting eggs on the griddle, soup making, etcetera) to create for a more interesting cooking experience.
* [READY] Kitchen Rework part 1: I just want to griddle!
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Refactor the procedural generation of lavaland and turf/closed/mineral (#54915)
This replaces lavaland's old diagonal tunnel gen which was really
horrendously jammed into asteroid floor code (?????) with Cellular
Automata which runs in rust (PR for that here:
https://github.com/tgstation/rust-g/pull/57 ). The new code is a bit
cleaner, but also looks better.
VID: https://streamable.com/a45ke2
Things to do:
- Make an icemoon version
- Fix the roundstart atmos adjacency issues
I asked AnturK if this was an acceptable PR for this month; he said it
was okay as long as I didn't add new areas, which I don't plan to do.
But if anyone thinks this PR breaks the spirit of the month I'll open
it again in december.
* Refactors the procedural generation of lavaland and turf/closed/mineral
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)
Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:
Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:
Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake
Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).
I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.
Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.
scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.
scan_moved_turf() (WIP) will be used for handling moving onto a turf.
permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.
A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types
UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game
Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.
Fixes penetrating projectiles like sniper penetrators
This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)
* pass_flags handling refactor + rewrites a part of projectiles for the n-th time
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
* Makes it so living crate creatures can pass plastic flaps as god intended. (#55088)
* Makes it so living crate creatures can pass plastic flaps as god intended.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Admins can now see chronological order of events in logging tabs. (#54939)
* Admins can now see chronological order of events in logging tabs.
Co-authored-by: uomo <51800976+uomo91@users.noreply.github.com>
* Fixes oversight with "tactical combat spinning" and flashes (#53823)
Using the spin emote can no longer let you RNG your way out of new flash mechanics.
Mobs have a new flag that is set to when they start spinning and unset when they stop.
Flashes now use this new flag when calcing deviation.
Tactical combat spinning using the spin emote now results in a full deviation flash when it may previously have resulted in a failure or half-deviation flash.
Emotes should either not influence combat at all (spin on floor when both players share the same loc, this was already handled by same-loc code), or negatively influence combat for the emote user (spin in all other circumtances, which is what this PR addresses).
* Fixes oversight with "tactical combat spinning" and flashes
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Readds the tesla, reworks it a bit (#53072)
* Makes tesla movement nicer, fixes some atmos concerns, changes how energy is handled, and readds the tesla
* readds delam and desc
* I fucked it
* flags
* holy fuck
* Constricts the zaps that can generate power from a tesla coil
* *kick?
* Readds the tesla, reworks it a bit
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Bring back painting arbitrary objects with spray cans (#52936)
Brings back the behavior removed from #52186 with cleaner code.
Differences in the code:
No more explicit type checks in the spray paint code, other than a broad isobj.
Checking for dark colors is now based on luminosity, rather than unscientifically summing all the RGB components and checking an arbitrary number.
Removes the paintable component. This was used on one item, and its behavior is replicated in the spray can.
Instead of checking for windows specifically and changing opacity through there, atoms can now specify through init flags whether or not they allow dark colors. Windows set this flag.
Adds a COMSIG_OBJ_PAINTED signal. Windows use this signal to dynamically update opacity, just like how they did before.
This was a fun cosmetic feature that I'm not sure anyone had a problem with. The original reason for removal seemed to be because of code quality, and not because of negatives about the feature.
Makes canvasses unpaintable
* Bring back painting arbitrary objects with spray cans
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Merge pull request #53005 from Wayland-Smithy/ayy_send_self_AI
Duplicates the "turret_protected/ai" area type check found on the alien abductors camera console Send To command so it also applies to the Send Self command.
Getting snatched by abductors as AI Post #52718 is bad.
This is not an IDED because it was caused by a glitch. I was playing as AI and found myself carded by some ayylines. It turns out while they can not send their agent to do the deed they were more than capable of sending self as I suspected and confirmed with some local testing.
* AI core is now Abductor-proof. Part 2: This time they really can't get in, promise.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>