diff --git a/code/WorkInProgress/cloning.dm b/code/WorkInProgress/cloning.dm index c4f6525768f..eae697bdcd4 100644 --- a/code/WorkInProgress/cloning.dm +++ b/code/WorkInProgress/cloning.dm @@ -490,6 +490,9 @@ ticker.mode:update_all_rev_icons() //So the icon actually appears if (src.occupant.mind in ticker.mode:head_revolutionaries) ticker.mode:update_all_rev_icons() + if ("nuclear emergency") + if (src.occupant.mind in ticker.mode:syndicates) + ticker.mode:update_all_synd_icons() if ("cult") if (src.occupant.mind in ticker.mode:cult) ticker.mode:add_cultist(src.occupant.mind) diff --git a/code/defines/obj/toy.dm b/code/defines/obj/toy.dm index bbcd0baf2d7..cf99e2e6f80 100644 --- a/code/defines/obj/toy.dm +++ b/code/defines/obj/toy.dm @@ -223,101 +223,18 @@ obj/item/toy/blink /obj/item/toy/crayonbox name = "box of crayons" desc = "A box of crayons for all your rune drawing needs." - icon = 'toy.dmi' - icon_state = "crayonbox6" - -/obj/item/toy/crayonbox/New() - ..() - new /obj/item/toy/crayon/red(src) - new /obj/item/toy/crayon/orange(src) - new /obj/item/toy/crayon/yellow(src) - new /obj/item/toy/crayon/green(src) - new /obj/item/toy/crayon/blue(src) - new /obj/item/toy/crayon/purple(src) - -/obj/item/toy/crayonbox/attack_hand(mob/user as mob) - if(user.r_hand == src || user.l_hand == src) - if(!contents.len) - user << "\red You're out of crayons!" - return - else - var/crayon = contents[contents.len] - user.contents += crayon - if(user.hand) - user.l_hand = crayon - else - user.r_hand = crayon - crayon:layer = 20 - else - return ..() - icon_state = "crayonbox[contents.len]" - return + icon = 'crayons.dmi' + icon_state = "crayonbox" + w_class = 2.0 /obj/item/toy/crayon name = "crayon" desc = "A colourful crayon. Looks tasty. Mmmm..." - icon = 'toy.dmi' + icon = 'crayons.dmi' icon_state = "crayonred" - var/colour = "000000" //RGB - var/shadeColour = "000000" //RGB - -/obj/item/toy/crayon/red - icon_state = "crayonred" - colour = "DA0000" - shadeColour = "810C0C" - -/obj/item/toy/crayon/orange - icon_state = "crayonorange" - colour = "FF9300" - shadeColour = "A55403" - -/obj/item/toy/crayon/yellow - icon_state = "crayonyellow" - colour = "FFF200" - shadeColour = "886422" - -/obj/item/toy/crayon/green - icon_state = "crayongreen" - colour = "A8E61D" - shadeColour = "61840F" - -/obj/item/toy/crayon/blue - icon_state = "crayonblue" - colour = "00B7EF" - shadeColour = "0082A8" - -/obj/item/toy/crayon/purple - icon_state = "crayonpurple" - colour = "DA00FF" - shadeColour = "810CFF" - -/obj/item/toy/crayon/mime - icon_state = "crayonmime" - colour = "FFFFFF" - shadeColour = "000000" - -/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob) - if(istype(target,/turf/simulated/floor)) - new /obj/crayonrune(target,colour,shadeColour) - user << "You draw a rune on the [target.name]." - return - -/obj/crayonrune - name = "rune" - desc = "A rune drawn in crayon." - icon = 'rune.dmi' - layer = 2.1 - -/obj/crayonrune/New(location,main = "FFFFFF",shade = "000000") - ..() - loc = location - var/runeShape = rand(1,6) - - var/icon/mainOverlay = new/icon('rune.dmi',"main[runeShape]",2.1) - mainOverlay.Blend("#[main]",ICON_ADD) - - var/icon/shadeOverlay = new/icon('rune.dmi',"shade[runeShape]",2.1) - shadeOverlay.Blend("#[shade]",ICON_ADD) - - overlays += mainOverlay - overlays += shadeOverlay \ No newline at end of file + w_class = 1.0 + var/colour = "#FF0000" //RGB + var/shadeColour = "#220000" //RGB + var/uses = 30 //0 for unlimited uses + var/instant = 0 + var/colourName = "red" //for updateIcon purposes \ No newline at end of file diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm index 387d9dc0ccb..ddee025d359 100644 --- a/code/game/jobs/jobprocs.dm +++ b/code/game/jobs/jobprocs.dm @@ -339,7 +339,7 @@ src.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(src), slot_in_backpack) src.equip_if_possible(new /obj/item/weapon/bikehorn(src), slot_in_backpack) src.equip_if_possible(new /obj/item/weapon/stamp/clown(src), slot_in_backpack) - src.equip_if_possible(new /obj/item/toy/crayonbox(src), slot_in_backpack) + src.equip_if_possible(new /obj/item/toy/crayon/rainbow(src), slot_in_backpack) src.mutations |= 16 if ("Mime") diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 293c044950f..7d2e99a79b5 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -209,6 +209,7 @@ text("[src.oddbutton ? "Yes" : "No" target_types += /obj/decal/cleanable/blood/gibs/ target_types += /obj/decal/cleanable/oil target_types += /obj/decal/cleanable/robot_debris + target_types += /obj/decal/cleanable/crayon /obj/machinery/bot/cleanbot/proc/clean(var/obj/decal/cleanable/target) src.anchored = 1 diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index fb368e4878a..782c1cbb70c 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -812,6 +812,9 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) ticker.mode:update_all_rev_icons() //So the icon actually appears if (podman.mind in ticker.mode:head_revolutionaries) ticker.mode:update_all_rev_icons() + if ("nuclear emergency") + if (podman.mind in ticker.mode:syndicates) + ticker.mode:update_all_synd_icons() if ("cult") if (podman.mind in ticker.mode:cult) ticker.mode:add_cultist(podman.mind) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index fb2bd6b6d41..2d1be7ee879 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -31,6 +31,15 @@ BIKE HORN M.stunned = 8 M.weakened = 5 +/obj/item/weapon/soap/afterattack(atom/target, mob/user as mob) + if(istype(target,/obj/decal/cleanable)) + del(target) + user << "\blue You scrub the [name] out." + else + target.clean_blood() + user << "\blue You clean the [target.name]." + return + /obj/item/weapon/bikehorn/attack_self(mob/user as mob) if (spam_flag == 0) spam_flag = 1 diff --git a/code/game/objects/items/weapons/mops_cleaners.dm b/code/game/objects/items/weapons/mops_cleaners.dm index 86faaa01051..f0b2345106c 100644 --- a/code/game/objects/items/weapons/mops_cleaners.dm +++ b/code/game/objects/items/weapons/mops_cleaners.dm @@ -73,10 +73,10 @@ MOP A.clean_blood() for(var/obj/rune/R in A) del(R) - for(var/obj/crayonrune/R in A) + for(var/obj/decal/cleanable/crayon/R in A) del(R) mopcount++ - else if (istype(A, /obj/decal/cleanable/blood) || istype(A, /obj/overlay) || istype(A, /obj/decal/cleanable/xenoblood) || istype(A, /obj/rune) || istype(A,/obj/crayonrune) ) + else if (istype(A, /obj/decal/cleanable/blood) || istype(A, /obj/overlay) || istype(A, /obj/decal/cleanable/xenoblood) || istype(A, /obj/rune) || istype(A,/obj/decal/cleanable/crayon) ) for(var/mob/O in viewers(user, null)) O.show_message(text("\red [user] begins to clean [A]"), 1) sleep(20) diff --git a/code/game/objects/toys.dm b/code/game/objects/toys.dm new file mode 100644 index 00000000000..2f5b4613fce --- /dev/null +++ b/code/game/objects/toys.dm @@ -0,0 +1,161 @@ +/*-------- +//CONTAINS +CRAYONS +--------*/ +/obj/item/toy/crayonbox/New() + ..() + new /obj/item/toy/crayon/red(src) + new /obj/item/toy/crayon/orange(src) + new /obj/item/toy/crayon/yellow(src) + new /obj/item/toy/crayon/green(src) + new /obj/item/toy/crayon/blue(src) + new /obj/item/toy/crayon/purple(src) + updateIcon() + +/obj/item/toy/crayonbox/proc/updateIcon() + overlays = list() //resets list + overlays += image('crayons.dmi',"crayonbox") + for(var/obj/item/toy/crayon/crayon in contents) + overlays += image('crayons.dmi',crayon.colourName) + +/obj/item/toy/crayonbox/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/toy/crayon)) + switch(W:colourName) + if("mime") + usr << "This crayon is too sad to be contained in this box." + return + if("rainbow") + usr << "This crayon is too powerful to be contained in this box." + return + else + usr << "You add the crayon to the box." + user.u_equip(W) + W.loc = src + if ((user.client && user.s_active != src)) + user.client.screen -= W + W.dropped(user) + add_fingerprint(user) + updateIcon() + return + else + ..() + +/obj/item/toy/crayonbox/attack_hand(mob/user as mob) + if(user.r_hand == src || user.l_hand == src) + if(!contents.len) + user << "\red You're out of crayons!" + return + else + var/crayon = pick(contents) + user.contents += crayon + if(user.hand) + user.l_hand = crayon + else + user.r_hand = crayon + crayon:layer = 20 + user << "You take the [crayon:colourName] crayon out of the box." + updateIcon() + else + return ..() + icon_state = "crayonbox[contents.len]" + return + +/obj/item/toy/crayon/red + icon_state = "crayonred" + colour = "#DA0000" + shadeColour = "#810C0C" + colourName = "red" + +/obj/item/toy/crayon/orange + icon_state = "crayonorange" + colour = "#FF9300" + shadeColour = "#A55403" + colourName = "orange" + +/obj/item/toy/crayon/yellow + icon_state = "crayonyellow" + colour = "#FFF200" + shadeColour = "#886422" + colourName = "yellow" + +/obj/item/toy/crayon/green + icon_state = "crayongreen" + colour = "#A8E61D" + shadeColour = "#61840F" + colourName = "green" + +/obj/item/toy/crayon/blue + icon_state = "crayonblue" + colour = "#00B7EF" + shadeColour = "#0082A8" + colourName = "blue" + +/obj/item/toy/crayon/purple + icon_state = "crayonpurple" + colour = "#DA00FF" + shadeColour = "#810CFF" + colourName = "purple" + +/obj/item/toy/crayon/mime + icon_state = "crayonmime" + desc = "A very sad-looking crayon." + colour = "#FFFFFF" + shadeColour = "#000000" + colourName = "mime" + uses = 0 + +/obj/item/toy/crayon/mime/attack_self(mob/living/user as mob) //inversion + if(colour != "#FFFFFF" && shadeColour != "#000000") + colour = "#FFFFFF" + shadeColour = "#000000" + user << "You will now draw in white and black with this crayon." + else + colour = "#000000" + shadeColour = "#FFFFFF" + user << "You will now draw in black and white with this crayon." + return + +/obj/item/toy/crayon/rainbow + icon_state = "crayonrainbow" + colour = "#FFF000" + shadeColour = "#000FFF" + colourName = "rainbow" + uses = 0 + +/obj/item/toy/crayon/rainbow/attack_self(mob/living/user as mob) + colour = input(user, "Please select the main colour.", "Crayon colour") as color + shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color + return + +/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob) + if(istype(target,/turf/simulated/floor)) + user << "You start drawing a rune on the [target.name]." + if(instant || do_after(user, 50)) + new /obj/decal/cleanable/crayon(target,colour,shadeColour) + user << "You draw a rune on the [target.name]." + if(uses) + uses-- + if(!uses) + user << "You used up your crayon!" + del(src) + return + +/obj/decal/cleanable/crayon + name = "rune" + desc = "A rune drawn in crayon." + icon = 'rune.dmi' + layer = 2.1 + +/obj/decal/cleanable/crayon/New(location,main = "#FFFFFF",shade = "#000000") + ..() + loc = location + var/runeShape = rand(1,6) + + var/icon/mainOverlay = new/icon('rune.dmi',"main[runeShape]",2.1) + var/icon/shadeOverlay = new/icon('rune.dmi',"shade[runeShape]",2.1) + + mainOverlay.Blend(main,ICON_ADD) + shadeOverlay.Blend(shade,ICON_ADD) + + overlays += mainOverlay + overlays += shadeOverlay \ No newline at end of file diff --git a/icons/obj/crayons.dmi b/icons/obj/crayons.dmi new file mode 100644 index 00000000000..7ebabd5a81e Binary files /dev/null and b/icons/obj/crayons.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 06033b8231a..09871a9e910 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/tgstation.dme b/tgstation.dme index e5482c3cbf3..4d3df101938 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -482,6 +482,7 @@ #include "code\game\objects\structures.dm" #include "code\game\objects\tables_racks.dm" #include "code\game\objects\tank.dm" +#include "code\game\objects\toys.dm" #include "code\game\objects\traps.dm" #include "code\game\objects\weapons.dm" #include "code\game\objects\window.dm" @@ -794,5 +795,5 @@ #include "code\WorkInProgress\recycling\scrap.dm" #include "code\WorkInProgress\recycling\sortingmachinery.dm" #include "interface\skin.dmf" -#include "maps\test_map.dmm" +#include "maps\tgstation.2.0.7.dmm" // END_INCLUDE