mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
[MDB IGNORE] Lavaland Mineral Rework: Yapmining 2026 (#95682)
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user