mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-14 20:23:26 +00:00
Use species for determining which organs to persist.
Also added some safety checks, and better handled digitized brains.
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/persistence/load_character(var/savefile/S)
|
/datum/category_item/player_setup_item/vore/persistence/load_character(var/savefile/S)
|
||||||
S["persistence_settings"] >> pref.persistence_settings
|
S["persistence_settings"] >> pref.persistence_settings
|
||||||
|
sanitize_character() // Don't let new characters start off with nulls
|
||||||
|
|
||||||
/datum/category_item/player_setup_item/vore/persistence/save_character(var/savefile/S)
|
/datum/category_item/player_setup_item/vore/persistence/save_character(var/savefile/S)
|
||||||
S["persistence_settings"] << pref.persistence_settings
|
S["persistence_settings"] << pref.persistence_settings
|
||||||
|
|||||||
@@ -87,9 +87,9 @@
|
|||||||
// Saves mob's current organ state to prefs.
|
// Saves mob's current organ state to prefs.
|
||||||
// This basically needs to be the reverse of /datum/category_item/player_setup_item/general/body/copy_to_mob() ~Leshana
|
// This basically needs to be the reverse of /datum/category_item/player_setup_item/general/body/copy_to_mob() ~Leshana
|
||||||
/proc/apply_organs_to_prefs(var/mob/living/carbon/human/character, var/datum/preferences/prefs)
|
/proc/apply_organs_to_prefs(var/mob/living/carbon/human/character, var/datum/preferences/prefs)
|
||||||
|
if(!istype(character) || !character.species) return
|
||||||
// Checkify the limbs!
|
// Checkify the limbs!
|
||||||
testing("in apply_organs_to_prefs([character], \ref[prefs])")
|
for(var/name in character.species.has_limbs)
|
||||||
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
|
|
||||||
var/obj/item/organ/external/O = character.organs_by_name[name]
|
var/obj/item/organ/external/O = character.organs_by_name[name]
|
||||||
if(!O)
|
if(!O)
|
||||||
prefs.organ_data[name] = "amputated"
|
prefs.organ_data[name] = "amputated"
|
||||||
@@ -103,21 +103,22 @@
|
|||||||
prefs.organ_data.Remove(name) // Misisng organ_data entry means normal
|
prefs.organ_data.Remove(name) // Misisng organ_data entry means normal
|
||||||
|
|
||||||
// Internal organs also
|
// Internal organs also
|
||||||
for(var/name in list(O_HEART,O_EYES,O_LUNGS,O_BRAIN))
|
for(var/name in character.species.has_organ)
|
||||||
var/obj/item/organ/I = character.internal_organs_by_name[name]
|
var/obj/item/organ/I = character.internal_organs_by_name[name]
|
||||||
if(I)
|
if(I)
|
||||||
if(I.robotic == ORGAN_ASSISTED)
|
if(istype(I, /obj/item/organ/internal/mmi_holder/robot))
|
||||||
|
prefs.organ_data[name] = "digital" // Need a better way to detect this special type
|
||||||
|
else if(I.robotic == ORGAN_ASSISTED)
|
||||||
prefs.organ_data[name] = "assisted"
|
prefs.organ_data[name] = "assisted"
|
||||||
else if(I.robotic == ORGAN_ROBOT)
|
else if(I.robotic >= ORGAN_ROBOT)
|
||||||
prefs.organ_data[name] = "mechanical"
|
prefs.organ_data[name] = "mechanical"
|
||||||
else if(FALSE /* TODO - Need way to detect "digital" brains! */)
|
|
||||||
prefs.organ_data[name] = "digital"
|
|
||||||
else
|
else
|
||||||
prefs.organ_data.Remove(name) // Misisng organ_data entry means normal
|
prefs.organ_data.Remove(name) // Missing organ_data entry means normal
|
||||||
|
|
||||||
// Saves mob's current body markings state to prefs.
|
// Saves mob's current body markings state to prefs.
|
||||||
// This basically needs to be the reverse of /datum/category_item/player_setup_item/general/body/copy_to_mob() ~Leshana
|
// This basically needs to be the reverse of /datum/category_item/player_setup_item/general/body/copy_to_mob() ~Leshana
|
||||||
/proc/apply_markings_to_prefs(var/mob/living/carbon/human/character, var/datum/preferences/prefs)
|
/proc/apply_markings_to_prefs(var/mob/living/carbon/human/character, var/datum/preferences/prefs)
|
||||||
|
if(!istype(character)) return
|
||||||
var/list/new_body_markings = list()
|
var/list/new_body_markings = list()
|
||||||
for(var/N in character.organs_by_name)
|
for(var/N in character.organs_by_name)
|
||||||
var/obj/item/organ/external/O = character.organs_by_name[N]
|
var/obj/item/organ/external/O = character.organs_by_name[N]
|
||||||
|
|||||||
Reference in New Issue
Block a user