* Infinite Gun Culling: Gun Kit Edition (#56133)
Every prototype firearm in the game now utilizes crafting to construct it, usually sacrificing a standard version of that firearm in order to produce the new one. The guns are made using gun part kits you print from the security protolathe (or buy, in the case of hellfire lasers).
* Infinite Gun Culling: Gun Kit Edition
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Fixes 2 really annoying cytology virus bugs. (#56062)
This PR fixes the generate_sample proc so it properly uses virus_chance to determine when to generate a virus. Now most samples will be virus free as intended.
It also fixes the bug where virus penalty and spaceacillin consumption would be multiplied by the number of cell lines, rather than the number of viruses, as intended.
* Fixes 2 really annoying cytology virus bugs.
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
* Fixes nanite purge runtime on simple mobs (#55902)
- Makes nanites not try to purge reagents from mobs without reagents
* Fixes antitox nanites runtiming on simple mobs
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Tweak nanite subdermal ID to include pulled cards (#55883)
Some mobs which are capable of hosting nanites have no hands to hold ID
cards to be scanned, such as unexpectedly sentient Captain Ian. But now,
give them subdermal ID nanites, pull the ID card, and then you have a
full-access simple mob.
Note that this DOES NOT scan the ID cards of pulled mobs, only if you
are pulling an actual ID card. It is not possible to grab the captain to
leech his access.
* Tweak nanite subdermal ID to include pulled cards
Co-authored-by: coiax <yellowbounder@gmail.com>
* Bepis goes along the crate cost changes (#55617)
* bepis works
* betterfix
* UGH
* changes bepis in accordance with the crate changes
* Bepis goes along the crate cost changes
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Fixes BRPED/rigged cell exploit and allows it to booby trap BRPEDs instead (#55447)
BRPEDs can teleport rigged power cells. Through cameras. These rigged power cells will then pretty much immediately explode. This is a tad imbalanced.
Behaviour modified. Attempting to use a BRPED on a machine and having it attempt to swap over a rigged cell will cause the rigged cell to immediately go to maximum charge and explode.
Adds some logging to accompany it.
Why It's Good For The Game
Blowing things up from across the cosmos is bad.
Rigging BRPEDs to be able to explode when some poor sucker uses it to change over a power cell is cool.
* Fixes BRPED/rigged cell exploit and allows it to booby trap BRPEDs instead
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* [Fuck Shotties] Makes shotguns specialist weaponry. (#55663)
Shotgun slugs can no longer be made in an autolathe.
Buckshot rounds can no longer be made in an autolathe.
Frag12 rounds deal less direct damage, since they fucking explode.
Pulse shot rounds deal less damage.
Increased the cooldown on riot shotguns.
Removed buckshot rounds from all maps.
Combat shotguns start with beanbags.
Why It's Good For The Game
Shotguns have been overpowered for too long. NT is lasers , syndicate is ballistics.
* [Fuck Shotties] Makes shotguns specialist weaponry.
Co-authored-by: EdgeLordExe <42111655+EdgeLordExe@users.noreply.github.com>
* Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals (#55193)
Huge removal of dead vars, bad timers, and other sloppy jitteriness from beams. They go from checking movement to waiting for a signal.
VARIABLE KILL LIST:
sleep_time: signals baby
finished: signals BAYBEEE
target_oldloc: not only not typecasted as a turf or named as a turf, it was unused. when are we going to use this? the beam starts from the origin!
origin_oldloc: bad name, not typecasted. renamed to originturf
static_beam: how are you an unused variable and still get replaced by signals like really
timing_id: signallllss bbbaaaabbyy
recalculating: you get the drill by now signals baby
base_icon: unused, seemingly replaced by visuals I think
* Refactors Beams to use signals: Revived from 2019 edition! BONUS: Medbeams are also refactored to use signals
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* [READY] Kitchen Rework part 1: I just want to griddle! (#55319)
This PR essentialy moves away from the extremely microwave dependent cooking we have for meat right now, and making it a bit more sensical by making you use a grill to grill meat. The grill takes a different time (with variation) for different grilled things. Once finished it will turn that food into something else.
Yes, this does mean creating burgers takes longer, but in return you can make more patties at once, and you are not required to stay at the grill while its going. This lets you cook as much as you want at once, just make sure your meat doesn't burn!
In the future, I hope to move more things like this to machines similar to this (Pasta boiling, putting eggs on the griddle, soup making, etcetera) to create for a more interesting cooking experience.
* [READY] Kitchen Rework part 1: I just want to griddle!
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Extends the IC chat filter to be checked in two major renaming procs (#55217)
About The Pull Request
Honestly, I'm not sure this is the... Correct solution? But people more familiar with this will likely show me da wae.
Prohibits creating names that can't actually be spoken in-character due to chat filters by adding CHAT_FILTER_CHECKs to the procs that handle sanitising them.
For admin-utilised renaming procs, they'll be given a simple alert box to warn them their chosen name contains words prohibited by the IC chat filter and be allowed to confirm or cancel out.
Why It's Good For The Game
If you can't speak the name IC, chances are the name shouldn't be allowed at all. Players may occasionally be forced to ahelp certain names because they contain words prohibited in chat filters.
* Extends the IC chat filter to be checked in two major renaming procs
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fix the implosion compressor runtiming when the bomb is too weak (#55231)
Previously, the implosion compressor would runtime when the bomb was too weak due to a badly ordered QDEL_NULL. Now, it properly returns the message.
* Fix the implosion compressor runtiming when the bomb is too weak
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Changes grenade proc names to be more clear (#55181)
Grenades have, for the longest time, used the proc name preprime() to refer to arming a timed grenade so that it will boom in a few seconds, and prime() to refer to the grenade actually going boom (or releasing foam or anything else grenades do when they go off). This was very confusing, so now these two procs are called arm_grenade() and detonate().
* Changes grenade proc names to be more clear
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Fixes forced speech nanite oversight (#55164)
All of the stunning emotes were blacklisted from the forced speech program. However, *faint was not added this to the list, and this is an oversight. This is a simple one line fix to add it to the blacklist.
* Fixes forced speech nanite oversight
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
* Humans have more complicated body temperatures (#54550)
This changes how carbon/humans stabilize body temperature, and changes how damage and wounds are applied based on temperature.
Humans now have a core body temperature along with body temperature. The core temperature is used for natural stabilization and what viruses like fever and shivers target by raising or lowing the core temperature of the mob.
The standard body temperature still exists and acts exactly the same for most items at this time but is now treated as surface temperature in humans.
Damage from body temperature for humans is now based on the core temperature instead of body temperature now.
Humans will now receive burn wounds when the body (surface) temperature is to high for to long.
This causes you to see alerts for the area temperature before you take damage in most cases improving visibility of dangerous situations.
* Humans have more complicated body temperatures
Co-authored-by: NightRed <nightred@gmail.com>
* minor material_container args/vars refactor and Mk-honk shoes peeve. (#54863)
My original intention was just fixing an issue with the Mk-honk banana shoes but, considering I didn't want to add two new variables to a component with already lot of args and lengthy AddComponent() calls in term of text, I had to merge some TRUE/FALSE variable/args into the breakdown_flags bitfield (now named mat_container_flags) in the process.
* minor material_container args/vars refactor and Mk-honk shoes peeve.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Adds a set of nanite storage protocols as a Bepis research, plus small nanite adjustments (#54710)
Adds a new set of nanite protocol programs as a researchable Bepis tech.
Protocol programs are programs that are mutually exclusive within their time, so remember that only one of the following can be active at once in the same host.
Hive Protocol: Makes nanites use space more efficiently, increasing maximum volume by 250 (500 -> 750)
Zip Protocol: Makes nanites use a compression routine when not in use, increasing maximum volume by 500 (500 -> 1000) but consuming 0.2 nanites per tick to perform the zipping/unzipping
Free-Range Protocol: Makes nanite use looser storage routines, reducing the maximum volume by 250 (500 -> 250) but gaining 0.5 nanite replication rate
S.L.O.P. (Safety Level Override Protocol): Removes nanite storage safety measures, allowing them to reach up to 2000 volume. However, when the volume surpasses the maximum recommended volume (500) the host will start to suffer from side effects, manifesting in slow organ damage. The more the nanite volume approaches the physical limit, the more harmful it becomes.
Replaced the Tinker Nanite Replication Protocol with the Pyramid Protocol, which gives an extra 1.2 regeneration rate, but only while the nanites are at 80% volume or above.
Renamed the Offline Production Protocol to Eclipse Protocol.
Chain detonation now uses dyn_explosion(), at a rate of 1 power per 50 nanite volume. The power level should be similar to how it was for normal nanite volumes, but it should scale more linearly when going above the limit with the new programs.
If nanite volume is suddenly significantly higher than the maximum allowed (likely caused by deleting an active storage protocol) the extra nanites will be forcefully expelled from the host's body, which can range from minor oozing, to vomiting puddles of nanites, to nanites rapidly bursting from eyes, ears, and skin pores.
Despite how it looks, this process causes no lasting damage, since it's a security feature made to prevent acute nanite poisoning.
Added some comments on a few nanite functions.
Refactored vomit code to make it a bit more customizable. The toxic arg (supposedly used to choose an alternate vomit icon, but in fact not functional) is now vomit_type, and purge (which determined vomit would remove 10% of reagents or 67% of reagents) is now purge_ratio, which accepts custom values. Made the refactor mostly to allow a 0% ratio, but it can be handy in other future uses.
Adds extra content to Bepis research, giving a little more reason to invest money into it.
Creates more options to customize a previously rigid parameter in nanites, maximum nanite volume. This opens up strategies that involve storing up large amounts of nanites for special occasions, or viceversa reducing the maximum rate to get more constant replication rate to sustain continued programs.
* Adds a set of nanite storage protocols as a Bepis research, plus small nanite adjustments
Co-authored-by: XDTM <heliumt@yahoo.it>
* 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>
* 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>
* Fixes infective nanite programs not syncing cloud id (#54793)
## About The Pull Request
I have always meant to have infective programs copy over every property of the infector nanites, and i've only recently noticed from some log diving that this wasn't the case, and cloud IDs were defaulting to 0 (unsynced).
I probably never updated it since i made cloud nanites the default, assuming that the AddComponent handled it on its own.
Since an unsynced cloud ID causes constant software errors, this makes the infective programs much less useful than they're meant to be.
**Note: I'd also love to make the infectee's cloud ID a customizable parameter to allow for a wider range of possible uses, but avoided doing so to not violate the feature freeze. I'd gladly add that part if a maintainer gives the ok.**
## Why It's Good For The Game
Makes Viral Replica not obligatory for anyone who wants to use a spreading nanite program. Without it, the cloud IDs of infectees are defaulted to 0, causing degenerative software errors due to lack of cloud sync, which are likely to ruin any gimmick that involves infecting unsuspecting victims.
* Fixes infective nanite programs not syncing cloud id
Co-authored-by: XDTM <heliumt@yahoo.it>
* Service Protolathe Changes (#54697)
About The Pull Request
Moves Light Replacer to Equipment Tab
Adds Trash Bag as a printable item (Plastic, Service Lathe)
Adds Paint Remover as printable item (Needs Advanced Sanitation)
Fix: Allows you to print broom in Service Lathe
Why It's Good For The Game
Tiny Fix and QoL improvement for janitors. You can now get all of the items you (generally) need from advanced sanitation in a single tab. In addition to that, it gives a janitor who's lost his paint cleaner a way to get more. You can now get it by asking a chemist for help, -or- from the cargo order.
* Service Protolathe Tweaks, Paint Cleaner and Trashbags in Protolathe
Co-authored-by: Winter Flare <7543955+Owai-Seek@users.noreply.github.com>
* Cleans up suit/nanite sensor code a bit (#54670)
* Cleans up suit/nanite sensor code
* linted
* Cleans up suit/nanite sensor code a bit
Co-authored-by: XDTM <heliumt@yahoo.it>