diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm
index d24199a32e..f5fdd3d496 100644
--- a/_maps/RandomZLevels/spacebattle.dmm
+++ b/_maps/RandomZLevels/spacebattle.dmm
@@ -384,7 +384,7 @@
/area/awaymission/spacebattle/syndicate3)
"bt" = (
/obj/structure/table/reinforced,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/turf/open/floor/mineral/plastitanium,
/area/awaymission/spacebattle/syndicate1)
"bu" = (
@@ -1479,7 +1479,7 @@
/area/awaymission/spacebattle/cruiser)
"eW" = (
/obj/effect/mob_spawn/human/syndicatesoldier,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/obj/effect/decal/cleanable/blood,
/turf/open/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
diff --git a/_maps/map_files/generic/Centcomm.dmm b/_maps/map_files/generic/Centcomm.dmm
index 660ee9a6e4..8d30e887a9 100644
--- a/_maps/map_files/generic/Centcomm.dmm
+++ b/_maps/map_files/generic/Centcomm.dmm
@@ -2099,7 +2099,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -2136,7 +2136,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/green,
+/obj/item/weapon/melee/transforming/energy/sword/saber/green,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
@@ -11705,7 +11705,7 @@
/obj/item/clothing/suit/armor/tdome/red,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/red,
+/obj/item/weapon/melee/transforming/energy/sword/saber/red,
/obj/effect/turf_decal/stripes/line{
dir = 4
},
@@ -11825,7 +11825,7 @@
/obj/item/clothing/suit/armor/tdome/green,
/obj/item/clothing/head/helmet/thunderdome,
/obj/item/weapon/melee/baton/loaded,
-/obj/item/weapon/melee/energy/sword/saber/green,
+/obj/item/weapon/melee/transforming/energy/sword/saber/green,
/obj/effect/turf_decal/stripes/line{
dir = 8
},
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 3b3a871269..af127e9450 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -237,7 +237,7 @@
w_class = WEIGHT_CLASS_SMALL
add_fingerprint(user)
-// Copied from /obj/item/weapon/melee/energy/sword/attackby
+// Copied from /obj/item/weapon/melee/transforming/energy/sword/attackby
/obj/item/toy/sword/attackby(obj/item/weapon/W, mob/living/user, params)
if(istype(W, /obj/item/toy/sword))
if((W.flags & NODROP) || (flags & NODROP))
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index d7dc87b196..f366704e50 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -1,46 +1,63 @@
-/obj/item/weapon/melee/energy
- var/active = 0
- var/force_on = 30 //force when active
- var/throwforce_on = 20
- var/icon_state_on = "axe1"
- var/list/attack_verb_on = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
- var/list/possible_colors
- w_class = WEIGHT_CLASS_SMALL
- sharpness = IS_SHARP
- var/w_class_on = WEIGHT_CLASS_BULKY
+/obj/item/weapon/melee/transforming/energy
+ hitsound_on = 'sound/weapons/blade1.ogg'
heat = 3500
max_integrity = 200
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
resistance_flags = FIRE_PROOF
var/brightness_on = 3
-/obj/item/weapon/melee/energy/Initialize()
+/obj/item/weapon/melee/transforming/energy/Initialize()
. = ..()
- if(LAZYLEN(possible_colors))
- item_color = pick(possible_colors)
- switch(item_color)//Only run this check if the color was picked randomly, so that colors can be manually set for non-random colored energy weapons.
- if("red")
- light_color = LIGHT_COLOR_RED
- if("green")
- light_color = LIGHT_COLOR_GREEN
- if("blue")
- light_color = LIGHT_COLOR_LIGHT_CYAN
- if("purple")
- light_color = LIGHT_COLOR_LAVENDER
if(active)
set_light(brightness_on)
+ START_PROCESSING(SSobj, src)
-/obj/item/weapon/melee/energy/suicide_act(mob/user)
+/obj/item/weapon/melee/transforming/energy/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/weapon/melee/transforming/energy/suicide_act(mob/user)
user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")
return (BRUTELOSS|FIRELOSS)
-/obj/item/weapon/melee/energy/add_blood(list/blood_dna)
+/obj/item/weapon/melee/transforming/energy/add_blood(list/blood_dna)
return 0
-/obj/item/weapon/melee/energy/is_sharp()
+/obj/item/weapon/melee/transforming/energy/is_sharp()
return active * sharpness
-/obj/item/weapon/melee/energy/axe
+/obj/item/weapon/melee/transforming/energy/process()
+ open_flame()
+
+/obj/item/weapon/melee/transforming/energy/transform_weapon(mob/living/user, supress_message_text)
+ . = ..()
+ if(.)
+ if(active)
+ if(item_color)
+ icon_state = "sword[item_color]"
+ START_PROCESSING(SSobj, src)
+ set_light(brightness_on)
+ else
+ STOP_PROCESSING(SSobj, src)
+ set_light(0)
+
+/obj/item/weapon/melee/transforming/energy/is_hot()
+ return active * heat
+
+/obj/item/weapon/melee/transforming/energy/ignition_effect(atom/A, mob/user)
+ if(!active)
+ return ""
+
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask == src)
+ in_mouth = ", barely missing their nose"
+ . = "[user] swings their [src][in_mouth]. They light [A] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+
+/obj/item/weapon/melee/transforming/energy/axe
name = "energy axe"
desc = "An energized battle axe."
icon_state = "axe0"
@@ -56,21 +73,22 @@
flags = CONDUCT
armour_penetration = 100
origin_tech = "combat=4;magnets=3"
- attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
+ attack_verb_off = list("attacked", "chopped", "cleaved", "torn", "cut")
attack_verb_on = list()
light_color = "#40ceff"
-/obj/item/weapon/melee/energy/axe/suicide_act(mob/user)
+/obj/item/weapon/melee/transforming/energy/axe/suicide_act(mob/user)
user.visible_message("[user] swings [src] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")
return (BRUTELOSS|FIRELOSS)
-/obj/item/weapon/melee/energy/sword
+/obj/item/weapon/melee/transforming/energy/sword
name = "energy sword"
desc = "May the force be within you."
icon_state = "sword0"
force = 3
throwforce = 5
hitsound = "swing_hit" //it starts deactivated
+ attack_verb_off = list("tapped", "poked")
throw_speed = 3
throw_range = 5
sharpness = IS_SHARP
@@ -79,93 +97,30 @@
armour_penetration = 35
origin_tech = "combat=3;magnets=4;syndicate=4"
block_chance = 50
- possible_colors = list("red", "blue", "green", "purple")
- var/hacked = FALSE
-/obj/item/weapon/melee/energy/sword/Destroy()
- STOP_PROCESSING(SSobj, src)
+/obj/item/weapon/melee/transforming/energy/sword/transform_weapon(mob/living/user, supress_message_text)
. = ..()
+ if(. && active && item_color)
+ icon_state = "sword[item_color]"
-/obj/item/weapon/melee/energy/sword/process()
- if(active)
- if(hacked)
- light_color = pick(LIGHT_COLOR_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)
- open_flame()
- else
- STOP_PROCESSING(SSobj, src)
-
-/obj/item/weapon/melee/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/weapon/melee/transforming/energy/sword/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
if(active)
return ..()
return 0
-/obj/item/weapon/melee/energy/attack_self(mob/living/carbon/user)
- if(user.disabilities & CLUMSY && prob(50))
- to_chat(user, "You accidentally cut yourself with [src], like a doofus!")
- user.take_bodypart_damage(5,5)
- active = !active
- if (active)
- force = force_on
- throwforce = throwforce_on
- hitsound = 'sound/weapons/blade1.ogg'
- throw_speed = 4
- if(attack_verb_on.len)
- attack_verb = attack_verb_on
- if(!item_color)
- icon_state = icon_state_on
- else
- icon_state = "sword[item_color]"
- w_class = w_class_on
- playsound(user, 'sound/weapons/saberon.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
- to_chat(user, "[src] is now active.")
- START_PROCESSING(SSobj, src)
- set_light(brightness_on)
- else
- force = initial(force)
- throwforce = initial(throwforce)
- hitsound = initial(hitsound)
- throw_speed = initial(throw_speed)
- if(attack_verb_on.len)
- attack_verb = list()
- icon_state = initial(icon_state)
- w_class = initial(w_class)
- playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
- to_chat(user, "[src] can now be concealed.")
- STOP_PROCESSING(SSobj, src)
- set_light(0)
- add_fingerprint(user)
-
-/obj/item/weapon/melee/energy/is_hot()
- return active * heat
-
-/obj/item/weapon/melee/energy/ignition_effect(atom/A, mob/user)
- if(!active)
- return ""
-
- var/in_mouth = ""
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- if(C.wear_mask == src)
- in_mouth = ", barely missing their nose"
- . = "[user] swings their \
- [src][in_mouth]. They light [A] in the process."
- playsound(loc, hitsound, get_clamped_volume(), 1, -1)
- add_fingerprint(user)
-
-/obj/item/weapon/melee/energy/sword/cyborg
+/obj/item/weapon/melee/transforming/energy/sword/cyborg
var/hitcost = 50
-/obj/item/weapon/melee/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
+/obj/item/weapon/melee/transforming/energy/sword/cyborg/attack(mob/M, var/mob/living/silicon/robot/R)
if(R.cell)
var/obj/item/weapon/stock_parts/cell/C = R.cell
if(active && !(C.use(hitcost)))
attack_self(R)
to_chat(R, "It's out of charge!")
return
- ..()
- return
+ return ..()
-/obj/item/weapon/melee/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
+/obj/item/weapon/melee/transforming/energy/sword/cyborg/saw //Used by medical Syndicate cyborgs
name = "energy saw"
desc = "For heavy duty cutting. It has a carbon-fiber blade in addition to a toggleable hard-light edge to dramatically increase sharpness."
icon_state = "esaw"
@@ -176,36 +131,44 @@
icon_state = "esaw_0"
icon_state_on = "esaw_1"
hitcost = 75 //Costs more than a standard cyborg esword
- item_color = null
w_class = WEIGHT_CLASS_NORMAL
sharpness = IS_SHARP
light_color = "#40ceff"
- possible_colors = null
-/obj/item/weapon/melee/energy/sword/cyborg/saw/Initialize()
- . = ..()
- icon_state = "esaw_0"
- item_color = null
-
-/obj/item/weapon/melee/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+/obj/item/weapon/melee/transforming/energy/sword/cyborg/saw/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
return 0
-/obj/item/weapon/melee/energy/sword/saber
+/obj/item/weapon/melee/transforming/energy/sword/saber
+ var/list/possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
+ var/hacked = FALSE
-/obj/item/weapon/melee/energy/sword/saber/blue
- possible_colors = list("blue")
+/obj/item/weapon/melee/transforming/energy/sword/saber/Initialize(mapload)
+ . = ..()
+ if(LAZYLEN(possible_colors))
+ var/set_color = pick(possible_colors)
+ item_color = set_color
+ light_color = possible_colors[set_color]
-/obj/item/weapon/melee/energy/sword/saber/purple
- possible_colors = list("purple")
+/obj/item/weapon/melee/transforming/energy/sword/saber/process()
+ . = ..()
+ if(hacked)
+ var/set_color = pick(possible_colors)
+ light_color = possible_colors[set_color]
+ update_light()
-/obj/item/weapon/melee/energy/sword/saber/green
- possible_colors = list("green")
+/obj/item/weapon/melee/transforming/energy/sword/saber/red
+ possible_colors = list("red" = LIGHT_COLOR_RED)
-/obj/item/weapon/melee/energy/sword/saber/red
- possible_colors = list("red")
+/obj/item/weapon/melee/transforming/energy/sword/saber/blue
+ possible_colors = list("blue" = LIGHT_COLOR_LIGHT_CYAN)
+/obj/item/weapon/melee/transforming/energy/sword/saber/green
+ possible_colors = list("green" = LIGHT_COLOR_GREEN)
-/obj/item/weapon/melee/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params)
+/obj/item/weapon/melee/transforming/energy/sword/saber/purple
+ possible_colors = list("purple" = LIGHT_COLOR_LAVENDER)
+
+/obj/item/weapon/melee/transforming/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params)
if(istype(W, /obj/item/device/multitool))
if(!hacked)
hacked = TRUE
@@ -220,21 +183,21 @@
else
return ..()
-/obj/item/weapon/melee/energy/sword/pirate
+/obj/item/weapon/melee/transforming/energy/sword/pirate
name = "energy cutlass"
desc = "Arrrr matey."
icon_state = "cutlass0"
icon_state_on = "cutlass1"
light_color = "#ff0000"
-/obj/item/weapon/melee/energy/blade
+/obj/item/weapon/melee/transforming/energy/blade
name = "energy blade"
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
icon_state = "blade"
- force = 30 //Normal attacks deal esword damage
+ force = 30 //Normal attacks deal esword damage
hitsound = 'sound/weapons/blade1.ogg'
active = 1
- throwforce = 1//Throwing or dropping the item deletes it.
+ throwforce = 1 //Throwing or dropping the item deletes it.
throw_speed = 3
throw_range = 1
w_class = WEIGHT_CLASS_BULKY//So you can't hide it in your pocket or some such.
@@ -242,16 +205,16 @@
sharpness = IS_SHARP
//Most of the other special functions are handled in their own files. aka special snowflake code so kewl
-/obj/item/weapon/melee/energy/blade/Initialize()
+/obj/item/weapon/melee/transforming/energy/blade/Initialize()
. = ..()
spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
-/obj/item/weapon/melee/energy/blade/attack_self(mob/user)
+/obj/item/weapon/melee/transforming/energy/blade/transform_weapon(mob/living/user, supress_message_text)
return
-/obj/item/weapon/melee/energy/blade/hardlight
+/obj/item/weapon/melee/transforming/energy/blade/hardlight
name = "hardlight blade"
desc = "An extremely sharp blade made out of hard light. Packs quite a punch."
icon_state = "lightblade"
diff --git a/code/game/objects/items/weapons/melee/transforming.dm b/code/game/objects/items/weapons/melee/transforming.dm
index fb3f3c5801..689bc24f69 100644
--- a/code/game/objects/items/weapons/melee/transforming.dm
+++ b/code/game/objects/items/weapons/melee/transforming.dm
@@ -28,7 +28,7 @@
/obj/item/weapon/melee/transforming/attack(mob/living/target, mob/living/carbon/human/user)
var/nemesis_faction = FALSE
- if(nemesis_factions.len)
+ if(LAZYLEN(nemesis_factions))
for(var/F in target.faction)
if(F in nemesis_factions)
nemesis_faction = TRUE
diff --git a/code/game/objects/items/weapons/sharpener.dm b/code/game/objects/items/weapons/sharpener.dm
index d17df5ab77..ace66060af 100644
--- a/code/game/objects/items/weapons/sharpener.dm
+++ b/code/game/objects/items/weapons/sharpener.dm
@@ -20,7 +20,7 @@
if(requires_sharpness && !I.sharpness)
to_chat(user, "You can only sharpen items that are already sharp, such as knives.")
return
- if(istype(I, /obj/item/weapon/melee/energy))
+ if(istype(I, /obj/item/weapon/melee/transforming/energy))
to_chat(user, "You don't think \the [I] will be the thing getting modified if you use it on \the [src].")
return
if(istype(I, /obj/item/weapon/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index c80f9cf08f..63afdce472 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -52,7 +52,7 @@
new /obj/item/clothing/under/suit_jacket/really_black(src)
if("murder") // 28 tc now
- new /obj/item/weapon/melee/energy/sword/saber(src)
+ new /obj/item/weapon/melee/transforming/energy/sword/saber(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/clothing/shoes/chameleon(src)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 94452dce8b..8c97cab431 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -360,7 +360,7 @@
return 1
/obj/item/weapon/twohanded/dualsaber/ignition_effect(atom/A, mob/user)
- // same as /obj/item/weapon/melee/energy, mostly
+ // same as /obj/item/weapon/melee/transforming/energy, mostly
if(!wielded)
return ""
var/in_mouth = ""
diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
index 8b68adff42..c732fff3c5 100644
--- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm
+++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm
@@ -63,7 +63,7 @@
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/red(src)
for(var/i in 1 to 3)
- new /obj/item/weapon/melee/energy/sword/saber(src)
+ new /obj/item/weapon/melee/transforming/energy/sword/saber(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
@@ -82,7 +82,7 @@
for(var/i in 1 to 3)
new /obj/item/clothing/suit/armor/tdome/green(src)
for(var/i in 1 to 3)
- new /obj/item/weapon/melee/energy/sword/saber(src)
+ new /obj/item/weapon/melee/transforming/energy/sword/saber(src)
for(var/i in 1 to 3)
new /obj/item/weapon/gun/energy/laser(src)
for(var/i in 1 to 3)
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index ebe6972434..1b62fc69b9 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -442,7 +442,7 @@
/datum/outfit/syndicate_empty/SBC/assault/captain
name = "Syndicate Battlecruiser Captain"
- l_pocket = /obj/item/weapon/melee/energy/sword/saber/red
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber/red
r_pocket = /obj/item/weapon/melee/classic_baton/telescopic
suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate
suit_store = /obj/item/weapon/gun/ballistic/revolver/mateba
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index 458a067723..b1dadcdf32 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -104,7 +104,7 @@
/obj/item/weapon/dnainjector/lasereyesmut = 7,
/obj/item/weapon/gun/magic/wand/fireball/inert = 3,
/obj/item/weapon/pneumatic_cannon = 15,
- /obj/item/weapon/melee/energy/sword = 7,
+ /obj/item/weapon/melee/transforming/energy/sword = 7,
/obj/item/weapon/spellbook/oneuse/knock = 15,
/obj/item/weapon/spellbook/oneuse/summonitem = 20,
/obj/item/weapon/spellbook/oneuse/forcewall = 17,
diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm
index fccfe21589..11283f8039 100644
--- a/code/modules/clothing/outfits/ert.dm
+++ b/code/modules/clothing/outfits/ert.dm
@@ -52,7 +52,7 @@
/obj/item/weapon/melee/baton/loaded=1,\
/obj/item/clothing/mask/gas/sechailer/swat=1,\
/obj/item/weapon/gun/energy/pulse/pistol/loyalpin=1)
- l_pocket = /obj/item/weapon/melee/energy/sword/saber
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber
/datum/outfit/ert/security
name = "ERT Security"
diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index b405c16a7b..a16226bda5 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -84,7 +84,7 @@
shoes = /obj/item/clothing/shoes/sneakers/brown
head = /obj/item/clothing/head/bandana
glasses = /obj/item/clothing/glasses/eyepatch
- r_hand = /obj/item/weapon/melee/energy/sword/pirate
+ r_hand = /obj/item/weapon/melee/transforming/energy/sword/pirate
/datum/outfit/pirate/space
name = "Space Pirate"
@@ -147,7 +147,7 @@
gloves = /obj/item/clothing/gloves/color/black
ears = /obj/item/device/radio/headset
glasses = /obj/item/clothing/glasses/sunglasses
- l_pocket = /obj/item/weapon/melee/energy/sword/saber
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber
l_hand = /obj/item/weapon/storage/secure/briefcase
id = /obj/item/weapon/card/id/syndicate
belt = /obj/item/device/pda/heads
@@ -344,7 +344,7 @@
mask = /obj/item/clothing/mask/gas/sechailer/swat
glasses = /obj/item/clothing/glasses/hud/toggle/thermal
back = /obj/item/weapon/storage/backpack/security
- l_pocket = /obj/item/weapon/melee/energy/sword/saber
+ l_pocket = /obj/item/weapon/melee/transforming/energy/sword/saber
r_pocket = /obj/item/weapon/shield/energy
suit_store = /obj/item/weapon/tank/internals/emergency_oxygen
belt = /obj/item/weapon/gun/ballistic/revolver/mateba
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index b446943ee4..6d13145626 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -304,7 +304,7 @@
item_color = "syndi"
w_class = WEIGHT_CLASS_NORMAL
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90)
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
jetpack = /obj/item/weapon/tank/jetpack/suit
@@ -698,7 +698,7 @@
item_state = "syndie_hardsuit"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
slowdown = 0
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 91d2aa063d..ce31dd7995 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -146,7 +146,7 @@ Contains:
item_state = "pirate"
w_class = WEIGHT_CLASS_NORMAL
flags_inv = 0
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals, /obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals, /obj/item/weapon/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
slowdown = 0
armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75)
strip_delay = 40
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 5fd3a6725b..35fb43f87b 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -4,7 +4,7 @@
/obj/item/clothing/suit/space/eva/plasmaman
name = "EVA plasma envirosuit"
desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like it's smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges."
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_casing,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
resistance_flags = FIRE_PROOF
icon_state = "plasmaman_suit"
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 5301c2ea98..5c64764813 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -12,7 +12,7 @@
item_state = "space_suit_syndicate"
desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
w_class = WEIGHT_CLASS_NORMAL
- allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
+ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/transforming/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/internals)
armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 8125bb0bdf..873f15f346 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -36,7 +36,7 @@
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
- allowed = list(/obj/item/weapon/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
+ allowed = list(/obj/item/weapon/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/weapon/reagent_containers/food/drinks/bottle/rum)
/obj/item/clothing/suit/pirate/captain
name = "pirate captain coat"
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 6c03200869..0b1187e9bc 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -529,7 +529,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
return
var/static/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/ballistic, /obj/item/ammo_box/a357,\
- /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, /obj/item/weapon/melee/energy/sword/saber,\
+ /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow, /obj/item/weapon/melee/transforming/energy/sword/saber,\
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
/obj/item/weapon/cartridge/virus/syndicate, /obj/item/clothing/under/chameleon,\
/obj/item/clothing/shoes/chameleon, /obj/item/weapon/card/id/syndicate,\
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 3848c528e9..0e9a0054ca 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -246,7 +246,7 @@
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg,
/obj/item/weapon/soap/nanotrasen,
/obj/item/borg/cyborghug)
- emag_modules = list(/obj/item/weapon/melee/energy/sword/cyborg)
+ emag_modules = list(/obj/item/weapon/melee/transforming/energy/sword/cyborg)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg,
/obj/item/clockwork/ratvarian_spear/cyborg,
@@ -590,7 +590,7 @@
name = "Syndicate Assault"
basic_modules = list(
/obj/item/device/assembly/flash/cyborg,
- /obj/item/weapon/melee/energy/sword/cyborg,
+ /obj/item/weapon/melee/transforming/energy/sword/cyborg,
/obj/item/weapon/gun/energy/printer,
/obj/item/weapon/gun/ballistic/revolver/grenadelauncher/cyborg,
/obj/item/weapon/card/emag,
@@ -617,7 +617,7 @@
/obj/item/weapon/hemostat,
/obj/item/weapon/cautery,
/obj/item/weapon/scalpel,
- /obj/item/weapon/melee/energy/sword/cyborg/saw,
+ /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw,
/obj/item/roller/robo,
/obj/item/weapon/card/emag,
/obj/item/weapon/crowbar/cyborg,
diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index 7410957ef7..398964175d 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -25,7 +25,7 @@
unsuitable_atmos_damage = 15
speak_emote = list("yarrs")
loot = list(/obj/effect/mob_spawn/human/corpse/pirate,
- /obj/item/weapon/melee/energy/sword/pirate)
+ /obj/item/weapon/melee/transforming/energy/sword/pirate)
del_on_death = 1
faction = list("pirate")
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index a9f0e4914e..6c5e4d935c 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -278,8 +278,8 @@
..()
if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing))
chamber_round()
- if(istype(A, /obj/item/weapon/melee/energy))
- var/obj/item/weapon/melee/energy/W = A
+ if(istype(A, /obj/item/weapon/melee/transforming/energy))
+ var/obj/item/weapon/melee/transforming/energy/W = A
if(W.active)
sawoff(user)
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/gun/energy/plasmacutter))
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 76c60dd130..59dc214dc3 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -89,8 +89,8 @@
..()
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/gun/energy/plasmacutter))
sawoff(user)
- if(istype(A, /obj/item/weapon/melee/energy))
- var/obj/item/weapon/melee/energy/W = A
+ if(istype(A, /obj/item/weapon/melee/transforming/energy))
+ var/obj/item/weapon/melee/transforming/energy/W = A
if(W.active)
sawoff(user)
diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm
index 2fbc61c239..e7d4ce7940 100644
--- a/code/modules/ruins/lavaland_ruin_code.dm
+++ b/code/modules/ruins/lavaland_ruin_code.dm
@@ -161,7 +161,7 @@
/datum/outfit/lavaland_syndicate/comms
name = "Lavaland Syndicate Comms Agent"
- r_hand = /obj/item/weapon/melee/energy/sword/saber
+ r_hand = /obj/item/weapon/melee/transforming/energy/sword/saber
mask = /obj/item/clothing/mask/chameleon
suit = /obj/item/clothing/suit/armor/vest
l_pocket = /obj/item/weapon/card/id/syndicate/anyone
diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index af7bb41126..f8f8ba9be2 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -9,7 +9,7 @@
/datum/surgery_step/sever_limb
name = "sever limb"
- implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25)
+ implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 64
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/generic_steps.dm b/code/modules/surgery/generic_steps.dm
index d788d9208d..9b5a63dbf3 100644
--- a/code/modules/surgery/generic_steps.dm
+++ b/code/modules/surgery/generic_steps.dm
@@ -2,7 +2,7 @@
//make incision
/datum/surgery_step/incise
name = "make incision"
- implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/melee/energy/sword = 75, /obj/item/weapon/kitchen/knife = 65,
+ implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/melee/transforming/energy/sword = 75, /obj/item/weapon/kitchen/knife = 65,
/obj/item/weapon/shard = 45, /obj/item = 30) // 30% success with any sharp item.
time = 16
@@ -87,7 +87,7 @@
//saw bone
/datum/surgery_step/saw
name = "saw bone"
- implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100,
+ implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100,
/obj/item/weapon/melee/arm_blade = 75, /obj/item/weapon/mounted_chainsaw = 65, /obj/item/weapon/twohanded/required/chainsaw = 50,
/obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 54
diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm
index 9299f7038e..d49f28028c 100644
--- a/code/modules/surgery/lipoplasty.dm
+++ b/code/modules/surgery/lipoplasty.dm
@@ -12,7 +12,7 @@
//cut fat
/datum/surgery_step/cut_fat
name = "cut excess fat"
- implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
+ implements = list(/obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100, /obj/item/weapon/hatchet = 35, /obj/item/weapon/kitchen/knife/butcher = 25)
time = 64
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index 4fc22ec2c2..5c0e31456e 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -192,7 +192,7 @@
/obj/item/organ/cyberimp/arm/esword
name = "arm-mounted energy blade"
desc = "An illegal, and highly dangerous cybernetic implant that can project a deadly blade of concentrated enregy."
- contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight)
+ contents = newlist(/obj/item/weapon/melee/transforming/energy/blade/hardlight)
origin_tech = "materials=4;combat=5;biotech=3;powerstorage=2;syndicate=5"
/obj/item/organ/cyberimp/arm/medibeam
@@ -222,7 +222,7 @@
/obj/item/organ/cyberimp/arm/combat
name = "combat cybernetics implant"
desc = "A powerful cybernetic implant that contains combat modules built into the user's arm"
- contents = newlist(/obj/item/weapon/melee/energy/blade/hardlight, /obj/item/weapon/gun/medbeam, /obj/item/borg/stun, /obj/item/device/assembly/flash/armimplant)
+ contents = newlist(/obj/item/weapon/melee/transforming/energy/blade/hardlight, /obj/item/weapon/gun/medbeam, /obj/item/borg/stun, /obj/item/device/assembly/flash/armimplant)
origin_tech = "materials=5;combat=7;biotech=5;powerstorage=5;syndicate=6;programming=5"
/obj/item/organ/cyberimp/arm/combat/Initialize()
diff --git a/code/modules/surgery/tail_modification.dm b/code/modules/surgery/tail_modification.dm
index b8e8da5d31..34993b02c6 100644
--- a/code/modules/surgery/tail_modification.dm
+++ b/code/modules/surgery/tail_modification.dm
@@ -18,7 +18,7 @@
/datum/surgery_step/sever_tail
name = "sever tail"
implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100,
- /obj/item/weapon/melee/sabre = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100,
+ /obj/item/weapon/melee/sabre = 100, /obj/item/weapon/melee/transforming/energy/sword/cyborg/saw = 100,
/obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80,
/obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50,
/obj/item/weapon/hatchet = 40, /obj/item = 30) // 30% success with any sharp item.
diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm
index 5c646f76f3..30318a64c2 100644
--- a/code/modules/uplink/uplink_item.dm
+++ b/code/modules/uplink/uplink_item.dm
@@ -280,7 +280,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once.
name = "Energy Sword"
desc = "The energy sword is an edged weapon with a blade of pure energy. The sword is small enough to be \
pocketed when inactive. Activating it produces a loud, distinctive noise."
- item = /obj/item/weapon/melee/energy/sword/saber
+ item = /obj/item/weapon/melee/transforming/energy/sword/saber
cost = 8
/datum/uplink_item/dangerous/doublesword