diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm
index 216a65b5be3..246d66e2cbe 100644
--- a/code/__HELPERS/type2type.dm
+++ b/code/__HELPERS/type2type.dm
@@ -625,6 +625,13 @@ for(var/t in test_times)
if(var_source.vars.Find(A))
. += A
-
+//assumes format #RRGGBB #rrggbb
+/proc/color_hex2num(A)
+ if(!A)
+ return 0
+ var/R = hex2num(copytext(A,2,4))
+ var/G = hex2num(copytext(A,4,6))
+ var/B = hex2num(copytext(A,6,0))
+ return R+G+B
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 66b97a5b5d1..907697bac1e 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -1,42 +1,42 @@
/obj/item/toy/crayon/red
icon_state = "crayonred"
- colour = "#DA0000"
+ paint_color = "#DA0000"
colourName = "red"
/obj/item/toy/crayon/orange
icon_state = "crayonorange"
- colour = "#FF9300"
+ paint_color = "#FF9300"
colourName = "orange"
/obj/item/toy/crayon/yellow
icon_state = "crayonyellow"
- colour = "#FFF200"
+ paint_color = "#FFF200"
colourName = "yellow"
/obj/item/toy/crayon/green
icon_state = "crayongreen"
- colour = "#A8E61D"
+ paint_color = "#A8E61D"
colourName = "green"
/obj/item/toy/crayon/blue
icon_state = "crayonblue"
- colour = "#00B7EF"
+ paint_color = "#00B7EF"
colourName = "blue"
/obj/item/toy/crayon/purple
icon_state = "crayonpurple"
- colour = "#DA00FF"
+ paint_color = "#DA00FF"
colourName = "purple"
/obj/item/toy/crayon/white
icon_state = "crayonwhite"
- colour = "#FFFFFF"
+ paint_color = "#FFFFFF"
colourName = "white"
/obj/item/toy/crayon/mime
icon_state = "crayonmime"
desc = "A very sad-looking crayon."
- colour = "#FFFFFF"
+ paint_color = "#FFFFFF"
colourName = "mime"
uses = -1
@@ -44,24 +44,24 @@
update_window(user)
/obj/item/toy/crayon/mime/update_window(mob/living/user)
- dat += "
Change color"
+ dat += " Change color"
..()
/obj/item/toy/crayon/mime/Topic(href,href_list)
if ((usr.restrained() || usr.stat || usr.get_active_hand() != src))
return
if(href_list["color"])
- if(colour != "#FFFFFF")
- colour = "#FFFFFF"
+ if(paint_color != "#FFFFFF")
+ paint_color = "#FFFFFF"
else
- colour = "#000000"
+ paint_color = "#000000"
update_window(usr)
else
..()
/obj/item/toy/crayon/rainbow
icon_state = "crayonrainbow"
- colour = "#FFF000"
+ paint_color = "#FFF000"
colourName = "rainbow"
uses = -1
@@ -69,7 +69,7 @@
update_window(user)
/obj/item/toy/crayon/rainbow/update_window(mob/living/user)
- dat += " Change color"
+ dat += " Change color"
..()
/obj/item/toy/crayon/rainbow/Topic(href,href_list[])
@@ -78,7 +78,7 @@
var/temp = input(usr, "Please select colour.", "Crayon colour") as color
if ((usr.restrained() || usr.stat || usr.get_active_hand() != src))
return
- colour = temp
+ paint_color = temp
update_window(usr)
else
..()
@@ -143,10 +143,10 @@
user.visible_message("[user] shakes up the [src] with a rattle and lifts it to their mouth, spraying silver paint across their teeth!")
user.say("WITNESS ME!!")
playsound(loc, 'sound/effects/spray.ogg', 5, 1, 5)
- colour = "#C0C0C0"
+ paint_color = "#C0C0C0"
update_icon()
H.lip_style = "spray_face"
- H.lip_color = colour
+ H.lip_color = paint_color
H.update_body()
uses = max(0, uses - 10)
return (OXYLOSS)
@@ -154,7 +154,7 @@
/obj/item/toy/crayon/spraycan/New()
..()
name = "spray can"
- colour = pick("#DA0000","#FF9300","#FFF200","#A8E61D","#00B7EF","#DA00FF")
+ paint_color = pick("#DA0000","#FF9300","#FFF200","#A8E61D","#00B7EF","#DA00FF")
update_icon()
/obj/item/toy/crayon/spraycan/examine(mob/user)
@@ -175,7 +175,7 @@
if("Change Drawing")
..()
if("Change Color")
- colour = input(user,"Choose Color") as color
+ paint_color = input(user,"Choose Color") as color
update_icon()
/obj/item/toy/crayon/spraycan/afterattack(atom/target, mob/user, proximity)
@@ -200,15 +200,25 @@
if(ishuman(C))
var/mob/living/carbon/human/H = C
H.lip_style = "spray_face"
- H.lip_color = colour
+ H.lip_color = paint_color
H.update_body()
uses = max(0,uses-10)
+ if(istype(target, /obj/structure/window))
+ if(uses)
+ target.color = paint_color
+ if(color_hex2num(paint_color) < 255)
+ target.SetOpacity(255)
+ else
+ target.SetOpacity(initial(target.opacity))
+ uses = max(0, uses-2)
+ playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5)
+ return
..()
/obj/item/toy/crayon/spraycan/update_icon()
overlays.Cut()
var/image/I = image('icons/obj/crayons.dmi',icon_state = "[capped ? "spraycan_cap_colors" : "spraycan_colors"]")
- I.color = colour
+ I.color = paint_color
overlays += I
/obj/item/toy/crayon/spraycan/gang
@@ -220,5 +230,5 @@
/obj/item/toy/crayon/spraycan/gang/New(loc, datum/gang/G)
..()
if(G)
- colour = G.color_hex
+ paint_color = G.color_hex
update_icon()
\ No newline at end of file
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index e93e42896ba..63a993a7d1c 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -319,7 +319,7 @@
icon_state = "crayonred"
w_class = 1
attack_verb = list("attacked", "coloured")
- var/colour = "#FF0000" //RGB
+ var/paint_color = "#FF0000" //RGB
var/drawtype = "rune"
var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow","poseur tag")
var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
@@ -466,7 +466,7 @@
user << "You tagged [territory] for your gang!"
else
- new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp,graf_rot)
+ new /obj/effect/decal/cleanable/crayon(target,paint_color,drawtype,temp,graf_rot)
user << "You finish [instant ? "spraying" : "drawing"] [temp]."
if(instant<0)
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index aaa24788476..a1692841bd8 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -66,6 +66,12 @@
else if(ishuman(target) && user.zone_sel && user.zone_sel.selecting == "mouth")
user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!", "You wash \the [target]'s mouth out with [src.name]!") //washes mouth out with soap sounds better than 'the soap' here
return
+ else if(istype(target, /obj/structure/window))
+ user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...")
+ if(do_after(user, src.cleanspeed, target = target))
+ user << "You clean \the [target.name]."
+ target.color = initial(target.color)
+ target.SetOpacity(initial(target.opacity))
else
user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...")
if(do_after(user, src.cleanspeed, target = target))
diff --git a/code/game/objects/structures/artstuff.dm b/code/game/objects/structures/artstuff.dm
index 859af196a46..101373a4ee0 100644
--- a/code/game/objects/structures/artstuff.dm
+++ b/code/game/objects/structures/artstuff.dm
@@ -110,7 +110,7 @@ var/global/list/globalBlankCanvases[AMT_OF_CANVASES]
//Drawing one pixel with a crayon
if(istype(I, /obj/item/toy/crayon))
var/obj/item/toy/crayon/C = I
- DrawPixelOn(C.colour, pixX, pixY)
+ DrawPixelOn(C.paint_color, pixX, pixY)
return
..()