* spraycanning stuff now updates its sprites on the mob (#62726)
* spraycanning stuff now updates its sprites on the mob
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* [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>
* Cyborg non direct "combat" rebalance. Airlock seal buffed, borg RCD nerfed. (#62621)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Cyborg non direct "combat" rebalance. Airlock seal buffed, borg RCD nerfed.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Transit tubes can't be placed on turfs with dense objects. (#62387)
Right now you can directly place and wrench a transit tube under a few objects that are dense, this opens up a few issues, like you being able to bypass dense objects and get into places that you shouldn't with basically no effort as long as you have a RPD in your bag.
The main example of this is the brig cells, the bridge, the AI upload, the luxury area on the luxury shuttle, etc.
So a simple check was added to see if the turf has a dense object before placing a tube.
This PR #45609 (a5de1c1b5e) was IMO one of the best balance changes in the game, before it access was a meme and you could get anywhere in a few seconds by just unwrenching windows.
With a RPD you can do the same, but the worse issue is that while it takes 1 second for you to place a tube under a reinforced window, you need to fully deconstruct the window to remove it.
While you fix 1 area that the clown turned into free access, they have build 5 more.
* RPDs can't place transit tubes directly under dense objects.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* Cyborgs can now shake up compromised carbons (#62468)
The Hug Module from Medical and Peacekeeper Cyborgs now removes negative stats (the same as a human) from carbons when used on Mode 1. Put in a simple way, this allows the three referred Cyborg types to wake up and remove stuns from carbons with the use of their Hug Module.
* Cyborgs can now shake up compromised carbons
Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
* Adds logging for all Silicon rather than just Laws (#62500)
I find stuffing everything in game.log is a real problem when you need to actually find useful information about what happened to a specific Silicon. It's hard to tell what happened to Silicon throughout a round, even when crossreferencing attack/game logs, so having a Silicon log for all the information related to them would be really useful.
For example, a Cyborg can spawn unlinked on Robocop, go Janitor and crowbar someone to death with a Robodoctor AI. When looking through logs, an Admin can easily assume it was a rogue Engineering cyborg who disobeyed their laws to kill someone.
This also isn't adding a whole new log file, more than it is just renaming the law log file to silicon and adding more useful things into it, so it isn't logging bloat (if that's even a concern)
* Adds logging for all Silicon rather than just Laws
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Headset mousedrop like PDA (#62656)
* Headset mousedrop like PDA
* Change var names
* Forgot one var name
* Headset mousedrop like PDA
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* Prevents chaplains from choosing 30 force null rods (oh god) (#62631)
Chaplains can no longer choose 30 force admin only null rods
* Prevents chaplains from choosing 30 force null rods (oh god)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes the Radioactive Microlaser irradiating humans wearing clothing that protects against radiation (#62588)
* Fixes the Radioactive Microlaser irradiating humans wearing clothing that protects against radiation
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Suicicide -> Suicide (#62614)
This PR just fixes a small spelling error in the suicide message for the singulo toy, probably a waste of a pr but hey, I'm trying to remember how to do these and figured I'd do a quick and easy one.
* Suicicide -> Suicide
Co-authored-by: Toastgoats <63932673+Toastgoats@users.noreply.github.com>
* Deletes unused spookoween file and the related sound folder. Saves what can be saved. (#62518)
* Deletes a unused spookoween file and the related sound folder. Saves a few features off of it.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* You can unpack bibles into new altars of the gods (#62234)
* You can unpack bibles into new altars of the gods
* fix to a thing i caused before i screw things up
* balloon alert
* Update book.dm
* Revert "Update book.dm"
This reverts commit 4c6483a7a4efc1eb940cbd120838eade7d7ec784.
* You can unpack bibles into new altars of the gods
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* liches can no longer embed phylactery grenades inside of indestructible structures (#62505)
* buzzkills
* no effects either
* early return
* liches can no longer embed phylactery grenades inside of indestructible structures
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Fixes issue with catwalk floors being added to each other ad infinitum. (#62236)
## About The Pull Request
You could place catwalk_floors on each other ad infinitum because they were a plating subtype. This changes them to a floor, and sets their intact = false so that wires wont be hidden by undertile/proc/hide. Fixes#62105 .
Also fixes a smaller issue where "remove cover first!" wasn't being outputted to the user when they tried crowbarring a catwalk floor.
Thanks to arm for his help with this!
## Why It's Good For The Game
Fixes #62105
* Fixes issue with catwalk floors being added to each other ad infinitum.
* Fixes the catwalks eveywhere else
Co-authored-by: Coconutwarrior97 <40315842+Coconutwarrior97@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.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>
* Changes Plasmamen belt tanks volume and the rate that their lungs consume plasma to 1/4 of the previous value. (#62081)
Plasmamen belt tank volume is 24, the extended engineering one is 6 and the emergency internals are 3.
The issue balance wise is that all of those have the same pocket size and can be printed at the same Research tier, this results on smart atmos/engineers printing a plasmamen belt tank and filling it with O2 so their internals can last for almost 2 hours instead of the 24 minutes of the extended O2.
Now they have the same volume but plasmamen lungs were rebalanced to consume plasma at a lower rate. To be clear, it will have no effect on how long the internal last for a plasmamen.
Removes a no skill trick that gives you internals that will last for all shift, you can still make those but it will take a tiny bit of effort now.
Also a small step to make internals balanced.
* Changes Plasmamen belt tanks volume and the rate that their lungs consume plasma to 1/4 of the previous value.
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
* fixes a runtime with dropping advanced cards from wallets (#62440)
fixes a runtime when transferring advanced ids to/from wallets
Fixes#62036
* fixes a runtime with dropping advanced cards from wallets
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* the PDA will no longer bother you with a 'you can't do this right now' message when closed while resting (#62438)
When you close it while you're laying down, it will no longer give you the message "You can't do that right now!"
There really isn't much more to say, all it does is make it so the message doesn't show up if all you're doing is closing the interface.
* the PDA will no longer bother you with a 'you can't do this right now' message when closed while resting
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* Refactor /turf/var/intact (#62331)
Turfs have a variable, intact, which conflates three meanings:
Determining whether there's something that can be pried out, such as directly with a crowbar or indirectly with a tile stack and a crowbar off-hand.
Determining whether underfloor pieces are visible.
Determining whether underfloor pieces can be interacted with - by players with tools, through interaction with effects like chemical acid, or foam.
When plating is hit with a stack of tiles, /turf/open/floor/attackby checks whether the turf is intact, and if so, ends the attack chain regardless of whether or not the attempt to hotswap a turf (with a crowbar) is successful or not. However, turfs which want the underfloor to be visible - such as catwalks and glass - set the intact variable to FALSE, and so can be repeatedly placed over one another, as if they were the first tile to be placed over the plating.
This refactors /turf/var/intact into two distinct variables:
/turf/var/overfloor_placed, for whether or not there is something over plating.
/turf/var/underfloor_visible, for whether or not the various underfloor pieces should be invisible, visible, or both visible and interactable.
All references to /turf/var/intact have been replaced with an equivalent overfloor_placed or underfloor_visible reference, depending on which check is appropriate. underfloor_accessibility can take one of UNDERFLOOR_HIDDEN, UNDERFLOOR_VISIBLE, or UNDERFLOOR_INTERACTABLE. This prevents cases such as acid foam or tools phasing through glass floors to affect the underfloor pieces underneath, and covers all kinds of unusual, not-wiring-visiblity usage such as Holodeck completeness, Revenant interaction, or station integrity checking.
* Refactor /turf/var/intact
* Thank
Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
* removes double spaces before symbols
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Removes "Singularity and Tesla for Dummies" manual book (#62308)
This PR removes the manual "Singularity and Tesla for Dummies" from the game. It also removes it from the two places it spawns: Engineering in DeltaStation and an Ice Ruin.
Also this is my first PR and I have little experience with DM so please be nice
Why It's Good For The Game
The Singularity and Tesla engines were removed from the game a while ago, so having these books in game is unnessessary
Also, opening the book shows a huge-ass "Tesla and singularity engines have been removed!" message front and center.
* Removes "Singularity and Tesla for Dummies" manual book
* book burning 1984
Co-authored-by: malton33 <44654353+malton33@users.noreply.github.com>
Co-authored-by: Kat <evesovereign@hotmail.co.uk>
* Better hair dye, less pipettes
* Reverting a map edit to prevent more conflicts. Also fixing chat message
* More consistency changes and fixes
* TGUI lists are sexy.......
* Better spelling, better code, life good
* Fixes microbomb implants blowing you up anyway on popup close & doubleclicking the action button (#62301)
Title, this probably indeed was a problem for the macrobomb as well. didn't test.
doubleclicking the action button pointed out by @ Ghommie
* Fixes microbomb implants blowing you up anyway on popup close & doubleclicking the action button
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
* Fixes being able to shock people with wielded mjollnir as a pacifist. (#62238)
Fixes pacifists wielding mjollnir being able to shock people by adding a check in mjollnir's attack. Fixes#62232 .
* Fixes being able to shock people with wielded mjollnir as a pacifist.
Co-authored-by: Coconutwarrior97 <40315842+Coconutwarrior97@users.noreply.github.com>
* Fixes an issue where people with the doctor phobia were afraid of hydroponics doors. (#62089)
## About The Pull Request
Adds a hydroponics airlock type (same icon as medical airlocks), and edits Hydroponics on several maps to replace the old medical doors with the new ones. Fixes#61000
Also edited sheet_types.dm so a hydroponics door assembly can be built, in case anyone decides to give hydroponics entry way doors their own unique icon at some point.
## Why It's Good For The Game
Fixes#61000
* Fixes an issue where people with the doctor phobia were afraid of hydroponics doors.
Co-authored-by: Coconutwarrior97 <40315842+Coconutwarrior97@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* runtime fix for borgs cryoing with upgrade modules + no more mmi laying around after they cryo, and various other runtime fixes
* Fixing conflicts
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* makes it so lockers/crates can have access electronics removed/inserted (#62022)
They can only have electronics inserted if they
are welded shut (if they can be welded)
don't have electronics already and aren't secure
They can only have electronics removed if they
are welded shut (if they can be welded)
are unlocked
are secure (even if they don't have electronics, then it'll create them)
* makes it so lockers/crates can have access electronics removed/inserted
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* Makes the American sausage a sausage subtype & Advanced roasting stick fixes (#62193)
Makes the American sausage a proper subtype of sausage, which makes it actually edible, apparently. It also makes it stick on the advanced roasting stick!
The advanced roasting stick will no longer try to grill itself over a bonfire with a griddle installed, allowing you to use the actual bonfire for your roasting needs.
There was actually a check that was supposed to limit the amount of times you could roast a sausage to a measly 1. It wasn't actually working. This PR removes that in favor of mad cooks creating these:
* Makes the American sausage a sausage subtype & Advanced roasting stick fixes
* fixes
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>