mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
facepaint (#35286)
This commit is contained in:
@@ -488,7 +488,10 @@ var/list/all_supply_groups = list("Supplies","Clothing","Security","Hospitality"
|
||||
|
||||
/datum/supply_packs/spookycostume
|
||||
name = "Halloween costumes"
|
||||
contains = list(/obj/item/clothing/suit/space/plasmaman/moltar,
|
||||
contains = list(
|
||||
/obj/item/weapon/facepaint_spray,
|
||||
|
||||
/obj/item/clothing/suit/space/plasmaman/moltar,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/moltar,
|
||||
/obj/item/clothing/head/snake,
|
||||
/obj/item/clothing/head/franken_bolt,
|
||||
|
||||
@@ -139,14 +139,83 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Where are the eyes on that?</span>")
|
||||
|
||||
//you can wipe off eyeshadow with paper!
|
||||
/obj/item/weapon/facepaint_spray
|
||||
name = "face paint spray"
|
||||
desc = "A can of Dr. Frankenstein's instant facepaint. There is a dial on the top for pattern selection."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "face_paint"
|
||||
flags = FPRINT
|
||||
w_class = W_CLASS_TINY
|
||||
|
||||
var/selected_pattern = 1
|
||||
var/list/pattern_list = list(
|
||||
"Deathly Pallor" = "pallor",
|
||||
"Zombie Fever" = "zombie",
|
||||
"Martian Menace" = "alien",
|
||||
"Impish Visage" = "devil"
|
||||
)
|
||||
|
||||
/obj/item/weapon/facepaint_spray/attack(mob/M, mob/user)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.face_style) //if they already have facepaint on
|
||||
to_chat(user, "<span class='notice'>You need to wipe off the old facepaint first!</span>")
|
||||
return
|
||||
|
||||
var/pattern = pattern_list[pattern_list[selected_pattern]]
|
||||
|
||||
if(H == user)
|
||||
user.visible_message("<span class='notice'>[user] sprays their face with \the [src].</span>", \
|
||||
"<span class='notice'>You shut your eyes and spray your face with \the [src], trying not to inhale any paint.</span>")
|
||||
H.face_style = pattern
|
||||
H.update_body()
|
||||
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] begins to spray [H]'s face with \the [src].</span>", \
|
||||
"<span class='notice'>You begin to apply \the [src].</span>")
|
||||
if(do_after(user,H, 20)) //user needs to keep their active hand, H does not.
|
||||
user.visible_message("<span class='notice'>[user] does [H]'s eyes with \the [src].</span>", \
|
||||
"<span class='notice'>You apply \the [src].</span>")
|
||||
H.face_style = pattern
|
||||
H.update_body()
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Where are the eyes on that?</span>")
|
||||
|
||||
/obj/item/weapon/facepaint_spray/attack_self(mob/user as mob)
|
||||
selected_pattern += 1
|
||||
selected_pattern = selected_pattern > pattern_list.len ? 1 : selected_pattern
|
||||
to_chat(user, "<span class='notice'>You set the spray to \"[pattern_list[selected_pattern]]\" mode</span>")
|
||||
|
||||
/obj/item/weapon/facepaint_spray/examine(mob/user, size, show_name)
|
||||
. = ..()
|
||||
to_chat(user, "<span class='notice'>It is set to \"[pattern_list[selected_pattern]]\" mode</span>")
|
||||
|
||||
//you can wipe off makeup with paper!
|
||||
/obj/item/weapon/paper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!ishuman(M))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
if(user.zone_sel.selecting == "eyes")
|
||||
if(user.zone_sel.selecting == "head")
|
||||
if(H == user)
|
||||
to_chat(user, "<span class='notice'>You wipe off the face paint with [src].</span>")
|
||||
H.face_style = null
|
||||
H.update_body()
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] begins to wipe [H]'s face paint off with \the [src].</span>", \
|
||||
"<span class='notice'>You begin to wipe off [H]'s face paint .</span>")
|
||||
if(do_after(user, H, 10) && do_after(H, null, 10, 5, 0)) //user needs to keep their active hand, H does not.
|
||||
user.visible_message("<span class='notice'>[user] wipes [H]'s face paint off with \the [src].</span>", \
|
||||
"<span class='notice'>You wipe off [H]'s face paint .</span>")
|
||||
H.face_style = null
|
||||
H.update_body()
|
||||
|
||||
else if(user.zone_sel.selecting == "eyes")
|
||||
if(H == user)
|
||||
to_chat(user, "<span class='notice'>You wipe off the eyeshadow with [src].</span>")
|
||||
H.eye_style = null
|
||||
@@ -159,6 +228,7 @@
|
||||
"<span class='notice'>You wipe off [H]'s eyeshadow.</span>")
|
||||
H.eye_style = null
|
||||
H.update_body()
|
||||
|
||||
else if(user.zone_sel.selecting == "mouth")
|
||||
if(H == user)
|
||||
to_chat(user, "<span class='notice'>You wipe off the lipstick with [src].</span>")
|
||||
|
||||
@@ -1913,6 +1913,7 @@
|
||||
var/static/list/resettable_vars = list(
|
||||
"lip_style",
|
||||
"eye_style",
|
||||
"face_style",
|
||||
"wear_suit",
|
||||
"w_uniform",
|
||||
"shoes",
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
var/lip_style = null //no lipstick by default- arguably misleading, as it could be used for general makeup
|
||||
var/eye_style = null
|
||||
var/face_style = null
|
||||
|
||||
mob_bump_flag = HUMAN
|
||||
mob_push_flags = ALLMOBS
|
||||
|
||||
@@ -277,12 +277,16 @@ var/global/list/damage_icon_parts = list()
|
||||
eyes.Blend(rgb(my_appearance.r_eyes, my_appearance.g_eyes, my_appearance.b_eyes), ICON_ADD)
|
||||
stand_icon.Blend(eyes, ICON_OVERLAY)
|
||||
|
||||
|
||||
if (face_style)
|
||||
stand_icon.Blend(new/icon('icons/mob/makeup.dmi', "facepaint_[face_style]_s"), ICON_OVERLAY)
|
||||
|
||||
//Mouth (lipstick!)
|
||||
if(lip_style)
|
||||
stand_icon.Blend(new/icon('icons/mob/hair_styles.dmi', "lips_[lip_style]_s"), ICON_OVERLAY)
|
||||
stand_icon.Blend(new/icon('icons/mob/makeup.dmi', "lips_[lip_style]_s"), ICON_OVERLAY)
|
||||
|
||||
if(eye_style)
|
||||
stand_icon.Blend(new/icon('icons/mob/hair_styles.dmi', "eyeshadow_[eye_style]_light_s"), ICON_OVERLAY)
|
||||
stand_icon.Blend(new/icon('icons/mob/makeup.dmi', "eyeshadow_[eye_style]_light_s"), ICON_OVERLAY)
|
||||
|
||||
|
||||
//Underwear
|
||||
@@ -1494,11 +1498,15 @@ var/global/list/damage_icon_parts = list()
|
||||
eyes_l.Blend(rgb(my_appearance.r_eyes, my_appearance.g_eyes, my_appearance.b_eyes), ICON_ADD)
|
||||
face_lying.Blend(eyes_l, ICON_OVERLAY)
|
||||
|
||||
|
||||
if (face_style)
|
||||
stand_icon.Blend(new/icon('icons/mob/makeup.dmi', "facepaint_[face_style]_l"), ICON_OVERLAY)
|
||||
|
||||
if(lip_style)
|
||||
face_lying.Blend(new/icon('icons/mob/hair_styles.dmi', "lips_[lip_style]_l"), ICON_OVERLAY)
|
||||
face_lying.Blend(new/icon('icons/mob/makeup.dmi', "lips_[lip_style]_l"), ICON_OVERLAY)
|
||||
|
||||
if(eye_style)
|
||||
face_lying.Blend(new/icon('icons/mob/hair_styles.dmi', "eyeshadow_[eye_style]_light_l"), ICON_OVERLAY)
|
||||
face_lying.Blend(new/icon('icons/mob/makeup.dmi', "eyeshadow_[eye_style]_light_l"), ICON_OVERLAY)
|
||||
|
||||
var/image/face_lying_image = new /image(icon = face_lying)
|
||||
return face_lying_image
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 163 KiB |
BIN
icons/mob/makeup.dmi
Normal file
BIN
icons/mob/makeup.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
Reference in New Issue
Block a user