Commit Graph

33195 Commits

Author SHA1 Message Date
Timberpoes e7ff79bcbe Feex (#55144)
For whatever reason we hardcoded the health value for drills at 200 brute damage before they can gib. 200 brute damage was picked as it was double the max health of /mob/living/carbon/whatever and double the max health was like, the cap on brute damage when someone is really, really, really, really dead.

Enter simplemobs. Their max health is regularly under 100, which means a hardcoded value of 200 brute damage to trigger gibbing effects is bad. Not that it matters anyway, because simplemobs also brute damage cap at maxHealth instead of maxHealth * 2 so the only simplemobs that could be gibbed by mech drills are those with 200 or more health.

This has been changed. Simplemobs now cap out at maxHealth * 2 damage, in line with all other /mob/living while drill code has been changed to check for maxHealth * 2 when gibbing instead of a hardcoded 200.
2020-11-25 13:44:01 -08:00
Bobbahbrown 1b0b13a737 Replace tgalert with tgui_alert (#55157)
Adds TGUI-based alerts to replace the old tgalert system. Replaces all uses of tgalert with tgui_alert except for one, the 'Report Issue' button, as people were (understandably) concerned that this button using tgui will prevent a tgui bug from being easily reported.

These windows have a nice little progress bar indicator of how much time they have left, and will automatically close themselves after this time elapses.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-11-25 22:46:19 +02: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
NightRed fb51b24d21 Humans have more complicated body temperatures (#54550)
This changes how carbon/humans stabilize body temperature, and changes how damage and wounds are applied based on temperature.

Humans now have a core body temperature along with body temperature. The core temperature is used for natural stabilization and what viruses like fever and shivers target by raising or lowing the core temperature of the mob.
The standard body temperature still exists and acts exactly the same for most items at this time but is now treated as surface temperature in humans.

Damage from body temperature for humans is now based on the core temperature instead of body temperature now.
Humans will now receive burn wounds when the body (surface) temperature is to high for to long.

This causes you to see alerts for the area temperature before you take damage in most cases improving visibility of dangerous situations.
2020-11-24 22:37:36 -08:00
ArcaneMusic bf39caca6a Refactors Pastries into newfood. (#54996)
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
Co-authored-by: Floyd <Floydje123@hotmail.com>
2020-11-24 16:18:10 -08:00
Jared-Fogle cf9ae02e39 Fixes #55112 - Swapping items no longer eats things (#55122)
Quick swapping items no longer hides them in the mobs contents
2020-11-24 14:54:01 -08:00
Coffee 0907752ebd Fixes lightbulb injections (#55132)
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
2020-11-24 13:27:55 -08:00
Arkatos1 1633a13609 tgui: Safe (#55109)
This PR refactors safes and brings their UI from html to tgui based on the PR above.

Paradise has more features for safes than us, and these features were not ported along to accommodate feature freeze. Only our current safe features settings were refactored, for example number of tumblers stays 2, no extra safe information on examine and safe codes are not generated on paper for command.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
2020-11-24 18:07:08 +02:00
Timberpoes 191b3cde38 Prevents mecha drills from stacking do_afters on the same target. (#55145)
* Feex

* Feex 2.0 Feexlectric Feexaloo

* Whitespace purge
2020-11-24 21:27:42 +08:00
Yenwodyah d214170810 make sure slowdown effects get removed when items are unequipped (#54947) 2020-11-24 18:21:01 +08:00
antropod 97a89f75c2 Detect if ghost reentered the brain (#54975) 2020-11-24 18:19:14 +08:00
ArcaneDefence 0940ea6a70 This makes me sad (#55007) 2020-11-24 18:17:56 +08:00
Bond a29c2f6754 Makes APCs not cause runtimes when placed in space (#55045) 2020-11-24 18:17:08 +08:00
zxaber 9201846090 Fixes tool implant tools being storable in boxes (#54914)
* Moves storing tool implant items to use the drop hotkey rather than a dropped item event

* de-debugging
2020-11-24 18:14:44 +08:00
Ghom a786c73988 Fixing the point emote being both usable and unusable (#55063) 2020-11-24 18:11:07 +08:00
prodirus cb6f29808d one character fix (#55067) 2020-11-24 18:01:54 +08:00
cacogen 4a339b1f41 UNIQUE_RENAME respects labels (#55121) 2020-11-24 17:52:38 +08:00
Ryll Ryll 1f1bddfe4f Foam darts and other unembeddable bullets will no longer leave ghost shrapnel (#54994)
Projectiles are assigned the ability to try embedding by the presence of a shrapnel_type variable being set on them, whether or not they actually have a set of embedding stats in their embedding var. By default, children of /obj/projectile/bullet have a shrapnel type set to a generic embedded bullet item, including things like foam darts and lollypop projectiles which shouldn't be able to embed (and certainly not embed as a bullet). While they had their embedding vars set to null, they still had their shrapnel_type set to the embedded bullet type, meaning shooting a person with a dart gun or whatever would leave a failed shrapnel item on the ground where they weren't supposed to.

This fixes that by requiring both a defined shrapnel_type AND a defined embedding var for the embedding stats. Any projectiles without both won't be able to try embedding. I also manually put 'shrapnel_type = null' on any bullet subtypes with embedding = null just to be safe and for consistency.
2020-11-23 19:35:04 -08:00
Fikou c48c3d9716 shuttle catastrophe now cant trigger if it already happened (#55114)
Shuttle catastrophe now cant trigger if it already happened
2020-11-23 14:08:39 -08: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
Jared-Fogle 22b05cc3d1 Reload verbs when the client goes into a new mob (#55106)
Try this experiment at home:

    1.Ctrl shift click your ghost
    2.Notice that you still have the Ghost tabs, and you don't see OOC > Ghost, uh oh.

This happens for more than ctrl-shift-clicking, it happens a lot with event mobs.

This reloads verbs on /mob/Login, aka when the client goes into a new mob (or when they reconnect).
2020-11-23 13:47:53 -08:00
ArcaneMusic b29a686f92 Hygienebots de/construct and behave like the other simplebots. (#55089)
Adds simple deconstruct steps to the hygiene bot assembly, as well as adds a simple crafting menu option to craft one.
Also, corrects an issue with hygienebots not needing to be opened in order to be emagged. They now need to be emagged to be opened with a screwdriver, then emag the open panel in order to emag the robot, just like every other robot.
2020-11-23 13:44:18 -08:00
Maurukas a5c2bd12f7 Fixes cryogenics infinite gas deletion (#55068)
* cryo fixes and cleanup

Move magic numbers to defines
Fixes cryo deleting 100L of gas each time it transfers
Remove unneeded/unused variables
Moves gas all gas consumption to process_atmos
delta_time in process_atmos

* simplify consume_gas
2020-11-23 13:40:57 -08:00
ArcaneMusic 72aafb5f72 Makes it so living crate creatures can pass plastic flaps as god intended. (#55088) 2020-11-23 11:43:26 -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
zxaber d8c382a0ed Cell chargers now pull from the grid's surplus rather than their room's APC cell (#54989)
About The Pull Request

As the title says.

    Creates a new proc, use_power_from_net() that attempts to pull power from the grid (by adding the amount needed to the APC's powernet load), and returns the amount gathered if there was enough surplus to do so. This bypasses the APC's internal cell for power drawn this way.

    Changes cell chargers to use this new proc for charging a cell. The charger machine still uses some power from the APC, set to 1% of it's max cell charging rate, for machine-related power costs. I'm not deadset on that number, I just needed to start with something. To be clear, this 1% is to simulate running the cell charger's circuitry; all of the power for the cell it's charging is 1-to-1 coming from the powernet.

    This does not subvert the original PR's purpose; cells are still drawing as much power from the grid as they charge with.

Why It's Good For The Game

Fixes cell chargers breaking rooms after the prior cell charger fix. The load is now on the grid, and it being surplus means that it (probably) won't actually powersink anything.

Fixes #54919 by taking a different approach that entirely avoids the issue.
2020-11-23 11:35:58 +01:00
Mickyan 029eab1f58 Fixes photo frames appearing empty (#55083) 2020-11-22 20:06:51 -08:00
ArcaneMusic f3d28c2d89 Fixes paystands sending signals when attached with a signaler. (#55092)
Corrects how paystand's interact with their signalers by actually using the correct proc, and signaling out of the machine.
Not much else to say here.
2020-11-22 18:16:36 -05:00
spookydonut 0383c19ac2 Minor refactor to signal handlers to remove potential sleeps (#54649)
About The Pull Request

These are legacy sleepers, the remaining 12 are non-trivial to fix.
2020-11-23 09:49:12 +13:00
ArcaneMusic 245b29599a Properly differentiates the nanodrug and nanomed vending machines. (#55069)
This repaths the nanodrug and nanomed vending machines, as well as visually tweaks the nanodrug vending machine from the nanomed vending machine, in order to
A) Fix the correct vending refills working on the correct vending machines.
B) Not make 2 different vending machines with different contents sell look identical.

Allows for visual clarity between 2 distinct, different vending machines. I got lazy and didn't do it the first time, and now they've been confusing players, apparently.
Additionally, makes them actually deconstruct able and constructible as a result of the fix to the circuit board.
2020-11-22 10:25:24 -08:00
tattlemothe 1e3fdc9f5b ghosts can no longer empty the gibber (#55021)
Ghosts could use the right click menu to empty a gibber. This removes that.
2020-11-22 10:01:41 -08:00
Ghom ed339e295b Fixing the arena shuttle being unbuyable if medals are disabled. (#55066)
Fixed the arena shuttle not being unlockable if medals are disabled.
2020-11-22 10:01:10 -08:00
Jared-Fogle ac68b14018 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!
2020-11-22 09:54:02 -08:00
Jared-Fogle 2cec1acfbd 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.
2020-11-22 09:52:20 -08:00
ArcaneMusic 961fdeaaea Typo fix and bug fix (#55075)
Replica pods were calling CanUse as opposed to canUseTopic when harvesting seeds, and since CanUse hinges on the machinery being usable and powered, it was preventing the harvesting of replica pods when depowered as expected. The only thing that should be needed for harvesting trays should pretty exclusively be the standard level of adjacency.
also corrects a line of spelling.

Fixes a bug, corrects some grammar. Makes the world a better place.
2020-11-22 09:50:57 -08:00
ArcaneMusic 8276f4140f Graveyard graves now sound like they're being dug open/closed. (#55080) 2020-11-22 02:43:07 -08:00
ArcaneDefence 1c25c6f92f Makes the foodcart actually become full (#55041)
The chef's food cart can no longer store an infinite amount of food stuff.

Oh also foodcarts support newfood now
2020-11-22 02:04:00 -08:00
Fikou 17d7d2d0df moves dough to newfood (#55039)
* moves dough to newfood
2020-11-22 02:01:58 -08:00
XDTM 027aa228d5 Adds 'off' icons for nanite machinery (#54902)
* Adds 'off' icons for nanite machinery

* overlays

* overlays II
2020-11-21 17:29:20 -08:00
Ghom 35b8476162 Fixing addictions not going away on no-metabolism trait gain. (#54797)
Also addiction_list is null by default, considering the wide majority of reagent holders don't even get addicted to stuff.
2020-11-21 04:43:30 -03:00
Ghom 27d0e32b47 minor material_container args/vars refactor and Mk-honk shoes peeve. (#54863)
My original intention was just fixing an issue with the Mk-honk banana shoes but, considering I didn't want to add two new variables to a component with already lot of args and lengthy AddComponent() calls in term of text, I had to merge some TRUE/FALSE variable/args into the breakdown_flags bitfield (now named mat_container_flags) in the process.
2020-11-21 04:37:07 -03:00
Timberpoes 5ef585b77c Machines no longer dump out their component_parts when qdel'd. (#55026)
Machines no longer vomit out their component parts when qdel'd and instead only vomit out their actual inventory contents.

Doing this uncovered another issue - Random vending machines will return INITIALIZE_HINT_QDEL and then attempt to qdel their circuits, which are still type paths and not initialised atoms yet (circuit was previously nulled by dump_contents, but this no longer happens in dump_inventory_contents). These circuits have been set to null appropriately.
2020-11-21 04:28:41 -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
Timberpoes 0785f2b6d9 Fix Xenomorphs not being able to generate plasma for their abilities. (#55051)
Fixes #55006

#54632 added some code to handle organ processing, including a big ol' global list which defines the organ processing order.

Downside to this is that it didn't take account of 5 year old Xenomorph code where the organ slots weren't defines. As a result, `/mob/living/carbon/proc/handle_organs()` would never call the `on_life()` for Xeno organs as they weren't in the big ol' global list.

I created defines for Xeno organs, added them to the global list and updated the organs with the new defines. As a result, Xeno plasma vessels now have their `on_life()` proc fired once again and generate plasma.

In local testing I was generating the expected amount of plasma on and off weeds and was able to successfully evolve up to a Queen.
2020-11-20 21:43:30 -05: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
Ghom c5ab5b4882 Webedit fixing "you cant put stuff in someone's hand with stripping menu" (#55029) 2020-11-20 19:02:47 +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
Ghom 7470e5766f Web edit fixing "Admins can't give spiders, and xenos common" (#55034)
About The Pull Request

See changelog.
Why It's Good For The Game

This will close #54987, close #50204.
Changelog

🆑
admin: Admins now have the option to remove a language from the blocked_languages list when granting it to a mob through the language menu.
/🆑
2020-11-20 09:12:17 +01:00
tralezab 3c1f235e9f AIs can now select portraits as their display (#53994)
A new option has been added to the AI display radial menu alongside random, "Portrait"

It opens a small menu that lets you peruse all of the portraits and select one as your display.

This can let avid artists draw exactly what they want their AI to be like, and not-so-avid artists to bring tears to my eyes.
2020-11-20 05:37:08 +02:00