Files
b1029a24f8 Power Cell Rework + Energy Weapon Rebalance (& misc changes) (#7438)
- all cells in the game are now small, medium, large
- super, hyper capacity cells, device, and weapon cells are all removed
- cells now have standardized variants, some of which are printable by
R&D
- energy weapons rebalanced
- **advanced energy guns and stun revolvers removed** - use the new
modular weapon system and microfission cells.

---------

Co-authored-by: silicons <silicons@silicons.dev>
2025-12-24 12:15:01 +01:00

187 lines
6.4 KiB
Plaintext

/*
* Wirecutters
*/
/obj/item/tool/wirecutters
name = "wirecutters"
desc = "This cuts wires."
icon = 'icons/obj/tools.dmi'
icon_state = "cutters"
item_state = "cutters"
slot_flags = SLOT_BELT
tool_behavior = TOOL_WIRECUTTER
damage_force = 6
throw_speed = 2
throw_range = 9
w_class = WEIGHT_CLASS_SMALL
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
materials_base = list(MAT_STEEL = 80)
attack_verb = list("pinched", "nipped")
attack_sound = 'sound/items/wirecutter.ogg'
tool_sound = 'sound/items/wirecutter.ogg'
drop_sound = 'sound/items/drop/wirecutter.ogg'
pickup_sound = 'sound/items/pickup/wirecutter.ogg'
damage_mode = DAMAGE_MODE_SHARP | DAMAGE_MODE_EDGE
tool_speed = 1
var/random_color = TRUE
/obj/item/tool/wirecutters/Initialize(mapload)
. = ..()
if(random_color)
switch(pick("red","yellow","green","blue"))
if ("red")
icon_state = "cutters"
item_state = "cutters"
if ("yellow")
icon_state = "cutters_yellow"
item_state = "cutters_yellow"
if ("green")
icon_state = "cutters_green"
item_state = "cutters_green"
if ("blue")
icon_state = "cutters_blue"
item_state = "cutters_blue"
/obj/item/tool/wirecutters/legacy_mob_melee_hook(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
var/mob/living/carbon/C = target
if(istype(C) && user.a_intent == INTENT_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/handcuffs/cable)))
usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
"You cut \the [C]'s restraints with \the [src]!",\
"You hear cable being cut.")
qdel(C.handcuffed)
return
return ..()
/obj/item/tool/wirecutters/bone
name = "primitive wirecutters"
desc = "Dull wirecutters knapped from bone."
icon_state = "cutters_bone"
tool_speed = 1.25
random_color = FALSE
/obj/item/tool/wirecutters/bronze
name = "bronze shears"
desc = "Bronze cutters made of a single piece of forged bronze simply but effective."
icon = 'icons/obj/lavaland.dmi'
icon_state = "cutters_bronze"
item_state = "cutters_brass"
tool_speed = 1.25
random_color = FALSE
/obj/item/tool/wirecutters/brass
name = "brass wirecutters"
desc = "Brass plated wirecutters that never seem to lose their edge."
icon_state = "cutters_brass"
tool_speed = 0.75
random_color = FALSE
/obj/item/tool/wirecutters/clockwork
name = "clockwork wirecutters"
desc = "An antiquated pair of wirecutters, fashioned out of extremely dense brass."
icon = 'icons/obj/clockwork.dmi'
icon_state = "cutters_clock"
tool_speed = 0.1
random_color = FALSE
/obj/item/tool/wirecutters/clockwork/examine(mob/user, dist)
. = ..()
. += SPAN_NEZBERE("The blades are utterly dull and impotent when placed against flesh, yet cuts with an unreasonable, almost murderously sharp edge when set upon wires and metal sheets.")
/datum/category_item/catalogue/anomalous/precursor_a/alien_wirecutters
name = "Precursor Alpha Object - Wire Seperator"
desc = "An object appearing to have a tool shape. It has two handles, and two \
sides which are attached to each other in the center. At the end on each side \
is a sharp cutting edge, made from a seperate material than the rest of the \
tool.\
<br><br>\
This tool appears to serve the same purpose as conventional wirecutters, due \
to how similar the shapes are. If so, this implies that the creators of this \
object also may utilize flexible cylindrical strands of metal to transmit \
energy and signals, just as humans do."
value = CATALOGUER_REWARD_EASY
/obj/item/tool/wirecutters/alien
name = "alien wirecutters"
desc = "Extremely sharp wirecutters, made out of a silvery-green metal."
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_wirecutters)
icon = 'icons/obj/abductor.dmi'
icon_state = "cutters"
tool_speed = 0.1
origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
random_color = FALSE
/obj/item/tool/wirecutters/cyborg
name = "wirecutters"
desc = "This cuts wires. With science."
tool_sound = 'sound/items/jaws_cut.ogg'
tool_speed = 0.5
/obj/item/tool/wirecutters/RIGset
name = "integrated wirecutters"
desc = "If you're seeing this, someone did a dum-dum."
tool_sound = 'sound/items/jaws_cut.ogg'
tool_speed = 0.7
/obj/item/tool/wirecutters/hybrid
name = "strange wirecutters"
desc = "This cuts wires. With <span class='alien'>Science!</span>"
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_wirecutters)
icon_state = "hybcutters"
w_class = WEIGHT_CLASS_NORMAL
weight = ITEM_WEIGHT_HYBRID_TOOLS
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2)
attack_verb = list("pinched", "nipped", "warped", "blasted")
tool_sound = 'sound/effects/stealthoff.ogg'
tool_speed = 0.4
reach = 2
/obj/item/tool/wirecutters/power
name = "jaws of life"
desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
icon_state = "jaws_cutter"
item_state = "jawsoflife"
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials_base = list(MAT_METAL=150, MAT_SILVER=50)
tool_sound = 'sound/items/jaws_cut.ogg'
damage_force = 15
tool_speed = 0.25
random_color = FALSE
var/obj/item/tool/crowbar/power/counterpart = null
/obj/item/tool/wirecutters/power/Initialize(mapload, no_counterpart = TRUE)
. = ..()
if(!counterpart && no_counterpart)
counterpart = new(src, FALSE)
counterpart.counterpart = src
/obj/item/tool/wirecutters/power/Destroy()
if(counterpart)
counterpart.counterpart = null // So it can qdel cleanly.
QDEL_NULL(counterpart)
return ..()
/obj/item/tool/wirecutters/power/attack_self(mob/user, datum/event_args/actor/actor)
. = ..()
if(.)
return
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
user.temporarily_remove_from_inventory(src, INV_OP_FORCE | INV_OP_SHOULD_NOT_INTERCEPT | INV_OP_SILENT)
if(!user.put_in_active_hand(counterpart))
counterpart.forceMove(get_turf(user))
forceMove(counterpart)
to_chat(user, "<span class='notice'>You attach the pry jaws to [src].</span>")
/obj/item/tool/wirecutters/crystal
name = "crystalline shears"
desc = "A crystalline shearing tool of an alien make."
icon_state = "crystal_wirecutter"
item_state = "crystal_tool"
icon = 'icons/obj/crystal_tools.dmi'
materials_base = list(MATERIAL_CRYSTAL = 1250)
tool_speed = 0.2
/obj/item/tool/wirecutters/crystal/Initialize()
. = ..()
icon_state = initial(icon_state)
item_state = initial(item_state)