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
Basically makes the code less dumb, took a long time. I worked hard to make sure there were no unintended effects (minus the fact you can no longer get spoons from the experimentor). No player-facing effects
I thought it looked weird that all cultist and combat knives were subtypes of the kitchen knives
admins are now notified about a secret gateway load failing, also logs this
secret z levels are protected from incorporeal movement
fixes unpowered ruin areas being powered
adds a bunch of new areas for secret gateways, since var edited areas probably arent a good idea its good to have a few presets
adds cordon turfs and areas, ingame they just look like the z level border, they are completely indestructible, you cant pass them, and if you somehow do, the cordon area kills you (idea from goon but the code and sprites are mine)
adds a z level injector mapping trait, injects a z level trait into the z level its placed on, if you want to add something like ash storms or whatever to your map
adds an anti xray z level trait, you can optionally add this with the z level injector to protect your map against any xray or whatever
bring code up to latest standards, move many procs to named files inside _HELPERS
no idea where to put some of these procs, help is appreciated
made more files to contain some unique code, deleted unsorted.dm, we can rest now
## About The Pull Request
stop forgetting to include mapload, if you don't include it then every single subtype past it by default doesn't include it
for example, `obj/item` didn't include mapload so every single item by default didn't fill in mapload

## Regex used:
procs without args, not even regex
`/Initialize()`
procs with args
`\/Initialize\((?!mapload)((.)*\w)?`
cleanup of things i didn't want to mapload:
`\/datum\/(.)*\/Initialize\(mapload`
currently cycle helpers only work in straight lines, this limits mapping design for airlocks, i now present to you a new mapping helper where all you do is set a var for the helper, and paste it over airlocks, and those airlocks will now all sync up so only one of them can be open at a time (as of now clicking an airlock to open them wont cycle, but the current cycle helpers dont do it either so its consistent)
How these new pipes work.
-Smart pipes autoconnect to nearby smart pipes
-They are now color coded, so they only connect to the same colored pipe, the GREY pipe is the wildcard and can connect to every other color, so be aware of this
-ALL components spawned by the RPD can be colored (from pumps to connectors, from pipes to manifolds), if you leave them GREY they can connect to every other color. Color adapters can be colored, but they'll still connect two pipes with different colors. BUILDABLE machines are GREY (thermomachines, cryo, HFR) so be aware of this
-Trying to go across another smart pipe will now build a bridge pipe automatically already colored of the color you choose, so you don't have to place it yourself anymore (is still available in the RPD tho)
-ALL binary components, layer manifolds, color adapters and bridge pipe can be put ONTOP of a smart pipe, but not on another of these. Smart pipes can't be placed on top of these pipes, so you have to build them first.
-Lcrossings can't be made anymore (sorry y'all i tryed, if someone have a way of doing them ping me on discord)
-REMEMBER you still have 5 layers to go, these rules apply to the same layer pipes, so if you do a crossing on different layers you won't see a bridge pipe appear.
## About The Pull Request
Changes up some layer and plane defines for no particular reason lol
## Why It's Good For The Game
Planes actually override layers, and layers control ordering within planes. A lot of the usage of plane and layer was wholly unnecessary. This refactor helps future maintainability while also being needed staging for _future features._
Doing the fetches asynchronously both made cache irrelevant and caused mixup with icon use.
Also semi-related fix, where chasms could delete mapping helpers.
Creates update_name and update_desc
Creates the wrapper proc update_appearance to batch update_name, update_desc, and update_icon together
Less non-icon handling code in update_icon and friends
Signal hooks for things that want to change names and descriptions
99%+ of the changes in this are just from switching everything over to update_appearance from update_icon
Allows embedding icon edits in your maps by fetching them from external host.
This is intended for use with live-loaded away/event maps not standard ones.
Also updates rustg defines to expose the additional options arguments. (https://github.com/tgstation/rust-g/pull/59)
Stops silicons from interacting with the Space Pirate Shuttle's airlocks by cutting the AI wires on the airlocks of the shuttle by default using a new "cut ai wire" helper. Borgs are able to regain control by physically mending the wire of the airlocks.
Note that this does not stop borgs from interacting with other machinery on the pirate shuttle.
The meta to deal with space pirates is for a single borg to cuck pirates by shocking and bolting all of the doors on the pirate ship. This does not entirely get rid of the meta, as any smart borg can simply mend the wires back, but it means borgs will not longer be able to magically shock doors from windows.
I've converted baseturfs into a string list, I had to add a helper proc for baseturf stringlistifying, as the system expects single length baseturfs to not be a list, and I needed to support that. I added a length check of 100 to the helper proc, to help prevent more stuff like what got us into this mess in the first place, the kilo oom bug.
Makes ChangeTurf a lot faster in some cases, as it should be, and saves a lot of memory with cached lists.
Adds a mapping helper for piping, it works on all layers, works on all colors, and it autoconnects to other pipe devices. making it extremely useful.
Making mapping less of a massive fucking clusterfuck of burnout is always good.
Mappers can now use Smart Pipes, pipes that autoconnect to other pipes, like redstone! MAPPERS ONLY!
AddComponent/AddElement now support named arguments. This requires passing around an argument list instead of using actual proc args which a bit gross but we can blame byond for forcing this.
InheritComponent uses mirrored init arguments instead of an argument list which means no more accessing it via index to get to the same arguments as in init.
As a small bonus I restructured dcs defines to be a bit more manageable. Mainly just splits them into separate files and gives them their own folder.
* Base comitt
* Adds Ian's New years helper to all maps
* Fixies + Festive corgi hat for Ian
* newline
* Apply suggestions from code review
Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>
* Implements more suggestions from review
* Fixes grenade spawn chance
* Puts qdel last again.
* Run mapmerger
* Run map merger on last map and makes box contain 20% more memes
* Update code/modules/mapping/mapping_helpers.dm
Co-Authored-By: Jordan Brown <Cyberboss@users.noreply.github.com>
* Moves var declarations to the bottom
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
make donut great again
Why It's Good For The Game
make donut great again
Changelog
cl MMMiracles (Donutstation)
tweak: The southern/north-west parts of maintenance has been revamped to include more things to dig through and places to hide from authority.
tweak: The atmos tanks have had an extra layer of space added between the windows between them and maintenance.
tweak: The permabrig has had a small B-ball court added as well as an N2O release system.
tweak: Tweaks and additions to the various department excess storage rooms through-out maintenance.
tweak: The AI core now has a more proper internal defense against ranged attacks, the tri-ai spawns have gotten similar treatment as well.
tweak: The few maintenance-facing windows have been beefed up to their stronger plasma variants.
tweak: More directional signs to help those in finding some departments.
/cl
Hey you, yeah YOU:
Got any criticism of the map? Post it here! Don't have a github? Post it in the forum feedback thread !here! Don't have a forum account? @ me on discord ("ememem" or "not a g'nome#2914")! Don't have anything? Go make one and voice your complaint somewhere that isn't the cesspool of OOC! I can only fix problems if I know about them in the first place!!!
Updated map with all changes as of 8/22:
Big o' map
Changes so far:
Permabrig has a separate pipeline and canister port for the N2O canisters. These vents start off but officers have access to the permabrig's air alarm.
Permabrig now has a small ball court to practice your free throws and dunking the warden in it.
Permabrig has a small set of gym equipment to get swole while you do hard time.
Removed some rogue R-walls near the back side of security maintenance.
Unfucks cargo's conveyor belts.
Chemistry now has 2 large beakers.
The few remaining maintenance shocked grilles that managed to slip through the first pass have been removed.
The gateway maintenance room has been renovated into a theatre excess storage and some extra misc sections.
The space maintenance room has been renovated into a miscellaneous tool storage with some basic building material for tiders and autism-fort builders alike.
The north-west section of the station has had it's maintenance extended to be able to reach the top of departures. Includes a toggable blast-door bridge for the shuttle ferry and some extra maintenance rooms.
The south-western part of maintenance near Atmospherics has been redone to allow a space gap between the atmos tanks, also includes some extra rooms.
Added a small maintenance tunnel leading into Engineering on the most-left maintenance side, branching off from Hydroponics maintenance. The Engineering Storage room has had a few extra windoors added for security to compromise.
Small excess storage in the most-right maintenance for Engineering.
Small bits of fluff scattered around.
The maintenance-facing windows of areas like Genetics have been reinforced to their plasma variant.
Bits of additional maintenance loot in various areas.
The camera outside the upload has been changed to a normal one due to complaints about motion detecting.
The vault access now has a camera so the AI can actually see the turret controls (oops)
Vault now has to be initially accessed through the public hall normally with an extra airlock.
All on-station windows have been replaced with structure spawners for said windows.
The gateway has been moved to where the commissary currently sits due to becoming active in rounds again.
The commissary has been moved between tool storage and the vault, in front of the vault. the maintenance areas that once sat here have been renovated as excess storage rooms for the tool storage/commissary.
The upload and captain's office now has an extra layer of R-walls due to complaints about ease of break-in via space.
The AI core now has some basic frontal defense against ranged weapons as well as emergency blast doors to lock down around it's central cubby-hole. The tri-ai spawns are set up to be the same as the main AI spawn spot.
Added a couple extra EVAC directional signs since there was some apparent confusion about where it was.
Medical now has a couple roundstart wheelchairs because why not
Xenobio has been given an extra slime
Xenobio has been shifted around, removing the 2nd freezer and moving the slime consoles besides the rest of their equipment.
Non-station related changes:
Airlock Note Placer mapping helper. Allows mappers to easily place paper notes on airlocks, whether they be custom or pre-made from one of the subtypes.
* Brain damage works on organ damage procs, some defib reworks
* Heart and Lung damaging effects and failure, liver damage and failure moved to its organ again
* Cleans up reused global
* Organ damage procs on living and living/carbon
* Changes brain damage procs again
* SR heals all organs on revive, no decay for cybernetic implants, stomach damage and fail effects.
* Damage and failure effects for the appendix, ears, and some touchups on the stomach
* Committing changes so I don't lose them
* Organs now cease decaying in the proper containers
* Organ Fridges
* Reverts map changes
* Adds coronary bypass, lobectomy, trying to deal with organ_stat runtime
* Actually fixes merge conflict
* Smartfridge tweaks
* Think I figured out map merger
* Evidently not
* Still runtiming with glass shards even after I remove the map changes?
* Fixes runtime error with brain_item
* Runtime fix on living/carbon/life
* Cleaning up old PR code
* Brain damage fix, moves defines to actually be in _DEFINES, under DNA since that's where organ slots were
* Wrong math operation used
* Brains in MMIs no longer decay
* Removes redundant variable, and defibs no longer work on heart attacks caused by failing hearts
* Removes misleading comment
* init freezes organs in case organ crates are added, morgue corpses are frozen, removes adjustLiverLoss
* Removes random spaces, scanners check brain damage severity now
* Swaps numbers for defines, fixes brain surgery, rebalances coronary bypass bleed since that was insane last I tested it
* List change
* Runs off of an index instead of using cut
* Brains can be put into organ fridges
* Fixes minor type, hotfix for cloning problem
* Removes pointless check
* Demon hearts no longer decay
* Nightmare hearts no longer decay
* Removes istype() check on process, sets can_decompose instead
* Condenses organ damage report
* Removes organ failure messages
* Less organ damage spam, implements organ threshold messages instead
* Brain damage messages go to owner, not source
* Self-examine shows damaged organs
* Minor code cleanup, adds autodoc comments to the new procs
* Inverts standard organ vars to prevent random organs decaying, adds a few more autodoc comments.
* Merged the booleans into a set of flags
* Healthy living improves organ healing rates
* dunno why this didn't update
* my actions have consequences
* Sets ORGAN_SYNTHETIC for overlooked robotics organs
* Doubles heart decay time
* 3 minute heart decay
* Lobectomy/Coronary_Bypass heal more
* removes hivemind spells from the changes
* ian's birthday
* missing )
* hop shirt + bday cake is on front desk
* confetti 1/2
* confetti 2/2
* corgi balloon, hop gets a knife to cut the cake
* forgot knife + inhands + mapping
* oranges review, old var removed
* oranges request ;)
Airlocks no longer have a series of /abandoned types, and instead, to
mark an airlock as abandoned, include an abandoned airlock map helper on
the same tile, which has the icon of an exclaimation mark and cobwebs.
Why? Better visibility in map editors, less magic types.
* Code to doors.dm for airlocks with unrestricted sides
* Code to airlock_electronics.dm supporting airlocks with unrestricted sides
* Code to door_assembly.dm supporting airlocks with unrestricted sides
* Adding buttons to airlock electronic gui for unrestricted direction access
* Update airlock_electronics.dm
typos in comments are still typos
* Tgui support for arbitrary unrestricted access
* Cleaner way of calling unrestricted_sides()
Moved the call to unrestricted_sides() to run from allowed(), and added a recursive check for if the user is inside an object (like a mech).
* Missed a test variable
* Replaced a block of if statements with get_dir
Re: SpaceManiac
* Simplified XOR operation
Re: SpaceManiac
* Changes order from NESW to NSEW (for get_dir)
Re: SpaceManiac
* Re-built using changes to airlock_electronics.ract
* Added unres overlays, fixes overlay/power actions
Small lights that shine out to indicate open directions. They're not super pretty, but they aren't *that* horrible I think.
Because it's a light, it acts as a weak light source.
Also, all door overlays respond to power changes now, including area power loss. There was code in the overlay section for checking power states, but nothing to actually trigger it outside players opening the panel or something. This was broken before I made any changes.
* Makes overlays respond to power outages
The airlock overlay (bolt lights, etc) would not respond to the area power going out or coming back, even though it had code for it. This was broken before I added my code.
* Makes the Airlock update overlays when built
Long story short, the unres_sides variable wasn't getting set before the airlock spawned and did its first overlay update, meaning the unres indicators would be invisible until the door's state changed the first time. This makes the airlock run the update again just before the construction airlock object is removed.
* overlays.dmi -- removing to replace
I can't just edit the code of an image file, can I?
* new overlay file with the four unres indicators
* Set medical doors to use this feature
Removed medical door buttons, and set the unres variable on Meta, Box, Delta, Pubby, and Omega.
* Revert "Set medical doors to use this feature"
This reverts commit 53122ce63240ff0660226c8d2c6ed7eb814ec054.
* Updates medi-doors in maps
let's try this again...
* Did this tgui.js get overwritten?
juggling too many testing build folders is hard
* reverting momentarily
* Re-adding tgui.js changes
* pushing tgui.css too
Didn't realize this file also got changed by the script
* rebuilt the tgui.js file
* repushing the unchanged tgui.js again
I hope I'm not email-spamming people with this
* .css too
* Re-applying tgui.js changes
* added mapping helpers
little green arrows that set unres settings on airlocks and then poof
* removal of comments
unneeded code
* Adding helpers to all maps
Removed the var edit, as well
* Changed airlock.dm to use defines
Also removed an unneeded "src" from four lines.
* New .js and .css file to fix RPD issue
Boy I love tgui
* Removing define defines
Didn't know these were coded elsewhere. Neat.
* Mapmerged again, as requested
* Clean up maps
* Added mapping helper for preventing lava river generation
* Added lava protection to the syndicate base bridge
* Re-added decals to the syndicate lava base bridge