Commit Graph

339 Commits

Author SHA1 Message Date
MrMelbert
993c9a335a Fixes attack equip element passing incorrect args (#70895)
* Fixes attack equip incorrect args

* These will never run
2022-10-31 11:37:59 +01:00
MrMelbert
70db96c46f Convert mouse and rat to basic mobs (#70728)
* Converts mice and rats to basic mobs

* Update paths

* Fixes

* Tweaks

* .

* Use helpers

* Unit test

* Correct the targeting

* Fixes the unit test?

* Fixes the unit test

* Docs

* update the path script with pr id

* Faction check tweak

* Review

* AHH
2022-10-28 08:49:17 -04:00
MrMelbert
7e31785057 Fixes some bespoke elements being passed non-static lists. (#70690)
Bespoke keys use references of lists in generation. Non-static lists will create a million instances of the element, not good.
2022-10-26 05:51:15 -04:00
MrMelbert
bfcfa1e3bb Refactors some signal misuse with the stationloving component (#70496)
* Refactors secluded locs

* Tweak

* Use traits instead of signals

* Review

* Type error
2022-10-25 15:00:26 -04:00
MrMelbert
629379f524 Fixes contextual bare hand element improperly setting up its element ID (#70538)
Fixes contextual barehanded screentips being inaccurate if only LMB text is set
2022-10-16 21:57:33 -04:00
MrMelbert
b6824fd76c Fixes null thrower runtime with plant backfire element (#70540)
Fixes null thrower runtime
2022-10-16 07:39:33 -04:00
itseasytosee
e0b706c36c Put clothing on people by clicking on them with clothing inhand + targeting correct area. (#69560)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-10-08 18:51:29 -07:00
MrMelbert
bc9ba63717 Adds a few (very) basic hallucinations, to keep people on their toes (#70251)
Spoiler alert!

    Adds a few extra "weird" fake body hallucinations.
        These just pop up a weird sprite somewhere in the view of the player.
        Another fun thing: Body hallucinations will appear to be floating if they spawn in nograv areas.
    Adds a "watcher" hallucination, a strange static figure that sticks on your screen until either a few minutes elapse. If you step out of view of it, then return, it will disappear.
    Adds a variant of the "fake death" hallucination which appears as if you were dusted.
    Adds two delusion - One that makes everyone appear to be ghosts, and one that makes everyone appear to be syndicates.
2022-10-07 20:18:21 -07:00
John Willard
243231eb48 Properly checks flags with & instead of == (#70130)
* Makes flags properly check themselves

Byond ref: https://www.byond.com/docs/ref/#/operator/&
Basically, flags should use & instead of ==
We can have more than 1 slot on any item, so it's preferred that we do this instead. Even if it doesn't immediately fix any problems, it's something that should be the standard anyways to prevent it from ever being a problem.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-09-27 21:51:45 +00:00
LemonInTheDark
23bfdec8f4 Multiz Rework: Human Suffering Edition (Contains PLANE CUBE) (#69115)
About The Pull Request

I've reworked multiz. This was done because our current implementation of multiz flattens planes down into just the openspace plane. This breaks any effects we attach to plane masters (including lighting), but it also totally kills the SIDE_MAP map format, which we NEED for wallening (A major 3/4ths resprite of all wall and wall adjacent things, making them more then one tile high. Without sidemap we would be unable to display things both in from of and behind objects on map. Stupid.)

This required MASSIVE changes. Both to all uses of the plane var for reasons I'll discuss later, and to a ton of different systems that interact with rendering.

I'll do my best to keep this compact, but there's only so much I can do. Sorry brother.
Core idea

OK: first thing.
vis_contents as it works now squishes the planes of everything inside it down into the plane of the vis_loc.
This is bad. But how to do better?

It's trivially easy to make copies of our existing plane masters but offset, and relay them to the bottom of the plane above. Not a problem. The issue is how to get the actual atoms on the map to "land" on them properly.

We could use FLOAT_PLANE to offset planes based off how they're being seen, in theory this would allow us to create lens for how objects are viewed.
But that's not a stable thing to do, because properly "landing" a plane on a desired plane master would require taking into account every bit of how it's being seen, would inherently break this effect.

Ok so we need to manually edit planes based off "z layer" (IE: what layer of a z stack are you on).

That's the key conceit of this pr. Implementing the plane cube, and ensuring planes are always offset properly.
Everything else is just gravy.
About the Plane Cube

Each plane master (except ones that opt out) is copied down by some constant value equal to the max absolute change between the first and the last plane.
We do this based off the max z stack size detected by SSmapping. This is also where updates come from, and where all our updating logic will live.

As mentioned, plane masters can choose to opt out of being mirrored down. In this case, anything that interacts with them assuming that they'll be offset will instead just get back the valid plane value. This works for render targets too, since I had to work them into the system as well.

Plane masters can also be temporarily hidden from the client's screen. This is done as an attempt at optimization, and applies to anything used in niche cases, or planes only used if there's a z layer below you.
About Plane Master Groups

BYOND supports having different "maps" on screen at once (IE: groups of items/turfs/etc)
Plane masters cannot cover 2 maps at once, since their location is determined by their screen_loc.
So we need to maintain a mirror of each plane for every map we have open.

This was quite messy, so I've refactored it (and maps too) to be a bit more modular.

Rather then storing a list of plane masters, we store a list of plane master group datums.
Each datum is in charge of the plane masters for its particular map, both creating them, and managing them.

Like I mentioned, I also refactored map views. Adding a new mapview is now as simple as newing a /atom/movable/screen/map_view, calling generate_view with the appropriate map id, setting things you want to display in its vis_contents, and then calling display_to on it, passing in the mob to show ourselves to.

Much better then the hardcoded pattern we used to use. So much duplicated code man.

Oh and plane master controllers, that system we have that allows for applying filters to sets of plane masters? I've made it use lookups on plane master groups now, rather then hanging references to all impacted planes. This makes logic easier, and prevents the need to manage references and update the controllers.

image

In addition, I've added a debug ui for plane masters.
It allows you to view all of your own plane masters and short descriptions of what they do, alongside tools for editing them and their relays.

It ALSO supports editing someone elses plane masters, AND it supports (in a very fragile and incomplete manner) viewing literally through someone else's eyes, including their plane masters. This is very useful, because it means you can debug "hey my X is yorked" issues yourself, on live.

In order to accomplish this I have needed to add setters for an ungodly amount of visual impacting vars. Sight flags, eye, see_invis, see_in_dark, etc.

It also comes with an info dump about the ui, and plane masters/relays in general.

Sort of on that note. I've documented everything I know that's niche/useful about our visual effects and rendering system. My hope is this will serve to bring people up to speed on what can be done more quickly, alongside making my sin here less horrible.
See https://github.com/LemonInTheDark/tgstation/blob/multiz-hell/.github/guides/VISUALS.md.
"Landing" planes

Ok so I've explained the backend, but how do we actually land planes properly?
Most of the time this is really simple. When a plane var is set, we need to provide some spokesperson for the appearance's z level. We can use this to derive their z layer, and thus what offset to use.

This is just a lot of gruntwork, but it's occasionally more complex.
Sometimes we need to cache a list of z layer -> effect, and then use that.
Also a LOT of updating on z move. So much z move shit.

Oh. and in order to make byond darkness work properly, I needed to add SEE_BLACKNESS to all sight flags.
This draws darkness to plane 0, which means I'm able to relay it around and draw it on different z layers as is possible. fun darkness ripple effects incoming someday

I also need to update mob overlays on move.
I do this by realiizing their appearances, mutating their plane, and then readding the overlay in the correct order.

The cost of this is currently 3N. I'm convinced this could be improved, but I've not got to it yet.
It can also occasionally cause overlays to corrupt. This is fixed by laying a protective ward of overlays.Copy in the sand, but that spell makes the compiler confused, so I'll have to bully lummy about fixing it at some point.
Behavior changes

We've had to give up on the already broken gateway "see through" effect. Won't work without managing gateway plane masters or something stupid. Not worth it.
So instead we display the other side as a ui element. It's worse, but not that bad.

Because vis_contents no longer flattens planes (most of the time), some uses of it now have interesting behavior.
The main thing that comes to mind is alert popups that display mobs. They can impact the lighting plane.
I don't really care, but it should be fixable, I think, given elbow grease.

Ah and I've cleaned up layers and plane defines to make them a bit easier to read/reason about, at least I think.
Why It's Good For The Game
<visual candy>

Fixes #65800
Fixes #68461
Changelog

cl
refactor: Refactored... well a lot really. Map views, anything to do with planes, multiz, a shit ton of rendering stuff. Basically if you see anything off visually report it
admin: VV a mob, and hit View/Edit Planes in the dropdown to steal their view, and modify it as you like. You can do the same to yourself using the Edit/Debug Planes verb
/cl
2022-09-27 20:11:04 +13:00
LemonInTheDark
2d89c7d4d3 Fixes weather sounds (#69944)
* Fixes weather sounds

Timber changed the args to this signal in cbc6f35f54, and didn't update my code.
Damn you timber.

Thanks to that bro in coderbus who told me about this
2022-09-26 20:37:35 -04:00
Tim
c300c5e90d Fix tongue tied restricting infectious zombie communication (#69840)
* Fix tongue tied communication being restricted with hand objects and adds support for people with more than 2 hands.
* Makes zombie claws 'hand objects'.
2022-09-25 07:30:34 -04:00
MrMelbert
45516f4741 Adds macros to help with common set_- and adjust_timed_status_effect uses (#69951)
* Adds helpers for status effect application
2022-09-24 11:04:26 -04:00
John Willard
a0442ee002 Removes persistence of items through changing species when not allowed to (#70008)
* Removes persistence of species-restricted items through changing

Makes use of item's mob_can_equip instead of mob's can_equip, making it take the item's restrictions into account.

Also, fixes the inventory's color, so it's properly red when you can't equip such an item, by making it also use mob_can_equip.

Finally, expands the species clothing unit test to take that into account, to prevent it breaking in the future.
2022-09-21 10:32:33 -07:00
Sealed101
e901881080 Fixes async_fire_ranged_attack failing to get target_mob for targeting body zone (#70001)
* fix var missing passed value in fire_ranged_attack, allowing glockroaches to fire again.
2022-09-19 20:02:38 -04:00
Tim
4a61f37418 Planks create barricades on doors/windows and can be crowbarred (#69676)
* Wooden planks can be used on doors/windows to barricade it, using a can_barricade Element.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2022-09-14 23:39:50 -04:00
Arturlang
2be5bc531d Removes-blind_eyes (#69652)
* Removes blind_eyes, replaces it with adjust_blindness.
2022-09-04 16:05:10 -04:00
MrMelbert
b46c0bd7a7 Adds a new revenant spell, Haunt Object, which imbues nearby objects with ghostly energy (#69348)
* Adds a new revenant spell, Haunt Object, which makes nearby items glow purple and throw itself at stuff.
2022-09-02 02:18:50 -04:00
MrMelbert
bc90ded5b8 Buffs Heretic Curses, Living Heart, Leeching Walk, and technically Entropic Plume by fixing some bugs (#69181)
About The Pull Request

    Heretic curses have been buffed / reworked.
        Curses can be cast on any crewmember, not just those who you have fingerprints to.
        Having an item present in the ritual that contains fingerprints OR blood dna of a crewmember who you are cursing will boost the curse, causing it to last longer (and be stronger? Still undecided, but there's support for it)
        Curses have a max range (64 by default) and don't work on people on a different z-level (Do not BTFO miners so easily)
        Corrosion curse's numbers have been tweaked due to this, and it can no longer cause vital organ failure

    Living Heart has been buffed
        Cooldown cut in half, and it provides a bit more thorough instructions
        Closes 

    Living heart targets who are located in non-turf locs and are off z-level will show as on the same z #67256

Leeching Walk has been buffed

    Rust will also restore lost blood.

Technically buffs Entropic Plume by fixing some bugs

    "Cloudstruck" has always meant to blind, but they used the wrong method, so I fixed that.
    Also it was meant to inject multiple units of poison, but used "min" instead of "max" so it always did the lowest.
    I also fixed the stink cloud lasting forever on people.
    Amok also makes people holding guns to shoot people further away.

Closes

    Admin healing removes heretic living heart #69167 while I'm here

Why It's Good For The Game

    Heretic curses have pretty much always been bad, getting fingerprints is damn near impossible considering everyone uses gloves. Not only that but their requirements were very high. This should hopefully bring curses to the limelight, as they can be applied to any potential targets. It also rewards heretics who go out of their way to collect fingerprints and blood samples with even stronger curses.

    The Living Heart was often hard to pinpoint people exactly, partially cause of an oversight. I improved the text to be clearer about potential locations of your targets.

    Leeching Walk's healing was nice, but blood wounds were still a major threat. Some blood restoration should help.

    Entropic Plume I think has never worked correctly, so that was a bummer. Fixes that.

Changelog

cl Melbert
balance: Heretic: Curses have been reworked. You can now curse any member of the crew, granted they're not too far away. If you additionally provide an item in the ritual containing a sample of the target's blood or fingerprints, the curse's duration will be increased and have its range uncapped.
balance: Heretic: The Curse of Corrosion has been nerfed slightly due to this rework, and can no longer cause vital organs to fail.
balance: Heretic: The Living Heart should now provide better directions, and had its cooldown halved to 4 seconds.
balance: Heretic: Leeching Walk (rust healing) now restores lost blood.
balance: Heretic: If you apply Amok (Entropic Plume) to someone holding a gun, they'll try to shoot it at people nearby.
fix: Entropic Plume's effect now blinds, as it should.
fix: Entropic Plume no longer sometimes applies the stink effect forever.
fix: Entropic Plume no longer always applies the lowest amount of poison, and properly scales on distance.
fix: Fixed an exploit which allowed people to figure out if a Heretic's heart was a previously a Living Heart after being removed.
fix: If a heretic is fully healed by something (such as ahealed), they'll not lose their living heart
/cl
2022-09-02 09:47:25 +12:00
MrMelbert
de04b3be80 Kills /obj/shapeshift_holder, replaces it with /datum/status_effect/shapechange_mob, also does a lot of Wabbajack refactoring (#69091)
About The Pull Request

    Deletes /obj/shapeshift_holder, replaces it with /datum/status_effect/shapechange_mob
    Refactors Heretic worm form into a shapeshift spell
    Refactors Wabbajack, and associated code

Fixes #69117
Fixes #65653
Fixes #59127
Fixes #52786
Why It's Good For The Game

/obj/shapeshift_holder was one of the worst remaining abuses of /obj direct subtypes, so I replaced it with a cool fancy datum.

This also decouples the shapeshifting behavior entirely from the shapeshifting spell. So we have support for shapeshifted mobs not sourced from a spell. Which is neat, we could technically swap Wabbajack to use this in the future.
Changelog

cl Melbert
fix: Wabbajacking a shapeshifted mob no longer runtimes horribly. When a shapeshifted mob is wabbajacked, they'll now be removed from their shapeshift and stunned.
fix: Transforming via a shapeshift should no longer rob you of your hearing / runechat awareness.
fix: Shapeshifting plays nicer with holoparasites.
fix: Being polymorphed from a xeno to a non-xeno correctly makes you a non-xeno
refactor: Refactored shapeshifting, the shapeshift holder is now a status effect instead of an object.
refactor: Heretic worm form is a shapeshift spell now, this might have some minor behavioral changes but should overall be the same.
refactor: Refactored Wabbajack (+ cursed pool). Overall a bit more clean / consistent behavior.
/cl
2022-09-02 09:44:41 +12:00
Tim
388d0b9744 Fix slimepeople soft landing showing message for stairs and self (#69263)
* Fix soft landing showing messages for self and stairs

* Fix syntax error

* Fix missing return syntax

* Move turf check out of loop
2022-09-01 00:20:47 -04:00
tralezab
ce20a5b85e Cows can eat wheat off the ground. If cows see wheat on the ground, they'll try to go eat it (+ moonicorns with galaxy thistle) (#69253)
About The Pull Request

Cows are now grazers, they love eatin' wheat and it even heals them if hurt. If they see it just on the ground, they might eat it all! Careful, botanists! While tamed, cows won't eat off the ground if they're busy ferrying you around.

FYI: this is going to conflict with #69247 and so thiss should not be merged until that is

Why It's Good For The Game

Wanted to add this with the original port of cows to basic mobs, didn't have the TECH to do so. Now I do, now it's done. I also wanted it ready for the future where mice and rats are ported, so they'd seek out cheese to eat. I also also think it's a neat way for a cow to heal.
2022-08-30 15:39:30 -07:00
Jacquerel
bcadead566 Chasm Fishing (#69252)
Adds the capability of fishing in chasms.
Chasms contain Chasm Chrabs, which are cute little crustaceans you can eat or put in an aquarium.
More importantly, chasms contain everything which has ever fallen into a chasm.
Falling into a chasm is no longer instant permanent round removal... as long as someone is willing to do some fishing, which means your chances of return haven't necessarily increased that much.

Potential rescuers (or people lamenting about how they dropped their necropolis chest into a hole) should also beware, chasm crabs are actually young Lobstrosities and there's a rare but not insubstantial chance that you'll fish one of them up instead, which won't make it very happy.

If you somehow come back to life inside a chasm (generally only likely by being a changeling or some admin interference, but perhaps you have some kind of implant which does it) you'll climb back out again, so holes are no longer a way of disposing of a changeling for good. You think The Thing would be defeated if you threw it down a hole?
Ethereals can't manage this because falling into a chasm causes too much damage and they simply smash on the way down.

add: You can now fish in chasms, and might manage to catch things that careless miners have dropped in there.
add: If your pole is long enough to reach into a deep hole, you might catch crabs.
balance: Changelings can climb out of chasms if you throw them into one.
imageadd: An icon of a nice little crab, who will grow up into something less nice.
add: You can craft fishing equipment from various lavaland materials, so that Ashwalkers can fish up dead miners before you.
add: You can sometimes find worms while digging up tiles, if appropriate for that material.
2022-08-25 20:13:36 -07:00
tattle
d91390a447 [IDB IGNORE] The Great Sweep: Moving dmis into subfolders (part 1) (#69416)
Moves singulo and supermatter dmis into obj/engine, renamed from obj/tesla_engine
Moves Halloween, Christmas, and misc holiday items to obj/holiday
Moves lollipops to obj/food
Moves crates, closets, and storage to obj/storage
Moves assemblies to obj/assemblies
Renames decals.dmi to signs.dmi ...because they're signs and not decals
Moves statues, cutouts, instruments, art supplies, and crayons to obj/art
Moves balloons, plushes, toys, cards, dice, the hourglass, and TCG to obj/toys
Moves guns, swords, shields to obj/weapons
2022-08-24 20:49:35 -03:00
ShizCalev
50f8a03502 Converts a bunch of things over to get_random_valid_zone() (#69331)
refactor: A bunch of things that used to not do anything (or just fall back on the chest) when targeting a limb that someone was missing will now be far more likely to attack another limb!
2022-08-21 16:27:12 -07:00
ShizCalev
8005d112a3 Fixes update_icon_updates_onmob not working. (#69308) 2022-08-18 19:11:57 -07:00
Seth Scherer
f1a363c825 Converts a shitload of istypes to their more concise macros (#69260)
* Converts a lot of istypes() to use their istype macro helpers.
2022-08-18 22:08:44 -04:00
Kapu1178
2eccf3cea0 Cleans up update_icons, makes the update_icon_updates_onmob element bespoke, updates CODEOWNERS (#69179)
* I just realised this is all one commit.

* hail marry

* fix.

* FIXES IT FOR REAL

* Update code/datums/elements/update_icon_updates_onmob.dm
2022-08-16 13:50:21 -04:00
ShizCalev
43a77d71c6 Fixes runtime when ghosts examine artwork (#69200)
Fixed a runtime caused by ghosts examining artwork. Your ancestors will no longer be able to admire your crayon drawings, sorry.
2022-08-15 14:58:58 -07:00
tralezab
a555c22bbe Simple flying element typecast thing (#69191)
* Simple flying now doesn't check for simplemob.
2022-08-14 23:12:04 -04:00
tattle
e427fcf8ce Makes alerts for blind people being fed/stripped larger (#69171)
Revert "blind alert too big for stripping and feeding (#69114)"

This reverts commit 6b0c6e8ded.
2022-08-13 13:40:14 -04:00
John Willard
91628279fd Fixes some issues with deafness & earhealing (#69136)
1- Replaces checks for deafness as a clothing trait, since clothing traits' have a ref to themselves in the source
2- Makes ear healing not NOT heal if you're above 0 ear damage, because that's the point of fixing your ears?
2022-08-13 13:37:21 +08:00
Mooshimi
6b0c6e8ded blind alert too big for stripping and feeding (#69114)
About The Pull Request

span_userdanger -> span_danger

Why It's Good For The Game

I think it's hilarious that it's that big, but it's not necessary. It only makes sense for blind hit alerts which use span_userdanger for nonblind alerts too.
2022-08-12 09:43:11 -07:00
Seth Scherer
34b4034777 Replaces the mood component with a mood datum (#68592)
About The Pull Request

Mood was abusing signals and get component pretty badly, so I redid it as a datum to stop this.
Why It's Good For The CODEBASE

Better code pratices, also gives admins easier tools to manage mood
Changelog

cl
admin: Added two new procs into the VV dropdown menu to add and remove mood events from living mobs.
/cl
2022-08-12 08:59:20 +12:00
CapybaraExtravagante
514ae6f121 Fixes "Burning rust off walls doesn't blind you" (#68986)
* Fixes rust element not correctly using tool procs, now welding rust off will properly blind the user.

Co-authored-by: Capybara <Capybara@CapybaraMailingServices.com>
2022-08-06 05:05:30 -04:00
Mooshimi
f340897498 blind people know when things happen to them (#68950)
* Update strippable.dm

* hit by things blind support

* indentation sadness

* wrong var type moment

* Update code/datums/elements/strippable.dm

I didn't touch this but sure we can add this

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>

* requested changes

Co-Authored-By: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-08-05 20:25:59 -04:00
tralezab
0728fb3840 New Lavaland Monster: Bileworms (#68967)
Bileworms are a new lavaland monster, that has unique AI that should prove them.

Instead of moving normally, it periodically burrows underground and resurfaces nearby.
Its attack is an AOE acid spit.
2022-08-05 11:07:34 +02:00
Mooshimi
b09f3868f8 individual LOG_GAME (#68683)
About The Pull Request

    replaces a ton of log_game with user.log_message so the log is added to individual and global logs.
    adds a few logs for individual LOG_VICTIM, LOG_ATTACK etc logging.
    adds logging for bluespace launchpad's tele coords being changed.
    took the word "has" out of log_combat, as it's extra and just lengthens the log.

Why It's Good For The Admins

It's extremely laggy to open game.txt so an alternative is individual game logs
Changelog

cl
admin: A lot of game logs will now also be in individual game logs, for convenience in log diving.
admin: Added logging for bluespace launchpad x and y offset changes, which go to individual game logs.
admin: Attack logs will now be slightly shorter, one useless word was removed.
/cl
2022-08-05 09:32:02 +12:00
Profakos
5b0b56eef4 Fixes the freezing component (#68737) 2022-07-30 20:49:54 -05:00
John Willard
e67a6068b3 Fixes candy not dropping wrappers when used to make salad (#68793)
* Food trash element drops trash when used

Makes trash food element drop the trash food (like candy wrappers) when used as an ingredient in stuff, like putting it in a bowl to turn it into a salad.

* Update food_trash.dm
2022-07-30 04:57:30 -04:00
Jacquerel
a8b95bb59b You can no longer delete the nuclear disk using a windoor (#68770)
removed a way that you could send items into the void using just a windoor and a pal
2022-07-29 13:39:56 +02:00
Gamer025
aba3bc80e0 Fix incorrect calls to UnregisterSignal (#68698)
Fix calls to UnregisterSignal
2022-07-24 20:50:27 -05:00
ArcaneMusic
cad307513f Adds screentips to rolling beds and body bags. (#68331)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2022-07-22 20:50:37 -07:00
Kylerace
fe7513d282 addresses reviews on the tram pr made after merge, fixes diagonal movement bugs (#68033) 2022-07-16 21:44:41 -07:00
Fikou
a592c777ff Makes backblast not runtime, moves some of its behaviour to an "incendiary/fire" parent (#68397)
* just a normal fire projectile

* Update code/modules/projectiles/projectile/bullets/_incendiary.dm
2022-07-16 05:03:44 -07:00
Y0SH1M4S73R
111b1ffe01 Most compoennts/elements that register COMSIG_PROJECTILE_ON_HIT can now be applied to turrets and projectile spells (#68238)
expands elements that register COMSIG_PROJECTILE_ON_HIT
2022-07-15 23:59:36 -07:00
magatsuchi
7d0f393f5d Tsu's Brand Spanking New Storage: or, How I Learned To Pass Github Copilot As My Own Code (#67478)
Currently, storage works as a subtype of /datum/component, utilizing GetComponent() and signals to operate. While this is a pretty good idea in theory, the execution was pretty trash, and we end up with alot of GetComponent() snowflake code (something that shouldn't even need to be used frankly), and a heaping load of scattered procs that lead into one another, and procs that don't get utilized properly.

Instead, this PR adds atom_storage and proc/create_storage(. . .) to every atom, allowing for the possibility of storage on quite frankly anything. Not only does this entirely remove the need for signals, but it heavily squashes down the number of needed procs in total (removing snowflake signal procs that just lead to one another), reducing overall proc overhead and improving performance.
2022-07-08 18:13:18 -07:00
MrMelbert
cdc50e27eb Fixes some cases which references are used in trait sources, potentially causing hard deletes (#67974)
About The Pull Request

Fixes some cases in which actual references were used in trait sources instead of keys (or ref() keys).

This can cause some rare and difficult to find hard deletes.

Trait sources should be a string key relating to the source of it, not an actual reference to what added it. References within trait sources are never handled in Destroy(), because it's not expected behavior, meaning it can cause hanging references.

So, I went through with a regex to find some cases and replaced them.
I used the following and just picked through the few by hand to find erroneous ones.
ADD_TRAIT\(.+, .+, [a-z]+\)
REMOVE_TRAIT_TRAIT\(.+, .+, [a-z]+\)
Why It's Good For The Game

Less hard deletes, probably.
Changelog

cl Melbert
code: Some traits which mistakenly were sourced from a hard reference are no longer.
/cl
2022-07-04 12:02:17 +12:00
MrMelbert
24b4109f1c MULEbots uses the blood walking element (now component), fixes MULEs tracking blood infinitely (#68047)
Blood walking is a component, MULES use blood walking
2022-06-28 22:51:51 -04:00
MrMelbert
5512a1a12c Fixes the frozen status trait never being applied (#68015)
* Fixes the frozen trait never being applied

* Don't apply if we already have the trait

* Check the target obj
2022-06-27 17:10:45 -04:00