diff --git a/code/citadel/cit_weapons.dm b/code/citadel/cit_weapons.dm
index c709fe90e9..b661294ae7 100644
--- a/code/citadel/cit_weapons.dm
+++ b/code/citadel/cit_weapons.dm
@@ -11,7 +11,7 @@
attack_verb = list("poked", "jabbed", "hit")
light_color = "#37FFF7"
var/light_brightness = 3
- actions_types = list(/datum/action/item_action/pick_color)
+ actions_types = list()
/obj/item/toy/sword/cx/attack_self(mob/user)
active = !( active )
@@ -57,18 +57,21 @@
var/mob/M = loc
M.update_inv_hands()
-/obj/item/toy/sword/cx/ui_action_click(mob/user, var/datum/action/A)
- if(istype(A, /datum/action/item_action/pick_color))
- if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"Choose Energy Color") as color|null
- if(energy_color_input)
- light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
- update_light()
- A.UpdateButtonIcon()
+/obj/item/toy/sword/cx/AltClick(mob/living/user)
+ if(user.incapacitated() || !istype(user))
+ to_chat(user, "You can't do that right now!")
+ return
+ if(!in_range(src, user))
+ return
+ if(user.incapacitated() || !istype(user) || !in_range(src, user))
+ return
- else
- ..()
+ if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
+ var/energy_color_input = input(usr,"Choose Energy Color") as color|null
+ if(energy_color_input)
+ light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ update_icon()
+ update_light()
/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file)
. = ..()
@@ -79,7 +82,21 @@
. += blade_inhand
/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params)
- return //NO MORE MAKING DUAL ESWORDS
+ if(istype(W, /obj/item/toy/sword/cx))
+ if((W.flags_1 & NODROP_1) || (flags_1 & NODROP_1))
+ to_chat(user, "\the [flags_1 & NODROP_1 ? src : W] is stuck to your hand, you can't attach it to \the [flags_1 & NODROP_1 ? W : src]!")
+ return
+ else
+ to_chat(user, "You combine the two plastic swords, making a single supermassive toy! You're fake-cool.")
+ new /obj/item/twohanded/hypereutactic/toy(user.loc)
+ qdel(W)
+ qdel(src)
+ else
+ return ..()
+
+/obj/item/toy/sword/cx/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to recolor it.")
/*///autolathe memes/// I really need to stop doing this and find a proper way of adding in my toys
@@ -124,7 +141,7 @@
origin_tech = "combat=3;magnets=4"
block_chance = 60
light_color = "#37FFF7"
- actions_types = list(/datum/action/item_action/pick_color)
+ actions_types = list()
/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text)
active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE
@@ -152,9 +169,6 @@
update_icon()
transform_messages(user, supress_message_text)
add_fingerprint(user)
- for(var/X in actions)
- var/datum/action/A = X
- A.UpdateButtonIcon()
return TRUE
/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text)
@@ -181,18 +195,25 @@
var/mob/M = loc
M.update_inv_hands()
-/obj/item/melee/transforming/energy/sword/cx/ui_action_click(mob/user, var/datum/action/A)
- if(istype(A, /datum/action/item_action/pick_color))
- if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
- var/energy_color_input = input(usr,"Choose Energy Color") as color|null
- if(energy_color_input)
- light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
- update_icon()
- update_light()
- A.UpdateButtonIcon()
+/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user)
+ if(user.incapacitated() || !istype(user))
+ to_chat(user, "You can't do that right now!")
+ return
+ if(!in_range(src, user))
+ return
+ if(user.incapacitated() || !istype(user) || !in_range(src, user))
+ return
- else
- ..()
+ if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
+ var/energy_color_input = input(usr,"Choose Energy Color") as color|null
+ if(energy_color_input)
+ light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ update_icon()
+ update_light()
+
+/obj/item/melee/transforming/energy/sword/cx/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to recolor it.")
/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file)
. = ..()
diff --git a/modular_citadel/citadel_ghostrole_spawners.dm b/modular_citadel/citadel_ghostrole_spawners.dm
new file mode 100644
index 0000000000..0b3797b88b
--- /dev/null
+++ b/modular_citadel/citadel_ghostrole_spawners.dm
@@ -0,0 +1,43 @@
+/obj/effect/mob_spawn/human/lavaknight
+ name = "odd cryogenics pod"
+ desc = "A humming cryo pod. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant."
+ mob_name = "a displaced knight from another dimension"
+ icon = 'icons/obj/cryogenic2.dmi'
+ icon_state = "sleeper"
+ roundstart = FALSE
+ death = FALSE
+ random = TRUE
+ outfit = /datum/outfit/lavaknight
+ mob_species = /datum/species/human
+ flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \
+ You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \
+ Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth."
+ assignedrole = "Cydonian Knight"
+
+/obj/effect/mob_spawn/human/lavaknight/special(mob/living/new_spawn)
+ if(ishuman(new_spawn))
+ var/mob/living/carbon/human/H = new_spawn
+ H.dna.features["ears"] = "Cat" //cat people
+ H.update_body()
+
+/obj/effect/mob_spawn/human/lavaknight/Destroy()
+ new/obj/structure/showcase/machinery/oldpod/used(drop_location())
+ return ..()
+
+/datum/outfit/lavaknight
+ name = "Cydonian Knight"
+ uniform = /obj/item/clothing/under/assistantformal
+ mask = /obj/item/clothing/mask/breath
+ shoes = /obj/item/clothing/shoes/sneakers/black
+ r_pocket = /obj/item/melee/transforming/energy/sword/cx
+ suit = /obj/item/clothing/suit/space/hardsuit/lavaknight
+ suit_store = /obj/item/tank/internals/oxygen
+
+/obj/effect/mob_spawn/human/lavaknight/captain
+ name = "odd gilded cryogenics pod"
+ desc = "A humming cryo pod that appears to be gilded. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant."
+ flavour_text = "You are a knight who conveniently has some form of retrograde amnesia. \
+ You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \
+ Remember: hostile creatures and such are fair game for attacking, but under no circumstances are you to attack anything capable of thought and/or speech unless it has made it its life's calling to chase you to the ends of the earth. \
+ You feel a natural instict to lead, and as such, you should strive to lead your comrades to safety, and hopefully home. You also feel a burning determination to uphold your vow, as well as your fellow comrade's."
+ l_pocket = /obj/item/twohanded/hypereutactic
\ No newline at end of file
diff --git a/modular_citadel/cydonian_armor.dm b/modular_citadel/cydonian_armor.dm
new file mode 100644
index 0000000000..0189358d36
--- /dev/null
+++ b/modular_citadel/cydonian_armor.dm
@@ -0,0 +1,160 @@
+/*
+ CYDONIAN ARMOR THAT IS RGB AND STUFF WOOOOOOOOOO
+*/
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight
+ name = "cydonian helmet"
+ desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
+ icon = 'modular_citadel/icons/lavaknight/item/head.dmi'
+ icon_state = "knight_cydonia"
+ item_state = "knight_yellow"
+ item_color = null
+ alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/head.dmi'
+ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | LAVA_PROOF
+ heat_protection = HEAD
+ armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
+ brightness_on = 7
+ allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator)
+ var/energy_color = "#35FFF0"
+ var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/New()
+ ..()
+ if(istype(loc, /obj/item/clothing/suit/space/hardsuit/lavaknight))
+ linkedsuit = loc
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/attack_self(mob/user)
+ on = !on
+
+ if(on)
+ set_light(brightness_on)
+ else
+ set_light(0)
+ for(var/X in actions)
+ var/datum/action/A = X
+ A.UpdateButtonIcon()
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/update_icon()
+ var/mutable_appearance/helm_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
+
+ if(energy_color)
+ helm_overlay.color = energy_color
+
+ helm_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15, HUD is 18
+
+ cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
+
+ add_overlay(helm_overlay)
+
+ emissivelights()
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/equipped(mob/user, slot)
+ ..()
+ if(slot == slot_head)
+ emissivelights()
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/dropped(mob/user)
+ ..()
+ emissivelightsoff()
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
+ var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
+ energy_overlay.color = energy_color
+ energy_overlay.plane = LIGHTING_PLANE + 1
+ user.cut_overlay(energy_overlay) //honk
+ user.add_overlay(energy_overlay) //honk
+
+/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr)
+ user.cut_overlay()
+ linkedsuit.emissivelights() //HONK HONK HONK MAXIMUM SPAGHETTI
+ user.regenerate_icons() //honk
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight
+ icon = 'modular_citadel/icons/lavaknight/item/suit.dmi'
+ icon_state = "knight_cydonia"
+ name = "cydonian armor"
+ desc = "A suit designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
+ item_state = "swat_suit"
+ alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/suit.dmi'
+ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
+ resistance_flags = FIRE_PROOF | LAVA_PROOF
+ armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
+ allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight
+ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
+ actions_types = list(/datum/action/item_action/toggle_helmet)
+ var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/linkedhelm
+
+ var/energy_color = "#35FFF0"
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/New()
+ ..()
+ if(helmet)
+ linkedhelm = helmet
+ light_color = energy_color
+ set_light(1)
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize()
+ ..()
+ update_icon()
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon()
+ var/mutable_appearance/suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
+
+ if(energy_color)
+ suit_overlay.color = energy_color
+
+ suit_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15.
+
+ cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
+
+ add_overlay(suit_overlay)
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/equipped(mob/user, slot)
+ ..()
+ if(slot == slot_wear_suit)
+ emissivelights()
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/dropped(mob/user)
+ ..()
+ emissivelightsoff()
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
+ var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
+ energy_overlay.color = energy_color
+ energy_overlay.plane = LIGHTING_PLANE + 1
+ user.cut_overlay(energy_overlay) //honk
+ user.add_overlay(energy_overlay) //honk
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr)
+ user.cut_overlays()
+ user.regenerate_icons() //honk
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/AltClick(mob/living/user)
+ if(user.incapacitated() || !istype(user))
+ to_chat(user, "You can't do that right now!")
+ return
+ if(!in_range(src, user))
+ return
+ if(user.incapacitated() || !istype(user) || !in_range(src, user))
+ return
+
+ if(alert("Are you sure you want to recolor your armor stripes?", "Confirm Repaint", "Yes", "No") == "Yes")
+ var/energy_color_input = input(usr,"Choose Energy Color") as color|null
+ if(energy_color_input)
+ energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ user.update_inv_wear_suit()
+ if(linkedhelm)
+ linkedhelm.energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ user.update_inv_head()
+ linkedhelm.update_icon()
+ update_icon()
+ user.update_inv_wear_suit()
+ light_color = energy_color
+ emissivelights()
+ update_light()
+
+/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to recolor it.")
\ No newline at end of file
diff --git a/modular_citadel/hypereutactic_blade.dm b/modular_citadel/hypereutactic_blade.dm
new file mode 100644
index 0000000000..e96789c43f
--- /dev/null
+++ b/modular_citadel/hypereutactic_blade.dm
@@ -0,0 +1,278 @@
+/* fuckhuge esword thingy */
+
+/obj/item/twohanded/hypereutactic
+ icon = 'modular_citadel/icons/hypereutactic/item/hypereutactic.dmi'
+ icon_state = "hypereutactic"
+ lefthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi'
+ righthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi'
+ item_state = "hypereutactic"
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ name = "hypereutactic blade"
+ desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter."
+ force = 3
+ throwforce = 5
+ throw_speed = 3
+ throw_range = 5
+ w_class = WEIGHT_CLASS_SMALL
+ var/w_class_on = WEIGHT_CLASS_BULKY
+ force_unwielded = 3
+ force_wielded = 40
+ wieldsound = 'sound/weapons/nebon.ogg'
+ unwieldsound = 'sound/weapons/neboff.ogg'
+ hitsound = "swing_hit"
+ armour_penetration = 40
+ origin_tech = "magnets=6;syndicate=1"
+ light_color = "#37FFF7"
+ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded")
+ block_chance = 75
+ max_integrity = 200
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
+ resistance_flags = FIRE_PROOF
+ var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
+ flags_2 = SLOWS_WHILE_IN_HAND_2
+
+/obj/item/twohanded/hypereutactic/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds.
+ if(M.has_dna())
+ if(M.dna.check_mutation(HULK))
+ to_chat(M, "You lack the grace to wield this!")
+ return
+ ..()
+ if(wielded)
+ sharpness = IS_SHARP
+ w_class = w_class_on
+ hitsound = 'sound/weapons/nebhit.ogg'
+ START_PROCESSING(SSobj, src)
+ set_light(brightness_on)
+ slowdown = 1
+
+/obj/item/twohanded/hypereutactic/unwield() //Specific unwield () to switch hitsounds.
+ sharpness = initial(sharpness)
+ w_class = initial(w_class)
+ ..()
+ hitsound = "swing_hit"
+ STOP_PROCESSING(SSobj, src)
+ set_light(0)
+ slowdown = initial(slowdown)
+
+/obj/item/twohanded/hypereutactic/update_icon()
+ var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_blade")
+ var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_gem")
+
+ if(light_color)
+ blade_overlay.color = light_color
+ gem_overlay.color = light_color
+
+ cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
+
+ add_overlay(gem_overlay)
+
+ if(wielded)
+ add_overlay(blade_overlay)
+
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_hands()
+
+ clean_blood()//blood overlays get weird otherwise, because the sprite changes. (retained from original desword because I have no idea what this is)
+
+/obj/item/twohanded/hypereutactic/AltClick(mob/living/user)
+ if(user.incapacitated() || !istype(user))
+ to_chat(user, "You can't do that right now!")
+ return
+ if(!in_range(src, user))
+ return
+ if(user.incapacitated() || !istype(user) || !in_range(src, user))
+ return
+
+ if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
+ var/energy_color_input = input(usr,"Choose Energy Color") as color|null
+ if(energy_color_input)
+ light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ update_icon()
+ update_light()
+
+/obj/item/twohanded/hypereutactic/worn_overlays(isinhands, icon_file)
+ . = ..()
+ if(isinhands)
+ var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
+ gem_inhand.color = light_color
+ . += gem_inhand
+ if(wielded)
+ var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade")
+ blade_inhand.color = light_color
+ . += blade_inhand
+
+/obj/item/twohanded/hypereutactic/examine(mob/user)
+ ..()
+ to_chat(user, "Alt-click to recolor it.")
+
+
+
+////////// stuff beneath this is all taken from the desword ////////////
+
+
+
+/obj/item/twohanded/hypereutactic/attack(mob/target, mob/living/carbon/human/user)
+ if(user.has_dna())
+ if(user.dna.check_mutation(HULK))
+ to_chat(user, "You grip the blade too hard and accidentally close it!")
+ unwield()
+ return
+ ..()
+ if(user.disabilities & CLUMSY && (wielded) && prob(40))
+ impale(user)
+ return
+
+/obj/item/twohanded/hypereutactic/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ . = ..()
+
+/obj/item/twohanded/hypereutactic/proc/impale(mob/living/user)
+ to_chat(user, "You spin around a bit before losing your balance and impaling yourself on [src].")
+ if (force_wielded)
+ user.take_bodypart_damage(20,25)
+ else
+ user.adjustStaminaLoss(25)
+
+/obj/item/twohanded/hypereutactic/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ if(wielded)
+ return ..()
+ return 0
+
+/obj/item/twohanded/hypereutactic/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up
+ if(wielded)
+ to_chat(user, "You can't pick up such dangerous item with your meaty hands without losing fingers, better not to!")
+ return 1
+
+/obj/item/twohanded/hypereutactic/process()
+ if(wielded)
+ open_flame()
+ else
+ STOP_PROCESSING(SSobj, src)
+
+/obj/item/twohanded/hypereutactic/IsReflect()
+ if(wielded)
+ return 1
+
+/obj/item/twohanded/hypereutactic/ignition_effect(atom/A, mob/user)
+ // same as /obj/item/melee/transforming/energy, mostly
+ if(!wielded)
+ return ""
+ var/in_mouth = ""
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(C.wear_mask == src)
+ in_mouth = ", barely missing their nose"
+ . = "[user] swings [user.p_their()] [src][in_mouth]. [user.p_they()] light[user.p_s()] [A] in the process."
+ playsound(loc, hitsound, get_clamped_volume(), 1, -1)
+ add_fingerprint(user)
+
+
+////////////////// TOY VERSION /////////////////////////////
+
+/obj/item/twohanded/hypereutactic/toy
+ name = "\improper DX Hyper-Euplastic LightSword"
+ desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up."
+ force = 0
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 5
+ force_unwielded = 0
+ force_wielded = 0
+ origin_tech = null
+ attack_verb = list("attacked", "struck", "hit")
+
+/obj/item/twohanded/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
+ return 0
+
+/obj/item/twohanded/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles
+ return 0
+
+/* old code that don't work no more
+/obj/item/toy/sword/cx/hyper
+ name = "\improper DX Hyper-Euplastic LightSword"
+ desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up."
+ icon = 'modular_citadel/icons/hypereutactic/item/hypereutactic.dmi'
+ icon_state = "hypereutactic"
+ lefthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi'
+ righthand_file = 'modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi'
+ item_state = "hypereutactic"
+ inhand_x_dimension = 64
+ inhand_y_dimension = 64
+ active = FALSE
+ w_class = WEIGHT_CLASS_SMALL
+ attack_verb = list("poked", "devastated", "jabbed")
+ light_color = "#37FFF7"
+ light_brightness = 3
+ actions_types = list()
+
+/obj/item/toy/sword/cx/hyper/attack_self(mob/user)
+ active = !( active )
+
+ if (active)
+ to_chat(user, "You activate the holographic blade with a press of a button.")
+ playsound(user, 'sound/weapons/nebon.ogg', 50, 1)
+ w_class = WEIGHT_CLASS_BULKY
+ attack_verb = list("slashed", "stabbed", "ravaged")
+ set_light(light_brightness)
+ update_icon()
+
+ else
+ to_chat(user, "You deactivate the holographic blade with a press of a button.")
+ playsound(user, 'sound/weapons/neboff.ogg', 50, 1)
+ w_class = WEIGHT_CLASS_SMALL
+ attack_verb = list("poked", "jabbed", "hit")
+ set_light(0)
+ update_icon()
+
+ add_fingerprint(user)
+
+/obj/item/toy/sword/cx/hyper/update_icon()
+ var/mutable_appearance/blade_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_blade")
+ var/mutable_appearance/gem_overlay = mutable_appearance('modular_citadel/icons/hypereutactic/item/hypereutactic.dmi', "hypereutactic_gem")
+
+ if(light_color)
+ blade_overlay.color = light_color
+ gem_overlay.color = light_color
+
+ cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
+
+ add_overlay(gem_overlay)
+
+ if(active)
+ add_overlay(blade_overlay)
+
+ if(ismob(loc))
+ var/mob/M = loc
+ M.update_inv_hands()
+
+/obj/item/toy/sword/cx/hyper/AltClick(mob/living/user)
+ if(user.incapacitated() || !istype(user))
+ to_chat(user, "You can't do that right now!")
+ return
+ if(!in_range(src, user))
+ return
+ if(user.incapacitated() || !istype(user) || !in_range(src, user))
+ return
+
+ if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
+ var/energy_color_input = input(usr,"Choose Energy Color") as color|null
+ if(energy_color_input)
+ light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
+ update_icon()
+ update_light()
+
+/obj/item/toy/sword/cx/hyper/worn_overlays(isinhands, icon_file)
+ if(isinhands)
+ var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
+ gem_inhand.color = light_color
+ . += gem_inhand
+ if(active)
+ var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade")
+ blade_inhand.color = light_color
+ . += blade_inhand
+
+/obj/item/toy/sword/cx/hyper/attackby(obj/item/W, mob/living/user, params)
+ return
+*/
\ No newline at end of file
diff --git a/modular_citadel/icons/hypereutactic/item/hypereutactic.dmi b/modular_citadel/icons/hypereutactic/item/hypereutactic.dmi
new file mode 100644
index 0000000000..90a665f676
Binary files /dev/null and b/modular_citadel/icons/hypereutactic/item/hypereutactic.dmi differ
diff --git a/modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi b/modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi
new file mode 100644
index 0000000000..ca94055113
Binary files /dev/null and b/modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi differ
diff --git a/modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi b/modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi
new file mode 100644
index 0000000000..a9b90da740
Binary files /dev/null and b/modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi differ
diff --git a/modular_citadel/icons/lavaknight/item/head.dmi b/modular_citadel/icons/lavaknight/item/head.dmi
new file mode 100644
index 0000000000..950d4894e9
Binary files /dev/null and b/modular_citadel/icons/lavaknight/item/head.dmi differ
diff --git a/modular_citadel/icons/lavaknight/item/suit.dmi b/modular_citadel/icons/lavaknight/item/suit.dmi
new file mode 100644
index 0000000000..49cd14b666
Binary files /dev/null and b/modular_citadel/icons/lavaknight/item/suit.dmi differ
diff --git a/modular_citadel/icons/lavaknight/mob/head.dmi b/modular_citadel/icons/lavaknight/mob/head.dmi
new file mode 100644
index 0000000000..5084c9c66f
Binary files /dev/null and b/modular_citadel/icons/lavaknight/mob/head.dmi differ
diff --git a/modular_citadel/icons/lavaknight/mob/suit.dmi b/modular_citadel/icons/lavaknight/mob/suit.dmi
new file mode 100644
index 0000000000..ed51ceaaa4
Binary files /dev/null and b/modular_citadel/icons/lavaknight/mob/suit.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 82f0230c72..0e23640d22 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2418,6 +2418,9 @@
#include "interface\skin.dmf"
#include "modular_citadel\cit_medkits.dm"
#include "modular_citadel\cit_screenshake.dm"
+#include "modular_citadel\citadel_ghostrole_spawners.dm"
+#include "modular_citadel\cydonian_armor.dm"
+#include "modular_citadel\hypereutactic_blade.dm"
#include "modular_citadel\polychromic_clothes.dm"
#include "modular_citadel\code\datums\uplink_items_cit.dm"
// END_INCLUDE