From 146264ac895422ee7a7486bd7ee505a56769db95 Mon Sep 17 00:00:00 2001 From: lbnesquik Date: Thu, 9 Jul 2020 20:19:12 +0200 Subject: [PATCH 1/2] Add a smell system, closely matching the flavor system. The only real difference is that you can't smell reagents on people, as they don't have a smell ATM, but at the same time, how often did that really come to happen. --- code/modules/vore/eating/living_vr.dm | 41 ++++++++++++++++++++++++ code/modules/vore/eating/vore_vr.dm | 3 ++ code/modules/vore/eating/vorepanel_vr.dm | 12 +++++++ 3 files changed, 56 insertions(+) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 9ffb5d96275..8aca74723c3 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -18,6 +18,7 @@ var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far. var/metabolism = 0.0015 var/vore_taste = null // What the character tastes like + var/vore_smell = null // What the character smells like var/no_vore = FALSE // If the character/mob can vore. var/noisy = FALSE // Toggle audible hunger. var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr. @@ -38,6 +39,7 @@ /hook/living_new/proc/vore_setup(mob/living/M) M.verbs += /mob/living/proc/escapeOOC M.verbs += /mob/living/proc/lick + M.verbs += /mob/living/proc/smell M.verbs += /mob/living/proc/switch_scaling if(M.no_vore) //If the mob isn't supposed to have a stomach, let's not give it an insidepanel so it can make one for itself, or a stomach. return TRUE @@ -231,6 +233,7 @@ P.digest_leave_remains = src.digest_leave_remains P.allowmobvore = src.allowmobvore P.vore_taste = src.vore_taste + P.vore_smell = src.vore_smell P.permit_healbelly = src.permit_healbelly P.can_be_drop_prey = src.can_be_drop_prey P.can_be_drop_pred = src.can_be_drop_pred @@ -261,6 +264,7 @@ digest_leave_remains = P.digest_leave_remains allowmobvore = P.allowmobvore vore_taste = P.vore_taste + vore_smell = P.vore_smell permit_healbelly = P.permit_healbelly can_be_drop_prey = P.can_be_drop_prey can_be_drop_pred = P.can_be_drop_pred @@ -356,6 +360,43 @@ var/datum/reagent/R = H.touching.reagent_list[1] taste_message += " You also get the flavor of [R.taste_description] from something on them" return taste_message + + + +//This is just the above proc but switched about. +/mob/living/proc/smell(mob/living/smelled in living_mobs(1)) + set name = "Smell" + set category = "IC" + set desc = "Smell someone nearby!" + set popup_menu = FALSE + + if(!istype(smelled)) + return + if(!checkClickCooldown() || incapacitated(INCAPACITATION_ALL)) + return + + setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + visible_message("[src] smells [smelled]!","You smells [smelled]. They smell like [smelled.get_smell_message()].","Sniff!") + +/mob/living/proc/get_smell_message(allow_generic = 1) + if(!vore_smell && !allow_generic) + return FALSE + + var/smell_message = "" + if(vore_smell && (vore_smell != "")) + smell_message += "[vore_smell]" + else + if(ishuman(src)) + var/mob/living/carbon/human/H = src + smell_message += "a normal [H.custom_species ? H.custom_species : H.species.name]" + else + smell_message += "a plain old normal [src]" + + return smell_message + + + + // // OOC Escape code for pref-breaking or AFK preds // diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index 9aaa4b0cefe..416a125f492 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -51,6 +51,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/allowmobvore = TRUE var/list/belly_prefs = list() var/vore_taste = "nothing in particular" + var/vore_smell = "nothing in particular" var/permit_healbelly = TRUE var/can_be_drop_prey = FALSE var/can_be_drop_pred = FALSE @@ -123,6 +124,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE digest_leave_remains = json_from_file["digest_leave_remains"] allowmobvore = json_from_file["allowmobvore"] vore_taste = json_from_file["vore_taste"] + vore_smell = json_from_file["vore_smell"] permit_healbelly = json_from_file["permit_healbelly"] can_be_drop_prey = json_from_file["can_be_drop_prey"] can_be_drop_pred = json_from_file["can_be_drop_pred"] @@ -166,6 +168,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE "digest_leave_remains" = digest_leave_remains, "allowmobvore" = allowmobvore, "vore_taste" = vore_taste, + "vore_smell" = vore_smell, "permit_healbelly" = permit_healbelly, "can_be_drop_prey" = can_be_drop_prey, "can_be_drop_pred" = can_be_drop_pred, diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 78d18a2edf8..709138c47ec 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -351,6 +351,7 @@ dat += jointext(nightmare_list, null) //AAAA dat += "
Set Your Taste" + dat += "
Set Your Smell" dat += "
Toggle Hunger Noises" //Under the last HR, save and stuff. @@ -905,6 +906,17 @@ return FALSE user.vore_taste = new_flavor + if(href_list["setsmell"]) + var/new_smell = html_encode(input(usr,"What your character smells like (40ch limit). This text will be printed to the pred after 'X smells of...' so just put something like 'strawberries and cream':","Character Smell",user.vore_smell) as text|null) + if(!new_smell) + return FALSE + + new_smell = readd_quotes(new_smell) + if(length(new_smell) > FLAVOR_MAX) + alert("Entered perfume/smell text too long. [FLAVOR_MAX] character limit.","Error!") + return FALSE + user.vore_smell = new_smell + if(href_list["toggle_dropnom_pred"]) var/choice = alert(user, "This toggle is for spontaneous, environment related vore as a predator, including drop-noms, teleporters, etc. You are currently [user.can_be_drop_pred ? " able to eat prey that you encounter by environmental actions." : "avoiding eating prey encountered in the environment."]", "", "Be Pred", "Cancel", "Don't be Pred") switch(choice) From a559223fa8991de27b160b96753a95ec03faac8a Mon Sep 17 00:00:00 2001 From: Kates <24830358+lbnesquik@users.noreply.github.com> Date: Sun, 19 Jul 2020 17:47:48 +0200 Subject: [PATCH 2/2] Correct a small typo --- code/modules/vore/eating/living_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 8aca74723c3..cf11871d1af 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -376,7 +376,7 @@ return setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - visible_message("[src] smells [smelled]!","You smells [smelled]. They smell like [smelled.get_smell_message()].","Sniff!") + visible_message("[src] smell [smelled]!","You smells [smelled]. They smell like [smelled.get_smell_message()].","Sniff!") /mob/living/proc/get_smell_message(allow_generic = 1) if(!vore_smell && !allow_generic)