mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
new xenoarchaeology tools, basic datum for xenoarch work (WIP stuff)
Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
119
code/modules/research/xenoarchaeology/analysis_machinery.dm
Normal file
119
code/modules/research/xenoarchaeology/analysis_machinery.dm
Normal file
@@ -0,0 +1,119 @@
|
||||
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 = "<B>Gas Chromatography Spectrometer</B><BR>"
|
||||
dat += "<hr>"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh<BR>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close<BR>"
|
||||
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 = "<B>Accelerator Spectrometer</B><BR>"
|
||||
dat += "<hr>"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh<BR>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close<BR>"
|
||||
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 = "<B>Fourier Transform Spectroscope</B><BR>"
|
||||
dat += "<hr>"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh<BR>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close<BR>"
|
||||
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 = "<B>Radiometric Exposure Spectrometer</B><BR>"
|
||||
dat += "<hr>"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh<BR>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close<BR>"
|
||||
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 = "<B>Ion Mobility Spectrometer</B><BR>"
|
||||
dat += "<hr>"
|
||||
dat += "<A href='?src=\ref[src];refresh=1'>Refresh<BR>"
|
||||
dat += "<A href='?src=\ref[src];close=1'>Close<BR>"
|
||||
user << browse(dat, "window=artanalyser;size=450x500")
|
||||
onclose(user, "artanalyser")
|
||||
68
code/modules/research/xenoarchaeology/core_sampler.dm
Normal file
68
code/modules/research/xenoarchaeology/core_sampler.dm
Normal file
@@ -0,0 +1,68 @@
|
||||
//device to take core samples from mineral turfs - used for various types of analysis
|
||||
|
||||
/obj/item/weapon/storage/samplebag
|
||||
name = "sample bag"
|
||||
desc = "A geological sample bag."
|
||||
icon_state = "evidenceobj"
|
||||
w_class = 1
|
||||
max_w_class = 1
|
||||
max_combined_w_class = 7
|
||||
storage_slots = 7
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/device/core_sampler
|
||||
name = "core sampler"
|
||||
desc = "Used to extract geological core samples."
|
||||
icon = 'device.dmi'
|
||||
icon_state = "sampler0"
|
||||
item_state = "screwdriver_brown"
|
||||
w_class = 1.0
|
||||
flags = FPRINT | TABLEPASS
|
||||
//slot_flags = SLOT_BELT
|
||||
var/sampled_turf = ""
|
||||
var/num_stored_bags = 10
|
||||
var/obj/item/weapon/storage/samplebag/filled_bag
|
||||
|
||||
/obj/item/device/core_sampler/New()
|
||||
/*for(var/i=0, i<num_stored_bags, i++)
|
||||
src.contents += new/obj/item/weapon/storage/samplebag(src)*/
|
||||
|
||||
/obj/item/device/core_sampler/attack_hand(var/mob/user)
|
||||
user << "\blue The core sampler is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] sample bag[num_stored_bags != 1] remaining."
|
||||
|
||||
/obj/item/device/core_sampler/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/storage/samplebag))
|
||||
if(num_stored_bags < 10)
|
||||
del(W)
|
||||
num_stored_bags += 1
|
||||
user << "\blue You insert the sample bag into the core sampler."
|
||||
else
|
||||
user << "\red The core sampler can not fit any more sample bags!"
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/core_sampler/proc/sample_turf(var/turf/simulated/mineral/T, var/mob/user as mob)
|
||||
if(filled_bag)
|
||||
user << "\red The core sampler is full!"
|
||||
else if(num_stored_bags < 1)
|
||||
user << "\red The core sampler is out of sample bags!"
|
||||
else
|
||||
filled_bag = new /obj/item/weapon/storage/samplebag(src)
|
||||
//sampled_turf = src.type
|
||||
icon_state = "sampler1"
|
||||
|
||||
for(var/i=0, i<7, i++)
|
||||
var/obj/item/weapon/rocksliver/R = new(filled_bag)
|
||||
R.source_rock = T.type
|
||||
|
||||
user << "\blue You take a core sample of the [T]."
|
||||
|
||||
/obj/item/device/core_sampler/examine()
|
||||
if (!( usr ))
|
||||
return
|
||||
if(get_dist(src, usr) < 2)
|
||||
usr << "That's \a [src]."
|
||||
usr << "\blue Used to extract geological core samples - this one is [sampled_turf ? "full" : "empty"], and has [num_stored_bags] sample bag[num_stored_bags != 1] remaining."
|
||||
else
|
||||
return ..()
|
||||
39
code/modules/research/xenoarchaeology/geosample.dm
Normal file
39
code/modules/research/xenoarchaeology/geosample.dm
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
datum/geosample
|
||||
var/age_thousand = 1 //age can correspond to different artifacts
|
||||
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
|
||||
|
||||
datum/geosample/New(var/turf/simulated/mineral/container)
|
||||
UpdateTurf(container)
|
||||
|
||||
//this function should only be called once. it's here just in case
|
||||
datum/geosample/proc/UpdateTurf(var/turf/simulated/mineral/container)
|
||||
src = null
|
||||
switch(container.mineralName)
|
||||
if("Uranium")
|
||||
age_million = rand(1, 704)
|
||||
age_thousand = rand(1,999)
|
||||
if("Iron")
|
||||
age_thousand = rand(1, 999)
|
||||
age_million = rand(1, 999)
|
||||
if("Diamond")
|
||||
age_thousand = rand(1,999)
|
||||
age_million = rand(1,999)
|
||||
if("Gold")
|
||||
age_thousand = rand(1,999)
|
||||
age_million = rand(1,999)
|
||||
age_billion = rand(3,4)
|
||||
if("Silver")
|
||||
age_thousand = rand(1,999)
|
||||
age_million = rand(1,999)
|
||||
if("Plasma")
|
||||
age_thousand = rand(1,999)
|
||||
age_million = rand(1,999)
|
||||
age_billion = rand(10, 13)
|
||||
if("Archaeo")
|
||||
//speshul
|
||||
36
code/modules/research/xenoarchaeology/tools.dm
Normal file
36
code/modules/research/xenoarchaeology/tools.dm
Normal file
@@ -0,0 +1,36 @@
|
||||
/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
|
||||
Reference in New Issue
Block a user