* 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>
* Cleans up an unused var added for smugglers satchels (#53501)
* Cleans up an unused var added for smugglers satchels
Co-authored-by: msgerbs <msgerbs@users.noreply.github.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>
* Fix bicon, fix asset hashes being incorrect. (#53441)
icon2html will now always show the south direction unless passed a specific direction to show. Null can be explicitly passed with an atom to use the atom's direction. This is to work around icon() returning a blank icon if passed a direction that the icon doesn't define, instead of defaulting to south like the client does. This should also cut down on the number of assets generated by shift clicks
If icon2html is given an atom with an invalid icon state, it will use the atom's compile time icon_state, so smoothed icons can show their mapper's helper icon instead of the entire dmi.
Asset cache will now copy files to disk before md5ing them, to deal with byond not always returning the correct md5 for rsc references.
* Fix bicon(icon2html) showing full dmis, fix asset cache hashes being incorrect.
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Fixes admin tickets displaying as improper nouns (#53485)
Admin tickets were having "the" prepended to them when displayed in the status tab, because ahelps are treated as datums and BYOND likes to help out and treat them as nouns when printed. This resolves that.
* Fixes admin tickets displaying as improper nouns
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Mecha followup one (#53470)
fixes#53384fixes#53327
fixes a bug where mechs could move too fast
fixes cooldown being inconsistent
makes strafe behavior better
fixes lights being very small
fixes#50639fixes#47373fixes#43605
Moved some code to the correct spots and did the varedit bitfield thing
* Mecha followup one
Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
* Fixes the arena shuttle (#53458)
This splits the actual arena of the arena shuttle into its own map file that is loaded onto it's own z-level. The old method of including a non-shuttle area in the shuttle map file doesn't work with the current shuttle loader. It also fixes shuttles being loaded twice when purchased which created problems with landmarks being left behind in the reserved z-level.
* Fixes the arena shuttle
Co-authored-by: YPOQ <30683121+YPOQ@users.noreply.github.com>
* crystal invasion balancing and fixes (Now with extra rework!) (#53399)
Refractored code so that the more_portals() proc gets called by the event instead of a CALLBACK
Balanced mobs spawn from portal and how much damage they deal
Fixed grammar stuff on crystal consume announcement
Ligthing aoe projectile now have a no_stun version for the boss rank
Lowered time needed to use the crystal stabilizer to 7 second total
Crystal mobs have TRAIT_TESLA_SHOCKIMMUNE to prevent boss from hurting himself and the other crystal mobs
Added check at start of event for presence of the supermatter crystal
New: Revamped event a bit, now instead of random portal appearing a random, there will be from 2 to 5 main portals and around those 6 more portals will appear; after that centcomm will announce the position of those new portals. Now the players will have to close those main portals before being able to stabilize the crystal because there will be a shield around it powered by those portals. Everything else will be the same (like how to close the portals and stabilize the crystal)
* crystal invasion balancing and fixes (Now with extra rework!)
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Reduces the light range of all beam (lasers, disablers, emitter shots) projectiles (#53328)
* Reduces the light range of all beam (lasers, disablers, emitter shots) projectiles
Co-authored-by: Shirbu <maelstromdesu@gmail.com>
* Moves over cakes to newfood and transfers reagents when crafting (#53316)
* Moves over cakes to newfood and transfers reagents when crafting
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Hardsynced from upstream.
* fix devices sprites on layer 1 and 5 (#53382)
This atomized PR fixes the sprites for layer 1 and 5 of the following devices:
-scrubber
-unary vent
-passive vent
-portable connector
-filter filters don't work well on layer 1 and 5, so they get the axe
-mixer mixers don't work well on layer 1 and 5, so they get the axe
The how:
instead of just moving the node, we'll move the entire thing because sprites bad and can't fit
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Merge pull request #53397 from Dennok/patch-40
Set different layers to different piping layers
different layers to different piping layers
pipes should be displayed in a fixed order
better pipe visuals
* Set different layers to different piping layers
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Tweak passive_gate (#53375)
Make some more precise description.
Increased max out limit pressure settings to 100 atmospheres, since volume_pump limited 9000 kPa (~90 atmospheres)
* Tweak passive_gate
Co-authored-by: Dennok <Deneles@yandex.ru>
* Nanite Increased Diagnostics Program (#53157)
Makes nanite reduced diagnostic function baseline and adds new increased diagnostics program
* A better way
* Increased Harmonic Nanite research costs by +1000/+1000
* Harmonic nanite passive boost.
* Makes nanite reduced diagnostic function baseline and adds new increased diagnostics program
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Zombies can be decapped again, un-nerfs esword/armblade/etc wounding power, improvised cauterization tweaks (#53349)
#53117 introduced a few minor bugs with the health system, in this case, zombies being un-decappable due to an oversight in the head/chest dismember requiring full death rather than either full crit or death. As zombies (or anything with TRAIT_NODEATH) can only reach hard crit and not death, this meant they couldn't be decapped/disemboweled. This fixes that. It also fixes krokodil addict zombies being unwoundable due to not having flesh or bone traits.
Next up, I originally set really high negative wound bonuses for high damage weapons like eswords and armblades since they already had high damage and dismember power by themselves. Now that dismembering is tied to wounding power (and I have a better sense of balance values), these harsh nerfs are no longer needed or wanted, and you can actually dismember people worth a damn with an esword again. I also punched up the wounding power of a few other weapons like saws and scalpels to less awful (but still not optimal) against armor.
Attacks currently have an 80% chance to hit the limb you're aiming at, which can make destroying a limb a complete pain even if the target is already down and out. As such, attacks against prone targets now have a 90% chance to hit the targeted limb, cutting the miss rate in half.
Lastly, trying to cauterize bleeding wounds with improvised tools (anything hot that isn't a cautery) is now slightly less efficient than a real cautery and requires an aggro grab on the patient to apply. No more trying to cauterize the person you just attacked with an esword because you were on help intent!
* Zombies can be decapped again, un-nerfs esword/armblade/etc wounding power, improvised cauterization tweaks
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@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>
Makes acid levels a component.
Merges the acid effect object into the component.
Reworks acids decay rates slightly.
Rebalances xenos acid spit so that they can still melt through walls.
Misc. associated changes:
Adds defines for a lot of the acid associated constants.
Documents clean types and adds CLEAN_TYPE_ACID
Adds and implements a return bitflag for COMSIG_COMPONENT_CLEAN_ACT
Adds a looping sound for acid.
Makes /atom/proc/acid_act return a boolean.
Fixes waterclosets creating a new reagent holder datum every time they are used.
Removes waterclosets regenerating reagents on-use and restricts their reaction volume to 5 units.
Adds and implements a couple reagent signals.
Renames a few vars so Rohesie can stop telling me to rename more vars.
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* fix discord verification instructions (#53467)
these quotes kept getting selected because ie is a microsoft product and microsoft fucking hates their users so they do that thing where selection snaps to word boundaries
* fix discord verification instructions
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Mafia achievements can no longer be earned in debug games (#53446)
* Mafia achievements can no longer be earned in debug games
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Gives the Chef a Beacon to pick their ingredient box (#53146)
* adds ingredients beacon
* starts the chef off with an ingredient beacon instead of a box
* Update boxes.dm
* Revert "Update boxes.dm"
This reverts commit b89fadab04.
* optimizes the list thingy (thank you, Floyd)
* Fixes a typo in one of the comments
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* fixes a definition
* moves ingredient box/beacon code to miscellaneous instead of boxes
* adds the random option
* adds a cute little bit of 'flavor' text... get it?
* Revert "adds a cute little bit of 'flavor' text... get it?"
This reverts commit a6541bf220.
* adds references to a new company and a bit of fun text
* moves randomFood out of the for loop
* Revert "moves randomFood out of the for loop"
This reverts commit e2c5171fce.
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Gives the Chef a Beacon to pick their ingredient box
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Fix Cargo tablet bounty programs not being able to print the bounty form (#53365)
Fixes the printer cool down system that started the printer cool down when you press any button??? meaning that it would always fail since the cool down was reset after the button was clicked. The cool down is now only reset until AFTER the print operation.
Also adds a message that lets you know if the print cool down is not over yet, so it doesn't fail without feedback.
* Fix Cargo tablet bounty programs not being able to print the bounty form
Co-authored-by: Jack7D1 <59462654+Jack7D1@users.noreply.github.com>
* adds better grass sprites (#53421)
adds better grass sprites, ported from eris
converts fairygrass into those sprites too
makes "plating" grass and jungle grass smooth with cool stuff on the edges
adds a sandy dirt tile, removes the old "sand" icon which was just puke colored noise
* adds better grass sprites
Co-authored-by: Fikou <piotrbryla@onet.pl>
* Wild Mutation crops now carry over traits from the parent plant. (#53413)
This results in wild mutation carrying over possible traits from parent to child, in a way that will also be displayed by the plant analyzer.
This means if you gene splice a parent plant and it wild mutates into a different species, the wild mutation will take the trait genes of the parent, with none of the reagents as reagents are specific to the species in most cases, but can be bred back in via cross-pollination.
* Wild Mutation crops now carry over traits from the parent plant.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Allows for hostile mobs to perform charge attacks, and adds a giant tackling lobster. (#52692)
Example video: https://youtu.be/EAVuPtJ_kFM
This adds a new mob, the lobstrosity. It's a upper-caves level icemoon mob, created as a genetic combination of a lobster, a crab, and a shrimp, let loose on the horrific Alaskan hellscape that is the icemoon. It's best feature, however, is that it makes use of a new feature of simplemobs, charging. Any hostile simplemob can be configured and customized in a uniform way in order to become a charger, giving it a basic leap attack, that will disable the user if they find themselves crashing into an unpassable turf, but otherwise lands a knockdown on the attacking target. Compensate of this, charging mobs will also gain a very noticable tell, where they shake a moment before they actually perform the charge to better signify that they're rearing up for a melee charge.
I'm not exactly sold on using Shake() for the visual tell, but I'm not quite sold on a visual to showcase that it's happening, so I'm looking for feedback on that specifically.
Additionally, there is a bit of weird movement that I've yet to really get ironed out first but for the most part it's completely functional.
After some feedback, there's now a reddish, lavaland-colored lobster, as well as an arctic themed, Alaskan lobster
So on a massive tangential leap of logic, one thing ActionNinja brought up in a recent discord rant was that there are so many mechanical parts of SS13 combat that completely lack a tell whatsoever, or the tell is so quick you can blink and you'll miss it in a heartbeat. So I turned to the greatest enemy attack feedback mechanic that any game has ever seen: the Legend of Zelda Bull.
...also I've been looking for a tasteful way to get this sprite in-game for awhile now but wanted to really iron out a unique mechanic to go alongside it that would make it feel a little less bullshit to fight against.
ArcaneMusic + Kryson on Sprites
* Allows for hostile mobs to perform charge attacks, and adds a giant tackling lobster.
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
* Add missing left parenthesis to 'View tracked playtime' output (#53391)
* Add missing left parenthesis to 'View tracked playtime' output
Co-authored-by: Tad Hardesty <tad@platymuus.com>
* Avoid resizing chat to nothing in the Fit Viewport verb (#53393)
* Avoid resizing chat to nothing in the Fit Viewport verb
Co-authored-by: Tad Hardesty <tad@platymuus.com>
* Swarmers can no longer break walls with big pressure differences. (#53323)
* Fixes#53301, Swarmers can no longer break walls with big pressure differences.
Co-authored-by: Jack7D1 <59462654+Jack7D1@users.noreply.github.com>
* Replace two instances of "peice" with "piece" (#53431)
* fixes a number of typographical errors within the /tg/station13 codebase
Co-authored-by: Emmanuel S <mrdoomboyo@gmail.com>
* Janiborgs can now repair damaged hull platings (#53183)
The "plating repair tool" has been added to the game in the form of a
printable upgrade for janiborgs. It's a subtype of the cautery that can
repair burnt or damaged hull platings, allowing floor tiles to be
placed over them once again.
The upgrade that adds it to a janiborg's list of tools can be printed
once the Cyborg Upgrades: Utility tech node is researched.
Janiborgs get floor tiles (and a crowbar), but have no way of dealing
with burnt platings. Thus, what ends up happening is that, after fixing
some flooring after a minor explosion, you'll often be left with one or
two ugly, OCD-triggering untiled spots on the floor that you can't put
a floor tile over because you don't have a welder. What makes these
spots even more infuriating is that it would actually be BETTER if they
had been broken down to just being space-exposed rods, because then you
COULD place a floor tile on their tile.
* Janiborgs can now repair damaged hull platings
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Font awesome is no longer a legacy asset (#53370)
old goonchat was the only thing that needed this.
* Font awesome is no longer a legacy asset
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Makes the stomach important part of eating (#53228)
This puts food you eat in to the stomach.
If you do not have a stomach you can not eat, if you try to swallow anything you will spew it out.
Changes to surgeries:
Stomach pump can now be done on the living, and pushes out the reagents in the stomach.
Blood filter is a new tool and cleans the reagents out of the body.
This also makes it so that reagents that do not metabolize can accumulate in the stomach reducing how much food you can eat.
* Makes the stomach important part of eating
Co-authored-by: NightRed <nightred@gmail.com>
* Fix and tweak pressure valve (#53362)
* replace pump_gas_to to release_gas_to
release_gas_to Releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure.
* Set max target_pressure to ONE_ATMOSPHERE*50
Since this not real pump and it pump gas based on air.pressure, why we cant set any limit?
* remove double update_icon_nopipes()
* Some more precise description
* Some more pressure
Replace pump_gas_to to release_gas_to
release_gas_to releases gas from src to output air. This means that it can not transfer air to gas mixture with higher pressure.
Increased max trigger pressure settings to 100 atmospheres, since volume_pump limited 9000 kPa (~90 atmospheres)
Bugs is bad.
Atmos is good.
* Fix and tweak pressure valve
Co-authored-by: Dennok <Deneles@yandex.ru>
* Fix Alt Clicking opening up a window and add back some object verbs to the browser stat panel (#53369)
Fixes some more issues with browser stat panel
- Alt clicking items in the listed turf tab doesn't open up a popup
- Toggle suit sensors button missing
* Fix Alt Clicking opening up a window and Add back some object verbs to the browser stat panel
Co-authored-by: Couls <coul422@gmail.com>