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:
Mechoid
2019-01-28 19:24:02 -08:00
committed by Anewbe
parent 158d8d3400
commit 83fc6b51e0
13 changed files with 886 additions and 230 deletions

View File

@@ -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