diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index ac63824ee10..1443ebdc671 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -30,10 +30,13 @@
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/melee/energy/sword
+ var/hacked = 0
+ var/blade_color
color
name = "energy sword"
desc = "May the force be within you."
icon_state = "sword0"
+ icon_override = 'icons/mob/in-hand/swords.dmi'
force = 3.0
throwforce = 5.0
throw_speed = 1
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index a0614213ba0..9645d74cf90 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -24,7 +24,7 @@
return 0
/obj/item/weapon/melee/energy/sword/New()
- _color = pick("red","blue","green","purple")
+ blade_color = pick("red","blue","green","purple")
/obj/item/weapon/melee/energy/sword/attack_self(mob/living/user as mob)
if ((M_CLUMSY in user.mutations) && prob(50))
@@ -36,7 +36,7 @@
if(istype(src,/obj/item/weapon/melee/energy/sword/pirate))
icon_state = "cutlass1"
else
- icon_state = "sword[_color]"
+ icon_state = "sword[blade_color]"
w_class = 4
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
hitsound = 'sound/weapons/blade1.ogg'
@@ -67,9 +67,29 @@
user.adjustBrainLoss(10)
else
user << "You attach the ends of the two energy swords, making a single double-bladed weapon! You're cool."
- new /obj/item/weapon/twohanded/dualsaber(user.loc)
+ var/obj/item/weapon/twohanded/dualsaber/newSaber = new /obj/item/weapon/twohanded/dualsaber(user.loc)
+ if(src.hacked) // That's right, we'll only check the "original" esword.
+ newSaber.hacked = 1
+ newSaber.blade_color = "rainbow"
del(W)
del(src)
+
+ else if(istype(W, /obj/item/device/multitool))
+ if(hacked == 0)
+ hacked = 1
+ blade_color = "rainbow"
+ user << "RNBW_ENGAGE"
+
+ if(active)
+ icon_state = "swordrainbow"
+ // Updating overlays, copied from welder code.
+ // I tried calling attack_self twice, which looked cool, except it somehow didn't update the overlays!!
+ if(user.r_hand == src)
+ user.update_inv_r_hand(0)
+ else if(user.l_hand == src)
+ user.update_inv_l_hand(0)
+ else
+ user << "It's already fabulous!"
/*
* Classic Baton
*/
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index b070240b7af..f909c71ef21 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -191,6 +191,9 @@ obj/item/weapon/twohanded/
* Double-Bladed Energy Swords - Cheridan
*/
/obj/item/weapon/twohanded/dualsaber
+ var/hacked = 0
+ var/blade_color
+ icon_override = 'icons/mob/in-hand/swords.dmi'
icon_state = "dualsaber0"
name = "double-bladed energy sword"
desc = "Handle with care."
@@ -210,20 +213,14 @@ obj/item/weapon/twohanded/
edge = 1
no_embed = 1 // Like with the single-handed esword, this shouldn't be embedding in people.
-/* Here for when we can add items to left and right hands again, but currently this cannot be done due to the lack of in-hand icons for dual eswords aside from the green one.
/obj/item/weapon/twohanded/dualsaber/New()
- item_color = pick("red", "blue", "green", "purple")
+ blade_color = pick("red", "blue", "green", "purple")
/obj/item/weapon/twohanded/dualsaber/update_icon()
if(wielded)
- icon_state = "dualsaber[item_color][wielded]"
+ icon_state = "dualsaber[blade_color][wielded]"
else
icon_state = "dualsaber0"
-*/
-
-/obj/item/weapon/twohanded/dualsaber/update_icon()
- icon_state = "dualsaber[wielded]"
- return
/obj/item/weapon/twohanded/dualsaber/attack(target as mob, mob/living/user as mob)
..()
@@ -245,11 +242,19 @@ obj/item/weapon/twohanded/
/obj/item/weapon/twohanded/dualsaber/green
New()
- color = "green"
+ blade_color = "green"
/obj/item/weapon/twohanded/dualsaber/red
New()
- color = "red"
+ blade_color = "red"
+
+/obj/item/weapon/twohanded/dualsaber/purple
+ New()
+ blade_color = "purple"
+
+/obj/item/weapon/twohanded/dualsaber/blue
+ New()
+ blade_color = "blue"
/obj/item/weapon/twohanded/dualsaber/unwield()
..()
@@ -259,6 +264,18 @@ obj/item/weapon/twohanded/
..()
hitsound = 'sound/weapons/blade1.ogg'
+/obj/item/weapon/twohanded/dualsaber/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ ..()
+ if(istype(W, /obj/item/device/multitool))
+ if(hacked == 0)
+ hacked = 1
+ user << "2XRNBW_ENGAGE"
+ blade_color = "rainbow"
+ update_icon()
+ else
+ user << "It's starting to look like a triple rainbow - no, nevermind."
+
+
//spears
/obj/item/weapon/twohanded/spear
icon_state = "spearglass0"
diff --git a/icons/mob/in-hand/swords.dmi b/icons/mob/in-hand/swords.dmi
new file mode 100644
index 00000000000..c9ce0a84ee0
Binary files /dev/null and b/icons/mob/in-hand/swords.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index daccc94a722..90c9a61a302 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ