eww someone else bit this food (#22748)

This commit is contained in:
ynot01
2024-10-21 00:22:21 -04:00
committed by GitHub
parent 0cd1e57dee
commit 06d6277b49
8 changed files with 51 additions and 9 deletions

View File

@@ -59,7 +59,7 @@
/// This person is crying
#define TRAIT_CRYING "crying"
/// you cannot put this in any container, backpack, box etc
#define TRAIT_NO_STORAGE "no-storage"
#define TRAIT_NO_STORAGE "no-storage"
/// Crafts items using the crafting menu faster
#define TRAIT_CRAFTY "crafty"
/// Gets a more detailed reagent breakdown when examining
@@ -130,6 +130,7 @@
#define TRAIT_DIGITIGRADE "digitigrade" // the funny lizard legs
/// If the legs are to be displayed like regular legs
#define TRAIT_DIGI_SQUISH "didi_squish"
#define TRAIT_IGNORE_SHAREDFOOD "ignore_shared_food" // don't get negative moodlet from sharing a plate
////////////////////////////////////////////////////////////////////////////////////
//---------------------------------Quirk defines----------------------------------//

View File

@@ -77,6 +77,11 @@
mood_change = -4
timeout = 4 MINUTES
/datum/mood_event/shared_food
description = "<span class='warning'>I'm eating scraps like an animal...</span>\n"
mood_change = -2
timeout = 4 MINUTES
/datum/mood_event/breakfast
description = "<span class='nicegreen'>Nothing like a hearty breakfast to start the shift.</span>\n"
mood_change = 2

View File

@@ -42,6 +42,7 @@
/obj/item/reagent_containers/food/proc/checkLiked(fraction, mob/M)
if(last_check_time + 50 < world.time)
. = TRUE
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!HAS_TRAIT(H, TRAIT_AGEUSIA))
@@ -64,5 +65,7 @@
if((foodtype & BREAKFAST) && world.time - SSticker.round_start_time < STOP_SERVING_BREAKFAST)
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "breakfast", /datum/mood_event/breakfast)
last_check_time = world.time
else
return FALSE
#undef STOP_SERVING_BREAKFAST

View File

@@ -52,9 +52,15 @@ All foods are distributed among various categories. Use common sense.
var/list/bonus_reagents //the amount of reagents (usually nutriment and vitamin) added to crafted/cooked snacks, on top of the ingredients reagents.
var/customfoodfilling = 1 // whether it can be used as filling in custom food
var/list/tastes // for example list("crisps" = 2, "salt" = 1)
var/list/datum/weakref/who_bit
//Placeholder for effect that trigger on eating that aren't tied to reagents.
/obj/item/reagent_containers/food/snacks/Initialize(mapload)
. = ..()
if(who_bit == null)
who_bit = list()
/obj/item/reagent_containers/food/snacks/add_initial_reagents()
if(tastes && tastes.len)
if(list_reagents)
@@ -70,6 +76,7 @@ All foods are distributed among various categories. Use common sense.
/obj/item/reagent_containers/food/snacks/proc/On_Consume(mob/living/eater)
if(!eater)
return
who_bit |= WEAKREF(eater)
if(!reagents.total_volume)
var/mob/living/location = loc
var/obj/item/trash_item = generate_trash(location)
@@ -137,6 +144,16 @@ All foods are distributed among various categories. Use common sense.
return 0
/obj/item/reagent_containers/food/snacks/checkLiked(fraction, mob/M)
. = ..()
if(.)
// ewww someone else bit this
var/someone_else_bit = islist(who_bit) && ((length(who_bit) > 0 && who_bit[1].resolve() != M) || length(who_bit) > 1)
// (most) junky snacks are meant to be shared!
if(someone_else_bit && !HAS_TRAIT(M, TRAIT_AGEUSIA) && !HAS_TRAIT(M, TRAIT_IGNORE_SHAREDFOOD) && junkiness <= 0)
to_chat(M, span_notice("Eww... Someone else bit this..."))
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "shared_food", /datum/mood_event/shared_food)
/obj/item/reagent_containers/food/snacks/examine(mob/user)
. = ..()
switch (bitecount)
@@ -148,6 +165,9 @@ All foods are distributed among various categories. Use common sense.
. += "[src] was bitten [bitecount] times!"
else
. += "[src] was bitten multiple times!"
var/someone_else_bit = islist(who_bit) && ((length(who_bit) > 0 && who_bit[1].resolve() != user) || length(who_bit) > 1)
if(someone_else_bit && junkiness <= 0)
. += span_notice("You recognize some bites as not your own.")
/obj/item/reagent_containers/food/snacks/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/storage))

View File

@@ -47,7 +47,7 @@
mood.add_event(null, "fav_food", /datum/mood_event/favorite_food)
last_check_time = world.time
return
..()
. = ..()
/obj/item/reagent_containers/food/snacks/donut/chaos
name = "chaos donut"

View File

@@ -8,7 +8,7 @@
say_mod = "hisses"
default_color = "00FF00"
species_traits = list(MUTCOLORS,EYECOLOR,DIGITIGRADE,LIPS,HAS_FLESH,HAS_BONE,HAS_TAIL)
inherent_traits = list(TRAIT_COLDBLOODED)
inherent_traits = list(TRAIT_COLDBLOODED, TRAIT_IGNORE_SHAREDFOOD)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings")
mutanttongue = /obj/item/organ/tongue/lizard
@@ -175,7 +175,14 @@
/datum/species/lizard/create_pref_temperature_perks()
var/list/to_add = list()
to_add += list(list(
to_add += list(
list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "hamburger",
SPECIES_PERK_NAME = "Communal Eater",
SPECIES_PERK_DESC = "Due to the communal nature of Vuulen, they are unbothered by the thought of sharing a meal.",
),
list(
SPECIES_PERK_TYPE = SPECIES_NEUTRAL_PERK,
SPECIES_PERK_ICON = "thermometer-half",
SPECIES_PERK_NAME = "Cold-Blooded",

View File

@@ -240,7 +240,7 @@ Slimecrossing Items
mood.add_event(null,"gross_food", /datum/mood_event/gross_food)
last_check_time = world.time
return
..()
. = ..()
//Ice stasis block - Chilling Dark Blue
/obj/structure/ice_stasis
@@ -335,6 +335,6 @@ Slimecrossing Items
electrocute_mob(carbie, get_area(src), src)
qdel(src)
return
stack_item.add(amt)
qdel(src)

View File

@@ -5,7 +5,7 @@
is_dimorphic = FALSE
generate_husk_icon = TRUE
species_traits = list(EYECOLOR, HAS_TAIL, HAS_FLESH, HAS_BONE, HAIRCOLOR, FACEHAIRCOLOR, MUTCOLORS, MUTCOLORS_SECONDARY) // Robust, but cannot be cloned easily.
inherent_traits = list(TRAIT_RESISTCOLD, TRAIT_NOCLONE)
inherent_traits = list(TRAIT_RESISTCOLD, TRAIT_NOCLONE, TRAIT_IGNORE_SHAREDFOOD)
mutant_bodyparts = list("vox_quills", "vox_body_markings", "vox_facial_quills", "vox_tail", "vox_tail_markings")
default_features = list("vox_quills" = "None", "vox_facial_quills" = "None", "vox_body_markings" = "None", "vox_tail" = "lime", "vox_tail_markings" = "None", "vox_skin_tone" = "lime")
attack_verbs = list("scratch", "claw")
@@ -48,7 +48,7 @@
These bioengineered, reptilian, beaked, and quilled beings have a physiological caste system and follow 'The Inviolate' tenets. \
Breathing pure nitrogen, they need specialized masks and tanks for survival outside their arkships. \
Their insular nature limits their involvement in broader galactic affairs, maintaining a distinct, yet isolated presence away from other species."
/datum/species/vox/get_species_lore()
return list("Vox have no colonies of their own to speak of. Most Vox originate from a location known as the Shoal, a sprawling, labyrinth-like space megalith of debris and asteroids fused together over countless orbits. It is there where their cutthroat and opportunistic behavior stems from.",\
"Little is known of Vox history itself, as the Vox do not keep many records beyond personal accomplishments and tales of profit and triumph. They have lived among the Shoal and the stars as long as they or anyone else can remember.",\
@@ -77,7 +77,7 @@
vox.dna.update_uf_block(DNA_VOX_FACIAL_QUILLS_BLOCK)
vox.dna.update_uf_block(DNA_VOX_QUILLS_BLOCK)
vox.update_hair()
/datum/species/vox/survival_box_replacement(mob/living/carbon/human/box_holder, obj/item/storage/box/survival_box, list/soon_deleted_items, list/soon_added_items)
var/mask_to_replace = /obj/item/clothing/mask/breath/vox
if(mask_to_replace in soon_added_items)
@@ -154,6 +154,12 @@
SPECIES_PERK_NAME = "Imperishable Organs",
SPECIES_PERK_DESC = "Vox organs contain advanced cybernetics that prevent them from decaying.",
),
list(
SPECIES_PERK_TYPE = SPECIES_POSITIVE_PERK,
SPECIES_PERK_ICON = "hamburger",
SPECIES_PERK_NAME = "Communal Eater",
SPECIES_PERK_DESC = "Due to their tribal background, Vox are unbothered by the thought of sharing a meal.",
),
list(
SPECIES_PERK_TYPE = SPECIES_NEGATIVE_PERK,
SPECIES_PERK_ICON = "bolt",