Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Larva surge is limited by marines/xenos ratio #3592

Merged
merged 16 commits into from
Jun 27, 2023
5 changes: 5 additions & 0 deletions code/modules/cm_aliens/structures/special/pylon_core.dm
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,14 @@
if(linked_hive.hijack_burrowed_surge && (last_surge_time + surge_cooldown) < world.time)
last_surge_time = world.time
linked_hive.stored_larva++
linked_hive.hijack_burrowed_left--
announce_dchat("The hive has gained another burrowed larva! Use the Join As Xeno verb to take it.", src)
if(surge_cooldown > 30 SECONDS) //mostly for sanity purposes
surge_cooldown = surge_cooldown - surge_incremental_reduction //ramps up over time
if(linked_hive.hijack_burrowed_surge && linked_hive.hijack_burrowed_left < 1)
ihatethisengine marked this conversation as resolved.
Show resolved Hide resolved
linked_hive.hijack_burrowed_surge = FALSE
xeno_message(SPAN_XENOANNOUNCE("Hive surge is fading away. You will no longer gain burrowed larva over time."), 3, linked_hive.hivenumber)
ihatethisengine marked this conversation as resolved.
Show resolved Hide resolved


// Hive core can repair itself over time
if(health < maxhealth && last_healed <= world.time)
Expand Down
14 changes: 14 additions & 0 deletions code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,8 @@
var/larva_gestation_multiplier = 1
var/bonus_larva_spawn_chance = 1
var/hijack_burrowed_surge = FALSE //at hijack, start spawning lots of burrowed
/// how many burrowed is going to spawn during larva surge
var/hijack_burrowed_left = 0

var/ignore_slots = FALSE
var/dynamic_evolution = TRUE
Expand Down Expand Up @@ -907,7 +909,19 @@
for(var/obj/item/alien_embryo/embryo in potential_host)
embryo.hivenumber = XENO_HIVE_FORSAKEN
potential_host.update_med_icon()
var/shipside_humans_count = 0
var/xenos_count = 0
for(var/mob/living/carbon/human/current_human as anything in GLOB.alive_human_list)
if(isspecieshuman(current_human) || isspeciessynth(current_human))
var/turf/turf = get_turf(current_human)
if(is_mainship_level(turf?.z))
shipside_humans_count++
for(var/mob/living/carbon/xenomorph/xenomorph as anything in totalXenos)
Drulikar marked this conversation as resolved.
Show resolved Hide resolved
if(isfacehugger(xenomorph))
continue
xenos_count++
hijack_burrowed_surge = TRUE
Drulikar marked this conversation as resolved.
Show resolved Hide resolved
hijack_burrowed_left = max(n_ceil(shipside_humans_count * 0.5) - xenos_count, 5)
Drulikar marked this conversation as resolved.
Show resolved Hide resolved
hivecore_cooldown = FALSE
xeno_message(SPAN_XENOBOLDNOTICE("The weeds have recovered! A new hive core can be built!"),3,hivenumber)

Expand Down