From 989a2c87d2ad21216e2e616e614d0665a44eea7e Mon Sep 17 00:00:00 2001 From: moxian Date: Sun, 24 Jul 2022 08:56:38 +0000 Subject: [PATCH] Xenos are Initialize (#18333) * Xenos are Initialize * Remove the confusing debug leftover --- code/modules/mob/living/carbon/alien/alien.dm | 24 ++++++++++++------- .../carbon/alien/humanoid/caste/drone.dm | 18 +++++++++----- .../carbon/alien/humanoid/caste/hunter.dm | 11 +++++---- .../carbon/alien/humanoid/caste/sentinel.dm | 17 ++++++++----- .../living/carbon/alien/humanoid/empress.dm | 19 +++++++++------ .../mob/living/carbon/alien/humanoid/queen.dm | 19 +++++++++------ .../mob/living/carbon/alien/larva/larva.dm | 10 +++++--- 7 files changed, 77 insertions(+), 41 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 7f7d04e4bb9..24d245eae68 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -20,20 +20,28 @@ var/heat_protection = 0.5 var/leaping = FALSE ventcrawler = 2 - var/list/alien_organs = list() var/death_message = "lets out a waning guttural screech, green blood bubbling from its maw..." var/death_sound = 'sound/voice/hiss6.ogg' -/mob/living/carbon/alien/New() - ..() +/mob/living/carbon/alien/Initialize(mapload) + . = ..() create_reagents(1000) verbs += /mob/living/verb/mob_sleep verbs += /mob/living/verb/rest - alien_organs += new /obj/item/organ/internal/brain/xeno - alien_organs += new /obj/item/organ/internal/xenos/hivenode - alien_organs += new /obj/item/organ/internal/ears - for(var/obj/item/organ/internal/I in alien_organs) - I.insert(src) + + for(var/organ_path in get_caste_organs()) + var/obj/item/organ/internal/organ = new organ_path() + organ.insert(src) + +/// returns the list of type paths of the organs that we need to insert into +/// this particular xeno upon its creation +/mob/living/carbon/alien/proc/get_caste_organs() + RETURN_TYPE(/list/obj/item/organ/internal) + return list( + /obj/item/organ/internal/brain/xeno, + /obj/item/organ/internal/xenos/hivenode, + /obj/item/organ/internal/ears + ) /mob/living/carbon/alien/get_default_language() if(default_language) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 5219d3dbed0..1ccaffab58d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -5,14 +5,20 @@ health = 100 icon_state = "aliend_s" -/mob/living/carbon/alien/humanoid/drone/New() +/mob/living/carbon/alien/humanoid/drone/Initialize(mapload) + . = ..() if(src.name == "alien drone") - src.name = text("alien drone ([rand(1, 1000)])") + src.name = "alien drone ([rand(1, 1000)])" src.real_name = src.name - alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/drone - alien_organs += new /obj/item/organ/internal/xenos/acidgland - alien_organs += new /obj/item/organ/internal/xenos/resinspinner - ..() + +/mob/living/carbon/alien/humanoid/drone/get_caste_organs() + . = ..() + . += list( + /obj/item/organ/internal/xenos/plasmavessel/drone, + /obj/item/organ/internal/xenos/acidgland, + /obj/item/organ/internal/xenos/resinspinner, + ) + //Drones use the same base as generic humanoids. //Drone verbs diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 64e1d280b2c..a96cc148fba 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -5,12 +5,15 @@ health = 125 icon_state = "alienh_s" -/mob/living/carbon/alien/humanoid/hunter/New() +/mob/living/carbon/alien/humanoid/hunter/Initialize(mapload) + . = ..() if(name == "alien hunter") - name = text("alien hunter ([rand(1, 1000)])") + name = "alien hunter ([rand(1, 1000)])" real_name = name - alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/hunter - ..() + +/mob/living/carbon/alien/humanoid/hunter/get_caste_organs() + . = ..() + . += /obj/item/organ/internal/xenos/plasmavessel/hunter /mob/living/carbon/alien/humanoid/hunter/movement_delay() . = -1 //hunters are sanic diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 314cd20d2c9..d874006f2a2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -32,14 +32,19 @@ for(var/image/I in overlays_standing) overlays += I -/mob/living/carbon/alien/humanoid/sentinel/New() +/mob/living/carbon/alien/humanoid/sentinel/Initialize(mapload) + . = ..() if(name == "alien sentinel") - name = text("alien sentinel ([rand(1, 1000)])") + name = "alien sentinel ([rand(1, 1000)])" real_name = name - alien_organs += new /obj/item/organ/internal/xenos/plasmavessel - alien_organs += new /obj/item/organ/internal/xenos/acidgland - alien_organs += new /obj/item/organ/internal/xenos/neurotoxin - ..() + +/mob/living/carbon/alien/humanoid/sentinel/get_caste_organs() + . = ..() + . += list( + /obj/item/organ/internal/xenos/plasmavessel, + /obj/item/organ/internal/xenos/acidgland, + /obj/item/organ/internal/xenos/neurotoxin, + ) /* /mob/living/carbon/alien/humanoid/sentinel/verb/evolve() // -- TLE diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm index 59f725f987a..3b6094f90c3 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm @@ -30,7 +30,8 @@ for(var/image/I in overlays_standing) overlays += I -/mob/living/carbon/alien/humanoid/empress/New() +/mob/living/carbon/alien/humanoid/empress/Initialize(mapload) + . = ..() //there should only be one queen for(var/mob/living/carbon/alien/humanoid/empress/E in GLOB.alive_mob_list) if(E == src) @@ -42,12 +43,16 @@ break real_name = name - alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/queen - alien_organs += new /obj/item/organ/internal/xenos/acidgland - alien_organs += new /obj/item/organ/internal/xenos/eggsac - alien_organs += new /obj/item/organ/internal/xenos/resinspinner - alien_organs += new /obj/item/organ/internal/xenos/neurotoxin - ..() + +/mob/living/carbon/alien/humanoid/empress/get_caste_organs() + . = ..() + . += list( + /obj/item/organ/internal/xenos/plasmavessel/queen, + /obj/item/organ/internal/xenos/acidgland, + /obj/item/organ/internal/xenos/eggsac, + /obj/item/organ/internal/xenos/resinspinner, + /obj/item/organ/internal/xenos/neurotoxin, + ) /mob/living/carbon/alien/humanoid/empress/verb/lay_egg() set name = "Lay Egg (250)" diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 28df36c9d33..e8c554b92f5 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -10,7 +10,8 @@ ventcrawler = 0 pressure_resistance = 200 //Because big, stompy xenos should not be blown around like paper. -/mob/living/carbon/alien/humanoid/queen/New() +/mob/living/carbon/alien/humanoid/queen/Initialize(mapload) + . = ..() //there should only be one queen for(var/mob/living/carbon/alien/humanoid/queen/Q in GLOB.alive_mob_list) if(Q == src) @@ -22,12 +23,16 @@ break real_name = src.name - alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/queen - alien_organs += new /obj/item/organ/internal/xenos/acidgland - alien_organs += new /obj/item/organ/internal/xenos/eggsac - alien_organs += new /obj/item/organ/internal/xenos/resinspinner - alien_organs += new /obj/item/organ/internal/xenos/neurotoxin - ..() + +/mob/living/carbon/alien/humanoid/queen/get_caste_organs() + . = ..() + . += list( + /obj/item/organ/internal/xenos/plasmavessel/queen, + /obj/item/organ/internal/xenos/acidgland, + /obj/item/organ/internal/xenos/eggsac, + /obj/item/organ/internal/xenos/resinspinner, + /obj/item/organ/internal/xenos/neurotoxin, + ) /mob/living/carbon/alien/humanoid/queen/movement_delay() . = ..() diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index bcb1f4dd5de..1e45eac294f 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -16,15 +16,19 @@ death_sound = null //This is fine right now, if we're adding organ specific damage this needs to be updated -/mob/living/carbon/alien/larva/New() +/mob/living/carbon/alien/larva/Initialize(mapload) + . = ..() if(name == "alien larva") name = "alien larva ([rand(1, 1000)])" real_name = name regenerate_icons() add_language("Xenomorph") add_language("Hivemind") - alien_organs += new /obj/item/organ/internal/xenos/plasmavessel/larva - ..() + +/mob/living/carbon/alien/larva/get_caste_organs() + . = ..() + . += /obj/item/organ/internal/xenos/plasmavessel/larva + //This needs to be fixed /mob/living/carbon/alien/larva/Stat()