mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-26 10:03:45 +00:00
Porting some Neb/Bay gluttony changes.
This commit is contained in:
@@ -561,3 +561,83 @@
|
||||
return ingest(holder, ingested, amount, multiplier, copy)
|
||||
if(chem_type == CHEM_TOUCH)
|
||||
return holder.trans_to_holder(touching, amount, multiplier, copy)
|
||||
|
||||
|
||||
/mob/living/carbon/devour(atom/movable/victim)
|
||||
var/can_eat = can_devour(victim)
|
||||
if(!can_eat)
|
||||
return FALSE
|
||||
var/eat_speed = 100
|
||||
if(can_eat == DEVOUR_FAST)
|
||||
eat_speed = 30
|
||||
visible_message(SPAN_DANGER("\The [src] is attempting to devour \the [victim] whole!"))
|
||||
var/action_target = victim
|
||||
if(isobj(victim))
|
||||
action_target = src
|
||||
if(!do_mob(src, action_target, eat_speed))
|
||||
return FALSE
|
||||
visible_message(SPAN_DANGER("\The [src] devours \the [victim] whole!"))
|
||||
if(ismob(victim))
|
||||
add_attack_logs(src, victim, "devoured")
|
||||
else
|
||||
drop_from_inventory(victim)
|
||||
move_to_stomach(victim)
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/proc/can_devour(atom/movable/victim, var/silent = FALSE)
|
||||
|
||||
if(!should_have_organ(O_STOMACH))
|
||||
return FALSE
|
||||
|
||||
var/obj/item/organ/internal/stomach/stomach = get_internal_organ(O_STOMACH)
|
||||
if(!istype(stomach) || stomach.is_broken())
|
||||
if(!silent)
|
||||
to_chat(src, SPAN_WARNING("Your stomach is not functional!"))
|
||||
return FALSE
|
||||
|
||||
if(!stomach.can_eat_atom(victim))
|
||||
if(!silent)
|
||||
to_chat(src, SPAN_WARNING("You are not capable of devouring \the [victim] whole!"))
|
||||
return FALSE
|
||||
|
||||
if(stomach.is_full(victim))
|
||||
if(!silent)
|
||||
to_chat(src, SPAN_WARNING("Your [stomach.name] is full!"))
|
||||
return FALSE
|
||||
|
||||
return stomach.get_devour_time(victim)
|
||||
|
||||
/mob/living/carbon/proc/move_to_stomach(atom/movable/victim)
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
var/mob/mob_victim = victim
|
||||
if(istype(mob_victim, /obj/item/holder))
|
||||
mob_victim = locate(/mob) in mob_victim
|
||||
if(mob_victim && mob_victim != victim)
|
||||
stomach_contents.Add(mob_victim)
|
||||
qdel(victim)
|
||||
else
|
||||
stomach_contents.Add(victim)
|
||||
|
||||
/mob/living/carbon/empty_stomach(var/blood_vomit)
|
||||
|
||||
for(var/atom/movable/thing in stomach_contents)
|
||||
thing.dropInto(get_turf(src))
|
||||
if(species.gluttonous & GLUT_PROJECTILE_VOMIT)
|
||||
thing.throw_at(get_edge_target_turf(src,dir),7,7,src)
|
||||
|
||||
visible_message(SPAN_DANGER("\The [src] throws up!"),SPAN_DANGER("You throw up!"))
|
||||
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
|
||||
Stun(5)
|
||||
|
||||
var/turf/simulated/T = get_turf(src) //TODO: Make add_blood_floor remove blood from human mobs
|
||||
if(istype(T))
|
||||
if(blood_vomit)
|
||||
T.add_blood_floor(src)
|
||||
else
|
||||
T.add_vomit_floor(src, 1)
|
||||
if(blood_vomit)
|
||||
if(getBruteLoss() < 50)
|
||||
adjustBruteLoss(3)
|
||||
else
|
||||
adjust_nutrition(-40)
|
||||
adjustToxLoss(-3)
|
||||
|
||||
@@ -1109,7 +1109,7 @@
|
||||
if(species.icon_scale_x != 1 || species.icon_scale_y != 1)
|
||||
update_transform()
|
||||
|
||||
if(!default_colour || !species.apply_default_colours(src))
|
||||
if(!default_colour)
|
||||
r_skin = 0
|
||||
g_skin = 0
|
||||
b_skin = 0
|
||||
@@ -1126,6 +1126,8 @@
|
||||
|
||||
species.create_organs(src)
|
||||
|
||||
species.apply_default_colours(src)
|
||||
|
||||
species.handle_post_spawn(src)
|
||||
|
||||
maxHealth = species.total_health
|
||||
@@ -1687,3 +1689,38 @@
|
||||
for(var/obj/item/accessory in uniform.accessories)
|
||||
if(accessory.is_mob_movement_sensitive())
|
||||
LAZYADD(., accessory)
|
||||
|
||||
/mob/living/carbon/human/empty_stomach(var/blood_vomit)
|
||||
if(should_have_organ(O_STOMACH))
|
||||
var/turf/dumping_loc = get_turf(src)
|
||||
for(var/atom/movable/thing as anything in stomach_contents)
|
||||
thing.dropInto(dumping_loc)
|
||||
if(species.gluttonous & GLUT_PROJECTILE_VOMIT)
|
||||
thing.throw_at(get_edge_target_turf(src,dir),7,7,src)
|
||||
if(!blood_vomit && should_have_organ(O_LIVER))
|
||||
var/obj/item/organ/internal/L = get_internal_organ(O_LIVER)
|
||||
blood_vomit = !istype(L) || L.is_broken()
|
||||
..(blood_vomit)
|
||||
|
||||
/mob/living/carbon/human/move_to_stomach(atom/movable/victim)
|
||||
var/obj/item/organ/internal/stomach = get_internal_organ(O_STOMACH)
|
||||
if(istype(stomach))
|
||||
var/mob/mob_victim = victim
|
||||
if(istype(mob_victim, /obj/item/holder))
|
||||
mob_victim = locate(/mob) in mob_victim
|
||||
if(mob_victim && victim != mob_victim)
|
||||
mob_victim.forceMove(stomach)
|
||||
qdel(victim)
|
||||
else
|
||||
victim.forceMove(stomach)
|
||||
|
||||
/mob/living/carbon/human/attackby(obj/item/I, mob/user)
|
||||
var/user_zone_sel = user.zone_sel?.selecting
|
||||
if(user == src && user_zone_sel == O_MOUTH && can_devour(I, silent = TRUE))
|
||||
var/obj/item/blocked = check_mouth_coverage()
|
||||
if(blocked)
|
||||
to_chat(user, SPAN_WARNING("\The [blocked] is in the way!"))
|
||||
return TRUE
|
||||
if(devour(I))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
cold_level_2 = 150 //Default 200
|
||||
cold_level_3 = 90 //Default 120
|
||||
|
||||
gluttonous = 1
|
||||
gluttonous = GLUT_TINY|GLUT_ITEM_NORMAL
|
||||
|
||||
breath_type = "nitrogen"
|
||||
poison_type = "oxygen"
|
||||
@@ -93,6 +93,7 @@
|
||||
O_KIDNEYS = /obj/item/organ/internal/kidneys/vox,
|
||||
O_BRAIN = /obj/item/organ/internal/brain/vox,
|
||||
O_EYES = /obj/item/organ/internal/eyes,
|
||||
O_STOMACH = /obj/item/organ/internal/stomach/vox
|
||||
)
|
||||
|
||||
genders = list(NEUTER)
|
||||
@@ -184,12 +185,13 @@
|
||||
H.b_skin = hex2num(copytext(skin_color,6,8))
|
||||
var/scutes_color = "#BC7D3E"
|
||||
var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
|
||||
head.markings = list(
|
||||
"Vox Beak" = list(
|
||||
"color" = scutes_color,
|
||||
"datum" = body_marking_styles_list["Vox Beak"]
|
||||
if(head)
|
||||
head.markings = list(
|
||||
"Vox Beak" = list(
|
||||
"color" = scutes_color,
|
||||
"datum" = body_marking_styles_list["Vox Beak"]
|
||||
)
|
||||
)
|
||||
)
|
||||
for(var/bp in list(BP_L_ARM, BP_L_HAND, BP_R_ARM, BP_R_HAND, BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT))
|
||||
var/obj/item/organ/external/limb = H.get_organ(bp)
|
||||
if(limb)
|
||||
|
||||
@@ -214,7 +214,8 @@
|
||||
var/primitive_form // Lesser form, if any (ie. monkey for humans)
|
||||
var/greater_form // Greater form, if any, ie. human for monkeys.
|
||||
var/holder_type
|
||||
var/gluttonous // Can eat some mobs. 1 for mice, 2 for monkeys, 3 for people.
|
||||
var/gluttonous = GLUT_NONE // Can eat some mobs. Values can be GLUT_TINY, GLUT_SMALLER, GLUT_ANYTHING, GLUT_ITEM_TINY, GLUT_ITEM_NORMAL, GLUT_ITEM_ANYTHING, GLUT_PROJECTILE_VOMIT
|
||||
var/stomach_capacity = 5 // How much stuff they can stick in their stomach
|
||||
|
||||
var/rarity_value = 1 // Relative rarity/collector value for this species.
|
||||
var/economic_modifier = 2 // How much money this species makes
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
primitive_form = SPECIES_MONKEY_UNATHI
|
||||
darksight = 3
|
||||
ambiguous_genders = TRUE
|
||||
gluttonous = 1
|
||||
gluttonous = GLUT_TINY
|
||||
slowdown = 0.5
|
||||
total_health = 125
|
||||
brute_mod = 0.85
|
||||
@@ -190,7 +190,7 @@
|
||||
burn_mod = 1.15
|
||||
flash_mod = 1.1
|
||||
metabolic_rate = 1.1
|
||||
gluttonous = 1
|
||||
gluttonous = GLUT_TINY
|
||||
num_alternate_languages = 3
|
||||
secondary_langs = list(LANGUAGE_SIIK, LANGUAGE_AKHANI, LANGUAGE_ALAI)
|
||||
name_language = LANGUAGE_SIIK
|
||||
@@ -389,7 +389,7 @@
|
||||
flash_mod = 2
|
||||
flash_burn = 15 //flashing a zaddat probably counts as police brutality
|
||||
metabolic_rate = 0.7 //did u know if your ancestors starved ur body will actually start in starvation mode?
|
||||
gluttonous = 1
|
||||
gluttonous = GLUT_TINY
|
||||
taste_sensitivity = TASTE_SENSITIVE
|
||||
num_alternate_languages = 3
|
||||
secondary_langs = list(LANGUAGE_ZADDAT, LANGUAGE_UNATHI)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
pass_flags = PASSTABLE
|
||||
holder_type = /obj/item/holder/human
|
||||
// short_sighted = 1
|
||||
gluttonous = 1
|
||||
gluttonous = GLUT_TINY
|
||||
blood_volume = 400
|
||||
hunger_factor = 0.2
|
||||
hearboost = 1 //Big heckin chonker ultragigamega-ears.
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
has_fine_manipulation = 0
|
||||
siemens_coefficient = 0
|
||||
gluttonous = 2
|
||||
gluttonous = GLUT_SMALLER
|
||||
|
||||
brute_mod = 0.5 // Hardened carapace.
|
||||
burn_mod = 2 // Weak to fire.
|
||||
|
||||
@@ -760,33 +760,7 @@
|
||||
sleep(150) //15 seconds until second warning
|
||||
to_chat(src, "<span class='warning'>You feel like you are about to throw up!</span>")
|
||||
sleep(100) //and you have 10 more for mad dash to the bucket
|
||||
|
||||
//Damaged livers cause you to vomit blood.
|
||||
if(!blood_vomit)
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if(!H.isSynthetic())
|
||||
var/obj/item/organ/internal/liver/L = H.internal_organs_by_name["liver"]
|
||||
if(!L || L.is_broken())
|
||||
blood_vomit = 1
|
||||
|
||||
Stun(5)
|
||||
src.visible_message("<span class='warning'>[src] throws up!</span>","<span class='warning'>You throw up!</span>")
|
||||
playsound(src, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
var/turf/simulated/T = get_turf(src) //TODO: Make add_blood_floor remove blood from human mobs
|
||||
if(istype(T))
|
||||
if(blood_vomit)
|
||||
T.add_blood_floor(src)
|
||||
else
|
||||
T.add_vomit_floor(src, 1)
|
||||
|
||||
if(blood_vomit)
|
||||
if(getBruteLoss() < 50)
|
||||
adjustBruteLoss(3)
|
||||
else
|
||||
adjust_nutrition(-40)
|
||||
adjustToxLoss(-3)
|
||||
empty_stomach(blood_vomit)
|
||||
|
||||
spawn(350)
|
||||
lastpuke = 0
|
||||
@@ -1173,3 +1147,6 @@
|
||||
|
||||
/mob/living/proc/IWasAttackedBy(var/mob/living/attacker)
|
||||
return
|
||||
|
||||
/mob/living/proc/empty_stomach()
|
||||
return
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
zone = BP_HEAD
|
||||
return organs_by_name[zone]
|
||||
|
||||
/mob/living/proc/get_internal_organ(var/zone)
|
||||
return zone && internal_organs_by_name[zone]
|
||||
|
||||
/mob/living/gib()
|
||||
for(var/path in internal_organs)
|
||||
if(ispath(path))
|
||||
|
||||
@@ -1265,4 +1265,7 @@
|
||||
return TRUE
|
||||
|
||||
/mob/proc/hearing_boost_range()
|
||||
return hearing_boost_range
|
||||
return hearing_boost_range
|
||||
|
||||
/mob/proc/devour(atom/movable/victim)
|
||||
return
|
||||
|
||||
@@ -333,8 +333,8 @@
|
||||
pin_down(affecting, assailant)
|
||||
|
||||
//clicking on yourself while grabbing them
|
||||
if(M == assailant && state >= GRAB_AGGRESSIVE)
|
||||
devour(affecting, assailant)
|
||||
if(M == assailant && state >= GRAB_AGGRESSIVE && assailant.devour(affecting))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grab/dropped()
|
||||
loc = null
|
||||
|
||||
@@ -148,27 +148,3 @@
|
||||
step_to(attacker, target)
|
||||
attacker.set_dir(EAST) //face the victim
|
||||
target.set_dir(SOUTH) //face up
|
||||
|
||||
/obj/item/grab/proc/devour(mob/target, mob/user)
|
||||
var/can_eat
|
||||
if((FAT in user.mutations) && ismini(target))
|
||||
can_eat = 1
|
||||
else
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H) && H.species.gluttonous)
|
||||
if(H.species.gluttonous == 2)
|
||||
can_eat = 2
|
||||
else if((H.mob_size > target.mob_size) && !ishuman(target) && ismini(target))
|
||||
can_eat = 1
|
||||
|
||||
if(can_eat)
|
||||
var/mob/living/carbon/attacker = user
|
||||
user.visible_message("<span class='danger'>[user] is attempting to devour [target]!</span>")
|
||||
if(can_eat == 2)
|
||||
if(!do_mob(user, target)||!do_after(user, 30)) return
|
||||
else
|
||||
if(!do_mob(user, target)||!do_after(user, 70)) return
|
||||
user.visible_message("<span class='danger'>[user] devours [target]!</span>")
|
||||
target.loc = user
|
||||
attacker.stomach_contents.Add(target)
|
||||
qdel(src)
|
||||
@@ -26,13 +26,6 @@
|
||||
return L.mob_size <= MOB_TINY
|
||||
return 0
|
||||
|
||||
|
||||
/proc/ismini(A)
|
||||
if(A && istype(A, /mob/living))
|
||||
var/mob/living/L = A
|
||||
return L.mob_size <= MOB_MINISCULE
|
||||
return 0
|
||||
|
||||
/mob/living/silicon/isSynthetic()
|
||||
return 1
|
||||
|
||||
@@ -683,4 +676,4 @@ var/global/image/backplane
|
||||
item.screen_loc = screen_place
|
||||
|
||||
/mob/proc/can_feed()
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -42,12 +42,9 @@
|
||||
organ_tag = O_PUMP
|
||||
dead_icon = "pump-off"
|
||||
robotic = ORGAN_ROBOT
|
||||
|
||||
standard_pulse_level = PULSE_NONE
|
||||
|
||||
/obj/item/organ/internal/stomach/machine/handle_organ_proc_special()
|
||||
/obj/item/organ/internal/heart/machine/handle_organ_proc_special()
|
||||
..()
|
||||
if(owner && owner.stat != DEAD)
|
||||
owner.bodytemperature += round(owner.robobody_count * 0.25, 0.1)
|
||||
|
||||
return
|
||||
|
||||
@@ -3,29 +3,35 @@
|
||||
icon_state = "stomach"
|
||||
organ_tag = O_STOMACH
|
||||
parent_organ = BP_GROIN
|
||||
|
||||
unacidable = TRUE // Don't melt when holding your acid, dangit.
|
||||
|
||||
var/acidtype = "stomacid" // Incase you want some stomach organ with, say, polyacid instead, or sulphuric.
|
||||
var/max_acid_volume = 30
|
||||
|
||||
var/stomach_capacity
|
||||
var/deadly_hold = TRUE // Does the stomach do damage to mobs eaten by its owner? Xenos should probably have this FALSE.
|
||||
|
||||
/obj/item/organ/internal/stomach/Initialize()
|
||||
. = ..()
|
||||
if(reagents)
|
||||
reagents.maximum_volume = 30
|
||||
else
|
||||
if(!reagents)
|
||||
create_reagents(30)
|
||||
reagents.maximum_volume = 30
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/item/organ/internal/stomach/LateInitialize()
|
||||
. = ..()
|
||||
if(species && !stomach_capacity)
|
||||
stomach_capacity = species.stomach_capacity
|
||||
|
||||
/obj/item/organ/internal/stomach/handle_organ_proc_special()
|
||||
if(owner && istype(owner, /mob/living/carbon/human))
|
||||
if(istype(owner, /mob/living/carbon/human))
|
||||
if(reagents)
|
||||
if(reagents.total_volume + 2 < max_acid_volume && prob(20))
|
||||
reagents.add_reagent(acidtype, rand(1,2))
|
||||
|
||||
for(var/mob/living/L in owner.stomach_contents) // Splashes mobs inside with acid. Twice as effective as being splashed with the same acid outside the body.
|
||||
reagents.trans_to(L, 2, 2, 0)
|
||||
if(reagents.total_volume)
|
||||
for(var/mob/living/L in owner.stomach_contents) // Splashes mobs inside with acid. Twice as effective as being splashed with the same acid outside the body.
|
||||
reagents.trans_to(L, 2, 2, 0)
|
||||
for(var/atom/movable/AM in contents)
|
||||
reagents.touch(AM)
|
||||
|
||||
if(is_broken() && prob(1))
|
||||
owner.custom_pain("There's a twisting pain in your abdomen!",1)
|
||||
@@ -45,6 +51,46 @@
|
||||
owner.adjustToxLoss(3)
|
||||
owner.vomit(FALSE, TRUE)
|
||||
|
||||
/obj/item/organ/internal/stomach/proc/can_eat_atom(var/atom/movable/food)
|
||||
return !isnull(get_devour_time(food))
|
||||
|
||||
/obj/item/organ/internal/stomach/proc/is_full(var/atom/movable/food)
|
||||
var/total = round(reagents?.total_volume / 10)
|
||||
for(var/a in contents + food)
|
||||
if(ismob(a))
|
||||
var/mob/M = a
|
||||
total += M.mob_size
|
||||
else if(isobj(a))
|
||||
var/obj/item/I = a
|
||||
total += I.get_storage_cost()
|
||||
else
|
||||
continue
|
||||
if(total > stomach_capacity)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/organ/internal/stomach/proc/get_devour_time(var/atom/movable/food)
|
||||
if(istype(food, /obj/item/holder)) // Don't eat holders. They are special.
|
||||
food = locate(/mob) in food
|
||||
if(iscarbon(food) || isanimal(food))
|
||||
var/mob/living/L = food
|
||||
if((species.gluttonous & GLUT_TINY) && (L.mob_size <= MOB_TINY) && !ishuman(food)) // Anything MOB_TINY or smaller
|
||||
return DEVOUR_SLOW
|
||||
else if((species.gluttonous & GLUT_SMALLER) && owner.mob_size > L.mob_size) // Anything we're larger than
|
||||
return DEVOUR_SLOW
|
||||
else if(species.gluttonous & GLUT_ANYTHING) // Eat anything ever
|
||||
return DEVOUR_FAST
|
||||
else if(istype(food, /obj/item))
|
||||
var/obj/item/I = food
|
||||
var/cost = I.get_storage_cost()
|
||||
if(cost < ITEMSIZE_COST_NO_CONTAINER)
|
||||
if((species.gluttonous & GLUT_ITEM_TINY) && cost < ITEMSIZE_COST_NORMAL)
|
||||
return DEVOUR_SLOW
|
||||
else if((species.gluttonous & GLUT_ITEM_NORMAL) && cost <= ITEMSIZE_COST_NORMAL)
|
||||
return DEVOUR_SLOW
|
||||
else if(species.gluttonous & GLUT_ITEM_ANYTHING)
|
||||
return DEVOUR_FAST
|
||||
|
||||
/obj/item/organ/internal/stomach/xeno
|
||||
color = "#555555"
|
||||
acidtype = "pacid"
|
||||
@@ -53,20 +99,14 @@
|
||||
name = "reagent cycler"
|
||||
icon_state = "cycler"
|
||||
organ_tag = O_CYCLER
|
||||
|
||||
robotic = ORGAN_ROBOT
|
||||
|
||||
acidtype = "sacid"
|
||||
|
||||
/obj/item/organ/internal/stomach/machine/handle_organ_proc_special()
|
||||
..()
|
||||
if(owner && owner.stat != DEAD)
|
||||
owner.bodytemperature += round(owner.robobody_count * 0.25, 0.1)
|
||||
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
|
||||
if(H.ingested?.total_volume && H.bloodstr)
|
||||
H.ingested.trans_to_holder(H.bloodstr, rand(2,5))
|
||||
|
||||
return
|
||||
|
||||
@@ -29,3 +29,32 @@
|
||||
|
||||
/obj/item/organ/external/groin/vox //vox have an extended ribcage for extra protection.
|
||||
encased = "lower ribcage"
|
||||
|
||||
/obj/item/organ/internal/stomach/vox
|
||||
name = "processing tuble"
|
||||
parent_organ = BP_TORSO
|
||||
color = "#0033cc"
|
||||
acidtype = "voxenzyme"
|
||||
unacidable = TRUE
|
||||
stomach_capacity = 20
|
||||
// Items to convert into nutriment during processing.
|
||||
var/static/list/convert_into_nutriment = list(
|
||||
/obj/item/trash = 10,
|
||||
/obj/item/flame/candle = 5,
|
||||
/obj/item/ore = 5,
|
||||
/obj/item/soap = 5,
|
||||
/obj/item/material/shard/shrapnel = 3
|
||||
)
|
||||
|
||||
/obj/item/organ/internal/stomach/vox/handle_organ_proc_special()
|
||||
if(istype(owner, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
for(var/obj/item/thing in contents)
|
||||
if(thing.unacidable)
|
||||
continue
|
||||
for(var/check_type in convert_into_nutriment)
|
||||
if(istype(thing, check_type))
|
||||
H.ingested.add_reagent("nutriment", convert_into_nutriment[check_type])
|
||||
qdel(thing)
|
||||
break
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user