/obj/effect/ex_act had several different re-definitions to make it a noop. The original definition would randomly delete it, which is bad news when a lot of /obj/effects are just that--effects, that shouldn't be blown up.
The ones that actually do want to be blown up (like decals) already have their own implementations. The one in place was never ran, and nobody had problems with it.
Makes Morphs and Swarmers have their own part of the orbit menu, like other visible antagonists. Given pretty much every other ghost-obvious antagonist is, it's more of an oversight that you couldn't.
Someone changed /obj/screen/alert to be /atom/movable/screen/alert and it caused this problem.
Also fixes the issue with void storm breaking if someone dies and gets revived.
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.
About The Pull Request
Fixes the cursed heart being unable to track targets in containers.
Fixes the shitcode that was reality_smash_tracker, now it is only responsible for generating influences.
closes#53583closes#52554
Changelog
🆑
fix: fixes the cursed heart being unable to track people inside containers.
fix: fixes influence vision getting broken by replacing someone's eyes.
/🆑
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).
* 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>
* 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
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.
imo; the ss13 audio-scape is quite barren, you can only hear most things if you can see them, which in my opinion doesn't make much sense. This changes that so you can hear further away, but falloff is much higher, so in reality you will only hear things relatively quietly when they're out of sight.
This PR increases the hearing distance of most sound by 9, excluding sounds such as antag items that are meant to be used stealthily
This PR also replaces Byond's inbuilt falloff system with something I made, (And thanks to potato for helping me throw together a formula for it). This fall-off system makes sound fall off more naturally, with sounds being full volume within a certain range, and then softly falling off until they are completely quiet. This makes for a smoother transition between "This sound is full volume" and "I dont hear this sound".
Co-authored-by: ff <ff>
Originally I wanted to fix an issue where the `get_up()` `do_after()` would ignore the callback checks, because it was `uninterruptible`, so that made me refactor these procs to allow for higher granularity on checks and standardize behavior a bit more.
There's more work to be done for them, but one thing at a time.
* Removes the `uninterruptible` check in favor of the more granular `timed_action_flags`
* Cleans code on the `do_atom`, `do_after_mob`, `do_mob` and `do_after` procs to standardize them a little better.
Heretic can no longer give you both hijack AND die a glorius death objective.
Protection objective was broken for some time, it always suceeded. It should be fixed now.
So essentially there was discussion already here (https://tgstation13.org/phpBB/viewtopic.php?f=33&t=27620) about how hijack is one of the few objectives on Manuel that you can murderbone with, which is mildly at odds with the intention of the server.
Personally, I think hijack is just straight up terrible regardless of what server you're on. The way it functions is dreadful. Nobody must be aboard the shuttle in any part of the shuttle at all. This means you have people hiding in the walls or hiding in some invisible corner of the shuttle, cucking you of the hijack. For the most part, the only way to actually hijack the shuttle is to render it completely inhospitable or destroying it utterly save for, maybe, one square. The one you are standing on.
It's absurd. So, I knew kev made a pretty honest attempt at reworking hijack. And it works pretty well. It doesn't necessarily solve the problem of hijackers being mandatory mass shooters, but it goes some ways to improving the objective in a more interesting fashion, and allows for the discussion around the objective to be a little more open ended for the sake of the higher roleplay servers without actually detracting from the lower roleplay servers at all. If anything, this should improve the experience of being that gamer to stage a hijacking all the more interesting and about robustness, and less of hide-and-go-seek.
Implements the ?. operator, replacing code like A && A.B with A?.B
BYOND Ref:
When reading A?.B, it's equivalent to A && A.B except that A is only evaluated once, even if it's a complex expression like a proc call.
This is a pretty big change all around. The gist of it is that it moves the mobility_flags into traits or variables that can track the sources, and to which we can append code to react to the events, be it via signals or via on_event-like procs.
For example, MOBILITY_STAND could mean, depending on context, that the mob is either already standing or that it may be able to stand, and thus is lying down.
There was a lot of snowflakery and redefinitions on top of redefinitions, so this is bound to create bugs I'm willing to fix as I learn them.
The end-goal is for every living mob to use the same mobility system, for the traits to mean the same among them, and for no place to just mass-change settings without a way to trace it, such as with mobility_flags = NONE and mobility_flags = ALL
Fixes AIs being able to strip nearby people. They've lost their hands usage.
overrides weren't detected by should not sleep, i think i've mostly
fixed that with SpaceManiac/SpacemanDMM#214
Some of these are wacky but overall this pr is harmless
signals shouldnt sleep even in weird 1 in a million situations or due
to other people adding bad code
overrides of changeling can_sting() use alert() and input() and that's
just too fucked for me to fix in this pr
* Adds Shuttle 667 as a buyable shuttle for dispelling a cult rune
* Add stasis beds
* Fix forcefields going away, leading to hull breaches
* Use set instead of list
* Use subtype for forcefield walls