diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 2a234aa3f52..cab2b8c553b 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -312,6 +312,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_ANTENNAE "antennae" /// Blowing kisses actually does damage to the victim #define TRAIT_KISS_OF_DEATH "kiss_of_death" +/// Used to activate french kissing +#define TRAIT_GARLIC_BREATH "kiss_of_garlic_death" /// Used on limbs in the process of turning a human into a plasmaman while in plasma lava #define TRAIT_PLASMABURNT "plasma_burnt" /// Addictions don't tick down, basically they're permanently addicted diff --git a/code/game/objects/items/hand_items.dm b/code/game/objects/items/hand_items.dm index 2a1d59d0c7f..9ef7e62e846 100644 --- a/code/game/objects/items/hand_items.dm +++ b/code/game/objects/items/hand_items.dm @@ -267,8 +267,11 @@ /// The kind of projectile this version of the kiss blower fires var/kiss_type = /obj/projectile/kiss + /obj/item/kisser/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() + if(HAS_TRAIT(user, TRAIT_GARLIC_BREATH)) + kiss_type = /obj/projectile/kiss/french var/obj/projectile/blown_kiss = new kiss_type(get_turf(user)) user.visible_message("[user] blows \a [blown_kiss] at [target]!", span_notice("You blow \a [blown_kiss] at [target]!")) @@ -378,3 +381,16 @@ var/mob/living/carbon/heartbreakee = target var/obj/item/organ/heart/dont_go_breakin_my_heart = heartbreakee.getorganslot(ORGAN_SLOT_HEART) dont_go_breakin_my_heart.applyOrganDamage(999) + + +/obj/projectile/kiss/french + name = "french kiss (is that a hint of garlic?)" + color = "#f2e9d2" //Scientifically proven to be the colour of garlic + +/obj/projectile/kiss/french/harmless_on_hit(mob/living/living_target) + . = ..() + //Don't stack the garlic + if(! living_target.has_reagent(/datum/reagent/consumable/garlic) ) + //Phwoar + living_target.reagents.add_reagent(/datum/reagent/consumable/garlic, 1) + living_target.visible_message("[living_target] has a funny look on [living_target.p_their()] face.", "Wow, that is a strong after taste of garlic!", vision_distance=COMBAT_MESSAGE_RANGE) diff --git a/code/modules/clothing/head/frenchberet.dm b/code/modules/clothing/head/frenchberet.dm index 2ada3eb1c3d..18f80955e44 100644 --- a/code/modules/clothing/head/frenchberet.dm +++ b/code/modules/clothing/head/frenchberet.dm @@ -11,12 +11,15 @@ . = ..() if (slot == ITEM_SLOT_HEAD) RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + ADD_TRAIT(M, TRAIT_GARLIC_BREATH, type) else UnregisterSignal(M, COMSIG_MOB_SAY) + REMOVE_TRAIT(M, TRAIT_GARLIC_BREATH, type) /obj/item/clothing/head/frenchberet/dropped(mob/M) . = ..() UnregisterSignal(M, COMSIG_MOB_SAY) + REMOVE_TRAIT(M, TRAIT_GARLIC_BREATH, type) /obj/item/clothing/head/frenchberet/proc/handle_speech(datum/source, mob/speech_args) SIGNAL_HANDLER diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index dde03f5aa00..3db25a88afd 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -417,6 +417,14 @@ metabolization_rate = 0.15 * REAGENTS_METABOLISM chemical_flags = REAGENT_CAN_BE_SYNTHESIZED +/datum/reagent/consumable/garlic/on_mob_add(mob/living/L, amount) + . = ..() + ADD_TRAIT(L, TRAIT_GARLIC_BREATH, type) + +/datum/reagent/consumable/garlic/on_mob_delete(mob/living/L) + . = ..() + REMOVE_TRAIT(L, TRAIT_GARLIC_BREATH, type) + /datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M, delta_time, times_fired) if(isvampire(M)) //incapacitating but not lethal. Unfortunately, vampires cannot vomit. if(DT_PROB(min(current_cycle/2, 12.5), delta_time))