Makes food not a subtype of reagent holders (#23379)

* I am suffering

* Alright this should be all now

* Fixes CI

* I hate the online merge resolver.

* This got lost in the merge master

* Updatepaths fixed + new added

* Contra review

* Fixes desserts

* Oops

* This should fix it

* Maybe?

* Attempt 3

* Missed conflict

* Update code/modules/reagents/chemistry/machinery/reagentgrinder.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Update code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Update code/modules/food_and_drinks/food/foods/pizza.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

* Fixes grinders

* Adds comment

* Warrior review

* Warrior + Sirryan review

* Update code/modules/food_and_drinks/food_base.dm

Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>

---------

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: Henri215 <77684085+Henri215@users.noreply.github.com>
This commit is contained in:
DGamerL
2024-01-21 19:00:02 +00:00
committed by GitHub
co-authored by Ryan Henri215
parent 22fbd9aced
commit db578cdc6f
276 changed files with 10289 additions and 10287 deletions
@@ -2,7 +2,7 @@
name = "alien"
icon_state = "alien_s"
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat= 5, /obj/item/stack/sheet/animalhide/xeno = 1)
butcher_results = list(/obj/item/food/snacks/monstermeat/xenomeat = 5, /obj/item/stack/sheet/animalhide/xeno = 1)
var/obj/item/r_store = null
var/obj/item/l_store = null
var/caste = ""
+30 -14
View File
@@ -1158,26 +1158,22 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
/mob/living/carbon/proc/can_eat(flags = 255)
return TRUE
/mob/living/carbon/proc/eat(obj/item/reagent_containers/to_eat, mob/user, bitesize_override)
if(ispill(to_eat) || ispatch(to_eat))
/mob/living/carbon/proc/eat(obj/item/food/to_eat, mob/user, bitesize_override)
if(ispill(to_eat) || ispatch(to_eat)) // We first have to know if it's either a pill or a patch, only then can we check if it's a food item
return consume_patch_or_pill(to_eat, user)
if(!isfood(to_eat)) // We first have to know if it's either a pill or a patch, only then can we check if it's a food item
if(!isfood(to_eat))
return FALSE
var/obj/item/reagent_containers/food/food = to_eat // It's not a patch or a pill so it must be food
var/obj/item/food/food = to_eat // It's not a patch or a pill so it must be food
var/fullness = nutrition + 10
if(istype(food, /obj/item/reagent_containers/food/snacks))
if(istype(food, /obj/item/food/snacks))
for(var/datum/reagent/consumable/C in reagents.reagent_list) //we add the nutrition value of what we're currently digesting
fullness += C.nutriment_factor * C.volume / (C.metabolization_rate * metabolism_efficiency)
if(user == src)
if(istype(food, /obj/item/reagent_containers/food/drinks))
if(!selfDrink(food))
return FALSE
else
if(!selfFeed(food, fullness))
return FALSE
if(!selfFeed(food, fullness))
return FALSE
else
if(!forceFed(food, user, fullness))
return FALSE
@@ -1186,7 +1182,27 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
SSticker.score.score_food_eaten++
return TRUE
/mob/living/carbon/proc/selfFeed(obj/item/reagent_containers/food/to_eat, fullness)
/mob/living/carbon/proc/drink(obj/item/reagent_containers/drinks/to_eat, mob/user)
if(user == src)
if(!selfDrink(to_eat))
return FALSE
else if(!forceFed(to_eat, user, nutrition))
return FALSE
if(to_eat.consume_sound)
playsound(loc, to_eat.consume_sound, rand(10, 50), TRUE)
if(to_eat.reagents.total_volume)
taste(to_eat.reagents)
var/fraction = min(1 / to_eat.reagents.total_volume, 1)
var/drink_size = to_eat.amount_per_transfer_from_this > 5 ? 5 : to_eat.amount_per_transfer_from_this
if(fraction)
to_eat.reagents.reaction(src, REAGENT_INGEST, fraction)
to_eat.reagents.trans_to(src, drink_size)
SSticker.score.score_food_eaten++
return TRUE
/mob/living/carbon/proc/selfFeed(obj/item/food/to_eat, fullness)
if(ispill(to_eat))
to_chat(src, "<span class='notify'>You swallow [to_eat].</span>")
else if(ispatch(to_eat))
@@ -1208,7 +1224,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
return FALSE
return TRUE
/mob/living/carbon/proc/selfDrink(obj/item/reagent_containers/food/drinks/toDrink, mob/user)
/mob/living/carbon/proc/selfDrink(obj/item/reagent_containers/drinks/toDrink, mob/user)
return TRUE
/mob/living/carbon/proc/forceFed(obj/item/reagent_containers/to_eat, mob/user, fullness)
@@ -1228,7 +1244,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
/*TO DO - If/when stomach organs are introduced, override this at the human level sending the item to the stomach
so that different stomachs can handle things in different ways VB*/
/mob/living/carbon/proc/consume(obj/item/reagent_containers/food/to_eat, bitesize_override)
/mob/living/carbon/proc/consume(obj/item/food/to_eat, bitesize_override)
var/this_bite = bitesize_override ? bitesize_override : to_eat.bitesize
if(!to_eat.reagents)
return
@@ -455,7 +455,7 @@ emp_act
return FALSE
if(HAS_TRAIT(I, TRAIT_BUTCHERS_HUMANS) && stat == DEAD && user.a_intent == INTENT_HARM)
var/obj/item/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/reagent_containers/food/snacks/meat/human(get_turf(loc))
var/obj/item/food/snacks/meat/human/newmeat = new /obj/item/food/snacks/meat/human(get_turf(loc))
newmeat.name = real_name + newmeat.name
newmeat.subjectname = real_name
newmeat.subjectjob = job
@@ -1867,20 +1867,20 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
/mob/living/carbon/human/can_eat(flags = 255)
return dna.species && (dna.species.dietflags & flags)
/mob/living/carbon/human/selfFeed(obj/item/reagent_containers/food/toEat, fullness)
/mob/living/carbon/human/selfFeed(obj/item/food/toEat, fullness)
if(!check_has_mouth())
to_chat(src, "Where do you intend to put \the [toEat]? You don't have a mouth!")
return 0
return ..()
/mob/living/carbon/human/forceFed(obj/item/reagent_containers/food/toEat, mob/user, fullness)
/mob/living/carbon/human/forceFed(obj/item/food/toEat, mob/user, fullness)
if(!check_has_mouth())
if(!((istype(toEat, /obj/item/reagent_containers/food/drinks) && (ismachineperson(src)))))
if(!((istype(toEat, /obj/item/reagent_containers/drinks) && (ismachineperson(src)))))
to_chat(user, "Where do you intend to put \the [toEat]? \The [src] doesn't have a mouth!")
return 0
return ..()
/mob/living/carbon/human/selfDrink(obj/item/reagent_containers/food/drinks/toDrink)
/mob/living/carbon/human/selfDrink(obj/item/reagent_containers/drinks/toDrink)
if(!check_has_mouth())
if(!ismachineperson(src))
to_chat(src, "Where do you intend to put \the [src]? You don't have a mouth!")
@@ -572,7 +572,7 @@
..()
last_banana = world.time
last_honk = world.time
H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(H), SLOT_HUD_RIGHT_STORE)
H.equip_to_slot_or_del(new /obj/item/reagent_containers/drinks/bottle/bottleofbanana(H), SLOT_HUD_RIGHT_STORE)
H.equip_to_slot_or_del(new /obj/item/bikehorn(H), SLOT_HUD_LEFT_STORE)
H.AddElement(/datum/element/waddling)
@@ -651,7 +651,7 @@
/datum/species/golem/tranquillite/on_species_gain(mob/living/carbon/human/H)
..()
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), SLOT_HUD_HEAD)
H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing(H), SLOT_HUD_RIGHT_STORE)
H.equip_to_slot_or_del(new /obj/item/reagent_containers/drinks/bottle/bottleofnothing(H), SLOT_HUD_RIGHT_STORE)
H.equip_to_slot_or_del(new /obj/item/cane(H), SLOT_HUD_LEFT_HAND)
if(H.mind)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe/conjure/build/mime_wall(null))
@@ -64,7 +64,7 @@
..()
H.real_name = "[lowertext(name)] ([rand(100,999)])"
H.name = H.real_name
H.butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/monkey = 5)
H.butcher_results = list(/obj/item/food/snacks/meat/monkey = 5)
/datum/species/monkey/handle_dna(mob/living/carbon/human/H, remove)
..()
@@ -522,22 +522,22 @@
/obj/item/reagent_containers/dropper/cyborg,
/obj/item/lighter/zippo,
/obj/item/storage/bag/tray/cyborg,
/obj/item/reagent_containers/food/drinks/shaker
/obj/item/reagent_containers/drinks/shaker
)
emag_override_modules = list(/obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer)
emag_override_modules = list(/obj/item/reagent_containers/drinks/cans/beer/sleepy_beer)
emag_modules = list(/obj/item/restraints/handcuffs/cable/zipties/cyborg)
special_rechargables = list(
/obj/item/reagent_containers/food/condiment/enzyme,
/obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer
/obj/item/reagent_containers/condiment/enzyme,
/obj/item/reagent_containers/drinks/cans/beer/sleepy_beer
)
// This is a special type of beer given when emagged, one sip and the target falls asleep.
/obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer
/obj/item/reagent_containers/drinks/cans/beer/sleepy_beer
name = "Mickey Finn's Special Brew"
list_reagents = list("beer2" = 50)
/obj/item/reagent_containers/food/drinks/cans/beer/sleepy_beer/cyborg_recharge(coeff, emagged)
/obj/item/reagent_containers/drinks/cans/beer/sleepy_beer/cyborg_recharge(coeff, emagged)
if(emagged)
reagents.check_and_add("beer2", volume, 5)
@@ -49,7 +49,7 @@
/mob/living/simple_animal/bot/secbot/beepsky/explode()
var/turf/Tsec = get_turf(src)
new /obj/item/stock_parts/cell/potato(Tsec)
var/obj/item/reagent_containers/food/drinks/drinkingglass/S = new(Tsec)
var/obj/item/reagent_containers/drinks/drinkingglass/S = new(Tsec)
S.reagents.add_reagent("whiskey", 15)
S.on_reagent_change()
..()
@@ -22,7 +22,7 @@
pressure_resistance = 100
universal_speak = TRUE
AIStatus = AI_OFF //normal constructs don't have AI
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
loot = list(/obj/item/food/snacks/ectoplasm)
del_on_death = TRUE
deathmessage = "collapses in a shattered heap."
var/construct_type = "shade"
@@ -12,7 +12,7 @@
see_in_dark = 6
maxHealth = 10
health = 10
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/food/snacks/meat = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -21,7 +21,7 @@
ventcrawler = VENTCRAWLER_ALWAYS
mob_size = MOB_SIZE_TINY
mob_biotypes = MOB_ORGANIC | MOB_BUG
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 0)
butcher_results = list(/obj/item/food/snacks/meat = 0)
gold_core_spawnable = FRIENDLY_SPAWN
/mob/living/simple_animal/butterfly/Initialize(mapload) //Not the poor butterfly!
@@ -17,7 +17,7 @@
mob_size = MOB_SIZE_SMALL
animal_species = /mob/living/simple_animal/pet/cat
childtype = list(/mob/living/simple_animal/pet/cat/kitten)
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/food/snacks/meat = 3)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -233,8 +233,8 @@
butcher_results = list(
/obj/item/organ/internal/brain = 1,
/obj/item/organ/internal/heart = 1,
/obj/item/reagent_containers/food/snacks/birthdaycakeslice = 3,
/obj/item/reagent_containers/food/snacks/meat/slab = 2
/obj/item/food/snacks/birthdaycakeslice = 3,
/obj/item/food/snacks/meat/slab = 2
)
response_harm = "takes a bite out of"
attacked_sound = "sound/items/eatfood.ogg"
@@ -247,7 +247,7 @@
return
if(health < maxHealth)
adjustBruteLoss(-4)
for(var/obj/item/reagent_containers/food/snacks/donut/D in range(1, src))
for(var/obj/item/food/snacks/donut/D in range(1, src))
if(D.icon_state != "donut2")
D.name = "frosted donut"
D.icon_state = "donut2"
@@ -10,7 +10,7 @@
emote_see = list("clacks")
speak_chance = 1
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/food/snacks/meat = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
@@ -11,7 +11,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 0 //I'm so funny
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 4)
butcher_results = list(/obj/item/food/snacks/meat = 4)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -210,7 +210,7 @@
return TRUE
// Consumes plant matter other than weeds to evolve
/mob/living/simple_animal/diona/proc/consume(obj/item/reagent_containers/food/snacks/grown/G)
/mob/living/simple_animal/diona/proc/consume(obj/item/food/snacks/grown/G)
if(nutrition >= nutrition_need) // Prevents griefing by overeating plant items without evolving.
to_chat(src, "<span class='warning'>You're too full to consume this! Perhaps it's time to grow bigger...</span>")
else
@@ -70,7 +70,7 @@
icon_state = "corgi"
icon_living = "corgi"
icon_dead = "corgi_dead"
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1)
butcher_results = list(/obj/item/food/snacks/meat/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1)
childtype = list(/mob/living/simple_animal/pet/dog/corgi/puppy = 95, /mob/living/simple_animal/pet/dog/corgi/puppy/void = 5)
animal_species = /mob/living/simple_animal/pet/dog
collar_type = "corgi"
@@ -555,7 +555,7 @@
stop_automated_movement = FALSE
var/obj/item/possible_target = null
for(var/I in snack_range)
if(istype(I, /obj/item/reagent_containers/food/snacks)) // Noms
if(istype(I, /obj/item/food/snacks)) // Noms
possible_target = I
break
else if(istype(I, /obj/item/paper)) // Important noms
@@ -590,7 +590,7 @@
else if(prob(30) && ishuman(movement_target.loc)) // mean hooman has stolen it
custom_emote(EMOTE_VISIBLE, "stares at [movement_target.loc]'s [movement_target] with a sad puppy-face.")
/obj/item/reagent_containers/food/snacks/meat/corgi
/obj/item/food/snacks/meat/corgi
name = "Corgi meat"
desc = "Tastes like... well you know..."
@@ -782,7 +782,7 @@
icon_state = "pug"
icon_living = "pug"
icon_dead = "pug_dead"
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/pug = 3)
butcher_results = list(/obj/item/food/snacks/meat/pug = 3)
collar_type = "pug"
/mob/living/simple_animal/pet/dog/pug/handle_automated_movement()
@@ -12,7 +12,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 4)
butcher_results = list(/obj/item/food/snacks/meat = 4)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -122,7 +122,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 6)
butcher_results = list(/obj/item/food/snacks/meat/slab = 6)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -202,7 +202,7 @@
density = FALSE
speak_chance = 2
turns_per_move = 2
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/food/snacks/meat = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -255,9 +255,9 @@ GLOBAL_VAR_INIT(chicken_count, 0)
density = FALSE
speak_chance = 2
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 2)
var/egg_type = /obj/item/reagent_containers/food/snacks/egg
var/food_type = /obj/item/reagent_containers/food/snacks/grown/wheat
butcher_results = list(/obj/item/food/snacks/meat = 2)
var/egg_type = /obj/item/food/snacks/egg
var/food_type = /obj/item/food/snacks/grown/wheat
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -329,8 +329,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
if(GLOB.chicken_count < MAX_CHICKENS && prob(25))
START_PROCESSING(SSobj, E)
/obj/item/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/reagent_containers/food/snacks/egg/process()
/obj/item/food/snacks/egg/process()
if(isturf(loc))
amount_grown += rand(1,2)
if(amount_grown >= 100)
@@ -381,7 +380,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/ham = 6)
butcher_results = list(/obj/item/food/snacks/meat/ham = 6)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -407,7 +406,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 4)
butcher_results = list(/obj/item/food/snacks/meat = 4)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -432,7 +431,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 6)
butcher_results = list(/obj/item/food/snacks/meat = 6)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -457,7 +456,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 6)
butcher_results = list(/obj/item/food/snacks/meat = 6)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -482,7 +481,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 6)
butcher_results = list(/obj/item/food/snacks/meat = 6)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -13,7 +13,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/food/snacks/meat = 3)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -22,7 +22,7 @@
mob_size = MOB_SIZE_SMALL
can_hide = TRUE
pass_door_while_hidden = TRUE
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/food/snacks/meat = 1)
can_collar = TRUE
mob_biotypes = MOB_ORGANIC | MOB_BEAST | MOB_REPTILE
gold_core_spawnable = FRIENDLY_SPAWN
@@ -16,7 +16,7 @@
see_in_dark = 6
maxHealth = 5
health = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/food/snacks/meat = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stamps on"
@@ -92,7 +92,7 @@
..()
/mob/living/simple_animal/mouse/start_pulling(atom/movable/AM, state, force = pull_force, show_message = FALSE)//Prevents mouse from pulling things
if(istype(AM, /obj/item/reagent_containers/food/snacks/cheesewedge))
if(istype(AM, /obj/item/food/snacks/cheesewedge))
return ..() // Get dem
if(show_message)
to_chat(src, "<span class='warning'>You are too small to pull anything except cheese.</span>")
@@ -13,7 +13,7 @@
faction = list("neutral", "jungle")
speak_chance = 1
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/food/snacks/meat = 3)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -11,7 +11,7 @@
response_disarm = "shoves"
response_harm = "hits"
speed = 0
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat= 3, /obj/item/stack/sheet/animalhide/xeno = 1)
butcher_results = list(/obj/item/food/snacks/monstermeat/xenomeat= 3, /obj/item/stack/sheet/animalhide/xeno = 1)
maxHealth = 125
health = 125
harm_intent_damage = 5
@@ -83,7 +83,7 @@
retreat_distance = 5
minimum_distance = 5
move_to_delay = 4
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat= 4, /obj/item/stack/sheet/animalhide/xeno = 1)
butcher_results = list(/obj/item/food/snacks/monstermeat/xenomeat= 4, /obj/item/stack/sheet/animalhide/xeno = 1)
projectiletype = /obj/item/projectile/neurotox
projectilesound = 'sound/weapons/pierce.ogg'
status_flags = 0
@@ -131,7 +131,7 @@
move_to_delay = 4
maxHealth = 400
health = 400
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/xenomeat= 10, /obj/item/stack/sheet/animalhide/xeno = 2)
butcher_results = list(/obj/item/food/snacks/monstermeat/xenomeat= 10, /obj/item/stack/sheet/animalhide/xeno = 2)
mob_size = MOB_SIZE_LARGE
/obj/item/projectile/neurotox
@@ -9,7 +9,7 @@
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 1)
butcher_results = list(/obj/item/food/snacks/meat = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -14,7 +14,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/bearmeat= 5, /obj/item/clothing/head/bearpelt = 1)
butcher_results = list(/obj/item/food/snacks/monstermeat/bearmeat = 5, /obj/item/clothing/head/bearpelt = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -11,7 +11,7 @@
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 2)
butcher_results = list(/obj/item/food/snacks/carpmeat = 2)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -18,7 +18,7 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2)
butcher_results = list(/obj/item/food/snacks/meat/slab = 2)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "kicks"
@@ -19,7 +19,7 @@
see_in_dark = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
footstep_type = FOOTSTEP_MOB_CLAW
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/spidermeat= 2, /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg= 8)
butcher_results = list(/obj/item/food/snacks/monstermeat/spidermeat = 2, /obj/item/food/snacks/monstermeat/spiderleg = 8)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -70,7 +70,7 @@
icon_state = "nurse"
icon_living = "nurse"
icon_dead = "nurse_dead"
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/spidermeat= 2, /obj/item/reagent_containers/food/snacks/monstermeat/spiderleg= 8, /obj/item/reagent_containers/food/snacks/monstermeat/spidereggs= 4)
butcher_results = list(/obj/item/food/snacks/monstermeat/spidermeat= 2, /obj/item/food/snacks/monstermeat/spiderleg= 8, /obj/item/food/snacks/monstermeat/spidereggs= 4)
maxHealth = 40
health = 40
@@ -9,7 +9,7 @@
speak_chance = 80
maxHealth = 220
health = 220
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/gorilla = 4)
butcher_results = list(/obj/item/food/snacks/meat/slab/gorilla = 4)
response_help = "prods"
response_disarm = "challenges"
response_harm = "thumps"
@@ -14,7 +14,7 @@
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/food/snacks/meat = 3)
faction = list("hostile", "jungle")
response_help = "pets the"
response_disarm = "gently pushes aside the"
@@ -10,7 +10,7 @@
maxHealth = 30
health = 30
see_in_dark = 3
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/tomatomeat = 2)
butcher_results = list(/obj/item/food/snacks/meat/tomatomeat = 2)
response_help = "prods"
response_disarm = "pushes aside"
response_harm = "smacks"
@@ -91,7 +91,7 @@
throw_message = "does nothing to the tough hide of the"
pre_attack_icon = "goliath2"
crusher_loot = /obj/item/crusher_trophy/goliath_tentacle
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/goliath= 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2)
butcher_results = list(/obj/item/food/snacks/monstermeat/goliath = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 1, /obj/item/stack/sheet/bone = 2)
loot = list()
stat_attack = UNCONSCIOUS
robust_searching = TRUE
@@ -110,7 +110,7 @@
pre_attack_icon = "Goliath_preattack"
throw_message = "does nothing to the rocky hide of the"
loot = list(/obj/item/stack/sheet/animalhide/goliath_hide) //A throwback to the asteroid days
butcher_results = list(/obj/item/reagent_containers/food/snacks/monstermeat/goliath= 2, /obj/item/stack/sheet/bone = 2)
butcher_results = list(/obj/item/food/snacks/monstermeat/goliath= 2, /obj/item/stack/sheet/bone = 2)
crusher_loot = /obj/item/crusher_trophy/goliath_tentacle/ancient
crusher_drop_mod = 30
wander = FALSE
@@ -386,7 +386,7 @@
belt = null
backpack_contents = list()
if(prob(70))
backpack_contents += pick(list(/obj/item/stamp/clown = 1, /obj/item/reagent_containers/spray/waterflower = 1, /obj/item/reagent_containers/food/snacks/grown/banana = 1, /obj/item/megaphone = 1))
backpack_contents += pick(list(/obj/item/stamp/clown = 1, /obj/item/reagent_containers/spray/waterflower = 1, /obj/item/food/snacks/grown/banana = 1, /obj/item/megaphone = 1))
if(prob(30))
backpack_contents += list(/obj/item/stack/sheet/mineral/bananium = pickweight(list( 1 = 3, 2 = 2, 3 = 1)))
if(prob(10))
@@ -430,6 +430,6 @@
suit_store = /obj/item/melee/cultblade
l_pocket = /obj/item/melee/cultblade/dagger
if(prob(60))
r_pocket = /obj/item/reagent_containers/food/drinks/bottle/unholywater
r_pocket = /obj/item/reagent_containers/drinks/bottle/unholywater
backpack_contents = list(/obj/item/tome = 1, /obj/item/restraints/legcuffs/bola/cult = 1, /obj/item/stack/sheet/runed_metal = 15)
. = ..()
@@ -9,7 +9,7 @@
turns_per_move = 1
maxHealth = 10
health = 10
butcher_results = list(/obj/item/reagent_containers/food/snacks/hugemushroomslice = 1)
butcher_results = list(/obj/item/food/snacks/hugemushroomslice = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "whacks"
@@ -152,7 +152,7 @@
bruised = 1
/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I as obj, mob/user as mob, params)
if(istype(I, /obj/item/reagent_containers/food/snacks/grown/mushroom))
if(istype(I, /obj/item/food/snacks/grown/mushroom))
if(stat == DEAD && !recovery_cooldown)
Recover()
qdel(I)
@@ -182,7 +182,7 @@
/mob/living/simple_animal/hostile/mushroom/harvest()
var/counter
for(counter=0, counter<=powerlevel, counter++)
var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc)
var/obj/item/food/snacks/hugemushroomslice/S = new (src.loc)
S.reagents.add_reagent("psilocybin", powerlevel)
S.reagents.add_reagent("omnizine", powerlevel)
S.reagents.add_reagent("synaptizine", powerlevel)
@@ -8,7 +8,7 @@
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_chance = 0
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/carpmeat = 1)
butcher_results = list(/obj/item/food/snacks/carpmeat = 1)
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "hits"
@@ -68,7 +68,7 @@
melee_damage_lower = 2
melee_damage_upper = 2
speak_emote = list("blurps")
butcher_results = list(/obj/item/reagent_containers/food/snacks/salmonmeat = 1)
butcher_results = list(/obj/item/food/snacks/salmonmeat = 1)
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
@@ -51,7 +51,7 @@
pressure_resistance = 300
gold_core_spawnable = NO_SPAWN //too spooky for science
faction = list("undead") // did I mention ghost
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
loot = list(/obj/item/food/snacks/ectoplasm)
del_on_death = TRUE
/mob/living/simple_animal/hostile/retaliate/ghost/Process_Spacemove(check_drift = 0)
@@ -59,7 +59,7 @@
icon_state = "reindeer"
icon_living = "reindeer"
icon_dead = "reindeer-dead"
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 3)
butcher_results = list(/obj/item/food/snacks/meat = 3)
maxHealth = 80
health = 80
melee_damage_lower = 5
@@ -49,7 +49,7 @@
speak_chance = 1//1% (1 in 100) chance every tick; So about once per 150 seconds, assuming an average tick is 1.5s
turns_per_move = 5
butcher_results = list(/obj/item/reagent_containers/food/snacks/cracker = 3)
butcher_results = list(/obj/item/food/snacks/cracker = 3)
response_help = "pets"
response_disarm = "gently moves aside"
@@ -29,7 +29,7 @@
faction = list("cult")
status_flags = CANPUSH
flying = TRUE
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
loot = list(/obj/item/food/snacks/ectoplasm)
del_on_death = TRUE
deathmessage = "lets out a contented sigh as their form unwinds."
var/holy = FALSE