diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 415536e45c5..4f6a1e71a98 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -841,6 +841,9 @@
message_admins("[key_name_admin(usr)] has de-culted [key_name_admin(current)]")
if("cultist")
if(!(src in SSticker.mode.cult))
+ if(!SSticker.mode.ascend_percent) // If the rise/ascend thresholds haven't been set (non-cult rounds)
+ SSticker.mode.cult_objs.setup()
+ SSticker.mode.cult_threshold_check()
SSticker.mode.add_cultist(src)
special_role = SPECIAL_ROLE_CULTIST
to_chat(current, CULT_GREETING)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index b35c07cc884..5d230014137 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -48,7 +48,7 @@ GLOBAL_LIST_EMPTY(all_cults)
/datum/game_mode/cult
name = "cult"
config_tag = "cult"
- restricted_jobs = list("Chaplain","AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Security Pod Pilot", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer")
+ restricted_jobs = list("Chaplain", "AI", "Cyborg", "Internal Affairs Agent", "Security Officer", "Warden", "Detective", "Security Pod Pilot", "Head of Security", "Captain", "Head of Personnel", "Blueshield", "Nanotrasen Representative", "Magistrate", "Brig Physician", "Nanotrasen Navy Officer", "Special Operations Officer", "Syndicate Officer")
protected_jobs = list()
required_players = 30
required_enemies = 3
@@ -95,8 +95,8 @@ GLOBAL_LIST_EMPTY(all_cults)
add_cult_actions(cult_mind)
update_cult_icons_added(cult_mind)
cult_objs.study(cult_mind.current)
- threshold_check()
- addtimer(CALLBACK(src, .proc/threshold_check), 2 MINUTES) // Check again in 2 minutes for latejoiners
+ cult_threshold_check()
+ addtimer(CALLBACK(src, .proc/cult_threshold_check), 2 MINUTES) // Check again in 2 minutes for latejoiners
..()
/**
@@ -108,7 +108,7 @@ GLOBAL_LIST_EMPTY(all_cults)
* Below 100 players, [CULT_RISEN_LOW] and [CULT_ASCENDANT_LOW] are used.
* Above 100 players, [CULT_RISEN_HIGH] and [CULT_ASCENDANT_HIGH] are used.
*/
-/datum/game_mode/cult/proc/threshold_check()
+/datum/game_mode/proc/cult_threshold_check()
var/players = length(GLOB.player_list)
var/cultists = get_cultists() // Don't count the starting cultists towards the number of needed conversions
if(players >= CULT_POPULATION_THRESHOLD)
@@ -212,7 +212,7 @@ GLOBAL_LIST_EMPTY(all_cults)
if((cult_players >= rise_number) && !cult_risen)
cult_risen = TRUE
for(var/datum/mind/M in cult)
- if(!M.current || !ishuman(M))
+ if(!M.current || !ishuman(M.current))
continue
SEND_SOUND(M.current, 'sound/hallucinations/i_see_you2.ogg')
to_chat(M.current, "The veil weakens as your cult grows, your eyes begin to glow...")
@@ -221,7 +221,7 @@ GLOBAL_LIST_EMPTY(all_cults)
else if(cult_players >= ascend_number)
cult_ascendant = TRUE
for(var/datum/mind/M in cult)
- if(!M.current || !ishuman(M))
+ if(!M.current || !ishuman(M.current))
continue
SEND_SOUND(M.current, 'sound/hallucinations/im_here1.ogg')
to_chat(M.current, "Your cult is ascendant and the red harvest approaches - you cannot hide your true nature for much longer!")
@@ -291,18 +291,6 @@ GLOBAL_LIST_EMPTY(all_cults)
dagger.Grant(cult_mind.current)
cult_mind.current.update_action_buttons(TRUE)
-/datum/game_mode/cult/proc/get_unconvertables()
- var/list/ucs = list()
- for(var/mob/living/carbon/human/player in GLOB.player_list)
- if(player.mind && player.mind.offstation_role)
- continue
- if(!is_convertable_to_cult(player.mind))
- ucs += player.mind
- return ucs
-
-/atom/proc/cult_log(message)
- investigate_log(message, "cult")
-
/datum/game_mode/cult/declare_completion()
if(cult_objs.cult_status == NARSIE_HAS_RISEN)
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 0c6a6a5583b..337f3aa79bc 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -36,11 +36,15 @@
/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user)
if(iscultist(M))
if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion
- to_chat(user, "You remove the taint from [M].")
- var/amount = M.reagents.get_reagent_amount("holywater")
- M.reagents.del_reagent("holywater")
- M.reagents.add_reagent("unholywater", amount)
- add_attack_logs(user, M, "Hit with [src], removing the holy water from them")
+ if(M == user) // Targeting yourself
+ to_chat(user, "You can't remove holy water from yourself!")
+ else // Targeting someone else
+ to_chat(user, "You remove the taint from [M].")
+ to_chat(M, "[user] removes the taint from your body.")
+ var/amount = M.reagents.get_reagent_amount("holywater")
+ M.reagents.del_reagent("holywater")
+ M.reagents.add_reagent("unholywater", amount)
+ add_attack_logs(user, M, "Hit with [src], removing the holy water from them")
return FALSE
. = ..()
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 32b6614c061..dba087151ac 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -43,7 +43,7 @@ To draw a rune, use a ritual dagger.
var/scribe_damage = 1
/// If nearby cultists will also chant when invoked
- var/allow_excess_invokers = 0
+ var/allow_excess_invokers = FALSE
/// If constructs can invoke it
var/construct_invoke = TRUE
@@ -910,7 +910,7 @@ structure_check() searches for nearby cultist structures required for the invoca
"Your link to the world fades. Your form breaks apart.")
for(var/obj/item/I in new_human.get_all_slots())
new_human.unEquip(I)
- SSticker.mode.remove_cultist(new_human, FALSE)
+ SSticker.mode.remove_cultist(new_human.mind, FALSE)
new_human.dust()
/obj/effect/rune/manifest/proc/ghostify(mob/living/user, turf/T)
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 4a93eb9e717..49b04c9c07f 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -161,7 +161,9 @@
icon_state = "purified_soulstone2"
if(iscultist(M))
SSticker.mode.remove_cultist(M.mind, FALSE)
- to_chat(M, "You feel the cult's influence vanish. Assist [user], your saviour, and get vengeance on those who enslaved you!")
+ to_chat(M, "An unfamiliar white light flashes through your mind, cleansing the taint of [SSticker.cultdat ? SSticker.cultdat.entity_title1 : "Nar'Sie"] \
+ and the memories of your time as their servant with it.")
+ to_chat(M, "Assist [user], your saviour, and get vengeance on those who enslaved you!")
else
to_chat(M, "Your soulstone has been exorcised, and you are now bound to obey [user]. ")
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index a7b7bb287c9..3ddc66c386c 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -455,8 +455,8 @@ GLOBAL_LIST_INIT(cloner_biomass_items, list(\
SSticker.mode.add_cult_actions(H.mind) // And all the actions
if(SSticker.mode.cult_risen)
SSticker.mode.rise(H)
- if(SSticker.mode.cult_ascendant)
- SSticker.mode.ascend(H)
+ if(SSticker.mode.cult_ascendant)
+ SSticker.mode.ascend(H)
if(H.mind.vampire)
H.mind.vampire.update_owner(H)
if((H.mind in SSticker.mode.vampire_thralls) || (H.mind in SSticker.mode.vampire_enthralled))
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 50588b0fc3b..521439c4cb6 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -47,11 +47,11 @@
return istype(M) && M.player_logged && M.stat != DEAD
/proc/isAntag(A)
- if(istype(A, /mob/living/carbon))
- var/mob/living/carbon/C = A
- if(C.mind && C.mind.special_role)
- return 1
- return 0
+ if(isliving(A))
+ var/mob/living/L = A
+ if(L.mind?.special_role)
+ return TRUE
+ return FALSE
/proc/isNonCrewAntag(A)
if(!isAntag(A))
diff --git a/icons/obj/cult.dmi b/icons/obj/cult.dmi
index 7b29b64865d..3990a894f33 100644
Binary files a/icons/obj/cult.dmi and b/icons/obj/cult.dmi differ