From 97073e65ce605eae12c2bafdae28d523e4b2868a Mon Sep 17 00:00:00 2001 From: jimmyl <70376633+mc-oofert@users.noreply.github.com> Date: Fri, 17 Mar 2023 00:01:51 +0100 Subject: [PATCH] Stabilized gold extracts can now summon basicmobs (#74020) ## About The Pull Request Stabilized gold extracts can now summon basicmobs, Also, summoned familiars become friendly to the owner, which stops stuff like mice running away. ## Why It's Good For The Game They can now make cool basicmob carp and stuff Fixes #74008 ## Changelog :cl: fix: Stabilized gold extracts can now spawn basicmobs /:cl: --- .../xenobiology/crossbreeding/_status_effects.dm | 7 ++++++- .../research/xenobiology/crossbreeding/stabilized.dm | 11 ++++++----- code/modules/unit_tests/spawn_mobs.dm | 10 ++++++---- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index b0b5cc6ca44..cc62a7a7fd0 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -1025,7 +1025,12 @@ if(QDELETED(familiar)) familiar = new linked.mob_type(get_turf(owner.loc)) familiar.name = linked.mob_name - familiar.del_on_death = TRUE + if(isanimal(familiar)) + familiar.del_on_death = TRUE + else //we are a basicmob otherwise + var/mob/living/basic/basic_familiar = familiar + basic_familiar.basic_mob_flags |= DEL_ON_DEATH + familiar.befriend(owner) familiar.copy_languages(owner, LANGUAGE_MASTER) if(linked.saved_mind) linked.saved_mind.transfer_to(familiar) diff --git a/code/modules/research/xenobiology/crossbreeding/stabilized.dm b/code/modules/research/xenobiology/crossbreeding/stabilized.dm index b5665e3eb54..0584927c647 100644 --- a/code/modules/research/xenobiology/crossbreeding/stabilized.dm +++ b/code/modules/research/xenobiology/crossbreeding/stabilized.dm @@ -130,11 +130,12 @@ Stabilized extracts: /obj/item/slimecross/stabilized/gold/proc/generate_mobtype() var/static/list/mob_spawn_pets = list() if(!length(mob_spawn_pets)) - for(var/T in typesof(/mob/living/simple_animal)) - var/mob/living/simple_animal/SA = T - switch(initial(SA.gold_core_spawnable)) - if(FRIENDLY_SPAWN) - mob_spawn_pets += T + for(var/mob/living/simple_animal/animal as anything in subtypesof(/mob/living/simple_animal)) + if(initial(animal.gold_core_spawnable) == FRIENDLY_SPAWN) + mob_spawn_pets += animal + for(var/mob/living/basic/basicanimal as anything in subtypesof(/mob/living/basic)) + if(initial(basicanimal.gold_core_spawnable) == FRIENDLY_SPAWN) + mob_spawn_pets += basicanimal mob_type = pick(mob_spawn_pets) /obj/item/slimecross/stabilized/gold/Initialize(mapload) diff --git a/code/modules/unit_tests/spawn_mobs.dm b/code/modules/unit_tests/spawn_mobs.dm index f14d14eb431..0689645ec99 100644 --- a/code/modules/unit_tests/spawn_mobs.dm +++ b/code/modules/unit_tests/spawn_mobs.dm @@ -2,7 +2,9 @@ /datum/unit_test/spawn_mobs /datum/unit_test/spawn_mobs/Run() - for(var/_animal in typesof(/mob/living/simple_animal)) - var/mob/living/simple_animal/animal = _animal - if (initial(animal.gold_core_spawnable) == HOSTILE_SPAWN || initial(animal.gold_core_spawnable) == FRIENDLY_SPAWN) - allocate(_animal) + for(var/mob/living/simple_animal/animal as anything in subtypesof(/mob/living/simple_animal)) + if (initial(animal.gold_core_spawnable)) + allocate(animal) + for(var/mob/living/basic/basic_animal as anything in subtypesof(/mob/living/basic)) + if (initial(basic_animal.gold_core_spawnable)) + allocate(basic_animal)