[MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682)

This commit is contained in:
SmArtKar
2026-04-20 10:52:59 -04:00
committed by GitHub
parent f88663a72a
commit 2680aafa3f
81 changed files with 6268 additions and 5581 deletions
@@ -270,7 +270,7 @@
new /obj/effect/temp_visual/explosion/fast(get_turf(target))
for(var/turf/closed/mineral/mineral_turf in RANGE_TURFS(2, target) - target)
mineral_turf.gets_drilled(firer, 0.1)
mineral_turf.drill_aoe(firer, 0.1)
for(var/mob/living/living_mob in range(2, target) - firer - target)
if(!ismining(living_mob))
@@ -401,7 +401,6 @@
// Recalculate recharge time after adding or removing cooldown mods.
/obj/item/borg/upgrade/modkit/cooldown/proc/get_recharge_time(obj/item/gun/energy/recharge/kinetic_accelerator/KA)
var/new_recharge_time = initial(KA.recharge_time)
for(var/obj/item/borg/upgrade/modkit/modkit_upgrade as anything in KA.modkits)
if(istype(modkit_upgrade, src))
@@ -409,18 +408,15 @@
return new_recharge_time
/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user)
. = ..()
if(.)
KA.recharge_time = get_recharge_time(KA)
/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA)
..()
KA.recharge_time = get_recharge_time(KA)
/obj/item/borg/upgrade/modkit/cooldown/minebot
name = "minebot cooldown decrease"
desc = "Decreases the cooldown of a kinetic accelerator. Only rated for minebot use."
@@ -432,73 +428,84 @@
minebot_upgrade = TRUE
minebot_exclusive = TRUE
//AoE blasts
/obj/item/borg/upgrade/modkit/aoe
// AoE blasts
// These are a subtype of cooldown so they can affect firing speed
/obj/item/borg/upgrade/modkit/cooldown/aoe
modifier = 0
cost = 10
denied_type = /obj/item/borg/upgrade/modkit/aoe
denied_type = /obj/item/borg/upgrade/modkit/cooldown/aoe
maximum_of_type = 1
/// Does the AOE mine turfs?
var/turf_aoe = FALSE
/// Have we taken another kit's AOE?
var/stats_stolen = FALSE
/// Multiplier for mob damage
var/damage_modifier = 0
/obj/item/borg/upgrade/modkit/aoe/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user)
/obj/item/borg/upgrade/modkit/cooldown/aoe/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user)
. = ..()
if(.)
for(var/obj/item/borg/upgrade/modkit/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple
if(AOE.stats_stolen || AOE == src)
continue
modifier += AOE.modifier //take its modifiers
AOE.modifier = 0
turf_aoe += AOE.turf_aoe
AOE.turf_aoe = FALSE
AOE.stats_stolen = TRUE
if(!.)
return
for(var/obj/item/borg/upgrade/modkit/cooldown/aoe/AOE in KA.modkits) //make sure only one of the aoe modules has values if somebody has multiple
if(AOE.stats_stolen || AOE == src)
continue
modifier += AOE.modifier //take its modifiers
damage_modifier += AOE.damage_modifier
AOE.modifier = 0
AOE.damage_modifier = 0
turf_aoe += AOE.turf_aoe
AOE.turf_aoe = FALSE
AOE.stats_stolen = TRUE
/obj/item/borg/upgrade/modkit/aoe/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA)
/obj/item/borg/upgrade/modkit/cooldown/aoe/uninstall(obj/item/gun/energy/recharge/kinetic_accelerator/KA)
..()
modifier = initial(modifier) //get our modifiers back
damage_modifier = initial(damage_modifier)
turf_aoe = initial(turf_aoe)
stats_stolen = FALSE
/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/projectile/kinetic/K)
/obj/item/borg/upgrade/modkit/cooldown/aoe/modify_projectile(obj/projectile/kinetic/K)
K.name = "kinetic explosion"
/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/projectile/kinetic/kinetic_blast, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
/obj/item/borg/upgrade/modkit/cooldown/aoe/projectile_strike(obj/projectile/kinetic/kinetic_blast, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
if(stats_stolen)
return
new /obj/effect/temp_visual/explosion/fast(target_turf)
if(turf_aoe)
for(var/T in RANGE_TURFS(2, target_turf) - target_turf)
for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
if(ismineralturf(T))
var/turf/closed/mineral/M = T
M.gets_drilled(kinetic_blast.firer, 0.1)
if(modifier)
for(var/mob/living/living_mob in range(2, target) - kinetic_blast.firer - target)
if(!damage_modifier)
return
if(!ismining(living_mob))
continue
for(var/mob/living/living_mob in range(1, target) - kinetic_blast.firer - target)
if(!ismining(living_mob))
continue
var/armor = living_mob.run_armor_check(kinetic_blast.def_zone, kinetic_blast.armor_flag, armour_penetration = kinetic_blast.armour_penetration)
living_mob.apply_damage(kinetic_blast.damage * damage_modifier, kinetic_blast.damage_type, kinetic_blast.def_zone, armor)
to_chat(living_mob, span_userdanger("You're struck by a [kinetic_blast.name]!"))
var/armor = living_mob.run_armor_check(kinetic_blast.def_zone, kinetic_blast.armor_flag, armour_penetration = kinetic_blast.armour_penetration)
living_mob.apply_damage(kinetic_blast.damage*modifier, kinetic_blast.damage_type, kinetic_blast.def_zone, armor)
to_chat(living_mob, span_userdanger("You're struck by a [kinetic_blast.name]!"))
/obj/item/borg/upgrade/modkit/aoe/turfs
/obj/item/borg/upgrade/modkit/cooldown/aoe/turfs
name = "mining explosion"
desc = "Causes the kinetic accelerator to destroy rock in an AoE."
turf_aoe = TRUE
// Negates one CD modifier
modifier = -/obj/item/borg/upgrade/modkit/cooldown::modifier
/obj/item/borg/upgrade/modkit/aoe/mobs
/obj/item/borg/upgrade/modkit/cooldown/aoe/mobs
name = "offensive explosion"
desc = "Causes the kinetic accelerator to damage mobs in an AoE."
modifier = 1
damage_modifier = 1
/obj/item/borg/upgrade/modkit/aoe/mobs/andturfs
/obj/item/borg/upgrade/modkit/cooldown/aoe/mobs/andturfs
name = "offensive mining explosion"
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE."
turf_aoe = TRUE
modifier = -1 // Slightly better than normal turf AOE as its a rare find
//Minebot passthrough
// Minebot passthrough
/obj/item/borg/upgrade/modkit/minebot_passthrough
name = "minebot passthrough"
desc = "Causes kinetic accelerator shots to pass through minebots."
+37 -27
View File
@@ -117,29 +117,40 @@
if(cell)
. += span_notice("[src] is [round(cell.percent())]% charged.")
/obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user)
var/charge_multiplier = 0 //2 = Refined stack, 1 = Ore
if(istype(I, /obj/item/stack/sheet/mineral/plasma))
/obj/item/gun/energy/plasmacutter/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
var/charge_multiplier = 0
if(istype(tool, /obj/item/stack/sheet/mineral/plasma))
charge_multiplier = 2
if(istype(I, /obj/item/stack/ore/plasma))
else if(istype(tool, /obj/item/stack/ore/plasma))
charge_multiplier = 1
if(charge_multiplier)
if(cell.charge == cell.maxcharge)
balloon_alert(user, "already fully charged!")
return
I.use(1)
cell.give(0.5 * STANDARD_CELL_CHARGE * charge_multiplier)
balloon_alert(user, "cell recharged")
else
..()
if(!charge_multiplier)
return NONE
if(cell.charge == cell.maxcharge)
balloon_alert(user, "already fully charged!")
return ITEM_INTERACT_BLOCKING
var/obj/item/stack/sheet = tool
if (sheet.use(1))
return ITEM_INTERACT_BLOCKING
cell.give(0.2 * STANDARD_CELL_CHARGE * charge_multiplier)
balloon_alert(user, "cell recharged")
return ITEM_INTERACT_SUCCESS
/obj/item/gun/energy/plasmacutter/emp_act(severity)
. = ..()
if(isliving(loc))
var/mob/living/user = loc
user.visible_message(span_danger("Concentrated plasma discharges from [src] onto [user], burning them!"), span_userdanger("[src] malfunctions, spewing concentrated plasma onto you! It burns!"))
user.adjust_fire_stacks(4)
user.ignite_mob()
if(. & EMP_PROTECT_CONTENTS)
return
if(!isliving(loc))
return
var/mob/living/user = loc
user.visible_message(span_danger("Concentrated plasma discharges from [src] onto [user], burning them!"), span_userdanger("[src] malfunctions, spewing concentrated plasma onto you! It burns!"))
user.adjust_fire_stacks(4)
user.ignite_mob()
// Can we weld? Plasma cutter does not use charge continuously.
// Amount cannot be defaulted to 1: most of the code specifies 0 in the call.
@@ -163,16 +174,15 @@
return (!QDELETED(cell) && cell.use(used ? used * PLASMA_CUTTER_CHARGE_WELD : PLASMA_CUTTER_CHARGE_WELD))
/obj/item/gun/energy/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks)
if(!amount)
return ..(amount = 1)
if(amount)
var/mutable_appearance/sparks = mutable_appearance('icons/effects/welding_effect.dmi', "welding_sparks", GASFIRE_LAYER, src, ABOVE_LIGHTING_PLANE)
target.add_overlay(sparks)
LAZYADD(update_overlays_on_z, sparks)
. = ..()
LAZYREMOVE(update_overlays_on_z, sparks)
target.cut_overlay(sparks)
else
. = ..(amount=1)
var/mutable_appearance/sparks = mutable_appearance('icons/effects/welding_effect.dmi', "welding_sparks", GASFIRE_LAYER, src, ABOVE_LIGHTING_PLANE)
target.add_overlay(sparks)
LAZYADD(update_overlays_on_z, sparks)
. = ..()
LAZYREMOVE(update_overlays_on_z, sparks)
target.cut_overlay(sparks)
/obj/item/gun/energy/plasmacutter/try_fire_gun(atom/target, mob/living/user, params)
return fire_gun(target, user, user.Adjacent(target) && !isturf(target), params)