diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index b6ba88829ea..3e10d6715a3 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -317,6 +317,10 @@
if(gang_mode)
takes_time = TRUE
+ var/wait_time = 50
+ if(PAINT_LARGE_HORIZONTAL)
+ wait_time *= 3
+
if(takes_time)
if(!do_after(user, 50, target = target))
return
@@ -324,6 +328,9 @@
if(length(text_buffer))
drawing = copytext(text_buffer,1,2)
+
+ var/list/turf/affected_turfs = list()
+
if(actually_paints)
if(gang_mode)
// Double check it wasn't tagged in the meanwhile
@@ -334,10 +341,15 @@
switch(paint_mode)
if(PAINT_NORMAL)
new /obj/effect/decal/cleanable/crayon(target, paint_color, drawing, temp, graf_rot)
+ affected_turfs += target
if(PAINT_LARGE_HORIZONTAL)
- if(is_type_in_list(locate(target.x-1,target.y,target.z), validSurfaces)\
- && is_type_in_list(locate(target.x+1,target.y,target.z), validSurfaces))
- new /obj/effect/decal/cleanable/crayon(locate(target.x-1,target.y,target.z), paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON)
+ var/turf/left = locate(target.x-1,target.y,target.z)
+ var/turf/right = locate(target.x+1,target.y,target.z)
+ if(is_type_in_list(left, validSurfaces) && is_type_in_list(right, validSurfaces))
+ new /obj/effect/decal/cleanable/crayon(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON)
+ affected_turfs += left
+ affected_turfs += right
+ affected_turfs += target
else
user << "There isn't enough space to paint!"
return
@@ -352,10 +364,15 @@
audible_message("You hear spraying.")
playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5)
- . = use_charges(1)
+ var/cost = 1
+ if(paint_mode == PAINT_LARGE_HORIZONTAL)
+ cost = 5
+ . = use_charges(cost)
var/fraction = min(1, . / reagents.maximum_volume)
- reagents.reaction(target, TOUCH, fraction * volume_multiplier)
- reagents.trans_to(target, ., volume_multiplier)
+ fraction /= affected_turfs.len
+ for(var/t in affected_turfs)
+ reagents.reaction(t, TOUCH, fraction * volume_multiplier)
+ reagents.trans_to(t, ., volume_multiplier)
check_empty(user)
/obj/item/toy/crayon/attack(mob/M, mob/user)