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"