Files
VOREStation/code/game/objects/items/crayons.dm
Cameron Lennox ae94adba25 Various medical features and adjustments. Kiosk rework. (#17210)
* Various medical fixes. Kiosk Rework.

qol: Reworks the medical kiosk to have use. It now dispenses small amounts of painpills and medications to help stabilize you to get you to medical before you croak.
qol: Lungs no longer IMMEDIATELY risk popping if you forget internals for one second. You now have gradually accumulate damage over time. Get those internals on quick!
qol: Infections now give you a better alert that it's an INFECTION you have instead of just a random 'you feel itchy' so players are less blindsided by infections.
qol: Adjusts the text that you get when you suffer internal bleeding. Now it sticks out more during fights so you can know you have IB and get to medical quicker.
add: Makes the medical kiosk actually DETECT more issues than before. Now it actually does a full body scan on you to see what's wrong with you!
qol: Crayons and markers are no longer the strongest poison in the game. One crayon won't OD you anymore, but two will. One marker can still OD you with disaster effects if you eat it entirely. OORAH
fix: Crayons and markers get properly added to your stomach
fix: inaprovaline PROPERLY affects internal bleeding now.
qol: Putting pressure on an external wound will put some pressure on arterial bleeds as well, helping decrease (but not entirely stop) bloodloss.
code: Changes a few sections in the code to use REAGENTS_OVERDOSE instead of just a plain number.
code: Gets rid of a few //EDIT comments for better code quality.
code: Moved internal wound handling to handle_blood()

* Flavor adjustments

* words hard

* Fixes CPR as well

Fixes CPR bug

* Vox can be defibbed

Still can't be resleeved, but you can shock them back to life.

* cpr bug fix electric boogaloo
2025-03-06 13:17:24 -05:00

231 lines
6.9 KiB
Plaintext

/obj/item/pen/crayon/red
icon_state = "crayonred"
colour = "#DA0000"
shadeColour = "#810C0C"
colourName = "red"
/obj/item/pen/crayon/orange
icon_state = "crayonorange"
colour = "#FF9300"
shadeColour = "#A55403"
colourName = "orange"
/obj/item/pen/crayon/yellow
icon_state = "crayonyellow"
colour = "#FFF200"
shadeColour = "#886422"
colourName = "yellow"
/obj/item/pen/crayon/green
icon_state = "crayongreen"
colour = "#A8E61D"
shadeColour = "#61840F"
colourName = "green"
/obj/item/pen/crayon/blue
icon_state = "crayonblue"
colour = "#00B7EF"
shadeColour = "#0082A8"
colourName = "blue"
/obj/item/pen/crayon/purple
icon_state = "crayonpurple"
colour = "#DA00FF"
shadeColour = "#810CFF"
colourName = "purple"
/obj/item/pen/crayon/mime
icon_state = "crayonmime"
desc = "A very sad-looking crayon."
colour = "#FFFFFF"
shadeColour = "#000000"
colourName = "mime"
uses = 0
/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"
uses = 0
/obj/item/pen/crayon/rainbow/attack_self(mob/living/user)
var/new_colour = tgui_color_picker(user, "Please select the main colour.", "Crayon colour", colour)
if(new_colour)
colour = new_colour
new_colour = tgui_color_picker(user, "Please select the shade colour.", "Crayon shade colour", shadeColour)
if(new_colour)
shadeColour = new_colour
return
/obj/item/pen/crayon/afterattack(atom/target, mob/user, proximity)
if(!proximity) return
if(istype(target,/turf/simulated/floor))
var/drawtype = tgui_input_list(user, "Choose what you'd like to draw.", "Crayon scribbles", list("graffiti","rune","letter","arrow"))
if(!drawtype)
return
if(get_dist(target, user) > 1 || !(user.z == target.z))
return
switch(drawtype)
if("letter")
drawtype = tgui_input_list(user, "Choose the letter.", "Crayon scribbles", 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"))
if(!drawtype || get_dist(target, user) > 1 || !(user.z == target.z))
return
to_chat(user, "You start drawing a letter on the [target.name].")
if("graffiti")
drawtype = tgui_input_list(user, "Choose the graffiti.", "Crayon scribbles", list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa"))
if(!drawtype || get_dist(target, user) > 1 || !(user.z == target.z))
return
to_chat(user, "You start drawing graffiti on the [target.name].")
if("rune")
drawtype = tgui_input_list(user, "Choose the rune.", "Crayon scribbles", list("rune1", "rune2", "rune3", "rune4", "rune5", "rune6"))
if(!drawtype || get_dist(target, user) > 1 || !(user.z == target.z))
return
to_chat(user, "You start drawing a rune on the [target.name].")
if("arrow")
drawtype = tgui_input_list(user, "Choose the arrow.", "Crayon scribbles", list("left", "right", "up", "down"))
if(!drawtype || get_dist(target, user) > 1 || !(user.z == target.z))
return
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.")
var/msg = "[user.client.key] ([user]) has drawn [drawtype] (with [src]) at [target.x],[target.y],[target.z]."
if(CONFIG_GET(flag/log_graffiti))
message_admins(msg)
log_game(msg) //We will log it anyways.
target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on.
if(uses)
uses--
if(!uses)
to_chat(user, span_warning("You used up your crayon!"))
qdel(src)
return
/obj/item/pen/crayon/attack(mob/living/M as mob, mob/living/user as mob)
if(M == user)
to_chat(user, "You take a bite of the crayon and swallow it.")
user.nutrition += 1
if(ishuman(user))
var/mob/living/carbon/human/human = user
human.ingested.add_reagent(REAGENT_ID_CRAYONDUST,min(5,uses)/3)
else
user.reagents.add_reagent(REAGENT_ID_CRAYONDUST,min(5,uses)/3)
if(uses)
uses -= 5
if(uses <= 0)
to_chat(user, span_warning("You ate your crayon!"))
qdel(src)
else
..()
/obj/item/pen/crayon/marker/black
icon_state = "markerblack"
colour = "#2D2D2D"
shadeColour = "#000000"
colourName = "black"
/obj/item/pen/crayon/marker/red
icon_state = "markerred"
colour = "#DA0000"
shadeColour = "#810C0C"
colourName = "red"
/obj/item/pen/crayon/marker/orange
icon_state = "markerorange"
colour = "#FF9300"
shadeColour = "#A55403"
colourName = "orange"
/obj/item/pen/crayon/marker/yellow
icon_state = "markeryellow"
colour = "#FFF200"
shadeColour = "#886422"
colourName = "yellow"
/obj/item/pen/crayon/marker/green
icon_state = "markergreen"
colour = "#A8E61D"
shadeColour = "#61840F"
colourName = "green"
/obj/item/pen/crayon/marker/blue
icon_state = "markerblue"
colour = "#00B7EF"
shadeColour = "#0082A8"
colourName = "blue"
/obj/item/pen/crayon/marker/purple
icon_state = "markerpurple"
colour = "#DA00FF"
shadeColour = "#810CFF"
colourName = "purple"
/obj/item/pen/crayon/marker/mime
icon_state = "markermime"
desc = "A very sad-looking marker."
colour = "#FFFFFF"
shadeColour = "#000000"
colourName = "mime"
uses = 0
/obj/item/pen/crayon/marker/mime/attack_self(mob/living/user) //inversion
if(colour != "#FFFFFF" && shadeColour != "#000000")
colour = "#FFFFFF"
shadeColour = "#000000"
to_chat(user, "You will now draw in white and black with this marker.")
else
colour = "#000000"
shadeColour = "#FFFFFF"
to_chat(user, "You will now draw in black and white with this marker.")
return
/obj/item/pen/crayon/marker/rainbow
icon_state = "markerrainbow"
colour = "#FFF000"
shadeColour = "#000FFF"
colourName = "rainbow"
uses = 0
/obj/item/pen/crayon/marker/rainbow/attack_self(mob/living/user)
var/new_colour = tgui_color_picker(user, "Please select the main colour.", "Marker colour", colour)
if(new_colour)
colour = new_colour
new_colour = tgui_color_picker(user, "Please select the shade colour.", "Marker colour", shadeColour)
if(new_colour)
shadeColour = new_colour
return
/obj/item/pen/crayon/marker/attack(mob/living/M, mob/living/user)
if(M == user)
to_chat(user, "You take a bite of the marker and swallow it.")
user.nutrition += 1
if(ishuman(user))
var/mob/living/carbon/human/human = user
human.ingested.add_reagent(REAGENT_ID_MARKERINK,6)
else
user.reagents.add_reagent(REAGENT_ID_MARKERINK,6)
if(uses)
uses -= 5
if(uses <= 0)
to_chat(user, span_warning("You ate the marker!"))
qdel(src)
else
..()
/obj/item/pen/crayon/attack_self(var/mob/user)
return