Commit Graph

4090 Commits

Author SHA1 Message Date
Rohesie
a7f81bd169 Uses regex datums and macros for text-manipulation (#61042) 2021-08-27 11:13:57 +02:00
MrMelbert
b3e8eebdc9 Kills /obj/item/melee/transforming, replaces it with a transforming weapon component (#60761)
This PR kills off the transforming subtype of /obj/item/melee and replaces it with a component to handle the transforming behavior, /datum/component/transforming.

The transforming component handles updating the variables of an item when it's transformed. Things like force, sharpness, whetstone force bonus, and attack verbs. Similar to the two-handed component, but instead of transforming into a two-hander it remains a one handed weapon.

The "nemesis" behavior (dealing addition damage to certain factions) of the transforming subtype was moved to the cleaving saw only, since it was the only transforming item that used it. In the future, this can be made into a bespoke element/component as well.

The following weapons and items have been updated to use this component:

    Energy Swords / Sabers / Bananium Energy Sword
    Energy Circular Saw
    Energy Dagger
    Energy Axe
    Toy Energy Sword
    Holographic Energy Sword
    Switchblade
    Advanced Medical Tools (Laser scalpel, Mechanical Pinches, Searing Tool)
    Advanced Engineering Tools (Hand Drill, Jaws of Life / Syndicate Jaws of Life)
    Combat Wrench
    Cleaving Saw
    Telescopic Batons / Contractor Batons
    Roasting Stick
    Telescopic Riot Shield
    Energy Shield / Bananium Energy Shield

This PR also touches up the code around the various above items.
2021-08-23 11:45:54 -07: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
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
3d1d68d727 Fixes a warning that some guy left in freezer.dm code (#60887)
* Fixes a warning that some guy left in

* Changes

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
2021-08-16 14:23:10 -07:00
LemonInTheDark
cd576ab519 Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com>
2021-08-15 21:09:26 -07:00
Ghom
bcc6e272a1 freezers will now actually protect their contents from explosions once. (#60875)
It's supposed to shield contents from explosions, not only itself.
2021-08-15 17:28:21 -04:00
LemonInTheDark
79dc58fe2a Redoes how alarms are handled, moves their behavior to datums (#60060)
* Adds in a set of datums to support sending, listening and storing alerts
In contrast to the old system, we now store a list of send alerts on the listener, rather then the area itself.

This makes clearing "our" alerts on destroy not a massive headache.

In addition, we now use a direct ref to the area's cameras list and signals to prevent camera hard deletes. This, combined with the aformentioned ability to clear, virtually eliminates hard deletes
sourced from alerts caused by strange senarios like the alert source moving its tile.

* Converts areas to the system, of note is the fact that areas no longer store a bool that determins if an alert
for power or atmos has been sent, that's instead handled by the alert sender datum. This means the sources list
on alert listeners actually means something

additionally, in order to prevent dumbassery with fire alarms since they're area based, fire alerts are sent by
an alert handler on the area itself
2021-08-13 11:54:44 -07:00
Fikou
80ff565548 Revert "Revert "Barticles for bonfires 2021 (#59869)" (#59916)" (#60469) 2021-08-12 16:12:00 -07:00
Fikou
6807910a8d fixes cannons not working (#60757) 2021-08-11 23:40:42 +02:00
Fikou
270acce4f5 [Ready] Mining Loot Rework (#60516)
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2021-08-08 02:22:34 -07:00
aaaa1023
b247c2756f Toilet deconstruction error fix (#60725) 2021-08-07 19:43:52 -07:00
Ghom
ad5a01ba78 railings can now be vaulted/climbed over from both sides. (#60110)
Quality of life; it spares us from having to walk all the way around or destroy them with either a wirecutter (faster) or any impromptu weapon (slower, as they currently have 300 maximum integrity, despite taking only three iron rods - one more than grilles - to make) in certain occasions, and it's already a thing on other codebases that have railing objects.
2021-08-06 15:28:13 -03:00
InsaneRed
2b4b3f0790 removes TRAIT_RESTRAINED from xeno nests (#60676) 2021-08-04 01:42:50 -07:00
Paxilmaniac
d4fa2905ff Deployable Component (Big Dakka Included) (#60554) 2021-08-04 01:18:09 -07:00
Ghom
e13af3ab93 surgery_initiator component to element. (#60634) 2021-08-02 18:12:18 -07:00
Thunder12345
ff360dda43 Kills misc clothing files (Almost) (#60481)
Co-authored-by: Thunder12345 <stewart@critar.demon.co.uk>
2021-08-01 18:56:09 -07:00
tralezab
7ef1aa8922 fixes cannons losing their sprites (#60559) 2021-07-31 21:15:21 -07: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
Greniza
d8aa3b4534 fixes issues with prisoner EPBs (#60435) 2021-07-28 17:03:32 -03:00
Tim
17c8b64675 Add plasma xeno statue (#60408)
The sprite existed for a long time but was never added to the code for some reason.
2021-07-26 00:27:04 -07:00
Imaginos16
30892aa892 Ports/Adds new outfits for command and centcom staff! (#60414) 2021-07-25 23:35:35 -07:00
tralezab
3326f9a439 Kills grown/misc.dm (#60360) 2021-07-22 03:38:35 -07:00
LemonInTheDark
96cc4a7260 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.
2021-07-19 12:41:21 -04:00
Rohesie
4c21166e4f Job refactor: strings to references and typepaths (#59841)
* Job refactor: strings to references and typepaths
2021-07-18 20:48:47 +02:00
coiax
e4e3195f88 Replace a number of New() overrides with Initialize() (#60223) 2021-07-15 18:14:20 -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
Ghom
de4c7faa77 Less absurd sturdiness for railings, more in line with grilles now. (#60111) 2021-07-10 17:41:27 -07:00
Matthew J
5a5cf6933e Rust Component / Wirebrush Rust Remover (#59977)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-07 03:45:57 -07:00
Fikou
cd5c44d4ed Set commission plaques to below open door layer (#59984)
it looks bad when you drop an item
2021-07-04 17:47:51 +01:00
Greniza
b2ecb787e1 Environment Protection Bags + Minor Weather Changes (#59752)
Co-authored-by: Matthew J. <12817816+ZephyrTFA@users.noreply.github.com>
2021-07-03 22:05:58 -07:00
Arkatos1
be92d05a4b Large cardboard box icon fix (#59938)
* cardboard box fix
2021-07-03 20:39:56 +02:00
Timberpoes
d4ed79af38 Fix error on secondary attacking certain secure closets. (#59867)
* Feex

* Reviewify
2021-07-02 16:17:33 -07:00
aaaa1023
4ae906446f Sink frames are now deconstructable (#59887)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2021-07-01 21:32:19 -07:00
LemonInTheDark
d368e4d49d 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>
2021-06-30 20:51:35 -04:00
Mothblocks
7eacef421a Revert "Barticles for bonfires 2021 (#59869)" (#59916)
This reverts commit 0ad74e9637.
2021-07-01 11:01:26 +12:00
tralezab
0ad74e9637 Barticles for bonfires 2021 (#59869)
* barticles

* better bode
2021-06-30 14:31:48 -07:00
Wayland-Smithy
fcf6bbd9ec Fix cyborg locker right click (#59885)
I guess silicon shared the old AltClick proc with other living, but that is not the case for secondary click.
2021-06-30 13:47:41 -03:00
KubeRoot
31e9f7444a Make transit tube dispenser stations buildable (#59852)
Dispenser stations had some sprite issues due to using wrong icon states and having wrong orientation for flipped versions.

This PR fixes the issues and adds them to the RPD.
I can remove them from RPD construction if you don't want them to be constructible - this was the main motivation for implementing the changes in a downstream.
2021-06-30 13:39:01 -03:00
Mothblocks
23790c6c5e 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.
2021-06-27 15:43:49 +01:00
Coconutwarrior97
c13a7a83a9 Free golem policy (#59831)
Adds policy.json functionality for Free Golems, will make it easier for future headmins to alter the policy.json rather than PR a change.
2021-06-27 15:18:42 +01:00
Timberpoes
929d88e600 Fix incorrect return for closet attack_hand_secondary causing lockers to have their locks toggled twice. (#59814)
/obj/structure/closet/attack_hand_secondary(mob/user, modifiers) doesn't return one of the expected attack chain cancelling/continuing defines and instead returns TRUE.

This means that right clicking them acts as a secondary attack followed by a primary attack.

When the secondary attack against a secure closet actually attempts to toggle the lock, it now cancels the entire attack chain.
2021-06-26 01:18:47 -03:00
Rohesie
80fb0d3e83 Fixes blockers blocking themselves + cleanup (#59808) 2021-06-25 13:37:46 -07:00
Rohesie
82dc71c3ae CanPass refactor (#59804) 2021-06-25 13:36:00 -07:00
Arkatos1
0b6bcbe711 Integrates spider eggs into the mob spawners (#59727)
Integrates spider egg clusters into the mob spawners instead of them being their own thing, which cleans up a code a fair bit, and gives players an overview of all available types of clusters in the ghost spawners menu, example image below. This also means players banned from ROLE_ALIEN will not be able to spawn as one, as they are very similiar antagonists in concept and it is probably wiser than using default ROLE_LAVALAND on mob spawners for restriction of this role.
Expanded mob spawners code to accomodate for a situations where spawners are using radials for handling mob choosing, and also for when spawners have special conditions for when they are available (like until eggs are mature, for example).
Mob spawners now support giving their mobs multiple factions membership, instead of being limited to only one.
Spider egg clusters now stop processing when they mature, as there is no need for them to do that anymore by that point.
Cleaned up and updated some spider variant radial info boxes, so players have better idea about each variant individual strengths and weaknesses.
2021-06-25 00:09:19 -03:00
Timberpoes
75a3717a04 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.
2021-06-24 14:30:33 -03:00
LemonInTheDark
6fcbce39cd 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
2021-06-22 23:12:34 -04:00
TemporalOroboros
298725bf29 Fixes bodybags, cargo crates, and directional lighting. (#59709)
Fixes a couple bugs created by the neon carpets PR:
* Bodybags can once again be closed. (Fixes #59704, Fixes #59747)
* Cargo crates no longer report having delivered an emissive blocker
* Directional lighting no longer masks the emissive plane.
2021-06-22 19:35:45 -03:00
MMMiracles
651ad9272b Tramstation Tram "Upgrades" (#59277)
The tram now smashes through walls instead of phasing through them. Spawns sparks and shakes the screen for nearby observers as the tram kool-aids its way through obstructions.
The tram now equal-opportunity smashes through most machinery and structures. If a structure is normally not anchored by default (girders, lockers, closets, ect), it will unanchor them and throw them while doing some damage. Machinery now actually gets destroyed when hit by the tram, which also fixes the issue with the recycler breaking the tram.
Tram platforms themselves have been made inherently indestructible to prevent them from ever breaking in any unexpected gameplay method.
The permabrig mouse has been moved to the general activity room instead of the room with the exposed APC wiring.
2021-06-22 13:31:37 -07:00