mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-25 17:42:26 +00:00
Adds Alien Reality pods, aka AR pods, for use in events or PoIs. (#5798)
* Fix some VR issues, add new VR issues I don't forsee. * Tweak re: Github Comments * Why * Mechoid stop being a me. * Add VR_LINK to all organs list.
This commit is contained in:
@@ -35,8 +35,11 @@ var/list/organ_cache = list()
|
||||
var/list/will_assist_languages = list()
|
||||
var/list/datum/language/assists_languages = list()
|
||||
|
||||
var/list/organ_verbs // Verbs added by the organ when present in the body.
|
||||
|
||||
/obj/item/organ/Destroy()
|
||||
|
||||
handle_organ_mod_special(TRUE)
|
||||
if(owner) owner = null
|
||||
if(transplant_data) transplant_data.Cut()
|
||||
if(autopsy_data) autopsy_data.Cut()
|
||||
@@ -80,6 +83,8 @@ var/list/organ_cache = list()
|
||||
else
|
||||
species = all_species["Human"]
|
||||
|
||||
handle_organ_mod_special()
|
||||
|
||||
/obj/item/organ/proc/set_dna(var/datum/dna/new_dna)
|
||||
if(new_dna)
|
||||
dna = new_dna.Clone()
|
||||
@@ -92,6 +97,7 @@ var/list/organ_cache = list()
|
||||
status |= ORGAN_DEAD
|
||||
damage = max_damage
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
handle_organ_mod_special(TRUE)
|
||||
if(owner && vital)
|
||||
owner.death()
|
||||
owner.can_defib = 0
|
||||
@@ -117,6 +123,8 @@ var/list/organ_cache = list()
|
||||
if(damage >= max_damage)
|
||||
die()
|
||||
|
||||
handle_organ_proc_special()
|
||||
|
||||
//Process infections
|
||||
if(robotic >= ORGAN_ROBOT || (owner && owner.species && (owner.species.flags & IS_PLANT || (owner.species.flags & NO_INFECT))))
|
||||
germ_level = 0
|
||||
@@ -221,6 +229,8 @@ var/list/organ_cache = list()
|
||||
damage = 0
|
||||
status = 0
|
||||
germ_level = 0
|
||||
if(owner)
|
||||
handle_organ_mod_special()
|
||||
if(!ignore_prosthetic_prefs && owner && owner.client && owner.client.prefs && owner.client.prefs.real_name == owner.real_name)
|
||||
var/status = owner.client.prefs.organ_data[organ_tag]
|
||||
if(status == "assisted")
|
||||
@@ -336,8 +346,11 @@ var/list/organ_cache = list()
|
||||
owner.death()
|
||||
owner.can_defib = 0
|
||||
|
||||
handle_organ_mod_special(TRUE)
|
||||
|
||||
owner = null
|
||||
|
||||
|
||||
/obj/item/organ/proc/replaced(var/mob/living/carbon/human/target,var/obj/item/organ/external/affected)
|
||||
|
||||
if(!istype(target)) return
|
||||
@@ -360,6 +373,8 @@ var/list/organ_cache = list()
|
||||
affected.internal_organs |= src
|
||||
target.internal_organs_by_name[organ_tag] = src
|
||||
|
||||
handle_organ_mod_special()
|
||||
|
||||
/obj/item/organ/proc/bitten(mob/user)
|
||||
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
@@ -399,4 +414,32 @@ var/list/organ_cache = list()
|
||||
return 0
|
||||
if(robotic && robotic < ORGAN_LIFELIKE) //Super fancy humanlike robotics probably have sensors, or something?
|
||||
return 0
|
||||
return 1
|
||||
return 1
|
||||
|
||||
/obj/item/organ/proc/handle_organ_mod_special(var/removed = FALSE) // Called when created, transplanted, and removed.
|
||||
if(!istype(owner))
|
||||
return
|
||||
|
||||
var/list/save_verbs = list()
|
||||
|
||||
if(removed && organ_verbs) // Do we share verbs with any other organs? Are they functioning?
|
||||
var/list/all_organs = list()
|
||||
all_organs |= owner.organs
|
||||
all_organs |= owner.internal_organs
|
||||
|
||||
for(var/obj/item/organ/O in all_organs)
|
||||
if(O.status & ORGAN_DEAD && O.organ_verbs)
|
||||
for(var/verb_type in O.organ_verbs)
|
||||
if(verb_type in organ_verbs)
|
||||
save_verbs |= verb_type
|
||||
|
||||
if(!removed && organ_verbs)
|
||||
for(var/verb_path in organ_verbs)
|
||||
owner.verbs |= verb_path
|
||||
else if(organ_verbs)
|
||||
for(var/verb_path in organ_verbs)
|
||||
owner.verbs -= verb_path
|
||||
return
|
||||
|
||||
/obj/item/organ/proc/handle_organ_proc_special() // Called when processed.
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user