April sync (#360)
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
return istype(M) && M.has_antag_datum(/datum/antagonist/cultist, TRUE)
|
||||
|
||||
/proc/is_sacrifice_target(datum/mind/mind)
|
||||
if(ticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = ticker.mode
|
||||
if(SSticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = SSticker.mode
|
||||
if(mind == cult_mode.sacrifice_target)
|
||||
return 1
|
||||
return 0
|
||||
@@ -104,7 +104,7 @@
|
||||
var/list/possible_targets = get_unconvertables()
|
||||
if(!possible_targets.len)
|
||||
message_admins("Cult Sacrifice: Could not find unconvertable target, checking for convertable target.")
|
||||
for(var/mob/living/carbon/human/player in player_list)
|
||||
for(var/mob/living/carbon/human/player in GLOB.player_list)
|
||||
if(player.mind && !(player.mind in cultists_to_cult))
|
||||
possible_targets += player.mind
|
||||
if(possible_targets.len > 0)
|
||||
@@ -175,18 +175,18 @@
|
||||
return TRUE
|
||||
|
||||
/datum/game_mode/proc/update_cult_icons_added(datum/mind/cult_mind)
|
||||
var/datum/atom_hud/antag/culthud = huds[ANTAG_HUD_CULT]
|
||||
var/datum/atom_hud/antag/culthud = GLOB.huds[ANTAG_HUD_CULT]
|
||||
culthud.join_hud(cult_mind.current)
|
||||
set_antag_hud(cult_mind.current, "cult")
|
||||
|
||||
/datum/game_mode/proc/update_cult_icons_removed(datum/mind/cult_mind)
|
||||
var/datum/atom_hud/antag/culthud = huds[ANTAG_HUD_CULT]
|
||||
var/datum/atom_hud/antag/culthud = GLOB.huds[ANTAG_HUD_CULT]
|
||||
culthud.leave_hud(cult_mind.current)
|
||||
set_antag_hud(cult_mind.current, null)
|
||||
|
||||
/datum/game_mode/cult/proc/get_unconvertables()
|
||||
var/list/ucs = list()
|
||||
for(var/mob/living/carbon/human/player in player_list)
|
||||
for(var/mob/living/carbon/human/player in GLOB.player_list)
|
||||
if(player.mind && !is_convertable_to_cult(player) && !(player.mind in cultists_to_cult))
|
||||
ucs += player.mind
|
||||
return ucs
|
||||
@@ -198,7 +198,7 @@
|
||||
if(cult_objectives.Find("eldergod"))
|
||||
cult_fail += eldergod //1 by default, 0 if the elder god has been summoned at least once
|
||||
if(cult_objectives.Find("sacrifice"))
|
||||
if(sacrifice_target && !sacrificed.Find(sacrifice_target)) //if the target has been sacrificed, ignore this step. otherwise, add 1 to cult_fail
|
||||
if(sacrifice_target && !GLOB.sacrificed.Find(sacrifice_target)) //if the target has been GLOB.sacrificed, ignore this step. otherwise, add 1 to cult_fail
|
||||
cult_fail++
|
||||
return cult_fail //if any objectives aren't met, failure
|
||||
|
||||
@@ -237,14 +237,14 @@
|
||||
if(!check_survive())
|
||||
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='greenannounce'>Success!</span>"
|
||||
feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]")
|
||||
ticker.news_report = CULT_ESCAPE
|
||||
SSticker.news_report = CULT_ESCAPE
|
||||
else
|
||||
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='boldannounce'>Fail.</span>"
|
||||
feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]")
|
||||
ticker.news_report = CULT_FAILURE
|
||||
SSticker.news_report = CULT_FAILURE
|
||||
if("sacrifice")
|
||||
if(sacrifice_target)
|
||||
if(sacrifice_target in sacrificed)
|
||||
if(sacrifice_target in GLOB.sacrificed)
|
||||
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <span class='greenannounce'>Success!</span>"
|
||||
feedback_add_details("cult_objective","cult_sacrifice|SUCCESS")
|
||||
else if(sacrifice_target && sacrifice_target.current)
|
||||
@@ -257,11 +257,11 @@
|
||||
if(!eldergod)
|
||||
explanation = "Summon Nar-Sie. <span class='greenannounce'>Success!</span>"
|
||||
feedback_add_details("cult_objective","cult_narsie|SUCCESS")
|
||||
ticker.news_report = CULT_SUMMON
|
||||
SSticker.news_report = CULT_SUMMON
|
||||
else
|
||||
explanation = "Summon Nar-Sie. <span class='boldannounce'>Fail.</span>"
|
||||
feedback_add_details("cult_objective","cult_narsie|FAIL")
|
||||
ticker.news_report = CULT_FAILURE
|
||||
SSticker.news_report = CULT_FAILURE
|
||||
|
||||
text += "<br><B>Objective #[obj_count]</B>: [explanation]"
|
||||
to_chat(world, text)
|
||||
@@ -270,7 +270,7 @@
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_cult()
|
||||
if( cult.len || (ticker && istype(ticker.mode,/datum/game_mode/cult)) )
|
||||
if( cult.len || (SSticker && istype(SSticker.mode,/datum/game_mode/cult)) )
|
||||
var/text = "<br><font size=3><b>The cultists were:</b></font>"
|
||||
for(var/datum/mind/cultist in cult)
|
||||
text += printplayer(cultist)
|
||||
|
||||
@@ -17,22 +17,17 @@
|
||||
return
|
||||
|
||||
cultist_commune(usr, input)
|
||||
return
|
||||
|
||||
/proc/cultist_commune(mob/living/user, message)
|
||||
if(!message)
|
||||
return
|
||||
if(!ishuman(user))
|
||||
user.say("O bidai nabora se[pick("'","`")]sma!")
|
||||
user.say(html_decode(message))
|
||||
else
|
||||
user.whisper("O bidai nabora se[pick("'","`")]sma!")
|
||||
user.whisper(html_decode(message))
|
||||
user.whisper("O bidai nabora se[pick("'","`")]sma!")
|
||||
user.whisper(html_decode(message))
|
||||
var/my_message = "<span class='cultitalic'><b>[(ishuman(user) ? "Acolyte" : "Construct")] [findtextEx(user.name, user.real_name) ? user.name : "[user.real_name] (as [user.name])"]:</b> [message]</span>"
|
||||
for(var/mob/M in mob_list)
|
||||
for(var/mob/M in GLOB.mob_list)
|
||||
if(iscultist(M))
|
||||
to_chat(M, my_message)
|
||||
else if(M in dead_mob_list)
|
||||
else if(M in GLOB.dead_mob_list)
|
||||
var/link = FOLLOW_LINK(M, user)
|
||||
to_chat(M, "[link] [my_message]")
|
||||
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
return
|
||||
if(!iscultist(user))
|
||||
user.dropItemToGround(src, TRUE)
|
||||
step(src, pick(alldirs))
|
||||
step(src, pick(GLOB.alldirs))
|
||||
to_chat(user, "<span class='warning'>\The [src] flickers out of your hands, your connection to this dimension is too strong!</span>")
|
||||
return
|
||||
|
||||
@@ -375,7 +375,7 @@
|
||||
if(istype(A, /obj/item))
|
||||
|
||||
var/list/cultists = list()
|
||||
for(var/datum/mind/M in ticker.mode.cult)
|
||||
for(var/datum/mind/M in SSticker.mode.cult)
|
||||
if(M.current && M.current.stat != DEAD)
|
||||
cultists |= M.current
|
||||
var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user)
|
||||
@@ -403,5 +403,4 @@
|
||||
else
|
||||
..()
|
||||
to_chat(user, "<span class='warning'>\The [src] can only transport items!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -122,12 +122,6 @@
|
||||
to_chat(user, "<span class='cultitalic'>You work the forge as dark knowledge guides your hands, creating [N]!</span>")
|
||||
|
||||
|
||||
var/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
/turf/closed,
|
||||
/turf/open/floor/engine/cult,
|
||||
/turf/open/space,
|
||||
/turf/open/floor/plating/lava,
|
||||
/turf/open/chasm))
|
||||
|
||||
/obj/structure/destructible/cult/pylon
|
||||
name = "pylon"
|
||||
@@ -177,6 +171,12 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
if(istype(T, /turf/open/floor/engine/cult))
|
||||
cultturfs |= T
|
||||
continue
|
||||
var/static/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
/turf/closed,
|
||||
/turf/open/floor/engine/cult,
|
||||
/turf/open/space,
|
||||
/turf/open/floor/plating/lava,
|
||||
/turf/open/chasm))
|
||||
if(is_type_in_typecache(T, blacklisted_pylon_turfs))
|
||||
continue
|
||||
else
|
||||
|
||||
@@ -15,11 +15,12 @@ This file contains the arcane tome files.
|
||||
|
||||
/obj/item/weapon/tome/New()
|
||||
..()
|
||||
if(!LAZYLEN(rune_types))
|
||||
rune_types = list()
|
||||
if(!LAZYLEN(GLOB.rune_types))
|
||||
GLOB.rune_types = list()
|
||||
var/static/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed)
|
||||
for(var/i_can_do_loops_now_thanks_remie in non_revealed_runes)
|
||||
var/obj/effect/rune/R = i_can_do_loops_now_thanks_remie
|
||||
rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes
|
||||
GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes
|
||||
|
||||
/obj/item/weapon/tome/examine(mob/user)
|
||||
..()
|
||||
@@ -180,10 +181,10 @@ This file contains the arcane tome files.
|
||||
|
||||
if(!check_rune_turf(Turf, user))
|
||||
return
|
||||
entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in rune_types
|
||||
entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in GLOB.rune_types
|
||||
if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
return
|
||||
rune_to_scribe = rune_types[entered_rune_name]
|
||||
rune_to_scribe = GLOB.rune_types[entered_rune_name]
|
||||
if(!rune_to_scribe)
|
||||
return
|
||||
if(initial(rune_to_scribe.req_keyword))
|
||||
@@ -196,12 +197,12 @@ This file contains the arcane tome files.
|
||||
if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
return
|
||||
if(ispath(rune_to_scribe, /obj/effect/rune/narsie))
|
||||
if(ticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = ticker.mode
|
||||
if(SSticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = SSticker.mode
|
||||
if(!("eldergod" in cult_mode.cult_objectives))
|
||||
to_chat(user, "<span class='warning'>Nar-Sie does not wish to be summoned!</span>")
|
||||
return
|
||||
if(cult_mode.sacrifice_target && !(cult_mode.sacrifice_target in sacrificed))
|
||||
if(cult_mode.sacrifice_target && !(cult_mode.sacrifice_target in GLOB.sacrificed))
|
||||
to_chat(user, "<span class='warning'>The sacrifice is not complete. The portal would lack the power to open if you tried!</span>")
|
||||
return
|
||||
if(!cult_mode.eldergod)
|
||||
@@ -244,6 +245,7 @@ This file contains the arcane tome files.
|
||||
if(S && !QDELETED(S))
|
||||
qdel(S)
|
||||
var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword)
|
||||
R.add_mob_blood(user)
|
||||
to_chat(user, "<span class='cult'>The [lowertext(R.cultist_name)] rune [R.cultist_desc]</span>")
|
||||
feedback_add_details("cult_runes_scribed", R.cultist_name)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/var/list/sacrificed = list() //a mixed list of minds and mobs
|
||||
var/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed)
|
||||
var/global/list/rune_types //Every rune that can be drawn by tomes
|
||||
|
||||
GLOBAL_LIST_EMPTY(sacrificed) //a mixed list of minds and mobs
|
||||
GLOBAL_LIST(rune_types) //Every rune that can be drawn by tomes
|
||||
GLOBAL_LIST_EMPTY(teleport_runes)
|
||||
GLOBAL_LIST_EMPTY(wall_runes)
|
||||
/*
|
||||
|
||||
This file contains runes.
|
||||
@@ -58,13 +58,10 @@ To draw a rune, use an arcane tome.
|
||||
if(istype(I, /obj/item/weapon/tome) && iscultist(user))
|
||||
to_chat(user, "<span class='notice'>You carefully erase the [lowertext(cultist_name)] rune.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
else if(istype(I, /obj/item/weapon/nullrod))
|
||||
user.say("BEGONE FOUL MAGIKS!!")
|
||||
to_chat(user, "<span class='danger'>You disrupt the magic of [src] with [I].</span>")
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/effect/rune/attack_hand(mob/living/user)
|
||||
if(!iscultist(user))
|
||||
@@ -143,20 +140,20 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
do_invoke_glow()
|
||||
|
||||
/obj/effect/rune/proc/do_invoke_glow()
|
||||
set waitfor = FALSE
|
||||
var/oldtransform = transform
|
||||
spawn(0) //animate is a delay, we want to avoid being delayed
|
||||
animate(src, transform = matrix()*2, alpha = 0, time = 5) //fade out
|
||||
animate(transform = oldtransform, alpha = 255, time = 0)
|
||||
animate(src, transform = matrix()*2, alpha = 0, time = 5) //fade out
|
||||
sleep(5)
|
||||
animate(src, transform = oldtransform, alpha = 255, time = 0)
|
||||
|
||||
/obj/effect/rune/proc/fail_invoke()
|
||||
//This proc contains the effects of a rune if it is not invoked correctly, through either invalid wording or not enough cultists. By default, it's just a basic fizzle.
|
||||
visible_message("<span class='warning'>The markings pulse with a \
|
||||
small flash of red light, then fall dark.</span>")
|
||||
spawn(0) //animate is a delay, we want to avoid being delayed
|
||||
var/oldcolor = color
|
||||
color = rgb(255, 0, 0)
|
||||
animate(src, color = oldcolor, time = 5)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5)
|
||||
var/oldcolor = color
|
||||
color = rgb(255, 0, 0)
|
||||
animate(src, color = oldcolor, time = 5)
|
||||
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5)
|
||||
|
||||
//Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user.
|
||||
/obj/effect/rune/malformed
|
||||
@@ -179,7 +176,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
|
||||
/mob/proc/null_rod_check() //The null rod, if equipped, will protect the holder from the effects of most runes
|
||||
var/obj/item/weapon/nullrod/N = locate() in src
|
||||
if(N && !ratvar_awakens) //If Nar-Sie or Ratvar are alive, null rods won't protect you
|
||||
if(N && !GLOB.ratvar_awakens) //If Nar-Sie or Ratvar are alive, null rods won't protect you
|
||||
return N
|
||||
return 0
|
||||
|
||||
@@ -247,7 +244,6 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
if(!P.info && !istype(P, /obj/item/weapon/paper/talisman))
|
||||
. |= P
|
||||
|
||||
var/list/teleport_runes = list()
|
||||
/obj/effect/rune/teleport
|
||||
cultist_name = "Teleport"
|
||||
cultist_desc = "warps everything above it to another chosen teleport rune."
|
||||
@@ -262,17 +258,17 @@ var/list/teleport_runes = list()
|
||||
var/area/A = get_area(src)
|
||||
var/locname = initial(A.name)
|
||||
listkey = set_keyword ? "[set_keyword] [locname]":"[locname]"
|
||||
teleport_runes += src
|
||||
GLOB.teleport_runes += src
|
||||
|
||||
/obj/effect/rune/teleport/Destroy()
|
||||
teleport_runes -= src
|
||||
GLOB.teleport_runes -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/rune/teleport/invoke(var/list/invokers)
|
||||
var/mob/living/user = invokers[1] //the first invoker is always the user
|
||||
var/list/potential_runes = list()
|
||||
var/list/teleportnames = list()
|
||||
for(var/R in teleport_runes)
|
||||
for(var/R in GLOB.teleport_runes)
|
||||
var/obj/effect/rune/teleport/T = R
|
||||
if(T != src && (T.z <= ZLEVEL_SPACEMAX))
|
||||
potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T
|
||||
@@ -392,7 +388,7 @@ var/list/teleport_runes = list()
|
||||
convertee.visible_message("<span class='warning'>[convertee] writhes in pain \
|
||||
[brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!</span>", \
|
||||
"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
|
||||
ticker.mode.add_cultist(convertee.mind, 1)
|
||||
SSticker.mode.add_cultist(convertee.mind, 1)
|
||||
new /obj/item/weapon/tome(get_turf(src))
|
||||
convertee.mind.special_role = "Cultist"
|
||||
to_chat(convertee, "<span class='cultitalic'><b>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
|
||||
@@ -410,11 +406,11 @@ var/list/teleport_runes = list()
|
||||
var/sacrifice_fulfilled = FALSE
|
||||
|
||||
if(sacrificial.mind)
|
||||
sacrificed += sacrificial.mind
|
||||
GLOB.sacrificed += sacrificial.mind
|
||||
if(is_sacrifice_target(sacrificial.mind))
|
||||
sacrifice_fulfilled = TRUE
|
||||
else
|
||||
sacrificed += sacrificial
|
||||
GLOB.sacrificed += sacrificial
|
||||
|
||||
new /obj/effect/overlay/temp/cult/sac(get_turf(src))
|
||||
for(var/M in invokers)
|
||||
@@ -459,10 +455,10 @@ var/list/teleport_runes = list()
|
||||
|
||||
/obj/effect/rune/narsie/New()
|
||||
. = ..()
|
||||
poi_list |= src
|
||||
GLOB.poi_list |= src
|
||||
|
||||
/obj/effect/rune/narsie/Destroy()
|
||||
poi_list -= src
|
||||
GLOB.poi_list -= src
|
||||
. = ..()
|
||||
|
||||
/obj/effect/rune/narsie/talismanhide() //can't hide this, and you wouldn't want to
|
||||
@@ -476,8 +472,8 @@ var/list/teleport_runes = list()
|
||||
|
||||
var/datum/game_mode/cult/cult_mode
|
||||
|
||||
if(ticker.mode.name == "cult")
|
||||
cult_mode = ticker.mode
|
||||
if(SSticker.mode.name == "cult")
|
||||
cult_mode = SSticker.mode
|
||||
|
||||
if(!cult_mode && !ignore_gamemode)
|
||||
for(var/M in invokers)
|
||||
@@ -486,7 +482,7 @@ var/list/teleport_runes = list()
|
||||
log_game("Summon Nar-Sie rune failed - gametype is not cult")
|
||||
return
|
||||
|
||||
if(locate(/obj/singularity/narsie) in poi_list)
|
||||
if(locate(/obj/singularity/narsie) in GLOB.poi_list)
|
||||
for(var/M in invokers)
|
||||
to_chat(M, "<span class='warning'>Nar-Sie is already on this plane!</span>")
|
||||
log_game("Summon Nar-Sie rune failed - already summoned")
|
||||
@@ -510,15 +506,13 @@ var/list/teleport_runes = list()
|
||||
log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with a tome")
|
||||
message_admins("[key_name_admin(user)] erased a Narsie rune with a tome")
|
||||
..()
|
||||
return
|
||||
else
|
||||
if(istype(I, /obj/item/weapon/nullrod)) //Begone foul magiks. You cannot hinder me.
|
||||
log_game("Summon Narsie rune erased by [user.mind.key] (ckey) using a null rod")
|
||||
message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod")
|
||||
..()
|
||||
return
|
||||
|
||||
//Rite of Resurrection: Requires the corpse of a cultist and that there have been less revives than the number of people sacrificed
|
||||
//Rite of Resurrection: Requires the corpse of a cultist and that there have been less revives than the number of people GLOB.sacrificed
|
||||
/obj/effect/rune/raise_dead
|
||||
cultist_name = "Raise Dead"
|
||||
cultist_desc = "requires the corpse of a cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be revived."
|
||||
@@ -531,8 +525,8 @@ var/list/teleport_runes = list()
|
||||
..()
|
||||
if(iscultist(user) || user.stat == DEAD)
|
||||
var/revive_number = 0
|
||||
if(sacrificed.len)
|
||||
revive_number = sacrificed.len - revives_used
|
||||
if(GLOB.sacrificed.len)
|
||||
revive_number = GLOB.sacrificed.len - revives_used
|
||||
to_chat(user, "<b>Revives Remaining:</b> [revive_number]")
|
||||
|
||||
/obj/effect/rune/raise_dead/invoke(var/list/invokers)
|
||||
@@ -550,8 +544,8 @@ var/list/teleport_runes = list()
|
||||
log_game("Raise Dead rune failed - no corpses to revive")
|
||||
fail_invoke()
|
||||
return
|
||||
if(!sacrificed.len || sacrificed.len <= revives_used)
|
||||
to_chat(user, "<span class='warning'>You have sacrificed too few people to revive a cultist!</span>")
|
||||
if(!GLOB.sacrificed.len || GLOB.sacrificed.len <= revives_used)
|
||||
to_chat(user, "<span class='warning'>You have GLOB.sacrificed too few people to revive a cultist!</span>")
|
||||
fail_invoke()
|
||||
return
|
||||
if(potential_revive_mobs.len > 1)
|
||||
@@ -594,7 +588,7 @@ var/list/teleport_runes = list()
|
||||
fail_invoke()
|
||||
log_game("Raise Dead rune failed - revival target has no ghost")
|
||||
return 0
|
||||
if(!sacrificed.len || sacrificed.len <= revives_used)
|
||||
if(!GLOB.sacrificed.len || GLOB.sacrificed.len <= revives_used)
|
||||
to_chat(user, "<span class='warning'>You have sacrificed too few people to revive a cultist!</span>")
|
||||
fail_invoke()
|
||||
log_game("Raise Dead rune failed - too few sacrificed")
|
||||
@@ -710,8 +704,6 @@ var/list/teleport_runes = list()
|
||||
sleep(1)
|
||||
rune_in_use = 0
|
||||
|
||||
|
||||
var/list/wall_runes = list()
|
||||
//Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo.
|
||||
/obj/effect/rune/wall
|
||||
cultist_name = "Form Barrier"
|
||||
@@ -725,7 +717,7 @@ var/list/wall_runes = list()
|
||||
|
||||
/obj/effect/rune/wall/New()
|
||||
..()
|
||||
wall_runes += src
|
||||
GLOB.wall_runes += src
|
||||
|
||||
/obj/effect/rune/wall/examine(mob/user)
|
||||
..()
|
||||
@@ -734,7 +726,7 @@ var/list/wall_runes = list()
|
||||
|
||||
/obj/effect/rune/wall/Destroy()
|
||||
density = 0
|
||||
wall_runes -= src
|
||||
GLOB.wall_runes -= src
|
||||
air_update_turf(1)
|
||||
return ..()
|
||||
|
||||
@@ -757,7 +749,7 @@ var/list/wall_runes = list()
|
||||
C.apply_damage(2, BRUTE, pick("l_arm", "r_arm"))
|
||||
|
||||
/obj/effect/rune/wall/proc/spread_density()
|
||||
for(var/R in wall_runes)
|
||||
for(var/R in GLOB.wall_runes)
|
||||
var/obj/effect/rune/wall/W = R
|
||||
if(W.z == z && get_dist(src, W) <= 2 && !W.density && !W.recharging)
|
||||
W.density = TRUE
|
||||
@@ -806,7 +798,7 @@ var/list/wall_runes = list()
|
||||
/obj/effect/rune/summon/invoke(var/list/invokers)
|
||||
var/mob/living/user = invokers[1]
|
||||
var/list/cultists = list()
|
||||
for(var/datum/mind/M in ticker.mode.cult)
|
||||
for(var/datum/mind/M in SSticker.mode.cult)
|
||||
if(!(M.current in invokers) && M.current && M.current.stat != DEAD)
|
||||
cultists |= M.current
|
||||
var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists
|
||||
@@ -992,7 +984,7 @@ var/list/wall_runes = list()
|
||||
var/obj/structure/emergency_shield/invoker/N = new(T)
|
||||
|
||||
new_human.key = ghost_to_spawn.key
|
||||
ticker.mode.add_cultist(new_human.mind, 0)
|
||||
SSticker.mode.add_cultist(new_human.mind, 0)
|
||||
to_chat(new_human, "<span class='cultitalic'><b>You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.</b></span>")
|
||||
|
||||
while(user in T)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user, successfuluse = 1)
|
||||
var/list/potential_runes = list()
|
||||
var/list/teleportnames = list()
|
||||
for(var/R in teleport_runes)
|
||||
for(var/R in GLOB.teleport_runes)
|
||||
var/obj/effect/rune/teleport/T = R
|
||||
potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T
|
||||
|
||||
@@ -421,7 +421,6 @@
|
||||
if(uses <= 0)
|
||||
user.drop_item()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling
|
||||
name = "cult shackles"
|
||||
|
||||
Reference in New Issue
Block a user