diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 8f56e07980..8941c540ae 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -508,7 +508,7 @@
/obj/machinery/door/airlock/cult/allowed(mob/living/L)
if(!density)
return 1
- if(friendly || iscultist(L) || isshade(L)) || isconstruct(L))
+ if(friendly || iscultist(L) || isshade(L) || isconstruct(L))
if(!stealthy)
new openingoverlaytype(loc)
return 1
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index a82eef40b8..276729b359 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -213,7 +213,6 @@ structure_check() searches for nearby cultist structures required for the invoca
visible_message("[src] pulses blood red!")
var/oldcolor = color
color = RUNE_COLOR_DARKRED
- var/mob/living/L = pick(myriad_targets)
var/is_clock = is_servant_of_ratvar(L)
var/mob/living/F = invokers[1]
@@ -324,9 +323,6 @@ structure_check() searches for nearby cultist structures required for the invoca
playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE)
var/mob/living/carbon/human/H = sacrificial
H.spew_organ(2, 6)
- else
- playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE)
- sacrifical.gib()
return TRUE
/obj/effect/rune/empower
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index 1a0f207ebc..abef18ade0 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -185,12 +185,7 @@
var/obj/structure/constructshell/T = target
var/mob/living/simple_animal/hostile/construct/shade/A = locate() in src
if(A)
- var/list/constructs = list(
- "Juggernaut" = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"),
- "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"),
- "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer")
- )
- var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/construct_class = alert(user, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer")
if(!T || !T.loc)
return
switch(construct_class)
@@ -204,7 +199,7 @@
if(iscultist(user) || iswizard(user))
makeNewConstruct(/mob/living/simple_animal/hostile/construct/builder, A, user, 0, T.loc)
- else
+ else
return
for(var/datum/mind/B in SSticker.mode.cult)
if(B == A.mind)
@@ -220,10 +215,6 @@
if(QDELETED(target))
return
var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target)))
- var/makeicon = newstruct.icon_state
- var/holyness = newstruct.holy
- flick("make_[makeicon][holyness]", newstruct)
- playsound(newstruct, 'sound/effects/constructform.ogg', 50)
if(stoner)
newstruct.faction |= "[REF(stoner)]"
newstruct.master = stoner
@@ -247,9 +238,7 @@
newstruct.cancel_camera()
-/obj/item/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/user)
- if(!shade_controller)
- shade_controller = T
+/obj/item/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/user, vic = 0)
if(HAS_TRAIT_FROM(T, TRAIT_SACRIFICED, "sacrificed"))
if(user)
to_chat(user, "This body has already been harvested!")
@@ -259,7 +248,7 @@
var/mob/living/simple_animal/hostile/construct/shade/S = new /mob/living/simple_animal/hostile/construct/shade(src)
S.name = "Shade of [T.real_name]"
S.real_name = "Shade of [T.real_name]"
- S.key = shade_controller.key
+ T.transfer_ckey(S)
S.original_mind = T.mind.current
S.copy_languages(T, LANGUAGE_MIND)//Copies the old mobs languages into the new mob holder.
S.update_atom_languages()
@@ -294,11 +283,12 @@
if(!T)
return FALSE
if(!chosen_ghost)
- to_chat(U, "There were no spirits willing to become a shade.")
+ to_chat(user, "There were no spirits willing to become a shade.")
return FALSE
if(contents.len) //If they used the soulstone on someone else in the meantime
return FALSE
+ T.ckey = chosen_ghost.ckey
for(var/obj/item/W in T)
T.dropItemToGround(W)
- init_shade(T, U)
+ init_shade(T, user)
return TRUE
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 26486f255a..ebe5372e63 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -611,7 +611,7 @@
update_mobility()
UpdateStaminaBuffer()
update_health_hud()
-
+
/mob/living/carbon/update_sight()
if(!client)
return
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 68eb9543c5..af8382a82b 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -44,7 +44,7 @@
var/can_repair_constructs = FALSE
var/can_repair_self = FALSE
var/runetype
- var/original_body
+ var/original_mind
/mob/living/simple_animal/hostile/construct/Initialize()
. = ..()
@@ -68,8 +68,8 @@
CR.button.moved = "6:[pos],4:-2"
/mob/living/simple_animal/hostile/construct/death()
- if(original_body)
- transfer_ckey(original_body)
+ if(original_mind)
+ transfer_ckey(original_mind)
..()
/mob/living/simple_animal/hostile/construct/Login()