mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-27 02:23:10 +00:00
Fixed up organ transplant rejection, added cortical stacks, changed vox over to use organ stacks.
This commit is contained in:
@@ -517,24 +517,11 @@ client/proc/one_click_antag()
|
||||
new_vox.mind.special_role = "Vox Raider"
|
||||
new_vox.mutations |= NOCLONE //Stops the station crew from messing around with their DNA.
|
||||
|
||||
//Now apply cortical stack.
|
||||
var/datum/organ/external/affected = new_vox.get_organ("head")
|
||||
|
||||
//To avoid duplicates.
|
||||
for(var/obj/item/weapon/implant/cortical/imp in new_vox.contents)
|
||||
affected.implants -= imp
|
||||
del(imp)
|
||||
|
||||
var/obj/item/weapon/implant/cortical/I = new(new_vox)
|
||||
I.imp_in = new_vox
|
||||
I.implanted = 1
|
||||
affected.implants += I
|
||||
I.part = affected
|
||||
|
||||
if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist ) ) )
|
||||
var/datum/game_mode/heist/M = ticker.mode
|
||||
cortical_stacks += I
|
||||
M.raiders[new_vox.mind] = I
|
||||
if(new_vox.internal_organs_by_name["stack"])
|
||||
cortical_stacks |= new_vox.internal_organs_by_name["stack"]
|
||||
M.raiders[new_vox.mind] = new_vox.internal_organs_by_name["stack"]
|
||||
|
||||
ticker.mode.traitors += new_vox.mind
|
||||
new_vox.equip_vox_raider()
|
||||
|
||||
@@ -311,7 +311,8 @@
|
||||
"liver" = /datum/organ/internal/liver,
|
||||
"kidneys" = /datum/organ/internal/kidney,
|
||||
"brain" = /datum/organ/internal/brain,
|
||||
"eyes" = /datum/organ/internal/eyes
|
||||
"eyes" = /datum/organ/internal/eyes,
|
||||
"stack" = /datum/organ/internal/stack/vox
|
||||
)
|
||||
|
||||
/datum/species/vox/armalis
|
||||
|
||||
@@ -30,7 +30,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
/mob/living/carbon/human/proc/fixblood()
|
||||
for(var/datum/reagent/blood/B in vessel.reagent_list)
|
||||
if(B.id == "blood")
|
||||
B.data = list( "donor"=src,"viruses"=null,"blood_DNA"=dna.unique_enzymes,"blood_colour"= species.blood_color,"blood_type"=dna.b_type, \
|
||||
B.data = list( "donor"=src,"viruses"=null,"species"=species.name,"blood_DNA"=dna.unique_enzymes,"blood_colour"= species.blood_color,"blood_type"=dna.b_type, \
|
||||
"resistances"=null,"trace_chem"=null, "virus2" = null, "antibodies" = null)
|
||||
B.color = B.data["blood_color"]
|
||||
|
||||
|
||||
@@ -180,4 +180,33 @@
|
||||
|
||||
/obj/item/organ/xenos/resinspinner
|
||||
name = "hive node"
|
||||
icon_state = "xgibmid2"
|
||||
icon_state = "xgibmid2"
|
||||
|
||||
//VOX ORGANS.
|
||||
/datum/organ/internal/stack
|
||||
name = "cortical stack"
|
||||
removed_type = /obj/item/organ/stack
|
||||
parent_organ = "head"
|
||||
robotic = 2
|
||||
vital = 1
|
||||
var/backup_time = 0
|
||||
var/datum/mind/backup
|
||||
|
||||
/datum/organ/internal/stack/process()
|
||||
if(owner && owner.stat != 2 && !is_broken())
|
||||
backup_time = world.time
|
||||
if(owner.mind) backup = owner.mind
|
||||
|
||||
/datum/organ/internal/stack/vox
|
||||
removed_type = /obj/item/organ/stack/vox
|
||||
|
||||
/datum/organ/internal/stack/vox/stack
|
||||
|
||||
/obj/item/organ/stack
|
||||
name = "cortical stack"
|
||||
icon_state = "brain-prosthetic"
|
||||
organ_tag = "stack"
|
||||
robotic = 2
|
||||
|
||||
/obj/item/organ/stack/vox
|
||||
name = "vox cortical stack"
|
||||
@@ -13,9 +13,9 @@
|
||||
var/parent_organ = "chest"
|
||||
var/robotic = 0 //For being a robot
|
||||
var/removed_type //When removed, forms this object.
|
||||
var/list/transplant_data // Blood DNA and colour of donor
|
||||
var/rejecting // Is this organ already being rejected?
|
||||
|
||||
var/obj/item/organ/organ_holder // If not in a body, held in this item.
|
||||
var/list/transplant_data
|
||||
/datum/organ/internal/proc/rejuvenate()
|
||||
damage=0
|
||||
|
||||
@@ -275,5 +275,6 @@
|
||||
if(istype(removed_organ))
|
||||
removed_organ.organ_data = src
|
||||
removed_organ.update()
|
||||
organ_holder = removed_organ
|
||||
|
||||
return removed_organ
|
||||
@@ -94,7 +94,7 @@ datum
|
||||
|
||||
|
||||
blood
|
||||
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null)
|
||||
data = new/list("donor"=null,"viruses"=null,"species"="Human","blood_DNA"=null,"blood_type"=null,"blood_colour"= "#A10808","resistances"=null,"trace_chem"=null, "antibodies" = null)
|
||||
name = "Blood"
|
||||
id = "blood"
|
||||
reagent_state = LIQUID
|
||||
|
||||
@@ -404,12 +404,19 @@
|
||||
|
||||
if(istype(O))
|
||||
|
||||
if(!O.organ_data.transplant_data)
|
||||
var/datum/reagent/blood/transplant_blood = O.reagents.reagent_list["blood"]
|
||||
if(!transplant_blood)
|
||||
O.organ_data.transplant_data = list()
|
||||
O.organ_data.transplant_data["species"] = target.species.name
|
||||
O.organ_data.transplant_data["species"] = target.species.name
|
||||
O.organ_data.transplant_data["blood_type"] = target.dna.b_type
|
||||
O.organ_data.transplant_data["blood_DNA"] = target.dna.unique_enzymes
|
||||
O.organ_data.transplant_data["blood_DNA"] = target.dna.unique_enzymes
|
||||
else
|
||||
O.organ_data.transplant_data = list()
|
||||
O.organ_data.transplant_data["species"] = transplant_blood.data["species"]
|
||||
O.organ_data.transplant_data["blood_type"] = transplant_blood.data["blood_type"]
|
||||
O.organ_data.transplant_data["blood_DNA"] = transplant_blood.data["blood_DNA"]
|
||||
|
||||
O.organ_data.organ_holder = null
|
||||
O.organ_data.owner = target
|
||||
target.internal_organs |= O.organ_data
|
||||
affected.internal_organs |= O.organ_data
|
||||
|
||||
Reference in New Issue
Block a user