mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-31 07:57:47 +01:00
* Adds reactive teleport armor construction, ports stuff from tg to do it * Adds description to what disabled does in code * Fixes ashwalker tendril anomaly * SaberML code suggestions Co-authored-by: SabreML <57483089+SabreML@users.noreply.github.com> * True or false * Keeps reactive armors from triggering from kisses * removes stun check * oops Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> Co-authored-by: SabreML <57483089+SabreML@users.noreply.github.com> Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
92 lines
3.9 KiB
Plaintext
92 lines
3.9 KiB
Plaintext
#define ASH_WALKER_SPAWN_THRESHOLD 2
|
|
//The ash walker den consumes corpses or unconscious mobs to create ash walker eggs. For more info on those, check ghost_role_spawners.dm
|
|
/obj/structure/lavaland/ash_walker
|
|
name = "necropolis tendril nest"
|
|
desc = "A vile tendril of corruption. It's surrounded by a nest of rapidly growing eggs..."
|
|
icon = 'icons/mob/nest.dmi'
|
|
icon_state = "ash_walker_nest"
|
|
|
|
move_resist = INFINITY // just killing it tears a massive hole in the ground, let's not move it
|
|
anchored = TRUE
|
|
density = TRUE
|
|
|
|
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
|
max_integrity = 200
|
|
|
|
var/faction = list("ashwalker")
|
|
var/meat_counter = 6
|
|
|
|
/obj/structure/lavaland/ash_walker/Initialize()
|
|
. = ..()
|
|
START_PROCESSING(SSprocessing, src)
|
|
|
|
/obj/structure/lavaland/ash_walker/Destroy()
|
|
. = ..()
|
|
STOP_PROCESSING(SSprocessing, src)
|
|
|
|
/obj/structure/lavaland/ash_walker/deconstruct(disassembled)
|
|
new /obj/item/assembly/signaler/anomaly/random(get_step(loc, pick(GLOB.alldirs)))
|
|
new /obj/effect/collapse(loc)
|
|
return ..()
|
|
|
|
/obj/structure/lavaland/ash_walker/process()
|
|
consume()
|
|
spawn_mob()
|
|
|
|
/obj/structure/lavaland/ash_walker/proc/consume()
|
|
for(var/mob/living/H in view(src, 1)) //Only for corpse right next to/on same tile
|
|
if(H.stat)
|
|
visible_message("<span class='warning'>Serrated tendrils eagerly pull [H] to [src], tearing the body apart as its blood seeps over the eggs.</span>")
|
|
playsound(get_turf(src),'sound/magic/demon_consume.ogg', 100, 1)
|
|
for(var/obj/item/W in H)
|
|
if(!H.unEquip(W))
|
|
qdel(W)
|
|
if(ismegafauna(H))
|
|
meat_counter += 20
|
|
else
|
|
meat_counter++
|
|
H.gib()
|
|
obj_integrity = min(obj_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril
|
|
|
|
/obj/structure/lavaland/ash_walker/proc/spawn_mob()
|
|
if(meat_counter >= ASH_WALKER_SPAWN_THRESHOLD)
|
|
new /obj/effect/mob_spawn/human/ash_walker(get_step(loc, pick(GLOB.alldirs)))
|
|
visible_message("<span class='danger'>One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!</span>")
|
|
meat_counter -= ASH_WALKER_SPAWN_THRESHOLD
|
|
|
|
/obj/effect/mob_spawn/human/ash_walker
|
|
name = "ash walker egg"
|
|
desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within."
|
|
mob_name = "an ash walker"
|
|
icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
|
|
icon_state = "large_egg"
|
|
mob_species = /datum/species/unathi/ashwalker
|
|
outfit = /datum/outfit/ashwalker
|
|
roundstart = FALSE
|
|
death = FALSE
|
|
anchored = FALSE
|
|
move_resist = MOVE_FORCE_NORMAL
|
|
density = FALSE
|
|
death_cooldown = 300 SECONDS
|
|
important_info = "Do not leave Lavaland without admin permission. Do not attack the mining outpost without being provoked."
|
|
description = "You are an ashwalker, a native inhabitant of Lavaland. Try to survive with nothing but spears and other tribal technology. Bring dead bodies back to your tendril to create more of your kind. You are free to attack miners and other outsiders."
|
|
flavour_text = "Your tribe worships the Necropolis. The wastes are sacred ground, its monsters a blessed bounty. \
|
|
You have seen lights in the distance... they foreshadow the arrival of outsiders that seek to tear apart the Necropolis and its domain. Fresh sacrifices for your nest."
|
|
assignedrole = "Ash Walker"
|
|
|
|
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/carbon/human/new_spawn)
|
|
new_spawn.rename_character(new_spawn.real_name, new_spawn.dna.species.get_random_name(new_spawn.gender))
|
|
|
|
to_chat(new_spawn, "<b>Drag the corpses of men and beasts to your nest. It will absorb them to create more of your kind. Glory to the Necropolis!</b>")
|
|
|
|
/obj/effect/mob_spawn/human/ash_walker/New()
|
|
. = ..()
|
|
var/area/A = get_area(src)
|
|
if(A)
|
|
notify_ghosts("An ash walker egg is ready to hatch in \the [A.name].", source = src, action = NOTIFY_ATTACK, flashwindow = FALSE)
|
|
|
|
/datum/outfit/ashwalker
|
|
name ="Ashwalker"
|
|
head = /obj/item/clothing/head/helmet/gladiator
|
|
uniform = /obj/item/clothing/under/gladiator/ash_walker
|