Skip to content

PK Anomaly Modkits#367

Open
keygenpie wants to merge 39 commits into
Monkestation:masterfrom
keygenpie:anomaly-modkits
Open

PK Anomaly Modkits#367
keygenpie wants to merge 39 commits into
Monkestation:masterfrom
keygenpie:anomaly-modkits

Conversation

@keygenpie

@keygenpie keygenpie commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

About The Pull Request

Adds a blank anomaly modkit, which allows insertion of an anomaly core to create specialized PKA upgrades. It must be researched in the same technode as the other craftable PKA upgrades, fabricated, then fit with an anomaly core. Any core will work, but similarly to the reactive armor shell, only seven are coded in, the rest defaulting to the gravitic pulverizer (gravitational anomaly core) upgrade.

Why it's Good for the Game

Despite Oculis Station being functional partially as a means of researching the planet lore-wise, Research and Mining do not have many connections. Additionally, anomaly cores do not have many uses, and most of the usual PK upgrades are kind of boring, though necessary. Obviously there should be damage and cooldown upgrades, but there isn't much in the way of more flashy stuff like miners' other options have (crusher trophies, wasteland guns, etc).

Adding anomaly modkits is able to mend all of this; there is a new interactive bridge between the Research and Mining departments, anomaly cores get new uses, and PKAs get to have more fun choices to play with while being brought more in-line with the other choices of weaponry that miners have access to. Everyone wins.

Proof of Testing

Screenshots/Videos

All of the different anomaly upgrades.

image image

The blank modkit in the Low-Pressure Excavation technode.

image

Here it is in the supply lathe, just waiting for an anomaly core.

image

Here is a shitty (but functional) demo video of all of the upgrades. The flux capacitor is missing because that one is just stat upgrades, but the rest are demonstrated here.

ss13anomalypkdemos.1.mp4

Changelog

🆑
add: Added a blank anomaly kit, which can be fit with anomaly cores to create unique PKA upgrades.
/:cl:

keygenpie added 24 commits July 16, 2026 08:00
Taken mostly from reactive anomaly armor's code
Taking from any of the dimensional themes, as it turns out, fucks you over via uranium or some similar dangerous dimensional shifts. Borrowing from the reactive armor theme system allows it to be safe, though it also includes the barricades.
It kinda sucked, down to the concept. As fun as it is to do the dimensional anomaly fuckery with a PKA, it just doesnt fit the job, and has too much griefing potential.
@Salted-Zen

Copy link
Copy Markdown
Contributor

These sounds interesting, however I have to ask if and how they will affect PVP, and what the heck does the Geist specifically do?

@Salted-Zen

Copy link
Copy Markdown
Contributor

Last thing id want is someone getting smitten with lightning 600 times by duel repeaters.

@keygenpie

Copy link
Copy Markdown
Contributor Author

These sounds interesting, however I have to ask if and how they will affect PVP, and what the heck does the Geist specifically do?

For the most part, PvP should be unaffected, though there is certainly a concern with the lightning. My argument is that, at the point where you are getting anomaly core refinement and inter-departmental interaction, and you are in a role where you need to do PvP, there are far easier, more effective, and less trackable options. Additionally, the lightning is not very strong, only acting as an addendum to the PKA's damage, rather than the primary source of it. Also- it can pretty easily be dodged. There's a second of delay with a clear telegraph, it's plenty of time to move out of the way.

As for the Geist Projector, it applies the haunted modifier to nearby objects, causing them to be flung at the target. The idea is that it allows the random lavaland rocks and uncollected ores to do something neat by being flung at enemies. Just some fun environmental interaction, but the throw damage isn't really very high, acting similarly to the lightning as a means of throwing on a bit of extra damage, more than the regular damage modkits but not overpoweredly so.

Overall, this is somewhat experimental in nature, and only in further testing will I be able to get the full implications of what the different upgrades do, but I don't think they're actually very strong outside of PvE, especially compared to some of the other things that roles like security or antags have access to.

@Salted-Zen

Copy link
Copy Markdown
Contributor

Well, I believe the best kind of testing is live environment testing, so I do believe the only way to tell for sure if to test it on live. However I would appreciate videos of the mod kits being used, as the screen shots certainly leave a lot up for confusion. If i had known it was staff of storm style lightning my concerns would be null.

@keygenpie

Copy link
Copy Markdown
Contributor Author

I should specify- the Geist flinging isn't immediate. The objects float at the target slowly before throwing themselves and becoming unpossessed after the timer lets up, unless sustained by firing more. Much like the lightning, it's plenty avoidable in PvP, and its damage isnt overpowered in PvE.

@keygenpie

Copy link
Copy Markdown
Contributor Author

Well, I believe the best kind of testing is live environment testing, so I do believe the only way to tell for sure if to test it on live. However I would appreciate videos of the mod kits being used, as the screen shots certainly leave a lot up for confusion. If i had known it was staff of storm style lightning my concerns would be null.

Sure! Give me a bit, I can throw in some recordings.

@Salted-Zen

Copy link
Copy Markdown
Contributor

Oh also i suppose that while its probably minor... do flux mods have a stacking cap?

@keygenpie

Copy link
Copy Markdown
Contributor Author

Oh also i suppose that while its probably minor... do flux mods have a stacking cap?

Nope! And while that probably sounds busted, keep in mind that for every flux mod you have to have research do ANOTHER anomaly compression, and the damage is honestly negligible. Again, there are things more worth your time.

@keygenpie

Copy link
Copy Markdown
Contributor Author

Okay - somehow I overlooked that the haunting status can also throw stuff at players. Making a fix right now, will push when its done.

@keygenpie

Copy link
Copy Markdown
Contributor Author

Alright! Geist projector - now poltergeist projector - updated and fixed, and a demo video is uploaded.

@Salted-Zen

Copy link
Copy Markdown
Contributor

Flux damage mod kit adds the same damage as a regular damage modkit, just figured it should be pointed out

@Salted-Zen

Salted-Zen commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

oh and one last technical question, what happens if / when these mods get stacked? are they all stackable or are some single instance only? This is less a balance question, and more a "plz dont runtime" question

@keygenpie

Copy link
Copy Markdown
Contributor Author

oh and one last technical question, what happens if / when these mods get stacked? are they all stackable or are some single instance only? This is less a balance question, and more a "plz dont runtime" question

I've tested multiple stacks of all of them, and they function about how you'd expect. I noticed no performance drop with multiple lightning copies and similar effects, either.

@keygenpie

Copy link
Copy Markdown
Contributor Author

(Though, admittedly, throwing on multiple stacks of some of them is kind of pointless. Which is fine to me.)

KA.trigger_guard = TRIGGER_GUARD_NORMAL
..()

//OCULIS EDIT ADDITION START - ANOMALY_KITS

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move this to its own modular files please

@keygenpie
keygenpie requested a review from XeonMations July 19, 2026 12:03
As much as ridiculous stacking shenanigans would be fun, the amount of ordnance that would be done for it is a bit much. I don't want to encourage excessive ordnance work, because I'm sure all the shaking and explosions would get annoying after too much. The limit should also help the modkits feel a bit more unique, rather than being yet another type of mod you just stack a bunch of.
Comment thread code/modules/projectiles/guns/energy/kinetic_accelerator.dm
Comment thread code/modules/research/techweb/nodes/mining_nodes.dm Outdated
Comment on lines +86 to +102
for(var/turf/open/adjacent_turf in oview(1, target))
new /obj/effect/temp_visual/electricity(adjacent_turf)

for(var/mob/living/hit_mob in target)
to_chat(hit_mob, span_userdanger("You've been struck by lightning!"))
hit_mob.electrocute_act(30, src, flags = SHOCK_TESLA|SHOCK_NOSTUN)
hit_mob.Knockdown(1 SECONDS, 5 SECONDS)

for(var/mob/living/nearby_target in oview(1, target))
to_chat(nearby_target, span_userdanger("You've been struck by an arc of lightning!"))
nearby_target.electrocute_act(10, src, flags = SHOCK_TESLA|SHOCK_NOSTUN)

for(var/obj/hit_thing in target)
hit_thing.take_damage(20, BURN, ENERGY, FALSE)

for(var/obj/nearby_thing in oview(1, target))
nearby_thing.take_damage(10, BURN, ENERGY, FALSE)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't we have tesla ball code that you can use for this? Also- Five for loops...?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This reuses the storm-staff code. I can take a look at the tesla ball code and try that.

Comment on lines +117 to +124
if(!QDELETED(target) && istype(target, /mob))
for(var/obj/item/throwable in view(modifier, target))
if(prob(30))
playsound(target_turf,'sound/effects/hallucinations/veryfar_noise.ogg', 50, TRUE)
var/relative_direction = get_cardinal_dir(throwable, target)
var/atom/throw_target = get_edge_target_turf(target, relative_direction)
var/whack_speed = (2)
throwable.throw_at(throw_target, modifier, whack_speed, K, gentle = TRUE)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please unindent this, also it'd be mildly funny to be able to send anything flying if you hit it, not just mobs, ala wizard's mjolnir hammer, maybe you can use code from that?

modifier = 4

/obj/item/borg/upgrade/modkit/cooldown/bluespace/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/movable/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
if(!QDELETED(target) && istype(target, /mob))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also dont really see any reason for these !QDELETED(target) checks. Ofcourse its not gonna be deleted if this proc is called.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, new to BYOND code and saw a bunch of !QDELETED checks elsewhere, so I figured it must be necessary? I'll do some testing without it.

Comment on lines +151 to +156
var/relative_direction = get_cardinal_dir(target, src)
var/atom/throw_target = get_edge_target_turf(target, relative_direction)
. = ..()
if(!QDELETED(target) && istype(target, /mob))
var/whack_speed = (2)
target.throw_at(throw_target, 2, whack_speed, K, gentle = TRUE)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above

maximum_of_type = 1

/obj/item/borg/upgrade/modkit/bioscrambler/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/movable/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
if(!QDELETED(target) && istype(target, /mob) && prob(modifier))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and here

keygenpie and others added 11 commits July 20, 2026 08:36
Co-authored-by: XeonMations <62395746+XeonMations@users.noreply.github.com>
Co-authored-by: XeonMations <62395746+XeonMations@users.noreply.github.com>
Xeonmations helped me realize that, despite being present elsewhere in the code, these checks are stupid. If the target is deleted, how would any of this get called? Duh.
Fixed damage, removed knockdown to prevent any PvP potential.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants