* Replaces US Indigenous People's Day with International Indigenous People's Day (#55458)
Title. This modifies a unit test that tested the holiday I'm removing to test mother's day instead, as International Indigenous People's Day isn't an nth week holiday.
* Replaces US Indigenous People's Day with International Indigenous People's Day
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* Fix Hanukkah (again) and refactor Moth Week and Beer Day (#55532)
* Fix Hanukkah (again) and refactor Moth Week and Beer Day
* Remove unnecessary changes
* Fix Hanukkah (again) and refactor Moth Week and Beer Day
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* 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.)
* pass_flags handling refactor + rewrites a part of projectiles for the n-th time
Co-authored-by: silicons <2003111+silicons@users.noreply.github.com>
* Fix nth week holidays (#55364)
fix: Holidays appearing on the nth day of the month like Thanksgiving will work now.
tweak: Columbus day is now called Indigenous Peoples' Day.
* Fix nth week holidays
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>
* Merge pull request #55268 from AutomaticFrenzy/patch/docs-from-github-wiki
Migrate some docs from the GitHub wiki into the repository
* Migrate some docs from the GitHub wiki into the repository
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
* Fixes incapacitating sleep test failure, general test touch ups. (#55196)
Fixes the random incapacitating sleep test failure
Tests now provide the option to use a custom turf, by default uses plasteel tiles instead of space
Tests now reserve turf instead of just using a corner in CentCom (which had unaccounted for tiles)
* Fixes incapacitating sleep test failure, general test touch ups.
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Fixes#55112 - Swapping items no longer eats things (#55122)
Quick swapping items no longer hides them in the mobs contents
* Fixes#55112 - Swapping items no longer eats things
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Moves grown food to newfood (#55040)
Moves grown food to newfood
Gives trash element support for callbacks for item creation override
* Moves grown food to newfood
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Fix nearsighted glasses being able to be neutered with quick swap (#54916)
You can no longer quick swap another pair of glasses with nearsighted to see perfectly.
Currently you can:
Choose nearsighted
Quick swap to another pair of glasses
See perfectly
This wasn't fixed by Shaps' changes since those call dropped, which do not run through unequip code.
I know one of you is abusing this, show yourself!
* Fix nearsighted glasses being able to be neutered with quick swap
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Cache values in TEST_ASSERT_EQUAL and TEST_ASSERT_NOTEQUAL (#55074)
Previously if a comparison assertion failed, it would re-evaluate the a and b parameters, which could lead to confusing output if the values passed are not fixed or are impure.
* Cache values in TEST_ASSERT_EQUAL and TEST_ASSERT_NOTEQUAL
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* 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>
* 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>
* Canister max. pressure capacity display fix (#54600)
Atmos canisters now display their correct max. pressure capacity. Game code always expects kPa, code for SI-prefix-generation only expects the base unit (here: Pa), so the displayed value was always off by the factor 1000.
* Canister max. pressure capacity display fix
Co-authored-by: MadMedicineMan <65600900+MadMedicineMan@users.noreply.github.com>
* Teleporter machinery now auto links with each other, removes screwdriver + wirecutter interaction (#54325)
Teleporter machinery will now automatically link with each other. This makes the screwdriver + wirecutter interaction redundant, so it has been removed.
* Teleporter machinery now auto links with each other, removes screwdriver + wirecutter interaction
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Organ removal ends metabolizing reagents in the organ (#53619)
If an organ contains reagents it will end metabolizing them on removal.
* Organ removal ends metabolizing reagents in the organ
Co-authored-by: NightRed <nightred@gmail.com>
* Fix chemicals not recognizing end of metabolization (#53550)
* Fix chemicals not recognizing end of metabolization
* Make generic to all organs
* Fix chemicals not recognizing end of metabolization
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Unit tests for expose_mob (#53498)
This is a set of unit tests for expose_mob.
This tests that INGEST, TOUCH, VAPOR, PATCH, INJECT are triggering on standard exposure methods.
* Unit tests for expose_mob
Co-authored-by: NightRed <nightred@gmail.com>
* Performing a head transplant will now properly preserve the appearance. (#53494)
* Performing a head transplant will now properly preserve the appearance.
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
This changes the has_reagent check to work with stomachs.
Several supporting procs have been added to fully support this behavior.
end_metabolization will work as expected again
expose is working with INGEST items again
on_mob_add working as intended
on_mob_life has been reviewed and worked over.
Health Analyzers now show stomach contents, same with the medical kiosk.
Included the unit test to validate reagent checks.
Unit tests for the new procs on mob
Co-authored-by: NightRed <nightred@gmail.com>
* Change signature of BINARY_INSERT to require the full type path, add test (#53217)
BINARY_INSERT used to only take typepaths like/this. Now, it expects them to be /like/this, to be more consistent with ther est of the code.
Adds documentation to COMPTYPE.
Adds a test for BINARY_INSERT.
* Change signature of BINARY_INSERT to require the full type path, add test
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Confusion will no longer continue to confuse after being cured (#52286)
* Confusion will no longer continue to confuse after being cured
* Grammar comment fix
* Move to status effect
* Remove test per request
* Make confusion a status effect, confusion curing now completely neuters the confusion
* set_confusion changes, get_confusion
* Fix confusion going down twice per tick
* Change strength = to proc
* Move procs to status_procs
* Confusion will no longer continue to confuse after being cured
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* keybind signal support, ported from TGMC
* Thank you linter
* remove unused and extra defines
* move signal defines up and fix emote keybind runtimes
* Apply suggestions
* Update keybinding.dm
* Missed this one in the upstream merge
* Ignore keybindings without names
* back to the OG
* Update living.dm
* Update living.dm
* got it
* trailing newline
* Update code/datums/keybinding/living.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
* Added si unit formatting proc, and unit tests for it
* Added canister examine note for what their max pressure is
* Fixed the siunit proc comment abit
* Add tests for outfits, fixes families outfits and Syndicate Ship Captain
* Switch out captain uniform from tacticool to combat
* Consistent styling
* My weakness is I'm a pedant
* Check left and right pockets, and fix armored bounty hunter
Includes a unit test because TDD is good.
Why It's Good For The Game
It makes transport through space with friends much more annoying than it should be.
Changelog
cl
fix: Fixed a bug where when teleporting naturally (such as going through a z-level in space), if you were pulling someone that was then pulling another person, only you and the person you were pulling would make it through.
/cl