diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 41daac53aab..a78c58d7df2 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -243,6 +243,7 @@ actions_types = list(/datum/action/item_action/organ_action/use) var/inert = 0 var/preserved = 0 + var/list/spawned_brood = list() /obj/item/organ/hivelord_core/New() ..() @@ -272,13 +273,56 @@ update_icon() /obj/item/organ/hivelord_core/ui_action_click() - owner.revive(full_heal = 1) - qdel(src) + var/spawn_amount = 1 + if(!inert) + spawn_amount++ + + for(var/a in spawned_brood) + if(!istype(a, /mob/living/simple_animal/hostile/asteroid/hivelordbrood) || qdeleted(a)) + spawned_brood -= a + continue + spawn_amount -= spawned_brood.len + + for(var/i = 1 to spawn_amount) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/B = new (owner.loc) + B.link_host(owner) + spawned_brood |= B + /obj/item/organ/hivelord_core/on_life() ..() - if(owner.health < HEALTH_THRESHOLD_CRIT) - ui_action_click() + if(owner) + owner.adjustBruteLoss(-1) + owner.adjustFireLoss(-1) + owner.adjustOxyLoss(-2) + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + CHECK_DNA_AND_SPECIES(H) + if(NOBLOOD in H.dna.species.specflags) + return + + if(H.blood_volume && H.blood_volume < BLOOD_VOLUME_NORMAL) + H.blood_volume += 2 // Fast blood regen + +/obj/item/organ/hivelord_core/afterattack(atom/target, mob/user, proximity_flag) + if(proximity_flag && ishuman(target)) + var/mob/living/carbon/human/H = target + if(inert) + user << "[src] has become inert, its healing properties are no more." + return + else + if(H.stat == DEAD) + user << "[src] are useless on the dead." + return + if(H != user) + H.visible_message("[user] forces [H] to apply [src]... they quickly regenerate all injuries!") + feedback_add_details("hivelord_core","[src.type]|used|other") + else + user << "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments." + feedback_add_details("hivelord_core","[src.type]|used|self") + H.revive(full_heal = 1) + qdel(src) + ..() /obj/item/organ/hivelord_core/prepare_eat() return null