mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 12:07:27 +01:00
Conflicts
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user