Files
Aurora.3/code/game/objects/items/crayons.dm
Fluffy 9636363e60 Refactored the attack proc (#19908)
Refactored the attack proc signature.
Added signals and components for the attack proc.
Added signals and components for the attackby proc.
Adjusted some leftover attackby procs signatures.
Added grep test to ensure people don't keep adding attack/attackby procs
with the wrong signature.
2024-10-06 21:30:00 +00:00

158 lines
5.4 KiB
Plaintext

/obj/item/pen/crayon
icon = 'icons/obj/storage/fancy/crayon.dmi'
/obj/item/pen/crayon/red
icon_state = "crayonred"
colour = "#DA0000"
shadeColour = "#810C0C"
colourName = "red"
reagents_to_add = list(/singleton/reagent/crayon_dust/red = 10)
/obj/item/pen/crayon/orange
icon_state = "crayonorange"
colour = "#FF9300"
shadeColour = "#A55403"
colourName = "orange"
reagents_to_add = list(/singleton/reagent/crayon_dust/orange = 10)
/obj/item/pen/crayon/yellow
icon_state = "crayonyellow"
colour = "#FFF200"
shadeColour = "#886422"
colourName = "yellow"
reagents_to_add = list(/singleton/reagent/crayon_dust/yellow = 10)
/obj/item/pen/crayon/green
icon_state = "crayongreen"
colour = "#A8E61D"
shadeColour = "#61840F"
colourName = "green"
reagents_to_add = list(/singleton/reagent/crayon_dust/green = 10)
/obj/item/pen/crayon/blue
icon_state = "crayonblue"
colour = "#00B7EF"
shadeColour = "#0082A8"
colourName = "blue"
reagents_to_add = list(/singleton/reagent/crayon_dust/blue = 10)
/obj/item/pen/crayon/purple
icon_state = "crayonpurple"
colour = "#DA00FF"
shadeColour = "#810CFF"
colourName = "purple"
reagents_to_add = list(/singleton/reagent/crayon_dust/purple = 10)
/obj/item/pen/crayon/mime
icon_state = "crayonmime"
desc = "A very sad-looking crayon."
colour = "#FFFFFF"
shadeColour = "#000000"
colourName = "mime"
reagents_to_add = list(/singleton/reagent/crayon_dust/grey = 15)
/obj/item/pen/crayon/mime/attack_self(mob/living/user as mob) //inversion
if(colour != "#FFFFFF" && shadeColour != "#000000")
colour = "#FFFFFF"
shadeColour = "#000000"
to_chat(user, "You will now draw in white and black with this crayon.")
else
colour = "#000000"
shadeColour = "#FFFFFF"
to_chat(user, "You will now draw in black and white with this crayon.")
return
/obj/item/pen/crayon/rainbow
icon_state = "crayonrainbow"
colour = "#FFF000"
shadeColour = "#000FFF"
colourName = "rainbow"
reagents_to_add = list(/singleton/reagent/crayon_dust/brown = 20)
/obj/item/pen/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/pen/crayon/augment
icon_state = "crayonaugment"
colour = "#FFF200"
shadeColour = "#886422"
desc = "A crayon that is integrated into a user's finger. It can synthesize a multitude of colors."
/obj/item/pen/crayon/augment/Initialize()
. = ..()
name = "integrated crayon"
update_icon()
/obj/item/pen/crayon/augment/attack_self(mob/living/user)
colour = input(user, "Please select the main colour.", "Crayon colour") as color
shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
update_icon()
/obj/item/pen/crayon/augment/update_icon()
ClearOverlays()
var/image/crayon_tip = image('icons/obj/crayons.dmi', "crayonaugment_tip")
crayon_tip.color = colour
AddOverlays(crayon_tip)
/obj/item/pen/crayon/augment/throw_at(atom/target, range, speed, mob/user)
user.drop_from_inventory(src)
/obj/item/pen/crayon/augment/dropped()
. = ..()
loc = null
qdel(src)
/obj/item/pen/crayon/afterattack(atom/target, mob/user as mob, proximity)
if(!proximity) return
if(istype(target,/turf/simulated/floor))
var/originaloc = user.loc
var/drawtype = input("Choose what you'd like to draw.", "Crayon scribbles") in list("graffiti","rune","letter","arrow")
if (user.loc != originaloc)
to_chat(user, SPAN_NOTICE("You moved!"))
return
switch(drawtype)
if("letter")
drawtype = input("Choose the letter.", "Crayon scribbles") in 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")
to_chat(user, "You start drawing a letter on the [target.name].")
if("graffiti")
to_chat(user, "You start drawing graffiti on the [target.name].")
if("rune")
to_chat(user, "You start drawing a rune on the [target.name].")
if("arrow")
drawtype = input("Choose the arrow.", "Crayon scribbles") in list("left", "right", "up", "down")
to_chat(user, "You start drawing an arrow on the [target.name].")
if(instant || do_after(user, 50))
new /obj/effect/decal/cleanable/crayon(target,colour,shadeColour,drawtype)
to_chat(user, "You finish drawing.")
target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on.
if(reagents && LAZYLEN(reagents_to_add))
for(var/singleton/reagent/R in reagents_to_add)
reagents.remove_reagent(R,0.5/LAZYLEN(reagents_to_add)) //using crayons reduces crayon dust in it.
if(!reagents.has_all_reagents(reagents_to_add))
to_chat(user, SPAN_WARNING("You used up your crayon!"))
qdel(src)
return
/obj/item/pen/crayon/attack(mob/living/target_mob, mob/living/user, target_zone)
if(ishuman(target_mob))
var/mob/living/carbon/human/H = target_mob
if(H.check_has_mouth())
target_mob.visible_message(SPAN_NOTICE("[target_mob] takes a bite of their crayon and swallows it."),
SPAN_NOTICE("You take a bite of your crayon and swallow it."))
target_mob.adjustNutritionLoss(-1)
reagents.trans_to_mob(target_mob, 2, CHEM_INGEST)
if(reagents.total_volume <= 0)
target_mob.visible_message(SPAN_NOTICE("[target_mob] finished their crayon!"), SPAN_WARNING("You ate your crayon!"))
qdel(src)
return TRUE
else
return ..()
/obj/item/pen/crayon/attack_self(var/mob/user)
return