diff --git a/code/__DEFINES/~nova_defines/colony_fabricator_misc.dm b/code/__DEFINES/~nova_defines/colony_fabricator_misc.dm
index 1b358da8b11..0ebd9a14240 100644
--- a/code/__DEFINES/~nova_defines/colony_fabricator_misc.dm
+++ b/code/__DEFINES/~nova_defines/colony_fabricator_misc.dm
@@ -35,4 +35,6 @@ GLOBAL_LIST_INIT(colonist_suit_allowed, list(
/obj/item/resonator,
/obj/item/t_scanner,
/obj/item/analyzer,
+ /obj/item/storage/medkit,
+ /obj/item/fireaxe/metal_h2_axe,
))
diff --git a/code/__DEFINES/~nova_defines/manufacturer_strings.dm b/code/__DEFINES/~nova_defines/manufacturer_strings.dm
index 3e9baa97952..b9cdddc78b0 100644
--- a/code/__DEFINES/~nova_defines/manufacturer_strings.dm
+++ b/code/__DEFINES/~nova_defines/manufacturer_strings.dm
@@ -22,5 +22,6 @@
#define COMPANY_ABDUCTOR "It has [span_abductor("✌︎︎♌︎︎♎︎︎◆︎︎♍︎︎⧫︎︎❄︎♏︎♍︎♒︎")] engraved into it."
#define COMPANY_FRONTIER "It has a small label with [span_engradio("Akhter Company Frontier Equipment")] printed on it, alongside various xerxian proof-marks."
+#define COMPANY_KAHRAMAN "It has a [span_red("red label")] with [span_red("K - A - S")] printed on it, alongside various xerxian proof-marks."
#define COMPANY_REMOVED "It has had [span_grey("all identifying marks scrubbed off")]."
diff --git a/modular_nova/master_files/icons/mob/clothing/modsuit/mod_clothing_mutant.dmi b/modular_nova/master_files/icons/mob/clothing/modsuit/mod_clothing_mutant.dmi
index 79f9697d849..368d63d14bc 100644
Binary files a/modular_nova/master_files/icons/mob/clothing/modsuit/mod_clothing_mutant.dmi and b/modular_nova/master_files/icons/mob/clothing/modsuit/mod_clothing_mutant.dmi differ
diff --git a/modular_nova/modules/company_imports/code/armament_datums/kahraman_industries.dm b/modular_nova/modules/company_imports/code/armament_datums/kahraman_industries.dm
index f15da1c1750..b392ab14c2c 100644
--- a/modular_nova/modules/company_imports/code/armament_datums/kahraman_industries.dm
+++ b/modular_nova/modules/company_imports/code/armament_datums/kahraman_industries.dm
@@ -2,110 +2,108 @@
category = KAHRAMAN_INDUSTRIES_NAME
company_bitflag = CARGO_COMPANY_KAHRAMAN
-// Mining PPE, SEVAs and hardhats, have you passed your OSHA inspection today?
-
-/datum/armament_entry/company_import/kahraman/ppe
- subcategory = "FOHSA Certified Protective Equipment"
-
-/datum/armament_entry/company_import/kahraman/ppe/weldhat
- item_type = /obj/item/clothing/head/utility/hardhat/welding/orange
- cost = PAYCHECK_CREW * 1.5
-
-/datum/armament_entry/company_import/kahraman/ppe/gasmask
- item_type = /obj/item/clothing/mask/gas/alt
+/// Kahraman-made machines
+/datum/armament_entry/company_import/kahraman/machinery
+ subcategory = "Machinery"
+
+/datum/armament_entry/company_import/kahraman/machinery/biogenerator
+ item_type = /obj/item/flatpacked_machine/organics_printer
+ description = "An advanced machine seen in frontier outposts and colonies capable of turning organic plant matter into \
+ reagents and items of use that a fabricator can't typically make."
+ cost = CARGO_CRATE_VALUE * 3
+
+/datum/armament_entry/company_import/kahraman/machinery/ore_thumper
+ item_type = /obj/item/flatpacked_machine/ore_thumper
+ description = "A frame with a heavy block of metal suspended atop a pipe. \
+ Must be deployed outdoors and given a wired power connection. \
+ Forces pressurized gas into the ground which brings up buried resources."
+ cost = CARGO_CRATE_VALUE * 5
+
+/datum/armament_entry/company_import/kahraman/machinery/gps_beacon
+ item_type = /obj/item/flatpacked_machine/gps_beacon
+ description = "A packed GPS beacon, can be deployed and anchored into the ground to \
+ provide and unobstructed homing beacon for wayward travelers across the galaxy."
cost = PAYCHECK_LOWER
-/datum/armament_entry/company_import/kahraman/ppe/hazard_vest
- item_type = /obj/item/clothing/suit/hazardvest
- cost = PAYCHECK_CREW
-
-/datum/armament_entry/company_import/kahraman/ppe/seva_mask
- item_type = /obj/item/clothing/mask/gas/seva
- cost = PAYCHECK_CREW * 1.5
+// Occupational health and safety? Never heard of her.
-/datum/armament_entry/company_import/kahraman/ppe/seva_suit
- item_type = /obj/item/clothing/suit/hooded/seva
- cost = PAYCHECK_COMMAND * 2
+/datum/armament_entry/company_import/kahraman/ppe
+ subcategory = "Protective Equipment"
-/datum/armament_entry/company_import/kahraman/ppe/sensors_cuffs
- item_type = /obj/item/kheiral_cuffs
- cost = PAYCHECK_COMMAND * 5
+/datum/armament_entry/company_import/kahraman/ppe/hazard_mod
+ item_type = /obj/item/mod/control/pre_equipped/frontier_colonist
+ cost = PAYCHECK_COMMAND * 6.5
-// Hand held mining equipment
+/datum/armament_entry/company_import/kahraman/ppe/gas_mask
+ item_type = /obj/item/clothing/mask/gas/atmos/frontier_colonist
+ cost = PAYCHECK_COMMAND
-/datum/armament_entry/company_import/kahraman/mining_tool
- subcategory = "Powered Mining Equipment"
+/datum/armament_entry/company_import/kahraman/ppe/headset
+ item_type = /obj/item/radio/headset/headset_frontier_colonist
+ cost = PAYCHECK_COMMAND * 1.5
-/datum/armament_entry/company_import/kahraman/mining_tool/drill
- item_type = /obj/item/pickaxe/drill
+/datum/armament_entry/company_import/kahraman/ppe/flak_vest
+ item_type = /obj/item/clothing/suit/frontier_colonist_flak
cost = PAYCHECK_COMMAND
-/datum/armament_entry/company_import/kahraman/mining_tool/resonator
- item_type = /obj/item/resonator
+/datum/armament_entry/company_import/kahraman/ppe/tanker_helmet
+ item_type = /obj/item/clothing/head/frontier_colonist_helmet
cost = PAYCHECK_COMMAND
-/datum/armament_entry/company_import/kahraman/mining_tool/pka
- item_type = /obj/item/gun/energy/recharge/kinetic_accelerator
- cost = PAYCHECK_COMMAND
+// Work clothing
-/datum/armament_entry/company_import/kahraman/mining_tool/cutter
- item_type = /obj/item/gun/energy/plasmacutter
- cost = PAYCHECK_COMMAND
+/datum/armament_entry/company_import/kahraman/work_clothing
+ subcategory = "Clothing"
-/datum/armament_entry/company_import/kahraman/mining_tool/diamond_drill
- item_type = /obj/item/pickaxe/drill/diamonddrill
- cost = PAYCHECK_COMMAND * 2
+/datum/armament_entry/company_import/kahraman/work_clothing/jumpsuit
+ item_type = /obj/item/clothing/under/frontier_colonist
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/mining_tool/advanced_cutter
- item_type = /obj/item/gun/energy/plasmacutter/adv
- cost = PAYCHECK_COMMAND * 4
+/datum/armament_entry/company_import/kahraman/work_clothing/jacket
+ item_type = /obj/item/clothing/suit/jacket/frontier_colonist
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/mining_tool/super_resonator
- item_type = /obj/item/resonator/upgraded
- cost = PAYCHECK_COMMAND * 4
+/datum/armament_entry/company_import/kahraman/work_clothing/jacket_short
+ item_type = /obj/item/clothing/suit/jacket/frontier_colonist/short
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/mining_tool/jackhammer
- item_type = /obj/item/pickaxe/drill/jackhammer
- cost = PAYCHECK_COMMAND * 3
+/datum/armament_entry/company_import/kahraman/work_clothing/med_jacket
+ item_type = /obj/item/clothing/suit/jacket/frontier_colonist/medical
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/sensing
- subcategory = "Sensing Equipment"
+/datum/armament_entry/company_import/kahraman/work_clothing/ballcap
+ item_type = /obj/item/clothing/head/soft/frontier_colonist
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/sensing/mesons
- item_type = /obj/item/clothing/glasses/meson
+/datum/armament_entry/company_import/kahraman/work_clothing/med_ballcap
+ item_type = /obj/item/clothing/head/soft/frontier_colonist/medic
cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/sensing/autoscanner
- item_type = /obj/item/t_scanner/adv_mining_scanner/lesser
- cost = PAYCHECK_LOWER
+/datum/armament_entry/company_import/kahraman/work_clothing/booties
+ item_type = /obj/item/clothing/shoes/jackboots/frontier_colonist
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/sensing/super_autoscanner
- item_type = /obj/item/t_scanner/adv_mining_scanner
- cost = PAYCHECK_COMMAND * 3
+/datum/armament_entry/company_import/kahraman/work_clothing/gloves
+ item_type = /obj/item/clothing/gloves/frontier_colonist
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/sensing/nvg_mesons
- item_type = /obj/item/clothing/glasses/meson/night
- cost = PAYCHECK_COMMAND * 3
+// "Equipment", so storage items and whatnot
-/datum/armament_entry/company_import/kahraman/mecha_tools
- subcategory = "Heavy Powered Mining Equipment"
+/datum/armament_entry/company_import/kahraman/storage_equipment
+ subcategory = "Personal Equipment"
-/datum/armament_entry/company_import/kahraman/mecha_tools/scanner
- item_type = /obj/item/mecha_parts/mecha_equipment/mining_scanner
+/datum/armament_entry/company_import/kahraman/storage_equipment/backpack
+ item_type = /obj/item/storage/backpack/industrial/frontier_colonist
cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/mecha_tools/drill
- item_type = /obj/item/mecha_parts/mecha_equipment/drill
+/datum/armament_entry/company_import/kahraman/storage_equipment/satchel
+ item_type = /obj/item/storage/backpack/industrial/frontier_colonist/satchel
cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/mecha_tools/pka
- item_type = /obj/item/mecha_parts/mecha_equipment/weapon/energy/mecha_kineticgun
- cost = PAYCHECK_CREW * 3
-
-/datum/armament_entry/company_import/kahraman/mecha_tools/diamond_drill
- item_type = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
- cost = PAYCHECK_CREW * 3
+/datum/armament_entry/company_import/kahraman/storage_equipment/messenger
+ item_type = /obj/item/storage/backpack/industrial/frontier_colonist/messenger
+ cost = PAYCHECK_CREW
-/datum/armament_entry/company_import/kahraman/mecha_tools/cutter
- item_type = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
- cost = PAYCHECK_CREW * 3
+/datum/armament_entry/company_import/kahraman/storage_equipment/belt
+ item_type = /obj/item/storage/belt/utility/frontier_colonist
+ cost = PAYCHECK_CREW
diff --git a/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm b/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm
new file mode 100644
index 00000000000..aa887a848c3
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/clothing/armor_datums.dm
@@ -0,0 +1,30 @@
+/datum/armor/colonist_clothing
+ laser = ARMOR_LEVEL_TINY
+ energy = ARMOR_LEVEL_TINY
+ bomb = ARMOR_LEVEL_TINY
+ bio = ARMOR_LEVEL_TINY
+ fire = ARMOR_LEVEL_WEAK
+ acid = ARMOR_LEVEL_TINY
+ wound = WOUND_ARMOR_WEAK
+
+/datum/armor/colonist_armor
+ melee = ARMOR_LEVEL_WEAK
+ bullet = ARMOR_LEVEL_WEAK
+ laser = ARMOR_LEVEL_TINY
+ energy = ARMOR_LEVEL_TINY
+ bomb = ARMOR_LEVEL_TINY
+ bio = ARMOR_LEVEL_TINY
+ fire = ARMOR_LEVEL_WEAK
+ acid = ARMOR_LEVEL_TINY
+ wound = WOUND_ARMOR_STANDARD
+
+/datum/armor/colonist_hazard
+ melee = ARMOR_LEVEL_TINY
+ bullet = ARMOR_LEVEL_TINY
+ laser = ARMOR_LEVEL_WEAK
+ energy = ARMOR_LEVEL_WEAK
+ bomb = ARMOR_LEVEL_MID
+ bio = 100
+ fire = 100
+ acid = ARMOR_LEVEL_MID
+ wound = WOUND_ARMOR_WEAK
diff --git a/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm b/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm
new file mode 100644
index 00000000000..45649885402
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/clothing/clothing.dm
@@ -0,0 +1,214 @@
+// Jumpsuit
+
+/obj/item/clothing/under/frontier_colonist
+ name = "frontier jumpsuit"
+ desc = "A heavy grey jumpsuit with extra padding around the joints. Two massive pockets included. \
+ No matter what you do to adjust it, its always just slightly too large."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "jumpsuit"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ worn_icon_digi = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi'
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "jumpsuit"
+ has_sensor = SENSOR_COORDS
+ random_sensor = FALSE
+
+/obj/item/clothing/under/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Boots
+
+/obj/item/clothing/shoes/jackboots/frontier_colonist
+ name = "heavy frontier boots"
+ desc = "A well built pair of tall boots usually seen on the feet of explorers, first wave colonists, \
+ and LARPers across the galaxy."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "boots"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ worn_icon_digi = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi'
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "boots"
+ armor_type = /datum/armor/colonist_clothing
+ resistance_flags = NONE
+
+/obj/item/clothing/shoes/jackboots/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Jackets
+
+/obj/item/clothing/suit/jacket/frontier_colonist
+ name = "frontier trenchcoat"
+ desc = "A knee length coat with a water-resistant exterior and relatively comfortable interior. \
+ In between? Just enough protective material to stop the odd sharp thing getting through, \
+ though don't expect miracles."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "jacket"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "jacket"
+ slot_flags = ITEM_SLOT_OCLOTHING|ITEM_SLOT_NECK
+ armor_type = /datum/armor/colonist_clothing
+ resistance_flags = NONE
+ allowed = null
+
+/obj/item/clothing/suit/jacket/frontier_colonist/Initialize(mapload)
+ . = ..()
+ allowed += GLOB.colonist_suit_allowed
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+/obj/item/clothing/suit/jacket/frontier_colonist/short
+ name = "frontier jacket"
+ desc = "A short coat with a water-resistant exterior and relatively comfortable interior. \
+ In between? Just enough protective material to stop the odd sharp thing getting through, \
+ though don't expect miracles."
+ icon_state = "jacket_short"
+ worn_icon_state = "jacket_short"
+
+/obj/item/clothing/suit/jacket/frontier_colonist/medical
+ name = "frontier medical jacket"
+ desc = "A short coat with a water-resistant exterior and relatively comfortable interior. \
+ In between? Just enough protective material to stop the odd sharp thing getting through, \
+ though don't expect miracles. This one is colored a bright red and covered in white \
+ stripes to denote that someone wearing it might be able to provide medical assistance."
+ icon_state = "jacket_med"
+ worn_icon_state = "jacket_med"
+
+// Flak Jacket
+
+/obj/item/clothing/suit/frontier_colonist_flak
+ name = "frontier flak jacket"
+ desc = "A simple flak jacket with an exterior of water-resistant material. \
+ Jackets like these are often found on first wave colonists that want some armor \
+ due to the fact they can be made easily within a colony core type machine."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "flak"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "flak"
+ body_parts_covered = CHEST
+ cold_protection = CHEST|GROIN
+ min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
+ heat_protection = CHEST|GROIN
+ max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
+ armor_type = /datum/armor/colonist_armor
+ resistance_flags = NONE
+ allowed = null
+
+/obj/item/clothing/suit/frontier_colonist_flak/Initialize(mapload)
+ . = ..()
+ allowed += GLOB.colonist_suit_allowed
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Various softcaps
+
+/obj/item/clothing/head/soft/frontier_colonist
+ name = "frontier cap"
+ desc = "It's a robust baseball hat in a rugged green color."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "cap"
+ soft_type = "cap"
+ soft_suffix = null
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "cap"
+
+/obj/item/clothing/head/soft/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+/obj/item/clothing/head/soft/frontier_colonist/medic
+ name = "frontier medical cap"
+ desc = "It's a robust baseball hat in a stylish red color. Has a white diamond to denote that its wearer might be able to provide medical assistance."
+ icon_state = "cap_medical"
+ soft_type = "cap_medical"
+ worn_icon_state = "cap_medical"
+
+// Helmet (Is it a helmet? Questionable? I'm not sure what to call this thing)
+
+/obj/item/clothing/head/frontier_colonist_helmet
+ name = "frontier soft helmet"
+ desc = "A unusual piece of headwear somewhere between a proper helmet and a normal cap."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "tanker"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "tanker"
+ armor_type = /datum/armor/colonist_armor
+ resistance_flags = NONE
+ flags_inv = 0
+ clothing_flags = SNUG_FIT | STACKABLE_HELMET_EXEMPT
+
+/obj/item/clothing/head/frontier_colonist_helmet/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Headset
+
+/obj/item/radio/headset/headset_frontier_colonist
+ name = "frontier radio headset"
+ desc = "A bulky headset that should hopefully survive exposure to the elements better than station headsets might. \
+ Has a built-in antenna allowing the headset to work independently of a communications network."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "radio"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_SNOUTED_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "radio"
+ alternate_worn_layer = FACEMASK_LAYER + 0.5
+ subspace_transmission = FALSE
+ radiosound = 'modular_nova/modules/kahraman_equipment/sound/morse_signal.wav'
+
+/obj/item/radio/headset/headset_frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Gloves
+
+/obj/item/clothing/gloves/frontier_colonist
+ name = "frontier gloves"
+ desc = "A sturdy pair of black gloves that'll keep your precious fingers protected from the outside world. \
+ They go a bit higher up the arm than most gloves should, and you aren't quite sure why."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "gloves"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "gloves"
+ greyscale_colors = "#3a373e"
+ siemens_coefficient = 0.25 // Doesn't insulate you entirely, but makes you a little more resistant
+ cold_protection = HANDS
+ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
+ heat_protection = HANDS
+ max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
+ resistance_flags = NONE
+ clothing_traits = list(TRAIT_QUICK_CARRY)
+
+/obj/item/clothing/gloves/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Special mask
+
+/obj/item/clothing/mask/gas/atmos/frontier_colonist
+ name = "frontier gas mask"
+ desc = "An improved gas mask commonly seen in places where the atmosphere is less than breathable, \
+ but otherwise more or less habitable. Its certified to protect against most biological hazards \
+ to boot."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "mask"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ worn_icon_digi = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi'
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "mask"
+ flags_inv = HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
+ armor_type = /datum/armor/colonist_hazard
+
+/obj/item/clothing/mask/gas/atmos/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
diff --git a/modular_nova/modules/kahraman_equipment/code/clothing/mod.dm b/modular_nova/modules/kahraman_equipment/code/clothing/mod.dm
new file mode 100644
index 00000000000..f3ef68e8f66
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/clothing/mod.dm
@@ -0,0 +1,105 @@
+// Its modsuiting time
+
+/datum/mod_theme/frontier_colonist
+ name = "frontier hazard protective"
+ desc = "An unusual design of suit, in reality being no more than a slim underlayer with a built in coat and sealed helmet."
+ extended_desc = "The pinnacle of frontier cheap technology. Suits like this are usually not unified in design \
+ though are common in frontier settlements with less than optimal infrastructure. As with most unofficial \
+ designs, there are flaws and no single one is perfect, but they achieve a singular goal and that is the \
+ important part. Suits such as these are made specifically for the rare emergency that creates a hazard \
+ environment that other equipment just can't quite handle. Often, these suits are able to protect their users \
+ from not only electricity, but also radiation, biological hazards, other people, so on. This suit will not, \
+ however, protect you from yourself."
+
+ default_skin = "colonist"
+ armor_type = /datum/armor/colonist_hazard
+ resistance_flags = FIRE_PROOF
+ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
+ siemens_coefficient = 0
+ complexity_max = DEFAULT_MAX_COMPLEXITY - 7
+ charge_drain = DEFAULT_CHARGE_DRAIN * 2
+ slowdown_inactive = 1.5
+ slowdown_active = 1
+ inbuilt_modules = list(
+ /obj/item/mod/module/plate_compression/permanent,
+ /obj/item/mod/module/joint_torsion/permanent
+ )
+ allowed_suit_storage = list(
+ /obj/item/ammo_box,
+ /obj/item/ammo_casing,
+ /obj/item/flashlight,
+ /obj/item/gun,
+ /obj/item/melee,
+ /obj/item/tank/internals,
+ /obj/item/storage/belt/holster,
+ /obj/item/construction,
+ /obj/item/fireaxe,
+ /obj/item/pipe_dispenser,
+ /obj/item/storage/bag,
+ /obj/item/pickaxe,
+ /obj/item/resonator,
+ /obj/item/t_scanner,
+ /obj/item/analyzer,
+ /obj/item/storage/medkit,
+ )
+ skins = list(
+ "colonist" = list(
+ MOD_ICON_OVERRIDE = 'modular_nova/modules/kahraman_equipment/icons/modsuits/mod.dmi',
+ MOD_WORN_ICON_OVERRIDE = 'modular_nova/modules/kahraman_equipment/icons/modsuits/mod_worn.dmi',
+ HELMET_FLAGS = list(
+ UNSEALED_LAYER = null,
+ UNSEALED_CLOTHING = SNUG_FIT|THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ UNSEALED_INVISIBILITY = HIDEFACIALHAIR|HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT,
+ UNSEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF,
+ ),
+ CHESTPLATE_FLAGS = list(
+ UNSEALED_CLOTHING = THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ SEALED_INVISIBILITY = HIDEJUMPSUIT,
+ ),
+ GAUNTLETS_FLAGS = list(
+ UNSEALED_CLOTHING = THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ CAN_OVERSLOT = TRUE,
+ ),
+ BOOTS_FLAGS = list(
+ UNSEALED_CLOTHING = THICKMATERIAL,
+ SEALED_CLOTHING = STOPSPRESSUREDAMAGE,
+ CAN_OVERSLOT = TRUE,
+ ),
+ ),
+ )
+
+/obj/item/mod/control/pre_equipped/frontier_colonist
+ theme = /datum/mod_theme/frontier_colonist
+ applied_cell = /obj/item/stock_parts/cell/high
+ applied_modules = list(
+ /obj/item/mod/module/welding,
+ /obj/item/mod/module/magboot,
+ /obj/item/mod/module/flashlight,
+ /obj/item/mod/module/status_readout,
+ /obj/item/mod/module/thermal_regulator,
+ /obj/item/mod/module/rad_protection,
+ )
+ default_pins = list(
+ /obj/item/mod/module/magboot,
+ /obj/item/mod/module/flashlight,
+ /obj/item/mod/module/thermal_regulator,
+ )
+
+/obj/item/mod/control/pre_equipped/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+// Plate compression module that cannot be removed
+
+/obj/item/mod/module/plate_compression/permanent
+ removable = FALSE
+ complexity = 0
+
+// Joint torsion module that can't be removed and has no complexity
+
+/obj/item/mod/module/joint_torsion/permanent
+ removable = FALSE
+ complexity = 0
diff --git a/modular_nova/modules/kahraman_equipment/code/clothing/storage.dm b/modular_nova/modules/kahraman_equipment/code/clothing/storage.dm
new file mode 100644
index 00000000000..3bd57a9fa94
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/clothing/storage.dm
@@ -0,0 +1,88 @@
+// Backpacks
+
+/obj/item/storage/backpack/industrial/frontier_colonist
+ name = "frontier backpack"
+ desc = "A rugged backpack often used by settlers and explorers. Holds all of your equipment and then some."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "backpack"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "backpack"
+ inhand_icon_state = "backpack"
+
+/obj/item/storage/backpack/industrial/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+/obj/item/storage/backpack/industrial/frontier_colonist/satchel
+ name = "frontier satchel"
+ desc = "A rugged satchel often used by settlers and explorers. Holds less of your equipment than a backpack will."
+ icon_state = "satchel"
+ worn_icon_state = "satchel"
+
+/obj/item/storage/backpack/industrial/frontier_colonist/messenger
+ name = "frontier messenger bag"
+ desc = "A rugged messenger bag often used by settlers and explorers. Holds less of your equipment than a backpack will."
+ icon_state = "messenger"
+ worn_icon_state = "messenger"
+
+// Belts
+
+/obj/item/storage/belt/utility/frontier_colonist
+ name = "frontier chest rig"
+ desc = "A versatile chest rig with pockets to store really whatever you could think of within. \
+ That is, if whatever you could think of is within the realms of a utility belt. Fashion like this \
+ comes at a price you know!"
+ icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi'
+ icon_state = "harness"
+ worn_icon = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi'
+ supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
+ worn_icon_teshari = 'modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi'
+ worn_icon_state = "harness"
+ inhand_icon_state = null
+
+/obj/item/storage/belt/utility/frontier_colonist/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+ atom_storage.max_slots = 6
+ atom_storage.max_specific_storage = WEIGHT_CLASS_NORMAL
+ // Can hold whatever a toolbelt can + some mining equipment for convenience
+ atom_storage.set_holdable(list(
+ /obj/item/airlock_painter,
+ /obj/item/analyzer,
+ /obj/item/assembly/signaler,
+ /obj/item/clothing/gloves,
+ /obj/item/construction,
+ /obj/item/crowbar,
+ /obj/item/extinguisher/mini,
+ /obj/item/flashlight,
+ /obj/item/forcefield_projector,
+ /obj/item/geiger_counter,
+ /obj/item/holosign_creator,
+ /obj/item/inducer,
+ /obj/item/lightreplacer,
+ /obj/item/multitool,
+ /obj/item/pipe_dispenser,
+ /obj/item/pipe_painter,
+ /obj/item/plunger,
+ /obj/item/radio,
+ /obj/item/screwdriver,
+ /obj/item/stack/cable_coil,
+ /obj/item/t_scanner,
+ /obj/item/weldingtool,
+ /obj/item/wirecutters,
+ /obj/item/wrench,
+ /obj/item/spess_knife,
+ /obj/item/gps,
+ /obj/item/knife,
+ /obj/item/mining_scanner,
+ /obj/item/pickaxe,
+ /obj/item/reagent_containers/hypospray,
+ /obj/item/shovel,
+ /obj/item/survivalcapsule,
+ /obj/item/storage/bag/ore,
+ /obj/item/storage/fancy/cigarettes,
+ /obj/item/wormhole_jaunter,
+ /obj/item/resonator,
+ ))
diff --git a/modular_nova/modules/kahraman_equipment/code/gps_beacon.dm b/modular_nova/modules/kahraman_equipment/code/gps_beacon.dm
new file mode 100644
index 00000000000..dc7411a3e17
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/gps_beacon.dm
@@ -0,0 +1,23 @@
+/obj/item/gps/computer/beacon
+ name = "\improper GPS beacon"
+ desc = "A GPS beacon, anchored to the ground to prevent loss or accidental movement."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/gps_beacon.dmi'
+ icon_state = "gps_beacon"
+ pixel_y = 0
+ /// What this is undeployed back into
+ var/undeploy_type = /obj/item/flatpacked_machine/gps_beacon
+
+/obj/item/gps/computer/beacon/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/repackable, undeploy_type, 2 SECONDS)
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+/obj/item/flatpacked_machine/gps_beacon
+ name = "packed GPS beacon"
+ icon = 'modular_nova/modules/kahraman_equipment/icons/gps_beacon.dmi'
+ icon_state = "beacon_folded"
+ w_class = WEIGHT_CLASS_SMALL
+ type_to_deploy = /obj/item/gps/computer/beacon
+
+/obj/item/flatpacked_machine/gps_beacon/give_manufacturer_examine()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
diff --git a/modular_nova/modules/kahraman_equipment/code/looping_sounds.dm b/modular_nova/modules/kahraman_equipment/code/looping_sounds.dm
new file mode 100644
index 00000000000..b7edf20ccb5
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/looping_sounds.dm
@@ -0,0 +1,13 @@
+/datum/looping_sound/ore_thumper_fan
+ start_sound = 'modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_start.wav'
+ start_length = 3
+ mid_sounds = list(
+ 'modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_1.wav' = 1,
+ 'modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_2.wav' = 1,
+ 'modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_3.wav' = 1,
+ 'modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_4.wav' = 1,
+ )
+ mid_length = 3 SECONDS
+ end_sound = 'modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_end.wav'
+ volume = 100
+ falloff_exponent = 3
diff --git a/modular_nova/modules/kahraman_equipment/code/ore_thumper.dm b/modular_nova/modules/kahraman_equipment/code/ore_thumper.dm
new file mode 100644
index 00000000000..6f67a760deb
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/ore_thumper.dm
@@ -0,0 +1,271 @@
+#define SLAM_JAM_DELAY 15 SECONDS
+
+/obj/machinery/power/colony_ore_thumper
+ name = "ore thumper"
+ desc = "A frame with a heavy block of metal suspended atop a pipe. \
+ Must be deployed outdoors and given a wired power connection. \
+ Forces pressurized gas into the ground which brings up buried resources."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/ore_thumper.dmi'
+ icon_state = "thumper_idle"
+ density = TRUE
+ max_integrity = 250
+ idle_power_usage = 0
+ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 25 // Should be 25 kw or half of a SOFIE generator
+ anchored = TRUE
+ can_change_cable_layer = FALSE
+ circuit = null
+ layer = ABOVE_MOB_LAYER
+ /// Are we currently working?
+ var/thumping = FALSE
+ /// Our looping fan sound that we play when turned on
+ var/datum/looping_sound/ore_thumper_fan/soundloop
+ /// How many times we've slammed, counts up until the number is high enough to make a box of materials
+ var/slam_jams = 0
+ /// How many times we need to slam in order to produce a box of materials
+ var/slam_jams_needed = 15
+ /// List of the thumping sounds we can choose from
+ var/static/list/list_of_thumper_sounds = list(
+ 'modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_1.wav',
+ 'modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_2.wav',
+ )
+ /// Keeps track of the callback timer to make sure we don't have more than one
+ var/callback_tracker
+ /// Weighted list of the ores we can spawn
+ var/static/list/ore_weight_list = list(
+ /obj/item/stack/ore/iron = 5,
+ /obj/item/stack/ore/glass/basalt = 5,
+ /obj/item/stack/ore/plasma = 4,
+ /obj/item/stack/ore/uranium = 3,
+ /obj/item/stack/ore/silver = 3,
+ /obj/item/stack/ore/gold = 3,
+ /obj/item/stack/ore/titanium = 3,
+ /obj/item/stack/ore/diamond = 2,
+ /obj/item/stack/ore/bluespace_crystal = 1,
+ )
+ /// How much of the listed types of ores should we spawn when spawning ore
+ var/static/list/ore_spawn_values = list(
+ /obj/item/stack/ore/iron = 25,
+ /obj/item/stack/ore/glass/basalt = 25,
+ /obj/item/stack/ore/plasma = 15,
+ /obj/item/stack/ore/uranium = 10,
+ /obj/item/stack/ore/silver = 10,
+ /obj/item/stack/ore/gold = 10,
+ /obj/item/stack/ore/titanium = 10,
+ /obj/item/stack/ore/diamond = 5,
+ /obj/item/stack/ore/bluespace_crystal = 1,
+ )
+ /// What's the limit for ore near us? Counts by stacks, not individual amounts of ore
+ var/nearby_ore_limit = 10
+ /// How far away does ore spawn?
+ var/ore_spawn_range = 2
+ /// What do we undeploy into
+ var/undeploy_type = /obj/item/flatpacked_machine/ore_thumper
+
+/obj/machinery/power/colony_ore_thumper/Initialize(mapload)
+ . = ..()
+ soundloop = new(src, FALSE)
+ AddElement(/datum/element/repackable, undeploy_type, 4 SECONDS)
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+/obj/machinery/power/colony_ore_thumper/add_context(
+ atom/source,
+ list/context,
+ obj/item/held_item,
+ mob/living/user,
+)
+
+ if(isnull(held_item))
+ if(panel_open)
+ context[SCREENTIP_CONTEXT_LMB] = "Activate Thumper"
+ return CONTEXTUAL_SCREENTIP_SET
+ return NONE
+
+
+/obj/machinery/power/colony_ore_thumper/examine(mob/user)
+ . = ..()
+ var/area/thumper_area = get_area(src)
+ if(!thumper_area.outdoors)
+ . += span_notice("Its must be constructed outdoors to function.")
+ if(!istype(get_turf(src), /turf/open/misc))
+ . += span_notice("It must be constructed on suitable terrain, like ash, snow, or sand.")
+ . += span_notice("It must have a powered, wired connection running beneath it with 25 kW of excess power to function.")
+ . += span_notice("It will produce a box of materials after it has slammed [slam_jams_needed] times.")
+ . += span_notice("Currently, it has slammed [slam_jams] / [slam_jams_needed] times needed.")
+ . += span_notice("It will stop producing resources if there are too many piles of ore near it.")
+
+
+/obj/machinery/power/colony_ore_thumper/process()
+ var/turf/our_turf = get_turf(src)
+ var/obj/structure/cable/cable_under_us = locate() in our_turf
+ if(!cable_under_us && powernet)
+ disconnect_from_network()
+ else if(cable_under_us && !powernet)
+ connect_to_network()
+ if(thumping)
+ if(!see_if_we_can_work(our_turf))
+ balloon_alert_to_viewers("invalid location!")
+ cut_that_out()
+ return
+ if(avail(active_power_usage))
+ add_load(active_power_usage)
+ else
+ balloon_alert_to_viewers("not enough power!")
+ cut_that_out()
+ else if(avail(idle_power_usage))
+ add_load(idle_power_usage)
+
+
+/// Checks the turf we are on to make sure we are outdoors and on a misc turf
+/obj/machinery/power/colony_ore_thumper/proc/see_if_we_can_work(turf/our_turf)
+ var/area/our_current_area = get_area(src)
+ if(!our_current_area.outdoors)
+ return FALSE
+ if(!istype(get_turf(src), /turf/open/misc))
+ return FALSE
+ return TRUE
+
+
+/obj/machinery/power/colony_ore_thumper/attack_hand(mob/user, list/modifiers)
+ . = ..()
+ if(.)
+ return
+
+ to_chat(user, span_notice("You toggle [src]'s power button."))
+
+ if(thumping)
+ cut_that_out(user)
+ return
+ start_her_up(user)
+
+
+/obj/machinery/power/colony_ore_thumper/attack_ai(mob/user)
+ return attack_hand(user)
+
+
+/obj/machinery/power/colony_ore_thumper/attack_robot(mob/user)
+ return attack_hand(user)
+
+
+/// Attempts turning the thumper on, failing if any of the conditions aren't met
+/obj/machinery/power/colony_ore_thumper/proc/start_her_up(mob/user)
+ var/turf/our_turf = get_turf(src)
+ var/obj/structure/cable/cable_under_us = locate() in our_turf
+ if(!cable_under_us && powernet)
+ balloon_alert(user, "not connected to wire")
+ return
+ if(!avail(active_power_usage))
+ balloon_alert(user, "not enough power")
+ return
+
+ thumping = TRUE
+ soundloop.start()
+
+ if(callback_tracker)
+ deltimer(callback_tracker)
+
+ balloon_alert(user, "thumper started")
+
+ callback_tracker = addtimer(CALLBACK(src, PROC_REF(slam_it_down)), SLAM_JAM_DELAY, TIMER_DELETE_ME | TIMER_STOPPABLE)
+
+
+/// Attempts to shut the thumper down
+/obj/machinery/power/colony_ore_thumper/proc/cut_that_out(mob/user)
+ thumping = FALSE
+ soundloop.stop()
+ if(user)
+ balloon_alert(user, "thumper stopped")
+
+
+/// Makes the machine slam down, producing a box of ore if it has been slamming long enough
+/obj/machinery/power/colony_ore_thumper/proc/slam_it_down()
+ if(!thumping)
+ return
+ var/turf/our_turf = get_turf(src)
+ if(!see_if_we_can_work(our_turf))
+ balloon_alert_to_viewers("invalid location!")
+ cut_that_out()
+ return
+ // Down we go
+ flick("thumper_slam", src)
+ playsound(src, pick(list_of_thumper_sounds), 80, TRUE)
+ if(slam_jams < (slam_jams_needed + 1))
+ slam_jams += 1
+
+ if(callback_tracker)
+ deltimer(callback_tracker)
+
+ callback_tracker = addtimer(CALLBACK(src, PROC_REF(slam_it_down)), SLAM_JAM_DELAY, TIMER_DELETE_ME | TIMER_STOPPABLE,)
+
+ // If the number of slams is less than that of what we need, then we can stop here
+ if(!(slam_jams >= slam_jams_needed))
+ return
+
+ var/nearby_ore = 0
+ var/is_there_a_thumper_too = FALSE
+ for(var/turf/nearby_turf in orange(ore_spawn_range, src))
+ for(var/ore as anything in nearby_turf.contents)
+ if(istype(ore, /obj/item/stack/ore))
+ nearby_ore += 1
+ continue
+ if(istype(ore, /obj/machinery/power/colony_ore_thumper))
+ if(ore == src)
+ continue
+ is_there_a_thumper_too = TRUE
+ break
+
+ if(nearby_ore > nearby_ore_limit)
+ balloon_alert_to_viewers("nearby ore too saturated")
+ return
+
+ if(is_there_a_thumper_too)
+ balloon_alert_to_viewers("too close to another thumper")
+ return
+
+ addtimer(CALLBACK(src, PROC_REF(make_some_ore)), 3 SECONDS, TIMER_DELETE_ME)
+
+
+/// Spawns an ore box on top of the thumper
+/obj/machinery/power/colony_ore_thumper/proc/make_some_ore()
+ var/list/nearby_valid_turfs = list()
+ for(var/turf/nearby_turf in orange(ore_spawn_range, src))
+ if(nearby_turf.is_blocked_turf(TRUE))
+ continue
+ if(!ismiscturf(nearby_turf))
+ continue
+ nearby_valid_turfs.Add(nearby_turf)
+ // Fallback in case somehow there are no valid nearby turfs
+ if(!length(nearby_valid_turfs))
+ nearby_valid_turfs.Add(get_turf(src))
+
+ for(var/iteration in 1 to rand(2, 4))
+ var/turf/target_turf = pick(nearby_valid_turfs)
+ var/obj/item/stack/new_ore = pick_weight(ore_weight_list)
+ var/obj/new_ore_pile = new new_ore(target_turf, ore_spawn_values[new_ore.type])
+ new /obj/effect/temp_visual/mook_dust/robot(target_turf)
+ playsound(new_ore_pile, 'modular_nova/master_files/sound/effects/robot_sit.ogg', 25, TRUE)
+
+ slam_jams -= slam_jams_needed
+
+
+// Item for deploying ore thumpers
+/obj/item/flatpacked_machine/ore_thumper
+ name = "flat-packed ore thumper"
+ icon = 'modular_nova/modules/kahraman_equipment/icons/ore_thumper_item.dmi'
+ icon_state = "thumper_packed"
+ type_to_deploy = /obj/machinery/power/colony_ore_thumper
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 15,
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5,
+ /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT,
+ /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
+ )
+
+/obj/item/flatpacked_machine/ore_thumper/examine(mob/user)
+ . = ..()
+ . += span_notice("Its must be constructed outdoors to function.")
+ . += span_notice("It must be constructed on suitable terrain, like ash, snow, or sand.")
+ . += span_notice("It must have a powered, wired connection running beneath it to function.")
+
+/obj/item/flatpacked_machine/ore_thumper/give_manufacturer_examine()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
diff --git a/modular_nova/modules/kahraman_equipment/code/organic_printer.dm b/modular_nova/modules/kahraman_equipment/code/organic_printer.dm
new file mode 100644
index 00000000000..a548317c2e7
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/organic_printer.dm
@@ -0,0 +1,40 @@
+/obj/machinery/biogenerator/organic_printer
+ name = "organic materials printer"
+ desc = "An advanced machine seen in frontier outposts and colonies capable of turning organic plant matter into \
+ reagents and items of use that a fabricator can't typically make. While the exact designs these machines have differs from \
+ location to location, and upon who designed them, this one should be able to at the very least provide you with \
+ some clothing, basic food supplies, and whatever else you may require."
+ icon = 'modular_nova/modules/kahraman_equipment/icons/biogenerator.dmi'
+ circuit = null
+ anchored = FALSE
+ efficiency = 1
+ productivity = 2
+ max_items = 35
+ show_categories = list(
+ RND_CATEGORY_AKHTER_CLOTHING,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ RND_CATEGORY_AKHTER_RESOURCES,
+ )
+
+/obj/machinery/biogenerator/organic_printer/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
+
+/obj/machinery/biogenerator/organic_printer/RefreshParts()
+ . = ..()
+ efficiency = 1
+ productivity = 2
+ max_items = 35
+
+/obj/machinery/biogenerator/organic_printer/default_deconstruction_crowbar()
+ return
+
+// Deployable item for cargo for the organics printer
+/obj/item/flatpacked_machine/organics_printer
+ name = "organic materials printer parts kit"
+ icon = 'modular_nova/modules/kahraman_equipment/icons/biogenerator.dmi'
+ icon_state = "biogenerator_parts"
+ type_to_deploy = /obj/machinery/biogenerator/organic_printer
+
+/obj/item/flatpacked_machine/organics_printer/give_manufacturer_examine()
+ AddElement(/datum/element/manufacturer_examine, COMPANY_KAHRAMAN)
diff --git a/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/clothing.dm b/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/clothing.dm
new file mode 100644
index 00000000000..478dd89beb5
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/clothing.dm
@@ -0,0 +1,132 @@
+// Jumpsuit
+
+/datum/design/frontier_jumpsuit
+ name = "Frontier Jumpsuit"
+ id = "frontier_jumpsuit"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 75)
+ build_path = /obj/item/clothing/under/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+// Boots
+
+/datum/design/frontier_boots
+ name = "Heavy Frontier Boots"
+ id = "frontier_boots"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 50)
+ build_path = /obj/item/clothing/shoes/jackboots/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+// Gloves
+
+/datum/design/frontier_gloves
+ name = "Frontier Gloves"
+ id = "frontier_gloves"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 50)
+ build_path = /obj/item/clothing/gloves/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+// Suit items
+
+/datum/design/frontier_trench
+ name = "Frontier Trenchcoat"
+ id = "frontier_trench"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/clothing/suit/jacket/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+/datum/design/frontier_jacket
+ name = "Frontier Jacket"
+ id = "frontier_jacket"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/clothing/suit/jacket/frontier_colonist/short
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+/datum/design/frontier_med_jacket
+ name = "Frontier Medical Jacket"
+ id = "frontier_med_jacket"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 125)
+ build_path = /obj/item/clothing/suit/jacket/frontier_colonist/medical
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+/datum/design/frontier_flak
+ name = "Frontier Flak Jacket"
+ id = "frontier_flak_jacket"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 150)
+ build_path = /obj/item/clothing/suit/frontier_colonist_flak
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+/datum/design/frontier_tanker_helmet
+ name = "Frontier Soft Helmet"
+ id = "frontier_tanker_helmet"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 150)
+ build_path = /obj/item/clothing/head/frontier_colonist_helmet
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+// Hats
+
+/datum/design/frontier_cap
+ name = "Frontier Soft Cap"
+ id = "frontier_cap"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 75)
+ build_path = /obj/item/clothing/head/soft/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+/datum/design/frontier_cap_med
+ name = "Frontier Medical Cap"
+ id = "frontier_cap_med"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/clothing/head/soft/frontier_colonist/medic
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
+
+// That one gas mask
+
+/datum/design/frontier_mask
+ name = "Frontier Gas Mask"
+ id = "frontier_mask"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/clothing/mask/gas/atmos/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_CLOTHING,
+ )
diff --git a/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/equipment.dm b/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/equipment.dm
new file mode 100644
index 00000000000..cc019598dc9
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/equipment.dm
@@ -0,0 +1,69 @@
+// Belts
+
+/datum/design/frontier_chest_rig
+ name = "Frontier Chest Rig"
+ id = "frontier_chest_rig"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 150)
+ build_path = /obj/item/storage/belt/utility/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ )
+
+/datum/design/frontier_med_belt
+ name = "Satchel Medical Kit"
+ id = "frontier_med_belt"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 200)
+ build_path = /obj/item/storage/backpack/duffelbag/deforest_medkit
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ )
+
+/datum/design/frontier_medkit
+ name = "Frontier Medical Kit"
+ id = "frontier_medkit"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/storage/medkit/frontier
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ )
+
+// Backpacks
+
+/datum/design/frontier_backpack
+ name = "Frontier Backpack"
+ id = "frontier_backpack"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/storage/backpack/industrial/frontier_colonist
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ )
+
+/datum/design/frontier_satchel
+ name = "Frontier Satchel"
+ id = "frontier_satchel"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/storage/backpack/industrial/frontier_colonist/satchel
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ )
+
+/datum/design/frontier_messenger
+ name = "Frontier Messenger Bag"
+ id = "frontier_messenger"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 100)
+ build_path = /obj/item/storage/backpack/industrial/frontier_colonist/messenger
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_EQUIPMENT,
+ )
diff --git a/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/resources.dm b/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/resources.dm
new file mode 100644
index 00000000000..9fb685140db
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/code/organic_printer_designs/resources.dm
@@ -0,0 +1,21 @@
+/datum/design/organic_plastic
+ name = "Plastic Sheet"
+ id = "oganic_plastic"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 25)
+ build_path = /obj/item/stack/sheet/plastic
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_RESOURCES,
+ )
+
+/datum/design/organic_cloth
+ name = "Cloth"
+ id = "oganic_cloth"
+ build_type = BIOGENERATOR
+ materials = list(/datum/material/biomass = 10)
+ build_path = /obj/item/stack/sheet/cloth
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_AKHTER_RESOURCES,
+ )
diff --git a/modular_nova/modules/kahraman_equipment/icons/biogenerator.dmi b/modular_nova/modules/kahraman_equipment/icons/biogenerator.dmi
new file mode 100644
index 00000000000..5fd87ee0ace
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/biogenerator.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi
new file mode 100644
index 00000000000..bb4d9cec962
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi
new file mode 100644
index 00000000000..fa232094446
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi
new file mode 100644
index 00000000000..cb954472b24
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_digi.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi
new file mode 100644
index 00000000000..da167942a77
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/clothes/clothing_worn_teshari.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/gps_beacon.dmi b/modular_nova/modules/kahraman_equipment/icons/gps_beacon.dmi
new file mode 100644
index 00000000000..62c9cc11fa4
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/gps_beacon.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/modsuits/mod.dmi b/modular_nova/modules/kahraman_equipment/icons/modsuits/mod.dmi
new file mode 100644
index 00000000000..a2e6c642b18
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/modsuits/mod.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/modsuits/mod_worn.dmi b/modular_nova/modules/kahraman_equipment/icons/modsuits/mod_worn.dmi
new file mode 100644
index 00000000000..99254f654a4
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/modsuits/mod_worn.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/ore_thumper.dmi b/modular_nova/modules/kahraman_equipment/icons/ore_thumper.dmi
new file mode 100644
index 00000000000..a99b196ae67
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/ore_thumper.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/icons/ore_thumper_item.dmi b/modular_nova/modules/kahraman_equipment/icons/ore_thumper_item.dmi
new file mode 100644
index 00000000000..7c53ff0f06a
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/icons/ore_thumper_item.dmi differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/attributions.txt b/modular_nova/modules/kahraman_equipment/sound/attributions.txt
new file mode 100644
index 00000000000..19b7ff0e57e
--- /dev/null
+++ b/modular_nova/modules/kahraman_equipment/sound/attributions.txt
@@ -0,0 +1,7 @@
+The sounds at modular_skyrat/modules/colony_fabriactor_event_code/sound/thumper_fan are from https://pixabay.com/sound-effects/fan-1-6360/
+
+The sounds at modular_skyrat/modules/colony_fabriactor_event_code/sound/thumper_thump are from https://pixabay.com/sound-effects/punch-press-10-ton-clip1-104921/
+
+The following sounds are from https://pixabay.com/sound-effects/sos-signal-137144/
+
+modular_skyrat/modules/colony_fabricator/sound/morse_signal.wav
diff --git a/modular_nova/modules/kahraman_equipment/sound/morse_signal.wav b/modular_nova/modules/kahraman_equipment/sound/morse_signal.wav
new file mode 100644
index 00000000000..2f0dd568209
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/morse_signal.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_end.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_end.wav
new file mode 100644
index 00000000000..f89e8d20ff9
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_end.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_1.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_1.wav
new file mode 100644
index 00000000000..96582d0ce32
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_1.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_2.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_2.wav
new file mode 100644
index 00000000000..e1656ec08ef
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_2.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_3.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_3.wav
new file mode 100644
index 00000000000..7d7275b5bea
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_3.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_4.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_4.wav
new file mode 100644
index 00000000000..7298e4eddca
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_mid_4.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_start.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_start.wav
new file mode 100644
index 00000000000..c3e95ad1e8b
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_fan/fan_start.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_1.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_1.wav
new file mode 100644
index 00000000000..513bb1f8f19
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_1.wav differ
diff --git a/modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_2.wav b/modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_2.wav
new file mode 100644
index 00000000000..c4d259839b3
Binary files /dev/null and b/modular_nova/modules/kahraman_equipment/sound/thumper_thump/punch_press_2.wav differ
diff --git a/tgstation.dme b/tgstation.dme
index baa50b53c00..82c30872767 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -7321,6 +7321,17 @@
#include "modular_nova\modules\jukebox\code\dance_machine.dm"
#include "modular_nova\modules\jukebox\code\jukebox_subsystem.dm"
#include "modular_nova\modules\jungle\code\flora.dm"
+#include "modular_nova\modules\kahraman_equipment\code\gps_beacon.dm"
+#include "modular_nova\modules\kahraman_equipment\code\looping_sounds.dm"
+#include "modular_nova\modules\kahraman_equipment\code\ore_thumper.dm"
+#include "modular_nova\modules\kahraman_equipment\code\organic_printer.dm"
+#include "modular_nova\modules\kahraman_equipment\code\clothing\armor_datums.dm"
+#include "modular_nova\modules\kahraman_equipment\code\clothing\clothing.dm"
+#include "modular_nova\modules\kahraman_equipment\code\clothing\mod.dm"
+#include "modular_nova\modules\kahraman_equipment\code\clothing\storage.dm"
+#include "modular_nova\modules\kahraman_equipment\code\organic_printer_designs\clothing.dm"
+#include "modular_nova\modules\kahraman_equipment\code\organic_printer_designs\equipment.dm"
+#include "modular_nova\modules\kahraman_equipment\code\organic_printer_designs\resources.dm"
#include "modular_nova\modules\knives\knives.dm"
#include "modular_nova\modules\layer_shift\code\mob_movement.dm"
#include "modular_nova\modules\liquids\code\drains.dm"