Commit Graph

1183 Commits

Author SHA1 Message Date
BurgerLUA
045ef30888 Tweaks the Ants PR to make food decay longer, and no longer decay on lockers/fridges/crates. I was paid $20 to make this PR. (#6971)
* Tweaks the ants PR

* zzzz

* Update decomposition.dm

* lol webeditor

Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-07-23 17:47:50 +12:00
SkyratBot
2fc9a299a2 [MIRROR] Adds closets to ant decomposition blacklist, converts ant locate() spam into typecache (#7039)
* 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>

* Adds closets to ant decomposition blacklist, converts ant locate() spam into typecache

Co-authored-by: BurgerLUA <8602857+BurgerLUA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Rohesie <rohesie@ gmail.com>
2021-07-20 13:59:26 +02:00
SkyratBot
c1163dff19 [MIRROR] EVEN MORE HARDDEL FIXES (#7017)
* EVEN MORE HARDDEL FIXES (#60228)

Fixes a ton of harddels, sourced from #59996
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.

See you on the other side

Makes the cryopod control computer into a weakref, never trust bee code
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
 Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @ stylemistake
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything

Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @ MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.

<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->

## Why it's not good for the game

I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.

* EVEN MORE HARDDEL FIXES

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2021-07-20 12:59:41 +02:00
SkyratBot
f964a28ed7 [MIRROR] Fixes duffelbag curse and curse of hunger code in general. (#7010)
* Fixes duffelbag curse and curse of hunger code in general (#60290)

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

* Fixes duffelbag curse and curse of hunger code in general.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2021-07-19 15:58:57 +01:00
SkyratBot
52a8891f7a [MIRROR] Changes overlay lighting vis contents objs -> underlays (#6985)
* Changes overlay lighting vis contents objs -> underlays (#60239)

Previously what it would do is create up to three objects; a cone, a lighting image and a holder
Then whenever the lighting image was placed into the holders vis contents and the holder would be teleported several times when the parent would to turn or move, and the cone would be spun when the parent spun

Instead of doing that it now just translates a single overlay every time that something is updated

* Mirror!

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-07-19 20:43:33 +12:00
SkyratBot
d8b4f116c4 [MIRROR] Allows charging batteries of integrated circuits with inducers and allows scanning ids on unregistered circuits through shells. (#6983)
* Allows charging batteries of integrated circuits with inducers and allows scanning ids on unregistered circuits through shells. (#60227)

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

* Allows charging batteries of integrated circuits with inducers and allows scanning ids on unregistered circuits through shells.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2021-07-19 20:16:39 +12:00
SkyratBot
b37a8b5ef0 [MIRROR] Circuit submodules (#6980)
* Circuit submodules (#60109)

Adds the module component that is basically a subroutine. Allows you to compact your logic into a bunch of functions.

* Circuit submodules

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-07-19 20:12:15 +12:00
SkyratBot
14355e3442 [MIRROR] Fixes losing dynamic luminosity on ChangeTurf() (#6936)
* Fixes losing dynamic luminosity on ChangeTurf()

* Mirror!

Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-07-19 16:45:52 +12:00
SkyratBot
934f1b8ae8 [MIRROR] Fixes a roundstart uplink implanting runtime (#6961)
* Fixes a roundstart uplink implanting runtime (#60242)

There's no guarantee there will be a user making the implanting, such as it's the case of roundstart equipping.

* Fixes a roundstart uplink implanting runtime

Co-authored-by: Rohesie <rohesie@gmail.com>
2021-07-16 20:35:59 +01:00
SkyratBot
0026a9ece2 [MIRROR] Fixes density when fireman carrying (#6947)
* Fixes density when fireman carrying (#59900)

* Fixes density when fireman carrying

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2021-07-16 17:15:32 +01:00
SkyratBot
7465ce721e [MIRROR] fixes hyperspace connect_loc_behalf bug (#6948)
* fixes hyperspace connect_loc_behalf bug (#60231)

turns out my move_stacks var doesnt work asynchronously since this bug made things with connect_loc_behalf runtime on every movement unless you somehow moved it back to the transit turf and off without it doing the runtime special.

(The sleep and hell the whole bit of code in space/Entered was unneeded, since it just happens normally as a part of move. Life is pain) -Lemon

also does misc code improvements i found while investigating ANOTHER c_l_b bug with stacks i found while testing this one, which i did NOT manage to fix unfortunately

* fixes hyperspace connect_loc_behalf bug

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-07-16 17:15:11 +01:00
SkyratBot
114347972a [MIRROR] Adds Ants, Decomposition, and some extras. (#6944)
* Adds Ants, Decomposition, and some extras. (#59634)

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Adds Ants, Decomposition, and some extras.

Co-authored-by: Wallemations <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
2021-07-16 08:05:37 +01:00
SkyratBot
eed6aafb06 [MIRROR] Fixes lingering moodlet on ethereal stomach removal. (#6897)
* Fixes lingering moodlet on ethereal stomach removal. (#60130)

* Fixes lingering moodlet on ethereal stomach removal.

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2021-07-13 23:57:26 +01:00
SkyratBot
c9eefd511b [MIRROR] Fix Tram ghost magnet and other cases of observer forceMove (#6804)
* Fix Tram ghost magnet and other cases of observer forceMove (#60026)

* Fix Tram ghost magnet and other cases of observer forceMove

Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
2021-07-10 14:16:55 +01:00
SkyratBot
41db1e68cb [MIRROR] Fixes a plumbing harddel (#6806)
* Fixes a plumbing harddel (#60067)

* Fixes a plumbing harddel

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2021-07-10 14:07:38 +01:00
Y0SH1M4S73R
93d03dc6bb [Alternative to #6407] Makes mutant bodyparts and mutcolors into editable genetic traits (#6750)
* Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code)

* Mirror

* genetically-editable mutant bodyparts and colors - skyrat edition

Co-authored-by: Funce <funce.973@gmail.com>
2021-07-08 16:04:19 +01:00
SkyratBot
c7cab95593 [MIRROR] Rust Component / Wirebrush Rust Remover (#6778)
* Rust Component / Wirebrush Rust Remover (#59977)

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

* Rust Component / Wirebrush Rust Remover

* Revert "[modular] wirebrush (#6521)"

This reverts commit 4f87b970f4.

* Makes the advanced wirebrush not critfail anymore.

Co-authored-by: Matthew J <12817816+ZephyrTFA@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2021-07-08 03:06:22 +02:00
SkyratBot
d862dc3dc3 [MIRROR] fix buckling to a vehicle not setting your initial sprite position correctly (#6733)
* fix buckling to a vehicle not setting your initial sprite position correctly (#59999)

* fix buckling to a vehicle not setting your initial sprite position correctly

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2021-07-05 15:54:31 +01:00
SkyratBot
bada3509b1 [MIRROR] wisps no longer fall in chasms (#6731)
* wisps no longer fall in chasms (#60004)

Co-authored-by: coiax <yellowbounder@ gmail.com>

* wisps no longer fall in chasms

Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: coiax <yellowbounder@ gmail.com>
2021-07-05 15:53:51 +01:00
SkyratBot
4f3dfd7804 [MIRROR] introduce advanced sucking functionality to custodians (+ bonus GAGging) (#6697)
* introduce advanced sucking functionality to custodians (+ bonus GAGging) (#59925)

* base sucking functionality

* functional upgrade and upgrade refactor

* minor tweak here

* finish overhaul of upgrades, add gags-ified upgrades

* add documentation (you love to see it)

* update sucking sound

* do some of the requested cleanup, fix key going into trash bag, add right click func

* introduce advanced sucking functionality to custodians (+ bonus GAGging)

Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
2021-07-04 01:07:28 +01:00
SkyratBot
63f6446ab9 [MIRROR] Fix ion carbine parts kit's name and other similar grammar issues (#6665)
* Fix ion carbine parts kit's name and other similar grammar issues (#59947)

* Fix ion carbine parts kit's name and other similar grammar issues

Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
2021-07-03 22:26:59 +01:00
SkyratBot
926f3a0360 [MIRROR] Fixed being able to insert infinitely many components into a shell. Fixes being able to view the shell's circuit in a locked shell. (#6686)
* Fixed being able to insert infinitely many components into a shell. Fixes being able to view the shell's circuit in a locked shell. (#59962)

* Fixed being able to insert infinitely many components into a shell. Fixes being able to view the shell's circuit in a locked shell.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-07-03 22:25:18 +01:00
SkyratBot
e8a0858a86 [MIRROR] Fixed carps being untameable and fixes tameable code not properly removing itself from something (#6677)
* Fixed carps being untameable and fixes tameable code not properly removing itself from something (#59955)

Fixes #59897

* Fixed carps being untameable and fixes tameable code not properly removing itself from something

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-07-03 22:23:43 +01:00
SkyratBot
56d4291ef6 [MIRROR] Reverts Entered() passing dir instead of old loc (#6646)
* Reverts Entered() passing dir instead of old loc (#59910)

* Reverts Entered() passing dir instead of old loc

Co-authored-by: Rohesie <rohesie@gmail.com>
2021-07-02 16:42:34 +01:00
SkyratBot
671873f250 [MIRROR] Uplink implants now inherit the uplink flags of the uplink they were bought from (#6639)
* Change uplink implants to inherit the uplink flags of the uplink they were bought from (#59735)

Uplinks implants bought from uplinks inherit the uplink flags of the uplink they were bought from.

This fixes an undocumented bug where by purchasing an uplink implant, nuke ops would be able to get things they normally can't.

Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>

* Uplink implants now inherit the uplink flags of the uplink they were bought from

Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: Jordan Brown <Cyberboss@ users.noreply.github.com>
2021-07-01 22:59:21 +01:00
SkyratBot
70f511a803 [MIRROR] Fix forensic component inheritance inserting null entries into lists and causing to_chat errors. (#6630)
* Fix forensic component inheritance inserting null entries into lists and causing to_chat errors. (#59873)

Fixing the following runtime:

[17:13:04] Runtime in to_chat.dm,88: Empty or null string in to_chat proc call.
  proc name: to chat (/proc/to_chat)
  usr: Cowboy_penis_monster/(Zackary Mason)
  usr.loc: (Telecomms Control Room (105,89,2))
  src: null
  call stack:
  to chat(Zackary Mason (/mob/living/carbon/human), "", null, "", 0, 1, 1, 0)
  the forensic scanner (/obj/item/detective_scanner): add log("", 1)
  the forensic scanner (/obj/item/detective_scanner): scan(Control Room (/obj/machinery/door/airlock/command/glass), Zackary Mason (/mob/living/carbon/human))

Forensic scanner attempting to add "" to the logs, which eventually gets output to_chat.

Tracked error down to forensic component lazylists and the fun of trying to OR two lazylists together.

* Fix forensic component inheritance inserting null entries into lists and causing to_chat errors.

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2021-07-01 22:56:49 +01:00
SkyratBot
cab78dcf78 [MIRROR] Changes how weather sends sound to players, reduces sound loop overtime (#6627)
* Changes how weather sends sound to players, reduces sound loop overtime (#59284)

* Converts looping sounds from a list of play locations to just the one

* Updates all uses of looping sounds to match the new arg

* Adds an area based sound manager that hooks into looping sounds to drive the actual audio. I'll be using this to redo how weather effects handle sound

* Some structrual stuff to make everything else smoother
Timers now properly return the time left for client based timers
Weather sends global signals when it starts/stops
Looping sounds now use their timerid var for all their sound related timers, not just the main loop

* This is the painful part
Adds an area sound manager component, it handles the logic of moving into new areas potentially creating new
sound loops. We do some extra work to prevent stacking sound loops.
Adds an ash storm listener element that adds a tailored area sound manager to clients on the lavaland z level.
It's removed on logout.
Adds the ash_storm_sounds assoc list, a reference to this is passed into area sound managers, and it's modified
in a manner that doesn't break the reference in ash_storm (This is what I hate)

* Hooks ash storm listener into cliented mobs and possessed objects

* Documents the odd ref stuff, adds an ignore start var to looping sounds, fixes some errors and lint issues

* Applies kyler's review

banging

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Cleans up some var names, reduces the amount of looping we do in some areas

* Makes the code compile, redoes the movement listener to be more general

* fuck

* We don't need to detach on del if we're just removing signals on detach

* Should? work

* if(direct) memes

Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>

* Changes how weather sends sound to players, reduces sound loop overtime

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Kylerace <kylerlumpkin1@ gmail.com>
2021-07-01 02:18:04 +01:00
SkyratBot
7269bd83ab [MIRROR] Adds USB to arrest consoles. Adds list circuit components. (#6593)
* Adds USB to arrest consoles. Adds list circuit components. (#59850)

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

* Adds USB to arrest consoles. Adds list circuit components.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
2021-06-30 20:01:36 +01:00
SkyratBot
a110c0a342 [MIRROR] Cooked steaks are once again edible. (#6577)
* Cooked steaks are once again edible.

* FF

* Update sheetifier.dm

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-29 16:56:25 +01:00
SkyratBot
5b2582de27 [MIRROR] Refactors species stomach code, makes ethereal charge inherent to their stomach (#6554)
* Refactors species stomach code, makes ethereal charge inherent to their stomach (#59801)

A stomach would literally just ask the species datum how to be hungry and made a bunch of exceptions for ethereals. I mostly just moved code around so that hunger is handled by a persons stomach, thus shrinking the species.dm bloat.

This also makes it so ethereal's charge mechanic is unique to their stomache, instead of this really weird inbetween where just nothing happens and you kinda starve to death. You can stick an ethereal stomach in a human and this will replace their hunger mechanic with the charge mechanic and lets them absorb power from APCs and everything. You can also give ethereals a normal stomach and they'll use the normal hunger mechanics

* Refactors species stomach code, makes ethereal charge inherent to their stomach

Co-authored-by: Time-Green <timkoster1@hotmail.com>
2021-06-27 16:44:17 +01:00
SkyratBot
9c861af7b7 [MIRROR] Greyscale Mat Datum Stationary Smooth Tanks (#6544)
* Greyscale Mat Datum Stationary Smooth Tanks

* Update icon_smoothing.dm

Co-authored-by: Emmett Gaines <ninjanomnom@protonmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-27 16:37:32 +01:00
SkyratBot
eb09b20e47 [MIRROR] Adds a kneecapping element and adds that very element to baseball bats. (#6541)
* Adds a kneecapping element and adds that very element to baseball bats.

* Update signals.dm

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-27 16:34:19 +01:00
SkyratBot
79c3c379b9 [MIRROR] Fix missing SIGNAL_HANDLER (#6552)
* Fix missing SIGNAL_HANDLER (#59826)

Adds SIGNAL_HANDLER to everywhere that didn't have it that was picked up by dm-lua, which is now ready enough to catch these.

* Fix missing SIGNAL_HANDLER

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-06-27 16:16:04 +01:00
SkyratBot
665fe76566 [MIRROR] Modifies right click logic so that it is not the same priority as modifier keys. (#6498)
* Modifies right click logic so that it is not the same priority as modifier keys. (#59656)

Strips out the existing right click code - Due to the myriad of ways right clicking has been implemented, dedicated signals and procs for right clicking without modifiers are fundamentally incompatible with our system of primary and secondary attacks.

Adds additional signals to attacking code. These signals allow atoms to cancel the attack chain early on secondary attacks, or override the standard procs and not send signals to prevent any undesired behaviour from signal handlers.

Items that used RightClick procs have been converted to attack_hand_secondary.

The slaughter demon, having its own set of snowflake code as poor OOP principles have been applied in UnarmedAttack() procs with lacking calls to parent procs and arbitrary redefinition of behaviour, checks for a right click in its own UnarmedAttack() and performs a bodyslam off that.

Storage components now hijack the secondary attackby stage via signals to handle their opening and closing shortcuts on right click. When you right click a storage component equipped item with an object in your active hand, the object has an opportunity to perform its logic in pre secondary attack code and cancel the attack chain. If it does not cancel the attack chain in pre-attack, then the storage component takes over for attackby and, if possible, opens the relevant inventory and ends the attack chain.

The forensic scanner is a proof-of-concept of this working in action. With its scan logic moved from afterattack code to pre attack code for right clicking, right clicking with the scanner will now perform a scan where previously one was impossible. Left clicking still does what it always does - Scans at the very end of the attack chain.

The logic still isn't perfect - For example, you still can't attack containers in melee even in combat mode (you'll either open them or put your weapon into them regardless of which option you choose) - But this is a better setup overall which allows for items to at least override this behaviour in pre-attack if needed.

* Modifies right click logic so that it is not the same priority as modifier keys.

* a

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-27 16:10:15 +01:00
SkyratBot
07e35c019a [MIRROR] Adds the airlock shell, refactors USB code to be easier to use, implements USB cables for the binary valve and more. (#6496)
* Adds the airlock shell, refactors USB code to be easier to use, implements USB cables for the binary valve and more. (#59728)

Adds the airlock shell. The circuit has full control over the airlock.
Refactors USB code to be easier to use for less experienced coders.
Implements USB cables for the binary valve to be able to open/close the valve.
Adds a private channel for radios that only lets circuits with the same owner's ID to interact with it.

* Adds the airlock shell, refactors USB code to be easier to use, implements USB cables for the binary valve and more.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-06-24 23:02:43 +01:00
SkyratBot
5ab9aba9d4 [MIRROR] Added circuit component UI details, added multiplexer and allowed inserting components directly into shells. (#6479)
* Added circuit component UI details, added multiplexer and allowed inserting components directly into shells. (#59635)

Adds the multiplexer circuit component - en.wikipedia.org/wiki/Multiplexer
Circuit components can now be directly inserted into shells rather than having to take the integrated circuit out.
Special information can be accessed from components now through the "Info" button besides the eject button on a component.

* Added circuit component UI details, added multiplexer and allowed inserting components directly into shells.

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
2021-06-23 22:50:59 +01:00
SkyratBot
dc4877bd74 [MIRROR] Converts tippable behavior from cows and medibots to a component (tip over anything with adminbus) (#6468)
* Converts tippable behavior from cows and medibots to a component (tip over anything with adminbus) (#59705)

This PR converts cow-tipping and medibot-tipping into a component, /datum/component/tippable. Cows and medibots now use the tippable component to control their tipping behaviors.

This PR also goes through a few atom_attack_hand signals and makes them all send the same arguments.

* Converts tippable behavior from cows and medibots to a component (tip over anything with adminbus)

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2021-06-23 18:59:45 +01:00
SkyratBot
5326760cb3 [MIRROR] Makes turfs persist their signals, uses this to optimize connect_loc (#6465)
* Makes turfs persist their signals, uses this to optimize connect_loc  (#59608)

* Makes turfs persist signals

* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear

* Converts all uses of connect_loc over to the new patterns

* Adds some comments, actually makes turfs persist signals

* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work

* bro fuck documentation

* Changes from a var to a proc, prevents admemems and idiots

* Extra detail on why we do the copy post qdel

* Makes turfs persist their signals, uses this to optimize connect_loc

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2021-06-23 04:23:48 +01:00
SkyratBot
d85a02babd [MIRROR] Refactors move procs to support multitle objects (#6423)
* Refactors move procs to support multitle objects

* Update _blob.dm

Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-22 22:40:04 +01:00
Useroth
873144d8ef Adds a setter for density (#59529) (#6437)
Adds set_density()
Fixes one instance of a duplicate density assignment on an object.
Comments two hacky usages of density which will have to forgo using the setter for now.

Lets us append code to the event of density changing.
Pretty sure this is leading up to some multitile object thing -Lemon

Co-authored-by: Rohesie <rohesie@gmail.com>
2021-06-22 01:24:59 +01:00
SkyratBot
19a30cb135 [MIRROR] Correctly pluralize multiple projectiles (#6418)
* Correctly pluralize multiple projectiles (#59702)

When something gets hit by multiple projectiles whose names end in "s", an extra "s" gets added to pluralize them. Sadly \s doesn't add the es, so I've made a proc with the other conjugation methods and used it for projectiles.

* Correctly pluralize multiple projectiles

Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
2021-06-21 00:50:07 +01:00
SkyratBot
60cb070bd6 [MIRROR] Improves H.A.U.L. gauntlets and /datum/component/strong_pull code, fixing a couple of little issues in the process (#6417)
* Improves H.A.U.L. gauntlets and /datum/component/strong_pull code, fixing a couple of little issues in the process (#59550)

Does a bit of a logic re-write on the cargo gauntlets and their strong_pull component.

Cargo gauntlets themselves have been converted to use signals for equipping and unequipping.

Their component reference has been changed to a weakref so if the component is ever Destroy()ed for any reason outside of the gauntlets it doesn't hard del.

The strong_pull component now registers signals with parent in RegisterWithParent() instead of Init() and removing the strong grip is no longer a SIGNAL_HANDLER proc. It is now called by the signal handler for no longer pulling things and in Destroy(). This stops instances where pulling things and removing the gloves didn't remove the pull effect appropriately.

* Improves H.A.U.L. gauntlets and /datum/component/strong_pull code, fixing a couple of little issues in the process

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2021-06-21 00:49:06 +01:00
SkyratBot
f5456b7524 [MIRROR] Fixes integrated circuits not being able to have more components added to them (#6386)
* Fixes integrated circuits not being able to have more components added to them (#59724)

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

* Fixes integrated circuits not being able to have more components added to them

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2021-06-19 21:47:46 +01:00
SkyratBot
6dde124398 The nth grown food refactor: Changes MOST unique plant effects into special plant genes/traits! Plant Genes+ (#59107) (#6307)
* Auto doc'd much of grown botany food and plant traits and renamed a buncha variables and parameters to match modern contribution guidelines.
* Cleaned up a good bit of plant gene code left over from the prior refactor and modernized some of it.

All plant effects that were once unique to a plant are now un-graftable, un-mutatable, un-shearable plant traits - called IMMUTABLE traits.
The ultimate goal of this PR was to make all of the hidden, arcane traits that are spread through botany's various plants and add a way to figure out they exist in game. Take omega-weed, for example, which has a maximum volume of 420 units.


What does this mean for the enterprising botanist?

In most cases, all the plants should act the same way. None of the immutable traits are graftable from any of the plants, they cannot be sheared off of the plant, and they cannot be mutated randomly from strange seeds or high instability mutations.

Though, in refactoring these traits, two things have been fixed: Novaflower's on hit and Deathnettle's on hit now proc again. If you aren't aware, Novaflowers apply firestacks and Deathnettles paralyze on hit. They've been in an unreachable code segment for a few years now and i'm not sure if they should be "fixed" or not, since I think they don't need any buffs.


A few other things have changed:
* Liquid Contents can no longer be applied to plants with Hypodermic Prickles, and visa-versa. They already didn't work together, but this means you need to go through an extra step to make LC-deathnettles.
* Killer Tomatos no longer have liquid contents. Didn't really make sense, anyways.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2021-06-16 22:40:14 +12:00
SkyratBot
1b122706a3 [MIRROR] USB Cables -- Connect circuits to computers/machines (#6327)
* USB Cables -- Connect circuits to computers/machines (#59345)

* Initial commit

* Sprites, finishing work

* More ways to detach from circuitboards

* Clear TODOs, give bots a button

* Fix qdel loop

* Designs

* It's the bots that have them

* Grammar fix

* Feedback for connecting to circuit directly

* Add USB cable design to basic circuitry

* Better naming

* Feedback

* Fix for new code

* COMSIG_CIRCUIT_ADD_COMPONENT_MANUALLY

* span procs

* USB Cables -- Connect circuits to computers/machines

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-06-16 00:37:07 +01:00
SkyratBot
7d1d0e1fad [MIRROR] Refactors most spans into span procs (#6315)
* Refactors most spans into span procs

* AA

* a

* AAAAAAAAAAAAAAAAAAAAAA

* Update species.dm

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-16 00:24:49 +01:00
SkyratBot
ab709c8dba [MIRROR] Refactors quirk code. (#6303)
* Refactors quirk code.

* Update neutral.dm

* 0

* Update neutral.dm

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
2021-06-15 23:48:10 +01:00
SkyratBot
75b3b2bc8b [MIRROR] Lizard Food: a Taste of the Homeworld (#6281)
* Lizard Food: a Taste of the Homeworld

* Mirror!

Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-06-14 18:36:47 +12:00
SkyratBot
de5689c9a5 [MIRROR] Fixes slip mood debuff (#6253)
* Fixes slip mood debuff (#59586)

This PR fixes a case where slip mood debuff was not triggering at all due to the simple fact that the mood component was not listening for the mob slip signal, so the relevant on_slip proc was never called and therefore mood debuff was never given.

Fixes #59570

* Fixes slip mood debuff

Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
2021-06-11 14:16:28 +12:00
SkyratBot
6f3b151bb8 [MIRROR] Fixes a bunch of harddels that are sourced from player action (#6252)
* Fixes a bunch of harddels that are sourced from player action

* Mirror!

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
2021-06-11 03:13:33 +01:00