diff --git a/code/game/objects/structures/crates_lockers/largecrate_vr.dm b/code/game/objects/structures/crates_lockers/largecrate_vr.dm
index 0b2939fc69..1496ddfd59 100644
--- a/code/game/objects/structures/crates_lockers/largecrate_vr.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate_vr.dm
@@ -55,6 +55,16 @@
/mob/living/simple_animal/hostile/mimic,
/mob/living/simple_animal/hostile/rat,
/mob/living/simple_animal/hostile/rat/passive,
+ /mob/living/simple_animal/chocobo,
+ /mob/living/simple_animal/alpha_chocobo,
+ /mob/living/simple_animal/hostile/metroid/evolution/super,
+ /mob/living/simple_animal/redpanda;0.25,
+ /mob/living/simple_animal/redpanda/fae;0.25,
+ /mob/living/simple_animal/redpanda/alt;0.25,
+ /mob/living/simple_animal/redpanda/alt/waaah;0.25,
+ /mob/living/simple_animal/hostile/piranhaplant;0.33,
+ /mob/living/simple_animal/hostile/piranhaplant/spitter;0.33,
+ /mob/living/simple_animal/hostile/piranhaplant/pitcher;0.33,
/mob/living/simple_animal/otie;0.5))
return ..()
@@ -64,14 +74,22 @@
/obj/structure/largecrate/animal/dangerous/initialize()
starts_with = list(pick(/mob/living/simple_animal/hostile/carp/pike,
- /mob/living/simple_animal/chocobo,
/mob/living/simple_animal/hostile/deathclaw,
/mob/living/simple_animal/hostile/dino,
/mob/living/simple_animal/hostile/alien,
/mob/living/simple_animal/hostile/alien/drone,
/mob/living/simple_animal/hostile/alien/sentinel,
/mob/living/simple_animal/hostile/alien/queen,
+ /mob/living/simple_animal/hostile/alien/queen/empress,
+ /mob/living/simple_animal/hostile/alien/queen/empress/mother,
/mob/living/simple_animal/otie/feral,
+ /mob/living/simple_animal/hostile/metroid/combat/queen,
+ /mob/living/simple_animal/hostile/metroid/combat/omega,
+ /mob/living/simple_animal/hostile/giant_spider/nurse/queen,
+ /mob/living/simple_animal/hostile/giant_spider/phorogenic,
+ /mob/living/simple_animal/hostile/giant_spider/carrier,
+ /mob/living/simple_animal/hostile/dragon,
+ /mob/living/simple_animal/hostile/dragon/phoron,
/mob/living/simple_animal/hostile/corrupthound))
return ..()
diff --git a/code/modules/mob/airhack.dm b/code/modules/mob/airhack.dm
index 3d01892f9a..28f0eaaa94 100644
--- a/code/modules/mob/airhack.dm
+++ b/code/modules/mob/airhack.dm
@@ -1,37 +1,38 @@
/mob
var/datum/gas_mixture/air_contents = new
-
var/obj/machinery/atmospherics/portables_connector/connected_port
var/obj/item/weapon/tank/holding
-
var/volume = 1000
var/destroyed = 0
-
var/start_pressure = ONE_ATMOSPHERE
var/maximum_pressure = 90 * ONE_ATMOSPHERE
var/inflatable = 1
+
/mob/living
inflatable= 0
+
/mob/New()
..()
-
air_contents.volume = volume
air_contents.temperature = T20C
-
return 1
+
/mob/Destroy()
qdel_null(air_contents)
qdel_null(holding)
. = ..()
+
/mob/Life()
if(!connected_port) //only react when pipe_network will ont it do it for you
//Allow for reactions
air_contents.react()
. = ..()
+
/mob/proc/StandardAirMix()
return list(
"oxygen" = O2STANDARD * MolesForPressure(),
"nitrogen" = N2STANDARD * MolesForPressure())
+
/mob/proc/MolesForPressure(var/target_pressure = start_pressure)
return (target_pressure * air_contents.volume) / (R_IDEAL_GAS_EQUATION * air_contents.temperature)
@@ -48,7 +49,7 @@
connected_port = new_port
connected_port.connected_device = src
connected_port.on = 1 //Activate port updates
-
+ buckled = 1
anchored = 1 //Prevent movement
//Actually enforce the air sharing
@@ -56,28 +57,22 @@
if(network && !network.gases.Find(air_contents))
network.gases += air_contents
network.update = 1
-
return 1
/mob/proc/disconnect()
if(!connected_port)
return 0
-
var/datum/pipe_network/network = connected_port.return_network(src)
if(network)
network.gases -= air_contents
-
anchored = 0
-
connected_port.connected_device = null
connected_port = null
-
return 1
/mob/proc/update_connected_network()
if(!connected_port)
return
-
var/datum/pipe_network/network = connected_port.return_network(src)
if (network)
network.update = 1
@@ -112,12 +107,4 @@
return 0
/mob/proc/atmosanalyze(var/mob/user)
- return atmosanalyzer_scan(src, src.air_contents, user)
-
-/datum/trait/inflatable
- name = "Inflatable"
- desc = "You were born with an unusual ability to store air like a portable canister"
- cost = 0
-/datum/trait/inflatable/apply(var/datum/species/S,var/mob/living/carbon/human/H)
- H.inflatable = 1
- ..(S,H)
\ No newline at end of file
+ return atmosanalyzer_scan(src, src.air_contents, user)
\ No newline at end of file
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 111c608b96..dc6a211da4 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -89,7 +89,7 @@
var/obj/item/weapon/grab/G = I
//Has to be aggressive grab, has to be living click-er and non-silicon grabbed
- if((G.state >= GRAB_AGGRESSIVE) && (isliving(user) && (!issilicon(G.affecting) || ispAI(G.affecting))))//Chompstation edit, lets pAI be eaten
+ if((G.state >= GRAB_AGGRESSIVE) && (isliving(user) && !issilicon(G.affecting)))
var/mob/living/attacker = user // Typecast to living
@@ -204,7 +204,9 @@
P.vore_taste = src.vore_taste
P.can_be_drop_prey = src.can_be_drop_prey
P.can_be_drop_pred = src.can_be_drop_pred
-
+ //ChompStation edit, added in inflation option
+ P.inflatable = src.inflatable
+
var/list/serialized = list()
for(var/belly in src.vore_organs)
var/obj/belly/B = belly
@@ -231,6 +233,7 @@
vore_taste = P.vore_taste
can_be_drop_prey = P.can_be_drop_prey
can_be_drop_pred = P.can_be_drop_pred
+ P.inflatable = src.inflatable
release_vore_contents(silent = TRUE)
vore_organs.Cut()
@@ -384,16 +387,8 @@
belly = pred.vore_selected
return perform_the_nom(user, prey, pred, belly)
-/mob/living/proc/feed_self_to_grabbed(var/mob/living/user, var/mob/living/pred, var/belly, var/list/bellys)
- //CHOMPEDIT: AUTO BELLY SELECTOR
- if (!user.client)
- for(var/obj/belly/guttoviolate in pred.vore_organs)
- if(guttoviolate.name == "fstomach")
- bellys |= guttoviolate
- if(!bellys)return
- belly = pick(bellys)
- //CHOMPEDIT: END
- else belly = input("Choose Belly") in pred.vore_organs
+/mob/living/proc/feed_self_to_grabbed(var/mob/living/user, var/mob/living/pred)
+ var/belly = input("Choose Belly") in pred.vore_organs
return perform_the_nom(user, user, pred, belly)
/mob/living/proc/feed_grabbed_to_other(var/mob/living/user, var/mob/living/prey, var/mob/living/pred)
@@ -569,7 +564,7 @@
to_chat(src, "You are not holding anything.")
return
- if(is_type_in_list(I,edible_trash) || is_type_in_list(I,edible_tech) && isSynthetic())
+ if(is_type_in_list(I,edible_trash))
drop_item()
I.forceMove(vore_selected)
updateVRPanel()
@@ -617,17 +612,8 @@
to_chat(src, "You can taste the flavor of gluttonous waste of food.")
else if(istype(I,/obj/item/weapon/storage/glass_ornament))
to_chat(src, "You can taste the flavor of smooth glass.")
- //TFF 10/7/19 - Add custom flavour for collars for trash can trait.
- else if (istype(I,/obj/item/clothing/accessory/collar))
- visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!")
- to_chat(src, "You can taste the submissiveness in the wearer of [I]!")
- else if(istype(I,/obj/item/integrated_circuit) ||istype(I,/obj/item/weapon/circuitboard))
- to_chat(src, "mmm crunchy computer chips.")
- else if(istype(I,/obj/item/weapon/cell))
- to_chat(src, "you can taste the energy filling your stomach.")
else
to_chat(src, "You can taste the flavor of garbage. Delicious.")
-
return
to_chat(src, "This item is not appropriate for ethical consumption.")
return
@@ -658,6 +644,7 @@
dispvoreprefs += "Mob Vore: [allowmobvore ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Drop-nom prey: [can_be_drop_prey ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Drop-nom pred: [can_be_drop_pred ? "Enabled" : "Disabled"]
"
+ dispvoreprefs += "Inflatable: [inflatable ? "Enabled" : "Disabled"]
"
user << browse("