Skip to content
Open
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
e7d4624
modkit sprites
keygenpie Jul 16, 2026
d5c7998
modularization
keygenpie Jul 16, 2026
dd11b59
blank modkit
keygenpie Jul 16, 2026
6f3dde7
Anomaly interaction code
keygenpie Jul 16, 2026
0f485c5
gravitic pulverizer modkit
keygenpie Jul 16, 2026
06f6b42
failsafe
keygenpie Jul 16, 2026
ee6971b
storm capacitor modkit
keygenpie Jul 16, 2026
a451978
gravitic mob check bugfix
keygenpie Jul 16, 2026
af25ea2
geist projector
keygenpie Jul 16, 2026
e7ad3cd
description clarity
keygenpie Jul 16, 2026
8bad0a6
cost unification
keygenpie Jul 16, 2026
a40be31
bluespace aberrator
keygenpie Jul 16, 2026
4297b8b
small description touchup
keygenpie Jul 16, 2026
a2f658b
vortex attractor
keygenpie Jul 16, 2026
4b4ab3f
flux charger
keygenpie Jul 16, 2026
b037737
stormcaller buff
keygenpie Jul 16, 2026
d1755a7
rift cleaver
keygenpie Jul 16, 2026
e7dd1f7
storm capacitor bugfix
keygenpie Jul 16, 2026
41a0a0e
rift cleaver is now safe
keygenpie Jul 16, 2026
6a67a17
genetic inducer
keygenpie Jul 16, 2026
4feed91
rift cleaver alteration
keygenpie Jul 16, 2026
4063dbf
researchable and lathable blank-kits
keygenpie Jul 16, 2026
5b1e53c
small balance alterations
keygenpie Jul 17, 2026
5e2be39
cut the rift cleaver
keygenpie Jul 17, 2026
2290ae0
poltergeist projector (geist projector update)
keygenpie Jul 17, 2026
ca68ba2
complete modularization
keygenpie Jul 19, 2026
7e815d2
tiny correction to readme file location
keygenpie Jul 19, 2026
0767330
maxed all kit types at 1 max
keygenpie Jul 19, 2026
fd36121
spacing
keygenpie Jul 20, 2026
551bc28
small notation adjustment
keygenpie Jul 20, 2026
199265d
QDELETED check removal
keygenpie Jul 20, 2026
0ffc3c5
removed mob checks from grav and vortex kits
keygenpie Jul 20, 2026
57d60ee
ok well obviously there should be turf/anchored checks
keygenpie Jul 20, 2026
3435008
cleaned up storm code a bit
keygenpie Jul 20, 2026
f48eff9
removed mob check from poltergeist
keygenpie Jul 20, 2026
399530b
changed check on bluespace aberrator
keygenpie Jul 20, 2026
9b6c330
more modifier scaling
keygenpie Jul 20, 2026
924abe4
storm capacitor changes
keygenpie Jul 21, 2026
0b10cfa
oops
keygenpie Jul 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 181 additions & 0 deletions code/modules/projectiles/guns/energy/kinetic_accelerator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,187 @@
KA.trigger_guard = TRIGGER_GUARD_NORMAL
..()

Comment thread
keygenpie marked this conversation as resolved.
//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


//Blank PK modkit, able to be fit with an anomaly core
/obj/item/borg/upgrade/modkit/blank
name = "blank anomaly kit"
desc = "A specialized PK anomaly modkit. This one is currently empty, awaiting an anomaly core for completion."
cost = 10
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykitempty"

/obj/item/borg/upgrade/modkit/blank/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
. = ..()
var/static/list/anomaly_kit_types = list(
/obj/effect/anomaly/grav = /obj/item/borg/upgrade/modkit/cooldown/gravity,
/obj/effect/anomaly/weather = /obj/item/borg/upgrade/modkit/weather,
/obj/effect/anomaly/ectoplasm = /obj/item/borg/upgrade/modkit/ectoplasm,
/obj/effect/anomaly/bluespace = /obj/item/borg/upgrade/modkit/cooldown/bluespace,
/obj/effect/anomaly/bhole = /obj/item/borg/upgrade/modkit/vortex,
/obj/effect/anomaly/flux = /obj/item/borg/upgrade/modkit/flux,
/obj/effect/anomaly/bioscrambler = /obj/item/borg/upgrade/modkit/bioscrambler,
)

if(istype(tool, /obj/item/assembly/signaler/anomaly))
var/obj/item/assembly/signaler/anomaly/anomaly = tool
var/anomkit_path = is_path_in_list(anomaly.anomaly_type, anomaly_kit_types, TRUE)
if(!anomkit_path)
anomkit_path = /obj/item/borg/upgrade/modkit/cooldown/gravity //If an anomaly is inserted without a specifically coded modifier, give the gravity one so that the player isn't unrewarded
to_chat(user, span_notice("You insert [anomaly] into the modkit, and it gently hums to life."))
new anomkit_path(get_turf(src))
qdel(src)
qdel(anomaly)
return ITEM_INTERACT_SUCCESS

/datum/design/anomaly_mod
name = "Kinetic Accelerator Blank Anomaly Mod"
desc = "Ask Research to slot an anomaly core into this for a specialized proto-kinetic accelerator upgrade."
id = "anomalymod"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron =SHEET_MATERIAL_AMOUNT * 3,
/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2,
/datum/material/silver =SHEET_MATERIAL_AMOUNT * 2,
/datum/material/gold =SHEET_MATERIAL_AMOUNT * 2,
/datum/material/uranium =SHEET_MATERIAL_AMOUNT,
/datum/material/diamond =SHEET_MATERIAL_AMOUNT,
)
build_path = /obj/item/borg/upgrade/modkit/blank
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_PKA_MODS
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO

/obj/item/borg/upgrade/modkit/cooldown/gravity
name = "gravitic pulverizer"
desc = "A specialized PK anomaly modkit. This one vastly increases the weapon's damage at the cost of cooldown, as well as allowing it to knock targets back."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
modifier = -10
cost = 35

/obj/item/borg/upgrade/modkit/cooldown/gravity/modify_projectile(obj/projectile/kinetic/K)
K.damage -= modifier * 5

/obj/item/borg/upgrade/modkit/cooldown/gravity/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/movable/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
var/relative_direction = get_cardinal_dir(src, target)
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)

/obj/item/borg/upgrade/modkit/weather
name = "storm capacitor"
desc = "A specialized PK anomaly modkit. This one allows the weapon to call lightning from above, electrocuting targets."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
cost = 35

/obj/item/borg/upgrade/modkit/weather/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
new /obj/effect/temp_visual/telegraphing/thunderbolt(target_turf)
addtimer(CALLBACK(src, PROC_REF(shock_turf), target_turf), 1 SECONDS)

/obj/item/borg/upgrade/modkit/weather/proc/shock_turf(turf/target)
playsound(target, 'sound/effects/magic/lightningbolt.ogg', 66, TRUE)
new /obj/effect/temp_visual/thunderbolt(target)
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)

/obj/item/borg/upgrade/modkit/ectoplasm
name = "poltergeist projector"
desc = "A specialized PK anomaly modkit. This one grants the weapon a chance to haunt nearby objects, throwing them at the target. Comes with a large range increase."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
cost = 35
modifier = 3

/obj/item/borg/upgrade/modkit/ectoplasm/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier

/obj/item/borg/upgrade/modkit/ectoplasm/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))
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)

/obj/item/borg/upgrade/modkit/cooldown/bluespace
name = "bluespace aberrator"
desc = "A specialized PK anomaly modkit. This one allows the weapon to chaotically teleport targets, alongside increased cooling rates."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
cost = 35
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))
do_teleport(target, target_turf, 1, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE)

/obj/item/borg/upgrade/modkit/vortex
name = "vortex attractor"
desc = "A specialized PK anomaly modkit. This one allows the weapon to pull enemies in, along with an increase to force output."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
modifier = 10
cost = 35

/obj/item/borg/upgrade/modkit/vortex/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier

/obj/item/borg/upgrade/modkit/vortex/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/movable/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
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)

/obj/item/borg/upgrade/modkit/flux
name = "flux charger"
desc = "A specialized PK anomaly modkit. This one gives the weapon a slight damage and range increase at no modularity cost. Push the limit."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
modifier = 10
cost = 0

/obj/item/borg/upgrade/modkit/flux/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier
K.range += 1

/obj/item/borg/upgrade/modkit/bioscrambler
name = "genetic inducer"
desc = "A specialized PK anomaly modkit. This one allows the weapon to genetically batter its opponent, giving it a chance to deal critical internal damage."
icon = 'modular_oculis/modules/anomalykits/icons/obj/anomalykits.dmi'
icon_state = "anomalykit"
modifier = 20
cost = 35

/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))
playsound(target, 'sound/items/weapons/zapbang.ogg', 100, TRUE)
if(target.uses_integrity)
target.take_damage(60, BRUTE, ENERGY, FALSE)
//OCULIS EDIT ADDITION END

//Cosmetic

Expand Down
3 changes: 3 additions & 0 deletions code/modules/research/techweb/nodes/mining_nodes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
"borg_upgrade_rangemod",
"borg_upgrade_cooldownmod",
"borg_upgrade_hypermod",
//OCULIS EDIT ADDITION START - ANOMALY_KITS
"anomalymod",
//OCULIS EDIT ADDITION END
Comment thread
keygenpie marked this conversation as resolved.
Outdated
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
announce_channels = list(RADIO_CHANNEL_SUPPLY)
Expand Down
Binary file not shown.
Loading