diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 12bb909eeb5..d445f0bee66 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -40,7 +40,7 @@
playsound(src.loc, 'sound/items/poster_being_created.ogg', 75, 1)
state = 2
else
- if(P.iswirecutter())
+ if(P.iswirecutter() || istype(P, /obj/item/gun/energy/plasmacutter))
playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1)
to_chat(user, span("notice", "You decide to scrap the blueprint."))
new /obj/item/stack/material/steel(src.loc, 2)
@@ -61,9 +61,18 @@
else
if(P.iswrench())
playsound(src.loc, P.usesound, 75, 1)
- to_chat(user, "You dismantle the blueprint")
+ to_chat(user, SPAN_NOTICE("You dismantle the blueprint."))
new /obj/item/stack/material/steel(src.loc, 2)
qdel(src)
+ else if(istype(P, /obj/item/gun/energy/plasmacutter))
+ var/obj/item/gun/energy/plasmacutter/PC = P
+ if(!PC.power_supply)
+ to_chat(user, SPAN_WARNING("\The [src] doesn't have a power supply installed!"))
+ return
+ playsound(get_turf(src), PC.fire_sound, 75, TRUE)
+ to_chat(user, SPAN_NOTICE("You dismantle the blueprint."))
+ new /obj/item/stack/material/steel(get_turf(src), 2)
+ qdel(src)
if(3)
if(istype(P, /obj/item/circuitboard))
var/obj/item/circuitboard/B = P
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 369c2b1ca71..d38014db583 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -92,12 +92,20 @@
src.health -= damage*0.2
spawn(0) healthcheck() //spawn to make sure we return properly if the grille is deleted
-/obj/structure/grille/attackby(obj/item/W as obj, mob/user as mob)
+/obj/structure/grille/attackby(obj/item/W, mob/user)
if(W.iswirecutter())
if(!shock(user, 100))
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
new /obj/item/stack/rods(get_turf(src), destroyed ? 1 : 2)
qdel(src)
+ else if(istype(W, /obj/item/gun/energy/plasmacutter))
+ var/obj/item/gun/energy/plasmacutter/PC = W
+ if(!PC.power_supply)
+ to_chat(user, SPAN_WARNING("\The [src] doesn't have a power supply installed!"))
+ return
+ playsound(get_turf(src), PC.fire_sound, 100, TRUE)
+ new /obj/item/stack/rods(get_turf(src), destroyed ? 1 : 2)
+ qdel(src)
else if((W.isscrewdriver()) && (istype(loc, /turf/simulated) || anchored))
if(!shock(user, 90))
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm
index 5923d7a5f06..f57ae480695 100644
--- a/code/game/turfs/simulated/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall_attacks.dm
@@ -190,6 +190,14 @@
dismantle_verb = "cutting"
dismantle_sound = 'sound/items/Welder.ogg'
cut_delay *= 0.7
+ else if(istype(W, /obj/item/gun/energy/plasmacutter))
+ var/obj/item/gun/energy/plasmacutter/PC = W
+ if(!PC.power_supply)
+ to_chat(user, SPAN_WARNING("\The [src] doesn't have a power supply installed!"))
+ return
+ dismantle_sound = "zapping and melting"
+ dismantle_verb = "slicing"
+ cut_delay *= 0.8
else if(istype(W,/obj/item/melee/energy))
var/obj/item/melee/energy/WT = W
if(WT.active)
diff --git a/code/modules/projectiles/guns/energy/mining.dm b/code/modules/projectiles/guns/energy/mining.dm
index a66a8c9e21d..6ab4839e855 100644
--- a/code/modules/projectiles/guns/energy/mining.dm
+++ b/code/modules/projectiles/guns/energy/mining.dm
@@ -3,32 +3,63 @@
/obj/item/gun/energy/plasmacutter
name = "plasma cutter"
desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
- charge_meter = 0
+ charge_meter = FALSE
icon = 'icons/obj/mining_contained.dmi'
icon_state = "plasma"
item_state = "plasma"
fire_sound = 'sound/weapons/plasma_cutter.ogg'
slot_flags = SLOT_BELT|SLOT_BACK
- w_class = 3
accuracy = 1
force = 15
- sharp = 1
- edge = 1
+ sharp = TRUE
+ edge = TRUE
origin_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 4000)
+ matter = list(DEFAULT_WALL_MATERIAL = 4000, MATERIAL_GLASS = 2000)
projectile_type = /obj/item/projectile/beam/plasmacutter
- max_shots = 15
+ cell_type = /obj/item/cell/high
+ charge_cost = 666.66 // 15 shots on a high cap cell
needspin = FALSE
+/obj/item/gun/energy/plasmacutter/examine(mob/user)
+ ..()
+ if(user.Adjacent(src))
+ if(power_supply)
+ to_chat(user, FONT_SMALL(SPAN_NOTICE("It has a [capitalize_first_letters(power_supply.name)] installed as its power supply.")))
+ else
+ to_chat(user, FONT_SMALL(SPAN_WARNING("It has no power supply installed.")))
+
+/obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user)
+ if(I.isscrewdriver())
+ if(power_supply)
+ to_chat(user, SPAN_NOTICE("You uninstall \the [power_supply]."))
+ power_supply.forceMove(get_turf(src))
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.put_in_hands(power_supply)
+ power_supply = null
+ else
+ to_chat(user, SPAN_WARNING("\The [src] doesn't have a power supply!"))
+ else if(istype(I, /obj/item/cell))
+ if(power_supply)
+ to_chat(user, SPAN_WARNING("\The [src] already has a power supply installed!"))
+ else
+ to_chat(user, SPAN_NOTICE("You install \the [I] into \the [src]."))
+ user.drop_from_inventory(I, src)
+ power_supply = I
+ else
+ ..()
+
/obj/item/gun/energy/plasmacutter/mounted
name = "mounted plasma cutter"
- self_recharge = 1
- use_external_power = 1
+ self_recharge = TRUE
+ use_external_power = TRUE
+ cell_type = null
+ max_shots = 15
/obj/item/projectile/beam/plasmacutter
name = "plasma arc"
icon_state = "omnilaser"
- damage = 15
+ damage = 20
damage_type = BURN
check_armour = "laser"
range = 5
@@ -37,7 +68,7 @@
muzzle_type = /obj/effect/projectile/muzzle/plasma_cutter
tracer_type = /obj/effect/projectile/tracer/plasma_cutter
impact_type = /obj/effect/projectile/impact/plasma_cutter
- maiming = 1
+ maiming = TRUE
maim_rate = 1
/obj/item/projectile/beam/plasmacutter/on_impact(var/atom/A)
diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm
index e7efbc82a7f..164e628b3f2 100644
--- a/code/modules/tables/tables.dm
+++ b/code/modules/tables/tables.dm
@@ -129,7 +129,7 @@
else
to_chat(user, "You don't have enough carpet!")
- if(!reinforced && !carpeted && material && W.iswrench())
+ if(!reinforced && !carpeted && material && (W.iswrench() || istype(W, /obj/item/gun/energy/plasmacutter)))
remove_material(W, user)
if(!material)
update_connections(1)
@@ -140,7 +140,7 @@
update_material()
return 1
- if(!carpeted && !reinforced && !material && W.iswrench())
+ if(!carpeted && !reinforced && !material && (W.iswrench() || istype(W, /obj/item/gun/energy/plasmacutter)))
dismantle(W, user)
return 1
diff --git a/html/changelogs/geeves-plasma_cutter.yml b/html/changelogs/geeves-plasma_cutter.yml
new file mode 100644
index 00000000000..d43e22937fa
--- /dev/null
+++ b/html/changelogs/geeves-plasma_cutter.yml
@@ -0,0 +1,8 @@
+author: Geeves
+
+delete-after: True
+
+changes:
+ - tweak: "Plasma cutters can now have their power cells removed with screwdrivers, and replaced by using the power cells on them."
+ - tweak: "Plasma cutters now do 20 damage, up from 15."
+ - rscadd: "More things can now be disassembled with the plasma cutter. Non-reinforced walls, non-reinforced tables, grills, machine frames."
\ No newline at end of file