/obj/item/xenoarch name = "Parent Xenoarch" desc = "Debug. Parent Clean" icon = 'GainStation13/code/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) for(var/datum/export/E in ex.total_amount) var/export_text = E.total_printout(ex) if(!export_text) continue var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) if(D) D.adjust_money(ex.total_value[E]) to_chat(user,"You sell the [target].") // Storage: Belt and Locker and Bag /obj/item/storage/bag/strangerock name = "strange rock bag" desc = "A bag for strange rocks." icon = 'GainStation13/code/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 = 'GainStation13/code/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 = 'GainStation13/code/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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") 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("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE /obj/item/paper/fluff/stations/lavaland/xenoarch name = "xenoarchaeology notice" info = "XENOARCHAEOLOGY GUIDE

So you want to figure out xenoarchaeology? Well, it's easy to learn and can be 'fun' to pick up!

First, make sure you mine some rocks and find those weird, strange rocks that are occasionally found.
Then, bring them back safely to the facility, or somewhere... ANYWHERE really. Just be cautious of onlookers!
Next, take your depth scanner and scan the sucker.

It'll have a base depth and a safe depth. These depths are important:

1) Base depth is the deepest the relic can be within the rock.
2) Safe depth is the depth from the base depth that is the earliest it will appear FROM the base depth.

Essentially, take the base depth and subtract the safe depth from it. Mine to this point and start to brush brush brush!
For example: You get a rock that has a base depth of 30 and a safe depth of 10. How deep should you mine?

You should mine to 20, and then start brushing away. Eventually you'll get the relic!

Hopefully this helps! If not well... I don't know what to tell you.

Peace!
Kobe Ivanov,
P-A Xenoarchaeologist"