Commit Graph

1178 Commits

Author SHA1 Message Date
Jared-Fogle 0a77d27a1b Replace direct poi_list manipulation with element (#55416)
Replaces GLOB.poi_list |= src and GLOB.poi_list -= src with an element that handles it directly.

More consistent code, especially when a lot of code couldn't decide how to add/remove (some |=, some -=, some .Remove, etc).
2020-12-10 23:30:25 +00:00
Jared-Fogle 7d3fd4355f Everything that uses maptext now uses the class that makes it actually readable (#55420)
Adds a MAPTEXT macro that wraps the given text in the maptext class, the thing we use for Runechat to make it so you can actually read it. Everything that sets maptext now uses this.
2020-12-10 23:25:46 +00:00
silicons 160175ee8b pass_flags handling refactor + rewrites a part of projectiles for the n-th time (#54924)
Yeah uhh this'll probably need testmerging even after it's done because yeah it's a bit big.
If y'all want me to atomize this into two PRs (pass flags vs projectiles) tell me please. Pass flags would have to go in first though, in that case, as new projectile hit handling will rely on pass_flags_self.
Pass flags:

Pass flags handling now uses an atom variable named pass_flags_self.
If any of these match a pass_flag on a thing trying to pass through, it's allowed through by default.
This makes overriding CanAllowThrough unnecessary for the majority of things. I've however not removed overrides for very.. weird cases, like plastic flaps which uses a prob(60) for letting PASSGLASS things through for god knows why.
LETPASSTHROW is now on pass_flags_self
Projectiles:

Not finalized yet, need to do something to make the system I have in mind have less unneeded overhead + snowflake

Basically, for piercing/phasing/otherwise projectiles that go through things instead of hitting the first dense object, I have them use pass_flags flags for two new variables, projectile_phasing and projectile_piercing. Anything with pass_flags_self in the former gets phased through entirely. Anything in the latter gets hit, and the projectile then goes through. on_hit will also register a piercing hit vs a normal hit (so things like missiles can only explode on a normal hit or otherwise, instead of exploding multiple times. Not needed as missiles qdel(src) right now but it's nice to have for the future).

I still need to decide what to do for hit handling proper, as Bump() is still preferred due to it not being as high-overhead as something like scanning on Moved(). I'm thinking I'll make Moved() only scan for cases where it needs to hit a non-dense object - a prone human the user clicked on, anything special like that. Don't know the exact specifics yet, which is why this is still WIP.

Projectiles now use check_pierce() to determine if it goes through something and hits it, doesn't hit it, or doesn't go through something at all (should delete self after hitting). Will likely make an on_pierce proc to be called post-piercing something so you can have !fun! things like projectiles that go down in damage after piercing something. This will likely deprecate the process_hit proc, or at least make it less awful.

scan_for_hit() is now used to attempt to hit something and will return whether the projectile got deleted or not. It will delete the projectile if the projectile does hit something and fails to pierce through it.

scan_moved_turf() (WIP) will be used for handling moving onto a turf.

permutated has been renamed to impacted. Ricocheting projectiles get it reset, allowing projectiles to pierce and potentially hit something again if it goes back around.

A new unit test has been added checking for projectiles with movement type of PHASING. This is because PHASING completely causes projectiles to break down as projectiles mainly sense collisions through Bump. The small boost in performance from using PHASING instead of having all pass flags active/overriding check_pierce is in my opinion not worth the extra snowflake in scan_moved_turf() I'd have to do to deal with having to check for hits manually rather than Bump()ing things.
Movement types

UNSTOPPABLE renamed to PHASING to better describe what it is, going through and crossing everything but not actually bumping.
Why It's Good For The Game

Better pass flags handling allows for less proc overrides, bitflag checks are far less expensive in general.

Fixes penetrating projectiles like sniper penetrators

This system also allows for better handling of piercing projectiles (see above) without too much snowflake code, as you'd only need to modify on_pierce() if you needed to do special handling like dampening damage per target pierced, and otherwise you could just use the standardized system and just set pass flags to what's needed. If you really need a projectile that pierces almost everything, override check_pierce(), which is still going to be easier than what was done before (even with snowflake handling of UNSTOPPABLE flag process_hit() was extremely ugly, now we don't rely on movement types at all.)
2020-12-10 09:29:27 +13:00
Jared-Fogle f00e379939 Singularity component (#55096)
Adds singularity component
2020-12-08 10:58:03 +01:00
Qustinnus 4650a5d7ee Sound Environments - Adds reverb and echo to rooms (#55333)
Jack and Style figured out that sound environments can be cancelled by setting some settings in Echo. By default audio has no reverb, but if a sound environment is selected in playsound_local it will become a reverb sound.

This makes every room sound a bit different. The only caveat is is that if you move into another room, Already playing sounds will transition into the new environment, which sounds odd.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-12-07 11:53:58 +02:00
ArcaneDefence 597a4aa6b6 Fixes Nar'Sie rune erasing bug (#55123) 2020-11-30 13:54:05 -08:00
TiviPlus 0eaab0bc54 Grep for space indentation (#54850)
#54604 atomizing
Since a lot of the space indents are in lists ill atomize those later
2020-11-30 12:48:40 -05:00
Jared-Fogle 96597d3157 Remove duplicate definitions of /obj/effect/ex_act, explicitly noop it (#55076)
/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.
2020-11-28 07:55:26 -03:00
Coffee d125611599 Makes swarmers and morphs ghost-visible in the orbit menu (#55191)
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.
2020-11-28 07:38:28 -03:00
Ghom 4c31b0e116 CanUseTopic() refactor. (#54747)
* CanUseTopic() refactor.

* Forgot about default_can_use_topic. Tested and working.

* Update bin.dm

* no-nonsense.
2020-11-25 13:12:12 +01:00
Qustinnus 41157f5d6b Moves grown food to newfood (#55040)
Moves grown food to newfood
Gives trash element support for callbacks for item creation override
2020-11-23 14:00:23 -08:00
Ghom 2bd9aca8b6 Removed effect/dummy/phased_mob copypasta. Fixed squeak component triggering from abstract effects & co. (#54783) 2020-11-23 13:27:18 -03:00
EdgeLordExe b2cc771ba9 Fixes Crucible Soul potion making you permanently phase through all matter and Void storm breaking after dying. (#55050)
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.
2020-11-21 04:53:31 +00:00
EdgeLordExe 915204167d Unit tests for heretic knowledge (#55022) 2020-11-20 15:53:56 -08:00
XDTM 03de3dfb07 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.
2020-11-20 12:07:20 -08:00
EdgeLordExe f331ed29c8 Fixes 2 last heretic bugs that are on issue tracker (#54967)
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 #53583

closes #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.
/🆑
2020-11-20 09:38:41 +01:00
EdgeLordExe f3a4d8c061 Im fucking r-tarded (#55020)
Makes void actually accessible
2020-11-18 13:50:37 -08:00
EdgeLordExe 2f18e6232c [ready]Heretic new path : Path of Void [sprites approved] (#54252)
* E

* E

* E

* E

* E

* E

* VOID FINALLY

* E

* E

* E

* VOID STORM

* e

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_magic.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_magic.dm

Co-authored-by: Rohesie <rohesie@gmail.com>

* E

* FUCKING FINALLY

* E

* E

* Voids Embrace

* E

* E

* E

* E

* some changes

* E

* E

* E

* EEE

* E

* E

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>

* Update code/modules/antagonists/eldritch_cult/eldritch_items.dm

Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>

* E

* E

* E

* MERGE READY UWU

* Update code/modules/clothing/suits/toggles.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: girl <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
2020-11-17 12:37:45 -05:00
EOBGames e56f09d002 My Great Big Fat Heretic Proofreading (#54705) 2020-11-13 19:29:50 -08:00
NightRed 5be988ff9e Reverts metabolism on stomachs, keep them as important to eating (#54632) 2020-11-13 19:28:55 -08:00
Ghom e14e2d9423 Fixing cult turf overlays not showing under transparent tiles. (#54782)
vis_contents always render the turf above other atoms of the same layer
2020-11-10 15:18:44 -03:00
Ghom 91bfedcd16 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).
2020-11-10 15:15:31 -03:00
IndieanaJones 0279109cf9 Spider Rework (#54451)
Spider refactor and hostile animal stamina changes.
2020-11-10 15:31:08 +01:00
zxaber b56af45a50 Borgs synced to an AI using Doomsday will have their lights force-set to red and enabled to at least level 1 (#54677) 2020-11-10 01:04:00 -08:00
TemporalOroboros edd6500d78 /obj/screen --> /atom/movable/screen (#54403)
Repaths screen objects to /atom/movable
2020-11-08 23:07:15 -03:00
Jared-Fogle 477d97647e Move death(), gib(), and dust() from /mob to /mob/living (#54810)
These have no reason to exist on /mob, where they noop for any nonliving.
2020-11-08 10:32:04 -05:00
IndieanaJones 4f6190e289 [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>
2020-11-07 01:51:30 -05:00
Rohesie 71455dcb1c 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
2020-11-07 01:28:05 -03:00
IndieanaJones 9453f30648 [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
2020-11-05 15:22:20 -05:00
Ghommie ec50fbd5f5 Merge branch 'master' of https://github.com/tgstation/tgstation into Ghommie-tg27 2020-11-01 14:38:30 +01:00
Rohesie c55bb1b6c8 Basepixels (#54652) 2020-10-28 20:31:13 -07:00
skoglol cc03593d12 Removes changeling teams and hivemind channel (#54054)
* Removes changeling teams and hivemind channel.

* More cleanup

* some more stuff
2020-10-28 14:51:34 -04:00
Ghommie c9f0966156 Non-human mobs can now benefit from held id cards and economy. 2020-10-27 15:59:28 +01:00
ATH1909 b5e4c367ea don't try to fire a blood barrage as a non-cultist 2020-10-25 16:35:25 -05:00
ATH1909 deade8f968 Gamer(025) moment 2020-10-25 15:52:40 -05:00
Timberpoes b53875c471 Incredibly minor grammar fix of a trailling ] on the Traitor Panel for blood brothers (#54539) 2020-10-23 14:07:13 -03:00
Yenwodyah cf64baca7e Makes changeling regenerate power description slightly more descriptive (#54536) 2020-10-23 14:06:15 -03:00
Rohesie c07df08690 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.
2020-10-21 05:42:38 +01:00
zxaber 1156c8dcaf Malf AIs no longer fail their survive objective if piloting a shell (#54346) 2020-10-20 18:38:51 -07:00
Qustinnus 74755a5a3a Audio falloff re-work, and increased audio range. (#54362)
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>
2020-10-20 17:14:16 -07:00
LemonInTheDark ffdabc08d9 Fixes an issue with the sentient disease status panel, each letter was a new line (#54468) 2020-10-20 20:15:07 -03:00
Rohesie 29ec525147 Implements timed_action_flags for do_after-like procs (#54409)
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.
2020-10-19 17:06:49 -04:00
Rohesie e8a16d8575 Changelings can no longer readapt while in stasis (#54166) 2020-10-18 22:51:01 -07:00
nicbn a653bc6350 Refactors occupant to use setter (#54373)
This is to make it easier to attach a signal to the setting of the occupant.
2020-10-18 12:46:14 -03:00
EdgeLordExe 3190cc3603 Makes influences 100% invisible to non-heretics, and silicons are no longer able to see pierced realities. (#54372)
You can no longer alt-click cheese influence as non heretic.

Silicons can no longer see pierced realities and transmutation runes.
2020-10-16 11:59:27 -03:00
EdgeLordExe 566aac393d Fixes heretic giving you both hijack and dagd, fixes protection objective. (#54374)
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.
2020-10-15 15:54:35 -03:00
necromanceranne 068dda314f Ports #10649 from Citadel: An attempt at making hijack not shit and more about point defence (#54146)
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.
2020-10-14 18:36:34 -07:00
EdgeLordExe 0db8174090 Fixes heretic mass-item deletion during transmutation bug (#54371)
fix: fixes heretic mass deletion during transmutation bug.
2020-10-14 19:27:32 +01:00
ZeWaka 9629feed35 Converts A && A.B into A?.B (#54342)
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.
2020-10-13 16:43:53 -03:00
spessbro 34c80cf393 fixes zealot's blindfold's flash protection (#54308) 2020-10-12 21:28:30 -07:00