I put mystery boxes on their own sound channel so they could cancel out the full music clip when someone took an item from them, but this causes issues because only one box could be playing a sound clip at a time, and they'd cut each other off if there were multiple. Now they reserve their own channels for their duration, then release them, so they can all play at the same time. Accordingly, their sounds now fall off quicker so having multiple of them nearby won't destroy your ear drums.
This PR moves the in-game Newscaster over to TGUI, which is one the most bothersome html to tgui projects on the codebase being that it's gone untouched for like... over 4 years now after the introduction of tgui. Newscasters are widely used in-game by players wanting to be deranged whistleblowers, noir detectives, and journalists. They're flavorful, fun, and we still use an html window to make them run so it looks like it's from 2003.
Hey there,
This PR is a continuation of #65290. I was not aware that there was an actual use case for these, so I decided to make them as soon as I became aware of it.
image
But what are "these"? Basically, these just add two new types of decals, opposing corners. On the left, you have the current functionality (which will still remain after this PR): adding two different "tile/purple" with different dirs on the same tile to give that effect. HOWEVER, on the right, this has been flattened into one singular turf decal: "tile/purple/opposingcorners". Very cool.
In summation, instead of having multiple corners on one tile to represent the "opposing effect" (as in having one corner in the top left and one in the bottom right) with it being the same color, you now only need one of these turf decals.
Unlike the other PR, this change is not mapped in.
Why It's Good For The Game
Less map key bloat, mappers only have to click a certain tile once if they want, more versatility, etc.
Also: please let me know if I need to change the dirs around for the current sprites. I just went off what made sense to me.
Changelog
cl
imageadd: Nanotrasen has upgraded "that machine that prints all of those decals on our station tiles" to now print two corners that face opposite each other at the same time. Very cool!
/cl
Main Takeaways For Mappers:
Use monitored pathed atmos devices very carefully. Also dont put atmos_sensors willy nilly. They are used to hook to atmos control monitors.
We want to keep at most one device broadcasting for each of the atmos sensor, inlets, and outlets. Run the mapping verb Check Atmos Chamber Devices to be sure, though this might not catch everything.
Some of the warning are pretty harmless. For example if you have reconnected the "station atmos monitor" and you get no listener for distro/waste loop warning, it's safe to ignore.
I don't know what the maptainer policy is on making new subtypes for offstation content, but if you do please branch off the general ones instead of the specific gas ones. If you aren't making a new subtype, varedit the general ones too.
About The Pull Request:
Need Would prefer this to be merged before #65271 (In game atmos guide).
Not strictly necessary, just makes me sleep better knowing the handbook wont die alongside the rest of the UI.
Fixes#36668 (Atmos Monitoring Consoles don't update it's sensors to the new tank after reconnect())
Fixes#32122 (Mix console fucked after reconnecting it)
Also made the distro meter thing broadcast more info instead of just the pressure, because I'm sure nobody would care and it would make my life easier.
A small high-level overview in case this breaks again in the future:
A signal datum (not DCS) is sent by the atmospheric devices (injectors and vents) and will be received by the atmos computers. The data is then stored at the monitor object and then passed to the UI. This initial signal is sent by `broadcast_signal()`, called by `atmos_init()`.
New sensors/vents (if you can actually get them in game, still only adminspawn/wrenchables afaik) will also initiate the conversation if atmos_init() is called, so it works fine. This means you need to unwrench and re-wrench the devices if you adminspawn them though, ugh.
In case of a newly built computer, it needs to be the one that prompt the data to the devices, so we send a request signal. This is a bit inefficient since it doesnt work off of callbacks and assocs like DCS, but won't really matter since we're doing this rarely.
We only talk with the injectors and vents when necessary here, while sensors and meters keep beeping with every process_atmos() tick so they rarely break.
Why It's Good For The Game:
Messy code gone (debatable).
Refactored the atmos control console devices. The ones that hook to the big turf chambers.
Distro meter now broadcast the whole gasmix info instead of just pressure to the monitors.
Lavaland syndie's atmos chamber vents are now actually configurable. Moved a few things around to accomodate this.
Lavalannd syndie chambers hooked to distro and moved distro pipe to layer2
atmos monitors can detect reactions now.
Some minor code changes to how anomaly refinery and implosion compressor show the gas info. No changes expected, report if bug.
recoded checks for atmos chamber abnormalities in debug verbs.
* improves meatspike code, makes it use default buckle
* small edit to make checks run again
trying to see if somehow this is my fault?? i doubt it.
* lets simpleanimals get buckled again
About The Pull Request
Alternative to #65354
Ok so like, there was a lot of not floor types on /floor. They didn't actually want any of their parent type's functionality, except maybe reacting to breaking (which was easy to move down) and some other minor stuff.
Part of what we don't want them to have is "plateable" logic.
I should not be able to put floor tiles on the snow and be fine. It's dumb.
Instead, I've moved all non floor types down to a new type, called /misc.
It holds very little logic. Mostly allowing pipes and wires and preventing blob stuff.
It also supports lattice based construction, which is one of the major changes here. I think it makes more sense, and it fixes an assumption in shuttle code that assumed you couldn't place "a new tile" by just hitting some snow with a floor tile.
Oh and lattices don't smooth with asteroid tiles anymore, this looks nicer I think.
Moving on to commits, and minor changes
Changes clf3 to try and burn any turfs it's exposed to, instead of just floors
Moves break_tile down to the turf definition, alongside burn_tile
If you're in basic buildmode and click on anything that's not handled in a targeted way, you just build plating
FUNCTION CHANGE: you can't use cult pylons to convert misc tiles over anymore
Generalizes building floors on top of something into two helper procs on /turf/open, reducing copypasta
Adds a new turf flag, IS_SOLID, that describes if a turf is tangible or not.
Uses this alongside a carpet and open check to replace plating and floor checks in carpet code. This does mean that non iron tiles can be carpeted, but I think that's fine
Moves the /floor update_icon -> update_visuals call to /open
This change is horrificly old, dating back to 8e112f6 but that commit describes nothing about why it was done. Choosing to believe it was a newfriend mistake. Uncomfortable nuking it though, because of just how old it is. Moving down instead
Create a buildable "misc" type off open, moves /dirt onto it
Basically, we want a type we can use to make something support
construction, since that can be a messy bit of logic. Also enough
structure to set things up sanely.
I'm planning on moving most misc turfs onto it, if only because
constructing on a dirt tile with rods should be possible, and the same
applies to most things
Murders captain planet, disentangles /turf/open/floor/grass/snow/basalt
Adds a diggable component that applies the behavior of "digging"
something out from a turf.
Uses it to free the above pain typepath into something a bit more
sensible
The typepaths that aren't actually used by floor tiles are moved onto
/misc
The others are given names that better describe them, and kept in
fancy_floor
Oh and snowshoes don't work on basalt anymore, sorry
Snowed over platings now actually have broken/burned icon states, fixing black holes to nowhere
Misc turfs no longer smooth as floors, so lattices will ignore them
Placing a lattice will no longer scrape the tile it's on
Ok this is a really old one.
I believe this logic is a holdover from kor's baseturf pr
(97990c9)
It used to be that turfs didn't have a concept of "beneath" and instead
just decided what should be under them by induction. This logic of "if
it's being latticed scapeaway to space" made sense then, but has since
been somewhat distorted
We do want to scape away on lattice spawn sometimes, mostly when we're
being destroyed, but not always. We especially don't want to scape away
if someone is just placing a rod, that's dumb.
Adds a path updating script for this change
I've done my best to find all the errors this repathing will pull out, but I may have missed some. I'm sorry.
Why It's Good For The Game
Very old code made better, more consistent turfs for lavaland and icebox, better visuals, minor fix to snowed plating, demon banishment in lattice placement, fixes the icebox mining shuttle not being repairable
Changelog
cl
add: Rather then being tileable with just floor tiles, lavaland turfs, asteroid and snow (among other things) now support lattice -> floor tile construction
fix: Because of the above, you can now properly fix the icebox mining shuttle
refactor: Non floor turfs are no longer typed as floor. This may break things, please yell at me if it does
/cl
dragomagol
Member
dragomagol commented 2 days ago
About The Pull Request
This removes the href logs from silicon logging.
Why It's Good For The Game
Current silicon law change logs in silicon.log are really really long. Like excessively long. It makes the logs necessarily difficult to read.
Changelog
cl
admin: Silicon law logs are shorter and easier to read
/cl
About The Pull Request
Removes Dynamic Hair Suffixes + Included files
Why It's Good For The Game
Facial hair suffixes went unused, @Twaticus and the spriting team are planning something new for hair that is not going to use this horribly underused and just kinda like, bad system
Changelog
not player facing
* Refactors tcg code a bit. Adds support for "keywords"
Idea is to allow card makers to embed tooltips in their card
descriptions.
These tooltips are defined in the keywords.json file
They can be referenced using {$keyword_name}
I've also done some refactoring to move more logic and state onto the
subsystem, and implemented a few keywords from the wiki
* New keywords, applies the old ones to the second card set
* Adds support for embedding react components in tgui chat
This is done by adding the data-component attribute to an html element
The value of that attibute is the component you want to use.
New components can be added by modifying the TGUI_CHAT_COMPONENTS list
in tgui-panel/chat/renderer.js.
Props can also be passed in in a limited capacity.
Any props you wish to pass must be added to
TGUI_CHAT_ATTRIBUTES_TO_PROPS.
This is due to a style restriction of html attributes, they cannot
contain an upper case char.
Use this list to convert between attibute compatible text and the prop's
name.
Props support 3 datatypes.
true and false can be passed by wrapping them in ""s. (Note to self add
a special char here to prevent colison with people just passing the
string true.
Numbers are supported in a limited capacity. Whitespace is not allowed,
but floats and ints are fair game.
And of course, strings are fully supported.
I've currently added support for Tooltip, since that's what I'm using
this for. Also added some tooltip html styles to the chat css.
* Implements the embedded component system to make tcg cards have nice pretty tooltips so people don't need to have the wiki open on one screen
* Adds documentation for embedding tgui components in chat, adds some protection against accidentially sending true as a bool
* Adds italitcs to the tooltips, moves the span stuff to a macro
* tGUI -> tgui, thank fikou
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Style suggestions
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Removes unneeded key from the components list
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Removes needless span
* Actually adds the tooltip, oops
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Holographic pay stands are created by right-clicking your ID outside of your active hand. The game doesn't tell you how to do it and it can be difficult to figure out because when it doesn't work in your active hand you move onto trying a different button.
Pay stands are supposed to disappear when the ID that created them moves further than four tiles away, but in cases where the ID is stored in something like a PDA before moving away or was on a turf when the pay stand was created this doesn't happen.
This PR makes it properly track all the locations its linked ID inhabits so if one of them moves we can check if it's far enough away to dissipate.
It also moves placing holographic paystands to attack_self_secondary() instead of attack_secondary(), which is more intuitive.
It also makes it so you can place holographic pay stands by clicking adjacent floor turfs with your ID. This seems like a much more intuitive way of doing it and how I expected it to work before I figured out how you actually placed them.
It also adds screentips for in-hand ID interactions (e.g. show ID, project pay stand) and pay stand ID and holochip interactions (e.g. pay, dissipate pay stand).
* update
* makes the alien toolbelt use the sprites
* Revert "makes the alien toolbelt use the sprites"
This reverts commit caea9f52741e4f1553f3b3812336b3a4a235b6aa.
* Revert "Revert "makes the alien toolbelt use the sprites""
This reverts commit c60276e7aac93169a036bfe0bc42fb9c736d1d99.
* please check gods
* check pass?
* forgot that
* tabs
Someone made a suggestion to me that fixed a problem I've been trying to work around, and now that I've made it so people can set custom decompose times, that made this WAY EASIER.
When most foods decay, they will turn into the generic moldy food sprite you've become accustomed to, without the ants. After 30 seconds, that moldy food will get consumed by ants, leaving only the anthill.
Ants also no longer spawn on lavaland's basalt, by Fikou request.
closes#65393 (Engineering Cyborgs can't place APC or Air alarm frames on walls anymore)
fixes the code error in #64428 (afc1e44ee2)
basically what occured is that he typed out the T(turf) attackby proc to input the screwdriver as an arg rather then the wallmount, remember, you want the WALLMOUNT to hit the wall to place it, not the screwdriver, that just creates runtimes and doesnt place anything
EDIT: actually re-reading it, what it was actually doing was using the screwdriver as the user arg, and trying to smash the user into the wall, thats actually kinda funny
borgo wallmounting is a good thing, good borgos need their treats
* Four Corners, Red Rover: An Exploration in Decaled Trends
You there! What exactly is wrong with this photograph?!
You don't need to tell me, I've boxed it out. There's four individual corners for the decalling. This is weird. You may be asking: Why don't they use the "full tile" turf decals? Let me demonstrate.
Look at the difference between the one at left and the one in the middle. The turf decal totally smothers the nice contrast lines afforded to use by the base turf, causing it to have smooth, clammy exterior. This is probably why no mapper ever uses the full turf decal, much to the chagrin of people who stare at how big the size of this repo is.
Now, what's that on the right? Why, it's the new sprite (and pathing I made) to help counter-act this issue! This perfectly lines up with the contrast lines of the base turf, allowing us to have a non-flattened visualization, while not having four fucking turf decals a turf load upon initialization. How epic!
I've also added "contrasted" variants of the "half" and "anticorner" turf decals for future use. I probably won't go through and update this in this PR, but the opportunity remains available.
I may or not map this change across all the maps. We shall see.
* neutral corners
we love vsc
* no wait
i forgot a bunch of potential edgecases so we'll have to go back. yellow should be fine but neutral, dark, blue, and green should get a second look over
* recheck
found some stuff, probably missed out on others. let us commence forth
* MISTAKE
nearly a fucko bwoingo
* final pass
it compiles and i've had enough, someone else can probably figure it out from this point onwards
* #65230 goated my timbs
now we wait for linters to fail
* YOU DIDN'T SAY THAT THE FIRST TIME
LINTERS AAFAFAFF
If you click a bag with an RCD nothing happends, this fixes it. Not sure if this is the best way to fix it since im not that experienced but i playtested it and it works. Tell me if i need to change anything.
About The Pull Request
Simply converts all instances of soundkeys that use get_sfx from strings into defines.
E.g. "sparks" is now SFX_SPARKS
Why It's Good For The Game
It makes life a lot easier when you're looking for a sound effect. You just type SFX_ and you get suggestions in VSC. Plus, it looks better.
image
Changelog
Not player facing.
* Machinery attack_paw gives feedback for no damage attacks
* I am growing stronger
* Makes messages consistent and read better
- Cleans up shitty code
* hmm
* Adds it to hulk object attack message
Makes the decomposition examine proc, which handles the little examine warning telling you how close to decomposing a piece of food is, not hardcoded anymore. Doing this allowed me to also...
Adds a variable to food that lets them edit the decomposition timer. By default it's set to 0, which makes food automatically get its timer based off its flags. By setting the decomposition_time variable in a /obj/item/food to anything other than 0 (using SECONDS or MINUTES), it will take that amount of time to decompose instead.
About The Pull Request
Continuation of #64375, extracting tool behavior from attackby() and moving it into discrete _act procs. This is about as many files as I had in the last version, as I still want this to be reviewable.
As before, I've tested everything in game and it works as it previously did.
Why It's Good For The Game
The more code moved out of attackby, the more modular things become.
Changelog
cl
refactor: Moves more tool behavior out of attackby().
/cl
About The Pull Request
You now right-click to wet your mop and left-click to put it away to prevent having to double-click to get rid of it when it's not completely wet
Can right-click with an empty hand to remove mop and skip radial menu
You now right-click to put things in the trash bag (prevents trash bag unintentionally eating things, such as the crowbar you were trying to use to empty the cart)
Left-clicking skips radial menu when there's only one item in the cart
Can fill open reagent containers from drainables like the janitorial cart (useful to empty it)
Adds examine hints for these changes
Right-clicking to splash reagents now requires combat mode (this is because it interfered with using right-click to empty)
Cyborg cleaning modules now use the NODROP trait to prevent them being put in the cart, instead of their own copypasted var and proc
Fixes overlays not immediately updating when filling janitorial cart
Fixes bludgeoning janitorial cart when filling it
Why It's Good For The Game
Should make it less clunky and more enjoyable to use.
Changelog
cl
add: Right-clicking to splash reagents requires combat mode
add: Remember the above
qol: You now right-click the janitorial cart to wet mops and left-click to put them away
qol: You can right-click the janitorial cart with an empty hand to quickly remove your mop
qol: You now right-click to put things in the trash bag
qol: Left-clicking the cart with an empty hand will skip the radial menu if there's only one item in the cart
add: Adds examine hints for these changes
fix: Fixes overlays not immediately updating when filling janitorial cart
fix: Fixes bludgeoning janitorial cart when filling it
add: You can right-click with "glass" reagent containers (e.g. buckets) to fill from drainable containers like janitorial carts
code: Improvements to janitorial cart code
/cl
Monkey knockdown used to be on Crossed until it was made an AI here: 55238
Now it instead uses COMSIG_ATOM_ENTERED, which only takes into account walking over the monkey. Something that you can't do unless you are non-dense or they are lying on the floor, in which case you aren't even knocking them down?
Now it uses COMSIG_MOVABLE_CROSS instead so it's how it used to be, actually functional and useful.