diff --git a/code/controllers/subsystem/religion.dm b/code/controllers/subsystem/religion.dm
new file mode 100644
index 00000000000..cba19f954f5
--- /dev/null
+++ b/code/controllers/subsystem/religion.dm
@@ -0,0 +1,14 @@
+var/datum/subsystem/religion/SSreligion
+
+/datum/subsystem/religion
+ name = "religion"
+ init_order = 19
+ flags = SS_NO_FIRE|SS_NO_INIT
+
+ var/bible_deity_name
+ var/Bible_icon_state
+ var/Bible_item_state
+ var/Bible_name
+ var/Bible_deity_name
+
+ var/holy_weapon
\ No newline at end of file
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index b58d10fd127..4c3540810f9 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -22,12 +22,6 @@ var/datum/subsystem/ticker/ticker
var/list/datum/mind/minds = list() //The characters in the game. Used for objective tracking.
- //These bible variables should be a preference
- var/Bible_icon_state //icon_state the chaplain has chosen for his bible
- var/Bible_item_state //item_state the chaplain has chosen for his bible
- var/Bible_name //name of the bible
- var/Bible_deity_name //name of chaplin's deity
-
var/list/syndicate_coalition = list() //list of traitor-compatible factions
var/list/factions = list() //list of all factions
var/list/availablefactions = list() //list of factions with openings
@@ -565,11 +559,6 @@ var/datum/subsystem/ticker/ticker
minds = ticker.minds
- Bible_icon_state = ticker.Bible_icon_state
- Bible_item_state = ticker.Bible_item_state
- Bible_name = ticker.Bible_name
- Bible_deity_name = ticker.Bible_deity_name
-
syndicate_coalition = ticker.syndicate_coalition
factions = ticker.factions
availablefactions = ticker.availablefactions
diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm
index 3c2f4629652..3006391afda 100644
--- a/code/game/objects/items/weapons/holy_weapons.dm
+++ b/code/game/objects/items/weapons/holy_weapons.dm
@@ -21,22 +21,30 @@
reskin_holy_weapon(user)
/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M)
- var/list/holy_weapons_list = typesof(/obj/item/weapon/nullrod)
- var/list/display_names = list()
- for(var/V in holy_weapons_list)
- var/atom/A = V
- display_names += initial(A.name)
+ var/obj/item/weapon/nullrod/holy_weapon
- var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names
- if(!src || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned)
- return
+ if(SSreligion.holy_weapon)
+ holy_weapon = SSreligion.holy_weapon
+ else
+ var/list/holy_weapons_list = typesof(/obj/item/weapon/nullrod)
+ var/list/display_names = list()
+ for(var/V in holy_weapons_list)
+ var/atom/A = V
+ display_names += initial(A.name)
- var/index = display_names.Find(choice)
- var/A = holy_weapons_list[index]
+ var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names
+ if(!src || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned)
+ return
- var/obj/item/weapon/nullrod/holy_weapon = new A
+ var/index = display_names.Find(choice)
+ var/A = holy_weapons_list[index]
+
+ holy_weapon = new A
+
+ SSreligion.holy_weapon = holy_weapon.type
+
+ feedback_set_details("chaplain_weapon","[choice]")
- feedback_set_details("chaplain_weapon","[choice]")
if(holy_weapon)
holy_weapon.reskinned = TRUE
diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm
index fa7760847db..d3eeeb0146b 100644
--- a/code/game/objects/items/weapons/storage/book.dm
+++ b/code/game/objects/items/weapons/storage/book.dm
@@ -50,7 +50,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
/obj/item/weapon/storage/book/bible/attack_self(mob/living/carbon/human/H)
if(!istype(H))
return
- if(ticker && !ticker.Bible_icon_state && H.job == "Chaplain")
+ if(!SSreligion.Bible_icon_state && H.job == "Chaplain")
//Open bible selection
var/dat = "
Pick Bible StylePick a bible style
"
@@ -95,7 +95,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
T.setDir(10)
/obj/item/weapon/storage/book/bible/Topic(href, href_list)
- if(href_list["seticon"] && ticker && !ticker.Bible_icon_state)
+ if(href_list["seticon"] && ticker && !SSreligion.Bible_icon_state)
var/iconi = text2num(href_list["seticon"])
var/biblename = biblenames[iconi]
@@ -107,9 +107,9 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
//Set biblespecific chapels
setupbiblespecifics(B, usr)
- if(ticker)
- ticker.Bible_icon_state = B.icon_state
- ticker.Bible_item_state = B.item_state
+
+ SSreligion.Bible_icon_state = B.icon_state
+ SSreligion.Bible_item_state = B.item_state
feedback_set_details("religion_book","[biblename]")
usr << browse(null, "window=editicon") // Close window
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index ba2ccc76d6d..da424739fa3 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -25,8 +25,8 @@
cross = image('icons/obj/storage.dmi',"kingyellow")
font_color = "blue"
prayer_type = "CHAPLAIN PRAYER"
- if (ticker && ticker.Bible_deity_name)
- deity = ticker.Bible_deity_name
+ if(SSreligion.Bible_deity_name)
+ deity = SSreligion.Bible_deity_name
else if(iscultist(usr))
cross = image('icons/obj/storage.dmi',"tome")
font_color = "red"
diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/civilian_chaplain.dm
index fd4e07be1d5..6605b7784b2 100644
--- a/code/modules/jobs/job_types/civilian_chaplain.dm
+++ b/code/modules/jobs/job_types/civilian_chaplain.dm
@@ -37,10 +37,10 @@ Chaplain
var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible/booze(H)
- if(ticker && ticker.Bible_deity_name)
- B.deity_name = ticker.Bible_deity_name
- B.name = ticker.Bible_name
- H << "There is already an established religion onboard the station. You are an acolyte of [ticker.Bible_deity_name]. Defer to the Chaplain."
+ if(SSreligion.Bible_deity_name)
+ B.deity_name = SSreligion.Bible_deity_name
+ B.name = SSreligion.Bible_name
+ H << "There is already an established religion onboard the station. You are an acolyte of [SSreligion.Bible_deity_name]. Defer to the Chaplain."
H.equip_to_slot_or_del(B, slot_in_backpack)
var/obj/item/weapon/nullrod/N = new(H)
H.equip_to_slot_or_del(N, slot_in_backpack)
@@ -77,14 +77,13 @@ Chaplain
else
B.name = "The Holy Book of [new_religion]"
feedback_set_details("religion_name","[new_religion]")
- ticker.Bible_name = B.name
+ SSreligion.Bible_name = B.name
var/new_deity = "Space Jesus"
if(H.client && H.client.prefs.custom_names["deity"])
new_deity = H.client.prefs.custom_names["deity"]
B.deity_name = new_deity
- if(ticker)
- ticker.Bible_deity_name = B.deity_name
+ SSreligion.Bible_deity_name = B.deity_name
feedback_set_details("religion_deity","[new_deity]")
H.equip_to_slot_or_del(B, slot_in_backpack)
diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm
index ad2609c5546..97b26cba54d 100644
--- a/code/modules/library/lib_machines.dm
+++ b/code/modules/library/lib_machines.dm
@@ -337,11 +337,11 @@ var/global/list/datum/cachedbook/cachedbooks // List of our cached book datums
if(!bibledelay)
var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible(src.loc)
- if(ticker && ( ticker.Bible_icon_state && ticker.Bible_item_state) )
- B.icon_state = ticker.Bible_icon_state
- B.item_state = ticker.Bible_item_state
- B.name = ticker.Bible_name
- B.deity_name = ticker.Bible_deity_name
+ if(SSreligion.Bible_icon_state && SSreligion.Bible_item_state)
+ B.icon_state = SSreligion.Bible_icon_state
+ B.item_state = SSreligion.Bible_item_state
+ B.name = SSreligion.Bible_name
+ B.deity_name = SSreligion.Bible_deity_name
bibledelay = 1
spawn(60)
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 895622cd285..4b548a50e85 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -60,8 +60,10 @@
playsound(get_turf(holder.my_atom), 'sound/effects/pray.ogg', 80, 0, round(created_volume/48))
strengthdiv = 8
for(var/mob/living/simple_animal/revenant/R in get_hearers_in_view(7,get_turf(holder.my_atom)))
- var/deity = ticker.Bible_deity_name
- if(!ticker.Bible_deity_name)
+ var/deity
+ if(SSreligion.Bible_deity_name)
+ deity = SSreligion.Bible_deity_name
+ else
deity = "Christ"
R << "The power of [deity] compels you!"
R.stun(20)
diff --git a/tgstation.dme b/tgstation.dme
index e7ce6f4ab59..10cbfb76971 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -159,6 +159,7 @@
#include "code\controllers\subsystem\persistence.dm"
#include "code\controllers\subsystem\pool.dm"
#include "code\controllers\subsystem\radio.dm"
+#include "code\controllers\subsystem\religion.dm"
#include "code\controllers\subsystem\server_maintenance.dm"
#include "code\controllers\subsystem\shuttles.dm"
#include "code\controllers\subsystem\spacedrift.dm"