Using ghost chat follow on any atom/movable object will let you follow
that object
Ghost follow changed for AI - again, works for real this time pls beleive
me
Fixes #2006, Morgue recursively deletes contents now
Fixes #2282, alien reagents work for the first time, wow nice smooth gas
the vox
This commit is contained in:
clusterfack
2015-02-16 16:39:02 -06:00
parent 9913788b50
commit 7b94c934dc
5 changed files with 17 additions and 15 deletions

View File

@@ -310,7 +310,8 @@
return
else
if(!isemptylist(src.search_contents_for(/obj/item/weapon/disk/nuclear)))
var/inside = src.search_contents_for(/atom)
if(is_type_in_list(/obj/item/weapon/disk/nuclear, inside))
usr << "You get the feeling that you shouldn't cremate one of the items in the cremator."
return
@@ -320,7 +321,7 @@
cremating = 1
locked = 1
for(var/mob/living/M in contents)
for(var/mob/living/M in inside)
if (M.stat!=2)
M.emote("scream",,, 1)
//Logging for this causes runtimes resulting in the cremator locking up. Commenting it out until that's figured out.
@@ -331,7 +332,7 @@
M.ghostize()
del(M)
for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up
for(var/obj/O in inside) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up
del(O)
new /obj/effect/decal/cleanable/ash(src)

View File

@@ -469,9 +469,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/list/mobs = getmobs()
var/input = input("Please, select a mob!", "Haunt", null, null) as null|anything in mobs
var/mob/target = mobs[input]
if(istype(target,/mob/living/silicon/ai))
var/mob/living/silicon/ai/M = target
target = M.eyeobj
ManualFollow(target)
// This is the ghost's follow verb with an argument
@@ -787,10 +784,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
..()
if (href_list["follow"])
var/mob/target = locate(href_list["follow"]) in mob_list
var/target = locate(href_list["follow"])
if(following == target) return
var/mob/A = usr;
A << "You are now following [target]"
//var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
if(istype(target,/mob/living/silicon/ai))
var/mob/living/silicon/ai/M = target
target = M.eyeobj
if(target && target != usr)
following = target
spawn(0)

View File

@@ -1008,10 +1008,11 @@ var/global/list/organ_damage_overlays = list(
if(reagents)
var/alien = 0 //Not the best way to handle it, but neater than checking this for every single reagent proc.
if(species && species.name == "Diona")
alien = 1
else if(species && species.name == "Vox")
alien = 2
if(src.species)
switch(src.species.type)
if(/datum/species/diona) alien = 1
if(/datum/species/vox) alien = 2
if(/datum/species/plasmaman) alien = 3
reagents.metabolize(src,alien)
var/total_plasmaloss = 0

View File

@@ -261,11 +261,11 @@ datum
return total_transfered
*/
metabolize(var/mob/M)
metabolize(var/mob/M, var/alien)
for(var/A in reagent_list)
var/datum/reagent/R = A
if(M && R)
R.on_mob_life(M)
R.on_mob_life(M, alien)
update_total()
update_aerosol(var/mob/M)

View File

@@ -8,6 +8,7 @@
//Some on_mob_life() procs check for alien races.
#define IS_DIONA 1
#define IS_VOX 2
#define IS_PLASMA 3
//The reaction procs must ALWAYS set src = null, this detaches the proc from the object (the reagent)
//so that it can continue working when the reagent is deleted while the proc is still active.
@@ -76,7 +77,6 @@
return //Noticed runtime errors from pacid trying to damage ghosts, this should fix. --NEO
if( (overdose > 0) && (volume >= overdose))//Overdosing, wooo
M.adjustToxLoss(overdose_dam)
if(!holder) return
holder.remove_reagent(src.id, custom_metabolism) //By default it slowly disappears.
return