From 89409ee834293d804eabf8374cbb59ce9f9e836c Mon Sep 17 00:00:00 2001 From: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com> Date: Thu, 16 Jul 2020 23:33:06 -0400 Subject: [PATCH] adding xenoarch --- code/game/area/Space_Station_13_areas.dm | 33 + code/modules/research/xenoarch/artifact.dm | 91 +++ .../research/xenoarch/artifact_list.dm | 72 +++ .../research/xenoarch/fossil_and_artifact.dmi | Bin 0 -> 9522 bytes .../modules/research/xenoarch/strange_rock.dm | 131 ++++ code/modules/research/xenoarch/tools.dm | 573 ++++++++++++++++++ code/modules/research/xenoarch/tools.dmi | Bin 0 -> 8887 bytes .../xenoarch/xenobotany/grown/amauri.dm | 28 + .../xenoarch/xenobotany/grown/gelthi.dm | 28 + .../xenoarch/xenobotany/grown/jurlmah.dm | 28 + .../xenoarch/xenobotany/grown/nofruit.dm | 28 + .../xenoarch/xenobotany/grown/shand.dm | 28 + .../xenoarch/xenobotany/grown/surik.dm | 28 + .../xenoarch/xenobotany/grown/telriis.dm | 28 + .../xenoarch/xenobotany/grown/thaadra.dm | 28 + .../xenoarch/xenobotany/grown/vale.dm | 28 + .../xenoarch/xenobotany/grown/vaporsac.dm | 28 + .../xenoarch/xenobotany/icons/growing.dmi | Bin 0 -> 16322 bytes .../xenoarch/xenobotany/icons/harvests.dmi | Bin 0 -> 4749 bytes .../xenoarch/xenobotany/icons/seeds.dmi | Bin 0 -> 2600 bytes icons/effects/ore_visuals.dmi | Bin 22791 -> 23454 bytes icons/turf/areas.dmi | Bin 38089 -> 38870 bytes 22 files changed, 1180 insertions(+) create mode 100644 code/modules/research/xenoarch/artifact.dm create mode 100644 code/modules/research/xenoarch/artifact_list.dm create mode 100644 code/modules/research/xenoarch/fossil_and_artifact.dmi create mode 100644 code/modules/research/xenoarch/strange_rock.dm create mode 100644 code/modules/research/xenoarch/tools.dm create mode 100644 code/modules/research/xenoarch/tools.dmi create mode 100644 code/modules/research/xenoarch/xenobotany/grown/amauri.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/gelthi.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/jurlmah.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/nofruit.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/shand.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/surik.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/telriis.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/thaadra.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/vale.dm create mode 100644 code/modules/research/xenoarch/xenobotany/grown/vaporsac.dm create mode 100644 code/modules/research/xenoarch/xenobotany/icons/growing.dmi create mode 100644 code/modules/research/xenoarch/xenobotany/icons/harvests.dmi create mode 100644 code/modules/research/xenoarch/xenobotany/icons/seeds.dmi 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 0000000000000000000000000000000000000000..b052622086427846c5a33d737488014e24a67375 GIT binary patch literal 9522 zcmaJ{WmH^2lSKmr1_sox8oC-KYWHoF0Avpv}*^fAyZkIpx;)5DogoKslncp3K5lWN4_voG{aD z?1@#W`9Wmy2`~8W_9=VSaG((XkI_KHTTHa5Khy)*!gNHq$qW#%Y@s%bLexQ;5VvgS zL@IT+Z4$@m%j*uiLDc+vahJ{I^$30*kVL|is)Az;w9^g zC{LZOe1)#$-izxXI5}bZCYH$%H#j&dI3-yrZQp{E!T>kC#lka*M2hkmQa0)oUsRg>8dy6$YVQa-9kqZQ*|BX5a+celvdPog z29iNaLIU`Reh!w+Elzk`iUbPq2xp8nnYm3~+DbbmJLY7Y+=&#n&7 z?h7~mO^S@F1^wY)j4d>p(9O5X0r8;(9&i5*aZf60Eg`SLa%_}>Zj$3yfdra^(#@|4 zqMI+zkNCi~q`L#wLFpTJp81d!3iXgydU|>lRn$M6)M$NiG zF8>H0U}0Jsj`Qm7E}eL>tCSD&1y$3cODE~?$3St4bw4bLp!-ZA(7N$r2;COV(cTNN z^KvfR3_gw4YLj<5Fxx7^1NWcH!@iwiy^VgC z&YjEqrM{3pZll5p2>h3e=+EorI$d0jV6EwsVl;uc?^ofi-SRvq5RjRY658FY1nI5~{FLDLUDKS@%6n~Up>--rqRHlA7{*s^zLbITVv*1f==hd$Y zW^-B2!3!z9G;OiI?A*(`*>M1|d)p`Zv_mxFqdOIF>d^z?4J{fa+H1m(UX;%yzYk;c z4tnXg+2B30UgVT9&hJZ_6)JjvhQUUQ^dyHzGuY zo}M%s3724w$_aljgoVgkY$O4FZw@~Bf=o~Q0s@Rh+|dMAbJ7mZtXkKy7*iXi!eGZ~ zdcQ_l&O+DrIQ9)n2|GkMR=uWQG1YyxsGa^|@8yW8zeaJHK_ql{5P7F59gO;drV&Np z?go;J0K=8VF)N&`2q?JTS&E~@E<9Wb82vdP?bk|% z;hU4+w*o|irxqtG01|>2y;goYaXy)MM6TN;QrM*`a*q8icXHQ9!zDceF&*BWD}9 z5y)hvR&f?(*)9oM6U{FS!aAMj-t}_d?1vxQzZ{;lf96qE!5O;5t~G}R63fp+F(}MJ z+kP0iFKFEWL^*U3YB_PZT;4o<>8WsFb-;(a=Axj}%^YTp8pMQ!u?lBBt4ChB1$fPdrOCXd?R|Iod9{w@L^>gD^Ew zgEtEnB(${}aES28M^-xFHC{pJ*qId5tQCl$=g}dV1QEIQz*Y{8BVI&HeW@k<$VFVU zGkVP+I(|xs1i=%}TNet$Miwt%0DH40g8z8lLP|;Kq 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..59b63a454f18acdd82711995d72d26ee90a81d67 GIT binary patch literal 8887 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1bdf1e3ea825bf25027116de0df8260a45e0f8da GIT binary patch literal 4749 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 OfQKqth$l&vE32#+iogCc9z zLKsWLc$kJTJeDkt{nhi|d*0`t_m6u&=iGbGJ@?#m?)l#2+qaB4&Iz9b0D!~P#K7W= z*fVosVLI~@;o+udcoS}E8)V=X=o;XK3G(to13*|o`fxL6rvm#Uvc`jRm4$kwFLLGl z)RDG0LkHwCqlPJYOXzZ~cwM3MLGInorZ$z|EPY)Co_yS9;Jh_cs0!Va#l}%SJcmcJ zd8OwoaI4E;y5$^fDF_MmDf=eExzMy@3~fg^cpM%im>e1GKkH_o;vb z_nw~Gn=WfABjZh9WFQO47m?(nv{~vfD)E~XmX}=y2VI+RB zRA2t(!@W3}S6r|!1V@6?CbH}z*qbOq8`(U{kuJ(2sTn~o&fvfzKU+M*PAI1j^r%#- z{=IwRa5R4s25%M_QFn>3(2 zJft123J6ySTW#}(f=a&8!!t@jm1BV>l~S>mk-(-0LZMauuaTo)naK>Ls^*&Rk)vW6 z2~ACr2M-mf>6XesQEmQiIDK<%rUsSOiGH_w(B@8G9~v1yv7*s$H1jK+X&dV8 zRPw32?RfKxfB0k z{FwTwxu%qAP&-RW(mG;=zTbCx^CVIUE z{y6d;gHbiyct5@XZ-ENs;a*!{l*2J=@Rr+sqNFN|mQyX8U%e_h{jJo68eB9xVcD*S zSw$EUv>=ADmYlE3m_k8#JleG;RttX=hxW7ir9Zgqtjv0Nt;1nqzwJ_`4)UA51Bj}z z5q_*XKNB;*>iif0kgL?VqPw_;hTy;8=K&I0?E2djX}AWp&6`&ZHh}rR!E$7q?1h>Gj@cI9!`y zN`_+`tvhmpaF?Q;|Ng{d=XmR9!s6WQW~NFjlIK+}>jdF-Of#l#GOliTPbl}a-~ChG z%AhT5y3z@z%GJ0dirL^g^&uUCOnL-T;}(l4CO%Sw<}x}!xAb?(hl@~-&*qnPfHXTP zyae>qKNr&B3B{w;5QyI^V|%`78Y?5BABPWw)DC;to$&8pu^J$)HKFZJEMskeOku_m z4VDY#bu0Vt#k0W($tP-5*Gb=^ra7^)aQ0WNbuX+{L|kw~OzrBiG1o*6oQV&Ca2a_* zam%ZS82VB%t31OfdFYJt>}(j6aCuS~ZCR-Jc#U|1D8Vutisz{w*Eh16kh_hLvj}G17XttF0ax zMl7+Xs2P&cGiKX5rzby868iRL;b*}difvXq55)rwv-@&a2Y=PLcs$$hO`}4V4_NvEjD@DAj zuZzuT2=Y*8Hmy14QcchKrFQ(BN8}0DWY*H$!%v$>k|)i{+cU)zehi?aV_>jLApYME zBV%3dQNT{t?tLSJ?QQVCXvQxgp#=l_4>5mpS>Sf>+QM{!2HHf0WCD~)F%{3Q;QK7Q zw~%5ocq85}jqRe~iKJG*x0IdzCD$puIHUJgjk$+NuI^8$=B28e3A@XFTW_PT?By0Y zsSI84fumP%y*?G_J?-I9hB$GnoV9A9ICV?)R^;wxM34jbGoRl((~_`-Zhl#LdC`>> z)(W@81Sv%=Ew_BufMG3h#JYWIZ&$vHRdwGRty%G0bY0j5 zxf;}dc4wAgq7;2&1ZmS@Pv+3n=LuxN=k&0_PPRNhiWA@bZ0Hp^$JmD$)(AdB&hWzV z*)*vSH%@c#9P_9UIw11R*F2@Prd|MB!TLP~x-q8kK_3aV+5&M1#1bwO06=z+uVm_O zcJyP7-uZQZk%*ww^OxJEmkN4_t71rlaHuDX zDkvQ^AL=jc`EjldqUd}QeJ1$*xXdl9^oo8wIDJiP5iJszj*#+3N?G8s0K^qwf;?A7o77&;S4c literal 0 HcmV?d00001 diff --git a/icons/effects/ore_visuals.dmi b/icons/effects/ore_visuals.dmi index 1353a2d814ad318313b994ee7490af4e58840184..c9e3a38ddd25e102b0cc2ce42d24ce76901deae3 100644 GIT binary patch delta 6220 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 K)Z;^bm;VPSu^>bM delta 5542 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 BPyzq| diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 992b37cc3dd8cd5d88717e306a5276817411b993..a2d27c62f36fdd166b4978ef45ca5375d72133f7 100644 GIT binary patch delta 10463 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 delta 9677 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 cp|P52WUF5oXgE%