diff --git a/code/game/gamemodes/cult/construct_spells_ch.dm b/code/game/gamemodes/cult/construct_spells_ch.dm
new file mode 100644
index 0000000000..74e042c1f0
--- /dev/null
+++ b/code/game/gamemodes/cult/construct_spells_ch.dm
@@ -0,0 +1,340 @@
+
+////////////////////////////
+// Purity Construct - Bishop - Spells
+////////////////////////////
+
+/spell/targeted/construct_advanced/crippling_beam
+ name = "Crippling Beam"
+ desc = "Fire a crippling beam to hold down your enemies or prey."
+
+ hud_state = "const_beam"
+ spell_obj = /obj/item/weapon/spell/construct/projectile/crippling_beam
+
+/obj/item/weapon/spell/construct/projectile/crippling_beam
+ name = "Crippling Beam"
+ icon_state = "generic"
+ desc = "Your manipulators fire crippling beam of dense light."
+ cast_methods = CAST_RANGED
+ spell_projectile = /obj/item/projectile/beam/crippling_beam
+ pre_shot_delay = 0
+ cooldown = 50
+ fire_sound = 'sound/weapons/spiderlunge.ogg'
+
+/obj/item/projectile/beam/crippling_beam
+ name = "Crippling Beam"
+ icon_state = "invert"
+ fire_sound = 'sound/weapons/spiderlunge.ogg'
+ damage = 20
+ damage_type = BURN
+ check_armour = "laser"
+ armor_penetration = 60
+ light_range = 2
+ light_power = -2
+ light_color = "#64B4E6"
+
+ muzzle_type = /obj/effect/projectile/muzzle/laser_omni
+ tracer_type = /obj/effect/projectile/tracer/laser_omni
+ impact_type = /obj/effect/projectile/impact/laser_omni
+
+/obj/item/projectile/beam/crippling_beam/proc/bang(var/mob/living/carbon/M)
+ to_chat(M, "You hear a loud roar.")
+ playsound(src, 'sound/effects/bang.ogg', 50, 1)
+ var/ear_safety = 0
+ ear_safety = M.get_ear_protection()
+ if(ear_safety == 1)
+ M.Confuse(150)
+ else if (ear_safety > 1)
+ M.Confuse(30)
+ else if (!ear_safety)
+ M.Stun(10)
+ M.Weaken(2)
+ M.ear_damage += rand(1, 10)
+ M.ear_deaf = max(M.ear_deaf,15)
+ M.deaf_loop.start()
+ if (M.ear_damage >= 15)
+ to_chat(M, "Your ears start to ring badly!")
+ if (prob(M.ear_damage - 5))
+ to_chat(M, "You can't hear anything!")
+ M.sdisabilities |= DEAF
+ M.deaf_loop.start()
+ else
+ if (M.ear_damage >= 5)
+ to_chat(M, "Your ears start to ring!")
+ M.update_icons()
+
+/obj/item/projectile/beam/crippling_beam/on_hit(var/atom/target)
+ bang(target)
+ . = ..()
+
+/spell/targeted/construct_advanced/banishment
+ name = "banishment"
+ desc = "Fire a searing beam of light, banishing unholy foes."
+
+ hud_state = "const_beam"
+ spell_obj = /obj/item/weapon/spell/construct/projectile/banishment
+
+/obj/item/weapon/spell/construct/projectile/banishment
+ name = "banishment"
+ icon_state = "generic"
+ desc = "Your manipulators fire searing beams of light."
+ cast_methods = CAST_RANGED
+ spell_projectile = /obj/item/projectile/beam/banishment
+ pre_shot_delay = 0
+ cooldown = 10
+ fire_sound = 'sound/weapons/spiderlunge.ogg'
+
+/obj/item/projectile/beam/banishment
+ name = "banishment"
+ icon_state = "invert"
+ fire_sound = 'sound/weapons/spiderlunge.ogg'
+ damage = 15
+ damage_type = BURN
+ SA_bonus_damage = 45
+ SA_vulnerability = list(MOB_CLASS_DEMONIC,MOB_CLASS_ILLUSION)
+ check_armour = "laser"
+ armor_penetration = 60
+ light_range = 2
+ light_power = -2
+ light_color = "#64B4E6"
+
+ muzzle_type = /obj/effect/projectile/muzzle/lightning
+ tracer_type = /obj/effect/projectile/tracer/lightning
+ impact_type = /obj/effect/projectile/impact/lightning
+
+/obj/item/projectile/beam/banishment/proc/banish(var/mob/living/simple_mob/construct)
+ if(construct)
+ construct.Stun(10)
+ construct.Weaken(2)
+ else
+ return
+
+/obj/item/projectile/beam/banishment/on_hit(var/atom/target)
+ banish(target)
+ . = ..()
+
+////////////////////////////
+// Purity Construct - Deacon - Spells
+////////////////////////////
+
+///Deacon Laser
+/spell/targeted/construct_advanced/force_beam
+ name = "Force Beam"
+ desc = "Fire a beam of kinetic energy to force back troublemakers."
+
+ hud_state = "const_beam"
+ spell_obj = /obj/item/weapon/spell/construct/projectile/force_beam
+
+/obj/item/weapon/spell/construct/projectile/force_beam
+ name = "force_beam"
+ icon_state = "generic"
+ desc = "Your manipulators fire a condensed beam of kinetic energy."
+ cast_methods = CAST_RANGED
+ spell_projectile = /obj/item/projectile/beam/force_beam
+ pre_shot_delay = 0
+ cooldown = 5
+ fire_sound = 'sound/weapons/spiderlunge.ogg'
+
+/obj/item/projectile/beam/force_beam
+ name = "force beam"
+ icon_state = "invert"
+ fire_sound = 'sound/weapons/spiderlunge.ogg'
+ damage = 5
+ damage_type = BRUTE
+ check_armour = "melee"
+ armor_penetration = 60
+ light_range = 2
+ light_power = -2
+ light_color = "#64B4E6"
+
+ muzzle_type = /obj/effect/projectile/muzzle/tungsten
+ tracer_type = /obj/effect/projectile/tracer/tungsten
+ impact_type = /obj/effect/projectile/impact/tungsten
+
+/obj/item/projectile/beam/force_beam/on_hit(var/atom/movable/target, var/blocked = 0)
+ if(isliving(target))
+ var/mob/living/L = target
+ if(prob(40) && !blocked)
+ L.Stun(1)
+ L.Confuse(1)
+
+
+///Deacon Healing Sphere
+/spell/targeted/construct_advanced/soothing_sphere
+ name = "Sphere of soothing"
+ desc = "Rend a portal into a plane of sothing energy at the target location."
+
+ charge_max = 100
+
+ hud_state = "const_harvest"
+ spell_obj = /obj/item/weapon/spell/construct/spawner/soothing_sphere
+
+/obj/item/weapon/spell/construct/spawner/soothing_sphere
+ name = "sphere of soothing"
+ desc = "Call forth a portal to a dimension of soothing energies at your target."
+
+ spawner_type = /obj/effect/temporary_effect/pulse/soothing_sphere
+
+/obj/item/weapon/spell/construct/spawner/soothing_sphere/on_ranged_cast(atom/hit_atom, mob/user)
+ if(within_range(hit_atom) && pay_energy(10))
+ ..()
+
+/obj/item/weapon/spell/construct/spawner/soothing_sphere/on_throw_cast(atom/hit_atom, mob/user)
+ pay_energy(5)
+ if(isliving(hit_atom))
+ var/mob/living/L = hit_atom
+ L.add_modifier(/datum/modifier/soothe, 10 SECONDS)
+
+/obj/effect/temporary_effect/pulse/soothing_sphere
+ name = "soothing sphere"
+ desc = "A portal to some hellish place. Its screams wrack your body with pain."
+ icon = 'icons/effects/effects_ch.dmi'
+ icon_state = "blue_static_sphere"
+ time_to_die = null
+ light_range = 4
+ light_power = 5
+ light_color = "#64B4E6"
+ light_on = TRUE
+ pulses_remaining = 10
+ pulse_delay = 1 SECOND
+
+/obj/effect/temporary_effect/pulse/soothing_sphere/on_pulse()
+ for(var/mob/living/L in view(4,src))
+ if(!iscultist(L) && !istype(L, /mob/living/simple_mob/construct))
+ L.add_modifier(/datum/modifier/soothe, 2 SECONDS)
+ L.adjustBruteLoss(rand(-5,-10))
+ L.adjustFireLoss(rand(-5,-10))
+
+/datum/modifier/soothe
+ name = "soothe"
+ desc = "Your body is soothed of pain."
+
+ on_created_text = "A blue lightning quickly covers your body. Pain quickly fading."
+ on_expired_text = "The lightning fades, and so too does the ongoing soothing of pain."
+
+ stacks = MODIFIER_STACK_EXTEND
+
+ mob_overlay_state = "blue_electricity_constant"
+
+/datum/modifier/soothe/tick()
+ spawn()
+ if(ishuman(holder))
+ var/mob/living/carbon/human/H = holder
+ H.apply_effect(-20, AGONY)
+ if(prob(10))
+ to_chat(H, "It feels so comforting!")
+
+////////////////////////////
+// Purity Construct - Priest - Spells
+////////////////////////////
+
+/spell/targeted/construct_advanced/mend_purity
+ name = "Mend Purity"
+ desc = "Mend a target living being or construct over time."
+
+ charge_max = 100
+
+ hud_state = "const_mend"
+ spell_obj = /obj/item/weapon/spell/construct/mend_purity
+
+/obj/item/weapon/spell/construct/mend_purity
+ name = "Mend Purity"
+ desc = "Mend the wounds of constructs or living beings overtime."
+ icon_state = "mend_wounds"
+ cast_methods = CAST_MELEE
+ aspect = ASPECT_UNHOLY
+ light_color = "#64B4E6"
+ light_power = -2
+ light_on = TRUE
+
+/obj/item/weapon/spell/construct/mend_purity/on_melee_cast(atom/hit_atom, mob/living/user, def_zone)
+ if(isliving(hit_atom))
+ var/mob/living/L = hit_atom
+ L.add_modifier(/datum/modifier/mend_purity, 150)
+ qdel(src)
+
+/datum/modifier/mend_purity
+ name = "holy mending"
+ desc = "Your body is mending, rejoice!"
+
+ on_created_text = "A holy light envelops your body as it begins to mend."
+ on_expired_text = "The cloak of unease dissipates."
+
+ stacks = MODIFIER_STACK_EXTEND
+
+ mob_overlay_state = "blue_electricity_constant"
+
+/datum/modifier/mend_purity/tick()
+ spawn()
+ if(isliving(holder))
+ var/mob/living/L = holder
+ if(istype(L, /mob/living/simple_mob/construct))
+ L.adjustBruteLoss(rand(-5,-10))
+ L.adjustFireLoss(rand(-5,-10))
+ else
+ L.adjustBruteLoss(-2)
+ L.adjustFireLoss(-2)
+
+ if(ishuman(holder))
+ var/mob/living/carbon/human/H = holder
+
+ for(var/obj/item/organ/O in H.internal_organs)
+ if(O.damage > 0)
+ O.damage = max(O.damage - 2, 0)
+ if(O.damage <= 5 && O.organ_tag == O_EYES)
+ H.sdisabilities &= ~BLIND
+
+ for(var/obj/item/organ/external/O in H.organs)
+ O.heal_damage(rand(1,3), rand(1,3), internal = 1, robo_repair = 1)
+
+ for(var/obj/item/organ/E in H.bad_external_organs)
+ var/obj/item/organ/external/affected = E
+ if((affected.damage < affected.min_broken_damage * config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN))
+ affected.status &= ~ORGAN_BROKEN
+
+ for(var/datum/wound/W in affected.wounds)
+ if(istype(W, /datum/wound/internal_bleeding))
+ affected.wounds -= W
+ affected.update_damages()
+
+ H.restore_blood()
+ if(iscultist(H))
+ H.apply_effect(100, AGONY)//it will heal cultists but purity really doesn't like them so causes much pain
+ if(prob(10))
+ to_chat(H, "It feels as though your body is being torn apart!")
+ L.updatehealth()
+
+/spell/targeted/purity_repair_aura
+ name = "Repair Aura"
+ desc = "Emit a field of energy around your shell to repair nearby constructs at range."
+
+ range = -1
+ school = "evocation"
+ charge_type = Sp_RECHARGE
+ invocation_type = SpI_NONE
+
+ spell_flags = CONSTRUCT_CHECK | INCLUDEUSER
+
+ hud_state = "const_repairaura"
+ smoke_amt = 0
+
+ charge_max = 600
+
+/spell/targeted/purity_repair_aura/cast(list/targets, mob/living/user)
+ if(findNullRod(user) || user.has_modifier_of_type(/datum/modifier/repair_aura))
+ charge_counter = 300
+ return
+ user.add_modifier(/datum/modifier/repair_aura_purity, 30 SECONDS)
+
+/datum/modifier/repair_aura_purity
+ name = "aura of repair (purity)"
+ desc = "You are emitting a field of strange energy, capable of repairing constructs."
+
+ on_created_text = "You begin emitting an purity repair aura."
+ on_expired_text = "The purity repair aura fades."
+ stacks = MODIFIER_STACK_EXTEND
+
+/datum/modifier/repair_aura_purity/tick()
+ spawn()
+ for(var/mob/living/simple_mob/construct/T in view(4,holder))
+ T.adjustBruteLoss(rand(-10,-15))
+ T.adjustFireLoss(rand(-10,-15))
diff --git a/icons/effects/effects_ch.dmi b/icons/effects/effects_ch.dmi
index d1eed6cc5e..02beb51d3d 100644
Binary files a/icons/effects/effects_ch.dmi and b/icons/effects/effects_ch.dmi differ
diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/occult/constructs/purity_construct.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/occult/constructs/purity_construct.dm
new file mode 100644
index 0000000000..7253a98a61
--- /dev/null
+++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/occult/constructs/purity_construct.dm
@@ -0,0 +1,272 @@
+////////////////////////////
+// Purity Construct - Laity
+////////////////////////////
+
+/mob/living/simple_mob/construct/laity //Weak Swarm Attacker can be safely dumped on players in large numbers without too many injuries
+ name = "Laity"
+ real_name = "Laity"
+ construct_type = "Laity"
+ faction = "purity"
+ desc = "A small construct of the purity worshippers mechanical followers, not hardy or particularly strong, very numerous."
+ icon_state = "laity"
+ icon_living = "laity"
+ ui_icons = 'modular_chomp/icons/mob/screen1_purity.dmi'
+ maxHealth = 75
+ health = 75
+ response_harm = "viciously beaten"
+ harm_intent_damage = 5
+ melee_damage_lower = 4 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you.
+ melee_damage_upper = 8
+ attack_armor_pen = 50 // Does so little damage already, that this can be justified.
+ attacktext = list("rammed")
+ attack_sound = 'sound/weapons/rapidslice.ogg'
+ movement_cooldown = 0
+
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+////////////////////////////
+// Purity Construct - Deacon
+////////////////////////////
+
+/mob/living/simple_mob/construct/deacon
+ name = "Deacon"
+ real_name = "Deacon"
+ construct_type = "Deacon"
+ faction = "purity"
+ desc = "A small construct of the purity worshippers mechanical followers, hardy but mostly harmless."
+ icon_state = "deacon"
+ icon_living = "deacon"
+ ui_icons = 'modular_chomp/icons/mob/screen1_purity.dmi'
+ maxHealth = 150
+ health = 150
+ melee_damage_lower = 8 //not meant for combat but can hold its own in a pinch
+ melee_damage_upper = 12
+ attack_armor_pen = 60 //used to carve stone and other metals, cuts through armor just as well
+ attack_sharp = 1
+ attack_edge = 1
+ attacktext = list("violently stabbed")
+ friendly = list("caresses")
+ organ_names = /decl/mob_organ_names/harvester
+ movement_cooldown = -1
+
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+ // environment_smash = 1 // Whatever this gets renamed to, Harvesters need to break things
+
+ attack_sound = 'sound/weapons/pierce.ogg'
+
+ armor = list(
+ "melee" = 20,
+ "bullet" = 10,
+ "laser" = 10,
+ "energy" = 10,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
+
+ construct_spells = list(
+ /spell/aoe_turf/knock/harvester,
+ /spell/targeted/construct_advanced/force_beam,
+ /spell/targeted/construct_advanced/soothing_sphere,
+ )
+
+/decl/mob_organ_names/harvester
+ hit_zones = list("cephalothorax", "eye", "carapace", "energy crystal", "mandible")
+
+////////////////////////////
+// Purity Construct - Priest
+////////////////////////////
+
+/mob/living/simple_mob/construct/priest
+ name = "Priest"
+ real_name = "Priest"
+ construct_type = "Priest"
+ faction = "purity"
+ desc = "A medium sized construct of the purity worshippers mechanical followers, sturdy but lacking strength."
+ icon_state = "priest"
+ icon_living = "priest"
+ ui_icons = 'modular_chomp/icons/mob/screen1_purity.dmi'
+ maxHealth = 200
+ health = 200
+ response_harm = "viciously beaten"
+ harm_intent_damage = 5
+ melee_damage_lower = 10 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you.
+ melee_damage_upper = 15
+ organ_names = /decl/mob_organ_names/artificer
+ attacktext = list("rammed")
+ attack_sound = 'sound/weapons/rapidslice.ogg'
+ construct_spells = list(/spell/targeted/purity_repair_aura,
+ /spell/targeted/construct_advanced/mend_purity
+ )
+
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+/decl/mob_organ_names/artificer
+ hit_zones = list("body", "carapace", "right manipulator", "left manipulator", "upper left appendage", "upper right appendage", "eye")
+
+////////////////////////////
+// Purity Construct - Bishop
+////////////////////////////
+
+/mob/living/simple_mob/construct/bishop
+ name = "Bishop"
+ real_name = "Bishop"
+ construct_type = "Bishop"
+ faction = "purity"
+ desc = "A medium sized construct of the purity worshippers mechanical followers, sturdy and deadly, these constructs are commanded by an archbishop, tasked with patrolling and eliminating threats to their flock."
+ icon_state = "bishop"
+ icon_living = "bishop"
+ ui_icons = 'modular_chomp/icons/mob/screen1_purity.dmi'
+ maxHealth = 250
+ health = 250
+ melee_damage_lower = 15
+ melee_damage_upper = 20
+ attack_armor_pen = 15
+ attack_sharp = TRUE
+ attack_edge = 1
+ attacktext = list("slashed")
+ friendly = list("pinches")
+ organ_names = /decl/mob_organ_names/wraith
+ movement_cooldown = -1
+ attack_sound = 'sound/weapons/rapidslice.ogg'
+ construct_spells = list(/spell/targeted/construct_advanced/crippling_beam,
+ /spell/targeted/construct_advanced/banishment
+ )
+
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+// environment_smash = 1 // Whatever this gets renamed to, Wraiths need to break things
+
+/mob/living/simple_mob/construct/bishop/apply_melee_effects(var/atom/A)
+ if(isliving(A))
+ var/mob/living/L = A
+ L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS)
+
+/decl/mob_organ_names/wraith
+ hit_zones = list("body", "eye", "crystaline spike", "left claw", "right claw")
+
+////////////////////////////
+// Purity Construct - Archbishop
+////////////////////////////
+
+/mob/living/simple_mob/construct/bishop/arch
+ name = "Archbishop"
+ real_name = "Archbishop"
+ construct_type = "Archbishop"
+ faction = "purity"
+ desc = "A large sized construct of the purity worshippers mechanical followers, one of their most advanced, it is the right hand of purification, dedicated to the pursuit of eradicating those who cause harm their charge."
+ icon_state = "archbishop"
+ icon_living = "archbishop"
+ ui_icons = 'modular_chomp/icons/mob/screen1_purity.dmi'
+ maxHealth = 200
+ health = 200
+ melee_damage_lower = 20 //hits much harder then most purity constructs
+ melee_damage_upper = 30
+ attack_armor_pen = 50 //armor is no match against its religious wrath
+ attack_sharp = 1
+ attack_edge = 1
+ attacktext = list("violently stabbed")
+ friendly = list("caresses")
+ organ_names = /decl/mob_organ_names/wraith
+ movement_cooldown = 0
+
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+ // environment_smash = 1 // Whatever this gets renamed to, Harvesters need to break things
+
+ attack_sound = 'sound/weapons/pierce.ogg'
+
+/decl/mob_organ_names/wraith
+ hit_zones = list("body", "eye", "crystaline spike", "left claw", "right claw")
+
+////////////////////////////
+// Purity Construct - Cardinal
+////////////////////////////
+
+/mob/living/simple_mob/construct/cardinal
+ name = "Cardinal"
+ real_name = "Cardinal"
+ construct_type = "Cardinal"
+ faction = "purity"
+ desc = "A large sized construct of the purity worshippers mechanical followers, one of their most advanced, it is the left hand of purification, tasked with the ultimate protection and ultimately defense of all under its charge, it will stop at nothing to protect its flock from harm."
+ icon_state = "cardinal"
+ icon_living = "cardinal"
+ ui_icons = 'modular_chomp/icons/mob/screen1_purity.dmi'
+ maxHealth = 300
+ health = 300
+ response_harm = "harmlessly punches"
+ harm_intent_damage = 0
+ melee_damage_lower = 20
+ melee_damage_upper = 30
+ attack_armor_pen = 50 //fist of iron and stone will smash through most things
+ attacktext = list("smashed their armoured gauntlet into")
+ friendly = list("pats")
+ organ_names = /decl/mob_organ_names/juggernaut
+ mob_size = MOB_HUGE
+ attack_sound = 'sound/weapons/heavysmash.ogg'
+ status_flags = 0
+ resistance = 10
+ construct_spells = list(/spell/targeted/fortify,
+ /spell/targeted/construct_advanced/slam,
+ /spell/targeted/construct_advanced/mend_purity,
+ /spell/targeted/purity_repair_aura
+ )
+
+ ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative
+
+ armor = list(
+ "melee" = 70,
+ "bullet" = 30,
+ "laser" = 30,
+ "energy" = 30,
+ "bomb" = 10,
+ "bio" = 100,
+ "rad" = 100)
+
+/mob/living/simple_mob/construct/cardinal/Life()
+ SetWeakened(0)
+ ..()
+
+/mob/living/simple_mob/construct/cardinal/bullet_act(var/obj/item/projectile/P)
+ var/reflectchance = 100 - round(P.damage)
+ if(prob(reflectchance))
+ var/damage_mod = rand(2,4)
+ var/projectile_dam_type = P.damage_type
+ var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
+ var/armorcheck = run_armor_check(null, P.check_armour)
+ var/soakedcheck = get_armor_soak(null, P.check_armour)
+ if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)))
+ visible_message("The [P.name] bounces off of [src]'s shell!", \
+ "The [P.name] bounces off of [src]'s shell!")
+ new /obj/item/weapon/material/shard/shrapnel(src.loc)
+ if(!(P.damage_type == BRUTE || P.damage_type == BURN))
+ projectile_dam_type = BRUTE
+ incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to brute for physical projectiles, though severely decreased.
+ apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
+ return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect.
+ else
+ visible_message("The [P.name] gets reflected by [src]'s shell!", \
+ "The [P.name] gets reflected by [src]'s shell!")
+ damage_mod = rand(3,5)
+ incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3)))
+ if(!(P.damage_type == BRUTE || P.damage_type == BURN))
+ projectile_dam_type = BURN
+ incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased.
+ apply_damage(incoming_damage, P.damage_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P)
+
+ // Find a turf near or on the original location to bounce to
+ if(P.starting)
+ var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3)
+ var/turf/curloc = get_turf(src)
+
+ // redirect the projectile
+ P.redirect(new_x, new_y, curloc, src)
+ P.reflected = 1
+
+ return -1 // complete projectile permutation
+
+ return (..(P))
+
+/decl/mob_organ_names/juggernaut
+ hit_zones = list("body", "left pauldron", "right pauldron", "left arm", "right arm", "eye", "head", "crystaline spike")
diff --git a/modular_chomp/icons/mob/animal_ch.dmi b/modular_chomp/icons/mob/animal_ch.dmi
index ee3cdd028a..05de255776 100644
Binary files a/modular_chomp/icons/mob/animal_ch.dmi and b/modular_chomp/icons/mob/animal_ch.dmi differ
diff --git a/modular_chomp/icons/mob/screen1_purity.dmi b/modular_chomp/icons/mob/screen1_purity.dmi
new file mode 100644
index 0000000000..ad52b0ca9c
Binary files /dev/null and b/modular_chomp/icons/mob/screen1_purity.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 5fb46cccad..fb4b4ab324 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -685,6 +685,7 @@
#include "code\game\gamemodes\changeling\powers\transform.dm"
#include "code\game\gamemodes\changeling\powers\visible_camouflage.dm"
#include "code\game\gamemodes\cult\construct_spells.dm"
+#include "code\game\gamemodes\cult\construct_spells_ch.dm"
#include "code\game\gamemodes\cult\cult.dm"
#include "code\game\gamemodes\cult\cult_items.dm"
#include "code\game\gamemodes\cult\cult_structures.dm"
@@ -4707,6 +4708,7 @@
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\meteroid\metTypes.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\occult\constructs\construct.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\occult\constructs\juggernaut.dm"
+#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\occult\constructs\purity_construct.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\slimess\feral.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\ashy.dm"
#include "modular_chomp\code\modules\mob\living\simple_mob\subtypes\vore\bigdragon.dm"