diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index 903d68a27f7..fee30a8843b 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -213,6 +213,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai //***** ITEM AND MOB TRAITS *****// /// Show what machine/door wires do when held. #define TRAIT_SHOW_WIRE_INFO "show_wire_info" +///Immune to the SM / makes you immune to it when worn +#define TRAIT_SUPERMATTER_IMMUNE "supermatter_immune" //***** ITEM TRAITS *****// #define TRAIT_BUTCHERS_HUMANS "butchers_humans" @@ -270,6 +272,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_WAS_BATONNED "batonged" #define CLOWN_EMAG "clown_emag" #define MODSUIT_TRAIT "modsuit_trait" +#define ENFORCER_GLOVES "enforcer_gloves" //quirk traits #define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance" diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index b18f2173722..513fb4ce16f 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -80,10 +80,12 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CONTORTED_BODY" = TRAIT_CONTORTED_BODY, "TRAIT_DEFLECTS_PROJECTILES" = TRAIT_DEFLECTS_PROJECTILES, "TRAIT_TABLE_LEAP" = TRAIT_TABLE_LEAP, - "TRAIT_DODGE_ALL_THROWN_OBJECTS" = TRAIT_DODGE_ALL_OBJECTS + "TRAIT_DODGE_ALL_THROWN_OBJECTS" = TRAIT_DODGE_ALL_OBJECTS, + "TRAIT_SUPERMATTER_IMMUNE" = TRAIT_SUPERMATTER_IMMUNE ), /obj/item = list( "TRAIT_SHOW_WIRE_INFO" = TRAIT_SHOW_WIRE_INFO, + "TRAIT_SUPERMATTER_IMMUNE" = TRAIT_SUPERMATTER_IMMUNE, "TRAIT_BUTCHER_HUMANS" = TRAIT_BUTCHERS_HUMANS, "TRAIT_CMAGGED" = TRAIT_CMAGGED, "TRAIT_FORCES_OPEN_DOORS" = TRAIT_FORCES_OPEN_DOORS_ITEM, diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index d79a807b9c5..ec45a9d8525 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -856,3 +856,67 @@ GLOBAL_LIST_EMPTY(multiverse) /obj/item/reagent_containers/food/drinks/everfull/proc/magic_fill(reagent_choice) reagents.clear_reagents() reagents.add_reagent(reagent_choice, volume) + +//Oblivion Enforcer clothing (the halberd and gloves are defined elsewhere) + +/obj/item/clothing/head/hooded/oblivion + name = "Oblivion Enforcer's hood" + desc = "A hood worn by an Oblivion Enforcer." + icon_state = "oblivionhood" + flags = BLOCKHAIR + flags_inv = HIDEFACE + flags_cover = HEADCOVERSEYES + armor = list(MELEE = 20, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 0, RAD = INFINITY, FIRE = 5, ACID = 5) + cold_protection = HEAD + min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT + magical = TRUE + sprite_sheets = list( + "Vox" = 'icons/mob/clothing/species/vox/head.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/head.dmi', + "Grey" = 'icons/mob/clothing/species/grey/head.dmi', + "Drask" = 'icons/mob/clothing/species/drask/head.dmi', + "Tajaran" = 'icons/mob/clothing/species/tajaran/head.dmi', + "Unathi" = 'icons/mob/clothing/species/unathi/head.dmi', + "Vulpkanin" = 'icons/mob/clothing/species/vulpkanin/head.dmi' + ) + +/obj/item/clothing/suit/hooded/oblivion + name = "Oblivion Enforcer's robes" + desc = "A set of armored, radiation-proof robes worn by Oblivion Enforcers." + icon_state = "oblivionarmor" + item_state = "oblivionarmor" + body_parts_covered = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS + hoodtype = /obj/item/clothing/head/hooded/oblivion + allowed = list(/obj/item/supermatter_halberd, /obj/item/nuke_core/supermatter_sliver) + armor = list(MELEE = 35, BULLET = 20, LASER = 35, ENERGY = 10, BOMB = 15, RAD = INFINITY, FIRE = 5, ACID = 5) + flags_inv = HIDEJUMPSUIT | HIDESHOES | HIDETAIL | HIDESHOES + flags = THICKMATERIAL + magical = TRUE + sprite_sheets = list( + "Vox" = 'icons/mob/clothing/species/vox/suit.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/suit.dmi', + "Grey" = 'icons/mob/clothing/species/grey/suit.dmi', + "Drask" = 'icons/mob/clothing/species/drask/suit.dmi', + "Tajaran" = 'icons/mob/clothing/species/tajaran/suit.dmi', + "Unathi" = 'icons/mob/clothing/species/unathi/suit.dmi', + "Vulpkanin" = 'icons/mob/clothing/species/vulpkanin/suit.dmi' + ) + +/obj/item/clothing/suit/hooded/oblivion/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SUPERMATTER_IMMUNE, ROUNDSTART_TRAIT) + +/obj/item/clothing/mask/gas/voice_modulator/oblivion + name = "Oblivion Enforcer's mask" + desc = "The mask of an Oblivion Enforcer. Don't forget to turn it on before giving your one-liners!" + icon_state = "oblivionmask" + item_state = "oblivionmask" + sprite_sheets = list( + "Vox" = 'icons/mob/clothing/species/vox/mask.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/mask.dmi', + "Grey" = 'icons/mob/clothing/species/grey/mask.dmi', + "Drask" = 'icons/mob/clothing/species/drask/mask.dmi', + "Tajaran" = 'icons/mob/clothing/species/tajaran/mask.dmi', + "Unathi" = 'icons/mob/clothing/species/unathi/mask.dmi', + "Vulpkanin" = 'icons/mob/clothing/species/vulpkanin/mask.dmi' + ) diff --git a/code/game/gamemodes/wizard/wizloadouts.dm b/code/game/gamemodes/wizard/wizloadouts.dm index 7b4269a9f4a..02764f547b9 100644 --- a/code/game/gamemodes/wizard/wizloadouts.dm +++ b/code/game/gamemodes/wizard/wizloadouts.dm @@ -99,3 +99,23 @@ wizid.SetOwnerInfo(user) wizid.UpdateName() wizid.RebuildHTML() + +/datum/spellbook_entry/loadout/oblivion + name = "Oblivion Enforcer" + desc = "The Oblivion Order is an isolated clique of monks that revere supermatter. \ + Oblivion Enforcers are how the Order imposes their will on the universe as a whole. By taking this loadout, \ + you give up your identity and become a faceless hand of the Order.
\ + You will be completely protected from the effects of supermatter by the items granted here, so far as to \ + allow you to pick up and throw supermatter slivers, which your halberd can cut from the engine.
\ + Provides a Supermatter Halberd, Oblivion Enforcer robes, and an air tank, as well as Instant Summons, Lightning Bolt, Ethereal Jaunt, and Summon Supermatter Crystal." + items_path = list(/obj/item/supermatter_halberd, /obj/item/clothing/gloves/color/white/supermatter_immune, \ + /obj/item/clothing/suit/hooded/oblivion, /obj/item/clothing/mask/gas/voice_modulator/oblivion, /obj/item/tank/internals/emergency_oxygen/double) + spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/summonitem, \ + /obj/effect/proc_holder/spell/charge_up/bounce/lightning, /obj/effect/proc_holder/spell/aoe/conjure/summon_supermatter) + category = "Unique" + destroy_spellbook = TRUE + +/datum/spellbook_entry/loadout/oblivion/OnBuy(mob/living/carbon/human/user, obj/item/spellbook/book) + if(!user) + return + ADD_TRAIT(user, SM_HALLUCINATION_IMMUNE, MAGIC_TRAIT) diff --git a/code/game/objects/effects/temporary_visuals/misc_visuals.dm b/code/game/objects/effects/temporary_visuals/misc_visuals.dm index a1e57947b11..5eedef93b65 100644 --- a/code/game/objects/effects/temporary_visuals/misc_visuals.dm +++ b/code/game/objects/effects/temporary_visuals/misc_visuals.dm @@ -398,3 +398,32 @@ /obj/effect/temp_visual/rcd_effect/reverse_short icon_state = "rcd_short_reverse" duration = 3.1 SECONDS + +/obj/effect/temp_visual/obliteration + duration = 2 SECONDS + +/obj/effect/temp_visual/obliteration/Initialize(mapload, atom/target) + . = ..() + if(isobj(target)) + loc = target.loc + icon = target.icon + icon_state = target.icon_state + alpha = target.alpha + dir = target.dir + update_icon() + var/obj/effect/dusting_anim/dust_effect = new(loc, UID()) + filters += filter(type = "displace", size = 256, render_source = "*snap[UID()]") + animate(src, alpha = 0, time = 2 SECONDS, easing = (EASE_IN | SINE_EASING)) + QDEL_IN(dust_effect, 20) + return TRUE + +/obj/effect/temp_visual/obliteration_rays + duration = 1.25 SECONDS + +/obj/effect/temp_visual/obliteration_rays/Initialize(mapload) + . = ..() + var/new_filter = isnull(get_filter("ray")) + ray_filter_helper(1, 40, "#ffd04f", 6, 20) + if(new_filter) + animate(get_filter("ray"), offset = 10, time = 10 SECONDS, loop = -1) + animate(offset = 0, time = 10 SECONDS) diff --git a/code/game/objects/items/theft_items.dm b/code/game/objects/items/theft_items.dm index eab0f42106d..e71d9496086 100644 --- a/code/game/objects/items/theft_items.dm +++ b/code/game/objects/items/theft_items.dm @@ -157,6 +157,7 @@ desc = "A tiny, highly volatile sliver of a supermatter crystal. Do not handle without protection!" icon_state = "supermatter_sliver" pulseicon = "supermatter_sliver_pulse" + w_class = WEIGHT_CLASS_BULKY //can't put it into bags layer = ABOVE_MOB_LAYER + 0.02 /obj/item/nuke_core/supermatter_sliver/process() @@ -170,7 +171,9 @@ /obj/item/nuke_core/supermatter_sliver/attack_tk(mob/user) // no TK dusting memes return -/obj/item/nuke_core/supermatter_sliver/can_be_pulled(user) // no drag memes +/obj/item/nuke_core/supermatter_sliver/can_be_pulled(mob/user) // no drag memes + if(HAS_TRAIT(user, TRAIT_SUPERMATTER_IMMUNE)) + return TRUE return FALSE /obj/item/nuke_core/supermatter_sliver/attackby(obj/item/I, mob/living/user, params) @@ -224,6 +227,8 @@ /obj/item/nuke_core/supermatter_sliver/pickup(mob/living/user) ..() + if(HAS_TRAIT(user, TRAIT_SUPERMATTER_IMMUNE)) + return TRUE //yay sliver throwing memes! if(!isliving(user) || user.status_flags & GODMODE) //try to keep this in sync with supermatter's consume fail conditions return FALSE user.visible_message("[user] reaches out and tries to pick up [src]. [user.p_their()] body starts to glow and bursts into flames before flashing into dust!", diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 79f4f5ce274..171894e7595 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -984,3 +984,99 @@ return ..() #undef BROOM_PUSH_LIMIT + +/obj/item/supermatter_halberd //Supermatter Halberd, used by Oblivion Enforcers + name = "supermatter halberd" + desc = "The revered weapon of Oblivion Enforcers, used to enforce the Order's will." + icon_state = "smhalberd0" + base_icon_state = "smhalberd" + force = 5 + sharp = TRUE + damtype = BURN + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + throwforce = 15 + toolspeed = 0.25 + attack_verb = list("enlightened", "enforced", "cleaved", "stabbed", "whacked") + hitsound = 'sound/weapons/bladeslice.ogg' + resistance_flags = FIRE_PROOF + var/static/list/obliteration_targets = list(/turf/simulated/wall, /obj/machinery/door/airlock) + /// Whether we'll knockdown on hit + var/charged = TRUE + +/obj/item/supermatter_halberd/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_FORCES_OPEN_DOORS_ITEM, ROUNDSTART_TRAIT) + ADD_TRAIT(src, TRAIT_SUPERMATTER_IMMUNE, ROUNDSTART_TRAIT) //so it can't be dusted by the SM + AddComponent(/datum/component/parry, _stamina_constant = 0, _stamina_coefficient = 0.25, _parryable_attack_types = ALL_ATTACK_TYPES) + AddComponent(/datum/component/two_handed, force_wielded = 40, force_unwielded = force, icon_wielded = "[base_icon_state]1") + +/obj/item/supermatter_halberd/update_icon_state() + icon_state = "[base_icon_state]0" + return ..() + +/obj/item/supermatter_halberd/afterattack(atom/A, mob/user, proximity) + if(!proximity) + return + + if(!HAS_TRAIT(src, TRAIT_WIELDED)) + return + + if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)) //same behavior as a fireaxe for windows + var/obj/structure/W = A + W.obj_destruction("fireaxe") + + //dusting dead people + knocking down people + if(isliving(A)) + var/mob/living/target = A + if(target.stat == DEAD) + visible_message("[user] raises [src] high, ready to bring it down on [target]!") + if(do_after(user, 1 SECONDS, TRUE, target)) + visible_message("[user] brings down [src], obliterating [target] with a heavy blow!") + playsound(loc, 'sound/effects/supermatter.ogg', 50, TRUE) + target.dust() + return + to_chat(user, "You lower [src]. There'll be time to obliterate them later...") + return + + if(charged) + playsound(loc, 'sound/magic/lightningbolt.ogg', 5, TRUE) + target.visible_message("[src] flares with energy and shocks [target]!", \ + "You're shocked by [src]!", \ + "You hear shocking.") + target.KnockDown(4 SECONDS) + do_sparks(3, FALSE, src) + charged = FALSE + addtimer(CALLBACK(src, PROC_REF(recharge)), 4 SECONDS) + + //walls and airlock obliteration logic + if(!is_type_in_list(A, obliteration_targets)) + return + + if(istype(A, /turf/simulated/wall/indestructible)) + return + + to_chat(user, "You start to obliterate [A].") + playsound(loc, hitsound, 50, TRUE) + + var/obj/effect/temp_visual/obliteration_rays/rays = new(get_turf(A)) + + if(do_after(user, 5 SECONDS * toolspeed, target = A)) + new /obj/effect/temp_visual/obliteration(A, A) + playsound(loc, 'sound/effects/supermatter.ogg', 25, TRUE) + + if(iswallturf(A)) + var/turf/AT = A + AT.ChangeTurf(/turf/simulated/floor/plating) + return + + if(istype(A, /obj/machinery/door/airlock)) + qdel(A) + return + + qdel(rays) + return + +/obj/item/supermatter_halberd/proc/recharge() + charged = TRUE + playsound(loc, 'sound/machines/sm/accent/normal/1.ogg', 25, TRUE) diff --git a/code/modules/clothing/gloves/misc_gloves.dm b/code/modules/clothing/gloves/misc_gloves.dm index b220bebf81a..48f789ba8dc 100644 --- a/code/modules/clothing/gloves/misc_gloves.dm +++ b/code/modules/clothing/gloves/misc_gloves.dm @@ -204,3 +204,28 @@ name = "gloves of headpats" desc = "You feel the irresistable urge to give headpats by merely glimpsing these." accepted_intents = list(INTENT_HELP) + +/obj/item/clothing/gloves/color/white/supermatter_immune + name = "hypernobilium weave gloves" + desc = "Sleek, white gloves woven from fabric doused in hypernobilium using a process known only to the Oblivion Order." + siemens_coefficient = 0 + icon_state = "obliviongauntlets" + item_state = "obliviongauntlets" + sprite_sheets = list( + "Vox" = 'icons/mob/clothing/species/vox/gloves.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/gloves.dmi', + "Grey" = 'icons/mob/clothing/species/grey/gloves.dmi', + "Drask" = 'icons/mob/clothing/species/drask/gloves.dmi' + ) + +/obj/item/clothing/gloves/color/white/supermatter_immune/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_SUPERMATTER_IMMUNE, ROUNDSTART_TRAIT) + +/obj/item/clothing/gloves/color/white/supermatter_immune/equipped(mob/user, slot, initial) + . = ..() + ADD_TRAIT(user, TRAIT_SUPERMATTER_IMMUNE, ENFORCER_GLOVES) + +/obj/item/clothing/gloves/color/white/supermatter_immune/dropped(mob/user, silent) + . = ..() + REMOVE_TRAIT(user, TRAIT_SUPERMATTER_IMMUNE, ENFORCER_GLOVES) diff --git a/code/modules/power/engines/supermatter/supermatter.dm b/code/modules/power/engines/supermatter/supermatter.dm index b4e72ae11d5..610563b17f4 100644 --- a/code/modules/power/engines/supermatter/supermatter.dm +++ b/code/modules/power/engines/supermatter/supermatter.dm @@ -749,6 +749,9 @@ /obj/machinery/atmospherics/supermatter_crystal/attack_hand(mob/living/user) ..() + if(HAS_TRAIT(user, TRAIT_SUPERMATTER_IMMUNE)) + user.visible_message("[user] reaches out and pokes [src] harmlessly...somehow.", "You poke [src].") + return dust_mob(user, cause = "hand") /obj/machinery/atmospherics/supermatter_crystal/proc/dust_mob(mob/living/nom, vis_msg, mob_msg, cause) @@ -770,32 +773,39 @@ return if(moveable && default_unfasten_wrench(user, I, time = 20)) return + if(istype(I, /obj/item/scalpel/supermatter)) - if(ishuman(user)) - var/mob/living/carbon/human/M = user - var/obj/item/scalpel/supermatter/scalpel = I - to_chat(M, "You carefully begin to scrape [src] with [I]...") - if(I.use_tool(src, M, 10 SECONDS, volume = 100)) - if(scalpel.uses_left) - to_chat(M, "You extract a sliver from [src], and it begins to react violently!") - matter_power += 800 - scalpel.uses_left-- - if(!scalpel.uses_left) - to_chat(M, "A tiny piece of [I] falls off, rendering it useless!") + if(!ishuman(user)) + return - var/obj/item/nuke_core/supermatter_sliver/S = new /obj/item/nuke_core/supermatter_sliver(drop_location()) + var/mob/living/carbon/human/H = user + var/obj/item/scalpel/supermatter/scalpel = I - var/obj/item/retractor/supermatter/tongs = M.is_in_hands(/obj/item/retractor/supermatter) + if(!scalpel.uses_left) + to_chat(H, "[scalpel] isn't sharp enough to carve a sliver off of [src]!") + return + + var/obj/item/nuke_core/supermatter_sliver/sliver = carve_sliver(scalpel, H) + if(sliver) + scalpel.uses_left-- + if(!scalpel.uses_left) + to_chat(H, "A tiny piece falls off of [scalpel]'s blade, rendering it useless!") + + var/obj/item/retractor/supermatter/tongs = H.is_in_hands(/obj/item/retractor/supermatter) + + if(tongs && !tongs.sliver) + tongs.sliver = sliver + sliver.forceMove(tongs) + tongs.icon_state = "supermatter_tongs_loaded" + tongs.item_state = "supermatter_tongs_loaded" + to_chat(H, "You pick up [sliver] with [tongs]!") - if(tongs && !tongs.sliver) - tongs.sliver = S - S.forceMove(tongs) - tongs.icon_state = "supermatter_tongs_loaded" - tongs.item_state = "supermatter_tongs_loaded" - to_chat(M, "You pick up [S] with [tongs]!") - else - to_chat(user, "You fail to extract a sliver from [src]! [I] isn't sharp enough anymore.") return + + if(istype(I, /obj/item/supermatter_halberd)) + carve_sliver(I, user) + return + if(istype(I, /obj/item/retractor/supermatter)) to_chat(user, "[I] bounces off [src], you need to cut a sliver off first!") else if(user.drop_item()) @@ -809,6 +819,10 @@ radiation_pulse(src, 150, 4) /obj/machinery/atmospherics/supermatter_crystal/Bumped(atom/movable/AM) + + if(HAS_TRAIT(AM, TRAIT_SUPERMATTER_IMMUNE)) + return + if(isliving(AM)) AM.visible_message("[AM] slams into [src] inducing a resonance... [AM.p_their()] body starts to glow and burst into flames before flashing into dust!",\ "You slam into [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\ @@ -917,7 +931,14 @@ remove_filter("outline") QDEL_NULL(warp) +/obj/machinery/atmospherics/supermatter_crystal/proc/carve_sliver(obj/item/tool, mob/living/user) + to_chat(user, "You begin carving a sliver off of [src]...") + if(tool.use_tool(src, user, 10 SECONDS, volume = 100)) + to_chat(user, "You carve a sliver off of [src], and it begins to react violently!") + matter_power += 800 + var/obj/item/nuke_core/supermatter_sliver/S = new /obj/item/nuke_core/supermatter_sliver(drop_location()) + return S // Change how bright the rock is /obj/machinery/atmospherics/supermatter_crystal/proc/lights() @@ -1018,6 +1039,8 @@ var/mob/M = P if(M.mob_negates_gravity()) continue //You can't pull someone nailed to the deck + if(HAS_TRAIT(M, TRAIT_SUPERMATTER_IMMUNE)) + continue else if(M.buckled) var/atom/movable/buckler = M.buckled if(buckler.unbuckle_mob(M, TRUE)) diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index 98fefc6f829..7bf07f9d8a7 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 3c48e781567..a56c730fb28 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index 87605eaa28c..b373d6ad3c0 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/clothing/species/drask/gloves.dmi b/icons/mob/clothing/species/drask/gloves.dmi index dbc775fd02f..c9e90d5b12a 100644 Binary files a/icons/mob/clothing/species/drask/gloves.dmi and b/icons/mob/clothing/species/drask/gloves.dmi differ diff --git a/icons/mob/clothing/species/drask/head.dmi b/icons/mob/clothing/species/drask/head.dmi index b54a7d74f5c..26a03031c1c 100644 Binary files a/icons/mob/clothing/species/drask/head.dmi and b/icons/mob/clothing/species/drask/head.dmi differ diff --git a/icons/mob/clothing/species/drask/mask.dmi b/icons/mob/clothing/species/drask/mask.dmi index a429bb2e537..7b6c4c9a347 100644 Binary files a/icons/mob/clothing/species/drask/mask.dmi and b/icons/mob/clothing/species/drask/mask.dmi differ diff --git a/icons/mob/clothing/species/drask/suit.dmi b/icons/mob/clothing/species/drask/suit.dmi index fe8d8226b5d..c7e8a00e98a 100644 Binary files a/icons/mob/clothing/species/drask/suit.dmi and b/icons/mob/clothing/species/drask/suit.dmi differ diff --git a/icons/mob/clothing/species/grey/gloves.dmi b/icons/mob/clothing/species/grey/gloves.dmi index f24910643e6..4ebc054e157 100644 Binary files a/icons/mob/clothing/species/grey/gloves.dmi and b/icons/mob/clothing/species/grey/gloves.dmi differ diff --git a/icons/mob/clothing/species/grey/head.dmi b/icons/mob/clothing/species/grey/head.dmi index 6d4f7985ea8..4b8b845f784 100644 Binary files a/icons/mob/clothing/species/grey/head.dmi and b/icons/mob/clothing/species/grey/head.dmi differ diff --git a/icons/mob/clothing/species/grey/mask.dmi b/icons/mob/clothing/species/grey/mask.dmi index a9cd1c7b4f5..7a9e7d2c767 100644 Binary files a/icons/mob/clothing/species/grey/mask.dmi and b/icons/mob/clothing/species/grey/mask.dmi differ diff --git a/icons/mob/clothing/species/grey/suit.dmi b/icons/mob/clothing/species/grey/suit.dmi index 425689ef861..0acb44ce742 100644 Binary files a/icons/mob/clothing/species/grey/suit.dmi and b/icons/mob/clothing/species/grey/suit.dmi differ diff --git a/icons/mob/clothing/species/kidan/gloves.dmi b/icons/mob/clothing/species/kidan/gloves.dmi index 2dc6b40529d..540e694464c 100644 Binary files a/icons/mob/clothing/species/kidan/gloves.dmi and b/icons/mob/clothing/species/kidan/gloves.dmi differ diff --git a/icons/mob/clothing/species/kidan/head.dmi b/icons/mob/clothing/species/kidan/head.dmi index e2e3a7f7d9a..04d4effb82d 100644 Binary files a/icons/mob/clothing/species/kidan/head.dmi and b/icons/mob/clothing/species/kidan/head.dmi differ diff --git a/icons/mob/clothing/species/kidan/mask.dmi b/icons/mob/clothing/species/kidan/mask.dmi index f115b93f093..8d4a485b1d9 100644 Binary files a/icons/mob/clothing/species/kidan/mask.dmi and b/icons/mob/clothing/species/kidan/mask.dmi differ diff --git a/icons/mob/clothing/species/kidan/suit.dmi b/icons/mob/clothing/species/kidan/suit.dmi index 4b2fe0c2b18..37483c8c8a5 100644 Binary files a/icons/mob/clothing/species/kidan/suit.dmi and b/icons/mob/clothing/species/kidan/suit.dmi differ diff --git a/icons/mob/clothing/species/tajaran/head.dmi b/icons/mob/clothing/species/tajaran/head.dmi index 84b0ba96ffa..9cda02f7aff 100644 Binary files a/icons/mob/clothing/species/tajaran/head.dmi and b/icons/mob/clothing/species/tajaran/head.dmi differ diff --git a/icons/mob/clothing/species/tajaran/mask.dmi b/icons/mob/clothing/species/tajaran/mask.dmi index 625eefdb0de..38328dbbd64 100644 Binary files a/icons/mob/clothing/species/tajaran/mask.dmi and b/icons/mob/clothing/species/tajaran/mask.dmi differ diff --git a/icons/mob/clothing/species/tajaran/suit.dmi b/icons/mob/clothing/species/tajaran/suit.dmi index c4c1f4c6bda..a2d34007429 100644 Binary files a/icons/mob/clothing/species/tajaran/suit.dmi and b/icons/mob/clothing/species/tajaran/suit.dmi differ diff --git a/icons/mob/clothing/species/unathi/head.dmi b/icons/mob/clothing/species/unathi/head.dmi index 55246ff29e2..a0886736f97 100644 Binary files a/icons/mob/clothing/species/unathi/head.dmi and b/icons/mob/clothing/species/unathi/head.dmi differ diff --git a/icons/mob/clothing/species/unathi/mask.dmi b/icons/mob/clothing/species/unathi/mask.dmi index 9bbc5d2ecc1..3351c20b642 100644 Binary files a/icons/mob/clothing/species/unathi/mask.dmi and b/icons/mob/clothing/species/unathi/mask.dmi differ diff --git a/icons/mob/clothing/species/unathi/suit.dmi b/icons/mob/clothing/species/unathi/suit.dmi index d50092797b5..36254627443 100644 Binary files a/icons/mob/clothing/species/unathi/suit.dmi and b/icons/mob/clothing/species/unathi/suit.dmi differ diff --git a/icons/mob/clothing/species/vox/gloves.dmi b/icons/mob/clothing/species/vox/gloves.dmi index 713d99e3f87..42c84233b73 100644 Binary files a/icons/mob/clothing/species/vox/gloves.dmi and b/icons/mob/clothing/species/vox/gloves.dmi differ diff --git a/icons/mob/clothing/species/vox/head.dmi b/icons/mob/clothing/species/vox/head.dmi index f2767bf36c1..a0938af8d2e 100644 Binary files a/icons/mob/clothing/species/vox/head.dmi and b/icons/mob/clothing/species/vox/head.dmi differ diff --git a/icons/mob/clothing/species/vox/mask.dmi b/icons/mob/clothing/species/vox/mask.dmi index 8c3fc3b9e4e..357dcdcdac8 100644 Binary files a/icons/mob/clothing/species/vox/mask.dmi and b/icons/mob/clothing/species/vox/mask.dmi differ diff --git a/icons/mob/clothing/species/vox/suit.dmi b/icons/mob/clothing/species/vox/suit.dmi index e17c8d59686..902be8d7508 100644 Binary files a/icons/mob/clothing/species/vox/suit.dmi and b/icons/mob/clothing/species/vox/suit.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/head.dmi b/icons/mob/clothing/species/vulpkanin/head.dmi index ea0cecb2779..82da87ce23c 100644 Binary files a/icons/mob/clothing/species/vulpkanin/head.dmi and b/icons/mob/clothing/species/vulpkanin/head.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/mask.dmi b/icons/mob/clothing/species/vulpkanin/mask.dmi index 03405006132..3ead9dc9358 100644 Binary files a/icons/mob/clothing/species/vulpkanin/mask.dmi and b/icons/mob/clothing/species/vulpkanin/mask.dmi differ diff --git a/icons/mob/clothing/species/vulpkanin/suit.dmi b/icons/mob/clothing/species/vulpkanin/suit.dmi index d3f64f16eb5..a117711f36b 100644 Binary files a/icons/mob/clothing/species/vulpkanin/suit.dmi and b/icons/mob/clothing/species/vulpkanin/suit.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 2ea815dc050..3b4c4fa4216 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 351472113bb..acdbbb4c1ae 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index daced424869..cc4b3d11683 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index ccd10bcd5b7..f9ec36b54a6 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 8a4ff7a3f46..b33e22d5b29 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index a8abdefe5e3..617ce00f484 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 16e54e17e2a..ac87869adc5 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index d5d982cbeab..f3d259e6c69 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ