Conflicts

This commit is contained in:
Aurorablade
2016-02-11 17:57:37 -05:00
parent 5e8fa9de84
commit 0f77eb068f
2 changed files with 77 additions and 32 deletions
+56 -11
View File
@@ -16,6 +16,9 @@
var/loading = 0 // Nice loading text
var/autoprocess = 0
var/obj/machinery/clonepod/selected_pod
// 0: Standard body scan
// 1: The "Best" scan available
var/scan_mode = 1
light_color = LIGHT_COLOR_DARKBLUE
@@ -31,7 +34,7 @@
if(!scanner || !pods.len || !autoprocess || stat & NOPOWER)
return
if(scanner.occupant && (scanner.scan_level > 2))
if(scanner.occupant && can_autoprocess())
scan_mob(scanner.occupant)
for (var/obj/machinery/clonepod/pod in pods)
@@ -135,6 +138,8 @@
data["loading"] = loading
data["autoprocess"] = autoprocess
data["can_brainscan"] = can_brainscan() // You'll need tier 4s for this
data["scan_mode"] = scan_mode
if(scanner && pods.len && ((scanner.scan_level > 2) || canpodautoprocess))
data["autoallowed"] = 1
@@ -184,13 +189,16 @@
if(loading)
return
if ((href_list["scan"]) && (!isnull(src.scanner)))
if (href_list["scan"] && scanner && scanner.occupant)
scantemp = "Scanner ready."
loading = 1
spawn(20)
src.scan_mob(src.scanner.occupant)
if(can_brainscan() && scan_mode)
scan_mob(scanner.occupant, scan_brain = 1)
else
scan_mob(scanner.occupant)
loading = 0
nanomanager.update_uis(src)
@@ -335,21 +343,36 @@
src.menu = text2num(href_list["menu"])
temp = ""
scantemp = "Scanner ready."
else if (href_list["toggle_mode"])
if(can_brainscan())
scan_mode = !scan_mode
else
scan_mode = 0
src.add_fingerprint(usr)
nanomanager.update_uis(src)
return
/obj/machinery/computer/cloning/proc/scan_mob(mob/living/carbon/human/subject as mob)
/obj/machinery/computer/cloning/proc/scan_mob(mob/living/carbon/human/subject as mob, var/scan_brain = 0)
if (stat & NOPOWER)
return
if (scanner.stat & (NOPOWER|BROKEN))
return
if (scan_brain && !can_brainscan())
return
if ((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna) || (subject.species.flags & NO_SCAN))
scantemp = "<span class=\"bad\">Error: Unable to locate valid genetic data.</span>"
nanomanager.update_uis(src)
return
if (!subject.get_int_organ(/obj/item/organ/internal/brain))
if("brain" in subject.internal_organs_by_name)
var/obj/item/organ/brain/Brn = subject.internal_organs_by_name["brain"]
if(istype(Brn))
var/datum/species/S = all_species[Brn.dna.species] // stepladder code wooooo
if(S.flags & NO_SCAN)
scantemp = "<span class=\"bad\">Error: Subject's brain is incompatible.</span>"
nanomanager.update_uis(src)
return
if (subject.brain_op_stage == 4.0)
scantemp = "<span class=\"bad\">Error: No signs of intelligence detected.</span>"
nanomanager.update_uis(src)
return
@@ -365,6 +388,10 @@
scantemp = "<span class=\"bad\">Error: Mental interface failure.</span>"
nanomanager.update_uis(src)
return
if (scan_brain && !("brain" in subject.internal_organs_by_name))
scantemp = "<span class=\"bad\">Error: No brain found.</span>"
nanomanager.update_uis(src)
return
if (!isnull(find_record(subject.ckey)))
scantemp = "Subject already in database."
nanomanager.update_uis(src)
@@ -373,13 +400,25 @@
subject.dna.check_integrity()
var/datum/dna2/record/R = new /datum/dna2/record()
R.dna=subject.dna
R.ckey = subject.ckey
R.id= copytext(md5(subject.real_name), 2, 6)
R.name=R.dna.real_name
var/extra_info = ""
if(scan_brain)
var/obj/item/organ/B = subject.internal_organs_by_name["brain"]
B.dna.check_integrity()
R.dna=B.dna.Clone()
var/datum/species/S = all_species[R.dna.species]
if(S.flags & NO_SCAN)
extra_info = "Proper genetic interface not found, defaulting to genetic data of the body."
R.dna.species = subject.species.name
R.id= copytext(md5(B.dna.real_name), 2, 6)
R.name=B.dna.real_name
else
R.dna=subject.dna.Clone()
R.id= copytext(md5(subject.real_name), 2, 6)
R.name=R.dna.real_name
R.types=DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE
R.languages=subject.languages
//Add an implant if needed
var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject)
if (isnull(imp))
@@ -394,7 +433,7 @@
R.mind = "\ref[subject.mind]"
src.records += R
scantemp = "Subject successfully scanned."
scantemp = "Subject successfully scanned. " + extra_info
nanomanager.update_uis(src)
//Find a specific record by key.
@@ -404,4 +443,10 @@
if (R.ckey == find_key)
selected_record = R
break
return selected_record
return selected_record
/obj/machinery/computer/cloning/proc/can_autoprocess()
return (scanner && scanner.scan_level > 2)
/obj/machinery/computer/cloning/proc/can_brainscan()
return (scanner && scanner.scan_level > 3)
@@ -1,4 +1,4 @@
/obj/item/organ/internal/brain
/obj/item/organ/brain
name = "brain"
health = 400 //They need to live awhile longer than other organs.
max_damage = 200
@@ -13,30 +13,33 @@
var/mob/living/carbon/brain/brainmob = null
organ_tag = "brain"
parent_organ = "head"
slot = "brain"
vital = 1
/obj/item/organ/internal/brain/surgeryize()
/obj/item/organ/brain/attack_self(mob/user as mob)
return //let's not have players taken out of the round as easily as a click, once you have their brain.
/obj/item/organ/brain/surgeryize()
if(!owner)
return
owner.ear_damage = 0 //Yeah, didn't you...hear? The ears are totally inside the brain.
owner.ear_deaf = 0
/obj/item/organ/internal/brain/xeno
/obj/item/organ/brain/xeno
name = "thinkpan"
desc = "It looks kind of like an enormous wad of purple bubblegum."
icon_state = "brain-x-d"
icon = 'icons/mob/alien.dmi'
icon_state = "chitin"
/obj/item/organ/internal/brain/New()
/obj/item/organ/brain/New()
..()
spawn(5)
if(brainmob && brainmob.client)
brainmob.client.screen.len = null //clear the hud
/obj/item/organ/internal/brain/proc/transfer_identity(var/mob/living/carbon/H)
/obj/item/organ/brain/proc/transfer_identity(var/mob/living/carbon/H)
brainmob = new(src)
if(isnull(dna)) // someone didn't set this right...
log_to_dd("[src] at [loc] did not contain a dna datum at time of removal.")
log_to_dd("[src] at [loc] did not contain a dna datum at time of removed.")
dna = H.dna.Clone()
name = "\the [dna.real_name]'s [initial(src.name)]"
brainmob.dna = dna.Clone() // Silly baycode, what you do
@@ -50,18 +53,18 @@
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just a [initial(src.name)].</span>"
callHook("debrain", list(brainmob))
/obj/item/organ/internal/brain/examine(mob/user) // -- TLE
/obj/item/organ/brain/examine(mob/user) // -- TLE
..(user)
if(brainmob && brainmob.client)//if thar be a brain inside... the brain.
user << "You can feel the small spark of life still left in this one."
else
user << "This one seems particularly lifeless. Perhaps it will regain some of its luster later.."
/obj/item/organ/internal/brain/remove(var/mob/living/user,var/special)
/obj/item/organ/brain/removed(var/mob/living/user)
if(!owner) return ..() // Probably a redundant removal; just bail
var/obj/item/organ/internal/brain/B = src
var/obj/item/organ/brain/B = src
if(istype(B) && istype(owner) && is_primary_organ())
var/mob/living/simple_animal/borer/borer = owner.has_brain_worms()
@@ -73,12 +76,12 @@
..()
/obj/item/organ/internal/brain/insert(var/mob/living/target)
/obj/item/organ/brain/replaced(var/mob/living/target)
var/brain_already_exists = 0
if(istype(target,/mob/living/carbon/human)) // No more IPC multibrain shenanigans
//var/mob/living/carbon/human/H = target
if(target.get_int_organ(/obj/item/organ/internal/brain))
var/mob/living/carbon/human/H = target
if(organ_tag in H.internal_organs_by_name)
brain_already_exists = 1
if(!brain_already_exists)
@@ -94,22 +97,19 @@
target.key = brainmob.key
..()
/obj/item/organ/internal/brain/prepare_eat()
return // Too important to eat.
/obj/item/organ/internal/brain/slime
/obj/item/organ/brain/slime
name = "slime core"
desc = "A complex, organic knot of jelly and crystalline particles."
icon = 'icons/mob/slimes.dmi'
icon_state = "green slime extract"
/obj/item/organ/internal/brain/golem
name = "chem"
/obj/item/organ/brain/golem
name = "Runic mind"
desc = "A tightly furled roll of paper, covered with indecipherable runes."
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
/obj/item/organ/internal/brain/Destroy() //copypasted from MMIs.
/obj/item/organ/brain/Destroy() //copypasted from MMIs.
if(brainmob)
qdel(brainmob)
brainmob = null