From da8d8effb537794b90d06a883eab7fe3da747501 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Thu, 12 May 2016 11:00:46 +0100 Subject: [PATCH 1/2] [s] Golems target Free Golem ship when jaunting --- code/__HELPERS/mobs.dm | 22 +++++++++++++++++++-- code/modules/mining/equipment_locker.dm | 26 ++++++++++++++++++++----- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 43f136615be..bf25bc12dac 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -319,9 +319,27 @@ Proc for attack log creation, because really why not if(progbar) qdel(progbar) -/proc/isabductor(A) +/proc/is_species(A, species_datum) . = FALSE if(ishuman(A)) var/mob/living/carbon/human/H = A - if(H.dna && istype(H.dna.species, /datum/species/abductor)) + if(H.dna && istype(H.dna.species, species_datum)) . = TRUE + +/proc/isabductor(A) + . = is_species(A, /datum/species/abductor) + +/proc/isgolem(A) + . = is_species(A, /datum/species/golem) + +/proc/islizard(A) + . = is_species(A, /datum/species/lizard) + +/proc/isplasmaman(A) + . = is_species(A, /datum/species/plasmaman) + +/proc/ispodperson(A) + . = is_species(A, /datum/species/pod) + +/proc/isflyperson(A) + . = is_species(A, /datum/species/fly) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 5726f1f1880..47b291d5152 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -515,15 +515,31 @@ return FALSE return TRUE +/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) + var/list/destinations = list() + + if(isgolem(user)) + for(var/obj/item/device/radio/beacon/B in world) + var/turf/T = get_turf(B) + if(istype(T.loc, /area/ruin/powered/golem_ship)) + destinations += B + + // In the event golem beacon is destroyed, send to station instead + if(destinations.len) + return destinations + + for(var/obj/item/device/radio/beacon/B in world) + var/turf/T = get_turf(B) + if(T.z == ZLEVEL_STATION) + destinations += B + + return destinations + /obj/item/device/wormhole_jaunter/proc/activate(mob/user) if(!turf_check(user)) return - var/list/L = list() - for(var/obj/item/device/radio/beacon/B in world) - var/turf/T = get_turf(B) - if(T.z == ZLEVEL_STATION) - L += B + var/list/L = get_destinations(user) if(!L.len) user << "The [src.name] found no beacons in the world to anchor a wormhole to." return From c9b821ce232166f67a6b6142ea93c17b28e7689b Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Fri, 13 May 2016 14:18:52 +0100 Subject: [PATCH 2/2] Moves is[subspecies] to is_helpers --- code/__DEFINES/is_helpers.dm | 10 +++++++++- code/__HELPERS/mobs.dm | 18 ------------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index b8cebfbf271..7daf7eeaf3c 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -8,6 +8,14 @@ #define ishuman(A) (istype(A, /mob/living/carbon/human)) +// Human sub-species +#define isabductor(A) (is_species(A, /datum/species/abductor)) +#define isgolem(A) (is_species(A, /datum/species/golem)) +#define islizard(A) (is_species(A, /datum/species/lizard)) +#define isplasmaman(A) (is_species(A, /datum/species/plasmaman)) +#define ispodperson(A) (is_species(A, /datum/species/podperson)) +#define isflyperson(A) (is_species(A, /datum/species/fly)) + #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) #define isbrain(A) (istype(A, /mob/living/carbon/brain)) @@ -80,4 +88,4 @@ #define issignaler(O) (istype(O, /obj/item/device/assembly/signaler)) -#define istimer(O) (istype(O, /obj/item/device/assembly/timer)) \ No newline at end of file +#define istimer(O) (istype(O, /obj/item/device/assembly/timer)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index bf25bc12dac..5fc6b1400d6 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -325,21 +325,3 @@ Proc for attack log creation, because really why not var/mob/living/carbon/human/H = A if(H.dna && istype(H.dna.species, species_datum)) . = TRUE - -/proc/isabductor(A) - . = is_species(A, /datum/species/abductor) - -/proc/isgolem(A) - . = is_species(A, /datum/species/golem) - -/proc/islizard(A) - . = is_species(A, /datum/species/lizard) - -/proc/isplasmaman(A) - . = is_species(A, /datum/species/plasmaman) - -/proc/ispodperson(A) - . = is_species(A, /datum/species/pod) - -/proc/isflyperson(A) - . = is_species(A, /datum/species/fly)