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