* [MDB IGNORE] dir sanity, primarily on WALLITEMs (#62601)
About The Pull Request
Wall items mostly use the direction from the floor to the wall in the named mapping helper. Wall items mostly use the direction from the wall to the floor for the internal dir variable.
This leads to a headache when it comes to working out what conflicts with what, and what needs placing where.
Wall frames provided a member, inverse, which specified whether or not to invert the direction of the item when looking for conflicts. It was also used to specify whether to look for conflicts outside of the wall (cameras and lights appear external to the wall) or inside the wall (most wall items). This flag was set for Intercoms, APCs, and Lights. Since APCs and Lights expect a floor-to-wall direction, and Intercoms expect a wall-to-floor direction, this means that APCs and Lights were getting the correct direction, and Intercoms were getting the wrong direction.
Some implications of this setup were:
You could build an APC on top of another wall item, provided there was nothing external attached to the wall and the area didn't have an APC.
You could stack Intercoms indefinitely on top of the same wall, provided you weren't in a one-tile wide corridor with something on the opposite wall.
Or both! Here's twenty Intercoms placed on the wall, and a freshly placed APC frame after placing all Intercoms and deconstructing the old APC:
endless-stack-of-intercoms
Not everything used this inverse variable to adjust to the correct direction. For example, /obj/machinery/defibrillator_mount just used a negative pixel_offset to be visually placed in the correct direction, even though the internal direction was wrong, and never set! This also let you stack an indefinite number of defib mounts on the same wall, provided it wasn't a northern wall... except you could do this to northern walls too, since defibs weren't considered a wall item for the purposes of checking collisions at all!
Ultimately, every constructable interior wall item either used this inverse variable to adjust to the correct placement, set a negative pixel_offset variable to have its offset adjusted to the correct placement, or overrode New or Initialize to run its own checks and assignment to pixel_x and pixel_y!
Inventory: Table of various paths, related paths, and the adjustments they used
Unfortunately, untangling /obj/structure/sign is going to be another major headache, and this has already exploded in scope enough already, so we can't get rid of the get_turf_pixel call just yet. This also doesn't fix problems with the special 2x1 /obj/structure/sign/barsign.
Some non-wall items have been made to use the new MAPPING_DIRECTIONAL_HELPERS as part of the directional cleanup.
tl;dr: All wall mounted items and some directional objects now use the same direction that they were labelled as. More consistent directional types everywhere.
Why It's Good For The Game
fml
Changelog
cl
refactor: Wall mounted and directional objects have undergone major internal simplification. Please report anything unusual!
fix: You can no longer stack an indefinite amount of Intercoms on the same wall.
fix: Defibrillator Mounts, Bluespace Gas Vendors, Turret Controlers, and Ticket Machines are now considered wall items.
fix: Wall mounted items on top of the wall now consistently check against other items on top of the wall, and items coming out of the wall now consistently check against other items coming out of the wall.
fix: The various directional pixel offsets within an APC, Fire Extinguisher Cabinet, Intercom, or Newscaster have been made consistent with each other.
fix: The pixel offsets of Intercoms, Fire Alarms, Fire Extinguisher Cabinets, Flashers, and Newscasters have been made consistent between roundstart and constructed instances.
fix: Constructed Turret Controls will no longer oddly overhang the wall they were placed on.
qol: Defibrillator mounts now better indicate which side of the wall they are on.
fix: Some instances where there were multiple identical lights on the same tile have been fixed to only have one.
/cl
* [MDB IGNORE] dir sanity, primarily on WALLITEMs
* apc directionals
* bluespace vendor fix
* defib fix
Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
* Add merge conflict markers to linter (#61669)
Updates check_grep.sh with a case for the /obj mapmerge2 creates on merge conflicted tiles. You're supposed to fix all of these before you continue a merge, but there's zero warning if you don't clear them all. As a result they can end up in the commit pushed to github, and they can hide quite easily in a PR that otherwise looks fine.
Your average map file is about 3 megabytes of raw text, or 160,000 lines. I don't want to have to read them all to prevent this from happening again.
* Add merge conflict markers to linter
Co-authored-by: Maurukas <66576896+Maurukas@users.noreply.github.com>
* Mapping DLC - Random Spawner Pack [MDB IGNORE] (#60522)
First off, I am aware of the Feature Freeze for this month. This PR was initially started in #60401 about a month ago to break the changes into smaller PRs. The end result for this PR is a poor man's attempt at roguelike procedural generation. Enjoy!
Link to the README for how the new spawner system works.
Added the following new random mapping spawners:
pen, crayon, stamp, paper, pamphlet, briefcase, folder, wardrobe closet, wardrobe closet colored, backpack, narcotics, permabrig_weapon, permabrig_gear, prison, material, carpet, ornament, generic decoration, statue, showcase, paint, tool, tool_advanced, tool_rare, material_cheap, material, material_rare, toolbox, flashlight, canister, tank, vending_restock, atmospherics_portable, tracking_beacon, musical_instrument, gambling, coin, money_small, money, money_large, drugs, dice, cigarette_pack, cigarette, cigar, wallet_lighter, lighter, wallet_storage, deck, toy, toy_figure, booze, snack, condiment, cups, minor_healing, injector, surgery_tool, surgery_tool_advanced, surgery_tool_rare, firstaid_rare, firstaid, patient_stretcher, medical supplies, crate, crate_abandoned, girder, grille, lattice, spare_parts, table_or_rack, table, table_fancy, tank_holder, crate_empty, crate_loot, closet_private, closet_hallway, closet_empty, closet_maintencne, chair, chair_maintence, chair_flipped, chair_comfy, barricade, data_disk, graffiti, mopbucket, caution_sign, bucket, soap, box, bin, janitor_supplies, soup, salad, dinner
Removed deprecated wizard trap, vault, and armory spawners.
* Mapping DLC - Random Spawner Pack [MDB IGNORE]
* HNNGH
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* tgui-bench (#61081)
Added a package that allows precisely benchmarking tgui components on IE11 without having the game launched.
It has a convenient syntax for writing tests, just create a file packages/tgui-bench/tests/*.test.tsx, and export a function which you want to benchmark
Performance improvements
As part of this PR, I have also improved the raw performance of some tgui components:
Button component - 1.8x faster
Flex component - 1.1x faster
Stack component - 1.3x faster
This improves performance of heavy UIs by a tiny bit.
* tgui-bench
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* [modular][ready]adds a fashionable baseball cap
* Update head.dm
* the rumors were true....
* Update head.dm
* timb living ass
* huh
* improved sprite
* Update head.dmi
* ok there
Co-authored-by: louiseedwardstuart <bonniefluff>
* Juke Build 0.8.1 (#60404)
* Juke Build 0.8.1 Hotfix 1 (#60897)
* Juke Build 0.8.1 Hotfix 1
* Do not restore Yarn cache on just DM build
* Makes it so Skyrat's modular code is also checked for updates to see if it needs to rebuild
* chmod's tools/bootstrap/nod
Added a / just to make it so it'd let me commit
* Trying to chmod again
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Use experimental modules flag for Node before 12.22.4 (#60891)
* Use experimental modules flag for Node before 12.22.4
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Add tgsv4 file to check for deps before launching the server (#60829)
Workaround for needing libssl2 in a docker image that doesn't come with it until we make this proper.
* Add tgsv4 file to check for deps before launching the server
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Fixes an issue with changelog generation where the default lines would be included in the logs (#60736)
* In theory this should fix a bug MSO had in coderbus
* Apparently I am a very stupid cat
* Fixes an issue with changelog generation where the default lines would be included in the logs
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Fixes mapmerge (#60143)
Fixes a condition where mapmerge would fail converting/detecting non tgm maps
* Fixes mapmerge
Co-authored-by: Letter N <24603524+LetterN@users.noreply.github.com>
* Remove yellow siding tiles (#59820)
They're only used at Centcom, and we have decals now to do what these tiles do.
* Removes yellow siding tiles
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
* Update rust-g version to latest release (#59863)
* Update rust version to latest release
This should fix the fact our docker build has been failing for the past
10 days
* Make wget not be quite so noisy
* Update rust-g version to latest release
Co-authored-by: oranges <email@oranges.net.nz>
* Close every issue made by ZeWaka (#58701)
sure whatever i totally know what im doing
* Fixes misc js and py issues in the codebase (closes every issue made by ZeWaka, bye felicia)
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Deletes unreachable line for tools/dmi (#58213)
Resolves#58211
* Deletes unreachable line for tools/dmi
Co-authored-by: ZeWaka <zewakagamer@gmail.com>
* Add youtube-dl to tgs4 precompile scripts for Linux (windows users on suspicious individuals watch) (#58135)
Adds the ability for the TGS4 precompile script on Linux platforms to resolve the youtube-dl dependency. This essentially is for Docker deployments, but can also apply to regular TGS4 deployments as well.
* Add youtube-dl to tgs4 precompile scripts for Linux (windows users on suspicious individuals watch)
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Add extools compilation to the TGS4 precompile scripts for linux (#58113)
* Add extools compilation to the TGS4 precompile scripts for linux
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Update dependencies installed for TGSv4 precompile scripts (#58108)
* add libssl1.1
* i was told to add myself to this as well
* Update dependencies installed for TGSv4 precompile scripts
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* Add note about rust-g for building on Linux (#57622)
This PR adds a minor note about needing to compile rust-g to Linux building instructions. I'm not sure if this is the appropriate place for it, but I don't see a better place to put it.
* Add note about rust-g for building on Linux
Co-authored-by: Cyprex <35031555+Cyprex@users.noreply.github.com>