* Properly differentiates the nanodrug and nanomed vending machines. (#55069)
This repaths the nanodrug and nanomed vending machines, as well as visually tweaks the nanodrug vending machine from the nanomed vending machine, in order to
A) Fix the correct vending refills working on the correct vending machines.
B) Not make 2 different vending machines with different contents sell look identical.
Allows for visual clarity between 2 distinct, different vending machines. I got lazy and didn't do it the first time, and now they've been confusing players, apparently.
Additionally, makes them actually deconstruct able and constructible as a result of the fix to the circuit board.
* Properly differentiates the nanodrug and nanomed vending machines.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* moves misc food to newfood code (#54788)
misc food is now using newfood code
* moves misc food to newfood code
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Scalpel can now cut pizza. (#55012)
Enables scalpel tools to cut pizza. Consolidated a bunch of pizza-specific `MakeProcessable` proc defines that were just copy+pastes of each other.
* Scalpel can now cut pizza.
Co-authored-by: Josh <josh@jaw.sh>
* Spraycans now consume charges in the right order when spraying graffiti. (#54929)
Spraycans now check the cost of placing down a new spray before performing the do_after countdown, then uses the charge immediately after the do_after is completed.
Spraycans should check and only use a charge AFTER their cooldown timer is complete.
* Spraycans now consume charges in the right order when spraying graffiti.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now (#54922)
* Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Reverts metabolism on stomachs, keep them as important to eating (#54632)
* [ready] Reverts metabolism on stomachs, keep them as important to eating
* Merge branch 'master' into upstream-merge-54632
* Update food_reagents.dm
* Update alcohol_reagents.dm
Co-authored-by: NightRed <nightred@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Re-assesses 99% of vending prices through Arconomics to match player resources and round-length. (#54715)
* The Re-pricening
* Rewritten and adjusted for paycheck defines.
* I made the map changes finally.
* And the refills too.
* "OH YEAH REPLACING IT ALL WITH DEFINES AND SCALING IT THE EXCEL DOCUMENT WILL BE EASY, ARCANE!!!"
* And the premium ones too.
* Accidently spoiled a future pr due to dme bleedover
* Re-assesses 99% of vending prices through Arconomics to match player resources and round-length.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Pies are now refactored for new foods. (#54751)
Moves over pies to the newfood typepaths, as well as the few select pie slices.
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Pies are now refactored for new foods.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'. (#54665)
The PR aims to allow advanced tool users to be defined by traits rather than a hardcoded proc.
Also necessary for the CanUseTopic refactor I'm working on, which will be PRed separately for atomization purposes.
This PR also fixes an inconsistency with can_hold_items (since monkeys can actually hold items).
* Refactored 'IsAdvancedToolUser' into a macro plus relative trait. Tweaked 'can_hold_items'.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Beauty component improvements. Two new fantasy component prefixes (#54622)
Title. Changed the component backend code slightly to allow a single component to hold the total score instead of spawning new components. This should fix cases, such as material stacks without the MATERIAL_NO_EFFECTS flag, where multiple set_costum_materials calls can be made and new beauty components spawned.
* Beauty component improvements. Two new fantasy component prefixes
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixes a few bugs with greyscale stacks. (#54858)
Fixes greyscale floor tiles merging regardless of their materials.
Fixes greyscale floor tiles voiding materials when splitting the stack.
Fixes greyscale floor tile stacks being created with no mats_per_unit and only enough custom materials for a single unit.
Fixes greyscale tile flooring being created with the wrong amount of materials.
Fixes greyscale tile flooring not producing floor tiles/producing floor tiles with 0 units.
* Fixes a few bugs with greyscale stacks.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Fixed inconsistencies with the extradimensional blade nullrod. (#54868)
* Fixed inconsistencies with the extradimensional blade nullrod.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound. (#54695)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* The clown PDA now has in-built comedy detection for when something happens to the clown and plays a fitting sound.
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Easier Medipen Identification, Medipen Box (#54698)
* Medipen Differences
Adds a box for medipens, and gives each of the "common" pens a new look.
* Adds medipen box to craftables.
* Lighter first aid pen.
* Easier Medipen Identification, Medipen Box
Co-authored-by: Winter Flare <7543955+Owai-Seek@users.noreply.github.com>
* Speargun: Now actually a gun! Again! (#54289)
Turns the speargun from the syndikit bundle into a bolt action rifle instead of a pnuematic cannon.
The spears the rifle fires embeds using the new bullet embedding system by Ryll. The spears do a lot of fucking damage.
The new bundle includes:
The Ballistic Harpoon Gun
The weapon is a single shot rifle that can be loaded with harpoons. The rifle, being bolt action, requires pulling back the bolt, loading the new harpoon, then locking the bolt every time you wish to fire the weapon. This is more busy work than the pnuematic cannon version, but more reliable in functionality without any messy business with throwing.
The harpoons do 60 force, have a high wound chance against unarmored targets and very high embed chance, with a 100% against unarmored targets. They also have considerable armor piercing at 50, letting you nearly entirely shoot through a ballistic vest.
The weapon is essentially a powered-up single shot mosin or a significantly more powerful improvised shotgun filled with slugs.
The Quiver
Now a bag that goes on your belt. It holds up to 40 harpoons for your harpoon gun. This change was done because the harpoons cannot be retrieved, unlike the magspears, which were simply hacky ninja stars and could be pulled out with surgical tools/wirecutters. Previously you had 20 magspears, which because of their retrievable nature lasted a little longer than you would expect.
Sprites
New back sprites for the harpoon gun, ensuring nobody is missing it when you have it. Additionally, the Mosin Nagant now has it's back sprite as a suit storage sprite.
New sprite for the quiver.
* Speargun: Now actually a gun! Again!
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Fix runtime with RPD unwrenching. (#54773)
[01:44:12] Runtime in RPD.dm, line 392: Cannot read 1.type
/obj/machinery/atmospherics/wrench_act can return a boolean instead of an object under the following scenarios:
You cannot unwrench the machine.
You can unwrench the machine, but use_tool later returns FALSE instead of TRUE.
use_tool can fail when you stack wrench_acts ontop of eachother. The first wrench_act will work as expected and return the deconstructed version of the pipe, all other stacked wrench_acts will have use_tool fail and will instead just return TRUE.
This PR prevents stacking of wrench_act-based do_afters and guards against unexpected runtimes by CRASHing when wrench_act returns something unexpected.
* Fix runtime with RPD unwrenching.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Non-human mobs can now benefit from held id cards and economy. (#54647)
* Non-human mobs can now benefit from held id cards and economy.
* Moved these getters toward the upper end.
* oui?
...
dump eet.
* .tee pump
...
?iuo
* Non-human mobs can now benefit from held id cards and economy.
Co-authored-by: Rohesie <rohesie@gmail.com>
* Fixes being able to commit suicide with an UNREAL SORD (#54831)
The UNREAL SORD null rod form's suicide_act() now closely matches the suicide_act of an actual SORD.
For reference, an actual SORD's suicide_act() is:
```
/obj/item/sord/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.</span>", \
"<span class='suicide'>You try to impale yourself with [src], but it's USELESS...</span>")
return SHAME
```
And the UNREAL SORD null rod form's new suicide_act() is:
```
/obj/item/nullrod/sord/suicide_act(mob/user) //a near-exact copy+paste of the actual sord suicide_act()
user.visible_message("<span class='suicide'>[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so HOLY.</span>", \
"<span class='suicide'>You try to impale yourself with [src], but it's TOO HOLY...</span>")
return SHAME
```
* Fixes being able to commit suicide with an UNREAL SORD
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Improves admin logging for when TTV valves get opened. (#54776)
Basically just reformats the logging code for TTVs when valves get opened. It's a bit more verbose, giving a bit more detail in general. It also has line breaks, because it makes things easier to read.
I've also added the ability for signals to hold a logging string. In this case, a signaller creates a signal and attaches a logging string. If the signal is received by any signallers attached to a TTV, it stores the last logging string associated with that signal. Functionally, this means that TTVs can now ask their attached signaller for the logging string of the last signal it received and display it as part of the logging string.
* Improves admin logging for when TTV valves get opened.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Converting art component into element. (#54616)
* Only art is now an element. There have been some issues with beauty.
* Typo.
* Update art.dm
* Update art.dm
* Maintainer suggestions. Reversing order of switch(impress) for correct moodlets.
* Fixing some pre-existing oddities with art element.
* stating the right var.
* simplifying the component.
* Update art.dm
* lowercasing pronoun.
* Converting art component into element.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixes nullrod hand replacements being put into slots they shouldn't be (#54750)
* Fixes nullrod hand replacements being put into slots they shouldn't be
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Removes capitalisation from stasis bed name (#54680)
About The Pull Request
Makes the name of the lifeform stasis unit lowercase like all other improper nouns.
Why It's Good For The Game
Consistency, I guess
* Removes capitalisation from stasis bed name
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Removes capitalism and communism golems [the sun sets on freedom] [fall of the iron curtain] (#54637)
About The Pull Request
Removes commie and cappy golems, and all connected parts and features.
Why It's Good For The Game
You're downloading 5 mb of capitalist and communist songs and talk sounds every time you log into a server, which makes it take much longer to actually join the game. While this was a good meme and became even better when cappy golems would fight the communist ones, they are:
Really really underused for what they are
Really really boring and simple without all the special sounds
Really really not worth keeping gutted
Changelog
🆑
del: Capitalism (golem) and Communism (golem) are dead.
/🆑
* Removes capitalism and communism golems [the sun sets on freedom] [fall of the iron curtain]
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Fixes two incorrectly named COMSIG defines (#54660)
* Fixes two incorrectly named COMSIG defines.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Labcoats: Roboticist unique labcoat, updated remaining labcoats (#54644)
Gives the roboticists unique labcoats. Because why are geneticists allowed a unique labcoat but roboticists get a generic one?
So now, roboticists have the most extra of the labcoats to go with their jumpsuits. It even has shoulder pads!
The rest of the labcoats have had a very mild tweak, and their icons now no longer use the ancient, janky labcoat sprites. You know, the ones with the fucked up outlining.
Oh also the virologist labcoat suggested it was somehow more protective against biological things. This is not true, so the labcoat has had it's description fixed.
(While I was here I fixed up some suit storage sprites related to the stuff that goes in labcoats, hehehe)
* Labcoats: Roboticist unique labcoat, updated remaining labcoats
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Refactors tile reskinning (#54233)
* Refactors tile reskinning
* revert maxhealth changes
* what's with the extra spaces
* Include floors in the name changes
* tile fix and delete and create instead of change
* damn you github auto-resolve
* more atomization
* Refactors tile reskinning
Co-authored-by: Rohesie <rohesie@gmail.com>
* Converting the EMP protection component into an element. (#54617)
* Converting the EMP protection component into an element.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Adds layer switching with mouse wheel to the RPD. (#54458)
Adds a signal that gets sent to items in currently active hand on mouse scroll
and makes RPD listen to this and change the piping layer accordingly.
* Adds layer switching with mouse wheel to the RPD.
Co-authored-by: TheChosenEvilOne <34602646+TheChosenEvilOne@users.noreply.github.com>
* Directional lighting component + light system (#54520)
Adds in a new type for the lighting system, the directional one. It piggybacks on the overlay lighting to create a directional effect + adds a nice visual cone mask to make the effect feel really directional.
Also: made the static light system respect the light_on variable.
It feels really nice to shine AT things you're looking at with flashlights and the such, it makes maintenance scouring much more immersive too.
Adds more paranoia as you dont see light behind yourself when you've got a flashlight. Plus makes ambushes more fun
* [READY]Directional lighting component + light system
Co-authored-by: Azarak <azarak10@gmail.com>
* Fixes AI upgrades not being applied correctly (#54589)
Fixes AI upgrades not applying:
due to the item's afterattack() proc never being called
due to the attack chain ending early
due to the AI's attackby() proc returning true
Anyway, easiest way to fix it was to change the item to use pre_attack() instead.
* Fixes AI upgrades not being applied correctly
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Finally, peas for the whole station. (#54573)
This PR brings three new plants, and 6 new food recipes into being. This is a combined port of Citadel-Station-13/Citadel-Station-13#12211 and Citadel-Station-13/Citadel-Station-13#12510, along with the fixes made along the way.
Laugh Peas contains 7% Laughter.
World Peas contains 10% Pax and Happiness, but takes at least 21 cycles to bear a harvest, by having a maturation time of 20.
Salad of Eden contains 3 units of Earthsblood, 5 units of Omnizine, and 2 units of Happiness, but requires one of every ambrosia leaf, as well as a world pea.
Credits to TripleZeta for the base peas sprite, and Stewydeadmike for the Laugh, World, and food sprites. Without them, the peas would have remained an ideasguy sort of deal.
* Finally, peas for the whole station.
Co-authored-by: TheObserver-sys <58029438+TheObserver-sys@users.noreply.github.com>
* Makes flashlights do a clicky noise when they're turned on or off (#54521)
* Makes flashlights do a clicky noise when they're turned on or off
Co-authored-by: Azarak <azarak10@gmail.com>
* Add Lasagna to the game (#54438)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Add Lasagna to the game
Co-authored-by: alphanerdd <60521518+alphanerdd@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Adds sounds for the PDA (#54499)
This makes the PDA play all sorts of nice sounds, aswell as sounds for ejecting or inserting the ID/pen/cartridge.
The noises for pressing buttons will need for your ringer to be ON, the other noises get played either way.
* Adds sounds for the PDA
Co-authored-by: Azarak <azarak10@gmail.com>
* Standardizes attack chain signal returns and fixes a tk bug (#54475)
The attack chain is a bit of a mess, and the introduction of signals hasn't helped in simplifying it.
In order to take a step into untangling this, I re-ordered the attack signals to no longer be by source type and instead to be grouped more modularly, as they are all members of the attack chain and function similarly. They all share the trait of potentially ending the attack chain via a return, but had several different names for it. I joined it into one.
Additionally, fixed a tk bug reported by @ Timberpoes by adding a signal return check at the base of /mob/proc/RangedAttack
Lastly, removed the async call of /datum/mutation/human/telekinesis/proc/on_ranged_attack, which was added as a lazy patch to appease the linter complaining about a sleep on a signal handler (namely in /obj/singularity/attack_tk). Fixed the problem using timers.
Also cleaned some code here and there.
* Standardizes attack chain signal returns and fixes a tk bug
Co-authored-by: Rohesie <rohesie@gmail.com>