Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
48 changes: 47 additions & 1 deletion code/modules/mining/equipment/mining_charges.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,33 @@
det_time = 5 //uses real world seconds cause screw you i guess
boom_sizes = list(1,3,5)
alert_admins = FALSE
var/hacked = FALSE

/obj/item/grenade/plastic/miningcharge/Initialize()
. = ..()
plastic_overlay = mutable_appearance(icon, "[icon_state]_active", ON_EDGED_TURF_LAYER)

/obj/item/grenade/plastic/miningcharge/examine(mob/user)
. = ..()
if(hacked)
. += "Its wiring is haphazardly changed."

/obj/item/grenade/plastic/miningcharge/attack_self(mob/user)
if(nadeassembly)
nadeassembly.attack_self(user)

/obj/item/grenade/plastic/miningcharge/afterattack(atom/movable/AM, mob/user, flag, notify_ghosts = FALSE)
if(ismineralturf(AM))
if(ismineralturf(AM) || hacked)
..()
else
to_chat(user,span_warning("The charge only works on rocks!"))

/obj/item/grenade/plastic/miningcharge/prime()
if(hacked) //big boom override
var/turf/location = get_turf(target)
explosion(location, boom_sizes[1], boom_sizes[2], boom_sizes[3])
qdel(src)
return //don't know if this is needed...
var/turf/closed/mineral/location = get_turf(target)
location.attempt_drill(null,TRUE,3) //orange says it doesnt include the actual middle
for(var/turf/closed/mineral/rock in circlerangeturfs(location,boom_sizes[3]))
Expand All @@ -45,6 +56,41 @@
if(!QDELETED(src))
qdel(src)

/obj/item/grenade/plastic/miningcharge/proc/override_safety()
hacked = TRUE
boom_sizes[1] = max(boom_sizes[1]/3, 1) //sorry, too powerful otherwise.
boom_sizes[2] = max(boom_sizes[2]/3, 1)
boom_sizes[3] = max(boom_sizes[3]/3, 1)
alert_admins = TRUE //i'm telling teacher you're gibbing clown!

//MINING CHARGE HACKER
/obj/item/t_scanner/adv_mining_scanner/syndicate
var/charges = 6

/obj/item/t_scanner/adv_mining_scanner/syndicate/examine(mob/user)
. = ..()
if(is_syndicate(user)) //helpful to other syndicates
. += "This scanner has an extra port for overriding mining charge safeties."

/obj/item/t_scanner/adv_mining_scanner/syndicate/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
if(!is_syndicate(user))
. = ..() //just a normal scanner...
return
if(istype(target,/obj/item/grenade/plastic/miningcharge))
var/obj/item/grenade/plastic/miningcharge/charge = target
if(charge.hacked)
to_chat(span_notice("[src] is already overridden!"))
return
if(charges <= 0)
to_chat(span_notice("Its overriding function is depleted."))
return
charge.override_safety()
visible_message(span_warning("Sparks fly out of [src]!"), span_notice("You override [src], disabling its safeties."))
playsound(src, "sparks", 50, 1)
charges--
if(charges <= 0)
to_chat(span_warning("[src]'s internal battery for overriding mining charges has run dry!"))

/obj/item/grenade/plastic/miningcharge/lesser
name = "lesser mining charge"
desc = "A mining charge. This one seems less powerful than normal. Only works on rocks!"
Expand Down
9 changes: 9 additions & 0 deletions code/modules/uplink/uplink_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2153,6 +2153,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/hierophant_antenna
restricted_roles = list("Shaft Miner")

/datum/uplink_item/role_restricted/mining_charge_hacker
name = "Mining Charge Hacker"
desc = "Looks and functions like an advanced mining scanner, but allows mining charges to be placed anywhere and destroy more than rocks. \
Use it on a mining charge to override its safeties. Reduces explosive power of mining charges due to the modification of their internals."
cost = 4
manufacturer = /datum/corporation/traitor/cybersun
item = /obj/item/t_scanner/adv_mining_scanner/syndicate
restricted_roles = list("Shaft Miner","Quartermaster","Mining Medic")

// Pointless
/datum/uplink_item/badass
category = "(Pointless) Badassery"
Expand Down