Ashwalker Update (#15466)

* Ashwalker Update

* Update generic_positive_events.dm

* Update ashwalker.dm

* fixing newlines

* Update code/modules/antagonists/_common/antag_datum.dm

Co-authored-by: Putnam3145 <putnam3145@gmail.com>

* literally 1984

* unlimiting spawns

* Create antag_datum.dm.bak

* Revert "Create antag_datum.dm.bak"

This reverts commit d91e1f4c4d9c86bc4a275ef19f45e8927dd93cae.

Co-authored-by: Putnam3145 <putnam3145@gmail.com>
This commit is contained in:
Sakura
2022-02-03 22:34:15 -05:00
committed by GitHub
parent 72ca4b6a8e
commit 08b38a7e70
10 changed files with 208 additions and 10 deletions
@@ -1,5 +1,5 @@
//Objects that spawn ghosts in as a certain role when they click on it, i.e. away mission bartenders.
#define spawnOverride TRUE
//Preserved terrarium/seed vault: Spawns in seed vault structures in lavaland. Ghosts become plantpeople and are advised to begin growing plants in the room near them.
/obj/effect/mob_spawn/human/seed_vault
name = "preserved terrarium"
@@ -36,6 +36,44 @@
//Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers.
/obj/structure/ash_walker_eggshell
name = "ash walker egg"
desc = "A man-sized yellow egg, spawned from some unfathomable creature. A humanoid silhouette lurks within. The egg shell looks resistant to temperature but otherwise rather brittle."
icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
icon_state = "large_egg"
resistance_flags = LAVA_PROOF | FIRE_PROOF | FREEZE_PROOF
max_integrity = 80
var/obj/effect/mob_spawn/human/ash_walker/egg
/obj/structure/ash_walker_eggshell/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) //lifted from xeno eggs
switch(damage_type)
if(BRUTE)
if(damage_amount)
playsound(loc, 'sound/effects/attackblob.ogg', 100, TRUE)
else
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
if(BURN)
if(damage_amount)
playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
/obj/structure/ash_walker_eggshell/attack_ghost(mob/user) //Pass on ghost clicks to the mob spawner
if(egg)
egg.attack_ghost(user)
. = ..()
/obj/structure/ash_walker_eggshell/Destroy()
if(!egg)
return ..()
var/mob/living/carbon/human/yolk = new /mob/living/carbon/human/(get_turf(src))
yolk.fully_replace_character_name(null,random_unique_lizard_name(gender))
yolk.set_species(/datum/species/lizard/ashwalker)
yolk.underwear = "Nude"
yolk.equipOutfit(/datum/outfit/ashwalker)//this is an authentic mess we're making
yolk.update_body()
yolk.gib()
QDEL_NULL(egg)
return ..()
/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."
@@ -55,12 +93,25 @@
You have seen lights in the distance... they foreshadow the arrival of outsiders to your domain. \
Ensure your nest remains protected at all costs."
assignedrole = "Ash Walker"
var/datum/team/ashwalkers/team
var/obj/structure/ash_walker_eggshell/eggshell
/obj/effect/mob_spawn/human/ash_walker/Destroy()
eggshell = null
return ..()
/obj/effect/mob_spawn/human/ash_walker/allow_spawn(mob/user, silent = FALSE)
if(!(user.key in team.players_spawned) || spawnOverride)//one per person unless you get a bonus spawn
return TRUE
to_chat(user, span_warning("<b>You have exhausted your usefulness to the Necropolis</b>."))
return FALSE
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn)
new_spawn.real_name = random_unique_lizard_name(gender)
if(is_mining_level(z))
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>")
to_chat(new_spawn, "<b>You can expand the weather proof area provided by your shelters by using the 'New Area' key near the bottom right of your HUD.</b>")
to_chat(new_spawn, "<b>Dragging injured ashwalkers to the tentacle or using the sleep verb next to it youself causes the body to remade whole after a short delay!</b>")
else
to_chat(new_spawn, "<span class='userdanger'>You have been born outside of your natural home! Whether you decide to return home, or make due with your new home is your own decision.</span>")
@@ -72,10 +123,18 @@
H.undershirt = "Nude"
H.socks = "Nude"
H.update_body()
new_spawn.mind.add_antag_datum(/datum/antagonist/ashwalker, team)
team.players_spawned += (new_spawn.key)
eggshell.egg = null
QDEL_NULL(eggshell)
/obj/effect/mob_spawn/human/ash_walker/Initialize(mapload)
/obj/effect/mob_spawn/human/ash_walker/Initialize(mapload, datum/team/ashwalkers/ashteam)
. = ..()
var/area/A = get_area(src)
team = ashteam
eggshell = new /obj/structure/ash_walker_eggshell(get_turf(loc))
eggshell.egg = src
src.forceMove(eggshell)
if(A)
notify_ghosts("An ash walker egg is ready to hatch in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER, ignore_dnr_observers = TRUE)