diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index dae4a19d15..72fe26da36 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -134,7 +134,7 @@
/obj/item/weapon/melee/energy/sword/New()
if(random_color)
- blade_color = pick("red","blue","green","purple")
+ blade_color = pick("red","blue","green","purple","white")
lcolor = blade_color
/obj/item/weapon/melee/energy/sword/green/New()
@@ -153,6 +153,10 @@
blade_color = "purple"
lcolor = "#800080"
+/obj/item/weapon/melee/energy/sword/white/New()
+ blade_color = "white"
+ lcolor = "#FFFFFF"
+
/obj/item/weapon/melee/energy/sword/activate(mob/living/user)
if(!active)
to_chat(user, "\The [src] is now energised.")
@@ -161,7 +165,6 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
icon_state = "[active_state][blade_color]"
-
/obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
if(active)
to_chat(user, "\The [src] deactivates!")
@@ -237,6 +240,80 @@
target.taunt(user)
target.adjustFireLoss(force * 6) // 30 Burn, for 50 total.
+/*
+ * Charge blade. Uses a cell, and costs energy per strike.
+ */
+
+/obj/item/weapon/melee/energy/sword/charge
+ name = "charge sword"
+ desc = "A small, handheld device which emits a high-energy 'blade'."
+ origin_tech = list(TECH_COMBAT = 5, TECH_MAGNET = 3, TECH_ILLEGAL = 4)
+ active_force = 25
+ armor_penetration = 25
+
+ var/hitcost = 75
+ var/obj/item/weapon/cell/bcell = null
+ var/cell_type = /obj/item/weapon/cell/device
+
+/obj/item/weapon/melee/energy/sword/charge/proc/use_charge(var/cost)
+ if(active)
+ if(bcell)
+ if(bcell.checked_use(cost))
+ return 1
+ else
+ return 0
+ return null
+
+/obj/item/weapon/melee/energy/sword/charge/examine(mob/user)
+ if(!..(user, 1))
+ return
+
+ if(bcell)
+ to_chat(user, "The blade is [round(bcell.percent())]% charged.")
+ if(!bcell)
+ to_chat(user, "The blade does not have a power source installed.")
+
+/obj/item/weapon/melee/energy/sword/charge/attack_self(mob/user as mob)
+ if((!bcell || bcell.charge < hitcost) && !active)
+ to_chat(user, "\The [src] does not seem to have power.")
+ return
+ ..()
+
+/obj/item/weapon/melee/energy/sword/charge/attack(mob/M, mob/user)
+ if(active)
+ if(!use_charge(hitcost))
+ deactivate(user)
+ visible_message("\The [src]'s blade flickers, before retracting.")
+ return ..()
+
+/obj/item/weapon/melee/energy/sword/charge/attackby(obj/item/weapon/W, mob/user)
+ if(istype(W, cell_type))
+ if(!bcell)
+ user.drop_item()
+ W.loc = src
+ bcell = W
+ to_chat(user, "You install a cell in [src].")
+ update_icon()
+ else
+ to_chat(user, "[src] already has a cell.")
+ else if(W.is_screwdriver() && bcell)
+ bcell.update_icon()
+ bcell.forceMove(get_turf(loc))
+ bcell = null
+ to_chat(user, "You remove the cell from \the [src].")
+ deactivate()
+ update_icon()
+ return
+ else
+ ..()
+
+/obj/item/weapon/melee/energy/sword/charge/get_cell()
+ return bcell
+
+/obj/item/weapon/melee/energy/sword/charge/loaded/New()
+ ..()
+ bcell = new/obj/item/weapon/cell/device/weapon(src)
+
/*
*Energy Blade
*/
diff --git a/code/modules/research/designs/illegal.dm b/code/modules/research/designs/illegal.dm
index 1542e929b6..c195b5764b 100644
--- a/code/modules/research/designs/illegal.dm
+++ b/code/modules/research/designs/illegal.dm
@@ -16,4 +16,11 @@
req_tech = list(TECH_ILLEGAL = 2)
materials = list(DEFAULT_WALL_MATERIAL = 500)
build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon
- sort_string = "VASBA"
\ No newline at end of file
+ sort_string = "VASBA"
+
+/datum/design/item/weapon/esword
+ id = "chargesword"
+ req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ANOMALY = 1)
+ materials = list(MAT_PLASTEEL = 3500, "glass" = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500)
+ build_path = /obj/item/weapon/melee/energy/sword/charge
+ sort_string = "VASCA"
diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi
index 790d93eca6..dbef5acf99 100644
Binary files a/icons/mob/items/lefthand_melee.dmi and b/icons/mob/items/lefthand_melee.dmi differ
diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi
index 8c1068a033..5cfed3c119 100644
Binary files a/icons/mob/items/righthand_melee.dmi and b/icons/mob/items/righthand_melee.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index 8adc02e3b5..3abf08997f 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ