[MIRROR] Generally brings about half the heretic antag code up to our code standards, more or less (#5164)

* Generally brings about half the heretic antag code up to our code standards, more or less

* Update eldritch_knowledge.dm

Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
This commit is contained in:
SkyratBot
2021-04-25 21:20:02 +01:00
committed by GitHub
co-authored by tralezab Gandalf
parent 24e51a83e6
commit 42fadee535
7 changed files with 295 additions and 218 deletions
+1 -1
View File
@@ -11,5 +11,5 @@ GLOBAL_DATUM(start_state, /datum/station_state) // Used in round-end report
//TODO clear this one up too
GLOBAL_DATUM(cult_narsie, /obj/narsie)
///We want reality_smash_tracker to exist only once and be accesable from anywhere.
///We want reality_smash_tracker to exist only once and be accessible from anywhere.
GLOBAL_DATUM_INIT(reality_smash_track, /datum/reality_smash_tracker, new)
@@ -23,10 +23,14 @@
to_chat(owner, "<span class='boldannounce'>You are the Heretic!</span><br>\
<B>The old ones gave you these tasks to fulfill:</B>")
owner.announce_objectives()
to_chat(owner, "<span class='cult'>The book whispers softly, its forbidden knowledge walks this plane once again!<br>\
Your book allows you to research abilities. Read it very carefully, for you cannot undo what has been done!<br>\
You gain charges by either collecting influences or sacrificing people tracked by the living heart.<br> \
You can find a basic guide at : https://tgstation13.org/wiki/Heresy_101 </span>")
to_chat(owner, "<span class='cult'>The book whispers softly, its forbidden knowledge walks this plane once again!</span>")
var/policy = get_policy(ROLE_HERETIC)
if(policy)
to_chat(owner, policy)
/datum/antagonist/heretic/farewell()
to_chat(owner.current, "<span class='userdanger'>Your mind begins to flare as the otherwordly knowledge escapes your grasp!</span>")
owner.announce_objectives()
/datum/antagonist/heretic/on_gain()
var/mob/living/current = owner.current
@@ -34,55 +38,53 @@
forge_primary_objectives()
for(var/eldritch_knowledge in GLOB.heretic_start_knowledge)
gain_knowledge(eldritch_knowledge)
current.log_message("has been converted to the cult of the forgotten ones!", LOG_ATTACK, color="#960000")
current.log_message("has been made into a heretic!", LOG_ATTACK, color="#960000")
GLOB.reality_smash_track.AddMind(owner)
START_PROCESSING(SSprocessing,src)
RegisterSignal(owner.current,COMSIG_LIVING_DEATH,.proc/on_death)
START_PROCESSING(SSprocessing, src)
RegisterSignal(owner.current, COMSIG_LIVING_DEATH, .proc/on_death)
if(give_equipment)
equip_cultist()
return ..()
/datum/antagonist/heretic/on_removal()
for(var/X in researched_knowledge)
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
EK.on_lose(owner.current)
for(var/knowledge_index in researched_knowledge)
var/datum/eldritch_knowledge/knowledge = researched_knowledge[knowledge_index]
knowledge.on_lose(owner.current)
owner.current.log_message("is no longer a heretic!", LOG_ATTACK, color="#960000")
if(!silent)
to_chat(owner.current, "<span class='userdanger'>Your mind begins to flare as the otherwordly knowledge escapes your grasp!</span>")
owner.current.log_message("has renounced the cult of the old ones!", LOG_ATTACK, color="#960000")
GLOB.reality_smash_track.RemoveMind(owner)
STOP_PROCESSING(SSprocessing,src)
STOP_PROCESSING(SSprocessing, src)
on_death()
return ..()
/datum/antagonist/heretic/proc/equip_cultist()
var/mob/living/carbon/H = owner.current
if(!istype(H))
var/mob/living/carbon/heretic = owner.current
if(!istype(heretic))
return
. += ecult_give_item(/obj/item/forbidden_book, H)
. += ecult_give_item(/obj/item/living_heart, H)
. += ecult_give_item(/obj/item/forbidden_book, heretic)
. += ecult_give_item(/obj/item/living_heart, heretic)
/datum/antagonist/heretic/proc/ecult_give_item(obj/item/item_path, mob/living/carbon/human/H)
/datum/antagonist/heretic/proc/ecult_give_item(obj/item/item_path, mob/living/carbon/human/heretic)
var/list/slots = list(
"backpack" = ITEM_SLOT_BACKPACK,
"left pocket" = ITEM_SLOT_LPOCKET,
"right pocket" = ITEM_SLOT_RPOCKET
)
var/T = new item_path(H)
var/T = new item_path(heretic)
var/item_name = initial(item_path.name)
var/where = H.equip_in_one_of_slots(T, slots)
var/where = heretic.equip_in_one_of_slots(T, slots)
if(!where)
to_chat(H, "<span class='userdanger'>Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).</span>")
to_chat(heretic, "<span class='userdanger'>Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).</span>")
return FALSE
else
to_chat(H, "<span class='danger'>You have a [item_name] in your [where].</span>")
to_chat(heretic, "<span class='danger'>You have a [item_name] in your [where].</span>")
if(where == "backpack")
SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H)
SEND_SIGNAL(heretic.back, COMSIG_TRY_STORAGE_SHOW, heretic)
return TRUE
/datum/antagonist/heretic/process()
@@ -90,16 +92,16 @@
if(owner.current.stat == DEAD)
return
for(var/X in researched_knowledge)
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
EK.on_life(owner.current)
for(var/knowledge_index in researched_knowledge)
var/datum/eldritch_knowledge/knowledge = researched_knowledge[knowledge_index]
knowledge.on_life(owner.current)
///What happens to the heretic once he dies, used to remove any custom perks
/datum/antagonist/heretic/proc/on_death()
for(var/X in researched_knowledge)
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
EK.on_death(owner.current)
for(var/knowledge_index in researched_knowledge)
var/datum/eldritch_knowledge/knowledge = researched_knowledge[knowledge_index]
knowledge.on_death(owner.current)
/datum/antagonist/heretic/proc/forge_primary_objectives()
var/list/assasination = list()
@@ -114,20 +116,20 @@
forge_objective(pck1,assasination,protection)
forge_objective(pck2,assasination,protection)
var/datum/objective/sacrifice_ecult/SE = new
SE.owner = owner
SE.update_explanation_text()
objectives += SE
var/datum/objective/sacrifice_ecult/sac_objective = new
sac_objective.owner = owner
sac_objective.update_explanation_text()
objectives += sac_objective
/datum/antagonist/heretic/proc/forge_objective(string,assasination,protection)
switch(string)
if("assassinate")
var/datum/objective/assassinate/A = new
A.owner = owner
var/list/owners = A.get_owners()
A.find_target(owners,protection)
assasination += A.target
objectives += A
var/datum/objective/assassinate/kill = new
kill.owner = owner
var/list/owners = kill.get_owners()
kill.find_target(owners,protection)
assasination += kill.target
objectives += kill
if("hijack")
var/datum/objective/hijack/hijack = new
hijack.owner = owner
@@ -137,12 +139,12 @@
martyrdom.owner = owner
objectives += martyrdom
if("protect")
var/datum/objective/protect/P = new
P.owner = owner
var/list/owners = P.get_owners()
P.find_target(owners,assasination)
protection += P.target
objectives += P
var/datum/objective/protect/protect = new
protect.owner = owner
var/list/owners = protect.get_owners()
protect.find_target(owners,assasination)
protection += protect.target
objectives += protect
/datum/antagonist/heretic/apply_innate_effects(mob/living/mob_override)
. = ..()
@@ -195,10 +197,10 @@
parts += "<b>Knowledge Researched:</b> "
var/list/knowledge_message = list()
var/list/knowledge = get_all_knowledge()
for(var/X in knowledge)
var/datum/eldritch_knowledge/EK = knowledge[X]
knowledge_message += "[EK.name]"
var/list/researched_knowledge = get_all_knowledge()
for(var/knowledge_index in researched_knowledge)
var/datum/eldritch_knowledge/knowledge = researched_knowledge[knowledge_index]
knowledge_message += "[knowledge.name]"
parts += knowledge_message.Join(", ")
return parts.Join("<br>")
@@ -206,10 +208,10 @@
// Knowledge //
////////////////
/datum/antagonist/heretic/proc/gain_knowledge(datum/eldritch_knowledge/EK)
if(get_knowledge(EK))
/datum/antagonist/heretic/proc/gain_knowledge(datum/eldritch_knowledge/knowledge)
if(get_knowledge(knowledge))
return FALSE
var/datum/eldritch_knowledge/initialized_knowledge = new EK
var/datum/eldritch_knowledge/initialized_knowledge = new knowledge
researched_knowledge[initialized_knowledge.type] = initialized_knowledge
initialized_knowledge.on_gain(owner.current)
return TRUE
@@ -217,11 +219,11 @@
/datum/antagonist/heretic/proc/get_researchable_knowledge()
var/list/researchable_knowledge = list()
var/list/banned_knowledge = list()
for(var/X in researched_knowledge)
var/datum/eldritch_knowledge/EK = researched_knowledge[X]
researchable_knowledge |= EK.next_knowledge
banned_knowledge |= EK.banned_knowledge
banned_knowledge |= EK.type
for(var/knowledge_index in researched_knowledge)
var/datum/eldritch_knowledge/knowledge = researched_knowledge[knowledge_index]
researchable_knowledge |= knowledge.next_knowledge
banned_knowledge |= knowledge.banned_knowledge
banned_knowledge |= knowledge.type
researchable_knowledge -= banned_knowledge
return researchable_knowledge
@@ -29,9 +29,8 @@
/datum/eldritch_knowledge/New()
. = ..()
var/list/temp_list
for(var/X in required_atoms)
var/atom/A = X
temp_list += list(typesof(A))
for(var/atom/required_atom as anything in required_atoms)
temp_list += list(typesof(required_atom))
required_atoms = temp_list
/**
@@ -62,7 +61,7 @@
*
* If you are adding a more complex summoning or something that requires a special check that parses through all the atoms in an area override this.
*/
/datum/eldritch_knowledge/proc/recipe_snowflake_check(list/atoms,loc)
/datum/eldritch_knowledge/proc/recipe_snowflake_check(list/atoms, loc)
return TRUE
/**
@@ -78,13 +77,11 @@
*
* By default this proc creates atoms from result_atoms list. Override this is you want something else to happen.
*/
/datum/eldritch_knowledge/proc/on_finished_recipe(mob/living/user,list/atoms,loc)
if(result_atoms.len == 0)
/datum/eldritch_knowledge/proc/on_finished_recipe(mob/living/user, list/atoms, loc)
if(!length(result_atoms))
return FALSE
for(var/A in result_atoms)
new A(loc)
for(var/result in result_atoms)
new result(loc)
return TRUE
/**
@@ -93,11 +90,10 @@
* Overide this proc if you dont want ALL ATOMS to be destroyed. useful in many situations.
*/
/datum/eldritch_knowledge/proc/cleanup_atoms(list/atoms)
for(var/X in atoms)
var/atom/A = X
if(!isliving(A))
atoms -= A
qdel(A)
for(var/atom/sacrificed as anything in atoms)
if(!isliving(sacrificed))
atoms -= sacrificed
qdel(sacrificed)
return
/**
@@ -133,8 +129,8 @@
var/obj/effect/proc_holder/spell/spell_to_add
/datum/eldritch_knowledge/spell/on_gain(mob/user)
var/obj/effect/proc_holder/S = new spell_to_add
user.mind.AddSpell(S)
spell_to_add = new
user.mind.AddSpell(spell_to_add)
return ..()
/datum/eldritch_knowledge/spell/on_lose(mob/user)
@@ -148,9 +144,8 @@
/datum/eldritch_knowledge/curse/recipe_snowflake_check(list/atoms, loc)
fingerprints = list()
for(var/X in atoms)
var/atom/A = X
fingerprints |= A.return_fingerprints()
for(var/atom/requirements as anything in atoms)
fingerprints |= requirements.return_fingerprints()
listclearnulls(fingerprints)
if(fingerprints.len == 0)
return FALSE
@@ -160,8 +155,7 @@
var/list/compiled_list = list()
for(var/H in GLOB.human_list)
var/mob/living/carbon/human/human_to_check = H
for(var/mob/living/carbon/human/human_to_check as anything in GLOB.human_list)
if(fingerprints[md5(human_to_check.dna.uni_identity)])
compiled_list |= human_to_check.real_name
compiled_list[human_to_check.real_name] = human_to_check
@@ -187,8 +181,7 @@
//Mob to summon
var/mob/living/mob_to_summon
/datum/eldritch_knowledge/summon/on_finished_recipe(mob/living/user,list/atoms,loc)
/datum/eldritch_knowledge/summon/on_finished_recipe(mob/living/user, list/atoms, loc)
//we need to spawn the mob first so that we can use it in pollCandidatesForMob, we will move it from nullspace down the code
var/mob/living/summoned = new mob_to_summon(loc)
message_admins("[summoned.name] is being summoned by [user.real_name] in [loc]")
@@ -197,10 +190,10 @@
to_chat(user,"<span class='warning'>No ghost could be found...</span>")
qdel(summoned)
return FALSE
var/mob/dead/observer/C = pick(candidates)
log_game("[key_name_admin(C)] has taken control of ([key_name_admin(summoned)]), their master is [user.real_name]")
var/mob/dead/observer/picked_candidate = pick(candidates)
log_game("[key_name_admin(picked_candidate)] has taken control of ([key_name_admin(summoned)]), their master is [user.real_name]")
summoned.ghostize(FALSE)
summoned.key = C.key
summoned.key = picked_candidate.key
summoned.mind.add_antag_datum(/datum/antagonist/heretic_monster)
var/datum/antagonist/heretic_monster/heretic_monster = summoned.mind.has_antag_datum(/datum/antagonist/heretic_monster)
var/datum/antagonist/heretic/master = user.mind.has_antag_datum(/datum/antagonist/heretic)
@@ -212,12 +205,12 @@
var/finished = FALSE
/datum/eldritch_knowledge/final/recipe_snowflake_check(list/atoms, loc,selected_atoms)
/datum/eldritch_knowledge/final/recipe_snowflake_check(list/atoms, loc, selected_atoms)
if(finished)
return FALSE
var/counter = 0
for(var/mob/living/carbon/human/H in atoms)
selected_atoms |= H
for(var/mob/living/carbon/human/sacrifices in atoms)
selected_atoms |= sacrifices
counter++
if(counter == 3)
return TRUE
@@ -231,9 +224,9 @@
/datum/eldritch_knowledge/final/cleanup_atoms(list/atoms)
. = ..()
for(var/mob/living/carbon/human/H in atoms)
atoms -= H
H.gib()
for(var/mob/living/carbon/human/sacrifices in atoms)
atoms -= sacrifices
sacrifices.gib()
///////////////
@@ -252,41 +245,40 @@
/datum/eldritch_knowledge/spell/basic/recipe_snowflake_check(list/atoms, loc)
. = ..()
for(var/obj/item/living_heart/LH in atoms)
if(!LH.target)
for(var/obj/item/living_heart/heart in atoms)
if(!heart.target)
return TRUE
if(LH.target in atoms)
if(heart.target in atoms)
return TRUE
return FALSE
/datum/eldritch_knowledge/spell/basic/on_finished_recipe(mob/living/user, list/atoms, loc)
. = TRUE
var/mob/living/carbon/carbon_user = user
for(var/obj/item/living_heart/LH in atoms)
for(var/obj/item/living_heart/heart in atoms)
if(LH.target && LH.target.stat == DEAD)
if(heart.target && heart.target.stat == DEAD)
to_chat(carbon_user,"<span class='danger'>Your patrons accepts your offer..</span>")
var/mob/living/carbon/human/H = LH.target
var/mob/living/carbon/human/current_target = heart.target
//SKYRAT EDIT BEGIN: MAKES HERETICS NOT GIB PEOPLE
var/obj/item/bodypart/chest/chest = H.get_bodypart(BODY_ZONE_CHEST)
var/obj/item/bodypart/chest/chest = current_target.get_bodypart(BODY_ZONE_CHEST)
chest.dismember()
H.visible_message("<span class='danger'>[H.name] Is quickly surrounded by invisible claws; lacerating their chest open, spilling their organs out!</span>", \
"<span class='danger'>You feel claws tear your chest open; spilling your organs out onto the floor!</span>", ignored_mobs=H)
current_target.visible_message("<span class='danger'>[current_target.name] Is quickly surrounded by invisible claws; lacerating their chest open, spilling their organs out!</span>", \
"<span class='danger'>You feel claws tear your chest open; spilling your organs out onto the floor!</span>", ignored_mobs=current_target)
//SKYRAT EDIT END
LH.target = null
var/datum/antagonist/heretic/EC = carbon_user.mind.has_antag_datum(/datum/antagonist/heretic)
heart.target = null
var/datum/antagonist/heretic/heretic_datum = carbon_user.mind.has_antag_datum(/datum/antagonist/heretic)
EC.total_sacrifices++
for(var/X in carbon_user.get_all_gear())
if(!istype(X,/obj/item/forbidden_book))
heretic_datum.total_sacrifices++
for(var/obj/item/forbidden_book/book as anything in carbon_user.get_all_gear())
if(!istype(book))
continue
var/obj/item/forbidden_book/FB = X
FB.charge += 3 //SKYRAT EDIT: More points for sacrifice
book.charge += 2
break
if(!LH.target)
var/datum/objective/A = new
A.owner = user.mind
if(!heart.target)
var/datum/objective/temp_objective = new
temp_objective.owner = user.mind
var/list/datum/team/teams = list()
for(var/datum/antagonist/antag as anything in user.mind.antag_datums)
var/datum/team/team = antag.get_team()
@@ -294,7 +286,7 @@
teams |= team
var/list/targets = list()
for(var/i in 0 to 3)
var/datum/mind/targeted = A.find_target()//easy way, i dont feel like copy pasting that entire block of code
var/datum/mind/targeted = temp_objective.find_target()//easy way, i dont feel like copy pasting that entire block of code
var/is_teammate = FALSE
for(var/datum/team/team as anything in teams)
if(targeted in team.members)
@@ -303,12 +295,12 @@
if(!targeted)
break
targets["[targeted.current.real_name] the [targeted.assigned_role][is_teammate ? " (ally)" : ""]"] = targeted.current
LH.target = targets[input(user,"Choose your next target","Target") in targets]
qdel(A)
if(LH.target)
to_chat(user,"<span class='warning'>Your new target has been selected, go and sacrifice [LH.target.real_name]!</span>")
heart.target = targets[input(user,"Choose your next target","Target") in targets]
qdel(temp_objective)
if(heart.target)
to_chat(user,"<span class='warning'>Your new target has been selected, go and sacrifice [heart.target.real_name]!</span>")
else
to_chat(user,"<span class='warning'>target could not be found for living heart.</span>")
to_chat(user, "<span class='warning'>target could not be found for living heart.</span>")
/datum/eldritch_knowledge/spell/basic/cleanup_atoms(list/atoms)
return
@@ -2,9 +2,16 @@
name = "Nightwatcher's Secret"
desc = "Opens up the Path of Ash to you. Allows you to transmute a match with a kitchen knife, or its derivatives, into an Ashen Blade."
gain_text = "The City Guard know their watch. If you ask them at night, they may tell you about the ashy lantern."
banned_knowledge = list(/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/rust_final,/datum/eldritch_knowledge/final/flesh_final,/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/base_void)
banned_knowledge = list(
/datum/eldritch_knowledge/base_rust,
/datum/eldritch_knowledge/base_flesh,
/datum/eldritch_knowledge/final/rust_final,
/datum/eldritch_knowledge/final/flesh_final,
/datum/eldritch_knowledge/final/void_final,
/datum/eldritch_knowledge/base_void
)
next_knowledge = list(/datum/eldritch_knowledge/ashen_grasp)
required_atoms = list(/obj/item/kitchen/knife,/obj/item/match)
required_atoms = list(/obj/item/kitchen/knife, /obj/item/match)
result_atoms = list(/obj/item/melee/sickly_blade/ash)
cost = 1
route = PATH_ASH
@@ -15,7 +22,11 @@
desc = "A short range jaunt that can help you escape from bad situations."
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/ash
next_knowledge = list(/datum/eldritch_knowledge/ash_mark,/datum/eldritch_knowledge/essence,/datum/eldritch_knowledge/ashen_eyes)
next_knowledge = list(
/datum/eldritch_knowledge/ash_mark,
/datum/eldritch_knowledge/essence,
/datum/eldritch_knowledge/ashen_eyes
)
route = PATH_ASH
/datum/eldritch_knowledge/ashen_grasp
@@ -30,26 +41,22 @@
. = ..()
if(!iscarbon(target))
return
var/mob/living/carbon/C = target
to_chat(C, "<span class='danger'>Your eyes burn horrifically!</span>") //pocket sand! also, this is the message that changeling blind stings use, and no, I'm not ashamed about reusing it
C.become_nearsighted(EYE_DAMAGE)
C.blind_eyes(5)
C.blur_eyes(10)
return
var/mob/living/carbon/blind_victim = target
to_chat(blind_victim, "<span class='danger'>Your eyes burn horrifically!</span>") //pocket sand! also, this is the message that changeling blind stings use, and no, I'm not ashamed about reusing it
blind_victim.become_nearsighted(EYE_DAMAGE)
blind_victim.blind_eyes(5)
blind_victim.blur_eyes(10)
/datum/eldritch_knowledge/ashen_grasp/on_eldritch_blade(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(!iscarbon(target))
return
var/mob/living/carbon/C = target
var/datum/status_effect/eldritch/E = C.has_status_effect(/datum/status_effect/eldritch/rust) || C.has_status_effect(/datum/status_effect/eldritch/ash) || C.has_status_effect(/datum/status_effect/eldritch/flesh) || C.has_status_effect(/datum/status_effect/eldritch/void)
if(E)
E.on_effect()
for(var/X in user.mind.spell_list)
if(!istype(X,/obj/effect/proc_holder/spell/targeted/touch/mansus_grasp))
continue
var/obj/effect/proc_holder/spell/targeted/touch/mansus_grasp/MG = X
MG.charge_counter = min(round(MG.charge_counter + MG.charge_max * 0.75),MG.charge_max) // refunds 75% of charge.
var/mob/living/carbon/victim = target
var/datum/status_effect/eldritch/effect = victim.has_status_effect(/datum/status_effect/eldritch/rust) || victim.has_status_effect(/datum/status_effect/eldritch/ash) || victim.has_status_effect(/datum/status_effect/eldritch/flesh) || victim.has_status_effect(/datum/status_effect/eldritch/void)
if(effect)
effect.on_effect()
for(var/obj/effect/proc_holder/spell/targeted/touch/mansus_grasp/grasp in user.mind.spell_list)
grasp.charge_counter = min(round(grasp.charge_counter + grasp.charge_max * 0.75), grasp.charge_max) // refunds 75% of charge.
/datum/eldritch_knowledge/ashen_eyes
name = "Ashen Eyes"
@@ -66,7 +73,11 @@
desc = "Your Mansus Grasp now applies the Mark of Ash on hit. Attack the afflicted with your Sickly Blade to detonate the mark. Upon detonation, the Mark of Ash causes stamina damage and burn damage, and spreads to an additional nearby opponent. The damage decreases with each spread."
cost = 2
next_knowledge = list(/datum/eldritch_knowledge/mad_mask)
banned_knowledge = list(/datum/eldritch_knowledge/rust_mark,/datum/eldritch_knowledge/flesh_mark,/datum/eldritch_knowledge/void_mark)
banned_knowledge = list(
/datum/eldritch_knowledge/rust_mark,
/datum/eldritch_knowledge/flesh_mark,
/datum/eldritch_knowledge/void_mark
)
route = PATH_ASH
/datum/eldritch_knowledge/ash_mark/on_mansus_grasp(target,user,proximity_flag,click_parameters)
@@ -74,7 +85,7 @@
if(isliving(target))
. = TRUE
var/mob/living/living_target = target
living_target.apply_status_effect(/datum/status_effect/eldritch/ash,5)
living_target.apply_status_effect(/datum/status_effect/eldritch/ash, 5)
/datum/eldritch_knowledge/mad_mask
name = "Mask of Madness"
@@ -83,7 +94,11 @@
cost = 1
result_atoms = list(/obj/item/clothing/mask/void_mask)
required_atoms = list(/obj/item/organ/eyes,/obj/item/clothing/mask,/obj/item/candle)
next_knowledge = list(/datum/eldritch_knowledge/curse/corrosion,/datum/eldritch_knowledge/ash_blade_upgrade,/datum/eldritch_knowledge/curse/paralysis)
next_knowledge = list(
/datum/eldritch_knowledge/curse/corrosion,
/datum/eldritch_knowledge/ash_blade_upgrade,
/datum/eldritch_knowledge/curse/paralysis
)
route = PATH_ASH
/datum/eldritch_knowledge/spell/flame_birth
@@ -92,7 +107,11 @@
desc = "Short range spell that allows you to curse someone with massive sanity loss."
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/targeted/fiery_rebirth
next_knowledge = list(/datum/eldritch_knowledge/spell/cleave,/datum/eldritch_knowledge/summon/ashy,/datum/eldritch_knowledge/final/ash_final)
next_knowledge = list(
/datum/eldritch_knowledge/spell/cleave,
/datum/eldritch_knowledge/summon/ashy,
/datum/eldritch_knowledge/final/ash_final
)
route = PATH_ASH
/datum/eldritch_knowledge/ash_blade_upgrade
@@ -101,15 +120,19 @@
desc = "Your blade of choice will now light your enemies ablaze."
cost = 2
next_knowledge = list(/datum/eldritch_knowledge/spell/flame_birth)
banned_knowledge = list(/datum/eldritch_knowledge/rust_blade_upgrade,/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/void_blade_upgrade)
banned_knowledge = list(
/datum/eldritch_knowledge/rust_blade_upgrade,
/datum/eldritch_knowledge/flesh_blade_upgrade,
/datum/eldritch_knowledge/void_blade_upgrade
)
route = PATH_ASH
/datum/eldritch_knowledge/ash_blade_upgrade/on_eldritch_blade(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/C = target
C.adjust_fire_stacks(1)
C.IgniteMob()
var/mob/living/carbon/burn_victim = target
burn_victim.adjust_fire_stacks(1)
burn_victim.IgniteMob()
/datum/eldritch_knowledge/curse/corrosion
name = "Curse of Corrosion"
@@ -117,7 +140,10 @@
desc = "Curse someone for 2 minutes of vomiting and major organ damage. Using a wirecutter, a pool of blood, a heart, left arm and a right arm, and an item that the victim touched with their bare hands."
cost = 1
required_atoms = list(/obj/item/wirecutters,/obj/effect/decal/cleanable/vomit,/obj/item/organ/heart)
next_knowledge = list(/datum/eldritch_knowledge/mad_mask,/datum/eldritch_knowledge/spell/area_conversion)
next_knowledge = list(
/datum/eldritch_knowledge/mad_mask,
/datum/eldritch_knowledge/spell/area_conversion
)
timer = 2 MINUTES
/datum/eldritch_knowledge/curse/corrosion/curse(mob/living/chosen_mob)
@@ -164,16 +190,23 @@
required_atoms = list(/mob/living/carbon/human)
cost = 3
route = PATH_ASH
var/list/trait_list = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE)
var/list/trait_list = list(
TRAIT_RESISTHEAT,
TRAIT_NOBREATH,
TRAIT_RESISTCOLD,
TRAIT_RESISTHIGHPRESSURE,
TRAIT_RESISTLOWPRESSURE,
TRAIT_NOFIRE
)
/datum/eldritch_knowledge/final/ash_final/on_finished_recipe(mob/living/user, list/atoms, loc)
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# Fear the blaze, for the Ashlord, [user.real_name] has ascended! The flames shall consume all! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", ANNOUNCER_SPANOMALIES)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/fire_cascade/big)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/fire_sworn)
var/mob/living/carbon/human/H = user
H.physiology.brute_mod *= 0.5
H.physiology.burn_mod *= 0.5
H.client?.give_award(/datum/award/achievement/misc/ash_ascension, H)
for(var/X in trait_list)
ADD_TRAIT(user,X,MAGIC_TRAIT)
var/mob/living/carbon/human/ascendant = user
ascendant.physiology.brute_mod *= 0.5
ascendant.physiology.burn_mod *= 0.5
ascendant.client?.give_award(/datum/award/achievement/misc/ash_ascension, ascendant)
for(var/trait in trait_list)
ADD_TRAIT(user, trait, MAGIC_TRAIT)
return ..()
@@ -2,9 +2,16 @@
name = "Principle of Hunger"
desc = "Opens up the Path of Flesh to you. Allows you to transmute a pool of blood with a kitchen knife, or its derivatives, into a Flesh Blade."
gain_text = "Hundreds of us starved, but not me... I found strength in my greed."
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/rust_final,/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/base_void)
banned_knowledge = list(
/datum/eldritch_knowledge/base_ash,
/datum/eldritch_knowledge/base_rust,
/datum/eldritch_knowledge/final/ash_final,
/datum/eldritch_knowledge/final/rust_final,
/datum/eldritch_knowledge/final/void_final,
/datum/eldritch_knowledge/base_void
)
next_knowledge = list(/datum/eldritch_knowledge/flesh_grasp)
required_atoms = list(/obj/item/kitchen/knife,/obj/effect/decal/cleanable/blood)
required_atoms = list(/obj/item/kitchen/knife, /obj/effect/decal/cleanable/blood)
result_atoms = list(/obj/item/melee/sickly_blade/flesh)
cost = 1
route = PATH_FLESH
@@ -14,36 +21,37 @@
desc = "Allows you to resurrect the dead as voiceless dead by sacrificing them on the transmutation rune with a poppy. Voiceless dead are mute and have 50 HP. You can only have 2 at a time."
gain_text = "I found notes of a dark ritual, unfinished... yet still, I pushed forward."
cost = 1
required_atoms = list(/mob/living/carbon/human,/obj/item/food/grown/poppy)
next_knowledge = list(/datum/eldritch_knowledge/flesh_mark,/datum/eldritch_knowledge/void_cloak,/datum/eldritch_knowledge/ashen_eyes)
required_atoms = list(/mob/living/carbon/human, /obj/item/food/grown/poppy)
next_knowledge = list(
/datum/eldritch_knowledge/flesh_mark,
/datum/eldritch_knowledge/void_cloak,
/datum/eldritch_knowledge/ashen_eyes
)
route = PATH_FLESH
var/max_amt = 2
var/current_amt = 0
var/list/ghouls = list()
/datum/eldritch_knowledge/flesh_ghoul/on_finished_recipe(mob/living/user,list/atoms,loc)
/datum/eldritch_knowledge/flesh_ghoul/on_finished_recipe(mob/living/user, list/atoms, loc)
var/mob/living/carbon/human/humie = locate() in atoms
if(QDELETED(humie) || humie.stat != DEAD)
return
if(length(ghouls) >= max_amt)
return
if(HAS_TRAIT(humie,TRAIT_HUSK))
return
humie.grab_ghost()
if(!humie.mind || !humie.client)
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [humie.real_name], a voiceless dead", ROLE_HERETIC, null, ROLE_HERETIC, 50,humie)
if(!LAZYLEN(candidates))
return
var/mob/dead/observer/C = pick(candidates)
message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(humie)]) to replace an AFK player.")
var/mob/dead/observer/chosen_candidate = pick(candidates)
message_admins("[key_name_admin(chosen_candidate)] has taken control of ([key_name_admin(humie)]) to replace an AFK player.")
humie.ghostize(0)
humie.key = C.key
humie.key = chosen_candidate.key
ADD_TRAIT(humie,TRAIT_MUTE,MAGIC_TRAIT)
ADD_TRAIT(humie, TRAIT_MUTE, MAGIC_TRAIT)
log_game("[key_name_admin(humie)] has become a voiceless dead, their master is [user.real_name]")
humie.revive(full_heal = TRUE, admin_revive = TRUE)
humie.setMaxHealth(50)
@@ -55,7 +63,7 @@
var/datum/antagonist/heretic/master = user.mind.has_antag_datum(/datum/antagonist/heretic)
heretic_monster.set_owner(master)
atoms -= humie
RegisterSignal(humie,COMSIG_LIVING_DEATH,.proc/remove_ghoul)
RegisterSignal(humie,COMSIG_LIVING_DEATH, .proc/remove_ghoul)
ghouls += humie
/datum/eldritch_knowledge/flesh_ghoul/proc/remove_ghoul(datum/source)
@@ -79,25 +87,18 @@
if(!ishuman(target) || target == user)
return
var/mob/living/carbon/human/human_target = target
if(QDELETED(human_target) || human_target.stat != DEAD)
return
human_target.grab_ghost()
if(!human_target.mind || !human_target.client)
to_chat(user, "<span class='warning'>There is no soul connected to this body...</span>")
return
if(HAS_TRAIT(human_target, TRAIT_HUSK))
to_chat(user, "<span class='warning'>You cannot revive a dead ghoul!</span>")
return
if(LAZYLEN(spooky_scaries) >= ghoul_amt)
to_chat(user, "<span class='warning'>Your patron cannot support more ghouls on this plane!</span>")
return
LAZYADD(spooky_scaries, human_target)
log_game("[key_name_admin(human_target)] has become a ghoul, their master is [user.real_name]")
//we change it to true only after we know they passed all the checks
@@ -111,7 +112,6 @@
var/datum/antagonist/heretic_monster/heretic_monster = human_target.mind.add_antag_datum(/datum/antagonist/heretic_monster)
var/datum/antagonist/heretic/master = user.mind.has_antag_datum(/datum/antagonist/heretic)
heretic_monster.set_owner(master)
return
/datum/eldritch_knowledge/flesh_grasp/on_eldritch_blade(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
@@ -173,7 +173,11 @@
cost = 1
required_atoms = list(/obj/item/organ/eyes,/obj/effect/decal/cleanable/blood,/obj/item/bodypart/l_arm)
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/raw_prophet
next_knowledge = list(/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/rune_carver,/datum/eldritch_knowledge/curse/paralysis)
next_knowledge = list(
/datum/eldritch_knowledge/flesh_blade_upgrade,
/datum/eldritch_knowledge/rune_carver,
/datum/eldritch_knowledge/curse/paralysis
)
route = PATH_FLESH
/datum/eldritch_knowledge/summon/stalker
@@ -183,7 +187,11 @@
cost = 1
required_atoms = list(/obj/item/pen,/obj/item/organ/eyes,/obj/item/candle,/obj/item/paper)
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/stalker
next_knowledge = list(/datum/eldritch_knowledge/summon/ashy,/datum/eldritch_knowledge/summon/rusty,/datum/eldritch_knowledge/final/flesh_final)
next_knowledge = list(
/datum/eldritch_knowledge/summon/ashy,
/datum/eldritch_knowledge/summon/rusty,
/datum/eldritch_knowledge/final/flesh_final
)
route = PATH_FLESH
/datum/eldritch_knowledge/summon/ashy
@@ -226,12 +234,12 @@
user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shed_human_form)
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
H.physiology.brute_mod *= 0.5
H.physiology.burn_mod *= 0.5
H.client?.give_award(/datum/award/achievement/misc/flesh_ascension, H)
var/datum/antagonist/heretic/heretic = user.mind.has_antag_datum(/datum/antagonist/heretic)
var/datum/eldritch_knowledge/flesh_grasp/ghoul1 = heretic.get_knowledge(/datum/eldritch_knowledge/flesh_grasp)
ghoul1.ghoul_amt *= 3
var/datum/eldritch_knowledge/flesh_ghoul/ghoul2 = heretic.get_knowledge(/datum/eldritch_knowledge/flesh_ghoul)
ghoul2.max_amt *= 3
var/mob/living/carbon/human/lord_of_arms = user
lord_of_arms.physiology.brute_mod *= 0.5
lord_of_arms.physiology.burn_mod *= 0.5
lord_of_arms.client?.give_award(/datum/award/achievement/misc/flesh_ascension, lord_of_arms)
var/datum/antagonist/heretic/heretic_datum = user.mind.has_antag_datum(/datum/antagonist/heretic)
var/datum/eldritch_knowledge/flesh_grasp/grasp_ghoul = heretic_datum.get_knowledge(/datum/eldritch_knowledge/flesh_grasp)
grasp_ghoul.ghoul_amt *= 3
var/datum/eldritch_knowledge/flesh_ghoul/better_ghoul = heretic_datum.get_knowledge(/datum/eldritch_knowledge/flesh_ghoul)
better_ghoul.max_amt *= 3
@@ -16,7 +16,13 @@
cost = 1
next_knowledge = list(/datum/eldritch_knowledge/rust_regen)
var/rust_force = 500
var/static/list/blacklisted_turfs = typecacheof(list(/turf/closed,/turf/open/space,/turf/open/lava,/turf/open/chasm,/turf/open/floor/plating/rust))
var/static/list/blacklisted_turfs = typecacheof(list(
/turf/closed,
/turf/open/space,
/turf/open/lava,
/turf/open/chasm,
/turf/open/floor/plating/rust
))
route = PATH_RUST
/datum/eldritch_knowledge/rust_fist/on_mansus_grasp(atom/target, mob/living/user, proximity_flag, click_parameters)
@@ -35,11 +41,11 @@
/datum/eldritch_knowledge/rust_fist/on_eldritch_blade(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/datum/status_effect/eldritch/E = H.has_status_effect(/datum/status_effect/eldritch/rust) || H.has_status_effect(/datum/status_effect/eldritch/ash) || H.has_status_effect(/datum/status_effect/eldritch/flesh) || H.has_status_effect(/datum/status_effect/eldritch/void)
if(E)
E.on_effect()
H.adjustOrganLoss(pick(ORGAN_SLOT_BRAIN,ORGAN_SLOT_EARS,ORGAN_SLOT_EYES,ORGAN_SLOT_LIVER,ORGAN_SLOT_LUNGS,ORGAN_SLOT_STOMACH,ORGAN_SLOT_HEART),25)
var/mob/living/carbon/human/victim = target
var/datum/status_effect/eldritch/effect = victim.has_status_effect(/datum/status_effect/eldritch/rust) || victim.has_status_effect(/datum/status_effect/eldritch/ash) || victim.has_status_effect(/datum/status_effect/eldritch/flesh) || victim.has_status_effect(/datum/status_effect/eldritch/void)
if(effect)
effect.on_effect()
victim.adjustOrganLoss(pick(ORGAN_SLOT_BRAIN,ORGAN_SLOT_EARS,ORGAN_SLOT_EYES,ORGAN_SLOT_LIVER,ORGAN_SLOT_LUNGS,ORGAN_SLOT_STOMACH,ORGAN_SLOT_HEART),25)
/datum/eldritch_knowledge/spell/area_conversion
name = "Agressive Spread"
@@ -47,7 +53,11 @@
gain_text = "All wise men know well not to touch the Bound King."
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/aoe_turf/rust_conversion
next_knowledge = list(/datum/eldritch_knowledge/rust_blade_upgrade,/datum/eldritch_knowledge/curse/corrosion,/datum/eldritch_knowledge/crucible)
next_knowledge = list(
/datum/eldritch_knowledge/rust_blade_upgrade,
/datum/eldritch_knowledge/curse/corrosion,
/datum/eldritch_knowledge/crucible
)
route = PATH_RUST
/datum/eldritch_knowledge/rust_regen
@@ -55,7 +65,11 @@
desc = "Passively heals you and provides stun resistance when you are on rusted tiles."
gain_text = "The strength was unparalleled, unnatural. The Blacksmith was smiling."
cost = 1
next_knowledge = list(/datum/eldritch_knowledge/rust_mark,/datum/eldritch_knowledge/armor,/datum/eldritch_knowledge/essence)
next_knowledge = list(
/datum/eldritch_knowledge/rust_mark,
/datum/eldritch_knowledge/armor,
/datum/eldritch_knowledge/essence
)
route = PATH_RUST
/datum/eldritch_knowledge/rust_regen/on_gain(mob/user)
@@ -203,7 +217,13 @@
var/list/edge_turfs = list()
var/list/turfs = list()
var/turf/centre
var/static/list/blacklisted_turfs = typecacheof(list(/turf/open/indestructible,/turf/closed/indestructible,/turf/open/space,/turf/open/lava,/turf/open/chasm))
var/static/list/blacklisted_turfs = typecacheof(list(
/turf/open/indestructible,
/turf/closed/indestructible,
/turf/open/space,
/turf/open/lava,
/turf/open/chasm
))
var/spread_per_sec = 6
@@ -224,14 +244,13 @@
if(edge_turfs.len < spread_am)
compile_turfs()
var/turf/T
var/turf/rust_affected
for(var/i in 0 to spread_am)
if(!edge_turfs.len)
continue
T = pick(edge_turfs - turfs)
T.rust_heretic_act()
turfs += T
rust_affected = pick(edge_turfs - turfs)
rust_affected.rust_heretic_act()
turfs += rust_affected
/**
@@ -245,8 +264,8 @@
var/max_dist = 1
for(var/turfie in turfs)
if(!istype(turfie,/turf/closed/wall/rust) && !istype(turfie,/turf/closed/wall/r_wall/rust) && !istype(turfie,/turf/open/floor/plating/rust))
removal_list +=turfie
max_dist = max(max_dist,get_dist(turfie,centre)+1)
removal_list += turfie
max_dist = max(max_dist, get_dist(turfie,centre) +1)
turfs -= removal_list
for(var/turfie in spiral_range_turfs(max_dist,centre,FALSE))
@@ -2,7 +2,14 @@
name = "Glimmer of Winter"
desc = "Opens up the path of void to you. Allows you to transmute a knife in a sub-zero temperature into a void blade."
gain_text = "I feel a shimmer in the air, atmosphere around me gets colder. I feel my body realizing the emptiness of existance. Something's watching me"
banned_knowledge = list(/datum/eldritch_knowledge/base_ash,/datum/eldritch_knowledge/base_flesh,/datum/eldritch_knowledge/final/ash_final,/datum/eldritch_knowledge/final/flesh_final,/datum/eldritch_knowledge/base_rust,/datum/eldritch_knowledge/final/rust_final)
banned_knowledge = list(
/datum/eldritch_knowledge/base_ash,
/datum/eldritch_knowledge/base_flesh,
/datum/eldritch_knowledge/final/ash_final,
/datum/eldritch_knowledge/final/flesh_final,
/datum/eldritch_knowledge/base_rust,
/datum/eldritch_knowledge/final/rust_final
)
next_knowledge = list(/datum/eldritch_knowledge/void_grasp)
required_atoms = list(/obj/item/kitchen/knife)
result_atoms = list(/obj/item/melee/sickly_blade/void)
@@ -38,12 +45,12 @@
. = ..()
if(!ishuman(target))
return
var/mob/living/carbon/human/H = target
var/datum/status_effect/eldritch/E = H.has_status_effect(/datum/status_effect/eldritch/rust) || H.has_status_effect(/datum/status_effect/eldritch/ash) || H.has_status_effect(/datum/status_effect/eldritch/flesh) || H.has_status_effect(/datum/status_effect/eldritch/void)
if(!E)
var/mob/living/carbon/human/victim = target
var/datum/status_effect/eldritch/effect = victim.has_status_effect(/datum/status_effect/eldritch/rust) || victim.has_status_effect(/datum/status_effect/eldritch/ash) || victim.has_status_effect(/datum/status_effect/eldritch/flesh) || victim.has_status_effect(/datum/status_effect/eldritch/void)
if(!effect)
return
E.on_effect()
H.silent += 3
effect.on_effect()
victim.silent += 3
/datum/eldritch_knowledge/cold_snap
name = "Aristocrat's Way"
@@ -55,12 +62,12 @@
/datum/eldritch_knowledge/cold_snap/on_gain(mob/user)
. = ..()
ADD_TRAIT(user,TRAIT_RESISTCOLD,MAGIC_TRAIT)
ADD_TRAIT(user, TRAIT_RESISTCOLD, MAGIC_TRAIT)
ADD_TRAIT(user, TRAIT_NOBREATH, MAGIC_TRAIT)
/datum/eldritch_knowledge/cold_snap/on_lose(mob/user)
. = ..()
REMOVE_TRAIT(user,TRAIT_RESISTCOLD,MAGIC_TRAIT)
REMOVE_TRAIT(user, TRAIT_RESISTCOLD, MAGIC_TRAIT)
REMOVE_TRAIT(user, TRAIT_NOBREATH, MAGIC_TRAIT)
/datum/eldritch_knowledge/void_cloak
@@ -78,7 +85,11 @@
desc = "Your mansus grasp now applies mark of void status effect. To proc the mark, use your sickly blade on the marked. Mark of void when procced lowers the victims body temperature significantly."
cost = 2
next_knowledge = list(/datum/eldritch_knowledge/spell/void_phase)
banned_knowledge = list(/datum/eldritch_knowledge/rust_mark,/datum/eldritch_knowledge/ash_mark,/datum/eldritch_knowledge/flesh_mark)
banned_knowledge = list(
/datum/eldritch_knowledge/rust_mark,
/datum/eldritch_knowledge/ash_mark,
/datum/eldritch_knowledge/flesh_mark
)
route = PATH_VOID
/datum/eldritch_knowledge/void_mark/on_mansus_grasp(atom/target, mob/user, proximity_flag, click_parameters)
@@ -95,7 +106,11 @@
desc = "You gain a long range pointed blink that allows you to instantly teleport to your location, it causes aoe damage around you and your chosen location."
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/pointed/void_blink
next_knowledge = list(/datum/eldritch_knowledge/rune_carver,/datum/eldritch_knowledge/crucible,/datum/eldritch_knowledge/void_blade_upgrade)
next_knowledge = list(
/datum/eldritch_knowledge/rune_carver,
/datum/eldritch_knowledge/crucible,
/datum/eldritch_knowledge/void_blade_upgrade
)
route = PATH_VOID
/datum/eldritch_knowledge/rune_carver
@@ -122,7 +137,11 @@
desc = "You can now use your blade on a distant marked target to move to them and attack them."
cost = 2
next_knowledge = list(/datum/eldritch_knowledge/spell/voidpull)
banned_knowledge = list(/datum/eldritch_knowledge/ash_blade_upgrade,/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/rust_blade_upgrade)
banned_knowledge = list(
/datum/eldritch_knowledge/ash_blade_upgrade,
/datum/eldritch_knowledge/flesh_blade_upgrade,
/datum/eldritch_knowledge/rust_blade_upgrade
)
route = PATH_VOID
/datum/eldritch_knowledge/void_blade_upgrade/on_ranged_attack_eldritch_blade(atom/target, mob/user, click_parameters)
@@ -145,7 +164,11 @@
desc = "You gain an ability that let's you pull people around you closer to you."
cost = 1
spell_to_add = /obj/effect/proc_holder/spell/targeted/void_pull
next_knowledge = list(/datum/eldritch_knowledge/final/void_final,/datum/eldritch_knowledge/spell/blood_siphon,/datum/eldritch_knowledge/summon/rusty)
next_knowledge = list(
/datum/eldritch_knowledge/final/void_final,
/datum/eldritch_knowledge/spell/blood_siphon,
/datum/eldritch_knowledge/summon/rusty
)
route = PATH_VOID
/datum/eldritch_knowledge/final/void_final
@@ -161,12 +184,12 @@
var/datum/weather/void_storm/storm
/datum/eldritch_knowledge/final/void_final/on_finished_recipe(mob/living/user, list/atoms, loc)
var/mob/living/carbon/human/H = user
H.physiology.brute_mod *= 0.5
H.physiology.burn_mod *= 0.5
ADD_TRAIT(H, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT)
H.client?.give_award(/datum/award/achievement/misc/void_ascension, H)
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [H.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", ANNOUNCER_SPANOMALIES)
var/mob/living/carbon/human/waltzing = user
waltzing.physiology.brute_mod *= 0.5
waltzing.physiology.burn_mod *= 0.5
ADD_TRAIT(waltzing, TRAIT_RESISTLOWPRESSURE, MAGIC_TRAIT)
waltzing.client?.give_award(/datum/award/achievement/misc/void_ascension, waltzing)
priority_announce("$^@&#*$^@(#&$(@&#^$&#^@# The nobleman of void [waltzing.real_name] has arrived, step along the Waltz that ends worlds! $^@&#*$^@(#&$(@&#^$&#^@#","#$^@&#*$^@(#&$(@&#^$&#^@#", ANNOUNCER_SPANOMALIES)
sound_loop = new(list(user),TRUE,TRUE)
return ..()