z1m
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
literal 0
HcmV?d00001
diff --git a/modular_splurt/code/modules/research/xenoarch/strange_rock.dm b/modular_splurt/code/modules/research/xenoarch/strange_rock.dm
new file mode 100644
index 0000000000..ca876bc719
--- /dev/null
+++ b/modular_splurt/code/modules/research/xenoarch/strange_rock.dm
@@ -0,0 +1,131 @@
+/obj/item/strangerock
+ icon = 'modular_splurt/code/modules/research/xenoarch/fossil_and_artifact.dmi'
+ name = "strange rock"
+ desc = "This is a strange rock, it appears to have a relic encased."
+ icon_state = "strange"
+ item_state = "strange"
+
+ var/chosenitem = null
+ var/itemsafedepth = null
+ var/itembasedepth = null
+ var/itemactualdepth = null
+ var/dugdepth = null
+
+ var/tryagain = null
+
+/obj/item/strangerock/Initialize()
+ icon_state = pick("strange","strange0","strange1","strange2","strange3")
+ var/randomnumber = rand(1,100)
+ switch(randomnumber)
+ if(1 to 69)
+ chosenitem = pickweight(GLOB.bas_artifact)
+ itembasedepth = rand(30,40)
+ itemsafedepth = rand(3,6)
+ itemactualdepth = rand(itembasedepth - itemsafedepth,itembasedepth)
+ if(70 to 99)
+ chosenitem = pickweight(GLOB.adv_artifact)
+ itembasedepth = rand(40,60)
+ itemsafedepth = rand(6,12)
+ itemactualdepth = rand(itembasedepth - itemsafedepth,itembasedepth)
+ if(100)
+ chosenitem = pickweight(GLOB.ult_artifact)
+ itembasedepth = rand(70,100)
+ itemsafedepth = rand(12,14)
+ itemactualdepth = rand(itembasedepth - itemsafedepth,itembasedepth)
+ ..()
+
+/obj/item/strangerock/attackby(obj/item/W, mob/user, params)
+ if(istype(W,/obj/item/xenoarch/clean/hammer))
+ if(tryagain)
+ to_chat(user,"You are already mining this.")
+ return
+ tryagain = TRUE
+ var/obj/item/xenoarch/clean/hammer/HM = W
+ playsound(loc, HM.usesound, 50, 1, -1)
+ if(!do_after(user,HM.cleanspeed,target = src))
+ to_chat(user,"You must stand still to clean.")
+ tryagain = FALSE
+ return
+ dugdepth += HM.cleandepth
+ playsound(loc, HM.usesound, 50, 1, -1)
+ if(dugdepth > itemactualdepth)
+ to_chat(user,"The strange rock crumbles, destroying anything that could have been recovered.")
+ qdel(src)
+ return
+ tryagain = FALSE
+ if(istype(W,/obj/item/xenoarch/clean/brush))
+ if(tryagain)
+ to_chat(user,"You are already mining this.")
+ return
+ tryagain = TRUE
+ var/obj/item/xenoarch/clean/brush/HM = W
+ playsound(loc, HM.usesound, 50, 1, -1)
+ if(!do_after(user,HM.brushspeed,target = src))
+ to_chat(user,"You must stand still to clean.")
+ tryagain = FALSE
+ return
+ if(dugdepth < itemactualdepth)
+ dugdepth++
+ playsound(loc, HM.usesound, 50, 1, -1)
+ to_chat(user,"You brush away 1cm of debris.")
+ tryagain = FALSE
+ return
+ if(dugdepth > itemactualdepth)
+ to_chat(user,"You somehow managed to destroy a strange rock with a brush... good job?")
+ qdel(src)
+ return
+ if(dugdepth == itemactualdepth)
+ new chosenitem(get_turf(src))
+ playsound(loc, HM.usesound, 50, 1, -1)
+ to_chat(user,"You uncover an artifact!")
+ qdel(src)
+ return
+ if(istype(W,/obj/item/xenoarch/help/scanner))
+ var/obj/item/xenoarch/help/scanner/HM = W
+ playsound(loc, HM.usesound, 50, 1, -1)
+ if(!do_after(user,30,target = src))
+ to_chat(user,"You must stand still to scan.")
+ return
+ playsound(loc, HM.usesound, 50, 1, -1)
+ to_chat(user,"Base Depth: [itembasedepth] centimeters.")
+ to_chat(user,"Safe Depth: [itemsafedepth] centimeters.")
+ if(istype(W,/obj/item/xenoarch/help/scanneradv))
+ var/obj/item/xenoarch/help/scanneradv/HM = W
+ playsound(loc, HM.usesound, 50, 1, -1)
+ if(!do_after(user,10,target = src))
+ to_chat(user,"You must stand still to scan.")
+ return
+ playsound(loc, HM.usesound, 50, 1, -1)
+ to_chat(user,"Base Depth: [itembasedepth] centimeters.")
+ to_chat(user,"Safe Depth: [itemsafedepth] centimeters.")
+ to_chat(user,"Item Depth: [itemactualdepth] centimeters.")
+ if(istype(W,/obj/item/xenoarch/help/measuring))
+ var/obj/item/xenoarch/help/measuring/HM = W
+ playsound(loc, HM.usesound, 50, 1, -1)
+ if(!do_after(user,10,target = src))
+ to_chat(user,"You must stand still to measure.")
+ return
+ if(!dugdepth)
+ to_chat(user,"This rock has not been touched.")
+ playsound(loc, HM.usesound, 50, 1, -1)
+ return
+ to_chat(user,"Current depth dug: [dugdepth] centimeters.")
+ playsound(loc, HM.usesound, 50, 1, -1)
+//
+
+/turf/closed/mineral/strange
+ mineralType = /obj/item/strangerock
+ //spreadChance = 5
+ //spread = 1 читать после
+ mineralAmt = 1
+ scan_state = "rock_Strange"
+/* this is for when we have multiz lavaland. Replace the walls with these.
+/turf/closed/mineral/random/volcanic/strangerock
+ mineralSpawnChanceList = list(
+ /turf/closed/mineral/uranium/volcanic = 3, /turf/closed/mineral/diamond/volcanic = 1, /turf/closed/mineral/gold/volcanic = 8, /turf/closed/mineral/titanium/volcanic = 8,
+ /turf/closed/mineral/silver/volcanic = 20, /turf/closed/mineral/plasma/volcanic = 30, /turf/closed/mineral/bscrystal/volcanic = 1, /turf/closed/mineral/gibtonite/volcanic = 2,
+ /turf/closed/mineral/iron/volcanic = 95, /turf/closed/mineral/strange = 15)
+*/
+/turf/closed/mineral/random/volcanic/New()
+ mineralSpawnChanceList += list(/turf/closed/mineral/strange = 15)
+ . = ..()
\ No newline at end of file
diff --git a/modular_splurt/code/modules/research/xenoarch/tools.dm b/modular_splurt/code/modules/research/xenoarch/tools.dm
new file mode 100644
index 0000000000..b1a5aa1f7c
--- /dev/null
+++ b/modular_splurt/code/modules/research/xenoarch/tools.dm
@@ -0,0 +1,572 @@
+/obj/item/xenoarch
+ name = "Parent Xenoarch"
+ desc = "Debug. Parent Clean"
+ icon = 'modular_splurt/code/modules/research/xenoarch/tools.dmi'
+
+/obj/item/xenoarch/Initialize()
+ ..()
+
+/obj/item/xenoarch/clean/hammer
+ name = "Parent hammer"
+ desc = "Debug. Parent Hammer."
+ var/cleandepth = 15
+ var/cleanspeed = 15
+ usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg')
+
+/obj/item/xenoarch/clean/hammer/cm1
+ name = "mining hammer cm1"
+ desc = "removes 1cm of material."
+ icon_state = "pick1"
+ cleandepth = 1
+ cleanspeed = 5
+
+/obj/item/xenoarch/clean/hammer/cm2
+ name = "mining hammer cm2"
+ desc = "removes 2cm of material."
+ icon_state = "pick2"
+ cleandepth = 2
+ cleanspeed = 10
+
+/obj/item/xenoarch/clean/hammer/cm3
+ name = "mining hammer cm3"
+ desc = "removes 3cm of material."
+ icon_state = "pick3"
+ cleandepth = 3
+ cleanspeed = 15
+
+/obj/item/xenoarch/clean/hammer/cm4
+ name = "mining hammer cm4"
+ desc = "removes 4cm of material."
+ icon_state = "pick4"
+ cleandepth = 4
+ cleanspeed = 20
+
+/obj/item/xenoarch/clean/hammer/cm5
+ name = "mining hammer cm5"
+ desc = "removes 5cm of material."
+ icon_state = "pick5"
+ cleandepth = 5
+ cleanspeed = 25
+
+/obj/item/xenoarch/clean/hammer/cm6
+ name = "mining hammer cm6"
+ desc = "removes 6cm of material."
+ icon_state = "pick6"
+ cleandepth = 6
+ cleanspeed = 30
+
+/obj/item/xenoarch/clean/hammer/cm15
+ name = "mining hammer cm15"
+ desc = "removes 15cm of material."
+ icon_state = "pick_hand"
+ cleandepth = 15
+ cleanspeed = 75
+
+/obj/item/xenoarch/clean/hammer/advanced
+ name = "advanced hammer"
+ desc = "Removes a custom amount of debris."
+ icon_state = "advpick"
+ cleandepth = 30
+ cleanspeed = 30
+ usesound = 'sound/weapons/drill.ogg'
+
+/obj/item/xenoarch/clean/hammer/advanced/attack_self(mob/living/carbon/user)
+ var/depthchoice = input(user, "What depth would you like to mine with? (1-30)", "Change Dig Depth") as null|num
+ if(depthchoice && (depthchoice > 0 && depthchoice <= 30))
+ cleandepth = depthchoice
+ cleanspeed = depthchoice
+ desc = "Removes a custom amount of debris. It will dig [cleandepth] centimeters."
+ to_chat(user, "You set the dig depth of the hammer to [cleandepth] centimeters.")
+//
+
+/obj/item/xenoarch/clean/brush
+ name = "mining brush"
+ desc = "cleans off the remaining debris."
+ icon_state = "pick_brush"
+ var/brushspeed = 100
+ usesound = 'sound/items/towelwipe.ogg'
+
+/obj/item/xenoarch/clean/brush/basic
+ brushspeed = 50
+
+/obj/item/xenoarch/clean/brush/adv
+ name = "advanced mining brush"
+ icon_state = "advbrush"
+ brushspeed = 10
+
+//
+
+/obj/item/xenoarch/help/scanner
+ name = "mining scanner"
+ desc = "Inaccurately scans a rock's depths."
+ icon_state = "scanner"
+ usesound = 'sound/machines/chime.ogg'
+
+/obj/item/xenoarch/help/scanneradv
+ name = "advanced mining scanner"
+ desc = "Accurately scans a rock's depths."
+ icon_state = "adv_scanner"
+ usesound = 'sound/machines/chime.ogg'
+
+/obj/item/xenoarch/help/measuring
+ name = "measuring tape"
+ desc = "Measures how far a rock has been dug into."
+ icon_state = "measuring"
+ usesound = 'sound/items/poster_ripped.ogg'
+
+/obj/item/xenoarch/help/research
+ name = "research analyzer"
+ desc = "Deconstructs artifacts for research."
+ icon_state = "researchscanner"
+ usesound = 'sound/weapons/resonator_blast.ogg'
+
+/obj/item/xenoarch/help/plant
+ name = "fossil seed extractor"
+ desc = "Takes flora fossils and extracts the prehistoric seeds."
+ icon_state = "plantscanner"
+ usesound = 'sound/weapons/resonator_blast.ogg'
+
+// Eventually, make it work on afterattack(atom/target, mob/user , proximity)
+// I dont want to take more time currently though.
+// Would have to create a list and then check if the item is in the list.
+
+/obj/item/xenoarch/help/cargo
+ name = "dimensional cargo scanner"
+ desc = "teleports items to be sold."
+ icon_state = "cargoscanner"
+ usesound = 'sound/weapons/resonator_blast.ogg'
+
+/obj/item/xenoarch/help/cargo/afterattack(atom/target, mob/user , proximity)
+ if(!proximity)
+ return
+ var/export_categories = EXPORT_CARGO
+ if(!istype(target,/obj/item))
+ return
+ var/datum/export_report/ex = new
+ if(!do_after(user,300,target=target))
+ to_chat(user,"You need to stand still to export items.")
+ return
+ export_item_and_contents(target, export_categories , dry_run = FALSE, external_report = ex)
+ var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
+ for(var/datum/export/E in ex.total_amount)
+ var/export_text = E.total_printout(ex)
+ if(!export_text)
+ continue
+ D.adjust_money(ex.total_value[E])
+ to_chat(user,"The [target] disappears!")
+
+
+// Storage: Belt and Locker and Bag
+
+/obj/item/storage/bag/strangerock
+ name = "strange rock bag"
+ desc = "A bag for strange rocks."
+ icon = 'modular_splurt/code/modules/research/xenoarch/tools.dmi'
+ icon_state = "rockbag"
+ w_class = WEIGHT_CLASS_TINY
+ resistance_flags = FLAMMABLE
+ var/mob/listeningTo
+ var/range = null
+
+ var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it
+
+/obj/item/storage/bag/strangerock/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_w_class = WEIGHT_CLASS_GIGANTIC
+ STR.allow_quick_empty = TRUE
+ STR.max_combined_w_class = 200
+ STR.max_items = 10
+ STR.display_numerical_stacking = FALSE
+ STR.can_hold = typecacheof(list(/obj/item/strangerock))
+
+
+/obj/item/storage/bag/strangerock/equipped(mob/user)
+ . = ..()
+ if(listeningTo == user)
+ return
+ if(listeningTo)
+ UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_rocks)
+ listeningTo = user
+
+/obj/item/storage/bag/strangerock/dropped(mob/user)
+ . = ..()
+ if(listeningTo)
+ UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
+ listeningTo = null
+
+/obj/item/storage/bag/strangerock/proc/Pickup_rocks(mob/living/user)
+ var/show_message = FALSE
+ var/turf/tile = user.loc
+ if (!isturf(tile))
+ return
+
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ if(STR)
+ for(var/A in tile)
+ if (!is_type_in_typecache(A, STR.can_hold))
+ continue
+ else if(SEND_SIGNAL(src, COMSIG_TRY_STORAGE_INSERT, A, user, TRUE))
+ show_message = TRUE
+ else
+ if(!spam_protection)
+ to_chat(user, "Your [name] is full and can't hold any more!")
+ spam_protection = TRUE
+ continue
+ if(show_message)
+ playsound(user, "rustle", 50, TRUE)
+ user.visible_message("[user] scoops up the rocks beneath [user.p_them()].", \
+ "You scoop up the rocks beneath you with your [name].")
+ spam_protection = FALSE
+
+/obj/item/storage/bag/strangerockadv
+ name = "bluespace strange rock bag"
+ desc = "A bag for strange rocks."
+ icon = 'modular_splurt/code/modules/research/xenoarch/tools.dmi'
+ icon_state = "rockbagadv"
+ w_class = WEIGHT_CLASS_TINY
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ var/mob/listeningTo
+ var/range = null
+
+ var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it
+
+/obj/item/storage/bag/strangerockadv/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_w_class = WEIGHT_CLASS_GIGANTIC
+ STR.allow_quick_empty = TRUE
+ STR.max_combined_w_class = 1000
+ STR.max_items = 50
+ STR.display_numerical_stacking = FALSE
+ STR.can_hold = typecacheof(list(/obj/item/strangerock))
+
+/obj/item/storage/bag/strangerockadv/equipped(mob/user)
+ . = ..()
+ if(listeningTo == user)
+ return
+ if(listeningTo)
+ UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_rocks)
+ listeningTo = user
+
+/obj/item/storage/bag/strangerockadv/dropped(mob/user)
+ . = ..()
+ if(listeningTo)
+ UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
+ listeningTo = null
+
+/obj/item/storage/bag/strangerockadv/proc/Pickup_rocks(mob/living/user)
+ var/show_message = FALSE
+ var/turf/tile = user.loc
+ if (!isturf(tile))
+ return
+
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ if(STR)
+ for(var/A in tile)
+ if (!is_type_in_typecache(A, STR.can_hold))
+ continue
+ else if(SEND_SIGNAL(src, COMSIG_TRY_STORAGE_INSERT, A, user, TRUE))
+ show_message = TRUE
+ else
+ if(!spam_protection)
+ to_chat(user, "Your [name] is full and can't hold any more!")
+ spam_protection = TRUE
+ continue
+ if(show_message)
+ playsound(user, "rustle", 50, TRUE)
+ user.visible_message("[user] scoops up the rocks beneath [user.p_them()].", \
+ "You scoop up the rocks beneath you with your [name].")
+ spam_protection = FALSE
+
+//
+
+/obj/item/storage/belt/xenoarch
+ name = "xenoarchaeologist belt"
+ desc = "used to store your tools for xenoarchaeology."
+ icon = 'modular_splurt/code/modules/research/xenoarch/tools.dmi'
+ icon_state = "miningbelt"
+
+/obj/item/storage/belt/xenoarch/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ var/static/list/can_hold = typecacheof(list(
+ /obj/item/xenoarch/help,
+ /obj/item/xenoarch/clean,
+ /obj/item/t_scanner/adv_mining_scanner,
+ /obj/item/gps
+ ))
+ STR.can_hold = can_hold
+ STR.max_items = 12
+ STR.max_w_class = WEIGHT_CLASS_BULKY
+ STR.max_combined_w_class = 200
+
+/obj/item/storage/belt/xenoarch/full/PopulateContents()
+ new /obj/item/xenoarch/help/measuring(src)
+ new /obj/item/xenoarch/help/scanner(src)
+ new /obj/item/xenoarch/clean/brush/basic(src)
+ new /obj/item/xenoarch/clean/hammer/cm15(src)
+ new /obj/item/xenoarch/clean/hammer/cm6(src)
+ new /obj/item/xenoarch/clean/hammer/cm5(src)
+ new /obj/item/xenoarch/clean/hammer/cm4(src)
+ new /obj/item/xenoarch/clean/hammer/cm3(src)
+ new /obj/item/xenoarch/clean/hammer/cm2(src)
+ new /obj/item/xenoarch/clean/hammer/cm1(src)
+ new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
+ new /obj/item/gps(src)
+ return
+
+/obj/structure/closet/wardrobe/xenoarch
+ name = "xenoarchaeologist wardrobe"
+ icon_state = "science"
+ icon_door = "science"
+
+/obj/structure/closet/wardrobe/xenoarch/PopulateContents()
+ new /obj/item/xenoarch/help/measuring(src)
+ new /obj/item/xenoarch/help/scanner(src)
+ new /obj/item/xenoarch/clean/brush/basic(src)
+ new /obj/item/xenoarch/clean/hammer/cm15(src)
+ new /obj/item/xenoarch/clean/hammer/cm6(src)
+ new /obj/item/xenoarch/clean/hammer/cm5(src)
+ new /obj/item/xenoarch/clean/hammer/cm4(src)
+ new /obj/item/xenoarch/clean/hammer/cm3(src)
+ new /obj/item/xenoarch/clean/hammer/cm2(src)
+ new /obj/item/xenoarch/clean/hammer/cm1(src)
+ new /obj/item/pickaxe(src)
+ new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
+ new /obj/item/gps(src)
+ new /obj/item/storage/belt/xenoarch(src)
+ new /obj/item/storage/bag/strangerock(src)
+ return
+
+//
+
+//Research WEB
+
+/datum/techweb_node/xenoarchtools
+ id = "xenoarchtools"
+ display_name = "Xenoarchaeology Tools"
+ description = "Xenoarchaeology tools that are used for xenoarchaeology, who knew."
+ prereq_ids = list("base")
+ design_ids = list("hammercm1","hammercm2","hammercm3","hammercm4","hammercm5","hammercm6","hammercm15","hammerbrush","xenoscanner","xenomeasure","xenobelt","xenorockback")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 750)
+
+/datum/techweb_node/portxenoarch
+ id = "portxenoarch"
+ display_name = "Portable Xenoarchaeology Tools"
+ description = "Tools for extracting seeds, and for getting some research points."
+ prereq_ids = list("xenoarchtools")
+ design_ids = list("xenoresearch","xenoplant")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
+
+/datum/techweb_node/advportcargo
+ id = "advportcargo"
+ display_name = "Advanced Cargo Technology"
+ description = "A tool for selling stuff not through a shuttle. Careful with its use."
+ prereq_ids = list("portxenoarch")
+ design_ids = list("advcargoscanner")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
+
+/datum/techweb_node/advxenoarch
+ id = "advxenoarch"
+ display_name = "Advanced Xenoarchaeology Tools"
+ description = "Tools that can make your excavation and recovering of artifacts easier."
+ prereq_ids = list("xenoarchtools")
+ design_ids = list("advxenoscanner","hammercmadv","hammerbrushadv","xenorockbackadv")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
+
+//Research DESIGNS
+
+/datum/design/hammercm1
+ name = "Hammer cm1"
+ desc = "A hammer that destroys 1 cm of debris."
+ id = "hammercm1"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm1
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercm2
+ name = "Hammer cm2"
+ desc = "A hammer that destroys 2 cm of debris."
+ id = "hammercm2"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm2
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercm3
+ name = "Hammer cm3"
+ desc = "A hammer that destroys 3 cm of debris."
+ id = "hammercm3"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm3
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercm4
+ name = "Hammer cm4"
+ desc = "A hammer that destroys 4 cm of debris."
+ id = "hammercm4"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm4
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercm5
+ name = "Hammer cm5"
+ desc = "A hammer that destroys 5 cm of debris."
+ id = "hammercm5"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm5
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercm6
+ name = "Hammer cm6"
+ desc = "A hammer that destroys 6 cm of debris."
+ id = "hammercm6"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm6
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercm15
+ name = "Hammer cm15"
+ desc = "A hammer that destroys 15 cm of debris."
+ id = "hammercm15"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/hammer/cm15
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/hammercmadv
+ name = "Advanced Hammer"
+ desc = "A hammer that destroys up to 30 cm of debris."
+ id = "hammercmadv"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 1500)
+ build_path = /obj/item/xenoarch/clean/hammer/advanced
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/cleanbrush
+ name = "Brush"
+ desc = "A brush that cleans debris."
+ id = "hammerbrush"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/clean/brush/basic
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/cleanbrushadv
+ name = "Advanced Brush"
+ desc = "A brush that cleans debris."
+ id = "hammerbrushadv"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 1500)
+ build_path = /obj/item/xenoarch/clean/brush/adv
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+// Designs for tools
+
+/datum/design/xenoscanner
+ name = "Mining Scanner"
+ desc = "A tool that scans depths of rocks."
+ id = "xenoscanner"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/help/scanner
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/advxenoscanner
+ name = "Advanced Mining Scanner"
+ desc = "A tool that scans depths of rocks."
+ id = "advxenoscanner"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 1500)
+ build_path = /obj/item/xenoarch/help/scanneradv
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/xenomeasure
+ name = "Measuring Tape"
+ desc = "A tool to measure the dug depth of rocks."
+ id = "xenomeasure"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 500)
+ build_path = /obj/item/xenoarch/help/measuring
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/xenoresearch
+ name = "Research Scanner"
+ desc = "A tool used to get research points from artifacts."
+ id = "xenoresearch"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 1000)
+ build_path = /obj/item/xenoarch/help/research
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/xenoplant
+ name = "Fossil Seed Extractor"
+ desc = "A tool to extract the seeds from prehistoric fossils."
+ id = "xenoplant"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 1000)
+ build_path = /obj/item/xenoarch/help/plant
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/advcargoscanner
+ name = "Cargo Scanner"
+ desc = "A tool used to sell items, virtually."
+ id = "advcargoscanner"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 1000, /datum/material/bluespace = 1000)
+ build_path = /obj/item/xenoarch/help/cargo
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO
+
+/datum/design/xenobelt
+ name = "Xenoarchaeology Belt"
+ desc = "A belt used to store some xenoarch tools."
+ id = "xenobelt"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 2000)
+ build_path = /obj/item/storage/belt/xenoarch
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/xenorockback
+ name = "Xenoarchaeology Strange Rock Bag"
+ desc = "A bag used to store 10 strange rocks."
+ id = "xenorockback"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 2000)
+ build_path = /obj/item/storage/bag/strangerock
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/xenorockbackadv
+ name = "Xenoarchaeology Bluespace Strange Rock Bag"
+ desc = "A bluespace bag used to store 50 strange rocks."
+ id = "xenorockbackadv"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/plastic = 2000, /datum/material/bluespace = 1000)
+ build_path = /obj/item/storage/bag/strangerockadv
+ category = list("Tool Designs")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
\ No newline at end of file
diff --git a/modular_splurt/code/modules/research/xenoarch/tools.dmi b/modular_splurt/code/modules/research/xenoarch/tools.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..59b63a454f18acdd82711995d72d26ee90a81d67
GIT binary patch
literal 8887
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
literal 0
HcmV?d00001
diff --git a/modular_splurt/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi b/modular_splurt/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..1bdf1e3ea825bf25027116de0df8260a45e0f8da
GIT binary patch
literal 4749
zcmZu#byU<(*Z=Oa$kHIOfauaCjda5jqQH_rK