From 615e4be24b64f2bd6c96fff89e13059b76226953 Mon Sep 17 00:00:00 2001 From: uporotiy Date: Thu, 5 May 2011 11:14:41 +0000 Subject: [PATCH] Crayons Updated the way they work. Clown now starts with a rainbow crayon that can draw in any two colours. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1533 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/cloning.dm | 3 + code/defines/obj/toy.dm | 103 ++--------- code/game/jobs/jobprocs.dm | 2 +- code/game/machinery/bots/cleanbot.dm | 1 + code/game/machinery/hydroponics.dm | 3 + .../game/objects/items/weapons/clown_items.dm | 9 + .../objects/items/weapons/mops_cleaners.dm | 4 +- code/game/objects/toys.dm | 161 ++++++++++++++++++ icons/obj/crayons.dmi | Bin 0 -> 732 bytes icons/obj/toy.dmi | Bin 1804 -> 1257 bytes tgstation.dme | 3 +- 11 files changed, 192 insertions(+), 97 deletions(-) create mode 100644 code/game/objects/toys.dm create mode 100644 icons/obj/crayons.dmi 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 0000000000000000000000000000000000000000..7ebabd5a81ef5bdfce1a76163e72b1fc54133f4a GIT binary patch literal 732 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