diff --git a/beestation.dme b/beestation.dme
index cd1d8971373aa..25f0303efa8f0 100644
--- a/beestation.dme
+++ b/beestation.dme
@@ -3774,6 +3774,10 @@
#include "monkestation\code\game\objects\items\grenades\monkey_barrel.dm"
#include "monkestation\code\game\objects\items\implants\implant_hard_spear.dm"
#include "monkestation\code\game\objects\items\melee\misc.dm"
+#include "monkestation\code\game\objects\items\melee\armaments\armament.dm"
+#include "monkestation\code\game\objects\items\melee\armaments\blood_scythe.dm"
+#include "monkestation\code\game\objects\items\melee\armaments\daemon_blade.dm"
+#include "monkestation\code\game\objects\items\melee\armaments\hell_hammer.dm"
#include "monkestation\code\game\objects\items\stacks\ammonia_crystals.dm"
#include "monkestation\code\game\objects\items\stacks\hot_ice.dm"
#include "monkestation\code\game\objects\items\stacks\sheets\mineral.dm"
@@ -3816,6 +3820,7 @@
#include "monkestation\code\modules\clothing\head\misc.dm"
#include "monkestation\code\modules\clothing\head\misc_special.dm"
#include "monkestation\code\modules\clothing\masks\breath.dm"
+#include "monkestation\code\modules\clothing\masks\daemon_mask.dm"
#include "monkestation\code\modules\clothing\masks\miscellaneous.dm"
#include "monkestation\code\modules\clothing\outfits\special.dm"
#include "monkestation\code\modules\clothing\shoes\magboots.dm"
diff --git a/monkestation/code/game/objects/items/melee/armaments/armament.dm b/monkestation/code/game/objects/items/melee/armaments/armament.dm
new file mode 100644
index 0000000000000..d8b2bf115d353
--- /dev/null
+++ b/monkestation/code/game/objects/items/melee/armaments/armament.dm
@@ -0,0 +1,29 @@
+/obj/item/armament
+ name = "armament"
+ desc = "a daemon weapon."
+ force = 30
+ throwforce = 10
+ w_class = WEIGHT_CLASS_BULKY
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ icon = 'monkestation/icons/obj/items_and_weapons.dmi'
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "ripped", "diced", "cut")
+ slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT
+ sharpness = IS_SHARP
+ resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
+ var/ability_cooldown = 5 SECONDS
+ COOLDOWN_DECLARE(armament_cooldown)
+
+/obj/item/armament/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ . = ..()
+ if(!COOLDOWN_FINISHED(src,armament_cooldown))
+ to_chat(user, "You must wait [COOLDOWN_TIMELEFT(src, armament_cooldown)*0.1] seconds to use [src] again!")
+ return TRUE
+ COOLDOWN_START(src,armament_cooldown,ability_cooldown)
+
+
+/obj/item/armament/attack_self(mob/user)
+ . = ..()
+ if(!COOLDOWN_FINISHED(src,armament_cooldown))
+ to_chat(user, "You must wait [COOLDOWN_TIMELEFT(src, armament_cooldown)*0.1] seconds to use [src] again!")
+ return TRUE
+ COOLDOWN_START(src,armament_cooldown,ability_cooldown)
diff --git a/monkestation/code/game/objects/items/melee/armaments/blood_scythe.dm b/monkestation/code/game/objects/items/melee/armaments/blood_scythe.dm
new file mode 100644
index 0000000000000..062725dea1b4b
--- /dev/null
+++ b/monkestation/code/game/objects/items/melee/armaments/blood_scythe.dm
@@ -0,0 +1,29 @@
+/obj/item/armament/blood_scythe
+ name = "blood scythe"
+ desc = "A scythe created from the blood of demons. Click on a distant target to bring them closer."
+ icon_state = "blood_scythe"
+ item_state = "blood_scythe"
+ lefthand_file = 'monkestation/icons/mob/inhands/polearms_lefthand.dmi'
+ righthand_file = 'monkestation/icons/mob/inhands/polearms_righthand.dmi'
+ force = 15
+ ability_cooldown = 15 SECONDS
+
+/obj/item/armament/blood_scythe/Initialize(mapload)
+ . = ..()
+
+/obj/item/armament/blood_scythe/attack_self(mob/user)
+ . = ..()
+
+/obj/item/armament/blood_scythe/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(!proximity_flag && get_dist(user,target) < 7)
+ if(!isliving(target))
+ return
+ . = ..()
+ if(.)
+ return
+ var/target_turf = get_step(user, user.dir)
+ var/mob/living/living_target = target
+ if(isopenturf(target_turf))
+ do_teleport(living_target, target_turf, channel = TELEPORT_CHANNEL_FREE, no_effects = TRUE, teleport_mode = TELEPORT_MODE_DEFAULT)
+ living_target.Stun(1 SECONDS)
+ living_target.Knockdown(3 SECONDS)
diff --git a/monkestation/code/game/objects/items/melee/armaments/daemon_blade.dm b/monkestation/code/game/objects/items/melee/armaments/daemon_blade.dm
new file mode 100644
index 0000000000000..d4580e22f0cd6
--- /dev/null
+++ b/monkestation/code/game/objects/items/melee/armaments/daemon_blade.dm
@@ -0,0 +1,63 @@
+/obj/item/armament/daemon_blade
+ name = "daemon blade"
+ desc = "A blade formed out of demonic energy. Activate in hand to throw flames."
+ icon_state = "daemon_blade"
+ item_state = "daemon_blade"
+ lefthand_file = 'monkestation/icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'monkestation/icons/mob/inhands/weapons/swords_righthand.dmi'
+ force = 12
+ ability_cooldown = 20 SECONDS
+ var/flame_toggle = FALSE
+
+/obj/item/armament/daemon_blade/Initialize(mapload)
+ . = ..()
+
+/obj/item/armament/daemon_blade/attack_self(mob/user)
+ if(!COOLDOWN_FINISHED(src,armament_cooldown)) //Can't turn it on if its on cooldown
+ to_chat(user, "You must wait [COOLDOWN_TIMELEFT(src, armament_cooldown)*0.1] seconds to use [src] again!")
+ flame_toggle = FALSE
+ return
+ flame_toggle = !flame_toggle
+ if (flame_toggle)
+ icon_state = "daemon_blade_fire"
+ to_chat(user, "[src] glows bright with mysterious runes. Click a target to burn it")
+ else
+ icon_state = "daemon_blade"
+ to_chat(user, "[src] stops glowing.")
+ return
+
+/obj/item/armament/daemon_blade/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(!flame_toggle)
+ return
+ . = ..()
+ if(.)
+ return
+ var/turflist = get_line(user, get_turf(target))
+ flame_turf(turflist)
+ flame_toggle = FALSE
+ icon_state = "daemon_blade"
+ to_chat(user, "[src] stops glowing.")
+
+/obj/item/armament/daemon_blade/proc/flame_turf(turflist)
+ var/turf/previous_turf = get_turf(src)
+ for(var/turf/current_turf in turflist)
+ if(current_turf == get_turf(src))
+ continue
+ if(previous_turf == get_turf(src))
+ previous_turf = current_turf
+ continue
+ if(isclosedturf(previous_turf)) //Can't fire fire through walls
+ break
+ new /obj/effect/hotspot(previous_turf)
+ for(var/mob/living/hit_creature in previous_turf)
+ hit_creature.adjustFireLoss(6)
+ hit_creature.throw_at(current_turf, 1, 2)
+ hit_creature.Stun(0.5 SECONDS)
+ previous_turf = current_turf
+ sleep(1)
+ //Once last hit for the final turf
+ if(!isclosedturf(previous_turf))
+ new /obj/effect/hotspot(previous_turf)
+ for(var/mob/living/hit_creature in previous_turf)
+ hit_creature.adjustFireLoss(12)
+ hit_creature.Stun(1 SECONDS)
diff --git a/monkestation/code/game/objects/items/melee/armaments/hell_hammer.dm b/monkestation/code/game/objects/items/melee/armaments/hell_hammer.dm
new file mode 100644
index 0000000000000..c5bed38f889d1
--- /dev/null
+++ b/monkestation/code/game/objects/items/melee/armaments/hell_hammer.dm
@@ -0,0 +1,34 @@
+/obj/item/armament/hell_hammer
+ name = "hell hammer"
+ desc = "A hammer forged from the rocks of hell. Activate in hand to trigger a shockwave."
+ icon_state = "hell_hammer"
+ item_state = "hell_hammer"
+ lefthand_file = 'monkestation/icons/mob/inhands/weapons/hammers_lefthand.dmi'
+ righthand_file = 'monkestation/icons/mob/inhands/weapons/hammers_lefthand.dmi'
+ sharpness = IS_BLUNT
+ hitsound = "swing_hit"
+ attack_weight = 2
+ force = 20
+ ability_cooldown = 25 SECONDS
+
+/obj/item/armament/hell_hammer/Initialize(mapload)
+ . = ..()
+
+/obj/item/armament/hell_hammer/attack_self(mob/user)
+ . = ..()
+ if(.)
+ return
+ user.visible_message("[user] slams [src] onto the ground, creating a shockwave.", "You slam [src] into the ground, creating a shockwave.")
+ playsound(src, 'sound/effects/grillehit.ogg', 100)
+ for(var/atom/movable/shockwave_target as mob|obj in oview(5,user))
+ if(shockwave_target.anchored)
+ continue
+ var/throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(shockwave_target, user)))
+ shockwave_target.throw_at(throwtarget, 5, 2)
+ if(isliving(shockwave_target))
+ var/mob/living/living_target = shockwave_target
+ living_target.Knockdown(3 SECONDS)
+ living_target.Stun(3 SECONDS)
+
+/obj/item/armament/hell_hammer/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ return
diff --git a/monkestation/code/modules/clothing/masks/daemon_mask.dm b/monkestation/code/modules/clothing/masks/daemon_mask.dm
new file mode 100644
index 0000000000000..e591636302986
--- /dev/null
+++ b/monkestation/code/modules/clothing/masks/daemon_mask.dm
@@ -0,0 +1,322 @@
+//Daemon Mask
+/obj/item/clothing/mask/daemon_mask
+ name = "daemon mask"
+ desc = "A cursed mask recovered from the ruins of an ancient cult, found to summon and house spirits."
+ icon = 'monkestation/icons/obj/clothing/masks.dmi'
+ worn_icon = 'monkestation/icons/mob/mask.dmi'
+ icon_state = "daemon_mask"
+ item_state = "daemon_mask"
+ clothing_flags = SHOWEROKAY
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ //Whether a spirit is in the mask or not
+ var/possessed = FALSE
+ var/mob/living/simple_animal/shade/spirit = null
+
+ //spells only while you possess someone
+ var/list/possession_spells = list(/obj/effect/proc_holder/spell/targeted/mask_lunge,
+ /obj/effect/proc_holder/spell/self/mask_fear,
+ /obj/effect/proc_holder/spell/self/summon_armament)
+
+ //spells only while youre a mask
+ var/list/mask_spells = list(/obj/effect/proc_holder/spell/self/mask_commune,
+ /obj/effect/proc_holder/spell/self/truesight)
+
+ //spells that you always have
+ var/list/constant_spells = list(/obj/effect/proc_holder/spell/self/mask_possession)
+
+ var/obj/item/armament
+ var/obj/item/summoned_armament
+
+/obj/item/clothing/mask/daemon_mask/Initialize(mapload)
+ . = ..()
+ armament = pick(subtypesof(/obj/item/armament))
+
+/obj/item/clothing/mask/daemon_mask/attack_self(mob/user)
+ if(possessed)
+ return
+ if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE))
+ to_chat(user, "The mask doesn't react, it must be broken!")
+ return
+
+ to_chat(user, "[src] starts glowing...")
+
+ possessed = TRUE
+
+ var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of the daemon mask?", ROLE_PAI, null, FALSE, 15 SECONDS, POLL_IGNORE_POSSESSED_BLADE)
+
+ if(LAZYLEN(candidates))
+ var/mob/dead/observer/candidate = pick(candidates)
+ var/mob/living/simple_animal/shade/new_spirit = new(src)
+ spirit = new_spirit
+ new_spirit.key = candidate.key
+ new_spirit.fully_replace_character_name(null, "The spirit of [src]")
+ new_spirit.status_flags |= GODMODE
+ new_spirit.mind.assigned_role = "daemon mask"
+ new_spirit.set_stat(CONSCIOUS)
+ new_spirit.remove_from_dead_mob_list()
+ new_spirit.add_to_alive_mob_list()
+ grant_all_languages()
+
+ // new_spirit.mind.add_antag_datum(/datum/antagonist/survivalist/daemon_mask)
+
+ for(var/ability in constant_spells) //Constant Spells
+ var/obj/effect/proc_holder/spell/spell_to_add = new ability
+ new_spirit.mind.AddSpell(spell_to_add)
+
+ enter_mask_mode()
+
+ to_chat(user, "[src] shines brighter and it's eyes glow red, a spirit has been summoned!")
+ icon_state = "daemon_mask_on"
+ item_state = "daemon_mask_on"
+
+ else
+ to_chat(user, "[src] stops glowing. Maybe you can try again later.")
+ possessed = FALSE
+
+/obj/item/clothing/mask/daemon_mask/Destroy()
+ . = ..()
+ qdel(spirit) //if the mask dies you die
+ spirit = null
+
+/obj/item/clothing/mask/daemon_mask/proc/enter_mask_mode()
+ if(HAS_TRAIT(src,TRAIT_NODROP))
+ REMOVE_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT)
+ for(var/ability in possession_spells)
+ spirit.mind.RemoveSpell(ability)
+ for(var/ability in mask_spells)
+ var/obj/effect/proc_holder/spell/spell = new ability
+ spirit.mind.AddSpell(spell)
+
+/obj/item/clothing/mask/daemon_mask/proc/enter_possession_mode()
+ if(!HAS_TRAIT(src,TRAIT_NODROP))
+ ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) //Can't take the mask off while you are in control
+ for(var/ability in mask_spells)
+ spirit.mind.RemoveSpell(ability)
+ for(var/ability in possession_spells)
+ var/obj/effect/proc_holder/spell/spell = new ability
+ spirit.mind.AddSpell(spell)
+
+//Daemon Mask - Spells
+/obj/effect/proc_holder/spell/self/mask_possession
+ name = "Take Control"
+ desc = "possess of your wearer for a short time. Possessing your wearer makes them unable to go into crit until possession ends."
+ clothes_req = FALSE
+ charge_max = 3 MINUTES //1 minute for possession + 2 minutes for the cooldown after
+ action_icon = 'monkestation/icons/obj/clothing/masks.dmi'
+ action_icon_state = "daemon_mask"
+ invocation = "none"
+ invocation_type = "none"
+ school = "transmutation"
+
+/obj/effect/proc_holder/spell/self/mask_possession/cast(mob/living/user)
+ var/obj/item/clothing/mask/daemon_mask/mask = user.loc
+ if(!ishuman(mask.loc))
+ to_chat(user,"No one is wearing you!")
+ revert_cast()
+ return
+
+ var/mob/living/carbon/wearer = mask.loc
+
+ if(mask != wearer.wear_mask)
+ to_chat(user,"No one is wearing you!")
+ revert_cast()
+ return
+
+ if(!wearer.ckey)
+ to_chat(user,"There's no mind to possess!")
+ revert_cast()
+ return
+
+ playsound(user, 'sound/spookoween/insane_low_laugh.ogg', 75)
+
+ to_chat(wearer,"[mask] takes control!")
+
+ var/mob/living/spirit = user
+
+ mask.enter_possession_mode()
+ //MIND TRANSFER BEGIN
+ var/mob/dead/observer/ghost = wearer.ghostize(0)
+ spirit.mind.transfer_to(wearer)
+
+ ghost.mind.transfer_to(spirit)
+ if(ghost.key)
+ spirit.key = ghost.key
+ qdel(ghost)
+
+ //Ends stuns
+ wearer.SetAllImmobility(0)
+ wearer.adjustStaminaLoss(-100)
+ wearer.set_resting(FALSE)
+
+ ADD_TRAIT(wearer, TRAIT_NODEATH, "daemon_mask")
+ ADD_TRAIT(wearer, TRAIT_NOSOFTCRIT, "daemon_mask")
+ ADD_TRAIT(wearer, TRAIT_NOHARDCRIT, "daemon_mask")
+
+ addtimer(CALLBACK(src, .proc/undo_possession, user, wearer, mask), 60 SECONDS)
+
+/obj/effect/proc_holder/spell/self/mask_possession/proc/undo_possession(mob/living/swapper, mob/living/carbon/victim, obj/item/clothing/mask/daemon_mask/mask)
+ if(mask.summoned_armament)
+ qdel(mask.summoned_armament)
+ mask.summoned_armament = null
+
+ var/mob/dead/observer/ghost = swapper.ghostize(0)
+ victim.mind.transfer_to(swapper)
+
+ ghost.mind.transfer_to(victim)
+ if(ghost.key)
+ victim.key = ghost.key
+ qdel(ghost)
+ mask.enter_mask_mode()
+
+ to_chat(swapper,"Your control wears off.")
+ to_chat(victim,"You regain control of your body.")
+
+ REMOVE_TRAIT(victim, TRAIT_NODEATH, "daemon_mask")
+ REMOVE_TRAIT(victim, TRAIT_NOSOFTCRIT, "daemon_mask")
+ REMOVE_TRAIT(victim, TRAIT_NOHARDCRIT, "daemon_mask")
+
+/obj/effect/proc_holder/spell/self/mask_commune
+ name = "Commune"
+ desc = "Send a message to your wearer."
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "hivemind_link"
+ clothes_req = FALSE
+ charge_max = 1 SECONDS
+ invocation = "none"
+ invocation_type = "none"
+ school = "transmutation"
+
+/obj/effect/proc_holder/spell/self/mask_commune/cast(mob/living/user)
+ var/obj/item/clothing/mask/daemon_mask/mask = user.loc
+
+ if(!ishuman(mask.loc))
+ to_chat(user,"No one is wearing you!")
+ return
+ var/input = stripped_input(usr, "Talk to your wielder.", "Voice of the mask", "")
+ if(!input)
+ return
+ if(CHAT_FILTER_CHECK(input))
+ to_chat(usr, "You cannot send a message that contains a word prohibited in IC chat!")
+ return
+
+ var/mob/living/wearer = mask.loc
+
+ to_chat(wearer, "The Daemon Mask whispers to you: [input]")
+ to_chat(user, "You whisper to your wielder: [input]")
+ user.log_talk(input, LOG_SAY, tag="daemon mask")
+
+//Mask Mode Spells
+
+/obj/effect/proc_holder/spell/self/truesight
+ name = "Truesight"
+ desc = "Gain sight into the unknown for a short time."
+ clothes_req = FALSE
+ charge_max = 45 SECONDS
+ action_icon = 'monkestation/icons/obj/clothing/masks.dmi'
+ action_icon_state = "daemon_mask_on"
+ invocation = "none"
+ invocation_type = "none"
+ school = "transmutation"
+
+/obj/effect/proc_holder/spell/self/truesight/cast(mob/living/user)
+ to_chat(user,"Your eyes glow brighter as you see through walls.")
+ user.sight |= SEE_THRU
+
+ addtimer(CALLBACK(src, .proc/undo_cast, user), 10 SECONDS)
+
+/obj/effect/proc_holder/spell/self/truesight/proc/undo_cast(mob/living/user)
+ to_chat(user,"Your vision fades.")
+ user.sight &= ~SEE_THRU
+
+//Possession Spells
+
+/obj/effect/proc_holder/spell/targeted/mask_lunge
+ name = "Lunge"
+ desc = "Use daemonic power to appear on a person nearby, knocking them down."
+ school = "abjuration"
+ charge_max = 20 SECONDS
+ clothes_req = FALSE
+ invocation = "none"
+ invocation_type = "none"
+ ranged_mousepointer = 'icons/mob/actions/actions_spells.dmi'
+ action_icon_state = "teleport"
+ range = 6
+ selection_type = "range"
+
+/obj/effect/proc_holder/spell/targeted/mask_lunge/cast(list/targets, mob/user = usr)
+ if(!length(targets))
+ to_chat(user, "No target found in range.")
+ revert_cast()
+ return
+
+ var/mob/living/carbon/target = targets[1]
+
+ if(!isliving(target))
+ revert_cast()
+ return
+
+ if(!(target in oview(range)))
+ to_chat(user, "[target.p_theyre(TRUE)] too far away!")
+ revert_cast()
+ return
+
+
+ playsound(get_turf(user), 'sound/magic/blink.ogg', 50, 1)
+ target.Knockdown(5 SECONDS)
+ target.Stun(3 SECONDS)
+ target.visible_message("[user] appears above [target], knocking them down!", \
+ "You fall violently as [user] appears above you!")
+ do_teleport(user, target, channel = TELEPORT_CHANNEL_FREE, no_effects = TRUE, teleport_mode = TELEPORT_MODE_DEFAULT)
+
+/obj/effect/proc_holder/spell/self/mask_fear
+ name = "Fear"
+ desc = "Strike fear into those who dare challenge your status."
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "resonant_shriek"
+ clothes_req = FALSE
+ charge_max = 20 SECONDS
+ invocation = "none"
+ invocation_type = "none"
+ school = "transmutation"
+ var/list/noises = list('sound/hallucinations/i_see_you2.ogg','sound/hallucinations/look_up1.ogg','sound/hallucinations/look_up2.ogg','sound/hallucinations/behind_you1.ogg')
+
+/obj/effect/proc_holder/spell/self/mask_fear/cast(mob/living/user)
+ var/obj/item/clothing/mask/daemon_mask/mask = user.loc
+ playsound(get_turf(mask), pick(noises), 200, 1)
+ for(var/mob/living/carbon/target in oviewers(7,mask))
+ if(HAS_TRAIT(target, TRAIT_FEARLESS))
+ return
+
+ if(HAS_TRAIT(target, TRAIT_STUNIMMUNE))
+ to_chat(target,"A chill runs through your body as you stare into [mask].")
+ return
+
+ if(target.mind?.assigned_role == "Chaplain")
+ to_chat(target,"Your faith protects you as you stare into [mask].")
+ return
+
+ to_chat(target,"Your joints lock up as you stare into [mask].")
+ target.Immobilize(5 SECONDS)
+
+ if(prob(50))
+ target.emote("scream")
+
+/obj/effect/proc_holder/spell/self/summon_armament
+ name = "Summon Armament"
+ desc = "Summon your weapon. Examine it to see what it does."
+ action_icon = 'monkestation/icons/obj/items_and_weapons.dmi'
+ action_icon_state = "daemon_blade"
+ clothes_req = FALSE
+ charge_max = 60 SECONDS
+ invocation = "none"
+ invocation_type = "none"
+ school = "transmutation"
+
+/obj/effect/proc_holder/spell/self/summon_armament/cast(mob/living/user)
+ var/obj/item/clothing/mask/daemon_mask/mask = user.get_item_by_slot(ITEM_SLOT_MASK)
+ if(!istype(mask))
+ return
+
+ var/obj/item/armament/new_armament = new mask.armament(loc)
+ mask.summoned_armament = new_armament
+ user.put_in_hands(new_armament)
diff --git a/monkestation/code/modules/uplink/uplink_items.dm b/monkestation/code/modules/uplink/uplink_items.dm
index 0b10474c7af32..9cc701afe0c65 100644
--- a/monkestation/code/modules/uplink/uplink_items.dm
+++ b/monkestation/code/modules/uplink/uplink_items.dm
@@ -35,6 +35,15 @@
desc = "This serum made by BEAR Co (A group of very wealthy bears) will give other species the chance to be bear."
item = /obj/item/bearserum
cost = 12
+
+//Job Specific Items
+
+/datum/uplink_item/role_restricted/daemon_mask
+ name = "Daemon Mask"
+ desc = "This seemingly normal, albeit edgy, mask has the ability to summon a powerful demonic spirit that can control your body and fight for you."
+ item = /obj/item/clothing/mask/daemon_mask
+ cost = 14
+ restricted_roles = list("Curator")
//Species Specific Items
diff --git a/monkestation/icons/mob/inhands/polearms_lefthand.dmi b/monkestation/icons/mob/inhands/polearms_lefthand.dmi
index bd7e8dea452ab..bf1d0c7ba13ec 100644
Binary files a/monkestation/icons/mob/inhands/polearms_lefthand.dmi and b/monkestation/icons/mob/inhands/polearms_lefthand.dmi differ
diff --git a/monkestation/icons/mob/inhands/polearms_righthand.dmi b/monkestation/icons/mob/inhands/polearms_righthand.dmi
index 1f63e5eb78c28..1ec2ba3a89bb3 100644
Binary files a/monkestation/icons/mob/inhands/polearms_righthand.dmi and b/monkestation/icons/mob/inhands/polearms_righthand.dmi differ
diff --git a/monkestation/icons/mob/inhands/weapons/hammers_lefthand.dmi b/monkestation/icons/mob/inhands/weapons/hammers_lefthand.dmi
new file mode 100644
index 0000000000000..723ce1c79ed92
Binary files /dev/null and b/monkestation/icons/mob/inhands/weapons/hammers_lefthand.dmi differ
diff --git a/monkestation/icons/mob/inhands/weapons/hammers_righthand.dmi b/monkestation/icons/mob/inhands/weapons/hammers_righthand.dmi
new file mode 100644
index 0000000000000..1766f7797556d
Binary files /dev/null and b/monkestation/icons/mob/inhands/weapons/hammers_righthand.dmi differ
diff --git a/monkestation/icons/mob/inhands/weapons/swords_lefthand.dmi b/monkestation/icons/mob/inhands/weapons/swords_lefthand.dmi
new file mode 100644
index 0000000000000..74fdb28a0efdd
Binary files /dev/null and b/monkestation/icons/mob/inhands/weapons/swords_lefthand.dmi differ
diff --git a/monkestation/icons/mob/inhands/weapons/swords_righthand.dmi b/monkestation/icons/mob/inhands/weapons/swords_righthand.dmi
new file mode 100644
index 0000000000000..e0595ddfcbdda
Binary files /dev/null and b/monkestation/icons/mob/inhands/weapons/swords_righthand.dmi differ
diff --git a/monkestation/icons/mob/mask.dmi b/monkestation/icons/mob/mask.dmi
index f3a222bd2c9c3..0b75de30ef06c 100644
Binary files a/monkestation/icons/mob/mask.dmi and b/monkestation/icons/mob/mask.dmi differ
diff --git a/monkestation/icons/obj/clothing/masks.dmi b/monkestation/icons/obj/clothing/masks.dmi
index 15e9b21b64ac6..0fb34df0fee52 100644
Binary files a/monkestation/icons/obj/clothing/masks.dmi and b/monkestation/icons/obj/clothing/masks.dmi differ
diff --git a/monkestation/icons/obj/items_and_weapons.dmi b/monkestation/icons/obj/items_and_weapons.dmi
index f44b956c10c0a..02f95d61aa436 100644
Binary files a/monkestation/icons/obj/items_and_weapons.dmi and b/monkestation/icons/obj/items_and_weapons.dmi differ