From 867810ab8c59607730b6305ec41030b188866739 Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Sat, 2 Dec 2017 00:06:42 +0800 Subject: [PATCH] massive overhaul of RGB stuff and massive additions halp --- code/citadel/cit_weapons.dm | 77 +++-- modular_citadel/citadel_ghostrole_spawners.dm | 43 +++ modular_citadel/cydonian_armor.dm | 160 ++++++++++ modular_citadel/hypereutactic_blade.dm | 278 ++++++++++++++++++ .../hypereutactic/item/hypereutactic.dmi | Bin 0 -> 1334 bytes .../hypereutactic/mob/hypereutactic_left.dmi | Bin 0 -> 2428 bytes .../hypereutactic/mob/hypereutactic_right.dmi | Bin 0 -> 3281 bytes .../icons/lavaknight/item/head.dmi | Bin 0 -> 377 bytes .../icons/lavaknight/item/suit.dmi | Bin 0 -> 1445 bytes modular_citadel/icons/lavaknight/mob/head.dmi | Bin 0 -> 568 bytes modular_citadel/icons/lavaknight/mob/suit.dmi | Bin 0 -> 3764 bytes tgstation.dme | 3 + 12 files changed, 533 insertions(+), 28 deletions(-) create mode 100644 modular_citadel/citadel_ghostrole_spawners.dm create mode 100644 modular_citadel/cydonian_armor.dm create mode 100644 modular_citadel/hypereutactic_blade.dm create mode 100644 modular_citadel/icons/hypereutactic/item/hypereutactic.dmi create mode 100644 modular_citadel/icons/hypereutactic/mob/hypereutactic_left.dmi create mode 100644 modular_citadel/icons/hypereutactic/mob/hypereutactic_right.dmi create mode 100644 modular_citadel/icons/lavaknight/item/head.dmi create mode 100644 modular_citadel/icons/lavaknight/item/suit.dmi create mode 100644 modular_citadel/icons/lavaknight/mob/head.dmi create mode 100644 modular_citadel/icons/lavaknight/mob/suit.dmi 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 0000000000000000000000000000000000000000..90a665f676dc5d34bad5f1cd2ab595134628b02b GIT binary patch literal 1334 zcmeAS@N?(olHy`uVBq!ia0vp^4nW+%!3HFEH|A#nsmWC#5hX6E#mPmP1tppJc?=8{ zbEcl&%hzNe()MuYbFF;`^8P61#rkx9po@#bsbM|fJ759Xu|H_J< zaqLoeaNlX3-mLBFTix^-rIstNJW$BP)LZNtImf`H>t5=+PrFp&CwwwY&5-f9J8AZh z+xAlT`2GHfn0v@O@3P4{qHyL|EbKs z-(zYs(LLa<&BUJQ-VVlwy-lA!RMgphIOmbYu`6-u$BpbKj>#!xn<|xkb}^D$y0c0{ zfT8?xy?^q%?W;3pzb;PFQ?GoZ=l=~7JMVj% z=_JE8#%(MNw;7_D8gd(S84s8pn8uJGo#4%|fp>!{LrHkacb57zgOJ?4^Cfv^UQxcn zW?(aK{`T+yz58yfDjEJ>y_PNKQ2)~`XjzZoDMd8hH`s0nG2}4kaKbIw$FO7f5ns)i zFW1bM7F=Ai&Okv@fq|uA{?ydA6Ko;LH)L~coBlFv_`~To=j&cB6PzTiNAhr&*=M?q6${D}Nkbey#DxHoGq~O7u6pJkL1oTuSEDf7T2NwXE+; z%4~j!urnTrJJ_#boS3MR`FhRuBE9^VYnGP^?I{jQ7xpMT!UvgEz>)8_KV z?DT)vDjhOsu2d^uy!Ye!yXC9q-PwBWi2jakKjnGeu5Pd{Q2jC2n;~uPFYD?;dzl-I0vW{8+yW0n5@{g*m4!vs=v;VU8Lp%TbkJ*`qZ}Kuesxlvvn!p2r zH?~L?SWe#Pb$@?iW})D8r>ibu{UBCZT9pj(F$gS*YU3)juZiDy> zs}=Xd`<()h@|W^S)X1d0{?MgVx57C=S>sD+!%FGB?vEQj|6^i!>OMJmU;DitS&>px zyVZ7vq0hYCm_C@)`PDKx8t^qN|7aN=%Ezc6!LE=c$$H@P+x5Roqo)2m#k82=iWAo4 z1xp~3%m*$DuleeQ0j3y{no!LApzJ@r z;_h$mkeOxS5(YdDx?mkfTn%RgRyOv`(^$DB{x9#BnoWk1ANpSwzCAF@{m0`~XReo6 zCNosLW2|cU`d&XE)pkN+VXdTLbj;FEd<+#PmZqzBo@Lzn<8l2=0jUGM_ZDw63j6M! zwkTl5YKQml#CCuBQwOA~KfP`$6kuZ3c&h$prVCSi)NLJx4DH&D-bWYRon@0I!lHbR saqE?3`?)ya`2fY`kj%FACF38)Wzv^?7G_NL0~Uk~p00i_>zopr0AMUvRsaA1 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ca940551133301c04b9ced008ba10281021fc456 GIT binary patch literal 2428 zcmd5;`#0428-EYBG)awG2}Ap(Z55MCxnxX97#x>M4IyI5wJCC$Ff(l|j_4aPgBU z?F_5(<*gjGkW`MBQu__EuVD@*WcSH|3p+@{kB6q5doAkQ8I5_c2>kB`M#-IUyD0Ol zRRxNbTItXCDTXUj4Ly#&-yUMT<9*zV0ObJdH_3S|!PxOfKDxKg2>XXP;YHHeqk0Ex z$6NYyD)^yh#$7eBUJo@c)-g+t*jZSY7}HB-04SC?oVIq4EBu3Fgm=fOrz|X^P!A0X zU#Y9}5&8F&XjqHXTrBpScQVRZWgBj7n`$+6|A+k@D*%BrR+&X+gbi*#!-F&aWee9Y z-T$s4Nr9m^oX&ndjFF64%vf#A3@N}lonn@lUDQn*9xYY_&ZP8202X$ElWH)Kg!tdV zfqmo!zMaXX@nC&v4kRPur}^xsanZB4mf{}?+DbAYe6x1$tie8IlAal!UaRM~%woj!TTZFM3-3fbK=RH|hj>j?Q;C zzU@5|9^v{>Cdx(^v4SzOFU7K%5l%B#_DV3ReI1qK642D}woW)x;bR&fb!@!$iJ&z* z<5f4?rbqZ1GLQMZ+7aCBn`H*`!d3X{PYkyYRz8qPZ&RIGmpIvG8Mc1 zk?Eb5kU3oeShArup7w_3m2=X;z7yd`y}$ivZWN=-hzC@q!2s=&-9xB?arF+&H)mA? z?6Vr>Koz>n2L?Q}RVPm3uYh$MYeb!RIk#fe!+ z`|_i>L8n5#ift=8{&9@}RF79HT4hk>F z!gz%FA8D1Is(6OfW!zz4FY`*!g4FWEWFr1OtwvFtLrSdTEoS>Ybqe_^Nk2@MSUWv` zBHkX#TO;jqu;!cW%;9IgWXNGB<+Zi5+U!rAyT8b`dEB7WwY8cr28XM6_CH?8u=IUSB7PZ=2^-gsx7R-#`COwjvc)f9sux!~5-#rNx*jX5 zB_cn04GJPhAtLnW5=;vs2BRaOJ`FeBzK&^|?5ER>O*op|mjOX6Cu*&2587SXGV450 zrZ9Yx==5+yH3d>7oj#Gs%#T>#SZma{_8*Sqn!#rFUN+YxCXSY%rL*hHZIhz8-~2>Z zTcUkp6MrlmAOvY0Dn&9x9TaLOrtMT+r9!$#(v?1KVJ4<=r67O&flKLy+{ezP=S*t7 z9`#*amk3s-#$AZp6g;QdHc%#>-mrvVgz9D1;$|`;q+k2n&zodKEaN~Y6aME-rgq<| zW4|hEXigT~dze~K0Xa-TUPqF%QLw(Xk0;{Svfd{qN2!Rd zHXNGfQ@cUCheD-%uk9Px_1sS6^}S$T%3lyc%;g|(8}R-K&kTlQr%a=YV%c0wgIH7? zvpMVAF>Ps?t7TUNw&wHayVzWabJ?Guz=rQl%Zp0x-pmc$C$kQx)Y0iZE2MNu4NcFH zz$-b+MVR4XnX4`Kf~}RZ6^jJjqqcg`(BxZYNu66xY%DL6N)xuljX6`f8*6jS*PT&% zOZh2|1pBOJxlQ8wlirK#lyO8nsWdfFs}c=8R48O>MZVB%7J9aUU@R0lm+#q9aQpog ztwSBi>$?F+r%1g382|2{FyH>}AzMY07p?mJI=gJ=EQl&h9*XMZK}B9=o)NG58SsS< z!a=c%@6oT@s`_r^_m}#RoHwJ^C5yu!zOsK{Ha!^e!;2ROtBI1dP0h_s1MSn_9R*0& o<51t{2sTUicSrqSduDArD>rT}@YqHu^qm3@wl1eDPWk=x7lAm{z5oCK literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a9b90da74065d41cb76d85a78d23b23969c66fe9 GIT binary patch literal 3281 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 literal 0 HcmV?d00001 diff --git a/modular_citadel/icons/lavaknight/item/head.dmi b/modular_citadel/icons/lavaknight/item/head.dmi new file mode 100644 index 0000000000000000000000000000000000000000..950d4894e98b9b614842e4c73e0722877167ee90 GIT binary patch literal 377 zcmV-<0fzpGP)}V(A>l00001bW%=J06^y0W&i*H zdwNt@bVOxyV{&P5bZKvH004NLQ&wiC?XUap~Du7F2D;i~1U78W20Y)wer zfUKa%NL|SYSwR38At?|R5*9*Mz>4Ndc10sY6i2e5`?E+0#Q+Qw7}(3p@%UjBPy+w} X)xiV=-0C=2ri?IrWFcd}SysxIpuiMVH7X4&kMoT*|8!w8t(`=>H!=z{uKla_D!@6_D!_4+801_vJ5WHtQdN+0KkoJ2Bdm^ zb7OG>K<@N1^yPSzUjw@^{U~VjK=*0q05|4?@P6II2 z{{p>OU~*vIm>Y{5lLPaHUMw)x{{n!>>@-gjkI{<-b4oOW%3MBKc{UEH0Y>HdWTSp{ z378v;8*--?fQ7sFIMdxtWOkZc%jfvvMiGzf-uHcL`5ckiY0h+avvBtwuvZ1mkRZzW z^J~{O0W?h`pU;;Y1vA(;(U#BW%bKPEQ0Z?w6>1V7f)56I07zxBCJ6wa#m)lo)wjRx zvqkW!OcsD(py$9OScAVhG6I02DDCNV8dX)xc70VY@kc7Gw5DfH? z%4Cr{z2tK_Qkg70!HcHIZRy*ry*|&DzKsycp5R4NnJoES4!P4yDw8!yJSc*J0MAQL zC4g8my5sVdB<}^+K250(%6q{jxqKx_sQ>fQQz;k-*uJNx2u=>n*UXqlb|Wg|%H>OD z`?J+GQkg7zvA~wTUGqhe`1L~z;$YuIo2F@Hm#-vMf-eK@v1D{-_hpBnC`!ANrO%3* z70~7PqdmCKurdVf1#U$uljYg!n)wkWFChGfl_9hT_v!Nc9S=x|Utwd{*nQbyJ9Wfd zuZP{29Y$ee*RT`Ay363=%!-lE<>>PJ$>(xryGM4{%yM^48vcHx)Lcr$1H=7w3l|8_ws;bDcjLTP&V6UuWM5Vh63+=*J zRDsn;*LA|-Fu0RQ(#yb;-R+4urkDz%a?ezx@OuBwMBq^{>`E?XvurQ z1(Xnhi6E;p?(&r+@w>}clDs|_v1GL2du+GDb7OI1OW%G&2b|g-*=>7xa*Ej0kH+Aw zk0pThrB}wqPd|9$KdtRn|3+v?KqwRM=0oHRt zczo2H_X0u>)Z2FeS{}R==Q}fFXTG1}(XXcwA}M!z->{D}4o$!>f1Wna4C1ap zERU_cAbneKEP}OA@7|ymT5%unHgG5c{tNgU%>l=I+XKfS00000NkvXXu0mjfIA*{V literal 0 HcmV?d00001 diff --git a/modular_citadel/icons/lavaknight/mob/head.dmi b/modular_citadel/icons/lavaknight/mob/head.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5084c9c66f43c940f3e11d3eebcc2c482daaf77f GIT binary patch literal 568 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeE3?v1%WpM*3tpJ}8*LnNflGC$x?ATFRQ|IjA zt!HSwr%(6Z9=QxBMhO{tNh#_7|NpnNw5X`5%L*Ry2I^ug3GxeOaCmkj4ajM%3W+Fj zNi9w;$}A|!%+F(BsF)KRR!~&>{Y!Ac$FEPcymhtCojD)8A=Kca@qABxE;mZ^T5oVrV*#Zq#=4k=u*9BDUvXAsgF03&1 z(2Z4XT9c^8{5+&aDq^l{OYFp-!V(f6vJyB<40#T$W;o0h7&z&Qu|dnEw1XNFtcw#w z1eki5e*ApV;OZgh%DQ;MBIYipJQH5WW5={k)Tk#Xhl;TJWJocwww~n@i20V{?D!`& zH9MsvfvM@V+6yaFruA(zgMGp+6?W*XZn8~RIxT-|!%K#)w$ z=HLVEo;3$QaLwA%#I%cTTK5U56xj<)%yS&BA9&CmqP$^Iv;mhJ$U!CSFP_?eHBFeZ zwS?i;i8;P585Rv^9x6I9cdZxcxX>V!H)HEzsJq!2w6|(7x!q&m2Mjv~Pgg&ebxsLQ E0HIdfLI3~& literal 0 HcmV?d00001 diff --git a/modular_citadel/icons/lavaknight/mob/suit.dmi b/modular_citadel/icons/lavaknight/mob/suit.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ed51ceaaa450220930220076a6989eba6cb360ed GIT binary patch literal 3764 zcmY*ccOYEd62GfQm!~Fr5G)~l@ogkwgXj{yw@8#A$y$W4)>=vQzFPF?JuFe8MoELct+@9c(!Cs=I-JYb|!Gq4yv>_IRZm zch=CW@(%eQJKXnQiMi~nLdHu&c_j;*zdkK25xOV=4IP+DSZmraXzi+o%0ol%)NM;E zr|Tx{7a}Rb{89%U&n6$$=4t3u2^9ChWahxr}cGId~hoccUY!bPfcEY7vT zv`1vJK#)u-Ve;kNX7I~Z38J!_bmuX3eZ&g&Ae_wFVy_lA6fZE_vK8pj>D76f%oTy2 z*(8s1T66A8bN~H7@d#})^F6~?_t6QWWQOOsFxwd;^S^D`yY3#skOdL+{M5fWKTMXC zdgCd^Y(7*%cnLr@ONhO%8DGvO{L+RBPrGZNTX#kMX|?$G zb8S^P0+w3SC>pw6i{PF6dSnj`XGR3AbcMJ9Ed#qW_f7Ji=kwdj!?LT~Xvx6YihL8h zwuM;~OQZ@t=QUnE93RLHeztcm@AT)!9DNm61QyMgFt~^N)OW(cCXpYR(92cVj^luk{8|{Mm{FiQ=iiHY_-0b`VG9kMQe{jMx z7rN^+L8tNpWkdai6?MiT?g1uIs5eyx)jDkQ(Ba^-&9x!I;&K~3h1}HPR<7F9)4{nhT76tRhyr?ssFu<3a!o%C1uOT%!)H$3?Yf)3Li7VW z8%rSia7CQ(PXGKsSr8f(9tUwKr0mp4qE5&L7?5h;0DKeMTMz-Qg@Ctjqc~K+ewXM& zkxzCBls9div?qqF`c38W{SMZuD|}bT)k9!&7kNxl&FZD^^zZY7y!3PR0f{!j-lUW! zZ1KD{C})Bzv7()fC$cVcN?wS|)7kwgR-A@RxS_YNPW68^N>=x^fGWi$em>jwZD}~H z%#NV}J*GMHq4V#Mig%$XiuCtdvq2o@mifPPuTS?AasVQ{=d7c2OIQdQMY1)APae>8 zTr=7(p{Pr`c*5;X2)fJddpp10f2)Ig?(`|+c?OJ?BbS5iHJ}Lrvm9z`c;~v&%XIX7 zfyB(~?s9JqmEnx&7h)e96?jthh722D@n@jkNQ!by zD6Gf(3(;2a$%@ZWo=@oAfhYfe!!XhZXMcgXjW~E(w5VJ&mtaH-4EUm3=!d#dlIMT! z`Fp$0hkl_@mc=lN3}E9%iz6N2e*9F*S>aCX;Yu}));n^T@ydu-&MB`F@sf12vX}>K zLvD*GRYtU!1LeIbGwsLW&@*l5mm6A?%33VNgzMmi+v7=KhP;2iSv=Ae(6E<+nb{es?sZ1)4uy!=8Zz=f?iq^8^we_ymPnrYvR99Bdk4Q1O%g&D-nek1N)N%R}xCP zic<~sRzB~^K)S6M`-CH2X5%Kgie8n67`9TtI5`|336F zp&#HN2O1dDEMh;@Wo@lzr=HFH?Q~o7Ajin6@;TDJ_8$)N_pc6&&xqoOvFTzJ&)=lP zR}N{;P`5zf$o+Sg!+U$t;VWxbCYjD#6KyAet&obyWi8L8t|yQXAKQb9VCsBF?1UZ-Xgnn{$%dA!ZQBS?KHQdkO6NG!~II?(FTn znr~uwKH;57+}N>rMS*mCad&!EnoMiP4uoCM7}j)kzRq3E4ANW05)<e)2J z8I2N16H1uEz&^&{`}e8UOhR)}+jz5NijUKS=a2R&u90MlWvB}Bg)QpUOb$;Gr zjT_HfSzB}Pm~HrBzwF9RE(G=13E>XwkUpq5iQqS&%7o93j8vVUow)aqxn@Z#g_g2% znGNfH+%q?6H%5<_S&_>a=7tk)|HE^LN$;_yoAnhW7t=2>LRJPmkJcvJ=w9Ea{Rl}* zOPe;%OFDsz-LyEs*^M{`8WS-vaeQGRFDongr$MKo4UYs#D(3E(w`RilOq~;C!*LV? zrKB2O%<*na5R+yHAzWMXDay z#>&+3N@{M0#-`kSPGt5hd`MkMXXZcjfIPj?e3^J68ChgWsodUyLGhk2VWV# gW0D53@B9ntcckfb`lWva{)Pe?j~=U(DcNHG3)~b-g#Z8m literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 34227a9a18..9a78dbcbca 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2409,5 +2409,8 @@ #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" // END_INCLUDE