shadow demon / rev in spellbook (#20149)

* shadow demon / rev in spellbook

* tests code, icons

* Apply suggestions from code review

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>

---------

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2023-01-28 09:35:08 +01:00
committed by GitHub
co-authored by S34N Ryan
parent a5250adea4
commit 3963f9b070
3 changed files with 114 additions and 12 deletions
@@ -196,24 +196,27 @@
/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, type = "", mob/user)
var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T)
var/mob/living/simple_animal/demon/slaughter/S = new demon_type(holder)
S.vialspawned = TRUE
S.key = C.key
S.mind.assigned_role = S.name
S.mind.special_role = S.name
SSticker.mode.traitors += S.mind
var/mob/living/simple_animal/demon/D = new demon_type(holder)
if(istype(D, /mob/living/simple_animal/demon/slaughter))
var/mob/living/simple_animal/demon/slaughter/S = D
S.vialspawned = TRUE
D.key = C.key
D.mind.assigned_role = D.name
D.mind.special_role = D.name
SSticker.mode.traitors += D.mind
var/datum/objective/assassinate/KillDaWiz = new /datum/objective/assassinate
KillDaWiz.owner = S.mind
KillDaWiz.owner = D.mind
KillDaWiz.target = user.mind
KillDaWiz.explanation_text = "[objective_verb] [user.real_name], the one who was foolish enough to summon you."
S.mind.objectives += KillDaWiz
D.mind.objectives += KillDaWiz
var/datum/objective/KillDaCrew = new /datum/objective
KillDaCrew.owner = S.mind
KillDaCrew.owner = D.mind
KillDaCrew.explanation_text = "[objective_verb] everyone else while you're at it."
KillDaCrew.completed = TRUE
S.mind.objectives += KillDaCrew
to_chat(S, "<B>Objective #[1]</B>: [KillDaWiz.explanation_text]")
to_chat(S, "<B>Objective #[2]</B>: [KillDaCrew.explanation_text]")
D.mind.objectives += KillDaCrew
to_chat(D, "<b>Objective #[1]</b>: [KillDaWiz.explanation_text]")
to_chat(D, "<b>Objective #[2]</b>: [KillDaCrew.explanation_text]")
/obj/item/antag_spawner/slaughter_demon/laughter
name = "vial of tickles"
@@ -227,6 +230,18 @@
objective_verb = "Hug and tickle"
demon_type = /mob/living/simple_animal/demon/slaughter/laughter
/obj/item/antag_spawner/slaughter_demon/shadow
name = "vial of shadow"
desc = "A magically infused bottle of pure darkness, distilled from \
ground up shadowling bones. Used in dark rituals to attract \
dark creatures."
icon = 'icons/obj/wizard.dmi'
icon_state = "vialshadows"
veil_msg = "<span class='warning'>You sense a dark presence \
lurking in the shadows...</span>"
objective_verb = "Kill"
demon_type = /mob/living/simple_animal/demon/shadow
///////////MORPH
/obj/item/antag_spawner/morph
@@ -281,3 +296,58 @@
M.mind.objectives += KillDaCrew
to_chat(M, "<B>Objective #[1]</B>: [KillDaWiz.explanation_text]")
to_chat(M, "<B>Objective #[2]</B>: [KillDaCrew.explanation_text]")
///////////Revenant
/obj/item/antag_spawner/revenant
name = "vial of ectoplasm"
desc = "A magically infused bottle of ectoplasm, effectivly pure salt from the spectral realm."
icon = 'icons/obj/wizard.dmi'
icon_state = "vialectoplasm"
var/shatter_msg = "<span class='notice'>You shatter the bottle, no \
turning back now!</span>"
var/veil_msg = "<span class='warning'>The ectoplasm is awake and seeps \
away...</span>"
var/objective_verb = "Harvest"
var/mob/living/revenant = /mob/living/simple_animal/revenant
/obj/item/antag_spawner/revenant/attack_self(mob/user)
if(level_blocks_magic(user.z)) //this is to make sure the wizard does NOT summon a revenant from the Den..
to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>")
return
if(used)
to_chat(user, "<span class='notice'>This bottle already has a broken seal.</span>")
return
used = TRUE
to_chat(user, "<span class='notice'>You break the seal on the bottle, calling upon the salty specter to awaken...</span>")
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a revenant awakened by [user.real_name]?", ROLE_REVENANT, 1, 10 SECONDS, source = revenant)
if(!length(candidates))
used = FALSE
to_chat(user, "<span class='notice'>The ectoplasm does not respond to your attempt to awake it. Perhaps you should try again later.</span>")
return
var/mob/C = pick(candidates)
spawn_antag(C, get_turf(src), initial(revenant.name), user)
to_chat(user, "[shatter_msg]")
to_chat(user, "[veil_msg]")
playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, TRUE)
qdel(src)
/obj/item/antag_spawner/revenant/spawn_antag(client/C, turf/T, type = "", mob/user)
var/mob/living/simple_animal/revenant/M = new /mob/living/simple_animal/revenant(pick(GLOB.xeno_spawn))
M.key = C.key
var/datum/objective/assassinate/KillDaWiz = new /datum/objective/assassinate
KillDaWiz.owner = M.mind
KillDaWiz.target = user.mind
KillDaWiz.explanation_text = "[objective_verb] [user.real_name], the one who was foolish enough to awake you."
M.mind.objectives += KillDaWiz
var/datum/objective/KillDaCrew = new /datum/objective
KillDaCrew.owner = M.mind
KillDaCrew.explanation_text = "[objective_verb] everyone and everything else while you're at it."
KillDaCrew.completed = TRUE
M.mind.objectives += KillDaCrew
to_chat(M, "<b>Objective #[1]</b>: [KillDaWiz.explanation_text]")
to_chat(M, "<b>Objective #[2]</b>: [KillDaCrew.explanation_text]")