Adds Fusion Gauntlets to RND (#18804)
* do a once over first * merge conflict shit * armor pen to modern stuff * Apply suggestions from code review Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com> * BOY SMELL THEM MERGE CONFLICTS * icons / final changes Co-authored-by: SteelSlayer <42044220+SteelSlayer@users.noreply.github.com> Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
@@ -7,8 +7,9 @@
|
||||
* Kidan spear
|
||||
* Chainsaw
|
||||
* Singularity hammer
|
||||
* Mjolnnir
|
||||
* Mjolnnir
|
||||
* Knighthammer
|
||||
* Pyro Claws
|
||||
*/
|
||||
|
||||
/*##################################################################
|
||||
@@ -826,3 +827,124 @@
|
||||
Z.ex_act(2)
|
||||
charged = 3
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
|
||||
// PYRO CLAWS
|
||||
/obj/item/twohanded/required/pyro_claws
|
||||
name = "hardplasma energy claws"
|
||||
desc = "The power of the sun, in the claws of your hand."
|
||||
icon_state = "pyro_claws"
|
||||
flags = ABSTRACT | NODROP | DROPDEL
|
||||
force = 22
|
||||
force_wielded = 22
|
||||
damtype = BURN
|
||||
armour_penetration_percentage = 50
|
||||
block_chance = 50
|
||||
sharp = TRUE
|
||||
attack_effect_override = ATTACK_EFFECT_CLAW
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut", "savaged", "clawed")
|
||||
sprite_sheets_inhand = list("Vox" = 'icons/mob/clothing/species/vox/held.dmi', "Drask" = 'icons/mob/clothing/species/drask/held.dmi')
|
||||
toolspeed = 0.5
|
||||
var/lifetime = 60 SECONDS
|
||||
|
||||
/obj/item/twohanded/required/pyro_claws/Initialize(mapload)
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/twohanded/required/pyro_claws/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/twohanded/required/pyro_claws/process()
|
||||
lifetime -= 2 SECONDS
|
||||
if(lifetime <= 0)
|
||||
visible_message("<span class='warning'>[src] slides back into the depths of [loc]'s wrists.</span>")
|
||||
do_sparks(rand(1,6), 1, loc)
|
||||
qdel(src)
|
||||
return
|
||||
if(prob(15))
|
||||
do_sparks(rand(1,6), 1, loc)
|
||||
|
||||
/obj/item/twohanded/required/pyro_claws/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(prob(60))
|
||||
do_sparks(rand(1,6), 1, loc)
|
||||
if(istype(target, /obj/machinery/door/airlock))
|
||||
var/obj/machinery/door/airlock/A = target
|
||||
|
||||
if(!A.requiresID() || A.allowed(user))
|
||||
return
|
||||
|
||||
if(A.locked)
|
||||
to_chat(user, "<span class='notice'>The airlock's bolts prevent it from being forced.</span>")
|
||||
return
|
||||
|
||||
if(A.arePowerSystemsOn())
|
||||
user.visible_message("<span class='warning'>[user] jams [user.p_their()] [name] into the airlock and starts prying it open!</span>", "<span class='warning'>You start forcing the airlock open.</span>", "<span class='warning'>You hear a metal screeching sound.</span>")
|
||||
playsound(A, 'sound/machines/airlock_alien_prying.ogg', 150, 1)
|
||||
if(!do_after(user, 25, target = A))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='warning'>[user] forces the airlock open with [user.p_their()] [name]!</span>", "<span class='warning'>You force open the airlock.</span>", "<span class='warning'>You hear a metal screeching sound.</span>")
|
||||
A.open(2)
|
||||
|
||||
/obj/item/clothing/gloves/color/black/pyro_claws
|
||||
name = "Fusion gauntlets"
|
||||
desc = "Cybersun Industries developed these gloves after a grifter fought one of their soldiers, who attached a pyro core to an energy sword, and found it mostly effective."
|
||||
item_state = "pyro"
|
||||
item_color = "pyro" // I will kill washing machines one day
|
||||
icon_state = "pyro"
|
||||
can_be_cut = FALSE
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
var/on_cooldown = FALSE
|
||||
var/obj/item/assembly/signaler/anomaly/pyro/core
|
||||
|
||||
/obj/item/clothing/gloves/color/black/pyro_claws/Destroy()
|
||||
QDEL_NULL(core)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/color/black/pyro_claws/examine(mob/user)
|
||||
. = ..()
|
||||
if(core)
|
||||
. += "<span class='notice'>[src] are fully operational!</span>"
|
||||
else
|
||||
. += "<span class='warning'>It is missing a pyroclastic anomaly core.</span>"
|
||||
|
||||
/obj/item/clothing/gloves/color/black/pyro_claws/ui_action_click(mob/user)
|
||||
if(!core)
|
||||
to_chat(user, "<span class='notice'>[src] has no core to power it!</span>")
|
||||
return
|
||||
if(on_cooldown)
|
||||
to_chat(user, "<span class='notice'>[src] is on cooldown!</span>")
|
||||
do_sparks(rand(1,6), 1, loc)
|
||||
return
|
||||
if(!user.drop_l_hand() || !user.drop_r_hand())
|
||||
to_chat(user, "<span class='notice'>[src] are unable to deploy the blades with the items in your hands!</span>")
|
||||
return
|
||||
var/obj/item/W = new /obj/item/twohanded/required/pyro_claws
|
||||
user.visible_message("<span class='warning'>[user] deploys [W] from [user.p_their()] wrists in a shower of sparks!</span>", "<span class='notice'>You deploy [W] from your wrists!</span>", "<span class='warning'>You hear the shower of sparks!</span>")
|
||||
user.put_in_hands(W)
|
||||
on_cooldown = TRUE
|
||||
flags |= NODROP
|
||||
addtimer(CALLBACK(src, .proc/reboot), 2 MINUTES)
|
||||
do_sparks(rand(1,6), 1, loc)
|
||||
|
||||
/obj/item/clothing/gloves/color/black/pyro_claws/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/assembly/signaler/anomaly/pyro))
|
||||
if(core)
|
||||
to_chat(user, "<span class='notice'>[src] already has a [I]!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
to_chat(user, "<span class='warning'>[I] is stuck to your hand!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src], and [src] starts to warm up.</span>")
|
||||
I.forceMove(src)
|
||||
core = I
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/color/black/pyro_claws/proc/reboot()
|
||||
on_cooldown = FALSE
|
||||
flags &= ~NODROP
|
||||
atom_say("Internal plasma canisters recharged. Gloves sufficiently cooled")
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You can't reach, close it first!</span>")
|
||||
|
||||
if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/pickaxe/drill/diamonddrill) || istype(W, /obj/item/pickaxe/drill/jackhammer) || istype(W, /obj/item/melee/energy/blade))
|
||||
if(istype(W, /obj/item/gun/energy/plasmacutter) || istype(W, /obj/item/pickaxe/drill/diamonddrill) || istype(W, /obj/item/pickaxe/drill/jackhammer) || istype(W, /obj/item/melee/energy/blade) || istype(W, /obj/item/twohanded/required/pyro_claws))
|
||||
dismantle(user, TRUE)
|
||||
|
||||
/obj/structure/falsewall/welder_act(mob/user, obj/item/I)
|
||||
|
||||
@@ -66,6 +66,12 @@
|
||||
refundMetal(metalUsed)
|
||||
qdel(src)
|
||||
|
||||
else if(istype(W, /obj/item/twohanded/required/pyro_claws))
|
||||
playsound(loc, W.usesound, 100, 1)
|
||||
to_chat(user, "<span class='notice'>You melt the girder!</span>")
|
||||
refundMetal(metalUsed)
|
||||
qdel(src)
|
||||
|
||||
else if(istype(W, /obj/item/stack))
|
||||
if(iswallturf(loc))
|
||||
to_chat(user, "<span class='warning'>There is already a wall present!</span>")
|
||||
|
||||
@@ -435,6 +435,14 @@
|
||||
visible_message("<span class='warning'>[user] disintegrates [src]!</span>","<span class='warning'>You hear the grinding of metal.</span>")
|
||||
return TRUE
|
||||
|
||||
else if(istype(I, /obj/item/twohanded/required/pyro_claws))
|
||||
to_chat(user, "<span class='notice'>You begin to melt the wall.</span>")
|
||||
|
||||
if(do_after(user, isdiamond ? 60 * I.toolspeed : 30 * I.toolspeed, target = src)) // claws has 0.5 toolspeed, so 3/1.5 seconds
|
||||
to_chat(user, "<span class='notice'>Your [I.name] melts the reinforced plating.</span>")
|
||||
dismantle_wall()
|
||||
visible_message("<span class='warning'>[user] melts [src]!</span>","<span class='warning'>You hear the hissing of steam.</span>")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/turf/simulated/wall/proc/try_wallmount(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -204,6 +204,12 @@
|
||||
dismantle_wall()
|
||||
return TRUE
|
||||
|
||||
if(istype(I, /obj/item/twohanded/required/pyro_claws))
|
||||
to_chat(user, "<span class='notice'>You begin to melt the wall...</span>")
|
||||
if(do_after(user, 50 * I.toolspeed, target = src)) // claws has 0.5 toolspeed, so 2.5 seconds
|
||||
to_chat(user, "<span class='notice'>Your [I] melt the reinforced plating.</span>")
|
||||
dismantle_wall()
|
||||
return TRUE
|
||||
|
||||
/turf/simulated/wall/r_wall/wall_singularity_pull(current_size)
|
||||
if(current_size >= STAGE_FIVE)
|
||||
|
||||
@@ -260,3 +260,13 @@
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 5000, MAT_SILVER = 500, MAT_TITANIUM = 500, MAT_PLASMA = 500)
|
||||
build_path = /obj/item/grenade/barrier/dropwall
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/pyroclaw
|
||||
name = "Fusion gauntlets"
|
||||
desc = "A pair of gloves designed to make superheated claws capable of cutting through almost anything. Needs a pyro anomaly core"
|
||||
id = "pyro_gloves"
|
||||
req_tech = list("combat" = 7, "materials" = 7, "engineering" = 7, "plasmatech" = 7)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_SILVER = 4000, MAT_TITANIUM = 4000, MAT_PLASMA = 8000)
|
||||
build_path = /obj/item/clothing/gloves/color/black/pyro_claws
|
||||
category = list("Weapons")
|
||||
|
||||
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 206 KiB After Width: | Height: | Size: 206 KiB |
|
Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |