Skip to content

Commit

Permalink
Improves Kissing (tgstation#56698)
Browse files Browse the repository at this point in the history
Co-authored-by: Mothblocks <[email protected]>
  • Loading branch information
Ryll-Ryll and Mothblocks authored Feb 7, 2021
1 parent c92d52d commit 3e7eaea
Show file tree
Hide file tree
Showing 16 changed files with 428 additions and 281 deletions.
5 changes: 5 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_COAGULATING "coagulating" //from coagulant reagents, this doesn't affect the bleeding itself but does affect the bleed warning messages
/// The holder of this trait has antennae or whatever that hurt a ton when noogied
#define TRAIT_ANTENNAE "antennae"
/// Blowing kisses actually does damage to the victim
#define TRAIT_KISS_OF_DEATH "kiss_of_death"

#define TRAIT_NOBLEED "nobleed" //This carbon doesn't bleed

Expand Down Expand Up @@ -350,6 +352,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_BADTOUCH "bad_touch"
#define TRAIT_EXTROVERT "extrovert"
#define TRAIT_INTROVERT "introvert"
#define TRAIT_ANXIOUS "anxious"
///Trait for dryable items
#define TRAIT_DRYABLE "trait_dryable"
///Trait for dried items
Expand Down Expand Up @@ -479,6 +482,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define ELEMENT_TRAIT "element_trait"
/// Trait granted by [/obj/item/clothing/head/helmet/space/hardsuit/berserker]
#define BERSERK_TRAIT "berserk_trait"
/// Trait granted by lipstick
#define LIPSTICK_TRAIT "lipstick_trait"

/**
* Trait granted by [/mob/living/carbon/Initialize] and
Expand Down
4 changes: 3 additions & 1 deletion code/_globalvars/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,9 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_SNOB" = TRAIT_SNOB,
"TRAIT_BALD" = TRAIT_BALD,
"TRAIT_BADTOUCH" = TRAIT_BADTOUCH,
"TRAIT_NOBLEED" = TRAIT_NOBLEED
"TRAIT_NOBLEED" = TRAIT_NOBLEED,
"TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH,
"TRAIT_ANXIOUS" = TRAIT_ANXIOUS,

),
/obj/item/bodypart = list(
Expand Down
9 changes: 9 additions & 0 deletions code/datums/mood_events/generic_positive_events.dm
Original file line number Diff line number Diff line change
Expand Up @@ -223,3 +223,12 @@
description = "<span class='nicegreen'>Watching fish in aquarium is calming.</span>\n"
mood_change = 3
timeout = 1.5 MINUTES

/datum/mood_event/kiss
description = "<span class='nicegreen'>Someone blew a kiss at me, I must be a real catch!</span>\n"
mood_change = 1.5
timeout = 2 MINUTES

/datum/mood_event/kiss/add_effects(mob/beau)
if(beau)
description = "<span class='nicegreen'>[beau.name] blew a kiss at me, I must be a real catch!</span>\n"
1 change: 1 addition & 0 deletions code/datums/quirks/negative.dm
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,7 @@
lose_text = "<span class='notice'>You feel easier about talking again.</span>" //if only it were that easy!
medical_record_text = "Patient is usually anxious in social encounters and prefers to avoid them."
hardcore_value = 4
mob_trait = TRAIT_ANXIOUS
var/dumb_thing = TRUE

/datum/quirk/social_anxiety/add()
Expand Down
3 changes: 1 addition & 2 deletions code/game/objects/items/clown_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,7 @@
user.visible_message("<span class='warning'>\the [user] washes \the [target]'s mouth out with [src.name]!</span>", "<span class='notice'>You wash \the [target]'s mouth out with [src.name]!</span>") //washes mouth out with soap sounds better than 'the soap' here if(user.zone_selected == "mouth")
if(human_user.lip_style)
user.mind?.adjust_experience(/datum/skill/cleaning, CLEAN_SKILL_GENERIC_WASH_XP)
human_user.lip_style = null //removes lipstick
human_user.update_body()
human_user.update_lips(null)
decreaseUses(user)
return
else if(istype(target, /obj/structure/window))
Expand Down
93 changes: 47 additions & 46 deletions code/game/objects/items/cosmetics.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
w_class = WEIGHT_CLASS_TINY
var/colour = "red"
var/open = FALSE
/// A trait that's applied while someone has this lipstick applied, and is removed when the lipstick is removed
var/lipstick_trait

/obj/item/lipstick/purple
name = "purple lipstick"
Expand All @@ -21,6 +23,10 @@
name = "black lipstick"
colour = "black"

/obj/item/lipstick/black/death
name = "Kiss of Death"
lipstick_trait = TRAIT_KISS_OF_DEATH

/obj/item/lipstick/random
name = "lipstick"
icon_state = "random_lipstick"
Expand All @@ -44,60 +50,55 @@
icon_state = "lipstick"

/obj/item/lipstick/attack(mob/M, mob/user)
if(!open)
if(!open || !ismob(M))
return

if(!ismob(M))
if(!ishuman(M))
to_chat(user, "<span class='warning'>Where are the lips on that?</span>")
return

if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.is_mouth_covered())
to_chat(user, "<span class='warning'>Remove [ H == user ? "your" : "[H.p_their()]" ] mask!</span>")
return
if(H.lip_style) //if they already have lipstick on
to_chat(user, "<span class='warning'>You need to wipe off the old lipstick first!</span>")
return
if(H == user)
user.visible_message("<span class='notice'>[user] does [user.p_their()] lips with \the [src].</span>", \
"<span class='notice'>You take a moment to apply \the [src]. Perfect!</span>")
H.lip_style = "lipstick"
H.lip_color = colour
H.update_body()
else
user.visible_message("<span class='warning'>[user] begins to do [H]'s lips with \the [src].</span>", \
"<span class='notice'>You begin to apply \the [src] on [H]'s lips...</span>")
if(do_after(user, 20, target = H))
user.visible_message("<span class='notice'>[user] does [H]'s lips with \the [src].</span>", \
"<span class='notice'>You apply \the [src] on [H]'s lips.</span>")
H.lip_style = "lipstick"
H.lip_color = colour
H.update_body()
else
to_chat(user, "<span class='warning'>Where are the lips on that?</span>")
var/mob/living/carbon/human/target = M
if(target.is_mouth_covered())
to_chat(user, "<span class='warning'>Remove [ target == user ? "your" : "[target.p_their()]" ] mask!</span>")
return
if(target.lip_style) //if they already have lipstick on
to_chat(user, "<span class='warning'>You need to wipe off the old lipstick first!</span>")
return

if(target == user)
user.visible_message("<span class='notice'>[user] does [user.p_their()] lips with \the [src].</span>", \
"<span class='notice'>You take a moment to apply \the [src]. Perfect!</span>")
target.update_lips("lipstick", colour, lipstick_trait)
return

user.visible_message("<span class='warning'>[user] begins to do [target]'s lips with \the [src].</span>", \
"<span class='notice'>You begin to apply \the [src] on [target]'s lips...</span>")
if(!do_after(user, 2 SECONDS, target = target))
return
user.visible_message("<span class='notice'>[user] does [target]'s lips with \the [src].</span>", \
"<span class='notice'>You apply \the [src] on [target]'s lips.</span>")
target.update_lips("lipstick", colour, lipstick_trait)


//you can wipe off lipstick with paper!
/obj/item/paper/attack(mob/M, mob/user)
if(user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
if(!ismob(M))
return
if(user.zone_selected != BODY_ZONE_PRECISE_MOUTH || !ishuman(M))
return ..()

var/mob/living/carbon/human/target = M
if(target == user)
to_chat(user, "<span class='notice'>You wipe off the lipstick with [src].</span>")
target.update_lips(null)
return

user.visible_message("<span class='warning'>[user] begins to wipe [target]'s lipstick off with \the [src].</span>", \
"<span class='notice'>You begin to wipe off [target]'s lipstick...</span>")
if(!do_after(user, 10, target = target))
return
user.visible_message("<span class='notice'>[user] wipes [target]'s lipstick off with \the [src].</span>", \
"<span class='notice'>You wipe off [target]'s lipstick.</span>")
target.update_lips(null)

if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H == user)
to_chat(user, "<span class='notice'>You wipe off the lipstick with [src].</span>")
H.lip_style = null
H.update_body()
else
user.visible_message("<span class='warning'>[user] begins to wipe [H]'s lipstick off with \the [src].</span>", \
"<span class='notice'>You begin to wipe off [H]'s lipstick...</span>")
if(do_after(user, 10, target = H))
user.visible_message("<span class='notice'>[user] wipes [H]'s lipstick off with \the [src].</span>", \
"<span class='notice'>You wipe off [H]'s lipstick.</span>")
H.lip_style = null
H.update_body()
else
..()

/obj/item/razor
name = "electric razor"
Expand Down
9 changes: 2 additions & 7 deletions code/game/objects/items/crayons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -687,9 +687,7 @@
paint_color = "#C0C0C0"
update_icon()
if(actually_paints)
H.lip_style = "spray_face"
H.lip_color = paint_color
H.update_body()
H.update_lips("spray_face", paint_color)
var/used = use_charges(user, 10, FALSE)
reagents.trans_to(user, used, volume_multiplier, transfered_by = user, methods = VAPOR)

Expand Down Expand Up @@ -740,10 +738,7 @@
flash_color(C, flash_color=paint_color, flash_time=40)
if(ishuman(C) && actually_paints)
var/mob/living/carbon/human/H = C
H.lip_style = "spray_face"
H.lip_color = paint_color
H.update_body()

H.update_lips("spray_face", paint_color)
. = use_charges(user, 10, FALSE)
var/fraction = min(1, . / reagents.maximum_volume)
reagents.expose(C, VAPOR, fraction * volume_multiplier)
Expand Down
Loading

0 comments on commit 3e7eaea

Please sign in to comment.