diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 067338bee9a..7db0eb9228c 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -255,12 +255,14 @@ name = "toy sword" desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up." icon = 'icons/obj/weapons.dmi' - icon_state = "sword0" + icon_state = "esword" + var/lcolor + var/rainbow = FALSE item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', ) - var/active = 0.0 + var/active = 0 w_class = ITEMSIZE_SMALL attack_verb = list("attacked", "struck", "hit") @@ -269,22 +271,52 @@ if (src.active) user << "You extend the plastic blade with a quick flick of your wrist." playsound(user, 'sound/weapons/saberon.ogg', 50, 1) - src.icon_state = "swordblue" src.w_class = ITEMSIZE_LARGE else user << "You push the plastic blade back down into the handle." playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) - src.icon_state = "sword0" src.w_class = ITEMSIZE_SMALL - - if(istype(user,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - H.update_inv_l_hand() - H.update_inv_r_hand() - + update_icon() src.add_fingerprint(user) return +/obj/item/toy/sword/update_icon() + . = ..() + var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade") + blade_overlay.color = lcolor + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + if(active) + add_overlay(blade_overlay) + if(istype(usr,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = usr + H.update_inv_l_hand() + H.update_inv_r_hand() + +/obj/item/toy/sword/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + + if(alert("Are you sure you want to recolor your blade?", "Confirm Recolor", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",lcolor) as color|null + if(energy_color_input) + lcolor = sanitize_hexcolor(energy_color_input) + update_icon() + +/obj/item/toy/sword/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +/obj/item/toy/sword/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/device/multitool) && !active) + if(!rainbow) + rainbow = TRUE + else + rainbow = FALSE + to_chat(user, "You manipulate the color controller in [src].") + update_icon() /obj/item/toy/katana name = "replica katana" desc = "Woefully underpowered in D20."