* Slightly buffs knife wounds, slightly nerfs scalpel wounds (#59848)
Recently it came to my attention that knives are actually really bad at causing slashing wounds, while the scalpel is probably a little too good at causing them, even through armor. So, here's what this PR does:
Knives in general are more effective at causing slash wounds, especially if the target has no armor/clothing on that limb. The butcher's cleaver in particular is now equally as effective as a circular saw.
Scalpels are a bit less effective at causing slash wounds against armor/clothing, though they're still extremely good at cutting, especially against exposed flesh.
With these stats, knives will be more effective against unarmored targets, and can actually be counted on to draw blood when needed.
* Slightly buffs knife wounds, slightly nerfs scalpel wounds
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Adds Spaceship turfs (First iteration)
* Moves VG decals icons into turf/decals
* GPS Computer
Literally the survival pod one re-textured to work with any wall. Good for ruins
* Fluff/machinery
just read the fluff file ffs
* Hardspace Maps
yes they're based on HS:SB. They turned out well ok
* these arent even complete but im commiting
* hbg
* New sound for AI node, wall fixes
* pre-loaded tape go brrrr
poggers
* tweaks ai node values + ghostship loot
hh
* remove two unused files, move salvagepost ID
* craftable spaceship walls (hopefully) and le cool pre-recorded tape
* properly makes spaceshipshiz craftable/placeable
* adds totally-cool sprites for the spaceship stacks :)
they arent codersprites i worked hard on them :)
* salvagepost loot and anchoring
* adds juicy ai node sprite
thamk u hay, sorry i couldnt use the big icon im not good coder :(
* replace on-turf lattices with the decal version
* oops adds the gps computer to the generic spaceruin signal
* Adds a kneecapping element and adds that very element to baseball bats.
* Update signals.dm
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Free golem policy (#59831)
Adds policy.json functionality for Free Golems, will make it easier for future headmins to alter the policy.json rather than PR a change.
* Free golem policy
Co-authored-by: Coconutwarrior97 <40315842+Coconutwarrior97@users.noreply.github.com>
* Fix missing SIGNAL_HANDLER (#59826)
Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.
* Fix missing SIGNAL_HANDLER
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Modifies right click logic so that it is not the same priority as modifier keys. (#59656)
Strips out the existing right click code - Due to the myriad of ways right clicking has been implemented, dedicated signals and procs for right clicking without modifiers are fundamentally incompatible with our system of primary and secondary attacks.
Adds additional signals to attacking code. These signals allow atoms to cancel the attack chain early on secondary attacks, or override the standard procs and not send signals to prevent any undesired behaviour from signal handlers.
Items that used RightClick procs have been converted to attack_hand_secondary.
The slaughter demon, having its own set of snowflake code as poor OOP principles have been applied in UnarmedAttack() procs with lacking calls to parent procs and arbitrary redefinition of behaviour, checks for a right click in its own UnarmedAttack() and performs a bodyslam off that.
Storage components now hijack the secondary attackby stage via signals to handle their opening and closing shortcuts on right click. When you right click a storage component equipped item with an object in your active hand, the object has an opportunity to perform its logic in pre secondary attack code and cancel the attack chain. If it does not cancel the attack chain in pre-attack, then the storage component takes over for attackby and, if possible, opens the relevant inventory and ends the attack chain.
The forensic scanner is a proof-of-concept of this working in action. With its scan logic moved from afterattack code to pre attack code for right clicking, right clicking with the scanner will now perform a scan where previously one was impossible. Left clicking still does what it always does - Scans at the very end of the attack chain.
The logic still isn't perfect - For example, you still can't attack containers in melee even in combat mode (you'll either open them or put your weapon into them regardless of which option you choose) - But this is a better setup overall which allows for items to at least override this behaviour in pre-attack if needed.
* Modifies right click logic so that it is not the same priority as modifier keys.
* a
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fix incorrect return for closet attack_hand_secondary causing lockers to have their locks toggled twice. (#59814)
/obj/structure/closet/attack_hand_secondary(mob/user, modifiers) doesn't return one of the expected attack chain cancelling/continuing defines and instead returns TRUE.
This means that right clicking them acts as a secondary attack followed by a primary attack.
When the secondary attack against a secure closet actually attempts to toggle the lock, it now cancels the entire attack chain.
* Fix incorrect return for closet attack_hand_secondary causing lockers to have their locks toggled twice.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Foodtype update (#59783)
After eating a burrito and noticing the odd addition of the meat taste, I took a dive into the food folder and it hurt my poor fragile brain. I gave a lot of things updated tags or tastes. I think I got most of it.
* Foodtype update
Co-authored-by: carshalash <carshalash@gmail.com>
* Gives advanced wireless right click functionality to agent ID cards. (#59657)
* Wireless schmireless
* tgui adjacency check
* Tgui state tweaks
* Moar functionality
* Right clickify
* Depends-on-Things
* I have always wanted a the agent ID card of my own.
* Revert "Tgui state tweaks"
This reverts commit 42824a30958186f62cf47ce5ebd150a02b3ee8b2.
* Revert "tgui adjacency check"
This reverts commit af0bf4c46456e92c1d5e29ccd2b064be134216b4.
* Compose don't inherit
* Revert "Depends-on-Things"
This reverts commit 7880e7b1914c7de22e2a57c0b4005a0fb748cc61.
* Gives advanced wireless right click functionality to agent ID cards.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Forcefield Projector Nerf (#59751)
The item can no longer be used to instantly lock someone into a corner. It's a minor balance change, but the projector is way too bullshit to play against as-is.
* Forcefield Projector Nerf
Co-authored-by: Cheshify <73589390+Cheshify@users.noreply.github.com>
* Fixes bodybags, cargo crates, and directional lighting. (#59709)
Fixes a couple bugs created by the neon carpets PR:
* Bodybags can once again be closed. (Fixes#59704, Fixes#59747)
* Cargo crates no longer report having delivered an emissive blocker
* Directional lighting no longer masks the emissive plane.
* Fixes bodybags, cargo crates, and directional lighting.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Makes turfs persist their signals, uses this to optimize connect_loc (#59608)
* Makes turfs persist signals
* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear
* Converts all uses of connect_loc over to the new patterns
* Adds some comments, actually makes turfs persist signals
* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work
* bro fuck documentation
* Changes from a var to a proc, prevents admemems and idiots
* Extra detail on why we do the copy post qdel
* Makes turfs persist their signals, uses this to optimize connect_loc
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Make smoke_all for cigarettes work correctly (#59698)
smoke_all wasn't actually being considered when computing the amount of reagents transferred to the body, but only the reagents removed from the cigarette prior to this.
This makes the amount of reagents that cigarettes transfer into your body when you smoke them actually dependent on the smoke_all factor.
Makes the changes made in #45711 (A similar pr) (c9c57c4419) actually work properly, as otherwise there really isn't much of a meaning to the smoke_all property.
* Make smoke_all for cigarettes work correctly
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* Tramstation Tram "Upgrades" (#59277)
The tram now smashes through walls instead of phasing through them. Spawns sparks and shakes the screen for nearby observers as the tram kool-aids its way through obstructions.
The tram now equal-opportunity smashes through most machinery and structures. If a structure is normally not anchored by default (girders, lockers, closets, ect), it will unanchor them and throw them while doing some damage. Machinery now actually gets destroyed when hit by the tram, which also fixes the issue with the recycler breaking the tram.
Tram platforms themselves have been made inherently indestructible to prevent them from ever breaking in any unexpected gameplay method.
The permabrig mouse has been moved to the general activity room instead of the room with the exposed APC wiring.
* Tramstation Tram "Upgrades"
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
Adds set_density()
Fixes one instance of a duplicate density assignment on an object.
Comments two hacky usages of density which will have to forgo using the setter for now.
Lets us append code to the event of density changing.
Pretty sure this is leading up to some multitile object thing -Lemon
Co-authored-by: Rohesie <rohesie@gmail.com>
* Change agent ID cards to jump to the front of wallets; disguise other more powerful ID cards (#59652)
Many moons after I reworked ID cards, I feel the Agent ID card needs a little bit of extra love.
This change adds an option during forging which allows the user to specify whether the agent ID card will force itself to the front-facing/visible ID slot in wallets.
This provides traitors with a way to effectively disguse any special ID cards and accesses they may have without making the agent ID card a must-buy TC tax. If your traitor strategy involves gathering many ID cards, this is a definite buff to an item that took a heavy hit to power in the rework.
* Agent ID cards now jump to the front of wallets and can disguise other more powerful ID cards.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Refactors mail and delivery code (#59730)
- Mail now uses weakreferences to minds, which means the presence of
mail will not cause harddels, and persist between mindswaps or cloning
or whatever horrible mob transfer things you've got going on.
- The code for creating a crate of mail has been refactored into a
single proc, rather than having the same code twice.
- Instead of special casing reagents being delivered, instead
reagent mail goodies are just regular bottle items like any other.
* Refactors mail, delivery and goodies code
Co-authored-by: coiax <yellowbounder@gmail.com>
* I put this egg back together (#59744)
Uhhh, I made it so yolks give 5u instead of 4 when cracked into a beaker. Pretty much that
It's weird to not get enough yolk to make a cake when cracked into a beaker. Having to crack a 4th egg because you did it in the wrong container kinda sucks.
* Yolk issue fix
Co-authored-by: carshalash <carshalash@gmail.com>
* Splits documents.dm into secret_documents.dm and inspector.dm. (#59746)
This splits documents.dm into two files and adds dmdoc comments to the new secret_documents.dm. Also removed a few newlines from the inspector part.
* Splits documents.dm into secret_documents.dm and inspector.dm.
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* During unit tests, does extra verification on text based overlays (#59553)
This makes it so during unit tests, adding a text based overlay to something will runtime if the icon does not have an icon state matching that text. I would do this during normal compiles as well but getting the icon states from an icon is surprisingly expensive.
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* During unit tests, does extra verification on text based overlays
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com>
* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
* Ads
* dddd
* a
* a
* a
* Update uniform_digi.dmi
* Update uniform_digi.dmi
* Update uniform_digi.dmi
* Some random new potted plants!
* a
* Update flora.dm
* a
* fixes
* a
* a
* e
* Converts the new span_ procs to macros, fixing a few oversights/errors along the way (#59685)
This is a partial re-implementation of #59645
oranges has expressed a desire for the span_ procs to instead be macros.
I agree. Even though it's a small micro-optimisation, a well contained macro can be self-linting. I've already caught one edge case thanks to this in launch_pad.dm
Similarly, there was an edge case where a [ was escaped inappropriately (that errored out) in watercloset.dm and a case where a ] that should probably have been escaped actually wasn't in robot_defense.dm
I have opted to make an exception to the ALLCAPS convention for these macros.
I have guaraded these macros in parenthesis. In doing so, additional error states can be captured as part of the build process as malformed inputs will then cause errors and prompt further investigation.
* Converts the new span_ procs to macros, fixing a few oversights/errors along the way
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Defibrillator Fixes + Code Cleanup (#59615)
Cleans up some of the defib code by reducing repeated code blocks, renaming certain procs, reducing unnecessary if statements, and adding flexability to certain aspects, like cooldown time. Additionally fixes some issues with the code, like visible messages not showing up for mobs who are wearing the source and shock_touching not using its provided damage values.
I have defined the combat paddles' emp_act change as a "Fix" because the comment appended to the combat variable, as well as the lack of sprites/clarity for emped syndicate defibs, made me feel this was unintentional. However, if this is seen as intentional, I will revert those changes to keep this a purely fix/cleanup-based PR
* Defibrillator Fixes + Code Cleanup
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* Add ectoscopic sniffer to Robotics Labs (#59494)
This PR adds a new machine; the ectoscopic sniffer, to the robotics lab on each map.
The sniffer is small desktop machine used for detecting paranormal activity, it displays a green flash and a chime every time it is touched(as in attacked) by a ghost.
It has a single wire inside, when this wire is pulsed, it triggers the animation and chime, as if touched by a ghost, maybe some enterprising crewmember can use this to their advantage. When this wire is cut, the device won't trigger, no matter how many spooks or haunts touch it.
---
This PR is above all fun.
Of course, it can be used as the author of the previous PR intended; to alert the roboticists of souls willing to occupy a positronic brain.
Clever spacemen will always figure out how to use this kind of device for more creative parascientifc research.
It is still limited by its low bitrate and the very low quality of the information as compared to something like ghost court, since a single malevolent spirit is able to feed the living bullshit.
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* [READY]The smell of death! New machine to puts the spectre in spectroscopy.
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* POLICE TAPE WOO
hmmgh
* Much things, read desc
Placed tape is a structure now instead of an item, door sprites are actually torn, all code besides destruction works (mostly)
* TAPE WORKS 99%
just need to have a visual for lifted tape..
* Adds lifted visual + starts on making tape obtainable
ahgghbkaghb
* finishes the vendors. 100% complete(?)
AAAAAAAAAAAAAAAAAAA
* detdrobe vending
abghb
* lifted alpha is better
hbgb
* change opacity hngh
* indentation bhgjknbg
im so tired
* walking can crumple the tape too
* desc
* Fixes powerfist randomly not working when using mixed gas types (#59234)
Adds a bit of wiggleroom so QUANTIZE being called on gas_mixture.remove() doesn't randomly and occasionally makes the powerfist think there isn't enough gas. This seems to be the only feasible way of fixing it.
Adds a helper proc to do this generically
* Fixes powerfist randomly not working when using mixed gas types
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
* USB Cables -- Connect circuits to computers/machines (#59345)
* Initial commit
* Sprites, finishing work
* More ways to detach from circuitboards
* Clear TODOs, give bots a button
* Fix qdel loop
* Designs
* It's the bots that have them
* Grammar fix
* Feedback for connecting to circuit directly
* Add USB cable design to basic circuitry
* Better naming
* Feedback
* Fix for new code
* COMSIG_CIRCUIT_ADD_COMPONENT_MANUALLY
* span procs
* USB Cables -- Connect circuits to computers/machines
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Readds poutine (#59611)
Adds a crafting recipe and food item for poutine, which was mistakenly dropped off in #55160
Updates poutine's icon to no longer have the plate, keeping in line with other similar foods.
* Readds poutine
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.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>
* Refactors tram code to be more robust (#59596)
Tram code has a lot of locate() in list, a lot of unnecessary typechecking and generally bad practices. This refactors tramcode to be easily more maintainable and to have more consistent behaviour, as well as removing any unnecessary code.
* Refactors tram code to be more robust
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
* Convert wrapping paper sprites to GAGS (#59374)
Wrapping paper has been put through GAGS. You can set the base color and ribbon color with right click, then apply it to a package.
Co-authored-by: coiax <yellowbounder@ gmail.com>
* Wrapping Paper GAGS
Co-authored-by: RaveRadbury <3204033+RaveRadbury@users.noreply.github.com>
Co-authored-by: coiax <yellowbounder@ gmail.com>