Merge pull request #8377 from lbnesquik/Kot-Smell-stuff

Add a smell system, closely matching the flavor system.
This commit is contained in:
Novacat
2020-07-21 18:14:01 -04:00
committed by GitHub
3 changed files with 56 additions and 0 deletions
+41
View File
@@ -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("<span class='warning'>[src] smell [smelled]!</span>","<span class='notice'>You smells [smelled]. They smell like [smelled.get_smell_message()].</span>","<b>Sniff!</b>")
/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
//
+3
View File
@@ -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,
+12
View File
@@ -351,6 +351,7 @@
dat += jointext(nightmare_list, null) //AAAA
dat += "<br><a href='?src=\ref[src];setflavor=1'>Set Your Taste</a>"
dat += "<br><a href='?src=\ref[src];setsmell=1'>Set Your Smell</a>"
dat += "<br><a href='?src=\ref[src];togglenoisy=1'>Toggle Hunger Noises</a>"
//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)