diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 5f780eca..b0e9956b 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -1334,3 +1334,36 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/tcommsat/lounge name = "Telecommunications Satellite Lounge" icon_state = "tcomsatlounge" + +/************* +***XENOARCH*** +*************/ + +/area/xenoarch + icon = 'modular_skyrat/icons/turf/areas.dmi' + icon_state = "xenogen" + has_gravity = STANDARD_GRAVITY + +/area/xenoarch/arch + name = "Xenoarchaeology" + icon_state = "xenoarch" + +/area/xenoarch/bot + name = "Xenoarchaeology Botany" + icon_state = "xenobot" + +/area/xenoarch/eng + name = "Xenoarchaeology Engineering" + icon_state = "xenoeng" + +/area/xenoarch/gen + name = "Xenoarchaeology Living Quarters" + icon_state = "xenogen" + +/area/xenoarch/sec + name = "Xenoarchaeology Security" + icon_state = "xenosec" + +/area/xenoarch/med + name = "Xenoarchaeology Medical" + icon_state = "xenomed" diff --git a/code/modules/research/xenoarch/artifact.dm b/code/modules/research/xenoarch/artifact.dm new file mode 100644 index 00000000..508248a5 --- /dev/null +++ b/code/modules/research/xenoarch/artifact.dm @@ -0,0 +1,91 @@ +/obj/item/ancientartifact + name = "Admin Debug. Parent Artifact" + desc = "You shouldn't have this." + icon = 'modular_skyrat/code/modules/research/xenoarch/fossil_and_artifact.dmi' + +/obj/item/ancientartifact/Initialize() + ..() + +// + +/datum/export/artifacts + cost = 2000 //Big cash + unit_name = "useless artifact" + export_types = list(/obj/item/ancientartifact/useless) + +/datum/export/artifacts + cost = 4000 //Big cash + unit_name = "fossil artifact" + export_types = list(/obj/item/ancientartifact/faunafossil,/obj/item/ancientartifact/florafossil) + +// + +/obj/item/ancientartifact/useless + name = "nonfunctional artifact" + desc = "This artifact is nonfunctional... perhaps it can be researched or sold." + +/obj/item/ancientartifact/useless/Initialize() + icon_state = pick(list("urn","statuette","instrument","unknown1","unknown2","unknown3")) + ..() + +/obj/item/ancientartifact/useless/attackby(obj/item/W, mob/user, params) + if(istype(W,/obj/item/xenoarch/help/research)) + if(!do_after(user,100,target=src)) + to_chat(user,"You must stand still to analyze.") + return + SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = 2000)) + to_chat(user,"You successfully researched the artifact. You have gained 2000 research points.") + qdel(src) + +/obj/item/ancientartifact/faunafossil + name = "fauna fossil" + desc = "This is a fossil of an animal... seems dead." + +/obj/item/ancientartifact/faunafossil/Initialize() + icon_state = pick(list("bone1","bone2","bone3","bone4","bone5","bone6")) + ..() + +/obj/item/ancientartifact/faunafossil/attackby(obj/item/W, mob/user, params) + if(istype(W,/obj/item/xenoarch/help/research)) + if(!do_after(user,100,target=src)) + to_chat(user,"You must stand still to analyze.") + return + SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = 4000)) + to_chat(user,"You successfully researched the artifact. You have gained 4000 research points.") + qdel(src) + +/obj/item/ancientartifact/florafossil + name = "flora fossil" + desc = "This is a fossil of a plant... seems dead." + +/obj/item/ancientartifact/florafossil/Initialize() + icon_state = pick(list("plant1","plant2","plant3","plant4","plant5","plant6")) + ..() + +/obj/item/ancientartifact/florafossil/attackby(obj/item/W, mob/user, params) + if(istype(W,/obj/item/xenoarch/help/research)) + if(!do_after(user,100,target=src)) + to_chat(user,"You must stand still to analyze.") + return + SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = 4000)) + to_chat(user,"You successfully researched the artifact. You have gained 4000 research points.") + qdel(src) + if(istype(W,/obj/item/xenoarch/help/plant)) + if(!do_after(user,50,target=src)) + to_chat(user,"You need to stand still to extract the seeds.") + return + var/seed = pick(list( /obj/item/seeds/amauri, + /obj/item/seeds/gelthi, + /obj/item/seeds/jurlmah, + /obj/item/seeds/nofruit, + /obj/item/seeds/shand, + /obj/item/seeds/surik, + /obj/item/seeds/telriis, + /obj/item/seeds/thaadra, + /obj/item/seeds/vale, + /obj/item/seeds/vaporsac + )) + + new seed(get_turf(user)) + user.put_in_active_hand(seed) + qdel(src) diff --git a/code/modules/research/xenoarch/artifact_list.dm b/code/modules/research/xenoarch/artifact_list.dm new file mode 100644 index 00000000..1e2a39f7 --- /dev/null +++ b/code/modules/research/xenoarch/artifact_list.dm @@ -0,0 +1,72 @@ +GLOBAL_LIST_INIT(bas_artifact,list( /obj/item/kitchen/fork=1, + /obj/item/kitchen/knife=1, + /obj/item/toy/gun=1, + /obj/item/toy/sword=1, + /obj/item/toy/cards/deck=1, + /obj/item/toy/seashell=1, + /obj/item/shield/riot/roman/fake=1, + /obj/item/trash/plate=1, + /obj/item/extendohand=1, + /obj/item/tea_cup=1, + /obj/item/tea_plate=1, + /obj/item/ancientartifact/useless=11 + )) + +GLOBAL_LIST_INIT(adv_artifact,list( /obj/item/shield/riot/roman=1, + /obj/item/shield/riot/tower=1, + /obj/item/toy/figure/miner=1, + /obj/item/stack/telecrystal=1, + /obj/item/sharpener=1, + /obj/item/switchblade=1, + /obj/item/laser_pointer=1, + /obj/item/instrument/piano_synth=1, + /obj/item/megaphone=1, + /obj/item/spear/bonespear=1, + /obj/item/storage/backpack/satchel/bone=1, + /obj/item/gun/ballistic/bow/ashen=1, + /obj/item/clothing/accessory/talisman=1, + /obj/item/clothing/accessory/skullcodpiece=1, + /obj/item/clothing/gloves/bracer=1, + /obj/item/clothing/suit/hooded/cloak/goliath=1, + /obj/item/fireaxe/boneaxe=1, + /obj/item/storage/belt/quiver=1, + /obj/item/ammo_casing/caseless/arrow/bone=1, + /obj/item/ammo_casing/caseless/arrow/ash=1, + /obj/item/kitchen/knife/ritual=1, + /obj/item/slime_extract/grey=1, + /obj/item/ancientartifact/useless=5, + /obj/item/ancientartifact/faunafossil=10, + /obj/item/ancientartifact/florafossil=10 + )) + +GLOBAL_LIST_INIT(ult_artifact,list( /obj/item/nuke_core/supermatter_sliver=1, + /obj/item/clothing/gloves/thief=1, + /obj/item/storage/belt/sabre/rapier=1, + /obj/item/storage/box/syndie_kit/guardian=1, + /obj/item/flashlight/emp=1, + /obj/item/jammer=1, + /obj/item/encryptionkey/binary=1, + /obj/item/gun/medbeam=1, + /obj/item/storage/box/syndie_kit/imp_storage=1, + /obj/item/pen/edagger=1, + /obj/item/dice/d20/fate=1, + /obj/item/instrument/violin/golden=1, + /obj/item/healthanalyzer/rad_laser=1, + /obj/item/clothing/suit/hooded/cloak/drake=1, + /obj/item/crowbar/abductor=1, + /obj/item/screwdriver/abductor=1, + /obj/item/weldingtool/abductor=1, + /obj/item/wirecutters/abductor=1, + /obj/item/wrench/abductor=1, + /obj/item/multitool/abductor=1, + /obj/item/scalpel/alien=1, + /obj/item/hemostat/alien=1, + /obj/item/retractor/alien=1, + /obj/item/circular_saw/alien=1, + /obj/item/surgicaldrill/alien=1, + /obj/item/cautery/alien=1, + /obj/item/compressionkit=1, + /obj/item/circuitboard/machine/plantgenes/vault=1, + /obj/item/disk/design_disk/golem_shell=1, + /obj/item/disk/tech_disk/illegal=1 + )) diff --git a/code/modules/research/xenoarch/fossil_and_artifact.dmi b/code/modules/research/xenoarch/fossil_and_artifact.dmi new file mode 100644 index 00000000..b0526220 Binary files /dev/null and b/code/modules/research/xenoarch/fossil_and_artifact.dmi differ diff --git a/code/modules/research/xenoarch/strange_rock.dm b/code/modules/research/xenoarch/strange_rock.dm new file mode 100644 index 00000000..571cf702 --- /dev/null +++ b/code/modules/research/xenoarch/strange_rock.dm @@ -0,0 +1,131 @@ +/obj/item/strangerock + icon = 'modular_skyrat/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) + . = ..() diff --git a/code/modules/research/xenoarch/tools.dm b/code/modules/research/xenoarch/tools.dm new file mode 100644 index 00000000..52754672 --- /dev/null +++ b/code/modules/research/xenoarch/tools.dm @@ -0,0 +1,573 @@ +/obj/item/xenoarch + name = "Parent Xenoarch" + desc = "Debug. Parent Clean" + icon = 'modular_skyrat/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) + 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,"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_skyrat/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_skyrat/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_skyrat/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 diff --git a/code/modules/research/xenoarch/tools.dmi b/code/modules/research/xenoarch/tools.dmi new file mode 100644 index 00000000..59b63a45 Binary files /dev/null and b/code/modules/research/xenoarch/tools.dmi differ diff --git a/code/modules/research/xenoarch/xenobotany/grown/amauri.dm b/code/modules/research/xenoarch/xenobotany/grown/amauri.dm new file mode 100644 index 00000000..91506bc3 --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/amauri.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/amauri + name = "pack of amauri seeds" + desc = "These seeds grow into amauri plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "amauri" + species = "amauri" + plantname = "Amauri Plant" + product = /obj/item/reagent_containers/food/snacks/grown/amauri + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "amauri-stage" + growthstages = 3 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/mutationtoxin/shadow = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/amauri + seed = /obj/item/seeds/amauri + name = "amauri" + desc = "It's a little piece of amauri." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "amauri" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/mutationtoxin/shadow = 0) + tastes = list("shadow" = 1) \ No newline at end of file diff --git a/code/modules/research/xenoarch/xenobotany/grown/gelthi.dm b/code/modules/research/xenoarch/xenobotany/grown/gelthi.dm new file mode 100644 index 00000000..801417db --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/gelthi.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/gelthi + name = "pack of gelthi seeds" + desc = "These seeds grow into gelthi plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "gelthi" + species = "gelthi" + plantname = "Gelthi Plant" + product = /obj/item/reagent_containers/food/snacks/grown/gelthi + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "gelthi-stage" + growthstages = 3 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/gold = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/gelthi + seed = /obj/item/seeds/gelthi + name = "gelthi" + desc = "It's a little piece of gelthi." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "gelthi" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/gold = 0) + tastes = list("gold" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/jurlmah.dm b/code/modules/research/xenoarch/xenobotany/grown/jurlmah.dm new file mode 100644 index 00000000..8659588d --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/jurlmah.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/jurlmah + name = "pack of jurlmah seeds" + desc = "These seeds grow into jurlmah plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "jurlmah" + species = "jurlmah" + plantname = "Jurlmah Plant" + product = /obj/item/reagent_containers/food/snacks/grown/jurlmah + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "jurlmah-stage" + growthstages = 5 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/medicine/cryoxadone = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/jurlmah + seed = /obj/item/seeds/jurlmah + name = "jurlmah" + desc = "It's a little piece of jurlmah." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "jurlmah" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/medicine/cryoxadone = 0) + tastes = list("cold" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/nofruit.dm b/code/modules/research/xenoarch/xenobotany/grown/nofruit.dm new file mode 100644 index 00000000..ff4adf39 --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/nofruit.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/nofruit + name = "pack of nofruit seeds" + desc = "These seeds grow into nofruit plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "nofruit" + species = "nofruit" + plantname = "Nofruit Plant" + product = /obj/item/reagent_containers/food/snacks/grown/nofruit + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "nofruit-stage" + growthstages = 4 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/consumable/laughter = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/nofruit + seed = /obj/item/seeds/nofruit + name = "nofruit" + desc = "It's a little piece of nofruit." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "nofruit" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/consumable/nothing = 0) + tastes = list("entertainment" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/shand.dm b/code/modules/research/xenoarch/xenobotany/grown/shand.dm new file mode 100644 index 00000000..d7ac3488 --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/shand.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/shand + name = "pack of shand seeds" + desc = "These seeds grow into shand plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "shand" + species = "shand" + plantname = "Shand Plant" + product = /obj/item/reagent_containers/food/snacks/grown/shand + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "shand-stage" + growthstages = 3 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/pax = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/shand + seed = /obj/item/seeds/shand + name = "shand" + desc = "It's a little piece of shand." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "shand" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/pax = 0) + tastes = list("peace" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/surik.dm b/code/modules/research/xenoarch/xenobotany/grown/surik.dm new file mode 100644 index 00000000..7fbba5e5 --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/surik.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/surik + name = "pack of surik seeds" + desc = "These seeds grow into surik plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "surik" + species = "surik" + plantname = "Surik Plant" + product = /obj/item/reagent_containers/food/snacks/grown/surik + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "surik-stage" + growthstages = 4 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/consumable/frostoil = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/surik + seed = /obj/item/seeds/surik + name = "surik" + desc = "It's a little piece of surik." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "surik" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/consumable/frostoil = 0) + tastes = list("snow" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/telriis.dm b/code/modules/research/xenoarch/xenobotany/grown/telriis.dm new file mode 100644 index 00000000..c5c3897c --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/telriis.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/telriis + name = "pack of telriis seeds" + desc = "These seeds grow into telriis plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "telriis" + species = "telriis" + plantname = "Telriis Plant" + product = /obj/item/reagent_containers/food/snacks/grown/telriis + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "telriis-stage" + growthstages = 4 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/mutationtoxin/pod = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/telriis + seed = /obj/item/seeds/telriis + name = "telriis" + desc = "It's a little piece of telriis." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "telriis" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/mutationtoxin/pod = 0) + tastes = list("plant" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/thaadra.dm b/code/modules/research/xenoarch/xenobotany/grown/thaadra.dm new file mode 100644 index 00000000..2210e6af --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/thaadra.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/thaadra + name = "pack of thaadra seeds" + desc = "These seeds grow into thaadra plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "thaadra" + species = "thaadra" + plantname = "Thaadra Plant" + product = /obj/item/reagent_containers/food/snacks/grown/thaadra + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "thaadra-stage" + growthstages = 4 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/silver = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/thaadra + seed = /obj/item/seeds/thaadra + name = "thaadra" + desc = "It's a little piece of thaadra." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "thaadra" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/silver = 0) + tastes = list("silver" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/vale.dm b/code/modules/research/xenoarch/xenobotany/grown/vale.dm new file mode 100644 index 00000000..ca3019a2 --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/vale.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/vale + name = "pack of vale seeds" + desc = "These seeds grow into vale plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "vale" + species = "vale" + plantname = "Vale Plant" + product = /obj/item/reagent_containers/food/snacks/grown/vale + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "vale-stage" + growthstages = 4 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/slime_toxin = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/vale + seed = /obj/item/seeds/vale + name = "vale" + desc = "It's a little piece of vale." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "vale" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/slime_toxin = 0) + tastes = list("slime" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/grown/vaporsac.dm b/code/modules/research/xenoarch/xenobotany/grown/vaporsac.dm new file mode 100644 index 00000000..cf58f5ed --- /dev/null +++ b/code/modules/research/xenoarch/xenobotany/grown/vaporsac.dm @@ -0,0 +1,28 @@ +/obj/item/seeds/vaporsac + name = "pack of vaporsac seeds" + desc = "These seeds grow into vaporsac plants." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi' + icon_state = "vaporsac" + species = "vaporsac" + plantname = "Vaporsac Plant" + product = /obj/item/reagent_containers/food/snacks/grown/vaporsac + lifespan = 55 + endurance = 35 + yield = 5 + growing_icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/growing.dmi' + icon_grow = "vaporsac-stage" + growthstages = 3 + genes = list(/datum/plant_gene/trait/repeated_harvest) + reagents_add = list(/datum/reagent/nitrous_oxide = 0.1) + +/obj/item/reagent_containers/food/snacks/grown/vaporsac + seed = /obj/item/seeds/vaporsac + name = "vaporsac" + desc = "It's a little piece of vaporsac." + icon = 'modular_skyrat/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi' + icon_state = "vaporsac" + filling_color = "#FF4500" + bitesize = 100 + foodtype = FRUIT + juice_results = list(/datum/reagent/nitrous_oxide = 0) + tastes = list("sleep" = 1) diff --git a/code/modules/research/xenoarch/xenobotany/icons/growing.dmi b/code/modules/research/xenoarch/xenobotany/icons/growing.dmi new file mode 100644 index 00000000..c33bab44 Binary files /dev/null and b/code/modules/research/xenoarch/xenobotany/icons/growing.dmi differ diff --git a/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi b/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi new file mode 100644 index 00000000..1bdf1e3e Binary files /dev/null and b/code/modules/research/xenoarch/xenobotany/icons/harvests.dmi differ diff --git a/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi b/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi new file mode 100644 index 00000000..e1aa7739 Binary files /dev/null and b/code/modules/research/xenoarch/xenobotany/icons/seeds.dmi differ diff --git a/icons/effects/ore_visuals.dmi b/icons/effects/ore_visuals.dmi index 1353a2d8..c9e3a38d 100644 Binary files a/icons/effects/ore_visuals.dmi and b/icons/effects/ore_visuals.dmi differ diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 992b37cc..a2d27c62 100644 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ