diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm
index 005b0ca27ee..4f77e2966ca 100644
--- a/code/__DEFINES/cult.dm
+++ b/code/__DEFINES/cult.dm
@@ -58,5 +58,5 @@ GLOBAL_LIST(sacrificed)
// Used to keep track of items rewarded after a heretic is sacked.
#define CURSED_BLADE_UNLOCKED "Cursed Blade"
-#define CRIMSON_FOCUS_UNLOCKED "Crimson Focus"
+#define CRIMSON_MEDALLION_UNLOCKED "Crimson Medallion"
#define PROTEON_ORB_UNLOCKED "Proteon Orb"
diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
index 105b53bf9cf..285c0b0ac4e 100644
--- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
+++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_living.dm
@@ -289,5 +289,8 @@
#define COMSIG_MOB_HAPPINESS_CHANGE "happiness_change"
/// From /obj/item/melee/baton/baton_effect(): (datum/source, mob/living/user, /obj/item/melee/baton)
#define COMSIG_MOB_BATONED "mob_batoned"
+
+/// Sent to the mob when their mind is slaved
+#define COMSIG_MOB_ENSLAVED_TO "mob_enslaved_to"
/// From /obj/item/proc/attack_atom: (mob/living/attacker, atom/attacked)
#define COMSIG_LIVING_ATTACK_ATOM "living_attack_atom"
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index f8f79f44294..d477195a603 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -549,9 +549,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
construct_owner = null
// construct track
- if(construct_owner?.seeking && construct_owner.master)
- blood_target = construct_owner.master
- desc = "Your blood sense is leading you to [construct_owner.master]"
+ if(construct_owner?.seeking && construct_owner.construct_master)
+ blood_target = construct_owner.construct_master
+ desc = "Your blood sense is leading you to [construct_owner.construct_master]"
// cult track
var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
diff --git a/code/datums/components/spirit_holding.dm b/code/datums/components/spirit_holding.dm
index a7accc38352..a26d456ee6f 100644
--- a/code/datums/components/spirit_holding.dm
+++ b/code/datums/components/spirit_holding.dm
@@ -10,14 +10,17 @@
var/allow_renaming
/// Allows channeling
var/allow_channeling
+ /// Allows exorcism
+ var/allow_exorcism
///mob contained in the item.
var/mob/living/basic/shade/bound_spirit
-/datum/component/spirit_holding/Initialize(datum/mind/soul_to_bind, mob/awakener, allow_renaming = TRUE, allow_channeling = TRUE)
+/datum/component/spirit_holding/Initialize(datum/mind/soul_to_bind, mob/awakener, allow_renaming = TRUE, allow_channeling = TRUE, allow_exorcism = TRUE)
if(!ismovable(parent)) //you may apply this to mobs, i take no responsibility for how that works out
return COMPONENT_INCOMPATIBLE
src.allow_renaming = allow_renaming
src.allow_channeling = allow_channeling
+ src.allow_exorcism = allow_exorcism
if(soul_to_bind)
bind_the_soule(soul_to_bind, awakener, soul_to_bind.name)
@@ -107,7 +110,8 @@
bound_spirit.get_language_holder().omnitongue = TRUE //Grants omnitongue
RegisterSignal(parent, COMSIG_ATOM_RELAYMOVE, PROC_REF(block_buckle_message))
- RegisterSignal(parent, COMSIG_BIBLE_SMACKED, PROC_REF(on_bible_smacked))
+ if(allow_exorcism)
+ RegisterSignal(parent, COMSIG_BIBLE_SMACKED, PROC_REF(on_bible_smacked))
/**
* custom_name : Simply sends a tgui input text box to the blade asking what name they want to be called, and retries it if the input is invalid.
@@ -139,6 +143,8 @@
* * exorcist: user who is attempting to remove the spirit
*/
/datum/component/spirit_holding/proc/attempt_exorcism(mob/exorcist)
+ if(!allow_exorcism)
+ return // just in case
var/atom/movable/exorcised_movable = parent
to_chat(exorcist, span_notice("You begin to exorcise [parent]..."))
playsound(parent, 'sound/hallucinations/veryfar_noise.ogg',40,TRUE)
diff --git a/code/datums/mind/antag.dm b/code/datums/mind/antag.dm
index 4aaab464f5e..11340ae56a6 100644
--- a/code/datums/mind/antag.dm
+++ b/code/datums/mind/antag.dm
@@ -214,9 +214,10 @@
N.nukeop_outfit = null
add_antag_datum(N,converter.nuke_team)
-
enslaved_to = WEAKREF(creator)
+ SEND_SIGNAL(current, COMSIG_MOB_ENSLAVED_TO, creator)
+
current.faction |= creator.faction
creator.faction |= "[REF(current)]"
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index eb55138a448..39cd9b550ae 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -12,7 +12,7 @@
default_button_position = DEFAULT_BLOODSPELLS
var/list/spells = list()
var/channeling = FALSE
- /// If the magic has been enhanced somehow, likely due to a crimson focus.
+ /// If the magic has been enhanced somehow, likely due to a crimson medallion.
var/magic_enhanced = FALSE
/datum/action/innate/cult/blood_magic/Remove()
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 307b4b7324b..994f98ed099 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -211,6 +211,7 @@ Striking a noncultist, however, will tear their flesh."}
awakener = awakener,\
allow_renaming = FALSE,\
allow_channeling = FALSE,\
+ allow_exorcism = FALSE,\
)
// Get the heretic's new body and antag datum.
diff --git a/code/modules/antagonists/cult/cult_structure_archives.dm b/code/modules/antagonists/cult/cult_structure_archives.dm
index d3a96dd1f77..9917d9505f7 100644
--- a/code/modules/antagonists/cult/cult_structure_archives.dm
+++ b/code/modules/antagonists/cult/cult_structure_archives.dm
@@ -2,7 +2,7 @@
#define CULT_BLINDFOLD "Zealot's Blindfold"
#define CURSE_ORB "Shuttle Curse"
#define VEIL_WALKER "Veil Walker Set"
-#define CRIMSON_FOCUS "Crimson Focus"
+#define CRIMSON_MEDALLION "Crimson Medallion"
// Cult archives. Gives out utility items.
/obj/structure/destructible/cult/item_dispenser/archives
@@ -38,11 +38,11 @@
options += extra_item
/obj/structure/destructible/cult/item_dispenser/archives/extra_options()
- if(!cult_team?.unlocked_heretic_items[CRIMSON_FOCUS_UNLOCKED])
+ if(!cult_team?.unlocked_heretic_items[CRIMSON_MEDALLION_UNLOCKED])
return
- return list(CRIMSON_FOCUS = list(
- PREVIEW_IMAGE = image(icon = 'icons/obj/clothing/neck.dmi', icon_state = "crimson_focus"),
- OUTPUT_ITEMS = list(/obj/item/clothing/neck/heretic_focus/crimson_focus),
+ return list(CRIMSON_MEDALLION = list(
+ PREVIEW_IMAGE = image(icon = 'icons/obj/clothing/neck.dmi', icon_state = "crimson_medallion"),
+ OUTPUT_ITEMS = list(/obj/item/clothing/neck/heretic_focus/crimson_medallion),
),
)
@@ -56,4 +56,4 @@
#undef CULT_BLINDFOLD
#undef CURSE_ORB
#undef VEIL_WALKER
-#undef CRIMSON_FOCUS
+#undef CRIMSON_MEDALLION
diff --git a/code/modules/antagonists/cult/datums/cult_team.dm b/code/modules/antagonists/cult/datums/cult_team.dm
index 09d4a25a321..72c7df8bf5d 100644
--- a/code/modules/antagonists/cult/datums/cult_team.dm
+++ b/code/modules/antagonists/cult/datums/cult_team.dm
@@ -22,7 +22,7 @@
/// List that keeps track of which items have been unlocked after a heretic was sacked.
var/list/unlocked_heretic_items = list(
CURSED_BLADE_UNLOCKED = FALSE,
- CRIMSON_FOCUS_UNLOCKED = FALSE,
+ CRIMSON_MEDALLION_UNLOCKED = FALSE,
PROTEON_ORB_UNLOCKED = FALSE,
)
diff --git a/code/modules/antagonists/cult/sword_fling.dm b/code/modules/antagonists/cult/sword_fling.dm
index 766f97917de..83238b0d8a2 100644
--- a/code/modules/antagonists/cult/sword_fling.dm
+++ b/code/modules/antagonists/cult/sword_fling.dm
@@ -55,6 +55,8 @@
particle_to_spawn = /obj/effect/particle_effect/sparks/electricity
new particle_to_spawn(get_turf(loccer))
+ loccer.shake_up_animation()
+ playsound(loccer, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
if(prob(resist_chance))
flinged_sword.forceMove(get_turf(loccer))
@@ -82,6 +84,9 @@
flinged_sword.throw_at(cast_on, cast_range, flinged_sword.throw_speed, owner)
flinged_sword.visible_message(\
span_warning("\the [flinged_sword] lunges at \the [cast_on]!"))
+ playsound(flinged_sword, 'sound/items/haunted/ghostitemattack.ogg', 100, TRUE)
+ flinged_sword.add_filter("cool_glow", 2, list("type" = "outline", "color" = COLOR_HERETIC_GREEN, "size" = 0.7))
+ addtimer(CALLBACK(flinged_sword, TYPE_PROC_REF(/datum, remove_filter), "cool_glow"), 0.7 SECONDS)
/obj/effect/temp_visual/eldritch_sparks
icon_state = "purplesparkles"
diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm
index f31639c508c..67a12b35551 100644
--- a/code/modules/antagonists/heretic/heretic_antag.dm
+++ b/code/modules/antagonists/heretic/heretic_antag.dm
@@ -88,7 +88,7 @@
/// List that keeps track of which items have been gifted to the heretic after a cultist was sacrificed. Used to alter drop chances to reduce dupes.
var/list/unlocked_heretic_items = list(
/obj/item/melee/sickly_blade/cursed = 0,
- /obj/item/clothing/neck/heretic_focus/crimson_focus = 0,
+ /obj/item/clothing/neck/heretic_focus/crimson_medallion = 0,
/mob/living/basic/construct/harvester/heretic = 0,
)
/// Simpler version of above used to limit amount of loot that can be hoarded
diff --git a/code/modules/antagonists/heretic/heretic_knowledge.dm b/code/modules/antagonists/heretic/heretic_knowledge.dm
index 5b78d1b7efb..5a1ab71a795 100644
--- a/code/modules/antagonists/heretic/heretic_knowledge.dm
+++ b/code/modules/antagonists/heretic/heretic_knowledge.dm
@@ -584,7 +584,6 @@
var/datum/antagonist/heretic_monster/heretic_monster = summoned.mind.add_antag_datum(/datum/antagonist/heretic_monster)
heretic_monster.set_owner(user.mind)
- summoned.RegisterSignal(user, COMSIG_LIVING_DEATH, TYPE_PROC_REF(/mob/living/, on_master_death))
var/datum/objective/heretic_summon/summon_objective = locate() in user.mind.get_all_objectives()
summon_objective?.num_summoned++
diff --git a/code/modules/antagonists/heretic/heretic_monsters.dm b/code/modules/antagonists/heretic/heretic_monsters.dm
index fcdea512879..5bc7041cd46 100644
--- a/code/modules/antagonists/heretic/heretic_monsters.dm
+++ b/code/modules/antagonists/heretic/heretic_monsters.dm
@@ -28,6 +28,7 @@
*/
/datum/antagonist/heretic_monster/proc/set_owner(datum/mind/master)
src.master = master
+ owner.enslave_mind_to_creator(master.current)
var/datum/objective/master_obj = new()
master_obj.owner = owner
@@ -38,7 +39,3 @@
owner.announce_objectives()
to_chat(owner, span_boldnotice("You are a [ishuman(owner.current) ? "shambling corpse returned":"horrible creation brought"] to this plane through the Gates of the Mansus."))
to_chat(owner, span_notice("Your master is [master]. Assist them to all ends."))
-
- if(istype(owner.current, /mob/living/basic/construct/harvester/heretic))
- var/mob/living/basic/construct/harvester/heretic/shitcode = owner.current
- shitcode.master = master
diff --git a/code/modules/antagonists/heretic/items/heretic_necks.dm b/code/modules/antagonists/heretic/items/heretic_necks.dm
index 3f140dc99df..5c73c22a4e7 100644
--- a/code/modules/antagonists/heretic/items/heretic_necks.dm
+++ b/code/modules/antagonists/heretic/items/heretic_necks.dm
@@ -9,16 +9,16 @@
. = ..()
AddElement(/datum/element/heretic_focus)
-/obj/item/clothing/neck/heretic_focus/crimson_focus
- name = "Crimson Focus"
+/obj/item/clothing/neck/heretic_focus/crimson_medallion
+ name = "Crimson Medallion"
desc = "A blood-red focusing glass that provides a link to the world beyond, and worse. Its eye is constantly twitching and gazing in all directions. It almost seems to be silently screaming..."
- icon_state = "crimson_focus"
+ icon_state = "crimson_medallion"
/// The aura healing component. Used to delete it when taken off.
var/datum/component/component
/// If active or not, used to add and remove its cult and heretic buffs.
var/active = FALSE
-/obj/item/clothing/neck/heretic_focus/crimson_focus/equipped(mob/living/user, slot)
+/obj/item/clothing/neck/heretic_focus/crimson_medallion/equipped(mob/living/user, slot)
. = ..()
if(!(slot & ITEM_SLOT_NECK))
return
@@ -51,7 +51,7 @@
healing_color = team_color, \
)
-/obj/item/clothing/neck/heretic_focus/crimson_focus/dropped(mob/living/user)
+/obj/item/clothing/neck/heretic_focus/crimson_medallion/dropped(mob/living/user)
. = ..()
if(!istype(user))
@@ -75,7 +75,7 @@
magic_holder?.magic_enhanced = FALSE
-/obj/item/clothing/neck/heretic_focus/crimson_focus/attack_self(mob/living/user, modifiers)
+/obj/item/clothing/neck/heretic_focus/crimson_medallion/attack_self(mob/living/user, modifiers)
. = ..()
to_chat(user, span_danger("You start tightly squeezing [src]..."))
if(!do_after(user, 1.25 SECONDS, src))
@@ -90,7 +90,7 @@
user.reagents?.add_reagent(/datum/reagent/eldritch, rand(6, 10))
qdel(src)
-/obj/item/clothing/neck/heretic_focus/crimson_focus/examine(mob/user)
+/obj/item/clothing/neck/heretic_focus/crimson_medallion/examine(mob/user)
. = ..()
var/magic_dude
diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
index 8da3b904948..a34927a6b6f 100644
--- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
+++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm
@@ -214,7 +214,7 @@
heretic_datum.knowledge_points += 3
heretic_datum.high_value_sacrifices++
feedback += " graciously"
- else if(cultist_datum)
+ if(cultist_datum)
heretic_datum.knowledge_points += 1
grant_reward(user, sacrifice, loc)
// easier to read
@@ -229,9 +229,9 @@
span_narsie(" one of our own. Destroy and sacrifice the infidel before it claims more!")
to_chat(mind.current, message)
// he(retic) gets a warn too
- var/message = span_cult_bold("You feel that your action has attracted") + \
- span_cult_bold_italic(" attention.")
- to_chat(user, message)
+ to_chat(user, span_narsiesmall("How DARE you!? I will see you destroyed for this."))
+ var/non_flavor_warning = span_cult_bold("You feel that your action has attracted ") + span_hypnophrase("attention") + span_cult_bold(".")
+ to_chat(user, non_flavor_warning)
return
else
heretic_datum.knowledge_points += 2
@@ -263,12 +263,6 @@
var/datum/antagonist/heretic/antag = IS_HERETIC(user)
antag.rewards_given++
- // We limit the amount so the heretic doesn't just turn into a frickin' god (early)
- to_chat(user, span_hierophant("You feel the rotten energies of the infidel warp and twist, mixing with that of your own..."))
- if(prob(8 * antag.rewards_given))
- to_chat(user, span_hierophant("Faint, dark red sparks flit around the dust, then fade. It looks like your patrons weren't able to fashion something out of it."))
- return
-
// Cool effect for the rune as well as the item
var/obj/effect/heretic_rune/rune = locate() in range(2, user)
if(rune)
@@ -285,7 +279,7 @@
/datum/heretic_knowledge/hunt_and_sacrifice/proc/deposit_reward(mob/user, turf/loc, loop = 0, obj/rune)
if(loop > 5) // Max limit for retrying a reward
return
- // Remove the rays, we don't need them anymore.
+ // Remove the outline, we don't need it anymore.
rune?.remove_filter("reward_outline")
playsound(loc, 'sound/magic/repulse.ogg', 75, TRUE)
var/datum/antagonist/heretic/heretic_datum = IS_HERETIC(user)
diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm
index 925f368fe3b..3bea19a5bb3 100644
--- a/code/modules/antagonists/wizard/equipment/soulstone.dm
+++ b/code/modules/antagonists/wizard/equipment/soulstone.dm
@@ -511,7 +511,7 @@
playsound(newstruct, 'sound/effects/constructform.ogg', 50)
if(stoner)
newstruct.faction |= "[REF(stoner)]"
- newstruct.master = stoner
+ newstruct.construct_master = stoner
var/datum/action/innate/seek_master/seek_master = new
seek_master.Grant(newstruct)
diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm
index 39abe7baa50..5221dc80474 100644
--- a/code/modules/library/bibles.dm
+++ b/code/modules/library/bibles.dm
@@ -316,7 +316,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,TRUE)
if(do_after(user, 4 SECONDS, target = sword))
playsound(src,'sound/effects/pray_chaplain.ogg',60,TRUE)
- new /obj/item/nullrod/claymore(get_turf(sword))
+ new /obj/item/nullrod/nullblade(get_turf(sword))
user.visible_message(span_notice("[user] exorcises [sword]!"))
qdel(sword)
return ITEM_INTERACT_SUCCESS
diff --git a/code/modules/mob/living/basic/cult/constructs/_construct.dm b/code/modules/mob/living/basic/cult/constructs/_construct.dm
index 79e6e748772..1c5e91b50c2 100644
--- a/code/modules/mob/living/basic/cult/constructs/_construct.dm
+++ b/code/modules/mob/living/basic/cult/constructs/_construct.dm
@@ -35,7 +35,7 @@
/// Flavor text shown to players when they spawn as this construct
var/playstyle_string = "You are a generic construct. Your job is to not exist, and you should probably adminhelp this."
/// The construct's master
- var/master = null
+ var/mob/construct_master = null
/// Whether this construct is currently seeking nar nar
var/seeking = FALSE
/// Whether this construct can repair other constructs or cult buildings. Gets the healing_touch component if so.
diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm
index 6d41bb43f26..b48a26b6819 100644
--- a/code/modules/mob/living/basic/cult/constructs/harvester.dm
+++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm
@@ -80,9 +80,9 @@
var/datum/objective/eldergod/summon_objective = locate() in cult_status.cult_team.objectives
if(summon_objective.check_completion())
- the_construct.master = cult_status.cult_team.blood_target
+ the_construct.construct_master = cult_status.cult_team.blood_target
- if(!the_construct.master)
+ if(!the_construct.construct_master)
to_chat(the_construct, span_cult_italic("You have no master to seek!"))
the_construct.seeking = FALSE
return
@@ -122,8 +122,8 @@
to_chat(the_construct, span_cult_italic("Nar'Sie has completed her harvest!"))
return
- the_construct.master = pick(GLOB.cult_narsie.souls_needed)
- var/mob/living/real_target = the_construct.master //We can typecast this way because Narsie only allows /mob/living into the souls list
+ the_construct.construct_master = pick(GLOB.cult_narsie.souls_needed)
+ var/mob/living/real_target = the_construct.construct_master //We can typecast this way because Narsie only allows /mob/living into the souls list
to_chat(the_construct, span_cult_italic("You are now tracking your prey, [real_target.real_name] - harvest [real_target.p_them()]!"))
desc = "Activate to track Nar'Sie!"
button_icon_state = "sintouch"
@@ -150,21 +150,26 @@
lighting_cutoff_red = 10
lighting_cutoff_green = 20
lighting_cutoff_blue = 5
- playstyle_string = "You are a Rusted Harvester, built to serve the Sanguine Apostate, twisted to work the will of the Mansus. You are fragile and weak, but you rend cultists (only) apart on each attack. Follow your Master's orders!"
+ playstyle_string = span_bold("You are a Rusted Harvester, built to serve the Sanguine Apostate, twisted to work the will of the Mansus. You are fragile and weak, but you rend cultists (only) apart on each attack. Follow your Master's orders!")
theme = THEME_HERETIC
/mob/living/basic/construct/harvester/heretic/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_MANSUS_TOUCHED, REF(src))
add_filter("rusted_harvester", 3, list("type" = "outline", "color" = COLOR_GREEN, "size" = 2, "alpha" = 40))
+ RegisterSignal(src, COMSIG_MIND_TRANSFERRED, TYPE_PROC_REF(/datum/mind, enslave_mind_to_creator))
+ RegisterSignal(src, COMSIG_MOB_ENSLAVED_TO, PROC_REF(link_master))
+/mob/living/basic/construct/harvester/heretic/proc/link_master(mob/self, mob/master)
+ src.construct_master = master
+ RegisterSignal(construct_master, COMSIG_LIVING_DEATH, PROC_REF(on_master_death))
+ SIGNAL_HANDLER
-/**
- * Somewhat janky proc called when a heretic monster's master dies
- * Used to kill any living Rusted Harvester
- */
-/mob/living/proc/on_master_death()
- return
+/mob/living/basic/construct/harvester/heretic/proc/on_master_death(mob/self, mob/master)
+ SIGNAL_HANDLER
+ to_chat(src, span_userdanger("Your link to the mansus suddenly snaps as your master [construct_master] perishes! Without [construct_master.p_their()] support, your body crumbles..."))
+ visible_message(span_alert("[src] suddenly crumbles to dust!"))
+ death()
/mob/living/basic/construct/harvester/heretic/attack_animal(mob/living/simple_animal/user, list/modifiers)
// They're pretty fragile so this is probably necessary to prevent bullshit deaths.
@@ -172,11 +177,6 @@
return
return ..()
-/mob/living/basic/construct/harvester/heretic/on_master_death()
- to_chat(src, span_userdanger("Your link to the mansus suddenly snaps as your master perishes! Without its support, your body crumbles..."))
- visible_message(span_alert("[src] suddenly crumbles to dust!"))
- death()
-
/mob/living/basic/construct/harvester/heretic/grant_abilities()
AddElement(/datum/element/wall_walker, or_trait = TRAIT_RUSTY)
AddElement(/datum/element/leeching_walk)
@@ -233,9 +233,6 @@
. = ..()
the_construct = Target
the_construct.seeking = TRUE
- var/datum/antagonist/heretic_monster/antag = IS_HERETIC_MONSTER(the_construct)
- if(antag)
- the_construct.master = antag.master
// no real reason for most of this weird oldcode
/datum/action/innate/seek_master/Activate()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index af3385fc5b3..79af6c802d6 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -396,6 +396,9 @@
// Shake animation
if (incapacitated())
+ shake_up_animation()
+
+/mob/proc/shake_up_animation()
var/direction = prob(50) ? -1 : 1
animate(src, pixel_x = pixel_x + SHAKE_ANIMATION_OFFSET * direction, time = 1, easing = QUAD_EASING | EASE_OUT, flags = ANIMATION_PARALLEL)
animate(pixel_x = pixel_x - (SHAKE_ANIMATION_OFFSET * 2 * direction), time = 1)
diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi
index ed0bb34b464..3467f752ac3 100644
Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ
diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi
index e8726cfcb73..ca90eb8a329 100644
Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ