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:
Cael_Aislinn
2012-08-11 02:37:01 +10:00
parent c6cef3ea98
commit 626c782ff2
4 changed files with 262 additions and 0 deletions

View 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")

View 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 ..()

View 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

View 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