From 3257a529ba622d3016aaaf7b9a519db811005c02 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Wed, 5 Dec 2012 04:44:42 +1000 Subject: [PATCH 01/66] fixed up the core sampler + gave it a placeholder sprite, made geo data actually persist across turfs and ores, cleaned up some new xenoarch stuff Signed-off-by: Cael_Aislinn --- code/modules/mining/mine_turfs.dm | 35 +++-- code/modules/mining/ores_materials_coins.dm | 10 +- .../research/xenoarchaeology/core_sampler.dm | 120 +++++++++++------- .../modules/research/xenoarchaeology/finds.dm | 23 +--- .../research/xenoarchaeology/geosample.dm | 17 ++- icons/obj/device.dmi | Bin 16615 -> 17186 bytes 6 files changed, 128 insertions(+), 77 deletions(-) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 7285b4628b0..192446d262b 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -16,6 +16,7 @@ var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles var/artifactChance = 0.3 //percent chance to spawn a xenoarchaelogical artifact var/last_act = 0 + var/datum/geosample/geological_data /turf/simulated/mineral/Del() return @@ -54,6 +55,9 @@ if (T) T.overlays += image('icons/turf/walls.dmi', "rock_side_e", layer=6) + src.geological_data = new /datum/geosample + src.geological_data.UpdateTurf(src) + if (mineralName && mineralAmt && spread && spreadChance) if(prob(spreadChance)) if(istype(get_step(src, SOUTH), /turf/simulated/mineral/random)) @@ -102,6 +106,9 @@ if(M) src = M M.levelupdate() + if(!geological_data) + src.geological_data = new /datum/geosample + src.geological_data.UpdateTurf(src) else if (prob(artifactChance)) //spawn a rare, xeno-arch artifact here new/obj/machinery/artifact(src) @@ -220,6 +227,11 @@ usr << "\red You don't have the dexterity to do this!" return + if (istype(W, /obj/item/device/core_sampler)) + var/obj/item/device/core_sampler/C = W + C.sample_item(src, user) + return + if (istype(W, /obj/item/weapon/pickaxe)) var/turf/T = user.loc if (!( istype(T, /turf) )) @@ -250,27 +262,34 @@ if ((src.mineralName != "") && (src.mineralAmt > 0) && (src.mineralAmt < 11)) var/i for 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 Date: Wed, 5 Dec 2012 04:46:45 +1000 Subject: [PATCH 02/66] added functional bunsen burner (with placeholder sprite), added capability for heated chem recipes, added preservation of data across chemical reactions for xenoarch (not sure if it actually works, seemed a bit buggy), added tungsten as a dispensable reagent for xenoarch Signed-off-by: Cael_Aislinn --- baystation12.dme | 1 + code/modules/reagents/Chemistry-Holder.dm | 37 +++++++++++- code/modules/reagents/Chemistry-Machinery.dm | 21 ++++++- code/modules/reagents/Chemistry-Recipes.dm | 2 + .../reagents/reagent_containers/glass.dm | 4 ++ .../research/xenoarchaeology/archaeo_chem.dm | 11 ++-- .../research/xenoarchaeology/bunsen_burner.dm | 58 +++++++++++++++++++ 7 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 code/modules/research/xenoarchaeology/bunsen_burner.dm diff --git a/baystation12.dme b/baystation12.dme index 5ab7609868a..70310f66450 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1301,6 +1301,7 @@ #include "code\modules\research\xenoarchaeology\artifact_harvester.dm" #include "code\modules\research\xenoarchaeology\artifact_misc.dm" #include "code\modules\research\xenoarchaeology\artifact_synthetic.dm" +#include "code\modules\research\xenoarchaeology\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\core_sampler.dm" #include "code\modules\research\xenoarchaeology\finds.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index f73c1797fa4..9065c68d7fb 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -204,6 +204,14 @@ datum do reaction_occured = 0 for(var/datum/chemical_reaction/C in chemical_reactions_list) + //check if this recipe needs to be heated to mix + if(C.requires_heating) + if(istype(my_atom.loc, /obj/machinery/bunsen_burner)) + if(!my_atom.loc:heated) + continue + else + continue + var/total_required_reagents = C.required_reagents.len var/total_matching_reagents = 0 var/total_required_catalysts = C.required_catalysts.len @@ -242,7 +250,14 @@ datum if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other) var/multiplier = min(multipliers) - for(var/B in C.required_reagents) + //try and grab any data so we can preserve it across reactions + //added for xenoarchaeology, might be used for other things but this is a bit dodge + var/preserved_data = null + for(var/B in src.reagent_list) + if(!preserved_data) + var/temp_data = get_data(B) + if(temp_data) + preserved_data = temp_data remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1) var/created_volume = C.result_amount*multiplier @@ -250,6 +265,11 @@ datum feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") multiplier = max(multiplier, 1) //this shouldnt happen ... add_reagent(C.result, C.result_amount*multiplier) + set_data(C.result, preserved_data) + + //add secondary products + for(var/S in C.secondary_results) + add_reagent(S, C.result_amount * C.secondary_results[S] * multiplier) if(!isliving(my_atom)) for(var/mob/M in viewers(4, get_turf(my_atom)) ) @@ -442,6 +462,21 @@ datum return res + //two slightly dodge helper functions to preserve data across reactions (needed for xenoarch) + get_data(var/reagent_id) + for(var/R in reagent_list) + var/datum/reagent/D = reagent_list[R] + if(D.id == reagent_id) + world << "proffering a data-carrying reagent ([reagent_id])" + return D.data + + set_data(var/reagent_id, var/new_data) + for(var/R in reagent_list) + var/datum/reagent/D = reagent_list[R] + if(D.id == reagent_id) + world << "reagent data set ([reagent_id])" + D.data = new_data + /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index f8d22288bd5..01eef07caf0 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -17,7 +17,7 @@ var/recharged = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", - "copper","mercury","radium","water","ethanol","sugar","sacid","milk") + "copper","mercury","radium","water","ethanol","sugar","sacid","tungsten","milk") /obj/machinery/chem_dispenser/proc/recharge() if(stat & (BROKEN|NOPOWER)) return @@ -734,6 +734,8 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0), + //archaeology! + /obj/item/weapon/rocksliver = list("ground_rock" = 50), //All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.! @@ -995,7 +997,8 @@ inuse = 1 spawn(60) inuse = 0 - interact(usr) + if(get_dist(usr,src) < 2) + interact(usr) //Snacks and Plants for (var/obj/item/weapon/reagent_containers/food/snacks/O in holdingitems) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) @@ -1061,6 +1064,20 @@ break remove_object(O) + //xenoarch + for(var/obj/item/weapon/rocksliver/O in holdingitems) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + var/allowed = get_allowed_by_id(O) + for (var/r_id in allowed) + var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume + var/amount = allowed[r_id] + beaker.reagents.add_reagent(r_id,min(amount, space), O.geological_data) + + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + remove_object(O) + //Everything else - Transfers reagents from it into beaker for (var/obj/item/weapon/reagent_containers/O in holdingitems) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index b1e972b502d..0c849879d05 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -13,6 +13,8 @@ datum var/result_amount = 0 var/secondary = 0 // set to nonzero if secondary reaction + var/list/secondary_results = list() //additional reagents produced by the reaction + var/requires_heating = 0 proc on_reaction(var/datum/reagents/holder, var/created_volume) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 3a89cef6dd4..5f2db222668 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -83,6 +83,10 @@ else if(istype(target, /obj/item/clothing/suit/space/space_ninja)) return + //bunsen burner handles all of this as well + else if(istype(target, /obj/machinery/bunsen_burner)) + return + else if(reagents.total_volume) user << "\blue You splash the solution onto [target]." src.reagents.reaction(target, TOUCH) diff --git a/code/modules/research/xenoarchaeology/archaeo_chem.dm b/code/modules/research/xenoarchaeology/archaeo_chem.dm index 4b81fd774b1..a39120e7864 100644 --- a/code/modules/research/xenoarchaeology/archaeo_chem.dm +++ b/code/modules/research/xenoarchaeology/archaeo_chem.dm @@ -1,6 +1,5 @@ //chemistry stuff here so that it can be easily viewed/modified -/* datum reagent tungsten //used purely to make lith-sodi-tungs @@ -20,18 +19,18 @@ datum ground_rock name = "Ground Rock" id = "ground_rock" - description = "A fine dust made of ground up geological samples." + description = "A fine dust made of ground up rock." reagent_state = SOLID color = "#C81040" //rgb: 200, 16, 64 //todo: make this brown density_separated_sample - name = "Density separated sample" + name = "Analysis sample" id = "density_separated_sample" - description = "A watery paste which has had density separation applied to its contents." + description = "A watery paste used in chemical analysis." reagent_state = LIQUID color = "#C81040" //rgb: 200, 16, 64 - //todo: make this white + //todo: make this browny-white analysis_sample name = "Analysis sample" @@ -57,6 +56,7 @@ datum result = "lithiumsodiumtungstate" required_reagents = list("lithium" = 1, "sodium" = 2, "tungsten" = 1, "oxygen" = 4) result_amount = 8 + requires_heating = 1 density_separated_liquid name = "Density separated sample" @@ -74,4 +74,3 @@ datum required_reagents = list("density_separated_sample" = 5) result_amount = 4 requires_heating = 1 -*/ \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/bunsen_burner.dm b/code/modules/research/xenoarchaeology/bunsen_burner.dm new file mode 100644 index 00000000000..bbb3d0c9c94 --- /dev/null +++ b/code/modules/research/xenoarchaeology/bunsen_burner.dm @@ -0,0 +1,58 @@ + +/obj/machinery/bunsen_burner + name = "bunsen burner" + desc = "A flat, self-heating device designed for bringing chemical mixtures to boil." + icon = 'icons/obj/device.dmi' + icon_state = "bunsen0" + var/heating = 0 //whether the bunsen is turned on + var/heated = 0 //whether the bunsen has been on long enough to let stuff react + var/obj/item/weapon/reagent_containers/held_container + var/heat_time = 50 + +/obj/machinery/bunsen_burner/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/reagent_containers)) + if(held_container) + user << "\red You must remove the [held_container] first." + else + user.drop_item(src) + held_container = W + held_container.loc = src + user << "\blue You put the [held_container] onto the [src]." + var/image/I = image("icon"=W, "layer"=FLOAT_LAYER) + underlays += I + if(heating) + spawn(heat_time) + try_heating() + else + user << "\red You can't put the [W] onto the [src]." + + + +/obj/machinery/bunsen_burner/attack_hand(mob/user as mob) + if(held_container) + underlays = null + user << "\blue You remove the [held_container] from the [src]." + held_container.loc = src.loc + held_container.attack_hand(user) + held_container = null + else + user << "\red There is nothing on the [src]." + +/obj/machinery/bunsen_burner/proc/try_heating() + if(held_container && heating) + heated = 1 + held_container.reagents.handle_reactions() + heated = 0 + spawn(heat_time) + try_heating() + +/obj/machinery/bunsen_burner/verb/toggle() + set src in oview(1) + set name = "Toggle bunsen burner" + set category = "IC" + + heating = !heating + icon_state = "bunsen[heating]" + if(heating) + spawn(heat_time) + try_heating() From 21e00aa5dc4b2932dce1a305bc48ddb2b3f99be2 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Wed, 5 Dec 2012 04:55:50 +1000 Subject: [PATCH 03/66] some tweaks --- code/modules/reagents/Chemistry-Holder.dm | 4 +++- code/modules/research/xenoarchaeology/archaeo_chem.dm | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 9065c68d7fb..84a2ca14529 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -253,7 +253,7 @@ datum //try and grab any data so we can preserve it across reactions //added for xenoarchaeology, might be used for other things but this is a bit dodge var/preserved_data = null - for(var/B in src.reagent_list) + for(var/B in C.required_reagents) if(!preserved_data) var/temp_data = get_data(B) if(temp_data) @@ -464,6 +464,7 @@ datum //two slightly dodge helper functions to preserve data across reactions (needed for xenoarch) get_data(var/reagent_id) + world << "attempting to get data ([reagent_id])" for(var/R in reagent_list) var/datum/reagent/D = reagent_list[R] if(D.id == reagent_id) @@ -471,6 +472,7 @@ datum return D.data set_data(var/reagent_id, var/new_data) + world << "attempting to set data ([reagent_id])" for(var/R in reagent_list) var/datum/reagent/D = reagent_list[R] if(D.id == reagent_id) diff --git a/code/modules/research/xenoarchaeology/archaeo_chem.dm b/code/modules/research/xenoarchaeology/archaeo_chem.dm index a39120e7864..1ebbe66111e 100644 --- a/code/modules/research/xenoarchaeology/archaeo_chem.dm +++ b/code/modules/research/xenoarchaeology/archaeo_chem.dm @@ -56,7 +56,6 @@ datum result = "lithiumsodiumtungstate" required_reagents = list("lithium" = 1, "sodium" = 2, "tungsten" = 1, "oxygen" = 4) result_amount = 8 - requires_heating = 1 density_separated_liquid name = "Density separated sample" From 8ae901e49d7e0a164aa76bba370cf939ccf7b5ff Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Wed, 5 Dec 2012 11:52:19 +1000 Subject: [PATCH 04/66] fixed data preservation, removed debugging Signed-off-by: Cael_Aislinn --- code/modules/reagents/Chemistry-Holder.dm | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 84a2ca14529..07919599335 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -464,20 +464,14 @@ datum //two slightly dodge helper functions to preserve data across reactions (needed for xenoarch) get_data(var/reagent_id) - world << "attempting to get data ([reagent_id])" - for(var/R in reagent_list) - var/datum/reagent/D = reagent_list[R] - if(D.id == reagent_id) - world << "proffering a data-carrying reagent ([reagent_id])" - return D.data + for(var/datum/reagent/R in reagent_list) + if(R.id == reagent_id) + return R.data set_data(var/reagent_id, var/new_data) - world << "attempting to set data ([reagent_id])" - for(var/R in reagent_list) - var/datum/reagent/D = reagent_list[R] - if(D.id == reagent_id) - world << "reagent data set ([reagent_id])" - D.data = new_data + for(var/datum/reagent/R in reagent_list) + if(R.id == reagent_id) + R.data = new_data /////////////////////////////////////////////////////////////////////////////////// From e3d326a199543214bac8fe70819a558cdf1de074 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Tue, 11 Dec 2012 12:34:39 +1000 Subject: [PATCH 05/66] new analysis machines, fleshed out some existing ones to be functional, new chemical reagents, Signed-off-by: Cael_Aislinn --- baystation12.dme | 235 +--------------- code/modules/mining/mine_turfs.dm | 8 +- .../research/xenoarchaeology/analysis.dm | 140 ++++++++++ .../xenoarchaeology/analysis_accelerator.dm | 6 + .../analysis_fourier_transform.dm | 36 +++ .../analysis_gas_chromatography.dm | 80 ++++++ .../xenoarchaeology/analysis_hyperspectral.dm | 6 + .../xenoarchaeology/analysis_ion_mobility.dm | 6 + .../xenoarchaeology/analysis_radiometric.dm | 6 + .../xenoarchaeology/analysis_scanner.dm | 8 + .../research/xenoarchaeology/archaeo_chem.dm | 48 +++- .../xenoarchaeology/archaeo_machinery.dm | 119 -------- .../research/xenoarchaeology/crystal.dm | 213 ++++++++++++++ .../modules/research/xenoarchaeology/finds.dm | 262 ------------------ .../research/xenoarchaeology/fossils.dm | 84 ++++++ .../research/xenoarchaeology/geosample.dm | 19 +- .../xenoarchaeology/global_placeholder.dm | 13 + icons/obj/device.dmi | Bin 17186 -> 17214 bytes 18 files changed, 667 insertions(+), 622 deletions(-) create mode 100644 code/modules/research/xenoarchaeology/analysis.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_accelerator.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_fourier_transform.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_hyperspectral.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_ion_mobility.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_radiometric.dm create mode 100644 code/modules/research/xenoarchaeology/analysis_scanner.dm delete mode 100644 code/modules/research/xenoarchaeology/archaeo_machinery.dm create mode 100644 code/modules/research/xenoarchaeology/crystal.dm create mode 100644 code/modules/research/xenoarchaeology/fossils.dm create mode 100644 code/modules/research/xenoarchaeology/global_placeholder.dm diff --git a/baystation12.dme b/baystation12.dme index 9063b0fda61..8a293d2f4e6 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -7,229 +7,11 @@ // BEGIN_FILE_DIR #define FILE_DIR . #define FILE_DIR "code" -#define FILE_DIR "code/ATMOSPHERICS" -#define FILE_DIR "code/ATMOSPHERICS/components" -#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices" -#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices" -#define FILE_DIR "code/ATMOSPHERICS/components/unary" -#define FILE_DIR "code/controllers" -#define FILE_DIR "code/datums" -#define FILE_DIR "code/datums/diseases" -#define FILE_DIR "code/datums/helper_datums" -#define FILE_DIR "code/datums/organs" -#define FILE_DIR "code/datums/spells" -#define FILE_DIR "code/defines" -#define FILE_DIR "code/defines/obj" -#define FILE_DIR "code/defines/obj/clothing" -#define FILE_DIR "code/defines/procs" -#define FILE_DIR "code/defines/sd_procs" -#define FILE_DIR "code/FEA" -#define FILE_DIR "code/game" -#define FILE_DIR "code/game/area" -#define FILE_DIR "code/game/events" -#define FILE_DIR "code/game/events/EventProcs" -#define FILE_DIR "code/game/events/Events" -#define FILE_DIR "code/game/gamemodes" -#define FILE_DIR "code/game/gamemodes/autotraitor" -#define FILE_DIR "code/game/gamemodes/blob" -#define FILE_DIR "code/game/gamemodes/blob/blobs" -#define FILE_DIR "code/game/gamemodes/changeling" -#define FILE_DIR "code/game/gamemodes/cult" -#define FILE_DIR "code/game/gamemodes/epidemic" -#define FILE_DIR "code/game/gamemodes/events" -#define FILE_DIR "code/game/gamemodes/events/holidays" -#define FILE_DIR "code/game/gamemodes/extended" -#define FILE_DIR "code/game/gamemodes/malfunction" -#define FILE_DIR "code/game/gamemodes/meme" -#define FILE_DIR "code/game/gamemodes/meteor" -#define FILE_DIR "code/game/gamemodes/nuclear" -#define FILE_DIR "code/game/gamemodes/revolution" -#define FILE_DIR "code/game/gamemodes/sandbox" -#define FILE_DIR "code/game/gamemodes/traitor" -#define FILE_DIR "code/game/gamemodes/wizard" -#define FILE_DIR "code/game/jobs" -#define FILE_DIR "code/game/jobs/job" -#define FILE_DIR "code/game/machinery" -#define FILE_DIR "code/game/machinery/atmoalter" -#define FILE_DIR "code/game/machinery/bots" -#define FILE_DIR "code/game/machinery/camera" -#define FILE_DIR "code/game/machinery/computer" -#define FILE_DIR "code/game/machinery/doors" -#define FILE_DIR "code/game/machinery/embedded_controller" -#define FILE_DIR "code/game/machinery/kitchen" -#define FILE_DIR "code/game/machinery/pipe" -#define FILE_DIR "code/game/machinery/telecomms" -#define FILE_DIR "code/game/magic" -#define FILE_DIR "code/game/mecha" -#define FILE_DIR "code/game/mecha/combat" -#define FILE_DIR "code/game/mecha/equipment" -#define FILE_DIR "code/game/mecha/equipment/tools" -#define FILE_DIR "code/game/mecha/equipment/weapons" -#define FILE_DIR "code/game/mecha/medical" -#define FILE_DIR "code/game/mecha/working" -#define FILE_DIR "code/game/objects" -#define FILE_DIR "code/game/objects/closets" -#define FILE_DIR "code/game/objects/closets/secure" -#define FILE_DIR "code/game/objects/effects" -#define FILE_DIR "code/game/objects/effects/decals" -#define FILE_DIR "code/game/objects/effects/decals/Cleanable" -#define FILE_DIR "code/game/objects/effects/spawners" -#define FILE_DIR "code/game/objects/items" -#define FILE_DIR "code/game/objects/items/devices" -#define FILE_DIR "code/game/objects/items/devices/PDA" -#define FILE_DIR "code/game/objects/items/devices/radio" -#define FILE_DIR "code/game/objects/items/robot" -#define FILE_DIR "code/game/objects/items/stacks" -#define FILE_DIR "code/game/objects/items/stacks/sheets" -#define FILE_DIR "code/game/objects/items/stacks/tiles" -#define FILE_DIR "code/game/objects/items/weapons" -#define FILE_DIR "code/game/objects/items/weapons/grenades" -#define FILE_DIR "code/game/objects/items/weapons/implants" -#define FILE_DIR "code/game/objects/items/weapons/secstorage" -#define FILE_DIR "code/game/objects/items/weapons/storage" -#define FILE_DIR "code/game/objects/items/weapons/tanks" -#define FILE_DIR "code/game/objects/storage" -#define FILE_DIR "code/game/objects/structures" -#define FILE_DIR "code/game/objects/structures/crates_lockers" -#define FILE_DIR "code/game/objects/structures/crates_lockers/closets" -#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure" -#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest" -#define FILE_DIR "code/game/player" -#define FILE_DIR "code/game/structure" -#define FILE_DIR "code/game/turfs" -#define FILE_DIR "code/game/turfs/simulated" -#define FILE_DIR "code/game/turfs/space" -#define FILE_DIR "code/game/turfs/unsimulated" -#define FILE_DIR "code/game/vehicles" -#define FILE_DIR "code/game/vehicles/airtight" -#define FILE_DIR "code/game/verbs" -#define FILE_DIR "code/js" -#define FILE_DIR "code/modules" -#define FILE_DIR "code/modules/admin" -#define FILE_DIR "code/modules/admin/DB ban" -#define FILE_DIR "code/modules/admin/permissionverbs" -#define FILE_DIR "code/modules/admin/verbs" -#define FILE_DIR "code/modules/assembly" -#define FILE_DIR "code/modules/awaymissions" -#define FILE_DIR "code/modules/awaymissions/maploader" -#define FILE_DIR "code/modules/chemical" -#define FILE_DIR "code/modules/client" -#define FILE_DIR "code/modules/clothing" -#define FILE_DIR "code/modules/clothing/glasses" -#define FILE_DIR "code/modules/clothing/gloves" -#define FILE_DIR "code/modules/clothing/head" -#define FILE_DIR "code/modules/clothing/masks" -#define FILE_DIR "code/modules/clothing/shoes" -#define FILE_DIR "code/modules/clothing/spacesuits" -#define FILE_DIR "code/modules/clothing/suits" -#define FILE_DIR "code/modules/clothing/under" -#define FILE_DIR "code/modules/clothing/under/jobs" -#define FILE_DIR "code/modules/clothing/uniforms" -#define FILE_DIR "code/modules/critters" -#define FILE_DIR "code/modules/critters/hivebots" -#define FILE_DIR "code/modules/customitems" -#define FILE_DIR "code/modules/DetectiveWork" -#define FILE_DIR "code/modules/flufftext" -#define FILE_DIR "code/modules/food" -#define FILE_DIR "code/modules/genetics" -#define FILE_DIR "code/modules/icon generation" -#define FILE_DIR "code/modules/library" -#define FILE_DIR "code/modules/liquid" -#define FILE_DIR "code/modules/maps" -#define FILE_DIR "code/modules/mining" -#define FILE_DIR "code/modules/mob" -#define FILE_DIR "code/modules/mob/dead" -#define FILE_DIR "code/modules/mob/dead/observer" -#define FILE_DIR "code/modules/mob/living" -#define FILE_DIR "code/modules/mob/living/blob" -#define FILE_DIR "code/modules/mob/living/carbon" -#define FILE_DIR "code/modules/mob/living/carbon/alien" -#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid" -#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste" -#define FILE_DIR "code/modules/mob/living/carbon/alien/larva" -#define FILE_DIR "code/modules/mob/living/carbon/alien/special" -#define FILE_DIR "code/modules/mob/living/carbon/amorph" -#define FILE_DIR "code/modules/mob/living/carbon/brain" -#define FILE_DIR "code/modules/mob/living/carbon/human" -#define FILE_DIR "code/modules/mob/living/carbon/metroid" -#define FILE_DIR "code/modules/mob/living/carbon/monkey" -#define FILE_DIR "code/modules/mob/living/parasite" -#define FILE_DIR "code/modules/mob/living/silicon" -#define FILE_DIR "code/modules/mob/living/silicon/ai" -#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook" -#define FILE_DIR "code/modules/mob/living/silicon/decoy" -#define FILE_DIR "code/modules/mob/living/silicon/pai" -#define FILE_DIR "code/modules/mob/living/silicon/robot" -#define FILE_DIR "code/modules/mob/living/simple_animal" -#define FILE_DIR "code/modules/mob/living/simple_animal/friendly" -#define FILE_DIR "code/modules/mob/living/simple_animal/hostile" -#define FILE_DIR "code/modules/mob/new_player" -#define FILE_DIR "code/modules/mob/simple_animal" -#define FILE_DIR "code/modules/paperwork" -#define FILE_DIR "code/modules/power" -#define FILE_DIR "code/modules/power/antimatter" -#define FILE_DIR "code/modules/power/singularity" -#define FILE_DIR "code/modules/power/singularity/particle_accelerator" -#define FILE_DIR "code/modules/projectiles" -#define FILE_DIR "code/modules/projectiles/ammunition" -#define FILE_DIR "code/modules/projectiles/guns" -#define FILE_DIR "code/modules/projectiles/guns/energy" -#define FILE_DIR "code/modules/projectiles/guns/projectile" -#define FILE_DIR "code/modules/projectiles/projectile" -#define FILE_DIR "code/modules/reagents" -#define FILE_DIR "code/modules/reagents/reagent_containers" -#define FILE_DIR "code/modules/reagents/reagent_containers/food" -#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks" -#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle" -#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks" -#define FILE_DIR "code/modules/reagents/reagent_containers/glass" -#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle" -#define FILE_DIR "code/modules/recycling" -#define FILE_DIR "code/modules/research" -#define FILE_DIR "code/modules/research/xenoarchaeology" -#define FILE_DIR "code/modules/scripting" -#define FILE_DIR "code/modules/scripting/AST" -#define FILE_DIR "code/modules/scripting/AST/Operators" -#define FILE_DIR "code/modules/scripting/Implementations" -#define FILE_DIR "code/modules/scripting/Interpreter" -#define FILE_DIR "code/modules/scripting/Parser" -#define FILE_DIR "code/modules/scripting/Scanner" -#define FILE_DIR "code/modules/security levels" #define FILE_DIR "code/TriDimension" -#define FILE_DIR "code/unused" -#define FILE_DIR "code/unused/beast" -#define FILE_DIR "code/unused/computer2" -#define FILE_DIR "code/unused/disease2" -#define FILE_DIR "code/unused/gamemodes" -#define FILE_DIR "code/unused/hivebot" -#define FILE_DIR "code/unused/mining" -#define FILE_DIR "code/unused/optics" -#define FILE_DIR "code/unused/pda2" -#define FILE_DIR "code/unused/powerarmor" -#define FILE_DIR "code/unused/spacecraft" #define FILE_DIR "code/WorkInProgress" -#define FILE_DIR "code/WorkInProgress/AI_Visibility" -#define FILE_DIR "code/WorkInProgress/animusstation" -#define FILE_DIR "code/WorkInProgress/Apples" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust" #define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter" -#define FILE_DIR "code/WorkInProgress/carn" -#define FILE_DIR "code/WorkInProgress/Chinsky" -#define FILE_DIR "code/WorkInProgress/mapload" -#define FILE_DIR "code/WorkInProgress/Mini" -#define FILE_DIR "code/WorkInProgress/Mloc" -#define FILE_DIR "code/WorkInProgress/organs" -#define FILE_DIR "code/WorkInProgress/Ported" -#define FILE_DIR "code/WorkInProgress/Ported/Abi79" -#define FILE_DIR "code/WorkInProgress/Ported/Bureaucracy" -#define FILE_DIR "code/WorkInProgress/Ported/Spawners" -#define FILE_DIR "code/WorkInProgress/SkyMarshal" -#define FILE_DIR "code/WorkInProgress/Tastyfish" -#define FILE_DIR "code/WorkInProgress/virus2" -#define FILE_DIR "code/WorkInProgress/virus2/Disease2" -#define FILE_DIR "code/WorkInProgress/Wrongnumber" -#define FILE_DIR "code/ZAS" #define FILE_DIR "html" #define FILE_DIR "icons" #define FILE_DIR "icons/48x48" @@ -238,6 +20,7 @@ #define FILE_DIR "icons/misc" #define FILE_DIR "icons/mob" #define FILE_DIR "icons/mob/human_races" +#define FILE_DIR "icons/mob/skin" #define FILE_DIR "icons/obj" #define FILE_DIR "icons/obj/assemblies" #define FILE_DIR "icons/obj/atmospherics" @@ -251,9 +34,7 @@ #define FILE_DIR "icons/turf" #define FILE_DIR "icons/vehicles" #define FILE_DIR "icons/vending_icons" -#define FILE_DIR "interface" #define FILE_DIR "maps" -#define FILE_DIR "maps/RandomZLevels" #define FILE_DIR "sound" #define FILE_DIR "sound/AI" #define FILE_DIR "sound/ambience" @@ -268,8 +49,6 @@ #define FILE_DIR "sound/violin" #define FILE_DIR "sound/voice" #define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/Redirector" // END_FILE_DIR // BEGIN_PREFERENCES @@ -1293,9 +1072,16 @@ #include "code\modules\research\research.dm" #include "code\modules\research\research_shuttle.dm" #include "code\modules\research\server.dm" +#include "code\modules\research\xenoarchaeology\analysis.dm" +#include "code\modules\research\xenoarchaeology\analysis_accelerator.dm" +#include "code\modules\research\xenoarchaeology\analysis_fourier_transform.dm" +#include "code\modules\research\xenoarchaeology\analysis_gas_chromatography.dm" +#include "code\modules\research\xenoarchaeology\analysis_hyperspectral.dm" +#include "code\modules\research\xenoarchaeology\analysis_ion_mobility.dm" +#include "code\modules\research\xenoarchaeology\analysis_radiometric.dm" +#include "code\modules\research\xenoarchaeology\analysis_scanner.dm" #include "code\modules\research\xenoarchaeology\archaeo_chem.dm" #include "code\modules\research\xenoarchaeology\archaeo_excavate.dm" -#include "code\modules\research\xenoarchaeology\archaeo_machinery.dm" #include "code\modules\research\xenoarchaeology\archaeo_tools.dm" #include "code\modules\research\xenoarchaeology\artifact.dm" #include "code\modules\research\xenoarchaeology\artifact_analysis.dm" @@ -1306,8 +1092,11 @@ #include "code\modules\research\xenoarchaeology\artifact_synthetic.dm" #include "code\modules\research\xenoarchaeology\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\core_sampler.dm" +#include "code\modules\research\xenoarchaeology\crystal.dm" #include "code\modules\research\xenoarchaeology\finds.dm" +#include "code\modules\research\xenoarchaeology\fossils.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" +#include "code\modules\research\xenoarchaeology\global_placeholder.dm" #include "code\modules\research\xenoarchaeology\readme.dm" #include "code\modules\research\xenoarchaeology\tools.dm" #include "code\modules\scripting\Errors.dm" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 192446d262b..39a7add1dba 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -36,6 +36,8 @@ /turf/simulated/mineral/New() + src.geological_data = new /datum/geosample(src) + spawn(1) var/turf/T if((istype(get_step(src, NORTH), /turf/simulated/floor)) || (istype(get_step(src, NORTH), /turf/space)) || (istype(get_step(src, NORTH), /turf/simulated/shuttle/floor))) @@ -55,9 +57,6 @@ if (T) T.overlays += image('icons/turf/walls.dmi', "rock_side_e", layer=6) - src.geological_data = new /datum/geosample - src.geological_data.UpdateTurf(src) - if (mineralName && mineralAmt && spread && spreadChance) if(prob(spreadChance)) if(istype(get_step(src, SOUTH), /turf/simulated/mineral/random)) @@ -286,8 +285,7 @@ O = new /obj/item/weapon/ore/clown(src) if(O) if(!src.geological_data) - src.geological_data = new /datum/geosample - src.geological_data.UpdateTurf(src) + src.geological_data = new /datum/geosample(src) O.geological_data = src.geological_data if (prob(src.artifactChance)) diff --git a/code/modules/research/xenoarchaeology/analysis.dm b/code/modules/research/xenoarchaeology/analysis.dm new file mode 100644 index 00000000000..0dc309a3d39 --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis.dm @@ -0,0 +1,140 @@ + +/obj/machinery/anomaly + anchored = 1 + density = 1 + // + var/obj/item/weapon/reagent_containers/glass/held_container + var/obj/item/weapon/tank/fuel_container + var/scan_time = 30 //change to 300 later + var/report_num = 0 + var/scanning = 0 + var/safety_enabled = 1 + var/warning_given = 0 + var/heat_accumulation_rate = 0 + var/temperature = 273 //measured in kelvin, if this exceeds 1200, the machine is damaged and requires repairs + //if this exceeds 600 and safety is enabled it will shutdown + //temp greater than 600 also requires a safety prompt to initiate scanning + var/scanner_dir = 0 + var/obj/machinery/anomaly/scanner/owned_scanner = null + +/obj/machinery/anomaly/New() + //connect to a nearby scanner pad + if(scanner_dir) + scanner = locate(/obj/machinery/anomaly/scanner) in get_step(src, scanner_dir) + if(!scanner) + scanner = locate(/obj/machinery/anomaly/scanner) in orange(1) + +//this proc should be overriden by each individual machine +/obj/machinery/anomaly/attack_hand(var/mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + user.machine = src + var/dat = "[src.name]
" + dat += "[scanner ? "Scanner connected." : "Scanner disconnected."]" + dat += "Module heat level:[temperature] kelvin
" + dat += "Safeties set at 600k, shielding failure at 1200k. Failure to maintain safe heat levels may result in equipment damage.
" + dat += "
" + dat += "[held_container ? "Eject beaker" : "No beaker inserted."]
" + dat += "[held_container ? "Eject fuel tank" : "No fuel tank inserted."]
" + dat += "Begin scanning" + dat += "
" + dat += "Refresh
" + dat += "Close
" + user << browse(dat, "window=anomaly;size=450x500") + onclose(user, "anomaly") + +obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob) + if(istype(W, /obj/item/weapon/reagent_containers/glass)) + //var/obj/item/weapon/reagent_containers/glass/G = W + if(held_container) + user << "\red You must remove the [held_container] first." + else + user << "\blue You put the [held_container] into the [src]." + user.drop_item(W) + held_container.loc = src + held_container = W + updateDialog() + + else if(istype(W, /obj/item/weapon/tank)) + //var/obj/item/weapon/reagent_containers/glass/G = W + if(fuel_container) + user << "\red You must remove the [fuel_container] first." + else + user << "\blue You put the [fuel_container] into the [src]." + user.drop_item(W) + fuel_container.loc = src + fuel_container = W + updateDialog() + else + return ..() + +/obj/machinery/anomaly/process() + //not sure if everything needs to heat up, or just the GLPC + var/environmental_temp = loc.return_air().temperature + if(scanning) + //heat up as we go, but if the air is freezing then heat up much slower + var/new_heat = heat_accumulation_rate + heat_accumulation_rate * rand(-0.5,0.5) + if(environmental_temp < 273) + new_heat /= 2 + temperature += new_heat + if(temperature >= 600) + if(!warning_given || temperature >= 1200) + src.visible_message("The [src] bleets.", 2) + warning_given = 1 + if(safety_enabled) + scanning = 0 + else if(temperature > environmental_temp) + //cool down to match the air + temperature -= 10 + rand(-5,5) + if(temperature < environmental_temp + temperature = environmental_temp + else if(temperature < environmental_temp) + //heat up to match the air + temperature += 10 + rand(-5,5) + if(temperature > environmental_temp + temperature = environmental_temp + +obj/machinery/anomaly/proc/ScanResults() + //instantiate in children to produce unique scan behaviour + return "Error initialising scanning components." + +obj/machinery/anomaly/proc/BeginScan() + var/total_scan_time = scan_time + scan_time * rand(-0.5, 0.5) + + scanning = 1 + spawn(total_scan_time) + if(scanning) + scanning = 0 + + //determine the results and print a report + if(held_container) + src.visible_message("The [src] chimes.", 2) + var/obj/item/weapon/paper/P = new(src.loc) + P.name = "[src] analysis report #[++report_num]" + P.info = "[src] analysis report #[report_num]

" + ScanResults() + P.stamped = list(/obj/item/weapon/stamp) + P.overlays = list("paper_stamped") + else + src.visible_message("The [src] buzzes.", 2) + +obj/machinery/anomaly/Topic(href, href_list) + if(href_list["close"]) + usr << browse(null, "window=anomaly") + usr.machine = null + if(href_list["eject_beaker"]) + held_container.loc = src.loc + held_container = null + if(href_list["eject_fuel"]) + fuel_container.loc = src.loc + fuel_container = null + if(href_list["begin"]) + if(temperature >= 600) + var/proceed = input("Unsafe internal temperature detected, do you wish to continue?","Warning") + if(proceed) + safety_enabled = 0 + BeginScan() + else + BeginScan() + + ..() + updateDialog() diff --git a/code/modules/research/xenoarchaeology/analysis_accelerator.dm b/code/modules/research/xenoarchaeology/analysis_accelerator.dm new file mode 100644 index 00000000000..1e15854e847 --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_accelerator.dm @@ -0,0 +1,6 @@ + +obj/machinery/anomaly/accelerator + name = "Accelerator Spectrometer" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" diff --git a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm b/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm new file mode 100644 index 00000000000..597ee1817be --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm @@ -0,0 +1,36 @@ + +obj/machinery/anomaly/fourier_transform + name = "Fourier Transform spectroscope" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" + +obj/machinery/anomaly/fourier_transform/ScanResults() + var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." + + var/datum/geosample/scanned_sample + var/carrier + var/num_reagents = 0 + + for(var/reagent/A in held_container.reagents.reagent_list) + var/datum/reagent/R = A + if(istype(R,datum/reagent/density_separated_liquid)) + scanned_sample = R.data + else if(istype(R,datum/reagent/analysis_sample)) + scanned_sample = R.data + else + carrier = R.type + num_reagents++ + + if(num_reagents == 2 && scanned_sample && carrier) + //all necessary components are present + var/specifity = GetResultSpecifity(scanned_sample, carrier) + var/distance = scanned_sample.artifact_distance + if(specifity > 0.6) + artifact_distance += rand(-0.1, 0.1) * artifact_distance + else + var/offset = 1 - specifity + artifact_distance += rand(-offset, offset) * artifact_distance + results = "Anomalous energy absorption through carrier ([carrier.id]) indicates emission radius: [artifact_distance]" + + return results diff --git a/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm b/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm new file mode 100644 index 00000000000..fbbb7fe47e4 --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm @@ -0,0 +1,80 @@ + +obj/machinery/anomaly/gas_chromatography + name = "Gas Chromatography Spectrometer" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" + +obj/machinery/anomaly/gas_chromatography/ScanResults() + var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." + + var/datum/geosample/scanned_sample + var/carrier + var/num_reagents = 0 + + for(var/reagent/A in held_container.reagents.reagent_list) + var/datum/reagent/R = A + if(istype(R,datum/reagent/density_separated_liquid)) + scanned_sample = R.data + else if(istype(R,datum/reagent/analysis_sample)) + scanned_sample = R.data + else + carrier = R.type + num_reagents++ + + if(num_reagents == 2 && scanned_sample && carrier) + //all necessary components are present + results = "Carrier ([carrier.id]) specifity: [GetResultSpecifity(scanned_sample, carrier)]" + + return results + +obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/datum/reagent/carrier) + var/specifity = 0 + if(scanned_sample && carrier) + var/threshold = 0.6 + + if(scanned_sample.main_find == carrier.id) + specifity += threshold + rand(0, 1 - threshold) + if(scanned_sample.secondary_find == carrier.id) + specifity += threshold + rand(0, 1 - threshold) + + /* + //check the main turf + if(scanned_sample.main_find == FIND_NOTHING) + //nothing? + else if(scanned_sample.main_find == FIND_PLANT || scanned_sample.main_find == FIND_BIO || scanned_sample.main_find == FIND_SKULL) + //preserved plant or animal + if(carrier.id == "carbon") + specifity += threshold + rand(0,1 - threshold) + else if(scanned_sample.main_find == FIND_METEORIC) + //deep space + if(carrier.id == "neon") + specifity += threshold + rand(0,1 - threshold) + else if(scanned_sample.main_find == FIND_ICE) + //solid h20 + if(carrier.id == "beryllium") + specifity += threshold + rand(0,1 - threshold) + else if(scanned_sample.main_find == FIND_IGNEOUS || scanned_sample.main_find == FIND_METAMORPHIC || scanned_sample.main_find == FIND_CARBONATE) + //rock + if(carrier.id == "calcium" || carrier.id == "chlorine") + specifity += threshold + rand(0,1 - threshold) + else if(scanned_sample.main_find == FIND_CRYSTALLINE) + //some kind of refractive, crystalline matter + if(carrier.id == "helium") + specifity += threshold + rand(0,1 - threshold) + else if(scanned_sample.main_find == FIND_METALLIC) + //something metal (could be just ores, not necessarily a synthetic artifact) + if(carrier.id == "silicon") + specifity += threshold + rand(0,1 - threshold) + else if(scanned_sample.main_find == FIND_SEDIMENTARY) + //sandy rock + if(carrier.id == "aluminium") + specifity += threshold + rand(0,1 - threshold) + */ + + if(specifity > 1) + specifity = 0.9 + rand(0,0.1) + else if(specifity <= 0) + specifity += rand(0, threshold) + + return specifity diff --git a/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm b/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm new file mode 100644 index 00000000000..08f1d85cded --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm @@ -0,0 +1,6 @@ + +obj/machinery/anomaly/hyperspectral + name = "Hypospectral Imager" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" diff --git a/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm b/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm new file mode 100644 index 00000000000..21dc0ad52fc --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm @@ -0,0 +1,6 @@ + +obj/machinery/anomaly/ion_mobility + name = "Ion Mobility Spectrometer" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" diff --git a/code/modules/research/xenoarchaeology/analysis_radiometric.dm b/code/modules/research/xenoarchaeology/analysis_radiometric.dm new file mode 100644 index 00000000000..9b9b280b2c4 --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_radiometric.dm @@ -0,0 +1,6 @@ + +obj/machinery/anomaly/radiometric + name = "Isotope ratio spectrometre" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" diff --git a/code/modules/research/xenoarchaeology/analysis_scanner.dm b/code/modules/research/xenoarchaeology/analysis_scanner.dm new file mode 100644 index 00000000000..9c5bfa0fa47 --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_scanner.dm @@ -0,0 +1,8 @@ + +/obj/machinery/anomaly/scanner + name = "scanner pad" + desc = "Place larger objects here for scanning." + icon = 'stationobjs.dmi' + icon_state = "tele0" + anchored = 1 + density = 0 diff --git a/code/modules/research/xenoarchaeology/archaeo_chem.dm b/code/modules/research/xenoarchaeology/archaeo_chem.dm index 1ebbe66111e..c12a530a7ff 100644 --- a/code/modules/research/xenoarchaeology/archaeo_chem.dm +++ b/code/modules/research/xenoarchaeology/archaeo_chem.dm @@ -2,19 +2,45 @@ //chemistry stuff here so that it can be easily viewed/modified datum reagent - tungsten //used purely to make lith-sodi-tungs + tungsten //purely used to make lith-sodi-tungs name = "Tungsten" id = "tungsten" description = "A chemical element, and a strong oxidising agent." reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128, meant to be a silvery grey but idrc + color = "#808080" // rgb: 128, 128, 128 + //todo: make this silvery grey + + neon //purely used as a carrier + name = "Neon" + id = "neon" + description = "A chemical element, commonly used in lighting." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128, + //todo: make this fluro/bright purple + + beryllium //purely used as a carrier + name = "Beryllium" + id = "beryllium" + description = "A chemical element, prized for it's rigidity, thermal stability and low density when used in alloys." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128, + //todo: make this dark grey + + calcium //purely used as a carrier + name = "Calcium" + id = "calcium" + description = "An extremely common chemical element found throughout living organisms." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128, + //todo: make this bone-white colour lithiumsodiumtungstate name = "Lithium Sodium Tungstate" id = "lithiumsodiumtungstate" description = "A reducing agent for geological compounds." reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128, again, silvery grey + color = "#808080" // rgb: 128, 128, 128 + //todo: make this silvery grey ground_rock name = "Ground Rock" @@ -25,7 +51,7 @@ datum //todo: make this brown density_separated_sample - name = "Analysis sample" + name = "Analysis liquid" id = "density_separated_sample" description = "A watery paste used in chemical analysis." reagent_state = LIQUID @@ -33,7 +59,7 @@ datum //todo: make this browny-white analysis_sample - name = "Analysis sample" + name = "Analysis liquid" id = "analysis_sample" description = "A watery paste used in chemical analysis." reagent_state = LIQUID @@ -73,3 +99,15 @@ datum required_reagents = list("density_separated_sample" = 5) result_amount = 4 requires_heating = 1 + +/obj/item/weapon/reagent_containers/glass/solution_tray + icon = 'icons/obj/device.dmi' + icon_state = "solution_tray" + desc = "A small, open-topped glass container for delicate research samples." + m_amt = 0 + g_amt = 5 + w_class = 1.0 + amount_per_transfer_from_this = 1 + possible_transfer_amounts = list(1) + volume = 2 + flags = FPRINT | OPENCONTAINER diff --git a/code/modules/research/xenoarchaeology/archaeo_machinery.dm b/code/modules/research/xenoarchaeology/archaeo_machinery.dm deleted file mode 100644 index c0534a43a65..00000000000 --- a/code/modules/research/xenoarchaeology/archaeo_machinery.dm +++ /dev/null @@ -1,119 +0,0 @@ -obj/machinery/gas_chromatography - name = "Gas Chromatography Spectrometer" - desc = "A specialised mass spectrometer." - icon = 'virology.dmi' - icon_state = "analyser" - -obj/machinery/gas_chromatography/Topic(href, href_list) - if(href_list["close"]) - usr << browse(null, "window=artanalyser") - usr.machine = null - - updateDialog() - -obj/machinery/gas_chromatography/attack_hand(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Gas Chromatography Spectrometer
" - dat += "
" - dat += "Refresh
" - dat += "
Close
" - user << browse(dat, "window=artanalyser;size=450x500") - onclose(user, "artanalyser") - -obj/machinery/accelerator - name = "Accelerator Spectrometer" - desc = "A specialised mass spectrometer." - icon = 'virology.dmi' - icon_state = "analyser" - -obj/machinery/accelerator/Topic(href, href_list) - if(href_list["close"]) - usr << browse(null, "window=artanalyser") - usr.machine = null - - updateDialog() - -obj/machinery/accelerator/attack_hand(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Accelerator Spectrometer
" - dat += "
" - dat += "
Refresh
" - dat += "
Close
" - user << browse(dat, "window=artanalyser;size=450x500") - onclose(user, "artanalyser") - -obj/machinery/fourier_transform - name = "Fourier Transform Spectroscope" - desc = "A specialised geochemical analysis device." - icon = 'virology.dmi' - icon_state = "analyser" - -obj/machinery/fourier_transform/Topic(href, href_list) - if(href_list["close"]) - usr << browse(null, "window=artanalyser") - usr.machine = null - - updateDialog() - -obj/machinery/fourier_transform/attack_hand(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Fourier Transform Spectroscope
" - dat += "
" - dat += "
Refresh
" - dat += "
Close
" - user << browse(dat, "window=artanalyser;size=450x500") - onclose(user, "artanalyser") - -obj/machinery/radiometric - name = "Radiometric Exposure Spectrometer" - desc = "A specialised mass spectrometer, able to radiometrically date inserted materials." - icon = 'virology.dmi' - icon_state = "analyser" - -obj/machinery/radiometric/Topic(href, href_list) - if(href_list["close"]) - usr << browse(null, "window=artanalyser") - usr.machine = null - - updateDialog() - -obj/machinery/radiometric/attack_hand(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Radiometric Exposure Spectrometer
" - dat += "
" - dat += "
Refresh
" - dat += "
Close
" - user << browse(dat, "window=artanalyser;size=450x500") - onclose(user, "artanalyser") - -obj/machinery/ion_mobility - name = "Ion Mobility Spectrometer" - desc = "A specialised mass spectrometer." - icon = 'virology.dmi' - icon_state = "analyser" - -obj/machinery/ion_mobility/Topic(href, href_list) - if(href_list["close"]) - usr << browse(null, "window=artanalyser") - usr.machine = null - - updateDialog() - -obj/machinery/ion_mobility/attack_hand(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Ion Mobility Spectrometer
" - dat += "
" - dat += "
Refresh
" - dat += "
Close
" - user << browse(dat, "window=artanalyser;size=450x500") - onclose(user, "artanalyser") diff --git a/code/modules/research/xenoarchaeology/crystal.dm b/code/modules/research/xenoarchaeology/crystal.dm new file mode 100644 index 00000000000..ec2aaff7761 --- /dev/null +++ b/code/modules/research/xenoarchaeology/crystal.dm @@ -0,0 +1,213 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// crystals + +/obj/item/weapon/crystal + name = "Crystal" + icon = 'mining.dmi' + icon_state = "crystal" + +//needs to be solid to have collision, but shouldn't block movement +/*/obj/item/weapon/crystal/bullet_act(var/obj/item/projectile/P) + if(istype(P,/obj/item/projectile/beam/emitter)) + switch(rand(0,3)) + if(0) + var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) + A.dir = 1 + A.yo = 20 + A.xo = 0 + if(0) + var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) + A.dir = 2 + A.yo = -20 + A.xo = 0 + if(0) + var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) + A.dir = 4 + A.yo = 0 + A.xo = 20 + if(0) + var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) + A.dir = 8 + A.yo = 0 + A.xo = -20 + else + ..()*/ + +/obj/item/weapon/talkingcrystal + name = "Crystal" + icon = 'mining.dmi' + icon_state = "crystal2" + var/list/list/words = list() + var/lastsaid + +/obj/item/weapon/talkingcrystal/New() + spawn(100) + process() + +//needs to be solid to have collision, but shouldn't block movement +/*/obj/item/weapon/talkingcrystal/bullet_act(var/obj/item/projectile/P) + if(istype(P,/obj/item/projectile/beam)) + switch(rand(0,3)) + if(0) + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) + A.dir = pick(alldirs) + A.yo = 20 + A.xo = 0 + if(0) + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) + A.dir = pick(alldirs) + A.yo = -20 + A.xo = 0 + if(0) + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) + A.dir = pick(alldirs) + A.yo = 0 + A.xo = 20 + if(0) + var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) + A.dir = pick(alldirs) + A.yo = 0 + A.xo = -20 + var/word = pick("pain","hurt","masochism","sadist","rage","repressed","ouch","evil","void","kill","destroy") + SaySomething(word) + else + ..()*/ + +/obj/item/weapon/talkingcrystal/proc/catchMessage(var/msg, var/mob/source) + var/list/seperate = list() + if(findtext(msg,"((")) + return + else if(findtext(msg,"))")) + return + else if(findtext(msg," ")==0) + return + else + /*var/l = lentext(msg) + if(findtext(msg," ",l,l+1)==0) + msg+=" "*/ + seperate = stringsplit(msg, " ") + + var/addressing_crystal = 0 + if("crystal" in seperate || "gem" in seperate) + addressing_crystal = 1 + + for(var/Xa = 1,Xa 20 + rand(10,20)) + words.Remove(words[1]) + if(!words["[lowertext(seperate[Xa])]"]) + words["[lowertext(seperate[Xa])]"] = list() + var/list/w = words["[lowertext(seperate[Xa])]"] + if(w) + w.Add("[lowertext(seperate[next])]") + //world << "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]" + + for(var/mob/O in viewers(src)) + O.show_message("\blue The crystal hums for bit then stops...", 1) + if(!rand(0, 5 - addressing_crystal * 3)) + spawn(2) SaySomething(pick(seperate)) + +/obj/item/weapon/talkingcrystal/proc/debug() + //set src in view() + for(var/v in words) + world << "[uppertext(v)]" + var/list/d = words["[v]"] + for(var/X in d) + world << "[X]" + +/obj/item/weapon/talkingcrystal/proc/SaySomething(var/word = null) + + var/msg + var/limit = rand(max(5,words.len/2))+3 + var/text + if(!word) + text = "[pick(words)]" + else + text = pick(stringsplit(word, " ")) + if(lentext(text)==1) + text=uppertext(text) + else + var/cap = copytext(text,1,2) + cap = uppertext(cap) + cap += copytext(text,2,lentext(text)+1) + text=cap + var/q = 0 + msg+=text + if(msg=="What" | msg == "Who" | msg == "How" | msg == "Why" | msg == "Are") + q=1 + + text=lowertext(text) + for(var/ya,ya <= limit,ya++) + + if(words.Find("[text]")) + var/list/w = words["[text]"] + text=pick(w) + else + text = "[pick(words)]" + msg+=" [text]" + if(q) + msg+="?" + else + if(rand(0,10)) + msg+="." + else + msg+="!" + + var/list/listening = viewers(src) + for(var/mob/M in world) + if (!M.client) + continue //skip monkeys and leavers + if (istype(M, /mob/new_player)) + continue + if(M.stat == 2 && M.client.ghost_ears) + listening|=M + + for(var/mob/M in listening) + M << "The crystal reverberates, \blue\"[msg]\"" + lastsaid = world.timeofday + rand(300,800) + +/obj/item/weapon/talkingcrystal/process() + if(prob(25) && world.timeofday >= lastsaid && words.len >= 1) + SaySomething() + spawn(100) + process() + + + + +//sentient crystals +/mob/sentient_crystal + name = "Crystal" + icon = 'mining.dmi' + icon_state = "crystal2" + var/list/list/words = list() + var/lastsaid + +/mob/sentient_crystal/proc/catchMessage(var/msg, var/mob/source) + var/list/seperate = list() + if(findtext(msg,"((")) + return + else if(findtext(msg,"))")) + return + else + /*var/l = lentext(msg) + if(findtext(msg," ",l,l+1)==0) + msg+=" "*/ + seperate = stringsplit(msg, " ") + + for(var/Xa = 1,Xa 20 + rand(10,20)) + words.Remove(words[1]) + if(!words["[lowertext(seperate[Xa])]"]) + words["[lowertext(seperate[Xa])]"] = list() + var/list/w = words["[lowertext(seperate[Xa])]"] + if(w) + w.Add("[lowertext(seperate[next])]") + //world << "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]" + + for(var/mob/O in viewers(src)) + O.show_message("\blue The crystal hums for bit then stops...", 1) + +/mob/sentient_crystal/Life() \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/finds.dm b/code/modules/research/xenoarchaeology/finds.dm index 082f20ebb32..2521f8bcf4f 100644 --- a/code/modules/research/xenoarchaeology/finds.dm +++ b/code/modules/research/xenoarchaeology/finds.dm @@ -83,265 +83,3 @@ M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1) return 1 */ - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// crystals - -/obj/item/weapon/crystal - name = "Crystal" - icon = 'mining.dmi' - icon_state = "crystal" - -/obj/item/weapon/crystal/bullet_act(var/obj/item/projectile/P) - if(istype(P,/obj/item/projectile/beam/emitter)) - switch(rand(0,3)) - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 1 - A.yo = 20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 2 - A.yo = -20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 4 - A.yo = 0 - A.xo = 20 - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 8 - A.yo = 0 - A.xo = -20 - else - ..() - -/obj/item/weapon/talkingcrystal - name = "Crystal" - icon = 'mining.dmi' - icon_state = "crystal2" - var/list/list/words = list() - var/lastsaid - -/obj/item/weapon/talkingcrystal/New() - spawn(100) - process() - -/obj/item/weapon/talkingcrystal/bullet_act(var/obj/item/projectile/P) - if(istype(P,/obj/item/projectile/beam)) - switch(rand(0,3)) - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = 20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = -20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = 0 - A.xo = 20 - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = 0 - A.xo = -20 - var/word = pick("pain","hurt","masochism","sadist","rage","repressed","ouch","evil","void","kill","destroy") - SaySomething(word) - else - ..() - -/obj/item/weapon/talkingcrystal/proc/catchMessage(var/msg, var/mob/source) - var/list/seperate = list() - if(findtext(msg,"((")) - return - else if(findtext(msg,"))")) - return - else if(findtext(msg," ")==0) - return - else - /*var/l = lentext(msg) - if(findtext(msg," ",l,l+1)==0) - msg+=" "*/ - seperate = stringsplit(msg, " ") - - var/addressing_crystal = 0 - if("crystal" in seperate || "gem" in seperate) - addressing_crystal = 1 - - for(var/Xa = 1,Xa 20 + rand(10,20)) - words.Remove(words[1]) - if(!words["[lowertext(seperate[Xa])]"]) - words["[lowertext(seperate[Xa])]"] = list() - var/list/w = words["[lowertext(seperate[Xa])]"] - if(w) - w.Add("[lowertext(seperate[next])]") - //world << "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]" - - for(var/mob/O in viewers(src)) - O.show_message("\blue The crystal hums for bit then stops...", 1) - if(!rand(0, 5 - addressing_crystal * 3)) - spawn(2) SaySomething(pick(seperate)) - -/obj/item/weapon/talkingcrystal/proc/debug() - //set src in view() - for(var/v in words) - world << "[uppertext(v)]" - var/list/d = words["[v]"] - for(var/X in d) - world << "[X]" - -/obj/item/weapon/talkingcrystal/proc/SaySomething(var/word = null) - - var/msg - var/limit = rand(max(5,words.len/2))+3 - var/text - if(!word) - text = "[pick(words)]" - else - text = pick(stringsplit(word, " ")) - if(lentext(text)==1) - text=uppertext(text) - else - var/cap = copytext(text,1,2) - cap = uppertext(cap) - cap += copytext(text,2,lentext(text)+1) - text=cap - var/q = 0 - msg+=text - if(msg=="What" | msg == "Who" | msg == "How" | msg == "Why" | msg == "Are") - q=1 - - text=lowertext(text) - for(var/ya,ya <= limit,ya++) - - if(words.Find("[text]")) - var/list/w = words["[text]"] - text=pick(w) - else - text = "[pick(words)]" - msg+=" [text]" - if(q) - msg+="?" - else - if(rand(0,10)) - msg+="." - else - msg+="!" - - var/list/listening = viewers(src) - for(var/mob/M in world) - if (!M.client) - continue //skip monkeys and leavers - if (istype(M, /mob/new_player)) - continue - if(M.stat == 2 && M.client.ghost_ears) - listening|=M - - for(var/mob/M in listening) - M << "The crystal reverberates, \blue\"[msg]\"" - lastsaid = world.timeofday + rand(300,800) - -/obj/item/weapon/talkingcrystal/process() - if(prob(25) && world.timeofday >= lastsaid && words.len >= 1) - SaySomething() - spawn(100) - process() - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// fossils - -/obj/item/weapon/fossil - name = "Fossil" - icon = 'fossil.dmi' - icon_state = "bone" - desc = "It's a fossil." - -/obj/item/weapon/fossil/base/New() - spawn(0) - var/list/l = list("/obj/item/weapon/fossil/bone"=8,"/obj/item/weapon/fossil/skull"=2, - "/obj/item/weapon/fossil/skull/horned"=2,"/obj/item/weapon/fossil/shell"=1) - var/t = pickweight(l) - new t(src.loc) - del src - -/obj/item/weapon/fossil/bone - name = "Fossilised bone" - icon_state = "bone" - desc = "It's a fossilised bone." - -/obj/item/weapon/fossil/shell - name = "Fossilised shell" - icon_state = "shell" - desc = "It's a fossilised shell." - -/obj/item/weapon/fossil/skull/horned - icon_state = "hskull" - desc = "It's a fossilised, horned skull." - -/obj/item/weapon/fossil/skull - name = "Fossilised skull" - icon_state = "skull" - desc = "It's a fossilised skull." - -/obj/item/weapon/fossil/skull/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/fossil/bone)) - var/obj/o = new /obj/skeleton(get_turf(src)) - var/a = new /obj/item/weapon/fossil/bone - var/b = new src.type - o.contents.Add(a) - o.contents.Add(b) - del W - del src - -/obj/skeleton - name = "Incomplete skeleton" - icon = 'fossil.dmi' - icon_state = "uskel" - desc = "Incomplete skeleton." - var/bnum = 1 - var/breq - var/bstate = 0 - -/obj/skeleton/New() - src.breq = rand(6)+3 - src.desc = "An incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." - -/obj/skeleton/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/fossil/bone)) - if(!bstate) - bnum++ - src.contents.Add(new/obj/item/weapon/fossil/bone) - del W - if(bnum==breq) - usr = user - icon_state = "skel" - var/creaturename = input("Input a name for your discovery:","Name your discovery","Spaceosaurus") - src.bstate = 1 - src.density = 1 - src.name = "[creaturename] skeleton" - if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) - src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull, the plaque reads [creaturename]." - else - src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull, the plaque reads [creaturename]." - else - src.desc = "Incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." - user << "Looks like it could use [src.breq-src.bnum] more bones." - else - ..() - else - ..() diff --git a/code/modules/research/xenoarchaeology/fossils.dm b/code/modules/research/xenoarchaeology/fossils.dm new file mode 100644 index 00000000000..cb8f88b6661 --- /dev/null +++ b/code/modules/research/xenoarchaeology/fossils.dm @@ -0,0 +1,84 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// fossils + +/obj/item/weapon/fossil + name = "Fossil" + icon = 'fossil.dmi' + icon_state = "bone" + desc = "It's a fossil." + +/obj/item/weapon/fossil/base/New() + spawn(0) + var/list/l = list("/obj/item/weapon/fossil/bone"=8,"/obj/item/weapon/fossil/skull"=2, + "/obj/item/weapon/fossil/skull/horned"=2,"/obj/item/weapon/fossil/shell"=1) + var/t = pickweight(l) + new t(src.loc) + del src + +/obj/item/weapon/fossil/bone + name = "Fossilised bone" + icon_state = "bone" + desc = "It's a fossilised bone." + +/obj/item/weapon/fossil/shell + name = "Fossilised shell" + icon_state = "shell" + desc = "It's a fossilised shell." + +/obj/item/weapon/fossil/skull/horned + icon_state = "hskull" + desc = "It's a fossilised, horned skull." + +/obj/item/weapon/fossil/skull + name = "Fossilised skull" + icon_state = "skull" + desc = "It's a fossilised skull." + +/obj/item/weapon/fossil/skull/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/fossil/bone)) + var/obj/o = new /obj/skeleton(get_turf(src)) + var/a = new /obj/item/weapon/fossil/bone + var/b = new src.type + o.contents.Add(a) + o.contents.Add(b) + del W + del src + +/obj/skeleton + name = "Incomplete skeleton" + icon = 'fossil.dmi' + icon_state = "uskel" + desc = "Incomplete skeleton." + var/bnum = 1 + var/breq + var/bstate = 0 + +/obj/skeleton/New() + src.breq = rand(6)+3 + src.desc = "An incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." + +/obj/skeleton/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/fossil/bone)) + if(!bstate) + bnum++ + src.contents.Add(new/obj/item/weapon/fossil/bone) + del W + if(bnum==breq) + usr = user + icon_state = "skel" + var/creaturename = input("Input a name for your discovery:","Name your discovery","Spaceosaurus") + src.bstate = 1 + src.density = 1 + src.name = "[creaturename] skeleton" + if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) + src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull, the plaque reads [creaturename]." + else + src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull, the plaque reads [creaturename]." + else + src.desc = "Incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." + user << "Looks like it could use [src.breq-src.bnum] more bones." + else + ..() + else + ..() diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index a3d64309464..43da9ccb142 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -1,22 +1,25 @@ + datum/geosample - var/scrambled = 0 //if this sample has been mixed with other samples + var/scrambled = 0 //if this sample has been mixed with other samples // - var/age = 0 - var/age_thousand = 0 //age can correspond to different artifacts + var/age = 0 //age can correspond to different archaeological finds + var/age_thousand = 0 var/age_million = 0 var/age_billion = 0 var/artifact_id = "" //id of a nearby artifact, if there is one - var/artifact_strength = 0 //proportional to distance - var/responsive_reagent = "" ///each reagent corresponds to a different type of find - var/reagent_response = "" //likelihood of there being finds there + var/artifact_distance = 0 //proportional to distance + var/main_find = "" //carrier reagent that the main body of the tile responds to + var/secondary_find = "" //carrier reagent that the floor of the turf responds to // var/source_mineral + var/list/specifity_offsets = list() datum/geosample/New(var/turf/simulated/mineral/container) UpdateTurf(container) + artifact_distance = rand(500,999999) -//this function should only be called once. it's here just in case +//this should only need to be called once datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) source_mineral = container.mineralName age = rand(1,999) @@ -42,7 +45,7 @@ datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) age_million = rand(1,999) age_billion = rand(10, 13) if("Clown") - age = rand(-1,-999) + age = rand(-1,-999) //thats_the_joke.mp4 age_thousand = rand(-1,-999) /*if("Archaeo") //snowflake diff --git a/code/modules/research/xenoarchaeology/global_placeholder.dm b/code/modules/research/xenoarchaeology/global_placeholder.dm new file mode 100644 index 00000000000..c1291abc016 --- /dev/null +++ b/code/modules/research/xenoarchaeology/global_placeholder.dm @@ -0,0 +1,13 @@ +//todo: move these into global.dm + +var/FIND_NOTHING = 0 +var/FIND_PLANT = 1 +var/FIND_BIO = 2 +var/FIND_METEORIC = 3 +var/FIND_ICE = 4 +var/FIND_CRYSTALLINE = 6 +var/FIND_METALLIC = 7 +var/FIND_IGNEOUS = 8 +var/FIND_METAMORPHIC = 9 +var/FIND_CARBONATE = 10 +var/FIND_SEDIMENTARY = 11 diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 1104878db8eb2dad919372af91df2a915f8a8b4d..4cbc91d9f8fca6a33b923e6d2b4f2f2def648cbd 100644 GIT binary patch literal 17214 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 literal 17186 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 Date: Mon, 24 Dec 2012 00:09:09 +1000 Subject: [PATCH 06/66] renamed/reworked some xenoarch files, working xenoarch chemical analysis Signed-off-by: Cael_Aislinn --- baystation12.dme | 5 +- code/modules/mining/mine_turfs.dm | 5 +- .../reagents/reagent_containers/glass.dm | 4 +- .../research/xenoarchaeology/analysis.dm | 72 ++++++++--- .../xenoarchaeology/analysis_accelerator.dm | 42 ++++++- .../analysis_fourier_transform.dm | 25 ++-- .../analysis_gas_chromatography.dm | 83 ++++--------- .../xenoarchaeology/analysis_hyperspectral.dm | 31 ++++- .../xenoarchaeology/analysis_ion_mobility.dm | 30 +++++ .../xenoarchaeology/analysis_radiometric.dm | 6 - .../research/xenoarchaeology/archaeo_chem.dm | 113 ------------------ .../research/xenoarchaeology/geosample.dm | 69 +++++++++-- .../xenoarchaeology/global_placeholder.dm | 13 -- 13 files changed, 257 insertions(+), 241 deletions(-) delete mode 100644 code/modules/research/xenoarchaeology/analysis_radiometric.dm delete mode 100644 code/modules/research/xenoarchaeology/archaeo_chem.dm delete mode 100644 code/modules/research/xenoarchaeology/global_placeholder.dm diff --git a/baystation12.dme b/baystation12.dme index 8a293d2f4e6..38201fe54ba 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1078,9 +1078,8 @@ #include "code\modules\research\xenoarchaeology\analysis_gas_chromatography.dm" #include "code\modules\research\xenoarchaeology\analysis_hyperspectral.dm" #include "code\modules\research\xenoarchaeology\analysis_ion_mobility.dm" -#include "code\modules\research\xenoarchaeology\analysis_radiometric.dm" +#include "code\modules\research\xenoarchaeology\analysis_isotope_ratio.dm" #include "code\modules\research\xenoarchaeology\analysis_scanner.dm" -#include "code\modules\research\xenoarchaeology\archaeo_chem.dm" #include "code\modules\research\xenoarchaeology\archaeo_excavate.dm" #include "code\modules\research\xenoarchaeology\archaeo_tools.dm" #include "code\modules\research\xenoarchaeology\artifact.dm" @@ -1091,12 +1090,12 @@ #include "code\modules\research\xenoarchaeology\artifact_misc.dm" #include "code\modules\research\xenoarchaeology\artifact_synthetic.dm" #include "code\modules\research\xenoarchaeology\bunsen_burner.dm" +#include "code\modules\research\xenoarchaeology\chemistry.dm" #include "code\modules\research\xenoarchaeology\core_sampler.dm" #include "code\modules\research\xenoarchaeology\crystal.dm" #include "code\modules\research\xenoarchaeology\finds.dm" #include "code\modules\research\xenoarchaeology\fossils.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" -#include "code\modules\research\xenoarchaeology\global_placeholder.dm" #include "code\modules\research\xenoarchaeology\readme.dm" #include "code\modules\research\xenoarchaeology\tools.dm" #include "code\modules\scripting\Errors.dm" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 39a7add1dba..a3d832dcc9a 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -36,8 +36,6 @@ /turf/simulated/mineral/New() - src.geological_data = new /datum/geosample(src) - spawn(1) var/turf/T if((istype(get_step(src, NORTH), /turf/simulated/floor)) || (istype(get_step(src, NORTH), /turf/space)) || (istype(get_step(src, NORTH), /turf/simulated/shuttle/floor))) @@ -70,6 +68,9 @@ if(prob(spreadChance)) if(istype(get_step(src, EAST), /turf/simulated/mineral/random)) new src.type(get_step(src, EAST)) + + src.geological_data = new /datum/geosample(src) + return /turf/simulated/mineral/random diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 5f2db222668..2da3e786a07 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -83,10 +83,12 @@ else if(istype(target, /obj/item/clothing/suit/space/space_ninja)) return - //bunsen burner handles all of this as well else if(istype(target, /obj/machinery/bunsen_burner)) return + else if(istype(target, /obj/machinery/anomaly)) + return + else if(reagents.total_volume) user << "\blue You splash the solution onto [target]." src.reagents.reaction(target, TOUCH) diff --git a/code/modules/research/xenoarchaeology/analysis.dm b/code/modules/research/xenoarchaeology/analysis.dm index 0dc309a3d39..c864915d3a4 100644 --- a/code/modules/research/xenoarchaeology/analysis.dm +++ b/code/modules/research/xenoarchaeology/analysis.dm @@ -20,9 +20,17 @@ /obj/machinery/anomaly/New() //connect to a nearby scanner pad if(scanner_dir) - scanner = locate(/obj/machinery/anomaly/scanner) in get_step(src, scanner_dir) - if(!scanner) - scanner = locate(/obj/machinery/anomaly/scanner) in orange(1) + owned_scanner = locate(/obj/machinery/anomaly/scanner) in get_step(src, scanner_dir) + if(!owned_scanner) + owned_scanner = locate(/obj/machinery/anomaly/scanner) in orange(1) + + var/obj/item/weapon/reagent_containers/glass/solution_tray/S = new(src.loc) + var/turf/simulated/mineral/diamond/D + for(var/turf/simulated/mineral/diamond/M in world) + D = M + break + S.reagents.add_reagent("analysis_sample", 1, D.geological_data) + S.reagents.add_reagent("chlorine", 1, D.geological_data) //this proc should be overriden by each individual machine /obj/machinery/anomaly/attack_hand(var/mob/user as mob) @@ -30,13 +38,16 @@ return user.machine = src var/dat = "[src.name]
" - dat += "[scanner ? "Scanner connected." : "Scanner disconnected."]" - dat += "Module heat level:[temperature] kelvin
" + dat += "[owned_scanner ? "Scanner connected." : "Scanner disconnected."]
" + dat += "Module heat level: [temperature] kelvin
" dat += "Safeties set at 600k, shielding failure at 1200k. Failure to maintain safe heat levels may result in equipment damage.
" dat += "
" - dat += "[held_container ? "
Eject beaker" : "No beaker inserted."]
" - dat += "[held_container ? "Eject fuel tank" : "No fuel tank inserted."]
" - dat += "Begin scanning" + if(scanning) + dat += "Scan in progress


" + else + dat += "[held_container ? "Eject beaker" : "No beaker inserted."]
" + dat += "[fuel_container ? "Eject fuel tank" : "No fuel tank inserted."]
" + dat += "[held_container ? "Begin scanning" : ""]" dat += "
" dat += "Refresh
" dat += "Close
" @@ -49,10 +60,10 @@ obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob) if(held_container) user << "\red You must remove the [held_container] first." else - user << "\blue You put the [held_container] into the [src]." + user << "\blue You put the [W] into the [src]." user.drop_item(W) - held_container.loc = src held_container = W + held_container.loc = src updateDialog() else if(istype(W, /obj/item/weapon/tank)) @@ -70,7 +81,8 @@ obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob) /obj/machinery/anomaly/process() //not sure if everything needs to heat up, or just the GLPC - var/environmental_temp = loc.return_air().temperature + var/datum/gas_mixture/env = loc.return_air() + var/environmental_temp = env.temperature if(scanning) //heat up as we go, but if the air is freezing then heat up much slower var/new_heat = heat_accumulation_rate + heat_accumulation_rate * rand(-0.5,0.5) @@ -86,17 +98,17 @@ obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob) else if(temperature > environmental_temp) //cool down to match the air temperature -= 10 + rand(-5,5) - if(temperature < environmental_temp + if(temperature < environmental_temp) temperature = environmental_temp else if(temperature < environmental_temp) //heat up to match the air temperature += 10 + rand(-5,5) - if(temperature > environmental_temp + if(temperature > environmental_temp) temperature = environmental_temp obj/machinery/anomaly/proc/ScanResults() //instantiate in children to produce unique scan behaviour - return "Error initialising scanning components." + return "\red Error initialising scanning components." obj/machinery/anomaly/proc/BeginScan() var/total_scan_time = scan_time + scan_time * rand(-0.5, 0.5) @@ -105,17 +117,18 @@ obj/machinery/anomaly/proc/BeginScan() spawn(total_scan_time) if(scanning) scanning = 0 + updateDialog() //determine the results and print a report if(held_container) - src.visible_message("The [src] chimes.", 2) + src.visible_message("\icon[src] makes an insistent chime.", 2) var/obj/item/weapon/paper/P = new(src.loc) - P.name = "[src] analysis report #[++report_num]" + P.name = "[src] report #[++report_num]" P.info = "[src] analysis report #[report_num]

" + ScanResults() P.stamped = list(/obj/item/weapon/stamp) P.overlays = list("paper_stamped") else - src.visible_message("The [src] buzzes.", 2) + src.visible_message("\icon[src] makes a low buzzing noise.", 2) obj/machinery/anomaly/Topic(href, href_list) if(href_list["close"]) @@ -131,10 +144,31 @@ obj/machinery/anomaly/Topic(href, href_list) if(temperature >= 600) var/proceed = input("Unsafe internal temperature detected, do you wish to continue?","Warning") if(proceed) - safety_enabled = 0 - BeginScan() + if(get_dist(src, usr) <= 1) + safety_enabled = 0 + BeginScan() + else + usr << "\red You must be closer to the [src]!" else BeginScan() ..() updateDialog() + +//whether the carrier sample matches the possible finds +//results greater than a threshold of 0.6 means a positive result +obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/datum/reagent/carrier) + var/specifity = 0 + var/remaining = 1 + if(scanned_sample && carrier) + + for(var/index=1,index <= scanned_sample.find_presence.len, index++) + var/find = scanned_sample.find_presence[index] + if(find && responsive_carriers[index] == carrier) + specifity += 0.5 * remaining + rand(0, 0.25 * remaining) + remaining = 1 - specifity + + if(!specifity) + specifity += rand(0, 0.5) + + return specifity diff --git a/code/modules/research/xenoarchaeology/analysis_accelerator.dm b/code/modules/research/xenoarchaeology/analysis_accelerator.dm index 1e15854e847..0315220f99d 100644 --- a/code/modules/research/xenoarchaeology/analysis_accelerator.dm +++ b/code/modules/research/xenoarchaeology/analysis_accelerator.dm @@ -1,6 +1,46 @@ obj/machinery/anomaly/accelerator - name = "Accelerator Spectrometer" + name = "Accelerator spectrometer" desc = "A specialised, complex analysis machine." icon = 'virology.dmi' icon_state = "analyser" + +obj/machinery/anomaly/accelerator/ScanResults() + var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." + + var/datum/geosample/scanned_sample + var/carrier + var/num_reagents = 0 + + for(var/datum/reagent/A in held_container.reagents.reagent_list) + var/datum/reagent/R = A + if(istype(R, /datum/reagent/analysis_sample)) + scanned_sample = R.data + else + carrier = R.id + num_reagents++ + + if(num_reagents == 2 && scanned_sample && carrier) + var/specifity = GetResultSpecifity(scanned_sample, carrier) + var/accuracy = (specifity / (specifity + 0.2)) + results = "Kinetic acceleration of carrier ([carrier]) indicates age ([100 * accuracy]% accuracy):

" + + if(scanned_sample.age_billion) + var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (2 * rand() - 1)), 0) + var/displayed_age_billions = scanned_sample.age_billion + max(scanned_sample.age_billion * ((1 - accuracy) * (2 * rand() - 1)), 0) + results += "[displayed_age_billions + displayed_age_millions / 1000] billion years.
" + else if(scanned_sample.age_million) + var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age * ((1 - accuracy) * (4 * rand() - 2)), 0) + var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (2 * rand() - 1)), 0) + results += "[displayed_age_millions + displayed_age_thousands / 1000] million years.
" + else if(scanned_sample.age_thousand) + var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - accuracy) * (8 * rand() - 4)), 0) + var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age * ((1 - accuracy) * (4 * rand() - 2)), 0) + results += "[displayed_age_thousands + displayed_age / 1000] thousand years.
" + else + var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - accuracy) * (8 * rand() - 4)), 0) + results += "[displayed_age] years.
" + + results += "
Warning, results only valid for ages on the scale of billions of years." + + return results diff --git a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm b/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm index 597ee1817be..7a402fdcd99 100644 --- a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm +++ b/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm @@ -12,25 +12,30 @@ obj/machinery/anomaly/fourier_transform/ScanResults() var/carrier var/num_reagents = 0 - for(var/reagent/A in held_container.reagents.reagent_list) + for(var/datum/reagent/A in held_container.reagents.reagent_list) var/datum/reagent/R = A - if(istype(R,datum/reagent/density_separated_liquid)) - scanned_sample = R.data - else if(istype(R,datum/reagent/analysis_sample)) + if(istype(R, /datum/reagent/analysis_sample)) scanned_sample = R.data else - carrier = R.type + carrier = R.id num_reagents++ if(num_reagents == 2 && scanned_sample && carrier) //all necessary components are present var/specifity = GetResultSpecifity(scanned_sample, carrier) var/distance = scanned_sample.artifact_distance - if(specifity > 0.6) - artifact_distance += rand(-0.1, 0.1) * artifact_distance + if(distance > 0) + var/accuracy = 0.9 + if(specifity > 0.6) + distance += (0.2 * rand() - 0.1) * distance + else + var/offset = 1 - specifity + distance += distance * rand(-100 * offset, 100 * offset) / 100 + accuracy = specifity + results = "Fourier transform analysis on anomalous energy absorption through carrier ([carrier]) indicates source located inside emission radius ([100 * accuracy]% accuracy): [distance]." + if(carrier == scanned_sample.source_mineral) + results += "
Warning, analysis may be contaminated by high quantities of molecular carrier present throughout sample." else - var/offset = 1 - specifity - artifact_distance += rand(-offset, offset) * artifact_distance - results = "Anomalous energy absorption through carrier ([carrier.id]) indicates emission radius: [artifact_distance]" + results = "Standard energy dispersion detected throughout sample." return results diff --git a/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm b/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm index fbbb7fe47e4..69116ca117b 100644 --- a/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm +++ b/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm @@ -1,6 +1,6 @@ obj/machinery/anomaly/gas_chromatography - name = "Gas Chromatography Spectrometer" + name = "Gas Chromatography spectrometer" desc = "A specialised, complex analysis machine." icon = 'virology.dmi' icon_state = "analyser" @@ -12,69 +12,32 @@ obj/machinery/anomaly/gas_chromatography/ScanResults() var/carrier var/num_reagents = 0 - for(var/reagent/A in held_container.reagents.reagent_list) + for(var/datum/reagent/A in held_container.reagents.reagent_list) var/datum/reagent/R = A - if(istype(R,datum/reagent/density_separated_liquid)) - scanned_sample = R.data - else if(istype(R,datum/reagent/analysis_sample)) + if(istype(R, /datum/reagent/analysis_sample)) scanned_sample = R.data else - carrier = R.type + carrier = R.id num_reagents++ - if(num_reagents == 2 && scanned_sample && carrier) - //all necessary components are present - results = "Carrier ([carrier.id]) specifity: [GetResultSpecifity(scanned_sample, carrier)]" + if(num_reagents == 2 && scanned_sample) + + var/specifity = 0.15 + if(carrier) + specifity = GetResultSpecifity(scanned_sample, carrier) + results = "Chromatography partitioning analysis over carrier ([carrier]) indicates the following elements present ([110 * (specifity / (specifity + 0.1))]% accuracy):

" + + var/num_found = 0 + for(var/index=1,index <= scanned_sample.find_presence.len, index++) + var/find = scanned_sample.find_presence[index] + if(find && prob( 110 * (specifity / (specifity + 0.1)) )) + results += " - " + finds_as_strings[index] + "
" + num_found++ + + if(!num_found) + results = "Chromatography partitioning results over carrier ([carrier]) to determine elemental makeup were inconclusive.
" + + if(!carrier) + results += "
No carrier detected, scan accuracy affected.
" return results - -obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/datum/reagent/carrier) - var/specifity = 0 - if(scanned_sample && carrier) - var/threshold = 0.6 - - if(scanned_sample.main_find == carrier.id) - specifity += threshold + rand(0, 1 - threshold) - if(scanned_sample.secondary_find == carrier.id) - specifity += threshold + rand(0, 1 - threshold) - - /* - //check the main turf - if(scanned_sample.main_find == FIND_NOTHING) - //nothing? - else if(scanned_sample.main_find == FIND_PLANT || scanned_sample.main_find == FIND_BIO || scanned_sample.main_find == FIND_SKULL) - //preserved plant or animal - if(carrier.id == "carbon") - specifity += threshold + rand(0,1 - threshold) - else if(scanned_sample.main_find == FIND_METEORIC) - //deep space - if(carrier.id == "neon") - specifity += threshold + rand(0,1 - threshold) - else if(scanned_sample.main_find == FIND_ICE) - //solid h20 - if(carrier.id == "beryllium") - specifity += threshold + rand(0,1 - threshold) - else if(scanned_sample.main_find == FIND_IGNEOUS || scanned_sample.main_find == FIND_METAMORPHIC || scanned_sample.main_find == FIND_CARBONATE) - //rock - if(carrier.id == "calcium" || carrier.id == "chlorine") - specifity += threshold + rand(0,1 - threshold) - else if(scanned_sample.main_find == FIND_CRYSTALLINE) - //some kind of refractive, crystalline matter - if(carrier.id == "helium") - specifity += threshold + rand(0,1 - threshold) - else if(scanned_sample.main_find == FIND_METALLIC) - //something metal (could be just ores, not necessarily a synthetic artifact) - if(carrier.id == "silicon") - specifity += threshold + rand(0,1 - threshold) - else if(scanned_sample.main_find == FIND_SEDIMENTARY) - //sandy rock - if(carrier.id == "aluminium") - specifity += threshold + rand(0,1 - threshold) - */ - - if(specifity > 1) - specifity = 0.9 + rand(0,0.1) - else if(specifity <= 0) - specifity += rand(0, threshold) - - return specifity diff --git a/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm b/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm index 08f1d85cded..d6bc7c74041 100644 --- a/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm +++ b/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm @@ -1,6 +1,31 @@ obj/machinery/anomaly/hyperspectral - name = "Hypospectral Imager" + name = "Hyperspectral Imager" desc = "A specialised, complex analysis machine." - icon = 'virology.dmi' - icon_state = "analyser" + icon = 'icons/obj/computer.dmi' + icon_state = "rdcomp" + +obj/machinery/anomaly/hyperspectral/ScanResults() + var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." + + var/datum/geosample/scanned_sample + var/carrier + var/num_reagents = 0 + + for(var/datum/reagent/A in held_container.reagents.reagent_list) + var/datum/reagent/R = A + if(istype(R, /datum/reagent/analysis_sample)) + scanned_sample = R.data + else + carrier = R.id + num_reagents++ + + if(num_reagents == 2 && scanned_sample && carrier) + //all necessary components are present + var/specifity = GetResultSpecifity(scanned_sample, carrier) + results = "Spectral signature over carrier ([carrier], [specifity]):
" + results += "
" + if(scanned_sample.artifact_id && prob(specifity * 100)) + results += "Anomalous exotic energy signature detected: [scanned_sample.artifact_id]." + + return results diff --git a/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm b/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm index 21dc0ad52fc..221b4417b51 100644 --- a/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm +++ b/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm @@ -4,3 +4,33 @@ obj/machinery/anomaly/ion_mobility desc = "A specialised, complex analysis machine." icon = 'virology.dmi' icon_state = "analyser" + +obj/machinery/anomaly/ion_mobility/ScanResults() + var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." + + var/datum/geosample/scanned_sample + var/carrier + var/num_reagents = 0 + + for(var/datum/reagent/A in held_container.reagents.reagent_list) + var/datum/reagent/R = A + if(istype(R, /datum/reagent/analysis_sample)) + scanned_sample = R.data + else + carrier = R.id + num_reagents++ + + if(num_reagents == 2 && scanned_sample && carrier) + //all necessary components are present + results = "Kinetic analysis on sample's ionic residue in carrier ([carrier]) indicates the following composition:

" + var/found = 0 + for(var/index=1,index <= scanned_sample.find_presence.len, index++) + var/find = scanned_sample.find_presence[index] + //world << "index: [index], find: [find], response: [responsive_carriers[index]], carrier: [carrier]" + if(find && responsive_carriers[index] == carrier) + results += " - [finds_as_strings[index]] [find * 100]%
" + found++ + if(!found) + results = "Kinetic analysis on sample's ionic residue in carrier ([carrier]) to determine composition were inconclusive." + + return results diff --git a/code/modules/research/xenoarchaeology/analysis_radiometric.dm b/code/modules/research/xenoarchaeology/analysis_radiometric.dm deleted file mode 100644 index 9b9b280b2c4..00000000000 --- a/code/modules/research/xenoarchaeology/analysis_radiometric.dm +++ /dev/null @@ -1,6 +0,0 @@ - -obj/machinery/anomaly/radiometric - name = "Isotope ratio spectrometre" - desc = "A specialised, complex analysis machine." - icon = 'virology.dmi' - icon_state = "analyser" diff --git a/code/modules/research/xenoarchaeology/archaeo_chem.dm b/code/modules/research/xenoarchaeology/archaeo_chem.dm deleted file mode 100644 index c12a530a7ff..00000000000 --- a/code/modules/research/xenoarchaeology/archaeo_chem.dm +++ /dev/null @@ -1,113 +0,0 @@ - -//chemistry stuff here so that it can be easily viewed/modified -datum - reagent - tungsten //purely used to make lith-sodi-tungs - name = "Tungsten" - id = "tungsten" - description = "A chemical element, and a strong oxidising agent." - reagent_state = SOLID - color = "#808080" // rgb: 128, 128, 128 - //todo: make this silvery grey - - neon //purely used as a carrier - name = "Neon" - id = "neon" - description = "A chemical element, commonly used in lighting." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128, - //todo: make this fluro/bright purple - - beryllium //purely used as a carrier - name = "Beryllium" - id = "beryllium" - description = "A chemical element, prized for it's rigidity, thermal stability and low density when used in alloys." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128, - //todo: make this dark grey - - calcium //purely used as a carrier - name = "Calcium" - id = "calcium" - description = "An extremely common chemical element found throughout living organisms." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128, - //todo: make this bone-white colour - - lithiumsodiumtungstate - name = "Lithium Sodium Tungstate" - id = "lithiumsodiumtungstate" - description = "A reducing agent for geological compounds." - reagent_state = LIQUID - color = "#808080" // rgb: 128, 128, 128 - //todo: make this silvery grey - - ground_rock - name = "Ground Rock" - id = "ground_rock" - description = "A fine dust made of ground up rock." - reagent_state = SOLID - color = "#C81040" //rgb: 200, 16, 64 - //todo: make this brown - - density_separated_sample - name = "Analysis liquid" - id = "density_separated_sample" - description = "A watery paste used in chemical analysis." - reagent_state = LIQUID - color = "#C81040" //rgb: 200, 16, 64 - //todo: make this browny-white - - analysis_sample - name = "Analysis liquid" - id = "analysis_sample" - description = "A watery paste used in chemical analysis." - reagent_state = LIQUID - color = "#C81040" //rgb: 200, 16, 64 - //todo: make this white - - chemical_waste - name = "Chemical Waste" - id = "chemical_waste" - description = "A viscous, toxic liquid left over from many chemical processes." - reagent_state = LIQUID - color = "#C81040" //rgb: 200, 16, 64 - //todo: make this fluoro/bright green - -datum - chemical_reaction - lithiumsodiumtungstate //LiNa2WO4, not the easiest chem to mix - name = "Lithium Sodium Tungstate" - id = "lithiumsodiumtungstate" - result = "lithiumsodiumtungstate" - required_reagents = list("lithium" = 1, "sodium" = 2, "tungsten" = 1, "oxygen" = 4) - result_amount = 8 - - density_separated_liquid - name = "Density separated sample" - id = "density_separated_sample" - result = "density_separated_sample" - secondary_results = list("chemical_waste" = 1) - required_reagents = list("ground_rock" = 1, "lithiumsodiumtungstate" = 2) - result_amount = 2 - - analysis_liquid - name = "Analysis sample" - id = "analysis_sample" - result = "analysis_sample" - secondary_results = list("chemical_waste" = 1) - required_reagents = list("density_separated_sample" = 5) - result_amount = 4 - requires_heating = 1 - -/obj/item/weapon/reagent_containers/glass/solution_tray - icon = 'icons/obj/device.dmi' - icon_state = "solution_tray" - desc = "A small, open-topped glass container for delicate research samples." - m_amt = 0 - g_amt = 5 - w_class = 1.0 - amount_per_transfer_from_this = 1 - possible_transfer_amounts = list(1) - volume = 2 - flags = FPRINT | OPENCONTAINER diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index 43da9ccb142..98064c676f2 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -1,54 +1,103 @@ +#define FIND_PLANT 1 +#define FIND_BIO 2 +#define FIND_METEORIC 3 +#define FIND_ICE 4 +#define FIND_CRYSTALLINE 5 +#define FIND_METALLIC 6 +#define FIND_IGNEOUS 7 +#define FIND_METAMORPHIC 8 +#define FIND_SEDIMENTARY 9 +#define FIND_NOTHING 10 + +var/list/responsive_carriers = list( \ + "carbon", \ + "carbon", \ + "neon", \ + "beryllium", \ + "helium", \ + "silicon", \ + "calcium", \ + "chlorine", \ + "aluminium", \ + "plasma" ) + +var/list/finds_as_strings = list( \ + "Dead plant cells", \ + "Dead organism cells", \ + "Long exposure particles", \ + "Trace water particles", \ + "Crystalline structures", \ + "Metals", \ + "Igneous rock", \ + "Metamorphic rock", \ + "Sedimentary rock", \ + "Anomalous material" ) + datum/geosample - var/scrambled = 0 //if this sample has been mixed with other samples - // var/age = 0 //age can correspond to different archaeological finds var/age_thousand = 0 var/age_million = 0 var/age_billion = 0 var/artifact_id = "" //id of a nearby artifact, if there is one - var/artifact_distance = 0 //proportional to distance - var/main_find = "" //carrier reagent that the main body of the tile responds to - var/secondary_find = "" //carrier reagent that the floor of the turf responds to + var/artifact_distance = -1 //proportional to distance // var/source_mineral - var/list/specifity_offsets = list() + //all potential finds are initialised to null, so nullcheck before you access them + var/list/find_presence[10] datum/geosample/New(var/turf/simulated/mineral/container) + UpdateTurf(container) - artifact_distance = rand(500,999999) //this should only need to be called once datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) source_mineral = container.mineralName age = rand(1,999) + + find_presence[FIND_METEORIC] = rand(1,10) / 10 + + var/comp_remaining = 1 - find_presence[FIND_METEORIC] switch(container.mineralName) if("Uranium") age_million = rand(1, 704) age_thousand = rand(1,999) + find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_METALLIC] if("Iron") age_thousand = rand(1, 999) age_million = rand(1, 999) + find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_METALLIC] if("Diamond") age_thousand = rand(1,999) age_million = rand(1,999) + find_presence[FIND_CRYSTALLINE] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_CRYSTALLINE] if("Gold") age_thousand = rand(1,999) age_million = rand(1,999) age_billion = rand(3,4) + find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_METALLIC] if("Silver") age_thousand = rand(1,999) age_million = rand(1,999) + find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_METALLIC] if("Plasma") age_thousand = rand(1,999) age_million = rand(1,999) age_billion = rand(10, 13) + find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_METALLIC] if("Clown") age = rand(-1,-999) //thats_the_joke.mp4 age_thousand = rand(-1,-999) - /*if("Archaeo") - //snowflake - age_thousand = rand(1,999)*/ else source_mineral = "Rock" + find_presence[FIND_IGNEOUS] = comp_remaining * (rand(25, 75) / 100) + comp_remaining -= find_presence[FIND_IGNEOUS] + + find_presence[FIND_METAMORPHIC] = comp_remaining diff --git a/code/modules/research/xenoarchaeology/global_placeholder.dm b/code/modules/research/xenoarchaeology/global_placeholder.dm deleted file mode 100644 index c1291abc016..00000000000 --- a/code/modules/research/xenoarchaeology/global_placeholder.dm +++ /dev/null @@ -1,13 +0,0 @@ -//todo: move these into global.dm - -var/FIND_NOTHING = 0 -var/FIND_PLANT = 1 -var/FIND_BIO = 2 -var/FIND_METEORIC = 3 -var/FIND_ICE = 4 -var/FIND_CRYSTALLINE = 6 -var/FIND_METALLIC = 7 -var/FIND_IGNEOUS = 8 -var/FIND_METAMORPHIC = 9 -var/FIND_CARBONATE = 10 -var/FIND_SEDIMENTARY = 11 From 6dd5b43bd25da46846c4c62786f9e1baa8ae491b Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 27 Dec 2012 01:30:50 +1000 Subject: [PATCH 07/66] merged some extraneous icon files, added new icons Signed-off-by: Cael_Aislinn --- icons/obj/anomaly.dmi | Bin 19969 -> 0 bytes icons/obj/fossil.dmi | Bin 715 -> 0 bytes icons/obj/xenoarchaeology.dmi | Bin 0 -> 24472 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 icons/obj/anomaly.dmi delete mode 100644 icons/obj/fossil.dmi create mode 100644 icons/obj/xenoarchaeology.dmi diff --git a/icons/obj/anomaly.dmi b/icons/obj/anomaly.dmi deleted file mode 100644 index efaf040e02164cb4f9dc68ffcd92c4d8f6b473dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19969 zcmYJbc|4Tg`#(OG$T|t3WE8TKB)d_RrJ~J}ZA690z8f=$?E6-hCQ*_QS+dQ@KK3PK z9m|X*%h=5@X1=%A`}2GJ{upQObIyIueVuci>$;xLb8gWOjPy8I&$EI+APxh4-A5o0 z9q^S7beah$tUSNI1PWZ>6LW9f7hd+BPVU}LZmuAZe@^Z&hV{+WGfbPR0WmsbkK&LP zYR@GNJqG;ru~keKr#K|h!OWlAOuJ1gL^lZtcnjIR$0&fsDcLLXwL{i<(bmb3pOJ&r z^ehiMpGGWNjL!`|eZeK_|IIb5Y2jXWH3Li7&%4DNDpTT;3aAN>FI!&%lZ0=SDUzl1 zL(IY9qQX{ST~T2RaI2`W4T$q+6MJgXyXT=?^XsChzDys}QM<|1R)q^!kl{|&?VD5- zHmsWK{6&R37xh-l1_$e$y(?$VPbcGwDyo~NeTOdh(jeEMH^Z$B6?T!nV4ta%^Yk9k`HIcmY=;#ptS?(V z><4r&UMu_h<{&}s-|T(8Zztw%KtE;b5?P7{7FT1BRPLpbbVLsvnzplNe6>v0Z<}k@SPjGsHcIK>@MN z&8hR8vy-2^4w|uYokNcBYKgFmqxfh4yvbA6o*-SMu{Uymj7RoQpN{1gUi#r+zdXLH zx<+Ip0%%P- z^favM=^{Xg`z&&bLSw&}trf`tt0!B&t>(712i?0TVy>kQD&JdY%+W}4WqmCzXoN1< zD0b>wM1I)ol5(@0_aIzMVl04lhRrAr$1 zn~DgL>`|xD_+T&EBz)eBK|3bEhYe3R(+^&$R~IUYwg5Wd1X=jNzW$MYHQ3H1_)hZa~La zuB(R-RtpV63em}Q}l`@cMvKK?lvn}^n2)Xv?s zZyb5&EKEFd-lo~gWNR@G9gN{|E*h2we3?&4BI2PLa&v_x%o6?`esV#qO|93%K6leO zR-uQ*SutAB3JAS;zSyzQd)fFdmgSF?Jt2w7Q8hF~unEmH+k=?%Q)wl|L9NJ(=hzZ$Ku)uG zE|9QFNIi{lw&BdFuZRvu?QRxE4W=`tvHd{59I}#=Dd*BOvhp-W!-D1p%JHVXy~Q)Y zltldc^rMFM^4Q~$wekGKLO8_al38oA+FKB2ZUJZR0m9fn@<)8C?@8P8D*H=oWNX06IL zkawE&ZZWfAC~A4PrxlH|jV)-~c1;op@~w|}=3B)ZzYI^RQdUE@BSMExX`$FQ#p(Xg zJw}Z!rjDYRo0iVEC?j3x$mOoovWCs+5-7@TYES$CwPz}=>=VO>uHRFhrv`oG`Ly*( zNCWf-|FkxXqp2PVvayt1JL4DVp5k@Bh(3Gv-+VG_2q*w}oy zo?3?e>8XFJXOe*;eiZ?A(Z)hQXE$!$m7)_NPd&wvta8gK?l9VqO+7%UFozup;ZZ#> z#@AiIktV_&ru+E;F7I-i0?4Z|!prPK*?SR-K_#HvwY#qTULBK4-60v1yh`XO`)N zx-O}caPvxtC{DZ}JR3$eet{N}+`=5Cx>4%he1O9eGIzM4o9q5^ICHevpq^G-BQ+xs zLiTB&K~nFrf5ZOVx4(WlnW>M0UQ?KjHBE>kag*&SpfjHXnN&duZ?d21Ko5@S^d4@p zga|Yx(xo-9rNP82(Yz>j!9X8@Cgf@DXML5f9Jdf{;!X1cperntZTWDjs?#x6l`$6M z|Mo|*ZNg^#hD;Jf{`Il678fGS^O%pVzBG_`7R)f^5<;u5+|xVdt`yc~U@9jeYL_Ypf~+SR5+UJGRNjW}=(cjuc=TQ)he6vP3TH4myvJx@%I zv}1fg{d&|Q0Wyf1rCm4+Hl>~k@jZYTgmDd>l_tuG;E4C<7BeXp*|2RkNerHO0!~J_ zb)i1@_G4~!^(RK^dZOVNLwGUb^hidKIEhQ>)lyV;OwamXPyST#->8Old>5kP+D zL%U$O)GF@1nxZzGW?V+HcWx0rTBK%+gmD_w4Qu>W8N2}d_q&u*sgeM*m=*U&-23Z_n}MCd=y z1BVn`hO36i=<8%Z+z6&|2wU!Ju7g|<>|s~Y{gmxh9zi>aRWQg?MBwHa?g1KXh*0`L z9L-^I1eWzM@6|C&|D?_D+|3dapuba?pUfX_b|voV#r2a!-a}YdKCsI06$zjDV0i7s zx1%3!PXdutfg`w_H}u`RJ3sy`om@tLld%>LSbos(Otr8QxAO1yy(iaU4bN)x;+=nx zPC~EK*9z~8MDIO2mw!zKho+XR^36w6qTfkB~aVYWNt{2=bsF#TA= zI95=d;510X5(fHfx$oPW$ITIJWG4UUY--!Ob%N_maGY_1@DunsKz5OYlH{onTYsSW z9H!xsPbG4(BKz>+zAqzaV<7si7AQ)&?a~ZSN0pB+Y0vcILwE=3yLQdChYY=~T}lz~ zT*h%_Bcosb&cAYU8=n-MdaG}-DW_Mnfv6p%l=9W&7plOL`!9p8TzQ{UYGYTabpZnE zvGU~xheV#qIOxcpZ|+JQk?0m;V3O#LB)(OWUW+7h_I|H?^HkyCASnEdh1TIlEN8Cc zvhjVxn=almAVSSySg-Q&3&=bqC%+4_%_*G2eCcqe zqDHlg6fpF!?g)Qrp*|kQhjU}rj>A2*W2prM0Og#{3M0OqC{w zLCO_7rv-@S$NUr}8G%4{`Sxw-02Lk?G>kKZADWBOcw!WC1Hl4iG}3mZoJE|@37H}} zA-?8-UQ@0^(|{X+ye5PDBLrJ?GI4x^$OFKhW_ZN=+S!y)O99hxj0h;@OJ|$3!xfHd zAX@8Si7V@&!z0qv`|OH<&A=eX8&M4nL3rfAPOvYiV9#uVZ%smbhzKM<3ap#U2hv+_ z_)m3OB0pdIoj|`l3UfkAd;$#}O0O%bu?pWA9iDts-N%{u-d{j+ML+KD8QO>1wJV4r zQgrg`+>4-)KLu$apFl`*^`yMc!P|>8KGf1bN zYp^Hit7>+ib&g*2dJXpQUM|Bz5$`(8j(!(vfJI1C%HW$qhtAty1Lb*tqZwfMMcIR9BE5K18z51qFRYPC0@ zvI|E?+nJ=eG;dHyeh1y-?=1IU_maqUM=G|qHi!mE&ho+X=h_2HesuJN4%5*~)ZeOE z@by&In~3eara}=R7-^Ku#xXZ6`$3*UW{d3D11n*GH3V^sdHgy6+pP*nTVAUU5`=n< z-#->TyXm0OB!OPv?;hBj_q~t)#*nlmo*7BCAY%>8w2cv-jqm_KRX@K|?1b)H$ouGe zX0n`Xk%j|oyV3xRj`FcB?7<< zkN~wDnIPP}viog&zRYop9Z(hKV0q$0La`cXVT0vCK+ zNi}tM$+=~Q0VLp0*2}{<#RB4 zYdWv~Inza!M)mr2$EvDO_GU?eODl<~eh2DxE-5!PL`dn0CVAWC-$F!3({ZzV0t}R0cXn19{ScTryk5Pe<{kXJ`J(=mat8%}^sqN8C3_K{z#n~G{89`fD zW|djt0pxh@&?4kWyk3WW(jVHM{%pd|2Z9CUjomRUk#Xar#dLxR2tI54mmbJ_SCpHE zSs%8Nls^;xbOBY`9qUUr51H*B>&42?-#ZU|SiS~m3}Tv@WDdVs+xm;~o!$L;?GFPe zznEaZd=hVKT+yl_X}{+s3x@9j9xx;Ys4A#3q(;u1|99}|8H+s)i@K@cAIx7V`0T0M z^&vs7LHhh4^=*yB;SFNFNhY@`LBtN)VZAT)-59r!3)}y8l@TFn%a7c#6s+mwTqUr~ zkPFwE7Hh&OYfM|pm{S}3lcCmTzoluVE%a1Q1~P0fG${Cd(oTaPqK6pKo!A|}&<}Hr zH$NIViA5D7ohxUglWLZbP}n zXVt|07;*j+QT_?RS(7QQH2@?#Ymo8qBrx^yJi96{E9C#O);-h!;R!PL%&gyIevtZ- zFom1z|7p&GQ$t>gEZY}Z$}p=U_p_8>e5kkjB($E{?^t${BdxP>c-Q0UC0j-$^_KKf zyT}pkRw}KY`?8JWDULcSUhq3+U@?*00-EfkL51Nqfcry?YJL(3J2L|i4+H?|ByYR1A? za5wffu31!gNNt_w%y`l(HS;6K`IYnAoD=mODbXG*j`!4JzRs9?7->%szKjQRC|t+c zQ*MsXeIQ=JxEu>w@9T?J+vjg&IF?9gN|8WrR$qDH*U5w4cSW-8!`RZc!n%(GSti=?&jT!+jC z+od3`i-*jy_faiush=m82XHVf-}VD3ozWGM5(Qy?sM88Te(o2lLoc;7Z1gNF95;66 z%^NY3pUc5p@lN_$%1p^P@p)T=k?-=>u#XBW5*CW*2PenD2a3p2@#2d>AIiz&O*olK zYeIyJckEo?o<)5(wdF5chf4G*?t-hAOSO5H1P&v^?$^;j%yC$T+(S1=pJ@wtOZ|-> zUUH{g3Y7;R>s%V*jXFvFkp(X(hDSg;>g_w(Mu&Od?dm!B7G30B;^?>$oNQsF-6xz! z1AZ}f2>q4YAWADaZkZeFKJ6oh#?^TQ0hXp(U23Fj<#ek@&ro{?OJ8KJT$VJ#;OT0 zQ`S(Wgp!f%?gLpwfS5Rpn0Uk6Xw)k?k$L&q_uQ9NrNGDcMfLK$y!r0r#Y{bGuJN%m z48Q7yTcarphw%|7HIhrr4OeVc;$Y33jF?a4euDXbDwT|wl$eUEVL**A<5C3{@AE|nZCybqJsOc3F} zY$SYiEbU9LJ#+-493}LBho)pcRqw6$_}MBW@Y`&iL&zdtAiB@nHoa>jjy_wfd@MY<^16O~;nx`2>w5t?hO-Gr!FyZS z{c;QM?39QzytilrKXA2iWTlBgVmqjVLG%f`P}Z_Y(&K0w!CA-@-oyxl`i2+-YKDE=zx8Vl+d;a}t~&ZvK$-l#%QPBv`3A+~ zzE@Cp*TMM(vU<^W45#)7)D$k7^XQ7%-V)p<#Oo(m*vYxHRP6okb~+QCQ^{Yq@_W<@ zM`kB%)+1w&zzz_e((Ys8jDL~FL`S$xo}>HNJ-9wBT~uA(9JF!)Wz|&{{N(s4W)$Qg z3>V&{VK9{6a#astHti@PqD(=kC{e52VoRO3IZ({uBVNXL@~0WZ#ru0&rinM`1X(`c z&3rC4@{cCD(&k58^wN@V+LCrou2dRZqAXvhArojZi4Co;pS%5)sN0`%@uy+{bDyFu z4{L3~fayV(VZdMBnHR|CHX7O>-P(;YO*hex3W3aNVNNH#zhLYC$aGnEG zD27-J&{xWFx(OEqYz{vOAq^u_)_p~&x`oC_*ju4gF7vA>B zO~b7f=?p6912WE%t(F^KxOs`LiMJE?x=nN=Nr7Y{W_#^>hWtf!eS|N7Hn|29Ng!db zfI+FoJ@IE{(3Ov%7cDa<@$JSHrrc?3mHJKCEtF^0$a!{j3Y<)1ZbsHVS3>0^F@lyo z_CuzAyv|+Ms#*-{o=H&ipLdrJhP%XVen3P{zYXd(lSX8oMY>d8%$?3P_rEzTbCeQq zTG!Bka+{(2?yD-Sb6}X|{Gc+Ww?+Q@&b$wTwm2pn!?jNzhyZ5V>l(Cwz7amHNT>52 zavUEH^JlLJkCAtq&J=%YW@b12?ZIYx91`##FFf;qY*-eQaDXG64&5aFA>GKYTpzDk z01Aw{EdYpO0{{`%J?L9WK{=Y=+6!AD7hdZH7qj`f`se&)&^Je7BGRhl#~stbtfN!Z zpHDY-88y0Q5=8Il$Mu_`O^?$L$&2^znvSKF!j!l}Y|v)lbvMNB@>dCLGee*lWQt7` zsvclzScaEHeuTsRm7N=Mz#!ZD@-k3bXQ;UsOx-W~UI5YJP>z62S*3O?-KqAeW?RCq z4eoh|ZZgLqXZcTtWjpl;6~RU>(%c!$noxuoFvU2?)fYj}Xw5cKmHbNim>CERVS(g2 z5l|Hc58B)tBqls?{zwP9EE0?yeBk^XXNE2#kEh2$A85T-UAiCmMT$AKOfPTIPyONy zTfkt?3*|kc{L}lFLDLDM>V47n`=TJZk!#xR^G8Vot&&W5pOsDJH=x(e zUa-6}B5*LWYsd#~y42=qsIFSDJ`*Kk^CymrVY==9%Xs zZWP2&VpEym;|+U>L7RGdKJ(B0*opE`!96odA%8L|N0&a|_g+~3@;e-P&^lNSMP@s9 z?8_X@c!FaGvp!3oP1-p+v~pZs(>`dhPoY{%Y`1i@x3ZHdyVUK_P}3iiE83p7&bEI^ zILF+MSKa|;YU{*G+V6C@V_6KWT<*#6MQw4Rrw7I6CiC0p(^|praOrp zh5f2T!|-IvgFm&xtj z0H_FE97qTmtY<5#1vF+r-Cxi^l}{EuuWK z2vb{9>jpH&38j}F1{w70TvpAfRnyDAEnQrN_5H%}8-j1oBE6OpS?$JlIbJqd*HDFf&|s*+0-w ztxnK7C3x$Le~zL2^FW$k|4{;9jCLh!MgWQi6BN|RqTKWMt+dJG3vO{bcMR3k28AV$UPm0Y z2s#}zV8KLh)#Q6yKNZW){Os!*d9p-xFZY1Ms5HYdz=H)ZaJOa84-%GdHAvb#+J{HZ zIu4~g;>AeM@Fe;_)>xv>AV4-8Tf;O&7IZ1=?QWVk{u6Hr4@P>C{&^m6Nfh`z^v|A| zra%fx1K?h-hvaD7e`f(c{arTCsa=$Qj#RtIw^qw;e_+(|^9Rb;T_ucpTM7XMCf>5L$!guoTPLx_Q{<^q#<&QcmsJUJsR2Kd%jtJf8cZ%_G< z(nmKNb?MAt2_^^G#TDznB+#nf4+1?Jj4=hA6;0Byg~n5Psuf&7H4}%lk6jJ2~w;y39tZc4F;`j*4eqXQ+f~lLJ?gKHJZPJv=pXbMmqtPw zi$>4ytr0#@jAL{cAP)8V_eTHz8I9|AoxUawPz-AT#W0XMl2Gt7|9JicjqLz1=$G4< z5#a-v*$Hi|4ecE49t^p19a zk~(5TGy$c~0$N`2k?Q-9?+Q<;m~>_=XeGwfHofU@JY@f6hGJoX6;Th?$KM|9yRbzO zxd2*6Z>-CBMzw~nmR5Iu9A(tOS8M69g7|qlUoUJgj=r1xJS^!vs*>W3@ZGTMSObWS z(GzARwJUv55hZin*!S{jPNv>?Pf52`Mb-Ze_1Ms&0fZ~CL$H&~ z9W=20**@qad@`pc#RU21pYfOGvuJfFTzikm@5Oms1B+Mg&B%4jl2u<(;;bYsp{SrQ z%rbO49cv$?Mp0G_ZhJW8T2@K*9TJe@-y*87(C(vG|MH^BDtcAp_QxZikS&Of-SM`R zWe>Yf32s#jY=ew*M{0~1FlsM0L;O#k+z)mNZxhk%@_$$tuZ!vXs1Jh*rhOXuH5eWD0~jdVcjg!-XF&UrCw950RrmQ0vYc6PTXpFm`#yU)Pu_odebPen-x8II0KL=DGHW;> zPW=c|CtS@7#2O|WtJ5h_%U(U!T>z&MjgO%loxJfl7+M9~G)7s*zu&5L1~&~ZGyzzO z8%36qJ)Kw84?|c9CE~s8Tho!96QsQP)aL@v>j(G5y%?qLj%|Ixti37jkBE}CD5)7W zcNm0E?u`6uT(t%xdZ^#BESiOso&FwsT;TE+K(XO>=nZ7 zE4T3QhfRCvRP-a~@-r2$I07QlCB!_^{$j))TdwfBPN+>P1i)QePjL5(7Xj=Ir#cEn z6Xt>HfWRUdi;=sg+xuV3FGIWWO_Gt4&nfPIV4jz$cs=oUFnbT3-vJrFlfDuhvz_j? z`j00bWrP%zLf=C8>yUTv-b#QOcdT0zJx`vz(W!dv9>q6uWFM~N(r+d*A7fga!?m~6 zuWCmL9fdjt$tA#^N++<$7*~`cNPOv5K+cS9Eww&yvl0ll-&yD=`+j?9-)g|kZ01JL zv6LHJ``3HyWg&bdn%r1a^7EpHLbHEVkdej|n~S?^%aCAr0eSGD!ZSkTCn}e={!V@n zUfcnWBcD9Vw1s^xp>Eai*GAphR>=n7!6=B;_H_fdwK9)spU-*!+1j8z{Rx*;ts40( z+v{)3z=@%X+Mf<2=>pWu@9ElSr^ZId6FBQRH2Z|G;Bn)w8lURelFvsG?@m{oW(u|f z5aiF2B@Y0O3tkNDR&qODuv!UE{Rxa~GLU!L=W<;lMCMcJUNDyedqR_of}D=)812d} z>}NRKK1=W0_Xh@vb8$Rq_$A(w+mD&+(`?w!mu?4-3%yUNUWE~HjsT_0^4{}l*4hte zi3<%@B5kBlkO-*BE3dW5C^9-)GHoah)F4nZWcj2AIIhQWF(CMMip?n#CurmSB0)*# zo|S6~3IdXeav%lMs&gp#=&Kc{C2cL|VEN&Jj2EuYv_R%H>)+T4dd@5YI~#ttgQO1jHXZ40> z)%3+CC0ZMwgupvMC^giuw0b=*@cpG8m{m=(wBOF%H1?@$HSSwL!&I-C3^xeV;3`t{ zx3>%+&N6Bv2+UHoZLa8oxWA`PfG#1eMN~D(hV+1?bmYG9BH9RK9#KIIo7EX$PehC^7x0S$q8-6z|3ltT8cGaMopuD$kzbntt>uqBp^ai2GdFBaDxgtup;9q>KLh$a#;* zFc+l3q(QhEP&vR*^5}-4c+RfBPU3QQ#r9KFZs!bLNWVozO1|PZo4W7MmmDs2CJJp( z)>VCD`ro*QF-DqjgtwB=-;3NfQMh z*Gu~vZRyT?>(i98hbkB0R*6O+KO%-1SLdjdH z@+uL(;J$@o3HrBJzxNwmcQZB+yglQ! zA?~KMx2tAic~uiG+Y221NUW$4xtfH^-3p#9#-=U9PP2go3VYy|k;sl~h)r_J>Dig> z5y1e$gVn|1^E^3xPD=GZ3!;jmgRzOFk!7C&x_+Kel-$ybO8QGw#-;p;>Y`*QiSji- z;f;HRFQ%)DU0*4{v@L{X-=7Wrs`k^aV91xroiIjP^Jb#M*a2;4?;x;$?9iA0!V~2} zW&rMV*|>Tz`KH8nK5%}ZA7a0g4GS2#UL3H)tlpaq{kuYVa2pY}Dsw*9qcdv2j4#X0 z;Fa#bd}H@*jm^NEP|O%A!$xGS=P~+s3a2D4O(&`hIFXoq@~7D>nD1npKCl2q&5pv0 z!?a#p9u1zJ9qx5_f*@frumo`bi`ln5rYLf^Tw9=uEUWX`EPC(d%-~9Z&Woz| zWFhqd#5tAGr}D0lSPhW&lV`R}SJOz4;9#pM*V?P%c!~pcP}CKJ%gKu^TLH!O8M^{R zoKd4uljDD6_}M!_Ui6E-khO*vez|QDh&#IVqNs)p;J~jR^`M*lxR+WgcMu%6 z#7cgZ88cRr`b}8ckwhf{3%CJ~Jz!h9Rc!76Yqvp28PNcp(E+6$5jF;wI^T$M9@Mtn ze;A6_Q%)=MIwQ+ZiQvw9IUXF!K*EhTI#Ydzstw~|BGR<`U8#hx26HRM(W(W62PEm?x z0xMA_axEUsc0?VbE=ILR3zGjcYAWH36qsFUSQ~^$j9&u%erkC59%{Jx3DR^6kYH@E*|A*5c zRlClzR-Es$iaw`V3i}F@_aY&rxs3;wqpFV?)Z5a$vi}?~HC)fB5OxK;**w&2BwXv# zUC80Iq@9q>u@W;+#$yU=uN(;b#L!hD#Y0q9)uhMRsO#5G>RpTTe)D%+0p4c6qwSsT zhZNaF3#Au4n4c~jFy8m9+&?DFs7Iht%JQS#y@Q4RLUs6}vHtP`bxOraZ)zLh8Nsy9 z-_ga3B}mT^<%gMhz_5(xC)nv7nPbW@$_N(??HQ>_%l47|t`Fyvs4rc@+*9eo^5TCk zMZeI83WBbPF8+STe1`2btxoa8!Ta@2HPbi!q-l1N2#q1FbP`)N7u6DKQ$1U+RX!$R z(*#4o%}`b#Qt*!T$cAUjlMw<)4|!n^kRfI1Th^xg!?)&deOVJJ*LB+Y4k6@LSvKOCKP-&8TuvhTOztOViieuf7joQ93$+uD)ue~2%>P1h<(`oBhLpfQ#OGe0g#*{0>@ zb(+P}M?D^B$y5P-rr;|(Ic~e6aaP{vL7UBk9x2&L{Hw186#Vm@gi(#^9q+$!9d;%9 zASA8g-gRq|TFs;A)~g+yx6|Wr7ig=BC=lq2)m5G5M86No{7_+h26Sq)tP|LwFsF&a zrgOe@qBQ@>Xsy@kH)GVuS3yxLdH6AyT*=|E^r9|NamQYcN$|$UJd>*xgQXe<0TZOC z-;%EjE%U-J@98~y6Cz*wS7(Q2Bh63#&gLaba9RMKe9@?DE8@Qf6s6b}5AMSzr4`1* zWLf=xNwi4AwiITMx?%J6xtt19j7+X~QsTCh`Er@;rWTa?)CO6So+rmv0Dwds%fa`( zKJjD&aq0ClR!xfeQs(SsMLG~1mcPt+cHyk9eeI1o(buFbcpa@QQl1|fcH~&U%y>m~ zH?Ii#R6~xpWO;e5N!9F=6l{h#*21^b!XU(QnJ#e@SGWq6fZC%r)d^wx^KmC-Ai+0uNioyMwNL-^r4txUL#t#*t(Xm|E(ZSws6 zE#Mr3!OLaqt-e)Ii2Nc<3f-B)pBYl$E_OE#HRT^dr7Q=M%HRjQpxF-w`M0TIY-;8C z!7?#J%yCe2N^tKI2sAv*Jutkg%W5(B2bz?VR(Z%aD$Bu&!oNj2wKHP(3JJ!?baQt+ zy;+s{RvftVA6?V9T$gCrrK-|2DBd$LT>QIL{H;-(1$Hx?RFKmmSJ_l=EUA7L*!Nv- z{hH1Wi#G1!qDrIu)z0=(f7MX%uql6L^sg;WI>EP;GY7avy$*}Nsky^ zD+tV@C8;z=>46i1iK01c-=2opGClW?w?c6Z3mHu1d3 z+keTqIGxu`#?dgV%xc3#Zoq{%r0B1T@F{3j*>@(U+<5^i_juKs_glOjA_p986(K(a zwR*SUza$w8IaODEN+f1Jm*mX}`GLZVV~EY{4Fdxb4SuCb*fg6|qYn^kFw&?iK=>SK zlFaXiAa&nHixqKMCKTE|TQqP{6^axp^h9{OQSO7J=&(5vFD<37eR3hySo?p?;TmKV zjc?=W0p9aUIrrw!l+VsSi;K_x7OTb9YX?STdLm`MuF^y~2jODUo4+bXl>KT=14sq2 zF$}O9VHJm6T7^WV9Zne@z4`pRc`S?X3@duH0VHd{MAt|Vr%e~Q>>eB}Ofl5>1L@aJ z{#|F&_K2r>j3 z9V@6O2@J>E=Q8+ubv?Uf$U}BJ%_-fD*A6abk&I?R>|8WresormOJIek|MwVWGxQHC z>VsdOq~Og9usTJs26%Jhsha-ba-)y>Z*5>^F6`8E$yqQzNm-7xz@=xQk$J_e? zjTok;ihZL&o%G-!9sq$~dYWM9Sd7p`>rNEgrL$UHz^0tn!l@GQ?0W9hb4}~!YPMe*t-qMx3qJW};95O69iRevT1IAvOKe&j z%^f+RyCo|(6g>V>0HuB${n-j32g?~FP- z-BZmI4Cxa9g5UAEpb9|7H(8;Ui|4kPrK-CBlhh4#jvaZVmwfGiRsVtWF~gwyGd0TB zly2-zlYK7KT9j1co;T8oJbnY_JB0^z#;=P(1J*+ghW2=0uq*QibY|afQD~AKxWurE=5%tWt^A)D~X)vP|F#Xu3OS}@YRwU_NNJ& z@8BlP+PBQ4paCUQr@v47^4`m}G_PNhl%r+Q=2!p3wdSH4614gzqmu`6=XX5CZKtba zv(;*na63Ga&eT{lpR=xLyvjw2`xsP|Jf}p81(YCML$|UFIQ?8UaWx@{?Ruz@$N+_4 z5koA0bT#)zoDIP&0;UaFikBa&bQ;#EUdLf@t6KTMG5deI!gWMLS+Vc_sd^*t14;y+ z8$|XryiRfR%3DFJx0zj^5#DOCMwS!hU|p)Z@N!~lWtz`vk{!<4Ns?&0BerB$?qAuo zv)G%;Z|mbz)!|`UJd$);_#M0~fG%V%7m~XrfXlw7s3=wG)jK_Y@?0rWf4jwb)8}(LFoFnvzefjcB!Crc%qM;#$Vj)DXf@{Nj3qgVL!cpWwAJtId?G|g=M*t`_j}aKd zI#2$zjXiq#@=AOBg-DNu_DhP2ist+#gt6^kP_|#tyQHh%p4$ z_ckpJDv{Ur=+fqWRn4whb%Xa{(j@xZ~90MiR0KG zm+6*#r8(=3Lj1Ir7Ik8wOCCk}SCb$chnesG^~N4(w8{EP7Q|hKSFk_PEtsRQK5ndq z_dm9(y?g1!xw+IAKRTOxn6_8%?Y%rg`eC zd@&SV;gZKY8*0ys=C;4+l;Qci8sQ&0LIZ)BqIsFzkBZyw0n0B0;Ukq}FzW*zx^1Ab zgzmxlyDve9S?4WdkrO6~{M<>SsfBHsJ)qqs58>Gr##=8aLKJ#ATeLCfkR@W z612AC=bknxs9Oa_7V=_y>v?<(>~9ov56q|DRt&};;Q=JO@M-&udY3r*-xOV~5lTyz ztgfkP?S&a+JqPm!1v)gQKiQo9MKAOtAMO!0uSO6Q_lG5LUrX72@}B&aeNHuSoyllD zg2VbJHJn8=LZc~`iO2w{x{!tmJo5)O_8r4V!@ikRh+xjzoE0Sa%qx+2t1hUF@cBxh zzdhX0Xnv!P-~tPFd}m7^!;Z~n{&AiCV`Dy~v`WNNK%%yT-Cb-62Y(~n-!*)^iNH{nEI1{; zn`AxFnOV*!#mIV@X1~W-UV&e^ggFayLTv^|Gz=Ad0$kM(LZsgg-`Hz>*9$mUJZa?R zqJuGGh+wbJCIF~7Gu8P}@3_mBC75~SOtYTo{{O-f7eT+a!+Aq_=glfCehde*?bdbZ zoZaqs*M5esF}Q8`%Eg5TRV!`abT%QG^$M&Zyn=!!H&%ohlCgY^E*;VboWN_Z5;l#{ zo08Cg-%1-9rmnWvw01WgCP8WOx|DH_rPNT=Kj6<~#LLH@K`>o@m0qmb!zr zAnX1QjS3o6Wv;Tzin^y8-W1E6c zA0x@Sf|mo?wM%V{7_X%e=XBT%$#sn{7@qxmbHKOhCTFY-PDg3nxVcP}3mh-~d-iO; zuqxIc@lk%Uq~G#^l+r683L$7HRWNnt8mD6BR!oVes!c@M_!5M1uk5eojWb_TDVv_u zmfN>@KJu_cVMWr(S;5q>N9gBnxkl+c`PJqPIpY zew%HiSBKeb=f}z__M&_`$@{+^m1-9_Z*xOG2FTnpn6XUT})HT(2{~$e- z%|KG?zzWZJAj!K_LoYMwN;gDnWocNld2h4LDpYWGnR_T)KuptZ;nd?hTfBwz(gg8B zHw1Dg73%d9{U(i6xpmY{>o^ zQ5@*cc4}%iY@J^=zH2k*{pTx6=m{^{gOfn#MxJ}qo9WQOp#=MIQNZw%1l7qBeFisBH;BH&~BuP}FX+x9oQEp@)V+k=FhSQ3$B8IS|WX(ol*b?aY2M zW%Kv!e@S!%-y5yNiDSlRw~PizhQ+HF9~lc( z-+84HsCuP#IUCthc6M|AB8y#u=LhCdnjZbhhlH37z3*GO3PBF_iZh|@c_Y`QRat0| zyDH`VK(x`403HB1LU2M6o&_@7m$MtviUT<2hF^`662KASh^MN*e613~q4xJUU&diW zi_IkX*tHa>-VQ=Tf!m^#v<-~{@1?vkmYn6HgZJ{8GZ8m#RS8EugafQpE-Hrz9NqYT zbzFNml-VDD8Q0trm5@s!_n(kUV#qKoHIiF)f4OF~uDP~mno+JJ_sbe(O-1ZhYeJ=% zn3!A}lC24YWU!*ajLZyUW?${)**|{2=Q;0r&Uwx`@B4k;bI$j6&i9kh5fnN3hy_ko zqNv7LsDcgjI1h6}LF(7`eLH0Elk7FkK%uJOhq?S5T{&8|lCW#13A8Ae9gmk?J&P-`kYM+N}7l;DzQXSZ- z{Hdz`4gRnL5AZ)47Sj$y+AP44=pM~}^kf`F9z6d18vaTg6w!ZPs2_y0#2ej_)x%&+ zirTVg@tpBP212HPG4!ZpvUpF!ov7$&%2S2YwT&}2@ylw#V~FylpbbT{8E*#Sl~e82 zg%K{jAu=fuXGz44!O4@AqBh^lVs~!~bJT(=Au7?lk()F>5u?1rJL=4$QQo!Tpfh5x zcqYKP?V>9g>$H718t60L%sW(k-$U?LgNEH|DGigIg`z9S@igj^5Uiivo=zK75oomw zvz3BU_otIW-Tc%qp8qz>fTN-8u;3|i&(__x)`h*KS_nzRT&D|tcL6^$3nWwv!_Mb& z12&X=AbsG^Cu3u!z5XjFb`)OC-}LwQ*O_$<`Lg;c)$qhX)-^(ToFcRchIvZtWC+-0 zE1a`H?^?#w7~}YffSE+MWOi0x0rTaTMe>(L$JnI*#Iv)s?X#A1XtSTrkl)rys5|Lb zT$&B_#7WjuoJoq#zto{+dR~gohH9&Rbo-dIwW*dYZ0b$_3)iCb26st~z1nl`LqQ9f zW<8&E0=hXfZ9;w*5gcU^&rOv%IRxd=_n_(WV5&yPy7%!;t@wOcG6mDE#h>zu*)hp} z)l8Ao9N@|ErQF#+-_LujuWyT+ukHuB@S4x9kCV`;(?-!?W)Y1xw4mlPcDlt27gGRG z>h>wW?lDwZNt<drFPEf6ZLP4TsP>H1poNs}>HtO~e?T26nxL z9S-~`gk~z0DDz<2_}sdF>wp)Gtz(LA@)`qRxWPP8|D<5t5ZJA^*f*q&S1O@MJ29m) zYXIduoEuBpXB~RjB|tC6AHBuFxEit>u18`RFUi`%(^3YUBxZn6Qba1K4oc` zdzGDRx8qd&<_N6eh?RH#O25A05;*K20Du|c;3ZkW&#~V37Si3Usk19;fOwf=z zfGUaXx{IO0r6ZkoKg$lqB=sQq+AkaC39knTc%7=EJ?r95qza2ba7*VySLF-6#Xb&u zI5~96TGCmy7GDudkdFf)P&+-ndToOZm15AGy>9!};F||_V%+hN;84{Uf7-eKYRJxg zM+_p`c|4qI-eE9uigQ!dQJ2qw7s7KAF-dy$x9?~mi)JoB0{5Y97;t2$s$pIM?ilI8 zG!ddu$^YHc)7d5DI*|QW-(VQfCMk0B=1pCqsvo%ZI7KTv4~l_Q=rJn!hHtR)TiAfz z7ws9PxhZtZ{AEh>g=d%oe=~hV(#qtBTJ`K91x-kl$1+i6oYc>31H=TYBx#0xLr%~Plq zdkk)?bzw@E`Pl;uoR%9c)%CDxpB%z&j3L_whHLD&Z9u4Ps(9fLfdXROD;Y!0-6X7wJFc<$+tyf@a0W`>$nF(4KQ1>Hg11LK zp{>wc<1{<5LJWVC*0~Y*jwt2$3L$70-`S+wJ*46_g}AYK^Pw(PcVNWm=CS+!etva=;9))XC$wbIY1hmyeV zxsK{38d2dJA)-LIH4&@CwIg%8@tx2J=y>X*u-}%?L{5(sGMTY;!yb~}ncLL2R5wCp z;en$TN!SKv1Hg(Itv^+!a;x-(IQzmaFIE-4%cOnMblfp2>OPG%Ha6DAyfPUEbRUBr zR~q&5I(br5QmT*~(Q>=JT@9SF{RO0^rjnJVrS4~m3x_A3_Y-^5yA8hfJ?rhgr>(tR zccQecEZIdOfoH$hhR$2;rXoXkRYqIg?0r&LDBsy}{Z}ap#gbB9Ue0KuPWNWC9V7=2 z3~R_cD2)b}P$Rng%Z}(yxQS^^Gf%ZGh~#g5u>1tdquve?pPF|6VV=o95|j5vjj*L$ z0Ji+N4Qr{kvGUqbjOW}13RP3&Jv}p=kVDl@sj1fcj03ceK5T3>ebm~DistA|vVk}L z%2(GP-5+!ieF8Ny@!3$EKQjR`s4KP#F@kP?=~_Osql3m@o*?Yikm>mHW5@!i5~x^S z`UrD@_)maj5k%cswTP#`wWOma;;F+!6if9v_Ml?}g5WBks2A}WtQc31QqAYfI?Gt5 zsdP|B0S?#Soun`xo2zo1cKlOW`M2 zxlD#wNBISG4{}!#IsqU$pkurSK&TCiEVzR$&@g(Sycy(Mo--u~c`ZFxVRP$0oeP2W z2)LY|427#xIUG&`2OIhE<PVrzO$tkU%0A*<+8@wftd;>?W%iP zsQuVEHk*Ch+P>-hQNf3~!Is(0E~LB`iN%W{zrY_%sbj;vQ@+y+n`?on(Q)1>&?!Uy&M8r$|V#Shyb$o zs;(mh^>l9xEB}tHmhby%pSPJ{>ASsGe9eX`*5EdT{>!{|m14A&IrJGw%POO#Hyxx> zN-N;+;hlbB=H_+=vlb3#xr|DPnK{(fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3K9+DL*e&iHkEOv#1!zHRR$KlIJ^&f>FTYnT^>akip>Bx= z>oPMP=$5j;vbD{O)``wnQJK_!iqLvCPEfo42@tNt3sDQ~6DcC*hc4>nN^@OLGv@|4 z&$4N8kyM5a_8=9&VP=Ra2(Vztm%xyN05fxdGI3z>sET;u1_%leX#gP@fE?0P)eJOM zygas`lr*EdGS3ShWd;@~e5xWWOOET{pdbc)HBy-t1Z;nB)CNEUp!L`R#%PNJz~&_l z1s}g0C)CQ_5XPH8gK&upHE~4 z;FKb2o#+>+0khuZTip=Ye8hku6>;ce?-|8Ke7;52fHSAyHE`w%h^(FwknK-51z`W* zELR4=KZZRA?EfX0wE_;t0$~5w2eW)(^9W%77qfg2z5v;Q z4Bi2N{Xa(bTWJeW3hV0)v8w;a`+Upc1n|JBO13*`m4n~D0WeNF2O=4}nzSkX{}6Eb x1Hjmf<=>|llwR*-1iTmdF7UboZ$AZKNFRC1m+?<@)6)O|002ovPDHLkV1i{RJNWvT-}9e6=aegX?Q@OZi3{hSALgjVL_Ys}u}`zopA+*Wmb!FORV>D@x%@ z`b8AWXZVXqUMGo~fllP{C{F-FxS>GEBD+eHXT7onyVL0DDoqo~(;wjQ6hobvu}-OU zRZ_inMH<0&XSHs1U2Ymx#j+dFNadG1z;Yl?rXHs^u4zAMG8Yt1ZVEQ)T2KAy`S(^C ztJQS({WJO(HIB+GFfCPA4<{BU=VU>}?OAp5y<2QWU2Z$r_S35!7DLbWTnhRRWFh=n z^&TGz$0NYr+l+CcTc4c#FL^JVPcsf$krD$_Qkmb=S6E7`?mqa9SQiI@I6>NKk4*z| zck=?Fbf;H1Na`E8oJ-Ek2vS-t#jp1tQ-t^7zpt4TyL)-rF;y1-G@9g@?5})R-^{UB_X6mUVfZY!)b-HM8p*W@f6;JGZA=gDZ)7fVRKxom9e}?B-hmy| zbkF|Kz>qh%TBQ+D6ipbz{k!!-zsLP8}!87hTUni6pC3e6}BCWK{D z2fpthl_p?iI+_i=c?4M#IYg+^CqV4+t8|G4 zni|qD)Qe{QHHz~)!bt_VTreiEdmq(1^RLC#NOJ0BOTX7;XSvN0>_c#iUTc&@j+~4S za{I~(@w=X(N428 zq8pilQN5}DS^RfX3Xz$lNv!rI@k1G2Fs%)iCW)Sc<}OIWpGCK z6xvJ@zLjmv^Ja&{d7skj=FSnQyI!=>U#5?uL5*{JP1jy>BhCbf=35Oxtud$*E5N$3Imw*kMzX>W8v?RG_s^WVzEjW8G0N9 zLYGEsVkb(LPo~nCXWWPJT%YaR*AbY2NgpvRQGP{DYeZxCkRhxz7^sh!(`YmMuJ8jJI|}g8wRtD>;SOI*x(lTaae^vte=6xlrEe7e0HH2`OF56ue43K~gB3a?69j14Vky zPVNMaS2D&BxoXh2f>PR}c{oF*LP@R(KV`+K*quv|A9la%gnCZu#29?xl!3zgLsd>U z-vE!KU?%$bi3f+oT<3ChPCQxLk@)s6bTj~<5dTdQt(5~fMr z8evh%IG98;r!E|5PGbaepj~2zfw-3k`i=(DCr*zLA-$zIJaO8 zrpuMCB7$7JxFc?gURT=SjwN9F4W+$GW5By!$rvVyMfRx6)Ro>;(cu^c;RnKbtJU(L zpj*oKJ$`A}gJVL>K`sd}G!cZ^!mlP3ry~b-Jo&YOIl!jw4Exl_G%mlrsaZ|jIT+<* zYzZ?6Ckp*%b;rb-*yWPvaMIar-hF>{q5jI#Bha@(YBq*-uBX8NvRiH*41f8LJ&GA@ zviZT!^zb9kr(2YtD3sGZnlHwGlR)y`*d`Iu?Vh2yN6-XY_^~)HtK9^M6&X5p*y`xR z@Slqej(^7-wAX^06o583T37U~{CV$Z5T-MUN*EuDk#zt7jsZ9{f@@~`syj>Q%kcepsN6>;6E>_=~|g02F` z#eY7Wk`6T@)s)N(PgI*YtjuOKUR7H&I5t|j(R@Y7gtc57;^|uNu1yi_z81aUazUb&rNgYW7Fwq4JP-a}3nrg( zA>qrGu2$mc6dFSe`DPR$$dmLH4ipxVp>*rhFAQIT6y9@epT8T=iv#`78w|K7Sr9A* z7ZM%x8;W}C|2wC2V7OVkcUVf9Qv%YmkT)Io8(R0G*HOuIBW|jB-LYv|AR4_ncc{KI zf3(@SJWPwyY+jC=yi{Ejy}K~i{x6!`!^rULw8Kwv!AFhgkJ&FNm&TorBkn2tmDB?P zDkdDsX;3_C*%)tA?rb(&~g#(V6__;r=eWu-@+_Z_f8Zr7h?iH z0K-8;`_hTBg~>pmnuKiJw)H&x@cG_4z`q&AD^U_>}5XGhlD z%P4nb3vOl1lb$a9+S)JD=xS`mz1!-y#qF!Ro^nb6TH1;KiYme!bYpD~6w{G|h4mj- z#guHND{^?PCksB}IWebj8<=_-5rj@m611IeQ-DZx7OBe={*K(VXzTI_Ip@6dG7pK` z(qPrbR?M6ZygFVy`ufR=3NFhfAEGlB$e5inW774sx=>duE>xPzg0G7Ye@PUo2@#`5 zB8<=Yvk^Y+peKve1Z{uvT(?L-5nyKGVCh%;`zPPbnvm!^rL55Wkwe$_j*Rn*l@7~Y zha!lh%gTL?e?_{Pmk;fko)Z>2^_F_|y-l~m?pZtZ2_RB#r6Y#h0(p`I8YU(Snyfk& zp*v;GFU5XSkRi|OytSsK@G^=y!e#}v?nCaeXdEN=FTW{OUou}~b<`jK_qx8(DIL-0 ziSA%fCc+1gB9tiOKBM?nf$Hz6#w+zDbkyD{0U6gyJ;F2OnPqBV;uwbGY~pZXNPAB# zxaz*Nw|AnQy1E+vQq}F1Sq1}B|GJl)LZUQHT5O>07xQ5oJ2)@K$R3BNcd!843FWg4 zlM#usTb|7m)JCO|VhmTe?*sC$3wHghI)s#IjZeNua3oJrENx=@$sTLR5_e#LkC0#S zb$kFh>67Kz>0CX-e0HL`1j;P;{5aK}A+)bnU+(XliolXCgMrb8yjt5%o#TLBL2msz zE9>K0MmFu?$zJvgy>4kF_H6csuKW%0W?Y_nu6y#vxXHh~TpDo(<&sT_rE?c%hBGO1-ll9NCp{>dVFhjnx~i;}vUMj2YZC z^_&=B;c-h@4`RckArQCU6z}eSE1PLV>IyCnhDdZ{bIe@Y|xzHQQP0llF_Nm~@jk&)4N32 zhTkQN`S0Q!Xgr*WY;Ju4JN=e)wl>MF0BOg0qavKam5nbog zp|6h{i~sb_UgSw}5x2kV+~8RvxjCsGN7$>>U`DVu*|#M)vN;6rd?|ak?(^g1%JalO zsFDqs28+yc)6jH#)!+5!vouUJc<$(x4tvNDY*JIMkul5sMO3t1_9S@H*Z9IlYZYPv z1)fSkytr0qlt@{j_1rx{BJR2$lw+D~G0V&O^*@Zh&5)a3C`xhy;q`NlUO_F^E3G2} zMxvMkj#5{AHloqd#6K56NdIJA@j4;ASKaNPR%ep1h`*Rq_F*Ir9K4P1*O7@@-f*i} z2Moy<1Ec7AY()?0SlzAX|okpz- z{Vbi+K(nAvp>mwHny8w4YP@Fher&f*1CB8W9$dwgXVAh$(?YoB&QDhHr%STiM=Zqn zz(Q#uFX^ye*PeJTr<5j)d8fuJse8~YdX4RkOOKg1F3z^(pf-p4$Ccv+U30PUN?0ac zcjN?MfaJCcKF9qDe9E~;ji{)i|3CBeDQ+tw^=6(XD^$%LtyjHB=YxE{ocYO)QhK{u zWZ??=>z8^A1D{!nl`Zo~gci(oY0@XhRSw>pOB=YO7PazUY#kP!*aE%x5aTnLE&v_h zJHF~Dfur*e-QfrDlc)9$ApzbIgG0lW`{ z{f2C442A&K^2|`UI2}Hg-dOLh%K*DxuX=Sv z^{#1gjX#|vRF<^r1$O-4L7N(qjCB(+X7Jd=?-qd+I#^sOVBC84JytGM(ZS&%nxjR;kkqxw zgbEmdIv4}CjEzMwq!;#WQ3@fo!~42jM+LXfPBGg&!1?}@u^gUIBG>)T3g4~6RZL-r z!te@}_3@{lR~N0{|8D+>k!_|5eZy4+L63hkl-J9Le@vIi(TBOi;1rs5l)cmD!&N`2 z$r<|4=sJMN6@S~Uhg^m!8 zpQqn6hW^RnOb*_LP7GT#+T}BJxi*b?Cw@1$Zy)0>2Re`UABHvSAr7BEfxAdmiP1G| zD%G+DEZ;iEmVBF+ODhl9V)FAD6U-?Sj^gzYnN?i9_%jRAk6o^QoM7;Kb_yc z*Z)kB6g$Bi<-P9MNs5URv03zx$&RP6EyR4;>zA~BwBpW8{pbm5CJ1kXZEEj@H3+K_ zF18Rd9_j?-^LyX{sowG1Gf~SMfR@XCNBYBY& z{iWN5#!aC9YWjONc@2tRomUzZjB!0%JE~OQmeqo z2(jiv24wi0#-BhwsLtE6&_xP#9xiMg^h3W_Zun75bTnxT;9{RCX(#rE?8_b;97Hr1 zzw^Sz(NsM9iJZo~99^m^ZW!-<%|z0wpLl)rwbdn;omi14=-QrYYn1Pkst5f`O~#E& z_l}c}h}YE*`$6nPA>JJI^L2wmdf(e3irl@PDo^1xEX^&>E7#_93Lh;7CcdP%uxXO$ zR>ZXs1#BvEj=`}03k2Q=t!;=>kA9r5Via;X5$k@@-l9m>yRendaVp|};aPw~*AL6R zSF9cET|o3G;vf{cqeJx?la`3;Lq?Fl$!LE}Z@hLs8i-s@9xA%{u>cChNmP3Ff@Fot zlb7YoH<2e)u%F%rcP+V=GkGmmJYl>4Ha{`JF{@%m@ z;Gs8F`=gyWXMV%$+A?LB>kF5DTZa30wa8Fc;v`B@CF;$>lR{RTG!M%R?SFUhPHYcV z&eZ7OWI@m$^uGzf-dN8ccVsUHVBa_f&Rdt1PHUye50ew^#O*ko(N1<8ArEm{k!G8V zEC^BK9>`iDYlpK!BH63%Uk>$Ld|;*~tvDMiJJ0kFe+ERR4+&MP#Mb)Q@6wcJQt@Id zMhCTA`%~5#6wLrc5_s}ulRWUck)fXZvJa;WnDBH_scF=$ts#N7Tf^x6F-T3(?T_z} z?^peYo!X`=-MX`wARW#-%VoWnmzPN`o6q5B&zDx762rLM71)dDL)0y+)dqSH+BvZ7 zdsL!6(09*GsSc4P;itc%3Ye5xrvEYVcl%sIi5FQPpIKYI^s2%O@MH=#YO7Pab^Ud1 zT@IuF86aW08>!uA!w;by-3kX>mk0FrA#qX{Tx=#+ZOC9mjOR-7DehA*Zr*}@SRF59 z$!u6$VvSK3X}D2x<(afsc??mExZK-2)*BGM^AW>vz#_7PN<*SgKMoZ64SnBI8Mz7e zPKqcPTlJ{{b^g;y$9OUdy{`*c9@~Ofgvt0qxYq}g$1)Q88VtNpTkz&9WLN3Rw=8x0 z{!Dsr;ZE$0(2ir`6CRt)IjNoeL(59^$^COYl~WsqKBI!%yGp^{f8T=1bj(+SaG3SJ zsXetBb%ojT!|zeX%_YA-84g*x^Iu%KQp947fioO!q>joYDBewAGzYVL@2uj3cuPdrLP7X zJ&Ha)rIvbvO|PPE7rlhkh+^4|@0fI?b4W02_b(m)T>SFJr}`ek>f$4M-kUk;7+KG` zGhzq*SWPg+Cd9eT@TW8ImjD&rI-2+B^RSY4yz69>Hvf2wI&wbfRj1za6_rsHwCfhn zL}M}D+LOdJKRx<$#9kupXF1FjJkkkF>i zMt(5S&F=>Jqf)gr=g7vGh}2Tbv&U|iyjxtn{T_g<;rdyT#de(#eO0vo&j(MfWR7eR5th}UJ1%-y zJOgwD?KdEwgi13-LghzP-Vr6~C_}@iWRZ z0SL&5RC)hb*OELoC{Q~zIu!>*DUhW{!Q0{B+1IjS7CnnwL%z#T_<0?Y%BPNaGz$JS zMOS-9KVnJjtwwEKo(`hjdWz?7=77INGYxp5T~|bGP8CJM|AC1k1c+Ac{2)B?x{>wU z{wJqj-uNjFCpC?JoWyh-{QQePhQ0n5MIfg!wWqFRB z`Ntymx7M#AdUTUx?hi--Ex(q zGjB7Y#P$m+uLBnuiaBEIJ>}S|DgmM;e=pnmV0?NQ@p^o=#N2jhq1boYK$r2!F`f!b z@N4q;-oa-U2zHRie^2ogDCbZc&F!;3wYI|N0%l41wkx>EcUnWaJ)qx0t;U=_}meM~@vBjE1(! z>{3fZQftU%Gs^klWe1Bto`>iRuMb(-%099!%!ot2@e->iR&&r|&6AFWOa^#UrFUgL zt2~gbDAtRnkTZeu@Jg!_XxNXot; z&KIp_*1}b>@YBeugy%YXMWu3G^Fud$FTf7+18w|1|5_hsn55t>6tKD4dg6uh zhfli=yoWO6q@|Gs+UoNDOO6ZZb>vh1Oce!vHhb_D8A#IAPs?b6oH(_Hx5i!mYs z!C)mykcofYXO1QQdH}95dDoxZ2JQ3qKtc+CGd@A2VcQp5?AU@}Ge@EH&cYH~zWW2} zzg@l^T-9e8_xDvr6dg#F3{6rCqJ)oUCqWSo9S4^0XGV(E(#QMHEG0ARuk9^`dKN9J zQu3N#rtV_Q-aIjmd?hqv_Yj~FUI|(B4b2~Z_1Y>`LcRbgU{wd)k{tab^AQ-1ZJPoMHhJ;QrV_I(F!H^?_EsiVG{& zv$WT3bVGIEiHnwhdGOmJIt7PcJl)52A{q8;)g|`I#(x167&_ll2)47R+SXzCQIcNn zjeL0`WFV60A5LJDgl-5Xh)y9^ zd;6XFWb`XAXsW}t!n`JbX^EG+Tv)JE9*f<4rn7ItZOLb^VeC-5m{NOTnyM#x!S&F6oCj!E z#D*WfZU5x`(3-cg6J|iSm1@)V;?t0g!XG{-<(mM*tX{G0jQT{Cqe%6)N%gasexiMwvU6Z}XdG{)^fo+Refx_csV5Ed7>!tn6}!dZkk z#E)GJ_dVKr(cVh$h4Wy^R~IHJzz0v*b99=<{!W*;v8v{-iY;VXuAA=QWQCjW6X@nY zgrPV1cFbjF_=~PaE}wkRBYgndu3ZI%YJbqP0sMsAkHEgBFy*7|@NLUiL*D`6wy|wb zenM%}(N!e?#GO0TFvK*xl2K2im=* z(97Ylzkev04Llyw3Fuwx$$_uY+yjZcbkRqqi057qW9(=$z0bK%L`e3XnEpU=V455> z9V=FY#DS@LZUTMAQ1q&0xxWZvHALVs^ZiE^?s+w!5By2cqN7hYGrFrk;`;xr1<-zd zBl^ktFkNKs4HwKwy158}X0WKS&L<5oeE7OiS~%bcL?NRiX&?U7iSSzKuSRK+ZiQ(H zGH%1ZLSK8UP6MzDae=6)&F~I3yK7~XAe=o)Te@RhZ6$;pM zO`Ko<)kQ@1TkuQY5M(zd>Q2wvI}>O(3&Qw9Tb^2i`zY9^@8B6xwm}9-jEvlzsmJ`- ziei{PGB@1!T5&lso-Jvef>MhW1M0ZvB+n)i3}d~T&%rdTSD9LH%-6^%vIwlJ{co(j_^b zuasJEvm8%v!-5s8r9sI6Fsf(u6OdukA?PzJusIH5l|5%^90j6&;sm-%eww6z6!OBe zVN&T2Kout2w53iAtM@q$MXtOij>0y^Wvoy9C15kBt3R*JRolkIN&p*1sSEXE0ypNy zDvbSA+z@N^W9^JL=yQ~*&Gr7JhY|BD;sQqs&t?2>io{bnwxD-hQ7RD=wweg~E1yyN zJO+r0Z?h;qxD;fL>kA)Z4@HlmOQ(D^`B;e38+k#4e`Ik~f2zgcD2s^L(fO0R zpz)Q{fiGztkG+y1=7d4%GwtXt@6OjP<_vWVpb8--7Y$W^0ZyzD&HRI@)b4+|6W{ZX zy2$-5fKeRxyJv{q(<3%*a#Bz)Tgpp3U+`U{TY0r&he=vFsARi+oWrVIj8ILAFR7I3 z%L)H;adLj%J~tne-{?q)2^y2H?wb2e{X{R0vi0>%s^(E4Ao^zvcllTX2_p=OKT;8K zFha@C9=Jp&#{AkUG=jE&LOcCOAg^TRdRW`h-Ql>?v-QP?()w^qPrgHSy^JYt@ZORo zx5jFVUScCl{>v@NPmRmP;T-YWS@UxY6tE-JypZ?+L_F0zez=CP#1OF68FNl{CXjCWSdizf3b{uJy5{$BP&a=l zJm$1#EF;A;=>F4hHMxobO=xwQm=#0>ElW*oJM3aJvK~`%^>A~69g`$RP&kgKXmH(k zqN@XAXem5khb;gq1Rc^iLPbEjtf>TLgZG%S`m{?IO}rr@57{1KZF~r4Q@!vz%#6jy zI4BYIsvpr22NgT9eMtKj50=xbA*<$FvJXQ3( zOuiiaO*G1SJD{N}d8fbr%?X(QSd`_-UwHUdNRi zjLK03apWYAGcDvTZgZ|CpJX~AwsLdVc<_tp$JH)q>?_{**52QTe=RnHt|96;Y)^^U zBkqU=P}v}P!~*AZU1O?L(^>;>Uog-s#uMVBG-lA!nZ~1&D2D0&;MAm)%y8D4g1i;W zf(jM>+0k37ZRpSXNF*k%ik1l!a5UYBFB0U+nThR4lijViqBtQ4WSOios7r9%#4A%= zM*i&>47u3(5P+@Kn-)=x0R%$!=FijKCj_wTaqgz9(qZx*OL79@pgI;ms)fFx4ikWj z+1lBO7<5yGK;TRKO@0#R++*th(Axi8{aCafSF}!r1rSVi{vDkX{`!p9UI8?cI-1a+ zQ$Pr{Hl+gyKb+TzJn@~Zo>u5`e~iA;V97Y_jr@7a$`tNUDiO1ywCG%YB=$VxZ_eoC zL;}!n-X6Zs-^#E_hE%6?rXGG z#x9A(=Pe3tQE2n8u3P7hEsh5W^BfGr&@QdxikB%e*S_jftVf$wO{MN}5RoJQ69XJN8A9ZB^1 zSUl!=Q?&<_I4UuWeY)OIUS4-n9u?7k9m#g#jQfK00oyA~xCO?8~TXh!bav53J{ zSJ%BkprA_Cs#6i)<@b148z=VTzB};_;_e92jX{Qpj*KU`UnG9Z%LL6T-N@~Tde3nZ z_vS-b9*vkdAg@LAlw80nWRVnIO)L7+py%}h6u(bt?k!W4rPwi6t)@BCpfwO=0uO$Y zevrb!_q3-Is&(da!$tlZl0CGbp(RTaP>Q*okax{sEX1hDQIq|gv*RGZm4w|w!kpl& zYu?fkNa}m{yPLNXy~@A#hojl5{{e{<3ca1O$)pVuB?#`v-xGMwTgLSB)ltQg%pthbA;HErtzT0qvg1$xu?J2xhau- zLQan$3`~4lFh~CqON2|9`PA;)_ODTe%C)uC@xv)2)-*sLKQ;Gs@OO7dQ2yRetG-)w zv9Olslp*19aDUp^X0ExYt-&7%sXc82mtXi}HyFT?*G2`y*qST3!)<}hHtP#&gL0LX z1uMTL$Ia2p$G)(JSBU_nI1^UgH{neo~ADBM2J2o~2iEQovB(1XJr5JH` zv+si+B$)Z}zd0C6`H1!ByTgrzO!DHlPAI#}gjl3*-C4{zflX!+oJ`?e`J&6E1h%kd z`i`K4=WRxDK;aOJ(@MDU2E@7UiA^*vushS&{L=+)YF<{f8`cx?-zMz_o;1AM+bmGr zXqNiSTeBKf@G6-#vC=R z;ZNHuyIeb3D$v~E0d!1?xB0P}Cf+{tDoqGXl}`Vz*v6^HFKXVK1A-R_k6aFI;*urTMmH9%ko2G*8`IQ+QyWt%Z!{Si;}`Q)9#% zAb1*$oviT7IFUbB0)YTza)`USvhUA2mR0miFJHsdkoBQp7OA~CiIq_IF`R|tEqCze zC8XEG2ssXKf0BKjxNc!8J-k%|+r(APCaFh@?7lqi;O+)~7uOGMl)vPG(_uE`hF)+{ z`EI>u(=@yU&uH@e(#jwaoDpz`d&9e`HBkviqqynuWxlpbJ$9H{i=VwK@%r@Njgq>tPwRdH(c8UZe9H1;_|kiN%Qu;^SEyIVy&mZeyyALvL;*UHv}Ng zaZB)M*YGiIlr6mBC*;>7KzcD(Vs8+qfH1cWW$DoQj1SdNWC}qZvhe29lw7rSD~*h=_9T_O?OTccF)bXkEz;^%>vM% zR_((EW=P^gL^rkX#XJfo$3;OvK+u5QvKGb4D793)oxrh+kDS)^{RILN^>F>4yeu1NF=Dtcx^@^k0_u;kH>xd9*X@d-qrT$h8@ zVdQJedT4u?piIi0N=sl>O{9-HXTLUwpkr241Cq2=-`JLTUS|PV!_zR;6yFF)!CNQH z(|tEavA7~$VH6Nihnurp3=<9PI)!Uv^*&tC&HvVo82aDcuz*UaxF`Hxn)KZMb|~b` zd2jK@WdAzwIKUCE_-%%=TQB8XusmyAC7A2VWy}FtrzOBf<=_fg%?h{Kx;{q9U#=-L z6h#~llg#-H6k?KTjJVdL9$wjAU%a9M`ZR0*EU9QJ;aBthgsiYNn3w!5B|WFj6454} z`B->i&8mRV-t>aqQdGeyi4ylCl{TeUWSVbH6PK_+P~cfAN1XANL^GoI&tH$K)?uCy z!lj2bU(+6C0*jrfDryq)T{}#`67>K4rRwPz8{@u!qA&Rins)MYC=550u7UMtD^tl| z`TfoUt`*=<^N3gh{5-fk^Ym(Ew~Q4Yee3;R>#dguuNwUD3*l))6&x=;ZbfOkJ0AER zs=j;}HIPQPZTH-dI7n07XI0lO z^*0zphvzf~>?IImKJxzfW~|U@?TOU?*5dPYgnsZoI=(re^A3#13@n>#VrRZA9O(6K zdCWS(ZIuAo{XhWOJ>?2rss^fJt=ay#tP&{w**?F(F)${H@f?Vt#+_W~f|HNe3P zc{tr4t_j7=O_z6Q_1m#n%6&>C!aCurh9c3g`AqgB|2yfUt{ha>I=p^~DLwBKDMp7# zae2LJTn1imcO-~dbW^bvaYOHpJ|U)Cbmx~Q96LD1iOsOJagYem-@PJ~{tbw4{BShM zjYLh8yx98EdA+XMw|Oxm+clCCo@lDueD<{0l|dPdE0o-uH4~|~24S$Nvo&uP({3MP zqKcfRz%$(yJP)q$aJZ*Tx7qFr=~X}G7mSel{aGPT4`5{#*K>d9$7@Y?4a5`2GI<}B zMC-NHyn*ad0Y%n;{L(B`(4@U$@;vzfT2bNs^}P6!82EW#nhBKQ&P{`!zjC3#Z9;HV zP@VZuVJ_D8!v7u`kZ4vHH)4rf8n|V5O)MYyRb`*s_egkav2^KwT@Q&z^8-K2tw+jZ zZbt6N0h|B*W3zT1_W8{#{*ws&ZcY-=gAL%8U0@7=PY`}%tdCd%e*dfwGrWd9R#j_~ z6W#U{S;%@q5bmwiLSuB9z85e25Dz*-=4sHF^XN-m=w5$Wx?)8`6Mo&BaO?%w@6CQU zK}2C6Vf66kybxkdot_g6@q3KobFTuSFjXwEVovNl(pQf$I3k+cOp``{(Fkb3lev={ zqd>^t&7U;nOHgQ5**dlCiM$_N?$5;wD$EzN8O+@Yc$jNC|q)eD4q^RsMdb;c-E5 zjq9gZ8P<2{UL0aF6dK=y{C?M|=u;wQE$&emAmd~7ux(IT%j*lp+x5D>e&Gq*}n|9h3_#aN-Q+uZm%8_4LV~khvim!gxE3M{RUZATdG`qk6KsS@8+a2 zxM~XQdkAo*Jfn#Q@$9b*=zr9?O%d8>Q}`26 z#I5C_!WNbRx6mO5E98{f!ji~Q4Mko56MGdt1V{KBhT#&G#2;@0W`6;T6D3yDEyT>& z?^c|ds%dUZJTRMDB6YeMuink8bjsq|0@wA)ZqoFH1kp>B^d%o3O8e6t*yqG%OzPfT ze5DjfHtvux+LE)Z^cIIG*4j50GnbwGy_4Zl*B{fKvUQ|Ymo=1nQ0wUm#g_*%6DVg) z+>1>&gxNuy5l~|;GcoFn>4f@K+NGhxMPjo51=IpId+{$0B1>@wt9mL>#PvU-t9=hu}hXtRgv7{h#sw%Ve7*MD(#_XiDT zLiZmA|E%p;`HOeA`LX(To#L-7B}Wxm9|?Apq9m6;R)E~3b-7FyD9N$MqS6k=>be=O z+l{+T5ITRqEa!%}U&F%ilDDE-kWsXAzNBR4bv?cKr(`Z3RN)v#|43G0!X!lf=8^E(XUML*B8(2? z6y}DA2i+zit~b@Ov(JXDB08Y-Hi5rTp^4d&+t$=!CsAv-O)4!H@LKTl`x3MFQU1%M zQp8T$1wT&vGR#5I31i3A>>)L~GKj>fP6_!Rv*kdDuKZmq@rd0q2(Pi1bKI&;LlSi1 z)hLpvhIOd-nBj^#_WI{Lq{f!&pNw~OT*!R)7O?dNa4GU#8PcD1z3~*@JObGrTZjr> zS2SsycuEmO=yqSEc8pUdAQJqk1Sl_yBNc-4{lXEm|as4mP?&kBATqgk25GP$ofmCcY+~ye>hf zBx@HphANu>4leEw>V%g10vw-3sYbji=M~o_&c52lAfFlOydPOxmY@k;lwZDb+TCW1 zUqkZ(Tn<1|@pngr_<;bS5W>t|d?*3zoB7=UA-yCm+@+=E$oR;DL?Srmu*-oe!5|XND4v%dO`mc50zY20S#FS6Hk%qnNKximd3=)L4ewjWuG2 zf%@mR5iGXb)U&t)Tk@N(|0}pz;~69Lbq^j2B#J(Z7f}U0)F==y(i1=T_I4D`RxI=9` z@`je6>fV7yjva44R++1YilJAPaCQKEVH^fVKjU?DdFry6pgpQsZwp080OP6w@l=)<&hmR567P?mh69nybYJBs49BF$hUD=-m-e%o?OyfA-u!k!9b*1RaZcB> zNH2z|SJfs&f5#c}=1dM_I!q1F*wn0z#oF}0k1@6{UlIh5_o?H#KcZVDgUgX-D{W8Z zHjX6UT4LVoz0aYsP2GnR6X!g-9<7?1W{-*=cEgKs_%r{CNg94gHuvIUC*V%3ufCZs z%k8YWkOhE^xyg(<6Z5BjTcM9jl>Ul~9Ac-DcTuja*0tMB6#Mqgm+=X-@rWHfmb^5M z-1auKe~bk0NkBxA!%Ew{=o9yg%T9Z|eAN1H1++jbA^e(3fm4(M^+C*R;g{w^T4>|q z*YBsyPqwMoaAFq3Y7C-xcqF!{0Na3-t_2+)hFOC`r;6j(6{=_nxSeI{kGcuIa@>L3#oWt^_+?ioHvhO7_S*?P*-iyATV-$Jf^XcU=Z~; z^yIxjm%v||YZkZ;q<0_f<42H$Koz3x6gpsDWf!qD*#?gFAg9%2V3{{5&XMKM`3J`T zzKes{<9qhDV03vdK(0lqiGct+?i{i;Atff@-N4aN9;|%b6topd|e`PtK%)s#NGMNr8 z%i)fJi5X3;ISLjl8RB4!ZN6E8-}GJ-b-(NW@LL%m9KbsRco#cXRS@1XV2hr83?{nv z#!)+MnKiY=(Klk&LsVZFKhatz|Mlnf*P|HByI2EJgdwVLkO5ft)eN^m0o1oL7Dod@ zxA(+4r<%=sE^j}b5SA79K~?}D|D>7#de*=HgF5?mD8R;MHY<#*{s279aQvmJ`V+O2 z%n<fvBEzE7-AF~w|qg4djg}M5m@i(!x+q(qr>Xt2Nyip^XIa~MfL@i8Gl7@L%mRn z&^Pzkvy<;FDS3F`V{eeZOK{az)@+I2As`2t5qov`FIWQqIue%H4jgz2phrzJw70<$ znTlnMyD$1k(J-->Xi50Y@DCozt7|llh}Z{MNx%=}6F*2)kXh<`N2(%kqSBGkIN;mu z+J4?F^|(nSCqM4pTJ(M1|MZGMA*+*CJ4L#TSi2jtl#^_k~-C&(r zwyiIX3_|F5p>l^uY}qz~s7uxgESO~K(mKX~JU@8-{Jin#^0HxJ_zBeba7!4@=CNK) zV0GXQY?uf*{b;b@1a4E8djhpp`K5Rjc7fyTA-KVx#Wt_i2B<25!m`jHu=Q+=PV)cm zasMA44UymkaAVgBDzbH^n_?6@W9;jL<5Ya6}*oSV~Dq`X7?)d}n7h51t3v2G)ho9hPKVObCKL*nVloW`W3 z3xWM;V}(L?#slG{d8LmBJ5LvM-75WxW0g@c`%OEdmBkIg2d(GWZ!ObFAQ0Qm&Hn|E zWJ?Big7bV7d!y{rNX2RGr)t2WJ6y$?KL2~LLm4+TA2zx!tB=r`p;B~}RP2982_wH! z@Q3~cK5MONw>O!`Z3?3U0Fy*D#9x)y!6FQbH-Ifeit7)3T7Ooo(-eaIPhaJED1^sR zdU~&&ooPjK6#OfeE{F0ITIXB4IW({>%=EQX@tK#C++4UY zxgn=c2#KFPT#FypNaaW@*j`tC?d26iHw@b@ zX(O1zd$8xX_|3UJnk=B;&oNPX<9PGpt-B#_-!`?a_x15J@L6c$gs!3ZPEanSul3y@ zErxBwWiOMfTEq{r>+jok7x8Zw;RZYlTWX_~NUk?ZM8pW?o7bNC%j23MwAgNUtU$3B zrQ__}HE_K$hFb`7JHP)%nKww?`A1q|B9TiiQF*}1+t8fwr_PNE$-8$;+sS1i<&)3c zOncMl+`5zU6#S21l6%*73NW2mxY;lJL4RX|W*d~{)YIjQD1A?OwE(_C)+f{(7Ur-S zr23FSItb)QQI>#42^WRbcfU+jz}mV zNJ)2hOQXQhr3@Vk3P^{flpqaK(w&0TAUzD<<@bJny?=e{TkG7Ib?-U%>^WyY=h=Im zz5g!a59iWP-9gVZD&f96xRinm*l(E;cAL<^A^mb}F<@=>ctU1Wo}|01>R0)Xh)I7Z zM2lStHBTQq%Tu_{$0IM#NJ~rG-`{_{KdD@SbTp7l#RtkVJc7q)gJ)5UuE|dP;!(+K ze+f^vKo27VcO!yiia7{>n@mY`@>vhgVk&4cRoEWZ^=dCS&f`0{X&D66Ep3ux7xh+* zB5orKU~im0?s@nAKSS@+MmYKwyS%t8>^2{oWOV~r6!N+4&zO7O$*tvI_34Ie0G=Ek zckOB7e!x?J?Ergdif|A#cQIMyunim&Uq2m6fWtR`r*y>xeE??H>j}74OlXQczSloh znDP}u^J_x`rPt2rQym=&LF1+{2(@5AX(_%JCQXR?iPIP1S#Ktwl;n0}<%a$pHEs*U z_rD-_|2w)^aJnBVMI!q;oUuaj_GlYBH}r6eJm@zVC^>=69J{D=5?=RV0){#a0p?d& zxhuL(-Pp43UBuqgS#8^24`au3hY~2%5e;zeu{ij;@-8OMGnG%AuHXaJkqlXMWP2KX z!i)U@?=iMO!S@PU_E3z08=U0$fc z?z1vhh6+W=h{;O=RBl(PS@QbMbhRR;A4z@XR{|AG7>|MjUW`~@b6F@z*6uFdEsUl- zD!KmhZY3@%86{9IMyO#PTK%5q2pbCrHfXflobNX+f%JNras-2ZR|s^M1oMG%qJYVD z@3I0nDI2ndyr{CjX5zUYMpWCurtJ9atZ`x$J1Xwp0+F@SKtJF%^SMfDVr3x9#iim) zCOQ#EldcL0!IoQiL92B5v5Bn7M66dhF{60#u35Tkw9{Ss2Hu$nz=6}p3OK&!H z|4v64Q-?%F#zhp_a&S^$4IY2z^{2Wk3?~kdK>ymAv@vH@h3eu+8jpoy3D53j2K`)% z@YMdkw6XvvacV*`z19}?oAtxw#jw%1#RafdW0;bD1=4$Htpkt_ zYe~yr{~YyPHC3QcY@{-{#Qt==S7imIJ<&^;-kai72OpHr9{nP?q5MX16#LS-%kCQjDaZil>UnVJ;D|>Q-|OJnEn86>`^5n z;md+k zGx{RUOeejm^vUYw<|KHZfsVWH3@Iymckn5HT!u^LqlTTU`Dd1KR+qmNd)U_B$?4Pk zI@wBkkC!E?O5|r~#J>6n+ljgu}dV{olK8*@AE6P>7R^4WG> zBc&;-4V%imvu%D^|J8Gy8?KpydoIs<(?Xi(+(w3fqE8dxJpY1>nX-<|o9FrO&%0cM zEMv^mX>r@fX{IL*DRKeG z6(A`PYZ?%QFYZ8)DSl6*boz^E?*sXjxc(Q1(zTmvJ!~2J+8nwPcqHEupImWL<=p-` zg>U-%S}_jx7hG7X(TPn*`g&w*gcTD?OC`|*G5grQnR0p_Ofo+$=84l zHJ$Njp*tN4N~58{4@A*t%sD;4K}eAQ&~8ns7gHa^np~bGj;*uM=w_#$b5!Z1o-?E_juu`EWB@mO z`(}B#*t}aNu@=GDWRBb7_##8r&sFh>n@Gpj+xsP}uUv5mm-6vWeqb|Jz7Gf}JEns8 zG975Y)9O!@v*QF)cdn+tuKEs#ds`7ai|jReh_i4DXvzM{ZyP7Utiy-zt$g4tT` z7jMfSSP|q&DiDEY{Vmzq&fO8-4i4YV7FZlmoyWTL$^KbHC$rV)JRI1DQxMOeb#E1s z&v@;)lR*;ge9$?MxYGrtq>CM$C$QqPE_=K$CshmzDc^?oNe!|_) z;PF6L5PEeZ<1}vh^tRLqeu-oi&wWJ9e_Oiw2BBKD>MRX%*gR_ub4R~*H>>_ZJQzcC7z0`Vv?`Gf@UtpaA*LAW3g+2~Nfk0>JWpSN6n zq33yl(r708Ad;)HI`ef1uK{Z#K)zvdR00GJJ9-I6q3w>CgZ=#=7N`hqGmC0?MhApb z;=eg8x}__D8pT}(jWXcouwIVNbzuKAjc#@mK<;-9AfMV0s~Lh5pvcQC<;1qV*c5;? zd--*|`}fbg=*t%%R|Eo}(F-emTvZdAB7TR9kI{?G#$A4-TiqnJmEM3Vu~re5_{KWv zX*n8pil58)3;{-rcv10un6|d|qQ>*10pGmX<*HZpPt$=deY7r*5ZIAN(FalVW|RHz zXE0M$d9)558(+%OBC4UuWHciHl@5V#mYt#X z|BO-&2DHDTi0EHwN~{ljbNq0EXPu6Xs@FD4WjKT%=2OxzAjp zEm2O`e^`xcZPef?%>bU$yH9YU`(rT7`(;a*^H;r>FZaHf99tU!SX%Xph!2yFfJ|$& zJ2EyPP?Xc9Ag>dEv8^N+@PNPvt3K#zMGMe2c0V#fldK=<>A%I)5!=<_{uqt`Dr)X) zUp?1D5j+%D3`)W+9y4r8u2^Z&^{wYaa{GG;A3iXnCW$|}`{ww*&YjihrE&b|!NMFl z2tXQy^cv@Ed$6pm3*B*mA^zdRikVBgl`8F)@qw1{-oQ-tEwMS^dKb>OTOy}bP8Akri>TDIEz&v}?luM$sbbIsdF7zIE5wzy?oJwhNOi+}H0 z`h!g=-LL!895KsQT0V5;$(LtwgFx}HQ!pqHvBY`1w6vrz9;&p_;bHdgKgdXY)Uk`1 zNb+cf{^~VT(SzG~!DasW^N^%VCc7@BTdd^KYy1znj7_TK#S?Cl+08dE)MUdL%I>H+dgBQHq3K3+Se3Ox;R6>12Zs&pe0dS& z4wz!s8w``+v+2|!Ss57&h_B=CazkLMM#pRR42QmUufv=$Wd5l5st;4?6x@WT(l*Sv z!j7qZgEd=i@kEh4h+_{==G>dbLJtGD6ny!D%j2aJ26GMGAJr=we$iE5;t<}cj?{tZ zgmbtCtLs9vAvz)wo@Ms~tuAP##uwFVxpo(Se(u}2 zU}s}CyZre@pJf1!kfeDJ&5uHYU-U@{*1`U zdzn+Kl#6U*ACd<5+J9<(6#~6uBT!M_Ei9<46hzqM=H}izH>4GsW8_6hwUsx8+CA@t zRt9tG@$NGcS#(}BFmP*0ShPDD&}r%GQv+@cZUf~!#r3WGYU1r*2tEXq#>_|Mf=$}| z$>inbGo;+|R*MWO^o-ks=4_hpeJ_#FSD$Fi#Q!>W0kFfNFQH(sh5n0Q)$_{o>zWgg zD{)d-uKuV|9|?*od_bfU@KAYc4TR$1(PR19|EJ&aHyk2dN!IijeIaM&rMDyr8}l{R4~dDuU*H}a%h$fFor0*KCi(aPkSG; zRe^sw)YdkaG(9-tC7?lqkbq1R32hQ29Sw>W-uL{gUIhlI{B?s`jZ1RJQ@iHM`oGkw zLN1b+9#@o91&CkFEL={n|0R zny*Y~Imp@Oq)N-Pq0?U5PSbzlnF2T9-$fc}a;1Q^mIS8c)^>u^YCrxlEbpe(Ok4!b zi+fte$|l0>@!);BBom@-t}r@v5TlGI9~oW#`-Dc;m)~ofQ2z;+c#$G~inrb`3H9xK z{!g>+pH~8){8SK2OH1SBUN4*5F*8##)bIQ#*vI@Q(M`3$iP&PgOxK{!_Qf$BE6#Y( z?+T+nj85d%5as0gPkOf|WY{FLz} zt{FU*DK;REPZ4p@7?32hQif}#_hoX28(Qmh3-(MIy;LVFRycFRbo(#oDvL8k zLv!B`ROy@Gy}te{&{MV?MEL3FkNM%J;d)Lagsbr-7f2BfV`!2Tr=`l>DMH^MG=nrI zL`Fs?IXSsAl-c2RqbuXW@83T|nIs(Fub|ml#zcV&e$@v2C92KzRB_lVjCU9y(#$|y;Ip3&vJc?SvKSz|{gR!L{^5A# zqk#iZ*im9A*vSjCW0W~d#)mho>$Naao@U-sytV{eOZ@{bw(7{pNUYH7AFKr0;w+(4 zN<=e`mxb(p<4OMXD{R%fHBzE?pH0$WC<(V@!f(fB44udA@SYkcch)>mPoDaU*u0?b!@`t zW2S6-516$|mvoo)I+<5Zrfeh)tN-vueWx}QkMo{Wc{2Sa+vWG-?7?RZsZly!w$gJX7yv8UT7d1x&^yG~KW zefs@j&*i({z&Zlw_?X(OHk9mS-^^mQN0eCWz2@_PXs6Iy_;jHJ4EN?_X9v2m?gnMK z{zD_0#LQ|ne_d8)X^If@w{>tBn8EAk&nw`xp5e^S$k4L2vm;80u@|J<57ibBh-*bD z81IC|2R0T2-RUeb5Sj^6bS(H8*$OfBLEa+%7}+-uKqq2~_I!G?Af75wq=MV*k(U;?M;4Y1|XbduNpK zWvgpo`9vuUZQ2F38{V+hlXV>F4gDW7`w)G<@o$ zG@qr_r=q_8?JSudN9jUVA+Uy{;u~Eu&4aKW+rNjVQ5V+LlLwm`WNYNz5vJ_<=pm`< z)*920?d~=AljGZd>2_zyI0JrPXKSo?pK7;oRx05%n?+hxE`em4`xy&f z1d{?xq(EWMV6F7Mu86bdde`Z1AJ@dzz~(+a4SQa+2iPy_!0vnJC4O5l4@zO#rsw{!O>2`(?=oi?S-OhqxOl~yQfpd^>8my0;HvV^?IKwR zW9nN&WA=95^^!99Ex{4T^fNjliD%RUTpez>xlVU5 zCcA%wC4vRxEf$OvW}X~|7lB7ePWqTM{4oaG>xieR;TjlBn$HruI5tNkv0(Lts_

+b4LxUjI$-w|Sh&Vg+blWRfZlf-WFE6Fs&k- z(8B@W$hokHr#1NVqjWdmFOS>!jC{mdh0ms*p1Y?zDGiO{Sfu%^bPU>2+qfEkcUY&I>(ePw1}T zsmU|_&)&bIu~N?WAi|Xff&K~!tp^{zI2kR6K>Bx1cj=gv$95l9H{xzxXga1&ReY54 zAKCI+$-pjN>R#A+TxqBv_GY|ig_pu7J?gC%!9yz1Ss8z!1kB=V@(imNz%<- z6wYp-(D&$%v(14!cK=TJvMCE)uimzVLM*KM{Fr%lorNG0!;+o7zp_edB~x8opio#+ z=gh=AA_#U?6|J;0^SlZV+rfc$)D^=WD4GzIANeCGp zDzan`SKQPQ0t+g>O5D;hq9GULeKGmqx5>btoRP2oei=Wasc+y*O;N^z(e3RDo1Twy z{{DIV*!i^Bs-)6YM6d146A%Z_s_;F@Di_AY883c~_fI@EB~Zav%B$mxGQlc_O^(47 z0oGCzzHTZnMC_R-tqWV64XD%CVU7$%8*f0St>mkt?V*P~sZ(sn_?oQ}i-#$(?5m1N zRhv{tdStHgW$m{=i4AbuM2-VCy8YUT8@*Gg7yhK53-!1G;=}R~15t%TmgPnAv@7>I z8-^Nq?}32~#U(z~N~YfZpPQy#m>zO0R%)JvUvil4L-?3l&py@R*@gmsg?>oN^BE!+ znT!-fhX?MBEZ3{BzlNdl-*6}qjp?Kisi9r|Hkf>t=OPc$!_#9N#Cc;7is2C z6Yo6avI5B4H$!C-3XbCE#WC0hNU>NUSrFy_!4wg#?yO@FKD@fuMd8^$lu+Xp!{FUJ e$bUF<0+pfwxut4E837shL8?zRV3kVd5&s9zUVW(m literal 0 HcmV?d00001 From 133eb9e9d0fef284e80da43ddafdb30c1dddfdfa Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 27 Dec 2012 01:31:32 +1000 Subject: [PATCH 08/66] removed talking crystals, added code to allow all item/weapons talkative Signed-off-by: Cael_Aislinn --- code/modules/mob/living/say.dm | 7 +- .../research/xenoarchaeology/crystal.dm | 213 ------------------ .../research/xenoarchaeology/talking_item.dm | 108 +++++++++ 3 files changed, 112 insertions(+), 216 deletions(-) delete mode 100644 code/modules/research/xenoarchaeology/crystal.dm create mode 100644 code/modules/research/xenoarchaeology/talking_item.dm diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index f56c672da84..09de584c845 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -425,9 +425,10 @@ var/list/department_radio_keys = list( del(B) */ - //talking crystals - for(var/obj/item/weapon/talkingcrystal/O in view(3,src)) - O.catchMessage(message,src) + //talking items + for(var/obj/item/weapon/O in view(3,src)) + if(O.listening_to_players) + O.catchMessage(message, src) log_say("[name]/[key] : [message]") diff --git a/code/modules/research/xenoarchaeology/crystal.dm b/code/modules/research/xenoarchaeology/crystal.dm deleted file mode 100644 index ec2aaff7761..00000000000 --- a/code/modules/research/xenoarchaeology/crystal.dm +++ /dev/null @@ -1,213 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// crystals - -/obj/item/weapon/crystal - name = "Crystal" - icon = 'mining.dmi' - icon_state = "crystal" - -//needs to be solid to have collision, but shouldn't block movement -/*/obj/item/weapon/crystal/bullet_act(var/obj/item/projectile/P) - if(istype(P,/obj/item/projectile/beam/emitter)) - switch(rand(0,3)) - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 1 - A.yo = 20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 2 - A.yo = -20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 4 - A.yo = 0 - A.xo = 20 - if(0) - var/obj/item/projectile/beam/emitter/A = new /obj/item/projectile/beam/emitter( src.loc ) - A.dir = 8 - A.yo = 0 - A.xo = -20 - else - ..()*/ - -/obj/item/weapon/talkingcrystal - name = "Crystal" - icon = 'mining.dmi' - icon_state = "crystal2" - var/list/list/words = list() - var/lastsaid - -/obj/item/weapon/talkingcrystal/New() - spawn(100) - process() - -//needs to be solid to have collision, but shouldn't block movement -/*/obj/item/weapon/talkingcrystal/bullet_act(var/obj/item/projectile/P) - if(istype(P,/obj/item/projectile/beam)) - switch(rand(0,3)) - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = 20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = -20 - A.xo = 0 - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = 0 - A.xo = 20 - if(0) - var/obj/item/projectile/beam/A = new /obj/item/projectile/beam( src.loc ) - A.dir = pick(alldirs) - A.yo = 0 - A.xo = -20 - var/word = pick("pain","hurt","masochism","sadist","rage","repressed","ouch","evil","void","kill","destroy") - SaySomething(word) - else - ..()*/ - -/obj/item/weapon/talkingcrystal/proc/catchMessage(var/msg, var/mob/source) - var/list/seperate = list() - if(findtext(msg,"((")) - return - else if(findtext(msg,"))")) - return - else if(findtext(msg," ")==0) - return - else - /*var/l = lentext(msg) - if(findtext(msg," ",l,l+1)==0) - msg+=" "*/ - seperate = stringsplit(msg, " ") - - var/addressing_crystal = 0 - if("crystal" in seperate || "gem" in seperate) - addressing_crystal = 1 - - for(var/Xa = 1,Xa 20 + rand(10,20)) - words.Remove(words[1]) - if(!words["[lowertext(seperate[Xa])]"]) - words["[lowertext(seperate[Xa])]"] = list() - var/list/w = words["[lowertext(seperate[Xa])]"] - if(w) - w.Add("[lowertext(seperate[next])]") - //world << "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]" - - for(var/mob/O in viewers(src)) - O.show_message("\blue The crystal hums for bit then stops...", 1) - if(!rand(0, 5 - addressing_crystal * 3)) - spawn(2) SaySomething(pick(seperate)) - -/obj/item/weapon/talkingcrystal/proc/debug() - //set src in view() - for(var/v in words) - world << "[uppertext(v)]" - var/list/d = words["[v]"] - for(var/X in d) - world << "[X]" - -/obj/item/weapon/talkingcrystal/proc/SaySomething(var/word = null) - - var/msg - var/limit = rand(max(5,words.len/2))+3 - var/text - if(!word) - text = "[pick(words)]" - else - text = pick(stringsplit(word, " ")) - if(lentext(text)==1) - text=uppertext(text) - else - var/cap = copytext(text,1,2) - cap = uppertext(cap) - cap += copytext(text,2,lentext(text)+1) - text=cap - var/q = 0 - msg+=text - if(msg=="What" | msg == "Who" | msg == "How" | msg == "Why" | msg == "Are") - q=1 - - text=lowertext(text) - for(var/ya,ya <= limit,ya++) - - if(words.Find("[text]")) - var/list/w = words["[text]"] - text=pick(w) - else - text = "[pick(words)]" - msg+=" [text]" - if(q) - msg+="?" - else - if(rand(0,10)) - msg+="." - else - msg+="!" - - var/list/listening = viewers(src) - for(var/mob/M in world) - if (!M.client) - continue //skip monkeys and leavers - if (istype(M, /mob/new_player)) - continue - if(M.stat == 2 && M.client.ghost_ears) - listening|=M - - for(var/mob/M in listening) - M << "The crystal reverberates, \blue\"[msg]\"" - lastsaid = world.timeofday + rand(300,800) - -/obj/item/weapon/talkingcrystal/process() - if(prob(25) && world.timeofday >= lastsaid && words.len >= 1) - SaySomething() - spawn(100) - process() - - - - -//sentient crystals -/mob/sentient_crystal - name = "Crystal" - icon = 'mining.dmi' - icon_state = "crystal2" - var/list/list/words = list() - var/lastsaid - -/mob/sentient_crystal/proc/catchMessage(var/msg, var/mob/source) - var/list/seperate = list() - if(findtext(msg,"((")) - return - else if(findtext(msg,"))")) - return - else - /*var/l = lentext(msg) - if(findtext(msg," ",l,l+1)==0) - msg+=" "*/ - seperate = stringsplit(msg, " ") - - for(var/Xa = 1,Xa 20 + rand(10,20)) - words.Remove(words[1]) - if(!words["[lowertext(seperate[Xa])]"]) - words["[lowertext(seperate[Xa])]"] = list() - var/list/w = words["[lowertext(seperate[Xa])]"] - if(w) - w.Add("[lowertext(seperate[next])]") - //world << "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]" - - for(var/mob/O in viewers(src)) - O.show_message("\blue The crystal hums for bit then stops...", 1) - -/mob/sentient_crystal/Life() \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/talking_item.dm b/code/modules/research/xenoarchaeology/talking_item.dm new file mode 100644 index 00000000000..75532f98c89 --- /dev/null +++ b/code/modules/research/xenoarchaeology/talking_item.dm @@ -0,0 +1,108 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Formerly talking crystals - these procs are now modular so that you can make any /obj/item/weapon 'parrot' player speech back to them +// This could be extended to atoms, but it's bad enough as is +// I genuinely tried to Add and Remove them from var and proc lists, but just couldn't get it working + +/obj/item/weapon + var/list/heard_words = list() + var/lastsaid + var/listening_to_players = 0 + var/speaking_to_players = 0 + +/obj/item/weapon/proc/process_talking(var/word = null) + if(prob(25) && world.timeofday >= lastsaid && heard_words.len >= 1) + SaySomething(word) + spawn(100) + process_talking() + +/obj/item/weapon/proc/catchMessage(var/msg, var/mob/source) + if(speaking_to_players) + var/list/seperate = list() + if(findtext(msg,"((")) + return + else if(findtext(msg,"))")) + return + else if(findtext(msg," ")==0) + return + else + /*var/l = lentext(msg) + if(findtext(msg," ",l,l+1)==0) + msg+=" "*/ + seperate = stringsplit(msg, " ") + + for(var/Xa = 1,Xa 20 + rand(10,20)) + heard_words.Remove(heard_words[1]) + if(!heard_words["[lowertext(seperate[Xa])]"]) + heard_words["[lowertext(seperate[Xa])]"] = list() + var/list/w = heard_words["[lowertext(seperate[Xa])]"] + if(w) + w.Add("[lowertext(seperate[next])]") + //world << "Adding [lowertext(seperate[next])] to [lowertext(seperate[Xa])]" + + if(!rand(0, 5)) + spawn(2) SaySomething(pick(seperate)) + if(prob(30)) + for(var/mob/O in viewers(src)) + O.show_message("\blue [src] hums for bit then stops...", 1) + +/*/obj/item/weapon/talkingcrystal/proc/debug() + //set src in view() + for(var/v in heard_words) + world << "[uppertext(v)]" + var/list/d = heard_words["[v]"] + for(var/X in d) + world << "[X]"*/ + +/obj/item/weapon/proc/SaySomething(var/word = null) + + var/msg + var/limit = rand(max(5,heard_words.len/2))+3 + var/text + if(!word) + text = "[pick(heard_words)]" + else + text = pick(stringsplit(word, " ")) + if(lentext(text)==1) + text=uppertext(text) + else + var/cap = copytext(text,1,2) + cap = uppertext(cap) + cap += copytext(text,2,lentext(text)+1) + text=cap + var/q = 0 + msg+=text + if(msg=="What" | msg == "Who" | msg == "How" | msg == "Why" | msg == "Are") + q=1 + + text=lowertext(text) + for(var/ya,ya <= limit,ya++) + + if(heard_words.Find("[text]")) + var/list/w = heard_words["[text]"] + text=pick(w) + else + text = "[pick(heard_words)]" + msg+=" [text]" + if(q) + msg+="?" + else + if(rand(0,10)) + msg+="." + else + msg+="!" + + var/list/listening = viewers(src) + for(var/mob/M in world) + if (!M.client) + continue //skip monkeys and leavers + if (istype(M, /mob/new_player)) + continue + if(M.stat == 2 && M.client.ghost_ears) + listening|=M + + for(var/mob/M in listening) + M << "[src] reverberates, \blue\"[msg]\"" + lastsaid = world.timeofday + rand(300,800) From 282c07cc2a4909435b01709df52464f4573b4bda Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 27 Dec 2012 01:34:38 +1000 Subject: [PATCH 09/66] xenoarch chemistry, tweaks to mine turfs and fossils Signed-off-by: Cael_Aislinn --- code/modules/mining/mine_turfs.dm | 5 +- .../research/xenoarchaeology/chemistry.dm | 123 ++++++++++++++++++ .../research/xenoarchaeology/fossils.dm | 4 +- 3 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 code/modules/research/xenoarchaeology/chemistry.dm diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index a3d832dcc9a..52382341831 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -277,11 +277,12 @@ O = new /obj/item/weapon/ore/diamond(src) if (src.mineralName == "Archaeo") //spawn strange rocks here + new /obj/item/weapon/archaeological_find(src) //if(prob(10) || delicate) - if(prob(50)) //Don't have delicate tools (hand pick/excavation tool) yet, temporarily change to 50% instead of 10% -Mij + /*if(prob(50)) //Don't have delicate tools (hand pick/excavation tool) yet, temporarily change to 50% instead of 10% -Mij O = new /obj/item/weapon/ore/strangerock(src) else - destroyed = 1 + destroyed = 1*/ if (src.mineralName == "Clown") O = new /obj/item/weapon/ore/clown(src) if(O) diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm new file mode 100644 index 00000000000..b8387470c34 --- /dev/null +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -0,0 +1,123 @@ + +//chemistry stuff here so that it can be easily viewed/modified +datum + reagent + tungsten //purely used to make lith-sodi-tungs + name = "Tungsten" + id = "tungsten" + description = "A chemical element, and a strong oxidising agent." + reagent_state = SOLID + color = "#808080" // rgb: 128, 128, 128 + //todo: make this silvery grey + + neon //purely used as a carrier + name = "Neon" + id = "neon" + description = "A chemical element, commonly used in lighting." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128, + //todo: make this fluro/bright purple + + beryllium //purely used as a carrier + name = "Beryllium" + id = "beryllium" + description = "A chemical element, prized for it's rigidity, thermal stability and low density when used in alloys." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128, + //todo: make this dark grey + + calcium //purely used as a carrier + name = "Calcium" + id = "calcium" + description = "An extremely common chemical element found throughout living organisms." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128, + //todo: make this bone-white colour + + lithiumsodiumtungstate + name = "Lithium Sodium Tungstate" + id = "lithiumsodiumtungstate" + description = "A reducing agent for geological compounds." + reagent_state = LIQUID + color = "#808080" // rgb: 128, 128, 128 + //todo: make this silvery grey + + ground_rock + name = "Ground Rock" + id = "ground_rock" + description = "A fine dust made of ground up rock." + reagent_state = SOLID + color = "#C81040" //rgb: 200, 16, 64 + //todo: make this brown + + density_separated_sample + name = "Analysis liquid" + id = "density_separated_sample" + description = "A watery paste used in chemical analysis." + reagent_state = LIQUID + color = "#C81040" //rgb: 200, 16, 64 + //todo: make this browny-white + + analysis_sample + name = "Analysis liquid" + id = "analysis_sample" + description = "A watery paste used in chemical analysis." + reagent_state = LIQUID + color = "#C81040" //rgb: 200, 16, 64 + //todo: make this white + + chemical_waste + name = "Chemical Waste" + id = "chemical_waste" + description = "A viscous, toxic liquid left over from many chemical processes." + reagent_state = LIQUID + color = "#C81040" //rgb: 200, 16, 64 + //todo: make this fluoro/bright green + +datum + chemical_reaction + lithiumsodiumtungstate //LiNa2WO4, not the easiest chem to mix + name = "Lithium Sodium Tungstate" + id = "lithiumsodiumtungstate" + result = "lithiumsodiumtungstate" + required_reagents = list("lithium" = 1, "sodium" = 2, "tungsten" = 1, "oxygen" = 4) + result_amount = 8 + + density_separated_liquid + name = "Density separated sample" + id = "density_separated_sample" + result = "density_separated_sample" + secondary_results = list("chemical_waste" = 1) + required_reagents = list("ground_rock" = 1, "lithiumsodiumtungstate" = 2) + result_amount = 2 + + analysis_liquid + name = "Analysis sample" + id = "analysis_sample" + result = "analysis_sample" + secondary_results = list("chemical_waste" = 1) + required_reagents = list("density_separated_sample" = 5) + result_amount = 4 + requires_heating = 1 + +/obj/item/weapon/reagent_containers/glass/solution_tray + name = "solution tray" + desc = "A small, open-topped glass container for delicate research samples. It sports a re-useable strip for labelling with a pen." + icon = 'icons/obj/device.dmi' + icon_state = "solution_tray" + m_amt = 0 + g_amt = 5 + w_class = 1.0 + amount_per_transfer_from_this = 1 + possible_transfer_amounts = list(1, 2) + volume = 2 + flags = FPRINT | OPENCONTAINER + +obj/item/weapon/reagent_containers/glass/solution_tray/attackby(obj/item/weapon/W as obj, mob/living/user as mob) + if(istype(W, /obj/item/weapon/pen)) + var/new_label = input("What should the new label be?","Label solution tray") + if(new_label) + name = "solution tray ([new_label])" + user << "\blue You write on the label of the solution tray." + else + ..(W, user) diff --git a/code/modules/research/xenoarchaeology/fossils.dm b/code/modules/research/xenoarchaeology/fossils.dm index cb8f88b6661..746a0beba3e 100644 --- a/code/modules/research/xenoarchaeology/fossils.dm +++ b/code/modules/research/xenoarchaeology/fossils.dm @@ -4,7 +4,7 @@ /obj/item/weapon/fossil name = "Fossil" - icon = 'fossil.dmi' + icon = 'xenoarchaeology.dmi' icon_state = "bone" desc = "It's a fossil." @@ -47,7 +47,7 @@ /obj/skeleton name = "Incomplete skeleton" - icon = 'fossil.dmi' + icon = 'xenoarchaeology.dmi' icon_state = "uskel" desc = "Incomplete skeleton." var/bnum = 1 From f4c1cb325abf76307a8935df2a5b796564277bc2 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 27 Dec 2012 01:35:13 +1000 Subject: [PATCH 10/66] some tweaks to artifacts, new xenoarch analysis machines, made empulse give a cool whoosh to everyone in range Signed-off-by: Cael_Aislinn --- code/game/objects/empulse.dm | 3 + .../xenoarchaeology/analysis_hyperspectral.dm | 11 +- .../xenoarchaeology/analysis_isotope_ratio.dm | 51 ++++++++ .../research/xenoarchaeology/artifact.dm | 122 ++++++++---------- .../xenoarchaeology/artifact_effect.dm | 114 ++++++++++++---- .../xenoarchaeology/artifact_synthetic.dm | 4 +- 6 files changed, 209 insertions(+), 96 deletions(-) create mode 100644 code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm diff --git a/code/game/objects/empulse.dm b/code/game/objects/empulse.dm index 4c02dd38fff..68cb8f2df3a 100644 --- a/code/game/objects/empulse.dm +++ b/code/game/objects/empulse.dm @@ -20,6 +20,9 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0) if(heavy_range > light_range) light_range = heavy_range + for(var/mob/M in range(heavy_range, epicenter)) + M << 'sound/effects/EMPulse.ogg' + for(var/atom/T in range(light_range, epicenter)) var/distance = get_dist(epicenter, T) if(distance < 0) diff --git a/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm b/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm index d6bc7c74041..0b745ce0993 100644 --- a/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm +++ b/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm @@ -23,8 +23,15 @@ obj/machinery/anomaly/hyperspectral/ScanResults() if(num_reagents == 2 && scanned_sample && carrier) //all necessary components are present var/specifity = GetResultSpecifity(scanned_sample, carrier) - results = "Spectral signature over carrier ([carrier], [specifity]):
" - results += "
" + results = "Spectral signature over carrier ([carrier]):
" + if(specifity <= 0.25) + results += "
" + else if(specifity <= 0.5) + results += "
" + else if(specifity <= 0.75) + results += "
" + else + results += "
" if(scanned_sample.artifact_id && prob(specifity * 100)) results += "Anomalous exotic energy signature detected: [scanned_sample.artifact_id]." diff --git a/code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm b/code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm new file mode 100644 index 00000000000..717339a4a79 --- /dev/null +++ b/code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm @@ -0,0 +1,51 @@ + +obj/machinery/anomaly/isotope_ratio + name = "Isotope ratio spectrometer" + desc = "A specialised, complex analysis machine." + icon = 'virology.dmi' + icon_state = "analyser" + +obj/machinery/anomaly/isotope_ratio/ScanResults() + var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." + + var/datum/geosample/scanned_sample + var/carrier + var/num_reagents = 0 + + for(var/datum/reagent/A in held_container.reagents.reagent_list) + var/datum/reagent/R = A + if(istype(R, /datum/reagent/analysis_sample)) + scanned_sample = R.data + else + carrier = R.id + num_reagents++ + + if(num_reagents == 2 && scanned_sample && carrier) + var/specifity = GetResultSpecifity(scanned_sample, carrier) + var/accuracy = 0 + if(specifity) + accuracy = (specifity / (specifity + 0.2)) + else + accuracy = rand(0.01, 0.75) + results = "Isotope decay analysis in carrier ([carrier]) indicates age ([100 * accuracy]% accuracy):

" + + if(scanned_sample.age_billion) + //scramble the results + var/displayed_age_thousands = rand(0, 999) + var/displayed_age_millions = rand(0, 999) + results += "[displayed_age_millions + displayed_age_thousands / 1000] million years.
" + else if(scanned_sample.age_million) + var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age_thousand * ((1 - accuracy) * (2 * rand() - 1)), 0) + var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (4 * rand() - 2)), 0) + results += "[displayed_age_millions + displayed_age_thousands / 1000] million years.
" + else if(scanned_sample.age_thousand) + var/displayed_age = scanned_sample.age + scanned_sample.age * ((1 - accuracy) * (2 * rand() - 1)) + var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age_thousand * ((1 - accuracy) * (2 * rand() - 1)), 0) + results += "[displayed_age_thousands + displayed_age / 1000] thousand years.
" + else + var/displayed_age = scanned_sample.age + max(scanned_sample.age * ((1 - accuracy) * (2 * rand() - 1)), 0) + results += "[displayed_age] years.
" + + results += "
Warning, results only valid up to ages of one billion years." + + return results diff --git a/code/modules/research/xenoarchaeology/artifact.dm b/code/modules/research/xenoarchaeology/artifact.dm index 53edfb54a07..96107f8ebdc 100644 --- a/code/modules/research/xenoarchaeology/artifact.dm +++ b/code/modules/research/xenoarchaeology/artifact.dm @@ -1,10 +1,18 @@ //Part of ISaidNo's public release around July 2011(ish), multiple changes //many thanks +#define PLASMA_SPAWN 1 +#define N2_SPAWN 2 +#define CO2_SPAWN 3 +#define RADIATE 4 +#define VIRUS 5 +#define HEAT 6 +#define COLD 7 + /obj/machinery/artifact name = "alien artifact" desc = "A large alien device." - icon = 'anomaly.dmi' + icon = 'xenoarchaeology.dmi' icon_state = "ano00" var/icon_num = 0 anchored = 0 @@ -21,55 +29,51 @@ /obj/machinery/artifact/New() ..() // Origin and appearance randomisation - // cael - need some more icons my_effect = new() - src.origin = pick("ancient","martian","wizard","eldritch","precursor") - switch(src.origin) - if("ancient") icon_num = pick(2)//src.icon_state = pick("ano2") - if("martian") icon_num = pick(4)//src.icon_state = pick("ano4") - if("wizard") icon_num = pick(0,1)//src.icon_state = pick("ano0","ano1") - if("eldritch") icon_num = pick(3)//src.icon_state = pick("ano3") - if("precursor") icon_num = pick(5)//src.icon_state = pick("ano5") + + icon_num = rand(0,5) icon_state = "ano[icon_num]0" - // Low-ish random chance to not look like it's origin - if(prob(20)) src.icon_state = pick("ano00","ano10","ano20","ano30","ano40","ano50") - // Power randomisation - my_effect.trigger = pick("force","energy","chemical","heat","touch") - if (my_effect.trigger == "chemical") my_effect.triggerX = pick("hydrogen","corrosive","volatile","toxic") + my_effect.trigger = pick("force","energy","chemical","heat","touch","presence") + if (my_effect.trigger == "chemical") + my_effect.triggerX = pick("hydrogen","corrosive","volatile","toxic") - // Ancient Artifacts focus on robotic/technological effects - // Martian Artifacts focus on biological effects - // Wizard Artifacts focus on weird shit - // Eldritch Artifacts are 100% bad news - // Precursor Artifacts do everything - switch(src.origin) - if("ancient") my_effect.effecttype = pick("roboheal","robohurt","cellcharge","celldrain") - if("martian") my_effect.effecttype = pick("healing","injure"/*,"stun"*/,"planthelper") - if("wizard") my_effect.effecttype = pick(/*"stun",*/"forcefield","teleport") - if("eldritch") my_effect.effecttype = pick("injure",/*"stun",*/"robohurt","celldrain") - if("precursor") my_effect.effecttype = pick("healing","injure",/*"stun",*/"roboheal","robohurt","cellcharge","celldrain","planthelper","forcefield","teleport") + my_effect.effecttype = pick("healing","injure","stun","roboheal","robohurt","cellcharge","celldrain","planthelper","forcefield","teleport","dnaswitch","emp","sleepy") // Select range based on the power var/canworldpulse = 1 switch(my_effect.effecttype) - if("healing") my_effect.effectmode = pick("aura","pulse","contact") - if("injure") my_effect.effectmode = pick("aura","pulse","contact") - // if("stun") my_effect.effectmode = pick("aura","pulse","contact") - if("roboheal") my_effect.effectmode = pick("aura","pulse","contact") - if("robohurt") my_effect.effectmode = pick("aura","pulse","contact") - if("cellcharge") my_effect.effectmode = pick("aura","pulse") - if("celldrain") my_effect.effectmode = pick("aura","pulse") + if("healing") + my_effect.effectmode = pick("aura","pulse","contact") + if("injure") + my_effect.effectmode = pick("aura","pulse","contact") + if("stun") + my_effect.effectmode = pick("aura","pulse","contact") + if("roboheal") + my_effect.effectmode = pick("aura","pulse","contact") + if("robohurt") + my_effect.effectmode = pick("aura","pulse","contact") + if("sleepy") + my_effect.effectmode = pick("aura","pulse","contact") + if("cellcharge") + my_effect.effectmode = pick("aura","pulse") + if("celldrain") + my_effect.effectmode = pick("aura","pulse") if("planthelper") my_effect.effectmode = pick("aura","pulse") canworldpulse = 0 if("forcefield") my_effect.effectmode = "contact" canworldpulse = 0 - if("teleport") my_effect.effectmode = pick("pulse","contact") + if("teleport") + my_effect.effectmode = pick("pulse","contact") + if("genderswitch") + my_effect.effectmode = pick("pulse","contact") + if("emp") + my_effect.effectmode = pick("pulse","contact") // Recharge timer & range setup if (my_effect.effectmode == "aura") @@ -191,26 +195,28 @@ src.activated = !src.activated var/display_msg = "" if(activated) - switch(rand(4)) - if(0) - display_msg = "momentarily glows brightly!" - if(1) - display_msg = "distorts slightly for a moment!" - if(2) - display_msg = "makes a slightly clicking noise!" - if(3) - display_msg = "flickers slightly!" - if(4) - display_msg = "vibrates!" + if(prob(30)) + switch(rand(4)) + if(0) + display_msg = "momentarily glows brightly!" + if(1) + display_msg = "distorts slightly for a moment!" + if(2) + display_msg = "makes a slightly clicking noise!" + if(3) + display_msg = "flickers slightly!" + if(4) + display_msg = "vibrates!" else my_effect.HaltEffect() - switch(rand(2)) - if(0) - display_msg = "grows dull!" - if(1) - display_msg = "fades in intensity!" - if(2) - display_msg = "suddenly becomes very quiet!" + if(prob(30)) + switch(rand(2)) + if(0) + display_msg = "grows dull!" + if(1) + display_msg = "fades in intensity!" + if(2) + display_msg = "suddenly becomes very quiet!" icon_state = "ano[icon_num][activated]" for(var/mob/O in viewers(src, null)) @@ -232,17 +238,3 @@ /obj/machinery/artifact/Move() ..() my_effect.update_move(src, src.loc) - - -/proc/artifact_checkgood(var/datum/artifact_effect/A) - switch(A.effecttype) - if("healing") return 1 - if("injure") return 0 - // if("stun") return 0 - if("roboheal") return 1 - if("robohurt") return 0 - if("cellcharge") return 1 - if("celldrain") return 1 - if("planthelper") return 1 - if("forcefield") return 1 - if("teleport") return 0 \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/artifact_effect.dm b/code/modules/research/xenoarchaeology/artifact_effect.dm index 9bee8176db3..d3e5480294e 100644 --- a/code/modules/research/xenoarchaeology/artifact_effect.dm +++ b/code/modules/research/xenoarchaeology/artifact_effect.dm @@ -93,38 +93,38 @@ if("injure") if (istype(user, /mob/living/carbon/)) user << "\red A painful discharge of energy strikes you!" - user.adjustOxyLoss(25) - user.adjustToxLoss(25) - user.adjustBruteLoss(25) - user.adjustFireLoss(25) - user.adjustBrainLoss(25) + user.adjustOxyLoss(rand(5,25)) + user.adjustToxLoss(rand(5,25)) + user.adjustBruteLoss(rand(5,25)) + user.adjustFireLoss(rand(5,25)) + user.adjustBrainLoss(rand(5,25)) user.radiation += 25 user.nutrition -= min(50, user.nutrition) - user.stunned += 6 + user.make_dizzy(6) user.weakened += 6 return 1 else user << "Nothing happens." if("stun") if (istype(user, /mob/living/carbon/)) user << "\red A powerful force overwhelms your consciousness." - user.paralysis += 30 - user.stunned += 45 user.weakened += 45 user.stuttering += 45 + if(prob(50)) + user.stunned += rand(1,10) return 1 else user << "Nothing happens." if("roboheal") if (istype(user, /mob/living/silicon/robot)) user << "\blue Your systems report damaged components mending by themselves!" - user.adjustBruteLoss(-30) - user.adjustFireLoss(-30) + user.adjustBruteLoss(rand(-10,-30)) + user.adjustFireLoss(rand(-10,-30)) return 1 else user << "Nothing happens." if("robohurt") if (istype(user, /mob/living/silicon/robot)) user << "\red Your systems report severe damage has been inflicted!" - user.adjustBruteLoss(40) - user.adjustFireLoss(40) + user.adjustBruteLoss(rand(10,50)) + user.adjustFireLoss(rand(10,50)) return 1 else user << "Nothing happens." if("forcefield") @@ -133,6 +133,7 @@ created_field.Add(E) E.strength = 1 E.density = 1 + E.anchored = 1 E.invisibility = 0 return 1 if("teleport") @@ -150,6 +151,11 @@ sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is sparks.start() return 1 + if("sleepy") + user << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + user.drowsyness = min(user.drowsyness + rand(5,25), 50) + user.eye_blurry = min(user.eye_blurry + rand(1,3), 50) + return 1 else if (src.effectmode == "aura") switch(src.effecttype) //caeltodo @@ -237,6 +243,13 @@ H.weedlevel -= 1 H.lastcycle += 5 return 1 + if("sleepy") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(prob(10)) + M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + M.drowsyness = min(M.drowsyness + 1, 25) + M.eye_blurry = min(M.eye_blurry + 1, 25) + return 1 else if (src.effectmode == "pulse") for(var/mob/O in viewers(originator, null)) O.show_message(text("[] emits a pulse of energy!", originator), 1) @@ -264,7 +277,7 @@ M.adjustToxLoss(5) M.adjustOxyLoss(5) M.adjustBrainLoss(5) - M.stunned += 3 + M.make_dizzy(6) M.weakened += 3 M.updatehealth() return 1 @@ -274,7 +287,6 @@ continue M << "\red A wave of energy overwhelms your senses!" M.paralysis += 3 - M.stunned += 4 M.weakened += 4 M.stuttering += 4 return 1 @@ -309,7 +321,7 @@ for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge -= 400 for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) for (var/obj/item/weapon/cell/D in M.contents) - D.charge -= 500 + D.charge -= min(D.charge, 500) M << "\red SYSTEM ALERT: Severe energy drain detected!" return 1 if("planthelper") @@ -343,13 +355,40 @@ sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is sparks.start() return 1 + if("dnaswitch") + for(var/mob/living/H in range(src.aurarange,originator)) + if(ishuman(H) && istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + + if(prob(30)) + H << pick("\green You feel a little different.","\green You feel strange.","\green You feel different.") + //todo + if (H.gender == FEMALE) + H.gender = MALE + else + H.gender = FEMALE + /*H.dna.ready_dna(H) + H.update_body() + H.update_face()*/ + return 1 + if("emp") + empulse(get_turf(originator), aurarange/2, aurarange) + return 1 + if("sleepy") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(prob(30)) + M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + if(prob(50)) + M.drowsyness = min(M.drowsyness + rand(1,5), 25) + if(prob(50)) + M.eye_blurry = min(M.eye_blurry + rand(1,5), 25) + return 1 else if (src.effectmode == "worldpulse") for(var/mob/O in viewers(originator, null)) O.show_message(text("[] emits a powerful burst of energy!", originator), 1) switch(src.effecttype) - //caeltodo if("healing") - for (var/mob/living/carbon/M in world) + for (var/mob/living/carbon/M in range(200, originator)) if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) continue M << "\blue Waves of soothing energy wash over you." @@ -361,7 +400,7 @@ M.updatehealth() return 1 if("injure") - for (var/mob/living/carbon/human/M in world) + for (var/mob/living/carbon/human/M in range(200, originator)) M << "\red A wave of painful energy strikes you!" M.adjustBruteLoss(3) M.adjustFireLoss(3) @@ -371,31 +410,30 @@ M.updatehealth() return 1 if("stun") - for (var/mob/living/carbon/M in world) + for (var/mob/living/carbon/M in range(200, originator)) if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) continue M << "\red A powerful force causes you to black out momentarily." M.paralysis += 5 - M.stunned += 8 M.weakened += 8 M.stuttering += 8 return 1 if("roboheal") - for (var/mob/living/silicon/robot/M in world) + for (var/mob/living/silicon/robot/M in range(200, originator)) M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!" M.adjustBruteLoss(-5) M.adjustFireLoss(-5) M.updatehealth() return 1 if("robohurt") - for (var/mob/living/silicon/robot/M in world) + for (var/mob/living/silicon/robot/M in range(200, originator)) M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!" M.adjustBruteLoss(5) M.adjustFireLoss(5) M.updatehealth() return 1 if("cellcharge") - for (var/obj/machinery/power/apc/C in world) + for (var/obj/machinery/power/apc/C in range(200, originator)) for (var/obj/item/weapon/cell/B in C.contents) B.charge += 100 for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge += 250 @@ -405,17 +443,17 @@ M << "\blue SYSTEM ALERT: Energy boost detected!" return 1 if("celldrain") - for (var/obj/machinery/power/apc/C in world) + for (var/obj/machinery/power/apc/C in range(200, originator)) for (var/obj/item/weapon/cell/B in C.contents) - B.charge -= 250 + B.charge -= min(B.charge,250) for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge -= 250 for (var/mob/living/silicon/robot/M in world) for (var/obj/item/weapon/cell/D in M.contents) - D.charge -= 250 + D.charge -= min(D.charge,250) M << "\red SYSTEM ALERT: Energy drain detected!" return 1 if("teleport") - for (var/mob/living/M in world) + for (var/mob/living/M in range(200, originator)) if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) continue var/list/randomturfs = new/list() @@ -432,6 +470,27 @@ sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is sparks.start() return 1 + if("dnaswitch") + for(var/mob/living/H in range(200, originator)) + if(ishuman(H) && istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + + if(prob(30)) + H << pick("\green You feel a little different.","\green You feel strange.","\green You feel different.") + //todo + if (H.gender == FEMALE) + H.gender = MALE + else + H.gender = FEMALE + /*H.dna.ready_dna(H) + H.update_body() + H.update_face()*/ + return 1 + if("sleepy") + for(var/mob/living/H in range(200, originator)) + H.drowsyness = min(H.drowsyness + rand(5,15), 50) + H.eye_blurry = min(H.eye_blurry + rand(5,15), 50) + return 1 //initially for the force field artifact /datum/artifact_effect/proc/update_move(var/atom/originator) @@ -443,6 +502,7 @@ created_field.Add(E) E.strength = 1 E.density = 1 + E.anchored = 1 E.invisibility = 0 var/obj/effect/energy_field/E = created_field[1] diff --git a/code/modules/research/xenoarchaeology/artifact_synthetic.dm b/code/modules/research/xenoarchaeology/artifact_synthetic.dm index fc6743e5762..75d2bf8a49a 100644 --- a/code/modules/research/xenoarchaeology/artifact_synthetic.dm +++ b/code/modules/research/xenoarchaeology/artifact_synthetic.dm @@ -1,7 +1,7 @@ /obj/item/weapon/anobattery name = "Anomaly power battery" - icon = 'anomaly.dmi' + icon = 'xenoarchaeology.dmi' icon_state = "anobattery0" var/datum/artifact_effect/battery_effect var/capacity = 200 @@ -16,7 +16,7 @@ /obj/item/weapon/anodevice name = "Anomaly power utilizer" - icon = 'anomaly.dmi' + icon = 'xenoarchaeology.dmi' icon_state = "anodev" var/cooldown = 0 var/activated = 0 From ae109b459130e5fbc579a72b3b688b8088c07429 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 27 Dec 2012 01:35:54 +1000 Subject: [PATCH 11/66] xenoarch finds, updated dme Signed-off-by: Cael_Aislinn --- baystation12.dme | 2 +- .../modules/research/xenoarchaeology/finds.dm | 335 ++++++++++++++++++ 2 files changed, 336 insertions(+), 1 deletion(-) diff --git a/baystation12.dme b/baystation12.dme index 38201fe54ba..a0326d8c6e2 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1092,11 +1092,11 @@ #include "code\modules\research\xenoarchaeology\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\chemistry.dm" #include "code\modules\research\xenoarchaeology\core_sampler.dm" -#include "code\modules\research\xenoarchaeology\crystal.dm" #include "code\modules\research\xenoarchaeology\finds.dm" #include "code\modules\research\xenoarchaeology\fossils.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" #include "code\modules\research\xenoarchaeology\readme.dm" +#include "code\modules\research\xenoarchaeology\talking_item.dm" #include "code\modules\research\xenoarchaeology\tools.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\IDE.dm" diff --git a/code/modules/research/xenoarchaeology/finds.dm b/code/modules/research/xenoarchaeology/finds.dm index 2521f8bcf4f..4298057d10a 100644 --- a/code/modules/research/xenoarchaeology/finds.dm +++ b/code/modules/research/xenoarchaeology/finds.dm @@ -83,3 +83,338 @@ M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1) return 1 */ + +/obj/item/weapon/archaeological_find + name = "object" + icon = 'xenoarchaeology.dmi' + icon_state = "ano01" + var/find_type = 0 + +/obj/item/weapon/archaeological_find/New() + if(find_type < 1 || find_type > 25) + find_type = 0 + if(!find_type) + find_type = rand(1, 25) + + var/item_type = "object" + icon_state = "unknown[rand(1,4)]" + var/additional_desc = "" + var/obj/item/weapon/new_item + var/source_material = "" + var/apply_material_decorations = 1 + var/apply_image_decorations = 0 + var/material_descriptor = "" + if(prob(40)) + material_descriptor = pick("rusted ","dusty ","archaic ","fragile ") + source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") + + var/talkative = 0 + if(prob(5)) + talkative = 1 + + //for all items here: + //icon_state + //item_state + if(prob(90)) + switch(find_type) + if(1) + item_type = "bowl" + new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) + new_item.icon = 'xenoarchaeology.dmi' + new_item.icon_state = "bowl" + apply_image_decorations = 1 + if(prob(20)) + additional_desc = "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains inside." + if(2) + item_type = "urn" + new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) + new_item.icon = 'xenoarchaeology.dmi' + new_item.icon_state = "urn" + apply_image_decorations = 1 + if(prob(20)) + additional_desc = "It [pick("whispers faintly","makes a quiet roaring sound","whistles softly","thrums quietly"<"throbs")] if you put it to your ear." + if(3) + item_type = "[pick("fork","spoon","knife")]" + if(prob(25)) + new_item = new /obj/item/weapon/kitchen/utensil/fork(src.loc) + else if(prob(50)) + new_item = new /obj/item/weapon/kitchen/utensil/knife(src.loc) + else + new_item = new /obj/item/weapon/kitchen/utensil/spoon(src.loc) + additional_desc = "[pick("It's like no [item_type] you've ever seen before",\ + "It's a mystery how anyone is supposed to eat with this",\ + "You wonder what the creator's mouth was shaped like")]." + if(4) + item_type = "statuette" + icon_state = "statuette" + additional_desc = "It depicts a [pick("small","ferocious","wild","pleasing","hulking")] \ + [pick("alien humanoid figure","rodent-like creature","reptilian alien","primate","unidentifiable object")] \ + [pick("performing unspeakable acts","posing heroically","in a feotal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]." + if(5) + item_type = "instrument" + icon_state = "instrument" + additional_desc = "[pick("You're not sure how anyone could have played this",\ + "You wonder how many mouths the creator had",\ + "You wonder what it sounds like",\ + "You wonder what kind of music was made with it")]." + if(prob(30)) + apply_image_decorations = 1 + if(6) + item_type = "[pick("bladed knife","serrated blade","sharp cutting implement")]" + new_item = new /obj/item/weapon/kitchenknife(src.loc) + additional_desc = "[pick("It doesn't look safe.",\ + "It looks wickedly jagged",\ + "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges")]." + if(7) + //assuming there are 10 types of coins + var/chance = 10 + for(var/type in typesof(/obj/item/weapon/coin)) + if(prob(chance)) + new_item = new type(src.loc) + break + chance += 10 + + item_type = new_item.name + apply_material_decorations = 0 + apply_image_decorations = 1 + if(8) + item_type = "chained loops" + new_item = new /obj/item/weapon/handcuffs(src.loc) + additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]." + if(9) + item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]" + new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc) + additional_desc = "[pick("It looks like it could take a limb off",\ + "Could be some kind of animal trap",\ + "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]." + if(10) + item_type = "small [pick("cylinder","tank","chamber")]" + new_item = new /obj/item/weapon/lighter(src.loc) + additional_desc = "There is a tiny device attached." + if(prob(30)) + apply_image_decorations = 1 + if(11) + item_type = "box" + new_item = new /obj/item/weapon/storage/box(src.loc) + new_item.icon = 'xenoarchaeology.dmi' + new_item.icon_state = "box" + if(prob(30)) + apply_image_decorations = 1 + if(12) + item_type = "[pick("cylinder","tank","chamber")]" + if(prob(25)) + new_item = new /obj/item/weapon/tank/air(src.loc) + else if(prob(50)) + new_item = new /obj/item/weapon/tank/anesthetic(src.loc) + else + new_item = new /obj/item/weapon/tank/plasma(src.loc) + icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic") + additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it." + if(13) + item_type = "strange tool" + if(prob(25)) + new_item = new /obj/item/weapon/wrench(src.loc) + else if(prob(25)) + new_item = new /obj/item/weapon/crowbar(src.loc) + else + new_item = new /obj/item/weapon/screwdriver(src.loc) + additional_desc = "[pick("It doesn't look safe.",\ + "You wonder what it was used for",\ + "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]." + if(14) + apply_material_decorations = 0 + var/list/possible_spawns = list() + possible_spawns += /obj/item/stack/sheet/metal + possible_spawns += /obj/item/stack/sheet/plasma + possible_spawns += /obj/item/stack/sheet/plasteel + possible_spawns += /obj/item/stack/sheet/mythril + possible_spawns += /obj/item/stack/sheet/gold + possible_spawns += /obj/item/stack/sheet/silver + possible_spawns += /obj/item/stack/sheet/glass + possible_spawns += /obj/item/stack/sheet/rglass + possible_spawns += /obj/item/stack/sheet/enruranium + possible_spawns += /obj/item/stack/sheet/sandstone + possible_spawns += /obj/item/stack/sheet/silver + + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + new_item:amount = rand(5,45) + del(src) + return //nothing fancy here + if(15) + if(prob(75)) + new_item = new /obj/item/weapon/pen(src.loc) + else + new_item = new /obj/item/weapon/pen/sleepypen(src.loc) + if(prob(30)) + apply_image_decorations = 1 + if(16) + item_type = "smooth green crystal" + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") + icon_state = "Green lump" + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + if(17) + item_type = "irregular purple crystal" + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") + icon_state = "Phazon" + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + if(18) + new_item = new /obj/item/device/radio/beacon(src.loc) + talkative = 0 + new_item.icon_state = "unknown[rand(1,4)]" + new_item.icon = 'xenoarchaeology.dmi' + new_item.desc = "" + if(19) + new_item = new /obj/item/weapon/claymore(src.loc) + name = new_item.name + desc = new_item.desc + apply_material_decorations = 0 + if(20) + //arcane clothing + var/list/possible_spawns = list(/obj/item/clothing/head/culthood, + /obj/item/clothing/head/magus, + /obj/item/clothing/head/culthood/alt, + /obj/item/clothing/head/helmet/space/cult) + + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + del(src) + return + if(21) + //the dangerous stuff: low chance of turning up + var/list/possible_spawns = list(/obj/item/weapon/veilrender, + /obj/item/device/soulstone, + /obj/item/weapon/melee/cultblade) + + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + del(src) + return + if(22) + new_item = new /obj/item/weapon/shard(src.loc) + del(src) + return + if(23) + new_item = new /obj/item/stack/rods(src.loc) + del(src) + return + if(24) + var/list/possible_spawns = list() + possible_spawns += typesof(/obj/item/weapon/stock_parts) + possible_spawns -= /obj/item/weapon/stock_parts + possible_spawns -= /obj/item/weapon/stock_parts/subspace + + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + del(src) + return + if(25) + new_item = new /obj/item/weapon/katana(src.loc) + name = new_item.name + desc = new_item.desc + apply_material_decorations = 0 + + else if(prob(40)) + apply_image_decorations = 1 + + var/decorations = "" + source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") + if(apply_material_decorations) + desc = "A [material_descriptor ? "[material_descriptor] " : ""][item_type] made of [source_material], all craftsmanship is of [pick("the lowest","low","average","high","the highest")] quality." + + var/list/descriptors = list() + if(prob(30)) + descriptors.Add("is encrusted with [pick("","synthetic ","multi-faceted ","uncut ","sparkling ") + pick("rubies","emeralds","diamonds","crystals","lapiz lazuli")]") + if(prob(30)) + descriptors.Add("is studded with [pick("gold","silver","aluminium","titanium")]") + if(prob(30)) + descriptors.Add("is encircled with bands of [pick("quadrinium","cordite","ferritic-alloy","plasteel","duranium")]") + if(prob(30)) + descriptors.Add("menaces with spikes of [pick("solid plasma","uranium","white pearl","black steel")]") + if(descriptors.len > 0) + decorations = "It " + for(var/index=1, index <= descriptors.len, index++) + if(index > 1) + if(index == descriptors.len) + decorations += " and " + else + decorations += ", " + decorations += descriptors[index] + decorations += "." + if(decorations) + desc += " " + decorations + + var/engravings = "" + if(apply_image_decorations) + engravings = "[pick("Engraved","Carved","Etched")] on the item is [pick("an image of","a frieze of","a depiction of")] \ + [pick("an alien humanoid","an amorphic blob","a short, hairy being","a rodent-like creature","a robot","a primate","a reptilian alien","an unidentifiable object","a statue","a starship","unusual devices","a structure")] \ + [pick("surrounded by","being held aloft by","being struck by","being examined by","communicating with")] \ + [pick("alien humanoids","amorphic blobs","short, hairy beings","rodent-like creatures","robots","primates","reptilian aliens")]" + if(prob(50)) + engravings += ", [pick("they seem to be enjoying themselves","they seem extremely angry","they look pensive","they are making gestures of supplication","the scene is one of subtle horror","the scene conveys a sense of desperation","the scene is completely bizarre")]" + engravings += "." + + if(desc) + desc += " " + desc += engravings + + name = "[item_type]" + if(desc) + desc += " " + desc += additional_desc + if(!desc) + desc = "This item is completely [pick("alien","bizarre")]." + + //icon and icon_state should have already been set + if(new_item) + new_item.name = src.name + new_item.desc = src.desc + + if(talkative) + new_item.listening_to_players = 1 + if(prob(25)) + new_item.speaking_to_players = 1 + spawn(100) + new_item.process_talking() + del(src) + + else if(talkative) + listening_to_players = 1 + if(prob(25)) + speaking_to_players = 1 + spawn(100) + process_talking() + +//legacy crystal +/obj/item/weapon/crystal + name = "Crystal" + icon = 'mining.dmi' + icon_state = "crystal" + +//large finds + /* + /obj/item/clothing/suit/cultrobes + /obj/item/clothing/suit/cultrobes/alt + /obj/item/clothing/suit/magusred + /obj/item/clothing/suit/space/cult + /obj/machinery/syndicate_beacon + /obj/machinery/wish_granter + if(18) + item_type = "jagged green crystal" + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") + icon_state = "crystal" + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + if(19) + item_type = "jagged pink crystal" + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") + icon_state = "crystal2" + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + */ \ No newline at end of file From 0efb0311e33f4d51eefd0ab2b5aa35d5891b7604 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Mon, 4 Feb 2013 23:37:50 +1000 Subject: [PATCH 12/66] removed misc file, added some extra sprites, added/tweaked list helpers Signed-off-by: Cael_Aislinn --- baystation12.dme | 1 - code/__HELPERS/lists.dm | 36 +++++++++++++++--- .../modules/research/xenoarchaeology/tools.dm | 36 ------------------ icons/obj/mining.dmi | Bin 43840 -> 50436 bytes icons/obj/xenoarchaeology.dmi | Bin 24472 -> 32769 bytes icons/turf/walls.dmi | Bin 140392 -> 141275 bytes 6 files changed, 30 insertions(+), 43 deletions(-) delete mode 100644 code/modules/research/xenoarchaeology/tools.dm diff --git a/baystation12.dme b/baystation12.dme index e0489fa5008..e9266408f8a 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1143,7 +1143,6 @@ #include "code\modules\research\xenoarchaeology\geosample.dm" #include "code\modules\research\xenoarchaeology\readme.dm" #include "code\modules\research\xenoarchaeology\talking_item.dm" -#include "code\modules\research\xenoarchaeology\tools.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\IDE.dm" #include "code\modules\scripting\Options.dm" diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 7076565f541..690025ab735 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -146,11 +146,11 @@ proc/listclearnulls(list/list) * Sorting */ -//Reverses the order of items in the list (Turning a stack into a queue) -/proc/reverselist(var/list/input) - var/list/output = new/list() - for(var/A in input) - output += A +//Reverses the order of items in the list +/proc/reverselist(list/L) + var/list/output = list() + for(var/i = L.len; i >= 1; i--) + output += L[i] return output //Randomize: Return the list in a random order @@ -320,4 +320,28 @@ proc/listclearnulls(list/list) for(var/T in L) if(istype(T, type)) i++ - return i \ No newline at end of file + return i + +//Don't use this on lists larger than half a dozen or so +/proc/insertion_sort_numeric_list_ascending(var/list/L) + //world.log << "ascending len input: [L.len]" + var/list/out = list(pop(L)) + for(var/entry in L) + if(isnum(entry)) + var/success = 0 + for(var/i=1, i<=out.len, i++) + if(entry <= out[i]) + success = 1 + out.Insert(i, entry) + break + if(!success) + out.Add(entry) + + //world.log << " output: [out.len]" + return out + +/proc/insertion_sort_numeric_list_descending(var/list/L) + //world.log << "descending len input: [L.len]" + var/list/out = insertion_sort_numeric_list_ascending(L) + //world.log << " output: [out.len]" + return reverselist(out) diff --git a/code/modules/research/xenoarchaeology/tools.dm b/code/modules/research/xenoarchaeology/tools.dm deleted file mode 100644 index 9dd475dc9fa..00000000000 --- a/code/modules/research/xenoarchaeology/tools.dm +++ /dev/null @@ -1,36 +0,0 @@ -/obj/item/device/depth_scanner - name = "depth analysis scanner" - desc = "Used to check mass spatial depth and density." - icon = 'pda.dmi' - icon_state = "crap" - item_state = "analyzer" - w_class = 1.0 - flags = FPRINT | TABLEPASS - //slot_flags = SLOT_BELT - -/obj/item/weapon/pickaxe/hand_pick - name = "hand pick" - icon_state = "excavation" - item_state = "minipick" - digspeed = 50 - desc = "A smaller, more precise version of the pickaxe." - flags = FPRINT | TABLEPASS - w_class = 2.0 - -/obj/item/weapon/pickaxe/mini_pick - name = "mini pick" - icon_state = "excavation" - item_state = "minipick" - digspeed = 60 - desc = "A miniature excavation tool for precise digging around delicate finds." - flags = FPRINT | TABLEPASS - w_class = 1.0 - -//todo: this -/obj/item/device/beacon_locator - name = "locater device" - desc = "Used to triangulate position signal emitters." - icon = 'device.dmi' - icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull - item_state = "electronic" - w_class = 1.0 diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index c6293f649269ac776fe41cd8f30078ac8847a30d..0bcfd99256222dbd131b9256000a36a27d7ab83a 100644 GIT binary patch literal 50436 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

a0c)&d$S#qJw)q>Dp)ZFN*`HzCAsv%#VBX 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 MqNYNPoMpuS0fUht%K!iX diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index 32282287f1ad1fac106b982d6a88c17b1dac2cc4..16914dbff2b6283c2ec89a589757d1de1e687915 100644 GIT binary patch literal 32769 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 MlaLp$6g3F^Uu!OXX#fBK literal 24472 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

+b4LxUjI$-w|Sh&Vg+blWRfZlf-WFE6Fs&k- z(8B@W$hokHr#1NVqjWdmFOS>!jC{mdh0ms*p1Y?zDGiO{Sfu%^bPU>2+qfEkcUY&I>(ePw1}T zsmU|_&)&bIu~N?WAi|Xff&K~!tp^{zI2kR6K>Bx1cj=gv$95l9H{xzxXga1&ReY54 zAKCI+$-pjN>R#A+TxqBv_GY|ig_pu7J?gC%!9yz1Ss8z!1kB=V@(imNz%<- z6wYp-(D&$%v(14!cK=TJvMCE)uimzVLM*KM{Fr%lorNG0!;+o7zp_edB~x8opio#+ z=gh=AA_#U?6|J;0^SlZV+rfc$)D^=WD4GzIANeCGp zDzan`SKQPQ0t+g>O5D;hq9GULeKGmqx5>btoRP2oei=Wasc+y*O;N^z(e3RDo1Twy z{{DIV*!i^Bs-)6YM6d146A%Z_s_;F@Di_AY883c~_fI@EB~Zav%B$mxGQlc_O^(47 z0oGCzzHTZnMC_R-tqWV64XD%CVU7$%8*f0St>mkt?V*P~sZ(sn_?oQ}i-#$(?5m1N zRhv{tdStHgW$m{=i4AbuM2-VCy8YUT8@*Gg7yhK53-!1G;=}R~15t%TmgPnAv@7>I z8-^Nq?}32~#U(z~N~YfZpPQy#m>zO0R%)JvUvil4L-?3l&py@R*@gmsg?>oN^BE!+ znT!-fhX?MBEZ3{BzlNdl-*6}qjp?Kisi9r|Hkf>t=OPc$!_#9N#Cc;7is2C z6Yo6avI5B4H$!C-3XbCE#WC0hNU>NUSrFy_!4wg#?yO@FKD@fuMd8^$lu+Xp!{FUJ e$bUF<0+pfwxut4E837shL8?zRV3kVd5&s9zUVW(m diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index aa4e63ee8b29c4df739aa27acb3b1d683252005d..10032cd8cab09e7947cb0b5a399698fbd71bfa52 100644 GIT binary patch delta 6297 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 F{SST#^O67n delta 5407 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 From 651fa7a9f0260352d8e67d748ecf2a8e6b035618 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Mon, 4 Feb 2013 23:40:53 +1000 Subject: [PATCH 13/66] restructured tools, restructured/added archaeo finds, restructured how finds spawn in the asteroid, tweaked some mining stuff Signed-off-by: Cael_Aislinn --- code/modules/mining/mine_items.dm | 4 + code/modules/mining/mine_turfs.dm | 246 ++++-- code/modules/mining/ores_coins.dm | 12 +- .../research/xenoarchaeology/archaeo_tools.dm | 84 ++- .../research/xenoarchaeology/artifact_misc.dm | 2 +- .../modules/research/xenoarchaeology/finds.dm | 711 +++++++++++------- .../research/xenoarchaeology/fossils.dm | 46 +- .../research/xenoarchaeology/talking_item.dm | 11 +- 8 files changed, 734 insertions(+), 382 deletions(-) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 6c5bb01e5c1..f2b92c08368 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -193,6 +193,10 @@ proc/move_mining_shuttle() var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO origin_tech = "materials=1;engineering=1" attack_verb = list("hit", "pierced", "sliced", "attacked") + var/drill_sound = 'sound/weapons/Genhit.ogg' + var/drill_verb = "picking" + + var/excavation_amount = 100 hammer name = "sledgehammer" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 163b1cc343d..cca0035846d 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -1,5 +1,8 @@ /**********************Mineral deposits**************************/ +#define XENOARCH_SPAWN_CHANCE 0.5 +#define XENOARCH_SPREAD_CHANCE 15 + /turf/simulated/mineral //wall piece name = "Rock" icon = 'icons/turf/walls.dmi' @@ -16,7 +19,16 @@ var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles var/artifactChance = 0.3 //percent chance to spawn a xenoarchaelogical artifact var/last_act = 0 + var/datum/geosample/geological_data + var/excavation_level = 0 + var/list/finds = list() + var/list/excavation_minerals = list() + var/list/excavation_minerals_ascending = list() + var/list/exca_first = list("A","B","C","D","E") + var/list/exca_second = list() + var/next_rock = 0 + var/overlay_num = 0 /turf/simulated/mineral/Del() return @@ -56,27 +68,82 @@ T.overlays += image('icons/turf/walls.dmi', "rock_side_e", layer=6) if (mineralName && mineralAmt && spread && spreadChance) - if(prob(spreadChance)) - if(istype(get_step(src, SOUTH), /turf/simulated/mineral/random)) - new src.type(get_step(src, SOUTH)) - if(prob(spreadChance)) - if(istype(get_step(src, NORTH), /turf/simulated/mineral/random)) - new src.type(get_step(src, NORTH)) - if(prob(spreadChance)) - if(istype(get_step(src, WEST), /turf/simulated/mineral/random)) - new src.type(get_step(src, WEST)) - if(prob(spreadChance)) - if(istype(get_step(src, EAST), /turf/simulated/mineral/random)) - new src.type(get_step(src, EAST)) + for(var/trydir in list(1,2,4,8)) + if(prob(spreadChance)) + if(istype(get_step(src, trydir), /turf/simulated/mineral/random)) + var/turf/simulated/mineral/T = get_step(src, trydir) + var/turf/simulated/mineral/M = new src.type(T) + //keep any digsite data as constant as possible + if(T.finds.len && !M.finds.len) + M.finds = T.finds + M.overlays += "overlay_archaeo1" - src.geological_data = new /datum/geosample(src) + //---- Xenoarchaeology BEGIN + + if(mineralAmt > 0 && !excavation_minerals.len) + for(var/i=0, i 0) + if(excavation_level < 25) + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv1_[rand(1,3)]") + else if(excavation_level < 50) + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv2_[rand(1,3)]") + else if(excavation_level < 75) + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv3_[rand(1,3)]") + else + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv4_[rand(1,3)]") + desc = "It appears to be partially excavated."*/ return /turf/simulated/mineral/random name = "Mineral deposit" - var/mineralAmtList = list("Uranium" = 5, "Iron" = 5, "Diamond" = 5, "Gold" = 5, "Silver" = 5, "Plasma" = 5, "Archaeo" = 3/*, "Adamantine" = 5*/) - var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25, "Archaeo" = 5/*, "Adamantine" =5*/)//Currently, Adamantine won't spawn as it has no uses. -Durandan + var/mineralAmtList = list("Uranium" = 5, "Iron" = 5, "Diamond" = 5, "Gold" = 5, "Silver" = 5, "Plasma" = 5/*, "Adamantine" = 5*/) + var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25/*, "Adamantine" =5*/)//Currently, Adamantine won't spawn as it has no uses. -Durandan var/mineralChance = 10 //means 10% chance of this plot changing to a mineral deposit /turf/simulated/mineral/random/New() @@ -99,19 +166,14 @@ M = new/turf/simulated/mineral/silver(src) if("Plasma") M = new/turf/simulated/mineral/plasma(src) - if("Archaeo") - M = new/turf/simulated/mineral/archaeo(src) /*if("Adamantine") M = new/turf/simulated/mineral/adamantine(src)*/ if(M) src = M M.levelupdate() - if(!geological_data) - src.geological_data = new /datum/geosample - src.geological_data.UpdateTurf(src) - else if (prob(artifactChance)) - //spawn a rare, xeno-arch artifact here - new/obj/machinery/artifact(src) + + /*else if (prob(artifactChance)) + new/obj/machinery/artifact(src)*/ return /turf/simulated/mineral/random/high_chance @@ -176,15 +238,6 @@ spread = 1 -/turf/simulated/mineral/archaeo - name = "Strange rock formation" - icon_state = "rock_Archaeo" - mineralName = "Archaeo" - mineralAmt = 3 - spreadChance = 25 - spread = 1 - - /turf/simulated/mineral/clown name = "Bananium deposit" icon_state = "rock_Clown" @@ -245,61 +298,105 @@ commented out in r5061, I left it because of the shroom thingies return */ //Watch your tabbing, microwave. --NEO - if(last_act+W:digspeed > world.time)//prevents message spam + + var/obj/item/weapon/pickaxe/P = W + if(last_act+P.digspeed > world.time)//prevents message spam return last_act = world.time - user << "\red You start picking." - playsound(user, 'sound/weapons/Genhit.ogg', 20, 1) - if(do_after(user,W:digspeed)) - user << "\blue You finish cutting into the rock." - gets_drilled() + playsound(user, P.drill_sound, 20, 1) + + //Chance to destroy any archaeological finds if we carelessly pick away at the rock + var/fail_message = "" + if(src.finds.len) + var/datum/find/F = src.finds[1] + if(src.excavation_level + P.excavation_amount >= F.excavation_required + F.destruct_range) + fail_message = ", [pick("there is a crunching noise","[W] hits something","part of the rock face crumbles away","something breaks under [W]")]" + if(prob(50)) + src.finds.Remove(F) + user << "\red You start [P.drill_verb][fail_message]." + + if(do_after(user,P.digspeed)) + user << "\blue You finish [P.drill_verb] the rock." + if(src.excavation_level + P.excavation_amount >= 100) + gets_drilled() + else + src.excavation_level += P.excavation_amount + + //handle any archaeological finds we might uncover + + //extract pesky minerals while we're excavating + while(excavation_minerals.len && src.excavation_level > excavation_minerals[excavation_minerals.len]) + drop_mineral() + //have a 50% chance to extract bonus minerals this way + //if(prob(50)) + pop(excavation_minerals) + mineralAmt-- + + //drop some rocks + next_rock += P.excavation_amount * 10 + while(next_rock > 100) + next_rock -= 100 + var/obj/item/weapon/ore/O = new(src) + O.geological_data = src.geological_data else return attack_hand(user) return -/turf/simulated/mineral/proc/gets_drilled() - var/destroyed = 0 //used for breaking strange rocks - if ((src.mineralName != "") && (src.mineralAmt > 0) && (src.mineralAmt < 11)) - var/i - for (i=0;i 0) && (src.mineralAmt < 11)) + + //if the turf has already been excavated, some of it's ore has been removed + for (var/i=0;i 3)) - if(!src.method) //0 = fire, 1+ = acid + if(w.isOn()) + if(w.get_fuel() >= 4 && !src.method) if(inside) - var/obj/A = new src.inside(get_turf(src)) + inside.loc = src.loc for(var/mob/M in viewers(world.view, user)) - M.show_message("\blue The rock burns away revealing a [A.name].",1) + M.show_message("[src] burns away revealing [inside].",1) else for(var/mob/M in viewers(world.view, user)) - M.show_message("\blue The rock burns away into nothing.",1) - del src + M.show_message("[src] burns away into nothing.",1) + del(src) + w.remove_fuel(4) else for(var/mob/M in viewers(world.view, user)) - M.show_message("\blue A few sparks fly off the rock, but otherwise nothing else happens.",1) - w.remove_fuel(4) + M.show_message("A few sparks fly off [src], but nothing else happens.",1) + w.remove_fuel(1) + return else if(istype(W,/obj/item/device/core_sampler/)) var/obj/item/device/core_sampler/S = W S.sample_item(src, user) + return -/*Code does not work, likely due to removal/change of acid_act proc -//Strange rocks currently melt to gooey grey w/ acid application (see reactions) -//will fix when I get a chance to fiddle with it -Mij -/obj/item/weapon/ore/strangerock/acid_act(var/datum/reagent/R) - if(src.method) - if(inside) - var/obj/A = new src.inside(get_turf(src)) - for(var/mob/M in viewers(world.view, get_turf(src))) - M.show_message("\blue The rock fizzes away revealing a [A.name].",1) - else - for(var/mob/M in viewers(world.view, get_turf(src))) - M.show_message("\blue The rock fizzes away into nothing.",1) - del src - else - for(var/mob/M in viewers(world.view, get_turf(src))) - M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1) - return 1 -*/ + ..() + if(prob(33)) + src.visible_message("[src] crumbles away, leaving some dust and gravel behind.") + del(src) /obj/item/weapon/archaeological_find name = "object" @@ -90,11 +224,12 @@ icon_state = "ano01" var/find_type = 0 -/obj/item/weapon/archaeological_find/New() - if(find_type < 1 || find_type > 25) - find_type = 0 - if(!find_type) - find_type = rand(1, 25) +/obj/item/weapon/archaeological_find/New(var/new_item_type) + + if(new_item_type) + find_type = new_item_type + else + find_type = get_random_find_type(0) var/item_type = "object" icon_state = "unknown[rand(1,4)]" @@ -115,220 +250,291 @@ //for all items here: //icon_state //item_state - if(prob(90)) - switch(find_type) - if(1) - item_type = "bowl" - new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) - new_item.icon = 'xenoarchaeology.dmi' - new_item.icon_state = "bowl" + switch(find_type) + if(1) + item_type = "bowl" + new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) + new_item.icon = 'xenoarchaeology.dmi' + new_item.icon_state = "bowl" + apply_image_decorations = 1 + if(prob(20)) + additional_desc = "There appear to be [pick("dark","faintly glowing","pungent")] [pick("red","purple","green","blue")] stains inside." + if(2) + item_type = "urn" + new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) + new_item.icon = 'xenoarchaeology.dmi' + new_item.icon_state = "urn" + apply_image_decorations = 1 + if(prob(20)) + additional_desc = "It [pick("whispers faintly","makes a quiet roaring sound","whistles softly","thrums quietly","throbs")] if you put it to your ear." + if(3) + item_type = "[pick("fork","spoon","knife")]" + if(prob(25)) + new_item = new /obj/item/weapon/kitchen/utensil/fork(src.loc) + else if(prob(50)) + new_item = new /obj/item/weapon/kitchen/utensil/knife(src.loc) + else + new_item = new /obj/item/weapon/kitchen/utensil/spoon(src.loc) + additional_desc = "[pick("It's like no [item_type] you've ever seen before",\ + "It's a mystery how anyone is supposed to eat with this",\ + "You wonder what the creator's mouth was shaped like")]." + if(4) + item_type = "statuette" + icon_state = "statuette" + additional_desc = "It depicts a [pick("small","ferocious","wild","pleasing","hulking")] \ + [pick("alien figure","rodent-like creature","reptilian alien","primate","unidentifiable object")] \ + [pick("performing unspeakable acts","posing heroically","in a feotal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]." + if(5) + item_type = "instrument" + icon_state = "instrument" + if(prob(30)) apply_image_decorations = 1 - if(prob(20)) - additional_desc = "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains inside." - if(2) - item_type = "urn" - new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) - new_item.icon = 'xenoarchaeology.dmi' - new_item.icon_state = "urn" - apply_image_decorations = 1 - if(prob(20)) - additional_desc = "It [pick("whispers faintly","makes a quiet roaring sound","whistles softly","thrums quietly"<"throbs")] if you put it to your ear." - if(3) - item_type = "[pick("fork","spoon","knife")]" - if(prob(25)) - new_item = new /obj/item/weapon/kitchen/utensil/fork(src.loc) - else if(prob(50)) - new_item = new /obj/item/weapon/kitchen/utensil/knife(src.loc) - else - new_item = new /obj/item/weapon/kitchen/utensil/spoon(src.loc) - additional_desc = "[pick("It's like no [item_type] you've ever seen before",\ - "It's a mystery how anyone is supposed to eat with this",\ - "You wonder what the creator's mouth was shaped like")]." - if(4) - item_type = "statuette" - icon_state = "statuette" - additional_desc = "It depicts a [pick("small","ferocious","wild","pleasing","hulking")] \ - [pick("alien humanoid figure","rodent-like creature","reptilian alien","primate","unidentifiable object")] \ - [pick("performing unspeakable acts","posing heroically","in a feotal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]." - if(5) - item_type = "instrument" - icon_state = "instrument" additional_desc = "[pick("You're not sure how anyone could have played this",\ "You wonder how many mouths the creator had",\ "You wonder what it sounds like",\ "You wonder what kind of music was made with it")]." - if(prob(30)) - apply_image_decorations = 1 - if(6) - item_type = "[pick("bladed knife","serrated blade","sharp cutting implement")]" - new_item = new /obj/item/weapon/kitchenknife(src.loc) - additional_desc = "[pick("It doesn't look safe.",\ - "It looks wickedly jagged",\ - "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges")]." - if(7) - //assuming there are 10 types of coins - var/chance = 10 - for(var/type in typesof(/obj/item/weapon/coin)) - if(prob(chance)) - new_item = new type(src.loc) - break - chance += 10 + if(6) + item_type = "[pick("bladed knife","serrated blade","sharp cutting implement")]" + new_item = new /obj/item/weapon/kitchenknife(src.loc) + additional_desc = "[pick("It doesn't look safe.",\ + "It looks wickedly jagged",\ + "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges")]." + if(7) + //assuming there are 10 types of coins + var/chance = 10 + for(var/type in typesof(/obj/item/weapon/coin)) + if(prob(chance)) + new_item = new type(src.loc) + break + chance += 10 - item_type = new_item.name - apply_material_decorations = 0 + item_type = new_item.name + apply_material_decorations = 0 + apply_image_decorations = 1 + if(8) + item_type = "chained loops" + new_item = new /obj/item/weapon/handcuffs(src.loc) + additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]." + if(9) + item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]" + new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc) + additional_desc = "[pick("It looks like it could take a limb off",\ + "Could be some kind of animal trap",\ + "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]." + if(10) + item_type = "small [pick("cylinder","tank","chamber")]" + new_item = new /obj/item/weapon/lighter(src.loc) + additional_desc = "There is a tiny device attached." + if(prob(30)) apply_image_decorations = 1 - if(8) - item_type = "chained loops" - new_item = new /obj/item/weapon/handcuffs(src.loc) - additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]." - if(9) - item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]" - new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc) - additional_desc = "[pick("It looks like it could take a limb off",\ - "Could be some kind of animal trap",\ - "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]." - if(10) - item_type = "small [pick("cylinder","tank","chamber")]" - new_item = new /obj/item/weapon/lighter(src.loc) - additional_desc = "There is a tiny device attached." - if(prob(30)) - apply_image_decorations = 1 - if(11) - item_type = "box" - new_item = new /obj/item/weapon/storage/box(src.loc) - new_item.icon = 'xenoarchaeology.dmi' - new_item.icon_state = "box" - if(prob(30)) - apply_image_decorations = 1 - if(12) - item_type = "[pick("cylinder","tank","chamber")]" - if(prob(25)) - new_item = new /obj/item/weapon/tank/air(src.loc) - else if(prob(50)) - new_item = new /obj/item/weapon/tank/anesthetic(src.loc) - else - new_item = new /obj/item/weapon/tank/plasma(src.loc) - icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic") - additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it." - if(13) - item_type = "strange tool" - if(prob(25)) - new_item = new /obj/item/weapon/wrench(src.loc) - else if(prob(25)) - new_item = new /obj/item/weapon/crowbar(src.loc) - else - new_item = new /obj/item/weapon/screwdriver(src.loc) - additional_desc = "[pick("It doesn't look safe.",\ - "You wonder what it was used for",\ - "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]." - if(14) - apply_material_decorations = 0 - var/list/possible_spawns = list() - possible_spawns += /obj/item/stack/sheet/metal - possible_spawns += /obj/item/stack/sheet/plasteel - possible_spawns += /obj/item/stack/sheet/glass - possible_spawns += /obj/item/stack/sheet/rglass - possible_spawns += /obj/item/stack/sheet/mineral/plasma - possible_spawns += /obj/item/stack/sheet/mineral/mythril - possible_spawns += /obj/item/stack/sheet/mineral/gold - possible_spawns += /obj/item/stack/sheet/mineral/silver - possible_spawns += /obj/item/stack/sheet/mineral/enruranium - possible_spawns += /obj/item/stack/sheet/mineral/sandstone - possible_spawns += /obj/item/stack/sheet/mineral/silver + if(11) + item_type = "box" + new_item = new /obj/item/weapon/storage/box(src.loc) + new_item.icon = 'xenoarchaeology.dmi' + new_item.icon_state = "box" + if(prob(30)) + apply_image_decorations = 1 + if(12) + item_type = "[pick("cylinder","tank","chamber")]" + if(prob(25)) + new_item = new /obj/item/weapon/tank/air(src.loc) + else if(prob(50)) + new_item = new /obj/item/weapon/tank/anesthetic(src.loc) + else + new_item = new /obj/item/weapon/tank/plasma(src.loc) + icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic") + additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it." + if(13) + item_type = "strange tool" + if(prob(25)) + new_item = new /obj/item/weapon/wrench(src.loc) + else if(prob(25)) + new_item = new /obj/item/weapon/crowbar(src.loc) + else + new_item = new /obj/item/weapon/screwdriver(src.loc) + additional_desc = "[pick("It doesn't look safe.",\ + "You wonder what it was used for",\ + "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]." + if(14) + apply_material_decorations = 0 + var/list/possible_spawns = list() + possible_spawns += /obj/item/stack/sheet/metal + possible_spawns += /obj/item/stack/sheet/plasteel + possible_spawns += /obj/item/stack/sheet/glass + possible_spawns += /obj/item/stack/sheet/rglass + possible_spawns += /obj/item/stack/sheet/mineral/plasma + possible_spawns += /obj/item/stack/sheet/mineral/mythril + possible_spawns += /obj/item/stack/sheet/mineral/gold + possible_spawns += /obj/item/stack/sheet/mineral/silver + possible_spawns += /obj/item/stack/sheet/mineral/enruranium + possible_spawns += /obj/item/stack/sheet/mineral/sandstone + possible_spawns += /obj/item/stack/sheet/mineral/silver - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - new_item:amount = rand(5,45) - del(src) - return //nothing fancy here - if(15) - if(prob(75)) - new_item = new /obj/item/weapon/pen(src.loc) - else - new_item = new /obj/item/weapon/pen/sleepypen(src.loc) - if(prob(30)) - apply_image_decorations = 1 - if(16) + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + new_item:amount = rand(5,45) + del(src) + return //nothing fancy here + if(15) + if(prob(75)) + new_item = new /obj/item/weapon/pen(src.loc) + else + new_item = new /obj/item/weapon/pen/sleepypen(src.loc) + if(prob(30)) + apply_image_decorations = 1 + if(16) + if(prob(50)) item_type = "smooth green crystal" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") icon_state = "Green lump" - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - if(17) + else item_type = "irregular purple crystal" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") icon_state = "Phazon" - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - if(18) - new_item = new /obj/item/device/radio/beacon(src.loc) - talkative = 0 - new_item.icon_state = "unknown[rand(1,4)]" - new_item.icon = 'xenoarchaeology.dmi' - new_item.desc = "" - if(19) - new_item = new /obj/item/weapon/claymore(src.loc) - name = new_item.name - desc = new_item.desc - apply_material_decorations = 0 - if(20) - //arcane clothing - var/list/possible_spawns = list(/obj/item/clothing/head/culthood, - /obj/item/clothing/head/magus, - /obj/item/clothing/head/culthood/alt, - /obj/item/clothing/head/helmet/space/cult) + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - del(src) - return - if(21) - //the dangerous stuff: low chance of turning up - var/list/possible_spawns = list(/obj/item/weapon/veilrender, - /obj/item/device/soulstone, - /obj/item/weapon/melee/cultblade) + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + if(17) + //cultblade + new /obj/item/weapon/melee/cultblade(src.loc) + del(src) + return + if(18) + new_item = new /obj/item/device/radio/beacon(src.loc) + talkative = 0 + new_item.icon_state = "unknown[rand(1,4)]" + new_item.icon = 'xenoarchaeology.dmi' + new_item.desc = "" + if(19) + new_item = new /obj/item/weapon/claymore(src.loc) + name = new_item.name + desc = new_item.desc + apply_material_decorations = 0 + if(20) + //arcane clothing + var/list/possible_spawns = list(/obj/item/clothing/head/culthood, + /obj/item/clothing/head/magus, + /obj/item/clothing/head/culthood/alt, + /obj/item/clothing/head/helmet/space/cult) - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - del(src) - return - if(22) - new_item = new /obj/item/weapon/shard(src.loc) - del(src) - return - if(23) - new_item = new /obj/item/stack/rods(src.loc) - del(src) - return - if(24) - var/list/possible_spawns = list() - possible_spawns += typesof(/obj/item/weapon/stock_parts) - possible_spawns -= /obj/item/weapon/stock_parts - possible_spawns -= /obj/item/weapon/stock_parts/subspace + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + del(src) + return + if(21) + //soulstone + new_item = new /obj/item/device/soulstone(src.loc) + del(src) + return + if(22) + new_item = new /obj/item/weapon/shard(src.loc) + del(src) + return + if(23) + new_item = new /obj/item/stack/rods(src.loc) + del(src) + return + if(24) + var/list/possible_spawns = typesof(/obj/item/weapon/stock_parts) + possible_spawns -= /obj/item/weapon/stock_parts + possible_spawns -= /obj/item/weapon/stock_parts/subspace - var/new_type = pick(possible_spawns) - new_item = new new_type(src.loc) - del(src) - return - if(25) - new_item = new /obj/item/weapon/katana(src.loc) - name = new_item.name - desc = new_item.desc - apply_material_decorations = 0 + var/new_type = pick(possible_spawns) + new_item = new new_type(src.loc) + del(src) + return + if(25) + new_item = new /obj/item/weapon/katana(src.loc) + name = new_item.name + desc = new_item.desc + apply_material_decorations = 0 + if(26) + //energy gun + var/spawn_type = pick(\ + /obj/item/weapon/gun/energy/laser/practice;100,\ + /obj/item/weapon/gun/energy/laser;75,\ + /obj/item/weapon/gun/energy/xray;50,\ + /obj/item/weapon/gun/energy/laser/captain;25,\ + ) + var/obj/item/weapon/gun/energy/new_gun = new spawn_type(src.loc) + new_item = new_gun + new_item.icon_state = "egun[rand(1,6)]" - else if(prob(40)) - apply_image_decorations = 1 + //5% chance to explode when first fired + //10% chance to have an unchargeable cell + //15% chance to gain a random amount of starting energy, otherwise start with an empty cell + if(prob(5)) + new_gun.power_supply.rigged = 1 + if(prob(10)) + new_gun.power_supply.maxcharge = 0 + if(prob(15)) + new_gun.power_supply.charge = rand(0, new_gun.power_supply.maxcharge) + else + new_gun.power_supply.charge = 0 + + name = new_item.name + desc = new_item.desc + if(27) + //revolver + var/obj/item/weapon/gun/projectile/new_gun = new (src.loc) + new_item = new_gun + new_item.icon_state = "gun[rand(1,4)]" + + //33% chance to be able to reload the gun with human ammunition + if(prob(66)) + new_gun.caliber = "999" + + //33% chance to fill it with a random amount of bullets + new_gun.max_shells = rand(1,12) + if(prob(33)) + var/num_bullets = rand(1,new_gun.max_shells) + if(num_bullets < new_gun.loaded.len) + for(var/i = num_bullets, i <= new_gun.loaded.len, i++) + new_gun.loaded += new new_gun.ammo_type(src) + else + for(var/obj/item/I in new_gun) + if(new_gun.loaded.len > num_bullets) + if(I in new_gun.loaded) + new_gun.loaded.Remove(I) + I.loc = null + else + break + else + for(var/obj/item/I in new_gun) + if(I in new_gun.loaded) + new_gun.loaded.Remove(I) + I.loc = null + + name = new_item.name + desc = new_item.desc + if(28) + //completely unknown alien device + if(prob(40)) + apply_image_decorations = 0 + if(29) + //fossil bone/skull + new/obj/item/weapon/fossil/base(src.loc) + del(src) + return + if(30) + //fossil shell + new/obj/item/weapon/fossil/base(src.loc) + del(src) + return + if(30) + //fossil plant + new/obj/item/weapon/fossil/base(src.loc) + del(src) + return var/decorations = "" - source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") if(apply_material_decorations) + source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") desc = "A [material_descriptor ? "[material_descriptor] " : ""][item_type] made of [source_material], all craftsmanship is of [pick("the lowest","low","average","high","the highest")] quality." var/list/descriptors = list() if(prob(30)) - descriptors.Add("is encrusted with [pick("","synthetic ","multi-faceted ","uncut ","sparkling ") + pick("rubies","emeralds","diamonds","crystals","lapiz lazuli")]") + descriptors.Add("is encrusted with [pick("","synthetic ","multi-faceted ","uncut ","sparkling ") + pick("rubies","emeralds","diamonds","opals","lapiz lazuli")]") if(prob(30)) descriptors.Add("is studded with [pick("gold","silver","aluminium","titanium")]") if(prob(30)) @@ -378,16 +584,14 @@ new_item.listening_to_players = 1 if(prob(25)) new_item.speaking_to_players = 1 - spawn(100) - new_item.process_talking() + processing_objects.Add(src) del(src) else if(talkative) listening_to_players = 1 if(prob(25)) speaking_to_players = 1 - spawn(100) - process_talking() + processing_objects.Add(src) //legacy crystal /obj/item/weapon/crystal @@ -397,10 +601,6 @@ //large finds /* - /obj/item/clothing/suit/cultrobes - /obj/item/clothing/suit/cultrobes/alt - /obj/item/clothing/suit/magusred - /obj/item/clothing/suit/space/cult /obj/machinery/syndicate_beacon /obj/machinery/wish_granter if(18) @@ -417,4 +617,5 @@ apply_material_decorations = 0 if(prob(10)) apply_image_decorations = 1 - */ \ No newline at end of file + */ + //machinery type artifacts? \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/fossils.dm b/code/modules/research/xenoarchaeology/fossils.dm index 746a0beba3e..9ee9ecba8b4 100644 --- a/code/modules/research/xenoarchaeology/fossils.dm +++ b/code/modules/research/xenoarchaeology/fossils.dm @@ -10,8 +10,8 @@ /obj/item/weapon/fossil/base/New() spawn(0) - var/list/l = list("/obj/item/weapon/fossil/bone"=8,"/obj/item/weapon/fossil/skull"=2, - "/obj/item/weapon/fossil/skull/horned"=2,"/obj/item/weapon/fossil/shell"=1) + var/list/l = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3, + "/obj/item/weapon/fossil/skull/horned"=2) var/t = pickweight(l) new t(src.loc) del src @@ -21,20 +21,15 @@ icon_state = "bone" desc = "It's a fossilised bone." -/obj/item/weapon/fossil/shell - name = "Fossilised shell" - icon_state = "shell" - desc = "It's a fossilised shell." - -/obj/item/weapon/fossil/skull/horned - icon_state = "hskull" - desc = "It's a fossilised, horned skull." - /obj/item/weapon/fossil/skull name = "Fossilised skull" icon_state = "skull" desc = "It's a fossilised skull." +/obj/item/weapon/fossil/skull/horned + icon_state = "hskull" + desc = "It's a fossilised, horned skull." + /obj/item/weapon/fossil/skull/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/fossil/bone)) var/obj/o = new /obj/skeleton(get_turf(src)) @@ -53,6 +48,7 @@ var/bnum = 1 var/breq var/bstate = 0 + var/plaque_contents = "Unnamed alien creature" /obj/skeleton/New() src.breq = rand(6)+3 @@ -67,18 +63,38 @@ if(bnum==breq) usr = user icon_state = "skel" - var/creaturename = input("Input a name for your discovery:","Name your discovery","Spaceosaurus") src.bstate = 1 src.density = 1 - src.name = "[creaturename] skeleton" + src.name = "alien skeleton display" if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) - src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull, the plaque reads [creaturename]." + src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." else - src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull, the plaque reads [creaturename]." + src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull. The plaque reads \'[plaque_contents]\'." else src.desc = "Incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones." user << "Looks like it could use [src.breq-src.bnum] more bones." else ..() + else if(istype(W,/obj/item/weapon/pen)) + plaque_contents = input("What would you like to write on the plaque:","Skeleton plaque","") + user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of \icon[src] [src].") + if(src.contents.Find(/obj/item/weapon/fossil/skull/horned)) + src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'." + else + src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull. The plaque reads \'[plaque_contents]\'." else ..() + +//shells and plants do not make skeletons +/obj/item/weapon/fossil/shell + name = "Fossilised shell" + icon_state = "shell" + desc = "It's a fossilised shell." + +/obj/item/weapon/fossil/plant + name = "Fossilised plant" + icon_state = "plant1" + desc = "It's fossilised plant remains." + +/obj/item/weapon/fossil/plant/New() + icon_state = "plant[rand(1,4)]" diff --git a/code/modules/research/xenoarchaeology/talking_item.dm b/code/modules/research/xenoarchaeology/talking_item.dm index 8a0a7f168a2..81f9831ed56 100644 --- a/code/modules/research/xenoarchaeology/talking_item.dm +++ b/code/modules/research/xenoarchaeology/talking_item.dm @@ -10,11 +10,12 @@ var/listening_to_players = 0 var/speaking_to_players = 0 -/obj/item/weapon/proc/process_talking(var/word = null) - if(prob(25) && world.timeofday >= lastsaid && heard_words.len >= 1) - SaySomething(word) - spawn(100) - process_talking() +/obj/item/weapon/process() + if(!speaking_to_players) + processing_objects.Remove(src) + return + if(prob(10) && world.timeofday >= lastsaid && heard_words.len >= 1) + SaySomething() /obj/item/weapon/proc/catchMessage(var/msg, var/mob/source) if(speaking_to_players) From b5df09de188ebc8ccacae39b193c38d58c3b401f Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 8 Feb 2013 23:47:00 +1000 Subject: [PATCH 14/66] new xenoarchaeology icons/overlays Signed-off-by: Cael_Aislinn --- icons/obj/mining.dmi | Bin 50436 -> 42973 bytes icons/obj/xenoarchaeology.dmi | Bin 32769 -> 41852 bytes icons/turf/walls.dmi | Bin 141275 -> 147298 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 0bcfd99256222dbd131b9256000a36a27d7ab83a..a2ae3e00fd6da0678a2e5c5e3fa5e6c98fed268e 100644 GIT binary patch literal 42973 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
" + if(positive_locations.len) + for(var/index=1, index<=positive_locations.len, index++) + var/datum/depth_scan/D = positive_locations[index] + dat += "[D.time], coords: [D.coords]
" + else + dat += "No entries recorded." + dat += "
" + dat += "Refresh
" + dat += "Close
" + user << browse(dat,"window=depth_scanner;size=300x500") + onclose(user, "depth_scanner") + +/obj/item/device/depth_scanner/Topic(href, href_list) + ..() + usr.set_machine(src) + + if(href_list["select"]) + var/index = text2num(href_list["select"]) + if(index && index <= positive_locations.len) + current = positive_locations[index] + else if(href_list["clear"]) + var/index = text2num(href_list["clear"]) + if(index) + if(index <= positive_locations.len) + var/datum/depth_scan/D = positive_locations[index] + positive_locations.Remove(D) + del(D) + else + //GC will hopefully pick them up before too long + positive_locations = list() + del(current) + else if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=depth_scanner") + + updateSelfDialog() + +/obj/item/device/gps + name = "relay positioning device" + desc = "Triangulates the approximate co-ordinates using a nearby satellite network." + icon = 'device.dmi' + icon_state = "locator" + item_state = "locator" + +/obj/item/device/gps/attack_self(var/mob/user as mob) + var/turf/T = get_turf(src) + user << "\blue \icon[src] [src] flashes [10 * T.x + rand(0,9)]:[10 * T.y + rand(0,9)]:[10 * T.z + rand(0,9)]." + +/obj/item/device/beacon_locator + name = "locater device" + desc = "Used to scan and locate signals on a particular frequency according ." + icon = 'device.dmi' + icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull + item_state = "electronic" + +/obj/item/device/core_sampler + name = "core sampler" + desc = "Used to extract cores from geological samples." + icon = 'device.dmi' + icon_state = "core_sampler" + item_state = "screwdriver_brown" + w_class = 1.0 + flags = FPRINT | TABLEPASS + slot_flags = SLOT_BELT + +/obj/item/device/measuring_tape + name = "measuring tape" + desc = "A coiled metallic tape used to check dimensions and lengths." + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "measuring" + +//todo: dig site tape + +//---- excavation devices devices ----// +//sorted in order of delicacy + +/obj/item/weapon/pickaxe/brush + name = "brush" + //icon_state = "brush" + //item_state = "minipick" + digspeed = 50 + desc = "Featuring thick metallic wires for clearing away dust and loose scree." + excavation_amount = 0.5 + drill_sound = 'sound/weapons/thudswoosh.ogg' + drill_verb = "brushing" + +/obj/item/weapon/pickaxe/one_pick + name = "1/6 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (1 centimetre excavation depth)." + excavation_amount = 1 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/two_pick + name = "1/3 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." + excavation_amount = 2 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/three_pick + name = "1/2 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (3 centimetre excavation depth)." + excavation_amount = 3 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/four_pick + name = "2/3 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." + excavation_amount = 4 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/five_pick + name = "5/6 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (5 centimetre excavation depth)." + excavation_amount = 5 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/six_pick + name = "1/1 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." + excavation_amount = 6 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/hand + name = "hand pickaxe" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A smaller, more precise version of the pickaxe (15 centimetre excavation depth)." + excavation_amount = 15 + drill_sound = 'sound/items/Crowbar.ogg' + drill_verb = "clearing" From 09a340235c8c0b84bce5dd77b4b20e5200be3530 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 8 Feb 2013 23:50:46 +1000 Subject: [PATCH 16/66] fixed processing + tweaked heat generation and function of analysis machinery, fixed up floodlight, added suspension (stasis) field generator Signed-off-by: Cael_Aislinn --- code/game/machinery/floodlight.dm | 63 ++-- .../research/xenoarchaeology/analysis.dm | 144 ++++---- .../analysis_fourier_transform.dm | 6 +- .../xenoarchaeology/analysis_ion_mobility.dm | 13 +- .../xenoarchaeology/suspension_generator.dm | 324 ++++++++++++++++++ 5 files changed, 435 insertions(+), 115 deletions(-) create mode 100644 code/modules/research/xenoarchaeology/suspension_generator.dm diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 1e5740ed8e0..57f1bc4be6e 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -6,66 +6,58 @@ icon_state = "flood00" density = 1 var/on = 0 - var/obj/item/weapon/cell/cell = null - var/use = 1 + var/obj/item/weapon/cell/high/cell = null + var/use = 5 var/unlocked = 0 var/open = 0 + var/brightness_on = 999 //can't remember what the maxed out value is + +/obj/machinery/floodlight/New() + src.cell = new(src) + ..() /obj/machinery/floodlight/proc/updateicon() icon_state = "flood[open ? "o" : ""][open && cell ? "b" : ""]0[on]" /obj/machinery/floodlight/process() - if (!on) - if (luminosity) + if(on) + cell.charge -= use + if(cell.charge <= 0) + on = 0 updateicon() - //sd_SetLuminosity(0) - return - - if(!luminosity && cell && cell.charge > 0) - //sd_SetLuminosity(10) - updateicon() - - if(!cell && luminosity) - on = 0 - updateicon() - //sd_SetLuminosity(0) - return - - cell.charge -= use - - if(cell.charge <= 0 && luminosity) - on = 0 - updateicon() - //sd_SetLuminosity(0) - return + SetLuminosity(0) + src.visible_message("[src] shuts down due to lack of power!") + return /obj/machinery/floodlight/attack_hand(mob/user as mob) if(open && cell) - cell.loc = usr - cell.layer = 20 - if (user.hand ) - user.l_hand = cell + if(ishuman(user)) + if(!user.get_active_hand()) + user.put_in_hands(cell) + cell.loc = user.loc else - user.r_hand = cell + cell.loc = loc cell.add_fingerprint(user) - updateicon() cell.updateicon() src.cell = null user << "You remove the power cell" + updateicon() return if(on) on = 0 - user << "You turn off the light" + user << "\blue You turn off the light" + SetLuminosity(0) else if(!cell) return if(cell.charge <= 0) return on = 1 - user << "You turn on the light" + user << "\blue You turn on the light" + SetLuminosity(brightness_on) updateicon() @@ -101,10 +93,3 @@ cell = W user << "You insert the power cell." updateicon() - -/obj/machinery/floodlight/New() - src.cell = new/obj/item/weapon/cell(src) - cell.maxcharge = 1000 - cell.charge = 1000 - ..() - diff --git a/code/modules/research/xenoarchaeology/analysis.dm b/code/modules/research/xenoarchaeology/analysis.dm index c864915d3a4..0d2579191ec 100644 --- a/code/modules/research/xenoarchaeology/analysis.dm +++ b/code/modules/research/xenoarchaeology/analysis.dm @@ -5,12 +5,10 @@ // var/obj/item/weapon/reagent_containers/glass/held_container var/obj/item/weapon/tank/fuel_container - var/scan_time = 30 //change to 300 later + var/target_scan_ticks = 60 var/report_num = 0 - var/scanning = 0 - var/safety_enabled = 1 - var/warning_given = 0 - var/heat_accumulation_rate = 0 + var/scan_process = 0 + var/heat_accumulation_rate = 1 var/temperature = 273 //measured in kelvin, if this exceeds 1200, the machine is damaged and requires repairs //if this exceeds 600 and safety is enabled it will shutdown //temp greater than 600 also requires a safety prompt to initiate scanning @@ -18,6 +16,7 @@ var/obj/machinery/anomaly/scanner/owned_scanner = null /obj/machinery/anomaly/New() + ..() //connect to a nearby scanner pad if(scanner_dir) owned_scanner = locate(/obj/machinery/anomaly/scanner) in get_step(src, scanner_dir) @@ -32,6 +31,49 @@ S.reagents.add_reagent("analysis_sample", 1, D.geological_data) S.reagents.add_reagent("chlorine", 1, D.geological_data) +/obj/machinery/anomaly/process() + //not sure if everything needs to heat up, or just the GLPC + var/datum/gas_mixture/env = loc.return_air() + var/environmental_temp = env.temperature + if(scan_process) + if(scan_process++ > target_scan_ticks) + FinishScan() + + //heat up as we go, but if the air is freezing then heat up much slower + var/new_heat = heat_accumulation_rate + heat_accumulation_rate * rand(-5,5) / 10 + if(environmental_temp < temperature) + new_heat *= 0.75 + temperature += new_heat + if(temperature > 350 && prob(10)) + src.visible_message("\blue \icon[src] bleets plaintively.", 2) + if(temperature > 400) + scan_process = 0 + + //show we're busy + if(prob(10)) + src.visible_message("\blue \icon[src] [pick("whirrs","chuffs","clicks")][pick(" quietly"," softly"," sadly"," excitedly"," energetically"," angrily"," plaintively")].", 2) + + else if(temperature > environmental_temp) + //cool down to match the air + temperature -= heat_accumulation_rate + heat_accumulation_rate * rand(-5,5) / 10 + if(temperature < environmental_temp) + temperature = environmental_temp + if(prob(10)) + src.visible_message("\blue \icon[src] hisses softly.", 2) + + else if(temperature < environmental_temp) + //heat up to match the air + temperature += heat_accumulation_rate + rand(-5,5) / 10 + if(temperature > environmental_temp) + temperature = environmental_temp + else + if(prob(10)) + src.visible_message("\blue \icon[src] plinks quietly.", 2) + + //warm up the lab slightly + if(env.temperature < temperature) + env.temperature += (temperature - env.temperature) * 0.1 + //this proc should be overriden by each individual machine /obj/machinery/anomaly/attack_hand(var/mob/user as mob) if(stat & (NOPOWER|BROKEN)) @@ -42,7 +84,7 @@ dat += "Module heat level: [temperature] kelvin
" dat += "Safeties set at 600k, shielding failure at 1200k. Failure to maintain safe heat levels may result in equipment damage.
" dat += "
" - if(scanning) + if(scan_process) dat += "Scan in progress


" else dat += "[held_container ? "Eject beaker" : "No beaker inserted."]
" @@ -79,58 +121,28 @@ obj/machinery/anomaly/attackby(obj/item/weapon/W as obj, mob/living/user as mob) else return ..() -/obj/machinery/anomaly/process() - //not sure if everything needs to heat up, or just the GLPC - var/datum/gas_mixture/env = loc.return_air() - var/environmental_temp = env.temperature - if(scanning) - //heat up as we go, but if the air is freezing then heat up much slower - var/new_heat = heat_accumulation_rate + heat_accumulation_rate * rand(-0.5,0.5) - if(environmental_temp < 273) - new_heat /= 2 - temperature += new_heat - if(temperature >= 600) - if(!warning_given || temperature >= 1200) - src.visible_message("The [src] bleets.", 2) - warning_given = 1 - if(safety_enabled) - scanning = 0 - else if(temperature > environmental_temp) - //cool down to match the air - temperature -= 10 + rand(-5,5) - if(temperature < environmental_temp) - temperature = environmental_temp - else if(temperature < environmental_temp) - //heat up to match the air - temperature += 10 + rand(-5,5) - if(temperature > environmental_temp) - temperature = environmental_temp - obj/machinery/anomaly/proc/ScanResults() //instantiate in children to produce unique scan behaviour return "\red Error initialising scanning components." -obj/machinery/anomaly/proc/BeginScan() - var/total_scan_time = scan_time + scan_time * rand(-0.5, 0.5) +obj/machinery/anomaly/proc/FinishScan() + scan_process = 0 + updateDialog() - scanning = 1 - spawn(total_scan_time) - if(scanning) - scanning = 0 - updateDialog() - - //determine the results and print a report - if(held_container) - src.visible_message("\icon[src] makes an insistent chime.", 2) - var/obj/item/weapon/paper/P = new(src.loc) - P.name = "[src] report #[++report_num]" - P.info = "[src] analysis report #[report_num]

" + ScanResults() - P.stamped = list(/obj/item/weapon/stamp) - P.overlays = list("paper_stamped") - else - src.visible_message("\icon[src] makes a low buzzing noise.", 2) + //determine the results and print a report + if(held_container) + src.visible_message("\blue \icon[src] makes an insistent chime.", 2) + var/obj/item/weapon/paper/P = new(src.loc) + P.name = "[src] report #[++report_num]" + P.info = "[src] analysis report #[report_num]

" + ScanResults() + P.stamped = list(/obj/item/weapon/stamp) + P.overlays = list("paper_stamped") + else + src.visible_message("\blue \icon[src] makes a low buzzing noise.", 2) obj/machinery/anomaly/Topic(href, href_list) + ..() + usr.set_machine(src) if(href_list["close"]) usr << browse(null, "window=anomaly") usr.machine = null @@ -141,34 +153,24 @@ obj/machinery/anomaly/Topic(href, href_list) fuel_container.loc = src.loc fuel_container = null if(href_list["begin"]) - if(temperature >= 600) + if(temperature >= 300) var/proceed = input("Unsafe internal temperature detected, do you wish to continue?","Warning") - if(proceed) - if(get_dist(src, usr) <= 1) - safety_enabled = 0 - BeginScan() - else - usr << "\red You must be closer to the [src]!" + if(proceed && get_dist(src, usr) <= 1) + scan_process = 1 else - BeginScan() + scan_process = 1 - ..() - updateDialog() + updateUsrDialog() //whether the carrier sample matches the possible finds //results greater than a threshold of 0.6 means a positive result -obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/datum/reagent/carrier) +obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/carrier) var/specifity = 0 - var/remaining = 1 if(scanned_sample && carrier) - for(var/index=1,index <= scanned_sample.find_presence.len, index++) - var/find = scanned_sample.find_presence[index] - if(find && responsive_carriers[index] == carrier) - specifity += 0.5 * remaining + rand(0, 0.25 * remaining) - remaining = 1 - specifity - - if(!specifity) - specifity += rand(0, 0.5) + if(scanned_sample.find_presence.Find(carrier)) + specifity = 0.7 * (scanned_sample.find_presence[carrier] / scanned_sample.total_spread) + 0.3 + else + specifity = rand(0, 0.5) return specifity diff --git a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm b/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm index 7a402fdcd99..5e952c00bbd 100644 --- a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm +++ b/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm @@ -33,9 +33,9 @@ obj/machinery/anomaly/fourier_transform/ScanResults() distance += distance * rand(-100 * offset, 100 * offset) / 100 accuracy = specifity results = "Fourier transform analysis on anomalous energy absorption through carrier ([carrier]) indicates source located inside emission radius ([100 * accuracy]% accuracy): [distance]." - if(carrier == scanned_sample.source_mineral) - results += "
Warning, analysis may be contaminated by high quantities of molecular carrier present throughout sample." else - results = "Standard energy dispersion detected throughout sample." + results = "Energy dispersion detected throughout sample consistent with background readings.
" + if(carrier == scanned_sample.source_mineral) + results += "Warning, analysis may be contaminated by high quantities of molecular carrier present throughout sample." return results diff --git a/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm b/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm index 221b4417b51..cdc388d7c87 100644 --- a/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm +++ b/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm @@ -22,15 +22,24 @@ obj/machinery/anomaly/ion_mobility/ScanResults() if(num_reagents == 2 && scanned_sample && carrier) //all necessary components are present - results = "Kinetic analysis on sample's ionic residue in carrier ([carrier]) indicates the following composition:

" + results = "Kinetic analysis on sample's ionic residue in carrier ([carrier]) indicates the dissonance spread:

" var/found = 0 + if(scanned_sample.find_presence.Find(carrier)) + var/dis_ratio = scanned_sample.find_presence[carrier] + var/desc_index = responsive_carriers.Find(carrier) + results += " - [finds_as_strings[desc_index]]: [dis_ratio]
" + found++ + /* for(var/index=1,index <= scanned_sample.find_presence.len, index++) var/find = scanned_sample.find_presence[index] //world << "index: [index], find: [find], response: [responsive_carriers[index]], carrier: [carrier]" if(find && responsive_carriers[index] == carrier) results += " - [finds_as_strings[index]] [find * 100]%
" found++ + */ if(!found) - results = "Kinetic analysis on sample's ionic residue in carrier ([carrier]) to determine composition were inconclusive." + results = "Kinetic analysis on sample's ionic residue in carrier ([carrier]) to determine composition were inconclusive.
" + if(carrier == scanned_sample.source_mineral) + results += "Warning, analysis may be contaminated by high quantities of molecular carrier present throughout sample." return results diff --git a/code/modules/research/xenoarchaeology/suspension_generator.dm b/code/modules/research/xenoarchaeology/suspension_generator.dm new file mode 100644 index 00000000000..3c1449f6b49 --- /dev/null +++ b/code/modules/research/xenoarchaeology/suspension_generator.dm @@ -0,0 +1,324 @@ +//these are probably broken + +/obj/machinery/suspension_gen + name = "suspension field generator" + desc = "It has stubby legs bolted up against it's body for stabilising." + icon = 'xenoarchaeology.dmi' + icon_state = "suspension2" + density = 1 + req_access = list(access_research) + var/obj/item/weapon/cell/cell + var/obj/item/weapon/card/id/auth_card + var/locked = 1 + var/open = 0 + var/screwed = 1 + var/field_type = "" + var/power_use = 25 + var/obj/effect/suspension_field/suspension_field + var/list/secured_mobs = list() + +/obj/machinery/suspension_gen/New() + src.cell = new/obj/item/weapon/cell/high(src) + ..() + +/obj/machinery/suspension_gen/process() + set background = 1 + + if (suspension_field) + cell.charge -= power_use + + var/turf/T = get_turf(suspension_field) + if(field_type == "carbon") + for(var/mob/living/carbon/M in T) + M.weakened = max(M.weakened, 3) + cell.charge -= power_use + if(prob(10)) + M << "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]" + + if(field_type == "silicon") + for(var/mob/living/silicon/M in T) + M.weakened = max(M.weakened, 3) + cell.charge -= power_use + if(prob(10)) + M << "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]" + + for(var/obj/item/I in T) + if(!suspension_field.contents.len) + suspension_field.icon_state = "energynet" + suspension_field.overlays += "shield2" + I.loc = suspension_field + + for(var/mob/living/simple_animal/M in T) + M.weakened = max(M.weakened, 3) + cell.charge -= power_use + if(prob(10)) + M << "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]" + + if(cell.charge <= 0) + deactivate() + +/obj/machinery/suspension_gen/interact(mob/user as mob) + var/dat = "Multi-phase mobile suspension field generator MK II \"Steadfast\"
" + if(cell) + var/colour = "red" + if(cell.charge / cell.maxcharge > 0.66) + colour = "green" + else if(cell.charge / cell.maxcharge > 0.33) + colour = "orange" + dat += "Energy cell: [100 * cell.charge / cell.maxcharge]%
" + else + dat += "Energy cell: None
" + if(auth_card) + dat += "\[[auth_card]\]
" + if(!locked) + dat += "
[suspension_field ? "Disable" : "Enable"] field
" + else + dat += "
" + else + dat += "\[------\]
" + if(!locked) + dat += "
[suspension_field ? "Disable" : "Enable"] field
" + else + dat += "Enter your ID to begin.
" + + dat += "
" + if(!locked) + dat += "Select field mode
" + dat += "[field_type=="carbon"?"":"" ]Diffracted CO2 laser
" + dat += "[field_type=="helium"?"":"" ]Helium tracer field
" + dat += "[field_type=="beryllium"?"":"" ]Beryllium dispersion wave
" + dat += "[field_type=="neon"?"":"" ]Neon refrigerant cloud
" + dat += "[field_type=="aluminium"?"":"" ]Aluminium transmitted field
" + dat += "[field_type=="silicon"?"":"" ]Silicon wafer conduction
" + dat += "[field_type=="calcium"?"":"" ]Calcium binary deoxidiser
" + else + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "Always wear safety gear and consult a field manual before operation.
" + if(!locked) + dat += "Lock console
" + else + dat += "
" + dat += "Refresh console
" + dat += "Close console" + user << browse(dat, "window=suspension;size=500x400") + onclose(user, "suspension") + +/obj/machinery/suspension_gen/Topic(href, href_list) + ..() + usr.set_machine(src) + + if(href_list["toggle_field"]) + if(!suspension_field) + if(cell.charge > 0) + if(anchored) + activate() + else + usr << "You are unable to activate [src] until it is properly secured on the ground." + else + deactivate() + if(href_list["select_field"]) + field_type = href_list["select_field"] + else if(href_list["insertcard"]) + var/obj/item/I = usr.get_active_hand() + if (istype(I, /obj/item/weapon/card)) + usr.drop_item() + I.loc = src + auth_card = I + if(attempt_unlock(I)) + usr << "You insert [I], the console flashes \'Access granted.\'" + else + usr << "You insert [I], the console flashes \'Access denied.\'" + else if(href_list["ejectcard"]) + if(auth_card) + if(ishuman(usr)) + auth_card.loc = usr.loc + if(!usr.get_active_hand()) + usr.put_in_hands(auth_card) + auth_card = null + else + auth_card.loc = loc + auth_card = null + else if(href_list["lock"]) + locked = 1 + else if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=suspension") + + updateUsrDialog() + +/obj/machinery/suspension_gen/attack_hand(mob/user as mob) + if(!open) + interact(user) + else if(cell) + cell.loc = loc + cell.add_fingerprint(user) + cell.updateicon() + + icon_state = "suspension0" + cell = null + user << "You remove the power cell" + +/obj/machinery/suspension_gen/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/screwdriver)) + if(!open) + if(screwed) + screwed = 0 + else + screwed = 1 + user << "You [screwed ? "screw" : "unscrew"] the battery panel." + else if (istype(W, /obj/item/weapon/crowbar)) + if(!locked) + if(!screwed) + if(!suspension_field) + if(open) + open = 0 + else + open = 1 + user << "You crowbar the battery panel [open ? "open" : "in place"]." + icon_state = "suspension[open ? (cell ? "1" : "0") : "2"]" + else + user << "[src]'s safety locks are engaged, shut it down first." + else + user << "Unscrew [src]'s battery panel first." + else + user << "[src]'s security locks are engaged." + else if (istype(W, /obj/item/weapon/wrench)) + if(!suspension_field) + if(anchored) + anchored = 0 + else + anchored = 1 + user << "You wrench the stabilising legs [anchored ? "into place" : "up against the body"]." + if(anchored) + desc = "It is resting securely on four stubby legs." + else + desc = "It has stubby legs bolted up against it's body for stabilising." + else + user << "You are unable to secure [src] while it is active!" + else if (istype(W, /obj/item/weapon/cell)) + if(open) + if(cell) + user << "There is a power cell already installed." + else + user.drop_item() + W.loc = src + cell = W + user << "You insert the power cell." + icon_state = "suspension1" + else if(istype(W, /obj/item/weapon/card)) + var/obj/item/weapon/card/I = W + if(!auth_card) + if(attempt_unlock(I)) + user << "You swipe [I], the console flashes \'Access granted.\'" + else + user << "You swipe [I], console flashes \'Access denied.\'" + else + user << "Remove [auth_card] first." + +/obj/machinery/suspension_gen/proc/attempt_unlock(var/obj/item/weapon/card/C) + if(!open) + if(istype(C, /obj/item/weapon/card/emag) && cell.charge > 0) + //put sparks here + if(prob(95)) + locked = 0 + else if(istype(C, /obj/item/weapon/card/id) && check_access(C)) + locked = 0 + + if(!locked) + return 1 + +//checks for whether the machine can be activated or not should already have occurred by this point +/obj/machinery/suspension_gen/proc/activate() + //depending on the field type, we might pickup certain items + var/turf/T = get_turf(get_step(src,dir)) + var/success = 0 + var/collected = 0 + switch(field_type) + if("carbon") + success = 1 + for(var/mob/living/carbon/C in T) + C.weakened += 5 + C.visible_message("\blue \icon[C] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + if("helium") + success = 1 + // + if("beryllium") + success = 1 + // + if("neon") + success = 1 + // + if("aluminium") + success = 1 + // + if("silicon") + success = 1 + for(var/mob/living/silicon/R in T) + R.weakened += 5 + R.visible_message("\blue \icon[R] [R] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + if("calcium") + success = 1 + // + //in case we have a bad field type + if(!success) + return + + for(var/mob/living/simple_animal/C in T) + C.visible_message("\blue \icon[C] [C] begins to float in the air!","You feel tingly and light, but it is difficult to move.") + C.weakened += 5 + + suspension_field = new(T) + suspension_field.field_type = field_type + src.visible_message("\blue \icon[src] [src] activates with a low hum.") + icon_state = "suspension3" + + for(var/obj/item/I in T) + I.loc = suspension_field + collected++ + + if(collected) + suspension_field.icon_state = "energynet" + suspension_field.overlays += "shield2" + src.visible_message("\blue \icon[suspension_field] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"].") + else + if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall)) + suspension_field.icon_state = "shieldsparkles" + else + suspension_field.icon_state = "shield2" + +/obj/machinery/suspension_gen/proc/deactivate() + //drop anything we picked up + var/turf/T = get_turf(suspension_field) + + for(var/mob/M in T) + M << "You no longer feel like floating." + M.weakened = min(M.weakened, 3) + + src.visible_message("\blue \icon[src] [src] deactivates with a gentle shudder.") + del(suspension_field) + icon_state = "suspension2" + +/obj/machinery/suspension_gen/Del() + //safety checks: clear the field and drop anything it's holding + deactivate() + ..() + +/obj/effect/suspension_field + name = "energy field" + icon = 'icons/effects/effects.dmi' + anchored = 1 + density = 1 + var/field_type = "calcium" + +/obj/effect/suspension_field/Del() + for(var/obj/I in src) + I.loc = src.loc + ..() From 3c24a9088dd35661e014e8edc2ee1566d285099f Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 8 Feb 2013 23:52:11 +1000 Subject: [PATCH 17/66] tweaked fossils and arch. finds, added find -> reagent linking, added / tweaked linking between geosample + finds + reagents + analysis + turfs, Signed-off-by: Cael_Aislinn --- .../modules/research/xenoarchaeology/finds.dm | 233 ++++++++++++++---- .../research/xenoarchaeology/fossils.dm | 14 +- .../research/xenoarchaeology/geosample.dm | 83 ++++--- 3 files changed, 245 insertions(+), 85 deletions(-) diff --git a/code/modules/research/xenoarchaeology/finds.dm b/code/modules/research/xenoarchaeology/finds.dm index 480ce8bab0e..fbdb6f8ceef 100644 --- a/code/modules/research/xenoarchaeology/finds.dm +++ b/code/modules/research/xenoarchaeology/finds.dm @@ -31,8 +31,9 @@ #define ARCHAEO_FOSSIL 29 #define ARCHAEO_SHELL 30 #define ARCHAEO_PLANT 31 -//alien remains -//plant remains +#define ARCHAEO_REMAINS_HUMANOID 32 +#define ARCHAEO_REMAINS_ROBOT 33 +#define ARCHAEO_REMAINS_XENO 34 //eggs //droppings //footprints @@ -48,9 +49,77 @@ #define DIGSITE_TEMPLE 5 #define DIGSITE_WAR 6 +/proc/get_responsive_reagent(var/find_type) + switch(find_type) + if(ARCHAEO_BOWL) + return "aluminium" + if(ARCHAEO_URN) + return "aluminium" + if(ARCHAEO_CUTLERY) + return "aluminium" + if(ARCHAEO_STATUETTE) + return "aluminium" + if(ARCHAEO_INSTRUMENT) + return "aluminium" + if(ARCHAEO_COIN) + return "silicon" + if(ARCHAEO_HANDCUFFS) + return "aluminium" + if(ARCHAEO_BEARTRAP) + return "aluminium" + if(ARCHAEO_LIGHTER) + return "aluminium" + if(ARCHAEO_BOX) + return "aluminium" + if(ARCHAEO_GASTANK) + return "aluminium" + if(ARCHAEO_TOOL) + return "silicon" + if(ARCHAEO_METAL) + return "silicon" + if(ARCHAEO_PEN) + return "aluminium" + if(ARCHAEO_CRYSTAL) + return "helium" + if(ARCHAEO_CULTBLADE) + return "neon" + if(ARCHAEO_TELEBEACON) + return "neon" + if(ARCHAEO_CLAYMORE) + return "silicon" + if(ARCHAEO_CULTROBES) + return "neon" + if(ARCHAEO_SOULSTONE) + return "helium" + if(ARCHAEO_SHARD) + return "helium" + if(ARCHAEO_RODS) + return "silicon" + if(ARCHAEO_STOCKPARTS) + return "neon" + if(ARCHAEO_KATANA) + return "silicon" + if(ARCHAEO_LASER) + return "silicon" + if(ARCHAEO_GUN) + return "silicon" + if(ARCHAEO_UNKNOWN) + return "beryllium" + if(ARCHAEO_FOSSIL) + return "carbon" + if(ARCHAEO_PLANT) + return "carbon" + if(ARCHAEO_REMAINS_HUMANOID) + return "carbon" + if(ARCHAEO_REMAINS_ROBOT) + return "carbon" + if(ARCHAEO_REMAINS_XENO) + return "carbon" + return "chlorine" + //see /turf/simulated/mineral/New() in code/modules/mining/mine_turfs.dm /proc/get_random_digsite_type() - return pick(100;DIGSITE_GARDEN,90;DIGSITE_ANIMAL,80;DIGSITE_HOUSE,70;DIGSITE_TECHNICAL,60;DIGSITE_TEMPLE,50;DIGSITE_WAR) + return pick(100;DIGSITE_GARDEN,95;DIGSITE_ANIMAL,90;DIGSITE_HOUSE,85;DIGSITE_TECHNICAL,80;DIGSITE_TEMPLE,75;DIGSITE_WAR) /proc/get_random_find_type(var/digsite) @@ -61,18 +130,19 @@ 100;ARCHAEO_PLANT,\ 25;ARCHAEO_SHELL,\ 25;ARCHAEO_FOSSIL,\ + 10;ARCHAEO_REMAINS_XENO,\ 5;ARCHAEO_BEARTRAP\ ) if(DIGSITE_ANIMAL) find_type = pick(\ 100;ARCHAEO_FOSSIL,\ - 25;ARCHAEO_SHELL,\ - 25;ARCHAEO_PLANT,\ + 50;ARCHAEO_SHELL,\ + 50;ARCHAEO_PLANT,\ + 50;ARCHAEO_REMAINS_XENO,\ 25;ARCHAEO_BEARTRAP\ ) if(DIGSITE_HOUSE) find_type = pick(\ - 100;ARCHAEO_UNKNOWN,\ 100;ARCHAEO_BOWL,\ 100;ARCHAEO_URN,\ 100;ARCHAEO_CUTLERY,\ @@ -82,33 +152,42 @@ 100;ARCHAEO_LIGHTER,\ 100;ARCHAEO_BOX,\ 75;ARCHAEO_COIN,\ + 75;ARCHAEO_UNKNOWN,\ + 75;ARCHAEO_REMAINS_HUMANOID,\ + 75;ARCHAEO_REMAINS_ROBOT,\ + 75;ARCHAEO_REMAINS_XENO,\ 50;ARCHAEO_SHARD,\ 50;ARCHAEO_RODS,\ 25;ARCHAEO_METAL\ ) if(DIGSITE_TECHNICAL) find_type = pick(\ - 100;ARCHAEO_UNKNOWN,\ 100;ARCHAEO_METAL,\ 100;ARCHAEO_GASTANK,\ 100;ARCHAEO_TELEBEACON,\ 100;ARCHAEO_TOOL,\ 100;ARCHAEO_STOCKPARTS,\ + 100;ARCHAEO_REMAINS_ROBOT,\ 75;ARCHAEO_SHARD,\ 75;ARCHAEO_RODS,\ + 75;ARCHAEO_UNKNOWN,\ 50;ARCHAEO_HANDCUFFS,\ - 50;ARCHAEO_BEARTRAP\ + 50;ARCHAEO_BEARTRAP,\ + 25;ARCHAEO_REMAINS_HUMANOID,\ + 25;ARCHAEO_REMAINS_XENO\ ) if(DIGSITE_TEMPLE) find_type = pick(\ 200;ARCHAEO_CULTROBES,\ - 100;ARCHAEO_UNKNOWN,\ 100;ARCHAEO_URN,\ 100;ARCHAEO_BOWL,\ 100;ARCHAEO_KNIFE,\ 100;ARCHAEO_CRYSTAL,\ 75;ARCHAEO_CULTBLADE,\ + 75;ARCHAEO_REMAINS_HUMANOID,\ + 75;ARCHAEO_REMAINS_XENO,\ 50;ARCHAEO_SOULSTONE,\ + 50;ARCHAEO_UNKNOWN,\ 25;ARCHAEO_HANDCUFFS,\ 25;ARCHAEO_BEARTRAP,\ 10;ARCHAEO_KATANA,\ @@ -119,14 +198,17 @@ ) if(DIGSITE_WAR) find_type = pick(\ - 100;ARCHAEO_UNKNOWN,\ 100;ARCHAEO_GUN,\ 100;ARCHAEO_KNIFE,\ 75;ARCHAEO_LASER,\ 75;ARCHAEO_KATANA,\ 75;ARCHAEO_CLAYMORE,\ + 75;ARCHAEO_REMAINS_HUMANOID,\ + 75;ARCHAEO_REMAINS_XENO,\ + 50;ARCHAEO_UNKNOWN,\ 50;ARCHAEO_CULTROBES,\ 50;ARCHAEO_CULTBLADE,\ + 50;ARCHAEO_REMAINS_ROBOT,\ 25;ARCHAEO_HANDCUFFS,\ 25;ARCHAEO_BEARTRAP,\ 25;ARCHAEO_TOOL\ @@ -137,16 +219,20 @@ // Xenoarchaeological finds datum/find - var/find_type = 0 - var/excavation_required = 0 - var/view_range = 15 //how close excavation has to come to show an overlay on the turf - var/destruct_range = 2 //how much excavation has to overshoot by to destroy the item - var/clearance_range= 2 //how close excavation has to come to extract the whole ore instead of just the item inside - //if excavation hits var/excavation_required exactly, it's contained find is extracted cleanly without the ore + var/find_type = 0 //random according to the digsite type + var/excavation_required = 0 //random 5-95% + var/view_range = 20 //how close excavation has to come to show an overlay on the turf + var/clearance_range = 3 //how close excavation has to come to extract the item + //if excavation hits var/excavation_required exactly, it's contained find is extracted cleanly without the ore + var/prob_delicate = 75 //probability it requires an active suspension field to not insta-crumble + var/dissonance_spread = 1 //proportion of the tile that is affected by this find + //used in conjunction with analysis machines to determine correct suspension field type datum/find/New(var/digsite, var/exc_req) excavation_required = exc_req find_type = get_random_find_type(digsite) + clearance_range = rand(2,6) + dissonance_spread = rand(1500,2500) / 100 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Rock sliver @@ -178,11 +264,13 @@ datum/find/New(var/digsite, var/exc_req) var/method = 0// 0 = fire, 1 = brush, 2 = pick origin_tech = "materials=5" -/obj/item/weapon/ore/strangerock/New(var/item_type = 0) - ..() +/obj/item/weapon/ore/strangerock/New(loc, var/inside_item_type = 0) + ..(loc) method = rand(0,2) - if(item_type) - inside = new/obj/item/weapon/archaeological_find(src, item_type) + if(inside_item_type) + inside = new/obj/item/weapon/archaeological_find(src, new_item_type = inside_item_type) + if(!inside) + inside = locate() in contents /*/obj/item/weapon/ore/strangerock/ex_act(var/severity) if(severity && prob(30)) @@ -224,8 +312,7 @@ datum/find/New(var/digsite, var/exc_req) icon_state = "ano01" var/find_type = 0 -/obj/item/weapon/archaeological_find/New(var/new_item_type) - +/obj/item/weapon/archaeological_find/New(loc, var/new_item_type) if(new_item_type) find_type = new_item_type else @@ -373,8 +460,6 @@ datum/find/New(var/digsite, var/exc_req) var/new_type = pick(possible_spawns) new_item = new new_type(src.loc) new_item:amount = rand(5,45) - del(src) - return //nothing fancy here if(15) if(prob(75)) new_item = new /obj/item/weapon/pen(src.loc) @@ -408,8 +493,6 @@ datum/find/New(var/digsite, var/exc_req) if(19) new_item = new /obj/item/weapon/claymore(src.loc) name = new_item.name - desc = new_item.desc - apply_material_decorations = 0 if(20) //arcane clothing var/list/possible_spawns = list(/obj/item/clothing/head/culthood, @@ -419,21 +502,18 @@ datum/find/New(var/digsite, var/exc_req) var/new_type = pick(possible_spawns) new_item = new new_type(src.loc) - del(src) - return if(21) //soulstone new_item = new /obj/item/device/soulstone(src.loc) - del(src) - return + apply_material_decorations = 0 if(22) new_item = new /obj/item/weapon/shard(src.loc) - del(src) - return + apply_image_decorations = 0 + apply_material_decorations = 0 if(23) new_item = new /obj/item/stack/rods(src.loc) - del(src) - return + apply_image_decorations = 0 + apply_material_decorations = 0 if(24) var/list/possible_spawns = typesof(/obj/item/weapon/stock_parts) possible_spawns -= /obj/item/weapon/stock_parts @@ -441,13 +521,10 @@ datum/find/New(var/digsite, var/exc_req) var/new_type = pick(possible_spawns) new_item = new new_type(src.loc) - del(src) - return + apply_material_decorations = 0 if(25) new_item = new /obj/item/weapon/katana(src.loc) name = new_item.name - desc = new_item.desc - apply_material_decorations = 0 if(26) //energy gun var/spawn_type = pick(\ @@ -472,8 +549,7 @@ datum/find/New(var/digsite, var/exc_req) else new_gun.power_supply.charge = 0 - name = new_item.name - desc = new_item.desc + name = "unknown weapon" if(27) //revolver var/obj/item/weapon/gun/projectile/new_gun = new (src.loc) @@ -505,27 +581,79 @@ datum/find/New(var/digsite, var/exc_req) new_gun.loaded.Remove(I) I.loc = null - name = new_item.name - desc = new_item.desc + name = "unknown weapon" if(28) //completely unknown alien device - if(prob(40)) + if(prob(50)) apply_image_decorations = 0 if(29) //fossil bone/skull new/obj/item/weapon/fossil/base(src.loc) + + //this item replaces itself on spawn with another, doing anything else will cause runtimes del(src) return if(30) //fossil shell - new/obj/item/weapon/fossil/base(src.loc) - del(src) - return - if(30) + new/obj/item/weapon/fossil/shell(src.loc) + apply_image_decorations = 0 + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + if(31) //fossil plant - new/obj/item/weapon/fossil/base(src.loc) - del(src) - return + new/obj/item/weapon/fossil/plant(src.loc) + apply_image_decorations = 0 + apply_material_decorations = 0 + if(32) + //humanoid remains + name = "humanoid remains" + icon = 'blood.dmi' + icon_state = "remains" + apply_material_decorations = 0 + apply_image_decorations = 0 + additional_desc = pick("They appear almost human.",\ + "They are contorted in a most gruesome way.",\ + "They look almost peaceful.",\ + "The bones are yellowing and old, but remarkably well preserved.",\ + "The bones are scored by numerous burns and partially melted.",\ + "The are battered and broken, in some cases less than splinters are left.",\ + "The mouth is wide open in a death rictus, the victim would appear to have died screaming.") + apply_image_decorations = 0 + apply_material_decorations = 0 + if(33) + //robot remains + name = "robotic remains" + icon = 'blood.dmi' + icon_state = "remainsrobot" + apply_material_decorations = 0 + apply_image_decorations = 0 + additional_desc = pick("Almost mistakeable for the remains of a modern cyborg.",\ + "They are barely recognisable as anything other than a pile of waste metals.",\ + "It looks like the battered remains of an ancient robot chassis.",\ + "The chassis is rusting and old, but remarkably well preserved.",\ + "The chassis is scored by numerous burns and partially melted.",\ + "The chassis is battered and broken, in some cases only chunks of metal are left.",\ + "A pile of wires and crap metal that looks vaguely robotic.") + apply_image_decorations = 0 + apply_material_decorations = 0 + if(34) + //xenos remains + name = "alien remains" + icon = 'blood.dmi' + icon_state = "remainsxeno" + apply_material_decorations = 0 + apply_image_decorations = 0 + additional_desc = pick("It looks vaguely reptilian, but with more teeth.",\ + "They are faintly unsettling.",\ + "There is a faint aura of unease about them.",\ + "The bones are yellowing and old, but remarkably well preserved.",\ + "The bones are scored by numerous burns and partially melted.",\ + "The are battered and broken, in some cases less than splinters are left.",\ + "This creature would have been twisted and monstrous when it was alive.",\ + "It doesn't look human.") + apply_image_decorations = 0 + apply_material_decorations = 0 var/decorations = "" if(apply_material_decorations) @@ -577,7 +705,7 @@ datum/find/New(var/digsite, var/exc_req) //icon and icon_state should have already been set if(new_item) - new_item.name = src.name + new_item.name = "[pick("strange","ancient","alien","")] [new_item.name]" new_item.desc = src.desc if(talkative) @@ -585,6 +713,9 @@ datum/find/New(var/digsite, var/exc_req) if(prob(25)) new_item.speaking_to_players = 1 processing_objects.Add(src) + var/turf/T = get_turf(src) + if(istype(T, /turf/simulated/mineral)) + T:last_find = new_item del(src) else if(talkative) diff --git a/code/modules/research/xenoarchaeology/fossils.dm b/code/modules/research/xenoarchaeology/fossils.dm index 9ee9ecba8b4..bd2e87fe83c 100644 --- a/code/modules/research/xenoarchaeology/fossils.dm +++ b/code/modules/research/xenoarchaeology/fossils.dm @@ -9,12 +9,14 @@ desc = "It's a fossil." /obj/item/weapon/fossil/base/New() - spawn(0) - var/list/l = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3, - "/obj/item/weapon/fossil/skull/horned"=2) - var/t = pickweight(l) - new t(src.loc) - del src + var/list/l = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3, + "/obj/item/weapon/fossil/skull/horned"=2) + var/t = pickweight(l) + var/obj/item/weapon/W = new t(src.loc) + var/turf/T = get_turf(src) + if(istype(T, /turf/simulated/mineral)) + T:last_find = W + del src /obj/item/weapon/fossil/bone name = "Fossilised bone" diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index 98064c676f2..72c454148d1 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -28,13 +28,12 @@ var/list/finds_as_strings = list( \ "Long exposure particles", \ "Trace water particles", \ "Crystalline structures", \ - "Metals", \ - "Igneous rock", \ - "Metamorphic rock", \ - "Sedimentary rock", \ + "Metallics", \ + "Metamorphic/generic rock", \ + "Igneous/generic rock", \ + "Sedimentary/generic rock", \ "Anomalous material" ) - datum/geosample var/age = 0 //age can correspond to different archaeological finds var/age_thousand = 0 @@ -42,10 +41,12 @@ datum/geosample var/age_billion = 0 var/artifact_id = "" //id of a nearby artifact, if there is one var/artifact_distance = -1 //proportional to distance + var/source_mineral = "calcium" + var/total_spread = 0 // - var/source_mineral + //var/source_mineral //all potential finds are initialised to null, so nullcheck before you access them - var/list/find_presence[10] + var/list/find_presence = list() datum/geosample/New(var/turf/simulated/mineral/container) @@ -53,51 +54,77 @@ datum/geosample/New(var/turf/simulated/mineral/container) //this should only need to be called once datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) - source_mineral = container.mineralName + //source_mineral = container.mineralName age = rand(1,999) - find_presence[FIND_METEORIC] = rand(1,10) / 10 - - var/comp_remaining = 1 - find_presence[FIND_METEORIC] + //find_presence[FIND_METEORIC] = rand(1,10) / 10 + //var/comp_remaining = 1 - find_presence[FIND_METEORIC] switch(container.mineralName) if("Uranium") age_million = rand(1, 704) age_thousand = rand(1,999) - find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_METALLIC] + //find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_METALLIC] + find_presence["silicon"] = rand(1,1000) / 100 + source_mineral = "silicon" if("Iron") age_thousand = rand(1, 999) age_million = rand(1, 999) - find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_METALLIC] + //find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_METALLIC] + find_presence["silicon"] = rand(1,1000) / 100 + source_mineral = "silicon" if("Diamond") age_thousand = rand(1,999) age_million = rand(1,999) - find_presence[FIND_CRYSTALLINE] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_CRYSTALLINE] + //find_presence[FIND_CRYSTALLINE] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_CRYSTALLINE] + find_presence["helium"] = rand(1,1000) / 100 + source_mineral = "helium" if("Gold") age_thousand = rand(1,999) age_million = rand(1,999) age_billion = rand(3,4) - find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_METALLIC] + //find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_METALLIC] + find_presence["silicon"] = rand(1,1000) / 100 + source_mineral = "silicon" if("Silver") age_thousand = rand(1,999) age_million = rand(1,999) - find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_METALLIC] + //find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_METALLIC] + find_presence["silicon"] = rand(1,1000) / 100 + source_mineral = "silicon" if("Plasma") age_thousand = rand(1,999) age_million = rand(1,999) age_billion = rand(10, 13) - find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_METALLIC] + //find_presence[FIND_METALLIC] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_METALLIC] + find_presence["silicon"] = rand(1,1000) / 100 + source_mineral = "silicon" if("Clown") age = rand(-1,-999) //thats_the_joke.mp4 age_thousand = rand(-1,-999) - else - source_mineral = "Rock" - find_presence[FIND_IGNEOUS] = comp_remaining * (rand(25, 75) / 100) - comp_remaining -= find_presence[FIND_IGNEOUS] + find_presence["beryllium"] = rand(1,1000) / 100 + source_mineral = "beryllium" + //find_presence[FIND_IGNEOUS] = comp_remaining * (rand(25, 75) / 100) + //comp_remaining -= find_presence[FIND_IGNEOUS] + + find_presence["neon"] = rand(1,500) / 100 + if(prob(20)) + find_presence["carbon"] = rand(1,10) / 100 + + //find_presence[FIND_METAMORPHIC] = comp_remaining + //allocate the rest to ordinary rock + find_presence["calcium"] = rand(500,2500) / 100 + + //loop over finds, grab any relevant stuff + for(var/datum/find/F in container.finds) + var/responsive_reagent = get_responsive_reagent(F.find_type) + find_presence[responsive_reagent] = F.dissonance_spread + + for(var/entry in find_presence) + total_spread += find_presence[entry] - find_presence[FIND_METAMORPHIC] = comp_remaining From 5533ef494693ee95b86178d42b5cf61a7f9a60d5 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 8 Feb 2013 23:54:45 +1000 Subject: [PATCH 18/66] setup digsite creation + propogation on mining asteroid, setup most excavation and tool interaction with mining turfs + digsites, setup tweaked list operation, modified dme Signed-off-by: Cael_Aislinn --- baystation12.dme | 11 ++- code/__HELPERS/lists.dm | 5 +- code/modules/mining/mine_turfs.dm | 150 +++++++++++++++++++++++------- 3 files changed, 125 insertions(+), 41 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 3ebe66586a2..ecc43c2a84d 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -774,10 +774,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\DetectiveWork\detective_work.dm" -#include "code\modules\DetectiveWork\evidence.dm" -#include "code\modules\DetectiveWork\footprints_and_rag.dm" -#include "code\modules\DetectiveWork\scanner.dm" +#include "code\modules\detectivework\detective_work.dm" +#include "code\modules\detectivework\evidence.dm" +#include "code\modules\detectivework\footprints_and_rag.dm" +#include "code\modules\detectivework\scanner.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" @@ -1127,7 +1127,6 @@ #include "code\modules\research\xenoarchaeology\analysis_isotope_ratio.dm" #include "code\modules\research\xenoarchaeology\analysis_scanner.dm" #include "code\modules\research\xenoarchaeology\archaeo_excavate.dm" -#include "code\modules\research\xenoarchaeology\archaeo_tools.dm" #include "code\modules\research\xenoarchaeology\artifact.dm" #include "code\modules\research\xenoarchaeology\artifact_analysis.dm" #include "code\modules\research\xenoarchaeology\artifact_db.dm" @@ -1141,7 +1140,9 @@ #include "code\modules\research\xenoarchaeology\finds.dm" #include "code\modules\research\xenoarchaeology\fossils.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" +#include "code\modules\research\xenoarchaeology\misc_tools.dm" #include "code\modules\research\xenoarchaeology\readme.dm" +#include "code\modules\research\xenoarchaeology\suspension_generator.dm" #include "code\modules\research\xenoarchaeology\talking_item.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\IDE.dm" diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 690025ab735..fd1bdb3465b 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -149,8 +149,9 @@ proc/listclearnulls(list/list) //Reverses the order of items in the list /proc/reverselist(list/L) var/list/output = list() - for(var/i = L.len; i >= 1; i--) - output += L[i] + if(L) + for(var/i = L.len; i >= 1; i--) + output += L[i] return output //Randomize: Return the list in a random order diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index cca0035846d..a7944ca8968 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -24,11 +24,10 @@ var/excavation_level = 0 var/list/finds = list() var/list/excavation_minerals = list() - var/list/excavation_minerals_ascending = list() - var/list/exca_first = list("A","B","C","D","E") - var/list/exca_second = list() var/next_rock = 0 - var/overlay_num = 0 + var/archaeo_overlay = "" + var/excav_overlay = "" + var/obj/item/weapon/last_find /turf/simulated/mineral/Del() return @@ -76,17 +75,16 @@ //keep any digsite data as constant as possible if(T.finds.len && !M.finds.len) M.finds = T.finds - M.overlays += "overlay_archaeo1" + if(T.archaeo_overlay) + M.overlays += archaeo_overlay + //---- Xenoarchaeology BEGIN if(mineralAmt > 0 && !excavation_minerals.len) for(var/i=0, i= F.excavation_required + F.destruct_range) - fail_message = ", [pick("there is a crunching noise","[W] hits something","part of the rock face crumbles away","something breaks under [W]")]" - if(prob(50)) - src.finds.Remove(F) - user << "\red You start [P.drill_verb][fail_message]." + if(src.excavation_level + P.excavation_amount > F.excavation_required) + //Chance to destroy / extract any finds here + fail_message = ", [pick("there is a crunching noise","[W] collides with some different rock","part of the rock face crumbles away","something breaks under [W]")]" + + user << "\red You start [P.drill_verb][fail_message ? fail_message : ""]." + + if(fail_message) + if(prob(50)) + if(prob(25)) + excavate_find(5, src.finds[1]) + else if(prob(50)) + src.finds.Remove(src.finds[1]) if(do_after(user,P.digspeed)) user << "\blue You finish [P.drill_verb] the rock." + + if(finds.len) + var/datum/find/F = src.finds[1] + if(round(src.excavation_level + P.excavation_amount) == F.excavation_required) + //Chance to extract any items here perfectly, otherwise just pull them out along with the rock surrounding them + if(src.excavation_level + P.excavation_amount > F.excavation_required) + //if you can get slightly over, perfect extraction + excavate_find(100, F) + else + excavate_find(80, F) + + else if(src.excavation_level + P.excavation_amount > F.excavation_required - F.clearance_range) + //just pull the surrounding rock out + excavate_find(5, F) + if(src.excavation_level + P.excavation_amount >= 100) gets_drilled() + return else src.excavation_level += P.excavation_amount - //handle any archaeological finds we might uncover + //archaeo overlays + if(!archaeo_overlay && finds.len) + var/datum/find/F = src.finds[1] + if(F.excavation_required <= src.excavation_level + F.view_range) + archaeo_overlay = "overlay_archaeo[rand(1,3)]" + overlays += archaeo_overlay - //extract pesky minerals while we're excavating - while(excavation_minerals.len && src.excavation_level > excavation_minerals[excavation_minerals.len]) - drop_mineral() - //have a 50% chance to extract bonus minerals this way - //if(prob(50)) - pop(excavation_minerals) - mineralAmt-- + //there's got to be a better way to do this + var/update_excav_overlay = 0 + if(src.excavation_level >= 75) + if(src.excavation_level - P.excavation_amount < 75) + update_excav_overlay = 1 + else if(src.excavation_level >= 50) + if(src.excavation_level - P.excavation_amount < 50) + update_excav_overlay = 1 + else if(src.excavation_level >= 25) + if(src.excavation_level - P.excavation_amount < 25) + update_excav_overlay = 1 - //drop some rocks - next_rock += P.excavation_amount * 10 - while(next_rock > 100) - next_rock -= 100 - var/obj/item/weapon/ore/O = new(src) - O.geological_data = src.geological_data + //update overlays displaying excavation level + if( !(excav_overlay && excavation_level > 0) || update_excav_overlay ) + var/excav_quadrant = round(excavation_level / 25) + 1 + excav_overlay = "overlay_excv[excav_quadrant]_[rand(1,3)]" + overlays += excav_overlay + + //extract pesky minerals while we're excavating + while(excavation_minerals.len && src.excavation_level > excavation_minerals[excavation_minerals.len]) + drop_mineral() + //have a 50% chance to extract bonus minerals this way + //if(prob(50)) + pop(excavation_minerals) + mineralAmt-- + + //drop some rocks + next_rock += P.excavation_amount * 10 + while(next_rock > 100) + next_rock -= 100 + var/obj/item/weapon/ore/O = new(src) + O.geological_data = src.geological_data else return attack_hand(user) @@ -399,6 +456,31 @@ commented out in r5061, I left it because of the shroom thingies usr << "\red You destroy some of the rocks!"*/ return +/turf/simulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F) + //with skill and luck, players can cleanly extract finds + //otherwise, they come out inside a chunk of rock + var/obj/item/weapon/X + if(prob_clean) + X = new/obj/item/weapon/archaeological_find(src, new_item_type = F.find_type) + else + X = new/obj/item/weapon/ore/strangerock(src, inside_item_type = F.find_type) + + //some find types delete the /obj/item/weapon/archaeological_find and replace it with something else, this handles when that happens + //yuck + if(!X) + X = last_find + if(!X) + X = "something" + + //many finds are ancient and thus very delicate - luckily there is a specialised energy suspension field which protects them when they're being extracted + if(prob(F.prob_delicate)) + var/obj/effect/suspension_field/S = locate() in src + if(!S || S.field_type != get_responsive_reagent(F.find_type)) + src.visible_message("\red[pick("[X] crumbles away into dust","[X] breaks apart","[X] collapses onto itself")].") + del(X) + + src.finds.Remove(F) + /* /turf/simulated/mineral/proc/setRandomMinerals() var/s = pickweight(list("uranium" = 5, "iron" = 50, "gold" = 5, "silver" = 5, "plasma" = 50, "diamond" = 1)) From b2e9c265c42316bfe1add4043e88cd0dde99cc73 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Sat, 9 Feb 2013 22:32:06 +1000 Subject: [PATCH 19/66] new icons, added some large artifacts, renamed/restructured a bunch of files Signed-off-by: Cael_Aislinn --- baystation12.dme | 28 +- .../game/objects/items/stacks/sheets/glass.dm | 2 +- code/modules/mining/mine_turfs.dm | 6 + code/modules/mining/ores_coins.dm | 1 - .../xenoarchaeology/archaeo_excavate.dm | 1 - .../xenoarchaeology/artifact_autocloner.dm | 87 ++ .../xenoarchaeology/artifact_gigadrill.dm | 35 + .../xenoarchaeology/artifact_hoverpod.dm | 52 + .../xenoarchaeology/artifact_replicator.dm | 120 ++ .../modules/research/xenoarchaeology/finds.dm | 279 +---- .../research/xenoarchaeology/finds_defines.dm | 258 ++++ .../{fossils.dm => finds_fossils.dm} | 0 .../research/xenoarchaeology/finds_misc.dm | 69 ++ ...{talking_item.dm => finds_talking_item.dm} | 0 .../research/xenoarchaeology/geosample.dm | 57 +- .../{artifact_misc.dm => misc.dm} | 121 +- .../research/xenoarchaeology/spacesuit.dm | 13 + .../xenoarchaeology/suspension_generator.dm | 8 +- .../{misc_tools.dm => tools.dm} | 0 .../{artifact.dm => unknown.dm} | 0 ...tifact_analysis.dm => unknown_analysis.dm} | 636 +++++----- .../{artifact_db.dm => unknown_db.dm} | 114 +- .../{artifact_effect.dm => unknown_effect.dm} | 1084 ++++++++--------- ...fact_harvester.dm => unknown_harvester.dm} | 300 ++--- ...fact_synthetic.dm => unknown_synthetic.dm} | 288 ++--- icons/obj/cryogenics.dmi | Bin 11432 -> 14976 bytes icons/obj/mining.dmi | Bin 42973 -> 43727 bytes icons/obj/vehicles.dmi | Bin 11038 -> 9127 bytes icons/obj/xenoarchaeology.dmi | Bin 41852 -> 48429 bytes 29 files changed, 1993 insertions(+), 1566 deletions(-) delete mode 100644 code/modules/research/xenoarchaeology/archaeo_excavate.dm create mode 100644 code/modules/research/xenoarchaeology/artifact_autocloner.dm create mode 100644 code/modules/research/xenoarchaeology/artifact_gigadrill.dm create mode 100644 code/modules/research/xenoarchaeology/artifact_hoverpod.dm create mode 100644 code/modules/research/xenoarchaeology/artifact_replicator.dm create mode 100644 code/modules/research/xenoarchaeology/finds_defines.dm rename code/modules/research/xenoarchaeology/{fossils.dm => finds_fossils.dm} (100%) create mode 100644 code/modules/research/xenoarchaeology/finds_misc.dm rename code/modules/research/xenoarchaeology/{talking_item.dm => finds_talking_item.dm} (100%) rename code/modules/research/xenoarchaeology/{artifact_misc.dm => misc.dm} (82%) create mode 100644 code/modules/research/xenoarchaeology/spacesuit.dm rename code/modules/research/xenoarchaeology/{misc_tools.dm => tools.dm} (100%) rename code/modules/research/xenoarchaeology/{artifact.dm => unknown.dm} (100%) rename code/modules/research/xenoarchaeology/{artifact_analysis.dm => unknown_analysis.dm} (97%) rename code/modules/research/xenoarchaeology/{artifact_db.dm => unknown_db.dm} (97%) rename code/modules/research/xenoarchaeology/{artifact_effect.dm => unknown_effect.dm} (97%) rename code/modules/research/xenoarchaeology/{artifact_harvester.dm => unknown_harvester.dm} (97%) rename code/modules/research/xenoarchaeology/{artifact_synthetic.dm => unknown_synthetic.dm} (96%) diff --git a/baystation12.dme b/baystation12.dme index ecc43c2a84d..a60303f0d05 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1126,24 +1126,30 @@ #include "code\modules\research\xenoarchaeology\analysis_ion_mobility.dm" #include "code\modules\research\xenoarchaeology\analysis_isotope_ratio.dm" #include "code\modules\research\xenoarchaeology\analysis_scanner.dm" -#include "code\modules\research\xenoarchaeology\archaeo_excavate.dm" -#include "code\modules\research\xenoarchaeology\artifact.dm" -#include "code\modules\research\xenoarchaeology\artifact_analysis.dm" -#include "code\modules\research\xenoarchaeology\artifact_db.dm" -#include "code\modules\research\xenoarchaeology\artifact_effect.dm" -#include "code\modules\research\xenoarchaeology\artifact_harvester.dm" -#include "code\modules\research\xenoarchaeology\artifact_misc.dm" -#include "code\modules\research\xenoarchaeology\artifact_synthetic.dm" +#include "code\modules\research\xenoarchaeology\artifact_autocloner.dm" +#include "code\modules\research\xenoarchaeology\artifact_gigadrill.dm" +#include "code\modules\research\xenoarchaeology\artifact_hoverpod.dm" +#include "code\modules\research\xenoarchaeology\artifact_replicator.dm" #include "code\modules\research\xenoarchaeology\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\chemistry.dm" #include "code\modules\research\xenoarchaeology\core_sampler.dm" #include "code\modules\research\xenoarchaeology\finds.dm" -#include "code\modules\research\xenoarchaeology\fossils.dm" +#include "code\modules\research\xenoarchaeology\finds_defines.dm" +#include "code\modules\research\xenoarchaeology\finds_fossils.dm" +#include "code\modules\research\xenoarchaeology\finds_misc.dm" +#include "code\modules\research\xenoarchaeology\finds_talking_item.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" -#include "code\modules\research\xenoarchaeology\misc_tools.dm" +#include "code\modules\research\xenoarchaeology\misc.dm" #include "code\modules\research\xenoarchaeology\readme.dm" +#include "code\modules\research\xenoarchaeology\spacesuit.dm" #include "code\modules\research\xenoarchaeology\suspension_generator.dm" -#include "code\modules\research\xenoarchaeology\talking_item.dm" +#include "code\modules\research\xenoarchaeology\tools.dm" +#include "code\modules\research\xenoarchaeology\unknown.dm" +#include "code\modules\research\xenoarchaeology\unknown_analysis.dm" +#include "code\modules\research\xenoarchaeology\unknown_db.dm" +#include "code\modules\research\xenoarchaeology\unknown_effect.dm" +#include "code\modules\research\xenoarchaeology\unknown_harvester.dm" +#include "code\modules\research\xenoarchaeology\unknown_synthetic.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\IDE.dm" #include "code\modules\scripting\Options.dm" diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 835666b7fe4..0169f5d894c 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -287,7 +287,7 @@ var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot")) if(affecting.status & ORGAN_ROBOT) return - + H.Weaken(3) if(affecting.take_damage(5, 0)) H.UpdateDamageIcon() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index a7944ca8968..27222b680e4 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -28,6 +28,7 @@ var/archaeo_overlay = "" var/excav_overlay = "" var/obj/item/weapon/last_find + var/datum/find/artifact_find /turf/simulated/mineral/Del() return @@ -282,6 +283,7 @@ commented out in r5061, I left it because of the shroom thingies return if (istype(W, /obj/item/device/core_sampler)) + src.geological_data.UpdateNearbyArtifactInfo(src) var/obj/item/device/core_sampler/C = W C.sample_item(src, user) return @@ -395,6 +397,7 @@ commented out in r5061, I left it because of the shroom thingies while(next_rock > 100) next_rock -= 100 var/obj/item/weapon/ore/O = new(src) + src.geological_data.UpdateNearbyArtifactInfo(src) O.geological_data = src.geological_data else @@ -425,6 +428,7 @@ commented out in r5061, I left it because of the shroom thingies if (src.mineralName == "Clown") O = new /obj/item/weapon/ore/clown(src) if(O) + src.geological_data.UpdateNearbyArtifactInfo(src) O.geological_data = src.geological_data return O @@ -464,6 +468,8 @@ commented out in r5061, I left it because of the shroom thingies X = new/obj/item/weapon/archaeological_find(src, new_item_type = F.find_type) else X = new/obj/item/weapon/ore/strangerock(src, inside_item_type = F.find_type) + src.geological_data.UpdateNearbyArtifactInfo(src) + X:geological_data = src.geological_data //some find types delete the /obj/item/weapon/archaeological_find and replace it with something else, this handles when that happens //yuck diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 68457fa7fca..8232cfa3d0e 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -6,7 +6,6 @@ icon_state = "ore2" var/datum/geosample/geological_data - /obj/item/weapon/ore/uranium name = "Uranium ore" icon_state = "Uranium ore" diff --git a/code/modules/research/xenoarchaeology/archaeo_excavate.dm b/code/modules/research/xenoarchaeology/archaeo_excavate.dm deleted file mode 100644 index 51955b740d4..00000000000 --- a/code/modules/research/xenoarchaeology/archaeo_excavate.dm +++ /dev/null @@ -1 +0,0 @@ -//todo: tape, methods for excavation? \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/artifact_autocloner.dm b/code/modules/research/xenoarchaeology/artifact_autocloner.dm new file mode 100644 index 00000000000..e602e4363f6 --- /dev/null +++ b/code/modules/research/xenoarchaeology/artifact_autocloner.dm @@ -0,0 +1,87 @@ + +/obj/machinery/auto_cloner + name = "mysterious pod" + desc = "It's full of a viscous liquid, but appears dark and silent." + icon = 'icons/obj/cryogenics.dmi' + icon_state = "cellold0" + var/spawn_type + var/current_ticks_spawning = 0 + var/ticks_required_to_spawn + density = 1 + var/previous_power_state = 0 + + use_power = 1 + active_power_usage = 2000 + idle_power_usage = 1000 + +/obj/machinery/auto_cloner/New() + ..() + + ticks_required_to_spawn = rand(240,1440) + + //33% chance to spawn nasties + if(prob(33)) + spawn_type = pick(\ + /mob/living/simple_animal/hostile/giant_spider/nurse,\ + /mob/living/simple_animal/hostile/alien,\ + /mob/living/simple_animal/hostile/bear,\ + /mob/living/simple_animal/hostile/creature,\ + /mob/living/simple_animal/hostile/panther,\ + /mob/living/simple_animal/hostile/snake\ + ) + else + spawn_type = pick(\ + /mob/living/simple_animal/cat,\ + /mob/living/simple_animal/corgi,\ + /mob/living/simple_animal/corgi/puppy,\ + /mob/living/simple_animal/chicken,\ + /mob/living/simple_animal/cow,\ + /mob/living/simple_animal/parrot,\ + /mob/living/simple_animal/slime,\ + /mob/living/simple_animal/crab,\ + /mob/living/simple_animal/mouse,\ + /mob/living/simple_animal/hostile/retaliate/goat,\ + /mob/living/carbon/monkey\ + ) + +//todo: how the hell is the asteroid permanently powered? +/obj/machinery/auto_cloner/process() + if(powered(power_channel)) + if(!previous_power_state) + previous_power_state = 1 + icon_state = "cellold1" + src.visible_message("\blue \icon[src] [src] suddenly comes to life!") + + //slowly grow a mob + current_ticks_spawning++ + if(prob(5)) + src.visible_message("\blue \icon[src] [src] [pick("gloops","glugs","whirrs","whooshes","hisses","purrs","hums","gushes")].") + + //if we've finished growing... + if(current_ticks_spawning >= ticks_required_to_spawn) + current_ticks_spawning = 0 + use_power = 1 + src.visible_message("\blue \icon[src] [src] pings!") + icon_state = "cellold1" + desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." + if(spawn_type) + new spawn_type(src.loc) + + //if we're getting close to finished, kick into overdrive power usage + if(current_ticks_spawning / ticks_required_to_spawn > 0.75) + use_power = 2 + icon_state = "cellold2" + desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow. A dark shape appears to be forming inside..." + else + use_power = 1 + icon_state = "cellold1" + desc = "It's full of a bubbling viscous liquid, and is lit by a mysterious glow." + else + if(previous_power_state) + previous_power_state = 0 + icon_state = "cellold0" + src.visible_message("\blue \icon[src] [src] suddenly shuts down.") + + //cloned mob slowly breaks down + if(current_ticks_spawning > 0) + current_ticks_spawning-- diff --git a/code/modules/research/xenoarchaeology/artifact_gigadrill.dm b/code/modules/research/xenoarchaeology/artifact_gigadrill.dm new file mode 100644 index 00000000000..9d52c9c2dc0 --- /dev/null +++ b/code/modules/research/xenoarchaeology/artifact_gigadrill.dm @@ -0,0 +1,35 @@ + +/obj/machinery/giga_drill + name = "alien drill" + desc = "A giant, alien drill mounted on long treads." + icon = 'icons/obj/mining.dmi' + icon_state = "gigadrill" + var/active = 0 + var/drill_time = 10 + var/turf/drilling_turf + density = 1 + layer = 3.1 //to go over ores + +/obj/machinery/giga_drill/attack_hand(mob/user as mob) + if(active) + active = 0 + icon_state = "gigadrill" + user << "\blue You press a button and [src] slowly spins down." + else + active = 1 + icon_state = "gigadrill_mov" + user << "\blue You press a button and [src] shudders to life." + +/obj/machinery/giga_drill/Bump(atom/A) + if(active && !drilling_turf) + if(istype(A,/turf/simulated/mineral)) + var/turf/simulated/mineral/M = A + drilling_turf = get_turf(src) + src.visible_message("\red [src] begins to drill into [M]!") + anchored = 1 + spawn(drill_time) + if(get_turf(src) == drilling_turf && active) + M.gets_drilled() + src.loc = M + drilling_turf = null + anchored = 0 diff --git a/code/modules/research/xenoarchaeology/artifact_hoverpod.dm b/code/modules/research/xenoarchaeology/artifact_hoverpod.dm new file mode 100644 index 00000000000..04b68a3dbd3 --- /dev/null +++ b/code/modules/research/xenoarchaeology/artifact_hoverpod.dm @@ -0,0 +1,52 @@ + +/obj/mecha/working/hoverpod + name = "hover pod" + icon = 'icons/obj/vehicles.dmi' + icon_state = "engineering_pod" + desc = "Stubby and round, it has a human sized access hatch on the top." + +//duplicate of parent proc, but without space drifting +/obj/mecha/working/hoverpod/dyndomove(direction) + if(!can_move) + return 0 + if(src.pr_inertial_movement.active()) + return 0 + if(!has_charge(step_energy_drain)) + return 0 + var/move_result = 0 + if(hasInternalDamage(MECHA_INT_CONTROL_LOST)) + move_result = mechsteprand() + else if(src.dir!=direction) + move_result = mechturn(direction) + else + move_result = mechstep(direction) + if(move_result) + can_move = 0 + use_power(step_energy_drain) + /*if(istype(src.loc, /turf/space)) + if(!src.check_for_support()) + src.pr_inertial_movement.start(list(src,direction)) + src.log_message("Movement control lost. Inertial movement started.")*/ + if(do_after(step_in)) + can_move = 1 + return 1 + return 0 + +//these three procs overriden to play different sounds +/obj/mecha/mechturn(direction) + dir = direction + //playsound(src,'sound/machines/hiss.ogg',40,1) + return 1 + +/obj/mecha/mechstep(direction) + var/result = step(src,direction) + if(result) + playsound(src,'sound/machines/hiss.ogg',40,1) + return result + + +/obj/mecha/mechsteprand() + var/result = step_rand(src) + if(result) + playsound(src,'sound/machines/hiss.ogg',40,1) + return result diff --git a/code/modules/research/xenoarchaeology/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact_replicator.dm new file mode 100644 index 00000000000..a52a12ebaf1 --- /dev/null +++ b/code/modules/research/xenoarchaeology/artifact_replicator.dm @@ -0,0 +1,120 @@ + +/obj/machinery/replicator + name = "alien machine" + desc = "It's some kind of pod with strange wires and gadgets all over it." + icon = 'xenoarchaeology.dmi' + icon_state = "borgcharger0(old)" + density = 1 + + idle_power_usage = 100 + active_power_usage = 1000 + use_power = 1 + + var/spawn_progress = 0 + var/max_spawn_ticks = 5 + var/list/construction = list() + var/list/spawning_types = list() + +/obj/machinery/replicator/New() + ..() + + var/list/viables = list(\ + /obj/item/roller,\ + /obj/structure/cult/pylon,\ + /obj/structure/closet/crate,\ + /obj/structure/closet/acloset,\ + /mob/living/simple_animal/hostile/mimic,\ + /mob/living/simple_animal/hostile/viscerator,\ + /mob/living/simple_animal/hostile/hivebot,\ + /obj/item/device/analyzer,\ + /obj/item/device/camera,\ + /obj/item/device/flash,\ + /obj/item/device/flashlight,\ + /obj/item/device/healthanalyzer,\ + /obj/item/device/multitool,\ + /obj/item/device/paicard,\ + /obj/item/device/radio,\ + /obj/item/device/radio/headset,\ + /obj/item/device/radio/beacon,\ + /obj/item/weapon/autopsy_scanner,\ + /obj/item/weapon/bikehorn,\ + /obj/item/weapon/bonesetter,\ + /obj/item/weapon/butch,\ + /obj/item/weapon/caution,\ + /obj/item/weapon/caution/cone,\ + /obj/item/weapon/crowbar,\ + /obj/item/weapon/clipboard,\ + /obj/item/weapon/cell,\ + /obj/item/weapon/circular_saw,\ + /obj/item/weapon/hatchet,\ + /obj/item/weapon/handcuffs,\ + /obj/item/weapon/hemostat,\ + /obj/item/weapon/kitchenknife,\ + /obj/item/weapon/lighter,\ + /obj/item/weapon/lighter,\ + /obj/item/weapon/light/bulb,\ + /obj/item/weapon/light/tube,\ + /obj/item/weapon/pickaxe,\ + /obj/item/weapon/shovel,\ + /obj/item/weapon/table_parts,\ + /obj/item/weapon/weldingtool,\ + /obj/item/weapon/wirecutters,\ + /obj/item/weapon/wrench,\ + /obj/item/weapon/screwdriver,\ + /obj/item/weapon/grenade/chem_grenade/cleaner,\ + /obj/item/weapon/grenade/chem_grenade/metalfoam\ + ) + + var/quantity = rand(5,15) + for(var/i=0, i max_spawn_ticks) + src.visible_message("\blue \icon[src] [src] pings!") + var/spawn_type = spawning_types[1] + new spawn_type(src.loc) + + spawning_types.Remove(spawning_types[1]) + spawn_progress = 0 + max_spawn_ticks = rand(5,30) + + if(!spawning_types.len) + use_power = 1 + icon_state = "borgcharger0(old)" + + else if(prob(5)) + src.visible_message("\blue \icon[src] [src] [pick("clicks","whizzes","whirrs","whooshes","clanks","clongs","clonks","bangs")].") + +/obj/machinery/replicator/attack_hand(mob/user as mob) + interact(user) + +/obj/machinery/replicator/interact(mob/user) + var/dat = "The control panel displays an incomprehensible selection of controls, many with unusual markings or text around them.
" + dat += "
" + for(var/index=1, index<=construction.len, index++) + dat += "\[[construction[index]]\]
" + + user << browse(dat, "window=alien_replicator") + +/obj/machinery/replicator/Topic(href, href_list) + + if(href_list["activate"]) + var/index = text2num(href_list["activate"]) + if(index > 0 && index <= construction.len) + if(spawning_types.len) + src.visible_message("\blue \icon[src] a [pick("light","dial","display","meter","pad")] on [src]'s front [pick("blinks","flashes")] [pick("red","yellow","blue","orange","purple","green","white")].") + else + src.visible_message("\blue \icon[src] [src]'s front compartment slides shut.") + + spawning_types.Add(construction[construction[index]]) + spawn_progress = 0 + use_power = 2 + icon_state = "borgcharger1(old)" diff --git a/code/modules/research/xenoarchaeology/finds.dm b/code/modules/research/xenoarchaeology/finds.dm index fbdb6f8ceef..10c2af2a156 100644 --- a/code/modules/research/xenoarchaeology/finds.dm +++ b/code/modules/research/xenoarchaeology/finds.dm @@ -1,224 +1,9 @@ //original code and idea from Alfie275 (luna era) and ISaidNo (goonservers) - with thanks -#define ARCHAEO_BOWL 1 -#define ARCHAEO_URN 2 -#define ARCHAEO_CUTLERY 3 -#define ARCHAEO_STATUETTE 4 -#define ARCHAEO_INSTRUMENT 5 -#define ARCHAEO_KNIFE 6 -#define ARCHAEO_COIN 7 -#define ARCHAEO_HANDCUFFS 8 -#define ARCHAEO_BEARTRAP 9 -#define ARCHAEO_LIGHTER 10 -#define ARCHAEO_BOX 11 -#define ARCHAEO_GASTANK 12 -#define ARCHAEO_TOOL 13 -#define ARCHAEO_METAL 14 -#define ARCHAEO_PEN 15 -#define ARCHAEO_CRYSTAL 16 -#define ARCHAEO_CULTBLADE 17 -#define ARCHAEO_TELEBEACON 18 -#define ARCHAEO_CLAYMORE 19 -#define ARCHAEO_CULTROBES 20 -#define ARCHAEO_SOULSTONE 21 -#define ARCHAEO_SHARD 22 -#define ARCHAEO_RODS 23 -#define ARCHAEO_STOCKPARTS 24 -#define ARCHAEO_KATANA 25 -#define ARCHAEO_LASER 26 -#define ARCHAEO_GUN 27 -#define ARCHAEO_UNKNOWN 28 -#define ARCHAEO_FOSSIL 29 -#define ARCHAEO_SHELL 30 -#define ARCHAEO_PLANT 31 -#define ARCHAEO_REMAINS_HUMANOID 32 -#define ARCHAEO_REMAINS_ROBOT 33 -#define ARCHAEO_REMAINS_XENO 34 -//eggs -//droppings -//footprints -//alien clothing - -//DNA sampling from fossils, or a new archaeo type specifically for it? - -//descending order of likeliness to spawn -#define DIGSITE_GARDEN 1 -#define DIGSITE_ANIMAL 2 -#define DIGSITE_HOUSE 3 -#define DIGSITE_TECHNICAL 4 -#define DIGSITE_TEMPLE 5 -#define DIGSITE_WAR 6 - -/proc/get_responsive_reagent(var/find_type) - switch(find_type) - if(ARCHAEO_BOWL) - return "aluminium" - if(ARCHAEO_URN) - return "aluminium" - if(ARCHAEO_CUTLERY) - return "aluminium" - if(ARCHAEO_STATUETTE) - return "aluminium" - if(ARCHAEO_INSTRUMENT) - return "aluminium" - if(ARCHAEO_COIN) - return "silicon" - if(ARCHAEO_HANDCUFFS) - return "aluminium" - if(ARCHAEO_BEARTRAP) - return "aluminium" - if(ARCHAEO_LIGHTER) - return "aluminium" - if(ARCHAEO_BOX) - return "aluminium" - if(ARCHAEO_GASTANK) - return "aluminium" - if(ARCHAEO_TOOL) - return "silicon" - if(ARCHAEO_METAL) - return "silicon" - if(ARCHAEO_PEN) - return "aluminium" - if(ARCHAEO_CRYSTAL) - return "helium" - if(ARCHAEO_CULTBLADE) - return "neon" - if(ARCHAEO_TELEBEACON) - return "neon" - if(ARCHAEO_CLAYMORE) - return "silicon" - if(ARCHAEO_CULTROBES) - return "neon" - if(ARCHAEO_SOULSTONE) - return "helium" - if(ARCHAEO_SHARD) - return "helium" - if(ARCHAEO_RODS) - return "silicon" - if(ARCHAEO_STOCKPARTS) - return "neon" - if(ARCHAEO_KATANA) - return "silicon" - if(ARCHAEO_LASER) - return "silicon" - if(ARCHAEO_GUN) - return "silicon" - if(ARCHAEO_UNKNOWN) - return "beryllium" - if(ARCHAEO_FOSSIL) - return "carbon" - if(ARCHAEO_PLANT) - return "carbon" - if(ARCHAEO_REMAINS_HUMANOID) - return "carbon" - if(ARCHAEO_REMAINS_ROBOT) - return "carbon" - if(ARCHAEO_REMAINS_XENO) - return "carbon" - return "chlorine" - -//see /turf/simulated/mineral/New() in code/modules/mining/mine_turfs.dm -/proc/get_random_digsite_type() - return pick(100;DIGSITE_GARDEN,95;DIGSITE_ANIMAL,90;DIGSITE_HOUSE,85;DIGSITE_TECHNICAL,80;DIGSITE_TEMPLE,75;DIGSITE_WAR) - -/proc/get_random_find_type(var/digsite) - - var/find_type = 0 - switch(digsite) - if(DIGSITE_GARDEN) - find_type = pick(\ - 100;ARCHAEO_PLANT,\ - 25;ARCHAEO_SHELL,\ - 25;ARCHAEO_FOSSIL,\ - 10;ARCHAEO_REMAINS_XENO,\ - 5;ARCHAEO_BEARTRAP\ - ) - if(DIGSITE_ANIMAL) - find_type = pick(\ - 100;ARCHAEO_FOSSIL,\ - 50;ARCHAEO_SHELL,\ - 50;ARCHAEO_PLANT,\ - 50;ARCHAEO_REMAINS_XENO,\ - 25;ARCHAEO_BEARTRAP\ - ) - if(DIGSITE_HOUSE) - find_type = pick(\ - 100;ARCHAEO_BOWL,\ - 100;ARCHAEO_URN,\ - 100;ARCHAEO_CUTLERY,\ - 100;ARCHAEO_STATUETTE,\ - 100;ARCHAEO_INSTRUMENT,\ - 100;ARCHAEO_PEN,\ - 100;ARCHAEO_LIGHTER,\ - 100;ARCHAEO_BOX,\ - 75;ARCHAEO_COIN,\ - 75;ARCHAEO_UNKNOWN,\ - 75;ARCHAEO_REMAINS_HUMANOID,\ - 75;ARCHAEO_REMAINS_ROBOT,\ - 75;ARCHAEO_REMAINS_XENO,\ - 50;ARCHAEO_SHARD,\ - 50;ARCHAEO_RODS,\ - 25;ARCHAEO_METAL\ - ) - if(DIGSITE_TECHNICAL) - find_type = pick(\ - 100;ARCHAEO_METAL,\ - 100;ARCHAEO_GASTANK,\ - 100;ARCHAEO_TELEBEACON,\ - 100;ARCHAEO_TOOL,\ - 100;ARCHAEO_STOCKPARTS,\ - 100;ARCHAEO_REMAINS_ROBOT,\ - 75;ARCHAEO_SHARD,\ - 75;ARCHAEO_RODS,\ - 75;ARCHAEO_UNKNOWN,\ - 50;ARCHAEO_HANDCUFFS,\ - 50;ARCHAEO_BEARTRAP,\ - 25;ARCHAEO_REMAINS_HUMANOID,\ - 25;ARCHAEO_REMAINS_XENO\ - ) - if(DIGSITE_TEMPLE) - find_type = pick(\ - 200;ARCHAEO_CULTROBES,\ - 100;ARCHAEO_URN,\ - 100;ARCHAEO_BOWL,\ - 100;ARCHAEO_KNIFE,\ - 100;ARCHAEO_CRYSTAL,\ - 75;ARCHAEO_CULTBLADE,\ - 75;ARCHAEO_REMAINS_HUMANOID,\ - 75;ARCHAEO_REMAINS_XENO,\ - 50;ARCHAEO_SOULSTONE,\ - 50;ARCHAEO_UNKNOWN,\ - 25;ARCHAEO_HANDCUFFS,\ - 25;ARCHAEO_BEARTRAP,\ - 10;ARCHAEO_KATANA,\ - 10;ARCHAEO_CLAYMORE,\ - 10;ARCHAEO_SHARD,\ - 10;ARCHAEO_RODS,\ - 10;ARCHAEO_METAL\ - ) - if(DIGSITE_WAR) - find_type = pick(\ - 100;ARCHAEO_GUN,\ - 100;ARCHAEO_KNIFE,\ - 75;ARCHAEO_LASER,\ - 75;ARCHAEO_KATANA,\ - 75;ARCHAEO_CLAYMORE,\ - 75;ARCHAEO_REMAINS_HUMANOID,\ - 75;ARCHAEO_REMAINS_XENO,\ - 50;ARCHAEO_UNKNOWN,\ - 50;ARCHAEO_CULTROBES,\ - 50;ARCHAEO_CULTBLADE,\ - 50;ARCHAEO_REMAINS_ROBOT,\ - 25;ARCHAEO_HANDCUFFS,\ - 25;ARCHAEO_BEARTRAP,\ - 25;ARCHAEO_TOOL\ - ) - return find_type - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Xenoarchaeological finds -datum/find +/datum/find var/find_type = 0 //random according to the digsite type var/excavation_required = 0 //random 5-95% var/view_range = 20 //how close excavation has to come to show an overlay on the turf @@ -228,30 +13,12 @@ datum/find var/dissonance_spread = 1 //proportion of the tile that is affected by this find //used in conjunction with analysis machines to determine correct suspension field type -datum/find/New(var/digsite, var/exc_req) +/datum/find/New(var/digsite, var/exc_req) excavation_required = exc_req find_type = get_random_find_type(digsite) clearance_range = rand(2,6) dissonance_spread = rand(1500,2500) / 100 -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Rock sliver - -/obj/item/weapon/rocksliver - name = "rock sliver" - desc = "It looks extremely delicate." - icon = 'xenoarchaeology.dmi' - icon_state = "sliver1" //0-4 - w_class = 1 - //item_state = "electronic" - var/source_rock = "/turf/simulated/mineral/" - var/datum/geosample/geological_data - -/obj/item/weapon/rocksliver/New() - icon_state = "sliver[rand(1,3)]" - pixel_x = rand(0,16)-8 - pixel_y = rand(0,8)-8 - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Strange rocks @@ -266,6 +33,7 @@ datum/find/New(var/digsite, var/exc_req) /obj/item/weapon/ore/strangerock/New(loc, var/inside_item_type = 0) ..(loc) + method = rand(0,2) if(inside_item_type) inside = new/obj/item/weapon/archaeological_find(src, new_item_type = inside_item_type) @@ -306,6 +74,9 @@ datum/find/New(var/digsite, var/exc_req) src.visible_message("[src] crumbles away, leaving some dust and gravel behind.") del(src) +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Archaeological finds + /obj/item/weapon/archaeological_find name = "object" icon = 'xenoarchaeology.dmi' @@ -468,12 +239,15 @@ datum/find/New(var/digsite, var/exc_req) if(prob(30)) apply_image_decorations = 1 if(16) - if(prob(50)) + if(prob(33)) item_type = "smooth green crystal" icon_state = "Green lump" - else + else if(prob(50)) item_type = "irregular purple crystal" icon_state = "Phazon" + else + item_type = "smooth red crystal" + icon_state = "ore" additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") apply_material_decorations = 0 @@ -507,7 +281,9 @@ datum/find/New(var/digsite, var/exc_req) new_item = new /obj/item/device/soulstone(src.loc) apply_material_decorations = 0 if(22) - new_item = new /obj/item/weapon/shard(src.loc) + if(prob(50)) + new_item = new /obj/item/weapon/shard(src.loc) + new_item = new /obj/item/weapon/shard/plasma(src.loc) apply_image_decorations = 0 apply_material_decorations = 0 if(23) @@ -723,30 +499,3 @@ datum/find/New(var/digsite, var/exc_req) if(prob(25)) speaking_to_players = 1 processing_objects.Add(src) - -//legacy crystal -/obj/item/weapon/crystal - name = "Crystal" - icon = 'mining.dmi' - icon_state = "crystal" - -//large finds - /* - /obj/machinery/syndicate_beacon - /obj/machinery/wish_granter - if(18) - item_type = "jagged green crystal" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") - icon_state = "crystal" - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - if(19) - item_type = "jagged pink crystal" - additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") - icon_state = "crystal2" - apply_material_decorations = 0 - if(prob(10)) - apply_image_decorations = 1 - */ - //machinery type artifacts? \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/finds_defines.dm b/code/modules/research/xenoarchaeology/finds_defines.dm new file mode 100644 index 00000000000..b2aebc52fa2 --- /dev/null +++ b/code/modules/research/xenoarchaeology/finds_defines.dm @@ -0,0 +1,258 @@ + +#define ARCHAEO_BOWL 1 +#define ARCHAEO_URN 2 +#define ARCHAEO_CUTLERY 3 +#define ARCHAEO_STATUETTE 4 +#define ARCHAEO_INSTRUMENT 5 +#define ARCHAEO_KNIFE 6 +#define ARCHAEO_COIN 7 +#define ARCHAEO_HANDCUFFS 8 +#define ARCHAEO_BEARTRAP 9 +#define ARCHAEO_LIGHTER 10 +#define ARCHAEO_BOX 11 +#define ARCHAEO_GASTANK 12 +#define ARCHAEO_TOOL 13 +#define ARCHAEO_METAL 14 +#define ARCHAEO_PEN 15 +#define ARCHAEO_CRYSTAL 16 +#define ARCHAEO_CULTBLADE 17 +#define ARCHAEO_TELEBEACON 18 +#define ARCHAEO_CLAYMORE 19 +#define ARCHAEO_CULTROBES 20 +#define ARCHAEO_SOULSTONE 21 +#define ARCHAEO_SHARD 22 +#define ARCHAEO_RODS 23 +#define ARCHAEO_STOCKPARTS 24 +#define ARCHAEO_KATANA 25 +#define ARCHAEO_LASER 26 +#define ARCHAEO_GUN 27 +#define ARCHAEO_UNKNOWN 28 +#define ARCHAEO_FOSSIL 29 +#define ARCHAEO_SHELL 30 +#define ARCHAEO_PLANT 31 +//eggs +//droppings +//footprints +//alien clothing + +//DNA sampling from fossils, or a new archaeo type specifically for it? + +#define ARTIFACT_REMAINS_HUMANOID 1 +#define ARTIFACT_REMAINS_ROBOT 2 +#define ARTIFACT_REMAINS_XENO 3 +#define ARTIFACT_MACHINERY 4 +#define ARTIFACT_OCCULT 5 +#define ARTIFACT_SYNDBEACON 6 + +//? +#define ARTIFACT_HEAL 4 +#define ARTIFACT_BIODAM 5 +#define ARTIFACT_POWERCHARGE 6 +#define ARTIFACT_POWERDRAIN 7 +#define ARTIFACT_EMP 8 +#define ARTIFACT_PLANTGROW 9 +#define ARTIFACT_WEAKEN 10 +#define ARTIFACT_SLEEPY 11 +#define ARTIFACT_TELEPORT 12 +#define ARTIFACT_ROBOHURT 13 +#define ARTIFACT_ROBOHEAL 14 +#define ARTIFACT_DNASWITCH 15 +#define ARTIFACT_ +#define ARTIFACT_ + +//descending order of likeliness to spawn +#define DIGSITE_GARDEN 1 +#define DIGSITE_ANIMAL 2 +#define DIGSITE_HOUSE 3 +#define DIGSITE_TECHNICAL 4 +#define DIGSITE_TEMPLE 5 +#define DIGSITE_WAR 6 + +/proc/get_responsive_reagent(var/find_type) + switch(find_type) + if(ARCHAEO_BOWL) + return "aluminium" + if(ARCHAEO_URN) + return "aluminium" + if(ARCHAEO_CUTLERY) + return "aluminium" + if(ARCHAEO_STATUETTE) + return "aluminium" + if(ARCHAEO_INSTRUMENT) + return "aluminium" + if(ARCHAEO_COIN) + return "silicon" + if(ARCHAEO_HANDCUFFS) + return "aluminium" + if(ARCHAEO_BEARTRAP) + return "aluminium" + if(ARCHAEO_LIGHTER) + return "aluminium" + if(ARCHAEO_BOX) + return "aluminium" + if(ARCHAEO_GASTANK) + return "aluminium" + if(ARCHAEO_TOOL) + return "silicon" + if(ARCHAEO_METAL) + return "silicon" + if(ARCHAEO_PEN) + return "aluminium" + if(ARCHAEO_CRYSTAL) + return "helium" + if(ARCHAEO_CULTBLADE) + return "neon" + if(ARCHAEO_TELEBEACON) + return "neon" + if(ARCHAEO_CLAYMORE) + return "silicon" + if(ARCHAEO_CULTROBES) + return "neon" + if(ARCHAEO_SOULSTONE) + return "helium" + if(ARCHAEO_SHARD) + return "helium" + if(ARCHAEO_RODS) + return "silicon" + if(ARCHAEO_STOCKPARTS) + return "neon" + if(ARCHAEO_KATANA) + return "silicon" + if(ARCHAEO_LASER) + return "silicon" + if(ARCHAEO_GUN) + return "silicon" + if(ARCHAEO_UNKNOWN) + return "beryllium" + if(ARCHAEO_FOSSIL) + return "carbon" + if(ARCHAEO_PLANT) + return "carbon" + return "chlorine" + +//see /turf/simulated/mineral/New() in code/modules/mining/mine_turfs.dm +/proc/get_random_digsite_type() + return pick(100;DIGSITE_GARDEN,95;DIGSITE_ANIMAL,90;DIGSITE_HOUSE,85;DIGSITE_TECHNICAL,80;DIGSITE_TEMPLE,75;DIGSITE_WAR) + +/proc/get_random_find_type(var/digsite) + + var/find_type = 0 + switch(digsite) + if(DIGSITE_GARDEN) + find_type = pick(\ + 100;ARCHAEO_PLANT,\ + 25;ARCHAEO_SHELL,\ + 25;ARCHAEO_FOSSIL,\ + 5;ARCHAEO_BEARTRAP\ + ) + if(DIGSITE_ANIMAL) + find_type = pick(\ + 100;ARCHAEO_FOSSIL,\ + 50;ARCHAEO_SHELL,\ + 50;ARCHAEO_PLANT,\ + 25;ARCHAEO_BEARTRAP\ + ) + if(DIGSITE_HOUSE) + find_type = pick(\ + 100;ARCHAEO_BOWL,\ + 100;ARCHAEO_URN,\ + 100;ARCHAEO_CUTLERY,\ + 100;ARCHAEO_STATUETTE,\ + 100;ARCHAEO_INSTRUMENT,\ + 100;ARCHAEO_PEN,\ + 100;ARCHAEO_LIGHTER,\ + 100;ARCHAEO_BOX,\ + 75;ARCHAEO_COIN,\ + 75;ARCHAEO_UNKNOWN,\ + 50;ARCHAEO_SHARD,\ + 50;ARCHAEO_RODS,\ + 25;ARCHAEO_METAL\ + ) + if(DIGSITE_TECHNICAL) + find_type = pick(\ + 100;ARCHAEO_METAL,\ + 100;ARCHAEO_GASTANK,\ + 100;ARCHAEO_TELEBEACON,\ + 100;ARCHAEO_TOOL,\ + 100;ARCHAEO_STOCKPARTS,\ + 75;ARCHAEO_SHARD,\ + 75;ARCHAEO_RODS,\ + 75;ARCHAEO_UNKNOWN,\ + 50;ARCHAEO_HANDCUFFS,\ + 50;ARCHAEO_BEARTRAP,\ + ) + if(DIGSITE_TEMPLE) + find_type = pick(\ + 200;ARCHAEO_CULTROBES,\ + 100;ARCHAEO_URN,\ + 100;ARCHAEO_BOWL,\ + 100;ARCHAEO_KNIFE,\ + 100;ARCHAEO_CRYSTAL,\ + 75;ARCHAEO_CULTBLADE,\ + 50;ARCHAEO_SOULSTONE,\ + 50;ARCHAEO_UNKNOWN,\ + 25;ARCHAEO_HANDCUFFS,\ + 25;ARCHAEO_BEARTRAP,\ + 10;ARCHAEO_KATANA,\ + 10;ARCHAEO_CLAYMORE,\ + 10;ARCHAEO_SHARD,\ + 10;ARCHAEO_RODS,\ + 10;ARCHAEO_METAL\ + ) + if(DIGSITE_WAR) + find_type = pick(\ + 100;ARCHAEO_GUN,\ + 100;ARCHAEO_KNIFE,\ + 75;ARCHAEO_LASER,\ + 75;ARCHAEO_KATANA,\ + 75;ARCHAEO_CLAYMORE,\ + 50;ARCHAEO_UNKNOWN,\ + 50;ARCHAEO_CULTROBES,\ + 50;ARCHAEO_CULTBLADE,\ + 25;ARCHAEO_HANDCUFFS,\ + 25;ARCHAEO_BEARTRAP,\ + 25;ARCHAEO_TOOL\ + ) + return find_type + +#undef ARCHAEO_BOWL +#undef ARCHAEO_URN +#undef ARCHAEO_CUTLERY +#undef ARCHAEO_STATUETTE +#undef ARCHAEO_INSTRUMENT +#undef ARCHAEO_KNIFE +#undef ARCHAEO_COIN +#undef ARCHAEO_HANDCUFFS +#undef ARCHAEO_BEARTRAP +#undef ARCHAEO_LIGHTER +#undef ARCHAEO_BOX +#undef ARCHAEO_GASTANK +#undef ARCHAEO_TOOL +#undef ARCHAEO_METAL +#undef ARCHAEO_PEN +#undef ARCHAEO_CRYSTAL +#undef ARCHAEO_CULTBLADE +#undef ARCHAEO_TELEBEACON +#undef ARCHAEO_CLAYMORE +#undef ARCHAEO_CULTROBES +#undef ARCHAEO_SOULSTONE +#undef ARCHAEO_SHARD +#undef ARCHAEO_RODS +#undef ARCHAEO_STOCKPARTS +#undef ARCHAEO_KATANA +#undef ARCHAEO_LASER +#undef ARCHAEO_GUN +#undef ARCHAEO_UNKNOWN +#undef ARCHAEO_FOSSIL +#undef ARCHAEO_SHELL +#undef ARCHAEO_PLANT +#undef ARCHAEO_REMAINS_HUMANOID +#undef ARCHAEO_REMAINS_ROBOT +#undef ARCHAEO_REMAINS_XENO + +#undef DIGSITE_GARDEN +#undef DIGSITE_ANIMAL +#undef DIGSITE_HOUSE +#undef DIGSITE_TECHNICAL +#undef DIGSITE_TEMPLE +#undef DIGSITE_WAR diff --git a/code/modules/research/xenoarchaeology/fossils.dm b/code/modules/research/xenoarchaeology/finds_fossils.dm similarity index 100% rename from code/modules/research/xenoarchaeology/fossils.dm rename to code/modules/research/xenoarchaeology/finds_fossils.dm diff --git a/code/modules/research/xenoarchaeology/finds_misc.dm b/code/modules/research/xenoarchaeology/finds_misc.dm new file mode 100644 index 00000000000..6b995deff42 --- /dev/null +++ b/code/modules/research/xenoarchaeology/finds_misc.dm @@ -0,0 +1,69 @@ + +/obj/item/weapon/shard/plasma + name = "plasma shard" + icon_state = "plasmalarge" + +/obj/item/weapon/shard/plasma/New() + + src.icon_state = pick("plasmalarge", "plasmamedium", "plasmasmall") + switch(src.icon_state) + if("plasmasmall") + src.pixel_x = rand(-12, 12) + src.pixel_y = rand(-12, 12) + if("plasmamedium") + src.pixel_x = rand(-8, 8) + src.pixel_y = rand(-8, 8) + if("plasmalarge") + src.pixel_x = rand(-5, 5) + src.pixel_y = rand(-5, 5) + else + return + +/obj/item/weapon/shard/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if ( istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.remove_fuel(0, user)) + var/obj/item/stack/sheet/mineral/plasma/NG = new (user.loc) + for (var/obj/item/stack/sheet/mineral/plasma/G in user.loc) + if(G==NG) + continue + if(G.amount>=G.max_amount) + continue + G.attackby(NG, user) + usr << "You add the newly-formed plasma to the stack. It now contains [NG.amount] sheets." + //SN src = null + del(src) + return + return ..() + +//legacy crystal +/obj/machinery/crystal + name = "Crystal" + icon = 'mining.dmi' + icon_state = "crystal" + +/obj/machinery/crystal/New() + if(prob(50)) + icon_state = "crystal2" + +//large finds + /* + /obj/machinery/syndicate_beacon + /obj/machinery/wish_granter + if(18) + item_type = "jagged green crystal" + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") + icon_state = "crystal" + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + if(19) + item_type = "jagged pink crystal" + additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.") + icon_state = "crystal2" + apply_material_decorations = 0 + if(prob(10)) + apply_image_decorations = 1 + */ + //machinery type artifacts? diff --git a/code/modules/research/xenoarchaeology/talking_item.dm b/code/modules/research/xenoarchaeology/finds_talking_item.dm similarity index 100% rename from code/modules/research/xenoarchaeology/talking_item.dm rename to code/modules/research/xenoarchaeology/finds_talking_item.dm diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index 72c454148d1..1ecc347f6da 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -1,4 +1,4 @@ - +/* #define FIND_PLANT 1 #define FIND_BIO 2 #define FIND_METEORIC 3 @@ -9,6 +9,25 @@ #define FIND_METAMORPHIC 8 #define FIND_SEDIMENTARY 9 #define FIND_NOTHING 10 +*/ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Rock sliver + +/obj/item/weapon/rocksliver + name = "rock sliver" + desc = "It looks extremely delicate." + icon = 'xenoarchaeology.dmi' + icon_state = "sliver1" //0-4 + w_class = 1 + //item_state = "electronic" + var/source_rock = "/turf/simulated/mineral/" + var/datum/geosample/geological_data + +/obj/item/weapon/rocksliver/New() + icon_state = "sliver[rand(1,3)]" + pixel_x = rand(0,16)-8 + pixel_y = rand(0,8)-8 var/list/responsive_carriers = list( \ "carbon", \ @@ -34,7 +53,12 @@ var/list/finds_as_strings = list( \ "Sedimentary/generic rock", \ "Anomalous material" ) -datum/geosample +var/list/artifact_spawning_turfs = list() + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Geosample datum + +/datum/geosample var/age = 0 //age can correspond to different archaeological finds var/age_thousand = 0 var/age_million = 0 @@ -48,12 +72,15 @@ datum/geosample //all potential finds are initialised to null, so nullcheck before you access them var/list/find_presence = list() -datum/geosample/New(var/turf/simulated/mineral/container) +/datum/geosample/New(var/turf/simulated/mineral/container) UpdateTurf(container) //this should only need to be called once -datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) +/datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) + if(!container || !istype(container)) + return + //source_mineral = container.mineralName age = rand(1,999) @@ -128,3 +155,25 @@ datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container) for(var/entry in find_presence) total_spread += find_presence[entry] +//have this separate from UpdateTurf() so that we dont have a billion turfs being updated (redundantly) every time an artifact spawns +/datum/geosample/proc/UpdateNearbyArtifactInfo(var/turf/simulated/mineral/container) + if(!container || !istype(container)) + return + + for(var/turf/simulated/mineral/holder in artifact_spawning_turfs) + var/dist = get_dist(container, holder) + if(dist < artifact_distance) + artifact_distance = dist + //artifact_id = A.display_id +/* +#undef FIND_PLANT +#undef FIND_BIO +#undef FIND_METEORIC +#undef FIND_ICE +#undef FIND_CRYSTALLINE +#undef FIND_METALLIC +#undef FIND_IGNEOUS +#undef FIND_METAMORPHIC +#undef FIND_SEDIMENTARY +#undef FIND_NOTHING +*/ \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/artifact_misc.dm b/code/modules/research/xenoarchaeology/misc.dm similarity index 82% rename from code/modules/research/xenoarchaeology/artifact_misc.dm rename to code/modules/research/xenoarchaeology/misc.dm index e30bba2f890..7d72b417c8e 100644 --- a/code/modules/research/xenoarchaeology/artifact_misc.dm +++ b/code/modules/research/xenoarchaeology/misc.dm @@ -1,67 +1,54 @@ - -/obj/item/clothing/suit/bio_suit/anomaly - name = "Anomaly Suit" - desc = "A sealed bio suit capable of resisting exotic alien energies and low pressure environments." - icon_state = "engspace_suit" - item_state = "engspace_suit" - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) - -/obj/item/clothing/head/bio_hood/anomaly - name = "Anomaly Hood" - desc = "A sealed bio hood capable of resisting exotic alien energies and low pressure environments." - icon_state = "engspace_helmet" - item_state = "engspace_helmet" - -/obj/structure/noticeboard/anomaly/New() - notices = 5 - icon_state = "nboard05" - - //add some memos - var/obj/item/weapon/paper/P = new() - P.name = "Memo RE: proper analysis procedure" - P.info = "Rose,
activate then analyse the anomalies, your results will come so much quicker. Remember to employ basic quasi-elemental forces such as heat, energy, force and various chemical mixes - who knows why those ancient aliens made such obscure activation indices.

And don't forget your suit this time, I can't afford to have any researchers out of commision for as long as that again!.
Ward" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Memo RE: materials gathering" - P.info = "Corasang,
the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!
- R.W" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Memo RE: ethical quandaries" - P.info = "Darion-

I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of those things our benefactors left behind. Ward--" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "READ ME! Before you people destroy any more samples" - P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, ceoncentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely! W, the one who signs your paychecks" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Reminder regarding the anomalous material suits" - P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around the station in them unless you're field testing something, R" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - -//Anomaly - -/area/anomaly - icon_state = "anomaly" - -/area/anomaly/hallway - name = "Anomaly Hallway" - -/area/anomaly/lab - name = "Anomaly Lab" - -/area/anomaly/outpost - name = "Research Outpost" + +/obj/structure/noticeboard/anomaly/New() + notices = 5 + icon_state = "nboard05" + + //add some memos + var/obj/item/weapon/paper/P = new() + P.name = "Memo RE: proper analysis procedure" + P.info = "Rose,
activate then analyse the anomalies, your results will come so much quicker. Remember to employ basic quasi-elemental forces such as heat, energy, force and various chemical mixes - who knows why those ancient aliens made such obscure activation indices.

And don't forget your suit this time, I can't afford to have any researchers out of commision for as long as that again!.
Ward" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "Memo RE: materials gathering" + P.info = "Corasang,
the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!
- R.W" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "Memo RE: ethical quandaries" + P.info = "Darion-

I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of those things our benefactors left behind. Ward--" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "READ ME! Before you people destroy any more samples" + P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, ceoncentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely! W, the one who signs your paychecks" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "Reminder regarding the anomalous material suits" + P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around the station in them unless you're field testing something, R" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + +//Anomaly + +/area/anomaly + icon_state = "anomaly" + +/area/anomaly/hallway + name = "Anomaly Hallway" + +/area/anomaly/lab + name = "Anomaly Lab" + +/area/anomaly/outpost + name = "Research Outpost" diff --git a/code/modules/research/xenoarchaeology/spacesuit.dm b/code/modules/research/xenoarchaeology/spacesuit.dm new file mode 100644 index 00000000000..66c9dedb22d --- /dev/null +++ b/code/modules/research/xenoarchaeology/spacesuit.dm @@ -0,0 +1,13 @@ + +/obj/item/clothing/suit/space/anomaly + name = "Anomaly Suit" + desc = "A sealed bio suit capable of resisting exotic alien energies and low pressure environments." + icon_state = "engspace_suit" + item_state = "engspace_suit" + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) + +/obj/item/clothing/head/helmet/space/anomaly + name = "Anomaly Hood" + desc = "A sealed bio hood capable of resisting exotic alien energies and low pressure environments." + icon_state = "engspace_helmet" + item_state = "engspace_helmet" diff --git a/code/modules/research/xenoarchaeology/suspension_generator.dm b/code/modules/research/xenoarchaeology/suspension_generator.dm index 3c1449f6b49..b24080df2ff 100644 --- a/code/modules/research/xenoarchaeology/suspension_generator.dm +++ b/code/modules/research/xenoarchaeology/suspension_generator.dm @@ -1,5 +1,3 @@ -//these are probably broken - /obj/machinery/suspension_gen name = "suspension field generator" desc = "It has stubby legs bolted up against it's body for stabilising." @@ -32,14 +30,14 @@ for(var/mob/living/carbon/M in T) M.weakened = max(M.weakened, 3) cell.charge -= power_use - if(prob(10)) + if(prob(5)) M << "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]" if(field_type == "silicon") for(var/mob/living/silicon/M in T) M.weakened = max(M.weakened, 3) cell.charge -= power_use - if(prob(10)) + if(prob(5)) M << "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]" for(var/obj/item/I in T) @@ -51,7 +49,7 @@ for(var/mob/living/simple_animal/M in T) M.weakened = max(M.weakened, 3) cell.charge -= power_use - if(prob(10)) + if(prob(5)) M << "\blue [pick("You feel tingly.","You feel like floating.","It is hard to speak.","You can barely move.")]" if(cell.charge <= 0) diff --git a/code/modules/research/xenoarchaeology/misc_tools.dm b/code/modules/research/xenoarchaeology/tools.dm similarity index 100% rename from code/modules/research/xenoarchaeology/misc_tools.dm rename to code/modules/research/xenoarchaeology/tools.dm diff --git a/code/modules/research/xenoarchaeology/artifact.dm b/code/modules/research/xenoarchaeology/unknown.dm similarity index 100% rename from code/modules/research/xenoarchaeology/artifact.dm rename to code/modules/research/xenoarchaeology/unknown.dm diff --git a/code/modules/research/xenoarchaeology/artifact_analysis.dm b/code/modules/research/xenoarchaeology/unknown_analysis.dm similarity index 97% rename from code/modules/research/xenoarchaeology/artifact_analysis.dm rename to code/modules/research/xenoarchaeology/unknown_analysis.dm index 5225b650e7f..706343e8f62 100644 --- a/code/modules/research/xenoarchaeology/artifact_analysis.dm +++ b/code/modules/research/xenoarchaeology/unknown_analysis.dm @@ -1,318 +1,318 @@ - -//cael - some changes here. the analysis pad is entirely new - -/obj/machinery/artifact_analyser - name = "Artifact Analyser" - desc = "Studies the structure of artifacts to discover their uses." - icon = 'virology.dmi' - icon_state = "analyser" - anchored = 1 - density = 1 - var/working = 0 - var/accuO = 0 - var/accuT = 0 - var/accuE1 = 0 - var/accuE2 = 0 - var/aorigin = "None" - var/atrigger = "None" - var/aeffect1 = "None" - var/aeffect2 = "None" - var/list/origin_bonuses - var/list/trigger_bonuses - var/list/function_bonuses - var/list/range_bonuses - var/cur_id = "" - var/scan_num = 0 - var/obj/machinery/artifact/cur_artifact = null - var/obj/machinery/analyser_pad/owned_pad = null - var/list/allorigins = list("Ancient Robots","Martian","Wizard Federation","Extradimensional","Precursor") - var/list/alltriggers = list("Contact with Living Organism","Heavy Impact","Contact with Energy Source","Contact with Hydrogen","Contact with Corrosive Substance","Contact with Volatile Substance","Contact with Toxins","Exposure to Heat") - var/list/alleffects = list("Healing Device","Anti-biological Weapon","Non-lethal Stunning Trap","Mechanoid Repair Module","Mechanoid Deconstruction Device","Power Generator","Power Drain","Stellar Mineral Attractor","Agriculture Regulator","Shield Generator","Space-Time Displacer") - var/list/allranges = list("Constant Short-Range Energy Field","Medium Range Energy Pulses","Long Range Energy Pulses","Extreme Range Energy Pulses","Requires contact with subject") - -/obj/machinery/artifact_analyser/New() - ..() - origin_bonuses = new/list() - origin_bonuses["ancient"] = 0 - origin_bonuses["martian"] = 0 - origin_bonuses["wizard"] = 0 - origin_bonuses["eldritch"] = 0 - origin_bonuses["precursor"] = 0 - trigger_bonuses = new/list() - trigger_bonuses["ancient"] = 0 - trigger_bonuses["martian"] = 0 - trigger_bonuses["wizard"] = 0 - trigger_bonuses["eldritch"] = 0 - trigger_bonuses["precursor"] = 0 - function_bonuses = new/list() - function_bonuses["ancient"] = 0 - function_bonuses["martian"] = 0 - function_bonuses["wizard"] = 0 - function_bonuses["eldritch"] = 0 - function_bonuses["precursor"] = 0 - range_bonuses = new/list() - range_bonuses["ancient"] = 0 - range_bonuses["martian"] = 0 - range_bonuses["wizard"] = 0 - range_bonuses["eldritch"] = 0 - range_bonuses["precursor"] = 0 - // - spawn(10) - owned_pad = locate() in orange(1, src) - -/obj/machinery/artifact_analyser/attack_hand(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Artifact Analyser
" - dat += "

" - if(!owned_pad) - dat += "Unable to locate analysis pad.
" - dat += "

" - else if (!src.working) - dat += "Artifact ID: [cur_id]
" - dat += "Artifact Origin: [aorigin] ([accuO]%)
" - dat += "Activation Trigger: [atrigger] ([accuT]%)
" - dat += "Artifact Function: [aeffect1] ([accuE1]%)
" - dat += "Artifact Range: [aeffect2] ([accuE2]%)

" - dat += "

" - dat += "Artifact ID is determined from unique energy emission signatures.
" - dat += "Analyse Artifact (Scan number #[scan_num+1])
" - dat += "Upload/update artifact scan
" - dat += "Print Page
" - else - dat += "Please wait. Analysis in progress.
" - dat += "

" - // - dat += "Close
" - user << browse(dat, "window=artanalyser;size=450x500") - onclose(user, "artanalyser") - -/obj/machinery/artifact_analyser/process() - if(stat & (NOPOWER|BROKEN)) - return - use_power(350) - // - if(!owned_pad) - for(var/obj/machinery/analyser_pad/pad in range(1)) - owned_pad = pad - break - -/obj/machinery/artifact_analyser/proc/AA_FailedAnalysis(var/failtype) - switch(failtype) - if(1) - src.aorigin = "Failed to Identify" - if (prob(20)) src.aorigin = pick(src.allorigins) - if(2) - src.atrigger = "Failed to Identify" - if (prob(20)) src.atrigger = pick(src.alltriggers) - if(3) - src.aeffect1 = "Failed to Identify" - if (prob(20)) src.aeffect1 = pick(src.alleffects) - if(4) - src.aeffect2 = "Failed to Identify" - if (prob(20)) src.aeffect2 = pick(src.allranges) - -/obj/machinery/artifact_analyser/proc/AA_Analyse() - if(!cur_artifact) - return - src.accuO = 5 + rand(0,10) + origin_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 - src.accuT = 5 + rand(0,10) + trigger_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 - src.accuE1 = 5 + rand(0,10) + function_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 - src.accuE2 = 5 + rand(0,10) + range_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 - - //keep any correctly determined properties the same - var/origin_correct = 0 - var/trigger_correct = 0 - var/function_correct = 0 - var/range_correct = 0 - if(cur_id == cur_artifact.display_id) - if(src.aorigin == cur_artifact.origin) - origin_correct = 1 - - if(src.atrigger == cur_artifact.my_effect.trigger) - trigger_correct = 1 - else if(src.atrigger == cur_artifact.my_effect.triggerX) - trigger_correct = 1 - - if(src.aeffect1 == cur_artifact.my_effect.effecttype) - function_correct = 1 - - if(src.aeffect2 == cur_artifact.my_effect.effectmode) - range_correct = 1 - - if (src.accuO > 100) src.accuO = 100 - if (src.accuT > 100) src.accuT = 100 - if (src.accuE1 > 100) src.accuE1 = 100 - if (src.accuE2 > 100) src.accuE2 = 100 - // Roll to generate report - if (prob(accuO) || origin_correct) - switch(cur_artifact.origin) - if("ancient") src.aorigin = "Ancient Robots" - if("martian") src.aorigin = "Martian" - if("wizard") src.aorigin = "Wizard Federation" - if("eldritch") src.aorigin = "Extradimensional" - if("precursor") src.aorigin = "Precursor" - else src.aorigin = "Unknown Origin" - origin_bonuses[cur_artifact.origin] += 10 - else - AA_FailedAnalysis(1) - origin_bonuses[cur_artifact.origin] += 5 - if (prob(accuT) || trigger_correct) - switch(cur_artifact.my_effect.trigger) - if("touch") src.atrigger = "Contact with Living Organism" - if("force") src.atrigger = "Heavy Impact" - if("energy") src.atrigger = "Contact with Energy Source" - if("chemical") - switch(cur_artifact.my_effect.triggerX) - if("hydrogen") src.atrigger = "Contact with Hydrogen" - if("corrosive") src.atrigger = "Contact with Corrosive Substance" - if("volatile") src.atrigger = "Contact with Volatile Substance" - if("toxin") src.atrigger = "Contact with Toxins" - if("heat") src.atrigger = "Exposure to Heat" - else src.atrigger = "Unknown Trigger" - trigger_bonuses[cur_artifact.origin] += 5 - else - AA_FailedAnalysis(2) - trigger_bonuses[cur_artifact.origin] += 1 - if (prob(accuE1) || function_correct) - switch(cur_artifact.my_effect.effecttype) - if("healing") src.aeffect1 = "Healing Device" - if("injure") src.aeffect1 = "Anti-biological Weapon" - // if("stun") src.aeffect1 = "Non-lethal Stunning Trap" - if("roboheal") src.aeffect1 = "Mechanoid Repair Module" - if("robohurt") src.aeffect1 = "Mechanoid Deconstruction Device" - if("cellcharge") src.aeffect1 = "Power Generator" - if("celldrain") src.aeffect1 = "Power Drain" - if("planthelper") src.aeffect1 = "Agriculture Regulator" - if("forcefield") src.aeffect1 = "Shield Generator" - if("teleport") src.aeffect1 = "Space-Time Displacer" - else src.aeffect1 = "Unknown Effect" - function_bonuses[cur_artifact.origin] += 5 - else - AA_FailedAnalysis(3) - function_bonuses[cur_artifact.origin] += 1 - if (prob(accuE2) || range_correct) - switch(cur_artifact.my_effect.effectmode) - if("aura") src.aeffect2 = "Constant Short-Range Energy Field" - if("pulse") - if(cur_artifact.my_effect.aurarange > 7) src.aeffect2 = "Long Range Energy Pulses" - else src.aeffect2 = "Medium Range Energy Pulses" - if("worldpulse") src.aeffect2 = "Extreme Range Energy Pulses" - if("contact") src.aeffect2 = "Requires contact with subject" - else src.aeffect2 = "Unknown Range" - range_bonuses[cur_artifact.origin] += 5 - else - AA_FailedAnalysis(4) - range_bonuses[cur_artifact.origin] += 1 - - cur_artifact.name = "alien artifact ([cur_artifact.display_id])" - cur_artifact.desc = "A large alien device. It has a small tag near the bottom that reads \"[cur_artifact.display_id]\"." - cur_id = cur_artifact.display_id - cur_artifact.my_effect.artifact_id = cur_artifact.display_id - -/obj/machinery/artifact_analyser/Topic(href, href_list) - - if(href_list["analyse"]) - if(owned_pad) - var/turf/pad_turf = get_turf(owned_pad) - var/findarti = 0 - for(var/obj/machinery/artifact/A in pad_turf.contents) - findarti++ - cur_artifact = A - if (findarti == 1) - if(cur_artifact && cur_artifact.being_used) - var/message = "[src] states, \"Cannot analyse. Excess energy drain is disrupting signal.\"" - src.visible_message(message, message) - else - cur_artifact.anchored = 1 - cur_artifact.being_used = 1 - src.working = 1 - src.icon_state = "analyser_processing" - var/time = rand(30,50) + max(0, 300 - scan_num * 10) - /*for(var/i = artifact_research.starting_tier, i <= artifact_research.max_tiers, i++) - for(var/datum/artiresearch/R in artifact_research.researched_items[i]) - if (R.bonustype == "analyser") time -= R.bonusTime*/ - time *= 10 - var/message = "[src] states, \"Commencing analysis.\"" - src.visible_message(message, message) - use_power(500) - spawn(time) - src.working = 0 - icon_state = "analyser" - cur_artifact.anchored = 0 - cur_artifact.being_used = 0 - if(cur_artifact.loc == pad_turf) - AA_Analyse() - scan_num++ - message = "[src] states, \"Analysis complete.\"" - src.visible_message(message, message) - use_power(500) - else if (findarti > 1) - var/message = "[src] states, \"Cannot analyse. Error isolating energy signature.\"" - src.visible_message(message, message) - else - var/message = "[src] states, \"Cannot analyse. No noteworthy energy signature isolated.\"" - src.visible_message(message, message) - - if(href_list["upload"] && cur_id != "") - //add new datum to every DB in the world - for(var/obj/machinery/computer/artifact_database/DB in world) - var/update = 0 - for(var/datum/catalogued_artifact/CA in DB.catalogued_artifacts) - if(CA.display_id == cur_id) - //already there, so update it - update = 1 - CA.origin = aorigin + " ([accuO]%)" - CA.trigger = atrigger + " ([accuT]%)" - CA.effecttype = aeffect1 + " ([accuE1]%)" - CA.effectmode = aeffect2 + " ([accuE2]%)" - if(!update) - //not there, so add it - var/datum/catalogued_artifact/CA = new() - CA.display_id = cur_id - CA.origin = aorigin + " ([accuO]%)" - CA.trigger = atrigger + " ([accuT]%)" - CA.effecttype = aeffect1 + " ([accuE1]%)" - CA.effectmode = aeffect2 + " ([accuE2]%)" - DB.catalogued_artifacts.Add(CA) - use_power(100) - - if(href_list["print"]) - var/r = "Artifact Analysis Report (Scan #[scan_num])
" - r += "Artifact ID: [cur_id] (determined from unique energy emission signatures)
" - r += "Artifact Origin: [aorigin] ([accuO]%)
" - r += "Activation Trigger: [atrigger] ([accuT]%)
" - r += "Artifact Function: [aeffect1] ([accuE1]%)
" - r += "Artifact Range: [aeffect2] ([accuE2]%)

" - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc) - P.name = "Artifact Analysis Report #[scan_num]" - P.info = r - for(var/mob/O in hearers(src, null)) - O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3) - use_power(10) - - if(href_list["close"]) - usr << browse(null, "window=artanalyser") - usr.machine = null - - src.updateDialog() - -//stick artifacts onto this then switch the analyser on -/obj/machinery/analyser_pad - name = "artifact analysis pad" - desc = "Studies the structure of artifacts to discover their uses." - icon = 'stationobjs.dmi' - icon_state = "tele0" - anchored = 1 - density = 0 - -/obj/machinery/analyser_pad/New() - ..() - /*spawn(10) - for(var/obj/machinery/artifact_analyser/analyser in orange(1)) - world << "pad found analyser" - if(!analyser.owned_pad) - analyser.owned_pad = src - world << "pad set analyser to self" - break*/ + +//cael - some changes here. the analysis pad is entirely new + +/obj/machinery/artifact_analyser + name = "Artifact Analyser" + desc = "Studies the structure of artifacts to discover their uses." + icon = 'virology.dmi' + icon_state = "analyser" + anchored = 1 + density = 1 + var/working = 0 + var/accuO = 0 + var/accuT = 0 + var/accuE1 = 0 + var/accuE2 = 0 + var/aorigin = "None" + var/atrigger = "None" + var/aeffect1 = "None" + var/aeffect2 = "None" + var/list/origin_bonuses + var/list/trigger_bonuses + var/list/function_bonuses + var/list/range_bonuses + var/cur_id = "" + var/scan_num = 0 + var/obj/machinery/artifact/cur_artifact = null + var/obj/machinery/analyser_pad/owned_pad = null + var/list/allorigins = list("Ancient Robots","Martian","Wizard Federation","Extradimensional","Precursor") + var/list/alltriggers = list("Contact with Living Organism","Heavy Impact","Contact with Energy Source","Contact with Hydrogen","Contact with Corrosive Substance","Contact with Volatile Substance","Contact with Toxins","Exposure to Heat") + var/list/alleffects = list("Healing Device","Anti-biological Weapon","Non-lethal Stunning Trap","Mechanoid Repair Module","Mechanoid Deconstruction Device","Power Generator","Power Drain","Stellar Mineral Attractor","Agriculture Regulator","Shield Generator","Space-Time Displacer") + var/list/allranges = list("Constant Short-Range Energy Field","Medium Range Energy Pulses","Long Range Energy Pulses","Extreme Range Energy Pulses","Requires contact with subject") + +/obj/machinery/artifact_analyser/New() + ..() + origin_bonuses = new/list() + origin_bonuses["ancient"] = 0 + origin_bonuses["martian"] = 0 + origin_bonuses["wizard"] = 0 + origin_bonuses["eldritch"] = 0 + origin_bonuses["precursor"] = 0 + trigger_bonuses = new/list() + trigger_bonuses["ancient"] = 0 + trigger_bonuses["martian"] = 0 + trigger_bonuses["wizard"] = 0 + trigger_bonuses["eldritch"] = 0 + trigger_bonuses["precursor"] = 0 + function_bonuses = new/list() + function_bonuses["ancient"] = 0 + function_bonuses["martian"] = 0 + function_bonuses["wizard"] = 0 + function_bonuses["eldritch"] = 0 + function_bonuses["precursor"] = 0 + range_bonuses = new/list() + range_bonuses["ancient"] = 0 + range_bonuses["martian"] = 0 + range_bonuses["wizard"] = 0 + range_bonuses["eldritch"] = 0 + range_bonuses["precursor"] = 0 + // + spawn(10) + owned_pad = locate() in orange(1, src) + +/obj/machinery/artifact_analyser/attack_hand(var/mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + user.machine = src + var/dat = "Artifact Analyser
" + dat += "

" + if(!owned_pad) + dat += "Unable to locate analysis pad.
" + dat += "

" + else if (!src.working) + dat += "Artifact ID: [cur_id]
" + dat += "Artifact Origin: [aorigin] ([accuO]%)
" + dat += "Activation Trigger: [atrigger] ([accuT]%)
" + dat += "Artifact Function: [aeffect1] ([accuE1]%)
" + dat += "Artifact Range: [aeffect2] ([accuE2]%)

" + dat += "

" + dat += "Artifact ID is determined from unique energy emission signatures.
" + dat += "
Analyse Artifact (Scan number #[scan_num+1])
" + dat += "Upload/update artifact scan
" + dat += "Print Page
" + else + dat += "Please wait. Analysis in progress.
" + dat += "

" + // + dat += "Close
" + user << browse(dat, "window=artanalyser;size=450x500") + onclose(user, "artanalyser") + +/obj/machinery/artifact_analyser/process() + if(stat & (NOPOWER|BROKEN)) + return + use_power(350) + // + if(!owned_pad) + for(var/obj/machinery/analyser_pad/pad in range(1)) + owned_pad = pad + break + +/obj/machinery/artifact_analyser/proc/AA_FailedAnalysis(var/failtype) + switch(failtype) + if(1) + src.aorigin = "Failed to Identify" + if (prob(20)) src.aorigin = pick(src.allorigins) + if(2) + src.atrigger = "Failed to Identify" + if (prob(20)) src.atrigger = pick(src.alltriggers) + if(3) + src.aeffect1 = "Failed to Identify" + if (prob(20)) src.aeffect1 = pick(src.alleffects) + if(4) + src.aeffect2 = "Failed to Identify" + if (prob(20)) src.aeffect2 = pick(src.allranges) + +/obj/machinery/artifact_analyser/proc/AA_Analyse() + if(!cur_artifact) + return + src.accuO = 5 + rand(0,10) + origin_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 + src.accuT = 5 + rand(0,10) + trigger_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 + src.accuE1 = 5 + rand(0,10) + function_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 + src.accuE2 = 5 + rand(0,10) + range_bonuses[cur_artifact.origin] + cur_artifact.activated * 50 + + //keep any correctly determined properties the same + var/origin_correct = 0 + var/trigger_correct = 0 + var/function_correct = 0 + var/range_correct = 0 + if(cur_id == cur_artifact.display_id) + if(src.aorigin == cur_artifact.origin) + origin_correct = 1 + + if(src.atrigger == cur_artifact.my_effect.trigger) + trigger_correct = 1 + else if(src.atrigger == cur_artifact.my_effect.triggerX) + trigger_correct = 1 + + if(src.aeffect1 == cur_artifact.my_effect.effecttype) + function_correct = 1 + + if(src.aeffect2 == cur_artifact.my_effect.effectmode) + range_correct = 1 + + if (src.accuO > 100) src.accuO = 100 + if (src.accuT > 100) src.accuT = 100 + if (src.accuE1 > 100) src.accuE1 = 100 + if (src.accuE2 > 100) src.accuE2 = 100 + // Roll to generate report + if (prob(accuO) || origin_correct) + switch(cur_artifact.origin) + if("ancient") src.aorigin = "Ancient Robots" + if("martian") src.aorigin = "Martian" + if("wizard") src.aorigin = "Wizard Federation" + if("eldritch") src.aorigin = "Extradimensional" + if("precursor") src.aorigin = "Precursor" + else src.aorigin = "Unknown Origin" + origin_bonuses[cur_artifact.origin] += 10 + else + AA_FailedAnalysis(1) + origin_bonuses[cur_artifact.origin] += 5 + if (prob(accuT) || trigger_correct) + switch(cur_artifact.my_effect.trigger) + if("touch") src.atrigger = "Contact with Living Organism" + if("force") src.atrigger = "Heavy Impact" + if("energy") src.atrigger = "Contact with Energy Source" + if("chemical") + switch(cur_artifact.my_effect.triggerX) + if("hydrogen") src.atrigger = "Contact with Hydrogen" + if("corrosive") src.atrigger = "Contact with Corrosive Substance" + if("volatile") src.atrigger = "Contact with Volatile Substance" + if("toxin") src.atrigger = "Contact with Toxins" + if("heat") src.atrigger = "Exposure to Heat" + else src.atrigger = "Unknown Trigger" + trigger_bonuses[cur_artifact.origin] += 5 + else + AA_FailedAnalysis(2) + trigger_bonuses[cur_artifact.origin] += 1 + if (prob(accuE1) || function_correct) + switch(cur_artifact.my_effect.effecttype) + if("healing") src.aeffect1 = "Healing Device" + if("injure") src.aeffect1 = "Anti-biological Weapon" + // if("stun") src.aeffect1 = "Non-lethal Stunning Trap" + if("roboheal") src.aeffect1 = "Mechanoid Repair Module" + if("robohurt") src.aeffect1 = "Mechanoid Deconstruction Device" + if("cellcharge") src.aeffect1 = "Power Generator" + if("celldrain") src.aeffect1 = "Power Drain" + if("planthelper") src.aeffect1 = "Agriculture Regulator" + if("forcefield") src.aeffect1 = "Shield Generator" + if("teleport") src.aeffect1 = "Space-Time Displacer" + else src.aeffect1 = "Unknown Effect" + function_bonuses[cur_artifact.origin] += 5 + else + AA_FailedAnalysis(3) + function_bonuses[cur_artifact.origin] += 1 + if (prob(accuE2) || range_correct) + switch(cur_artifact.my_effect.effectmode) + if("aura") src.aeffect2 = "Constant Short-Range Energy Field" + if("pulse") + if(cur_artifact.my_effect.aurarange > 7) src.aeffect2 = "Long Range Energy Pulses" + else src.aeffect2 = "Medium Range Energy Pulses" + if("worldpulse") src.aeffect2 = "Extreme Range Energy Pulses" + if("contact") src.aeffect2 = "Requires contact with subject" + else src.aeffect2 = "Unknown Range" + range_bonuses[cur_artifact.origin] += 5 + else + AA_FailedAnalysis(4) + range_bonuses[cur_artifact.origin] += 1 + + cur_artifact.name = "alien artifact ([cur_artifact.display_id])" + cur_artifact.desc = "A large alien device. It has a small tag near the bottom that reads \"[cur_artifact.display_id]\"." + cur_id = cur_artifact.display_id + cur_artifact.my_effect.artifact_id = cur_artifact.display_id + +/obj/machinery/artifact_analyser/Topic(href, href_list) + + if(href_list["analyse"]) + if(owned_pad) + var/turf/pad_turf = get_turf(owned_pad) + var/findarti = 0 + for(var/obj/machinery/artifact/A in pad_turf.contents) + findarti++ + cur_artifact = A + if (findarti == 1) + if(cur_artifact && cur_artifact.being_used) + var/message = "[src] states, \"Cannot analyse. Excess energy drain is disrupting signal.\"" + src.visible_message(message, message) + else + cur_artifact.anchored = 1 + cur_artifact.being_used = 1 + src.working = 1 + src.icon_state = "analyser_processing" + var/time = rand(30,50) + max(0, 300 - scan_num * 10) + /*for(var/i = artifact_research.starting_tier, i <= artifact_research.max_tiers, i++) + for(var/datum/artiresearch/R in artifact_research.researched_items[i]) + if (R.bonustype == "analyser") time -= R.bonusTime*/ + time *= 10 + var/message = "[src] states, \"Commencing analysis.\"" + src.visible_message(message, message) + use_power(500) + spawn(time) + src.working = 0 + icon_state = "analyser" + cur_artifact.anchored = 0 + cur_artifact.being_used = 0 + if(cur_artifact.loc == pad_turf) + AA_Analyse() + scan_num++ + message = "[src] states, \"Analysis complete.\"" + src.visible_message(message, message) + use_power(500) + else if (findarti > 1) + var/message = "[src] states, \"Cannot analyse. Error isolating energy signature.\"" + src.visible_message(message, message) + else + var/message = "[src] states, \"Cannot analyse. No noteworthy energy signature isolated.\"" + src.visible_message(message, message) + + if(href_list["upload"] && cur_id != "") + //add new datum to every DB in the world + for(var/obj/machinery/computer/artifact_database/DB in world) + var/update = 0 + for(var/datum/catalogued_artifact/CA in DB.catalogued_artifacts) + if(CA.display_id == cur_id) + //already there, so update it + update = 1 + CA.origin = aorigin + " ([accuO]%)" + CA.trigger = atrigger + " ([accuT]%)" + CA.effecttype = aeffect1 + " ([accuE1]%)" + CA.effectmode = aeffect2 + " ([accuE2]%)" + if(!update) + //not there, so add it + var/datum/catalogued_artifact/CA = new() + CA.display_id = cur_id + CA.origin = aorigin + " ([accuO]%)" + CA.trigger = atrigger + " ([accuT]%)" + CA.effecttype = aeffect1 + " ([accuE1]%)" + CA.effectmode = aeffect2 + " ([accuE2]%)" + DB.catalogued_artifacts.Add(CA) + use_power(100) + + if(href_list["print"]) + var/r = "Artifact Analysis Report (Scan #[scan_num])
" + r += "Artifact ID: [cur_id] (determined from unique energy emission signatures)
" + r += "Artifact Origin: [aorigin] ([accuO]%)
" + r += "Activation Trigger: [atrigger] ([accuT]%)
" + r += "Artifact Function: [aeffect1] ([accuE1]%)
" + r += "Artifact Range: [aeffect2] ([accuE2]%)

" + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc) + P.name = "Artifact Analysis Report #[scan_num]" + P.info = r + for(var/mob/O in hearers(src, null)) + O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3) + use_power(10) + + if(href_list["close"]) + usr << browse(null, "window=artanalyser") + usr.machine = null + + src.updateDialog() + +//stick artifacts onto this then switch the analyser on +/obj/machinery/analyser_pad + name = "artifact analysis pad" + desc = "Studies the structure of artifacts to discover their uses." + icon = 'stationobjs.dmi' + icon_state = "tele0" + anchored = 1 + density = 0 + +/obj/machinery/analyser_pad/New() + ..() + /*spawn(10) + for(var/obj/machinery/artifact_analyser/analyser in orange(1)) + world << "pad found analyser" + if(!analyser.owned_pad) + analyser.owned_pad = src + world << "pad set analyser to self" + break*/ diff --git a/code/modules/research/xenoarchaeology/artifact_db.dm b/code/modules/research/xenoarchaeology/unknown_db.dm similarity index 97% rename from code/modules/research/xenoarchaeology/artifact_db.dm rename to code/modules/research/xenoarchaeology/unknown_db.dm index 5bdb66d71fd..c6e0d1fb3fa 100644 --- a/code/modules/research/xenoarchaeology/artifact_db.dm +++ b/code/modules/research/xenoarchaeology/unknown_db.dm @@ -1,58 +1,58 @@ - -/datum/catalogued_artifact - var/trigger = "touch" // What activates it? - var/effecttype = "healing" // What does it do? - var/effectmode = "aura" // How does it carry out the effect? - var/display_id = "" // Artifact ID to display once successfully scanned - var/origin = "" - -/obj/machinery/computer/artifact_database - name = "Artifact Database" - icon_state = "rdcomp" - var/list/catalogued_artifacts - -/obj/machinery/computer/artifact_database/New() - ..() - catalogued_artifacts = new/list - -/obj/machinery/computer/artifact_database/Topic(href, href_list) - ..() - if( href_list["close"] ) - usr << browse(null, "window=artifact_db") - usr.machine = null - updateDialog() - -/obj/machinery/computer/artifact_database/process() - ..() - updateDialog() - -/obj/machinery/computer/artifact_database/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) - if (!istype(user, /mob/living/silicon)) - user.machine = null - user << browse(null, "window=artifact_db") - return - var/t = "Artifact Database
" - t += "
" - for(var/datum/catalogued_artifact/CA in catalogued_artifacts) - t += "Artifact ID: [CA.display_id] (determined from unique energy emission signatures)
" - t += "Artifact Origin: [CA.origin]
" - t += "Activation Trigger: [CA.trigger]
" - t += "Artifact Function: [CA.effecttype]
" - t += "Artifact Range: [CA.effectmode]

" - t += "
" - t += "
Refresh Close
" - user << browse(t, "window=artifact_db;size=500x800") - user.machine = src - -/* -/datum/artifact_effect - var/origin = null // Used in the randomisation/research of the artifact. - var/trigger = "touch" // What activates it? - var/triggerX = "none" // Used for more varied triggers - var/effecttype = "healing" // What does it do? - var/effectmode = "aura" // How does it carry out the effect? - var/aurarange = 4 // How far the artifact will extend an aura effect. - var/display_id = "" // Artifact ID to display once successfully scanned - var/list/created_field + +/datum/catalogued_artifact + var/trigger = "touch" // What activates it? + var/effecttype = "healing" // What does it do? + var/effectmode = "aura" // How does it carry out the effect? + var/display_id = "" // Artifact ID to display once successfully scanned + var/origin = "" + +/obj/machinery/computer/artifact_database + name = "Artifact Database" + icon_state = "rdcomp" + var/list/catalogued_artifacts + +/obj/machinery/computer/artifact_database/New() + ..() + catalogued_artifacts = new/list + +/obj/machinery/computer/artifact_database/Topic(href, href_list) + ..() + if( href_list["close"] ) + usr << browse(null, "window=artifact_db") + usr.machine = null + updateDialog() + +/obj/machinery/computer/artifact_database/process() + ..() + updateDialog() + +/obj/machinery/computer/artifact_database/interact(mob/user) + if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) + if (!istype(user, /mob/living/silicon)) + user.machine = null + user << browse(null, "window=artifact_db") + return + var/t = "Artifact Database
" + t += "
" + for(var/datum/catalogued_artifact/CA in catalogued_artifacts) + t += "Artifact ID: [CA.display_id] (determined from unique energy emission signatures)
" + t += "Artifact Origin: [CA.origin]
" + t += "Activation Trigger: [CA.trigger]
" + t += "Artifact Function: [CA.effecttype]
" + t += "Artifact Range: [CA.effectmode]

" + t += "
" + t += "Refresh Close
" + user << browse(t, "window=artifact_db;size=500x800") + user.machine = src + +/* +/datum/artifact_effect + var/origin = null // Used in the randomisation/research of the artifact. + var/trigger = "touch" // What activates it? + var/triggerX = "none" // Used for more varied triggers + var/effecttype = "healing" // What does it do? + var/effectmode = "aura" // How does it carry out the effect? + var/aurarange = 4 // How far the artifact will extend an aura effect. + var/display_id = "" // Artifact ID to display once successfully scanned + var/list/created_field */ \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/artifact_effect.dm b/code/modules/research/xenoarchaeology/unknown_effect.dm similarity index 97% rename from code/modules/research/xenoarchaeology/artifact_effect.dm rename to code/modules/research/xenoarchaeology/unknown_effect.dm index 118e94adc17..092cb0d0f58 100644 --- a/code/modules/research/xenoarchaeology/artifact_effect.dm +++ b/code/modules/research/xenoarchaeology/unknown_effect.dm @@ -1,542 +1,542 @@ -// - -/datum/artifact_effect - var/artifact_id = "" // Display ID of the spawning artifact - var/trigger = "touch" // What activates it? - var/triggerX = "none" // Used for more varied triggers - var/effecttype = "healing" // What does it do? - var/effectmode = "aura" // How does it carry out the effect? - var/aurarange = 4 // How far the artifact will extend an aura effect. - var/list/created_field - var/archived_loc - -/datum/artifact_effect/New() - // - created_field = new() - -/datum/artifact_effect/proc/GetOriginString(var/origin) - -/datum/artifact_effect/proc/GetEffectString(var/effect) - -/datum/artifact_effect/proc/GetTriggerString(var/trigger) - -/datum/artifact_effect/proc/GetRangeString(var/range) - switch(effectmode) - if("aura") return "Constant Short-Range Energy Field" - if("pulse") - if(aurarange > 7) return "Long Range Energy Pulses" - else return "Medium Range Energy Pulses" - if("worldpulse") return "Extreme Range Energy Pulses" - if("contact") return "Requires contact with subject" - else return "Unknown Range" - -/datum/artifact_effect/proc/HaltEffect() - for(var/obj/effect/energy_field/F in created_field) - created_field.Remove(F) - del F - -/datum/artifact_effect/proc/UpdateEffect(var/atom/originator) - /*for(var/obj/effect/energy_field/F in created_field) - created_field.Remove(F) - del F*/ - if(originator.loc != archived_loc) - archived_loc = originator.loc - update_move(originator) - - for(var/obj/effect/energy_field/E in created_field) - if(E.strength < 5) - E.Strengthen(0.2) - -/datum/artifact_effect/proc/DoEffect(var/atom/originator) - archived_loc = originator.loc - if (src.effectmode == "contact") - var/mob/living/user = originator - if(!user) - return - switch(src.effecttype) - if("healing") - //caeltodo - if (istype(user, /mob/living/carbon/human/)) - user << "\blue You feel a soothing energy invigorate you." - - var/mob/living/carbon/human/H = user - for(var/datum/organ/external/affecting in H.organs) - if(!affecting) continue - if(!istype(affecting, /datum/organ/external)) continue - affecting.heal_damage(25, 25) //fixes getting hit after ingestion, killing you when game updates organ health - //user:heal_organ_damage(25, 25) - // - user.adjustOxyLoss(-25) - user.adjustToxLoss(-25) - user.adjustBruteLoss(-25) - user.adjustFireLoss(-25) - user.adjustBrainLoss(-25) - user.radiation -= min(user.radiation, 25) - user.nutrition += 50 - H.bodytemperature = initial(H.bodytemperature) - // - H.vessel.add_reagent("blood",50) - spawn(1) - H.fixblood() - H.regenerate_icons() - return 1 - // - if (istype(user, /mob/living/carbon/monkey/)) - user << "\blue You feel a soothing energy invigorate you." - user.adjustOxyLoss(-25) - user.adjustToxLoss(-25) - user.adjustBruteLoss(-25) - user.adjustFireLoss(-25) - user.adjustBrainLoss(-25) - return 1 - else user << "Nothing happens." - if("injure") - if (istype(user, /mob/living/carbon/)) - user << "\red A painful discharge of energy strikes you!" - user.adjustOxyLoss(rand(5,25)) - user.adjustToxLoss(rand(5,25)) - user.adjustBruteLoss(rand(5,25)) - user.adjustFireLoss(rand(5,25)) - user.adjustBrainLoss(rand(5,25)) - user.radiation += 25 - user.nutrition -= min(50, user.nutrition) - user.make_dizzy(6) - user.weakened += 6 - return 1 - else user << "Nothing happens." - if("stun") - if (istype(user, /mob/living/carbon/)) - user << "\red A powerful force overwhelms your consciousness." - user.weakened += 45 - user.stuttering += 45 - if(prob(50)) - user.stunned += rand(1,10) - return 1 - else user << "Nothing happens." - if("roboheal") - if (istype(user, /mob/living/silicon/robot)) - user << "\blue Your systems report damaged components mending by themselves!" - user.adjustBruteLoss(rand(-10,-30)) - user.adjustFireLoss(rand(-10,-30)) - return 1 - else user << "Nothing happens." - if("robohurt") - if (istype(user, /mob/living/silicon/robot)) - user << "\red Your systems report severe damage has been inflicted!" - user.adjustBruteLoss(rand(10,50)) - user.adjustFireLoss(rand(10,50)) - return 1 - else user << "Nothing happens." - if("forcefield") - while(created_field.len < 16) - var/obj/effect/energy_field/E = new (locate(user.x,user.y,user.z)) - created_field.Add(E) - E.strength = 1 - E.density = 1 - E.anchored = 1 - E.invisibility = 0 - return 1 - if("teleport") - var/list/randomturfs = new/list() - for(var/turf/T in orange(user, 50)) - if(!istype(T, /turf/simulated/floor) || T.density) - continue - randomturfs.Add(T) - if(randomturfs.len > 0) - user << "\red You are suddenly zapped away elsewhere!" - if (user.buckled) - user.buckled.unbuckle() - user.loc = pick(randomturfs) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is - sparks.start() - return 1 - if("sleepy") - user << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") - user.drowsyness = min(user.drowsyness + rand(5,25), 50) - user.eye_blurry = min(user.eye_blurry + rand(1,3), 50) - return 1 - else if (src.effectmode == "aura") - switch(src.effecttype) - //caeltodo - if("healing") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - if(prob(10)) M << "\blue You feel a soothing energy radiating from something nearby." - M.adjustBruteLoss(-1) - M.adjustFireLoss(-1) - M.adjustToxLoss(-1) - M.adjustOxyLoss(-1) - M.adjustBrainLoss(-1) - M.updatehealth() - return 1 - if("injure") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - if(prob(10)) M << "\red You feel a painful force radiating from something nearby." - M.adjustBruteLoss(1) - M.adjustFireLoss(1) - M.adjustToxLoss(1) - M.adjustOxyLoss(1) - M.adjustBrainLoss(1) - M.updatehealth() - return 1 - if("stun") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - if(prob(10)) M << "\red Energy radiating from the [originator] is making you feel numb." - if(prob(20)) - M << "\red Your body goes numb for a moment." - M.stunned += 2 - M.weakened += 2 - M.stuttering += 2 - return 1 - if("roboheal") - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - if(prob(10)) M << "\blue SYSTEM ALERT: Beneficial energy field detected!" - M.adjustBruteLoss(-1) - M.adjustFireLoss(-1) - M.updatehealth() - return 1 - if("robohurt") - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - if(prob(10)) M << "\red SYSTEM ALERT: Harmful energy field detected!" - M.adjustBruteLoss(1) - M.adjustFireLoss(1) - M.updatehealth() - return 1 - if("cellcharge") - for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/B in C.contents) - B.charge += 10 - for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge += 20 - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/D in M.contents) - D.charge += 10 - if(prob(10)) M << "\blue SYSTEM ALERT: Energy boosting field detected!" - return 1 - if("celldrain") - for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/B in C.contents) - B.charge = max(B.charge-10,0) - for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) - S.charge = max(S.charge-20,0) - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/D in M.contents) - D.charge = max(D.charge-10,0) - if(prob(10)) M << "\red SYSTEM ALERT: Energy draining field detected!" - return 1 - if("planthelper") - for (var/obj/machinery/hydroponics/H in range(src.aurarange,originator)) - //makes weeds and shrooms and stuff more potent too - if(H.planted) - H.waterlevel += 2 - H.nutrilevel += 2 - if(H.toxic > 0) - H.toxic -= 1 - H.health += 1 - if(H.pestlevel > 0) - H.pestlevel -= 1 - if(H.weedlevel > 0) - H.weedlevel -= 1 - H.lastcycle += 5 - return 1 - if("sleepy") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(prob(10)) - M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") - M.drowsyness = min(M.drowsyness + 1, 25) - M.eye_blurry = min(M.eye_blurry + 1, 25) - return 1 - else if (src.effectmode == "pulse") - for(var/mob/O in viewers(originator, null)) - O.show_message(text("[] emits a pulse of energy!", originator), 1) - switch(src.effecttype) - //caeltodo - if("healing") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\blue A wave of energy invigorates you." - M.adjustBruteLoss(-5) - M.adjustFireLoss(-5) - M.adjustToxLoss(-5) - M.adjustOxyLoss(-5) - M.adjustBrainLoss(-5) - M.updatehealth() - return 1 - if("injure") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\red A wave of energy causes you great pain!" - M.adjustBruteLoss(5) - M.adjustFireLoss(5) - M.adjustToxLoss(5) - M.adjustOxyLoss(5) - M.adjustBrainLoss(5) - M.make_dizzy(6) - M.weakened += 3 - M.updatehealth() - return 1 - if("stun") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\red A wave of energy overwhelms your senses!" - M.paralysis += 3 - M.weakened += 4 - M.stuttering += 4 - return 1 - if("roboheal") - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!" - M.adjustBruteLoss(-10) - M.adjustFireLoss(-10) - M.updatehealth() - return 1 - if("robohurt") - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!" - M.adjustBruteLoss(10) - M.adjustFireLoss(10) - M.updatehealth() - return 1 - if("cellcharge") - for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/B in C.contents) - B.charge += 250 - for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge += 400 - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/D in M.contents) - D.charge += 250 - M << "\blue SYSTEM ALERT: Large energy boost detected!" - return 1 - if("celldrain") - for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/B in C.contents) - B.charge = max(B.charge-500,0) - for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) - S.charge = max(S.charge-400,0) - for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) - for (var/obj/item/weapon/cell/D in M.contents) - D.charge = max(D.charge-500,0) - M << "\red SYSTEM ALERT: Severe energy drain detected!" - return 1 - if("planthelper") - //makes weeds and shrooms and stuff more potent too - for (var/obj/machinery/hydroponics/H in range(src.aurarange,originator)) - if(H.planted) - H.dead = 0 - H.waterlevel = 200 - H.nutrilevel = 200 - H.toxic = 0 - H.health = 100 - H.pestlevel = 0 - H.weedlevel = 0 - H.lastcycle = H.cycledelay - return 1 - if("teleport") - for (var/mob/living/M in range(src.aurarange,originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - var/list/randomturfs = new/list() - for(var/turf/T in orange(M, 30)) - if(!istype(T, /turf/simulated/floor) || T.density) - continue - randomturfs.Add(T) - if(randomturfs.len > 0) - M << "\red You are displaced by a strange force!" - if(M.buckled) - M.buckled.unbuckle() - M.loc = pick(randomturfs) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is - sparks.start() - return 1 - if("dnaswitch") - for(var/mob/living/H in range(src.aurarange,originator)) - if(ishuman(H) && istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - - if(prob(30)) - H << pick("\green You feel a little different.","\green You feel strange.","\green You feel different.") - //todo - if (H.gender == FEMALE) - H.gender = MALE - else - H.gender = FEMALE - /*H.dna.ready_dna(H) - H.update_body() - H.update_face()*/ - return 1 - if("emp") - empulse(get_turf(originator), aurarange/2, aurarange) - return 1 - if("sleepy") - for (var/mob/living/carbon/M in range(src.aurarange,originator)) - if(prob(30)) - M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") - if(prob(50)) - M.drowsyness = min(M.drowsyness + rand(1,5), 25) - if(prob(50)) - M.eye_blurry = min(M.eye_blurry + rand(1,5), 25) - return 1 - else if (src.effectmode == "worldpulse") - for(var/mob/O in viewers(originator, null)) - O.show_message(text("[] emits a powerful burst of energy!", originator), 1) - switch(src.effecttype) - if("healing") - for (var/mob/living/carbon/M in range(200, originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\blue Waves of soothing energy wash over you." - M.adjustBruteLoss(-3) - M.adjustFireLoss(-3) - M.adjustToxLoss(-3) - M.adjustOxyLoss(-3) - M.adjustBrainLoss(-3) - M.updatehealth() - return 1 - if("injure") - for (var/mob/living/carbon/human/M in range(200, originator)) - M << "\red A wave of painful energy strikes you!" - M.adjustBruteLoss(3) - M.adjustFireLoss(3) - M.adjustToxLoss(3) - M.adjustOxyLoss(3) - M.adjustBrainLoss(3) - M.updatehealth() - return 1 - if("stun") - for (var/mob/living/carbon/M in range(200, originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\red A powerful force causes you to black out momentarily." - M.paralysis += 5 - M.weakened += 8 - M.stuttering += 8 - return 1 - if("roboheal") - for (var/mob/living/silicon/robot/M in range(200, originator)) - M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!" - M.adjustBruteLoss(-5) - M.adjustFireLoss(-5) - M.updatehealth() - return 1 - if("robohurt") - for (var/mob/living/silicon/robot/M in range(200, originator)) - M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!" - M.adjustBruteLoss(5) - M.adjustFireLoss(5) - M.updatehealth() - return 1 - if("cellcharge") - for (var/obj/machinery/power/apc/C in range(200, originator)) - for (var/obj/item/weapon/cell/B in C.contents) - B.charge += 100 - for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge += 250 - for (var/mob/living/silicon/robot/M in world) - for (var/obj/item/weapon/cell/D in M.contents) - D.charge += 100 - M << "\blue SYSTEM ALERT: Energy boost detected!" - return 1 - if("celldrain") - for (var/obj/machinery/power/apc/C in range(200, originator)) - for (var/obj/item/weapon/cell/B in C.contents) - B.charge = max(B.charge-250,0) - for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) - S.charge = max(S.charge-250,0) - for (var/mob/living/silicon/robot/M in world) - for (var/obj/item/weapon/cell/D in M.contents) - D.charge = max(D.charge-250,0) - M << "\red SYSTEM ALERT: Energy drain detected!" - return 1 - if("teleport") - for (var/mob/living/M in range(200, originator)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - var/list/randomturfs = new/list() - for(var/turf/T in orange(M, 15)) - if(!istype(T, /turf/simulated/floor) || T.density) - continue - randomturfs.Add(T) - if(randomturfs.len > 0) - M << "\red You are displaced by a strange force!" - if(M.buckled) - M.buckled.unbuckle() - M.loc = pick(randomturfs) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is - sparks.start() - return 1 - if("dnaswitch") - for(var/mob/living/H in range(200, originator)) - if(ishuman(H) && istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - - if(prob(30)) - H << pick("\green You feel a little different.","\green You feel strange.","\green You feel different.") - //todo - if (H.gender == FEMALE) - H.gender = MALE - else - H.gender = FEMALE - /*H.dna.ready_dna(H) - H.update_body() - H.update_face()*/ - return 1 - if("sleepy") - for(var/mob/living/H in range(200, originator)) - H.drowsyness = min(H.drowsyness + rand(5,15), 50) - H.eye_blurry = min(H.eye_blurry + rand(5,15), 50) - return 1 - -//initially for the force field artifact -/datum/artifact_effect/proc/update_move(var/atom/originator) - switch(effecttype) - if("forcefield") - while(created_field.len < 16) - //for now, just instantly respawn the fields when they get destroyed - var/obj/effect/energy_field/E = new (locate(originator.x,originator.y,originator)) - created_field.Add(E) - E.strength = 1 - E.density = 1 - E.anchored = 1 - E.invisibility = 0 - - var/obj/effect/energy_field/E = created_field[1] - E.loc = locate(originator.x + 2,originator.y + 2,originator.z) - E = created_field[2] - E.loc = locate(originator.x + 2,originator.y + 1,originator.z) - E = created_field[3] - E.loc = locate(originator.x + 2,originator.y,originator.z) - E = created_field[4] - E.loc = locate(originator.x + 2,originator.y - 1,originator.z) - E = created_field[5] - E.loc = locate(originator.x + 2,originator.y - 2,originator.z) - E = created_field[6] - E.loc = locate(originator.x + 1,originator.y + 2,originator.z) - E = created_field[7] - E.loc = locate(originator.x + 1,originator.y - 2,originator.z) - E = created_field[8] - E.loc = locate(originator.x,originator.y + 2,originator.z) - E = created_field[9] - E.loc = locate(originator.x,originator.y - 2,originator.z) - E = created_field[10] - E.loc = locate(originator.x - 1,originator.y + 2,originator.z) - E = created_field[11] - E.loc = locate(originator.x - 1,originator.y - 2,originator.z) - E = created_field[12] - E.loc = locate(originator.x - 2,originator.y + 2,originator.z) - E = created_field[13] - E.loc = locate(originator.x - 2,originator.y + 1,originator.z) - E = created_field[14] - E.loc = locate(originator.x - 2,originator.y,originator.z) - E = created_field[15] - E.loc = locate(originator.x - 2,originator.y - 1,originator.z) - E = created_field[16] - E.loc = locate(originator.x - 2,originator.y - 2,originator.z) +// + +/datum/artifact_effect + var/artifact_id = "" // Display ID of the spawning artifact + var/trigger = "touch" // What activates it? + var/triggerX = "none" // Used for more varied triggers + var/effecttype = "healing" // What does it do? + var/effectmode = "aura" // How does it carry out the effect? + var/aurarange = 4 // How far the artifact will extend an aura effect. + var/list/created_field + var/archived_loc + +/datum/artifact_effect/New() + // + created_field = new() + +/datum/artifact_effect/proc/GetOriginString(var/origin) + +/datum/artifact_effect/proc/GetEffectString(var/effect) + +/datum/artifact_effect/proc/GetTriggerString(var/trigger) + +/datum/artifact_effect/proc/GetRangeString(var/range) + switch(effectmode) + if("aura") return "Constant Short-Range Energy Field" + if("pulse") + if(aurarange > 7) return "Long Range Energy Pulses" + else return "Medium Range Energy Pulses" + if("worldpulse") return "Extreme Range Energy Pulses" + if("contact") return "Requires contact with subject" + else return "Unknown Range" + +/datum/artifact_effect/proc/HaltEffect() + for(var/obj/effect/energy_field/F in created_field) + created_field.Remove(F) + del F + +/datum/artifact_effect/proc/UpdateEffect(var/atom/originator) + /*for(var/obj/effect/energy_field/F in created_field) + created_field.Remove(F) + del F*/ + if(originator.loc != archived_loc) + archived_loc = originator.loc + update_move(originator) + + for(var/obj/effect/energy_field/E in created_field) + if(E.strength < 5) + E.Strengthen(0.2) + +/datum/artifact_effect/proc/DoEffect(var/atom/originator) + archived_loc = originator.loc + if (src.effectmode == "contact") + var/mob/living/user = originator + if(!user) + return + switch(src.effecttype) + if("healing") + //caeltodo + if (istype(user, /mob/living/carbon/human/)) + user << "\blue You feel a soothing energy invigorate you." + + var/mob/living/carbon/human/H = user + for(var/datum/organ/external/affecting in H.organs) + if(!affecting) continue + if(!istype(affecting, /datum/organ/external)) continue + affecting.heal_damage(25, 25) //fixes getting hit after ingestion, killing you when game updates organ health + //user:heal_organ_damage(25, 25) + // + user.adjustOxyLoss(-25) + user.adjustToxLoss(-25) + user.adjustBruteLoss(-25) + user.adjustFireLoss(-25) + user.adjustBrainLoss(-25) + user.radiation -= min(user.radiation, 25) + user.nutrition += 50 + H.bodytemperature = initial(H.bodytemperature) + // + H.vessel.add_reagent("blood",50) + spawn(1) + H.fixblood() + H.regenerate_icons() + return 1 + // + if (istype(user, /mob/living/carbon/monkey/)) + user << "\blue You feel a soothing energy invigorate you." + user.adjustOxyLoss(-25) + user.adjustToxLoss(-25) + user.adjustBruteLoss(-25) + user.adjustFireLoss(-25) + user.adjustBrainLoss(-25) + return 1 + else user << "Nothing happens." + if("injure") + if (istype(user, /mob/living/carbon/)) + user << "\red A painful discharge of energy strikes you!" + user.adjustOxyLoss(rand(5,25)) + user.adjustToxLoss(rand(5,25)) + user.adjustBruteLoss(rand(5,25)) + user.adjustFireLoss(rand(5,25)) + user.adjustBrainLoss(rand(5,25)) + user.radiation += 25 + user.nutrition -= min(50, user.nutrition) + user.make_dizzy(6) + user.weakened += 6 + return 1 + else user << "Nothing happens." + if("stun") + if (istype(user, /mob/living/carbon/)) + user << "\red A powerful force overwhelms your consciousness." + user.weakened += 45 + user.stuttering += 45 + if(prob(50)) + user.stunned += rand(1,10) + return 1 + else user << "Nothing happens." + if("roboheal") + if (istype(user, /mob/living/silicon/robot)) + user << "\blue Your systems report damaged components mending by themselves!" + user.adjustBruteLoss(rand(-10,-30)) + user.adjustFireLoss(rand(-10,-30)) + return 1 + else user << "Nothing happens." + if("robohurt") + if (istype(user, /mob/living/silicon/robot)) + user << "\red Your systems report severe damage has been inflicted!" + user.adjustBruteLoss(rand(10,50)) + user.adjustFireLoss(rand(10,50)) + return 1 + else user << "Nothing happens." + if("forcefield") + while(created_field.len < 16) + var/obj/effect/energy_field/E = new (locate(user.x,user.y,user.z)) + created_field.Add(E) + E.strength = 1 + E.density = 1 + E.anchored = 1 + E.invisibility = 0 + return 1 + if("teleport") + var/list/randomturfs = new/list() + for(var/turf/T in orange(user, 50)) + if(!istype(T, /turf/simulated/floor) || T.density) + continue + randomturfs.Add(T) + if(randomturfs.len > 0) + user << "\red You are suddenly zapped away elsewhere!" + if (user.buckled) + user.buckled.unbuckle() + user.loc = pick(randomturfs) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is + sparks.start() + return 1 + if("sleepy") + user << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + user.drowsyness = min(user.drowsyness + rand(5,25), 50) + user.eye_blurry = min(user.eye_blurry + rand(1,3), 50) + return 1 + else if (src.effectmode == "aura") + switch(src.effecttype) + //caeltodo + if("healing") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + if(prob(10)) M << "\blue You feel a soothing energy radiating from something nearby." + M.adjustBruteLoss(-1) + M.adjustFireLoss(-1) + M.adjustToxLoss(-1) + M.adjustOxyLoss(-1) + M.adjustBrainLoss(-1) + M.updatehealth() + return 1 + if("injure") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + if(prob(10)) M << "\red You feel a painful force radiating from something nearby." + M.adjustBruteLoss(1) + M.adjustFireLoss(1) + M.adjustToxLoss(1) + M.adjustOxyLoss(1) + M.adjustBrainLoss(1) + M.updatehealth() + return 1 + if("stun") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + if(prob(10)) M << "\red Energy radiating from the [originator] is making you feel numb." + if(prob(20)) + M << "\red Your body goes numb for a moment." + M.stunned += 2 + M.weakened += 2 + M.stuttering += 2 + return 1 + if("roboheal") + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + if(prob(10)) M << "\blue SYSTEM ALERT: Beneficial energy field detected!" + M.adjustBruteLoss(-1) + M.adjustFireLoss(-1) + M.updatehealth() + return 1 + if("robohurt") + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + if(prob(10)) M << "\red SYSTEM ALERT: Harmful energy field detected!" + M.adjustBruteLoss(1) + M.adjustFireLoss(1) + M.updatehealth() + return 1 + if("cellcharge") + for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge += 10 + for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge += 20 + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge += 10 + if(prob(10)) M << "\blue SYSTEM ALERT: Energy boosting field detected!" + return 1 + if("celldrain") + for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge = max(B.charge-10,0) + for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) + S.charge = max(S.charge-20,0) + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge = max(D.charge-10,0) + if(prob(10)) M << "\red SYSTEM ALERT: Energy draining field detected!" + return 1 + if("planthelper") + for (var/obj/machinery/hydroponics/H in range(src.aurarange,originator)) + //makes weeds and shrooms and stuff more potent too + if(H.planted) + H.waterlevel += 2 + H.nutrilevel += 2 + if(H.toxic > 0) + H.toxic -= 1 + H.health += 1 + if(H.pestlevel > 0) + H.pestlevel -= 1 + if(H.weedlevel > 0) + H.weedlevel -= 1 + H.lastcycle += 5 + return 1 + if("sleepy") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(prob(10)) + M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + M.drowsyness = min(M.drowsyness + 1, 25) + M.eye_blurry = min(M.eye_blurry + 1, 25) + return 1 + else if (src.effectmode == "pulse") + for(var/mob/O in viewers(originator, null)) + O.show_message(text("[] emits a pulse of energy!", originator), 1) + switch(src.effecttype) + //caeltodo + if("healing") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\blue A wave of energy invigorates you." + M.adjustBruteLoss(-5) + M.adjustFireLoss(-5) + M.adjustToxLoss(-5) + M.adjustOxyLoss(-5) + M.adjustBrainLoss(-5) + M.updatehealth() + return 1 + if("injure") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\red A wave of energy causes you great pain!" + M.adjustBruteLoss(5) + M.adjustFireLoss(5) + M.adjustToxLoss(5) + M.adjustOxyLoss(5) + M.adjustBrainLoss(5) + M.make_dizzy(6) + M.weakened += 3 + M.updatehealth() + return 1 + if("stun") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\red A wave of energy overwhelms your senses!" + M.paralysis += 3 + M.weakened += 4 + M.stuttering += 4 + return 1 + if("roboheal") + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!" + M.adjustBruteLoss(-10) + M.adjustFireLoss(-10) + M.updatehealth() + return 1 + if("robohurt") + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!" + M.adjustBruteLoss(10) + M.adjustFireLoss(10) + M.updatehealth() + return 1 + if("cellcharge") + for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge += 250 + for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge += 400 + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge += 250 + M << "\blue SYSTEM ALERT: Large energy boost detected!" + return 1 + if("celldrain") + for (var/obj/machinery/power/apc/C in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge = max(B.charge-500,0) + for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) + S.charge = max(S.charge-400,0) + for (var/mob/living/silicon/robot/M in range(src.aurarange,originator)) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge = max(D.charge-500,0) + M << "\red SYSTEM ALERT: Severe energy drain detected!" + return 1 + if("planthelper") + //makes weeds and shrooms and stuff more potent too + for (var/obj/machinery/hydroponics/H in range(src.aurarange,originator)) + if(H.planted) + H.dead = 0 + H.waterlevel = 200 + H.nutrilevel = 200 + H.toxic = 0 + H.health = 100 + H.pestlevel = 0 + H.weedlevel = 0 + H.lastcycle = H.cycledelay + return 1 + if("teleport") + for (var/mob/living/M in range(src.aurarange,originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + var/list/randomturfs = new/list() + for(var/turf/T in orange(M, 30)) + if(!istype(T, /turf/simulated/floor) || T.density) + continue + randomturfs.Add(T) + if(randomturfs.len > 0) + M << "\red You are displaced by a strange force!" + if(M.buckled) + M.buckled.unbuckle() + M.loc = pick(randomturfs) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is + sparks.start() + return 1 + if("dnaswitch") + for(var/mob/living/H in range(src.aurarange,originator)) + if(ishuman(H) && istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + + if(prob(30)) + H << pick("\green You feel a little different.","\green You feel strange.","\green You feel different.") + //todo + if (H.gender == FEMALE) + H.gender = MALE + else + H.gender = FEMALE + /*H.dna.ready_dna(H) + H.update_body() + H.update_face()*/ + return 1 + if("emp") + empulse(get_turf(originator), aurarange/2, aurarange) + return 1 + if("sleepy") + for (var/mob/living/carbon/M in range(src.aurarange,originator)) + if(prob(30)) + M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + if(prob(50)) + M.drowsyness = min(M.drowsyness + rand(1,5), 25) + if(prob(50)) + M.eye_blurry = min(M.eye_blurry + rand(1,5), 25) + return 1 + else if (src.effectmode == "worldpulse") + for(var/mob/O in viewers(originator, null)) + O.show_message(text("[] emits a powerful burst of energy!", originator), 1) + switch(src.effecttype) + if("healing") + for (var/mob/living/carbon/M in range(200, originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\blue Waves of soothing energy wash over you." + M.adjustBruteLoss(-3) + M.adjustFireLoss(-3) + M.adjustToxLoss(-3) + M.adjustOxyLoss(-3) + M.adjustBrainLoss(-3) + M.updatehealth() + return 1 + if("injure") + for (var/mob/living/carbon/human/M in range(200, originator)) + M << "\red A wave of painful energy strikes you!" + M.adjustBruteLoss(3) + M.adjustFireLoss(3) + M.adjustToxLoss(3) + M.adjustOxyLoss(3) + M.adjustBrainLoss(3) + M.updatehealth() + return 1 + if("stun") + for (var/mob/living/carbon/M in range(200, originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\red A powerful force causes you to black out momentarily." + M.paralysis += 5 + M.weakened += 8 + M.stuttering += 8 + return 1 + if("roboheal") + for (var/mob/living/silicon/robot/M in range(200, originator)) + M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!" + M.adjustBruteLoss(-5) + M.adjustFireLoss(-5) + M.updatehealth() + return 1 + if("robohurt") + for (var/mob/living/silicon/robot/M in range(200, originator)) + M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!" + M.adjustBruteLoss(5) + M.adjustFireLoss(5) + M.updatehealth() + return 1 + if("cellcharge") + for (var/obj/machinery/power/apc/C in range(200, originator)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge += 100 + for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge += 250 + for (var/mob/living/silicon/robot/M in world) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge += 100 + M << "\blue SYSTEM ALERT: Energy boost detected!" + return 1 + if("celldrain") + for (var/obj/machinery/power/apc/C in range(200, originator)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge = max(B.charge-250,0) + for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) + S.charge = max(S.charge-250,0) + for (var/mob/living/silicon/robot/M in world) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge = max(D.charge-250,0) + M << "\red SYSTEM ALERT: Energy drain detected!" + return 1 + if("teleport") + for (var/mob/living/M in range(200, originator)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + var/list/randomturfs = new/list() + for(var/turf/T in orange(M, 15)) + if(!istype(T, /turf/simulated/floor) || T.density) + continue + randomturfs.Add(T) + if(randomturfs.len > 0) + M << "\red You are displaced by a strange force!" + if(M.buckled) + M.buckled.unbuckle() + M.loc = pick(randomturfs) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(originator)) //no idea what the 0 is + sparks.start() + return 1 + if("dnaswitch") + for(var/mob/living/H in range(200, originator)) + if(ishuman(H) && istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + + if(prob(30)) + H << pick("\green You feel a little different.","\green You feel strange.","\green You feel different.") + //todo + if (H.gender == FEMALE) + H.gender = MALE + else + H.gender = FEMALE + /*H.dna.ready_dna(H) + H.update_body() + H.update_face()*/ + return 1 + if("sleepy") + for(var/mob/living/H in range(200, originator)) + H.drowsyness = min(H.drowsyness + rand(5,15), 50) + H.eye_blurry = min(H.eye_blurry + rand(5,15), 50) + return 1 + +//initially for the force field artifact +/datum/artifact_effect/proc/update_move(var/atom/originator) + switch(effecttype) + if("forcefield") + while(created_field.len < 16) + //for now, just instantly respawn the fields when they get destroyed + var/obj/effect/energy_field/E = new (locate(originator.x,originator.y,originator)) + created_field.Add(E) + E.strength = 1 + E.density = 1 + E.anchored = 1 + E.invisibility = 0 + + var/obj/effect/energy_field/E = created_field[1] + E.loc = locate(originator.x + 2,originator.y + 2,originator.z) + E = created_field[2] + E.loc = locate(originator.x + 2,originator.y + 1,originator.z) + E = created_field[3] + E.loc = locate(originator.x + 2,originator.y,originator.z) + E = created_field[4] + E.loc = locate(originator.x + 2,originator.y - 1,originator.z) + E = created_field[5] + E.loc = locate(originator.x + 2,originator.y - 2,originator.z) + E = created_field[6] + E.loc = locate(originator.x + 1,originator.y + 2,originator.z) + E = created_field[7] + E.loc = locate(originator.x + 1,originator.y - 2,originator.z) + E = created_field[8] + E.loc = locate(originator.x,originator.y + 2,originator.z) + E = created_field[9] + E.loc = locate(originator.x,originator.y - 2,originator.z) + E = created_field[10] + E.loc = locate(originator.x - 1,originator.y + 2,originator.z) + E = created_field[11] + E.loc = locate(originator.x - 1,originator.y - 2,originator.z) + E = created_field[12] + E.loc = locate(originator.x - 2,originator.y + 2,originator.z) + E = created_field[13] + E.loc = locate(originator.x - 2,originator.y + 1,originator.z) + E = created_field[14] + E.loc = locate(originator.x - 2,originator.y,originator.z) + E = created_field[15] + E.loc = locate(originator.x - 2,originator.y - 1,originator.z) + E = created_field[16] + E.loc = locate(originator.x - 2,originator.y - 2,originator.z) diff --git a/code/modules/research/xenoarchaeology/artifact_harvester.dm b/code/modules/research/xenoarchaeology/unknown_harvester.dm similarity index 97% rename from code/modules/research/xenoarchaeology/artifact_harvester.dm rename to code/modules/research/xenoarchaeology/unknown_harvester.dm index 4aba7ae2c1f..39463888c59 100644 --- a/code/modules/research/xenoarchaeology/artifact_harvester.dm +++ b/code/modules/research/xenoarchaeology/unknown_harvester.dm @@ -1,150 +1,150 @@ - -/obj/machinery/artifact_harvester - name = "Anomaly Power Collector" - icon = 'virology.dmi' - icon_state = "incubator" //incubator_on - anchored = 1 - density = 1 - var/harvesting = 0 - var/obj/item/weapon/anobattery/inserted_battery - var/obj/machinery/artifact/cur_artifact - var/obj/machinery/analyser_pad/owned_pad = null - -/obj/machinery/artifact_harvester/New() - ..() - spawn(10) - owned_pad = locate() in orange(1, src) - -/obj/machinery/artifact_harvester/attackby(var/obj/I as obj, var/mob/user as mob) - if(istype(I,/obj/item/weapon/anobattery)) - if(!inserted_battery) - user << "You insert the battery." - user.drop_item() - I.loc = src - src.inserted_battery = I - return - else - return..() - -/obj/machinery/artifact_harvester/process() - if(stat & (NOPOWER|BROKEN)) - return - use_power(350) - - if(harvesting) - use_power(250) - inserted_battery.stored_charge += 10 - if(inserted_battery.stored_charge >= inserted_battery.capacity) - inserted_battery.stored_charge = inserted_battery.capacity - harvesting = 0 - cur_artifact.anchored = 0 - cur_artifact.being_used = 0 - src.visible_message("[name] states, \"Battery is full.\"") - icon_state = "incubator" - return - -/obj/machinery/artifact_harvester/interact(var/mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - user.machine = src - var/dat = "Artifact Power Harvester
" - dat += "

" - // - if(owned_pad) - if(harvesting) - dat += "Please wait. Harvesting in progress ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%).
" - dat += "Halt early
" - else - if(inserted_battery) - dat += "[inserted_battery.name] inserted, charge level: [inserted_battery.stored_charge]/[inserted_battery.capacity] ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%)
" - dat += "Energy signature ID:[inserted_battery.battery_effect.artifact_id == "" ? "???" : "[inserted_battery.battery_effect.artifact_id]"]
" - dat += "Eject battery
" - dat += "Drain battery of all charge
" - dat += "Begin harvesting
" - - else - dat += "No battery inserted.
" - else - dat += "Unable to locate analysis pad.
" - // - dat += "
" - dat += "Refresh Close
" - user << browse(dat, "window=artharvester;size=450x500") - onclose(user, "artharvester") - -/obj/machinery/artifact_harvester/Topic(href, href_list) - - if (href_list["harvest"]) - //locate artifact on analysis pad - cur_artifact = null - var/articount = 0 - var/obj/machinery/artifact/analysed - for(var/obj/machinery/artifact/A in get_turf(owned_pad)) - analysed = A - articount++ - - var/mundane = 0 - for(var/obj/O in get_turf(owned_pad)) - if(!istype(O, /obj/machinery/artifact) && !istype(O, /obj/machinery/analyser_pad)) - mundane++ - break - for(var/mob/O in get_turf(owned_pad)) - if(!istype(O, /obj/machinery/artifact)) - mundane++ - break - - if(articount == 1 && !mundane) - cur_artifact = analysed - //check to see if the battery is compatible - if(inserted_battery) - if(inserted_battery.battery_effect.artifact_id == cur_artifact.my_effect.artifact_id || inserted_battery.stored_charge == 0) - harvesting = 1 - cur_artifact.anchored = 1 - cur_artifact.being_used = 1 - icon_state = "incubator_on" - var/message = "[src] states, \"Beginning artifact energy harvesting.\"" - src.visible_message(message, message) - // - inserted_battery.battery_effect = cur_artifact.my_effect - else - var/message = "[src] states, \"Cannot harvest. Incompatible energy signatures detected.\"" - src.visible_message(message, message) - else if(cur_artifact) - var/message = "[src] states, \"Cannot harvest. No battery inserted.\"" - src.visible_message(message, message) - else if(articount > 1 || mundane) - var/message = "[src] states, \"Cannot harvest. Error isolating energy signature.\"" - src.visible_message(message, message) - else if(!articount) - var/message = "[src] states, \"Cannot harvest. No noteworthy energy signature isolated.\"" - src.visible_message(message, message) - else if (cur_artifact.being_used) - var/message = "[src] states, \"Cannot harvest. Too much interferance from energy scan.\"" - src.visible_message(message, message) - - if (href_list["stopharvest"]) - if(harvesting) - harvesting = 0 - cur_artifact.anchored = 0 - cur_artifact.being_used = 0 - src.visible_message("[name] states, \"Harvesting interrupted.\"") - icon_state = "incubator" - - - if (href_list["ejectbattery"]) - src.inserted_battery.loc = src.loc - src.inserted_battery = null - - if (href_list["drainbattery"]) - use_power(100) - src.inserted_battery.battery_effect.artifact_id = "" - src.inserted_battery.stored_charge = 0 - var/message = "[src] states, \"Battery drained of all charge.\"" - src.visible_message(message, message) - - if(href_list["close"]) - usr << browse(null, "window=artharvester") - usr.machine = null - - src.updateDialog() - return + +/obj/machinery/artifact_harvester + name = "Anomaly Power Collector" + icon = 'virology.dmi' + icon_state = "incubator" //incubator_on + anchored = 1 + density = 1 + var/harvesting = 0 + var/obj/item/weapon/anobattery/inserted_battery + var/obj/machinery/artifact/cur_artifact + var/obj/machinery/analyser_pad/owned_pad = null + +/obj/machinery/artifact_harvester/New() + ..() + spawn(10) + owned_pad = locate() in orange(1, src) + +/obj/machinery/artifact_harvester/attackby(var/obj/I as obj, var/mob/user as mob) + if(istype(I,/obj/item/weapon/anobattery)) + if(!inserted_battery) + user << "You insert the battery." + user.drop_item() + I.loc = src + src.inserted_battery = I + return + else + return..() + +/obj/machinery/artifact_harvester/process() + if(stat & (NOPOWER|BROKEN)) + return + use_power(350) + + if(harvesting) + use_power(250) + inserted_battery.stored_charge += 10 + if(inserted_battery.stored_charge >= inserted_battery.capacity) + inserted_battery.stored_charge = inserted_battery.capacity + harvesting = 0 + cur_artifact.anchored = 0 + cur_artifact.being_used = 0 + src.visible_message("[name] states, \"Battery is full.\"") + icon_state = "incubator" + return + +/obj/machinery/artifact_harvester/interact(var/mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + user.machine = src + var/dat = "Artifact Power Harvester
" + dat += "

" + // + if(owned_pad) + if(harvesting) + dat += "Please wait. Harvesting in progress ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%).
" + dat += "
Halt early
" + else + if(inserted_battery) + dat += "[inserted_battery.name] inserted, charge level: [inserted_battery.stored_charge]/[inserted_battery.capacity] ([(inserted_battery.stored_charge/inserted_battery.capacity)*100]%)
" + dat += "Energy signature ID:[inserted_battery.battery_effect.artifact_id == "" ? "???" : "[inserted_battery.battery_effect.artifact_id]"]
" + dat += "Eject battery
" + dat += "Drain battery of all charge
" + dat += "Begin harvesting
" + + else + dat += "No battery inserted.
" + else + dat += "Unable to locate analysis pad.
" + // + dat += "
" + dat += "Refresh Close
" + user << browse(dat, "window=artharvester;size=450x500") + onclose(user, "artharvester") + +/obj/machinery/artifact_harvester/Topic(href, href_list) + + if (href_list["harvest"]) + //locate artifact on analysis pad + cur_artifact = null + var/articount = 0 + var/obj/machinery/artifact/analysed + for(var/obj/machinery/artifact/A in get_turf(owned_pad)) + analysed = A + articount++ + + var/mundane = 0 + for(var/obj/O in get_turf(owned_pad)) + if(!istype(O, /obj/machinery/artifact) && !istype(O, /obj/machinery/analyser_pad)) + mundane++ + break + for(var/mob/O in get_turf(owned_pad)) + if(!istype(O, /obj/machinery/artifact)) + mundane++ + break + + if(articount == 1 && !mundane) + cur_artifact = analysed + //check to see if the battery is compatible + if(inserted_battery) + if(inserted_battery.battery_effect.artifact_id == cur_artifact.my_effect.artifact_id || inserted_battery.stored_charge == 0) + harvesting = 1 + cur_artifact.anchored = 1 + cur_artifact.being_used = 1 + icon_state = "incubator_on" + var/message = "[src] states, \"Beginning artifact energy harvesting.\"" + src.visible_message(message, message) + // + inserted_battery.battery_effect = cur_artifact.my_effect + else + var/message = "[src] states, \"Cannot harvest. Incompatible energy signatures detected.\"" + src.visible_message(message, message) + else if(cur_artifact) + var/message = "[src] states, \"Cannot harvest. No battery inserted.\"" + src.visible_message(message, message) + else if(articount > 1 || mundane) + var/message = "[src] states, \"Cannot harvest. Error isolating energy signature.\"" + src.visible_message(message, message) + else if(!articount) + var/message = "[src] states, \"Cannot harvest. No noteworthy energy signature isolated.\"" + src.visible_message(message, message) + else if (cur_artifact.being_used) + var/message = "[src] states, \"Cannot harvest. Too much interferance from energy scan.\"" + src.visible_message(message, message) + + if (href_list["stopharvest"]) + if(harvesting) + harvesting = 0 + cur_artifact.anchored = 0 + cur_artifact.being_used = 0 + src.visible_message("[name] states, \"Harvesting interrupted.\"") + icon_state = "incubator" + + + if (href_list["ejectbattery"]) + src.inserted_battery.loc = src.loc + src.inserted_battery = null + + if (href_list["drainbattery"]) + use_power(100) + src.inserted_battery.battery_effect.artifact_id = "" + src.inserted_battery.stored_charge = 0 + var/message = "[src] states, \"Battery drained of all charge.\"" + src.visible_message(message, message) + + if(href_list["close"]) + usr << browse(null, "window=artharvester") + usr.machine = null + + src.updateDialog() + return diff --git a/code/modules/research/xenoarchaeology/artifact_synthetic.dm b/code/modules/research/xenoarchaeology/unknown_synthetic.dm similarity index 96% rename from code/modules/research/xenoarchaeology/artifact_synthetic.dm rename to code/modules/research/xenoarchaeology/unknown_synthetic.dm index 3b21ac36f85..24bd324e4c0 100644 --- a/code/modules/research/xenoarchaeology/artifact_synthetic.dm +++ b/code/modules/research/xenoarchaeology/unknown_synthetic.dm @@ -1,144 +1,144 @@ - -/obj/item/weapon/anobattery - name = "Anomaly power battery" - icon = 'xenoarchaeology.dmi' - icon_state = "anobattery0" - var/datum/artifact_effect/battery_effect - var/capacity = 200 - var/stored_charge = 0 - -/obj/item/weapon/anobattery/New() - battery_effect = new() - -/obj/item/weapon/anobattery/proc/UpdateSprite() - var/p = (stored_charge/capacity)*100 - icon_state = "anobattery[round(p,25)]" - -/obj/item/weapon/anodevice - name = "Anomaly power utilizer" - icon = 'xenoarchaeology.dmi' - icon_state = "anodev" - var/cooldown = 0 - var/activated = 0 - var/time = 50 - var/obj/item/weapon/anobattery/inserted_battery - -/obj/item/weapon/anodevice/New() - spawn(10) - pulse() - -/obj/item/weapon/anodevice/proc/UpdateSprite() - if(!inserted_battery) - icon_state = "anodev" - return - var/p = (inserted_battery.stored_charge/inserted_battery.capacity)*100 - var/s = round(p,25) - icon_state = "anodev[s]" - -/obj/item/weapon/anodevice/interact(var/mob/user) - user.machine = src - var/dat = "Anomalous Materials Energy Utiliser
" - if(activated) - dat += "Device active, stand by.
" - else if(cooldown) - dat += "Cooldown in progress, please wait.
" - else - if(!inserted_battery) - dat += "Please insert battery
" - else - dat += "[inserted_battery] inserted, anomaly ID: [inserted_battery.battery_effect.artifact_id == "" ? "???" : "[inserted_battery.battery_effect.artifact_id]"]
" - dat += "Total Power: [inserted_battery.stored_charge]/[inserted_battery.capacity]

" - dat += "Timed activation:
-- - [time >= 1000 ? "[time/10]" : time >= 100 ? " [time/10]" : " [time/10]" ] + ++
" - if(cooldown && !activated) - dat += "Cooldown in progress.
" - else if(activated) - dat += "Stop timer
" - else - dat += "Start timer
" - dat += "Eject battery
" - dat += "Refresh
" - dat += "Close
" - - user << browse(dat, "window=anodevice;size=400x500") - onclose(user, "anodevice") - return - -/obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob) - if(istype(I, /obj/item/weapon/anobattery)) - if(!inserted_battery) - user << "\blue You insert the battery." - user.drop_item() - I.loc = src - inserted_battery = I - UpdateSprite() - else - return ..() - -/obj/item/weapon/anodevice/attack_self(var/mob/user as mob) - return src.interact(user) - -/obj/item/weapon/anodevice/proc/pulse() - if(activated) - if(time <= 0 || !inserted_battery) - time = 0 - activated = 0 - var/turf/T = get_turf(src) - T.visible_message("\icon[src]\blue The utiliser device buzzes.", "\icon[src]\blue You hear something buzz.") - else - inserted_battery.battery_effect.DoEffect(src) - time -= 10 - inserted_battery.stored_charge -= 10 + rand(-1,1) - cooldown += 10 - else if(cooldown > 0) - cooldown -= 10 - if(cooldown <= 0) - cooldown = 0 - var/turf/T = get_turf(src) - T.visible_message("\icon[src]\blue The utiliser device chimes.", "\icon[src]\blue You hear something chime.") - - spawn(10) - pulse() - -/obj/item/weapon/anodevice/Topic(href, href_list) - - if(href_list["neg_changetime_max"]) - time += -100 - if(time > inserted_battery.capacity) - time = inserted_battery.capacity - else if (time < 0) - time = 0 - if(href_list["neg_changetime"]) - time += -10 - if(time > inserted_battery.capacity) - time = inserted_battery.capacity - else if (time < 0) - time = 0 - if(href_list["changetime"]) - time += 10 - if(time > inserted_battery.capacity) - time = inserted_battery.capacity - else if (time < 0) - time = 0 - if(href_list["changetime_max"]) - time += 100 - if(time > inserted_battery.capacity) - time = inserted_battery.capacity - else if (time < 0) - time = 0 - - if(href_list["stoptimer"]) - activated = 0 - - if(href_list["starttimer"]) - activated = 1 - - if(href_list["ejectbattery"]) - inserted_battery.loc = get_turf(src) - inserted_battery = null - UpdateSprite() - - if(href_list["close"]) - usr << browse(null, "window=anodevice") - usr.machine = null - else if(usr) - src.interact(usr) + +/obj/item/weapon/anobattery + name = "Anomaly power battery" + icon = 'xenoarchaeology.dmi' + icon_state = "anobattery0" + var/datum/artifact_effect/battery_effect + var/capacity = 200 + var/stored_charge = 0 + +/obj/item/weapon/anobattery/New() + battery_effect = new() + +/obj/item/weapon/anobattery/proc/UpdateSprite() + var/p = (stored_charge/capacity)*100 + icon_state = "anobattery[round(p,25)]" + +/obj/item/weapon/anodevice + name = "Anomaly power utilizer" + icon = 'xenoarchaeology.dmi' + icon_state = "anodev" + var/cooldown = 0 + var/activated = 0 + var/time = 50 + var/obj/item/weapon/anobattery/inserted_battery + +/obj/item/weapon/anodevice/New() + spawn(10) + pulse() + +/obj/item/weapon/anodevice/proc/UpdateSprite() + if(!inserted_battery) + icon_state = "anodev" + return + var/p = (inserted_battery.stored_charge/inserted_battery.capacity)*100 + var/s = round(p,25) + icon_state = "anodev[s]" + +/obj/item/weapon/anodevice/interact(var/mob/user) + user.machine = src + var/dat = "Anomalous Materials Energy Utiliser
" + if(activated) + dat += "Device active, stand by.
" + else if(cooldown) + dat += "Cooldown in progress, please wait.
" + else + if(!inserted_battery) + dat += "Please insert battery
" + else + dat += "[inserted_battery] inserted, anomaly ID: [inserted_battery.battery_effect.artifact_id == "" ? "???" : "[inserted_battery.battery_effect.artifact_id]"]
" + dat += "Total Power: [inserted_battery.stored_charge]/[inserted_battery.capacity]

" + dat += "Timed activation: -- - [time >= 1000 ? "[time/10]" : time >= 100 ? " [time/10]" : " [time/10]" ] + ++
" + if(cooldown && !activated) + dat += "Cooldown in progress.
" + else if(activated) + dat += "Stop timer
" + else + dat += "Start timer
" + dat += "Eject battery
" + dat += "Refresh
" + dat += "Close
" + + user << browse(dat, "window=anodevice;size=400x500") + onclose(user, "anodevice") + return + +/obj/item/weapon/anodevice/attackby(var/obj/I as obj, var/mob/user as mob) + if(istype(I, /obj/item/weapon/anobattery)) + if(!inserted_battery) + user << "\blue You insert the battery." + user.drop_item() + I.loc = src + inserted_battery = I + UpdateSprite() + else + return ..() + +/obj/item/weapon/anodevice/attack_self(var/mob/user as mob) + return src.interact(user) + +/obj/item/weapon/anodevice/proc/pulse() + if(activated) + if(time <= 0 || !inserted_battery) + time = 0 + activated = 0 + var/turf/T = get_turf(src) + T.visible_message("\icon[src]\blue The utiliser device buzzes.", "\icon[src]\blue You hear something buzz.") + else + inserted_battery.battery_effect.DoEffect(src) + time -= 10 + inserted_battery.stored_charge -= 10 + rand(-1,1) + cooldown += 10 + else if(cooldown > 0) + cooldown -= 10 + if(cooldown <= 0) + cooldown = 0 + var/turf/T = get_turf(src) + T.visible_message("\icon[src]\blue The utiliser device chimes.", "\icon[src]\blue You hear something chime.") + + spawn(10) + pulse() + +/obj/item/weapon/anodevice/Topic(href, href_list) + + if(href_list["neg_changetime_max"]) + time += -100 + if(time > inserted_battery.capacity) + time = inserted_battery.capacity + else if (time < 0) + time = 0 + if(href_list["neg_changetime"]) + time += -10 + if(time > inserted_battery.capacity) + time = inserted_battery.capacity + else if (time < 0) + time = 0 + if(href_list["changetime"]) + time += 10 + if(time > inserted_battery.capacity) + time = inserted_battery.capacity + else if (time < 0) + time = 0 + if(href_list["changetime_max"]) + time += 100 + if(time > inserted_battery.capacity) + time = inserted_battery.capacity + else if (time < 0) + time = 0 + + if(href_list["stoptimer"]) + activated = 0 + + if(href_list["starttimer"]) + activated = 1 + + if(href_list["ejectbattery"]) + inserted_battery.loc = get_turf(src) + inserted_battery = null + UpdateSprite() + + if(href_list["close"]) + usr << browse(null, "window=anodevice") + usr.machine = null + else if(usr) + src.interact(usr) diff --git a/icons/obj/cryogenics.dmi b/icons/obj/cryogenics.dmi index 5b5e55ca48b796b2098e65a29164cbb78cc15dd0..e063421fd529fa5f5dae8b2f58c6f459e2f729e3 100644 GIT binary patch literal 14976 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 z zY%gZdkfc3enn_58$$`j>f|*Y}VQqow^8&hx_rBBt-0AcdPCe5t_vrl*+`5XtyP*j3 znZru42eDi>95^>(Y*b$Ypg;&V`KyUj8J8z+r)>J;1+po7WjV*IrMaK2Zs6O6S^emZAIWnFnis%w4015b!3&5v^ey2NSaVbUTpMXSd+?AjNVld;c!zo=AK)x5^zBAR00G=wC9T zJD|uj%(ihOKGbUh{u5Z`hlYyvKK-TZ64UsRJ@rTU;eB2GEyS!@_bKzM^0C*8`$GHiQ!Sf2M#GjC=2R3y;0ln+#Y(k^cWc z(E0?$w~UH6ijMnZ^8b|O)2Cl09|kFp^Exj{VUs8-Dqe1fVV}q^Z7Ux-H?ypv1pG&0 z2yxTN+myGF!&b&HHYqCVClUEfV=UzljG11=q^rX`@KJO)sO}S?UvN0KY039Fwntd1 zt~Ugcxn;sc8#`ZS0KwdFySp#^u3%a?Co-sOt+O#| zFRUN_9CV9TE5GhR-nH+QD|qeP<#CIQ6>Bsx@nAd=b2!7|D;Yx}VWR!Qj&g_avSNJv z@=w*xKKLCK@Fy&$bqNoUo%=ASyj`^Cf5A4K`C|=9QSO|Yy<|^8ygF;YVb)QrTgu4E zDbTLlt&9$9o%9yK$_t3<5|$+X&<)pD z_btOrFOL5&Qde|XA=UK!w-4l}fYr+27fR^ecQ?JBjkE8M&L)JW*%Z({(gnJxV7 zjt7T|70bcF(M~1Pn#~eKX<*cC$O=B=?bTvY&$TEJ-}GEDLQk|LnQo7XcMf;(_P2s{ dzw!_Ot>LmjFt6nR>@THoU!;|#Y9&lV|33>W=2HLw literal 11432 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 WXc6<7B)xhJc%bzVT&?je{Qm%mxm4@` diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index a2ae3e00fd6da0678a2e5c5e3fa5e6c98fed268e..1cfdb8384b6a99193a317309c633f3ef8c642dee 100644 GIT binary patch delta 21501 zcmZ^~byyT{*fzX$cO%j%DIzW1DWG(RpdcVp!phJg($dIENw%h0?U5G z?|I($`~LZkV-J|!xo75%E6(%0?pYi~ADu$43NZqJe@oAFKJET`fHJfyahrTX_zQ~x zTV*qslh)$h`h$V_hflegak0Gyy3@QYZr_^!TU4^2qK$Zr*TlwtLon_$^YhSEv_H2@ zt)DOQc)@ z2pCgG3z}7m6B{}swxl-BnTR98j6OWQ*5yp<%p6j>MkTY!s<6`ctO?458_1~H7eXgl zPFpmPT*%RP#?Z}mtP7x#F&G_fa)4XIrXuMSAj1C6YK7D9tSel6=%ucWDENJ(bTS=R zvHoiMtT9_1+4At=!k53V2rn-&p3~sqg~<1>e)Bwj&4YrfiXxLv{F8`x@ji9BORGDg?e3IPDQHD&-DNXkAxqXfNSYq$}(3B)(JTmj|-Sd|yiZ8?HZ5PvKVM0lA%z=x|K6!iX zib9eME8@fhC-182>V(p@aAQA1RM@CTfg7?EK`Y|up5V9h^)_y9IB-rG2I|D)1+N(k z+J_H&M!rf_du(dZ#;9B&1H>7Kl~~DM7#VfBi1IEaH#l;LI z{eCdtu%2S(+L5oGbnJ%u=LQL^I8?R%VcJo{*EU^4?6dF=hcyA$G63P=`S6w{9#Cty zG>i6?j@|CZCDh@f4VPynZC~SM>dRG*4o$Z3^wq8>rt$tA*z`bQz{}|IW$xCjV}}r7 zNl6JQe%Q+8O&BIyv(Hg)ev{;9VnWDd(92RomISp(&R+B&$gfwmLdLfNvXW9#XmF;- zSgUpoOMa!_PYW)sijO1;q}sn|-T^08DEc5dxj)7>M@y~S*DE+evj>qlA%Ww#)2|d+ z69Q*lRM^Qoay1!yPB({aglLZ^GzD|^^1PWD!attcvmBi+`Ygw+uG%D!SP^Tc@U8lU z3(>Z}W3YstD7ScQ^a;_gNA}o8DzW~2eMo`^8A=t57i1XcEn1?iu^ye=jwQk#6-mIxlPRxP%!`Rb1N+NZ9g7h)? zL5DdBWG}=-n0sqlMmcFQtI&LwKZ-$c=iya+;EWQ7bOfH9oCF)vQavct`HDVNBScFW z*|*+VCZNtC?l4FxeYx;{8}LKf&>ndIDKSYKeszV76GUxEq9B#1ZmBxX4UdVP`ee`A zu~nY*zs8fADE2O)NR>P%CnrdI!)V%El&z;HrAi*z)YMex z3iAeCjLIswJ`Q^;;#ay~(KC3>?hwSnQ7T+<)#6`oRa%N~GHOi|0NjX#NTtw4b@C`B zKg|Ls$|_UPppFL#g z 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 delta 20741 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 TTI1aB00000NkvXXu0mjfrlk8Q diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index 1ba74f830a8a2be84db982da0238b7124a32f217..a2950c0b0e66e6e009598bdbf7470cf5e748c825 100644 GIT binary patch literal 9127 zcma)CXFOY9+>aTQ+ErU=QJYeVMyT4Gs#2o0_g*E$R$EauLv31Wv}(qzQ5vfLR*6}A z#tI?N^}KvuJumLL_vD_>IluM&{(k4=zBSNOr=en_0)ap@ni{G`z`gMLq96y_1hj)F zaQpbi#LQRK&d0{v$mIy>J~?`AW$)JW!>#T&ShVfq z5_r||oXu}?h}K#_m&Pr5sTu_00col#n*`?Vz{5N(R%qjYQ7xQbl&;p z+dlh4xh!{z-2FM><&v*Czn!L#9Zyrh3xCVl#L>nZ!hok zG3Fxg^untHJ0&A07l(`Q>N+V)PVW7XU%%)n=W*K7-ripGyFJJ9n=nn5CGk*Zr^lad zvt|R)3*ViS6aOBma3~0rs#l(-!=I*ccW4RRw1dSh9KRs~)tL?N=Xp;*Jd8G|Id8hl zW7$?)tKXz_n>yaD*k-kYbUIW%pB$uGY-q^OL`8(4FlgS6?O6;74ptxzM|}ASOt^@} z^*#)zcu~cD_}Hi0E4XoF@%RmWLSL%JT_Gbvly@KM$I$l>FBNU=gvB6VJ&D`H`sEBJ zC+$|XJWsT>Zx~f(Ou_UnOb(cAQJ7kVf)RVN4SXnSKY;=o`hCt_l{c*ov)8n$uE>R^ zrKaY|9f{u>B>_ZV^lzn4>F;~oI=4%V3W0Dlyd~{k^qk&88q}PL3;y?gcITF?uJYoA zt$O?h>ce!Fn*rH=eCp2(XQUKNkSPMQH);7GcZ3(1FBTEE=imBt8p;DgqGQcOVq704 zXxxnmRCM3CUR9l!UKs+sfbtZ!K5WX?E00!cyNM4~QYoUFnVtPHmVz5LwFA}{rK4zJ30Vv4^=rvu7k{b3O#`amFEb5UQBYZAA3dI4Bhi+54y2MU1zJdOGNn^%7BD3`sQ zA9^gCxxCiY*f>=~I(_A9_z4bbxv3;jK-CC)ssf6L@>gD2p5#fTc>t562W(xBbd1SP zM!D0e=!fy9A^zgMo>*F1lCf;=?SUnZRre93k;8Z4)@kIGOTLuL-(udKJ z0rx7z9W%(PnZqo}OW0F6-}Wz)xt3?JQ$-@_NNRMZXF1ylkr^~nnX@+F=N9jO|)def>~c}lsIm#ZG4Ci@fBf9;!V?7 z=kE&o!tgfgb~ds3KF)F4RYIjdPD9oF!C_^{(y7MU=+`GjsTb&7wcBLM6COm3){I0dMX6_o^chf6DpKM&Ro?xJOA1or_ahEGbO_9z z`dtQP9=cI_Lp$wNW2tQEJY|WNe&-)BTPV&xZ1b46M=F6+V5OXA`FN>(o2`mUMqX{D zh+Zs=x7%TJ-ZQ1HiiJ|yIjlDGa*4o;-@K&~g8$f=qXqTYpVd$H!!fsj@ z7fAz)YQ?f{sGDf0qd~#^uMfD7Gy0d$gRYXFFcZ?8euVX^;mL^F8D@jXk1j4-ikgNf zrRM+pkDplF0h-BKeTjIudZ><8Kb%De3%U73#h*n=&)upVJT6FNBani!udTEa~!cU#G)`^oUc}o0lzV z^S8T&MQ)%@xzAG6#j~(-Qu71s% zb}O%gnwpvjUu}Jo%r)}WEjHy)`M_!6%gZvx_7$5J6!)b5iMFkU+BACaG@(4_v^h{I zL1RGqh1yr?#5nA#Cim;Q4}xKf-O(YImiYkiZ0UH;?kZ6H{r~ZKiy-c!7 zl-9zy8s6$r6*GYiYSH9(vD37++UYH@uJZSGEPaqkZKg?j(chcLi|hC!TdnfY!k0kW z)j0A1IJ4&Hv^W>{WUW#NN>=dHkyPhW971r&a9W2{jE}(F`d&*0wp-;r4mQnL_3=BJ zq56=c@gDv#mo@`l|DYK*a>g#!Z)7<<@ZrV3`WtU9Cjd4i=Q`BLJHK@h$RR2!x)ht9 z0=?Ad^#Sq&=6@R*BT}FI*YVrXFam$vNowLct#>URQQ@-2Oo2Jl#Ory=b_aXV#5)~miPFz3N?dRN^#KsL7^R!BR zC$Sfo05J||Kt{LjG!w>WXSbv_GmO8zgEbx4i!r?AVR&n8Z4JuL&tLLj4#ZT{)abd6 zOBTx~tMc+jjvXr~DA2%p4+jg$$l54B`Qu$cmrYE6NP&2n`>0Z^_3Tcj*4u4W*{?2> zVsnQ<%ws^1IT~GtDlMG$6gx&VqY*9MK;YJtj63%JVRVwF>C)8D71;|uK0dyauO|$? z1FRcyTZn-?Qn?N}TfEcKB0on0wYy)xJJL&`6R%M}DtOFt)wF&}SlP@a0 z)TaJ#f`csqs!n{laleeanE4))XV8iov*YP<-u%23OS|#vq$&OUjz1s6+c=%|(+i*+ z0g5ZSgg(_Djhl>K`>wjMCc^~iN`fkH%+>yRkzrkau=u^Jl-K76wM0idM=QoT;IcAt zb8~ZFtSx9?+|6x?vQSJ?S2vX&lHZLCZHDpC@(3D_;S||_r#SD@jLMD(9U3Cl0iwA$ zlGRP$_j|+PjnbJ=JPbwBn~aM}6ExC?+wQM~jy4}Ub1AF{%UlUQ!COW~MlQJ_{;C)L zi|-Nftg1ge9^S4PVti$55N5~~MHkrMV%JYyMLUjD(T5U}LE@w%uR|FWUStR?gVgRg~@GcyN5g))f+ct=RyDTNT-rAH5RJUdD6x`=5+ zJHMD%Ve#Z;G`|n7P+Q#D*@@u`&td+>EXVCWp+XRJ!tw&JAi8CS;jY2B^IM)FOG5BGqomo(PN^G?mnm(Oy}PIBS~QV z?$!hIO%gqpWC&*azqN*XB}=pEN&3`!eW6S#>Ih3u;u53#7TJhxA4%>^2(oRvKR)Ux z=_wDL!8zT{SnS4ZzQu@axCZ6p-=?BFHmtqq>6S5Og zZg41TG6Xrp(h^(!6j}Sndo>bX z71WoJI}b5_SnCgmD4Ynh64*LlB2#*FpaZ*)m`IyhfjVQzgUS{TAr>_(ckwp*?e|?Z z2cMZmZ6sb8qzIuGy+AkAZZqOOy;(}Kl}y}(MPFToDnlMIR`vEgyZU*2&GDNg^5-EF zlWV!O=ZRWyX!pypwbl*_zp5>VGzcbS)PX6IP8i;ynUb-G|ITRgKEUYF@Dc8l^lsp| zeM!22&3G?q4G1v^idr7(C4I=sk*@yN^gQIyx>tm;>InCq#8Y2~0^R|XrOMp~f+a4= zNk^<0B3}ll(#;3N6&iTIVrxElhq?d(0>a|zedR@muDF?!qs~rSNUusWsPN;ezq?4N za#cF?-G{g)64}p3yx?x41>~y#Qjc-pIXhBL7!MMq>J7Qgd<=g(*cxkvH2!>Whd%wA z9sGyzc23o~Y`y*@sO;!gZKwQ|$qCCBmM~7DktpArQ-9VJMlmTe4LV2<(!LEWoE58% zOetnNPb4GGgcdJ{%H%fub~ z<6~>a$Yp=DCA`DAA1Ld@N{Xo{WIHFwj4DmKB%h5Y-Ti${ZexxnFP!qC5MLqOl?=C) zzkcjN&dkjC>T^F* zV_6kWezfwev&zPo&-Skd1I?&|sbE@9l||W^Vy=QX2EzkJ2{Mo)eit#IfUC_?u_MAoc|H7 zh6@P9LbMqPV1YL3epetqZUCm)Gy|}L|Gl>C50u@K^gHX=jj?%%(h-hgB0fy>9AOFo zHXenKXa}-3KmhC#n?Ir*?Aa?q@R_Wm8oWu=B*q)2 z$2h)rmX&@1mcSg-7%e0^&K56caP}q{)g^e3!u~u2)cYKE5csl9%D7#ChCI@)4$TZc zJLI>H2MIlkFxp1j;xi9jg_d8aBlXvQ0+2DDE*Lx$CKI~WxfosEt@8smNs85c0jXbH z$k*k1*$|ze$XT63>g@h0$8wsR5B6Ot#4kR7`pp}XkIq+djzW~w=LT{0F@LFNf*L;7 zdzc{YbtS|t;^Ef+mS7STUPrh;tN*G1WdLu5LkfWjm9IyvenS+8<9A>tyTJ!;d=9d@ zI)y&3yGMyw^BEbZYz?e-!^}3YUIt~-5n9L;DV_~1(T}?(Kq#^r*!4Rr73wyp?s8?V ztZ!`zr>-y9CDa)Yp1~yF5{Rp>XbI9|YuGzXRLs6dtMEVcBlZpV9H5YJO&$eraJDZ= zGXzOLOwOy=Dt&Tl69otV1hc7jJ4#o%_}jrd(tOPYZaT@_yTdIooAO$#cx>lk*2=>F zR{2*ty%-Ua_`L|>N;H_M9K9A^j26hsuRc#43W63q1?YEk3p-*5R~rNS9^n#SWoiml zqGczKSy@JD4&nhb9)0+E9#W5bz)2vxHt>II)&BTCZxO)hxur;t^N>aWo09_y*G?}* z3-nu;EyET7bU zzSiKFO|#DJ(KR25Cc{)Bhjie5Gc7=*M>x4L$0W|M(q7oRaet|7Uyb!nrU(R}YG+_& z3LYpMV@QwoWH}k+B~-d%HzxiAWYz5-6O%z9|21dy99!RBN-{Z5B<#8(R6hwkK9 zKVXf{{&PL7Fc17G27*6Lk`{68b%6MRb2fA8j>G40T4b-V%NR6<;N%v*u|a!m znbwCq)O$ajS<6J(1o@&sh_=XCa9O9jxZ3zUcLvP%Cv))SY0KFKZpvr;aJ8%RNrYzs z22fd;Cga9G^rGBo*)-%;mihtx-wG2@H;j24k~&bbvO80Yz~ZTyHG3I zAVgVG}|mo`kZlynO4G>V5u z;yC3gXr2Ef5tB%D5nL_DtG<^7ROi}iM(hr^4k&Pc7`iF*Cv1bSE%<7(MJnJACJ|d} zdBdva<=wydvr}w9b6HvDwP=6UUr4{)A_vv!Mv)>Wu?O{Oo?9fX*e2NX$XaQS(X_pG zS`727N1IZN_}|}m&53yzTi3#p<~6?GRq9Tg$8#RbZVjBy$L>*CM4>}AZ`RG3OeS9P z1$&;Ha?e(U^#pVsF}LC`i3nzKwFksy(l3DXy{D|q^x8xo-YGX}SvZt3A5+rqcB9dp z%01mbB9_O=(ssRf?up>n`4g=InLprr!@sH51To$aaQ___q&sa1m6ENv$lbJ|h(&B6 zhF2%Y{DWlXFZM0B9Yb$g#Bk@lZ#SM!m&<(omU9GsC!1Y$_wf7tEmM}f9&RcHL7s)< zuU`Y%475tT@~u^xk8s1Da!p_x87>f%(X@!B`oPG)sb+ZcFT2+*?&V{BazsLB_Dk|k zwZ4h?{)3fJ5qx?s2y{b0`Y?!%<&`h~8HjH7=jIhP;yrx|?H+i4(yorsdxPDQmYi#- z$?`vN-lp}$W@T)!Bc5(XtX54*Hg0@+%xSt5n|`BwV9n{Jv>hSUp5WpRe@webR}j`^ zg=s(_p7Zm687!2rlg<=+r=_jOm6##LJU%v-2HUoZX;s)G2XQE#J>d9dzn^)G>E(XY zI25ShLoU7pCr@B|{C%x}@b)>mRoClNDPLdT6)+fFK0)mdJfYfmD0{=+5C=5l0}0C< zY6n7_9xl*vBn%Atj>lT0u`2Q9EKXv*LV{-*?dtRcAt!kW=i$vimjmy&TKwt4cwpjb zx+*JZlDNA!n$-FZjPQjQp}@j~@3IknyLS81Vi68b4?x!X7+U3i*vtiW$G`cwnCPUy zZ4;(!29_+Q)sQ%}@xHHUJmwzF610)wFCU7$L zkTV^9AAIJRu^(ITwEI`*0*IU(ObQ&nmM#Dz4^l}G4o(eUisjw^Rnxz`yu1w3lfs3e zeruRz?j)9suB1uq3BS{coC_a_439kw2$)YA9;8pS>pz%!-+%B~ogjOwHR~<^Yr|r& z!;c4NvE>Buj;7^SM{n8ghDO#}>NcbIPJo{bL&i>-r3sVVe5Zz{TUesAZbAz^X#dAg zZV>4G#3d_Rji1d*j;xnrGk3z=&oVb;h}rZ^{58mi5KrXp?uNZ}c=YfS24S(K6j@$y z&LyuPpZ4fcL{DtvSw>E@g1r18;=f)-+?zLCJ+;43v5$jK7fk+ff;s`uHNN^ffH;Po zQ>e$ry3Jh>=Lqsw-Z)>MscxX21Hyd^#^F)HHa2H__#u0)0O9)`v0O?!2s zDK;Vs$$-9p=Yj$Z^^4Qs&hv30mM;Ij#{LrxTwbNUR=^r~UN>*JRm@_={KE5z=Xm2z zIxV`tz-Mr!IJoQz)0dF7Uya=>DqoXKqs$6?pQQtV^6fI94~Y*g+X5*OYC2V?cQ{mb z59K;MwHbe*{6z~=9A#UJXs2&$+eaj&j6=*0i)x;m8<+K37vP_sJEMH_5qvLw6FkVSm(2LQ^fMy@KK)8 zozu%0PYOVd?p5zQSqe$#vuq1izY!!#yW%{H^BoT5`S8<|$6N0P0~Y!(J;j}%mu@rz zt9m`F-bF4W=A8e_`yK)$|AEYXglkWiJzM8q>!tQOBuXy>`zk2vW6OuMeQe#@%domT zAHWFi%XL`amBQZ9D?1nAWDd=E)T$Jo?Hi5IuTuWoppNwmDv;ajTObK9`ie`ExsIP- zvpj()0Hv}j85hXXPZBl3YUo#r!JcPRk}FtaO@6;6LGvr$d+whJ!@fFfOG|y)8u@bZ zA&`{eGgjLl=+4#O?&5$_H8L(^VGHVxt!-@CTUPy%;gh18WS#flDK{)nomSW({?x%21%8iP9_7_u9Qh3-x{%Q9oEn0l`e++7?hrYpIg#&>GtUmd z^Vfdc>@|FKW3&t@hCewCeB)5-0^eT@*`g{0Y|3%wrKIPutxF_YQC;oxwAc{%v%}Zl zpO@k7dWkr&d9;mEDI%8K1vYyFFGO%xub)VWr)$}AgSbOIDS=Bfh#KL<5NS9*Xf^CqoyNdPW?6pz##p-Z9h&( zM(4G%?Cc#xP`+1ypx5#OT1r1LCw4jjzsr;G5iRy=i=!*HOA`gZh){;d-9u_^wh!;%Rr- z{P^?6%dak|_~lAjN&KdAV~tsncxMhw=j9(xXUjU`o?0$di+<#Cf@s*wckpfowD;Hw zTeyDHCs()p5aSZNZnRhj3Hw9$p}pzLo{!reQ{V3sruzcc2h=AY=7io!MQJPk6y2$S zXc0?b&qFx!LPEN_09o+Z0?3$n$mw?QQr0@nkEW8Q{yBi6*eLI_&j8YKFXEdy>dU>SW=}tD0rgan{xYvE zDWyyx8_Qc|Fj=Ih;&Iu1%GE>Cp_Xam9QcfSFFzfA2^>!9FPo&yqPq3HA} zhj0jYApuDTb>c4bIh+ezR>=!o{{HHP!gSOx)WMJFZyJK>9?feFX1lmg-dZ+xF4Yv? zVgcr-_O>3FhMME9SZqG$40I=dIL!QA>UkDvi~WhoO+Q&oe2YFT_I$QcWUA$Lv{b_< z^SNXovdp&sD~n=dyR{7Htf-w!M(Jc_=tsD&02pyVAK-l6U3$<>Zmsot5oLD7C%TS& zrL3N4%$1ex?tjd}zLP`%js15usYN5vdW5sWH(iolD&*MTzjdfs*cPQ74a8eC{JedE z4X$q|BA_F!nDaW@BnkN{AY#f zhNxm;*biX9zL_3cay?}-NxdP8x^v8OVo=998`e{7kg z44-bv{YrMrm!_ekc$&mkhNi@V-jW6mVZQb&(~)s@K-sZaL&nzBBmK~k5-Nj7=I@vD zKp^7A>u&*eBWnx;u%AJN^n*XX*1X3$+b2LU6EWT*QeQ|QLuA0=mh+=p@`?@!k~;Lk zI6T{G$gj!`_5;XBD22?RH4mp?vHa(fZ>?I_*Vikm;NXd;T@fbWoAwMhi8xJ||4*Yu zd}XZ;y8Qh#rKbM7i1AD$KV@vOFaS%7XvbpEz{D&*f>=HxeMYI^8{6;M-oHC?sXN zcd{4frYAw1rakY!&`Cu``l+_IA6V<1hx2bziXLDbfHEaqN^x9g(k|wBsq$^GXXVLV z2=L2#<>R<={#_!F7d7aOGwsJ3FgnBzkl)Q#VAp%8*vQarp?O7jyQ{XKxlmWRpvsg literal 11038 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 diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index 71e6f773c8f2717a9aac29a84d68ffb838a1c4b9..6806854a242ff76d0c229673c004a4b80f1eeaa2 100644 GIT binary patch literal 48429 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%0ASbtU0OBRqiM~1RXyJ;AiYuzopq9->bYPKv9*J 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 literal 41852 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%0AxsJx^4!1=y9%acyyZked;q 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 Pz>luBp;noOZRr01x!ZaQ From f37c608dd1ec3185c376eb4816472974168a12ab Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Tue, 12 Feb 2013 22:53:55 +1000 Subject: [PATCH 20/66] restructured the layout of many files with folders + renames, added artifact types and artifact effects Signed-off-by: Cael_Aislinn --- baystation12.dme | 81 ++-- .../{ => analysis}/analysis.dm | 18 +- .../{ => analysis}/analysis_accelerator.dm | 16 +- .../analysis_fourier_transform.dm | 12 +- .../analysis_gas_chromatography.dm | 0 .../{ => analysis}/analysis_hyperspectral.dm | 0 .../{ => analysis}/analysis_ion_mobility.dm | 0 .../{ => analysis}/analysis_isotope_ratio.dm | 18 +- .../{ => analysis}/analysis_scanner.dm | 0 .../xenoarchaeology/artifact/artifact.dm | 101 +++++ .../{ => artifact}/artifact_autocloner.dm | 0 .../artifact/artifact_crystal.dm | 36 ++ .../{ => artifact}/artifact_gigadrill.dm | 0 .../{ => artifact}/artifact_hoverpod.dm | 0 .../{ => artifact}/artifact_replicator.dm | 1 - .../xenoarchaeology/{ => finds}/finds.dm | 33 +- .../{ => finds}/finds_defines.dm | 4 +- .../{ => finds}/finds_fossils.dm | 0 .../xenoarchaeology/{ => finds}/finds_misc.dm | 0 .../finds_talkingitem.dm} | 0 .../modules/research/xenoarchaeology/tools.dm | 225 ----------- .../{ => tools}/bunsen_burner.dm | 0 .../xenoarchaeology/{ => tools}/spacesuit.dm | 4 +- .../research/xenoarchaeology/tools/tools.dm | 22 ++ .../tools_coresampler.dm} | 1 + .../tools/tools_depthscanner.dm | 128 +++++++ .../xenoarchaeology/tools/tools_excav.dm | 83 ++++ .../xenoarchaeology/tools/tools_locater.dm | 97 +++++ .../unknown/effects/unknown_affect_cold.dm | 22 ++ .../effects/unknown_effect_badfeeling.dm | 67 ++++ .../effects/unknown_effect_cellcharge.dm | 37 ++ .../effects/unknown_effect_celldrain.dm | 41 ++ .../effects/unknown_effect_dnaswitch.dm | 66 ++++ .../unknown/effects/unknown_effect_emp.dm | 12 + .../effects/unknown_effect_forcefield.dm | 77 ++++ .../unknown/effects/unknown_effect_gasco2.dm | 22 ++ .../effects/unknown_effect_gasnitro.dm | 22 ++ .../unknown/effects/unknown_effect_gasoxy.dm | 21 + .../effects/unknown_effect_gasplasma.dm | 22 ++ .../effects/unknown_effect_gassleeping.dm | 30 ++ .../effects/unknown_effect_goodfeeling.dm | 65 ++++ .../unknown/effects/unknown_effect_heal.dm | 67 ++++ .../unknown/effects/unknown_effect_heat.dm | 22 ++ .../unknown/effects/unknown_effect_hurt.dm | 46 +++ .../unknown/effects/unknown_effect_radiate.dm | 26 ++ .../effects/unknown_effect_roboheal.dm | 31 ++ .../effects/unknown_effect_robohurt.dm | 30 ++ .../unknown/effects/unknown_effect_sleepy.dm | 36 ++ .../unknown/effects/unknown_effect_stun.dm | 38 ++ .../effects/unknown_effect_teleport.dm | 66 ++++ .../xenoarchaeology/unknown/unknown.dm | 360 ++++++++++++++++++ .../{ => unknown}/unknown_analysis.dm | 3 +- .../{ => unknown}/unknown_db.dm | 0 .../xenoarchaeology/unknown/unknown_effect.dm | 68 ++++ .../unknown_effect_old.dm} | 0 .../{ => unknown}/unknown_harvester.dm | 4 +- .../{unknown.dm => unknown/unknown_old.dm} | 2 + .../{ => unknown}/unknown_synthetic.dm | 2 +- 58 files changed, 1869 insertions(+), 316 deletions(-) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis.dm (90%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_accelerator.dm (80%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_fourier_transform.dm (81%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_gas_chromatography.dm (100%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_hyperspectral.dm (100%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_ion_mobility.dm (100%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_isotope_ratio.dm (82%) rename code/modules/research/xenoarchaeology/{ => analysis}/analysis_scanner.dm (100%) create mode 100644 code/modules/research/xenoarchaeology/artifact/artifact.dm rename code/modules/research/xenoarchaeology/{ => artifact}/artifact_autocloner.dm (100%) create mode 100644 code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm rename code/modules/research/xenoarchaeology/{ => artifact}/artifact_gigadrill.dm (100%) rename code/modules/research/xenoarchaeology/{ => artifact}/artifact_hoverpod.dm (100%) rename code/modules/research/xenoarchaeology/{ => artifact}/artifact_replicator.dm (99%) rename code/modules/research/xenoarchaeology/{ => finds}/finds.dm (96%) rename code/modules/research/xenoarchaeology/{ => finds}/finds_defines.dm (99%) rename code/modules/research/xenoarchaeology/{ => finds}/finds_fossils.dm (100%) rename code/modules/research/xenoarchaeology/{ => finds}/finds_misc.dm (100%) rename code/modules/research/xenoarchaeology/{finds_talking_item.dm => finds/finds_talkingitem.dm} (100%) delete mode 100644 code/modules/research/xenoarchaeology/tools.dm rename code/modules/research/xenoarchaeology/{ => tools}/bunsen_burner.dm (100%) rename code/modules/research/xenoarchaeology/{ => tools}/spacesuit.dm (84%) create mode 100644 code/modules/research/xenoarchaeology/tools/tools.dm rename code/modules/research/xenoarchaeology/{core_sampler.dm => tools/tools_coresampler.dm} (98%) create mode 100644 code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm create mode 100644 code/modules/research/xenoarchaeology/tools/tools_excav.dm create mode 100644 code/modules/research/xenoarchaeology/tools/tools_locater.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_affect_cold.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_badfeeling.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_emp.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_forcefield.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasco2.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasnitro.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasoxy.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasplasma.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gassleeping.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_goodfeeling.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heat.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_radiate.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_roboheal.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_robohurt.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm create mode 100644 code/modules/research/xenoarchaeology/unknown/unknown.dm rename code/modules/research/xenoarchaeology/{ => unknown}/unknown_analysis.dm (99%) rename code/modules/research/xenoarchaeology/{ => unknown}/unknown_db.dm (100%) create mode 100644 code/modules/research/xenoarchaeology/unknown/unknown_effect.dm rename code/modules/research/xenoarchaeology/{unknown_effect.dm => unknown/unknown_effect_old.dm} (100%) rename code/modules/research/xenoarchaeology/{ => unknown}/unknown_harvester.dm (98%) rename code/modules/research/xenoarchaeology/{unknown.dm => unknown/unknown_old.dm} (99%) rename code/modules/research/xenoarchaeology/{ => unknown}/unknown_synthetic.dm (98%) diff --git a/baystation12.dme b/baystation12.dme index a60303f0d05..cfeaafc50b3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1118,38 +1118,65 @@ #include "code\modules\research\research.dm" #include "code\modules\research\research_shuttle.dm" #include "code\modules\research\server.dm" -#include "code\modules\research\xenoarchaeology\analysis.dm" -#include "code\modules\research\xenoarchaeology\analysis_accelerator.dm" -#include "code\modules\research\xenoarchaeology\analysis_fourier_transform.dm" -#include "code\modules\research\xenoarchaeology\analysis_gas_chromatography.dm" -#include "code\modules\research\xenoarchaeology\analysis_hyperspectral.dm" -#include "code\modules\research\xenoarchaeology\analysis_ion_mobility.dm" -#include "code\modules\research\xenoarchaeology\analysis_isotope_ratio.dm" -#include "code\modules\research\xenoarchaeology\analysis_scanner.dm" -#include "code\modules\research\xenoarchaeology\artifact_autocloner.dm" -#include "code\modules\research\xenoarchaeology\artifact_gigadrill.dm" -#include "code\modules\research\xenoarchaeology\artifact_hoverpod.dm" -#include "code\modules\research\xenoarchaeology\artifact_replicator.dm" -#include "code\modules\research\xenoarchaeology\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\chemistry.dm" -#include "code\modules\research\xenoarchaeology\core_sampler.dm" -#include "code\modules\research\xenoarchaeology\finds.dm" -#include "code\modules\research\xenoarchaeology\finds_defines.dm" -#include "code\modules\research\xenoarchaeology\finds_fossils.dm" -#include "code\modules\research\xenoarchaeology\finds_misc.dm" -#include "code\modules\research\xenoarchaeology\finds_talking_item.dm" #include "code\modules\research\xenoarchaeology\geosample.dm" #include "code\modules\research\xenoarchaeology\misc.dm" #include "code\modules\research\xenoarchaeology\readme.dm" -#include "code\modules\research\xenoarchaeology\spacesuit.dm" #include "code\modules\research\xenoarchaeology\suspension_generator.dm" -#include "code\modules\research\xenoarchaeology\tools.dm" -#include "code\modules\research\xenoarchaeology\unknown.dm" -#include "code\modules\research\xenoarchaeology\unknown_analysis.dm" -#include "code\modules\research\xenoarchaeology\unknown_db.dm" -#include "code\modules\research\xenoarchaeology\unknown_effect.dm" -#include "code\modules\research\xenoarchaeology\unknown_harvester.dm" -#include "code\modules\research\xenoarchaeology\unknown_synthetic.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_accelerator.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_fourier_transform.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_gas_chromatography.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_hyperspectral.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_ion_mobility.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_isotope_ratio.dm" +#include "code\modules\research\xenoarchaeology\analysis\analysis_scanner.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_autocloner.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_crystal.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_gigadrill.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_hoverpod.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_replicator.dm" +#include "code\modules\research\xenoarchaeology\finds\finds.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_defines.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_fossils.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" +#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" +#include "code\modules\research\xenoarchaeology\tools\spacesuit.dm" +#include "code\modules\research\xenoarchaeology\tools\tools.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_excav.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" +#include "code\modules\research\xenoarchaeology\unknown\unknown.dm" +#include "code\modules\research\xenoarchaeology\unknown\unknown_analysis.dm" +#include "code\modules\research\xenoarchaeology\unknown\unknown_db.dm" +#include "code\modules\research\xenoarchaeology\unknown\unknown_effect.dm" +#include "code\modules\research\xenoarchaeology\unknown\unknown_harvester.dm" +#include "code\modules\research\xenoarchaeology\unknown\unknown_synthetic.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_affect_cold.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_badfeeling.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_cellcharge.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_celldrain.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_dnaswitch.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_emp.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_forcefield.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_gasco2.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_gasnitro.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_gasoxy.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_gasplasma.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_gassleeping.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_goodfeeling.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_heal.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_heat.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_hurt.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_radiate.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_roboheal.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_robohurt.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_sleepy.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_stun.dm" +#include "code\modules\research\xenoarchaeology\unknown\effects\unknown_effect_teleport.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\IDE.dm" #include "code\modules\scripting\Options.dm" diff --git a/code/modules/research/xenoarchaeology/analysis.dm b/code/modules/research/xenoarchaeology/analysis/analysis.dm similarity index 90% rename from code/modules/research/xenoarchaeology/analysis.dm rename to code/modules/research/xenoarchaeology/analysis/analysis.dm index 0d2579191ec..49e281ff3b0 100644 --- a/code/modules/research/xenoarchaeology/analysis.dm +++ b/code/modules/research/xenoarchaeology/analysis/analysis.dm @@ -41,8 +41,6 @@ //heat up as we go, but if the air is freezing then heat up much slower var/new_heat = heat_accumulation_rate + heat_accumulation_rate * rand(-5,5) / 10 - if(environmental_temp < temperature) - new_heat *= 0.75 temperature += new_heat if(temperature > 350 && prob(10)) src.visible_message("\blue \icon[src] bleets plaintively.", 2) @@ -53,7 +51,7 @@ if(prob(10)) src.visible_message("\blue \icon[src] [pick("whirrs","chuffs","clicks")][pick(" quietly"," softly"," sadly"," excitedly"," energetically"," angrily"," plaintively")].", 2) - else if(temperature > environmental_temp) + if(temperature > environmental_temp) //cool down to match the air temperature -= heat_accumulation_rate + heat_accumulation_rate * rand(-5,5) / 10 if(temperature < environmental_temp) @@ -82,7 +80,7 @@ var/dat = "[src.name]
" dat += "[owned_scanner ? "Scanner connected." : "Scanner disconnected."]
" dat += "Module heat level: [temperature] kelvin
" - dat += "Safeties set at 600k, shielding failure at 1200k. Failure to maintain safe heat levels may result in equipment damage.
" + dat += "Safeties set at 300k, shielding failure at 400k. Failure to maintain safe heat levels may result in equipment damage.
" dat += "
" if(scan_process) dat += "Scan in progress


" @@ -154,8 +152,8 @@ obj/machinery/anomaly/Topic(href, href_list) fuel_container = null if(href_list["begin"]) if(temperature >= 300) - var/proceed = input("Unsafe internal temperature detected, do you wish to continue?","Warning") - if(proceed && get_dist(src, usr) <= 1) + var/proceed = input("Unsafe internal temperature detected, enter YES below to continue.","Warning") + if(proceed == "YES" && get_dist(src, usr) <= 1) scan_process = 1 else scan_process = 1 @@ -164,12 +162,12 @@ obj/machinery/anomaly/Topic(href, href_list) //whether the carrier sample matches the possible finds //results greater than a threshold of 0.6 means a positive result -obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/carrier) +obj/machinery/anomaly/proc/GetResultSpecifity(var/datum/geosample/scanned_sample, var/carrier_name) var/specifity = 0 - if(scanned_sample && carrier) + if(scanned_sample && carrier_name) - if(scanned_sample.find_presence.Find(carrier)) - specifity = 0.7 * (scanned_sample.find_presence[carrier] / scanned_sample.total_spread) + 0.3 + if(scanned_sample.find_presence.Find(carrier_name)) + specifity = 0.7 * (scanned_sample.find_presence[carrier_name] / scanned_sample.total_spread) + 0.3 else specifity = rand(0, 0.5) diff --git a/code/modules/research/xenoarchaeology/analysis_accelerator.dm b/code/modules/research/xenoarchaeology/analysis/analysis_accelerator.dm similarity index 80% rename from code/modules/research/xenoarchaeology/analysis_accelerator.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_accelerator.dm index 0315220f99d..eef561a6a1a 100644 --- a/code/modules/research/xenoarchaeology/analysis_accelerator.dm +++ b/code/modules/research/xenoarchaeology/analysis/analysis_accelerator.dm @@ -9,7 +9,7 @@ obj/machinery/anomaly/accelerator/ScanResults() var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." var/datum/geosample/scanned_sample - var/carrier + var/carrier_name var/num_reagents = 0 for(var/datum/reagent/A in held_container.reagents.reagent_list) @@ -17,20 +17,22 @@ obj/machinery/anomaly/accelerator/ScanResults() if(istype(R, /datum/reagent/analysis_sample)) scanned_sample = R.data else - carrier = R.id + carrier_name = R.id num_reagents++ - if(num_reagents == 2 && scanned_sample && carrier) - var/specifity = GetResultSpecifity(scanned_sample, carrier) - var/accuracy = (specifity / (specifity + 0.2)) - results = "Kinetic acceleration of carrier ([carrier]) indicates age ([100 * accuracy]% accuracy):

" + if(num_reagents == 2 && scanned_sample && carrier_name) + var/accuracy = GetResultSpecifity(scanned_sample, carrier_name) + accuracy += 0.5 * (1 - accuracy) / scanned_sample.total_spread + if(!accuracy) + accuracy = rand(0.01, 0.5) + results = "Kinetic acceleration of carrier ([carrier_name]) indicates age ([100 * accuracy]% accuracy):

" if(scanned_sample.age_billion) var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (2 * rand() - 1)), 0) var/displayed_age_billions = scanned_sample.age_billion + max(scanned_sample.age_billion * ((1 - accuracy) * (2 * rand() - 1)), 0) results += "[displayed_age_billions + displayed_age_millions / 1000] billion years.
" else if(scanned_sample.age_million) - var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age * ((1 - accuracy) * (4 * rand() - 2)), 0) + var/displayed_age_thousands = scanned_sample.age_thousand + max(scanned_sample.age_thousand * ((1 - accuracy) * (4 * rand() - 2)), 0) var/displayed_age_millions = scanned_sample.age_million + max(scanned_sample.age_million * ((1 - accuracy) * (2 * rand() - 1)), 0) results += "[displayed_age_millions + displayed_age_thousands / 1000] million years.
" else if(scanned_sample.age_thousand) diff --git a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm b/code/modules/research/xenoarchaeology/analysis/analysis_fourier_transform.dm similarity index 81% rename from code/modules/research/xenoarchaeology/analysis_fourier_transform.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_fourier_transform.dm index 5e952c00bbd..e5715708554 100644 --- a/code/modules/research/xenoarchaeology/analysis_fourier_transform.dm +++ b/code/modules/research/xenoarchaeology/analysis/analysis_fourier_transform.dm @@ -22,16 +22,14 @@ obj/machinery/anomaly/fourier_transform/ScanResults() if(num_reagents == 2 && scanned_sample && carrier) //all necessary components are present - var/specifity = GetResultSpecifity(scanned_sample, carrier) + var/accuracy = GetResultSpecifity(scanned_sample, carrier) var/distance = scanned_sample.artifact_distance if(distance > 0) - var/accuracy = 0.9 - if(specifity > 0.6) - distance += (0.2 * rand() - 0.1) * distance + if(accuracy > 0.6) + distance += (2 * rand() - 1) * distance * 0.01 else - var/offset = 1 - specifity - distance += distance * rand(-100 * offset, 100 * offset) / 100 - accuracy = specifity + var/offset = 1 - accuracy + distance += (2 * rand() - 1) * distance * offset results = "Fourier transform analysis on anomalous energy absorption through carrier ([carrier]) indicates source located inside emission radius ([100 * accuracy]% accuracy): [distance]." else results = "Energy dispersion detected throughout sample consistent with background readings.
" diff --git a/code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm b/code/modules/research/xenoarchaeology/analysis/analysis_gas_chromatography.dm similarity index 100% rename from code/modules/research/xenoarchaeology/analysis_gas_chromatography.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_gas_chromatography.dm diff --git a/code/modules/research/xenoarchaeology/analysis_hyperspectral.dm b/code/modules/research/xenoarchaeology/analysis/analysis_hyperspectral.dm similarity index 100% rename from code/modules/research/xenoarchaeology/analysis_hyperspectral.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_hyperspectral.dm diff --git a/code/modules/research/xenoarchaeology/analysis_ion_mobility.dm b/code/modules/research/xenoarchaeology/analysis/analysis_ion_mobility.dm similarity index 100% rename from code/modules/research/xenoarchaeology/analysis_ion_mobility.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_ion_mobility.dm diff --git a/code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm b/code/modules/research/xenoarchaeology/analysis/analysis_isotope_ratio.dm similarity index 82% rename from code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_isotope_ratio.dm index 717339a4a79..57e26840803 100644 --- a/code/modules/research/xenoarchaeology/analysis_isotope_ratio.dm +++ b/code/modules/research/xenoarchaeology/analysis/analysis_isotope_ratio.dm @@ -9,7 +9,7 @@ obj/machinery/anomaly/isotope_ratio/ScanResults() var/results = "The scan was inconclusive. Check sample integrity and carrier consistency." var/datum/geosample/scanned_sample - var/carrier + var/carrier_name var/num_reagents = 0 for(var/datum/reagent/A in held_container.reagents.reagent_list) @@ -17,17 +17,15 @@ obj/machinery/anomaly/isotope_ratio/ScanResults() if(istype(R, /datum/reagent/analysis_sample)) scanned_sample = R.data else - carrier = R.id + carrier_name = R.id num_reagents++ - if(num_reagents == 2 && scanned_sample && carrier) - var/specifity = GetResultSpecifity(scanned_sample, carrier) - var/accuracy = 0 - if(specifity) - accuracy = (specifity / (specifity + 0.2)) - else - accuracy = rand(0.01, 0.75) - results = "Isotope decay analysis in carrier ([carrier]) indicates age ([100 * accuracy]% accuracy):

" + if(num_reagents == 2 && scanned_sample && carrier_name) + var/accuracy = GetResultSpecifity(scanned_sample, carrier_name) + accuracy += 0.5 * (1 - accuracy) / scanned_sample.total_spread + if(!accuracy) + accuracy = rand(0.01, 0.5) + results = "Isotope decay analysis in carrier ([carrier_name]) indicates age ([100 * accuracy]% accuracy):

" if(scanned_sample.age_billion) //scramble the results diff --git a/code/modules/research/xenoarchaeology/analysis_scanner.dm b/code/modules/research/xenoarchaeology/analysis/analysis_scanner.dm similarity index 100% rename from code/modules/research/xenoarchaeology/analysis_scanner.dm rename to code/modules/research/xenoarchaeology/analysis/analysis_scanner.dm diff --git a/code/modules/research/xenoarchaeology/artifact/artifact.dm b/code/modules/research/xenoarchaeology/artifact/artifact.dm new file mode 100644 index 00000000000..71f6f7965e0 --- /dev/null +++ b/code/modules/research/xenoarchaeology/artifact/artifact.dm @@ -0,0 +1,101 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Large finds - (Potentially) active alien machinery from the dawn of time + +/datum/artifact_find + var/artifact_id + var/artifact_find_type + var/artifact_detect_range + +/datum/artifact_find/New() + artifact_detect_range = rand(5,300) + + artifact_id = "[pick("kappa","sigma","antaeres","beta","omicron","iota","upsilon","omega","gamma","delta","tau","alpha")]-[rand(100,999)]" + + artifact_find_type = pick(\ + 5;/obj/machinery/power/supermatter,\ + 5;/obj/structure/constructshell,\ + 5;/obj/machinery/syndicate_beacon,\ + 25;/obj/machinery/power/supermatter/shard,\ + 50;/obj/structure/cult/pylon,\ + 100;/obj/machinery/auto_cloner,\ + 100;/obj/machinery/giga_drill,\ + 100;/obj/mecha/working/hoverpod,\ + 100;/obj/machinery/replicator,\ + 200;/obj/structure/crystal,\ + 500;/obj/machinery/artifact) + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Boulders - sometimes turn up after excavating turf - excavate further to try and find large xenoarch finds + +/obj/structure/boulder + name = "rocky debris" + desc = "Leftover rock from an excavation, it's been partially dug out already but there's still a lot to go." + icon = 'icons/obj/mining.dmi' + icon_state = "boulder1" + density = 1 + opacity = 1 + var/excavation_level = 0 + var/datum/geosample/geological_data + var/datum/artifact_find/artifact_find + +/obj/structure/boulder/New() + icon_state = "boulder[rand(1,4)]" + excavation_level = rand(5,50) + +/obj/structure/boulder/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/device/core_sampler)) + src.geological_data.artifact_distance = rand(-100,100) / 100 + src.geological_data.artifact_id = artifact_find.artifact_id + + var/obj/item/device/core_sampler/C = W + C.sample_item(src, user) + return + + if (istype(W, /obj/item/device/depth_scanner)) + var/obj/item/device/depth_scanner/C = W + C.scan_atom(user, src) + return + + if (istype(W, /obj/item/device/measuring_tape)) + var/obj/item/device/measuring_tape/P = W + user.visible_message("\blue[user] extends [P] towards [src].","\blue You extend [P] towards [src].") + if(do_after(user,40)) + user << "\blue \icon[P] [src] has been excavated to a depth of [2*src.excavation_level]cm." + return + + if (istype(W, /obj/item/weapon/pickaxe)) + var/obj/item/weapon/pickaxe/P = W + + user << "\red You start [P.drill_verb] [src]." + + if(!do_after(user,P.digspeed)) + return + + user << "\blue You finish [P.drill_verb] [src]." + excavation_level += P.excavation_amount + + var/reveal_prob = 1 + if(excavation_level >= 95) + reveal_prob = 50 + (excavation_level - 90) * (excavation_level - 90) + else if(excavation_level >= 90) + reveal_prob = 5 + if(excavation_level >= 100) + //failure + user.visible_message("[src] suddenly crumbles away.",\ + "\red [src] has disintegrated under your onslaught, any secrets it was holding long gone.") + del(src) + else if(prob(reveal_prob)) + //success + if(artifact_find) + var/spawn_type = artifact_find.artifact_find_type + var/obj/O = new spawn_type(get_turf(src)) + if(istype(O,/obj/machinery/artifact)) + var/obj/machinery/artifact/X = O + if(X.my_effect) + X.my_effect.artifact_id = artifact_find.artifact_id + src.visible_message("[src] suddenly crumbles away.") + else + user.visible_message("[src] suddenly crumbles away.",\ + "\blue [src] has been whittled away under your careful excavation, but there was nothing of interest inside.") + del(src) diff --git a/code/modules/research/xenoarchaeology/artifact_autocloner.dm b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm similarity index 100% rename from code/modules/research/xenoarchaeology/artifact_autocloner.dm rename to code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm b/code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm new file mode 100644 index 00000000000..d5cd7a7b504 --- /dev/null +++ b/code/modules/research/xenoarchaeology/artifact/artifact_crystal.dm @@ -0,0 +1,36 @@ + +/obj/structure/crystal + name = "large crystal" + icon = 'xenoarchaeology.dmi' + icon_state = "crystal" + density = 1 + +/obj/structure/crystal/New() + ..() + + icon_state = pick("ano70","ano80") + + desc = pick(\ + "It shines faintly as it catches the light.",\ + "It appears to have a faint inner glow.",\ + "It seems to draw you inward as you look it at.",\ + "Something twinkles faintly as you look at it.",\ + "It's mesmerizing to behold.") + +/obj/structure/crystal/Del() + src.visible_message("\red[src] shatters!") + if(prob(75)) + new /obj/item/weapon/shard/plasma(src.loc) + if(prob(50)) + new /obj/item/weapon/shard/plasma(src.loc) + if(prob(25)) + new /obj/item/weapon/shard/plasma(src.loc) + if(prob(75)) + new /obj/item/weapon/shard(src.loc) + if(prob(50)) + new /obj/item/weapon/shard(src.loc) + if(prob(25)) + new /obj/item/weapon/shard(src.loc) + ..() + +//todo: laser_act diff --git a/code/modules/research/xenoarchaeology/artifact_gigadrill.dm b/code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm similarity index 100% rename from code/modules/research/xenoarchaeology/artifact_gigadrill.dm rename to code/modules/research/xenoarchaeology/artifact/artifact_gigadrill.dm diff --git a/code/modules/research/xenoarchaeology/artifact_hoverpod.dm b/code/modules/research/xenoarchaeology/artifact/artifact_hoverpod.dm similarity index 100% rename from code/modules/research/xenoarchaeology/artifact_hoverpod.dm rename to code/modules/research/xenoarchaeology/artifact/artifact_hoverpod.dm diff --git a/code/modules/research/xenoarchaeology/artifact_replicator.dm b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm similarity index 99% rename from code/modules/research/xenoarchaeology/artifact_replicator.dm rename to code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm index a52a12ebaf1..089c9084189 100644 --- a/code/modules/research/xenoarchaeology/artifact_replicator.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_replicator.dm @@ -20,7 +20,6 @@ var/list/viables = list(\ /obj/item/roller,\ - /obj/structure/cult/pylon,\ /obj/structure/closet/crate,\ /obj/structure/closet/acloset,\ /mob/living/simple_animal/hostile/mimic,\ diff --git a/code/modules/research/xenoarchaeology/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm similarity index 96% rename from code/modules/research/xenoarchaeology/finds.dm rename to code/modules/research/xenoarchaeology/finds/finds.dm index 10c2af2a156..a31ec91852b 100644 --- a/code/modules/research/xenoarchaeology/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -255,9 +255,9 @@ apply_image_decorations = 1 if(17) //cultblade - new /obj/item/weapon/melee/cultblade(src.loc) - del(src) - return + new_item = new /obj/item/weapon/melee/cultblade(src.loc) + apply_material_decorations = 0 + apply_image_decorations = 0 if(18) new_item = new /obj/item/device/radio/beacon(src.loc) talkative = 0 @@ -283,6 +283,7 @@ if(22) if(prob(50)) new_item = new /obj/item/weapon/shard(src.loc) + else new_item = new /obj/item/weapon/shard/plasma(src.loc) apply_image_decorations = 0 apply_material_decorations = 0 @@ -328,7 +329,7 @@ name = "unknown weapon" if(27) //revolver - var/obj/item/weapon/gun/projectile/new_gun = new (src.loc) + var/obj/item/weapon/gun/projectile/new_gun = new /obj/item/weapon/gun/projectile(src.loc) new_item = new_gun new_item.icon_state = "gun[rand(1,4)]" @@ -364,30 +365,24 @@ apply_image_decorations = 0 if(29) //fossil bone/skull - new/obj/item/weapon/fossil/base(src.loc) - - //this item replaces itself on spawn with another, doing anything else will cause runtimes - del(src) - return + new_item = new /obj/item/weapon/fossil/base(src.loc) if(30) //fossil shell - new/obj/item/weapon/fossil/shell(src.loc) + new_item = new /obj/item/weapon/fossil/shell(src.loc) apply_image_decorations = 0 apply_material_decorations = 0 if(prob(10)) apply_image_decorations = 1 if(31) //fossil plant - new/obj/item/weapon/fossil/plant(src.loc) + new_item = new /obj/item/weapon/fossil/plant(src.loc) apply_image_decorations = 0 apply_material_decorations = 0 if(32) //humanoid remains - name = "humanoid remains" + name = "humanoid [pick("remains","skeleton")]" icon = 'blood.dmi' icon_state = "remains" - apply_material_decorations = 0 - apply_image_decorations = 0 additional_desc = pick("They appear almost human.",\ "They are contorted in a most gruesome way.",\ "They look almost peaceful.",\ @@ -399,11 +394,9 @@ apply_material_decorations = 0 if(33) //robot remains - name = "robotic remains" + name = "[pick("mechanical","robotic","cyborg")] [pick("remains","chassis","debris")]" icon = 'blood.dmi' icon_state = "remainsrobot" - apply_material_decorations = 0 - apply_image_decorations = 0 additional_desc = pick("Almost mistakeable for the remains of a modern cyborg.",\ "They are barely recognisable as anything other than a pile of waste metals.",\ "It looks like the battered remains of an ancient robot chassis.",\ @@ -415,11 +408,9 @@ apply_material_decorations = 0 if(34) //xenos remains - name = "alien remains" + name = "alien [pick("remains","skeleton")]" icon = 'blood.dmi' icon_state = "remainsxeno" - apply_material_decorations = 0 - apply_image_decorations = 0 additional_desc = pick("It looks vaguely reptilian, but with more teeth.",\ "They are faintly unsettling.",\ "There is a faint aura of unease about them.",\ @@ -481,7 +472,7 @@ //icon and icon_state should have already been set if(new_item) - new_item.name = "[pick("strange","ancient","alien","")] [new_item.name]" + new_item.name = "[pick("Strange","Ancient","Alien","")] [new_item.name]" new_item.desc = src.desc if(talkative) diff --git a/code/modules/research/xenoarchaeology/finds_defines.dm b/code/modules/research/xenoarchaeology/finds/finds_defines.dm similarity index 99% rename from code/modules/research/xenoarchaeology/finds_defines.dm rename to code/modules/research/xenoarchaeology/finds/finds_defines.dm index b2aebc52fa2..9583cb74ad9 100644 --- a/code/modules/research/xenoarchaeology/finds_defines.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_defines.dm @@ -57,8 +57,8 @@ #define ARTIFACT_ROBOHURT 13 #define ARTIFACT_ROBOHEAL 14 #define ARTIFACT_DNASWITCH 15 -#define ARTIFACT_ -#define ARTIFACT_ +//#define ARTIFACT_ +//#define ARTIFACT_ //descending order of likeliness to spawn #define DIGSITE_GARDEN 1 diff --git a/code/modules/research/xenoarchaeology/finds_fossils.dm b/code/modules/research/xenoarchaeology/finds/finds_fossils.dm similarity index 100% rename from code/modules/research/xenoarchaeology/finds_fossils.dm rename to code/modules/research/xenoarchaeology/finds/finds_fossils.dm diff --git a/code/modules/research/xenoarchaeology/finds_misc.dm b/code/modules/research/xenoarchaeology/finds/finds_misc.dm similarity index 100% rename from code/modules/research/xenoarchaeology/finds_misc.dm rename to code/modules/research/xenoarchaeology/finds/finds_misc.dm diff --git a/code/modules/research/xenoarchaeology/finds_talking_item.dm b/code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm similarity index 100% rename from code/modules/research/xenoarchaeology/finds_talking_item.dm rename to code/modules/research/xenoarchaeology/finds/finds_talkingitem.dm diff --git a/code/modules/research/xenoarchaeology/tools.dm b/code/modules/research/xenoarchaeology/tools.dm deleted file mode 100644 index 014ecc59120..00000000000 --- a/code/modules/research/xenoarchaeology/tools.dm +++ /dev/null @@ -1,225 +0,0 @@ -//---- miscellaneous devices ----// - -//also known as the x-ray diffractor -/obj/item/device/depth_scanner - name = "depth analysis scanner" - desc = "Used to check spatial depth and density of rock outcroppings." - icon = 'pda.dmi' - icon_state = "crap" - item_state = "analyzer" - w_class = 1.0 - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - var/list/positive_locations = list() - var/datum/depth_scan/current - -/datum/depth_scan - var/time = "" - var/coords = "" - var/depth = 0 - var/clearance = 0 - var/record_index = 1 - var/dissonance_spread = 1 - -/obj/item/device/depth_scanner/proc/scan_turf(var/mob/user, var/turf/T) - user.visible_message("\blue [user] scans [T], the air around them humming gently.") - if(istype(T,/turf/simulated/mineral)) - var/turf/simulated/mineral/M = T - if(M.excavation_minerals.len || M.finds.len) - //create a new scanlog entry - var/datum/depth_scan/D = new() - D.coords = "[10 * T.x + rand(0,9)]:[10 * T.y + rand(0,9)]:[10 * T.z + rand(0,9)]" - D.time = worldtime2text() - D.record_index = positive_locations.len + 1 - - //find whichever is closer: find or mineral - if(M.finds.len) - var/datum/find/F = M.finds[1] - D.depth = F.excavation_required - D.clearance = F.clearance_range - if(M.excavation_minerals.len) - if(M.excavation_minerals[1] < D.depth) - D.depth = M.excavation_minerals[1] - D.clearance = rand(2,6) - D.dissonance_spread = rand(1,1000) / 100 - - positive_locations.Add(D) - - for(var/mob/L in range(src, 1)) - L << "\blue \icon[src] [src] pings." - -/obj/item/device/depth_scanner/attack_self(var/mob/user as mob) - return src.interact(user) - -/obj/item/device/depth_scanner/interact(var/mob/user as mob) - var/dat = "Co-ordinates with positive matches
" - dat += "
== Clear all ==
" - if(current) - dat += "Time: [current.time]
" - dat += "Coords: [current.coords]
" - dat += "Anomaly depth: [current.depth]
" - dat += "Clearance: [current.clearance]
" - dat += "Dissonance spread: [current.dissonance_spread]
" - dat += "clear entry
" - else - dat += "Select an entry from the list
" - dat += "
" - dat += "
" - dat += "
" - dat += "
" - dat += "
" - if(positive_locations.len) - for(var/index=1, index<=positive_locations.len, index++) - var/datum/depth_scan/D = positive_locations[index] - dat += "[D.time], coords: [D.coords]
" - else - dat += "No entries recorded." - dat += "
" - dat += "Refresh
" - dat += "Close
" - user << browse(dat,"window=depth_scanner;size=300x500") - onclose(user, "depth_scanner") - -/obj/item/device/depth_scanner/Topic(href, href_list) - ..() - usr.set_machine(src) - - if(href_list["select"]) - var/index = text2num(href_list["select"]) - if(index && index <= positive_locations.len) - current = positive_locations[index] - else if(href_list["clear"]) - var/index = text2num(href_list["clear"]) - if(index) - if(index <= positive_locations.len) - var/datum/depth_scan/D = positive_locations[index] - positive_locations.Remove(D) - del(D) - else - //GC will hopefully pick them up before too long - positive_locations = list() - del(current) - else if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=depth_scanner") - - updateSelfDialog() - -/obj/item/device/gps - name = "relay positioning device" - desc = "Triangulates the approximate co-ordinates using a nearby satellite network." - icon = 'device.dmi' - icon_state = "locator" - item_state = "locator" - -/obj/item/device/gps/attack_self(var/mob/user as mob) - var/turf/T = get_turf(src) - user << "\blue \icon[src] [src] flashes [10 * T.x + rand(0,9)]:[10 * T.y + rand(0,9)]:[10 * T.z + rand(0,9)]." - -/obj/item/device/beacon_locator - name = "locater device" - desc = "Used to scan and locate signals on a particular frequency according ." - icon = 'device.dmi' - icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull - item_state = "electronic" - -/obj/item/device/core_sampler - name = "core sampler" - desc = "Used to extract cores from geological samples." - icon = 'device.dmi' - icon_state = "core_sampler" - item_state = "screwdriver_brown" - w_class = 1.0 - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - -/obj/item/device/measuring_tape - name = "measuring tape" - desc = "A coiled metallic tape used to check dimensions and lengths." - icon = 'icons/obj/xenoarchaeology.dmi' - icon_state = "measuring" - -//todo: dig site tape - -//---- excavation devices devices ----// -//sorted in order of delicacy - -/obj/item/weapon/pickaxe/brush - name = "brush" - //icon_state = "brush" - //item_state = "minipick" - digspeed = 50 - desc = "Featuring thick metallic wires for clearing away dust and loose scree." - excavation_amount = 0.5 - drill_sound = 'sound/weapons/thudswoosh.ogg' - drill_verb = "brushing" - -/obj/item/weapon/pickaxe/one_pick - name = "1/6 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging (1 centimetre excavation depth)." - excavation_amount = 1 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/two_pick - name = "1/3 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." - excavation_amount = 2 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/three_pick - name = "1/2 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging (3 centimetre excavation depth)." - excavation_amount = 3 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/four_pick - name = "2/3 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." - excavation_amount = 4 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/five_pick - name = "5/6 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging (5 centimetre excavation depth)." - excavation_amount = 5 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/six_pick - name = "1/1 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." - excavation_amount = 6 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/hand - name = "hand pickaxe" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A smaller, more precise version of the pickaxe (15 centimetre excavation depth)." - excavation_amount = 15 - drill_sound = 'sound/items/Crowbar.ogg' - drill_verb = "clearing" diff --git a/code/modules/research/xenoarchaeology/bunsen_burner.dm b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm similarity index 100% rename from code/modules/research/xenoarchaeology/bunsen_burner.dm rename to code/modules/research/xenoarchaeology/tools/bunsen_burner.dm diff --git a/code/modules/research/xenoarchaeology/spacesuit.dm b/code/modules/research/xenoarchaeology/tools/spacesuit.dm similarity index 84% rename from code/modules/research/xenoarchaeology/spacesuit.dm rename to code/modules/research/xenoarchaeology/tools/spacesuit.dm index 66c9dedb22d..2ff4ff266ea 100644 --- a/code/modules/research/xenoarchaeology/spacesuit.dm +++ b/code/modules/research/xenoarchaeology/tools/spacesuit.dm @@ -1,12 +1,12 @@ -/obj/item/clothing/suit/space/anomaly +/obj/item/clothing/suit/bio_suit/anomaly name = "Anomaly Suit" desc = "A sealed bio suit capable of resisting exotic alien energies and low pressure environments." icon_state = "engspace_suit" item_state = "engspace_suit" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) -/obj/item/clothing/head/helmet/space/anomaly +/obj/item/clothing/head/bio_hood/anomaly name = "Anomaly Hood" desc = "A sealed bio hood capable of resisting exotic alien energies and low pressure environments." icon_state = "engspace_helmet" diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm new file mode 100644 index 00000000000..c36a7b16710 --- /dev/null +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -0,0 +1,22 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Miscellaneous xenoarchaeology tools + +/obj/item/device/gps + name = "relay positioning device" + desc = "Triangulates the approximate co-ordinates using a nearby satellite network." + icon = 'device.dmi' + icon_state = "locator" + item_state = "locator" + +/obj/item/device/gps/attack_self(var/mob/user as mob) + var/turf/T = get_turf(src) + user << "\blue \icon[src] [src] flashes [10 * T.x + rand(0,9)]:[10 * T.y + rand(0,9)]:[10 * T.z + rand(0,9)]." + +/obj/item/device/measuring_tape + name = "measuring tape" + desc = "A coiled metallic tape used to check dimensions and lengths." + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "measuring" + +//todo: dig site tape diff --git a/code/modules/research/xenoarchaeology/core_sampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm similarity index 98% rename from code/modules/research/xenoarchaeology/core_sampler.dm rename to code/modules/research/xenoarchaeology/tools/tools_coresampler.dm index 902857b75db..11bde6d4b0f 100644 --- a/code/modules/research/xenoarchaeology/core_sampler.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm @@ -52,6 +52,7 @@ if(istype(item_to_sample, /turf/simulated/mineral)) var/turf/simulated/mineral/T = item_to_sample geo_data = T.geological_data + geo_data.UpdateNearbyArtifactInfo(T) else if(istype(item_to_sample, /obj/item/weapon/ore)) var/obj/item/weapon/ore/O = item_to_sample geo_data = O.geological_data diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm new file mode 100644 index 00000000000..3a714bca916 --- /dev/null +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -0,0 +1,128 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Depth scanner - scans rock turfs / boulders and tells players if there is anything interesting inside, logs all finds + coordinates + times + +//also known as the x-ray diffractor +/obj/item/device/depth_scanner + name = "depth analysis scanner" + desc = "Used to check spatial depth and density of rock outcroppings." + icon = 'pda.dmi' + icon_state = "crap" + item_state = "analyzer" + w_class = 1.0 + flags = FPRINT | TABLEPASS + slot_flags = SLOT_BELT + var/list/positive_locations = list() + var/datum/depth_scan/current + +/datum/depth_scan + var/time = "" + var/coords = "" + var/depth = 0 + var/clearance = 0 + var/record_index = 1 + var/dissonance_spread = 1 + +/obj/item/device/depth_scanner/proc/scan_atom(var/mob/user, var/atom/A) + user.visible_message("\blue [user] scans [A], the air around them humming gently.") + if(istype(A,/turf/simulated/mineral)) + var/turf/simulated/mineral/M = A + if(M.excavation_minerals.len || M.finds.len) + + //create a new scanlog entry + var/datum/depth_scan/D = new() + D.coords = "[10 * M.x + rand(0,9)]:[10 * M.y + rand(0,9)]:[10 * M.z + rand(0,9)]" + D.time = worldtime2text() + D.record_index = positive_locations.len + 1 + + //find whichever is closer: find or mineral + if(M.finds.len) + var/datum/find/F = M.finds[1] + D.depth = F.excavation_required * 2 + D.clearance = F.clearance_range * 2 + if(M.excavation_minerals.len) + if(M.excavation_minerals[1] < D.depth) + D.depth = M.excavation_minerals[1] + D.clearance = rand(2,6) + D.dissonance_spread = rand(1,1000) / 100 + + positive_locations.Add(D) + + for(var/mob/L in range(src, 1)) + L << "\blue \icon[src] [src] pings." + + else if(istype(A,/obj/structure/boulder)) + var/obj/structure/boulder/B = A + if(B.artifact_find) + //create a new scanlog entry + var/datum/depth_scan/D = new() + D.coords = "[10 * B.x + rand(0,9)]:[10 * B.y + rand(0,9)]:[10 * B.z + rand(0,9)]" + D.time = worldtime2text() + D.record_index = positive_locations.len + 1 + + //these values are arbitrary + D.depth = rand(75,100) + D.clearance = rand(5,25) + D.dissonance_spread = rand(750,2500) / 100 + + positive_locations.Add(D) + + for(var/mob/L in range(src, 1)) + L << "\blue \icon[src] [src] pings [pick("madly","wildly","excitedly","crazily")]." + +/obj/item/device/depth_scanner/attack_self(var/mob/user as mob) + return src.interact(user) + +/obj/item/device/depth_scanner/interact(var/mob/user as mob) + var/dat = "Co-ordinates with positive matches
" + dat += "== Clear all ==
" + if(current) + dat += "Time: [current.time]
" + dat += "Coords: [current.coords]
" + dat += "Anomaly depth: [current.depth]
" + dat += "Clearance: [current.clearance]
" + dat += "Dissonance spread: [current.dissonance_spread]
" + dat += "clear entry
" + else + dat += "Select an entry from the list
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + if(positive_locations.len) + for(var/index=1, index<=positive_locations.len, index++) + var/datum/depth_scan/D = positive_locations[index] + dat += "[D.time], coords: [D.coords]
" + else + dat += "No entries recorded." + dat += "
" + dat += "Refresh
" + dat += "Close
" + user << browse(dat,"window=depth_scanner;size=300x500") + onclose(user, "depth_scanner") + +/obj/item/device/depth_scanner/Topic(href, href_list) + ..() + usr.set_machine(src) + + if(href_list["select"]) + var/index = text2num(href_list["select"]) + if(index && index <= positive_locations.len) + current = positive_locations[index] + else if(href_list["clear"]) + var/index = text2num(href_list["clear"]) + if(index) + if(index <= positive_locations.len) + var/datum/depth_scan/D = positive_locations[index] + positive_locations.Remove(D) + del(D) + else + //GC will hopefully pick them up before too long + positive_locations = list() + del(current) + else if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=depth_scanner") + + updateSelfDialog() diff --git a/code/modules/research/xenoarchaeology/tools/tools_excav.dm b/code/modules/research/xenoarchaeology/tools/tools_excav.dm new file mode 100644 index 00000000000..7a11c1213a9 --- /dev/null +++ b/code/modules/research/xenoarchaeology/tools/tools_excav.dm @@ -0,0 +1,83 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Excavation pickaxes - sorted in order of delicacy. Players will have to choose the right one for each part of excavation. + +/obj/item/weapon/pickaxe/brush + name = "brush" + //icon_state = "brush" + //item_state = "minipick" + digspeed = 50 + desc = "Thick metallic wires for clearing away dust and loose scree (1 centimetre excavation depth)." + excavation_amount = 0.5 + drill_sound = 'sound/weapons/thudswoosh.ogg' + drill_verb = "brushing" + +/obj/item/weapon/pickaxe/one_pick + name = "1/6 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." + excavation_amount = 1 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/two_pick + name = "1/3 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." + excavation_amount = 2 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/three_pick + name = "1/2 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." + excavation_amount = 3 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/four_pick + name = "2/3 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)." + excavation_amount = 4 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/five_pick + name = "5/6 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)." + excavation_amount = 5 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/six_pick + name = "1/1 pick" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)." + excavation_amount = 6 + drill_sound = 'sound/items/Screwdriver.ogg' + drill_verb = "delicately picking" + +/obj/item/weapon/pickaxe/hand + name = "hand pickaxe" + //icon_state = "excavation" + //item_state = "minipick" + digspeed = 50 + desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)." + excavation_amount = 15 + drill_sound = 'sound/items/Crowbar.ogg' + drill_verb = "clearing" diff --git a/code/modules/research/xenoarchaeology/tools/tools_locater.dm b/code/modules/research/xenoarchaeology/tools/tools_locater.dm new file mode 100644 index 00000000000..ea86c6de9d5 --- /dev/null +++ b/code/modules/research/xenoarchaeology/tools/tools_locater.dm @@ -0,0 +1,97 @@ + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// GPS Locater - locks into a radio frequency and tracks it + +/obj/item/device/beacon_locator + name = "locater device" + desc = "Used to scan and locate signals on a particular frequency according ." + icon = 'device.dmi' + icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull + item_state = "electronic" + var/frequency = 1459 + var/scan_ticks = 0 + var/obj/item/device/radio/target_radio + +/obj/item/device/beacon_locator/New() + ..() + processing_objects.Add(src) + +/obj/item/device/beacon_locator/Del() + processing_objects.Remove(src) + ..() + +/obj/item/device/beacon_locator/process() + if(target_radio) + dir = get_dir(src,target_radio) + switch(get_dist(src,target_radio)) + if(0 to 3) + icon_state = "pinondirect" + if(4 to 10) + icon_state = "pinonclose" + if(11 to 30) + icon_state = "pinonmedium" + if(31 to INFINITY) + icon_state = "pinonfar" + else + if(scan_ticks) + icon_state = "pinonnull" + scan_ticks++ + if(prob(scan_ticks * 10)) + spawn(0) + set background = 1 + if(processing_objects.Find(src)) + //scan radios in the world to try and find one + var/cur_dist = 999 + for(var/obj/item/device/radio/beacon/R in world) + if(R.z == src.z && R.frequency == src.frequency) + var/check_dist = get_dist(src,R) + if(check_dist < cur_dist) + cur_dist = check_dist + target_radio = R + + scan_ticks = 0 + var/turf/T = get_turf(src) + if(target_radio) + T.visible_message("\icon[src] [src] [pick("chirps","chirrups","cheeps")] happily.") + else + T.visible_message("\icon[src] [src] [pick("chirps","chirrups","cheeps")] sadly.") + else + icon_state = "pinoff" + +/obj/item/device/beacon_locator/attack_self(var/mob/user as mob) + return src.interact(user) + +/obj/item/device/beacon_locator/interact(var/mob/user as mob) + var/dat = "Radio frequency tracker
" + dat += {" + Reset tracker
+ Frequency: + - + - + [format_frequency(frequency)] + + + +
+ "} + + dat += "Close
" + user << browse(dat,"window=locater;size=300x150") + onclose(user, "locater") + +/obj/item/device/beacon_locator/Topic(href, href_list) + ..() + usr.set_machine(src) + + if(href_list["reset_tracking"]) + scan_ticks = 1 + target_radio = null + else if(href_list["freq"]) + var/new_frequency = (frequency + text2num(href_list["freq"])) + if (frequency < 1200 || frequency > 1600) + new_frequency = sanitize_frequency(new_frequency, 1499) + frequency = new_frequency + + else if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=locater") + + updateSelfDialog() diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_affect_cold.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_affect_cold.dm new file mode 100644 index 00000000000..c2302d91878 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_affect_cold.dm @@ -0,0 +1,22 @@ + +//inverse of /datum/artifact_effect/heat, the two effects split up for neatness' sake +/datum/artifact_effect/cold + effecttype = "cold" + var/target_temp + +/datum/artifact_effect/cold/New() + ..() + target_temp = rand(0, 250) + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + +/datum/artifact_effect/cold/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + env.temperature -= rand(5,50) + +/datum/artifact_effect/cold/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.temperature < target_temp) + env.temperature -= pick(0, 0, rand(), 1) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_badfeeling.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_badfeeling.dm new file mode 100644 index 00000000000..0be1c3c9c85 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_badfeeling.dm @@ -0,0 +1,67 @@ + +/datum/artifact_effect/badfeeling + effecttype = "badfeeling" + var/list/messages = list("You feel worried.",\ + "Something doesn't feel right.",\ + "You get a strange feeling in your gut.",\ + "Your instincts are trying to warn you about something.",\ + "Someone just walked over your grave.",\ + "There's a strange feeling in the air.",\ + "There's a strange smell in the air.",\ + "The tips of your fingers feel tingly.",\ + "You feel witchy.",\ + "You have a terrible sense of foreboding.",\ + "You've got a bad feeling about this.",\ + "Your scalp prickles.",\ + "The light seems to flicker.",\ + "The shadows seem to lengthen.",\ + "The walls are getting closer.",\ + "Something is wrong") + + var/list/drastic_messages = list("You've got to get out of here!",\ + "Someone's trying to kill you!",\ + "There's something out there!",\ + "What's happening to you?",\ + "OH GOD!",\ + "HELP ME!") + +/datum/artifact_effect/badfeeling/DoEffectTouch(var/mob/user) + if(user) + if (istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = holder + if(prob(50)) + if(prob(75)) + H << "[pick(drastic_messages)]" + else + H << "[pick(messages)]" + + if(prob(50)) + H.dizziness += rand(3,5) + +/datum/artifact_effect/badfeeling/DoEffectAura() + if(holder) + for (var/mob/living/carbon/human/H in range(src.effectrange,holder)) + if(prob(10)) + if(prob(75)) + H << "[pick(messages)]" + else + H << "[pick(drastic_messages)]" + + if(prob(10)) + H.dizziness += rand(3,5) + return 1 + +/datum/artifact_effect/badfeeling/DoEffectPulse() + if(holder) + for (var/mob/living/carbon/human/H in range(src.effectrange,holder)) + if(prob(50)) + if(prob(95)) + H << "[pick(drastic_messages)]" + else + H << "[pick(messages)]" + + if(prob(50)) + H.dizziness += rand(3,5) + else if(prob(25)) + H.dizziness += rand(5,15) + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm new file mode 100644 index 00000000000..45f895e53fd --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm @@ -0,0 +1,37 @@ + +//todo +/datum/artifact_effect/cellcharge + effecttype = "cellcharge" + +/datum/artifact_effect/cellcharge/DoEffectTouch(var/mob/user) + if(user) + if(istype(user, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = user + for (var/obj/item/weapon/cell/D in R.contents) + D.charge += 250 + R << "\blue SYSTEM ALERT: Large energy boost detected!" + return 1 + +/datum/artifact_effect/cellcharge/DoEffectAura() + if(holder) + for (var/obj/machinery/power/apc/C in range(200, holder)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge += 100 + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250 + for (var/mob/living/silicon/robot/M in world) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge += 100 + M << "\blue SYSTEM ALERT: Energy boost detected!" + return 1 + +/datum/artifact_effect/cellcharge/DoEffectPulse() + if(holder) + for (var/obj/machinery/power/apc/C in range(200, holder)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge += 100 + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250 + for (var/mob/living/silicon/robot/M in world) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge += 100 + M << "\blue SYSTEM ALERT: Energy boost detected!" + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm new file mode 100644 index 00000000000..677d5892c5e --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm @@ -0,0 +1,41 @@ + +//todo +/datum/artifact_effect/celldrain + effecttype = "celldrain" + +/datum/artifact_effect/celldrain/DoEffectTouch(var/mob/user) + if(user) + if(istype(user, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = user + for (var/obj/item/weapon/cell/D in R.contents) + D.charge = max(D.charge-250, 0) + R << "\blue SYSTEM ALERT: Energy drain detected!" + return 1 + + return 1 + +/datum/artifact_effect/celldrain/DoEffectAura() + if(holder) + for (var/obj/machinery/power/apc/C in range(200, holder)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge = max(B.charge-250,0) + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + S.charge = max(S.charge-250,0) + for (var/mob/living/silicon/robot/M in world) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge = max(D.charge-250,0) + M << "\red SYSTEM ALERT: Energy drain detected!" + return 1 + +/datum/artifact_effect/celldrain/DoEffectPulse() + if(holder) + for (var/obj/machinery/power/apc/C in range(200, holder)) + for (var/obj/item/weapon/cell/B in C.contents) + B.charge = max(B.charge-250,0) + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + S.charge = max(S.charge-250,0) + for (var/mob/living/silicon/robot/M in world) + for (var/obj/item/weapon/cell/D in M.contents) + D.charge = max(D.charge-250,0) + M << "\red SYSTEM ALERT: Energy drain detected!" + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm new file mode 100644 index 00000000000..4c5329ca927 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm @@ -0,0 +1,66 @@ + +//todo +/datum/artifact_effect/dnaswitch + effecttype = "dnaswitch" + var/severity + +/datum/artifact_effect/dnaswitch/New() + ..() + if(effect == EFFECT_AURA) + severity = rand(1,10) + else + severity = rand(5,95) + +/datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/holder) + if(ishuman(holder) && !istype(holder:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && !istype(holder:head,/obj/item/clothing/head/bio_hood/anomaly)) + holder << pick("\green You feel a little different.",\ + "\green You feel very strange.",\ + "\green Your stomach churns.",\ + "\green Your skin feels loose.",\ + "\green You feel a stabbing pain in your head.",\ + "\green You feel a tingling sensation in your chest.",\ + "\green Your entire body vibrates.") + if(prob(75)) + scramble(1, holder, severity) + else + scramble(0, holder, severity) + return 1 + +/datum/artifact_effect/dnaswitch/DoEffectAura() + for(var/mob/living/carbon/human/H in range(src.effectrange,holder)) + if(istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + + if(prob(30)) + H << pick("\green You feel a little different.",\ + "\green You feel very strange.",\ + "\green Your stomach churns.",\ + "\green Your skin feels loose.",\ + "\green You feel a stabbing pain in your head.",\ + "\green You feel a tingling sensation in your chest.",\ + "\green Your entire body vibrates.") + if(prob(25)) + scramble(1, H, severity) + else + scramble(0, H, severity) + return 1 + +/datum/artifact_effect/dnaswitch/DoEffectPulse() + for(var/mob/living/carbon/human/H in range(200, holder)) + if(istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + + if(prob(75)) + H << pick("\green You feel a little different.",\ + "\green You feel very strange.",\ + "\green Your stomach churns.",\ + "\green Your skin feels loose.",\ + "\green You feel a stabbing pain in your head.",\ + "\green You feel a tingling sensation in your chest.",\ + "\green Your entire body vibrates.") + if(prob(25)) + if(prob(50)) + scramble(1, H, severity) + else + scramble(0, H, severity) + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_emp.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_emp.dm new file mode 100644 index 00000000000..3a62e146acf --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_emp.dm @@ -0,0 +1,12 @@ + +/datum/artifact_effect/emp + effecttype = "emp" + +/datum/artifact_effect/emp/New() + ..() + effect = EFFECT_PULSE + +/datum/artifact_effect/emp/DoEffectPulse() + if(holder) + empulse(get_turf(holder), effectrange/2, effectrange) + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_forcefield.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_forcefield.dm new file mode 100644 index 00000000000..7957c999dd1 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_forcefield.dm @@ -0,0 +1,77 @@ + +/datum/artifact_effect/forcefield + effecttype = "forcefield" + var/list/created_field = list() + +/datum/artifact_effect/forcefield/New() + ..() + trigger = TRIGGER_TOUCH + +/datum/artifact_effect/forcefield/ToggleActivate() + ..() + if(created_field.len) + for(var/obj/effect/energy_field/F in created_field) + created_field.Remove(F) + del F + else if(holder) + while(created_field.len < 16) + var/obj/effect/energy_field/E = new (locate(holder.x,holder.y,holder.z)) + created_field.Add(E) + E.strength = 1 + E.density = 1 + E.anchored = 1 + E.invisibility = 0 + spawn(10) + UpdateMove() + return 1 + +/datum/artifact_effect/forcefield/process() + ..() + for(var/obj/effect/energy_field/E in created_field) + if(E.strength < 1) + E.Strengthen(0.15) + else if(E.strength < 5) + E.Strengthen(0.25) + +/datum/artifact_effect/forcefield/UpdateMove() + if(created_field.len && holder) + while(created_field.len < 16) + //for now, just instantly respawn the fields when they get destroyed + var/obj/effect/energy_field/E = new (locate(holder.x,holder.y,holder)) + created_field.Add(E) + E.anchored = 1 + E.density = 1 + E.invisibility = 0 + + var/obj/effect/energy_field/E = created_field[1] + E.loc = locate(holder.x + 2,holder.y + 2,holder.z) + E = created_field[2] + E.loc = locate(holder.x + 2,holder.y + 1,holder.z) + E = created_field[3] + E.loc = locate(holder.x + 2,holder.y,holder.z) + E = created_field[4] + E.loc = locate(holder.x + 2,holder.y - 1,holder.z) + E = created_field[5] + E.loc = locate(holder.x + 2,holder.y - 2,holder.z) + E = created_field[6] + E.loc = locate(holder.x + 1,holder.y + 2,holder.z) + E = created_field[7] + E.loc = locate(holder.x + 1,holder.y - 2,holder.z) + E = created_field[8] + E.loc = locate(holder.x,holder.y + 2,holder.z) + E = created_field[9] + E.loc = locate(holder.x,holder.y - 2,holder.z) + E = created_field[10] + E.loc = locate(holder.x - 1,holder.y + 2,holder.z) + E = created_field[11] + E.loc = locate(holder.x - 1,holder.y - 2,holder.z) + E = created_field[12] + E.loc = locate(holder.x - 2,holder.y + 2,holder.z) + E = created_field[13] + E.loc = locate(holder.x - 2,holder.y + 1,holder.z) + E = created_field[14] + E.loc = locate(holder.x - 2,holder.y,holder.z) + E = created_field[15] + E.loc = locate(holder.x - 2,holder.y - 1,holder.z) + E = created_field[16] + E.loc = locate(holder.x - 2,holder.y - 2,holder.z) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasco2.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasco2.dm new file mode 100644 index 00000000000..ae44c04b171 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasco2.dm @@ -0,0 +1,22 @@ + +/datum/artifact_effect/gasco2 + effecttype = "gasco2" + var/max_pressure + var/target_percentage + +/datum/artifact_effect/gasco2/New() + ..() + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + max_pressure = rand(115,1000) + +/datum/artifact_effect/gasco2/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + env.carbon_dioxide += rand(2,15) + +/datum/artifact_effect/gasco2/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.total_moles < max_pressure) + env.carbon_dioxide += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasnitro.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasnitro.dm new file mode 100644 index 00000000000..60b7e2a47c3 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasnitro.dm @@ -0,0 +1,22 @@ + +/datum/artifact_effect/gasnitro + effecttype = "gasnitro" + var/max_pressure + var/target_percentage + +/datum/artifact_effect/gasnitro/New() + ..() + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + max_pressure = rand(115,1000) + +/datum/artifact_effect/gasnitro/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + env.nitrogen += rand(2,15) + +/datum/artifact_effect/gasnitro/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.total_moles < max_pressure) + env.nitrogen += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasoxy.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasoxy.dm new file mode 100644 index 00000000000..45e40bd3647 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasoxy.dm @@ -0,0 +1,21 @@ + +/datum/artifact_effect/gasoxy + effecttype = "gasoxy" + var/max_pressure + +/datum/artifact_effect/gasoxy/New() + ..() + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + max_pressure = rand(115,1000) + +/datum/artifact_effect/gasoxy/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + env.oxygen += rand(2,15) + +/datum/artifact_effect/gasoxy/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.total_moles < max_pressure) + env.oxygen += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasplasma.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasplasma.dm new file mode 100644 index 00000000000..27a5c98515b --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gasplasma.dm @@ -0,0 +1,22 @@ + +/datum/artifact_effect/gasplasma + effecttype = "gasplasma" + var/max_pressure + var/target_percentage + +/datum/artifact_effect/gasplasma/New() + ..() + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + max_pressure = rand(115,1000) + +/datum/artifact_effect/gasplasma/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + env.toxins += rand(2,15) + +/datum/artifact_effect/gasplasma/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.total_moles < max_pressure) + env.toxins += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gassleeping.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gassleeping.dm new file mode 100644 index 00000000000..3ac107be500 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_gassleeping.dm @@ -0,0 +1,30 @@ + +/datum/artifact_effect/gassleeping + effecttype = "gassleeping" + var/max_pressure + var/target_percentage + +/datum/artifact_effect/gassleeping/New() + ..() + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + max_pressure = rand(115,1000) + +/datum/artifact_effect/gassleeping/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + var/datum/gas/sleeping_agent/trace_gas = new + env.trace_gases += trace_gas + trace_gas.moles = rand(2,15) + env.update_values() + + +/datum/artifact_effect/gassleeping/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.total_moles < max_pressure) + var/datum/gas/sleeping_agent/trace_gas = new + env.trace_gases += trace_gas + trace_gas.moles = pick(0, 0, 0.1, rand()) + env.update_values() + diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_goodfeeling.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_goodfeeling.dm new file mode 100644 index 00000000000..2dd0e991677 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_goodfeeling.dm @@ -0,0 +1,65 @@ + +/datum/artifact_effect/goodfeeling + effecttype = "goodfeeling" + var/list/messages = list("You feel good.",\ + "Everything seems to be going alright",\ + "You've got a good feeling about this",\ + "Your instincts tell you everything is going to be getting better.",\ + "There's a good feeling in the air.",\ + "Something smells... good.",\ + "The tips of your fingers feel tingly.",\ + "You've got a good feeling about this.",\ + "You feel happy.",\ + "You fight the urge to smile.",\ + "Your scalp prickles.",\ + "All the colours seem a bit more vibrant.",\ + "Everything seems a little lighter.",\ + "The troubles of the world seem to fade away.") + + var/list/drastic_messages = list("You want to hug everyone you meet!",\ + "Everything is going so well!",\ + "You feel euphoric.",\ + "You feel giddy.",\ + "You're so happy suddenly, you almost want to dance and sing.",\ + "You feel like the world is out to help you.") + +/datum/artifact_effect/goodfeeling/DoEffectTouch(var/mob/user) + if(user) + if (istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = holder + if(prob(50)) + if(prob(75)) + H << "[pick(drastic_messages)]" + else + H << "[pick(messages)]" + + if(prob(50)) + H.dizziness += rand(3,5) + +/datum/artifact_effect/goodfeeling/DoEffectAura() + if(holder) + for (var/mob/living/carbon/human/H in range(src.effectrange,holder)) + if(prob(10)) + if(prob(75)) + H << "[pick(messages)]" + else + H << "[pick(drastic_messages)]" + + if(prob(10)) + H.dizziness += rand(3,5) + return 1 + +/datum/artifact_effect/goodfeeling/DoEffectPulse() + if(holder) + for (var/mob/living/carbon/human/H in range(src.effectrange,holder)) + if(prob(50)) + if(prob(95)) + H << "[pick(drastic_messages)]" + else + H << "[pick(messages)]" + + if(prob(50)) + H.dizziness += rand(3,5) + else if(prob(25)) + H.dizziness += rand(5,15) + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm new file mode 100644 index 00000000000..ee01aa182b1 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm @@ -0,0 +1,67 @@ + +/datum/artifact_effect/heal + effecttype = "heal" + +/datum/artifact_effect/heal/DoEffectTouch(var/mob/user) + //caeltodo + if(user) + if (istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = holder + H << "\blue You feel a soothing energy invigorate you." + + for(var/datum/organ/external/affecting in H.organs) + if(affecting && istype(affecting)) + affecting.heal_damage(25, 25) + //H:heal_organ_damage(25, 25) + // + H.adjustOxyLoss(-25) + H.adjustToxLoss(-25) + H.adjustBruteLoss(-25) + H.adjustFireLoss(-25) + H.adjustBrainLoss(-25) + H.radiation -= min(H.radiation, 25) + H.nutrition += 50 + H.bodytemperature = initial(H.bodytemperature) + // + H.vessel.add_reagent("blood",50) + spawn(1) + H.fixblood() + H.regenerate_icons() + return 1 + + else if (istype(user, /mob/living/carbon/monkey/)) + var/mob/living/carbon/monkey/M = holder + M << "\blue You feel a soothing energy invigorate you." + M.adjustOxyLoss(-25) + M.adjustToxLoss(-25) + M.adjustBruteLoss(-25) + M.adjustFireLoss(-25) + M.adjustBrainLoss(-25) + return 1 + +/datum/artifact_effect/heal/DoEffectAura() + //caeltodo + for (var/mob/living/carbon/M in range(src.effectrange,holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + if(prob(10)) M << "\blue You feel a soothing energy radiating from something nearby." + M.adjustBruteLoss(-1) + M.adjustFireLoss(-1) + M.adjustToxLoss(-1) + M.adjustOxyLoss(-1) + M.adjustBrainLoss(-1) + M.updatehealth() + return 1 + +/datum/artifact_effect/heal/DoEffectPulse() + for (var/mob/living/carbon/M in range(src.effectrange,holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\blue A wave of energy invigorates you." + M.adjustBruteLoss(-5) + M.adjustFireLoss(-5) + M.adjustToxLoss(-5) + M.adjustOxyLoss(-5) + M.adjustBrainLoss(-5) + M.updatehealth() + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heat.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heat.dm new file mode 100644 index 00000000000..4639f503e68 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heat.dm @@ -0,0 +1,22 @@ + +//inverse of /datum/artifact_effect/cold, the two effects split up for neatness' sake +/datum/artifact_effect/heat + effecttype = "heat" + var/target_temp + +/datum/artifact_effect/heat/New() + ..() + target_temp = rand(300,600) + effect = pick(EFFECT_TOUCH, EFFECT_AURA) + +/datum/artifact_effect/heat/DoEffectTouch(var/mob/user) + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env) + env.temperature += rand(5,50) + +/datum/artifact_effect/heat/DoEffectAura() + if(holder) + var/datum/gas_mixture/env = holder.loc.return_air() + if(env && env.temperature < target_temp) + env.temperature += pick(0, 0, rand(), 1) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm new file mode 100644 index 00000000000..29c1ffc18ee --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm @@ -0,0 +1,46 @@ + +/datum/artifact_effect/hurt + effecttype = "hurt" + +/datum/artifact_effect/hurt/DoEffectTouch(var/mob/holder) + //caeltodo + if(holder) + if (istype(holder, /mob/living/carbon/)) + var/mob/living/carbon/C = holder + C << "\red A painful discharge of energy strikes you!" + C.adjustOxyLoss(rand(5,25)) + C.adjustToxLoss(rand(5,25)) + C.adjustBruteLoss(rand(5,25)) + C.adjustFireLoss(rand(5,25)) + C.adjustBrainLoss(rand(5,25)) + C.radiation += 25 + C.nutrition -= min(50, C.nutrition) + C.make_dizzy(6) + C.weakened += 6 + return 1 + +/datum/artifact_effect/hurt/DoEffectAura() + if(holder) + for (var/mob/living/carbon/M in range(src.effectrange,holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + if(prob(10)) M << "\red You feel a painful force radiating from something nearby." + M.adjustBruteLoss(1) + M.adjustFireLoss(1) + M.adjustToxLoss(1) + M.adjustOxyLoss(1) + M.adjustBrainLoss(1) + M.updatehealth() + return 1 + +/datum/artifact_effect/hurt/DoEffectPulse() + if(holder) + for (var/mob/living/carbon/human/M in range(effectrange, holder)) + M << "\red A wave of painful energy strikes you!" + M.adjustBruteLoss(3) + M.adjustFireLoss(3) + M.adjustToxLoss(3) + M.adjustOxyLoss(3) + M.adjustBrainLoss(3) + M.updatehealth() + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_radiate.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_radiate.dm new file mode 100644 index 00000000000..7d1c1c887ff --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_radiate.dm @@ -0,0 +1,26 @@ + +/datum/artifact_effect/radiate + effecttype = "radiate" + var/radiation_amount + +/datum/artifact_effect/radiate/New() + ..() + radiation_amount = rand(1, 10) + +/datum/artifact_effect/radiate/DoEffectTouch(var/mob/living/user) + if(user) + user.apply_effect(radiation_amount * 5,IRRADIATE,0) + user.updatehealth() + return 1 + +/datum/artifact_effect/radiate/DoEffectAura() + for (var/mob/living/M in range(src.effectrange,holder)) + M.apply_effect(radiation_amount,IRRADIATE,0) + M.updatehealth() + return 1 + +/datum/artifact_effect/radiate/DoEffectPulse() + for (var/mob/living/M in range(src.effectrange,holder)) + M.apply_effect(radiation_amount * 25,IRRADIATE,0) + M.updatehealth() + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_roboheal.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_roboheal.dm new file mode 100644 index 00000000000..cd058da7fa2 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_roboheal.dm @@ -0,0 +1,31 @@ + +/datum/artifact_effect/roboheal + effecttype = "roboheal" + +/datum/artifact_effect/roboheal/DoEffectTouch(var/mob/user) + if(user) + if (istype(user, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = holder + R << "\blue Your systems report damaged components mending by themselves!" + R.adjustBruteLoss(rand(-10,-30)) + R.adjustFireLoss(rand(-10,-30)) + return 1 + +/datum/artifact_effect/roboheal/DoEffectAura() + if(holder) + for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) + if(prob(10)) + M << "\blue SYSTEM ALERT: Beneficial energy field detected!" + M.adjustBruteLoss(-1) + M.adjustFireLoss(-1) + M.updatehealth() + return 1 + +/datum/artifact_effect/roboheal/DoEffectPulse() + if(holder) + for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) + M << "\blue SYSTEM ALERT: Structural damage has been repaired by energy pulse!" + M.adjustBruteLoss(-10) + M.adjustFireLoss(-10) + M.updatehealth() + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_robohurt.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_robohurt.dm new file mode 100644 index 00000000000..8e93a26b3c0 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_robohurt.dm @@ -0,0 +1,30 @@ + +/datum/artifact_effect/robohurt + effecttype = "robohurt" + +/datum/artifact_effect/robohurt/DoEffectTouch(var/mob/user) + if(user) + if (istype(user, /mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = user + R << "\red Your systems report severe damage has been inflicted!" + R.adjustBruteLoss(rand(10,50)) + R.adjustFireLoss(rand(10,50)) + return 1 + +/datum/artifact_effect/robohurt/DoEffectAura() + if(holder) + for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) + if(prob(10)) M << "\red SYSTEM ALERT: Harmful energy field detected!" + M.adjustBruteLoss(1) + M.adjustFireLoss(1) + M.updatehealth() + return 1 + +/datum/artifact_effect/robohurt/DoEffectPulse() + if(holder) + for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) + M << "\red SYSTEM ALERT: Structural damage inflicted by energy pulse!" + M.adjustBruteLoss(10) + M.adjustFireLoss(10) + M.updatehealth() + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm new file mode 100644 index 00000000000..6648ffd19cf --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm @@ -0,0 +1,36 @@ + +//todo +/datum/artifact_effect/sleepy + effecttype = "sleepy" + +/datum/artifact_effect/sleepy/DoEffectTouch(var/mob/user) + if(user) + if(istype(user,/mob/living/carbon)) + var/mob/living/carbon/C = user + C << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + C.drowsyness = min(user.drowsyness + rand(5,25), 50) + C.eye_blurry = min(user.eye_blurry + rand(1,3), 50) + return 1 + else if(istype(user,/mob/living/silicon/robot)) + user << "\red SYSTEM ALERT: CPU cycles slowing down." + return 1 + +/datum/artifact_effect/sleepy/DoEffectAura() + if(holder) + for (var/mob/living/carbon/M in range(src.effectrange,holder)) + if(prob(10)) + M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + M.drowsyness = min(M.drowsyness + 1, 25) + M.eye_blurry = min(M.eye_blurry + 1, 25) + for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) + M << "\red SYSTEM ALERT: CPU cycles slowing down." + return 1 + +/datum/artifact_effect/sleepy/DoEffectPulse() + if(holder) + for(var/mob/living/H in range(src.effectrange, holder)) + H.drowsyness = min(H.drowsyness + rand(5,15), 50) + H.eye_blurry = min(H.eye_blurry + rand(5,15), 50) + for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) + M << "\red SYSTEM ALERT: CPU cycles slowing down." + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm new file mode 100644 index 00000000000..47506bb0f2a --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm @@ -0,0 +1,38 @@ + +/datum/artifact_effect/stun + effecttype = "stun" + +/datum/artifact_effect/stun/DoEffectTouch(var/mob/user) + if(user) + if (istype(user, /mob/living/carbon/)) + user << "\red A powerful force overwhelms your consciousness." + user.weakened += 45 + user.stuttering += 45 + user.stunned += rand(1,10) + return 1 + +/datum/artifact_effect/stun/DoEffectAura() + if(holder) + for (var/mob/living/carbon/M in range(src.effectrange,holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + if(prob(10)) M << "\red You feel numb." + if(prob(20)) + M << "\red Your body goes numb for a moment." + M.weakened += 2 + M.stuttering += 2 + if(prob(10)) + M.stunned += 1 + return 1 + +/datum/artifact_effect/stun/DoEffectPulse() + if(holder) + for (var/mob/living/carbon/M in range(src.effectrange,holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + M << "\red A wave of energy overwhelms your senses!" + M.weakened += 4 + M.stuttering += 4 + if(prob(10)) + M.stunned += 1 + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm new file mode 100644 index 00000000000..b99d7f9ab5f --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm @@ -0,0 +1,66 @@ + +/datum/artifact_effect/teleport + effecttype = "teleport" + +/datum/artifact_effect/teleport/DoEffectTouch(var/mob/user) + var/list/randomturfs = new/list() + for(var/turf/simulated/floor/T in orange(user, 50)) + randomturfs.Add(T) + if(randomturfs.len > 0) + user << "\red You are suddenly zapped away elsewhere!" + if (user.buckled) + user.buckled.unbuckle() + + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(user)) + sparks.start() + user.loc = pick(randomturfs) + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(user)) + sparks.start() + + return 1 + +/datum/artifact_effect/teleport/DoEffectAura() + if(holder) + for (var/mob/living/M in range(src.effectrange,holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + var/list/randomturfs = new/list() + for(var/turf/simulated/floor/T in orange(M, 30)) + randomturfs.Add(T) + if(randomturfs.len > 0) + M << "\red You are displaced by a strange force!" + if(M.buckled) + M.buckled.unbuckle() + + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() + M.loc = pick(randomturfs) + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() + return 1 + +/datum/artifact_effect/teleport/DoEffectPulse() + if(holder) + for (var/mob/living/M in range(src.effectrange, holder)) + if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) + continue + var/list/randomturfs = new/list() + for(var/turf/simulated/floor/T in orange(M, 15)) + randomturfs.Add(T) + if(randomturfs.len > 0) + M << "\red You are displaced by a strange force!" + + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() + if(M.buckled) + M.buckled.unbuckle() + M.loc = pick(randomturfs) + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() + return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/unknown.dm b/code/modules/research/xenoarchaeology/unknown/unknown.dm new file mode 100644 index 00000000000..1313203a943 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/unknown.dm @@ -0,0 +1,360 @@ + +#define EFFECT_TOUCH 0 +#define EFFECT_AURA 1 +#define EFFECT_PULSE 2 +#define MAX_EFFECT 2 + +#define TRIGGER_TOUCH 0 +#define TRIGGER_WATER 1 +#define TRIGGER_ACID 2 +#define TRIGGER_VOLATILE 3 +#define TRIGGER_TOXIN 4 +#define TRIGGER_FORCE 5 +#define TRIGGER_ENERGY 6 +#define TRIGGER_HEAT 7 +#define TRIGGER_COLD 8 +#define TRIGGER_PLASMA 9 +#define TRIGGER_OXY 10 +#define TRIGGER_CO2 11 +#define TRIGGER_NITRO 12 +#define MAX_TRIGGER 12 + +//sleeping gas appears to be bugged, currently +var/list/valid_primary_effect_types = list(\ + /datum/artifact_effect/cellcharge,\ + /datum/artifact_effect/celldrain,\ + /datum/artifact_effect/forcefield,\ + /datum/artifact_effect/gasoxy,\ + /datum/artifact_effect/gasplasma,\ +/* /datum/artifact_effect/gassleeping,\*/ + /datum/artifact_effect/heal,\ + /datum/artifact_effect/hurt,\ + /datum/artifact_effect/emp,\ + /datum/artifact_effect/teleport,\ + /datum/artifact_effect/robohurt,\ + /datum/artifact_effect/roboheal) + +var/list/valid_secondary_effect_types = list(\ + /datum/artifact_effect/cold,\ + /datum/artifact_effect/badfeeling,\ + /datum/artifact_effect/cellcharge,\ + /datum/artifact_effect/celldrain,\ + /datum/artifact_effect/dnaswitch,\ + /datum/artifact_effect/emp,\ + /datum/artifact_effect/gasco2,\ + /datum/artifact_effect/gasnitro,\ + /datum/artifact_effect/gasoxy,\ + /datum/artifact_effect/gasplasma,\ +/* /datum/artifact_effect/gassleeping,\*/ + /datum/artifact_effect/goodfeeling,\ + /datum/artifact_effect/heal,\ + /datum/artifact_effect/hurt,\ + /datum/artifact_effect/radiate,\ + /datum/artifact_effect/roboheal,\ + /datum/artifact_effect/robohurt,\ + /datum/artifact_effect/sleepy,\ + /datum/artifact_effect/stun,\ + /datum/artifact_effect/teleport) + +/obj/machinery/artifact + name = "alien artifact" + desc = "A large alien device." + icon = 'xenoarchaeology.dmi' + icon_state = "ano00" + var/icon_num = 0 + density = 1 + var/datum/artifact_effect/my_effect + var/datum/artifact_effect/secondary_effect + var/being_used = 0 + +/obj/machinery/artifact/New() + ..() + + //setup primary effect - these are the main ones (mixed) + var/effecttype = pick(valid_primary_effect_types) + my_effect = new effecttype(src) + + //75% chance to have a secondary stealthy (and mostly bad) effect + if(prob(75)) + effecttype = pick(valid_secondary_effect_types) + secondary_effect = new effecttype(src) + if(prob(75)) + secondary_effect.ToggleActivate(0) + + icon_num = rand(0,11) + icon_state = "ano[icon_num]0" + if(icon_num == 7 || icon_num == 8) + name = "large crystal" + desc = pick("It shines faintly as it catches the light.",\ + "It appears to have a faint inner glow.",\ + "It seems to draw you inward as you look it at.",\ + "Something twinkles faintly as you look at it.",\ + "It's mesmerizing to behold.") + if(prob(50)) + my_effect.trigger = TRIGGER_ENERGY + else if(icon_num == 9) + name = "alien computer" + desc = "It is covered in strange markings." + if(prob(75)) + my_effect.trigger = TRIGGER_TOUCH + else if(icon_num == 10) + desc = "A large alien device, there appear to be some kind of vents in the side." + if(prob(50)) + my_effect.trigger = rand(6,12) + else if(icon_num == 11) + name = "sealed alien pod" + desc = "A strange alien device." + if(prob(25)) + my_effect.trigger = rand(1,4) + +#define TRIGGER_PLASMA 9 +#define TRIGGER_OXY 10 +#define TRIGGER_CO2 11 +#define TRIGGER_NITRO 12 + +/obj/machinery/artifact/process() + if(my_effect) + my_effect.process() + if(secondary_effect) + secondary_effect.process() + + if(pulledby) + Bumped(pulledby) + + //if either of our effects rely on environmental factors, work that out + var/trigger_cold = 0 + var/trigger_hot = 0 + var/trigger_plasma = 0 + var/trigger_oxy = 0 + var/trigger_co2 = 0 + var/trigger_nitro = 0 + if( (my_effect.trigger >= TRIGGER_HEAT && my_effect.trigger <= TRIGGER_NITRO) || (my_effect.trigger >= TRIGGER_HEAT && my_effect.trigger <= TRIGGER_NITRO) ) + var/turf/T = get_turf(src) + var/datum/gas_mixture/env = T.return_air() + if(env) + if(env.temperature < 225) + trigger_cold = 1 + else if(env.temperature > 375) + trigger_hot = 1 + + if(env.toxins >= 10) + trigger_plasma = 1 + if(env.oxygen >= 10) + trigger_oxy = 1 + if(env.carbon_dioxide >= 10) + trigger_co2 = 1 + if(env.nitrogen >= 10) + trigger_nitro = 1 + + //COLD ACTIVATION + if(trigger_cold) + if(my_effect.trigger == TRIGGER_COLD && !my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_COLD && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + else + if(my_effect.trigger == TRIGGER_COLD && my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_COLD && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + + //HEAT ACTIVATION + if(trigger_hot) + if(my_effect.trigger == TRIGGER_HEAT && !my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + else + if(my_effect.trigger == TRIGGER_HEAT && my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + + //PLASMA GAS ACTIVATION + if(trigger_plasma) + if(my_effect.trigger == TRIGGER_PLASMA && !my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_PLASMA && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + else + if(my_effect.trigger == TRIGGER_PLASMA && my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_PLASMA && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + + //OXYGEN GAS ACTIVATION + if(trigger_oxy) + if(my_effect.trigger == TRIGGER_OXY && !my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_OXY && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + else + if(my_effect.trigger == TRIGGER_OXY && my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_OXY && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + + //CO2 GAS ACTIVATION + if(trigger_co2) + if(my_effect.trigger == TRIGGER_CO2 && !my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_CO2 && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + else + if(my_effect.trigger == TRIGGER_CO2 && my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_CO2 && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + + //NITROGEN GAS ACTIVATION + if(trigger_nitro) + if(my_effect.trigger == TRIGGER_NITRO && !my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_NITRO && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + else + if(my_effect.trigger == TRIGGER_NITRO && my_effect.activated) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_NITRO && !secondary_effect.activated) + secondary_effect.ToggleActivate(0) + +/obj/machinery/artifact/attack_hand(var/mob/user as mob) + if (get_dist(user, src) > 1) + user << "\red You can't reach [src] from here." + return + if(ishuman(user) && istype(user:gloves,/obj/item/clothing/gloves)) + return ..() + + src.add_fingerprint(user) + + if(my_effect.trigger == TRIGGER_TOUCH) + user << "You touch [src]." + my_effect.ToggleActivate() + else + user << "You touch [src], [pick("and nothing of note happens","but nothing happens","and nothing interesting happens","you notice nothing different","nothing seems to have happened")]." + + if(prob(25) && secondary_effect && secondary_effect.trigger == my_effect.trigger) + secondary_effect.ToggleActivate(0) + + if (my_effect.effect == EFFECT_TOUCH) + my_effect.DoEffectTouch(user) + + if(secondary_effect && secondary_effect.effect == EFFECT_TOUCH && secondary_effect.activated) + secondary_effect.DoEffectTouch(user) + +/obj/machinery/artifact/attackby(obj/item/weapon/W as obj, mob/living/user as mob) + + if (istype(W, /obj/item/weapon/reagent_containers/)) + if(W.reagents.has_reagent("hydrogen", 1) || W.reagents.has_reagent("water", 1)) + if(my_effect.trigger == TRIGGER_WATER) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_WATER && prob(25)) + secondary_effect.ToggleActivate(0) + else if(W.reagents.has_reagent("acid", 1) || W.reagents.has_reagent("pacid", 1) || W.reagents.has_reagent("diethylamine", 1)) + if(my_effect.trigger == TRIGGER_ACID) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_ACID && prob(25)) + secondary_effect.ToggleActivate(0) + else if(W.reagents.has_reagent("plasma", 1) || W.reagents.has_reagent("thermite", 1)) + if(my_effect.trigger == TRIGGER_VOLATILE) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_VOLATILE && prob(25)) + secondary_effect.ToggleActivate(0) + else if(W.reagents.has_reagent("toxin", 1) || W.reagents.has_reagent("cyanide", 1) || W.reagents.has_reagent("amanitin", 1) || W.reagents.has_reagent("neurotoxin", 1)) + if(my_effect.trigger == TRIGGER_TOXIN) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_TOXIN && prob(25)) + secondary_effect.ToggleActivate(0) + else if(istype(W,/obj/item/weapon/melee/baton) && W:status ||\ + istype(W,/obj/item/weapon/melee/energy) ||\ + istype(W,/obj/item/weapon/melee/cultblade) ||\ + istype(W,/obj/item/weapon/card/emag) ||\ + istype(W,/obj/item/device/multitool)) + if (my_effect.trigger == TRIGGER_ENERGY) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_ENERGY && prob(25)) + secondary_effect.ToggleActivate(0) + + else if (istype(W,/obj/item/weapon/match) && W:lit ||\ + istype(W,/obj/item/weapon/weldingtool) && W:welding ||\ + istype(W,/obj/item/weapon/lighter) && W:lit) + if(my_effect.trigger == TRIGGER_HEAT) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_HEAT && prob(25)) + secondary_effect.ToggleActivate(0) + else + ..() + if (my_effect.trigger == TRIGGER_FORCE && W.force >= 10) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25)) + secondary_effect.ToggleActivate(0) + +/obj/machinery/artifact/Bumped(M as mob|obj) + ..() + if(istype(M,/obj)) + if(M:throwforce >= 10) + if(my_effect.trigger == TRIGGER_FORCE) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25)) + secondary_effect.ToggleActivate(0) + else if(ishuman(M) && !istype(M:gloves,/obj/item/clothing/gloves)) + var/warn = 0 + + if (my_effect.trigger == TRIGGER_TOUCH && prob(50)) + my_effect.ToggleActivate() + warn = 1 + if(secondary_effect && secondary_effect.trigger == TRIGGER_TOUCH && prob(25)) + secondary_effect.ToggleActivate(0) + warn = 1 + + if (my_effect.effect == EFFECT_TOUCH && prob(50)) + my_effect.DoEffectTouch(M) + warn = 1 + if(secondary_effect && secondary_effect.effect == EFFECT_TOUCH && secondary_effect.activated && prob(50)) + secondary_effect.DoEffectTouch(M) + warn = 1 + + if(warn) + M << "You accidentally touch [src]." + ..() + +/obj/machinery/artifact/bullet_act(var/obj/item/projectile/P) + if(istype(P,/obj/item/projectile/bullet) ||\ + istype(P,/obj/item/projectile/hivebotbullet)) + if(my_effect.trigger == TRIGGER_FORCE) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_FORCE && prob(25)) + secondary_effect.ToggleActivate(0) + + else if(istype(P,/obj/item/projectile/beam) ||\ + istype(P,/obj/item/projectile/ion) ||\ + istype(P,/obj/item/projectile/energy)) + if(my_effect.trigger == TRIGGER_ENERGY) + my_effect.ToggleActivate() + if(secondary_effect && secondary_effect.trigger == TRIGGER_ENERGY && prob(25)) + secondary_effect.ToggleActivate(0) + +/obj/machinery/artifact/ex_act(severity) + switch(severity) + if(1.0) del src + if(2.0) + if (prob(50)) + del src + else + if(my_effect.trigger == TRIGGER_FORCE || my_effect.trigger == TRIGGER_HEAT) + my_effect.ToggleActivate() + if(secondary_effect && (secondary_effect.trigger == TRIGGER_FORCE || secondary_effect.trigger == TRIGGER_HEAT) && prob(25)) + secondary_effect.ToggleActivate(0) + if(3.0) + if (my_effect.trigger == TRIGGER_FORCE || my_effect.trigger == TRIGGER_HEAT) + my_effect.ToggleActivate() + if(secondary_effect && (secondary_effect.trigger == TRIGGER_FORCE || secondary_effect.trigger == TRIGGER_HEAT) && prob(25)) + secondary_effect.ToggleActivate(0) + return + +/obj/machinery/artifact/Move() + ..() + if(my_effect) + my_effect.UpdateMove() + if(secondary_effect) + secondary_effect.UpdateMove() diff --git a/code/modules/research/xenoarchaeology/unknown_analysis.dm b/code/modules/research/xenoarchaeology/unknown/unknown_analysis.dm similarity index 99% rename from code/modules/research/xenoarchaeology/unknown_analysis.dm rename to code/modules/research/xenoarchaeology/unknown/unknown_analysis.dm index 706343e8f62..0f7e9349e1e 100644 --- a/code/modules/research/xenoarchaeology/unknown_analysis.dm +++ b/code/modules/research/xenoarchaeology/unknown/unknown_analysis.dm @@ -29,7 +29,7 @@ var/list/alltriggers = list("Contact with Living Organism","Heavy Impact","Contact with Energy Source","Contact with Hydrogen","Contact with Corrosive Substance","Contact with Volatile Substance","Contact with Toxins","Exposure to Heat") var/list/alleffects = list("Healing Device","Anti-biological Weapon","Non-lethal Stunning Trap","Mechanoid Repair Module","Mechanoid Deconstruction Device","Power Generator","Power Drain","Stellar Mineral Attractor","Agriculture Regulator","Shield Generator","Space-Time Displacer") var/list/allranges = list("Constant Short-Range Energy Field","Medium Range Energy Pulses","Long Range Energy Pulses","Extreme Range Energy Pulses","Requires contact with subject") - +/* /obj/machinery/artifact_analyser/New() ..() origin_bonuses = new/list() @@ -316,3 +316,4 @@ analyser.owned_pad = src world << "pad set analyser to self" break*/ +*/ \ No newline at end of file diff --git a/code/modules/research/xenoarchaeology/unknown_db.dm b/code/modules/research/xenoarchaeology/unknown/unknown_db.dm similarity index 100% rename from code/modules/research/xenoarchaeology/unknown_db.dm rename to code/modules/research/xenoarchaeology/unknown/unknown_db.dm diff --git a/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm b/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm new file mode 100644 index 00000000000..a89ef63d0b9 --- /dev/null +++ b/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm @@ -0,0 +1,68 @@ + +//override procs in children as necessary +/datum/artifact_effect + var/effecttype = "unknown" //purely used for admin checks ingame + var/effect = EFFECT_TOUCH + var/effectrange = 4 + var/trigger = TRIGGER_TOUCH + var/atom/holder + var/activated = 0 + var/chargelevel = 0 + var/chargelevelmax = 10 + var/artifact_id = "" + +/datum/artifact_effect/New(var/atom/location) + ..() + holder = location + effect = rand(0,MAX_EFFECT) + trigger = rand(0,MAX_TRIGGER) + + //random charge time and distance + switch(pick(100;1, 50;2, 25;3)) + if(1) + //short range, short charge time + chargelevelmax = rand(3, 20) + effectrange = rand(1, 3) + if(2) + //medium range, medium charge time + chargelevelmax = rand(15, 40) + effectrange = rand(5, 15) + if(3) + //large range, long charge time + chargelevelmax = rand(20, 120) + effectrange = rand(20, 200) + +/datum/artifact_effect/proc/ToggleActivate(var/reveal_toggle = 1) + //so that other stuff happens first + spawn(0) + if(activated) + activated = 0 + else + activated = 1 + if(holder && istype(holder, /obj/machinery/artifact)) + var/obj/machinery/artifact/A = holder + var/display_msg + if(activated) + display_msg = pick("momentarily glows brightly!","distorts slightly for a moment!","flickers slightly!","vibrates!","shimmers slightly for a moment!") + else + display_msg = pick("grows dull!","fades in intensity!","suddenly becomes very still!","suddenly becomes very quiet!") + + if(reveal_toggle) + A.icon_state = "ano[A.icon_num][activated]" + A.visible_message("\red \icon[A] [A] [display_msg]") + +/datum/artifact_effect/proc/DoEffectTouch(var/mob/user) +/datum/artifact_effect/proc/DoEffectAura(var/atom/holder) +/datum/artifact_effect/proc/DoEffectPulse(var/atom/holder) +/datum/artifact_effect/proc/UpdateMove() + +/datum/artifact_effect/proc/process() + if(chargelevel < chargelevelmax) + chargelevel++ + + if(activated) + if(effect == EFFECT_AURA) + DoEffectAura() + else if(effect == EFFECT_PULSE && chargelevel >= chargelevelmax) + chargelevel = 0 + DoEffectPulse() diff --git a/code/modules/research/xenoarchaeology/unknown_effect.dm b/code/modules/research/xenoarchaeology/unknown/unknown_effect_old.dm similarity index 100% rename from code/modules/research/xenoarchaeology/unknown_effect.dm rename to code/modules/research/xenoarchaeology/unknown/unknown_effect_old.dm diff --git a/code/modules/research/xenoarchaeology/unknown_harvester.dm b/code/modules/research/xenoarchaeology/unknown/unknown_harvester.dm similarity index 98% rename from code/modules/research/xenoarchaeology/unknown_harvester.dm rename to code/modules/research/xenoarchaeology/unknown/unknown_harvester.dm index 39463888c59..40733e91c7e 100644 --- a/code/modules/research/xenoarchaeology/unknown_harvester.dm +++ b/code/modules/research/xenoarchaeology/unknown/unknown_harvester.dm @@ -8,7 +8,7 @@ var/harvesting = 0 var/obj/item/weapon/anobattery/inserted_battery var/obj/machinery/artifact/cur_artifact - var/obj/machinery/analyser_pad/owned_pad = null + var/obj/machinery/anomaly/scanner/owned_pad = null /obj/machinery/artifact_harvester/New() ..() @@ -85,7 +85,7 @@ var/mundane = 0 for(var/obj/O in get_turf(owned_pad)) - if(!istype(O, /obj/machinery/artifact) && !istype(O, /obj/machinery/analyser_pad)) + if(!istype(O, /obj/machinery/artifact) && !istype(O, /obj/machinery/anomaly/scanner)) mundane++ break for(var/mob/O in get_turf(owned_pad)) diff --git a/code/modules/research/xenoarchaeology/unknown.dm b/code/modules/research/xenoarchaeology/unknown/unknown_old.dm similarity index 99% rename from code/modules/research/xenoarchaeology/unknown.dm rename to code/modules/research/xenoarchaeology/unknown/unknown_old.dm index 96107f8ebdc..a313c56b967 100644 --- a/code/modules/research/xenoarchaeology/unknown.dm +++ b/code/modules/research/xenoarchaeology/unknown/unknown_old.dm @@ -87,9 +87,11 @@ my_effect.effectmode = "worldpulse" src.recharge = rand(40,120) + /* display_id += pick("kappa","sigma","antaeres","beta","lorard","omicron","iota","upsilon","omega","gamma","delta") display_id += "-" display_id += num2text(rand(100,999)) + */ /obj/machinery/artifact/Del() ..() diff --git a/code/modules/research/xenoarchaeology/unknown_synthetic.dm b/code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm similarity index 98% rename from code/modules/research/xenoarchaeology/unknown_synthetic.dm rename to code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm index 24bd324e4c0..1ef39c7cf74 100644 --- a/code/modules/research/xenoarchaeology/unknown_synthetic.dm +++ b/code/modules/research/xenoarchaeology/unknown/unknown_synthetic.dm @@ -85,7 +85,7 @@ var/turf/T = get_turf(src) T.visible_message("\icon[src]\blue The utiliser device buzzes.", "\icon[src]\blue You hear something buzz.") else - inserted_battery.battery_effect.DoEffect(src) + inserted_battery.battery_effect.DoEffectPulse(src) time -= 10 inserted_battery.stored_charge -= 10 + rand(-1,1) cooldown += 10 From b63bc438203438984381e5a8724ada5bcbc0c701 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Tue, 12 Feb 2013 22:55:07 +1000 Subject: [PATCH 21/66] new sprites, reworked digspite spawning and geosamples to fit artifacts, misc tweaks (admin logging on syndie beacon, energy field) Signed-off-by: Cael_Aislinn --- .../Cael_Aislinn/energy_field.dm | 9 +- code/game/machinery/syndicatebeacon.dm | 2 + code/modules/mining/mine_turfs.dm | 147 +++++++++++------- .../research/xenoarchaeology/geosample.dm | 30 ++-- icons/obj/mining.dmi | Bin 43727 -> 45471 bytes icons/obj/xenoarchaeology.dmi | Bin 48429 -> 50870 bytes 6 files changed, 117 insertions(+), 71 deletions(-) diff --git a/code/WorkInProgress/Cael_Aislinn/energy_field.dm b/code/WorkInProgress/Cael_Aislinn/energy_field.dm index 4488fc3af03..2f79a820cdb 100644 --- a/code/WorkInProgress/Cael_Aislinn/energy_field.dm +++ b/code/WorkInProgress/Cael_Aislinn/energy_field.dm @@ -8,7 +8,7 @@ icon_state = "shieldsparkles" anchored = 1 layer = 2.1 - density = 0 + density = 1 invisibility = 2 var/strength = 0 var/obj/machinery/shield_gen/parent @@ -31,7 +31,7 @@ //if we take too much damage, drop out - the generator will bring us back up if we have enough power if(strength < 1) - invisibility = 2 + invisibility = 101 density = 0 /obj/effect/energy_field/proc/Strengthen(var/severity) @@ -41,7 +41,7 @@ if(strength > 1) invisibility = 0 density = 1 - +/* /obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) //Purpose: Determines if the object (or airflow) can pass this atom. //Called by: Movement, airflow. @@ -49,4 +49,5 @@ //Outputs: Boolean if can pass. //return (!density || !height || air_group) - return density + return !density +*/ \ No newline at end of file diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 7dec73e335c..bbf765544fc 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -85,6 +85,8 @@ M << "You have joined the ranks of the Syndicate and become a traitor to the station!" + message_admins("[N]/([N.ckey]) has accepted a traitor objective from a syndicate beacon.") + var/obj_count = 1 for(var/datum/objective/OBJ in M.mind.objectives) M << "Objective #[obj_count]: [OBJ.explanation_text]" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 27222b680e4..742fe3d5d9d 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -2,6 +2,7 @@ #define XENOARCH_SPAWN_CHANCE 0.5 #define XENOARCH_SPREAD_CHANCE 15 +#define ARTIFACT_SPAWN_CHANCE 20 /turf/simulated/mineral //wall piece name = "Rock" @@ -28,7 +29,7 @@ var/archaeo_overlay = "" var/excav_overlay = "" var/obj/item/weapon/last_find - var/datum/find/artifact_find + var/datum/artifact_find/artifact_find /turf/simulated/mineral/Del() return @@ -82,61 +83,68 @@ //---- Xenoarchaeology BEGIN - if(mineralAmt > 0 && !excavation_minerals.len) - for(var/i=0, i 0 && !excavation_minerals.len) + for(var/i=0, i 0) - if(excavation_level < 25) - src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv1_[rand(1,3)]") - else if(excavation_level < 50) - src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv2_[rand(1,3)]") - else if(excavation_level < 75) - src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv3_[rand(1,3)]") - else - src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv4_[rand(1,3)]") - desc = "It appears to be partially excavated."*/ + if(!src.geological_data) + src.geological_data = new/datum/geosample(src) + src.geological_data.UpdateTurf(src) + + //for excavated turfs placeable in the map editor + /*if(excavation_level > 0) + if(excavation_level < 25) + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv1_[rand(1,3)]") + else if(excavation_level < 50) + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv2_[rand(1,3)]") + else if(excavation_level < 75) + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv3_[rand(1,3)]") + else + src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv4_[rand(1,3)]") + desc = "It appears to be partially excavated."*/ return @@ -172,6 +180,14 @@ src = M M.levelupdate() + //preserve archaeo data + M.geological_data = src.geological_data + M.excavation_minerals = src.excavation_minerals + M.overlays = src.overlays + M.artifact_find = src.artifact_find + M.archaeo_overlay = src.archaeo_overlay + M.excav_overlay = src.excav_overlay + /*else if (prob(artifactChance)) new/obj/machinery/artifact(src)*/ return @@ -290,14 +306,14 @@ commented out in r5061, I left it because of the shroom thingies if (istype(W, /obj/item/device/depth_scanner)) var/obj/item/device/depth_scanner/C = W - C.scan_turf(user, src) + C.scan_atom(user, src) return if (istype(W, /obj/item/device/measuring_tape)) var/obj/item/device/measuring_tape/P = W user.visible_message("\blue[user] extends [P] towards [src].","\blue You extend [P] towards [src].") if(do_after(user,40)) - user << "\blue \icon[P] [src] has been excavated to a depth of [src.excavation_level]cm." + user << "\blue \icon[P] [src] has been excavated to a depth of [2*src.excavation_level]cm." return if (istype(W, /obj/item/weapon/pickaxe)) @@ -354,6 +370,23 @@ commented out in r5061, I left it because of the shroom thingies excavate_find(5, F) if(src.excavation_level + P.excavation_amount >= 100) + //if players have been excavating this turf, have a chance to leave some rocky debris behind + var/boulder_prob = 0 + if(src.excavation_level > 15) + boulder_prob = 50 + if(artifact_find) + boulder_prob += 10 + if(src.excavation_level == 100) + boulder_prob += 40 + else if(src.excavation_level > 95) + boulder_prob += 25 + else if(src.excavation_level > 90) + boulder_prob += 10 + if(prob(boulder_prob)) + var/obj/structure/boulder/B = new(src) + if(artifact_find) + B.artifact_find = artifact_find + gets_drilled() return else @@ -473,17 +506,19 @@ commented out in r5061, I left it because of the shroom thingies //some find types delete the /obj/item/weapon/archaeological_find and replace it with something else, this handles when that happens //yuck + var/display_name = "something" if(!X) X = last_find - if(!X) - X = "something" + if(X) + display_name = X.name //many finds are ancient and thus very delicate - luckily there is a specialised energy suspension field which protects them when they're being extracted if(prob(F.prob_delicate)) var/obj/effect/suspension_field/S = locate() in src if(!S || S.field_type != get_responsive_reagent(F.find_type)) - src.visible_message("\red[pick("[X] crumbles away into dust","[X] breaks apart","[X] collapses onto itself")].") - del(X) + if(X) + src.visible_message("\red[pick("[display_name] crumbles away into dust","[display_name] breaks apart","[display_name] collapses onto itself")].") + del(X) src.finds.Remove(F) diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index 1ecc347f6da..cd02736b3fd 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -64,7 +64,7 @@ var/list/artifact_spawning_turfs = list() var/age_million = 0 var/age_billion = 0 var/artifact_id = "" //id of a nearby artifact, if there is one - var/artifact_distance = -1 //proportional to distance + var/artifact_distance = 9999 //proportional to distance var/source_mineral = "calcium" var/total_spread = 0 // @@ -134,14 +134,14 @@ var/list/artifact_spawning_turfs = list() if("Clown") age = rand(-1,-999) //thats_the_joke.mp4 age_thousand = rand(-1,-999) - find_presence["beryllium"] = rand(1,1000) / 100 - source_mineral = "beryllium" + find_presence["plasma"] = rand(1,1000) / 100 + source_mineral = "plasma" //find_presence[FIND_IGNEOUS] = comp_remaining * (rand(25, 75) / 100) //comp_remaining -= find_presence[FIND_IGNEOUS] find_presence["neon"] = rand(1,500) / 100 - if(prob(20)) - find_presence["carbon"] = rand(1,10) / 100 + /*if(prob(20)) + find_presence["carbon"] = rand(1,10) / 100*/ //find_presence[FIND_METAMORPHIC] = comp_remaining //allocate the rest to ordinary rock @@ -160,11 +160,19 @@ var/list/artifact_spawning_turfs = list() if(!container || !istype(container)) return - for(var/turf/simulated/mineral/holder in artifact_spawning_turfs) - var/dist = get_dist(container, holder) - if(dist < artifact_distance) - artifact_distance = dist - //artifact_id = A.display_id + if(container.artifact_find) + artifact_distance = rand(-100,100) / 100 + artifact_id = container.artifact_find.artifact_id + else + for(var/turf/simulated/mineral/holder in artifact_spawning_turfs) + if(holder.artifact_find) + var/dist = get_dist(container, holder) + if(dist < holder.artifact_find.artifact_detect_range && dist < src.artifact_distance) + src.artifact_distance = dist + src.artifact_id = holder.artifact_find + else + artifact_spawning_turfs.Remove(holder) + /* #undef FIND_PLANT #undef FIND_BIO @@ -176,4 +184,4 @@ var/list/artifact_spawning_turfs = list() #undef FIND_METAMORPHIC #undef FIND_SEDIMENTARY #undef FIND_NOTHING -*/ \ No newline at end of file +*/ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 1cfdb8384b6a99193a317309c633f3ef8c642dee..e984d192e8270445ef26ed49ba9113bc400b5397 100644 GIT binary patch delta 23622 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 CCw|5N diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index 6806854a242ff76d0c229673c004a4b80f1eeaa2..88aeb802d8de534a97a4c87c681d5aa00cb68f3b 100644 GIT binary patch literal 50870 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 z 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

dz7=@ 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 Tm78TC;7e6eOQA;2BIy4CmcLsh literal 48429 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%0ASbtU0OBRqiM~1RXyJ;AiYuzopq9->bYPKv9*J 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 From b9bd5ca3e2082a65ae9cebf7b10c4ba274e94a94 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Wed, 13 Feb 2013 12:22:30 +1000 Subject: [PATCH 22/66] renamed two files, restructured tools and anomaly suits to semi-final format Signed-off-by: Cael_Aislinn --- baystation12.dme | 12 ++++---- .../xenoarchaeology/tools/anomaly_suit.dm | 30 +++++++++++++++++++ .../xenoarchaeology/tools/spacesuit.dm | 13 -------- .../{tools_excav.dm => tools_pickaxe.dm} | 0 4 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 code/modules/research/xenoarchaeology/tools/anomaly_suit.dm delete mode 100644 code/modules/research/xenoarchaeology/tools/spacesuit.dm rename code/modules/research/xenoarchaeology/tools/{tools_excav.dm => tools_pickaxe.dm} (100%) diff --git a/baystation12.dme b/baystation12.dme index cfeaafc50b3..87a6be7b3a3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -774,10 +774,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" @@ -1143,11 +1143,11 @@ #include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" #include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" #include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" -#include "code\modules\research\xenoarchaeology\tools\spacesuit.dm" +#include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" #include "code\modules\research\xenoarchaeology\tools\tools.dm" #include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" #include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_excav.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" #include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" #include "code\modules\research\xenoarchaeology\unknown\unknown.dm" #include "code\modules\research\xenoarchaeology\unknown\unknown_analysis.dm" diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm new file mode 100644 index 00000000000..6539f3d1838 --- /dev/null +++ b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm @@ -0,0 +1,30 @@ + +//changes: rad protection up to 100 from 20/50 respectively +/obj/item/clothing/suit/bio_suit/anomaly + name = "Anomaly suit" + desc = "A sealed bio suit capable of insulating against exotic alien energies" + icon_state = "engspace_suit" + item_state = "engspace_suit" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) + +/obj/item/clothing/head/bio_hood/anomaly + name = "Anomaly hood" + desc = "A sealed bio hood capable of insulating against exotic alien energies." + icon_state = "engspace_helmet" + item_state = "engspace_helmet" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) + +/obj/item/clothing/suit/space/anomaly + name = "Excavation suit" + desc = "A pressure resistant excavation suit partially capable of insulating against exotic alien energies." + icon_state = "cespace_suit" + item_state = "cespace_suit" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank) + +/obj/item/clothing/head/helmet/space/anomaly + name = "Excavation hood" + desc = "A pressure resistant excavation hood partially capable of insulating against exotic alien energies." + icon_state = "cespace_helmet" + item_state = "cespace_helmet" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) diff --git a/code/modules/research/xenoarchaeology/tools/spacesuit.dm b/code/modules/research/xenoarchaeology/tools/spacesuit.dm deleted file mode 100644 index 2ff4ff266ea..00000000000 --- a/code/modules/research/xenoarchaeology/tools/spacesuit.dm +++ /dev/null @@ -1,13 +0,0 @@ - -/obj/item/clothing/suit/bio_suit/anomaly - name = "Anomaly Suit" - desc = "A sealed bio suit capable of resisting exotic alien energies and low pressure environments." - icon_state = "engspace_suit" - item_state = "engspace_suit" - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen) - -/obj/item/clothing/head/bio_hood/anomaly - name = "Anomaly Hood" - desc = "A sealed bio hood capable of resisting exotic alien energies and low pressure environments." - icon_state = "engspace_helmet" - item_state = "engspace_helmet" diff --git a/code/modules/research/xenoarchaeology/tools/tools_excav.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm similarity index 100% rename from code/modules/research/xenoarchaeology/tools/tools_excav.dm rename to code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm From bbfbfb0ca22a7ae359be29b7dfef63156c1c2078 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Wed, 13 Feb 2013 12:23:20 +1000 Subject: [PATCH 23/66] tweaks to artifact spawning, tweaks and fixes to multiple anomalous artifact effects Signed-off-by: Cael_Aislinn --- code/modules/mining/mine_turfs.dm | 1 - .../xenoarchaeology/artifact/artifact.dm | 2 +- .../effects/unknown_effect_cellcharge.dm | 16 +-- .../effects/unknown_effect_celldrain.dm | 14 +-- .../effects/unknown_effect_dnaswitch.dm | 77 +++++++------ .../unknown/effects/unknown_effect_heal.dm | 105 +++++++++--------- .../unknown/effects/unknown_effect_hurt.dm | 67 +++++------ .../unknown/effects/unknown_effect_sleepy.dm | 48 ++++---- .../unknown/effects/unknown_effect_stun.dm | 53 +++++---- .../effects/unknown_effect_teleport.dm | 98 ++++++++-------- .../xenoarchaeology/unknown/unknown.dm | 4 +- .../xenoarchaeology/unknown/unknown_effect.dm | 27 +++++ 12 files changed, 269 insertions(+), 243 deletions(-) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 742fe3d5d9d..f4ad059a428 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -128,7 +128,6 @@ //dont create artifact machinery in animal or plant digsites, or if we already have one if(!artifact_find && digsite != 1 && digsite != 2 && prob(ARTIFACT_SPAWN_CHANCE)) artifact_find = new() - world << artifact_find.artifact_find_type if(!src.geological_data) src.geological_data = new/datum/geosample(src) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact.dm b/code/modules/research/xenoarchaeology/artifact/artifact.dm index 71f6f7965e0..60f6fc7fb96 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact.dm @@ -22,7 +22,7 @@ 100;/obj/machinery/giga_drill,\ 100;/obj/mecha/working/hoverpod,\ 100;/obj/machinery/replicator,\ - 200;/obj/structure/crystal,\ + 150;/obj/structure/crystal,\ 500;/obj/machinery/artifact) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm index 45f895e53fd..b6f48daf1b6 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_cellcharge.dm @@ -8,7 +8,7 @@ if(istype(user, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = user for (var/obj/item/weapon/cell/D in R.contents) - D.charge += 250 + D.charge += rand() * 100 + 50 R << "\blue SYSTEM ALERT: Large energy boost detected!" return 1 @@ -16,11 +16,12 @@ if(holder) for (var/obj/machinery/power/apc/C in range(200, holder)) for (var/obj/item/weapon/cell/B in C.contents) - B.charge += 100 - for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250 + B.charge += 25 + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + S.charge += 25 for (var/mob/living/silicon/robot/M in world) for (var/obj/item/weapon/cell/D in M.contents) - D.charge += 100 + D.charge += 25 M << "\blue SYSTEM ALERT: Energy boost detected!" return 1 @@ -28,10 +29,11 @@ if(holder) for (var/obj/machinery/power/apc/C in range(200, holder)) for (var/obj/item/weapon/cell/B in C.contents) - B.charge += 100 - for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) S.charge += 250 + B.charge += rand() * 100 + for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) + S.charge += 250 for (var/mob/living/silicon/robot/M in world) for (var/obj/item/weapon/cell/D in M.contents) - D.charge += 100 + D.charge += rand() * 100 M << "\blue SYSTEM ALERT: Energy boost detected!" return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm index 677d5892c5e..954cbe46a6d 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_celldrain.dm @@ -8,7 +8,7 @@ if(istype(user, /mob/living/silicon/robot)) var/mob/living/silicon/robot/R = user for (var/obj/item/weapon/cell/D in R.contents) - D.charge = max(D.charge-250, 0) + D.charge = max(D.charge - rand() * 100, 0) R << "\blue SYSTEM ALERT: Energy drain detected!" return 1 @@ -18,12 +18,12 @@ if(holder) for (var/obj/machinery/power/apc/C in range(200, holder)) for (var/obj/item/weapon/cell/B in C.contents) - B.charge = max(B.charge-250,0) + B.charge = max(B.charge - 50,0) for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) - S.charge = max(S.charge-250,0) + S.charge = max(S.charge - 100,0) for (var/mob/living/silicon/robot/M in world) for (var/obj/item/weapon/cell/D in M.contents) - D.charge = max(D.charge-250,0) + D.charge = max(D.charge - 50,0) M << "\red SYSTEM ALERT: Energy drain detected!" return 1 @@ -31,11 +31,11 @@ if(holder) for (var/obj/machinery/power/apc/C in range(200, holder)) for (var/obj/item/weapon/cell/B in C.contents) - B.charge = max(B.charge-250,0) + B.charge = max(B.charge - rand() * 150,0) for (var/obj/machinery/power/smes/S in range (src.effectrange,src)) - S.charge = max(S.charge-250,0) + S.charge = max(S.charge - 250,0) for (var/mob/living/silicon/robot/M in world) for (var/obj/item/weapon/cell/D in M.contents) - D.charge = max(D.charge-250,0) + D.charge = max(D.charge - rand() * 150,0) M << "\red SYSTEM ALERT: Energy drain detected!" return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm index 4c5329ca927..9c66974e9ca 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_dnaswitch.dm @@ -11,8 +11,9 @@ else severity = rand(5,95) -/datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/holder) - if(ishuman(holder) && !istype(holder:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && !istype(holder:head,/obj/item/clothing/head/bio_hood/anomaly)) +/datum/artifact_effect/dnaswitch/DoEffectTouch(var/mob/toucher) + var/weakness = GetAnomalySusceptibility(toucher) + if(ishuman(toucher) && prob(weakness * 100)) holder << pick("\green You feel a little different.",\ "\green You feel very strange.",\ "\green Your stomach churns.",\ @@ -21,46 +22,44 @@ "\green You feel a tingling sensation in your chest.",\ "\green Your entire body vibrates.") if(prob(75)) - scramble(1, holder, severity) + scramble(1, holder, weakness * severity) else - scramble(0, holder, severity) + scramble(0, holder, weakness * severity) return 1 /datum/artifact_effect/dnaswitch/DoEffectAura() - for(var/mob/living/carbon/human/H in range(src.effectrange,holder)) - if(istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - - if(prob(30)) - H << pick("\green You feel a little different.",\ - "\green You feel very strange.",\ - "\green Your stomach churns.",\ - "\green Your skin feels loose.",\ - "\green You feel a stabbing pain in your head.",\ - "\green You feel a tingling sensation in your chest.",\ - "\green Your entire body vibrates.") - if(prob(25)) - scramble(1, H, severity) - else - scramble(0, H, severity) - return 1 + if(holder) + for(var/mob/living/carbon/human/H in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(H) + if(prob(weakness * 100)) + if(prob(30)) + H << pick("\green You feel a little different.",\ + "\green You feel very strange.",\ + "\green Your stomach churns.",\ + "\green Your skin feels loose.",\ + "\green You feel a stabbing pain in your head.",\ + "\green You feel a tingling sensation in your chest.",\ + "\green Your entire body vibrates.") + if(prob(25)) + scramble(1, H, weakness * severity) + else + scramble(0, H, weakness * severity) /datum/artifact_effect/dnaswitch/DoEffectPulse() - for(var/mob/living/carbon/human/H in range(200, holder)) - if(istype(H:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(H:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - - if(prob(75)) - H << pick("\green You feel a little different.",\ - "\green You feel very strange.",\ - "\green Your stomach churns.",\ - "\green Your skin feels loose.",\ - "\green You feel a stabbing pain in your head.",\ - "\green You feel a tingling sensation in your chest.",\ - "\green Your entire body vibrates.") - if(prob(25)) - if(prob(50)) - scramble(1, H, severity) - else - scramble(0, H, severity) - return 1 + if(holder) + for(var/mob/living/carbon/human/H in range(200, holder)) + var/weakness = GetAnomalySusceptibility(H) + if(prob(weakness * 100)) + if(prob(75)) + H << pick("\green You feel a little different.",\ + "\green You feel very strange.",\ + "\green Your stomach churns.",\ + "\green Your skin feels loose.",\ + "\green You feel a stabbing pain in your head.",\ + "\green You feel a tingling sensation in your chest.",\ + "\green Your entire body vibrates.") + if(prob(25)) + if(prob(50)) + scramble(1, H, weakness * severity) + else + scramble(0, H, weakness * severity) diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm index ee01aa182b1..6d4aba5f748 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_heal.dm @@ -2,66 +2,61 @@ /datum/artifact_effect/heal effecttype = "heal" -/datum/artifact_effect/heal/DoEffectTouch(var/mob/user) - //caeltodo - if(user) - if (istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = holder - H << "\blue You feel a soothing energy invigorate you." +/datum/artifact_effect/heal/DoEffectTouch(var/mob/toucher) + //todo: check over this properly + if(toucher && iscarbon(toucher)) + var/weakness = GetAnomalySusceptibility(toucher) + if(prob(weakness * 100)) + var/mob/living/carbon/C = toucher + C << "\blue You feel a soothing energy invigorate you." - for(var/datum/organ/external/affecting in H.organs) - if(affecting && istype(affecting)) - affecting.heal_damage(25, 25) - //H:heal_organ_damage(25, 25) + if(ishuman(toucher)) + var/mob/living/carbon/human/H = holder + for(var/datum/organ/external/affecting in H.organs) + if(affecting && istype(affecting)) + affecting.heal_damage(25 * weakness, 25 * weakness) + //H:heal_organ_damage(25, 25) + H.vessel.add_reagent("blood",5) + H.nutrition += 50 * weakness + H.adjustBrainLoss(-25 * weakness) + H.radiation -= min(H.radiation, 25 * weakness) + H.bodytemperature = initial(H.bodytemperature) + spawn(1) + H.fixblood() // - H.adjustOxyLoss(-25) - H.adjustToxLoss(-25) - H.adjustBruteLoss(-25) - H.adjustFireLoss(-25) - H.adjustBrainLoss(-25) - H.radiation -= min(H.radiation, 25) - H.nutrition += 50 - H.bodytemperature = initial(H.bodytemperature) + C.adjustOxyLoss(-25 * weakness) + C.adjustToxLoss(-25 * weakness) + C.adjustBruteLoss(-25 * weakness) + C.adjustFireLoss(-25 * weakness) // - H.vessel.add_reagent("blood",50) - spawn(1) - H.fixblood() - H.regenerate_icons() - return 1 - - else if (istype(user, /mob/living/carbon/monkey/)) - var/mob/living/carbon/monkey/M = holder - M << "\blue You feel a soothing energy invigorate you." - M.adjustOxyLoss(-25) - M.adjustToxLoss(-25) - M.adjustBruteLoss(-25) - M.adjustFireLoss(-25) - M.adjustBrainLoss(-25) + C.regenerate_icons() return 1 /datum/artifact_effect/heal/DoEffectAura() - //caeltodo - for (var/mob/living/carbon/M in range(src.effectrange,holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - if(prob(10)) M << "\blue You feel a soothing energy radiating from something nearby." - M.adjustBruteLoss(-1) - M.adjustFireLoss(-1) - M.adjustToxLoss(-1) - M.adjustOxyLoss(-1) - M.adjustBrainLoss(-1) - M.updatehealth() - return 1 + //todo: check over this properly + if(holder) + for (var/mob/living/carbon/C in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(C) + if(prob(weakness * 100)) + if(prob(10)) + C << "\blue You feel a soothing energy radiating from something nearby." + C.adjustBruteLoss(-1 * weakness) + C.adjustFireLoss(-1 * weakness) + C.adjustToxLoss(-1 * weakness) + C.adjustOxyLoss(-1 * weakness) + C.adjustBrainLoss(-1 * weakness) + C.updatehealth() /datum/artifact_effect/heal/DoEffectPulse() - for (var/mob/living/carbon/M in range(src.effectrange,holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\blue A wave of energy invigorates you." - M.adjustBruteLoss(-5) - M.adjustFireLoss(-5) - M.adjustToxLoss(-5) - M.adjustOxyLoss(-5) - M.adjustBrainLoss(-5) - M.updatehealth() - return 1 + //todo: check over this properly + if(holder) + for (var/mob/living/carbon/C in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(C) + if(prob(weakness * 100)) + C << "\blue A wave of energy invigorates you." + C.adjustBruteLoss(-5 * weakness) + C.adjustFireLoss(-5 * weakness) + C.adjustToxLoss(-5 * weakness) + C.adjustOxyLoss(-5 * weakness) + C.adjustBrainLoss(-5 * weakness) + C.updatehealth() diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm index 29c1ffc18ee..a9ae4d89ee0 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_hurt.dm @@ -2,45 +2,46 @@ /datum/artifact_effect/hurt effecttype = "hurt" -/datum/artifact_effect/hurt/DoEffectTouch(var/mob/holder) +/datum/artifact_effect/hurt/DoEffectTouch(var/mob/toucher) //caeltodo if(holder) - if (istype(holder, /mob/living/carbon/)) - var/mob/living/carbon/C = holder + var/weakness = GetAnomalySusceptibility(toucher) + if(iscarbon(toucher) && prob(weakness * 100)) + var/mob/living/carbon/C = toucher C << "\red A painful discharge of energy strikes you!" - C.adjustOxyLoss(rand(5,25)) - C.adjustToxLoss(rand(5,25)) - C.adjustBruteLoss(rand(5,25)) - C.adjustFireLoss(rand(5,25)) - C.adjustBrainLoss(rand(5,25)) - C.radiation += 25 - C.nutrition -= min(50, C.nutrition) - C.make_dizzy(6) - C.weakened += 6 - return 1 + C.adjustOxyLoss(rand(5,25) * weakness) + C.adjustToxLoss(rand(5,25) * weakness) + C.adjustBruteLoss(rand(5,25) * weakness) + C.adjustFireLoss(rand(5,25) * weakness) + C.adjustBrainLoss(rand(5,25) * weakness) + C.radiation += 25 * weakness + C.nutrition -= min(50 * weakness, C.nutrition) + C.make_dizzy(6 * weakness) + C.weakened += 6 * weakness /datum/artifact_effect/hurt/DoEffectAura() if(holder) - for (var/mob/living/carbon/M in range(src.effectrange,holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - if(prob(10)) M << "\red You feel a painful force radiating from something nearby." - M.adjustBruteLoss(1) - M.adjustFireLoss(1) - M.adjustToxLoss(1) - M.adjustOxyLoss(1) - M.adjustBrainLoss(1) - M.updatehealth() - return 1 + for (var/mob/living/carbon/C in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(C) + if(prob(weakness * 100)) + if(prob(10)) + C << "\red You feel a painful force radiating from something nearby." + C.adjustBruteLoss(1 * weakness) + C.adjustFireLoss(1 * weakness) + C.adjustToxLoss(1 * weakness) + C.adjustOxyLoss(1 * weakness) + C.adjustBrainLoss(1 * weakness) + C.updatehealth() /datum/artifact_effect/hurt/DoEffectPulse() if(holder) - for (var/mob/living/carbon/human/M in range(effectrange, holder)) - M << "\red A wave of painful energy strikes you!" - M.adjustBruteLoss(3) - M.adjustFireLoss(3) - M.adjustToxLoss(3) - M.adjustOxyLoss(3) - M.adjustBrainLoss(3) - M.updatehealth() - return 1 + for (var/mob/living/carbon/C in range(effectrange, holder)) + var/weakness = GetAnomalySusceptibility(C) + if(prob(weakness * 100)) + C << "\red A wave of painful energy strikes you!" + C.adjustBruteLoss(3 * weakness) + C.adjustFireLoss(3 * weakness) + C.adjustToxLoss(3 * weakness) + C.adjustOxyLoss(3 * weakness) + C.adjustBrainLoss(3 * weakness) + C.updatehealth() diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm index 6648ffd19cf..911efd04135 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_sleepy.dm @@ -3,34 +3,40 @@ /datum/artifact_effect/sleepy effecttype = "sleepy" -/datum/artifact_effect/sleepy/DoEffectTouch(var/mob/user) - if(user) - if(istype(user,/mob/living/carbon)) - var/mob/living/carbon/C = user - C << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") - C.drowsyness = min(user.drowsyness + rand(5,25), 50) - C.eye_blurry = min(user.eye_blurry + rand(1,3), 50) +/datum/artifact_effect/sleepy/DoEffectTouch(var/mob/toucher) + if(toucher) + var/weakness = GetAnomalySusceptibility(toucher) + if(ishuman(toucher) && prob(weakness * 100)) + var/mob/living/carbon/human/H = toucher + H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + H.drowsyness = min(H.drowsyness + rand(5,25) * weakness, 50 * weakness) + H.eye_blurry = min(H.eye_blurry + rand(1,3) * weakness, 50 * weakness) return 1 - else if(istype(user,/mob/living/silicon/robot)) - user << "\red SYSTEM ALERT: CPU cycles slowing down." + else if(isrobot(toucher)) + toucher << "\red SYSTEM ALERT: CPU cycles slowing down." return 1 /datum/artifact_effect/sleepy/DoEffectAura() if(holder) - for (var/mob/living/carbon/M in range(src.effectrange,holder)) - if(prob(10)) - M << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") - M.drowsyness = min(M.drowsyness + 1, 25) - M.eye_blurry = min(M.eye_blurry + 1, 25) - for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) - M << "\red SYSTEM ALERT: CPU cycles slowing down." + for (var/mob/living/carbon/human/H in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(H) + if(prob(weakness * 100)) + if(prob(10)) + H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + H.drowsyness = min(H.drowsyness + 1 * weakness, 25 * weakness) + H.eye_blurry = min(H.eye_blurry + 1 * weakness, 25 * weakness) + for (var/mob/living/silicon/robot/R in range(src.effectrange,holder)) + R << "\red SYSTEM ALERT: CPU cycles slowing down." return 1 /datum/artifact_effect/sleepy/DoEffectPulse() if(holder) - for(var/mob/living/H in range(src.effectrange, holder)) - H.drowsyness = min(H.drowsyness + rand(5,15), 50) - H.eye_blurry = min(H.eye_blurry + rand(5,15), 50) - for (var/mob/living/silicon/robot/M in range(src.effectrange,holder)) - M << "\red SYSTEM ALERT: CPU cycles slowing down." + for(var/mob/living/carbon/human/H in range(src.effectrange, holder)) + var/weakness = GetAnomalySusceptibility(H) + if(prob(weakness * 100)) + H << pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired.") + H.drowsyness = min(H.drowsyness + rand(5,15) * weakness, 50 * weakness) + H.eye_blurry = min(H.eye_blurry + rand(5,15) * weakness, 50 * weakness) + for (var/mob/living/silicon/robot/R in range(src.effectrange,holder)) + R << "\red SYSTEM ALERT: CPU cycles slowing down." return 1 diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm index 47506bb0f2a..4e3b2374913 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_stun.dm @@ -2,37 +2,36 @@ /datum/artifact_effect/stun effecttype = "stun" -/datum/artifact_effect/stun/DoEffectTouch(var/mob/user) - if(user) - if (istype(user, /mob/living/carbon/)) - user << "\red A powerful force overwhelms your consciousness." - user.weakened += 45 - user.stuttering += 45 - user.stunned += rand(1,10) - return 1 +/datum/artifact_effect/stun/DoEffectTouch(var/mob/toucher) + if(toucher && iscarbon(toucher)) + var/mob/living/carbon/C = toucher + var/weakness = GetAnomalySusceptibility(C) + if(prob(weakness * 100)) + C << "\red A powerful force overwhelms your consciousness." + C.weakened += 45 * weakness + C.stuttering += 45 * weakness + C.stunned += rand(1,10) * weakness /datum/artifact_effect/stun/DoEffectAura() if(holder) - for (var/mob/living/carbon/M in range(src.effectrange,holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - if(prob(10)) M << "\red You feel numb." - if(prob(20)) - M << "\red Your body goes numb for a moment." - M.weakened += 2 - M.stuttering += 2 + for (var/mob/living/carbon/C in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(C) + if(prob(10 * weakness)) + C << "\red Your body goes numb for a moment." + C.weakened += 2 + C.stuttering += 2 if(prob(10)) - M.stunned += 1 - return 1 + C.stunned += 1 + else if(prob(10)) + C << "\red You feel numb." /datum/artifact_effect/stun/DoEffectPulse() if(holder) - for (var/mob/living/carbon/M in range(src.effectrange,holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - M << "\red A wave of energy overwhelms your senses!" - M.weakened += 4 - M.stuttering += 4 - if(prob(10)) - M.stunned += 1 - return 1 + for (var/mob/living/carbon/C in range(src.effectrange,holder)) + var/weakness = GetAnomalySusceptibility(C) + if(prob(100 * weakness)) + C << "\red A wave of energy overwhelms your senses!" + C.weakened += 4 * weakness + C.stuttering += 4 * weakness + if(prob(10)) + C.stunned += 1 * weakness diff --git a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm index b99d7f9ab5f..166fcbfd2af 100644 --- a/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm +++ b/code/modules/research/xenoarchaeology/unknown/effects/unknown_effect_teleport.dm @@ -3,64 +3,62 @@ effecttype = "teleport" /datum/artifact_effect/teleport/DoEffectTouch(var/mob/user) - var/list/randomturfs = new/list() - for(var/turf/simulated/floor/T in orange(user, 50)) - randomturfs.Add(T) - if(randomturfs.len > 0) - user << "\red You are suddenly zapped away elsewhere!" - if (user.buckled) - user.buckled.unbuckle() + var/weakness = GetAnomalySusceptibility(user) + if(prob(100 * weakness)) + var/list/randomturfs = new/list() + for(var/turf/simulated/floor/T in orange(user, 50)) + randomturfs.Add(T) + if(randomturfs.len > 0) + user << "\red You are suddenly zapped away elsewhere!" + if (user.buckled) + user.buckled.unbuckle() - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(user)) - sparks.start() - user.loc = pick(randomturfs) - sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(user)) - sparks.start() - - return 1 + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(user)) + sparks.start() + user.loc = pick(randomturfs) + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(user)) + sparks.start() /datum/artifact_effect/teleport/DoEffectAura() if(holder) for (var/mob/living/M in range(src.effectrange,holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - var/list/randomturfs = new/list() - for(var/turf/simulated/floor/T in orange(M, 30)) - randomturfs.Add(T) - if(randomturfs.len > 0) - M << "\red You are displaced by a strange force!" - if(M.buckled) - M.buckled.unbuckle() + var/weakness = GetAnomalySusceptibility(M) + if(prob(100 * weakness)) + var/list/randomturfs = new/list() + for(var/turf/simulated/floor/T in orange(M, 30)) + randomturfs.Add(T) + if(randomturfs.len > 0) + M << "\red You are displaced by a strange force!" + if(M.buckled) + M.buckled.unbuckle() - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(M)) - sparks.start() - M.loc = pick(randomturfs) - sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(M)) - sparks.start() - return 1 + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() + M.loc = pick(randomturfs) + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() /datum/artifact_effect/teleport/DoEffectPulse() if(holder) for (var/mob/living/M in range(src.effectrange, holder)) - if(ishuman(M) && istype(M:wear_suit,/obj/item/clothing/suit/bio_suit/anomaly) && istype(M:head,/obj/item/clothing/head/bio_hood/anomaly)) - continue - var/list/randomturfs = new/list() - for(var/turf/simulated/floor/T in orange(M, 15)) - randomturfs.Add(T) - if(randomturfs.len > 0) - M << "\red You are displaced by a strange force!" + var/weakness = GetAnomalySusceptibility(M) + if(prob(100 * weakness)) + var/list/randomturfs = new/list() + for(var/turf/simulated/floor/T in orange(M, 15)) + randomturfs.Add(T) + if(randomturfs.len > 0) + M << "\red You are displaced by a strange force!" - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(M)) - sparks.start() - if(M.buckled) - M.buckled.unbuckle() - M.loc = pick(randomturfs) - sparks = new /datum/effect/effect/system/spark_spread() - sparks.set_up(3, 0, get_turf(M)) - sparks.start() - return 1 + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() + if(M.buckled) + M.buckled.unbuckle() + M.loc = pick(randomturfs) + sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(3, 0, get_turf(M)) + sparks.start() diff --git a/code/modules/research/xenoarchaeology/unknown/unknown.dm b/code/modules/research/xenoarchaeology/unknown/unknown.dm index 1313203a943..52f7e2c772e 100644 --- a/code/modules/research/xenoarchaeology/unknown/unknown.dm +++ b/code/modules/research/xenoarchaeology/unknown/unknown.dm @@ -222,7 +222,7 @@ var/list/valid_secondary_effect_types = list(\ if (get_dist(user, src) > 1) user << "\red You can't reach [src] from here." return - if(ishuman(user) && istype(user:gloves,/obj/item/clothing/gloves)) + if(ishuman(user) && user:gloves) return ..() src.add_fingerprint(user) @@ -231,7 +231,7 @@ var/list/valid_secondary_effect_types = list(\ user << "You touch [src]." my_effect.ToggleActivate() else - user << "You touch [src], [pick("and nothing of note happens","but nothing happens","and nothing interesting happens","you notice nothing different","nothing seems to have happened")]." + user << "You touch [src], [pick("but nothing of note happens","but nothing happens","but nothing interesting happens","but you notice nothing different","but nothing seems to have happened")]." if(prob(25) && secondary_effect && secondary_effect.trigger == my_effect.trigger) secondary_effect.ToggleActivate(0) diff --git a/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm b/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm index a89ef63d0b9..b6d0fd61901 100644 --- a/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm +++ b/code/modules/research/xenoarchaeology/unknown/unknown_effect.dm @@ -66,3 +66,30 @@ else if(effect == EFFECT_PULSE && chargelevel >= chargelevelmax) chargelevel = 0 DoEffectPulse() + +//returns 0..1, with 1 being no protection and 0 being fully protected +proc/GetAnomalySusceptibility(var/mob/living/carbon/human/H) + if(!H || !istype(H)) + return 1 + + var/protected = 0 + + //anomaly suits give best protection, but excavation suits are almost as good + if(istype(H.wear_suit,/obj/item/clothing/suit/bio_suit/anomaly)) + protected += 0.6 + else if(istype(H.wear_suit,/obj/item/clothing/suit/space/anomaly)) + protected += 0.5 + + if(istype(H.head,/obj/item/clothing/head/bio_hood/anomaly)) + protected += 0.3 + else if(istype(H.head,/obj/item/clothing/head/helmet/space/anomaly)) + protected += 0.2 + + //latex gloves and science goggles also give a bit of bonus protection + if(istype(H.gloves,/obj/item/clothing/gloves/latex)) + protected += 0.1 + + if(istype(H.glasses,/obj/item/clothing/glasses/science)) + protected += 0.1 + + return 1 - protected From 7fba00ce5518eb5ce8d8e5a3562cb2624ffa1e97 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 14 Feb 2013 13:28:31 +1000 Subject: [PATCH 24/66] miscellaneous fixes + tweaks + cleanups (spoons, artifacts, geotracking, helpers for finds, tools / gear) Signed-off-by: Cael_Aislinn --- baystation12.dme | 48 +---------------- code/game/objects/items/weapons/kitchen.dm | 2 +- code/modules/mining/mine_turfs.dm | 2 + .../research/xenoarchaeology/finds/finds.dm | 49 ++++++++++++++---- .../xenoarchaeology/finds/finds_defines.dm | 35 +++++-------- .../research/xenoarchaeology/geosample.dm | 4 +- .../xenoarchaeology/suspension_generator.dm | 4 ++ .../research/xenoarchaeology/tools/tools.dm | 2 +- .../tools/tools_coresampler.dm | 2 +- .../tools/tools_depthscanner.dm | 2 +- .../xenoarchaeology/tools/tools_pickaxe.dm | 18 +++---- icons/obj/xenoarchaeology.dmi | Bin 50870 -> 52967 bytes 12 files changed, 73 insertions(+), 95 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 87a6be7b3a3..8fcfc748ea1 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -5,50 +5,6 @@ // END_INTERNALS // BEGIN_FILE_DIR #define FILE_DIR . -#define FILE_DIR "code" -#define FILE_DIR "code/TriDimension" -#define FILE_DIR "code/WorkInProgress" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter" -#define FILE_DIR "code/WorkInProgress/Susan" -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/48x48" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/human_races" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/effects/wind" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/music" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/weapons" // END_FILE_DIR // BEGIN_PREFERENCES @@ -1142,13 +1098,13 @@ #include "code\modules\research\xenoarchaeology\finds\finds_fossils.dm" #include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" #include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" -#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" +#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" #include "code\modules\research\xenoarchaeology\tools\tools.dm" #include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" #include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" #include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" #include "code\modules\research\xenoarchaeology\unknown\unknown.dm" #include "code\modules\research\xenoarchaeology\unknown\unknown_analysis.dm" #include "code\modules\research\xenoarchaeology\unknown\unknown_db.dm" diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 02f270d767d..c21601d0230 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -34,7 +34,7 @@ /* * Spoons */ - /obj/item/weapon/kitchen/utensil/spoon +/obj/item/weapon/kitchen/utensil/spoon name = "spoon" desc = "SPOON!" icon_state = "spoon" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index f4ad059a428..40319b0d1a7 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -128,6 +128,8 @@ //dont create artifact machinery in animal or plant digsites, or if we already have one if(!artifact_find && digsite != 1 && digsite != 2 && prob(ARTIFACT_SPAWN_CHANCE)) artifact_find = new() + //world << "[artifact_find.artifact_find_type] [src.x], [src.y], [src.z]" + artifact_spawning_turfs.Add(src) if(!src.geological_data) src.geological_data = new/datum/geosample(src) diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index a31ec91852b..61b6fec727c 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -87,7 +87,7 @@ if(new_item_type) find_type = new_item_type else - find_type = get_random_find_type(0) + find_type = rand(1,34) //update this when you add new find types var/item_type = "object" icon_state = "unknown[rand(1,4)]" @@ -97,6 +97,7 @@ var/apply_material_decorations = 1 var/apply_image_decorations = 0 var/material_descriptor = "" + var/apply_prefix = 1 if(prob(40)) material_descriptor = pick("rusted ","dusty ","archaic ","fragile ") source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium") @@ -116,7 +117,7 @@ new_item.icon_state = "bowl" apply_image_decorations = 1 if(prob(20)) - additional_desc = "There appear to be [pick("dark","faintly glowing","pungent")] [pick("red","purple","green","blue")] stains inside." + additional_desc = "There appear to be [pick("dark","faintly glowing","pungent","bright")] [pick("red","purple","green","blue")] stains inside." if(2) item_type = "urn" new_item = new /obj/item/weapon/reagent_containers/glass(src.loc) @@ -167,20 +168,22 @@ chance += 10 item_type = new_item.name + apply_prefix = 0 apply_material_decorations = 0 apply_image_decorations = 1 if(8) - item_type = "chained loops" + item_type = "handcuffs" new_item = new /obj/item/weapon/handcuffs(src.loc) additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]." if(9) item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]" + apply_prefix = 0 new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc) additional_desc = "[pick("It looks like it could take a limb off",\ "Could be some kind of animal trap",\ "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]." if(10) - item_type = "small [pick("cylinder","tank","chamber")]" + item_type = "[pick("cylinder","tank","chamber")]" new_item = new /obj/item/weapon/lighter(src.loc) additional_desc = "There is a tiny device attached." if(prob(30)) @@ -203,7 +206,7 @@ icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic") additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it." if(13) - item_type = "strange tool" + item_type = "tool" if(prob(25)) new_item = new /obj/item/weapon/wrench(src.loc) else if(prob(25)) @@ -239,12 +242,16 @@ if(prob(30)) apply_image_decorations = 1 if(16) - if(prob(33)) + apply_prefix = 0 + if(prob(25)) item_type = "smooth green crystal" icon_state = "Green lump" - else if(prob(50)) + else if(prob(33)) item_type = "irregular purple crystal" icon_state = "Phazon" + else if(prob(50)) + item_type = "rough red crystal" + icon_state = "changerock" else item_type = "smooth red crystal" icon_state = "ore" @@ -255,6 +262,7 @@ apply_image_decorations = 1 if(17) //cultblade + apply_prefix = 0 new_item = new /obj/item/weapon/melee/cultblade(src.loc) apply_material_decorations = 0 apply_image_decorations = 0 @@ -265,10 +273,12 @@ new_item.icon = 'xenoarchaeology.dmi' new_item.desc = "" if(19) + apply_prefix = 0 new_item = new /obj/item/weapon/claymore(src.loc) name = new_item.name if(20) //arcane clothing + apply_prefix = 0 var/list/possible_spawns = list(/obj/item/clothing/head/culthood, /obj/item/clothing/head/magus, /obj/item/clothing/head/culthood/alt, @@ -278,16 +288,20 @@ new_item = new new_type(src.loc) if(21) //soulstone + apply_prefix = 0 new_item = new /obj/item/device/soulstone(src.loc) + item_type = new_item.name apply_material_decorations = 0 if(22) if(prob(50)) new_item = new /obj/item/weapon/shard(src.loc) else new_item = new /obj/item/weapon/shard/plasma(src.loc) + apply_prefix = 0 apply_image_decorations = 0 apply_material_decorations = 0 if(23) + apply_prefix = 0 new_item = new /obj/item/stack/rods(src.loc) apply_image_decorations = 0 apply_material_decorations = 0 @@ -300,6 +314,7 @@ new_item = new new_type(src.loc) apply_material_decorations = 0 if(25) + apply_prefix = 0 new_item = new /obj/item/weapon/katana(src.loc) name = new_item.name if(26) @@ -326,7 +341,7 @@ else new_gun.power_supply.charge = 0 - name = "unknown weapon" + name = "gun" if(27) //revolver var/obj/item/weapon/gun/projectile/new_gun = new /obj/item/weapon/gun/projectile(src.loc) @@ -358,7 +373,7 @@ new_gun.loaded.Remove(I) I.loc = null - name = "unknown weapon" + name = "gun" if(28) //completely unknown alien device if(prob(50)) @@ -366,9 +381,13 @@ if(29) //fossil bone/skull new_item = new /obj/item/weapon/fossil/base(src.loc) + apply_prefix = 0 + apply_image_decorations = 0 + apply_material_decorations = 0 if(30) //fossil shell new_item = new /obj/item/weapon/fossil/shell(src.loc) + apply_prefix = 0 apply_image_decorations = 0 apply_material_decorations = 0 if(prob(10)) @@ -378,8 +397,10 @@ new_item = new /obj/item/weapon/fossil/plant(src.loc) apply_image_decorations = 0 apply_material_decorations = 0 + apply_prefix = 0 if(32) //humanoid remains + apply_prefix = 0 name = "humanoid [pick("remains","skeleton")]" icon = 'blood.dmi' icon_state = "remains" @@ -394,6 +415,7 @@ apply_material_decorations = 0 if(33) //robot remains + apply_prefix = 0 name = "[pick("mechanical","robotic","cyborg")] [pick("remains","chassis","debris")]" icon = 'blood.dmi' icon_state = "remainsrobot" @@ -408,6 +430,7 @@ apply_material_decorations = 0 if(34) //xenos remains + apply_prefix = 0 name = "alien [pick("remains","skeleton")]" icon = 'blood.dmi' icon_state = "remainsxeno" @@ -463,7 +486,11 @@ desc += " " desc += engravings - name = "[item_type]" + if(apply_prefix) + name = "[pick("Strange","Ancient","Alien","")] [item_type]" + else + name = item_type + if(desc) desc += " " desc += additional_desc @@ -472,7 +499,7 @@ //icon and icon_state should have already been set if(new_item) - new_item.name = "[pick("Strange","Ancient","Alien","")] [new_item.name]" + new_item.name = name new_item.desc = src.desc if(talkative) diff --git a/code/modules/research/xenoarchaeology/finds/finds_defines.dm b/code/modules/research/xenoarchaeology/finds/finds_defines.dm index 9583cb74ad9..dd5aa34dd25 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_defines.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_defines.dm @@ -30,6 +30,10 @@ #define ARCHAEO_FOSSIL 29 #define ARCHAEO_SHELL 30 #define ARCHAEO_PLANT 31 +#define ARCHAEO_REMAINS_HUMANOID 32 +#define ARCHAEO_REMAINS_ROBOT 33 +#define ARCHAEO_REMAINS_XENO 34 +#define MAX_ARCHAEO 34 //eggs //droppings //footprints @@ -37,29 +41,6 @@ //DNA sampling from fossils, or a new archaeo type specifically for it? -#define ARTIFACT_REMAINS_HUMANOID 1 -#define ARTIFACT_REMAINS_ROBOT 2 -#define ARTIFACT_REMAINS_XENO 3 -#define ARTIFACT_MACHINERY 4 -#define ARTIFACT_OCCULT 5 -#define ARTIFACT_SYNDBEACON 6 - -//? -#define ARTIFACT_HEAL 4 -#define ARTIFACT_BIODAM 5 -#define ARTIFACT_POWERCHARGE 6 -#define ARTIFACT_POWERDRAIN 7 -#define ARTIFACT_EMP 8 -#define ARTIFACT_PLANTGROW 9 -#define ARTIFACT_WEAKEN 10 -#define ARTIFACT_SLEEPY 11 -#define ARTIFACT_TELEPORT 12 -#define ARTIFACT_ROBOHURT 13 -#define ARTIFACT_ROBOHEAL 14 -#define ARTIFACT_DNASWITCH 15 -//#define ARTIFACT_ -//#define ARTIFACT_ - //descending order of likeliness to spawn #define DIGSITE_GARDEN 1 #define DIGSITE_ANIMAL 2 @@ -126,8 +107,16 @@ return "beryllium" if(ARCHAEO_FOSSIL) return "carbon" + if(ARCHAEO_SHELL) + return "carbon" if(ARCHAEO_PLANT) return "carbon" + if(ARCHAEO_REMAINS_HUMANOID) + return "carbon" + if(ARCHAEO_REMAINS_ROBOT) + return "carbon" + if(ARCHAEO_REMAINS_XENO) + return "carbon" return "chlorine" //see /turf/simulated/mineral/New() in code/modules/mining/mine_turfs.dm diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index cd02736b3fd..9ad8a15b8d4 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -161,7 +161,7 @@ var/list/artifact_spawning_turfs = list() return if(container.artifact_find) - artifact_distance = rand(-100,100) / 100 + artifact_distance = rand() artifact_id = container.artifact_find.artifact_id else for(var/turf/simulated/mineral/holder in artifact_spawning_turfs) @@ -169,7 +169,7 @@ var/list/artifact_spawning_turfs = list() var/dist = get_dist(container, holder) if(dist < holder.artifact_find.artifact_detect_range && dist < src.artifact_distance) src.artifact_distance = dist - src.artifact_id = holder.artifact_find + src.artifact_id = holder.artifact_find.artifact_id else artifact_spawning_turfs.Remove(holder) diff --git a/code/modules/research/xenoarchaeology/suspension_generator.dm b/code/modules/research/xenoarchaeology/suspension_generator.dm index b24080df2ff..690431a8366 100644 --- a/code/modules/research/xenoarchaeology/suspension_generator.dm +++ b/code/modules/research/xenoarchaeology/suspension_generator.dm @@ -89,6 +89,7 @@ dat += "[field_type=="aluminium"?"":"" ]Aluminium transmitted field
" dat += "[field_type=="silicon"?"":"" ]Silicon wafer conduction
" dat += "[field_type=="calcium"?"":"" ]Calcium binary deoxidiser
" + dat += "[field_type=="chlorine"?"":"" ]Chlorine alkalising field
" else dat += "
" dat += "
" @@ -257,6 +258,9 @@ if("aluminium") success = 1 // + if("chlorine") + success = 1 + // if("silicon") success = 1 for(var/mob/living/silicon/R in T) diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index c36a7b16710..03b3f136fd4 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -11,7 +11,7 @@ /obj/item/device/gps/attack_self(var/mob/user as mob) var/turf/T = get_turf(src) - user << "\blue \icon[src] [src] flashes [10 * T.x + rand(0,9)]:[10 * T.y + rand(0,9)]:[10 * T.z + rand(0,9)]." + user << "\blue \icon[src] [src] flashes [10 * T.x].[rand(0,9)]:[10 * T.y].[rand(0,9)]:[10 * T.z].[rand(0,9)]." /obj/item/device/measuring_tape name = "measuring tape" diff --git a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm index 11bde6d4b0f..e060fc44ae7 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_coresampler.dm @@ -51,8 +51,8 @@ var/datum/geosample/geo_data if(istype(item_to_sample, /turf/simulated/mineral)) var/turf/simulated/mineral/T = item_to_sample + T.geological_data.UpdateNearbyArtifactInfo(T) geo_data = T.geological_data - geo_data.UpdateNearbyArtifactInfo(T) else if(istype(item_to_sample, /obj/item/weapon/ore)) var/obj/item/weapon/ore/O = item_to_sample geo_data = O.geological_data diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index 3a714bca916..c146f9fd445 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -56,7 +56,7 @@ if(B.artifact_find) //create a new scanlog entry var/datum/depth_scan/D = new() - D.coords = "[10 * B.x + rand(0,9)]:[10 * B.y + rand(0,9)]:[10 * B.z + rand(0,9)]" + D.coords = "[10 * B.x].[rand(0,9)]:[10 * B.y].[rand(0,9)]:[10 * B.z].[rand(0,9)]" D.time = worldtime2text() D.record_index = positive_locations.len + 1 diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm index 7a11c1213a9..f87dfcbc245 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm @@ -4,8 +4,8 @@ /obj/item/weapon/pickaxe/brush name = "brush" - //icon_state = "brush" - //item_state = "minipick" + icon_state = "pick_brush" + item_state = "syringe_0" digspeed = 50 desc = "Thick metallic wires for clearing away dust and loose scree (1 centimetre excavation depth)." excavation_amount = 0.5 @@ -15,7 +15,7 @@ /obj/item/weapon/pickaxe/one_pick name = "1/6 pick" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." excavation_amount = 1 @@ -25,7 +25,7 @@ /obj/item/weapon/pickaxe/two_pick name = "1/3 pick" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." excavation_amount = 2 @@ -35,7 +35,7 @@ /obj/item/weapon/pickaxe/three_pick name = "1/2 pick" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." excavation_amount = 3 @@ -45,7 +45,7 @@ /obj/item/weapon/pickaxe/four_pick name = "2/3 pick" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)." excavation_amount = 4 @@ -55,7 +55,7 @@ /obj/item/weapon/pickaxe/five_pick name = "5/6 pick" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)." excavation_amount = 5 @@ -65,7 +65,7 @@ /obj/item/weapon/pickaxe/six_pick name = "1/1 pick" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)." excavation_amount = 6 @@ -75,7 +75,7 @@ /obj/item/weapon/pickaxe/hand name = "hand pickaxe" //icon_state = "excavation" - //item_state = "minipick" + item_state = "syringe_0" digspeed = 50 desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)." excavation_amount = 15 diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi index 88aeb802d8de534a97a4c87c681d5aa00cb68f3b..57b2d876d3383152a8e40acb3b0a71afdb11682c 100644 GIT binary patch literal 52967 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 z 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

dz7=@ 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 Tm78TC;7e6eOQA;2BIy4CmcLsh From f0de14d0d4363f13dbd697f3850b7da105c55c9c Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Thu, 14 Feb 2013 21:59:50 +1000 Subject: [PATCH 25/66] fixed xenoarch chemical analysis, added icons for excavation picks, various misc tweaks Signed-off-by: Cael_Aislinn --- code/modules/mining/mine_turfs.dm | 2 +- code/modules/reagents/Chemistry-Holder.dm | 38 +++++++++++++++++++ code/modules/reagents/Chemistry-Machinery.dm | 19 +++++++++- code/modules/reagents/Chemistry-Recipes.dm | 2 +- .../xenoarchaeology/analysis/analysis.dm | 2 +- .../research/xenoarchaeology/chemistry.dm | 4 +- .../research/xenoarchaeology/finds/finds.dm | 4 ++ .../xenoarchaeology/finds/finds_defines.dm | 2 + .../xenoarchaeology/tools/bunsen_burner.dm | 1 + .../research/xenoarchaeology/tools/tools.dm | 2 +- .../tools/tools_depthscanner.dm | 2 +- .../xenoarchaeology/tools/tools_pickaxe.dm | 22 +++++++---- 12 files changed, 85 insertions(+), 15 deletions(-) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 40319b0d1a7..66a1422bd8a 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -368,7 +368,7 @@ commented out in r5061, I left it because of the shroom thingies else if(src.excavation_level + P.excavation_amount > F.excavation_required - F.clearance_range) //just pull the surrounding rock out - excavate_find(5, F) + excavate_find(0, F) if(src.excavation_level + P.excavation_amount >= 100) //if players have been excavating this turf, have a chance to leave some rocky debris behind diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 74f63060c0c..db136202f6a 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -230,6 +230,15 @@ datum continue var/datum/chemical_reaction/C = reaction + + //check if this recipe needs to be heated to mix + if(C.requires_heating) + if(istype(my_atom.loc, /obj/machinery/bunsen_burner)) + if(!my_atom.loc:heated) + continue + else + continue + var/total_required_reagents = C.required_reagents.len var/total_matching_reagents = 0 var/total_required_catalysts = C.required_catalysts.len @@ -276,11 +285,25 @@ datum for(var/B in C.required_reagents) remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1) + //try and grab any data so we can preserve it across reactions + //added for xenoarchaeology, might be useful for other things + var/preserved_data = null + for(var/B in src.reagent_list) + if(!preserved_data) + var/temp_data = get_data(B) + if(temp_data) + preserved_data = temp_data + var/created_volume = C.result_amount*multiplier if(C.result) feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") multiplier = max(multiplier, 1) //this shouldnt happen ... add_reagent(C.result, C.result_amount*multiplier) + set_data(C.result, preserved_data) + + //add secondary products + for(var/S in C.secondary_results) + add_reagent(S, C.result_amount * C.secondary_results[S] * multiplier) var/list/seen = viewers(4, get_turf(my_atom)) for(var/mob/M in seen) @@ -490,6 +513,21 @@ datum return res + //two helper functions to preserve data across reactions (needed for xenoarch) + get_data(var/reagent_id) + for(var/R in reagent_list) + var/datum/reagent/D = reagent_list[R] + if(D.id == reagent_id) + //world << "proffering a data-carrying reagent ([reagent_id])" + return D.data + + set_data(var/reagent_id, var/new_data) + for(var/R in reagent_list) + var/datum/reagent/D = reagent_list[R] + if(D.id == reagent_id) + //world << "reagent data set ([reagent_id])" + D.data = new_data + /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 1580f50b8c3..4eaf6a80965 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -17,7 +17,7 @@ var/recharged = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", - "copper","mercury","radium","water","ethanol","sugar","sacid") + "copper","mercury","radium","water","ethanol","sugar","sacid","tungsten") /obj/machinery/chem_dispenser/proc/recharge() if(stat & (BROKEN|NOPOWER)) return @@ -743,6 +743,9 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0), + //archaeology! + /obj/item/weapon/rocksliver = list("ground_rock" = 50), + //All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.! @@ -1070,6 +1073,20 @@ break remove_object(O) + //xenoarch + for(var/obj/item/weapon/rocksliver/O in holdingitems) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + var/allowed = get_allowed_by_id(O) + for (var/r_id in allowed) + var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume + var/amount = allowed[r_id] + beaker.reagents.add_reagent(r_id,min(amount, space), O.geological_data) + + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + remove_object(O) + //Everything else - Transfers reagents from it into beaker for (var/obj/item/weapon/reagent_containers/O in holdingitems) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index e8cd99dab64..cb61b11ad5e 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -480,7 +480,7 @@ datum var/location = get_turf(holder.my_atom) new /obj/item/stack/sheet/mineral/plasma(location) return - + virus_food name = "Virus Food" id = "virusfood" diff --git a/code/modules/research/xenoarchaeology/analysis/analysis.dm b/code/modules/research/xenoarchaeology/analysis/analysis.dm index 49e281ff3b0..54d3fd443e6 100644 --- a/code/modules/research/xenoarchaeology/analysis/analysis.dm +++ b/code/modules/research/xenoarchaeology/analysis/analysis.dm @@ -29,7 +29,7 @@ D = M break S.reagents.add_reagent("analysis_sample", 1, D.geological_data) - S.reagents.add_reagent("chlorine", 1, D.geological_data) + S.reagents.add_reagent("calcium", 1, D.geological_data) /obj/machinery/anomaly/process() //not sure if everything needs to heat up, or just the GLPC diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index b8387470c34..64dd86a281f 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -51,9 +51,9 @@ datum //todo: make this brown density_separated_sample - name = "Analysis liquid" + name = "Density separated sample" id = "density_separated_sample" - description = "A watery paste used in chemical analysis." + description = "A watery paste used in chemical analysis, this one has some chunks floating in it." reagent_state = LIQUID color = "#C81040" //rgb: 200, 16, 64 //todo: make this browny-white diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 61b6fec727c..5a9d8adca0c 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -382,12 +382,14 @@ //fossil bone/skull new_item = new /obj/item/weapon/fossil/base(src.loc) apply_prefix = 0 + additional_desc = "A fossilised part of an alien, long dead." apply_image_decorations = 0 apply_material_decorations = 0 if(30) //fossil shell new_item = new /obj/item/weapon/fossil/shell(src.loc) apply_prefix = 0 + additional_desc = "A fossilised, pre-Stygian alien crustacean." apply_image_decorations = 0 apply_material_decorations = 0 if(prob(10)) @@ -395,6 +397,8 @@ if(31) //fossil plant new_item = new /obj/item/weapon/fossil/plant(src.loc) + item_type = new_item.name + additional_desc = "A fossilised shred of alien plant matter." apply_image_decorations = 0 apply_material_decorations = 0 apply_prefix = 0 diff --git a/code/modules/research/xenoarchaeology/finds/finds_defines.dm b/code/modules/research/xenoarchaeology/finds/finds_defines.dm index dd5aa34dd25..182f460b7ea 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_defines.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_defines.dm @@ -63,6 +63,8 @@ return "aluminium" if(ARCHAEO_COIN) return "silicon" + if(ARCHAEO_KNIFE) + return "silicon" if(ARCHAEO_HANDCUFFS) return "aluminium" if(ARCHAEO_BEARTRAP) diff --git a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm index bbb3d0c9c94..684788b0f85 100644 --- a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm +++ b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm @@ -39,6 +39,7 @@ user << "\red There is nothing on the [src]." /obj/machinery/bunsen_burner/proc/try_heating() + src.visible_message("\blue \icon[src] [src] bubbles.") if(held_container && heating) heated = 1 held_container.reagents.handle_reactions() diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index 03b3f136fd4..70ce18d2abe 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -11,7 +11,7 @@ /obj/item/device/gps/attack_self(var/mob/user as mob) var/turf/T = get_turf(src) - user << "\blue \icon[src] [src] flashes [10 * T.x].[rand(0,9)]:[10 * T.y].[rand(0,9)]:[10 * T.z].[rand(0,9)]." + user << "\blue \icon[src] [src] flashes [T.x].[rand(0,9)]:[T.y].[rand(0,9)]:[T.z].[rand(0,9)]." /obj/item/device/measuring_tape name = "measuring tape" diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index c146f9fd445..cfb651a036e 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -31,7 +31,7 @@ //create a new scanlog entry var/datum/depth_scan/D = new() - D.coords = "[10 * M.x + rand(0,9)]:[10 * M.y + rand(0,9)]:[10 * M.z + rand(0,9)]" + D.coords = "[M.x].[rand(0,9)]:[M.y].[rand(0,9)]:[10 * M.z].[rand(0,9)]" D.time = worldtime2text() D.record_index = positive_locations.len + 1 diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm index f87dfcbc245..5b0196ee78f 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm @@ -4,6 +4,7 @@ /obj/item/weapon/pickaxe/brush name = "brush" + icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "pick_brush" item_state = "syringe_0" digspeed = 50 @@ -14,7 +15,8 @@ /obj/item/weapon/pickaxe/one_pick name = "1/6 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick1" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." @@ -24,7 +26,8 @@ /obj/item/weapon/pickaxe/two_pick name = "1/3 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick2" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." @@ -34,7 +37,8 @@ /obj/item/weapon/pickaxe/three_pick name = "1/2 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick3" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." @@ -44,7 +48,8 @@ /obj/item/weapon/pickaxe/four_pick name = "2/3 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick4" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)." @@ -54,7 +59,8 @@ /obj/item/weapon/pickaxe/five_pick name = "5/6 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick5" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)." @@ -64,7 +70,8 @@ /obj/item/weapon/pickaxe/six_pick name = "1/1 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick6" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)." @@ -74,7 +81,8 @@ /obj/item/weapon/pickaxe/hand name = "hand pickaxe" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick_hand" item_state = "syringe_0" digspeed = 50 desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)." From 31bf502e654d4387578af84f0e8fe32a068474c0 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Tue, 19 Feb 2013 01:58:42 +1000 Subject: [PATCH 26/66] moved a file, add/tweaked some sprites Signed-off-by: Cael_Aislinn --- baystation12.dme | 2 +- .../{ => tools}/suspension_generator.dm | 10 ++++++++++ icons/mecha/mecha.dmi | Bin 139966 -> 149405 bytes icons/obj/vehicles.dmi | Bin 9127 -> 6970 bytes 4 files changed, 11 insertions(+), 1 deletion(-) rename code/modules/research/xenoarchaeology/{ => tools}/suspension_generator.dm (97%) diff --git a/baystation12.dme b/baystation12.dme index 8fcfc748ea1..2124eeb1509 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1078,7 +1078,6 @@ #include "code\modules\research\xenoarchaeology\geosample.dm" #include "code\modules\research\xenoarchaeology\misc.dm" #include "code\modules\research\xenoarchaeology\readme.dm" -#include "code\modules\research\xenoarchaeology\suspension_generator.dm" #include "code\modules\research\xenoarchaeology\analysis\analysis.dm" #include "code\modules\research\xenoarchaeology\analysis\analysis_accelerator.dm" #include "code\modules\research\xenoarchaeology\analysis\analysis_fourier_transform.dm" @@ -1100,6 +1099,7 @@ #include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" #include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" #include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" +#include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" #include "code\modules\research\xenoarchaeology\tools\tools.dm" #include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" #include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" diff --git a/code/modules/research/xenoarchaeology/suspension_generator.dm b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm similarity index 97% rename from code/modules/research/xenoarchaeology/suspension_generator.dm rename to code/modules/research/xenoarchaeology/tools/suspension_generator.dm index 690431a8366..5b9ecc95866 100644 --- a/code/modules/research/xenoarchaeology/suspension_generator.dm +++ b/code/modules/research/xenoarchaeology/tools/suspension_generator.dm @@ -313,6 +313,16 @@ deactivate() ..() +/obj/machinery/suspension_gen/verb/toggle() + set src in view(1) + set name = "Rotate suspension gen (clockwise)" + set category = "IC" + + if(anchored) + usr << "\red You cannot rotate [src], it has been firmly fixed to the floor." + else + dir = turn(dir, 90) + /obj/effect/suspension_field name = "energy field" icon = 'icons/effects/effects.dmi' diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 97b4694885512dc425ff1498a5161b4c8c1a98c3..a9d6a2656fa30f8c098d3b9fc8d4bcfcb488a518 100644 GIT binary patch literal 149405 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×!$9um$%*h&3jEcHGjPb}ts{8^GM#e&L#1 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%0AxsJx^4!1=y9%acyyZked;q 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 Pz>luBp;noOZRr01x!ZaQ literal 32769 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 MlaLp$6g3F^Uu!OXX#fBK diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index 10032cd8cab09e7947cb0b5a399698fbd71bfa52..501c4881c4e1838ee3436b0fc7716b27ab6152f6 100644 GIT binary patch delta 12373 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 AuK)l5 delta 6303 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 MJu=p+eqa~*KS|>DR{#J2 From 9b802ce142647127691a6a22fe1aa3497b056034 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Fri, 8 Feb 2013 23:49:38 +1000 Subject: [PATCH 15/66] added + fleshed out + tweaked some misc items and excavation tools, renamed file --- .../research/xenoarchaeology/archaeo_tools.dm | 84 ------- .../research/xenoarchaeology/core_sampler.dm | 1 + .../research/xenoarchaeology/misc_tools.dm | 225 ++++++++++++++++++ 3 files changed, 226 insertions(+), 84 deletions(-) delete mode 100644 code/modules/research/xenoarchaeology/archaeo_tools.dm create mode 100644 code/modules/research/xenoarchaeology/misc_tools.dm diff --git a/code/modules/research/xenoarchaeology/archaeo_tools.dm b/code/modules/research/xenoarchaeology/archaeo_tools.dm deleted file mode 100644 index 03a2e6635f9..00000000000 --- a/code/modules/research/xenoarchaeology/archaeo_tools.dm +++ /dev/null @@ -1,84 +0,0 @@ -//---- miscellaneous devices ----// - -//also known as the x-ray diffractor -/obj/item/device/depth_scanner - name = "depth analysis scanner" - desc = "Used to check spatial depth and density of rock outcroppings." - icon = 'pda.dmi' - icon_state = "crap" - item_state = "analyzer" - w_class = 1.0 - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - -/obj/item/device/beacon_locator - name = "locater device" - desc = "Used to scan and locate signals on a particular frequency." - icon = 'device.dmi' - icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull - item_state = "electronic" - -/obj/item/device/core_sampler - name = "core sampler" - desc = "Used to extract cores from geological samples." - icon = 'device.dmi' - icon_state = "core_sampler" - item_state = "screwdriver_brown" - w_class = 1.0 - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - -//todo: tape - -//---- excavation devices devices ----// -//sorted in order of delicacy - -/obj/item/weapon/pickaxe/brush - name = "brush" - //icon_state = "brush" - //item_state = "minipick" - digspeed = 50 - desc = "Featuring thick metallic wires for clearing away dust and loose scree." - excavation_amount = 0.5 - drill_sound = 'sound/weapons/thudswoosh.ogg' - drill_verb = "brushing" - -/obj/item/weapon/pickaxe/quarter_pick - name = "1/4 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging." - excavation_amount = 1 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/half_pick - name = "1/2 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging." - excavation_amount = 3 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/pick - name = "1/1 pick" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A miniature excavation tool for precise digging." - excavation_amount = 5 - drill_sound = 'sound/items/Screwdriver.ogg' - drill_verb = "delicately picking" - -/obj/item/weapon/pickaxe/hand - name = "hand pickaxe" - //icon_state = "excavation" - //item_state = "minipick" - digspeed = 50 - desc = "A smaller, more precise version of the pickaxe." - excavation_amount = 15 - drill_sound = 'sound/items/Crowbar.ogg' - drill_verb = "clearing" diff --git a/code/modules/research/xenoarchaeology/core_sampler.dm b/code/modules/research/xenoarchaeology/core_sampler.dm index b123fed02e1..902857b75db 100644 --- a/code/modules/research/xenoarchaeology/core_sampler.dm +++ b/code/modules/research/xenoarchaeology/core_sampler.dm @@ -27,6 +27,7 @@ var/obj/item/weapon/evidencebag/filled_bag /obj/item/device/core_sampler/examine() + set src in orange(1) if (!( usr )) return if(get_dist(src, usr) < 2) diff --git a/code/modules/research/xenoarchaeology/misc_tools.dm b/code/modules/research/xenoarchaeology/misc_tools.dm new file mode 100644 index 00000000000..014ecc59120 --- /dev/null +++ b/code/modules/research/xenoarchaeology/misc_tools.dm @@ -0,0 +1,225 @@ +//---- miscellaneous devices ----// + +//also known as the x-ray diffractor +/obj/item/device/depth_scanner + name = "depth analysis scanner" + desc = "Used to check spatial depth and density of rock outcroppings." + icon = 'pda.dmi' + icon_state = "crap" + item_state = "analyzer" + w_class = 1.0 + flags = FPRINT | TABLEPASS + slot_flags = SLOT_BELT + var/list/positive_locations = list() + var/datum/depth_scan/current + +/datum/depth_scan + var/time = "" + var/coords = "" + var/depth = 0 + var/clearance = 0 + var/record_index = 1 + var/dissonance_spread = 1 + +/obj/item/device/depth_scanner/proc/scan_turf(var/mob/user, var/turf/T) + user.visible_message("\blue [user] scans [T], the air around them humming gently.") + if(istype(T,/turf/simulated/mineral)) + var/turf/simulated/mineral/M = T + if(M.excavation_minerals.len || M.finds.len) + //create a new scanlog entry + var/datum/depth_scan/D = new() + D.coords = "[10 * T.x + rand(0,9)]:[10 * T.y + rand(0,9)]:[10 * T.z + rand(0,9)]" + D.time = worldtime2text() + D.record_index = positive_locations.len + 1 + + //find whichever is closer: find or mineral + if(M.finds.len) + var/datum/find/F = M.finds[1] + D.depth = F.excavation_required + D.clearance = F.clearance_range + if(M.excavation_minerals.len) + if(M.excavation_minerals[1] < D.depth) + D.depth = M.excavation_minerals[1] + D.clearance = rand(2,6) + D.dissonance_spread = rand(1,1000) / 100 + + positive_locations.Add(D) + + for(var/mob/L in range(src, 1)) + L << "\blue \icon[src] [src] pings." + +/obj/item/device/depth_scanner/attack_self(var/mob/user as mob) + return src.interact(user) + +/obj/item/device/depth_scanner/interact(var/mob/user as mob) + var/dat = "Co-ordinates with positive matches
" + dat += "
== Clear all ==
" + if(current) + dat += "Time: [current.time]
" + dat += "Coords: [current.coords]
" + dat += "Anomaly depth: [current.depth]
" + dat += "Clearance: [current.clearance]
" + dat += "Dissonance spread: [current.dissonance_spread]
" + dat += "clear entry
" + else + dat += "Select an entry from the list
" + dat += "
" + dat += "
" + dat += "
" + dat += "
" + dat += "