Commit Graph

662 Commits

Author SHA1 Message Date
Mothblocks
0f3c4e51f7 Modernizing Radiation -- TL;DR: Radiation is now a status effect healed by tox healing, and contamination is removed (#62265)
Implements the Modernizing radiation design document ( https://hackmd.io/@tgstation/rJNIyeBHt ) and replaces the current radiation sources with the new system, as well as replacing/removing a bunch of old consumers of radiation that either had no reason to exist, or could be replaced by something else.

Diverges from the doc in that items radiation don't go up like explained. I was going to, but items get irradiated so easily that it just feels pretty lame. Items still get irradiated, but it's mostly just so that radiation sources look cooler (wow, lots of stuff around going green), and for things like the geiger counter.

Instead of the complicated radiation_wave system, radiation now just checks everything between the radiation source and the potential target, losing power along the way based on the radiation insulation of whats in between. If this reaches too low a point (specified by radiation_pulse consumers), then the radiation will not pass. Otherwise, will roll a chance to irradiate. Uranium structures allow a delay before irradiating, so stay away!
2021-11-01 04:20:39 -03:00
John Willard
88d7dbfc10 removes double spaces before symbols (#62397)
This can apparently cause some bugs on occasions, so I thought I might as well try to kill them all.
2021-10-28 19:25:50 -03:00
tralezab
51705fcd9d Adds The Secret Brainwashing Technique-Chip (#62295)
Adds a skillchip found in maint that lets you put brains in washing machines, and scrub em back into good health. Brains now get maximum damage if put in a washing machine OTHERWISE.

VERY heavily inspired by this video:
https://www.youtube.com/watch?v=88po7PY14E8

> I believe having a brain successfully washed should give its brainmob an achievement for exposure of this feature.

can be done in a separate pr
2021-10-24 19:47:20 +01:00
MMMiracles
3216b3c7cb Adds a cool pair of salesman shades to the maintenace loot pile (#62141)
Adds a pair of tinted glasses to the maintenance loot pool that has a unique effect when the wearer is at low sanity. Also adds a signal that sends the sanity amount of a mob every time SetSanity is called.
2021-10-20 13:14:13 -04:00
Mickyan
37c6f90013 Nearsighted quirk lets you pick the look of the glasses you spawn with (#62145)
expansion: Nearsighter quirk now lets you pick the look of your prescription glasses from the character preference menu
imageadd: Added thin prescription glasses
2021-10-19 17:51:57 -04:00
itseasytosee
f51000f506 Repaths knives to not all be children of the kitchen knife. (#62035)
Basically makes the code less dumb, took a long time. I worked hard to make sure there were no unintended effects (minus the fact you can no longer get spoons from the experimentor). No player-facing effects

I thought it looked weird that all cultist and combat knives were subtypes of the kitchen knives
2021-10-15 15:28:01 -07:00
Seris02
694c2999b0 makes it so the sanitize_hexcolors' default is 6 characters rather than 3 and gets rid of color_legacy (#61980) 2021-10-15 11:48:55 -07:00
Ryll Ryll
b3f176998d Buffs eye contact, adds "Shifty Eyes" quirk (#61711) 2021-10-14 00:19:27 -07:00
Ghilker
95c8e00af7 cleanup _HELPERS/_lists.dm and all the necessary files (#61827)
Bring _HELPERS/_lists.dm to latest standards by:
-Adding proper documentation and fixing existing one
-Giving vars proper names
-Procs now use snake case as per standard (many files that use those procs will be affected)
2021-10-12 14:48:51 +01:00
Watermelon914
d15b305527 Refactors the list datatype to support composite lists. Adapts a lot of circuits to be able to properly use composite lists. Adds the dispenser shell (#61856)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Colovorat <35225170+Colovorat@users.noreply.github.com>
2021-10-06 22:51:36 -07:00
Hulkamania
b6dc1701c6 Mime Fan vs Clown Enjoyer (#61818)
Changes the flavor of the clown fan quirk to something more appropriate
2021-10-02 15:57:16 +01:00
Y0SH1M4S73R
5fc3aa5b3d Adds Animation and Filter Components for Admin Circuits (#61766)
Adds a selection of components for animating atoms and manipulating filters.
Makes animating atoms and filters using circuits more intuitive.
Also Watermelon planned to make these but was too busy with other circuit QOL stuff and asked me if I would be willing to do it.
2021-10-01 21:00:02 +01:00
Mothblocks
f13dd0695d Spiders/carp will now pull/move water/welding fuel tanks/canisters slower and won't be able to attack stationary atmospherics equipment (#61616)
Adds 2 new elements, one for slowing down pulling of dangerous objects (dispenser tanks and canisters), and one for preventing hostile attacking of elements in a typecache.

Also updates the obj_flags bitfield 'cause I thought I was gonna use that, but I didn't.

Adds these elements to spiders and space carp (from space dragon)
2021-09-24 04:07:03 +01:00
Tim
e26a859016 Mapping DLC - Random Spawner Pack [MDB IGNORE] (#60522)
First off, I am aware of the Feature Freeze for this month. This PR was initially started in #60401 about a month ago to break the changes into smaller PRs. The end result for this PR is a poor man's attempt at roguelike procedural generation. Enjoy!

Link to the README for how the new spawner system works.

Added the following new random mapping spawners:

pen, crayon, stamp, paper, pamphlet, briefcase, folder, wardrobe closet, wardrobe closet colored, backpack, narcotics, permabrig_weapon, permabrig_gear, prison, material, carpet, ornament, generic decoration, statue, showcase, paint, tool, tool_advanced, tool_rare, material_cheap, material, material_rare, toolbox, flashlight, canister, tank, vending_restock, atmospherics_portable, tracking_beacon, musical_instrument, gambling, coin, money_small, money, money_large, drugs, dice, cigarette_pack, cigarette, cigar, wallet_lighter, lighter, wallet_storage, deck, toy, toy_figure, booze, snack, condiment, cups, minor_healing, injector, surgery_tool, surgery_tool_advanced, surgery_tool_rare, firstaid_rare, firstaid, patient_stretcher, medical supplies, crate, crate_abandoned, girder, grille, lattice, spare_parts, table_or_rack, table, table_fancy, tank_holder, crate_empty, crate_loot, closet_private, closet_hallway, closet_empty, closet_maintencne, chair, chair_maintence, chair_flipped, chair_comfy, barricade, data_disk, graffiti, mopbucket, caution_sign, bucket, soap, box, bin, janitor_supplies, soup, salad, dinner

Removed deprecated wizard trap, vault, and armory spawners.
2021-09-23 03:30:28 +01:00
Timberpoes
16d541e975 [TM Candidate] Overhauls orbit and POI code to fix part of issue #61508 where players could observe /mob/living/new_player on the lobby. (#61509) 2021-09-22 15:54:15 -07:00
Timberpoes
8b0e41f8b3 Add a couple of missing traits to the global trait list used by VV with minor code cleanup (#61545)
Adds a couple of missing traits to the global traits list for mobs.

Does minor cleanup on the list's formatting including trailling commas and an indentation cleanup.
2021-09-22 22:23:43 +01:00
Krysonism
19712939ed Cytology content expansion: Jungle mobs. (#61414)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-09-22 06:05:41 -07:00
Y0SH1M4S73R
b7ed43d7a8 Adds a Datum port type for Admin Circuits (#61582)
Admin circuit components were limited in their utility due to the setvar, getvar, proccall, and signal handler components only being able to operate on atoms. I have improved them by adding the datum datatype, which is used exclusively by the aforementioned components in place of the atom datatype their target port currently uses. Furthermore, an option for the expected output type has been added to the getvar and proccall components. This option defaults to any.
2021-09-22 08:04:05 +01:00
tralezab
b6dafef8e8 converts cows to basic mobs and ADDS MOONICORNS (#61446) 2021-09-16 17:47:06 -07:00
Watermelon914
b6df5b0046 Admin signal handler circuit component (#61246)
* Refactors how components are triggered and refactors how ports are ordered

* Fixed trigger problems

* Cleanup

* Tweaked the code a bit

* Fixes compile time errors

* Fixes CI

* Removed the callback datum that each port had.

* Tweaked add_option_port

* Fixed sleep problem

* Uses regex datums and macros for text-manipulation (#61042)

* bane component to element. nullrod now uses it for revenants. (#60640)

* bane component to element. nullrod uses it for revenants.

* TRUE to FALSE

* Update field_generator.dm (#60918)

* Automatic changelog generation for PR #60918 [ci skip]

* More thermomachine fixes (#60998)

fix error when typing the mole efficiency (instead of 0.1 it was 0.001, didn't push the change)
fix infinite power consumption (capped)
fix efficiency not being tied to laser tiers (issue connected to infinite power consumption)
Also fix #61006 (Thermos not working at all because of the efficency stuff added recently)

* Automatic changelog generation for PR #60998 [ci skip]

* Automatic changelog compile [ci skip]

* colossus-type projectiles no longer explode sealed vehicles (#61030)

* Automatic changelog generation for PR #61030 [ci skip]

* Automatic changelog compile [ci skip]

* makes QDEL_IN() not runtime due to using a ternary operator on an arg, fixes several runtimes that happen every emitter firing (#61078)

`QDEL_IN(new /obj/effect/projectile_lighting(T, light_color_override, light_range, light_intensity, instance_key), qdel_in > 0? qdel_in : 5)`
the use of a ternary here in hitscan code got parsed as `qdel_in > 0? qdel_in : 5 > GC_FILTER_QUEUE ? WEAKREF(item) : item` and since qdel_in is 3 for emitters this was passing only the argument 3 into qdel() when the timer callback was invoked. so every tile that an emitter covers when it fires on master runtimes with a bad del exception and effect doesnt delete

* Atmos re-Defined (#60855)

This PR takes the atmospherics.dm in _DEFINES and split it into several files to lower the mess, increase readability and improve on the code for later uses
Also added some docs here and there

* Allows you to cancel TGUI alerts (#61072)

This was requested by someone downstream. Some TGUI alerts offer two options e.g. (Kill Bob, Kill Janice), In byond alerts you'd be able to cancel by pressing the X, but tgui alerts don't support this. I've added an option to enable the normal X in the top right, so you can cancel out of alerts if you enable it.

* tgui: Silicon Station Alerts (#61070)

This PR unifies all Station Alert menus into one datum system.

This also means that the old html menus will be converted to tgui, which is a case for cyborg and AI menus. All menus above differ very little, practically only by amount of type of alerts they show except for the AI menu, which also has access to cameras in the alert areas and knows number of the alert sources.

* Automatic changelog generation for PR #61070 [ci skip]

* Rewords the traitor panel's policy tooltip (#61098)

Fulp's spacelaw isn't a suggestion, which makes the upstream comment in the tgui kind of an unintentional griffon.

* Automatic changelog generation for PR #61098 [ci skip]

* Many smart pipe fixes (#60981)

* Smart pipes now actually go over smart pipes

This was ostensibly the main feature of smart pipes, so should be
fairly important

Parentheses are technically not required around the |, but I think
it's important to emphasise the importance of parentheses around
bitwise operators as this was apparently broken since 3e8407c471

Also purge var/connections and var/connection_num, since it's
literally only used for a `machine.connection_num < 3` check
which is completely redundant, and we already build a bitfield
tracking active directions.

* Smart pipes bridge over straight pipe types

This improves bridging to now go over most devices where possible,
letting you, for example, bridge over a perpindicular layer adapter.

* Pipe construction: Better documentation

Cleans up smart pipe documentation to match what's actually happening.

No functional changes.

* Skip pipes on different layers earlier

This prevents a pipe being made into a bridge perpindicular to a pipe
on a completely different layer, then failing to turn into a bridge
perpindicular to a relevant pipe.

* Pop superfluous parentheses

* Prevent creation of stub pipes

Setting the RPD to create a smart pipe that can only connect in one
direction would cause it to create invisible pipes that would still
block the placement of other pipes.

* The RPD can now reprogram smart pipes

The RPD can only affect smart pipes in directions that they are not
currently connected to.

This makes it easier to adjust designs after the fact, including
prevening round-start pipes from eagerly linking to a grey layer
adapter.

* Even smarter pipes

No more turning into bridge pipes. We now only try to be smart if
placement would fail, and we do our best to find a solution
whenever there is at least one smart pipe involved, regardless
of whether we're currently placing a smart pipe or not.

We never reconfigure any directions that a smart pipe is currently
connected, and we never reconfigure a smart pipe to have one or less
usable directions.

* Smartly go across perpindicular layer adapters

Also works when we're placing a layer adapter perpindicular to a
promiscuous smart pipe

* Pipes: Factor out loops and some bitfiddling

Create and use helpers with documented purposes over inline bitfiddling,
when it makes sense.

Many loops and switch statements were recreating information that was
already there.

Some relationships between pipe bitfield states were already assumed.
This centralises the functionality that relies upon these assumptions,
places them where the bits are defined, and documents them.

Rewrite some bitwise operations to be more idiomatic.

* Smart pipes: Debugging output

I normally clean history before pushing changes to any project,
but I feel like this should be saved.

* Revert "Smart pipes: Debugging output"

This reverts commit bb3aa76cf6d08e4d0951113a26fc9d48b6bc1735.

* Add trailing comma

The lack of this was making the linter sad

* Automatic changelog generation for PR #60981 [ci skip]

* Small Spider Balance Changes and Tarantula QoL (#60505)

* Add Sealed Webs

* Add Sealed Web Icon

* Spider Changes

* Update this dumb var

* Make Broodmothers spawn in the same place

* Remove unused var

* Re-Add Sealed Web Sprite

* Automatic changelog generation for PR #60505 [ci skip]

* Refactors and improves SDQL spells (#60972)

SDQL spells have been improved in several ways:

- The behavior of executing SDQL spell queries using datums has been migrated to a component
- Projectile SDQL spells can now fire any subtype of /obj/projectile
- Touch SDQL spells can use any subtype of /obj/item/melee/touch_attack
- More robust parse error detection
- Parse errors while loading a file from json are displayed in a modal window, with the option to load whatever parts of the spell were correctly parsed (be forewarned, scrollable sections are scuffed, and the ones that appear in the parse error modal can only be scrolled through by drag-selecting the text within them)
- Fixes a bug with the names of variables within lists
- Compartmentalizes SDQL spell code into several .dm files.

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>

* Automatic changelog generation for PR #60972 [ci skip]

* Automatic changelog compile [ci skip]

* Give admins the ability to put a popup notice for players in tickets (#61010)

Admins can now give players a popup if they are not responding to tickets.
Popup is cleared when player replies or ticket is resolved/closed.
As more and more of the chat screen is made irrelevant, new players read it less and less.
This means that a lot of new players are ignoring ahelps, which is something I've encountered myself.

* Automatic changelog generation for PR #61010 [ci skip]

* Greentexting as a traitor hardcore random now gives you hardcore random points (#60957)

Every time a traitor greentexts with hardcore random, it runtimes and returns. I think it's because of the escape alive objective.

I've tested this before and after several times just to be completely sure this fixes it.

* Automatic changelog generation for PR #60957 [ci skip]

* Objective-specific equipment will always be given. (#60789)

* Automatic changelog generation for PR #60789 [ci skip]

* Basic Mobs: the cooler simple mobs that run on datum AI. (With reworked cockroach AI as proof of concept) (#60694)

Simple_animals / mobs are the biggest lie in this code-base. They're far from simple and have an extreme god-object problem. Especially when you get to /hostile, where there is so many procs, vars, and what not, that you can't make any interesting additions without snowflaking the hell out of the code.

This PR hopes to help kill this problem by introducing a new /living subtype, /living/basic. The idea of this refactor is to slowly start moving all old simple_animals to this new system, moving over behaviors like charging and more extravagant mobs like megafauna over bit by bit similar to how newfood was implemented.

One of the other big goals of this refactor is to move many of the fringe simple animal behaviors into either AI datums, or components/elements. (Some of which still needs to be done in this PR).

As a proof of concept, I created the base mob/living/basic, and moved cockroaches over to the system. Since cockroaches have both a passive, melee and ranged mob.

This PR does slightly affect balance as the behavior isn't 1-on-1 due to it no longer running on the janky /hostile behavior, but I tried to keep the effects to a minimum, and the glockroach and hauberoach are not spawnable through many means as far as I know.

* Automatic changelog generation for PR #60694 [ci skip]

* Naive works correctly on simple animals (#61088)

About The Pull Request
Innocent clowns now perceive dead animals as asleep, the same as humans.

* Automatic changelog generation for PR #61088 [ci skip]

* fixes misspellings of "aggressive" in a few areas. (#61092)

Fixes the spelling of "aggressive" in a few items, comments and a define.

* Automatic changelog generation for PR #61092 [ci skip]

* Adds Watermelon914 to wiremod codeowners (#61120)

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* Gives brainwashed victims an antag hud (#61077)

Gives brainwashed victims an antag hud icon

* Automatic changelog generation for PR #61077 [ci skip]

* Fix female uniforms not updating color correctly (#61040)

Fixes #59235, fixes #59297, fixes #61012, and other similar bugs.
The global list of female uniforms now appends the greyscale color of the uniform to the index/name, so all GAGS female uniforms are unique and handled correctly.

* Automatic changelog generation for PR #61040 [ci skip]

* Automatic changelog compile [ci skip]

* fixes translocation define to actually mean translocation (#61105)

* Automatic changelog generation for PR #61105 [ci skip]

* Fix Sparkler typo (#61102)

* Automatic changelog generation for PR #61102 [ci skip]

* Fix grammar when attacked by an unknown assailant (#61103)

* Automatic changelog generation for PR #61103 [ci skip]

* fixes wormhole jaunter portals floating in space. (#61089)

* Automatic changelog generation for PR #61089 [ci skip]

* Downgrade Juke to 0.8.1 (#61110)

A light version of the revert to help builds work on TGS3.

(TGS3 builds were locking up on live, causing servers to be unable to testmerge or update things because of something to do with the recent juke build. I don't into the build tool, otherwise I'd be more clear)

* Get your protein fix here (for monkey meat). (#60696)

Meat steaks now have the material flag to un-link from from material effects, meaning that monkey meat will now have the proper nutrients and reagents it was intended to, primarily that monkey meat will have protein for cytology purposes.

(Basically, the meat mat was not adding a food component, but then trying to remove "any" food component regardless of a material_no_effects flag. Kinda a mess, and maybe this could be done in an event based way, but this is a real sane fix. The hard part was tracking down the error anyway. Kudos fictional arcane who will read this commit message)

* Automatic changelog generation for PR #60696 [ci skip]

* Update balloon_alert.dm (#61035)

balloon alerts now have the RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM appearance flags.

* Automatic changelog generation for PR #61035 [ci skip]

* Fixes antag panel runtime (#61115)

uplinks don't always exist for traitors!

* Automatic changelog generation for PR #61115 [ci skip]

* cannon recipe fix (#61014)

Cannons now accept all oxygen tanks, not just red ones

* Automatic changelog generation for PR #61014 [ci skip]

* Hostile mobs will always face their targets when shooting. (#61069)

Added a face_atom call with targeted_atom as arg.

* Automatic changelog generation for PR #61069 [ci skip]

* Corrects a possessive case in the fluff text of a paper note found in an ice planet ruin. (#61066)

Corrected a possessive case in the text of the ancient note found in the ice library ruin.

* Automatic changelog generation for PR #61066 [ci skip]

* Fixes the anti-drop implant not removing the nodrop trait on held items if they're somehow dropped. (#61068)

Title. I have used comsigs to do it. Also I have improved the logic of its ui_action_click.

* Automatic changelog generation for PR #61068 [ci skip]

* Fixes floored mobs (paraplegia, missing limbs) not being able to stand up in zero G for real. (#61054)

Added a old_movement_type argument to the COMSIG_MOVETYPE_FLAG_ENABLED and COMSIG_MOVETYPE_FLAG_DISABLED signal, fixed the check for zero g movespeed and locomotion traits removal and made some statements easier to understand.

* small refactor to can_interact() so that borg range is fully respected (#60693)

Its a relatively small refactor that changes the previous machinery "can_interact()" proc that literally did a full override despite half of their checks already existing in not one, but TWO parent procs, so i removed the redundant checks, added callbacks to its parents and then added the cyborg range check on the can_interact_with() itself. in doing so i also moved the interaction range var from silicons only, to mobs as a whole and defaulted it to a single tile, silicons override it to 7 (so pAIs and borgs like before) but then set AI and AI.eye to "null", because i have a check in can_interact that if there is no range set, then the range is effectively unlimited. and i even added code for when AI is carded and their wireless transmission is disabled it sets their range to "0" aka, it has no range to do anything even if it could

this was really complicated for me so despite my extensive testing it probably would be a bad thing if any of you want to test my code yourself to ensure there isnt a bug with this (theres no runtimes ive come across)

note: i did a lot of searching and going through machinery to ensure i caught all the little snowflake overrides and added can_interact() checks to them, but i may have missed one or two things, especially maybe a altclick or ctrlclick somewhere, however i believe i caught most of them

one nice side effect of this refactor is that you can actually set another mobs range to something other than 1 tile and they can interact at range, rather than only silicons getting this ability, an admin could VV a human to have a 3 tile arm reach as a meme if they want

* Automatic changelog generation for PR #60693 [ci skip]

* lava and weather immunities refactor (also jump boots fix) (#61003)

In remembrance of all those people who used jump boots to cross lava unaware of an issue c*ders wouldn't fix....

EDIT: This is now a lava and weather immunities refactor:
Weather immunities are now status traits since they have a multitude of sources (especially for lava) which might conflict with one another otherwise.
The lava burn_stuff proc has also been been refactored in different procs, mostly because of that snowdin subtype with inconsistent, old checks.
Weather datums should now use can_weather_act instead of weather_act to check if something can be affected by weather or not, as they should.
All movables can protect contained mobs if they have the relative weather immunity traits. This works at any contents depth.
No more snowflake weather_protection variable for closets.
Removed the weather_immunities list from living mobs (simple animals still have it but it's only for traits assignment on init because way too many child types lack the immunities of their parents).
Removed some unused defines.
Renamed some variables as per guidelines.
It has been tested.
And yea, jump boots fixed because that's the original scope of this PR.

(Initially just made throwing make you fire immune, that was blocked because it breaks perma stuff, instead it ended up be a refactor to make jumpboots usable with weather immumnity stuff

* Automatic changelog generation for PR #61003 [ci skip]

* Fix staff of lava not terraforming lava (#61096)

Lava staffs were not terraforming regular lava into empty tiles. This is because it was only checking to see if the lava type was the same weak lava the staff spawns. It has now been fixed to check for all lava types.

* Automatic changelog generation for PR #61096 [ci skip]

* Admins Can Once Again Click Ban Panel Categories to Toggle Their Checkboxes (#60904)

* Re-Adds Header Checkboxes

- Ban Panel categories can now be clicked to click all the checkboxes in their category
- Adds a new js method called header_click_all_checkboxes whichs clicks all the checkboxes whose class is the hidden checkbox's name

Re-introduces a function that was lost with #60578 (6c4134d1ea) , closes #60903 (Admins being unable to click on the ban category and check all subcheckboxes). The method was largely copied, but was changed to comply with the toggle_other_checkboxes() method introduced with the aforementioned PR by replacing a .checked assignment with a .click() call to ensure that duplicate entries are properly marked

Admins can now click categories to more easily ban people from all entries in that category. Demonstrated below to show that checkboxes are being toggled correctly in all relevant categories

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>

* Automatic changelog generation for PR #60904 [ci skip]

* fixes html execution with circuits (#61143)

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>

* adds missing APCs to supermatter engine room area (#61046)

* Automatic changelog generation for PR #61046 [ci skip]

* the Mainetening - Maint area fixes (#61084)

* Automatic changelog generation for PR #61084 [ci skip]

* Tramstation stampening & additional departmental resupplies (#61129)

* lawstamp, aicore module, bookmanuals, xenobio/cyto beakers, RnD experiscanners & some equipment

* nevermind, no beakers & glasses/masks for RnD for now

* fixed a non-functional shutters tram underpass button

* Automatic changelog generation for PR #61129 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes being able to spam ghost role notifications. (#61085)

There are methods that let players spam the everloving shit out of ghosts with BONG BONG BONG BONG BONG BONG BONG etc. through being able to constantly poll ghosts for roles with no restriction or cooldown.

Examples are laughter and slaughter demon antag_spawners.

It makes no sense to be able to concurrently poll for the same mob. As a result, I've now added a guard against this. The proc has been given a static list of mobs it's polling for ghost roles for. If it's already polling for ghost roles for a given mob, then it just early returns with an empty list, otherwise it adds the mob to the static list when the poll starts and removes it when the poll ends.

I've also done a little cleanup in var names and the proc name, with a find-and-replace done. There weren't many things calling it and none used named keywords in the args so should be fine.

There is also poll_candidates_for_mobs (also included in my cleanup) - This proc is basically only called by admins via sentience balloons and they have their own guards against spamming (the balloon pops and thus can only be used once)

Also fixes an issue in /mob/living/silicon/robot/proc/replace_banned_cyborg() where incorrect args were used in the proc call to poll for candidates.

* Automatic changelog generation for PR #61085 [ci skip]

* fixes a dumb error with traitor flavor AGAIN (#61119)

going postal now uses the correct ui theme and isn't confused with tiger cooperative

* Automatic changelog generation for PR #61119 [ci skip]

* Fix pass-by-ref issue causing ID card access lists to be incorrectly mutated. (#61117)

stored_card.GetAccess() eventually leads to /obj/item/card/id/GetAccess() being called. This proc returns the actual access list associated with the ID card rather than a .Copy() of it.

As a result, the line total_access = stored_card.GetAccess() is storing a reference to the stored_card's actual access list.

total_access |= card_slot2.stored_card.GetAccess() is then mutating the first ID card's access list via the reference.

The result? When /obj/item/computer_hardware/card_slot/GetAccess() is called with 2 ID cards in a modular computer, the second ID card gives all of its accesses to the first ID card thanks to the |= operation.

There are a number of ways around this. Some pieces of code do var/list/thing = list() and then |= every GetAccess() since it's guaranteed to return a list. This creates new lists instead.

However, I feel GetAccess() for ID cards really shouldn't be returning a ref to the list. Instead, it now returns a Copy() of the list and code implementing behaviour using GetAccess() doesn't need to worry about list mutation at all.

* Automatic changelog generation for PR #61117 [ci skip]

* changed minor typo in ventcrawling.dm (#61104)

changed "You out from the ventilation ducts." to "You scramble out from the ventilation ducts." to match the visible_message.

* Automatic changelog generation for PR #61104 [ci skip]

* Adds a stack trace for objs with <=0 integ taking damage (#61079)

Adds a stack_trace to <=0 integ objs taking damage so instances of people relying on this early return prior can be identified

* Fixes some unnecessary attack chain cancels (#61038)

Replaced attack chain cancels on some objects with parent calls

* Automatic changelog generation for PR #61038 [ci skip]

* Fixes a plasmaman autoignition oversight (#61083)

Adds a check to see if there are any organic plasmaman limbs or any plasmaburnt limbs (which are obtained by exposure to plasma lava on icebox) before igniting plasmemes so that a plasmeme with fully replaced limbs can stop burning

* Automatic changelog generation for PR #61083 [ci skip]

* Fixes moths infinitely eating most clothing (#61082)

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

* Automatic changelog generation for PR #61082 [ci skip]

* Automatic changelog compile [ci skip]

* Fixed the Bloodcrawl spell not ejecting users if somehow lost. (#61076)

* Automatic changelog generation for PR #61076 [ci skip]

* large refactor of machine/power code to cut down on processing time and wasted lists (#60317)

original pr here: #59789 (Closed because he didn't think it was good enough)
came back to this because i realized that

    all machines were area sensitive, meaning they had a list with at least a reference to themselves (assuming they arent in the contents of another movable which most arent) for the purposes of handling power differences when their area changes
    pipes are machines
    there are ~14k machines and ~6k pipes
    i made this problem worse with a recent pr by making it a nested list

so i needed to track what machines needed power, and this pr had work already done that could be used for that purpose. now machines that have use_power == NO_POWER_USE do not have this extra memory overhead for no reason

currently every machine that uses power draws that amount from its area from a dynamic channel via auto_use_power() which is called every SSmachines fire(), then in apc/process() the area's dynamic power draw is reset and the power is used. with static power its not calculated then reset every loop, its just taken from the grid. so now machines handle updating their static power usage from their current area (this doesnt touch power machines that require a wire connection). in order to allow this, use_power, idle_power_usage, and active_power_usage have setters to track state correctly and update the static power usage on the machines current area and handle area sensitivity.

also goes through a lot of heavy abusers of SSmachine processing time and tries to make it faster. makes airalarm/process() into a signal handler for COMSIG_TURF_EXPOSE since air alarms only need to process for changes.
Why It's Good For The Game

SSmachines isnt the heaviest hitter in terms of total cpu and certainly not in terms of overtime, but its not a lightweight. it frequently takes > 50ms to complete a run and seems to be in the top 5 or so of subsystem costs looking at some round profilers

also gets rid of a few thousand lists since every pipe no longer has two useless lists each (and any other machines that dont use power)

Love ya kyler

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

* Update datum_traitor.dm (#61132)

* Automatic changelog generation for PR #61132 [ci skip]

* Vents and scrubbers get unique name tags again (#61133)

You used to be able to mouse over a vent or scrubber to see its ID tag, in order to match it to its entry in an air alarm panel. However, this id tag is currently missing from the name.

* Automatic changelog generation for PR #61133 [ci skip]

* Free up smart pipe direction on disconnect (#61135)

Previously, a smart pipe that was attached in a given direction would
continue to hog that direction even if the attached piece was removed.

* Automatic changelog generation for PR #61135 [ci skip]

* Update MAPS_AND_AWAY_MISSIONS.md to latest changes (#61024)

Indicates what are the current maps in rotation and adds all the outdated, removed or not in rotation maps for record keeping.

* [s] Audits object say() uses to make handling text more safe (#61147)

Made all say()s deal with encoding, audited all uses of say() to prevent double encoding or like, manually inserting span(). 
I left some stuff without sanitize that only draws from the code, since it's hell to clean up otherwise. That
and I let admins do whatever the fuck they want

* Using a soulstone on a construct shell no longer destroys it and the shade if no option is taken. Plus code improvement (#60982)

I have split the multi-purpose transfer_soul proc into three smaller procs, each with their own purpose, renamed some variables accordingly to guidelines and added some checks such as CanReach where opportune.

* Automatic changelog generation for PR #60982 [ci skip]

* Fix dir delay when riding something and turning (#61056)

Fixed invalid arguments being passed into vehicle_moved

* Automatic changelog generation for PR #61056 [ci skip]

* assorted menu fixes (#61023)

* Automatic changelog generation for PR #61023 [ci skip]

* Adds instant circuit execution

* Adds instant circuits and adds an event listener component to airlocks

* Added signal handler circuit components

* Changes the scrollbar to be on the dynamic sections instead of on the browser as a whole

* Fixed all option ports being null when created

* Fixed 0 not working when inputted into an any type

* Fixes bugs with qdelling

* Adds global signals

* Fixes to the duplicator for signal_handler

* Addressed comments

* Fixes bugs

* Fixed linter

* Update FundamentalTypes.js

* Update Dropdown.js

* Addresses comments

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@tgstation13.org>
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: AMonkeyThatCodes <20987591+AMonkeyThatCodes@users.noreply.github.com>
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
Co-authored-by: esainane <esainane+github@gmail.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: YakumoChen <king_yoshi42@yahoo.com>
Co-authored-by: aaaa1023 <74441292+aaaa1023@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: Shroopy <delyth@shroop.net>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
Co-authored-by: Sealed101 <75863639+Sealed101@users.noreply.github.com>
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
Co-authored-by: ArcaneDefence <51932756+ArcaneDefence@users.noreply.github.com>
Co-authored-by: GoblinBackwards <kinggreenyoshi@gmail.com>
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: BraveMole <bsouchu@gmail.com>
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
2021-09-16 16:13:38 +03:00
Mothblocks
5a4c87a9fc tgui Preferences Menu + total rewrite of the preferences backend (#61313)
About The Pull Request

Rewrites the entire preferences menu in tgui. Rewrites the entire backend to be built upon datumized preferences, rather than constant additions to the preferences base datum.

Splits game preferences into its own window.

Antagonists are now split into their individual rulesets. You can now be a roundstart heretic without signing up for latejoin heretic, as an example.

This iteration matches parity, and provides very little new functionality, but adding anything new will be much easier.

Fixes #60823
Fixes #28907
Fixes #44887
Fixes #59912
Fixes #58458
Fixes #59181
Major TODOs

Quirk icons, from @Fikou (with some slight adjustments from me)
Lore text, from @EOBGames (4/6, need moths and then ethereal lore from @AMonkeyThatCodes)
Heavy documentation on how one would add new preferences, species, jobs, etc

    A lot of specialized testing so that people's real data don't get corrupted

Changelog

cl Mothblocks, Floyd on lots of the design
refactor: The preferences menu has been completely rewritten in tgui.
refactor: The "Stop Sounds" verb has been moved to OOC.
/cl
2021-09-15 10:11:11 +12:00
Ghom
20468c3f15 Baton refactor. item/melee/baton is now a subtype of item/melee/baton (formerly classic_baton) (#61207)
Merged the item/melee/classic_baton and item/melee/baton families in this unholy matrimony.

Bad jokes aside. I have refactored the underlying code of both items with the scope of reducing potential copypasta,inconsistencies, logging, renewing some old code (like teleprods) and extending the anti-dual batoning and TRAIT_STUNRESISTANCE code** to all batons and not just security ones. Otherwise, I have tried to maintain the gameplay functionality of these items intact. They work just like they did for the most part.

** A badly designed feature that only considers one source of knockdowns - stunbatons - out of a multitude of different devices with corresponding purposes present in the game. The only thing it does is reduce the knockdown from them by 90%. The stamina damage and confusion are fully applied. The knockdown from batons is 5 seconds, standing up takes an extra 1 second and the baton cooldown is about 2.5. Doing the math, you'll have the grand advantage of one puny second of not lying horizontal on the floor with this trait before getting batoned again by the same guy because the stamina damage and the confusion have really hampered your chances of getting some distance. I wish to make the trait suck less in the future, but for now I'm including a slight gameplay change here, more for consistency than anything because as I already told you, it'll still be disappointingly bad per se.

The abductor baton is also no more a subtype of stun batons but batons, which don't use power cells to work. Its power cell is effectively infinite and can't be removed, and It overrides functions such as toggling the baton on/off. It hinders maintainability to keep it a subtype of stun batons.

Replaced the anchored check for mobs in teleprods with one for overwhelming move resistance and removed its clumsy_check copypasta (it was stunning clowns twices).
2021-09-09 16:40:20 +01:00
tralezab
4d7f2952e4 [READY] Adds memory system, and engraving walls with chisels (#60302)
Co-authored-by: MonkeyThatCodes <monkey>
Co-authored-by: MonkeyThatCodes <MonkeyThatCodes@deez.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: AMonkeyThatCodes <20987591+AMonkeyThatCodes@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-09-08 15:03:07 -07:00
Ryll Ryll
13464c1ab9 Byond member ghost recolors can now have hair + accessories (#61243)
For whatever reason, none of the dozen or so custom ghost sprites available to byond members that share the same sprite with the default ghost were able to have hair/accessories enabled. This makes it so the ghost recolors (AKA leaving out the dog, ian, and king ghosts, though the skeleghost still can have them)
2021-09-05 16:17:43 -04:00
Ghom
699563c233 lava and weather immunities refactor (also jump boots fix) (#61003)
In remembrance of all those people who used jump boots to cross lava unaware of an issue c*ders wouldn't fix....

EDIT: This is now a lava and weather immunities refactor:
Weather immunities are now status traits since they have a multitude of sources (especially for lava) which might conflict with one another otherwise.
The lava burn_stuff proc has also been been refactored in different procs, mostly because of that snowdin subtype with inconsistent, old checks.
Weather datums should now use can_weather_act instead of weather_act to check if something can be affected by weather or not, as they should.
All movables can protect contained mobs if they have the relative weather immunity traits. This works at any contents depth.
No more snowflake weather_protection variable for closets.
Removed the weather_immunities list from living mobs (simple animals still have it but it's only for traits assignment on init because way too many child types lack the immunities of their parents).
Removed some unused defines.
Renamed some variables as per guidelines.
It has been tested.
And yea, jump boots fixed because that's the original scope of this PR.

(Initially just made throwing make you fire immune, that was blocked because it breaks perma stuff, instead it ended up be a refactor to make jumpboots usable with weather immumnity stuff
2021-08-31 14:07:19 -07:00
Rohesie
a7f81bd169 Uses regex datums and macros for text-manipulation (#61042) 2021-08-27 11:13:57 +02:00
TiviPlus
e16d3691f6 Fix two appearance_flags missing from the varedit menu (#61034) 2021-08-26 15:22:18 -03:00
TiviPlus
e629c36feb Refactor area and turf lighting (#60954) 2021-08-25 15:07:38 -07:00
Krysonism
989700c980 Adds a new rare mushroom: The odious puffball! (#60609)
* Adds puffballs
2021-08-25 23:03:49 +02:00
manofpepsi
610b83831c [MDB IGNORE] beer and ale headsmash fix (#60748)
repaths the beer and ale to allow bottle headsmashing with them.
2021-08-22 17:17:37 -07:00
MrMelbert
222d913eaa Fixes non-clothing mask slot items runtiming breath, also makes gas filtering a defined bitfield like it should be (#60938) 2021-08-20 20:41:33 -07:00
Time-Green
71aaf8a968 Fixes lowered megamothwings not rendering (#60856) 2021-08-20 10:31:51 -07:00
EOBGames
b08632353c [MDB IGNORE] Eliminates Toxins (#60619)
Repaths everything referring to "toxins" while actually meaning either the room in science or plasma gas. While this PR might be disrespectful to our forefathers, given this is (I believe) a holdover from as far back as the Exadv1 days, this has constantly irked me since I started working with the code. None of the player-facing stuff has referred to plasma as toxin since before 4407 hit, besides the Toxins Lab, and yet all of the type-paths are still pointing at toxins, making it a nightmare to search for in a map editor, and making the code needlessly easy to confuse with that of toxin damage. So this just fires it into the sun.

Anything relating to Toxins, the science subdepartment, now makes reference to Ordnance instead. This felt fitting enough given the focus of the subdepartment is around the creation of and testing of explosives.
Anything relating to plasma gas has, fittingly, been made to refer to plasma gas.

Edit: Ah yes, I feel I should probably apologise off the bat for the size of this PR- the code touched is mostly atmos machinery and simplemobs, a few sprites here and there, and of course the station maps + a few offstation maps.

Makes the code more legible and makes mapping less painful.

(The payment has been made)
2021-08-17 11:49:47 -07:00
Watermelon914
05ede8dc30 Adds Circuit variables (#60590)
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-12 18:30:50 -07:00
Timberpoes
dc5158324b Adds new config flag to mirror logging of suspicious failed logins to its own file (#60791) 2021-08-12 17:58:08 -07:00
Krysonism
b8b347722d Drugs of the 26th century. Three new hella rad drugs, one less lame drug and more! (#60432)
* lead stuff

* kronkus + loot table

* one drug sprite

* kroncaine

* drug items

* addiction stuff

* makes this compile

* plane master controllers

* small adjustments

* bro its a comment CHILL OUT

* temp

* desc and sprite update

* temp

* hmm

* invisible1

* invisible2

* fixes

* It compiles

* misc drug fixes

* signal

* synthesis

* fix

* span macros

* kroncaine filter removal + no speedup on cuffs n narsie rune

* makes the ampoule visible.

* hud-b-gone

* revert

* reverts more

* sound enviroment

* on_transfer & animated fade

* adrenal crisis + unknown

* blastoff signal

* blastoff adjustments

* filters

* small fixes

* animation parallel

* Taste, sounds and feel

* span proc

* final touches

* review and integration fix

* less blood, more fun

* moth and blood fix

* KronKaine and bLaSToFF spelling fix

* Assorted bLaSToFF fixes and range change

* suggestions from head head head coder

Co-authored-by: floyd <Floydje123@Hotmail.com>
2021-08-09 12:03:36 -04:00
dragomagol
a38f11a053 add logging to mob numbers (#60695) 2021-08-05 01:16:01 -07:00
Ghom
db083f866b Removes an unused trait. Adds another to the traits global list. (#60584)
Drunk healing is handled by the quirk itself. The trait is pointless.
I forgot add the uncatchable trait to the global list for admin shenanigeans.
2021-08-02 23:10:41 -03:00
tralezab
14045259fa Trash Cannons (#60476) 2021-07-29 02:17:03 -07:00
Mothblocks
bd6873fd4d Remove nanites (#60473)
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2021-07-28 16:00:56 -07:00
Kyle Spier-Swenson
3ce3056cce Fix bad comment (#60487) 2021-07-28 14:39:10 -07:00
tralezab
43fd840b2f Kills _globalvars/misc.dm (#60358) 2021-07-26 16:58:18 -07:00
Tim
e3d22a277d Add musical instruments to maint loot list (#60410) 2021-07-25 04:23:24 -07:00
GoldenAlpharex
ced603614d That's it. *GAGS'ifies your berets* (#59536)
Converts berets to greyscale config
2021-07-23 21:37:23 +02:00
BurgerLUA
a416aaf3b1 Adds closets to ant decomposition blacklist, converts ant locate() spam into typecache (#60296)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@gmail.com>
2021-07-20 02:01:31 -07:00
coiax
fd2fc3287d Rework maintenance loot spawners to fire at roundstart (#59913)
Maintenance loot spawners now fire at roundstart, rather than during the initialization of the Atoms subsystem.
Maintenance loot spawners do not qdel themselves during the spawning process, but persist, and merely hide themselves from living players.

As a cute side effect, this lets preround observers look at the colourful maintenance loot dice icons before the round starts. Observers can continue to see the loot dice post-round, but they are deliberately
very faint.
2021-07-17 12:15:20 -03:00
Watermelon914
5a21e2e64c Circuit submodules (#60109)
Adds the module component that is basically a subroutine. Allows you to compact your logic into a bunch of functions.
2021-07-17 01:05:57 -03:00
Kylerace
44779b794c makes get_hearers_in_view() faster AGAIN, fixes issue with previous optimization (#60219)
fixes #60197
woke up today with a ridiculous idea of semi-automatic compile time loop unrolling, wasnt worth the complexity in the least but it made the basis of this PR which i then continued work on. makes area_sensitive_contents into a more general system of important_recursive_contents where we can define reasonable uses to replace recursive contents iteration of the type found in get_hearers_in_view() as long as everything that uses it isnt something incredibly common to the point that it noticeably increases memory usage.
2021-07-17 00:49:55 -03:00
coiax
603c7412bc Stop ethereals reviving during Mafia games (#60210) 2021-07-15 17:37:17 -07:00
Beatrice
c36abfdb99 Fixing Energy Gun Weapon Description Runtimes + Miscellaneous Weapon Description Fixes, Take 2 (#59778)
Fixes a runtime issue cause by the possibility of loaded_projectile being null by changing how projectile stats are obtained on energy weapons, and adds a separate line for energy ammo types that deal stamina damage and regular damage to incorporate both damage types
2021-07-11 10:23:19 -03:00