[MIRROR] Adds altevian mineral slicer (#7521)

Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com>
Co-authored-by: CHOMPStation2 <chompsation2@gmail.com>
This commit is contained in:
CHOMPStation2
2024-01-07 18:26:42 -05:00
committed by GitHub
co-authored by Heroman3003 CHOMPStation2
parent c30dacf3ab
commit 4ea69d7301
8 changed files with 88 additions and 0 deletions
@@ -57,3 +57,91 @@
light_range = 2
light_power = 0.5
light_color = "#77A6E1"
/obj/item/weapon/gun/energy/ratminer
name = "Altevian Repulsion Mineral Slicer"
desc = "An advanced piece of mining focused technology from the Altevian Hegemony. \
This model appears to be their standard asteroid clearing laser with a tailored system to work with an ore-bag, \
or similar, linked to the device. It has extra crystals for the focus that seem to split the beam, \
but also removes the pin-point accuracy other mining devices typically have."
icon_state = "altevian-miner"
item_state = "altevian-miner"
fire_delay = 12
slot_flags = SLOT_BACK
w_class = ITEMSIZE_HUGE
force = 10
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 4)
matter = list(MAT_STEEL = 2000)
projectile_type = /obj/item/projectile/scatter/ratminer
charge_cost = 400
/obj/item/projectile/scatter/ratminer
spread_submunition_damage = FALSE
damage = 20
range = 0
submunition_spread_max = 300
force_max_submunition_spread = TRUE
submunitions = list(
/obj/item/projectile/beam/ratminer = 3
)
/obj/item/projectile/beam/ratminer
name = "slicer beam"
icon_state = "ratmining"
damage = 20
light_color = "#77A6E1"
hud_state = "laser_disabler"
muzzle_type = /obj/effect/projectile/muzzle/ratminer
tracer_type = /obj/effect/projectile/tracer/ratminer
impact_type = /obj/effect/projectile/impact/ratminer
/obj/item/projectile/beam/ratminer/on_range()
strike_thing()
..()
/obj/item/projectile/beam/ratminer/on_hit(atom/target)
strike_thing(target)
. = ..()
/obj/item/projectile/beam/ratminer/on_impact(atom/A)
. = ..()
strike_thing(A)
/obj/item/projectile/beam/ratminer/proc/strike_thing(var/atom/A)
var/turf/target_turf = get_turf(A)
if(!target_turf)
target_turf = get_turf(src)
if(ismineralturf(target_turf))
var/turf/simulated/mineral/M = target_turf
M.GetDrilled(TRUE)
for(var/T in RANGE_TURFS(2, target_turf) - target_turf)
if(ismineralturf(T))
var/turf/simulated/mineral/M = T
M.GetDrilled(TRUE)
if(firer)
var/obj/item/weapon/storage/bag/ore/orebag = locate(/obj/item/weapon/storage/bag/ore) in firer
if(orebag)
for(var/turf/T in RANGE_TURFS(2, target_turf))
orebag.gather_all(T, firer, TRUE)
/obj/effect/projectile/muzzle/ratminer
icon_state = "muzzle_ratmining"
light_range = 2
light_power = 0.5
light_color = "#77A6E1"
/obj/effect/projectile/tracer/ratminer
icon_state = "ratmining"
light_range = 2
light_power = 0.5
light_color = "#77A6E1"
/obj/effect/projectile/impact/ratminer
icon_state = "impact_ratmining"
light_range = 2
light_power = 0.5
light_color = "#77A6E1"