mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Adds ashwalker shamans (#18011)
* makes the lizards themselves * make em spawn * efficiency * ignore that * couple tweaks and comments * better spawning logic * actual proper spawning logic * Update code/game/objects/structures/ghost_role_spawners.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/game/objects/structures/ghost_role_spawners.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/game/objects/structures/ghost_role_spawners.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/species_types/lizardpeople.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/species_types/lizardpeople.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/species_types/lizardpeople.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/species_types/lizardpeople.dm Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com> * Update color.dm * Update ghost_role_spawners.dm --------- Co-authored-by: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
This commit is contained in:
@@ -31,7 +31,6 @@
|
||||
return ..()
|
||||
|
||||
//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/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."
|
||||
@@ -54,7 +53,6 @@
|
||||
/obj/effect/mob_spawn/human/ash_walker/special(mob/living/new_spawn)
|
||||
new_spawn.fully_replace_character_name(null,random_unique_lizard_name(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>") //yogs - removed a sentence
|
||||
|
||||
new_spawn.mind.add_antag_datum(/datum/antagonist/ashwalker, team)
|
||||
|
||||
/obj/effect/mob_spawn/human/ash_walker/Initialize(mapload, datum/team/ashwalkers/ashteam)
|
||||
@@ -62,7 +60,19 @@
|
||||
var/area/A = get_area(src)
|
||||
team = ashteam
|
||||
if(A)
|
||||
notify_ghosts("An ash walker egg is ready to hatch in \the [A.name].", source = src, action=NOTIFY_ATTACKORBIT, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER)
|
||||
notify_ghosts("[mob_name] egg is ready to hatch in \the [A.name].", source = src, action=NOTIFY_ATTACKORBIT, flashwindow = FALSE, ignore_key = POLL_IGNORE_ASHWALKER)
|
||||
|
||||
//Ash walker shaman eggs: Spawns in ash walker dens in lavaland. Only one can exist at a time, they are squishier than regular ashwalkers, and have the sole purpose of keeping other ashwalkers alive.
|
||||
/obj/effect/mob_spawn/human/ash_walker/shaman
|
||||
name = "ash walker shaman egg"
|
||||
desc = "A man-sized, amber egg spawned from some unfathomable creature. A humanoid silhouette lurks within."
|
||||
mob_name = "an ash walker shaman"
|
||||
mob_species = /datum/species/lizard/ashwalker/shaman
|
||||
outfit = /datum/outfit/ashwalker/shaman //might be OP, but the flavour is there
|
||||
short_desc = "You are an ash walker shaman. Your tribe worships the Necropolis."
|
||||
flavour_text = "The wastes are sacred ground, its monsters a blessed bounty. You and your people have become one with the tendril and its land. \
|
||||
You have seen lights in the distance and from the skies: outsiders that come with greed in their hearts. Fresh sacrifices for your nest."
|
||||
assignedrole = "Ash Walker Shaman"
|
||||
|
||||
/datum/outfit/ashwalker
|
||||
name = "Ashwalker"
|
||||
|
||||
@@ -1263,6 +1263,9 @@
|
||||
/mob/living/carbon/human/species/lizard/ashwalker
|
||||
race = /datum/species/lizard/ashwalker
|
||||
|
||||
/mob/living/carbon/human/species/lizard/ashwalker/shaman
|
||||
race = /datum/species/lizard/ashwalker/shaman
|
||||
|
||||
/mob/living/carbon/human/species/lizard/draconid
|
||||
race = /datum/species/lizard/draconid
|
||||
|
||||
|
||||
@@ -161,6 +161,64 @@
|
||||
. = ..()
|
||||
C.weather_immunities -= "ash"
|
||||
|
||||
//Ash walker shaman, worse defensive stats, but better at surgery and have a healing touch ability
|
||||
/datum/species/lizard/ashwalker/shaman
|
||||
name = "Ash Walker Shaman"
|
||||
id = "ashlizardshaman"
|
||||
armor = -1 //more of a support than a standard ashwalker, don't get hit
|
||||
brutemod = 1.15
|
||||
burnmod = 1.15
|
||||
speedmod = -0.1 //similar to ethereals, should help with saving others
|
||||
punchdamagehigh = 7
|
||||
punchstunthreshold = 7
|
||||
action_speed_coefficient = 0.9 //they're smart and efficient unlike other lizards
|
||||
var/obj/effect/proc_holder/spell/targeted/touch/healtouch/goodtouch
|
||||
|
||||
//gives the heal spell
|
||||
/datum/species/lizard/ashwalker/shaman/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
goodtouch = new /obj/effect/proc_holder/spell/targeted/touch/healtouch
|
||||
C.AddSpell(goodtouch)
|
||||
|
||||
//removes the heal spell
|
||||
/datum/species/lizard/ashwalker/shaman/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
if(goodtouch)
|
||||
C.RemoveSpell(goodtouch)
|
||||
|
||||
//basic touch ability that heals brute and burn, only accessed by the ashwalker shaman
|
||||
/obj/effect/proc_holder/spell/targeted/touch/healtouch
|
||||
name = "healing touch"
|
||||
desc = "This spell charges your hand with the vile energy of the Necropolis, permitting you to undo some external injuries from a target."
|
||||
hand_path = /obj/item/melee/touch_attack/healtouch
|
||||
|
||||
school = "evocation"
|
||||
panel = "Ashwalker"
|
||||
charge_max = 20 SECONDS
|
||||
clothes_req = FALSE
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
action_icon_state = "spell_default"
|
||||
|
||||
/obj/item/melee/touch_attack/healtouch
|
||||
name = "\improper healing touch"
|
||||
desc = "A blaze of life-granting energy from the hand. Heals minor to moderate injuries."
|
||||
catchphrase = "BE REPLENISHED!!"
|
||||
on_use_sound = 'sound/magic/staff_healing.ogg'
|
||||
icon_state = "touchofdeath" //ironic huh
|
||||
item_state = "touchofdeath"
|
||||
var/healamount = 20 //total of 40 assuming they're hurt by both brute and burn
|
||||
|
||||
/obj/item/melee/touch_attack/healtouch/afterattack(atom/target, mob/living/carbon/user, proximity)
|
||||
if(!proximity || target == user || !ismob(target) || !iscarbon(user) || !(user.mobility_flags & MOBILITY_USE)) //no healing yourself
|
||||
return
|
||||
if(!user.can_speak_vocal())
|
||||
to_chat(user, span_notice("You can't get the words out!"))
|
||||
return
|
||||
var/mob/living/M = target
|
||||
new /obj/effect/temp_visual/heal(get_turf(M), "#899d39")
|
||||
M.heal_overall_damage(healamount, healamount, 0, BODYPART_ANY, TRUE) //notice it doesn't heal toxins, still need to learn chems for that
|
||||
return ..()
|
||||
/*
|
||||
Lizard subspecies: DRACONIDS
|
||||
These guys only come from the dragon's blood bottle from lavaland. They're basically just lizards with all-around marginally better stats and fire resistance.
|
||||
|
||||
@@ -57,6 +57,22 @@
|
||||
|
||||
/obj/structure/lavaland/ash_walker/proc/spawn_mob()
|
||||
if(meat_counter >= ASH_WALKER_SPAWN_THRESHOLD)
|
||||
//spawn a shaman if there isn't a living one, or an egg for one
|
||||
var/shaman = TRUE
|
||||
for(var/mob/living/carbon/human/lizardfinder in GLOB.mob_living_list)
|
||||
if(is_species(lizardfinder, /datum/species/lizard/ashwalker/shaman))
|
||||
shaman = FALSE //lizard found
|
||||
if(shaman)
|
||||
for(var/spawners in GLOB.mob_spawners)//if an admin spawns in a shaman egg somewhere randomly, that will prevent any eggs from spawning normally
|
||||
for(var/egg in GLOB.mob_spawners[spawners])
|
||||
if(istype(egg, /obj/effect/mob_spawn/human/ash_walker/shaman))
|
||||
shaman = FALSE
|
||||
break
|
||||
|
||||
if(shaman)//is a shaman being spawned?
|
||||
new /obj/effect/mob_spawn/human/ash_walker/shaman(get_step(loc, pick(GLOB.alldirs)), ashies)
|
||||
else
|
||||
new /obj/effect/mob_spawn/human/ash_walker(get_step(loc, pick(GLOB.alldirs)), ashies)
|
||||
|
||||
visible_message(span_danger("One of the eggs swells to an unnatural size and tumbles free. It's ready to hatch!"))
|
||||
meat_counter -= ASH_WALKER_SPAWN_THRESHOLD
|
||||
|
||||
@@ -103,6 +103,9 @@
|
||||
if(tool)
|
||||
speed_mod = tool.toolspeed
|
||||
|
||||
if(is_species(user, /datum/species/lizard/ashwalker/shaman))//shaman is slightly better at surgeries
|
||||
speed_mod *= 0.9
|
||||
|
||||
if(IS_MEDICAL(user))
|
||||
speed_mod *= 0.8
|
||||
|
||||
|
||||
Reference in New Issue
Block a user