adds new feature: cloning extinct animals and seeds from fossils found through xenoarchaeology, some minor tweaks to various other areas to make it work

Signed-off-by: Cael Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael Aislinn
2014-05-03 18:30:52 +10:00
parent ef7933cbdf
commit 18c8e9f8f1
13 changed files with 654 additions and 1 deletions
@@ -7,6 +7,7 @@
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "bone"
desc = "It's a fossil."
var/animal = 1
/obj/item/weapon/fossil/base/New()
var/list/l = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3,
@@ -97,6 +98,7 @@
name = "Fossilised plant"
icon_state = "plant1"
desc = "It's fossilised plant remains."
animal = 0
/obj/item/weapon/fossil/plant/New()
icon_state = "plant[rand(1,4)]"
@@ -0,0 +1,77 @@
/mob/living/simple_animal/hostile/samak
name = "samak"
desc = "A fast, armoured predator accustomed to hiding and ambushing in cold terrain."
faction = "samak"
icon_state = "samak"
icon_living = "samak"
icon_dead = "samak_dead"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
move_to_delay = 2
maxHealth = 125
health = 125
speed = 2
melee_damage_lower = 5
melee_damage_upper = 15
attacktext = "mauls"
cold_damage_per_tick = 0
speak_chance = 5
speak = list("Hruuugh!","Hrunnph")
emote_see = list("paws the ground","shakes its mane","stomps")
emote_hear = list("snuffles")
/mob/living/simple_animal/hostile/diyaab
name = "diyaab"
desc = "A small pack animal. Although omnivorous, it will hunt meat on occasion."
faction = "diyaab"
icon_state = "diyaab"
icon_living = "diyaab"
icon_dead = "diyaab_dead"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
move_to_delay = 1
maxHealth = 25
health = 25
speed = 1
melee_damage_lower = 1
melee_damage_upper = 8
attacktext = "gouges"
cold_damage_per_tick = 0
speak_chance = 5
speak = list("Awrr?","Aowrl!","Worrl")
emote_see = list("sniffs the air cautiously","looks around")
emote_hear = list("snuffles")
/mob/living/simple_animal/hostile/shantak
name = "shantak"
desc = "A piglike creature with a bright iridiscent mane that sparkles as though lit by an inner light. Don't be fooled by its beauty though."
faction = "shantak"
icon_state = "shantak"
icon_living = "shantak"
icon_dead = "shantak_dead"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
move_to_delay = 1
maxHealth = 75
health = 75
speed = 1
melee_damage_lower = 3
melee_damage_upper = 12
attacktext = "gouges"
cold_damage_per_tick = 0
speak_chance = 5
speak = list("Shuhn","Shrunnph?","Shunpf")
emote_see = list("scratches the ground","shakes out it's mane","tinkles gently")
/mob/living/simple_animal/yithian
name = "yithian"
desc = "A friendly creature vaguely resembling an oversized snail without a shell."
icon_state = "yithian"
icon_living = "yithian"
icon_dead = "yithian_dead"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
/mob/living/simple_animal/tindalos
name = "tindalos"
desc = "It looks like a large, flightless grasshopper."
icon_state = "tindalos"
icon_living = "tindalos"
icon_dead = "tindalos_dead"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
@@ -0,0 +1,202 @@
/obj/item/seeds/telriis
name = "pack of telriis seeds"
desc = "These seeds grow into telriis grass. Not recommended for consumption by sentient species."
icon_state = "seed-alien1"
mypath = "/obj/item/seeds/telriis"
species = "telriis"
plantname = "Telriis grass"
productname = "/obj/item/weapon/telriis_clump"
lifespan = 50 //number of ticks
endurance = 50 //
maturation = 5 //ticks to full growth stage
production = 5 //ticks till ready to harvest
yield = 4 //number produced when harvest
potency = 5
plant_type = 1 //1=weed, 2=shroom, 0=normal
growthstages = 4
/obj/item/weapon/reagent_containers/food/snacks/grown/telriis_clump
name = "telriis grass"
desc = "A clump of telriis grass, not recommended for consumption by sentients."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "telriisclump"
New(var/loc, var/potency)
..()
reagents.add_reagent("pwine", potency * 5)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
/obj/item/seeds/thaadra
name = "pack of thaa'dra seeds"
desc = "These seeds grow into Thaa'dra lichen. Likes the cold."
icon_state = "seed-alien3"
mypath = "/obj/item/seeds/thaadra"
species = "thaadra"
plantname = "Thaa'dra lichen"
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/thaadra"
lifespan = 20
endurance = 10
maturation = 5
production = 9
yield = 2
potency = 5
plant_type = 2
growthstages = 4
/obj/item/weapon/reagent_containers/food/snacks/grown/thaadrabloom
name = "thaa'dra bloom"
desc = "Looks chewy, might be good to eat."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "thaadrabloom"
New(var/loc, var/potency)
..()
reagents.add_reagent("frostoil", potency * 1.5 + 5)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
/obj/item/seeds/jurlmah
name = "pack of jurl'mah seeds"
desc = "These seeds grow into jurl'mah reeds, which produce large syrupy pods."
icon_state = "seed-alien3"
mypath = "/obj/item/seeds/jurlmah"
species = "jurlmah"
plantname = "jurl'mah reeds"
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah"
lifespan = 20
endurance = 12
maturation = 8
production = 9
yield = 3
potency = 10
growthstages = 5
/obj/item/weapon/reagent_containers/food/snacks/grown/jurlmah
name = "jurl'mah pod"
desc = "Bulbous and veiny, it appears to pulse slightly as you look at it."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "jurlmahpod"
New(var/loc, var/potency)
..()
reagents.add_reagent("serotrotium", potency)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
/obj/item/seeds/amauri
name = "pack of amauri seeds"
desc = "Grows into a straight, dark plant with small round fruit."
icon_state = "seed-alien3"
mypath = "/obj/item/seeds/amauri"
species = "amauri"
plantname = "amauri plant"
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/amauri"
lifespan = 30
endurance = 10
maturation = 8
production = 9
yield = 4
potency = 10
growthstages = 3
/obj/item/weapon/reagent_containers/food/snacks/grown/amauri
name = "amauri fruit"
desc = "It is small, round and hard. Its skin is a thick dark purple."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "amaurifruit"
New(var/loc, var/potency)
..()
reagents.add_reagent("zombiepowder", potency * 10)
reagents.add_reagent("condensedcapsaicin", potency * 5)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
/obj/item/seeds/gelthi
name = "pack of gelthi seeds"
desc = "Grows into a bright, wavy plant with many small fruits."
icon_state = "seed-alien2"
mypath = "/obj/item/seeds/gelthi"
species = "gelthi"
plantname = "gelthi plant"
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/gelthi"
lifespan = 20
endurance = 15
maturation = 6
production = 6
yield = 2
potency = 1
growthstages = 3
/obj/item/weapon/reagent_containers/food/snacks/grown/gelthi
name = "gelthi berries"
desc = "They feel fluffy and slightly warm to the touch."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "gelthiberries"
New(var/loc, var/potency)
..()
//this may prove a little strong
reagents.add_reagent("stoxin", (potency * potency) / 5)
reagents.add_reagent("capsaicin", (potency * potency) / 5)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
/obj/item/seeds/vale
name = "pack of vale seeds"
desc = "The vale bush is often depicted in ancient heiroglyphs and is similar to cherry blossoms."
icon_state = "seed-alien2"
mypath = "/obj/item/seeds/vale"
species = "vale"
plantname = "vale bush"
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/vale"
lifespan = 25
endurance = 15
maturation = 8
production = 10
yield = 3
potency = 3
growthstages = 4
/obj/item/weapon/reagent_containers/food/snacks/grown/vale
name = "vale leaves"
desc = "Small, curly leaves covered in a soft pale fur."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "valeleaves"
New(var/loc, var/potency)
..()
reagents.add_reagent("paracetamol", potency * 5)
reagents.add_reagent("dexalin", potency * 2)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
/obj/item/seeds/surik
name = "pack of surik seeds"
desc = "A spiky blue vine with large fruit resembling pig ears."
icon_state = "seed-alien3"
mypath = "/obj/item/seeds/surik"
species = "surik"
plantname = "surik vine"
productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/surik"
lifespan = 30
endurance = 18
maturation = 7
production = 7
yield = 3
potency = 3
growthstages = 4
/obj/item/weapon/reagent_containers/food/snacks/grown/surik
name = "surik fruit"
desc = "Multiple layers of blue skin peeling away to reveal a spongey core, vaguely resembling an ear."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "surikfruit"
New(var/loc, var/potency)
..()
reagents.add_reagent("impedrezene", potency * 3)
reagents.add_reagent("synaptizine", potency * 2)
reagents.add_reagent("nutriment", potency)
bitesize = 1+round(reagents.total_volume / 2, 1)
@@ -0,0 +1,335 @@
var/global/list/alphabet_uppercase = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
var/list/genome_prefixes = list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
var/list/spawn_types_animal = list("/mob/living/carbon/slime",\
"/mob/living/simple_animal/hostile/alien",\
"/mob/living/simple_animal/hostile/alien/drone",\
"/mob/living/simple_animal/hostile/alien/sentinel",\
"/mob/living/simple_animal/hostile/giant_spider",\
"/mob/living/simple_animal/hostile/giant_spider/hunter",\
"/mob/living/simple_animal/hostile/giant_spider/nurse",\
"/mob/living/simple_animal/hostile/creature",\
"/mob/living/simple_animal/hostile/samak",\
"/mob/living/simple_animal/hostile/diyaab",\
"/mob/living/simple_animal/hostile/shantak",\
"/mob/living/simple_animal/tindalos",\
"/mob/living/simple_animal/yithian")
var/list/spawn_types_plant = list("/obj/item/seeds/walkingmushroommycelium",\
"/obj/item/seeds/killertomatoseed",\
"/obj/item/seeds/shandseed",
"/obj/item/seeds/mtearseed",
"/obj/item/seeds/thaadra",\
"/obj/item/seeds/telriis",\
"/obj/item/seeds/jurlmah",\
"/obj/item/seeds/amauri",\
"/obj/item/seeds/gelthi",\
"/obj/item/seeds/vale",\
"/obj/item/seeds/surik")
var/list/all_animal_genesequences = list()
var/list/all_plant_genesequences = list()
datum/genesequence
var/spawned_type
var/spawned_type_text
var/list/full_genome_sequence = list()
/proc/create_all_genesequences()
//create animal gene sequences
while(spawn_types_animal.len && genome_prefixes.len)
var/datum/genesequence/new_sequence = new/datum/genesequence()
new_sequence.spawned_type_text = pick(spawn_types_animal)
new_sequence.spawned_type = text2path(new_sequence.spawned_type_text)
spawn_types_animal -= new_sequence.spawned_type
var/prefixletter = pick(genome_prefixes)
genome_prefixes -= prefixletter
while(new_sequence.full_genome_sequence.len < 7)
new_sequence.full_genome_sequence.Add("[prefixletter][pick(alphabet_uppercase)][pick(alphabet_uppercase)][pick(1,2,3,4,5,6,7,8,9,0)][pick(1,2,3,4,5,6,7,8,9,0)]")
all_animal_genesequences.Add(new_sequence)
//create plant gene sequences
while(spawn_types_plant.len && genome_prefixes.len)
var/datum/genesequence/new_sequence = new/datum/genesequence()
new_sequence.spawned_type = pick(spawn_types_plant)
spawn_types_plant -= new_sequence.spawned_type
var/prefixletter = pick(genome_prefixes)
genome_prefixes -= prefixletter
while(new_sequence.full_genome_sequence.len < 7)
new_sequence.full_genome_sequence.Add("[prefixletter][pick(1,2,3,4,5,6,7,8,9,0)][pick(1,2,3,4,5,6,7,8,9,0)][pick(alphabet_uppercase)][pick(alphabet_uppercase)]")
all_plant_genesequences.Add(new_sequence)
/obj/machinery/computer/reconstitutor
name = "Flora reconstitution console"
icon = 'icons/obj/computer.dmi'
icon_state = "dna"
circuit = "/obj/item/weapon/circuitboard/reconstitutor"
req_access = list(access_heads) //Only used for record deletion right now.
var/obj/machinery/clonepod/pod1 = null //Linked cloning pod.
var/temp = ""
var/menu = 1 //Which menu screen to display
var/list/records = list()
var/datum/dna2/record/active_record = null
var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything.
var/loading = 0 // Nice loading text
var/list/undiscovered_genesequences = null
var/list/discovered_genesequences = list()
var/list/completed_genesequences = list()
var/list/undiscovered_genomes = list()
var/list/manually_placed_genomes = list()
var/list/discovered_genomes = list("! Clear !")
var/list/accepted_fossil_types = list(/obj/item/weapon/fossil/plant)
/obj/machinery/computer/reconstitutor/New()
create_all_genesequences()
if(!undiscovered_genesequences)
undiscovered_genesequences = all_plant_genesequences.Copy()
..()
/obj/machinery/computer/reconstitutor/animal
name = "Fauna reconstitution console"
accepted_fossil_types = list(/obj/item/weapon/fossil/bone,/obj/item/weapon/fossil/shell,/obj/item/weapon/fossil/skull)
/obj/machinery/computer/reconstitutor/animal/New()
create_all_genesequences()
undiscovered_genesequences = all_animal_genesequences.Copy()
..()
/obj/machinery/computer/reconstitutor/attackby(obj/item/W, mob/user)
if(istype(W,/obj/item/weapon/fossil))
user.drop_item()
W.loc = src.loc
switch(scan_fossil(W))
if(1)
src.visible_message("\red \icon[src] [src] scans the fossil and rejects it.")
if(2)
visible_message("\red \icon[src] can not extract any more genetic data from new fossils.")
if(4)
src.visible_message("\blue \icon[src] [user] inserts [W] into [src], the fossil is consumed.")
del(W)
updateDialog()
else if (istype(W, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = W
S.hide_from(usr)
var/numaccepted = 0
var/numrejected = 0
var/full = 0
for(var/obj/item/weapon/fossil/F in S.contents)
switch(scan_fossil(F))
if(1)
numrejected += 1
if(2)
full = 1
if(4)
numaccepted += 1
S.remove_from_storage(F, src) //This will move the item to this item's contents
del(F)
updateDialog()
var/outmsg = "\blue You empty all the fossils from [S] into [src]."
if(numaccepted)
outmsg += " \blue[numaccepted] fossils were accepted."
if(numrejected)
outmsg += " \red[numrejected] fossils were rejected."
if(full)
outmsg += " \red[src] can not extract any more genetic data from new fossils."
visible_message(outmsg)
else
..()
/obj/machinery/computer/reconstitutor/attack_hand(var/mob/user as mob)
src.add_fingerprint(user)
interact(user)
/obj/machinery/computer/reconstitutor/interact(mob/user)
if(stat & (NOPOWER|BROKEN) || get_dist(src, user) > 1)
user.unset_machine(src)
return
var/dat = "<B>Garland Corp genetic reconstitutor</B><BR>"
dat += "<HR>"
if(!pod1)
pod1 = locate() in orange(1, src)
if(!pod1)
dat += "<b><font color=red>Unable to locate cloning pod.</font></b><br>"
else
dat += "<b><font color=green>Cloning pod connected.</font></b><br>"
dat += "<table border=1>"
dat += "<tr>"
dat += "<td><b>GENE1</b></td>"
dat += "<td><b>GENE2</b></td>"
dat += "<td><b>GENE3</b></td>"
dat += "<td><b>GENE4</b></td>"
dat += "<td><b>GENE5</b></td>"
dat += "<td><b>GENE6</b></td>"
dat += "<td><b>GENE7</b></td>"
dat += "<td></td>"
dat += "<td></td>"
dat += "</tr>"
//WIP gene sequences
for(var/sequence_num = 1, sequence_num <= discovered_genesequences.len, sequence_num += 1)
var/datum/genesequence/cur_genesequence = discovered_genesequences[sequence_num]
dat += "<tr>"
var/num_correct = 0
for(var/curindex = 1, curindex <= 7, curindex++)
var/bgcolour = "#ffffff"//white ffffff, red ff0000
//background colour hints at correct positioning
if(manually_placed_genomes[sequence_num][curindex])
//green background if slot is correctly filled
if(manually_placed_genomes[sequence_num][curindex] == cur_genesequence.full_genome_sequence[curindex])
bgcolour = "#008000"
num_correct += 1
if(num_correct == 7)
discovered_genesequences -= cur_genesequence
completed_genesequences += cur_genesequence
manually_placed_genomes[sequence_num] = new/list(7)
interact(user)
return
//yellow background if adjacent to correct slot
if(curindex > 1 && manually_placed_genomes[sequence_num][curindex] == cur_genesequence.full_genome_sequence[curindex - 1])
bgcolour = "#ffff00"
else if(curindex < 7 && manually_placed_genomes[sequence_num][curindex] == cur_genesequence.full_genome_sequence[curindex + 1])
bgcolour = "#ffff00"
var/this_genome_slot = manually_placed_genomes[sequence_num][curindex]
if(!this_genome_slot)
this_genome_slot = "- - - - -"
dat += "<td><a href='?src=\ref[src];sequence_num=[sequence_num];insertpos=[curindex]' style='background-color:[bgcolour]'>[this_genome_slot]</a></td>"
dat += "<td><a href='?src=\ref[src];reset=1;sequence_num=[sequence_num]'>Reset</a></td>"
//dat += "<td><a href='?src=\ref[src];clone=1;sequence_num=[sequence_num]'>Clone</a></td>"
dat += "</tr>"
//completed gene sequences
for(var/sequence_num = 1, sequence_num <= completed_genesequences.len, sequence_num += 1)
var/datum/genesequence/cur_genesequence = completed_genesequences[sequence_num]
dat += "<tr>"
for(var/curindex = 1, curindex <= 7, curindex++)
var/this_genome_slot = cur_genesequence.full_genome_sequence[curindex]
dat += "<td style='background-color:#008000'>[this_genome_slot]</td>"
dat += "<td><a href='?src=\ref[src];wipe=1;sequence_num=[sequence_num]'>Wipe</a></td>"
dat += "<td><a href='?src=\ref[src];clone=1;sequence_num=[sequence_num]'>Clone</a></td>"
dat += "</tr>"
dat += "</table>"
dat += "<br>"
dat += "<hr>"
dat += "<a href='?src=\ref[src];close=1'>Close</a>"
user << browse(dat, "window=reconstitutor;size=600x500")
user.set_machine(src)
onclose(user, "reconstitutor")
/obj/machinery/computer/reconstitutor/animal/Topic(href, href_list)
if(href_list["clone"])
var/sequence_num = text2num(href_list["sequence_num"])
var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num]
if(pod1)
if(pod1.occupant)
visible_message("\red \icon[src] The cloning pod is currently occupied.")
else if(pod1.biomass < CLONE_BIOMASS)
visible_message("\red \icon[src] Not enough biomass in the cloning pod.")
else if(pod1.mess)
visible_message("\red \icon[src] Error: clonepod malfunction.")
else
visible_message("\blue \icon[src] [src] clones something from a reconstituted gene sequence!")
playsound(src.loc, 'sound/effects/screech.ogg', 50, 1, -3)
pod1.occupant = new cloned_genesequence.spawned_type(pod1)
pod1.locked = 1
pod1.icon_state = "pod_1"
//pod1.occupant.name = "[pod1.occupant.name] ([rand(0,999)])"
pod1.biomass -= CLONE_BIOMASS
else
usr << "\red \icon[src] Unable to locate cloning pod!"
else
..()
/obj/machinery/computer/reconstitutor/Topic(href, href_list)
if(href_list["insertpos"])
//world << "inserting gene for genesequence [href_list["insertgenome"]] at pos [text2num(href_list["insertpos"])]"
var/sequence_num = text2num(href_list["sequence_num"])
var/insertpos = text2num(href_list["insertpos"])
var/old_genome = manually_placed_genomes[sequence_num][insertpos]
discovered_genomes = sortList(discovered_genomes)
var/new_genome = input(usr, "Which genome do you want to insert here?") as null|anything in discovered_genomes
if(new_genome == "! Clear !")
manually_placed_genomes[sequence_num][insertpos] = null
else if(new_genome)
manually_placed_genomes[sequence_num][insertpos] = new_genome
discovered_genomes.Remove(new_genome)
if(old_genome)
discovered_genomes.Add(old_genome)
updateDialog()
else if(href_list["reset"])
var/sequence_num = text2num(href_list["sequence_num"])
for(var/curindex = 1, curindex <= 7, curindex++)
var/old_genome = manually_placed_genomes[sequence_num][curindex]
manually_placed_genomes[sequence_num][curindex] = null
if(old_genome)
discovered_genomes.Add(old_genome)
updateDialog()
else if(href_list["wipe"])
var/sequence_num = text2num(href_list["sequence_num"])
var/datum/genesequence/wiped_genesequence = completed_genesequences[sequence_num]
completed_genesequences.Remove(wiped_genesequence)
discovered_genesequences.Add(wiped_genesequence)
discovered_genomes.Add(wiped_genesequence.full_genome_sequence)
discovered_genomes = sortList(discovered_genomes)
updateDialog()
else if(href_list["clone"])
var/sequence_num = text2num(href_list["sequence_num"])
var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num]
visible_message("\blue \icon[src] [src] clones a packet of seeds from a reconstituted gene sequence!")
playsound(src.loc, 'sound/effects/screech.ogg', 50, 1, -3)
new cloned_genesequence.spawned_type(src.loc)
else if(href_list["close"])
usr.unset_machine(src)
usr << browse(null, "window=reconstitutor")
else
..()
/obj/machinery/computer/reconstitutor/proc/scan_fossil(var/obj/item/weapon/fossil/scan_fossil)
//see whether we accept these kind of fossils
if(accepted_fossil_types.len && !accepted_fossil_types.Find(scan_fossil.type))
return 1
//see whether we are going to discover a new sequence, new genome for existing sequence or nothing
var/new_genome_prob = discovered_genesequences.len * 50
if( (new_genome_prob >= 100 || prob(new_genome_prob)) && undiscovered_genomes.len)
//create a new genome for an existing gene sequence
var/newly_discovered_genome = pick(undiscovered_genomes)
undiscovered_genomes -= newly_discovered_genome
discovered_genomes.Add(newly_discovered_genome)
else if(undiscovered_genesequences.len)
//discover new gene sequence
var/datum/genesequence/newly_discovered_genesequence = pick(undiscovered_genesequences)
undiscovered_genesequences -= newly_discovered_genesequence
discovered_genesequences += newly_discovered_genesequence
//add genomes for new gene sequence to pool of discoverable genomes
undiscovered_genomes.Add(newly_discovered_genesequence.full_genome_sequence)
manually_placed_genomes.Add(null)
manually_placed_genomes[manually_placed_genomes.len] = new/list(7)
else
//there's no point scanning any more fossils, we've already discovered everything
return 2
return 4
@@ -152,6 +152,7 @@ proc/SetupXenoarch()
new /obj/item/weapon/pickaxe(src)
new /obj/item/device/measuring_tape(src)
new /obj/item/weapon/pickaxe/hand(src)
new /obj/item/weapon/storage/bag/fossils(src)
return
//---- Isolation room air alarms
@@ -22,3 +22,15 @@
w_class = 2
//todo: dig site tape
/obj/item/weapon/storage/bag/fossils
name = "Fossil Satchel"
desc = "Transports delicate fossils in suspension so they don't break during transit."
icon = 'icons/obj/mining.dmi'
icon_state = "satchel"
slot_flags = SLOT_BELT | SLOT_POCKET
w_class = 3
storage_slots = 50
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * ore.w_class
max_w_class = 3
can_hold = list("/obj/item/weapon/fossil")