diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 43fbdea11a5..a4b6b120c25 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -1,3 +1,114 @@ +/* + * Crayons + */ + +/obj/item/toy/crayon + name = "crayon" + desc = "A colourful crayon. Looks tasty. Mmmm..." + icon = 'icons/obj/crayons.dmi' + icon_state = "crayonred" + w_class = 1.0 + attack_verb = list("attacked", "coloured") + var/colour = "#FF0000" //RGB + var/drawtype = "rune" + var/list/graffiti = list("body","amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","up","down","left","right","heart","borgsrogue","voxpox","shitcurity","catbeast","hieroglyphs1","hieroglyphs2","hieroglyphs3","security","syndicate1","syndicate2","nanotrasen","lie","dick1","dick2","dick3","valid") + 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") + var/uses = 30 //0 for unlimited uses + var/instant = 0 + var/colourName = "red" //for updateIcon purposes + var/dat + var/list/validSurfaces = list(/turf/simulated/floor) + +/obj/item/toy/crayon/suicide_act(mob/user) + user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") + return (BRUTELOSS|OXYLOSS) + +/obj/item/toy/crayon/New() + ..() + name = "[colourName] crayon" //Makes crayons identifiable in things like grinders + drawtype = pick(pick(graffiti), pick(letters), "rune[rand(1,10)]") + +/obj/item/toy/crayon/attack_self(mob/living/user as mob) + update_window(user) + +/obj/item/toy/crayon/proc/update_window(mob/living/user as mob) + dat += "

Currently selected: [drawtype]


" + dat += "Random letterPick letter" + dat += "
" + dat += "

Runes:


" + dat += "Random rune" + for(var/i = 1; i <= 10; i++) + dat += "Rune[i]" + if(!((i + 1) % 3)) //3 buttons in a row + dat += "
" + dat += "
" + graffiti.Find() + dat += "

Graffiti:


" + dat += "Random graffiti" + var/c = 1 + for(var/T in graffiti) + dat += "[T]" + if(!((c + 1) % 3)) //3 buttons in a row + dat += "
" + c++ + dat += "
" + var/datum/browser/popup = new(user, "crayon", name, 300, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + dat = "" + +/obj/item/toy/crayon/Topic(href, href_list, hsrc) + var/temp = "a" + switch(href_list["type"]) + if("random_letter") + temp = pick(letters) + if("letter") + temp = input("Choose the letter.", "Scribbles") in letters + if("random_rune") + temp = "rune[rand(1,10)]" + if("random_graffiti") + temp = pick(graffiti) + else + temp = href_list["type"] + if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + return + drawtype = temp + update_window(usr) + +/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity) + if(!proximity) return + if(is_type_in_list(target,validSurfaces)) + var/temp = "rune" + if(letters.Find(drawtype)) + temp = "letter" + else if(graffiti.Find(drawtype)) + temp = "graffiti" + user << "You start drawing a [temp] on the [target.name]." + if(instant || do_after(user, 50)) + new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp) + user << "You finish drawing [temp]." + if(uses) + uses-- + if(!uses) + user << "You used up your [src.name]!" + qdel(src) + return + +/obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob) + var/huffable = istype(src,/obj/item/toy/crayon/spraycan) + if(M == user) + user << "You take a [huffable ? "huff" : "bite"] of the [src.name]. Delicious!" + user.nutrition += 5 + if(uses) + uses -= 5 + if(uses <= 0) + user << "There is no more of [src.name] left!" + qdel(src) + else + ..() + + /obj/item/toy/crayon/red icon_state = "crayonred" colour = "#DA0000" diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f675e472702..2b76b4750a3 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -8,7 +8,6 @@ * Toy Tommy Gun * Toy swords * Toy mechs - * Crayons * Snap pops * Water flower * Toy Nuke @@ -432,116 +431,6 @@ user.visible_message("[dmsg] It looks like they are trying to commit suicide.") return (BRUTELOSS) -/* - * Crayons - */ - -/obj/item/toy/crayon - name = "crayon" - desc = "A colourful crayon. Looks tasty. Mmmm..." - icon = 'icons/obj/crayons.dmi' - icon_state = "crayonred" - w_class = 1.0 - attack_verb = list("attacked", "coloured") - var/colour = "#FF0000" //RGB - var/drawtype = "rune" - var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka") - 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") - var/uses = 30 //0 for unlimited uses - var/instant = 0 - var/colourName = "red" //for updateIcon purposes - var/dat - var/list/validSurfaces = list(/turf/simulated/floor) - -/obj/item/toy/crayon/suicide_act(mob/user) - user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") - return (BRUTELOSS|OXYLOSS) - -/obj/item/toy/crayon/New() - ..() - name = "[colourName] crayon" //Makes crayons identifiable in things like grinders - drawtype = pick(pick(graffiti), pick(letters), "rune[rand(1,10)]") - -/obj/item/toy/crayon/attack_self(mob/living/user as mob) - update_window(user) - -/obj/item/toy/crayon/proc/update_window(mob/living/user as mob) - dat += "

Currently selected: [drawtype]


" - dat += "Random letterPick letter" - dat += "
" - dat += "

Runes:


" - dat += "Random rune" - for(var/i = 1; i <= 10; i++) - dat += "Rune[i]" - if(!((i + 1) % 3)) //3 buttons in a row - dat += "
" - dat += "
" - graffiti.Find() - dat += "

Graffiti:


" - dat += "Random graffiti" - var/c = 1 - for(var/T in graffiti) - dat += "[T]" - if(!((c + 1) % 3)) //3 buttons in a row - dat += "
" - c++ - dat += "
" - var/datum/browser/popup = new(user, "crayon", name, 300, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - dat = "" - -/obj/item/toy/crayon/Topic(href, href_list, hsrc) - var/temp = "a" - switch(href_list["type"]) - if("random_letter") - temp = pick(letters) - if("letter") - temp = input("Choose the letter.", "Scribbles") in letters - if("random_rune") - temp = "rune[rand(1,10)]" - if("random_graffiti") - temp = pick(graffiti) - else - temp = href_list["type"] - if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) - return - drawtype = temp - update_window(usr) - -/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity) - if(!proximity) return - if(is_type_in_list(target,validSurfaces)) - var/temp = "rune" - if(letters.Find(drawtype)) - temp = "letter" - else if(graffiti.Find(drawtype)) - temp = "graffiti" - user << "You start drawing a [temp] on the [target.name]." - if(instant || do_after(user, 50)) - new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp) - user << "You finish drawing [temp]." - if(uses) - uses-- - if(!uses) - user << "You used up your [src.name]!" - qdel(src) - return - -/obj/item/toy/crayon/attack(mob/M as mob, mob/user as mob) - var/huffable = istype(src,/obj/item/toy/crayon/spraycan) - if(M == user) - user << "You take a [huffable ? "huff" : "bite"] of the [src.name]. Delicious!" - user.nutrition += 5 - if(uses) - uses -= 5 - if(uses <= 0) - user << "There is no more of [src.name] left!" - qdel(src) - else - ..() - /* * Snap pops viral shit diff --git a/icons/effects/crayondecal.dmi b/icons/effects/crayondecal.dmi index 1552d6d8e4e..9f12a245f02 100644 Binary files a/icons/effects/crayondecal.dmi and b/icons/effects/crayondecal.dmi differ