diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index d69f0891ffa0..a6a7aa53f182 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -141,8 +141,8 @@ #define WIELD_DELAY_VERY_SLOW 10 #define WIELD_DELAY_HORRIBLE 12 -///This is how long you must wait after throwing something to throw again -#define THROW_DELAY (0.4 SECONDS) +///This is how long you must wait to throw again after throwing two things +#define THROW_DELAY (1.5 SECONDS) //Explosion level thresholds. Upper bounds #define EXPLOSION_THRESHOLD_VLOW 50 diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 31914815ae93..7ec2ab8b975e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -89,6 +89,8 @@ #define DAZE "daze" #define SLOW "slow" #define SUPERSLOW "superslow" +#define ROOT "root" + //================================================= //I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches @@ -100,7 +102,7 @@ //Bitflags defining which status effects could be or are inflicted on a mob -#define STATUS_FLAGS_DEBILITATE (CANSTUN|CANKNOCKOUT|CANDAZE|CANSLOW) +#define STATUS_FLAGS_DEBILITATE (CANSTUN|CANKNOCKOUT|CANDAZE|CANSLOW|CANROOT) #define CANSTUN (1<<0) #define CANKNOCKDOWN (1<<1) @@ -108,6 +110,7 @@ #define CANPUSH (1<<3) #define LEAPING (1<<4) #define PASSEMOTES (1<<5) //holders inside of mob that need to see emotes. +#define CANROOT (1<<6) #define GODMODE (1<<12) #define FAKEDEATH (1<<13) //Replaces stuff like changeling.changeling_fakedeath #define DISFIGURED (1<<14) //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system diff --git a/code/__HELPERS/#maths.dm b/code/__HELPERS/#maths.dm index bbdb58e57b24..6e4e1707b3dd 100644 --- a/code/__HELPERS/#maths.dm +++ b/code/__HELPERS/#maths.dm @@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, #define Lcm(a, b) (abs(a) / Gcd(a, b) * abs(b)) // Returns the nth root of x. -#define Root(n, x) (x ** (1 / n)) +#define NRoot(n, x) (x ** (1 / n)) // secant #define Sec(x) (1 / cos(x)) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 29755683165c..4795d8ed53b3 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -34,7 +34,7 @@ icon/MinColors(icon) icon/MaxColors(icon) The icon is blended with a second icon where the maximum of each RGB pixel is the result. Opacity may increase, as if the icons were blended with ICON_OR. You may supply a color in place of an icon. -icon/Opaque(background = "#000000") +icon/Opaque(background = COLOR_BLACK) All alpha values are set to 255 throughout the icon. Transparent pixels become black, or whatever background color you specify. icon/BecomeAlphaMask() You can convert a simple grayscale icon into an alpha mask to use with other icons very easily with this proc. @@ -246,7 +246,7 @@ world /icon/proc/AddAlphaMask(mask) var/icon/M = new(mask) - M.Blend("#ffffff", ICON_SUBTRACT) + M.Blend(COLOR_WHITE, ICON_SUBTRACT) // apply mask Blend(M, ICON_ADD) @@ -544,7 +544,7 @@ world return flat_icon /proc/adjust_brightness(color, value) - if (!color) return "#FFFFFF" + if (!color) return COLOR_WHITE if (!value) return color var/list/RGB = ReadRGB(color) @@ -581,7 +581,7 @@ world if(A) A.overlays.Remove(src) -/mob/proc/flick_heal_overlay(time, color = "#00FF00") //used for warden and queen healing +/mob/proc/flick_heal_overlay(time, color = COLOR_GREEN) //used for warden and queen healing var/image/I = image('icons/mob/mob.dmi', src, "heal_overlay") switch(icon_size) if(48) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 0bd2206091ba..0cb7bbaf06d3 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -212,13 +212,13 @@ /atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary invisibility = INVISIBILITY_LIGHTING layer = BACKGROUND_LAYER + LIGHTING_PRIMARY_DIMMER_LAYER - color = "#000" + color = COLOR_BLACK alpha = 60 /atom/movable/screen/fullscreen/lighting_backdrop/backplane invisibility = INVISIBILITY_LIGHTING layer = LIGHTING_BACKPLANE_LAYER - color = "#000" + color = COLOR_BLACK blend_mode = BLEND_ADD /atom/movable/screen/fullscreen/see_through_darkness diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 37a858d76699..9af300287f25 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -1,7 +1,7 @@ /datum/hud/human var/list/gear = list() -/datum/hud/human/New(mob/living/carbon/human/owner, datum/custom_hud/hud_type, ui_color = "#ffffff", ui_alpha = 255) +/datum/hud/human/New(mob/living/carbon/human/owner, datum/custom_hud/hud_type, ui_color = COLOR_WHITE, ui_alpha = 255) ..() ui_datum = hud_type if(!istype(ui_datum)) diff --git a/code/datums/_atmos_setup.dm b/code/datums/_atmos_setup.dm index 3075e98ac464..560a95159506 100644 --- a/code/datums/_atmos_setup.dm +++ b/code/datums/_atmos_setup.dm @@ -6,11 +6,11 @@ // atmospherics devices. //-------------------------------------------- -#define PIPE_COLOR_GREY "#ffffff" //yes white is grey -#define PIPE_COLOR_RED "#ff0000" -#define PIPE_COLOR_BLUE "#0000ff" -#define PIPE_COLOR_CYAN "#00ffff" -#define PIPE_COLOR_GREEN "#00ff00" +#define PIPE_COLOR_GREY COLOR_WHITE //yes white is grey +#define PIPE_COLOR_RED COLOR_RED +#define PIPE_COLOR_BLUE COLOR_BLUE +#define PIPE_COLOR_CYAN COLOR_CYAN +#define PIPE_COLOR_GREEN COLOR_GREEN #define PIPE_COLOR_YELLOW "#ffcc00" #define PIPE_COLOR_PURPLE "#5c1ec0" diff --git a/code/datums/custom_hud.dm b/code/datums/custom_hud.dm index 62ae36aa7b89..28cdc3b45813 100644 --- a/code/datums/custom_hud.dm +++ b/code/datums/custom_hud.dm @@ -82,7 +82,7 @@ var/coords_x = splittext(coords[1], ":") return "[coords_x[1]]:[text2num(coords_x[2])+A.hud_offset],[coords[2]]" -/datum/custom_hud/proc/special_behaviour(datum/hud/element, ui_alpha = 255, ui_color = "#ffffff") +/datum/custom_hud/proc/special_behaviour(datum/hud/element, ui_alpha = 255, ui_color = COLOR_WHITE) return /datum/custom_hud/old @@ -131,7 +131,7 @@ var/coord_row_offset = -8 return "EAST[coord_col]:[coord_col_offset],NORTH[coord_row]:[coord_row_offset]" -/datum/custom_hud/dark/special_behaviour(datum/hud/element, ui_alpha = 255, ui_color = "#ffffff") +/datum/custom_hud/dark/special_behaviour(datum/hud/element, ui_alpha = 255, ui_color = COLOR_WHITE) element.frame_hud = new /atom/movable/screen() element.frame_hud.icon = ui_frame_icon element.frame_hud.icon_state = "dark" diff --git a/code/datums/emergency_calls/upp.dm b/code/datums/emergency_calls/upp.dm index c075c4be25db..d68171981355 100644 --- a/code/datums/emergency_calls/upp.dm +++ b/code/datums/emergency_calls/upp.dm @@ -35,13 +35,16 @@ else to_chat(M, SPAN_BOLD("You were brought online in a UPP engineering facility, knowing only your engineers for the first few weeks for your pseudo-life.")) to_chat(M, SPAN_BOLD("You were programmed with all of the medical and combat experience a military fighting force support asset required.")) - to_chat(M, SPAN_BOLD("Throughout your career, your engineers, and later, your UPP compatriots, treated you like a tool, and only that.")) + to_chat(M, SPAN_BOLD("Throughout your career, your engineers, and later, your UPP compatriots, treated you like [pick(75;"a tool, and only that.", 25;"a person, despite your purpose.")]")) to_chat(M, SPAN_BOLD("Some weeks after your unit integration, you were assigned to the 17th 'Smoldering Sons' battalion (six hundred strong) under the command of Colonel Ganbaatar.")) to_chat(M, SPAN_BOLD("You were shipped off with the battalion to one of the UPP's most remote territories, a gas giant designated MV-35 in the Anglo-Japanese Arm, in the Neroid Sector.")) to_chat(M, SPAN_BOLD("For the past 14 months, you and the rest of the Smoldering Sons have been stationed at MV-35's only facility, the helium refinery, Altai Station.")) to_chat(M, SPAN_BOLD("As MV-35 and Altai Station are the only UPP-held zones in the Neroid Sector for many lightyears, you have spent most of your military career holed up in crammed quarters in near darkness, waiting for supply shipments and transport escort deployments.")) - to_chat(M, SPAN_BOLD("With the recent arrival of the enemy USCM battalion the 'Falling Falcons' and their flagship, the [MAIN_SHIP_NAME], the UPP has felt threatened in the sector.")) - to_chat(M, SPAN_BOLD("In an effort to protect the vulnerable MV-35 from the encroaching UA/USCM imperialists, the leadership of your battalion has opted this to be the best opportunity to strike at the Falling Falcons to catch them off guard.")) + to_chat(M, SPAN_BOLD("With the recent arrival of the USCM battalion the 'Falling Falcons' and their flagship, the [MAIN_SHIP_NAME], the UPP has felt threatened in the sector.")) + if(hostility) + to_chat(M, SPAN_BOLD("In an effort to protect the vulnerable MV-35 from the encroaching UA/USCM imperialists, the leadership of your battalion has opted this to be the best opportunity to strike at the Falling Falcons to catch them off guard.")) + else + to_chat(M, SPAN_BOLD("Despite this, the leadership of your battalion questions what may have prompted the distress signal from their rivals. Your squad is to find out why and to render aid to the beleaguered UA forces.")) to_chat(M, SPAN_WARNING(FONT_SIZE_BIG("Glory to Colonel Ganbaatar."))) to_chat(M, SPAN_WARNING(FONT_SIZE_BIG("Glory to the Smoldering Sons."))) to_chat(M, SPAN_WARNING(FONT_SIZE_BIG("Glory to the UPP."))) diff --git a/code/datums/entities/clans.dm b/code/datums/entities/clans.dm index 916afd18c178..de256ca0db6a 100644 --- a/code/datums/entities/clans.dm +++ b/code/datums/entities/clans.dm @@ -27,7 +27,7 @@ BSQL_PROTECT_DATUM(/datum/entity/clan) ) /datum/entity_meta/clan/on_insert(datum/entity/clan/player_clan) - player_clan.color = "#FFFFFF" + player_clan.color = COLOR_WHITE player_clan.save() diff --git a/code/datums/entities/player_times.dm b/code/datums/entities/player_times.dm index 2bbd4a3bc39e..502170e4c32f 100644 --- a/code/datums/entities/player_times.dm +++ b/code/datums/entities/player_times.dm @@ -5,7 +5,7 @@ // Untracked vars var/bgcolor = "#4a4a4a" - var/textcolor = "#ffffff" + var/textcolor = COLOR_WHITE BSQL_PROTECT_DATUM(/datum/entity/player_time) @@ -62,7 +62,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player_time) "job" = role_id, "playtime" = round(total_minutes MINUTES_TO_HOURS, 0.1), "bgcolor" = "rgb(0, [Floor(128 * playtime_percentage)], [Floor(255 * playtime_percentage)])", - "textcolor" = "#FFFFFF", + "textcolor" = COLOR_WHITE, "icondisplay" = icon_display ) @@ -103,14 +103,14 @@ BSQL_PROTECT_DATUM(/datum/entity/player_time) "job" = "Xenomorph", "playtime" = round(owning_client.get_total_xeno_playtime() DECISECONDS_TO_HOURS, 0.1), "bgcolor" = "#3a3a3a", - "textcolor" = "#FFFFFF" + "textcolor" = COLOR_WHITE ) var/list/marine_playtime = list( "job" = "Human", "playtime" = round(owning_client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1), "bgcolor" = "#3a3a3a", - "textcolor" = "#FFFFFF" + "textcolor" = COLOR_WHITE ) LAZYADD(xeno_playtimes, list(xeno_playtime)) diff --git a/code/datums/langchat/langchat.dm b/code/datums/langchat/langchat.dm index b82b03b51774..d21ee79a08e9 100644 --- a/code/datums/langchat/langchat.dm +++ b/code/datums/langchat/langchat.dm @@ -1,5 +1,5 @@ /atom/var/langchat_height = 32 // abovetile usually -/atom/var/langchat_color = "#FFFFFF" +/atom/var/langchat_color = COLOR_WHITE /atom/var/langchat_styles = "" /mob/living/carbon/xenomorph/langchat_color = "#b491c8" diff --git a/code/datums/supply_packs/explosives.dm b/code/datums/supply_packs/explosives.dm index 22458ef3fa6b..032ef047c78a 100644 --- a/code/datums/supply_packs/explosives.dm +++ b/code/datums/supply_packs/explosives.dm @@ -1,7 +1,7 @@ // Group to populate with all the explosives exept OB and mortar shell /datum/supply_packs/explosives - name = "surplus explosives crate (claymore mine x5, M40 HIDP x2, M40 HEDP x2, M15 Frag x2, M12 Blast x2)" + name = "surplus explosives crate (claymore mine x5, M40 HIDP x2, M40 HEDP x2, M15 Frag x2, M12 Blast x2, M40 MFHS x2)" contains = list( /obj/item/storage/box/explosive_mines, /obj/item/explosive/grenade/high_explosive, @@ -12,6 +12,8 @@ /obj/item/explosive/grenade/high_explosive/m15, /obj/item/explosive/grenade/high_explosive/pmc, /obj/item/explosive/grenade/high_explosive/pmc, + /obj/item/explosive/grenade/metal_foam, + /obj/item/explosive/grenade/metal_foam, ) cost = 40 containertype = /obj/structure/closet/crate/explosives diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 24f58c8f6ae3..6a806dd602ec 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -55,7 +55,7 @@ list("M74 AGM-Star Shell", round(scale * 2), /obj/item/explosive/grenade/high_explosive/airburst/starshell, VENDOR_ITEM_REGULAR), list("M74 AGM-Hornet Shell", round(scale * 4), /obj/item/explosive/grenade/high_explosive/airburst/hornet_shell, VENDOR_ITEM_REGULAR), list("M40 HIRR Baton Slug", round(scale * 8), /obj/item/explosive/grenade/slug/baton, VENDOR_ITEM_REGULAR), - list("M40 MFHS Metal Foam Grenade", round(scale * 3), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR), + list("M40 MFHS Metal Foam Grenade", round(scale * 6), /obj/item/explosive/grenade/metal_foam, VENDOR_ITEM_REGULAR), list("Plastic Explosives", round(scale * 3), /obj/item/explosive/plastic, VENDOR_ITEM_REGULAR), list("Breaching Charge", round(scale * 2), /obj/item/explosive/plastic/breaching_charge, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/effects/decals/cleanable/blood/xeno.dm b/code/game/objects/effects/decals/cleanable/blood/xeno.dm index ade4723a1d74..2d35d4045923 100644 --- a/code/game/objects/effects/decals/cleanable/blood/xeno.dm +++ b/code/game/objects/effects/decals/cleanable/blood/xeno.dm @@ -17,7 +17,7 @@ basecolor = BLOOD_COLOR_XENO /obj/effect/decal/cleanable/blood/gibs/xeno/update_icon() - color = "#FFFFFF" + color = COLOR_WHITE /obj/effect/decal/cleanable/blood/gibs/xeno/up random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") diff --git a/code/game/objects/effects/effect_system/foam.dm b/code/game/objects/effects/effect_system/foam.dm index edee94cb3747..525cb8c731a9 100644 --- a/code/game/objects/effects/effect_system/foam.dm +++ b/code/game/objects/effects/effect_system/foam.dm @@ -156,7 +156,7 @@ // dense and opaque, but easy to break #define FOAMED_METAL_FIRE_ACT_DMG 50 -#define FOAMED_METAL_XENO_SLASH 0.8 +#define FOAMED_METAL_XENO_SLASH 1.75 #define FOAMED_METAL_ITEM_MELEE 2 #define FOAMED_METAL_BULLET_DMG 2 #define FOAMED_METAL_EXPLOSION_DMG 1 @@ -173,7 +173,7 @@ /obj/structure/foamed_metal/iron icon_state = "ironfoam" - health = 85 + health = 70 name = "foamed iron" desc = "A slightly stronger lightweight foamed iron wall." @@ -211,7 +211,7 @@ return FALSE /obj/structure/foamed_metal/attack_alien(mob/living/carbon/xenomorph/X, dam_bonus) - var/damage = (rand(X.melee_damage_lower, X.melee_damage_upper) + dam_bonus) + var/damage = ((round((X.melee_damage_lower+X.melee_damage_upper)/2)) + dam_bonus) //Frenzy bonus if(X.frenzy_aura > 0) diff --git a/code/game/objects/items/explosives/grenades/marines.dm b/code/game/objects/items/explosives/grenades/marines.dm index 46d2d4eba921..1cd3e1577c57 100644 --- a/code/game/objects/items/explosives/grenades/marines.dm +++ b/code/game/objects/items/explosives/grenades/marines.dm @@ -705,11 +705,11 @@ det_time = 20 underslug_launchable = TRUE harmful = FALSE - var/foam_metal_type = FOAM_METAL_TYPE_ALUMINIUM + var/foam_metal_type = FOAM_METAL_TYPE_IRON /obj/item/explosive/grenade/metal_foam/prime() var/datum/effect_system/foam_spread/s = new() - s.set_up(12, get_turf(src), metal_foam = foam_metal_type) //Metalfoam 1 for aluminum foam, 2 for iron foam (Stronger), 12 amt = 2 tiles radius (5 tile length diamond) + s.set_up(12, get_turf(src), metal_foam = foam_metal_type) //12 amt = 2 tiles radius (5 tile length diamond) s.start() qdel(src) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 2137b41d86bf..12bf5260fe92 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -116,7 +116,7 @@ color = "#00DDDD" /obj/item/handcuffs/cable/white - color = "#FFFFFF" + color = COLOR_WHITE /obj/item/handcuffs/cable/attackby(obj/item/I, mob/user as mob) ..() diff --git a/code/game/objects/items/reagent_containers/food/snacks/meat.dm b/code/game/objects/items/reagent_containers/food/snacks/meat.dm index f459d1b169ae..028737c283fb 100644 --- a/code/game/objects/items/reagent_containers/food/snacks/meat.dm +++ b/code/game/objects/items/reagent_containers/food/snacks/meat.dm @@ -32,7 +32,7 @@ name = "synthetic flesh" desc = "A slab of artificial, inorganic 'flesh' that resembles human meat. Probably came from a synth." icon_state = "synthmeat" - filling_color = "#ffffff" + filling_color = COLOR_WHITE /obj/item/reagent_container/food/snacks/meat/synthmeat/synthetic/Initialize() . = ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 1856dc5dd750..d62c4b574629 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -353,7 +353,12 @@ set category = "Object" set src in oview(1) - if(!can_touch(usr) || ismouse(usr)) + if(!can_touch(usr)) + return + + // Small regular mob, or very small xeno. + if(usr.mob_size == MOB_SIZE_SMALL || usr.mob_size == MOB_SIZE_XENO_VERY_SMALL) + to_chat(usr, SPAN_WARNING("[isxeno(usr) ? "We are" : "You're"] too small to flip [src].")) return if(usr.a_intent != INTENT_HARM) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index e9587319a160..a3ce847c4270 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -323,7 +323,7 @@ if(icon_state in icon_states(icon_file)) I = icon(icon_file, icon_state, SOUTH) var/c = initial(item.color) - if (!isnull(c) && c != "#FFFFFF") + if (!isnull(c) && c != COLOR_WHITE) I.Blend(c, ICON_MULTIPLY) else if (ispath(k, /obj/effect/essentials_set)) diff --git a/code/modules/asset_cache/assets/vending.dm b/code/modules/asset_cache/assets/vending.dm index a3099869e334..de06ffd59d03 100644 --- a/code/modules/asset_cache/assets/vending.dm +++ b/code/modules/asset_cache/assets/vending.dm @@ -34,7 +34,7 @@ var/icon/I = icon(icon_file, icon_state, SOUTH) var/c = initial(item.color) - if (!isnull(c) && c != "#FFFFFF") + if (!isnull(c) && c != COLOR_WHITE) I.Blend(c, ICON_MULTIPLY) var/imgid = replacetext(replacetext("[item]", "/obj/item/", ""), "/", "-") diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 221736b5c84f..7b8274d5e310 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(bgstate_options, list( var/chat_display_preferences = CHAT_TYPE_ALL var/item_animation_pref_level = SHOW_ITEM_ANIMATIONS_ALL var/pain_overlay_pref_level = PAIN_OVERLAY_BLURRY - var/UI_style_color = "#ffffff" + var/UI_style_color = COLOR_WHITE var/UI_style_alpha = 255 var/View_MC = FALSE var/window_skin = 0 diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index 95d545fbd72b..02ff0b98e761 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -1061,7 +1061,7 @@ var/span_class = "yautja_translator" if(translator_type != "Modern") if(translator_type == "Retro") - overhead_color = "#FFFFFF" + overhead_color = COLOR_WHITE span_class = "retro_translator" msg = replacetext(msg, "a", "@") msg = replacetext(msg, "e", "3") diff --git a/code/modules/lighting/lighting_mask/lighting_mask.dm b/code/modules/lighting/lighting_mask/lighting_mask.dm index c1276d19dab0..1fcfdd455c93 100644 --- a/code/modules/lighting/lighting_mask/lighting_mask.dm +++ b/code/modules/lighting/lighting_mask/lighting_mask.dm @@ -105,7 +105,7 @@ current_angle = angle ///Setter proc for colors -/atom/movable/lighting_mask/proc/set_color(colour = "#ffffff") +/atom/movable/lighting_mask/proc/set_color(colour = COLOR_WHITE) color = colour ///Setter proc for the intensity of the mask diff --git a/code/modules/lighting/lighting_mask/shadow_calculator.dm b/code/modules/lighting/lighting_mask/shadow_calculator.dm index cfd4a86f5f3a..cf9d69531fbd 100644 --- a/code/modules/lighting/lighting_mask/shadow_calculator.dm +++ b/code/modules/lighting/lighting_mask/shadow_calculator.dm @@ -26,7 +26,7 @@ } while (FALSE) //For debugging use when we want to know if a turf is being affected multiple times -//#define DEBUG_HIGHLIGHT(x, y, colour) do{var/turf/T=locate(x,y,2);if(T){switch(T.color){if("#ff0000"){T.color = "#00ff00"}if("#00ff00"){T.color="#0000ff"}else{T.color="#ff0000"}}}}while(0) +//#define DEBUG_HIGHLIGHT(x, y, colour) do{var/turf/T=locate(x,y,2);if(T){switch(T.color){if(COLOR_RED){T.color = COLOR_GREEN}if(COLOR_GREEN){T.color=COLOR_BLUE}else{T.color=COLOR_RED}}}}while(0) #define DO_SOMETHING_IF_DEBUGGING_SHADOWS(something) something #else #define DEBUG_HIGHLIGHT(x, y, colour) @@ -148,7 +148,7 @@ //At this point we no longer care about //the atom itself, only the position values COORD_LIST_ADD(opaque_atoms_in_view, thing.x, thing.y) - DEBUG_HIGHLIGHT(thing.x, thing.y, "#0000FF") + DEBUG_HIGHLIGHT(thing.x, thing.y, COLOR_BLUE) //We are too small to consider shadows on, luminsoty has been considered at least. if(radius < 2) @@ -213,7 +213,7 @@ shadow.icon = LIGHTING_ICON_BIG shadow.icon_state = "triangle" - shadow.color = "#000" + shadow.color = COLOR_BLACK shadow.transform = triangle_matrix shadow.render_target = SHADOW_RENDER_TARGET shadow.blend_mode = BLEND_OVERLAY @@ -639,18 +639,18 @@ if(length(group) == 1) //Add the element in group to horizontal COORD_LIST_ADD(horizontal_atoms, pointer, text2num(x_key)) - DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00") + DEBUG_HIGHLIGHT(text2num(x_key), pointer, COLOR_YELLOW) else //Add the group to the output . += list(group) group = list() group += list(list(text2num(x_key), next)) - DEBUG_HIGHLIGHT(text2num(x_key), next, "#FF0000") + DEBUG_HIGHLIGHT(text2num(x_key), next, COLOR_RED) pointer = next if(length(group) == 1) //Add the element in group to horizontal COORD_LIST_ADD(horizontal_atoms, pointer, text2num(x_key)) - DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00") + DEBUG_HIGHLIGHT(text2num(x_key), pointer, COLOR_YELLOW) else //Add the group to the output . += list(group) @@ -666,7 +666,7 @@ . += list(group) group = list() group += list(list(next, text2num(y_key))) - DEBUG_HIGHLIGHT(next, text2num(y_key), "#00FF00") + DEBUG_HIGHLIGHT(next, text2num(y_key), COLOR_GREEN) pointer = next . += list(group) diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm index e0a4d2e4d5b8..bd21f87d3f94 100644 --- a/code/modules/maptext_alerts/screen_alerts.dm +++ b/code/modules/maptext_alerts/screen_alerts.dm @@ -10,7 +10,7 @@ * * alert_type: typepath for screen text type we want to play here * * override_color: the color of the text to use */ -/mob/proc/play_screen_text(text, alert_type = /atom/movable/screen/text/screen_text, override_color = "#FFFFFF") +/mob/proc/play_screen_text(text, alert_type = /atom/movable/screen/text/screen_text, override_color = COLOR_WHITE) var/atom/movable/screen/text/screen_text/text_box = new alert_type() text_box.text_to_play = text text_box.player = client diff --git a/code/modules/maptext_alerts/text_blurbs.dm b/code/modules/maptext_alerts/text_blurbs.dm index 297b02aff3a3..255689cd2c38 100644 --- a/code/modules/maptext_alerts/text_blurbs.dm +++ b/code/modules/maptext_alerts/text_blurbs.dm @@ -90,7 +90,7 @@ blurb_key = a key used for specific blurb types so they are not shown repeatedly ignore_key = used to skip key checks. Ex. a USCM ERT member shouldn't see the normal USCM drop message, but should see their own spawn message even if the player already dropped as USCM.**/ /proc/show_blurb(list/mob/targets, duration = 3 SECONDS, message, scroll_down, screen_position = "LEFT+0:16,BOTTOM+1:16",\ - text_alignment = "left", text_color = "#FFFFFF", blurb_key, ignore_key = FALSE, speed = 1) + text_alignment = "left", text_color = COLOR_WHITE, blurb_key, ignore_key = FALSE, speed = 1) set waitfor = 0 if(!islist(targets)) targets = list(targets) diff --git a/code/modules/mob/living/carbon/human/species/synthetic.dm b/code/modules/mob/living/carbon/human/species/synthetic.dm index 38b7e935268d..79789bbb9fc9 100644 --- a/code/modules/mob/living/carbon/human/species/synthetic.dm +++ b/code/modules/mob/living/carbon/human/species/synthetic.dm @@ -64,7 +64,7 @@ uses_ethnicity = FALSE mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES) - hair_color = "#000000" + hair_color = COLOR_BLACK icobase = 'icons/mob/humans/species/r_synthetic.dmi' deform = 'icons/mob/humans/species/r_synthetic.dmi' @@ -99,7 +99,7 @@ uses_ethnicity = FALSE mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES) //sets colonial_gen_one synth's hair to black - hair_color = "#000000" + hair_color = COLOR_BLACK //sets colonial_gen_one synth's icon to WJ sprite icobase = 'icons/mob/humans/species/r_synthetic.dmi' deform = 'icons/mob/humans/species/r_synthetic.dmi' @@ -114,7 +114,7 @@ burn_mod = 0.6 //made for combat total_health = 250 //made for combat - hair_color = "#000000" + hair_color = COLOR_BLACK icobase = 'icons/mob/humans/species/r_synthetic.dmi' deform = 'icons/mob/humans/species/r_synthetic.dmi' diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index bba6b48c4f38..d0890bd3cf37 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -355,8 +355,9 @@ qdel(larva_embryo) if(!victim.first_xeno) - to_chat(larva_embryo, SPAN_XENOHIGHDANGER("The Queen's will overwhelms our instincts...")) - to_chat(larva_embryo, SPAN_XENOHIGHDANGER("\"[hive.hive_orders]\"")) + if(hive.hive_orders) + to_chat(larva_embryo, SPAN_XENOHIGHDANGER("The Queen's will overwhelms our instincts...")) + to_chat(larva_embryo, SPAN_XENOHIGHDANGER("\"[hive.hive_orders]\"")) log_attack("[key_name(victim)] chestbursted in [get_area_name(larva_embryo)] at X[victim.x], Y[victim.y], Z[victim.z]. The larva was [key_name(larva_embryo)].") //this is so that admins are not spammed with los logs for(var/obj/item/alien_embryo/AE in victim) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index a3854f5932cf..2e5c6a9112a3 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -538,22 +538,6 @@ var/time_left = time2text(timeleft(queen_age_timer_id) + 1 MINUTES, "mm") // We add a minute so that it basically ceilings the value. . += "Maturity: [time_left == 1? "[time_left] minute" : "[time_left] minutes"] remaining" -//Custom bump for crushers. This overwrites normal bumpcode from carbon.dm -/mob/living/carbon/xenomorph/queen/Collide(atom/A) - set waitfor = 0 - - if(stat || !istype(A) || A == src) - return FALSE - - if(now_pushing) - return FALSE//Just a plain ol turf, let's return. - - var/turf/T = get_step(src, dir) - if(!T || !get_step_to(src, T)) //If it still exists, try to push it. - return ..() - - return TRUE - /mob/living/carbon/xenomorph/queen/proc/set_orders() set category = "Alien" set name = "Set Hive Orders (50)" diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 7c4eff0e2c15..6c10df5987d0 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -97,6 +97,8 @@ EyeBlur(effect) if(DROWSY) drowsyness = max(drowsyness, effect) + if(ROOT) + Root(effect) updatehealth() return TRUE @@ -130,6 +132,8 @@ AdjustEyeBlur(effect) if(DROWSY) drowsyness = POSITIVE(drowsyness + effect) + if(ROOT) + AdjustRoot(effect) updatehealth() return TRUE @@ -160,15 +164,26 @@ SetEyeBlur(effect) if(DROWSY) drowsyness = POSITIVE(effect) + if(ROOT) + SetRoot(effect) updatehealth() return TRUE -/mob/living/proc/apply_effects(stun = 0, weaken = 0, paralyze = 0, irradiate = 0, stutter = 0, eyeblur = 0, drowsy = 0, agony = 0) - if(stun) apply_effect(stun, STUN) - if(weaken) apply_effect(weaken, WEAKEN) - if(paralyze) apply_effect(paralyze, PARALYZE) - if(stutter) apply_effect(stutter, STUTTER) - if(eyeblur) apply_effect(eyeblur, EYE_BLUR) - if(drowsy) apply_effect(drowsy, DROWSY) - if(agony) apply_effect(agony, AGONY) +/mob/living/proc/apply_effects(stun = 0, weaken = 0, paralyze = 0, irradiate = 0, stutter = 0, eyeblur = 0, drowsy = 0, agony = 0, root = 0) + if(stun) + apply_effect(stun, STUN) + if(weaken) + apply_effect(weaken, WEAKEN) + if(paralyze) + apply_effect(paralyze, PARALYZE) + if(stutter) + apply_effect(stutter, STUTTER) + if(eyeblur) + apply_effect(eyeblur, EYE_BLUR) + if(drowsy) + apply_effect(drowsy, DROWSY) + if(agony) + apply_effect(agony, AGONY) + if(root) + apply_effect(root, ROOT) return 1 diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index 07e1ddc4b884..f81baca85975 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -127,6 +127,57 @@ S = apply_status_effect(/datum/status_effect/incapacitating/stun, amount) return S +/* ROOT (Immobilisation) */ +/// Overridable handler to adjust the numerical value of status effects. Expand as needed +/mob/living/proc/GetRootDuration(amount) + return amount * GLOBAL_STATUS_MULTIPLIER + +/mob/living/proc/IsRoot() //If we're stunned + return has_status_effect(/datum/status_effect/incapacitating/immobilized) + +/mob/living/proc/AmountRoot() //How much time remain in our stun - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(root) + return root.get_duration_left() / GLOBAL_STATUS_MULTIPLIER + return FALSE + +/mob/living/proc/Root(amount) + if(!(status_flags & CANROOT)) + return + amount = GetRootDuration(amount) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(root) + root.update_duration(amount, increment = TRUE) + else if(amount > 0) + root = apply_status_effect(/datum/status_effect/incapacitating/immobilized, amount) + return root + +/mob/living/proc/SetRoot(amount) //Sets remaining duration + if(!(status_flags & CANROOT)) + return + amount = GetRootDuration(amount) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(amount <= 0) + if(root) + qdel(root) + else + if(root) + root.update_duration(amount) + else + root = apply_status_effect(/datum/status_effect/incapacitating/immobilized, amount) + return root + +/mob/living/proc/AdjustRoot(amount) //Adds to remaining duration + if(!(status_flags & CANROOT)) + return + amount = GetRootDuration(amount) + var/datum/status_effect/incapacitating/immobilized/root = IsRoot() + if(root) + root.adjust_duration(amount) + else if(amount > 0) + root = apply_status_effect(/datum/status_effect/incapacitating/immobilized, amount) + return root + /* DAZE (Light incapacitation) */ /// Overridable handler to adjust the numerical value of status effects. Expand as needed /mob/living/proc/GetDazeDuration(amount) diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm index 6c103aaa9677..5e7f427c8257 100644 --- a/code/modules/projectiles/magazines/shotguns.dm +++ b/code/modules/projectiles/magazines/shotguns.dm @@ -218,7 +218,7 @@ GLOBAL_LIST_INIT(shotgun_handfuls_12g, list( . = ..() icon_state = "shell_greyscale" + "_[current_rounds]" var/image/I = image(icon, src, "+shell_base_[src.current_rounds]") - I.color = "#ffffff" + I.color = COLOR_WHITE I.appearance_flags = RESET_COLOR|KEEP_APART overlays += I diff --git a/code/modules/reagents/chemistry_reactions/other.dm b/code/modules/reagents/chemistry_reactions/other.dm index 6b60ae89059c..f03abec98fba 100644 --- a/code/modules/reagents/chemistry_reactions/other.dm +++ b/code/modules/reagents/chemistry_reactions/other.dm @@ -385,28 +385,11 @@ to_chat(M, SPAN_WARNING("The solution spews out a metallic shiny foam!")) var/datum/effect_system/foam_spread/s = new() + if (created_volume > 300) + created_volume = 300 s.set_up(created_volume, location, holder, 1) s.start() - -/datum/chemical_reaction/ironfoam - name = "Iron Foam" - id = "ironlfoam" - result = null - required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - -/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) - var/location = get_turf(holder.my_atom) - - for(var/mob/M as anything in viewers(5, location)) - to_chat(M, SPAN_WARNING("The solution spews out a metallic dull foam!")) - - var/datum/effect_system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 2) - s.start() - - /datum/chemical_reaction/foaming_agent name = "Foaming Agent" id = "foaming_agent" diff --git a/html/changelogs/AutoChangeLog-pr-5489.yml b/html/changelogs/AutoChangeLog-pr-5489.yml new file mode 100644 index 000000000000..bd2b6225528f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5489.yml @@ -0,0 +1,6 @@ +author: "LTNTS" +delete-after: True +changes: + - bugfix: "removed the tiny square in the MP beret to stop it looking like a french mime's beret" + - refactor: "reorganized cm_hats and cm_suits for easier spriter usage" + - spellcheck: "fixed area typo Marshall to Marshal" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5500.yml b/html/changelogs/AutoChangeLog-pr-5500.yml new file mode 100644 index 000000000000..c662e46e6ba1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5500.yml @@ -0,0 +1,10 @@ +author: "private-tristan" +delete-after: True +changes: + - balance: "Xenos do greatly increased damage to metal foam (0.8x to 1.75x)" + - balance: "Iron metal foam hp decreased from 85 to 75, meaning that all T3s other than boiler can instantly break it." + - balance: "Metal foam grenades now create iron foam." + - balance: "Aluminum foam reactions are now cap'd at 300u" + - balance: "amount of metal foam grenades in req doubled." + - balance: "Surplus explosive pack now contains 2 metal foam grenades" + - rscdel: "metal foam is no longer able to be created in chemistry" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5526.yml b/html/changelogs/AutoChangeLog-pr-5526.yml new file mode 100644 index 000000000000..c5f76bbbb2bd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5526.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - balance: "Increased double throw delay from .4s to 1.5s" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5551.yml b/html/changelogs/AutoChangeLog-pr-5551.yml new file mode 100644 index 000000000000..1a6eed5b4c04 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5551.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Added procs for applying a root (immobilise)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5553.yml b/html/changelogs/AutoChangeLog-pr-5553.yml new file mode 100644 index 000000000000..9ccb7e97bddb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5553.yml @@ -0,0 +1,4 @@ +author: "Huffie56" +delete-after: True +changes: + - refactor: "turn some \"# and use the proper define from colour.dm for 21 files." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5559.yml b/html/changelogs/AutoChangeLog-pr-5559.yml new file mode 100644 index 000000000000..fb1f90b7f3e5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5559.yml @@ -0,0 +1,4 @@ +author: "CyberSpyXD" +delete-after: True +changes: + - rscadd: "Added a new backstory blurb for friendly UPP and some variance to the backstory of UPP synthetics." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5576.yml b/html/changelogs/AutoChangeLog-pr-5576.yml new file mode 100644 index 000000000000..51b97cab1547 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5576.yml @@ -0,0 +1,4 @@ +author: "Contrabang" +delete-after: True +changes: + - bugfix: "Chestbursting larva no longer get hive orders when there are no hive orders" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5580.yml b/html/changelogs/AutoChangeLog-pr-5580.yml new file mode 100644 index 000000000000..96052ed8af5b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5580.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - bugfix: "Fixed facehuggers being able to flip tables." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5585.yml b/html/changelogs/AutoChangeLog-pr-5585.yml new file mode 100644 index 000000000000..1e8e5ef35707 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5585.yml @@ -0,0 +1,4 @@ +author: "Oyu07" +delete-after: True +changes: + - bugfix: "Widens Dropship fabricator UI. Points for ammo are no longer cut off" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5588.yml b/html/changelogs/AutoChangeLog-pr-5588.yml new file mode 100644 index 000000000000..cfc1374a162a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5588.yml @@ -0,0 +1,4 @@ +author: "blackdragonTOW" +delete-after: True +changes: + - soundadd: "brought dropship_crash down from 0db to -6db" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5590.yml b/html/changelogs/AutoChangeLog-pr-5590.yml new file mode 100644 index 000000000000..bf24ce8894e7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5590.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - bugfix: "Fixed a stray pixel in the warrior 'walking' sprite." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5591.yml b/html/changelogs/AutoChangeLog-pr-5591.yml new file mode 100644 index 000000000000..9165d928d1ac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5591.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - bugfix: "Made the Queen able to automatically climb ledges." \ No newline at end of file diff --git a/icons/mob/xenos/warrior.dmi b/icons/mob/xenos/warrior.dmi index e871f7749145..d766959d1070 100644 Binary files a/icons/mob/xenos/warrior.dmi and b/icons/mob/xenos/warrior.dmi differ diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index ae446e174575..59a338a2c59e 100644 Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index 7db2158ee5bf..c6947c7c3bcf 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index f4b3d26d3e93..5acfeb576817 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -15298,7 +15298,7 @@ "gEA" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ dir = 8; - name = "\improper Marshall Head Office" + name = "\improper Marshal Head Office" }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -28010,7 +28010,7 @@ /area/lv522/outdoors/colony_streets/north_west_street) "lea" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Marshall Office Interrogation"; + name = "\improper Marshal Office Interrogation"; req_access = null }, /obj/structure/pipes/standard/simple/hidden/green{ @@ -63196,7 +63196,7 @@ /area/lv522/landing_zone_2/ceiling) "yat" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Marshall Office Armory" + name = "\improper Marshal Office Armory" }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 diff --git a/sound/effects/dropship_crash.ogg b/sound/effects/dropship_crash.ogg index ec552ce5b194..880777a41297 100644 Binary files a/sound/effects/dropship_crash.ogg and b/sound/effects/dropship_crash.ogg differ diff --git a/tgui/packages/tgui/interfaces/PartFabricator.jsx b/tgui/packages/tgui/interfaces/PartFabricator.jsx index 4df23279aad0..0bccb7009bee 100644 --- a/tgui/packages/tgui/interfaces/PartFabricator.jsx +++ b/tgui/packages/tgui/interfaces/PartFabricator.jsx @@ -5,7 +5,7 @@ import { Window } from '../layouts'; export const PartFabricator = (props) => { const { act, data } = useBackend(); return ( - +