* Mob stays vertical while in cryo (#54800)
Currently, mobs in cryo will turn horizontal in the cryotube when they fall unconscious. This should stop that.
* Mob stays vertical while in cryo
Co-authored-by: prodirus <44090982+prodirus@users.noreply.github.com>
* Handful of minor text fixes#54774
Space Dragons used a visible_message when the user renamed themselves, and touch spells messaged the wrong person about disappearing when destroyed. This PR fixes those two issues.
Edit: Also fixes an extra space in bodies slamming into bodies and admin edited shuttle timers showing the wrong value (setting the timer to 30 seconds would show 3 seconds, 300 would show 30, etc)
* Handful of minor text fixes
Co-authored-by: Rohesie <rohesie@gmail.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>
* Syndrones no longer have references to eating weaker drones for health. (#54744)
Turns out that syndrones had an issue in 2 parts.
Previously they had a feature where they spawned with 30 health, and then if they found another drone, they would heal several points to health to get to their maximum of 120 points. However, due to an issue, they were spawning with 120 health regardless, and since they could just screwdriver themselves to full anyway, there wasn't any mechanical backing on that feature, and it was removed at some point.
In addition, when you rejoin as a syndrone if you went offline, you still got a line about being able to eat other drones for health.
The drone vore line has been removed, and their health has been set to 120 as is expected from them in modern balance.
* Syndrones no longer have references to eating weaker drones for health.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fix pai emitter regen rate that was incorrectly modified by delta_time changes. (#54764)
Personal AI emitters now regenerate at their properly intended speed instead of 1/10th of that speed.
Feex coding oversight from delta_time changes, restore previous behaviour with delta_time support.
Old behaviour - 0.25 regen 5 times per second for 1.25 per second.
delta_time PR behaviour - 0.125 regen multiplied by delta_time value of 0.2 per processing tick, intended to be run 5 times per second, for 0.125 regen per second.
Fixed behaviour - 1.25 regen multiplied by delta_time value of 0.2 per processing tick, intended to be run 5 times per second, for 1.25 per second.
* Fix pai emitter regen rate that was incorrectly modified by delta_time changes.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* [READY] Space Ninja Rework (#53492)
* Automatic changelog compile [ci skip]
* Automatic changelog compile [ci skip]
* Revert "Automatic changelog compile [ci skip]"
This reverts commit 48a63defa644ec9826ee5eb1736e5158d2a636d4.
* Revert "Automatic changelog compile [ci skip]"
This reverts commit cb68f4988edd9d841c4203eecee2067a49ce75c5.
* Revert "Revert "Automatic changelog compile [ci skip]""
This reverts commit e6e1f1ef53ee6611c334efcae6ca7c102edaf351.
* Revert "Revert "Automatic changelog compile [ci skip]""
This reverts commit 1782210527b9819772c0781122bec35b7979bf7d.
* Update changelog.html
* Automatic changelog compile [ci skip]
* Automatic changelog compile [ci skip]
* Move suit_initialization into better location
* Clean up cost check
* Clean up net using
* Clean up Ninja Star
* Clean Up Ninja Stealth
* Clean Up Sword Recall
* Move the event file
* Re-Merge the Changes
* Get your ninja code out of my human.dm
* Move the event into events folder and clean it up
* Can the old space ninja antagonist file
* Roll in the shiny new bad boy
* Get rid of actions/ninja.dm and move its info into respective ability files
* Update one_click_antag with new ninja
* Move proc out of ninja code into proper location
* Update the dme properly this time
* Update code/modules/ninja/suit/ninja_equipment_actions/ninja_suit_initialisation.dm
Co-authored-by: Fikou <piotrbryla@ onet.pl>
* Update code/modules/ninja/suit/gloves.dm
Co-authored-by: Fikou <piotrbryla@ onet.pl>
* Update the antagonist file
* Update ninjaDrainAct
* Re-Add MGS Voice Lines
* Up the Katana Damage Back Up to 30
* Attempting a Risky Manuever
* Adjusting some numbers to fit the delta time PR
* Fix Var Names and do a return ..()
* Remove Unused Defines, Update qdels to QDEL_NULLs
* Update code/modules/antagonists/space_ninja/space_ninja.dm
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Update code/modules/antagonists/space_ninja/space_ninja.dm
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Update code/modules/events/space_ninja.dm
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Update code/modules/ninja/energy_katana.dm
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Update code/modules/ninja/ninja_explosive.dm
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Update code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.dm
Co-authored-by: Rohesie <rohesie@ gmail.com>
* Remove Unnecessary Condition Checks
* I'll show you what A stands for!
* Turn some things into defines
* Remove is_ninja()
* Gives the SN roles on Antag Gain, not on event spawn
* Clean up mind/key code to be efficient and modern
* Have Deactivated Suit Gloves use default black sprite
* Add the new clothing sprites
* Add new inventory sprites for alternate sprites
* Get Rid of These Again
* Re-add suit changes
* Implement all the suggestions for the antag file
* And then everything else
* Updating the Weight for purpose of testmerge
* Balance Updates
* Update the Objective Definitions
* Remove Now Unreachable Cyborg Interaction Code
* Get That Shit Out of My Forest
* Re-Add Cowl Wearing Sprite
* Re-Add Cowl Inventory Sprite
* Adapt to the new thing?.thing changes
* Re-add New Katana Inhand Sprites
* Re-Add glove's shock but have it do knockdown instead
* Get rid of the these stupid changelog changes
* Update sounds
* Re-add New Mask Sprite
* Re-update katana inventory sprite
* Revert Event Weight
* Update code/modules/ninja/suit/ninja_equipment_actions/energy_net_nets.dm
Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* Re-Add Dynamic Ninja
* Revert Changelog thing
* Update Mob Sprites
* Add files via upload
Co-authored-by: Changelogs <action@ github.com>
Co-authored-by: Fikou <piotrbryla@ onet.pl>
Co-authored-by: Rohesie <rohesie@ gmail.com>
Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ users.noreply.github.com>
* [READY] Space Ninja Rework
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Co-authored-by: Changelogs <action@ github.com>
Co-authored-by: Fikou <piotrbryla@ onet.pl>
Co-authored-by: Rohesie <rohesie@ gmail.com>
Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@ 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>
* Feex (#54716)
[09:18:04] Runtime in card_slot.dm, line 72: Cannot execute 1.put in hands().
Usage of the try_eject proc is an eclectic mix of unimplemented behaviour and incorrect argument order, with behaviour that can cause runtimes.
Prototype for the try_eject proc wasn't even implemented properly by children. Nothing implemented it used the slots arg, so I modified the base prototype. Cleaned up various proc calls. Should no longer have incorrect arg-based runtimes.
* Cleans up try_eject proc prototype and various proc usages to fix some runtimes
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* BotKeeper (tablet app) list populates based on bot unlock access (#54730)
Anyone can now download BotKeeper. Only bots your current ID can unlock will be listed to control. Stylised Botkeeper as BotKeeper because it looks better.
* BotKeeper (tablet app) list populates based on bot unlock access
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Tweaks Floorbot pathfinding to prevent dogpiles and help prevent duplicate tile placements. (#54786)
This pr adjusts floorbots behaviors in order to attempt to fix any of the following issues:
#54159, #54196, #37421.
More or less the issue appears to have been that floorbots would place floor platings on top of where another floorbot would already be repairing a tile, and since they don't check for each other's work, they were stacking floor turfs ontop of each other, creating either A: Infinite piles of floor tiles, or B: Multiple floor tiles stacked on top of each other. The former I think may have been fixed in the previous changes to how shuttlecode turfs were stacking on-top of each other, but the multiple stacks of floor tiles overlaying was not resolved.
This adds a check to the beginning of floorbots repair proc which determines if another floorbot is there and repairing the turf already. If so, it begins to ignore the turf until it is reset next, which it tends to go over the course of a single job. This helps split up and divide multiple floorbots working on the same tile at a time, in order to prevent infinite floorstacks.
If 2 floorbots are on the same tile and conflicting, then a little whistle effect will play to indicate that they're moving to a new worksite.
* Tweaks Floorbot pathfinding to prevent dogpiles and help prevent duplicate tile placements.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* 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>
* Fixing multi-z defying mechas (AGAIN) (#54753)
I already fixed this issue almost a year ago, but the mecha refactor guy managed to revert the fix at the distance of 8 months.
* Fixing multi-z defying mechas (AGAIN)
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Fixing GBJ cases where the disposal holder is forcemoved outside a pipe. (#54643)
Title. Also turned movable/pipe_eject() into a comsig, since it was used only for gibs.
* Fixing GBJ cases where the disposal holder is forcemoved outside a pipe.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Makes the ChangeTurf same turf optimization work properly again, and converts baseturfs into a string_list (#54277)
I've converted baseturfs into a string list, I had to add a helper proc for baseturf stringlistifying, as the system expects single length baseturfs to not be a list, and I needed to support that. I added a length check of 100 to the helper proc, to help prevent more stuff like what got us into this mess in the first place, the kilo oom bug.
Makes ChangeTurf a lot faster in some cases, as it should be, and saves a lot of memory with cached lists.
* Makes the ChangeTurf same turf optimization work properly again, and converts baseturfs into a string_list
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* No more clickdragging one to another that isn't you doesn't opening inventory windows. (#54756)
* No more clickdragging one person to another that isn't you opening inventory windows.
Co-authored-by: Ghom <42542238+Ghommie@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>
* Fixes gondolas turning invisible when given a pet collar. (#54791)
Gondolas exist as a composite of overlays with a null icon_state.
When you put a pet collar on a gondola, it deletes all the existing overlays, rendering the gondola invisible.
I just overrode the regenerate_icons proc to do nothing for gondolas, because the parent proc is utterly useless to us and we don't need its functionality.
* Fixes gondolas turning invisible when given a pet collar.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* [READY] Buffs the Networked Fibers Blob Strain (#54343)
* Really revert commit
* Now Undo the simple change
* Undo My Stupid yet again
* Undo my stupid yet again
* No
* And for the last time
* Update Networked Fibers
* Early Return
* Dummy
* [READY] Buffs the Networked Fibers Blob Strain
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.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>
* Merge pull request #53835 from Ghilker/hypernob
This PR changes the Hypernoblium gas around a bit.
First the stop-all-reaction property has been limited to a minimum temperature of 20 K, under that it will no longer stop the reactions in the container (canister, pipenet or open air), over that it will behave normally
Second the production of the Hypernoblium has been shifted to very low temperature, under 15 K so you need at least t3 freezers to achieve and at least 1000 moles of BZ as catalyst to lower the vey high energy released by the reaction
Lowered amount of credit received by cargo to 5.
The production of Hypernoblium was always a pain to make it happen, so it was a super rare gas that almost nobody made, now that the endgame for atmos shifted to more advanced gases and tools, Hypernoblium needed a little rework to fit right into those changes.
* Better Hypernoblium
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Test basic attacks along with the attack chain (#54769)
Tests shoving (as well as the knock down and dropping your item), harming (both with and without an item), and the attack chain.
I can think of a few cases in very recent memory that these have been broken (devil removal breaking melee damage, attack chain breaking due to something else).
Also adds `TRAIT_PERFECT_ATTACKER` which makes your punches always hit. This is currently only used for tests, as they are meant to be reliable.
* Test basic attacks along with the attack chain
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* 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>
* Turns transparency for turfs into an element, and gives it to datum materials. (#54250)
* Turns transparency for turfs into an element, and gives it to datum materials.
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Removes an event that no longer holds relevance. (#54759)
Would definitely like to see dead bounty code get cleaned, but this is a step in the right direction.
* Removes an event that no longer actually does anything.
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Merge pull request #54752 from cacogen/chemmasterpillbottleoutputfix
Fixes ChemMaster not outputting pills to inserted pill bottle
* Fixes ChemMaster not outputting pills to inserted pill bottle
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
* Cargo can now once again accept requests with their own budget. (#54748)
* Cargo can now once again accept requests with their own budget.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Fly people eating fixed up (#54526)
About The Pull Request
When a fly person vomited up food the nutrition was not added properly.
Also the amount of nutrition that was lost to the vomit was 90%, this changes flyperson vomit to transfer ~67% of the nutrition to the vomit, this changes fly people from eating 10 hotdogs to just 1-2 for the same nutrition. Fly people were a drain on the food supply.
This also fixed the issue that fly people would loss nutrition on vomit where that was not intended.
Fixes#54510
Why It's Good For The Game
Fly people can now eat.
Vomiting now transfers reagents as expected.
* Fly people eating fixed up
Co-authored-by: NightRed <nightred@gmail.com>
* 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>
* Merge pull request #54714 from Timberpoes/borgo-hat-fix
You can once again place hats on cyborgs without having to treat it as a party game.
* You can once again place hats on cyborgs without having to treat it as a party game.
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>