diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index aceed044ba5..0321023e0f9 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -200,20 +200,24 @@ Made by Xhuis /datum/game_mode/shadowling/check_finished() var/shadows_alive = 0 //and then shadowling was kill - var/shadow_nag_messages = list("You can barely hold yourself in this lesser form!", "The urge to become something greater is overwhelming!", "You feel a burning passion to hatch free of this shell and assume godhood!") for(var/datum/mind/shadow in shadows) //but what if shadowling was not kill? - if(!istype(shadow.current,/mob/living/carbon/human) && !istype(shadow.current,/mob/living/simple_animal/ascendant_shadowling)) + if(!ishuman(shadow.current) && !istype(shadow.current,/mob/living/simple_animal/ascendant_shadowling)) continue if(shadow.current.stat == DEAD) continue - if(world.time - round_start_time > (config.shadowling_max_age * 10)) + shadows_alive++ + if(shadow.special_role == SPECIAL_ROLE_SHADOWLING && config.shadowling_max_age) if(ishuman(shadow.current)) var/mob/living/carbon/human/H = shadow.current if(!istype(H.species, /datum/species/shadow)) - H.take_overall_damage(1, 0) - to_chat(H, "[pick(shadow_nag_messages)]") - H << 'sound/weapons/sear.ogg' - shadows_alive++ + for(var/obj/effect/proc_holder/spell/targeted/shadowling_hatch/hatch_ability in shadow.spell_list) + hatch_ability.cycles_unused++ + if(!H.stunned && prob(20) && hatch_ability.cycles_unused > config.shadowling_max_age) + var/shadow_nag_messages = list("You can barely hold yourself in this lesser form!", "The urge to become something greater is overwhelming!", "You feel a burning passion to hatch free of this shell and assume godhood!") + H.take_overall_damage(0, 3) + to_chat(H, "[pick(shadow_nag_messages)]") + H << 'sound/weapons/sear.ogg' + if(shadows_alive) return ..() else diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 353fd328f4c..bc58db4b064 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -9,6 +9,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N range = -1 include_user = 1 action_icon_state = "hatch" + var/cycles_unused = 0 /obj/effect/proc_holder/spell/targeted/shadowling_hatch/cast(list/targets, mob/user = usr) if(user.stat || !ishuman(user) || !user || !is_shadow(user || isinspace(user)))