diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm
index 5898f882a0..43d7c8afa4 100644
--- a/code/game/objects/items/pet_carrier.dm
+++ b/code/game/objects/items/pet_carrier.dm
@@ -26,6 +26,7 @@
var/escape_time = 200 //how long it takes for mobs above small sizes to escape (for small sizes, its randomly 1.5 to 2x this)
var/load_time = 30 //how long it takes for mobs to be loaded into the pet carrier
var/has_lock_sprites = TRUE //whether to load the lock overlays or not
+ var/allows_hostiles = FALSE //does the pet carrier allow hostile entities to be held within it?
/obj/item/pet_carrier/Destroy()
if(occupants.len)
@@ -105,6 +106,8 @@
if(user == target)
to_chat(user, "Why would you ever do that?")
return
+ if(ishostile(target) && !allows_hostiles) && target.move_resist < MOVE_FORCE_VERY_STRONG) //don't allow goliaths into pet carriers
+ to_chat(user, "You have a feeling you shouldn't keep this as a pet.")
load_occupant(user, target)
/obj/item/pet_carrier/relaymove(mob/living/user, direction)
@@ -205,7 +208,6 @@
/obj/item/pet_carrier/bluespace
name = "bluespace jar"
desc = "A jar, that seems to be bigger on the inside, somehow allowing lifeforms to fit through its narrow entrance."
- icon = 'icons/obj/pet_carrier.dmi'
icon_state = "bluespace_jar_open"
item_state = "bluespace_jar"
lefthand_file = ""
@@ -213,13 +215,21 @@
max_occupant_weight = MOB_SIZE_HUMAN //can fit people, like a bluespace bodybag!
entrance_name = "lid"
w_class = WEIGHT_CLASS_NORMAL //it can fit in bags, like a bluespace bodybag!
+ max_occupants = 1 //far less than a regular carrier or bluespace bodybag, because it can be thrown to release the contents
+ allows_hostiles = TRUE //can fit hostile creatures, however only those of a human size or smaller (and not things like goliaths)
has_lock_sprites = FALSE //jar doesn't show the regular lock overlay
custom_materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 600)
-obj/item/pet_carrier/bluespace/update_icon_state()
+/obj/item/pet_carrier/bluespace/update_icon_state()
if(open)
icon_state = initial(icon_state)
else
icon_state = "bluespace_jar"
+/obj/item/pet_carrier/bluespace/throw_impact()
+ //delete the item upon impact, releasing the creature inside (this is handled by its deletion)
+ qdel(src)
+ playsound(src, "shatter", 70, 1)
+ ..()
+
#undef pet_carrier_full
diff --git a/icons/obj/pet_carrier.dmi b/icons/obj/pet_carrier.dmi
index 32fca90f0b..2d7e9e70b6 100644
Binary files a/icons/obj/pet_carrier.dmi and b/icons/obj/pet_carrier.dmi differ