diff --git a/code/game/objects/structures/alien/egg.dm b/code/game/objects/structures/alien/egg.dm index 4e8b00812fc..c16c1a182e8 100644 --- a/code/game/objects/structures/alien/egg.dm +++ b/code/game/objects/structures/alien/egg.dm @@ -16,17 +16,24 @@ processing_objects -= src ..() +/obj/structure/alien/egg/CanUseTopic(var/mob/user) + return isobserver(user) ? STATUS_INTERACTIVE : STATUS_CLOSE + +/obj/structure/alien/egg/Topic(href, href_list) + if(..()) + return 1 + + if(href_list["spawn"]) + attack_ghost(usr) + /obj/structure/alien/egg/process() - if(progress < MAX_PROGRESS) - progress++ - if(progress == MAX_PROGRESS) - for(var/mob/M in dead_mob_list) - if(istype(M,/mob/dead) && M.client && M.client.prefs && (M.client.prefs.be_special & BE_ALIEN)) - M << "An alien egg is ready to hatch!" // Todo add a JUMP link. + progress++ + if(progress >= MAX_PROGRESS) + for(var/mob/M in dead_mob_list) + if(istype(M,/mob/dead) && M.client && M.client.prefs && (M.client.prefs.be_special & BE_ALIEN)) + M << "An alien is ready to hatch! ([ghost_follow_link(src, M)]) (spawn)" + processing_objects -= src update_icon() - return - // Max progress, cancel processing. - processing_objects -= src /obj/structure/alien/egg/update_icon() if(progress == -1) @@ -37,8 +44,6 @@ icon_state = "egg" /obj/structure/alien/egg/attack_ghost(var/mob/dead/observer/user) - - if(progress == -1) //Egg has been hatched. return @@ -88,4 +93,4 @@ desc += " This one has hatched." update_icon() -#undef MAX_PROGRESS \ No newline at end of file +#undef MAX_PROGRESS diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 5d3915c7fd8..8804ce77811 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -91,11 +91,14 @@ var/global/list/image/ghost_sightless_images = list() //this is a list of images /mob/dead/observer/Topic(href, href_list) if (href_list["track"]) - var/mob/target = locate(href_list["track"]) in mob_list - if(target) - ManualFollow(target) - - + if(istype(href_list["track"],/mob)) + var/mob/target = locate(href_list["track"]) in mob_list + if(target) + ManualFollow(target) + else + var/atom/target = locate(href_list["track"]) + if(istype(target)) + ManualFollow(target) /mob/dead/attackby(obj/item/W, mob/user) if(istype(W,/obj/item/weapon/book/tome)) @@ -320,7 +323,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(following && following == target) return following = target - src << "Now following [target]" + src << "Now following \the [target]" if(ismob(target)) forceMove(get_turf(target)) var/mob/M = target diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 814b5f07054..5ca32e24d0e 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -7,7 +7,7 @@ var/turf/T = get_turf(src) var/obj/effect/plant/plant = locate() in T - if(environment.gas["phoron"] > 0 || (plant && plant.seed && plant.seed.name == "xenophage")) + if(environment.gas["phoron"] > 0 || (plant && plant.seed.type == /datum/seed/xenomorph)) update_progression() adjustBruteLoss(-1) adjustFireLoss(-1)