diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm.rej b/code/modules/food_and_drinks/food/snacks/meat.dm.rej
new file mode 100644
index 0000000000..8884c9dab7
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks/meat.dm.rej
@@ -0,0 +1,13 @@
+diff a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm (rejected hunks)
+@@ -225,6 +225,11 @@
+ tastes = list("meat" = 1, "wheat" = 1)
+ foodtype = GRAIN
+
++/obj/item/weapon/reagent_containers/food/snacks/meat/slab/gorilla
++ name = "gorilla meat"
++ desc = "Much meatier than monkey meat."
++ list_reagents = list("nutriment" = 5, "vitamin" = 1)
++
+ /obj/item/weapon/reagent_containers/food/snacks/meat/rawbacon
+ name = "raw piece of bacon"
+ desc = "A raw piece of bacon."
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index a9eddc6dd0..7aaa179f69 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -23,23 +23,22 @@
walk_to(src,0)
/mob/living/carbon/monkey/handle_mutations_and_radiation()
-
- if (radiation)
- if (radiation > 100)
- if(!IsKnockdown())
- emote("collapse")
- Knockdown(200)
- to_chat(src, "You feel weak.")
-
+ if(radiation)
+ if(radiation > 100)
+ if(!IsKnockdown())
+ emote("collapse")
+ Knockdown(200)
+ to_chat(src, "You feel weak.")
+ if(radiation > 30 && prob((radiation - 30) * (radiation - 30) * 0.002))
+ gorillize()
+ return
switch(radiation)
-
if(50 to 75)
if(prob(5))
if(!IsKnockdown())
emote("collapse")
Knockdown(60)
to_chat(src, "You feel weak.")
-
if(75 to 100)
if(prob(1))
to_chat(src, "You mutate!")
diff --git a/code/modules/mob/living/living.dm.rej b/code/modules/mob/living/living.dm.rej
new file mode 100644
index 0000000000..770cac6905
--- /dev/null
+++ b/code/modules/mob/living/living.dm.rej
@@ -0,0 +1,10 @@
+diff a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm (rejected hunks)
+@@ -793,7 +793,7 @@
+ else
+ to_chat(src, "You don't have the dexterity to do this!")
+ return
+-/mob/living/proc/can_use_guns(var/obj/item/weapon/gun/G)
++/mob/living/proc/can_use_guns(var/obj/item/weapon/G)
+ if (G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser())
+ to_chat(src, "You don't have the dexterity to do this!")
+ return 0
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla.dm b/code/modules/mob/living/simple_animal/hostile/gorilla.dm
new file mode 100644
index 0000000000..8a7d23f62d
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla.dm
@@ -0,0 +1,75 @@
+/mob/living/simple_animal/hostile/gorilla
+ name = "Gorilla"
+ desc = "A ground-dwelling, predominantly herbivorous ape that inhabits the forests of central Africa."
+ icon_state = "gorilla"
+ icon_living = "gorilla"
+ icon_dead = "gorilla_dead"
+ speak_chance = 80
+ maxHealth = 220
+ health = 220
+ loot = list(/obj/effect/gibspawner/generic)
+ butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/gorilla = 4)
+ response_help = "prods"
+ response_disarm = "challenges"
+ response_harm = "thumps"
+ speed = 1
+ melee_damage_lower = 15
+ melee_damage_upper = 18
+ damage_coeff = list(BRUTE = 1, BURN = 1.5, TOX = 1.5, CLONE = 0, STAMINA = 0, OXY = 1.5)
+ obj_damage = 20
+ environment_smash = 2
+ attacktext = "pummels"
+ attack_sound = 'sound/weapons/punch1.ogg'
+ faction = list("jungle")
+ robust_searching = TRUE
+ stat_attack = UNCONSCIOUS
+ minbodytemp = 270
+ maxbodytemp = 350
+
+// Gorillas like to dismember limbs from unconcious mobs.
+// Returns null when the target is not an unconcious carbon mob; a list of limbs (possibly empty) otherwise.
+/mob/living/simple_animal/hostile/gorilla/proc/target_bodyparts(atom/the_target)
+ var/list/parts = list()
+ if(iscarbon(the_target))
+ var/mob/living/carbon/C = the_target
+ if(C.stat >= UNCONSCIOUS)
+ for(var/X in C.bodyparts)
+ var/obj/item/bodypart/BP = X
+ if(BP.body_part != HEAD && BP.body_part != CHEST)
+ if(BP.dismemberable)
+ parts += BP
+ return parts
+
+/mob/living/simple_animal/hostile/gorilla/AttackingTarget()
+ var/list/parts = target_bodyparts(target)
+ if(parts != null)
+ if(LAZYLEN(parts) == 0)
+ return FALSE
+ var/obj/item/bodypart/BP = pick(parts)
+ BP.dismember()
+ return ..()
+ . = ..()
+ if(. && isliving(target))
+ var/mob/living/L = target
+ if(prob(80))
+ var/atom/throw_target = get_edge_target_turf(L, dir)
+ L.throw_at(throw_target, rand(1,2), 7, src)
+ else
+ L.Knockdown(20)
+ visible_message("[src] knocks [L] down!")
+
+/mob/living/simple_animal/hostile/gorilla/CanAttack(atom/the_target)
+ . = ..()
+ if(. && istype(the_target, /mob/living/carbon/monkey))
+ return FALSE
+ var/list/parts = target_bodyparts(the_target)
+ if(parts != null && LAZYLEN(parts) <= 3) // Don't remove all of their limbs.
+ return FALSE
+
+/mob/living/simple_animal/hostile/gorilla/handle_automated_speech(var/override)
+ set waitfor = FALSE
+ if(speak_chance)
+ if(override || (target && prob(speak_chance)))
+ playsound(loc, "sound/creatures/gorilla.ogg", 200)
+ ..()
+
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
new file mode 100644
index 0000000000..b3e0f3b658
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla/visuals_icons.dm
@@ -0,0 +1,55 @@
+/mob/living/simple_animal/hostile/gorilla/proc/apply_overlay(cache_index)
+ . = gorilla_overlays[cache_index]
+ if(.)
+ add_overlay(.)
+
+/mob/living/simple_animal/hostile/gorilla/proc/remove_overlay(cache_index)
+ var/I = gorilla_overlays[cache_index]
+ if(I)
+ cut_overlay(I)
+ gorilla_overlays[cache_index] = null
+
+/mob/living/simple_animal/hostile/gorilla/update_inv_hands()
+ cut_overlays("standing_overlay")
+ remove_overlay(GORILLA_HANDS_LAYER)
+
+ var/standing = FALSE
+ for(var/I in held_items)
+ if(I)
+ standing = TRUE
+ break
+ if(!standing)
+ if(stat != DEAD)
+ icon_state = "crawling"
+ speed = 1
+ return ..()
+ if(stat != DEAD)
+ icon_state = "standing"
+ speed = 3 // Gorillas are slow when standing up.
+
+ var/list/hands_overlays = list()
+
+ var/obj/item/l_hand = get_item_for_held_index(1)
+ var/obj/item/r_hand = get_item_for_held_index(2)
+
+ if(r_hand)
+ var/r_state = r_hand.item_state ? r_hand.item_state : r_hand.icon_state
+ var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(state = r_state, default_layer = GORILLA_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE)
+ r_hand_overlay.pixel_y -= 1
+ hands_overlays += r_hand_overlay
+
+ if(l_hand)
+ var/l_state = l_hand.item_state ? l_hand.item_state : l_hand.icon_state
+ var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(state = l_state, default_layer = GORILLA_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE)
+ l_hand_overlay.pixel_y -= 1
+ hands_overlays += l_hand_overlay
+
+ if(hands_overlays.len)
+ gorilla_overlays[GORILLA_HANDS_LAYER] = hands_overlays
+ apply_overlay(GORILLA_HANDS_LAYER)
+ add_overlay("standing_overlay")
+ return ..()
+
+/mob/living/simple_animal/hostile/gorilla/regenerate_icons()
+ update_inv_hands()
+
diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla_emotes.dm b/code/modules/mob/living/simple_animal/hostile/gorilla_emotes.dm
new file mode 100644
index 0000000000..3af442930e
--- /dev/null
+++ b/code/modules/mob/living/simple_animal/hostile/gorilla_emotes.dm
@@ -0,0 +1,11 @@
+/datum/emote/sound/gorilla
+ mob_type_allowed_typecache = /mob/living/simple_animal/hostile/gorilla
+ mob_type_blacklist_typecache = list()
+
+/datum/emote/sound/gorilla/ooga
+ key = "ooga"
+ key_third_person = "oogas"
+ message = "oogas."
+ message_param = "oogas at %t."
+ sound = "sound/creatures/gorilla.ogg"
+
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 424495a8d0..8cee0cc6c7 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -386,14 +386,14 @@
else
..()
-/mob/living/simple_animal/update_canmove()
+/mob/living/simple_animal/update_canmove(value_otherwise = TRUE)
if(IsUnconscious() || IsStun() || IsKnockdown() || stat || resting)
drop_all_held_items()
- canmove = 0
+ canmove = FALSE
else if(buckled)
- canmove = 0
+ canmove = FALSE
else
- canmove = 1
+ canmove = value_otherwise
update_transform()
update_action_buttons_icon()
return canmove
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index e421b84853..9c03a414b3 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -495,6 +495,30 @@
. = new_corgi
qdel(src)
+/mob/living/carbon/proc/gorillize()
+ if(notransform)
+ return
+
+ var/Itemlist = get_equipped_items()
+ Itemlist += held_items
+ for(var/obj/item/W in Itemlist)
+ dropItemToGround(W, TRUE)
+
+ regenerate_icons()
+ notransform = TRUE
+ canmove = FALSE
+ icon = null
+ invisibility = INVISIBILITY_MAXIMUM
+ var/mob/living/simple_animal/hostile/gorilla/new_gorilla = new (get_turf(src))
+ new_gorilla.a_intent = INTENT_HARM
+ if(mind)
+ mind.transfer_to(new_gorilla)
+ else
+ new_gorilla.key = key
+ to_chat(new_gorilla, "You are now a gorilla. Ooga ooga!")
+ . = new_gorilla
+ qdel(src)
+
/mob/living/carbon/human/Animalize()
var/list/mobtypes = typesof(/mob/living/simple_animal)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 7a1c12639f..c0fed04a6b 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -165,7 +165,7 @@
if("animal")
var/path
if(prob(50))
- var/beast = pick("carp","bear","mushroom","statue", "bat", "goat","killertomato", "spiderbase", "spiderhunter", "blobbernaut", "magicarp", "chaosmagicarp", "watcher", "goliath", "headcrab", "morph", "stickman", "stickdog", "lesserdragon")
+ var/beast = pick("carp","bear","mushroom","statue", "bat", "goat","killertomato", "spiderbase", "spiderhunter", "blobbernaut", "magicarp", "chaosmagicarp", "watcher", "goliath", "headcrab", "morph", "stickman", "stickdog", "lesserdragon", "gorilla")
switch(beast)
if("carp")
path = /mob/living/simple_animal/hostile/carp
@@ -205,6 +205,8 @@
path = /mob/living/simple_animal/hostile/stickman/dog
if("lesserdragon")
path = /mob/living/simple_animal/hostile/megafauna/dragon/lesser
+ if("gorilla")
+ path = /mob/living/simple_animal/hostile/gorilla
else
var/animal = pick("parrot","corgi","crab","pug","cat","mouse","chicken","cow","lizard","chick","fox","butterfly","cak")
switch(animal)
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 42226c7d2b..3ed8c153d8 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/icons/mob/gorilla.dmi b/icons/mob/gorilla.dmi
new file mode 100644
index 0000000000..77d03fa606
Binary files /dev/null and b/icons/mob/gorilla.dmi differ
diff --git a/sound/creatures/gorilla.ogg b/sound/creatures/gorilla.ogg
new file mode 100644
index 0000000000..cde0bc1edc
Binary files /dev/null and b/sound/creatures/gorilla.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index 1475d2335c..e661e31241 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -748,24 +748,71 @@
#include "code\game\objects\effects\temporary_visuals\cult.dm"
#include "code\game\objects\effects\temporary_visuals\miscellaneous.dm"
#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm"
+#include "code\game\objects\items\AI_modules.dm"
+#include "code\game\objects\items\airlock_painter.dm"
#include "code\game\objects\items\apc_frame.dm"
#include "code\game\objects\items\blueprints.dm"
#include "code\game\objects\items\body_egg.dm"
#include "code\game\objects\items\bodybag.dm"
#include "code\game\objects\items\candle.dm"
#include "code\game\objects\items\cardboard_cutouts.dm"
+#include "code\game\objects\items\cards_ids.dm"
+#include "code\game\objects\items\charter.dm"
+#include "code\game\objects\items\chrono_eraser.dm"
+#include "code\game\objects\items\cigs_lighters.dm"
+#include "code\game\objects\items\clown_items.dm"
#include "code\game\objects\items\control_wand.dm"
+#include "code\game\objects\items\cosmetics.dm"
+#include "code\game\objects\items\courtroom.dm"
#include "code\game\objects\items\crayons.dm"
+#include "code\game\objects\items\defib.dm"
#include "code\game\objects\items\dehy_carp.dm"
+#include "code\game\objects\items\dice.dm"
+#include "code\game\objects\items\dna_injector.dm"
#include "code\game\objects\items\documents.dm"
#include "code\game\objects\items\eightball.dm"
+#include "code\game\objects\items\extinguisher.dm"
+#include "code\game\objects\items\flamethrower.dm"
+#include "code\game\objects\items\gift.dm"
+#include "code\game\objects\items\handcuffs.dm"
+#include "code\game\objects\items\his_grace.dm"
+#include "code\game\objects\items\holosign_creator.dm"
+#include "code\game\objects\items\holy_weapons.dm"
+#include "code\game\objects\items\inducer.dm"
+#include "code\game\objects\items\kitchen.dm"
#include "code\game\objects\items\latexballoon.dm"
+#include "code\game\objects\items\manuals.dm"
+#include "code\game\objects\items\miscellaneous.dm"
+#include "code\game\objects\items\mop.dm"
+#include "code\game\objects\items\paint.dm"
+#include "code\game\objects\items\paiwire.dm"
+#include "code\game\objects\items\pneumaticCannon.dm"
+#include "code\game\objects\items\powerfist.dm"
+#include "code\game\objects\items\RCD.dm"
+#include "code\game\objects\items\RCL.dm"
#include "code\game\objects\items\religion.dm"
+#include "code\game\objects\items\RPD.dm"
+#include "code\game\objects\items\RSF.dm"
+#include "code\game\objects\items\scrolls.dm"
+#include "code\game\objects\items\sharpener.dm"
+#include "code\game\objects\items\shields.dm"
#include "code\game\objects\items\shooting_range.dm"
+#include "code\game\objects\items\signs.dm"
+#include "code\game\objects\items\singularityhammer.dm"
+#include "code\game\objects\items\stunbaton.dm"
#include "code\game\objects\items\taster.dm"
+#include "code\game\objects\items\teleportation.dm"
+#include "code\game\objects\items\teleprod.dm"
#include "code\game\objects\items\theft_tools.dm"
+#include "code\game\objects\items\tools.dm"
#include "code\game\objects\items\toys.dm"
#include "code\game\objects\items\trash.dm"
+#include "code\game\objects\items\twohanded.dm"
+#include "code\game\objects\items\vending_items.dm"
+#include "code\game\objects\items\weaponry.dm"
+#include "code\game\objects\items\circuitboards\circuitboard.dm"
+#include "code\game\objects\items\circuitboards\computer_circuitboards.dm"
+#include "code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "code\game\objects\items\devices\aicard.dm"
#include "code\game\objects\items\devices\camera_bug.dm"
#include "code\game\objects\items\devices\chameleonproj.dm"
@@ -1792,6 +1839,9 @@
#include "code\modules\mob\living\simple_animal\hostile\wumborian_fugu.dm"
#include "code\modules\mob\living\simple_animal\hostile\bosses\boss.dm"
#include "code\modules\mob\living\simple_animal\hostile\bosses\paperwizard.dm"
+#include "code\modules\mob\living\simple_animal\hostile\gorilla\emotes.dm"
+#include "code\modules\mob\living\simple_animal\hostile\gorilla\gorilla.dm"
+#include "code\modules\mob\living\simple_animal\hostile\gorilla\visuals_icons.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm"
#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm"
diff --git a/tgstation.dme.rej b/tgstation.dme.rej
new file mode 100644
index 0000000000..a2c791bc5b
--- /dev/null
+++ b/tgstation.dme.rej
@@ -0,0 +1,102 @@
+diff a/tgstation.dme b/tgstation.dme (rejected hunks)
+@@ -765,73 +812,6 @@
+ #include "code\game\objects\items\devices\radio\headset.dm"
+ #include "code\game\objects\items\devices\radio\intercom.dm"
+ #include "code\game\objects\items\devices\radio\radio.dm"
+-#include "code\game\objects\items\robot\ai_upgrades.dm"
+-#include "code\game\objects\items\robot\robot_items.dm"
+-#include "code\game\objects\items\robot\robot_parts.dm"
+-#include "code\game\objects\items\robot\robot_upgrades.dm"
+-#include "code\game\objects\items\stacks\bscrystal.dm"
+-#include "code\game\objects\items\stacks\cash.dm"
+-#include "code\game\objects\items\stacks\medical.dm"
+-#include "code\game\objects\items\stacks\rods.dm"
+-#include "code\game\objects\items\stacks\stack.dm"
+-#include "code\game\objects\items\stacks\telecrystal.dm"
+-#include "code\game\objects\items\stacks\wrap.dm"
+-#include "code\game\objects\items\stacks\sheets\glass.dm"
+-#include "code\game\objects\items\stacks\sheets\leather.dm"
+-#include "code\game\objects\items\stacks\sheets\light.dm"
+-#include "code\game\objects\items\stacks\sheets\mineral.dm"
+-#include "code\game\objects\items\stacks\sheets\sheet_types.dm"
+-#include "code\game\objects\items\stacks\sheets\sheets.dm"
+-#include "code\game\objects\items\stacks\tiles\light.dm"
+-#include "code\game\objects\items\stacks\tiles\tile_mineral.dm"
+-#include "code\game\objects\items\stacks\tiles\tile_types.dm"
+-#include "code\game\objects\items\AI_modules.dm"
+-#include "code\game\objects\items\airlock_painter.dm"
+-#include "code\game\objects\items\cards_ids.dm"
+-#include "code\game\objects\items\charter.dm"
+-#include "code\game\objects\items\chrono_eraser.dm"
+-#include "code\game\objects\items\cigs_lighters.dm"
+-#include "code\game\objects\items\clown_items.dm"
+-#include "code\game\objects\items\cosmetics.dm"
+-#include "code\game\objects\items\courtroom.dm"
+-#include "code\game\objects\items\defib.dm"
+-#include "code\game\objects\items\dice.dm"
+-#include "code\game\objects\items\dna_injector.dm"
+-#include "code\game\objects\items\extinguisher.dm"
+-#include "code\game\objects\items\flamethrower.dm"
+-#include "code\game\objects\items\gift.dm"
+-#include "code\game\objects\items\handcuffs.dm"
+-#include "code\game\objects\items\his_grace.dm"
+-#include "code\game\objects\items\holosign_creator.dm"
+-#include "code\game\objects\items\holy_weapons.dm"
+-#include "code\game\objects\items\inducer.dm"
+-#include "code\game\objects\items\kitchen.dm"
+-#include "code\game\objects\items\manuals.dm"
+-#include "code\game\objects\items\miscellaneous.dm"
+-#include "code\game\objects\items\mop.dm"
+-#include "code\game\objects\items\paint.dm"
+-#include "code\game\objects\items\paiwire.dm"
+-#include "code\game\objects\items\pneumaticCannon.dm"
+-#include "code\game\objects\items\powerfist.dm"
+-#include "code\game\objects\items\RCD.dm"
+-#include "code\game\objects\items\RCL.dm"
+-#include "code\game\objects\items\RPD.dm"
+-#include "code\game\objects\items\RSF.dm"
+-#include "code\game\objects\items\scrolls.dm"
+-#include "code\game\objects\items\sharpener.dm"
+-#include "code\game\objects\items\shields.dm"
+-#include "code\game\objects\items\signs.dm"
+-#include "code\game\objects\items\singularityhammer.dm"
+-#include "code\game\objects\items\stunbaton.dm"
+-#include "code\game\objects\items\teleportation.dm"
+-#include "code\game\objects\items\teleprod.dm"
+-#include "code\game\objects\items\tools.dm"
+-#include "code\game\objects\items\twohanded.dm"
+-#include "code\game\objects\items\vending_items.dm"
+-#include "code\game\objects\items\weaponry.dm"
+-#include "code\game\objects\items\circuitboards\circuitboard.dm"
+-#include "code\game\objects\items\circuitboards\computer_circuitboards.dm"
+-#include "code\game\objects\items\circuitboards\machine_circuitboards.dm"
+ #include "code\game\objects\items\grenades\chem_grenade.dm"
+ #include "code\game\objects\items\grenades\clusterbuster.dm"
+ #include "code\game\objects\items\grenades\emgrenade.dm"
+@@ -863,6 +843,26 @@
+ #include "code\game\objects\items\melee\energy.dm"
+ #include "code\game\objects\items\melee\misc.dm"
+ #include "code\game\objects\items\melee\transforming.dm"
++#include "code\game\objects\items\robot\ai_upgrades.dm"
++#include "code\game\objects\items\robot\robot_items.dm"
++#include "code\game\objects\items\robot\robot_parts.dm"
++#include "code\game\objects\items\robot\robot_upgrades.dm"
++#include "code\game\objects\items\stacks\bscrystal.dm"
++#include "code\game\objects\items\stacks\cash.dm"
++#include "code\game\objects\items\stacks\medical.dm"
++#include "code\game\objects\items\stacks\rods.dm"
++#include "code\game\objects\items\stacks\stack.dm"
++#include "code\game\objects\items\stacks\telecrystal.dm"
++#include "code\game\objects\items\stacks\wrap.dm"
++#include "code\game\objects\items\stacks\sheets\glass.dm"
++#include "code\game\objects\items\stacks\sheets\leather.dm"
++#include "code\game\objects\items\stacks\sheets\light.dm"
++#include "code\game\objects\items\stacks\sheets\mineral.dm"
++#include "code\game\objects\items\stacks\sheets\sheet_types.dm"
++#include "code\game\objects\items\stacks\sheets\sheets.dm"
++#include "code\game\objects\items\stacks\tiles\light.dm"
++#include "code\game\objects\items\stacks\tiles\tile_mineral.dm"
++#include "code\game\objects\items\stacks\tiles\tile_types.dm"
+ #include "code\game\objects\items\storage\backpack.dm"
+ #include "code\game\objects\items\storage\bags.dm"
+ #include "code\game\objects\items\storage\belt.dm"