From 28a4e6a343d9384f77fe30df0f044cfcecb7caea Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 16 Nov 2019 11:21:07 -0500 Subject: [PATCH 1/6] constructs have wiz-hud --- code/game/gamemodes/wizard/soulstone.dm | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 520e6939b60..b3643d3d38a 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -265,12 +265,15 @@ var/mob/living/simple_animal/hostile/construct/armoured/Z = new /mob/living/simple_animal/hostile/construct/armoured (get_turf(T.loc)) Z.key = A.key Z.faction |= "\ref[U]" + Z.mind.store_memory(A.mind.memory) if(iscultist(U)) if(SSticker.mode.name == "cult") SSticker.mode:add_cultist(Z.mind) else SSticker.mode.cult+=Z.mind SSticker.mode.update_cult_icons_added(Z.mind) + if(iswizard(U)) + SSticker.mode.update_wiz_icons_added(Z.mind) qdel(T) to_chat(Z, "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike.") to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") @@ -281,12 +284,15 @@ var/mob/living/simple_animal/hostile/construct/wraith/Z = new /mob/living/simple_animal/hostile/construct/wraith (get_turf(T.loc)) Z.key = A.key Z.faction |= "\ref[U]" + Z.mind.store_memory(A.mind.memory) if(iscultist(U)) if(SSticker.mode.name == "cult") SSticker.mode:add_cultist(Z.mind) else SSticker.mode.cult+=Z.mind - SSticker.mode.update_cult_icons_added(Z.mind) + if(iswizard(U)) + SSticker.mode.update_wiz_icons_added(Z.mind) + qdel(T) to_chat(Z, "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") @@ -297,12 +303,15 @@ var/mob/living/simple_animal/hostile/construct/builder/Z = new /mob/living/simple_animal/hostile/construct/builder (get_turf(T.loc)) Z.key = A.key Z.faction |= "\ref[U]" + Z.mind.store_memory(A.mind.memory) if(iscultist(U)) if(SSticker.mode.name == "cult") SSticker.mode:add_cultist(Z.mind) else SSticker.mode.cult+=Z.mind SSticker.mode.update_cult_icons_added(Z.mind) + if(iswizard(U)) + SSticker.mode.update_wiz_icons_added(Z.mind) qdel(T) to_chat(Z, "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).") to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") @@ -350,8 +359,12 @@ S.key = T.key if(U) S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation + if(!iscultist(U)) + S.mind.store_memory("Serve [U.real_name], your creator.") if(U && iscultist(U)) SSticker.mode.add_cultist(S.mind, 0) + if(U && iswizard(U)) + SSticker.mode.update_wiz_icons_added(S.mind) S.cancel_camera() name = "soulstone: Shade of [T.real_name]" icon_state = "soulstone2" From fa55b253b01f784389030e4b03ff81852d54f8f7 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 16 Nov 2019 13:49:06 -0500 Subject: [PATCH 2/6] Constructs/Shades removed from cult on death, and logged as antags if made by wizard/cultist. Shades now properly deleted when construct is created. --- code/game/gamemodes/wizard/soulstone.dm | 70 +++++-------------- .../mob/living/simple_animal/constructs.dm | 4 ++ .../modules/mob/living/simple_animal/shade.dm | 3 + 3 files changed, 26 insertions(+), 51 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index b3643d3d38a..09a8643802d 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -172,7 +172,7 @@ was_used() attack_self(U) -///////////////////////////Transferring to constructs///////////////////////////////////////////////////// +///////////////////////////Transferring to fs///////////////////////////////////////////////////// /obj/structure/constructshell name = "empty shell" icon = 'icons/obj/wizard.dmi' @@ -263,64 +263,30 @@ switch(construct_class) if("Juggernaut") var/mob/living/simple_animal/hostile/construct/armoured/Z = new /mob/living/simple_animal/hostile/construct/armoured (get_turf(T.loc)) - Z.key = A.key - Z.faction |= "\ref[U]" - Z.mind.store_memory(A.mind.memory) - if(iscultist(U)) - if(SSticker.mode.name == "cult") - SSticker.mode:add_cultist(Z.mind) - else - SSticker.mode.cult+=Z.mind - SSticker.mode.update_cult_icons_added(Z.mind) - if(iswizard(U)) - SSticker.mode.update_wiz_icons_added(Z.mind) - qdel(T) to_chat(Z, "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike.") - to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") - Z.cancel_camera() - qdel(C) + init_construct(Z,A,C,T) if("Wraith") var/mob/living/simple_animal/hostile/construct/wraith/Z = new /mob/living/simple_animal/hostile/construct/wraith (get_turf(T.loc)) - Z.key = A.key - Z.faction |= "\ref[U]" - Z.mind.store_memory(A.mind.memory) - if(iscultist(U)) - if(SSticker.mode.name == "cult") - SSticker.mode:add_cultist(Z.mind) - else - SSticker.mode.cult+=Z.mind - if(iswizard(U)) - SSticker.mode.update_wiz_icons_added(Z.mind) - - qdel(T) to_chat(Z, "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") - to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") - Z.cancel_camera() - qdel(C) + init_construct(Z,A,C,T) if("Artificer") var/mob/living/simple_animal/hostile/construct/builder/Z = new /mob/living/simple_animal/hostile/construct/builder (get_turf(T.loc)) - Z.key = A.key - Z.faction |= "\ref[U]" - Z.mind.store_memory(A.mind.memory) - if(iscultist(U)) - if(SSticker.mode.name == "cult") - SSticker.mode:add_cultist(Z.mind) - else - SSticker.mode.cult+=Z.mind - SSticker.mode.update_cult_icons_added(Z.mind) - if(iswizard(U)) - SSticker.mode.update_wiz_icons_added(Z.mind) - qdel(T) to_chat(Z, "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).") - to_chat(Z, "You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.") - Z.cancel_camera() - qdel(C) + init_construct(Z,A,C,T) else to_chat(U, "Creation failed!: The soul stone is empty! Go kill someone!") return +/proc/init_construct(var/mob/living/simple_animal/hostile/construct/wraith/Z, var/mob/living/simple_animal/shade/A, var/obj/item/soulstone/C, var/obj/structure/constructshell/T) + A.mind.transfer_to(Z) + qdel(T) + qdel(A) + to_chat(Z, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(C) + /proc/makeNewConstruct(var/mob/living/simple_animal/hostile/construct/ctype, var/mob/target, var/mob/stoner = null, cultoverride = 0) if(jobban_isbanned(target, "cultist") || jobban_isbanned(target, "Syndicate")) return @@ -334,11 +300,11 @@ SSticker.mode.cult+=newstruct.mind SSticker.mode.update_cult_icons_added(newstruct.mind) if(stoner && iswizard(stoner)) - to_chat(newstruct, "You are still bound to serve your creator, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") + to_chat(newstruct, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") else if(stoner && iscultist(stoner)) - to_chat(newstruct, "You are still bound to serve the cult, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") + to_chat(newstruct, "You are still bound to serve the cult, follow their orders and help them complete their goals at all costs.") else - to_chat(newstruct, "You are still bound to serve your creator, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") + to_chat(newstruct, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") newstruct.cancel_camera() /obj/item/soulstone/proc/init_shade(mob/living/T, mob/U, vic = 0) @@ -363,15 +329,17 @@ S.mind.store_memory("Serve [U.real_name], your creator.") if(U && iscultist(U)) SSticker.mode.add_cultist(S.mind, 0) + S.mind.special_role = SPECIAL_ROLE_CULTIST if(U && iswizard(U)) SSticker.mode.update_wiz_icons_added(S.mind) + S.mind.special_role = SPECIAL_ROLE_WIZARD_APPRENTICE S.cancel_camera() name = "soulstone: Shade of [T.real_name]" icon_state = "soulstone2" if(U && iswizard(U)) - to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help [U.p_them()] succeed in their goals at all costs.") + to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs.") else if(U && iscultist(U)) - to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help [U.p_them()] succeed in their goals at all costs.") + to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs.") 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.") if(isrobot(T))//Robots have to dust or else they spill out an empty robot brain, and unequiping them spills robot components that shouldn't spawn. diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 0c003b9e3b8..a51d2dcefc1 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -47,6 +47,10 @@ if(SSticker.cultdat?.theme == "blood") updateglow() +/mob/living/simple_animal/hostile/construct/death(gibbed) + . = ..() + SSticker.mode.remove_cultist(src.mind, FALSE) + /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 3f7b76c5af0..948c16314c9 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -28,6 +28,9 @@ del_on_death = 1 deathmessage = "lets out a contented sigh as their form unwinds." +/mob/living/simple_animal/shade/death(gibbed) + . = ..() + SSticker.mode.remove_cultist(src.mind, FALSE) /mob/living/simple_animal/shade/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri if(istype(O, /obj/item/soulstone)) From 71ba80cfda74a4ac29fbb35a32c8a7182ab1bed6 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 16 Nov 2019 14:27:29 -0500 Subject: [PATCH 3/6] Cleaned up unintended dirty change --- code/game/gamemodes/wizard/soulstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 09a8643802d..19e0dd678c1 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -172,7 +172,7 @@ was_used() attack_self(U) -///////////////////////////Transferring to fs///////////////////////////////////////////////////// +///////////////////////////Transferring to constructs///////////////////////////////////////////////////// /obj/structure/constructshell name = "empty shell" icon = 'icons/obj/wizard.dmi' From 68668226406acb816df2e48d56fee139b0d002b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 16 Nov 2019 15:32:42 -0500 Subject: [PATCH 4/6] byond black magic, casing fixed --- code/game/gamemodes/wizard/soulstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 19e0dd678c1..b859eec6b97 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -279,7 +279,7 @@ to_chat(U, "Creation failed!: The soul stone is empty! Go kill someone!") return -/proc/init_construct(var/mob/living/simple_animal/hostile/construct/wraith/Z, var/mob/living/simple_animal/shade/A, var/obj/item/soulstone/C, var/obj/structure/constructshell/T) +/proc/init_construct(var/mob/living/simple_animal/hostile/construct/Z, var/mob/living/simple_animal/shade/A, var/obj/item/soulstone/C, var/obj/structure/constructshell/T) A.mind.transfer_to(Z) qdel(T) qdel(A) From 01fb3f2c46b57a400ce3d9b33ad39c17aebdf65c Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 16 Nov 2019 20:10:32 -0500 Subject: [PATCH 5/6] review changes --- code/game/gamemodes/wizard/soulstone.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index b859eec6b97..d720b62792e 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -279,7 +279,7 @@ to_chat(U, "Creation failed!: The soul stone is empty! Go kill someone!") return -/proc/init_construct(var/mob/living/simple_animal/hostile/construct/Z, var/mob/living/simple_animal/shade/A, var/obj/item/soulstone/C, var/obj/structure/constructshell/T) +/proc/init_construct(mob/living/simple_animal/hostile/construct/Z, mob/living/simple_animal/shade/A, obj/item/soulstone/C, obj/structure/constructshell/T) A.mind.transfer_to(Z) qdel(T) qdel(A) @@ -327,10 +327,10 @@ S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation if(!iscultist(U)) S.mind.store_memory("Serve [U.real_name], your creator.") - if(U && iscultist(U)) + if(iscultist(U)) SSticker.mode.add_cultist(S.mind, 0) S.mind.special_role = SPECIAL_ROLE_CULTIST - if(U && iswizard(U)) + if(iswizard(U)) SSticker.mode.update_wiz_icons_added(S.mind) S.mind.special_role = SPECIAL_ROLE_WIZARD_APPRENTICE S.cancel_camera() From e1afee0e784c68d132bffc072f5dbba6803b074a Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 17 Nov 2019 01:20:59 -0500 Subject: [PATCH 6/6] review changes --- code/game/gamemodes/wizard/soulstone.dm | 87 ++++++++++++------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index d720b62792e..2edbb41cb95 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -205,19 +205,19 @@ /obj/item/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob) switch(choice) if("FORCE") - var/obj/item/soulstone/C = src + var/obj/item/soulstone/SS = src var/mob/living/T = target if(T.client != null) - C.init_shade(T, U) + SS.init_shade(T, U) else to_chat(U, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") T.Paralyse(20) - if(!C.getCultGhost(T,U)) + if(!SS.getCultGhost(T,U)) T.dust() //If we can't get a ghost, kill the sacrifice anyway. if("VICTIM") var/mob/living/carbon/human/T = target - var/obj/item/soulstone/C = src + var/obj/item/soulstone/SS = src if(T.stat == 0) to_chat(U, "Capture failed!: Kill or maim the victim first!") else @@ -226,66 +226,66 @@ else if(T.client == null) to_chat(U, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") - C.getCultGhost(T,U) + SS.getCultGhost(T,U) else - if(C.contents.len) + if(SS.contents.len) to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") else - C.init_shade(T, U, vic = 1) + SS.init_shade(T, U, vic = 1) if("SHADE") var/mob/living/simple_animal/shade/T = target - var/obj/item/soulstone/C = src - if(!C.can_use(U)) + var/obj/item/soulstone/SS = src + if(!SS.can_use(U)) U.Paralyse(5) to_chat(U, "Your body is wracked with debilitating pain!") return if(T.stat == DEAD) to_chat(U, "Capture failed!: The shade has already been banished!") else - if(C.contents.len) + if(SS.contents.len) to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") else - T.loc = C //put shade in stone + T.loc = SS //put shade in stone T.status_flags |= GODMODE T.canmove = 0 T.health = T.maxHealth T.faction |= "\ref[U]" - C.icon_state = "soulstone2" + SS.icon_state = "soulstone2" to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form") to_chat(U, "Capture successful!: [T.name]'s has been recaptured and stored within the soul stone.") if("CONSTRUCT") var/obj/structure/constructshell/T = target - var/obj/item/soulstone/C = src - var/mob/living/simple_animal/shade/A = locate() in C - if(A) + var/obj/item/soulstone/SS = src + var/mob/living/simple_animal/shade/SH = locate() in SS + if(SH) var/construct_class = alert(U, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer") switch(construct_class) if("Juggernaut") - var/mob/living/simple_animal/hostile/construct/armoured/Z = new /mob/living/simple_animal/hostile/construct/armoured (get_turf(T.loc)) - to_chat(Z, "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike.") - init_construct(Z,A,C,T) + var/mob/living/simple_animal/hostile/construct/armoured/C = new /mob/living/simple_animal/hostile/construct/armoured (get_turf(T.loc)) + to_chat(C, "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike.") + init_construct(C,SH,SS,T) if("Wraith") - var/mob/living/simple_animal/hostile/construct/wraith/Z = new /mob/living/simple_animal/hostile/construct/wraith (get_turf(T.loc)) - to_chat(Z, "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") - init_construct(Z,A,C,T) + var/mob/living/simple_animal/hostile/construct/wraith/C = new /mob/living/simple_animal/hostile/construct/wraith (get_turf(T.loc)) + to_chat(C, "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") + init_construct(C,SH,SS,T) if("Artificer") - var/mob/living/simple_animal/hostile/construct/builder/Z = new /mob/living/simple_animal/hostile/construct/builder (get_turf(T.loc)) - to_chat(Z, "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).") - init_construct(Z,A,C,T) + var/mob/living/simple_animal/hostile/construct/builder/C = new /mob/living/simple_animal/hostile/construct/builder (get_turf(T.loc)) + to_chat(C, "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), and most important of all create new constructs (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).") + init_construct(C,SH,SS,T) else to_chat(U, "Creation failed!: The soul stone is empty! Go kill someone!") return -/proc/init_construct(mob/living/simple_animal/hostile/construct/Z, mob/living/simple_animal/shade/A, obj/item/soulstone/C, obj/structure/constructshell/T) - A.mind.transfer_to(Z) +/proc/init_construct(mob/living/simple_animal/hostile/construct/C, mob/living/simple_animal/shade/SH, obj/item/soulstone/SS, obj/structure/constructshell/T) + SH.mind.transfer_to(C) qdel(T) - qdel(A) - to_chat(Z, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") - Z.cancel_camera() - qdel(C) + qdel(SH) + to_chat(C, "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + C.cancel_camera() + qdel(SS) /proc/makeNewConstruct(var/mob/living/simple_animal/hostile/construct/ctype, var/mob/target, var/mob/stoner = null, cultoverride = 0) if(jobban_isbanned(target, "cultist") || jobban_isbanned(target, "Syndicate")) @@ -323,23 +323,22 @@ S.name = "Shade of [T.real_name]" S.real_name = "Shade of [T.real_name]" S.key = T.key - if(U) - S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation - if(!iscultist(U)) - S.mind.store_memory("Serve [U.real_name], your creator.") - if(iscultist(U)) - SSticker.mode.add_cultist(S.mind, 0) - S.mind.special_role = SPECIAL_ROLE_CULTIST - if(iswizard(U)) - SSticker.mode.update_wiz_icons_added(S.mind) - S.mind.special_role = SPECIAL_ROLE_WIZARD_APPRENTICE S.cancel_camera() name = "soulstone: Shade of [T.real_name]" icon_state = "soulstone2" - if(U && iswizard(U)) - to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs.") - else if(U && iscultist(U)) - to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs.") + if(U) + S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation + if(iswizard(U)) + SSticker.mode.update_wiz_icons_added(S.mind) + S.mind.special_role = SPECIAL_ROLE_WIZARD_APPRENTICE + if(iscultist(U)) + SSticker.mode.add_cultist(S.mind, 0) + S.mind.special_role = SPECIAL_ROLE_CULTIST + S.mind.store_memory("Serve the cult's will.") + to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs.") + else + S.mind.store_memory("Serve [U.real_name], your creator.") + to_chat(S, "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs.") 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.") if(isrobot(T))//Robots have to dust or else they spill out an empty robot brain, and unequiping them spills robot components that shouldn't spawn.