* Old Medibot should now heal things besides brute (#54907)
Old medibot had a heal_threshold of 0, so all the heal_threshold checks will always evaluate to TRUE, so the medbots always get stuck in brute healing.
* Old Medibot should now heal things besides brute
Co-authored-by: prodirus <44090982+prodirus@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>
* 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 mob_holders not going into storage (#54837)
#53305 made it so clothing objects without an icon_state on initialize were given ABSTRACT flags.
unfortunately for mob_holder objs, they gained their icon after that step of initialization.
this PR just moves the parent call to after the icon_state is updated, preventing them from incorrectly gaining the abstract flag.
Fixes#53872
* Fixes mob_holders not going into storage
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixing armsy del ref issue and invincibility (#54879)
On the second iteration of the for/var loop found on `Initialize()` the `front` variable of the second link of the armsy worm (the one just before the head) is set to `null` because `next` is also `null`. That said, the second link will fail to soft delete because it's still referenced in the `back` variable of the first link since the `front.back = null` line on `Destroy()` can't reached.
Also the code was formulated in a byzantine way.
* Fixing armsy del ref issue and invincibility
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Removes duplicate flyperson organ assignments (#54897)
mutantliver and mutantstomach were set twice for the flyperson race; this is no longer the case.
Also, I moved the place where mutanttongue is set for the flyperson race down to where the other mutant organ variables are set for them.
* removes duplicate flyperson organ assignments
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Borgs synced to an AI using Doomsday will have their lights force-set to red and enabled to at least level 1 (#54677)
* Borgs synced to an AI using Doomsday will have their lights force-set to red and enabled to at least level 1
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Fix royal alien pixel offset, change getter to variable (#54706)
Fixed a bug where royal aliens would have their base pixel offset applied twice, making them off-center (https://i.imgur.com/BtspaM0.png)
Changed the mob/living procs get_standard_pixel_x_offset() and get_standard_pixel_y_offset() to variables (body_position_pixel_x_offset and body_position_pixel_y_offset), to match the contribution guidelines.
Also corrected a few random things that weren't using base pixels but should have been.
* Fix royal alien pixel offset, change getter to variable
* Update pixel_shift.dm
Co-authored-by: Yenwodyah <yenwodyah@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* Removes changeling teams and hivemind channel (#54054)
* Removes changeling teams and hivemind channel.
* More cleanup
* some more stuff
* Removes changeling teams and hivemind channel
* Update horror_form.dm
* Update horror_form.dm
* Update horror_form.dm
Co-authored-by: skoglol <33292112+kriskog@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.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>
* 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>
* Megafauna once again gibs immortal miners (#54495)
Memento Mori + Megafauna no longer equals softlocking the game.
* Megafauna once again gibs immortal miners
Co-authored-by: SmArtKar <44720187+SmArtKar@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>
* Removes shoe stealing shortcut (#54583)
Intent combos suck ass as it is and we don't need to make them worse by having obscure shortcuts for gimmicks that can be done with the strip menu, I've seen this used accidentally dozens of times and maybe once on purpose
* Removes shoe stealing shortcut
Co-authored-by: Mickyan <38563876+Mickyan@users.noreply.github.com>
* Pacifists now taunt secbots when attempting attacks with harm or disarm intent. (#54570)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Pacifists now taunt secbots when attempting attacks with harm or disarm intent.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@ users.noreply.github.com>
* Adds 👏 High 👏 Fives 👏 (#54516)
This PR lets you post up for high-fives with your buds so you can slap some skin and show off how well you vibe together. To initiate a high-five, simply stand next to another person with a slapper (the *slap emote one) in hand, and hit the offer item button (default G) to let the people adjacent to you know you're available. They'll get an alert that you're offering a high-five, and clicking it will follow through and award you both a small positive moodlet, or they can just walk away and leave you hanging, earning you a negative moodlet.
Is a high-five not enough to show the world how tight your crew is? Double the fun! If whoever initiates the high-five has a slapper in both hands, and the taker has two hands free, you'll go for the mythical high-ten for a louder slap and extra emphasis! Woo!
* Adds 👏 High 👏 Fives 👏
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* [Performance] Makes bot salute not do thousands of hearers_in_view calls (#54498)
It now uses view() instead, and is cooldowned per each check, instead of per each successful salute
EDIT: I've changed so the commmissioned bots invoke salutes for even more performance, as AnturK suggested.
* [Performance] Makes bot salute not do thousands of hearers_in_view calls
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>