Makes Vox and Zaddat capable of breathing and not dying when in stomachs

This commit is contained in:
Heroman
2022-01-07 06:32:21 +10:00
parent 22a34d927b
commit cac23937e1
5 changed files with 49 additions and 7 deletions
@@ -109,4 +109,7 @@
H.internal = H.r_hand
H.internal = locate(/obj/item/weapon/tank) in H.contents
if(istype(H.internal,/obj/item/weapon/tank) && H.internals)
H.internals.icon_state = "internal1"
H.internals.icon_state = "internal1"
/datum/species/vox/get_perfect_belly_air_type()
return /datum/gas_mixture/belly_air/vox
@@ -4,4 +4,7 @@
/datum/species/proc/get_wing(var/mob/living/carbon/human/H)
return wing
/datum/species/proc/get_wing_animation(var/mob/living/carbon/human/H)
return wing_animation
return wing_animation
/datum/species/proc/get_perfect_belly_air_type(var/mob/living/carbon/human/H)
return /datum/gas_mixture/belly_air //Default
@@ -467,6 +467,8 @@
if(!(K in covered))
H.apply_damage(light_amount/4, BURN, K, 0, 0, "Abnormal growths")
/datum/species/zaddat/get_perfect_belly_air_type()
return /datum/gas_mixture/belly_air/zaddat
/datum/species/diona
name = SPECIES_DIONA
+7 -3
View File
@@ -10,7 +10,11 @@
if(!loc)
return
var/datum/gas_mixture/environment = loc.return_air()
var/datum/gas_mixture/environment
if(isbelly(loc))
environment = loc.return_air_for_internal_lifeform(src)
else
environment = loc.return_air()
//handle_modifiers() // Do this early since it might affect other things later. //VOREStation Edit
@@ -42,10 +46,10 @@
//Check if we're on fire
handle_fire()
if(client && !(client.prefs.ambience_freq == 0)) // Handle re-running ambience to mobs if they've remained in an area, AND have an active client assigned to them, and do not have repeating ambience disabled.
handle_ambience()
//stuff in the stomach
//handle_stomach() //VOREStation Code
+32 -2
View File
@@ -554,11 +554,20 @@
/obj/belly/return_air()
return return_air_for_internal_lifeform()
/obj/belly/return_air_for_internal_lifeform()
/obj/belly/return_air_for_internal_lifeform(var/mob/living/lifeform)
//Free air until someone wants to code processing it for reals from predbreaths
var/datum/gas_mixture/belly_air/air = new(1000)
var/air_type = lifeform.get_perfect_belly_air_type() // Without any overrides/changes, its gonna be /datum/gas_mixture/belly_air
var/air = new air_type(1000)
return air
/mob/living/proc/get_perfect_belly_air_type()
return /datum/gas_mixture/belly_air
/mob/living/carbon/human/get_perfect_belly_air_type()
if(species)
return species.get_perfect_belly_air_type()
return ..()
// This is about 0.896m^3 of atmosphere
/datum/gas_mixture/belly_air
volume = 2500
@@ -571,6 +580,27 @@
"oxygen" = 21,
"nitrogen" = 79)
/datum/gas_mixture/belly_air/vox
volume = 2500
temperature = 293.150
total_moles = 104
/datum/gas_mixture/belly_air/vox/New()
. = ..()
gas = list(
"phoron" = 100)
/datum/gas_mixture/belly_air/zaddat
volume = 2500
temperature = 293.150
total_moles = 300
/datum/gas_mixture/belly_air/zaddat/New()
. = ..()
gas = list(
"oxygen" = 100)
/mob/living/proc/feed_grabbed_to_self_falling_nom(var/mob/living/user, var/mob/living/prey)
var/belly = user.vore_selected
return perform_the_nom(user, prey, user, belly, delay = 1) //1/10th of a second is probably fine.