diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 72894abf662..f01f92b2e92 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -70643,7 +70643,7 @@
},
/area/library)
"cvo" = (
-/obj/structure/cult/tome,
+/obj/structure/cult/archives,
/obj/machinery/newscaster{
pixel_x = -32;
pixel_y = 0
@@ -107594,7 +107594,7 @@
/area/library/abandoned)
"dKF" = (
/obj/effect/decal/cleanable/cobweb,
-/obj/structure/cult/tome,
+/obj/structure/cult/archives,
/turf/simulated/floor/plating,
/area/library/abandoned)
"dKG" = (
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 3b3270fe6c0..9ef7b3dea0a 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -59269,7 +59269,7 @@
/turf/simulated/floor/plasteel,
/area/gateway)
"bXy" = (
-/obj/structure/cult/tome,
+/obj/structure/cult/archives,
/obj/machinery/newscaster{
pixel_x = -32
},
diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm
index 446079ebd0c..fe4c3a6e2e3 100644
--- a/_maps/map_files/MetaStation/z2.dmm
+++ b/_maps/map_files/MetaStation/z2.dmm
@@ -3782,7 +3782,7 @@
/turf/simulated/shuttle/plating,
/area/wizard_station)
"kt" = (
-/obj/structure/cult/talisman{
+/obj/structure/cult/altar{
desc = "A altar dedicated to the Wizard's Federation"
},
/obj/item/kitchen/knife/ritual,
@@ -4379,7 +4379,7 @@
},
/area/syndicate_mothership)
"mh" = (
-/obj/structure/cult/tome,
+/obj/structure/cult/archives,
/turf/unsimulated/floor{
tag = "icon-cult";
icon_state = "cult"
diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm
index 03c8b8919e4..920c9bacffd 100644
--- a/_maps/map_files/RandomZLevels/academy.dmm
+++ b/_maps/map_files/RandomZLevels/academy.dmm
@@ -226,7 +226,7 @@
/turf/simulated/floor/carpet,
/area/awaymission/academy/headmaster)
"aJ" = (
-/obj/structure/cult/tome,
+/obj/structure/cult/archives,
/obj/item/twohanded/staff,
/obj/item/spellbook/oneuse/charge,
/turf/simulated/floor/wood,
diff --git a/_maps/map_files/RandomZLevels/beach.dmm b/_maps/map_files/RandomZLevels/beach.dmm
index 6a3d16e4a83..eb5e1193f4a 100644
--- a/_maps/map_files/RandomZLevels/beach.dmm
+++ b/_maps/map_files/RandomZLevels/beach.dmm
@@ -34,12 +34,12 @@
/turf/unsimulated/beach/water/deep/wood_floor,
/area/awaymission/undersea)
"aj" = (
-/obj/structure/cult/talisman,
+/obj/structure/cult/altar,
/obj/item/veilrender/crabrender,
/turf/unsimulated/beach/water/deep/wood_floor,
/area/awaymission/undersea)
"ak" = (
-/obj/structure/cult/talisman,
+/obj/structure/cult/altar,
/obj/item/tome,
/turf/unsimulated/beach/water/deep/wood_floor,
/area/awaymission/undersea)
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index e120366dd54..50d06863ab2 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -35446,7 +35446,7 @@
},
/area/library)
"bmF" = (
-/obj/structure/cult/tome,
+/obj/structure/cult/archives,
/obj/item/videocam,
/obj/machinery/light_switch{
pixel_y = -25
diff --git a/_maps/map_files/shuttles/emergency_narnar.dmm b/_maps/map_files/shuttles/emergency_narnar.dmm
index 59111b3eeae..aefef374d40 100644
--- a/_maps/map_files/shuttles/emergency_narnar.dmm
+++ b/_maps/map_files/shuttles/emergency_narnar.dmm
@@ -160,7 +160,7 @@
/turf/simulated/floor/plating,
/area/shuttle/escape)
"az" = (
-/obj/structure/cult/talisman,
+/obj/structure/cult/altar,
/turf/simulated/floor/engine/cult,
/area/shuttle/escape)
"aA" = (
diff --git a/code/game/gamemodes/cult/cult_datums.dm b/code/game/gamemodes/cult/cult_datums.dm
index 8979ac0c383..825f0c32f3b 100644
--- a/code/game/gamemodes/cult/cult_datums.dm
+++ b/code/game/gamemodes/cult/cult_datums.dm
@@ -2,12 +2,14 @@
var/name = "Cult of Nar'Sie"
var/theme = "blood"
var/tome_icon = "tome"
+
//God Entity
var/entity_name = "Nar'Sie"
var/entity_title1 = "The Dark One"
var/entity_title2 = "The One Who Sees"
var/entity_title3 = "The Geometer of Blood"
var/entity_icon_state = "narsie"
+ var/entity_spawn_animation = "narsie_spawn_anim"
//Builder Construct
@@ -24,6 +26,8 @@
var/wraith_name = "Wraith"
var/wraith_icon_state = "floating"
var/wraith_dead_state = "shade_dead"
+ var/wraith_jaunt_out_animation = "phase_shift"
+ var/wraith_jaunt_in_animation = "phase_shift2"
//Armored Construct
var/juggernaut_name = "Juggernaut"
@@ -43,6 +47,29 @@
//Turfs
var/cult_floor_icon_state = "cult"
var/cult_wall_icon_state = "cult"
+ var/cult_girder_icon_state = "cultgirder"
+
+ //Structures
+ var/pylon_icon_state = "pylon"
+ var/pylon_icon_state_off = "pylon_off"
+
+ var/forge_icon_state = "forge"
+ var/forge_icon_state_off = "forge_off"
+
+ var/altar_icon_state = "altar"
+ var/altar_icon_state_off = "altar_off"
+
+ var/archives_icon_state = "archives"
+ var/archives_icon_state_off = "archives_off"
+
+ var/runed_metal_icon_state = "sheet-runed"
+
+ var/airlock_runed_icon_file = 'icons/obj/doors/airlocks/cult/runed/cult.dmi'
+ var/airlock_runed_overlays_file = 'icons/obj/doors/airlocks/cult/runed/cult-overlays.dmi'
+
+ var/airlock_unruned_icon_file = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi'
+ var/airlock_unruned_overlays_file = 'icons/obj/doors/airlocks/cult/unruned/cult-overlays.dmi'
+
/datum/cult_info/fire
name = "Cult of Pyr'Kaeus"
@@ -85,27 +112,54 @@
entity_title1 = "The Silent One"
entity_title2 = "The One Who Beckons"
entity_title3 = "The Ferryman of Oblivion"
- entity_icon_state = "legion"
+ entity_icon_state = "reaper"
+ entity_spawn_animation = "reaper_spawn_anim"
cult_wall_icon_state = "deathcult"
- cult_floor_icon_state = "carpet-broken"
+ cult_floor_icon_state = "cultdeath"
+ cult_girder_icon_state = "reaper_cultgirder"
artificer_name = "Boneshaper"
+ artificer_icon_state = "boneshaper"
behemoth_name = "Draugr"
- behemoth_icon_state = "Draugr"
+ behemoth_icon_state = "golem"
- wraith_name = "Wraith"
- wraith_icon_state = "Wraith"
+ wraith_name = "Envoy of Death"
+ wraith_icon_state = "envoy_of_death"
+ wraith_jaunt_out_animation = "shadowstep_out"
+ wraith_jaunt_in_animation = "shadowstep_in"
- juggernaut_name = "Wight"
- juggernaut_icon_state = "Draugr"
+ juggernaut_name = "Golem"
+ juggernaut_icon_state = "golem"
- harvester_name = "Psychopomp"
+ harvester_name = "Necrophage"
+ harvester_icon_state = "necrophage"
shade_name = "Banshee"
+ shade_icon_state = "banshee"
-/datum/cult_info/proc/get_name(var/type_to_name)
+ pylon_icon_state = "reaper_pylon"
+ pylon_icon_state_off = "reaper_pylon_off"
+
+ forge_icon_state = "reaper_forge"
+ forge_icon_state_off = "reaper_forge_off"
+
+ altar_icon_state = "reaper_altar"
+ altar_icon_state_off = "reaper_altar_off"
+
+ archives_icon_state = "reaper_archives"
+ archives_icon_state_off = "reaper_archives_off"
+
+ runed_metal_icon_state = "sheet_runed_reaper"
+
+ airlock_runed_icon_file = 'icons/obj/doors/airlocks/cult/runed/reaper.dmi'
+ airlock_runed_overlays_file = 'icons/obj/doors/airlocks/cult/runed/reaper-overlays.dmi'
+
+ airlock_unruned_icon_file = 'icons/obj/doors/airlocks/cult/unruned/reaper.dmi'
+ airlock_unruned_overlays_file = 'icons/obj/doors/airlocks/cult/unruned/reaper-overlays.dmi'
+
+/datum/cult_info/proc/get_name(type_to_name)
if(!type_to_name)
return
switch(type_to_name)
@@ -124,7 +178,7 @@
if("shade")
return shade_name
-/datum/cult_info/proc/get_icon(var/type_to_icon)
+/datum/cult_info/proc/get_icon(type_to_icon)
if(!type_to_icon)
return
switch(type_to_icon)
@@ -141,4 +195,20 @@
if("wraith")
return wraith_icon_state
if("shade")
- return shade_icon_state
\ No newline at end of file
+ return shade_icon_state
+ if("forge")
+ return forge_icon_state
+ if("forge_off")
+ return forge_icon_state_off
+ if("archives")
+ return archives_icon_state
+ if("archives_off")
+ return archives_icon_state_off
+ if("altar")
+ return altar_icon_state
+ if("altar_off")
+ return altar_icon_state_off
+ if("pylon")
+ return pylon_icon_state
+ if("pylon_off")
+ return pylon_icon_state_off
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index c599f7b2291..d30ac4f8a68 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -5,10 +5,10 @@
icon = 'icons/obj/cult.dmi'
//Noncult As we may have this on maps
-/obj/structure/cult/talisman
+/obj/structure/cult/altar
name = "Altar"
desc = "A bloodstained altar dedicated to Nar-Sie"
- icon_state = "talismanaltar"
+ icon_state = "altar"
/obj/structure/cult/forge
name = "Daemon forge"
@@ -22,10 +22,10 @@
light_range = 5
light_color = "#3e0000"
-/obj/structure/cult/tome
+/obj/structure/cult/archives
name = "Desk"
desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl"
- icon_state = "tomealtar"
+ icon_state = "archives"
//Cult versions cuase fuck map conflicts
/obj/structure/cult/functional
@@ -57,9 +57,9 @@
to_chat(user, "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.")
playsound(loc, 'sound/hallucinations/wail.ogg', 75, 1)
if(!anchored)
- icon_state = "[initial(icon_state)]_off"
+ icon_state = SSticker.cultdat?.get_icon("[initial(icon_state)]_off")
else
- icon_state = initial(icon_state)
+ icon_state = SSticker.cultdat?.get_icon("[initial(icon_state)]")
return
return ..()
@@ -91,10 +91,10 @@
eta = "[round(time, 1)] seconds"
return eta
-/obj/structure/cult/functional/talisman
+/obj/structure/cult/functional/altar
name = "altar"
desc = "A bloodstained altar dedicated to a cult."
- icon_state = "talismanaltar"
+ icon_state = "altar"
max_integrity = 150 //Sturdy
death_message = "The altar breaks into splinters, releasing a cascade of spirits into the air!"
death_sound = 'sound/effects/altar_break.ogg'
@@ -105,6 +105,10 @@
choosable_items = list("Eldritch Whetstone"= /obj/item/whetstone/cult, "Zealot's Blindfold" = /obj/item/clothing/glasses/night/cultblind, \
"Flask of Unholy Water" = /obj/item/reagent_containers/food/drinks/bottle/unholywater, "Cultist Dagger" = /obj/item/melee/cultblade/dagger)
+/obj/structure/cult/functional/altar/New()
+ . = ..()
+ icon_state = SSticker.cultdat?.altar_icon_state
+
/obj/structure/cult/functional/forge
name = "daemon forge"
desc = "A forge used in crafting the unholy weapons used by the armies of a cult."
@@ -119,6 +123,9 @@
choosable_items = list("Shielded Robe" = /obj/item/clothing/suit/hooded/cultrobes/cult_shield, "Flagellant's Robe" = /obj/item/clothing/suit/hooded/cultrobes/berserker, \
"Cultist Hardsuit" = /obj/item/storage/box/cult)
+/obj/structure/cult/functional/forge/New()
+ . = ..()
+ icon_state = SSticker.cultdat?.forge_icon_state
/obj/structure/cult/functional/forge/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/grab))
@@ -170,6 +177,10 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
var/corrupt_delay = 50
var/last_corrupt = 0
+/obj/structure/cult/functional/pylon/New()
+ . = ..()
+ icon_state = SSticker.cultdat?.pylon_icon_state
+
/obj/structure/cult/functional/pylon/attack_hand(mob/living/user)//override as it should not create anything
return
@@ -227,10 +238,10 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
-/obj/structure/cult/functional/tome
+/obj/structure/cult/functional/archives
name = "archives"
desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl."
- icon_state = "tomealtar"
+ icon_state = "archives"
max_integrity = 125 //Slightly sturdy
death_message = "The desk breaks apart, its books falling to the floor."
death_sound = 'sound/effects/wood_break.ogg'
@@ -241,6 +252,10 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
choosable_items = list("Supply Talisman" = /obj/item/paper/talisman/supply/weak, "Shuttle Curse" = /obj/item/shuttle_curse, \
"Veil Shifter" = /obj/item/cult_shift)
+/obj/structure/cult/functional/archives/New()
+ . = ..()
+ icon_state = SSticker.cultdat?.archives_icon_state
+
/obj/effect/gateway
name = "gateway"
desc = "You're pretty sure that abyss is staring back"
diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm
index 232e380a87b..97c56af39bb 100644
--- a/code/game/gamemodes/wizard/soulstone.dm
+++ b/code/game/gamemodes/wizard/soulstone.dm
@@ -351,7 +351,8 @@
animation.master = T
flick("dust-h", animation)
qdel(animation)
- var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src)
+ var/path = get_shade_type()
+ var/mob/living/simple_animal/shade/S = new path(src)
S.status_flags |= GODMODE //So they won't die inside the stone somehow
S.canmove = 0//Can't move out of the soul stone
S.name = "Shade of [T.real_name]"
@@ -371,6 +372,12 @@
if(vic && U)
to_chat(U, "Capture successful!: [T.real_name]'s soul has been ripped from [U.p_their()] body and stored within the soul stone.")
+/obj/item/soulstone/proc/get_shade_type()
+ return /mob/living/simple_animal/shade/cult
+
+/obj/item/soulstone/anybody/get_shade_type()
+ return /mob/living/simple_animal/shade
+
/obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U)
var/mob/dead/observer/chosen_ghost
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 5ad348f9d61..b53a0139fb2 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -470,7 +470,7 @@
/obj/machinery/door/airlock/cult
name = "cult airlock"
icon = 'icons/obj/doors/airlocks/cult/runed/cult.dmi'
- overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi'
+ overlays_file = 'icons/obj/doors/airlocks/cult/runed/cult-overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_cult
damage_deflection = 10
hackProof = TRUE
@@ -478,8 +478,11 @@
var/openingoverlaytype = /obj/effect/temp_visual/cult/door
var/friendly = FALSE
-/obj/machinery/door/airlock/cult/New()
- ..()
+/obj/machinery/door/airlock/cult/Initialize()
+ . = ..()
+ icon = SSticker.cultdat?.airlock_runed_icon_file
+ overlays_file = SSticker.cultdat?.airlock_runed_overlays_file
+ update_icon()
new openingoverlaytype(loc)
/obj/machinery/door/airlock/cult/canAIControl(mob/user)
@@ -511,15 +514,25 @@
glass = TRUE
opacity = 0
+/obj/machinery/door/airlock/cult/glass/Initialize()
+ . = ..()
+ update_icon()
+
/obj/machinery/door/airlock/cult/glass/friendly
friendly = TRUE
/obj/machinery/door/airlock/cult/unruned
icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi'
- overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi'
+ overlays_file = 'icons/obj/doors/airlocks/cult/unruned/cult-overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_cult/unruned
openingoverlaytype = /obj/effect/temp_visual/cult/door/unruned
+/obj/machinery/door/airlock/cult/unruned/Initialize()
+ . = ..()
+ icon = SSticker.cultdat?.airlock_unruned_icon_file
+ overlays_file = SSticker.cultdat?.airlock_unruned_overlays_file
+ update_icon()
+
/obj/machinery/door/airlock/cult/unruned/friendly
friendly = TRUE
@@ -527,6 +540,10 @@
glass = TRUE
opacity = 0
+/obj/machinery/door/airlock/cult/unruned/glass/Initialize()
+ . = ..()
+ update_icon()
+
/obj/machinery/door/airlock/cult/unruned/glass/friendly
friendly = TRUE
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index f7a0962269d..5c3580ae177 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -87,9 +87,17 @@
icon_state = "phase_shift2"
duration = 12
+/obj/effect/temp_visual/dir_setting/wraith/Initialize(mapload)
+ . = ..()
+ icon_state = SSticker.cultdat?.wraith_jaunt_in_animation
+
/obj/effect/temp_visual/dir_setting/wraith/out
icon_state = "phase_shift"
+/obj/effect/temp_visual/dir_setting/wraith/out/Initialize(mapload)
+ . = ..()
+ icon_state = SSticker.cultdat?.wraith_jaunt_out_animation
+
/obj/effect/temp_visual/dir_setting/tailsweep
icon_state = "tailsweep"
duration = 4
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index e85aa28bde8..30085f8dad2 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -348,8 +348,8 @@ var/global/list/datum/stack_recipe/cult = list ( \
new/datum/stack_recipe/cult("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe/cult("pylon", /obj/structure/cult/functional/pylon, 3, time = 40, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe/cult("forge", /obj/structure/cult/functional/forge, 5, time = 40, one_per_turf = 1, on_floor = 1), \
- new/datum/stack_recipe/cult("archives", /obj/structure/cult/functional/tome, 2, time = 40, one_per_turf = 1, on_floor = 1), \
- new/datum/stack_recipe/cult("altar", /obj/structure/cult/functional/talisman, 5, time = 40, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe/cult("archives", /obj/structure/cult/functional/archives, 2, time = 40, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe/cult("altar", /obj/structure/cult/functional/altar, 5, time = 40, one_per_turf = 1, on_floor = 1), \
)
/obj/item/stack/sheet/runed_metal
@@ -361,6 +361,10 @@ var/global/list/datum/stack_recipe/cult = list ( \
sheettype = "runed"
merge_type = /obj/item/stack/sheet/runed_metal
+/obj/item/stack/sheet/runed_metal/New()
+ . = ..()
+ icon_state = SSticker.cultdat?.runed_metal_icon_state
+
/obj/item/stack/sheet/runed_metal/ratvar_act()
new /obj/item/stack/tile/brass(loc, amount)
qdel(src)
diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm
index 2873686e4f4..bcd57818504 100644
--- a/code/game/objects/structures/door_assembly_types.dm
+++ b/code/game/objects/structures/door_assembly_types.dm
@@ -165,16 +165,28 @@
name = "cult airlock assembly"
icon = 'icons/obj/doors/airlocks/cult/runed/cult.dmi'
base_name = "cult airlock"
- overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi'
+ overlays_file = 'icons/obj/doors/airlocks/cult/runed/cult-overlays.dmi'
airlock_type = /obj/machinery/door/airlock/cult
glass_type = /obj/machinery/door/airlock/cult/glass
+/obj/structure/door_assembly/door_assembly_cult/New()
+ . = ..()
+ icon = SSticker.cultdat?.airlock_runed_icon_file
+ overlays_file = SSticker.cultdat?.airlock_runed_overlays_file
+ update_icon()
+
/obj/structure/door_assembly/door_assembly_cult/unruned
icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi'
- overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi'
+ overlays_file = 'icons/obj/doors/airlocks/cult/unruned/cult-overlays.dmi'
airlock_type = /obj/machinery/door/airlock/cult/unruned
glass_type = /obj/machinery/door/airlock/cult/unruned/glass
+/obj/structure/door_assembly/door_assembly_cult/unruned/New()
+ . = ..()
+ icon = SSticker.cultdat?.airlock_unruned_icon_file
+ overlays_file = SSticker.cultdat?.airlock_unruned_overlays_file
+ update_icon()
+
/obj/structure/door_assembly/door_assembly_centcom
icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'
overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index de1d712b0a4..01d60f8860d 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -389,10 +389,14 @@
name = "runed girder"
desc = "Framework made of a strange and shockingly cold metal. It doesn't seem to have any bolts."
icon = 'icons/obj/cult.dmi'
- icon_state= "cultgirder"
+ icon_state = "cultgirder"
can_displace = FALSE
metalUsed = 1
+/obj/structure/girder/cult/New()
+ . = ..()
+ icon_state = SSticker.cultdat?.cult_girder_icon_state
+
/obj/structure/girder/cult/refundMetal(metalAmount)
for(var/i=0;i < metalAmount;i++)
new /obj/item/stack/sheet/runed_metal(get_turf(src))
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 35fde25b202..0c003b9e3b8 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -29,7 +29,7 @@
deathmessage = "collapses in a shattered heap."
/mob/living/simple_animal/hostile/construct/New()
- ..()
+ . = ..()
if(!SSticker.mode)//work around for maps with runes and cultdat is not loaded all the way
name = "[const_type] ([rand(1, 1000)])"
real_name = const_type
@@ -44,7 +44,7 @@
for(var/spell in construct_spells)
AddSpell(new spell(null))
- if(SSticker.cultdat.theme == "blood")
+ if(SSticker.cultdat?.theme == "blood")
updateglow()
/mob/living/simple_animal/hostile/construct/examine(mob/user)
diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index 14714452850..3f7b76c5af0 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -43,6 +43,12 @@
user.visible_message("[user] gently taps [src] with the [O]. ", "This weapon is ineffective, it does no damage.")
return
+/mob/living/simple_animal/shade/cult/Initialize(mapload)
+ . = ..()
+ name = SSticker.cultdat?.shade_name
+ real_name = SSticker.cultdat?.shade_name
+ icon_state = SSticker.cultdat?.shade_icon_state
+
/mob/living/simple_animal/shade/sword
universal_speak = 1
faction = list("neutral")
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index 53ab45c58dc..cf3a16432c0 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -25,8 +25,8 @@
/obj/singularity/narsie/large/New()
..()
- icon_state = SSticker.cultdat.entity_icon_state
- name = SSticker.cultdat.entity_name
+ icon_state = SSticker.cultdat?.entity_icon_state
+ name = SSticker.cultdat?.entity_name
to_chat(world, " [name] HAS RISEN")
world << pick(sound('sound/hallucinations/im_here1.ogg'), sound('sound/hallucinations/im_here2.ogg'))
@@ -150,7 +150,7 @@
icon = 'icons/obj/narsie_spawn_anim.dmi'
dir = SOUTH
move_self = 0
- flick("narsie_spawn_anim",src)
+ flick(SSticker.cultdat?.entity_spawn_animation, src)
sleep(11)
move_self = 1
icon = initial(icon)
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index ed193927004..e83340855a6 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/obj/cult.dmi b/icons/obj/cult.dmi
index 40eb2deda62..878bc71bdff 100644
Binary files a/icons/obj/cult.dmi and b/icons/obj/cult.dmi differ
diff --git a/icons/obj/doors/airlocks/cult/runed/overlays.dmi b/icons/obj/doors/airlocks/cult/runed/cult-overlays.dmi
similarity index 100%
rename from icons/obj/doors/airlocks/cult/runed/overlays.dmi
rename to icons/obj/doors/airlocks/cult/runed/cult-overlays.dmi
diff --git a/icons/obj/doors/airlocks/cult/runed/reaper-overlays.dmi b/icons/obj/doors/airlocks/cult/runed/reaper-overlays.dmi
new file mode 100644
index 00000000000..429e0c92697
Binary files /dev/null and b/icons/obj/doors/airlocks/cult/runed/reaper-overlays.dmi differ
diff --git a/icons/obj/doors/airlocks/cult/runed/reaper.dmi b/icons/obj/doors/airlocks/cult/runed/reaper.dmi
new file mode 100644
index 00000000000..4099c4829db
Binary files /dev/null and b/icons/obj/doors/airlocks/cult/runed/reaper.dmi differ
diff --git a/icons/obj/doors/airlocks/cult/unruned/overlays.dmi b/icons/obj/doors/airlocks/cult/unruned/cult-overlays.dmi
similarity index 100%
rename from icons/obj/doors/airlocks/cult/unruned/overlays.dmi
rename to icons/obj/doors/airlocks/cult/unruned/cult-overlays.dmi
diff --git a/icons/obj/doors/airlocks/cult/unruned/reaper-overlays.dmi b/icons/obj/doors/airlocks/cult/unruned/reaper-overlays.dmi
new file mode 100644
index 00000000000..241f0794f2e
Binary files /dev/null and b/icons/obj/doors/airlocks/cult/unruned/reaper-overlays.dmi differ
diff --git a/icons/obj/doors/airlocks/cult/unruned/reaper.dmi b/icons/obj/doors/airlocks/cult/unruned/reaper.dmi
new file mode 100644
index 00000000000..8422fdb10ca
Binary files /dev/null and b/icons/obj/doors/airlocks/cult/unruned/reaper.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 48bcdb44c00..6ed9dfc3dde 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/narsie.dmi b/icons/obj/narsie.dmi
index 6571ee3d11d..3c69e433404 100644
Binary files a/icons/obj/narsie.dmi and b/icons/obj/narsie.dmi differ
diff --git a/icons/obj/narsie_spawn_anim.dmi b/icons/obj/narsie_spawn_anim.dmi
index d1b74c128c0..0aedcf38598 100644
Binary files a/icons/obj/narsie_spawn_anim.dmi and b/icons/obj/narsie_spawn_anim.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 400b42105f4..2265194d678 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/icons/turf/walls/cult_wall.dmi b/icons/turf/walls/cult_wall.dmi
index b097321e714..f539a3ed4ba 100644
Binary files a/icons/turf/walls/cult_wall.dmi and b/icons/turf/walls/cult_wall.dmi differ