Protean species

This commit is contained in:
Arokha Sieyes
2018-03-17 12:14:13 -04:00
parent bc2368a2c7
commit 2107372404
16 changed files with 1080 additions and 10 deletions
+9 -3
View File
@@ -816,7 +816,11 @@ Note that amputating the affected organ does in fact remove the infection from t
if(!cannot_amputate)
if(nonsolid && damage >= max_damage)
droplimb(DROPLIMB_BLUNT)
droplimb(true, DROPLIMB_BLUNT)
//VOREStation Add Start
if(robotic >= ORGAN_NANOFORM && damage >= max_damage)
droplimb(true, DROPLIMB_BURN)
//VOREStation Add End
/****************************************************
DISMEMBERMENT
@@ -827,8 +831,10 @@ Note that amputating the affected organ does in fact remove the infection from t
if(cannot_amputate || !owner)
return
if(disintegrate == DROPLIMB_EDGE && nonsolid)
//VOREStation Add
if(robotic >= ORGAN_NANOFORM)
disintegrate = DROPLIMB_BURN //Ashes will be fine
else if(disintegrate == DROPLIMB_EDGE && nonsolid) //VOREStation Add End
disintegrate = DROPLIMB_BLUNT //splut
switch(disintegrate)
+155
View File
@@ -0,0 +1,155 @@
// // // External Organs
/obj/item/organ/external/chest/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 50 // <-- This is different from the rest
min_broken_damage = 1000
vital = TRUE // <-- This is different from the rest
/obj/item/organ/external/groin/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 30 // <-- This is different from the rest
min_broken_damage = 1000 //Multiple
vital = FALSE
/obj/item/organ/external/head/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000 //Inheritance
vital = FALSE
/obj/item/organ/external/arm/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000 //Please
vital = FALSE
/obj/item/organ/external/arm/right/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
/obj/item/organ/external/leg/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
/obj/item/organ/external/leg/right/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
/obj/item/organ/external/hand/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
/obj/item/organ/external/hand/right/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
/obj/item/organ/external/foot/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
/obj/item/organ/external/foot/right/unbreakable/nano
robotic = ORGAN_NANOFORM
encased = FALSE
max_damage = 10
min_broken_damage = 1000
vital = FALSE
//Sideways override for nanoform limbs (ugh)
/obj/item/organ/external/robotize(var/company, var/skip_prosthetics = FALSE, var/keep_organs = FALSE)
var/original_robotic = robotic
if(original_robotic >= ORGAN_NANOFORM)
var/o_encased = encased
var/o_max_damage = max_damage
var/o_min_broken_damage = min_broken_damage
robotic = FALSE
..(company = company, keep_organs = TRUE)
robotic = original_robotic
encased = o_encased
max_damage = o_max_damage
min_broken_damage = o_min_broken_damage
else
..()
// // // Internal Organs
/obj/item/organ/internal/nano
robotic = ORGAN_ROBOT
/obj/item/organ/internal/nano/orchestrator
name = "orchestrator module"
desc = "A small computer, designed for highly parallel workloads."
icon = 'icons/mob/species/protean/protean.dmi'
icon_state = "orchestrator"
organ_tag = O_ORCH
parent_organ = BP_TORSO
vital = TRUE
/obj/item/organ/internal/nano/refactory
name = "refactory module"
desc = "A miniature metal processing unit and nanite factory."
icon = 'icons/mob/species/protean/protean.dmi'
icon_state = "refactory"
organ_tag = O_FACT
parent_organ = BP_TORSO
var/list/materials = list(DEFAULT_WALL_MATERIAL = 0)
var/max_storage = 10000
/obj/item/organ/internal/nano/refactory/proc/get_stored_material(var/material)
if(status & ORGAN_DEAD)
return 0
return materials[material] || 0
/obj/item/organ/internal/nano/refactory/proc/add_stored_material(var/material,var/amt)
if(status & ORGAN_DEAD)
return 0
var/increase = min(amt,max(max_storage-materials[material],0))
if(isnum(materials[material]))
materials[material] += increase
else
materials[material] = increase
return increase
/obj/item/organ/internal/nano/refactory/proc/use_stored_material(var/material,var/amt)
if(status & ORGAN_DEAD)
return 0
var/available = materials[material]
//Success
if(available >= amt)
var/new_amt = available-amt
if(new_amt == 0)
materials -= material
else
materials[material] = new_amt
return amt
//Failure
return 0
/obj/item/organ/internal/mmi_holder/posibrain/nano
name = "protean posibrain"
desc = "A more advanced version of the standard posibrain, typically found in protean bodies."
icon = 'icons/mob/species/protean/protean.dmi'
icon_state = "posi"
parent_organ = BP_TORSO
/obj/item/organ/internal/mmi_holder/posibrain/nano/update_from_mmi()
..()
icon = initial(icon)
icon_state = "posi1"
stored_mmi.brainmob.languages = owner.languages