mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-18 03:26:31 +01:00
Adds blowing cigarette smoke in people's face (#89974)
## About The Pull Request If you exhale a cloud of smoke from a cigarette while face to face with someone, you will give them a negative moodlet, blowing it right in their face. ## Why It's Good For The Game Added disrespect ## Changelog 🆑 Melbert add: If you exhale a cloud of smoke from a cigarette while face to face with someone, you'll blow it right in their face. add: Syndicate Cigarettes will blind (for a very short time) if you blow their smoke in someone's face. /🆑
This commit is contained in:
@@ -516,3 +516,16 @@
|
||||
description = "I didn't want to believe it, but there are people out there that are genuinely evil."
|
||||
mood_change = -4
|
||||
timeout = 1 MINUTES
|
||||
|
||||
/datum/mood_event/smoke_in_face
|
||||
description = "Cigarette smoke is disgusting."
|
||||
mood_change = -3
|
||||
timeout = 30 SECONDS
|
||||
|
||||
/datum/mood_event/smoke_in_face/add_effects(param)
|
||||
if(HAS_TRAIT(owner, TRAIT_ANOSMIA))
|
||||
description = "Cigarette smoke is unpleasant."
|
||||
mood_change = -1
|
||||
if(HAS_TRAIT(owner, TRAIT_SMOKER))
|
||||
description = "Blowing smoke in my face, really?"
|
||||
mood_change = 0
|
||||
|
||||
@@ -449,10 +449,41 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
QDEL_NULL(mob_smoke)
|
||||
|
||||
/obj/item/cigarette/proc/long_exhale(mob/living/carbon/smoker)
|
||||
smoker.visible_message(
|
||||
span_notice("[smoker] exhales a large cloud of smoke from [src]."),
|
||||
span_notice("You exhale a large cloud of smoke from [src]."),
|
||||
)
|
||||
// Find a mob to blow smoke at
|
||||
var/mob/living/guy_infront
|
||||
for(var/mob/living/guy in get_step(smoker, smoker.dir))
|
||||
// one of you has to get on the other's level
|
||||
if(guy.body_position != smoker.body_position)
|
||||
continue
|
||||
// ensures we're face to face
|
||||
if(!(REVERSE_DIR(guy.dir) & smoker.dir))
|
||||
continue
|
||||
guy_infront = guy
|
||||
// in case we get a living first, we wanna prioritize humans
|
||||
if(ishuman(guy_infront))
|
||||
break
|
||||
|
||||
if(isnull(guy_infront))
|
||||
smoker.visible_message(
|
||||
span_notice("[smoker] exhales a large cloud of smoke from [src]."),
|
||||
span_notice("You exhale a large cloud of smoke from [src]."),
|
||||
)
|
||||
|
||||
else if(ishuman(guy_infront) && guy_infront.get_bodypart(BODY_ZONE_HEAD) && !guy_infront.is_pepper_proof())
|
||||
guy_infront.visible_message(
|
||||
span_notice("[smoker] exhales a large cloud of smoke from [src] directly at [guy_infront]'s face!"),
|
||||
span_notice("You exhale a large cloud of smoke from [src] directly at [guy_infront]'s face."),
|
||||
ignored_mobs = guy_infront,
|
||||
)
|
||||
to_chat(guy_infront, span_warning("You get a face full of smoke from [smoker]'s [name]!"))
|
||||
smoke_in_face(guy_infront)
|
||||
|
||||
else
|
||||
guy_infront.visible_message(
|
||||
span_notice("[smoker] exhales a large cloud of smoke from [src] at [guy_infront]."),
|
||||
span_notice("You exhale a large cloud of smoke from [src] at [guy_infront]."),
|
||||
)
|
||||
|
||||
if(!isturf(smoker.loc))
|
||||
return
|
||||
|
||||
@@ -460,6 +491,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
update_particle_position(big_smoke, smoker.dir)
|
||||
QDEL_IN(big_smoke, big_smoke.particles.lifespan)
|
||||
|
||||
/// Called when a mob gets smoke blown in their face.
|
||||
/obj/item/cigarette/proc/smoke_in_face(mob/living/getting_smoked)
|
||||
getting_smoked.add_mood_event("smoke_bm", /datum/mood_event/smoke_in_face)
|
||||
if(prob(20) && !HAS_TRAIT(getting_smoked, TRAIT_SMOKER) && !HAS_TRAIT(getting_smoked, TRAIT_ANOSMIA))
|
||||
getting_smoked.emote("cough")
|
||||
|
||||
/// Handles processing the reagents in the cigarette.
|
||||
/obj/item/cigarette/proc/handle_reagents(seconds_per_tick)
|
||||
if(!reagents.total_volume)
|
||||
@@ -608,6 +645,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
lung_harm = 1.5
|
||||
list_reagents = list(/datum/reagent/drug/nicotine = 10, /datum/reagent/medicine/omnizine = 15)
|
||||
|
||||
/obj/item/cigarette/syndicate/smoke_in_face(mob/living/getting_smoked)
|
||||
. = ..()
|
||||
getting_smoked.adjust_eye_blur(6 SECONDS)
|
||||
getting_smoked.adjust_temp_blindness(2 SECONDS)
|
||||
|
||||
/obj/item/cigarette/shadyjims
|
||||
desc = "A Shady Jim's Super Slims cigarette."
|
||||
lung_harm = 1.5
|
||||
|
||||
Reference in New Issue
Block a user