diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 99183b749ce..4887bc1437f 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -310,11 +310,12 @@ var/global/list/rockTurfEdgeCache /turf/simulated/floor/plating/asteroid/airless/cave var/length = 100 - var/mob_spawn_list = list("Goldgrub" = 1, "Goliath" = 5, "Basilisk" = 4, "Hivelord" = 3) + var/mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goldgrub = 1, /mob/living/simple_animal/hostile/asteroid/goliath = 5, /mob/living/simple_animal/hostile/asteroid/basilisk = 4, /mob/living/simple_animal/hostile/asteroid/hivelord = 3) var/sanity = 1 turf_type = /turf/simulated/floor/plating/asteroid/airless /turf/simulated/floor/plating/asteroid/airless/cave/volcanic + mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goldgrub = 1, /mob/living/simple_animal/hostile/asteroid/goliath/beast = 5, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 4, /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 3) turf_type = /turf/simulated/floor/plating/asteroid/basalt/lava_land_surface oxygen = 14 nitrogen = 23 @@ -399,15 +400,7 @@ var/global/list/rockTurfEdgeCache if(istype(A, /mob/living/simple_animal/hostile/asteroid)) return var/randumb = pickweight(mob_spawn_list) - switch(randumb) - if("Goliath") - new /mob/living/simple_animal/hostile/asteroid/goliath(T) - if("Goldgrub") - new /mob/living/simple_animal/hostile/asteroid/goldgrub(T) - if("Basilisk") - new /mob/living/simple_animal/hostile/asteroid/basilisk(T) - if("Hivelord") - new /mob/living/simple_animal/hostile/asteroid/hivelord(T) + new randumb(T) return /turf/simulated/mineral/attackby(obj/item/weapon/pickaxe/P, mob/user, params) 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 d77317efd63..6203d75c696 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -1,7 +1,6 @@ /mob/living/simple_animal/hostile/asteroid/ vision_range = 2 atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - unsuitable_atmos_damage = 15 faction = list("mining") environment_smash = 2 minbodytemp = 0 @@ -219,10 +218,11 @@ loot = list(/obj/item/organ/internal/hivelord_core) var/next_brood = 0 var/brood_cooldown = 20 + var/brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood /mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(the_target) if(world.time >= next_brood) - var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new brood_type(src.loc) A.GiveTarget(target) A.friends = friends A.faction = faction @@ -351,6 +351,7 @@ anchored = 1 //Stays anchored until death as to be unpullable mob_size = MOB_SIZE_LARGE var/pre_attack = 0 + var/pre_attack_icon = "Goliath_preattack" loot = list(/obj/item/asteroid/goliath_hide{layer = 4.1}) /mob/living/simple_animal/hostile/asteroid/goliath/Life() @@ -362,7 +363,7 @@ pre_attack++ if(!pre_attack || stat || AIStatus == AI_IDLE) return - icon_state = "Goliath_preattack" + icon_state = pre_attack_icon /mob/living/simple_animal/hostile/asteroid/goliath/revive(full_heal = 0, admin_revive = 0) if(..()) @@ -408,7 +409,7 @@ if(istype(turftype, /turf/simulated/mineral)) var/turf/simulated/mineral/M = turftype M.gets_drilled() - spawn(20) + spawn(10) Trip() /obj/effect/goliath_tentacle/original @@ -485,7 +486,6 @@ else if(bodytemperature > maxbodytemp) adjustBruteLoss(20) - /mob/living/simple_animal/hostile/asteroid/fugu name = "wumborian fugu" desc = "The wumborian fugu rapidly increases its body mass in order to ward off its prey. Great care should be taken to avoid it while it's in this state as it is nearly invincible, but it cannot maintain its form forever." @@ -611,3 +611,127 @@ A.environment_smash += 2 user << "You increase the size of [A], giving it a surge of strength!" qdel(src) + +/////////////////////Lavaland + +//Watcher + +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher + name = "watcher" + desc = "Its stare causes victims to freeze from the inside." + icon = 'icons/mob/lavaland/watcher.dmi' + icon_state = "watcher" + icon_living = "watcher" + icon_aggro = "watcher" + icon_dead = "Basilisk_dead" + ranged_cooldown_cap = 20 + throw_message = "bounces harmlessly off of" + vision_range = 5 + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "stares into the soul of" + a_intent = "harm" + speak_emote = list("telepathically cries") + attack_sound = 'sound/weapons/bladeslice.ogg' + ranged_cooldown_cap = 3 + aggro_vision_range = 9 + idle_vision_range = 5 + stat_attack = 1 + robust_searching = 1 + loot = list(/obj/item/weapon/ore/diamond{layer = 4.1}, + /obj/item/weapon/ore/diamond{layer = 4.1}) + + +//Goliath + +/mob/living/simple_animal/hostile/asteroid/goliath/beast + name = "goliath" + desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "goliath" + icon_living = "goliath" + icon_aggro = "goliath" + icon_dead = "goliath_dead" + throw_message = "does nothing to the touch hide of the" + pre_attack_icon = "goliath2" + loot = list(/obj/item/asteroid/goliath_hide{layer = 4.1}) + stat_attack = 1 + robust_searching = 1 + +//Legion + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion + name = "legion" + desc = "You can still see what was once a human under the shifting mass of corruption." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "legion" + icon_living = "legion" + icon_aggro = "legion" + icon_dead = "legion" + icon_gib = "syndicate_gib" + melee_damage_lower = 15 + melee_damage_upper = 15 + attacktext = "lashes out at" + speak_emote = list("echoes") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "bounces harmlessly off of" + loot = list(/obj/item/organ/internal/hivelord_core/legion) + brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion + del_on_death = 1 + stat_attack = 1 + robust_searching = 1 + var/mob/living/carbon/human/stored_mob + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/death(gibbed) + visible_message("[src] wails as in anger as they are driven from their form!") + if(stored_mob) + stored_mob.loc = get_turf(src) + else + new /obj/effect/mob_spawn/human/corpse(get_turf(src)) + ..(gibbed) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion + name = "legion" + desc = "One of many." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "legion_head" + icon_living = "legion_head" + icon_aggro = "legion_head" + icon_dead = "legion_head" + icon_gib = "syndicate_gib" + move_to_delay = 1 + friendly = "buzzes near" + vision_range = 10 + speed = 1 + maxHealth = 1 + health = 5 + harm_intent_damage = 5 + melee_damage_lower = 12 + melee_damage_upper = 12 + attacktext = "bites" + speak_emote = list("echoes") + attack_sound = 'sound/weapons/pierce.ogg' + throw_message = "is shrugged off by" + pass_flags = PASSTABLE + del_on_death = 1 + stat_attack = 1 + robust_searching = 1 + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life() + if(isturf(src.loc)) + for(var/mob/living/carbon/human/H in view(src,1)) //Only for corpse right next to/on same tile + if(H.stat == UNCONSCIOUS) + visible_message("[src.name] burrows into the flesh of [H]!") + var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = new(H.loc) + visible_message("[L] staggers to their feet!") + H.death() + L.stored_mob = H + H.loc = L + qdel(src) + ..() + +/obj/item/organ/internal/hivelord_core/legion + name = "legion's heart" + desc = "A demonic, still beating heart... its healing properties will soon become inert if not used quickly." + icon = 'icons/obj/surgery.dmi' + icon_state = "demon_heart" \ No newline at end of file diff --git a/icons/mob/lavaland/lavaland_monsters.dmi b/icons/mob/lavaland/lavaland_monsters.dmi new file mode 100644 index 00000000000..5910b3180ad Binary files /dev/null and b/icons/mob/lavaland/lavaland_monsters.dmi differ diff --git a/icons/mob/lavaland/watcher.dmi b/icons/mob/lavaland/watcher.dmi new file mode 100644 index 00000000000..23960478b39 Binary files /dev/null and b/icons/mob/lavaland/watcher.dmi differ