diff --git a/aurorastation.dme b/aurorastation.dme index 7017ca0edeb..5c08d640d6c 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -740,6 +740,7 @@ #include "code\game\objects\items\bodybag.dm" #include "code\game\objects\items\contraband.dm" #include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\draftingchalk.dm" #include "code\game\objects\items\eightball.dm" #include "code\game\objects\items\glassjar.dm" #include "code\game\objects\items\latexballoon.dm" diff --git a/code/game/objects/items/draftingchalk.dm b/code/game/objects/items/draftingchalk.dm new file mode 100644 index 00000000000..37b0af1a12d --- /dev/null +++ b/code/game/objects/items/draftingchalk.dm @@ -0,0 +1,117 @@ +/obj/effect/decal/cleanable/draftingchalk + name = "chalk marking" + desc = "A line drawn in chalk." + icon = 'icons/obj/smooth/chalkline-smooth.dmi' + icon_state = "preview" + color = "#FFFFFF" + layer = 2.1 + anchored = TRUE + smooth = SMOOTH_TRUE + +/obj/effect/decal/cleanable/draftingchalk/Initialize(mapload) + . = ..() + if (mapload) + queue_smooth(src) + else + smooth_icon(src) + for (var/obj/effect/decal/cleanable/draftingchalk/C in orange(1, src)) + smooth_icon(C) + +/obj/item/weapon/pen/drafting + name = "white drafting chalk" + desc = "A piece of white chalk for marking areas of floor." + icon = 'icons/obj/crayons.dmi' + icon_state = "dchalk" + color = "#FFFFFF" + var/colorName = "whitec" + +/obj/item/weapon/pen/drafting/afterattack(turf/target, mob/user, proximity) + if (!proximity || !istype(target, /turf/simulated) || target.density || target.is_hole) + return + + to_chat(user, "You start marking a line on [target].") + + if (!do_after(user, 1 SECONDS, act_target = target)) + return + + for (var/obj/effect/decal/cleanable/draftingchalk/C in target) + qdel(C) + + to_chat(user, "You mark a line on [target].") + + var/obj/effect/decal/cleanable/draftingchalk/C = new(target) + C.color = color + target.add_fingerprint(user) + +/obj/item/weapon/pen/drafting/red + name = "red drafting chalk" + desc = "A piece of red chalk for marking areas of floor." + color = "#E75344" + colorName = "redc" + +/obj/effect/decal/cleanable/draftingchalk/red + desc = "A line drawn in a red chalk." + color = "#E75344" + +/obj/item/weapon/pen/drafting/yellow + name = "yellow drafting chalk" + desc = "A piece of yellow chalk for marking areas of floor." + color = "#E1CB47" + colorName = "yellowc" + +/obj/effect/decal/cleanable/draftingchalk/yellow + desc = "A line drawn in a yellow chalk." + color = "#E1CB47" + +/obj/item/weapon/pen/drafting/green + name = "green drafting chalk" + desc = "A piece of yellow chalk for marking areas of floor." + color = "#6CD48F" + colorName = "green" + +/obj/effect/decal/cleanable/draftingchalk/green + desc = "A line drawn in a green chalk." + color = "#6CD48F" + +/obj/item/weapon/pen/drafting/blue + name = "blue drafting chalk" + desc = "A piece of blue chalk for marking areas of floor." + color = "#9FC8F7" + colorName = "bluec" + +/obj/effect/decal/cleanable/draftingchalk/blue + desc = "A line drawn in a blue chalk." + color = "#9FC8F7" + +/obj/item/weapon/pen/drafting/purple + name = "purple drafting chalk" + desc = "A piece of purple chalk for marking areas of floor." + color = "#a489c2" + colorName = "purplec" + +/obj/effect/decal/cleanable/draftingchalk/purple + desc = "A line drawn in a purple chalk." + color = "#a489c2" + +/obj/item/weapon/storage/fancy/crayons/chalkbox + name = "box of drafting chalk" + desc = "A box of drafting chalk for drafting floor plans." + icon_state = "chalkbox" + icon_type = "chalk" + can_hold = list( + /obj/item/weapon/pen/drafting + ) + +/obj/item/weapon/storage/fancy/crayons/chalkbox/fill() + new /obj/item/weapon/pen/drafting/red(src) + new /obj/item/weapon/pen/drafting(src) + new /obj/item/weapon/pen/drafting/yellow(src) + new /obj/item/weapon/pen/drafting/green(src) + new /obj/item/weapon/pen/drafting/blue(src) + new /obj/item/weapon/pen/drafting/purple(src) + update_icon() + +/obj/item/weapon/storage/fancy/crayons/chalkbox/update_icon() + cut_overlays() + for(var/obj/item/weapon/pen/drafting/chalk in contents) + add_overlay("[chalk.colorName]") \ No newline at end of file diff --git a/html/changelogs/Kaedwuff Drafting Chalk.yml b/html/changelogs/Kaedwuff Drafting Chalk.yml new file mode 100644 index 00000000000..fdd10577330 --- /dev/null +++ b/html/changelogs/Kaedwuff Drafting Chalk.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Kaedwuff + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added drafting chalks to the game, which can be used to draft out construction plans on floor turfs. A box can be found in the engineering lobby and the secondary tool storage on the surface." diff --git a/icons/obj/crayons.dmi b/icons/obj/crayons.dmi index 7ebabd5a81e..afeb89474d3 100644 Binary files a/icons/obj/crayons.dmi and b/icons/obj/crayons.dmi differ diff --git a/icons/obj/smooth/chalkline-smooth.dmi b/icons/obj/smooth/chalkline-smooth.dmi new file mode 100644 index 00000000000..40ebb25ae7d Binary files /dev/null and b/icons/obj/smooth/chalkline-smooth.dmi differ diff --git a/icons/obj/smooth/chalkline.dmi b/icons/obj/smooth/chalkline.dmi new file mode 100644 index 00000000000..9904113cdce Binary files /dev/null and b/icons/obj/smooth/chalkline.dmi differ diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm index 3d7caf9c5ec..002baacfa86 100644 --- a/maps/aurora/aurora-4_mainlevel.dmm +++ b/maps/aurora/aurora-4_mainlevel.dmm @@ -64905,6 +64905,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plating, /area/maintenance/medbay) +"elB" = ( +/obj/structure/table/wood/gamblingtable, +/obj/item/weapon/storage/fancy/crayons/chalkbox, +/turf/simulated/floor/tiled, +/area/engineering/foyer) "eoJ" = ( /obj/random/plushie, /turf/simulated/floor/plating, @@ -87887,7 +87892,7 @@ aCa aDU aFJ aHL -aHL +elB aLb aMS aOH diff --git a/maps/aurora/aurora-6_surface.dmm b/maps/aurora/aurora-6_surface.dmm index 59d7e5a1a38..85a9db5a7bf 100644 --- a/maps/aurora/aurora-6_surface.dmm +++ b/maps/aurora/aurora-6_surface.dmm @@ -10420,6 +10420,7 @@ /obj/structure/table/standard, /obj/item/weapon/storage/fancy/crayons, /obj/item/weapon/storage/fancy/crayons, +/obj/item/weapon/storage/fancy/crayons/chalkbox, /turf/simulated/floor/tiled, /area/storage/primary) "sZ" = ( @@ -15221,6 +15222,7 @@ d2 = 8; icon_state = "1-8" }, +/obj/item/weapon/storage/fancy/crayons/chalkbox, /turf/simulated/floor/tiled, /area/storage/tools) "Cb" = ( diff --git a/tools/SS13SmoothingCutter/Cutter.dm b/tools/SS13SmoothingCutter/Cutter.dm index a4bd3082a95..696f503c783 100644 --- a/tools/SS13SmoothingCutter/Cutter.dm +++ b/tools/SS13SmoothingCutter/Cutter.dm @@ -9,13 +9,13 @@ if(isfile(dmifile) && (copytext("[dmifile]",-4) == ".dmi")) SliceNDice(dmifile) else - to_world("\red Bad DMI file '[dmifile]'") + world << "\red Bad DMI file '[dmifile]'" /proc/SliceNDice(dmifile as file) var/icon/sourceIcon = icon(dmifile) var/list/states = sourceIcon.IconStates() - to_world("[dmifile] - states: [states.len]") + world << "[dmifile] - states: [states.len]" switch(states.len) if(0 to (STATE_COUNT_NORMAL - 1)) @@ -23,9 +23,9 @@ if(cont == "No") return if(STATE_COUNT_NORMAL) - to_world("4 States, running in Non-Diagonal mode") + world << "4 States, running in Non-Diagonal mode" if(STATE_COUNT_DIAGONAL) - to_world("5 States, running in Diagonal mode") + world << "5 States, running in Diagonal mode" if((STATE_COUNT_DIAGONAL + 1) to A_BIG_NUMBER) var/cont = alert(usr, "Too many states: [states.len], expected [STATE_COUNT_NORMAL] (Non-Diagonal) or [STATE_COUNT_DIAGONAL] (Diagonal), Continue?", "Unexpected Amount of States", "Yes", "No") if(cont == "No") @@ -65,7 +65,7 @@ corner4i.DrawBox(null, 17, 17, 32, 32) outputIcon.Insert(corner4i, "4-i") - to_world("Box: \icon[box] -> \icon[corner1i] \icon[corner2i] \icon[corner3i] \icon[corner4i]") + world << "Box: \icon[box] -> \icon[corner1i] \icon[corner2i] \icon[corner3i] \icon[corner4i]" if("line") var/icon/line = icon(sourceIcon, state) @@ -108,7 +108,7 @@ line4e.Turn(90) outputIcon.Insert(line4e, "4-e") - to_world("Line: \icon[line] -> \icon[line1n] \icon[line2n] \icon[line3s] \icon[line4s] \icon[line1w] \icon[line2e] \icon[line3w] \icon[line4e]") + world << "Line: \icon[line] -> \icon[line1n] \icon[line2n] \icon[line3s] \icon[line4s] \icon[line1w] \icon[line2e] \icon[line3w] \icon[line4e]" if("center_4") var/icon/center4 = icon(sourceIcon, state) @@ -133,7 +133,7 @@ corner4se.DrawBox(null, 17, 17, 32, 32) outputIcon.Insert(corner4se, "4-se") - to_world("Center4: \icon[center4] -> \icon[corner1nw] \icon[corner2ne] \icon[corner3sw] \icon[corner4se]") + world << "Center4: \icon[center4] -> \icon[corner1nw] \icon[corner2ne] \icon[corner3sw] \icon[corner4se]" if("center_8") var/icon/center8 = icon(sourceIcon, state) @@ -158,7 +158,7 @@ corner4f.DrawBox(null, 17, 17, 32, 32) outputIcon.Insert(corner4f, "4-f") - to_world("Center8: \icon[center8] -> \icon[corner1f] \icon[corner2f] \icon[corner3f] \icon[corner4f]") + world << "Center8: \icon[center8] -> \icon[corner1f] \icon[corner2f] \icon[corner3f] \icon[corner4f]" if("diag") var/icon/diag = icon(sourceIcon, state) @@ -178,7 +178,7 @@ diagnw.Turn(180) outputIcon.Insert(diagnw, "d-nw") - to_world("Diag: \icon[diag] -> \icon[diagse] \icon[diagsw] \icon[diagne] \icon[diagnw]") + world << "Diag: \icon[diag] -> \icon[diagse] \icon[diagsw] \icon[diagne] \icon[diagnw]" if("diag_corner_a") var/icon/diag_corner_a = icon(sourceIcon, state) @@ -198,7 +198,7 @@ diagnw0.Turn(180) outputIcon.Insert(diagnw0, "d-nw-0") - to_world("Diag_Corner_A: \icon[diag_corner_a] -> \icon[diagse0] \icon[diagsw0] \icon[diagne0] \icon[diagnw0]") + world << "Diag_Corner_A: \icon[diag_corner_a] -> \icon[diagse0] \icon[diagsw0] \icon[diagne0] \icon[diagnw0]" if("diag_corner_b") var/icon/diag_corner_b = icon(sourceIcon, state) @@ -218,9 +218,9 @@ diagnw1.Turn(180) outputIcon.Insert(diagnw1, "d-nw-0") - to_world("Diag_Corner_B: \icon[diag_corner_b] -> \icon[diagse1] \icon[diagsw1] \icon[diagne1] \icon[diagnw1]") + world << "Diag_Corner_B: \icon[diag_corner_b] -> \icon[diagse1] \icon[diagsw1] \icon[diagne1] \icon[diagnw1]" fcopy(outputIcon, filename) //Update output icon each iteration - to_world("Finished [filename]!") + world << "Finished [filename]!"