diff --git a/.github/alternate_byond_versions.txt b/.github/alternate_byond_versions.txt
index 005803964cca..c96908590dac 100644
--- a/.github/alternate_byond_versions.txt
+++ b/.github/alternate_byond_versions.txt
@@ -6,4 +6,4 @@
# Example:
# 500.1337: runtimestation
-515.1610: lv624
+515.1630: lv624
diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm
index ead4c9665c7c..dfa335375b67 100644
--- a/code/__DEFINES/__game.dm
+++ b/code/__DEFINES/__game.dm
@@ -283,7 +283,7 @@ block( \
// Helpers
/// Only use the CEILING_PROTECTION_TIER_X defines for `protection_level`
-#define CEILING_IS_PROTECTED(ceiling, protection_level) (ceiling >= protection_level)
+#define CEILING_IS_PROTECTED(ceiling, protection_level) ((ceiling) >= (protection_level))
// Default font settings
#define FONT_SIZE "5pt"
@@ -536,7 +536,7 @@ block( \
/// `amount` - The number to get per time
/// `time` - The time period in which to gain this amount
/// To be used with delta_time. Multiplied by 10 to convert from deciseconds to seconds
-#define AMOUNT_PER_TIME(amount, time) ((amount / (time))*10)
+#define AMOUNT_PER_TIME(amount, time) (((amount) / (time))*10)
// Local message mode. Used to decide wheter message should be dispatched on the radio.
#define MESSAGE_MODE_LOCAL 1
diff --git a/code/__DEFINES/_math.dm b/code/__DEFINES/_math.dm
index 138adeeda451..f0281f51cedb 100644
--- a/code/__DEFINES/_math.dm
+++ b/code/__DEFINES/_math.dm
@@ -21,10 +21,10 @@
#define MODULUS(x, y) ( (x) - (y) * round((x) / (y)) )
// Returns true if val is from min to max, inclusive.
-#define ISINRANGE(val, min, max) (min <= val && val <= max)
+#define ISINRANGE(val, min, max) ((min) <= (val) && (val) <= (max))
// Same as above, exclusive.
-#define ISINRANGE_EX(val, min, max) (min < val && val < max)
+#define ISINRANGE_EX(val, min, max) ((min) < (val) && (val) < (max))
// Will filter out extra rotations and negative rotations
// E.g: 540 becomes 180. -180 becomes 180.
@@ -34,4 +34,4 @@
#define SIGN(x) ( ((x) > 0) - ((x) < 0) )
/// Performs a linear interpolation between a and b. Note that amount=0 returns a, amount=1 returns b, and amount=0.5 returns the mean of a and b.
-#define LERP(a, b, amount) ( amount ? ((a) + ((b) - (a)) * (amount)) : a )
+#define LERP(a, b, amount) ( (amount) ? ((a) + ((b) - (a)) * (amount)) : (a) )
diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm
index 9846e974827e..73b10d700247 100644
--- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm
+++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_xeno.dm
@@ -71,3 +71,6 @@
/// From /obj/effect/alien/resin/special/eggmorph/attack_alien: (mob/living/carbon/xenomorph/M)
#define COMSIG_XENO_TAKE_HUGGER_FROM_MORPHER "xeno_take_hugger_from_morpher"
+
+/// From /mob/living/carbon/xenomorph/proc/handle_crit()
+#define COMSIG_XENO_ENTER_CRIT "xeno_entering_critical"
diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm
index e3a35d0c4744..2761bc12acf0 100644
--- a/code/__DEFINES/xeno.dm
+++ b/code/__DEFINES/xeno.dm
@@ -660,7 +660,7 @@
// PARAMETERS:
// source_hive integer the hive to check the alliance of
// target_hive integer the target hive to see if the source_hive is allied to it.
-#define HIVE_ALLIED_TO_HIVE(source_hive, target_hive) (source_hive == target_hive || GLOB.hive_datum[source_hive]?.faction_is_ally(GLOB.hive_datum[target_hive]?.internal_faction))
+#define HIVE_ALLIED_TO_HIVE(source_hive, target_hive) ((source_hive) == (target_hive) || GLOB.hive_datum[source_hive]?.faction_is_ally(GLOB.hive_datum[target_hive]?.internal_faction))
#define QUEEN_SPAWN_TIMEOUT (2 MINUTES)
diff --git a/code/__HELPERS/#maths.dm b/code/__HELPERS/#maths.dm
index 6e4e1707b3dd..f8a9292d3806 100644
--- a/code/__HELPERS/#maths.dm
+++ b/code/__HELPERS/#maths.dm
@@ -8,8 +8,8 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
// MATH DEFINES
-#define Ceiling(x) (-round(-x))
-#define CLAMP01(x) (clamp(x, 0, 1))
+#define Ceiling(x) (-round(-(x)))
+#define CLAMP01(x) (clamp((x), 0, 1))
// cotangent
#define Cot(x) (1 / tan(x))
@@ -17,36 +17,36 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
// cosecant
#define Csc(x) (1 / sin(x))
-#define Default(a, b) (a ? a : b)
+#define Default(a, b) ((a) ? (a) : (b))
#define Floor(x) (round(x))
// Greatest Common Divisor - Euclid's algorithm
-#define Gcd(a, b) (b ? Gcd(b, a % b) : a)
+#define Gcd(a, b) ((b) ? Gcd((b), (a) % (b)) : (a))
-#define Inverse(x) (1 / x)
-#define IsEven(x) (x % 2 == 0)
+#define Inverse(x) (1 / (x))
+#define IsEven(x) ((x) % 2 == 0)
-#define IsInteger(x) (Floor(x) == x)
+#define IsInteger(x) (Floor(x) == (x))
#define IsOdd(x) (!IsEven(x))
-#define IsMultiple(x, y) (x % y == 0)
+#define IsMultiple(x, y) ((x) % (y) == 0)
// Least Common Multiple
-#define Lcm(a, b) (abs(a) / Gcd(a, b) * abs(b))
+#define Lcm(a, b) (abs(a) / Gcd((a), (b)) * abs(b))
// Returns the nth root of x.
-#define NRoot(n, x) (x ** (1 / n))
+#define NRoot(n, x) ((x) ** (1 / (n)))
// secant
#define Sec(x) (1 / cos(x))
// 57.2957795 = 180 / Pi
-#define ToDegrees(radians) (radians * 57.2957795)
+#define ToDegrees(radians) ((radians) * 57.2957795)
// 0.0174532925 = Pi / 180
-#define ToRadians(degrees) (degrees * 0.0174532925)
+#define ToRadians(degrees) ((degrees) * 0.0174532925)
// min is inclusive, max is exclusive
-#define WRAP(val, min, max) clamp(( min == max ? min : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),min,max)
+#define WRAP(val, min, max) clamp(( (min) == (max) ? (min) : (val) - (round(((val) - (min))/((max) - (min))) * ((max) - (min))) ),(min),(max))
// MATH PROCS
diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm
index 4795d8ed53b3..29755683165c 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 = COLOR_BLACK)
+icon/Opaque(background = "#000000")
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(COLOR_WHITE, ICON_SUBTRACT)
+ M.Blend("#ffffff", ICON_SUBTRACT)
// apply mask
Blend(M, ICON_ADD)
@@ -544,7 +544,7 @@ world
return flat_icon
/proc/adjust_brightness(color, value)
- if (!color) return COLOR_WHITE
+ if (!color) return "#FFFFFF"
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 = COLOR_GREEN) //used for warden and queen healing
+/mob/proc/flick_heal_overlay(time, color = "#00FF00") //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/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 7324c4a9634e..2fd7ea8919df 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -21,23 +21,23 @@
#define between(low, middle, high) (max(min(middle, high), low))
//Offuscate x for coord system
-#define obfuscate_x(x) (x + GLOB.obfs_x)
+#define obfuscate_x(x) ((x) + GLOB.obfs_x)
//Offuscate y for coord system
-#define obfuscate_y(y) (y + GLOB.obfs_y)
+#define obfuscate_y(y) ((y) + GLOB.obfs_y)
//Deoffuscate x for coord system
-#define deobfuscate_x(x) (x - GLOB.obfs_x)
+#define deobfuscate_x(x) ((x) - GLOB.obfs_x)
//Deoffuscate y for coord system
-#define deobfuscate_y(y) (y - GLOB.obfs_y)
+#define deobfuscate_y(y) ((y) - GLOB.obfs_y)
#define can_xeno_build(T) (!T.density && !(locate(/obj/structure/fence) in T) && !(locate(/obj/structure/tunnel) in T) && (locate(/obj/effect/alien/weeds) in T))
// For the purpose of a skillcheck, not having a skillset counts as being skilled in everything (!user.skills check)
// Note that is_skilled() checks if the skillset contains the skill internally, so a has_skill check is unnecessary
-#define skillcheck(user, skill, req_level) ((!user.skills || user.skills.is_skilled(skill, req_level)))
-#define skillcheckexplicit(user, skill, req_level) ((!user.skills || user.skills.is_skilled(skill, req_level, TRUE)))
+#define skillcheck(user, skill, req_level) ((!user.skills || user.skills.is_skilled((skill), (req_level))))
+#define skillcheckexplicit(user, skill, req_level) ((!user.skills || user.skills.is_skilled((skill), (req_level), TRUE)))
// Ensure the frequency is within bounds of what it should be sending/receiving at
// Sets f within bounds via `clamp(round(f), 1441, 1489)`
@@ -48,7 +48,7 @@
)
//Turns 1479 into 147.9
-#define format_frequency(f) "[round(f / 10)].[f % 10]"
+#define format_frequency(f) "[round((f) / 10)].[(f) % 10]"
#define reverse_direction(direction) ( \
( dir & (NORTH|SOUTH) ? ~dir & (NORTH|SOUTH) : 0 ) | \
diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm
index 66eaf13df282..1f3404f403f2 100644
--- a/code/_globalvars/global_lists.dm
+++ b/code/_globalvars/global_lists.dm
@@ -3,6 +3,9 @@ GLOBAL_LIST_EMPTY(WYFaxes) //Departmental faxes
GLOBAL_LIST_EMPTY(USCMFaxes)
GLOBAL_LIST_EMPTY(ProvostFaxes)
GLOBAL_LIST_EMPTY(CMBFaxes)
+GLOBAL_LIST_EMPTY(UPPFaxes)
+GLOBAL_LIST_EMPTY(TWEFaxes)
+GLOBAL_LIST_EMPTY(CLFFaxes)
GLOBAL_LIST_EMPTY(GeneralFaxes) //Inter-machine faxes
GLOBAL_LIST_EMPTY(fax_contents) //List of fax contents to maintain it even if source paper is deleted
diff --git a/code/_macros.dm b/code/_macros.dm
index e8a97cbada83..ec4f559f0bfc 100644
--- a/code/_macros.dm
+++ b/code/_macros.dm
@@ -78,14 +78,14 @@
// Spawns multiple objects of the same type
#define cast_new(type, num, args...) if((num) == 1) { new type(args) } else { for(var/i=0;i<(num),i++) { new type(args) } }
-#define FLAGS_EQUALS(flag, flags) ((flag & (flags)) == (flags))
+#define FLAGS_EQUALS(flag, flags) (((flag) & (flags)) == (flags))
#define IS_DIAGONAL_DIR(dir) (dir & ~(NORTH|SOUTH))
// Inverse direction, taking into account UP|DOWN if necessary.
-#define REVERSE_DIR(dir) ( ((dir & 85) << 1) | ((dir & 170) >> 1) )
+#define REVERSE_DIR(dir) ( (((dir) & 85) << 1) | (((dir) & 170) >> 1) )
-#define POSITIVE(val) max(val, 0)
+#define POSITIVE(val) max((val), 0)
#define GENERATE_DEBUG_ID "[rand(0, 9)][rand(0, 9)][rand(0, 9)][rand(0, 9)][pick(alphabet_lowercase)][pick(alphabet_lowercase)][pick(alphabet_lowercase)][pick(alphabet_lowercase)]"
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index 0cb7bbaf06d3..0bd2206091ba 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 = COLOR_BLACK
+ color = "#000"
alpha = 60
/atom/movable/screen/fullscreen/lighting_backdrop/backplane
invisibility = INVISIBILITY_LIGHTING
layer = LIGHTING_BACKPLANE_LAYER
- color = COLOR_BLACK
+ color = "#000"
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 9af300287f25..37a858d76699 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 = COLOR_WHITE, ui_alpha = 255)
+/datum/hud/human/New(mob/living/carbon/human/owner, datum/custom_hud/hud_type, ui_color = "#ffffff", ui_alpha = 255)
..()
ui_datum = hud_type
if(!istype(ui_datum))
diff --git a/code/controllers/mc/globals.dm b/code/controllers/mc/globals.dm
index 7b5cc94d3620..724f58010699 100644
--- a/code/controllers/mc/globals.dm
+++ b/code/controllers/mc/globals.dm
@@ -13,7 +13,11 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars)
GLOB = src
var/datum/controller/exclude_these = new
- gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order))
+ // I know this is dumb but the nested vars list hangs a ref to the datum. This fixes that
+ var/list/controller_vars = exclude_these.vars.Copy()
+ controller_vars["vars"] = null
+ gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order))
+
QDEL_IN(exclude_these, 0) //signal logging isn't ready
log_world("[vars.len - gvars_datum_in_built_vars.len] global variables")
diff --git a/code/datums/_atmos_setup.dm b/code/datums/_atmos_setup.dm
index 560a95159506..3075e98ac464 100644
--- a/code/datums/_atmos_setup.dm
+++ b/code/datums/_atmos_setup.dm
@@ -6,11 +6,11 @@
// atmospherics devices.
//--------------------------------------------
-#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_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_YELLOW "#ffcc00"
#define PIPE_COLOR_PURPLE "#5c1ec0"
diff --git a/code/datums/ammo/energy.dm b/code/datums/ammo/energy.dm
index 1e910b1e6b49..16cbab378438 100644
--- a/code/datums/ammo/energy.dm
+++ b/code/datums/ammo/energy.dm
@@ -28,8 +28,7 @@
icon_state = "stun"
damage_type = OXY
flags_ammo_behavior = AMMO_ENERGY|AMMO_IGNORE_RESIST|AMMO_ALWAYS_FF //Not that ignoring will do much right now.
- damage = 15 //excessive use COULD be lethal
- stamina_damage = 40
+ stamina_damage = 45
accuracy = HIT_ACCURACY_TIER_8
shell_speed = AMMO_SPEED_TIER_1 // Slightly faster
hit_effect_color = "#FFFF00"
diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm
index 3aaba8443efb..62a78539b6a2 100644
--- a/code/datums/ammo/misc.dm
+++ b/code/datums/ammo/misc.dm
@@ -113,7 +113,7 @@
/datum/ammo/flare/set_bullet_traits()
. = ..()
LAZYADD(traits_to_give, list(
- BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary)
+ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary, stacks = 2.5)
))
/datum/ammo/flare/on_hit_mob(mob/M,obj/projectile/P)
@@ -156,11 +156,13 @@
name = "starshell ash"
icon_state = "starshell_bullet"
max_range = 5
+ damage = 2.5
flare_type = /obj/item/device/flashlight/flare/on/starshell_ash
/datum/ammo/flare/starshell/set_bullet_traits()
LAZYADD(traits_to_give, list(
- BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff, /datum/element/bullet_trait_incendiary)
+ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff),
+ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary, stacks = 1)
))
/datum/ammo/souto
diff --git a/code/datums/custom_hud.dm b/code/datums/custom_hud.dm
index 28cdc3b45813..62ae36aa7b89 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 = COLOR_WHITE)
+/datum/custom_hud/proc/special_behaviour(datum/hud/element, ui_alpha = 255, ui_color = "#ffffff")
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 = COLOR_WHITE)
+/datum/custom_hud/dark/special_behaviour(datum/hud/element, ui_alpha = 255, ui_color = "#ffffff")
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/pizza.dm b/code/datums/emergency_calls/pizza.dm
index a35ce584c68d..d80ea7e21139 100644
--- a/code/datums/emergency_calls/pizza.dm
+++ b/code/datums/emergency_calls/pizza.dm
@@ -8,7 +8,7 @@
objectives = "Make sure you get a tip!"
shuttle_id = "Distress_Small"
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_pizza
- probability = 0
+ probability = 1
/datum/emergency_call/pizza/create_member(datum/mind/M, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()
diff --git a/code/datums/emergency_calls/upp.dm b/code/datums/emergency_calls/upp.dm
index d68171981355..036e6f9e8b77 100644
--- a/code/datums/emergency_calls/upp.dm
+++ b/code/datums/emergency_calls/upp.dm
@@ -99,18 +99,20 @@
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)
-/datum/emergency_call/upp/hostile
+/datum/emergency_call/upp/hostile //if admins want to specifically call in friendly ones
name = "UPP Naval Infantry (Squad) (Hostile)"
hostility = TRUE
+ probability = 0
/datum/emergency_call/upp/hostile/New()
..()
arrival_message = "[MAIN_SHIP_NAME] t*is i* UP* d^sp^*ch`. STr*&e teaM, #*u are cLe*% for a*pr*%^h. Pr*mE a*l wE*p^ns and pR*epr# t% r@nd$r a(tD."
objectives = "Eliminate the UA Forces to ensure the UPP presence in this sector is continued. Listen to your superior officers and take over the [MAIN_SHIP_NAME] at all costs."
-/datum/emergency_call/upp/friendly
+/datum/emergency_call/upp/friendly //ditto
name = "UPP Naval Infantry (Squad) (Friendly)"
hostility = FALSE
+ probability = 0
/datum/emergency_call/upp/friendly/New()
..()
diff --git a/code/datums/entities/clans.dm b/code/datums/entities/clans.dm
index de256ca0db6a..916afd18c178 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 = COLOR_WHITE
+ player_clan.color = "#FFFFFF"
player_clan.save()
diff --git a/code/datums/entities/player_times.dm b/code/datums/entities/player_times.dm
index 502170e4c32f..2bbd4a3bc39e 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 = COLOR_WHITE
+ var/textcolor = "#ffffff"
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" = COLOR_WHITE,
+ "textcolor" = "#FFFFFF",
"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" = COLOR_WHITE
+ "textcolor" = "#FFFFFF"
)
var/list/marine_playtime = list(
"job" = "Human",
"playtime" = round(owning_client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1),
"bgcolor" = "#3a3a3a",
- "textcolor" = COLOR_WHITE
+ "textcolor" = "#FFFFFF"
)
LAZYADD(xeno_playtimes, list(xeno_playtime))
diff --git a/code/datums/langchat/langchat.dm b/code/datums/langchat/langchat.dm
index d21ee79a08e9..b82b03b51774 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 = COLOR_WHITE
+/atom/var/langchat_color = "#FFFFFF"
/atom/var/langchat_styles = ""
/mob/living/carbon/xenomorph/langchat_color = "#b491c8"
diff --git a/code/datums/supply_packs/spec_ammo.dm b/code/datums/supply_packs/spec_ammo.dm
index e20a5de865a3..f0eb5ab9cea2 100644
--- a/code/datums/supply_packs/spec_ammo.dm
+++ b/code/datums/supply_packs/spec_ammo.dm
@@ -157,13 +157,11 @@
group = "Weapons Specialist Ammo"
/datum/supply_packs/ammo_scout_incendiary
- name = "M4RA Scout Incendiary Magazine Crate (x5)"
+ name = "M4RA Scout Incendiary Magazine Crate (x3)"
contains = list(
/obj/item/ammo_magazine/rifle/m4ra/custom/incendiary,
/obj/item/ammo_magazine/rifle/m4ra/custom/incendiary,
/obj/item/ammo_magazine/rifle/m4ra/custom/incendiary,
- /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary,
- /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary,
)
cost = 30
containertype = /obj/structure/closet/crate/ammo
@@ -171,13 +169,11 @@
group = "Weapons Specialist Ammo"
/datum/supply_packs/ammo_scout_impact
- name = "M4RA Scout Impact Magazine Crate (x5)"
+ name = "M4RA Scout Impact Magazine Crate (x3)"
contains = list(
/obj/item/ammo_magazine/rifle/m4ra/custom/impact,
/obj/item/ammo_magazine/rifle/m4ra/custom/impact,
/obj/item/ammo_magazine/rifle/m4ra/custom/impact,
- /obj/item/ammo_magazine/rifle/m4ra/custom/impact,
- /obj/item/ammo_magazine/rifle/m4ra/custom/impact,
)
cost = 30
containertype = /obj/structure/closet/crate/ammo
diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm
index 6dfe50542b00..192277a250cc 100644
--- a/code/game/gamemodes/colonialmarines/colonialmarines.dm
+++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm
@@ -372,10 +372,16 @@
var/living = headcount["total_headcount"]
if ((headcount["WY_headcount"] / living) > MAJORITY)
musical_track = pick('sound/theme/lastmanstanding_wy.ogg')
+ log_game("3rd party victory: Weyland-Yutani")
+ message_admins("3rd party victory: Weyland-Yutani")
else if ((headcount["UPP_headcount"] / living) > MAJORITY)
musical_track = pick('sound/theme/lastmanstanding_upp.ogg')
+ log_game("3rd party victory: Union of Progressive Peoples")
+ message_admins("3rd party victory: Union of Progressive Peoples")
else if ((headcount["CLF_headcount"] / living) > MAJORITY)
musical_track = pick('sound/theme/lastmanstanding_clf.ogg')
+ log_game("3rd party victory: Colonial Liberation Front")
+ message_admins("3rd party victory: Colonial Liberation Front")
else if ((headcount["marine_headcount"] / living) > MAJORITY)
musical_track = pick('sound/theme/neutral_melancholy2.ogg') //This is the theme song for Colonial Marines the game, fitting
else
diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm
index ce374b7bfb2a..53b8736f75f3 100644
--- a/code/game/machinery/fax_machine.dm
+++ b/code/game/machinery/fax_machine.dm
@@ -6,7 +6,10 @@ GLOBAL_LIST_EMPTY(alldepartments)
#define DEPARTMENT_CMB "CMB Incident Command Center, Local Operations"
#define DEPARTMENT_PROVOST "USCM Provost Office"
#define DEPARTMENT_PRESS "Various Press Organizations"
-#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS)
+#define DEPARTMENT_TWE "Three World Empire"
+#define DEPARTMENT_UPP "Union of Progress Peoples"
+#define DEPARTMENT_CLF "Colonial Liberation Front"
+#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS, DEPARTMENT_TWE, DEPARTMENT_UPP, DEPARTMENT_CLF)
/obj/structure/machinery/faxmachine // why not fax_machine?
name = "\improper General Purpose Fax Machine"
@@ -138,6 +141,13 @@ GLOBAL_LIST_EMPTY(alldepartments)
GLOB.alldepartments += DEPARTMENT_CMB
if(!(DEPARTMENT_PRESS in GLOB.alldepartments))
GLOB.alldepartments += DEPARTMENT_PRESS
+ if(!(DEPARTMENT_TWE in GLOB.alldepartments))
+ GLOB.alldepartments += DEPARTMENT_TWE
+ if(!(DEPARTMENT_UPP in GLOB.alldepartments))
+ GLOB.alldepartments += DEPARTMENT_UPP
+ if(!(DEPARTMENT_CLF in GLOB.alldepartments))
+ GLOB.alldepartments += DEPARTMENT_CLF
+
// TGUI SHIT \\
/obj/structure/machinery/faxmachine/tgui_interact(mob/user, datum/tgui/ui)
@@ -277,9 +287,12 @@ GLOBAL_LIST_EMPTY(alldepartments)
. = ..()
. += "-----FAX----- "
. += "Send USCM fax message "
- . += "Send CL fax message "
+ . += "Send CL fax message "
. += "Send CMB fax message "
. += "Send Press fax message "
+ . += "Send UPP fax message "
+ . += "Send CLF fax message "
+ . += "Send TWE fax message "
// converting whatever type the fax is into a single paper with all the information on it.
/obj/structure/machinery/faxmachine/proc/copy_fax_paper(mob/living/user)
@@ -339,13 +352,22 @@ GLOBAL_LIST_EMPTY(alldepartments)
GLOB.CMBFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
msg_admin += "(RPLY ): "
if(DEPARTMENT_WY)
- GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
- msg_admin += "(RPLY ): "
+ GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
+ msg_admin += "(RPLY ): "
if(DEPARTMENT_PRESS)
GLOB.PressFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
msg_admin += "(RPLY ): "
+ if(DEPARTMENT_TWE)
+ GLOB.TWEFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
+ msg_admin += "(RPLY ): "
+ if(DEPARTMENT_UPP)
+ GLOB.UPPFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
+ msg_admin += "(RPLY ): "
+ if(DEPARTMENT_CLF)
+ GLOB.CLFFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
+ msg_admin += "(RPLY ): "
else
- GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
+ GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY ")
msg_admin += "(RPLY ): "
msg_admin += SPAN_STAFF_IC("Receiving fax via secure connection ... view message ")
@@ -416,6 +438,30 @@ GLOBAL_LIST_EMPTY(alldepartments)
P.stamped += /obj/item/tool/stamp
P.overlays += stampoverlay
P.stamps += "
This paper has been stamped and encrypted by the Weyland-Yutani Quantum Relay (tm). "
+ if("TWE Royal Marines Commando Quantum Relay")
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-twe"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "This paper has been stamped by the TWE Royal Marines Commando Quantum Relay. "
+ if("UPP High Kommand Quantum Relay")
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-upp"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "This paper has been stamped by the UPP High Kommand Quantum Relay. "
+ if("CLF Gureilla Command Quantum Relay")
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-clf"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "This paper has been stamped and encrypted by the CLF Gureilla Command Quantum Relay. "
playsound(F.loc, "sound/items/polaroid1.ogg", 15, 1)
qdel(faxcontents)
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index d9aa42dbd1f1..96e1635bb0b8 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -1,742 +1,12 @@
-//##############################################
-//################### NEWSCASTERS BE HERE! ####
-//###-Agouri###################################
-
-/datum/feed_message
- var/author =""
- var/body =""
- var/message_type ="Story"
- //var/parent_channel
- var/backup_body =""
- var/backup_author =""
- var/is_admin_message = 0
- var/icon/img = null
- var/icon/backup_img
-
-/datum/feed_channel
- var/channel_name=""
- var/list/datum/feed_message/messages = list()
- //var/message_count = 0
- var/locked=0
- var/author=""
- var/backup_author=""
- var/censored=0
- var/is_admin_channel=0
- //var/page = null //For newspapers
-
-/datum/feed_message/proc/clear()
- src.author = ""
- src.body = ""
- src.backup_body = ""
- src.backup_author = ""
- src.img = null
- src.backup_img = null
-
-/datum/feed_channel/proc/clear()
- src.channel_name = ""
- src.messages = list()
- src.locked = 0
- src.author = ""
- src.backup_author = ""
- src.censored = 0
- src.is_admin_channel = 0
-
-/datum/feed_network
- var/list/datum/feed_channel/network_channels = list()
- var/datum/feed_message/wanted_issue
-
-GLOBAL_DATUM_INIT(news_network, /datum/feed_network, new()) //The global news-network, which is coincidentally a global list.
-
-GLOBAL_LIST_INIT_TYPED(allCasters, /obj/structure/machinery/newscaster, list()) //Global list that will contain reference to all newscasters in existence.
-
/obj/structure/machinery/newscaster
name = "newscaster"
desc = "A standard Weyland-Yutani-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!"
icon = 'icons/obj/structures/machinery/terminals.dmi'
icon_state = "newscaster_normal"
- var/isbroken = FALSE //1 if someone banged it with something heavy
- var/ispowered = TRUE //starts powered, changes with power_change()
- //var/list/datum/feed_channel/channel_list = list() //This list will contain the names of the feed channels. Each name will refer to a data region where the messages of the feed channels are stored.
- //OBSOLETE: We're now using a global news network
- var/screen = 0 //Or maybe I'll make it into a list within a list afterwards... whichever I prefer, go fuck yourselves :3
- // 0 = welcome screen - main menu
- // 1 = view feed channels
- // 2 = create feed channel
- // 3 = create feed story
- // 4 = feed story submited sucessfully
- // 5 = feed channel created successfully
- // 6 = ERROR: Cannot create feed story
- // 7 = ERROR: Cannot create feed channel
- // 8 = print newspaper
- // 9 = viewing channel feeds
- // 10 = censor feed story
- // 11 = censor feed channel
- //Holy shit this is outdated, made this when I was still starting newscasters :3
- var/paper_remaining = 0
- var/securityCaster = 0
- // 0 = Caster cannot be used to issue wanted posters
- // 1 = the opposite
- var/unit_no = 0 //Each newscaster has a unit number
- //var/datum/feed_message/wanted //We're gonna use a feed_message to store data of the wanted person because fields are similar
- //var/wanted_issue = 0 //OBSOLETE
- // 0 = there's no WANTED issued, we don't need a special icon_state
- // 1 = Guess what.
- var/alert_delay = 500
- var/alert = 0
- // 0 = there hasn't been a news/wanted update in the last alert_delay
- // 1 = there has
- var/scanned_user = "Unknown" //Will contain the name of the person who currently uses the newscaster
- var/msg = ""; //Feed message
- var/obj/item/photo/photo = null
- var/channel_name = ""; //the feed channel which will be receiving the feed, or being created
- var/c_locked=0; //Will our new channel be locked to public submissions?
- var/hitstaken = 0 //Death at 3 hits from an item with force>=15
- var/datum/feed_channel/viewing_channel = null
anchored = TRUE
-
-/obj/structure/machinery/newscaster/security_unit //Security unit
+/obj/structure/machinery/newscaster/security_unit
name = "Security Newscaster"
- securityCaster = 1
-
-/obj/structure/machinery/newscaster/security_unit/New() //Constructor, ho~
- GLOB.allCasters += src
- src.paper_remaining = 15 // Will probably change this to something better
- for(var/obj/structure/machinery/newscaster/NEWSCASTER in GLOB.allCasters) // Let's give it an appropriate unit number
- src.unit_no++
- src.update_icon() //for any custom ones on the map...
- ..() //I just realised the newscasters weren't in the global machines list. The superconstructor call will tend to that
-
-/obj/structure/machinery/newscaster/security_unit/Destroy()
- GLOB.allCasters -= src
- return ..()
-
-/obj/structure/machinery/newscaster/update_icon()
- if(!ispowered || isbroken)
- icon_state = "newscaster_off"
- if(isbroken) //If the thing is smashed, add crack overlay on top of the unpowered sprite.
- src.overlays.Cut()
- src.overlays += image(src.icon, "crack3")
- return
-
- src.overlays.Cut() //reset overlays
-
- if(GLOB.news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message
- icon_state = "newscaster_wanted"
- return
-
- if(alert) //new message alert overlay
- src.overlays += "newscaster_alert"
-
- if(hitstaken > 0) //Cosmetic damage overlay
- src.overlays += image(src.icon, "crack[hitstaken]")
-
- icon_state = "newscaster_normal"
- return
-
-/obj/structure/machinery/newscaster/power_change()
- if(isbroken) //Broken shit can't be powered.
- return
- ..()
- if( !(stat & NOPOWER) )
- src.ispowered = TRUE
- src.update_icon()
- else
- spawn(rand(0, 15))
- src.ispowered = FALSE
- src.update_icon()
-
-
-/obj/structure/machinery/newscaster/ex_act(severity)
- switch(severity)
- if(0 to EXPLOSION_THRESHOLD_LOW)
- if(prob(50))
- src.isbroken=1
- src.update_icon()
- return
- if(EXPLOSION_THRESHOLD_LOW to EXPLOSION_THRESHOLD_MEDIUM)
- src.isbroken=1
- if(prob(50))
- deconstruct(FALSE)
- else
- src.update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in.
- return
- if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY)
- deconstruct(FALSE)
- return
- return
-
-/obj/structure/machinery/newscaster/attack_remote(mob/user as mob)
- return src.attack_hand(user)
-
-/obj/structure/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############
- if(!src.ispowered || src.isbroken)
- return
- if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) )
- var/mob/living/human_or_robot_user = user
- var/dat
- dat = text("Newscaster Newscaster Unit #[src.unit_no] ")
-
- src.scan_user(human_or_robot_user) //Newscaster scans you
-
- switch(screen)
- if(0)
- dat += "Welcome to Newscasting Unit #[src.unit_no]. Interface & News networks Operational."
- dat += "Property of Weyland-Yutani "
- if(GLOB.news_network.wanted_issue)
- dat+= "Read Wanted Issue "
- dat+= "Create Feed Channel "
- dat+= "View Feed Channels "
- dat+= "Submit new Feed story "
- dat+= "Print newspaper "
- dat+= "Re-scan User "
- dat+= "Exit "
- if(src.securityCaster)
- var/wanted_already = 0
- if(GLOB.news_network.wanted_issue)
- wanted_already = 1
-
- dat+="Feed Security functions: "
- dat+="[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue "
- dat+="Censor Feed Stories "
- dat+="Mark Feed Channel with Weyland-Yutani D-Notice "
- dat+=" The newscaster recognises you as: [src.scanned_user] "
- if(1)
- dat+= "Station Feed Channels "
- if(!length(GLOB.news_network.network_channels) )
- dat+="No active channels found... "
- else
- for(var/datum/feed_channel/CHANNEL in GLOB.news_network.network_channels)
- if(CHANNEL.is_admin_channel)
- dat+="[CHANNEL.channel_name] "
- else
- dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("*** ") : null] "
- /*for(var/datum/feed_channel/CHANNEL in src.channel_list)
- dat+="[CHANNEL.channel_name]: \[created by: [CHANNEL.author] \] "
- if(!length(CHANNEL.messages) )
- dat+="No feed messages found in channel... "
- else
- for(var/datum/feed_message/MESSAGE in CHANNEL.messages)
- dat+="-[MESSAGE.body] \[[MESSAGE.message_type] by [MESSAGE.author] \] "*/
-
- dat+="Refresh "
- dat+="Back "
- if(2)
- dat+="Creating new Feed Channel..."
- dat+="Channel Name : [src.channel_name] "
- dat+="Channel Author: [src.scanned_user] "
- dat+="Will Accept Public Feeds : [(src.c_locked) ? ("NO") : ("YES")] "
- dat+="Submit Cancel "
- if(3)
- dat+="Creating new Feed Message..."
- dat+="Receiving Channel : [src.channel_name] " //MARK
- dat+="Message Author: [src.scanned_user] "
- dat+="Message Body : [src.msg] "
- dat+="Attach Photo : [(src.photo ? "Photo Attached" : "No Photo")]"
- dat+="Submit Cancel "
- if(4)
- dat+="Feed story successfully submitted to [src.channel_name]. "
- dat+="Return "
- if(5)
- dat+="Feed Channel [src.channel_name] created successfully. "
- dat+="Return "
- if(6)
- dat+="ERROR: Could not submit Feed story to Network. "
- if(src.channel_name=="")
- dat+="�Invalid receiving channel name. "
- if(src.scanned_user=="Unknown")
- dat+="�Channel author unverified. "
- if(src.msg == "" || src.msg == "\[REDACTED\]")
- dat+="�Invalid message body. "
-
- dat+="Return "
- if(7)
- dat+="ERROR: Could not submit Feed Channel to Network. "
- //var/list/existing_channels = list() //Let's get dem existing channels - OBSOLETE
- var/list/existing_authors = list()
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- //existing_channels += FC.channel_name //OBSOLETE
- if(FC.author == "\[REDACTED\]")
- existing_authors += FC.backup_author
- else
- existing_authors += FC.author
- if(src.scanned_user in existing_authors)
- dat+="�There already exists a Feed channel under your name. "
- if(src.channel_name=="" || src.channel_name == "\[REDACTED\]")
- dat+="�Invalid channel name. "
- var/check = 0
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- if(FC.channel_name == src.channel_name)
- check = 1
- break
- if(check)
- dat+="�Channel name already in use. "
- if(src.scanned_user=="Unknown")
- dat+="�Channel author unverified. "
- dat+="Return "
- if(8)
- var/total_num=length(GLOB.news_network.network_channels)
- var/active_num=total_num
- var/message_num=0
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- if(!FC.censored)
- message_num += length(FC.messages) //Dont forget, datum/feed_channel's var messages is a list of datum/feed_message
- else
- active_num--
- dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." //TODO: CONTINUE
- dat+="Liquid Paper remaining: [(src.paper_remaining) *100 ] cm^3"
- dat+="Print Paper "
- dat+="Cancel "
- if(9)
- dat+="[src.viewing_channel.channel_name]: \[created by: [src.viewing_channel.author] \] "
- if(src.viewing_channel.censored)
- dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Weyland-Yutani D-Notice. "
- dat+="No further feed story additions are allowed while the D-Notice is in effect. "
- else
- if(!length(src.viewing_channel.messages) )
- dat+="No feed messages found in channel... "
- else
- var/i = 0
- for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
- i++
- dat+="-[MESSAGE.body] "
- if(MESSAGE.img)
- usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
- dat+=" "
- dat+="\[[MESSAGE.message_type] by [MESSAGE.author] \] "
- dat+="Refresh "
- dat+="Back "
- if(10)
- dat+="Weyland-Yutani Feed Censorship Tool "
- dat+="NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible. "
- dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it. "
- dat+=" Select Feed channel to get Stories from: "
- if(!length(GLOB.news_network.network_channels))
- dat+="No feed channels found active... "
- else
- for(var/datum/feed_channel/CHANNEL in GLOB.news_network.network_channels)
- dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("*** ") : null] "
- dat+="Cancel "
- if(11)
- dat+="Weyland-Yutani D-Notice Handler "
- dat+="A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
- dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed"
- dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time. "
- if(!length(GLOB.news_network.network_channels))
- dat+="No feed channels found active... "
- else
- for(var/datum/feed_channel/CHANNEL in GLOB.news_network.network_channels)
- dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("*** ") : null] "
-
- dat+="Back "
- if(12)
- dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \] "
- dat+="[(src.viewing_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")] "
-
-
- if(!length(src.viewing_channel.messages) )
- dat+="No feed messages found in channel... "
- else
- for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
- dat+="-[MESSAGE.body] \[[MESSAGE.message_type] by [MESSAGE.author] \] "
- dat+="[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")] "
- dat+="Back "
- if(13)
- dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \] "
- dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel . "
- if(src.viewing_channel.censored)
- dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Weyland-Yutani D-Notice. "
- dat+="No further feed story additions are allowed while the D-Notice is in effect. "
- else
- if(!length(src.viewing_channel.messages) )
- dat+="No feed messages found in channel... "
- else
- for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
- dat+="-[MESSAGE.body] \[[MESSAGE.message_type] by [MESSAGE.author] \] "
-
- dat+="Back "
- if(14)
- dat+="Wanted Issue Handler: "
- var/wanted_already = 0
- var/end_param = 1
- if(GLOB.news_network.wanted_issue)
- wanted_already = 1
- end_param = 2
-
- if(wanted_already)
- dat+="A wanted issue is already in Feed Circulation. You can edit or cancel it below. "
- dat+=" "
- dat+="Criminal Name : [src.channel_name] "
- dat+="Description : [src.msg] "
- dat+="Attach Photo : [(src.photo ? "Photo Attached" : "No Photo")]"
- if(wanted_already)
- dat+="Wanted Issue created by: [GLOB.news_network.wanted_issue.backup_author] "
- else
- dat+="Wanted Issue will be created under prosecutor: [src.scanned_user] "
- dat+="[(wanted_already) ? ("Edit Issue") : ("Submit")] "
- if(wanted_already)
- dat+="Take down Issue "
- dat+="Cancel "
- if(15)
- dat+="Wanted issue for [src.channel_name] is now in Network Circulation. "
- dat+="Return "
- if(16)
- dat+="ERROR: Wanted Issue rejected by Network. "
- if(src.channel_name=="" || src.channel_name == "\[REDACTED\]")
- dat+="�Invalid name for person wanted. "
- if(src.scanned_user=="Unknown")
- dat+="�Issue author unverified. "
- if(src.msg == "" || src.msg == "\[REDACTED\]")
- dat+="�Invalid description. "
- dat+="Return "
- if(17)
- dat+="Wanted Issue successfully deleted from Circulation "
- dat+="Return "
- if(18)
- dat+="-- STATIONWIDE WANTED ISSUE -- \[Submitted by: [GLOB.news_network.wanted_issue.backup_author] \] "
- dat+="Criminal : [GLOB.news_network.wanted_issue.author] "
- dat+="Description : [GLOB.news_network.wanted_issue.body] "
- dat+="Photo: : "
- if(GLOB.news_network.wanted_issue.img)
- usr << browse_rsc(GLOB.news_network.wanted_issue.img, "tmp_photow.png")
- dat+=" "
- else
- dat+="None"
- dat+="Back "
- if(19)
- dat+="Wanted issue for [src.channel_name] successfully edited. "
- dat+="Return "
- if(20)
- dat+="Printing successful. Please receive your newspaper from the bottom of the machine. "
- dat+="Return "
- if(21)
- dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage. "
- dat+="Return "
- else
- dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
-
-
- human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600")
- onclose(human_or_robot_user, "newscaster_main")
-
- /*if(src.isbroken) //debugging shit
- return
- src.hitstaken++
- if(src.hitstaken==3)
- src.isbroken = TRUE
- src.update_icon()*/
-
-
-/obj/structure/machinery/newscaster/Topic(href, href_list)
- if(..())
- return
- if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (isRemoteControlling(usr)))
- usr.set_interaction(src)
- if(href_list["set_channel_name"])
- src.channel_name = strip_html(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""))
- while (findtext(src.channel_name," ") == 1)
- src.channel_name = copytext(src.channel_name,2,length(src.channel_name)+1)
- src.updateUsrDialog()
- //src.update_icon()
-
- else if(href_list["set_channel_lock"])
- src.c_locked = !src.c_locked
- src.updateUsrDialog()
- //src.update_icon()
-
- else if(href_list["submit_new_channel"])
- //var/list/existing_channels = list() //OBSOLETE
- var/list/existing_authors = list()
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- //existing_channels += FC.channel_name
- if(FC.author == "\[REDACTED\]")
- existing_authors += FC.backup_author
- else
- existing_authors +=FC.author
- var/check = 0
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- if(FC.channel_name == src.channel_name)
- check = 1
- break
- if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) )
- src.screen=7
- else
- var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel")
- if(choice=="Confirm")
- var/datum/feed_channel/newChannel = new /datum/feed_channel
- newChannel.channel_name = src.channel_name
- newChannel.author = src.scanned_user
- newChannel.locked = c_locked
- GLOB.news_network.network_channels += newChannel //Adding channel to the global network
- src.screen=5
- src.updateUsrDialog()
- //src.update_icon()
-
- else if(href_list["set_channel_receiving"])
- //var/list/datum/feed_channel/available_channels = list()
- var/list/available_channels = list()
- for(var/datum/feed_channel/F in GLOB.news_network.network_channels)
- if( (!F.locked || F.author == scanned_user) && !F.censored)
- available_channels += F.channel_name
- src.channel_name = strip_html(tgui_input_list(usr, "Choose receiving Feed Channel", "Network Channel Handler", available_channels ))
- src.updateUsrDialog()
-
- else if(href_list["set_new_message"])
- src.msg = strip_html(input(usr, "Write your Feed story", "Network Channel Handler", ""))
- while (findtext(src.msg," ") == 1)
- src.msg = copytext(src.msg,2,length(src.msg)+1)
- src.updateUsrDialog()
-
- else if(href_list["set_attachment"])
- AttachPhoto(usr)
- src.updateUsrDialog()
-
- else if(href_list["submit_new_message"])
- if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" )
- src.screen=6
- else
- var/datum/feed_message/newMsg = new /datum/feed_message
- newMsg.author = src.scanned_user
- newMsg.body = src.msg
- if(photo)
- newMsg.img = photo.img
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- if(FC.channel_name == src.channel_name)
- FC.messages += newMsg //Adding message to the network's appropriate feed_channel
- break
- src.screen=4
- for(var/obj/structure/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
- NEWSCASTER.newsAlert(src.channel_name)
-
- src.updateUsrDialog()
-
- else if(href_list["create_channel"])
- src.screen=2
- src.updateUsrDialog()
-
- else if(href_list["create_feed_story"])
- src.screen=3
- src.updateUsrDialog()
-
- else if(href_list["menu_paper"])
- src.screen=8
- src.updateUsrDialog()
- else if(href_list["print_paper"])
- if(!src.paper_remaining)
- src.screen=21
- else
- src.print_paper()
- src.screen = 20
- src.updateUsrDialog()
-
- else if(href_list["menu_censor_story"])
- src.screen=10
- src.updateUsrDialog()
-
- else if(href_list["menu_censor_channel"])
- src.screen=11
- src.updateUsrDialog()
-
- else if(href_list["menu_wanted"])
- var/already_wanted = 0
- if(GLOB.news_network.wanted_issue)
- already_wanted = 1
-
- if(already_wanted)
- src.channel_name = GLOB.news_network.wanted_issue.author
- src.msg = GLOB.news_network.wanted_issue.body
- src.screen = 14
- src.updateUsrDialog()
-
- else if(href_list["set_wanted_name"])
- src.channel_name = strip_html(input(usr, "Provide the name of the Wanted person", "Network Security Handler", ""))
- while (findtext(src.channel_name," ") == 1)
- src.channel_name = copytext(src.channel_name,2,length(src.channel_name)+1)
- src.updateUsrDialog()
-
- else if(href_list["set_wanted_desc"])
- src.msg = strip_html(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", ""))
- while (findtext(src.msg," ") == 1)
- src.msg = copytext(src.msg,2,length(src.msg)+1)
- src.updateUsrDialog()
-
- else if(href_list["submit_wanted"])
- var/input_param = text2num(href_list["submit_wanted"])
- if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown")
- src.screen = 16
- else
- var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel")
- if(choice=="Confirm")
- if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below
- var/datum/feed_message/WANTED = new /datum/feed_message
- WANTED.author = src.channel_name
- WANTED.body = src.msg
- WANTED.backup_author = src.scanned_user //I know, a bit wacky
- if(photo)
- WANTED.img = photo.img
- GLOB.news_network.wanted_issue = WANTED
- for(var/obj/structure/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
- NEWSCASTER.newsAlert()
- NEWSCASTER.update_icon()
- src.screen = 15
- else
- if(GLOB.news_network.wanted_issue.is_admin_message)
- alert("The wanted issue has been distributed by a Weyland-Yutani higherup. You cannot edit it.","Ok")
- return
- GLOB.news_network.wanted_issue.author = src.channel_name
- GLOB.news_network.wanted_issue.body = src.msg
- GLOB.news_network.wanted_issue.backup_author = src.scanned_user
- if(photo)
- GLOB.news_network.wanted_issue.img = photo.img
- src.screen = 19
-
- src.updateUsrDialog()
-
- else if(href_list["cancel_wanted"])
- if(GLOB.news_network.wanted_issue.is_admin_message)
- alert("The wanted issue has been distributed by a Weyland-Yutani higherup. You cannot take it down.","Ok")
- return
- var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel")
- if(choice=="Confirm")
- GLOB.news_network.wanted_issue = null
- for(var/obj/structure/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
- NEWSCASTER.update_icon()
- src.screen=17
- src.updateUsrDialog()
-
- else if(href_list["view_wanted"])
- src.screen=18
- src.updateUsrDialog()
- else if(href_list["censor_channel_author"])
- var/datum/feed_channel/FC = locate(href_list["censor_channel_author"])
- if(FC.is_admin_channel)
- alert("This channel was created by a Weyland-Yutani Officer. You cannot censor it.","Ok")
- return
- if(FC.author != "\[REDACTED\] ")
- FC.backup_author = FC.author
- FC.author = "\[REDACTED\] "
- else
- FC.author = FC.backup_author
- src.updateUsrDialog()
-
- else if(href_list["censor_channel_story_author"])
- var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"])
- if(MSG.is_admin_message)
- alert("This message was created by a Weyland-Yutani Officer. You cannot censor its author.","Ok")
- return
- if(MSG.author != "\[REDACTED\] ")
- MSG.backup_author = MSG.author
- MSG.author = "\[REDACTED\] "
- else
- MSG.author = MSG.backup_author
- src.updateUsrDialog()
-
- else if(href_list["censor_channel_story_body"])
- var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"])
- if(MSG.is_admin_message)
- alert("This channel was created by a Weyland-Yutani Officer. You cannot censor it.","Ok")
- return
- if(MSG.img != null)
- MSG.backup_img = MSG.img
- MSG.img = null
- else
- MSG.img = MSG.backup_img
- if(MSG.body != "\[REDACTED\] ")
- MSG.backup_body = MSG.body
- MSG.body = "\[REDACTED\] "
- else
- MSG.body = MSG.backup_body
- src.updateUsrDialog()
-
- else if(href_list["pick_d_notice"])
- var/datum/feed_channel/FC = locate(href_list["pick_d_notice"])
- src.viewing_channel = FC
- src.screen=13
- src.updateUsrDialog()
-
- else if(href_list["toggle_d_notice"])
- var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"])
- if(FC.is_admin_channel)
- alert("This channel was created by a Weyland-Yutani Officer. You cannot place a D-Notice upon it.","Ok")
- return
- FC.censored = !FC.censored
- src.updateUsrDialog()
-
- else if(href_list["view"])
- src.screen=1
- src.updateUsrDialog()
-
- else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~
- src.screen = text2num(href_list["setScreen"])
- if (src.screen == 0)
- src.scanned_user = "Unknown";
- msg = "";
- src.c_locked=0;
- channel_name="";
- src.viewing_channel = null
- src.updateUsrDialog()
-
- else if(href_list["show_channel"])
- var/datum/feed_channel/FC = locate(href_list["show_channel"])
- src.viewing_channel = FC
- src.screen = 9
- src.updateUsrDialog()
-
- else if(href_list["pick_censor_channel"])
- var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"])
- src.viewing_channel = FC
- src.screen = 12
- src.updateUsrDialog()
-
- else if(href_list["refresh"])
- src.updateUsrDialog()
-
-
-/obj/structure/machinery/newscaster/attackby(obj/item/I as obj, mob/user as mob)
-
- if (src.isbroken)
- playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 25, 1)
- for (var/mob/O in hearers(5, src.loc))
- O.show_message("[user.name] further abuses the shattered [src.name].", SHOW_MESSAGE_VISIBLE)
- else
- if(!(I.flags_item & NOBLUDGEON) && I.force)
- if(I.force <15)
- for (var/mob/O in hearers(5, src.loc))
- O.show_message("[user.name] hits the [src.name] with the [I.name] with no visible effect.", SHOW_MESSAGE_VISIBLE)
- playsound(src.loc, 'sound/effects/Glasshit.ogg', 25, 1)
- else
- src.hitstaken++
- if(src.hitstaken==3)
- for (var/mob/O in hearers(5, src.loc))
- O.show_message("[user.name] smashes the [src.name]!", SHOW_MESSAGE_VISIBLE)
- src.isbroken=1
- playsound(src.loc, 'sound/effects/Glassbr3.ogg', 50, 1)
- else
- for (var/mob/O in hearers(5, src.loc))
- O.show_message("[user.name] forcefully slams the [src.name] with the [I.name]!", SHOW_MESSAGE_VISIBLE)
- playsound(src.loc, 'sound/effects/Glasshit.ogg', 25, 1)
- else
- to_chat(user, "This does nothing. ")
- src.update_icon()
-
-/obj/structure/machinery/newscaster/attack_remote(mob/user as mob)
- return src.attack_hand(user) //or maybe it'll have some special functions? No idea.
-
-/obj/structure/machinery/newscaster/proc/AttachPhoto(mob/user as mob)
- if(photo)
- if(!isRemoteControlling(user))
- photo.forceMove(loc)
- user.put_in_inactive_hand(photo)
- photo = null
- var/obj/item/photo/PH = user.get_active_hand()
- if(istype(PH))
- if(user.drop_inv_item_to_loc(photo, src))
- photo = PH
-
-
-//########################################################################################################################
-//###################################### NEWSPAPER! ######################################################################
-//########################################################################################################################
/obj/item/newspaper
name = "newspaper"
@@ -745,191 +15,3 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/structure/machinery/newscaster, list())
icon_state = "newspaper"
w_class = SIZE_TINY //Let's make it fit in trashbags!
attack_verb = list("bapped")
- var/screen = 0
- var/pages = 0
- var/curr_page = 0
- var/list/datum/feed_channel/news_content = list()
- var/datum/feed_message/important_message = null
- var/scribble=""
- var/scribble_page = null
-
-/obj/item/newspaper/attack_self(mob/user as mob)
- ..()
- if(!ishuman(user))
- to_chat(user, "The paper is full of intelligible symbols!")
- return
-
- var/mob/living/carbon/human/human_user = user
- var/dat
- src.pages = 0
- switch(screen)
- if(0) //Cover
- dat+="The Griffon
"
- dat+="Weyland-Yutani-standard newspaper, for use on Weyland-Yutani� Space Facilities
"
- if(!length(src.news_content))
- if(src.important_message)
- dat+="Contents:** Important Security Announcement** \[page [src.pages+2]\] "
- else
- dat+="Other than the title, the rest of the newspaper is unprinted... "
- else
- dat+="Contents:"
- for(var/datum/feed_channel/NP in src.news_content)
- src.pages++
- if(src.important_message)
- dat+="** Important Security Announcement** \[page [src.pages+2]\] "
- var/temp_page=0
- for(var/datum/feed_channel/NP in src.news_content)
- temp_page++
- dat+="[NP.channel_name] \[page [temp_page+1]\] "
- dat+=" "
- if(scribble_page==curr_page)
- dat+="There is a small scribble near the end of this page... It reads: \"[src.scribble]\" "
- dat+= " "
- if(1) // X channel pages inbetween.
- for(var/datum/feed_channel/NP in src.news_content)
- src.pages++ //Let's get it right again.
- var/datum/feed_channel/C = src.news_content[src.curr_page]
- dat+="[C.channel_name] \[created by: [C.author] \] "
- if(C.censored)
- dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice . Its contents were not transferred to the newspaper at the time of printing."
- else
- if(!length(C.messages))
- dat+="No Feed stories stem from this channel..."
- else
- dat+=""
- var/i = 0
- for(var/datum/feed_message/MESSAGE in C.messages)
- i++
- dat+="-[MESSAGE.body] "
- if(MESSAGE.img)
- user << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
- dat+=" "
- dat+="\[[MESSAGE.message_type] by [MESSAGE.author] \] "
- dat+=" "
- if(scribble_page==curr_page)
- dat+="There is a small scribble near the end of this page... It reads: \"[src.scribble]\" "
- dat+= " "
- if(2) //Last page
- for(var/datum/feed_channel/NP in src.news_content)
- src.pages++
- if(src.important_message!=null)
- dat+="Wanted Issue:
"
- dat+="Criminal name : [important_message.author] "
- dat+="Description : [important_message.body] "
- dat+="Photo: : "
- if(important_message.img)
- user << browse_rsc(important_message.img, "tmp_photow.png")
- dat+=" "
- else
- dat+="None"
- else
- dat+="Apart from some uninteresting Classified ads, there's nothing on this page... "
- if(scribble_page==curr_page)
- dat+="There is a small scribble near the end of this page... It reads: \"[src.scribble]\" "
- dat+= " "
- else
- dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
-
- dat+="[src.curr_page+1]
"
- human_user << browse(dat, "window=newspaper_main;size=300x400")
- onclose(human_user, "newspaper_main")
-
-
-/obj/item/newspaper/Topic(href, href_list)
- var/mob/living/U = usr
- ..()
- if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ))
- U.set_interaction(src)
- if(href_list["next_page"])
- if(curr_page==src.pages+1)
- return //Don't need that at all, but anyway.
- if(src.curr_page == src.pages) //We're at the middle, get to the end
- src.screen = 2
- else
- if(curr_page == 0) //We're at the start, get to the middle
- src.screen=1
- src.curr_page++
- playsound(src.loc, "pageturn", 15, 1)
-
- else if(href_list["prev_page"])
- if(curr_page == 0)
- return
- if(curr_page == 1)
- src.screen = 0
-
- else
- if(curr_page == src.pages+1) //we're at the end, let's go back to the middle.
- src.screen = 1
- src.curr_page--
- playsound(src.loc, "pageturn", 15, 1)
-
- if (istype(src.loc, /mob))
- src.attack_self(src.loc)
-
-
-/obj/item/newspaper/attackby(obj/item/W as obj, mob/user as mob)
- if(HAS_TRAIT(W, TRAIT_TOOL_PEN))
- if(src.scribble_page == src.curr_page)
- to_chat(user, "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you? ")
- else
- var/s = strip_html( input(user, "Write something", "Newspaper", "") )
- s = strip_html(s)
- if (!s)
- return
- if (!in_range(src, usr) && src.loc != usr)
- return
- src.scribble_page = src.curr_page
- src.scribble = s
- src.attack_self(user)
- return
-
-
-////////////////////////////////////helper procs
-
-
-/obj/structure/machinery/newscaster/proc/scan_user(mob/living/user as mob)
- if(istype(user,/mob/living/carbon/human)) //User is a human
- var/mob/living/carbon/human/human_user = user
- if(human_user.wear_id) //Newscaster scans you
- if(istype(human_user.wear_id, /obj/item/card/id) )
- var/obj/item/card/id/ID = human_user.wear_id
- src.scanned_user ="[ID.registered_name] ([ID.assignment])"
- else
- src.scanned_user ="Unknown"
- else
- src.scanned_user ="Unknown"
- else
- var/mob/living/silicon/ai_user = user
- src.scanned_user = "[ai_user.name] ([ai_user.job])"
-
-
-/obj/structure/machinery/newscaster/proc/print_paper()
- var/obj/item/newspaper/NEWSPAPER = new /obj/item/newspaper
- for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
- NEWSPAPER.news_content += FC
- if(GLOB.news_network.wanted_issue)
- NEWSPAPER.important_message = GLOB.news_network.wanted_issue
- NEWSPAPER.forceMove(get_turf(src))
- src.paper_remaining--
- return
-
-//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later.
-///obj/structure/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not
-// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list.
-
-/obj/structure/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile.
- var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ
- if(channel)
- for(var/mob/O in hearers(GLOB.world_view_size-1, T))
- O.show_message(SPAN_NEWSCASTER("[src.name] beeps, \"Breaking news from [channel]!\""), SHOW_MESSAGE_AUDIBLE)
- src.alert = 1
- src.update_icon()
- spawn(30 SECONDS)
- src.alert = 0
- src.update_icon()
- playsound(src.loc, 'sound/machines/twobeep.ogg', 25, 1)
- else
- for(var/mob/O in hearers(GLOB.world_view_size-1, T))
- O.show_message(SPAN_NEWSCASTER("[src.name] beeps, \"Attention! Wanted issue distributed!\""), SHOW_MESSAGE_AUDIBLE)
- playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 25, 1)
- return
diff --git a/code/game/machinery/vending/vendor_types/crew/medical.dm b/code/game/machinery/vending/vendor_types/crew/medical.dm
index 29838f3b57d0..af519a908ee6 100644
--- a/code/game/machinery/vending/vendor_types/crew/medical.dm
+++ b/code/game/machinery/vending/vendor_types/crew/medical.dm
@@ -43,6 +43,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_doctor, list(
list("UNIFORM (CHOOSE 1)", 0, null, null, null),
list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED),
list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
+ list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("SUIT (CHOOSE 1)", 0, null, null, null),
@@ -106,7 +107,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_nurse, list(
list("Prescription Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health/prescription, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY),
list("UNIFORM (CHOOSE 1)", 0, null, null, null),
- list("Medical Nurse Scrubs", 0, /obj/item/clothing/under/rank/medical/nurse, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY),
+ list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY),
list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED),
list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
@@ -178,6 +179,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list(
list("Researcher Uniform", 0, /obj/item/clothing/under/marine/officer/researcher, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY),
list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED),
list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
+ list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("SUIT (CHOOSE 1)", 0, null, null, null),
diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm
index 96e7bf058924..bec77560430e 100644
--- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm
+++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm
@@ -228,6 +228,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list(
list("Doctor Uniform", 0, /obj/item/clothing/under/rank/medical, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("Green Scrubs", 0, /obj/item/clothing/under/rank/medical/green, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/blue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
+ list("Light Blue Scrubs", 0, /obj/item/clothing/under/rank/medical/lightblue, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("Purple Scrubs", 0, /obj/item/clothing/under/rank/medical/purple, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR),
list("SUIT (CHOOSE 1)", 0, null, null, null),
diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm
index 2395d572bad7..c3fa77be3798 100644
--- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm
+++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm
@@ -183,6 +183,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list(
GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list(
list("USCM UNIFORMS", 0, null, null, null),
list("Medical Scrubs, Blue", 12, /obj/item/clothing/under/rank/medical/blue, null, VENDOR_ITEM_REGULAR),
+ list("Medical Scrubs, Light Blue", 0, /obj/item/clothing/under/rank/medical/lightblue, null, VENDOR_ITEM_REGULAR),
list("Medical Scrubs, Green", 12, /obj/item/clothing/under/rank/medical/green, null, VENDOR_ITEM_REGULAR),
list("Medical Scrubs, Purple", 12, /obj/item/clothing/under/rank/medical/purple, null, VENDOR_ITEM_REGULAR),
list("Medical Scrubs, White", 12, /obj/item/clothing/under/rank/medical, null, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm
index 6d015c203bd7..4053b9294c13 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm
@@ -36,13 +36,19 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list(
list("M20 Mine Box (x4 mines)", 18, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR),
- list("AMMUNITION", 0, null, null, null),
+ list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
list("M39 AP Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR),
list("M39 Extended Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR),
list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR),
list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR),
+ list("SIDEARM AMMUNITION", 0, null, null, null),
+ list("M44 Heavy Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 HP Magazine", 3, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 AP Magazine", 3, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
+ list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
+
list("ARMORS", 0, null, null, null),
list("M3 B12 Pattern Marine Armor", 24, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR),
list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm
index 6c7cbf2db740..845d169a701a 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm
@@ -79,12 +79,20 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list(
list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR),
list("Roller Bed", 2, /obj/item/roller, null, VENDOR_ITEM_REGULAR),
- list("SPECIAL AMMUNITION", 0, null, null, null),
+ list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
list("M39 AP Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR),
list("M39 Extended Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR),
list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR),
list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR),
+
+ list("SIDEARM AMMUNITION", 0, null, null, null),
+ list("M44 Heavy Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 HP Magazine", 3, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 AP Magazine", 3, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
+ list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
+
+ list("SPECIAL AMMUNITION", 0, null, null, null),
list("M240 Incinerator Tank (Napthal)", 3, /obj/item/ammo_magazine/flamer_tank, null, VENDOR_ITEM_REGULAR),
list("M240 Incinerator Tank (B-Gel)", 3, /obj/item/ammo_magazine/flamer_tank/gellied, null, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm
index 6b4954ee5e92..7d16d15af6fd 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm
@@ -58,13 +58,19 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list(
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
- list("AMMUNITION", 0, null, null, null),
+ list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
list("M39 AP Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR),
list("M39 Extended Magazine (10x20mm)", 6, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR),
list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR),
list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR),
+ list("SIDEARM AMMUNITION", 0, null, null, null),
+ list("M44 Heavy Speed Loader (.44)", 6, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 HP Magazine", 3, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 AP Magazine", 3, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
+ list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
+
list("ARMORS", 0, null, null, null),
list("M3 B12 Pattern Marine Armor", 28, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR),
list("M4 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
index 27c041312765..2736de3a981d 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm
@@ -130,6 +130,7 @@
list("Technician Backpack", round(scale * 15), /obj/item/storage/backpack/marine/tech, VENDOR_ITEM_REGULAR),
list("Medical Backpack", round(scale * 15), /obj/item/storage/backpack/marine/medic, VENDOR_ITEM_REGULAR),
list("USCM Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR),
+ list("USCM Chestrig", round(scale * 15), /obj/item/storage/backpack/marine/satchel/chestrig, VENDOR_ITEM_REGULAR),
list("USCM Technical Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel/tech, VENDOR_ITEM_REGULAR),
list("USCM Technical Chestrig", round(scale * 15), /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, VENDOR_ITEM_REGULAR),
list("Medical Satchel", round(scale * 15), /obj/item/storage/backpack/marine/satchel/medic, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm
index 15661cc4b661..b132d8d4f13d 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm
@@ -67,13 +67,18 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list(
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 15, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
- list("AMMUNITION", 0, null, null, null),
+ list("PRIMARY AMMUNITION", 0, null, null, null),
list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR),
list("M39 Extended Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR),
list("M41A AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR),
list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR),
+
+ list("SIDEARM AMMUNITION", 0, null, null, null),
list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
+ list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
list("ARMORS", 0, null, null, null),
list("M3 B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm
index 04061370168d..c022f87abc6d 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm
@@ -20,6 +20,12 @@ GLOBAL_LIST_INIT(cm_vending_gear_smartgun, list(
list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR),
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
+ list("SIDEARM AMMUNITION", 0, null, null, null),
+ list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
+ list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
+
list("CLOTHING ITEMS", 0, null, null, null),
list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR),
list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR),
diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm
index d9ba7ee97c26..a013ddb15212 100644
--- a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm
+++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm
@@ -1,17 +1,6 @@
//------------GEAR VENDOR---------------
GLOBAL_LIST_INIT(cm_vending_gear_tl, list(
-
- list("AMMUNITION", 0, null, null, null),
- list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
- list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR),
- list("M39 Extended Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR),
- list("M41A AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR),
- list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR),
- list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
- list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
- list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
-
list("EXPLOSIVES", 0, null, null, null),
list("M40 HEDP High Explosive Packet (x3 grenades)", 18, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR),
list("M40 HIDP Incendiary Packet (x3 grenades)", 18, /obj/item/storage/box/packet/incendiary, null, VENDOR_ITEM_REGULAR),
@@ -24,6 +13,19 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list(
list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR),
list("M40 MFHS Metal Foam Grenade", 5, /obj/item/explosive/grenade/metal_foam, null, VENDOR_ITEM_REGULAR),
+ list("PRIMARY AMMUNITION", 0, null, null, null),
+ list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR),
+ list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR),
+ list("M39 Extended Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/extended , null, VENDOR_ITEM_REGULAR),
+ list("M41A AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR),
+ list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR),
+
+ list("SIDEARM AMMUNITION", 0, null, null, null),
+ list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR),
+ list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR),
+ list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR),
+
list("RESTRICTED FIREARMS", 0, null, null, null),
list("VP78 Pistol", 10, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR),
list("SU-6 Smart Pistol", 15, /obj/item/storage/box/guncase/smartpistol, null, 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 2d35d4045923..ade4723a1d74 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 = COLOR_WHITE
+ color = "#FFFFFF"
/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/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm
index 70a2bba6056d..45065a2de1de 100644
--- a/code/game/objects/items/explosives/mine.dm
+++ b/code/game/objects/items/explosives/mine.dm
@@ -266,6 +266,8 @@
/obj/effect/mine_tripwire/Destroy()
if(linked_claymore)
+ if(linked_claymore.tripwire == src)
+ linked_claymore.tripwire = null
linked_claymore = null
. = ..()
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 12bf5260fe92..2137b41d86bf 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 = COLOR_WHITE
+ color = "#FFFFFF"
/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 028737c283fb..f459d1b169ae 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 = COLOR_WHITE
+ filling_color = "#ffffff"
/obj/item/reagent_container/food/snacks/meat/synthmeat/synthetic/Initialize()
. = ..()
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index ab56882de6f0..f8a6af3cf24f 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -144,7 +144,9 @@ Also change the icon to reflect the amount of sheets, if possible.*/
list_recipes(usr, text2num(href_list["sublist"]))
if(href_list["make"])
- if(amount < 1) qdel(src) //Never should happen
+ if(amount < 1)
+ qdel(src) //Never should happen
+ return
var/list/recipes_list = recipes
if(href_list["sublist"])
@@ -152,7 +154,11 @@ Also change the icon to reflect the amount of sheets, if possible.*/
recipes_list = srl.recipes
var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])]
var/multiplier = text2num(href_list["multiplier"])
- if(!isnum(multiplier))
+ if(multiplier != multiplier) // isnan
+ message_admins("[key_name_admin(usr)] has attempted to multiply [src] with NaN")
+ return
+ if(!isnum(multiplier)) // this used to block nan...
+ message_admins("[key_name_admin(usr)] has attempted to multiply [src] with !isnum")
return
multiplier = round(multiplier)
if(multiplier < 1)
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index 29c4ec15d03a..cafea5fa074b 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -494,6 +494,11 @@
desc = "A heavy-duty chestrig used by some USCM technicians."
icon_state = "marinesatch_techi"
+/obj/item/storage/backpack/marine/satchel/chestrig
+ name = "\improper USCM chestrig"
+ desc = "A chestrig used by some USCM personnel."
+ icon_state = "chestrig"
+
GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/rto)
/obj/item/storage/backpack/marine/satchel/rto
diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm
index 7369df548045..5be788dce25c 100644
--- a/code/game/objects/items/storage/pouch.dm
+++ b/code/game/objects/items/storage/pouch.dm
@@ -1107,8 +1107,8 @@
name = "flare pouch"
desc = "A pouch designed to hold flares. Refillable with an M94 flare pack."
max_w_class = SIZE_SMALL
- storage_slots = 8
- max_storage_space = 8
+ storage_slots = 16
+ max_storage_space = 16
storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD
icon_state = "flare"
can_hold = list(/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare/signal)
diff --git a/code/game/objects/items/tools/surgery_tools.dm b/code/game/objects/items/tools/surgery_tools.dm
index 2e2725b52b81..7d354d8d8c1c 100644
--- a/code/game/objects/items/tools/surgery_tools.dm
+++ b/code/game/objects/items/tools/surgery_tools.dm
@@ -201,6 +201,8 @@
icon_state = "bone-gel"
w_class = SIZE_SMALL
matter = list("plastic" = 7500)
+ ///base icon state for update_icon() to reference, fixes bonegel/empty
+ var/base_icon_state = "bone-gel"
///percent of gel remaining in container
var/remaining_gel = 100
///If gel is used when doing bone surgery
@@ -215,6 +217,22 @@
///How much bone gel is needed to mend bones
var/mend_bones_fix_cost = 5
+/obj/item/tool/surgery/bonegel/update_icon()
+ . = ..()
+ if(remaining_gel >= 100)
+ icon_state = base_icon_state
+ return
+ if(remaining_gel > 50)
+ icon_state = "[base_icon_state]_75"
+ return
+ if(remaining_gel > 25)
+ icon_state = "[base_icon_state]_50"
+ return
+ if(remaining_gel > 0)
+ icon_state = "[base_icon_state]_25"
+ return
+ icon_state = "[base_icon_state]_0"
+
/obj/item/tool/surgery/bonegel/get_examine_text(mob/user)
. = ..()
if(unlimited_gel) //Only show how much gel is left if it actually uses bone gel
@@ -244,6 +262,7 @@
if(!do_after(user, time_per_refill, INTERRUPT_ALL, BUSY_ICON_FRIENDLY, refilling_obj))
break
remaining_gel = clamp(remaining_gel + 10, 0, 100)
+ update_icon()
to_chat(user, SPAN_NOTICE("[refilling_obj] chimes, and displays \"[remaining_gel]% filled\"."))
refilling = FALSE
@@ -257,14 +276,17 @@
if(remaining_gel < gel_cost)
return FALSE
remaining_gel -= gel_cost
+ update_icon()
return TRUE
/obj/item/tool/surgery/bonegel/empty
remaining_gel = 0
+ icon_state = "bone-gel_0"
/obj/item/tool/surgery/bonegel/predatorbonegel
name = "gel gun"
desc = "Inside is a liquid that is similar in effect to bone gel, but requires much smaller quantities, allowing near infinite use from a single capsule."
+ base_icon_state = "predator_bone-gel"
icon_state = "predator_bone-gel"
unlimited_gel = TRUE
diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm
index 451dad6a7847..2362a70e6e1e 100644
--- a/code/game/objects/items/weapons/stunbaton.dm
+++ b/code/game/objects/items/weapons/stunbaton.dm
@@ -4,10 +4,10 @@
icon_state = "stunbaton"
item_state = "baton"
flags_equip_slot = SLOT_WAIST
- force = 20
+ force = 15
+ throwforce = 7
sharp = FALSE
edge = FALSE
- throwforce = 10
w_class = SIZE_MEDIUM
attack_verb = list("beaten")
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm
index 9b473d91f46e..6c711a7bcabe 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm
@@ -254,6 +254,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes)
new /obj/item/storage/belt/medical/full(src)
new /obj/item/clothing/under/rank/medical/green(src)
new /obj/item/clothing/under/rank/medical/blue(src)
+ new /obj/item/clothing/under/rank/medical/lightblue(src)
new /obj/item/clothing/under/rank/medical/purple(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/head/surgery/green(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index 4244fd82881e..80a5664567c3 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -93,6 +93,7 @@
new /obj/item/clothing/gloves/latex(src)
new /obj/item/clothing/under/rank/medical/green(src)
new /obj/item/clothing/under/rank/medical/blue(src)
+ new /obj/item/clothing/under/rank/medical/lightblue(src)
new /obj/item/clothing/under/rank/medical/purple(src)
new /obj/item/clothing/head/surgery/green(src)
new /obj/item/clothing/head/surgery/blue(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index daecf1906c21..eddc0690233c 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -297,6 +297,7 @@
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical/blue(src)
+ new /obj/item/clothing/under/rank/medical/lightblue(src)
new /obj/item/clothing/under/rank/medical/green(src)
new /obj/item/clothing/under/rank/medical/purple(src)
new /obj/item/clothing/shoes/white(src)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index cfb62812f0c6..d891119a8404 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -335,7 +335,7 @@
icon_closed = "closed_supply"
/obj/structure/closet/crate/trashcart
- name = "\improper trash cart"
+ name = "trash cart"
desc = "A heavy, metal trashcart with wheels."
icon_state = "closed_trashcart"
icon_opened = "open_trashcart"
@@ -437,4 +437,3 @@
density = TRUE
icon_opened = "open_mcart_y"
icon_closed = "closed_mcart_y"
-
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index 82f25a6ebe3e..3a3ce661e231 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -10,11 +10,6 @@ GLOBAL_PROTECT(href_token)
var/rights = 0
var/fakekey = null
- var/admincaster_screen = 0 //See newscaster.dm under machinery for a full description
- var/datum/feed_message/admincaster_feed_message = new /datum/feed_message //These two will act as admin_holders.
- var/datum/feed_channel/admincaster_feed_channel = new /datum/feed_channel
- var/admincaster_signature //What you'll sign the newsfeeds as
-
var/href_token
var/datum/marked_datum
@@ -31,7 +26,6 @@ GLOBAL_PROTECT(href_token)
error("Admin datum created without a ckey argument. Datum has been deleted")
qdel(src)
return
- admincaster_signature = "Weyland-Yutani Officer #[rand(0,9)][rand(0,9)][rand(0,9)]"
rank = initial_rank
rights = initial_rights
href_token = GenerateToken()
diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm
index f6d7ac5c74da..5833428c7af6 100644
--- a/code/modules/admin/tabs/event_tab.dm
+++ b/code/modules/admin/tabs/event_tab.dm
@@ -322,7 +322,11 @@
if(!admin_holder)
return
- var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "CMB", "Other", "Cancel")
+ var/list/options = list(
+ "Weyland-Yutani", "High Command", "Provost", "Press",
+ "Colonial Marshal Bureau", "Union of Progressive Peoples",
+ "Three World Empire", "Colonial Liberation Front",
+ "Other", "Cancel")
var/answer = tgui_input_list(src, "Which kind of faxes would you like to see?", "Faxes", options)
switch(answer)
if("Weyland-Yutani")
@@ -334,6 +338,7 @@
body += " "
@@ -343,6 +348,7 @@
body += " "
@@ -361,9 +367,9 @@
body += " "
body += " "
for(var/text in GLOB.CMBFaxes)
@@ -373,6 +379,36 @@
body += " "
+
+ for(var/text in GLOB.UPPFaxes)
+ body += text
+ body += " "
+
+ body += " "
+
+ for(var/text in GLOB.TWEFaxes)
+ body += text
+ body += " "
+
+ body += " "
+
+ for(var/text in GLOB.CLFFaxes)
+ body += text
+ body += " "
+
+ body += " "
diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm
index b1cab3603af8..825f7c3cdbf4 100644
--- a/code/modules/admin/topic/topic.dm
+++ b/code/modules/admin/topic/topic.dm
@@ -1125,7 +1125,7 @@
GLOB.fax_contents += fax_message // save a copy
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
- GLOB.USCMFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\] ")
+ GLOB.PressFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\] ")
var/msg_ghost = SPAN_NOTICE("PRESS REPLY: ")
msg_ghost += "Transmitting '[customname]' via secure connection ... "
@@ -1161,6 +1161,7 @@
message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
return
to_chat(src.owner, "/red Unable to locate fax!")
+
else if(href_list["USCMFaxReply"])
var/mob/living/carbon/human/H = locate(href_list["USCMFaxReply"])
var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
@@ -1188,7 +1189,7 @@
return
else
return
- var/message_body = input(src.owner, "Enter Message Body, use
for paragraphs", "Outgoing message from Weyland USCM", "") as message|null
+ var/message_body = input(src.owner, "Enter Message Body, use
for paragraphs", "Outgoing message from USCM", "") as message|null
if(!message_body)
return
var/sent_by = input(src.owner, "Enter the name and rank you are sending from.", "Outgoing message from USCM", "") as message|null
@@ -1244,8 +1245,8 @@
return
to_chat(src.owner, "/red Unable to locate fax!")
- else if(href_list["CLFaxReply"])
- var/mob/living/carbon/human/H = locate(href_list["CLFaxReply"])
+ else if(href_list["WYFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["WYFaxReply"])
var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
@@ -1326,6 +1327,249 @@
return
to_chat(src.owner, "/red Unable to locate fax!")
+ else if(href_list["TWEFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["TWEFaxReply"])
+ var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
+
+ var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
+ if(!template_choice) return
+ var/datum/fax/fax_message
+ switch(template_choice)
+ if("Custom")
+ var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use for line breaks.", "Outgoing message from TWE", "") as message|null
+ if(!input)
+ return
+ fax_message = new(input)
+ if("Template")
+ var/subject = input(src.owner, "Enter subject line", "Outgoing message from TWE", "") as message|null
+ if(!subject)
+ return
+ var/addressed_to = ""
+ var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom"))
+ if(address_option == "Sender")
+ addressed_to = "[H.real_name]"
+ else if(address_option == "Custom")
+ addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from TWE", "") as message|null
+ if(!addressed_to)
+ return
+ else
+ return
+ var/message_body = input(src.owner, "Enter Message Body, use
for paragraphs", "Outgoing message from TWE", "") as message|null
+ if(!message_body)
+ return
+ var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from TWE", "") as message|null
+ if(!sent_by)
+ return
+ fax_message = new(generate_templated_fax(0, "THREE WORLD EMPIRE - ROYAL MILITARY COMMAND", subject, addressed_to, message_body, sent_by, "Office of Military Communications", "Three World Empire"))
+ show_browser(usr, "[fax_message.data]", "PREVIEW OF TWE FAX", "size=500x400")
+ var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel"))
+ if(send_choice != "Send")
+ return
+ GLOB.fax_contents += fax_message // save a copy
+
+ var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ if(!customname)
+ return
+
+ GLOB.TWEFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\] ") //Add replies so that mods know what the hell is goin on with the RP
+
+ var/msg_ghost = SPAN_NOTICE("THREE WORLD EMPIRE FAX REPLY: ")
+ msg_ghost += "Transmitting '[customname]' via secure connection ... "
+ msg_ghost += "view message "
+ announce_fax( ,msg_ghost)
+
+ for(var/obj/structure/machinery/faxmachine/F in GLOB.machines)
+ if(F == fax)
+ if(!(F.inoperable()))
+
+ // animate! it's alive!
+ flick("faxreceive", F)
+
+ // give the sprite some time to flick
+ spawn(20)
+ var/obj/item/paper/P = new /obj/item/paper( F.loc )
+ P.name = "Three World Empire - [customname]"
+ P.info = fax_message.data
+ P.update_icon()
+
+ playsound(F.loc, "sound/machines/fax.ogg", 15)
+
+ // Stamps
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-twe"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "This paper has been stamped by the Three World Empire Quantum Relay (tm). "
+
+ to_chat(src.owner, "Message reply to transmitted successfully.")
+ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
+ return
+ to_chat(src.owner, "/red Unable to locate fax!")
+
+ else if(href_list["UPPFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["UPPFaxReply"])
+ var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
+
+ var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
+ if(!template_choice) return
+ var/datum/fax/fax_message
+ switch(template_choice)
+ if("Custom")
+ var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use for line breaks.", "Outgoing message from UPP", "") as message|null
+ if(!input)
+ return
+ fax_message = new(input)
+ if("Template")
+ var/subject = input(src.owner, "Enter subject line", "Outgoing message from UPP", "") as message|null
+ if(!subject)
+ return
+ var/addressed_to = ""
+ var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom"))
+ if(address_option == "Sender")
+ addressed_to = "[H.real_name]"
+ else if(address_option == "Custom")
+ addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from UPP", "") as message|null
+ if(!addressed_to)
+ return
+ else
+ return
+ var/message_body = input(src.owner, "Enter Message Body, use
for paragraphs", "Outgoing message from UPP", "") as message|null
+ if(!message_body)
+ return
+ var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from UPP", "") as message|null
+ if(!sent_by)
+ return
+ fax_message = new(generate_templated_fax(0, "UNION OF PROGRESSIVE PEOPLES - MILITARY HIGH KOMMAND", subject, addressed_to, message_body, sent_by, "Military High Kommand", "Union of Progressive Peoples"))
+ show_browser(usr, "[fax_message.data]", "PREVIEW OF UPP FAX", "size=500x400")
+ var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel"))
+ if(send_choice != "Send")
+ return
+ GLOB.fax_contents += fax_message // save a copy
+
+ var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ if(!customname)
+ return
+
+ GLOB.UPPFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\] ") //Add replies so that mods know what the hell is goin on with the RP
+
+ var/msg_ghost = SPAN_NOTICE("UNION OF PROGRESSIVE PEOPLES FAX REPLY: ")
+ msg_ghost += "Transmitting '[customname]' via secure connection ... "
+ msg_ghost += "view message "
+ announce_fax( ,msg_ghost)
+
+ for(var/obj/structure/machinery/faxmachine/F in GLOB.machines)
+ if(F == fax)
+ if(!(F.inoperable()))
+
+ // animate! it's alive!
+ flick("faxreceive", F)
+
+ // give the sprite some time to flick
+ spawn(20)
+ var/obj/item/paper/P = new /obj/item/paper( F.loc )
+ P.name = "Union of Progressive Peoples - [customname]"
+ P.info = fax_message.data
+ P.update_icon()
+
+ playsound(F.loc, "sound/machines/fax.ogg", 15)
+
+ // Stamps
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-upp"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "This paper has been stamped by the Union of Progressive Peoples Quantum Relay (tm). "
+
+ to_chat(src.owner, "Message reply to transmitted successfully.")
+ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
+ return
+ to_chat(src.owner, "/red Unable to locate fax!")
+
+ else if(href_list["CLFFaxReply"])
+ var/mob/living/carbon/human/H = locate(href_list["CLFFaxReply"])
+ var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
+
+ var/template_choice = tgui_input_list(usr, "Use the template or roll your own?", "Fax Template", list("Template", "Custom"))
+ if(!template_choice) return
+ var/datum/fax/fax_message
+ switch(template_choice)
+ if("Custom")
+ var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use for line breaks.", "Outgoing message from CLF", "") as message|null
+ if(!input)
+ return
+ fax_message = new(input)
+ if("Template")
+ var/subject = input(src.owner, "Enter subject line", "Outgoing message from CLF", "") as message|null
+ if(!subject)
+ return
+ var/addressed_to = ""
+ var/address_option = tgui_input_list(usr, "Address it to the sender or custom?", "Fax Template", list("Sender", "Custom"))
+ if(address_option == "Sender")
+ addressed_to = "[H.real_name]"
+ else if(address_option == "Custom")
+ addressed_to = input(src.owner, "Enter Addressee Line", "Outgoing message from CLF", "") as message|null
+ if(!addressed_to)
+ return
+ else
+ return
+ var/message_body = input(src.owner, "Enter Message Body, use
for paragraphs", "Outgoing message from CLF", "") as message|null
+ if(!message_body)
+ return
+ var/sent_by = input(src.owner, "Enter JUST the name you are sending this from", "Outgoing message from CLF", "") as message|null
+ if(!sent_by)
+ return
+ fax_message = new(generate_templated_fax(0, "COLONIAL LIBERATION FRONT - COLONIAL COUNCIL OF LIBERATION", subject, addressed_to, message_body, sent_by, "Guerilla Forces Command", "Colonial Liberation Front"))
+ show_browser(usr, "[fax_message.data]", "PREVIEW OF CLF FAX", "size=500x400")
+ var/send_choice = tgui_input_list(usr, "Send this fax?", "Fax Confirmation", list("Send", "Cancel"))
+ if(send_choice != "Send")
+ return
+ GLOB.fax_contents += fax_message // save a copy
+
+ var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ if(!customname)
+ return
+
+ GLOB.CLFFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\] ") //Add replies so that mods know what the hell is goin on with the RP
+
+ var/msg_ghost = SPAN_NOTICE("COLONIAL LIBERATION FRONT FAX REPLY: ")
+ msg_ghost += "Transmitting '[customname]' via secure connection ... "
+ msg_ghost += "view message "
+ announce_fax( ,msg_ghost)
+
+ for(var/obj/structure/machinery/faxmachine/F in GLOB.machines)
+ if(F == fax)
+ if(!(F.inoperable()))
+
+ // animate! it's alive!
+ flick("faxreceive", F)
+
+ // give the sprite some time to flick
+ spawn(20)
+ var/obj/item/paper/P = new /obj/item/paper( F.loc )
+ P.name = "Colonial Liberation Front - [customname]"
+ P.info = fax_message.data
+ P.update_icon()
+
+ playsound(F.loc, "sound/machines/fax.ogg", 15)
+
+ // Stamps
+ var/image/stampoverlay = image('icons/obj/items/paper.dmi')
+ stampoverlay.icon_state = "paper_stamp-clf"
+ if(!P.stamped)
+ P.stamped = new
+ P.stamped += /obj/item/tool/stamp
+ P.overlays += stampoverlay
+ P.stamps += "This paper has been stamped and encrypted by the Colonial Liberation Front Quantum Relay (tm). "
+
+ to_chat(src.owner, "Message reply to transmitted successfully.")
+ message_admins(SPAN_STAFF_IC("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]"), 1)
+ return
+ to_chat(src.owner, "/red Unable to locate fax!")
+
else if(href_list["CMBFaxReply"])
var/mob/living/carbon/human/H = locate(href_list["CMBFaxReply"])
var/obj/structure/machinery/faxmachine/fax = locate(href_list["originfax"])
diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm
index a3ce847c4270..e35974bc6276 100644
--- a/code/modules/asset_cache/asset_list_items.dm
+++ b/code/modules/asset_cache/asset_list_items.dm
@@ -61,33 +61,9 @@
"nano/templates/",
)
-/datum/asset/directory/nanoui/weapons
- common_dirs = list(
- "nano/images/weapons/",
- )
-
- uncommon_dirs = list()
-
-/datum/asset/directory/nanoui/weapons/send(client)
- if(!client)
- log_debug("Warning! Tried to send nanoui weapon data with a null client! (asset_list_items.dm line 93)")
- return
- SSassets.transport.send_assets(client, common)
-
-
/datum/asset/simple/nanoui_images
keep_local_name = TRUE
- assets = list(
- "auto.png" = 'nano/images/weapons/auto.png',
- "burst.png" = 'nano/images/weapons/burst.png',
- "single.png" = 'nano/images/weapons/single.png',
- "disabled_automatic.png" = 'nano/images/weapons/disabled_automatic.png',
- "disabled_burst.png" = 'nano/images/weapons/disabled_burst.png',
- "disabled_single.png" = 'nano/images/weapons/disabled_single.png',
- "no_name.png" = 'nano/images/weapons/no_name.png',
- )
-
var/list/common_dirs = list(
"nano/images/",
)
@@ -323,7 +299,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 != COLOR_WHITE)
+ if (!isnull(c) && c != "#FFFFFF")
I.Blend(c, ICON_MULTIPLY)
else
if (ispath(k, /obj/effect/essentials_set))
@@ -398,9 +374,22 @@
name = "gunlineart"
/datum/asset/spritesheet/gun_lineart/register()
- InsertAll("", 'icons/obj/items/weapons/guns/lineart.dmi')
+ var/icon_file = 'icons/obj/items/weapons/guns/lineart.dmi'
+ InsertAll("", icon_file)
+
+ for(var/obj/item/weapon/gun/current_gun as anything in subtypesof(/obj/item/weapon/gun))
+ var/icon_state = initial(current_gun.base_gun_icon)
+ if(icon_state && isnull(sprites[icon_state]))
+ stack_trace("[current_gun] does not have a valid lineart icon state, icon=[icon_file], icon_state=[json_encode(icon_state)](\ref[icon_state])")
+
..()
+/datum/asset/spritesheet/gun_lineart_modes
+ name = "gunlineartmodes"
+
+/datum/asset/spritesheet/gun_lineart_modes/register()
+ InsertAll("", 'icons/obj/items/weapons/guns/lineart_modes.dmi')
+ ..()
/datum/asset/simple/orbit
assets = list(
@@ -414,17 +403,6 @@
"ntosradarpointerS.png" = 'icons/images/ui_images/ntosradar_pointer_S.png'
)
-/datum/asset/simple/firemodes
- assets = list(
- "auto.png" = 'html/images/auto.png',
- "disabled_auto.png" = 'html/images/disabled_automatic.png',
- "burst.png" = 'html/images/burst.png',
- "disabled_burst.png" = 'html/images/disabled_burst.png',
- "single.png" = 'html/images/single.png',
- "disabled_single.png" = 'html/images/disabled_single.png',
- )
-
-
/datum/asset/simple/particle_editor
assets = list(
"motion" = 'icons/images/ui_images/particle_editor/motion.png',
diff --git a/code/modules/asset_cache/assets/vending.dm b/code/modules/asset_cache/assets/vending.dm
index de06ffd59d03..a3099869e334 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 != COLOR_WHITE)
+ if (!isnull(c) && c != "#FFFFFF")
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 7b8274d5e310..221736b5c84f 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 = COLOR_WHITE
+ var/UI_style_color = "#ffffff"
var/UI_style_alpha = 255
var/View_MC = FALSE
var/window_skin = 0
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index adbcf9d51c4a..2e551f65d674 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -669,29 +669,39 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list(
return FALSE
if(active_visor)
+ var/visor_to_deactivate = active_visor
+ var/skipped_hud = FALSE
var/iterator = 1
- for(var/hud_type in total_visors)
- if(hud_type == active_visor)
+ for(var/obj/item/device/helmet_visor/current_visor as anything in total_visors)
+ if(current_visor == active_visor || skipped_hud)
if(length(total_visors) > iterator)
- active_visor = total_visors[(iterator + 1)]
- toggle_visor(user, total_visors[iterator], TRUE)
+ var/obj/item/device/helmet_visor/next_visor = total_visors[iterator + 1]
+
+ if(!isnull(GLOB.huds[next_visor.hud_type]?.hudusers[user]))
+ iterator++
+ skipped_hud = TRUE
+ continue
+
+ active_visor = next_visor
+ toggle_visor(user, visor_to_deactivate, silent = TRUE) // disables the old visor
toggle_visor(user)
return active_visor
else
active_visor = null
- toggle_visor(user, total_visors[iterator], FALSE)
+ toggle_visor(user, visor_to_deactivate, FALSE)
return FALSE
iterator++
- if(total_visors[1])
- active_visor = total_visors[1]
+ for(var/obj/item/device/helmet_visor/new_visor in total_visors)
+
+ if(!isnull(GLOB.huds[new_visor.hud_type]?.hudusers[user]))
+ continue
+
+ active_visor = new_visor
toggle_visor(user)
return active_visor
- active_visor = null
- recalculate_visors(user)
return FALSE
-
/datum/action/item_action/cycle_helmet_huds/New(Target, obj/item/holder)
. = ..()
name = "Cycle helmet HUD"
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 5467e9413695..a0e95f7f0f30 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -89,6 +89,18 @@
cap_color = "ferret"
black_market_value = 25
+/obj/item/clothing/head/soft/trucker
+ name = "\improper blue trucker hat"
+ desc = "It's a blue trucker hat."
+ icon_state = "truckercap_bluesoft"
+ cap_color = "truckercap_blue"
+
+/obj/item/clothing/head/soft/trucker/red
+ name = "\improper red trucker hat"
+ desc = "It's a red trucker hat."
+ icon_state = "truckercap_redsoft"
+ cap_color = "truckercap_red"
+
/obj/item/clothing/head/soft/sec
name = "security cap"
desc = "It's baseball hat in tasteful red color."
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 1fe48130157f..1a49dc7fe10f 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -72,7 +72,7 @@
/obj/item/clothing/shoes/sandal
desc = "A pair of rather plain, wooden sandals."
name = "sandals"
- icon_state = "wizard"
+ icon_state = "sandals"
flags_armor_protection = 0
/obj/item/clothing/shoes/sandal/marisa
diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm
index 1a8de0a89223..1be37df150a8 100644
--- a/code/modules/clothing/suits/marine_armor.dm
+++ b/code/modules/clothing/suits/marine_armor.dm
@@ -358,7 +358,7 @@
storage_slots = 3
flags_atom = null
uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/rank/chief_medical_officer, /obj/item/clothing/under/marine/dress)
- specialty = "M2 pattern officer"
+ specialty = "M3 pattern officer"
item_state_slots = list(WEAR_JACKET = "officer")
//Making a new object because we might want to edit armor values and such.
diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm
index 3d789c776d41..49569ec1295d 100644
--- a/code/modules/clothing/suits/marine_coat.dm
+++ b/code/modules/clothing/suits/marine_coat.dm
@@ -295,6 +295,7 @@
desc = "A casual brown vest."
icon_state = "vest_brown"
item_state = "vest_brown"
+ flags_atom = NO_SNOW_TYPE
has_buttons = FALSE
/obj/item/clothing/suit/storage/jacket/marine/vest/tan
@@ -316,6 +317,7 @@
desc = "A khaki suit jacket."
icon_state = "corporate_ivy"
item_state = "corporate_ivy"
+ flags_atom = NO_SNOW_TYPE
has_buttons = FALSE
/obj/item/clothing/suit/storage/jacket/marine/corporate/formal
@@ -351,6 +353,7 @@
desc = "A khaki bomber jacket popular among stationeers and blue-collar workers everywhere."
icon_state = "jacket_khaki"
item_state = "jacket_khaki"
+ flags_atom = NO_SNOW_TYPE
has_buttons = FALSE
/obj/item/clothing/suit/storage/jacket/marine/bomber/red
diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm
index 2142312fe995..37f1cdd891c3 100644
--- a/code/modules/clothing/under/jobs/medsci.dm
+++ b/code/modules/clothing/under/jobs/medsci.dm
@@ -176,12 +176,12 @@
armor_internaldamage = CLOTHING_ARMOR_LOW
item_state_slots = list(WEAR_BODY = "medical")
-/obj/item/clothing/under/rank/medical/nurse
- name = "medical nurse scrubs"
- desc = "It's made of a special fiber that provides minor protection against biohazards. This one features an orange armband."
- icon_state = "scrubsnurse"
- item_state = "scrubsnurse"
- item_state_slots = list(WEAR_BODY = "scrubsnurse")
+/obj/item/clothing/under/rank/medical/lightblue
+ name = "medical scrubs"
+ desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in light blue."
+ icon_state = "scrubslightblue"
+ flags_jumpsuit = FALSE
+ item_state_slots = list(WEAR_BODY = "scrubslightblue")
/obj/item/clothing/under/rank/medical/blue
name = "medical scrubs"
@@ -204,6 +204,13 @@
flags_jumpsuit = FALSE
item_state_slots = list(WEAR_BODY = "scrubspurple")
+/obj/item/clothing/under/rank/medical/orange
+ name = "medical scrubs"
+ desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in prisoner orange."
+ icon_state = "scrubsorange"
+ flags_jumpsuit = FALSE
+ item_state_slots = list(WEAR_BODY = "scrubsorange")
+
/obj/item/clothing/under/rank/psych
desc = "A basic white jumpsuit. It has turquoise markings that denote the wearer as a psychiatrist."
name = "psychiatrist's jumpsuit"
diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm
index 0743756a6878..56d819b088cb 100644
--- a/code/modules/clothing/under/ties.dm
+++ b/code/modules/clothing/under/ties.dm
@@ -358,6 +358,11 @@
desc = "An armband, worn by the crew to display which department they're assigned to. This one is white and green."
icon_state = "medgreen"
+/obj/item/clothing/accessory/armband/nurse
+ name = "nurse armband"
+ desc = "An armband, worn by the rookie nurses to display they are still not doctors. This one is dark red."
+ icon_state = "nurse"
+
//patches
/obj/item/clothing/accessory/patch
name = "USCM patch"
diff --git a/code/modules/cm_aliens/structures/fruit.dm b/code/modules/cm_aliens/structures/fruit.dm
index 384da5da39a7..02fdb2da415b 100644
--- a/code/modules/cm_aliens/structures/fruit.dm
+++ b/code/modules/cm_aliens/structures/fruit.dm
@@ -93,22 +93,6 @@
qdel(src)
. = ..()
-/obj/effect/alien/resin/fruit/proc/delete_fruit()
- //Notify and update the xeno count
- if(!QDELETED(bound_xeno))
- if(!picked)
- to_chat(bound_xeno, SPAN_XENOHIGHDANGER("We sense one of our fruit has been destroyed."))
- bound_xeno.current_fruits.Remove(src)
- var/datum/action/xeno_action/onclick/plant_resin_fruit/prf = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/plant_resin_fruit)
- prf.update_button_icon()
-
- if(picked) // No need to update the number, since the fruit still exists (just as a different item)
- return
- var/number_of_fruit = length(bound_xeno.current_fruits)
- prf.button.set_maptext(SMALL_FONTS_COLOR(7, number_of_fruit, "#e69d00"), 19, 2)
- prf.update_button_icon()
- bound_xeno = null
-
/obj/effect/alien/resin/fruit/proc/reduce_timer(maturity_increase)
if (mature || timer_id == TIMER_ID_NULL)
return
@@ -193,7 +177,19 @@
return FALSE
/obj/effect/alien/resin/fruit/Destroy()
- delete_fruit()
+ //Notify and update the xeno count
+ if(!QDELETED(bound_xeno))
+ if(!picked)
+ to_chat(bound_xeno, SPAN_XENOHIGHDANGER("We sense one of our fruit has been destroyed."))
+ bound_xeno.current_fruits.Remove(src)
+
+ var/number_of_fruit = length(bound_xeno.current_fruits)
+ var/datum/action/xeno_action/onclick/plant_resin_fruit/plant_action = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/plant_resin_fruit)
+ plant_action.button.set_maptext(SMALL_FONTS_COLOR(7, number_of_fruit, "#e69d00"), 19, 2)
+ plant_action.update_button_icon()
+
+ bound_xeno = null
+
return ..()
//Greater
@@ -281,9 +277,9 @@
..()
START_PROCESSING(SSobj, src)
-/obj/effect/alien/resin/fruit/spore/delete_fruit()
+/obj/effect/alien/resin/fruit/spore/Destroy()
STOP_PROCESSING(SSobj, src)
- ..()
+ return ..()
/obj/effect/alien/resin/fruit/spore/process()
if(mature)
diff --git a/code/modules/cm_aliens/structures/special/recovery_node.dm b/code/modules/cm_aliens/structures/special/recovery_node.dm
index a0d01bab89dc..649d7811fb6a 100644
--- a/code/modules/cm_aliens/structures/special/recovery_node.dm
+++ b/code/modules/cm_aliens/structures/special/recovery_node.dm
@@ -5,7 +5,7 @@
desc = "A warm, soothing light source that pulsates with a faint hum."
icon_state = "recovery"
health = 400
- var/heal_amount = 10
+ var/heal_amount = 20
var/heal_cooldown = 5 SECONDS
var/last_healed
diff --git a/code/modules/cm_marines/Donator_Items.dm b/code/modules/cm_marines/Donator_Items.dm
index 8eb2159ddef0..17669b0157dc 100644
--- a/code/modules/cm_marines/Donator_Items.dm
+++ b/code/modules/cm_marines/Donator_Items.dm
@@ -1310,8 +1310,8 @@
/obj/item/clothing/shoes/marine/fluff/vintage //CKEY=vintagepalmer
name = "Vintage Sandals"
desc = "Vintage Sandals, suitable for only the highest class of hipster. DONOR ITEM"
- icon_state = "wizard"
- item_state = "wizard"
+ icon_state = "sandals"
+ item_state = "sandals"
/obj/item/clothing/shoes/marine/fluff/feodrich //CKEY=feodrich (UNIQUE)
name = "Doom Shoes"
diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm
index 785283541eb8..b162fb7c6a87 100644
--- a/code/modules/cm_marines/dropship_equipment.dm
+++ b/code/modules/cm_marines/dropship_equipment.dm
@@ -1144,9 +1144,11 @@
var/list/possible_fultons = get_targets()
- var/obj/item/stack/fulton/fult = possible_fultons[fulton_choice]
if(!fulton_choice)
return
+ // Strip any \proper or \improper in order to match the entry in possible_fultons.
+ fulton_choice = strip_improper(fulton_choice)
+ var/obj/item/stack/fulton/fult = possible_fultons[fulton_choice]
if(!ship_base) //system was uninstalled midway
return
diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm
index 02ff0b98e761..95d545fbd72b 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 = COLOR_WHITE
+ overhead_color = "#FFFFFF"
span_class = "retro_translator"
msg = replacetext(msg, "a", "@")
msg = replacetext(msg, "e", "3")
diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm
index a5f061e1a727..6e22fd12d58a 100644
--- a/code/modules/economy/economy_misc.dm
+++ b/code/modules/economy/economy_misc.dm
@@ -75,27 +75,6 @@ GLOBAL_VAR_INIT(economy_init, FALSE)
if(GLOB.economy_init)
return 2
- var/datum/feed_channel/newChannel = new /datum/feed_channel
- newChannel.channel_name = "Public Station Announcements"
- newChannel.author = "Automated Announcement Listing"
- newChannel.locked = 1
- newChannel.is_admin_channel = 1
- GLOB.news_network.network_channels += newChannel
-
- newChannel = new /datum/feed_channel
- newChannel.channel_name = "Nyx Daily"
- newChannel.author = "CentComm Minister of Information"
- newChannel.locked = 1
- newChannel.is_admin_channel = 1
- GLOB.news_network.network_channels += newChannel
-
- newChannel = new /datum/feed_channel
- newChannel.channel_name = "The Gibson Gazette"
- newChannel.author = "Editor Mike Hammers"
- newChannel.locked = 1
- newChannel.is_admin_channel = 1
- GLOB.news_network.network_channels += newChannel
-
for(var/loc_type in typesof(/datum/trade_destination) - /datum/trade_destination)
var/datum/trade_destination/D = new loc_type
GLOB.weighted_randomevent_locations[D] = D.viable_random_events.len
diff --git a/code/modules/gear_presets/uscm_medical.dm b/code/modules/gear_presets/uscm_medical.dm
index 7923e3a33ece..8fbfd72c5276 100644
--- a/code/modules/gear_presets/uscm_medical.dm
+++ b/code/modules/gear_presets/uscm_medical.dm
@@ -107,7 +107,8 @@
back_item = /obj/item/storage/backpack/marine
new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/nurse(new_human), WEAR_BODY)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/lightblue(new_human), WEAR_BODY)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/armband/nurse(new_human), WEAR_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET)
diff --git a/code/modules/gear_presets/wy_goons.dm b/code/modules/gear_presets/wy_goons.dm
index 54b436c20854..a8f3a443311e 100644
--- a/code/modules/gear_presets/wy_goons.dm
+++ b/code/modules/gear_presets/wy_goons.dm
@@ -135,6 +135,7 @@
/datum/equipment_preset/goon/researcher/load_gear(mob/living/carbon/human/new_human)
new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY, WEAR_L_EAR)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science, WEAR_EYES)
new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/corporate_formal, WEAR_BODY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat, WEAR_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/corporate, WEAR_FEET)
diff --git a/code/modules/lighting/lighting_mask/lighting_mask.dm b/code/modules/lighting/lighting_mask/lighting_mask.dm
index 1fcfdd455c93..c1276d19dab0 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 = COLOR_WHITE)
+/atom/movable/lighting_mask/proc/set_color(colour = "#ffffff")
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 cf9d69531fbd..cfd4a86f5f3a 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(COLOR_RED){T.color = COLOR_GREEN}if(COLOR_GREEN){T.color=COLOR_BLUE}else{T.color=COLOR_RED}}}}while(0)
+//#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 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, COLOR_BLUE)
+ DEBUG_HIGHLIGHT(thing.x, thing.y, "#0000FF")
//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 = COLOR_BLACK
+ shadow.color = "#000"
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, COLOR_YELLOW)
+ DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00")
else
//Add the group to the output
. += list(group)
group = list()
group += list(list(text2num(x_key), next))
- DEBUG_HIGHLIGHT(text2num(x_key), next, COLOR_RED)
+ DEBUG_HIGHLIGHT(text2num(x_key), next, "#FF0000")
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, COLOR_YELLOW)
+ DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00")
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), COLOR_GREEN)
+ DEBUG_HIGHLIGHT(next, text2num(y_key), "#00FF00")
pointer = next
. += list(group)
diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm
index bd21f87d3f94..e0a4d2e4d5b8 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 = COLOR_WHITE)
+/mob/proc/play_screen_text(text, alert_type = /atom/movable/screen/text/screen_text, override_color = "#FFFFFF")
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 255689cd2c38..297b02aff3a3 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 = COLOR_WHITE, blurb_key, ignore_key = FALSE, speed = 1)
+ text_alignment = "left", text_color = "#FFFFFF", 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 79789bbb9fc9..38b7e935268d 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 = COLOR_BLACK
+ hair_color = "#000000"
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 = COLOR_BLACK
+ hair_color = "#000000"
//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 = COLOR_BLACK
+ hair_color = "#000000"
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/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm
index bd01376c9f9d..9326ae78bf9d 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm
@@ -174,11 +174,13 @@
playsound(get_turf(xeno), 'sound/effects/stonedoor_openclose.ogg', 30, 1)
if(!xeno.fortify)
- RegisterSignal(owner, COMSIG_MOB_DEATH, PROC_REF(death_check))
+ RegisterSignal(owner, COMSIG_XENO_ENTER_CRIT, PROC_REF(unconscious_check))
+ RegisterSignal(owner, COMSIG_MOB_DEATH, PROC_REF(unconscious_check))
fortify_switch(xeno, TRUE)
if(xeno.selected_ability != src)
button.icon_state = "template_active"
else
+ UnregisterSignal(owner, COMSIG_XENO_ENTER_CRIT)
UnregisterSignal(owner, COMSIG_MOB_DEATH)
fortify_switch(xeno, FALSE)
if(xeno.selected_ability != src)
@@ -249,9 +251,13 @@
else
damagedata["armor"] += frontal_armor
-/datum/action/xeno_action/activable/fortify/proc/death_check()
+/datum/action/xeno_action/activable/fortify/proc/unconscious_check()
SIGNAL_HANDLER
+ if(QDELETED(owner))
+ return
+
+ UnregisterSignal(owner, COMSIG_XENO_ENTER_CRIT)
UnregisterSignal(owner, COMSIG_MOB_DEATH)
fortify_switch(owner, FALSE)
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm
index 5c7ea03ee7b2..605fe290b468 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm
@@ -868,6 +868,9 @@
targetXeno.visible_message(SPAN_BOLDNOTICE("[X] places its claws on [targetXeno], and its wounds are quickly sealed!")) //marines probably should know if a xeno gets healed
X.gain_health(heal_amount*0.5 + bonus_heal*0.5)
X.flick_heal_overlay(3 SECONDS, "#00B800")
+ if(X.mutation_type == PRAETORIAN_WARDEN)
+ var/datum/behavior_delegate/praetorian_warden/warden_delegate = X.behavior_delegate
+ warden_delegate.transferred_healing += heal_amount
use_plasma = TRUE //it's already hard enough to gauge health without hp showing on the mob
targetXeno.flick_heal_overlay(3 SECONDS, "#00B800")//so the visible_message and recovery overlay will warn marines and possibly predators that the xenomorph has been healed!
@@ -923,16 +926,16 @@
to_chat(X, SPAN_XENODANGER("We cannot retrieve ourself!"))
return
- if(X.anchored)
- to_chat(X, SPAN_XENODANGER("That sister cannot move!"))
- return
-
if(!(A in view(7, X)))
to_chat(X, SPAN_XENODANGER("That sister is too far away!"))
return
var/mob/living/carbon/xenomorph/targetXeno = A
+ if(targetXeno.anchored)
+ to_chat(X, SPAN_XENODANGER("That sister cannot move!"))
+ return
+
if(!(targetXeno.resting || targetXeno.stat == UNCONSCIOUS))
if(targetXeno.mob_size > MOB_SIZE_BIG)
to_chat(X, SPAN_WARNING("[targetXeno] is too big to retrieve while standing up!"))
diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm
index d5ca8a41fa39..bbd59a74d8b5 100644
--- a/code/modules/mob/living/carbon/xenomorph/life.dm
+++ b/code/modules/mob/living/carbon/xenomorph/life.dm
@@ -506,6 +506,7 @@ Make sure their actual health updates immediately.*/
/mob/living/carbon/xenomorph/proc/handle_crit()
if(stat <= CONSCIOUS && !gibbing)
set_stat(UNCONSCIOUS)
+ SEND_SIGNAL(src, COMSIG_XENO_ENTER_CRIT)
/mob/living/carbon/xenomorph/set_stat(new_stat)
. = ..()
diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm
index 4328058c8a8e..d9946fb9ec64 100644
--- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm
+++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/warden.dm
@@ -7,16 +7,20 @@
individual_only = TRUE
caste_whitelist = list(XENO_CASTE_PRAETORIAN) // Only bae
mutator_actions_to_remove = list(
+ /datum/action/xeno_action/activable/xeno_spit,
/datum/action/xeno_action/activable/pounce/base_prae_dash,
/datum/action/xeno_action/activable/prae_acid_ball,
/datum/action/xeno_action/activable/spray_acid/base_prae_spray_acid,
+ /datum/action/xeno_action/onclick/tacmap,
)
mutator_actions_to_add = list(
+ /datum/action/xeno_action/onclick/emit_pheromones,
+ /datum/action/xeno_action/activable/xeno_spit,
/datum/action/xeno_action/activable/spray_acid/prae_warden,
/datum/action/xeno_action/activable/warden_heal,
/datum/action/xeno_action/activable/prae_retrieve,
/datum/action/xeno_action/onclick/prae_switch_heal_type,
- /datum/action/xeno_action/onclick/emit_pheromones,
+ /datum/action/xeno_action/onclick/tacmap,
)
behavior_delegate_type = /datum/behavior_delegate/praetorian_warden
keystone = TRUE
@@ -49,12 +53,16 @@
var/internal_hitpoints_per_attack = 50
var/internal_hp_per_life = 5
+
// State
var/internal_hitpoints = 0
+ var/transferred_healing = 0
+
/datum/behavior_delegate/praetorian_warden/append_to_stat()
. = list()
. += "Energy Reserves: [internal_hitpoints]/[internal_hitpoints_max]"
+ . += "Healing Done: [transferred_healing]"
/datum/behavior_delegate/praetorian_warden/on_life()
internal_hitpoints = min(internal_hitpoints_max, internal_hitpoints + internal_hp_per_life)
diff --git a/code/modules/mob/living/living_healthscan.dm b/code/modules/mob/living/living_healthscan.dm
index ebdf852afa68..c06dfc9a7166 100644
--- a/code/modules/mob/living/living_healthscan.dm
+++ b/code/modules/mob/living/living_healthscan.dm
@@ -178,7 +178,7 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant))
bleeding_check = TRUE
break
- if((!limb.brute_dam && !limb.burn_dam && !(limb.status & LIMB_DESTROYED)) && !bleeding_check && !internal_bleeding_check && !(implant && detail_level >= DETAIL_LEVEL_BODYSCAN ) && !(limb.status & LIMB_UNCALIBRATED_PROSTHETIC) && !(limb.status & LIMB_BROKEN) && !(limb.status & LIMB_SPLINTED) && !(limb.status & LIMB_SPLINTED_INDESTRUCTIBLE))
+ if((!limb.brute_dam && !limb.burn_dam && !(limb.status & LIMB_DESTROYED)) && !bleeding_check && !internal_bleeding_check && !(implant && detail_level >= DETAIL_LEVEL_BODYSCAN ) && !(limb.status & LIMB_UNCALIBRATED_PROSTHETIC) && !(limb.status & LIMB_BROKEN) && !(limb.status & LIMB_SPLINTED) && !(limb.status & LIMB_SPLINTED_INDESTRUCTIBLE) && !(limb.get_incision_depth()))
continue
var/list/core_body_parts = list("head", "chest", "groin")
var/list/current_list = list(
@@ -190,7 +190,6 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant))
"missing" = (limb.status & LIMB_DESTROYED),
"limb_status" = null,
"bleeding" = bleeding_check,
- "open_incision" = limb.get_incision_depth(),
"implant" = implant,
"internal_bleeding" = internal_bleeding_check
)
@@ -248,6 +247,24 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant))
if(limb_type)
current_list["limb_type"] = limb_type
+ //checking for open incisions, but since eyes and mouths incisions are "head incisions" but not "head surgeries" gotta do some snowflake
+ if(limb.name == "head")
+ if(human_target_mob.active_surgeries["head"])
+ current_list["open_incision"] = TRUE
+
+ var/zone
+ if(human_target_mob.active_surgeries["eyes"])
+ zone = "eyes"
+ if(human_target_mob.active_surgeries["mouth"])
+ if(zone)
+ zone = "eyes and mouth"
+ else
+ zone = "mouth"
+ current_list["open_zone_incision"] = capitalize(zone)
+
+ else
+ current_list["open_incision"] = limb.get_incision_depth()
+
limb_data_lists["[limb.name]"] = current_list
data["limb_data_lists"] = limb_data_lists
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index d00b6cbe90c9..3f7533f26620 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -663,11 +663,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w
// weapon info
- data["icon"] = SSassets.transport.get_asset_url("no_name.png")
-
- if(SSassets.cache["[base_gun_icon].png"])
- data["icon"] = SSassets.transport.get_asset_url("[base_gun_icon].png")
-
+ data["icon"] = base_gun_icon
data["name"] = name
data["desc"] = desc
data["two_handed_only"] = (flags_gun_features & GUN_WIELDED_FIRING_ONLY)
@@ -727,8 +723,8 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w
/obj/item/weapon/gun/ui_assets(mob/user)
. = ..() || list()
- . += get_asset_datum(/datum/asset/simple/firemodes)
- //. += get_asset_datum(/datum/asset/spritesheet/gun_lineart)
+ . += get_asset_datum(/datum/asset/spritesheet/gun_lineart_modes)
+ . += get_asset_datum(/datum/asset/spritesheet/gun_lineart)
// END TGUI \\
@@ -1348,7 +1344,7 @@ and you're good to go.
user.next_move = world.time //No click delay on PBs.
//Point blanking doesn't actually fire the projectile. Instead, it simulates firing the bullet proper.
- if(!able_to_fire(user)) //If it's a valid PB aside from that you can't fire the gun, do nothing.
+ if(flags_gun_features & GUN_BURST_FIRING || !able_to_fire(user)) //If it's a valid PB aside from that you can't fire the gun, do nothing.
return TRUE
//The following relating to bursts was borrowed from Fire code.
diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm
index 2a08182f1d43..61070690e9ac 100644
--- a/code/modules/projectiles/magazines/shotguns.dm
+++ b/code/modules/projectiles/magazines/shotguns.dm
@@ -230,7 +230,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 = COLOR_WHITE
+ I.color = "#ffffff"
I.appearance_flags = RESET_COLOR|KEEP_APART
overlays += I
diff --git a/code/modules/tgui/tgui_number_input.dm b/code/modules/tgui/tgui_number_input.dm
index aa189b1d2039..4c06b5333b6d 100644
--- a/code/modules/tgui/tgui_number_input.dm
+++ b/code/modules/tgui/tgui_number_input.dm
@@ -158,11 +158,13 @@
return
switch(action)
if("submit")
- if(!isnum(params["entry"]))
- CRASH("A non number was input into tgui input number by [usr]")
var/choice = params["entry"]
+ if(!isnum(choice))
+ CRASH("A non number was input into tgui input number by [usr]")
+ if(choice != choice) //isnan
+ CRASH("A NaN was input into tgui input number by [usr]")
if(integer_only)
- choice = round(params["entry"])
+ choice = round(choice)
if(choice > max_value)
CRASH("A number greater than the max value was input into tgui input number by [usr]")
if(choice < min_value)
diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml
index b57c42458d9b..b588f879a491 100644
--- a/html/changelogs/archive/2024-02.yml
+++ b/html/changelogs/archive/2024-02.yml
@@ -58,3 +58,97 @@
- refactor: camera consoles now use camera manager component
private-tristan:
- balance: Burrower can no longer spawn as part of the feral xeno ERT
+2024-02-03:
+ Drathek:
+ - ui: Refactored backend for Weapon Stats panel to use spritesheets instead.
+2024-02-04:
+ BadAtThisGame302:
+ - bugfix: fixed the CL jackets/vests/bomber jackets sprites.
+ Drathek:
+ - imageadd: Changed green fire sprites to work better with lights
+ - balance: Reduced how many fire stacks a flaregun shot provides
+ - balance: Reduced starshell's damage, but fixed the application of the incend bullet
+ trait.
+ - balance: Reverted damage changes to tazers and batons.
+ Huffie56:
+ - bugfix: 'revert PR #5553 as it is causing issues with color on atmo pipe.'
+ LTNTS:
+ - imageadd: stamp sprites for TWE, UPP and CLF
+ - code_imp: added TWE, UPP and CLF channels
+ MistChristmas:
+ - maptweak: Add Brig Photocopier
+ Segrain:
+ - bugfix: Some cases of calculations for "time remaining until something" no longer
+ display incorrect results.
+ Stakeyng:
+ - qol: Removes the need to cycle through helmet visors that contain HUD effects
+ that are already active on your character.
+ cuberound:
+ - balance: increases flare pouch storage slots from 8 to 16
+2024-02-05:
+ Drathek:
+ - bugfix: Added more null testing to helmet visors.
+ Poltava:
+ - imageadd: updated intel expedition chestrig sprite
+ SpartanBobby:
+ - maptweak: Fixes the two gauss sentry guns that were boxxed in by a mapper over
+ a year ago on ice 3
+ Warfan1815:
+ - bugfix: Open surgical incisions now show up on a health scanner even if there
+ is nothing else wrong.
+ - bugfix: Open surgical incisions in the head "zones" (mouth and eyes) now show
+ up independently on health scanner
+ cuberound:
+ - balance: increases healing node heal from 10hp every 5 sec to 20 hp every 5 sec
+2024-02-06:
+ InsaneRed:
+ - rscadd: Warden Praetorians can now see how much healing they've done.
+ - qol: Re-organizes the warden ''hotbar''
+ - bugfix: SO's M3 armor now has the proper description.
+ Vicacrov:
+ - bugfix: Fixes Defenders staying Fortified in critical state - Fortify now automatically
+ toggles itself off upon the Defender getting critted.
+2024-02-07:
+ InsaneRed:
+ - balance: Scout specialist incin/high impact mag crates now only has 3 instead
+ of 5
+ Steelpoint:
+ - rscadd: USCM Chestrig has been added to squad prep vendors, alternative sprite
+ of a satchel, similar in appearance to the welder-chestrig.
+2024-02-08:
+ Megaddd:
+ - imageadd: added 4 bone-gel fill level sprite states
+ SpartanBobby:
+ - maptweak: changes to LV624 Engineering and T-comms, mostly detailing but changes
+ some doors and object placement
+2024-02-09:
+ Huffie56:
+ - refactor: turning newscasters into "props".
+ - qol: added two new section to replace ammunition section primary ammunition and
+ sidearm ammunition and rearranged it for team leader.
+ - balance: added the ability for comtech, medic, and squad leader to buy M4A3 (HP
+ and AP) and VP78 magazines for 3 points and M44 Heavy for 6 points.
+ - balance: added the ability for SG to buy M4A3 (HP and AP) and VP78 magazines for
+ 5 points and M44 Heavy for 10 points.
+ - balance: added the ability for rifleman to buy M4A3 (HP and AP) and VP78 magazines
+ for 5 points.
+2024-02-10:
+ Drathek:
+ - bugfix: Fixed an oversight with burst point blank firing
+ SabreML:
+ - bugfix: Fixed trash carts not being pick-uppable by the dropship's fulton recovery
+ system.
+ blackdragonTOW:
+ - admin: added logging for 3rd party victory events
+ private-tristan:
+ - rscadd: Pizza ERT is back, although incredibly unlikely to occur
+ - bugfix: UPP ERT no longer rolls 3 times (1 for random, 1 for friendly, and 1 for
+ hostile), due to this, UPP comms will always be scrambled at the beginning,
+ no way to tell intentions before meeting.
+ - rscadd: Chem Goon Research Consultant now spawns with reagent scanner goggles.
+2024-02-11:
+ Drathek:
+ - bugfix: Fix gardener fruit count not always updating
+ Vicacrov:
+ - bugfix: Fixed Warden Praetorians being able to move around the ovipositored Queen
+ with their Retrieve ability.
diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi
index 673f1c48de1f..a36e22b9c871 100644
Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ
diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi
index 9fc39fb5acd2..10c4f0765a12 100644
Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ
diff --git a/icons/mob/humans/onmob/feet.dmi b/icons/mob/humans/onmob/feet.dmi
index e8a6e49477c1..fdf6a4a40e80 100644
Binary files a/icons/mob/humans/onmob/feet.dmi and b/icons/mob/humans/onmob/feet.dmi differ
diff --git a/icons/mob/humans/onmob/hands.dmi b/icons/mob/humans/onmob/hands.dmi
index d8fc38fff824..83bf9960ad12 100644
Binary files a/icons/mob/humans/onmob/hands.dmi and b/icons/mob/humans/onmob/hands.dmi differ
diff --git a/icons/mob/humans/onmob/head_0.dmi b/icons/mob/humans/onmob/head_0.dmi
index cfe8b33da4ee..9fc0bc82c123 100644
Binary files a/icons/mob/humans/onmob/head_0.dmi and b/icons/mob/humans/onmob/head_0.dmi differ
diff --git a/icons/mob/humans/onmob/suit_0.dmi b/icons/mob/humans/onmob/suit_0.dmi
index 3fc9e8e0770b..de2595e261f0 100644
Binary files a/icons/mob/humans/onmob/suit_0.dmi and b/icons/mob/humans/onmob/suit_0.dmi differ
diff --git a/icons/mob/humans/onmob/ties.dmi b/icons/mob/humans/onmob/ties.dmi
index 7ea2037463bf..87581eb94168 100644
Binary files a/icons/mob/humans/onmob/ties.dmi and b/icons/mob/humans/onmob/ties.dmi differ
diff --git a/icons/mob/humans/onmob/uniform_0.dmi b/icons/mob/humans/onmob/uniform_0.dmi
index 79f54b2afebe..0613b6e66623 100644
Binary files a/icons/mob/humans/onmob/uniform_0.dmi and b/icons/mob/humans/onmob/uniform_0.dmi differ
diff --git a/icons/obj/items/clothing/backpacks.dmi b/icons/obj/items/clothing/backpacks.dmi
index fa03f0434fb5..678107edf7af 100644
Binary files a/icons/obj/items/clothing/backpacks.dmi and b/icons/obj/items/clothing/backpacks.dmi differ
diff --git a/icons/obj/items/clothing/hats.dmi b/icons/obj/items/clothing/hats.dmi
index e9da08f07477..3e2a1dcfc243 100644
Binary files a/icons/obj/items/clothing/hats.dmi and b/icons/obj/items/clothing/hats.dmi differ
diff --git a/icons/obj/items/clothing/shoes.dmi b/icons/obj/items/clothing/shoes.dmi
index a83cb1574307..c4e01786e579 100644
Binary files a/icons/obj/items/clothing/shoes.dmi and b/icons/obj/items/clothing/shoes.dmi differ
diff --git a/icons/obj/items/clothing/suits.dmi b/icons/obj/items/clothing/suits.dmi
index 7d67de8e5a2e..cf23d265181f 100644
Binary files a/icons/obj/items/clothing/suits.dmi and b/icons/obj/items/clothing/suits.dmi differ
diff --git a/icons/obj/items/clothing/ties.dmi b/icons/obj/items/clothing/ties.dmi
index 25f3737dfe90..366f2acb3512 100644
Binary files a/icons/obj/items/clothing/ties.dmi and b/icons/obj/items/clothing/ties.dmi differ
diff --git a/icons/obj/items/clothing/uniforms.dmi b/icons/obj/items/clothing/uniforms.dmi
index f5d782e9dc0f..bf8e5831607c 100644
Binary files a/icons/obj/items/clothing/uniforms.dmi and b/icons/obj/items/clothing/uniforms.dmi differ
diff --git a/icons/obj/items/paper.dmi b/icons/obj/items/paper.dmi
index fa8858e8a17b..b15d4be6076d 100644
Binary files a/icons/obj/items/paper.dmi and b/icons/obj/items/paper.dmi differ
diff --git a/icons/obj/items/surgery_tools.dmi b/icons/obj/items/surgery_tools.dmi
index a5df6761d289..c5e30c0c8c2f 100644
Binary files a/icons/obj/items/surgery_tools.dmi and b/icons/obj/items/surgery_tools.dmi differ
diff --git a/icons/obj/items/weapons/guns/lineart.dmi b/icons/obj/items/weapons/guns/lineart.dmi
index 7212525c804f..212b3988fc02 100644
Binary files a/icons/obj/items/weapons/guns/lineart.dmi and b/icons/obj/items/weapons/guns/lineart.dmi differ
diff --git a/icons/obj/items/weapons/guns/lineart_modes.dmi b/icons/obj/items/weapons/guns/lineart_modes.dmi
new file mode 100644
index 000000000000..787fdd34f241
Binary files /dev/null and b/icons/obj/items/weapons/guns/lineart_modes.dmi differ
diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm
index 967912377260..2ed8035a7972 100644
--- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm
+++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm
@@ -9203,10 +9203,6 @@
"dYp" = (
/turf/closed/wall/shiva/ice,
/area/shiva/interior/bar)
-"dYw" = (
-/obj/structure/machinery/defenses/sentry/premade,
-/turf/open/auto_turf/snow/layer0,
-/area/shiva/exterior/junkyard)
"dZb" = (
/obj/structure/closet/secure_closet/guncabinet,
/obj/structure/machinery/firealarm{
@@ -45631,7 +45627,7 @@ kyD
tHd
pDr
tHd
-dYw
+kyD
kyD
kyD
kyD
@@ -45793,7 +45789,7 @@ tHd
kyD
pDr
kyD
-dYw
+kyD
kyD
kyD
kyD
diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm
index 5a0bb9dfc88d..cd28e7341917 100644
--- a/maps/map_files/LV624/LV624.dmm
+++ b/maps/map_files/LV624/LV624.dmm
@@ -6359,8 +6359,9 @@
},
/area/lv624/lazarus/sleep_male)
"aCV" = (
+/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/gm/grass/grass1,
-/area/lv624/lazarus/sleep_male)
+/area/lv624/ground/jungle/central_jungle)
"aCX" = (
/turf/open/floor/grass,
/area/lv624/lazarus/main_hall)
@@ -7934,11 +7935,11 @@
"aIE" = (
/obj/structure/flora/bush/ausbushes/var3/stalkybush,
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 11;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 11;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -9548,6 +9549,7 @@
/area/lv624/ground/caves/north_east_caves)
"aPN" = (
/obj/structure/window_frame/colony/reinforced,
+/obj/item/stack/rods,
/turf/open/floor/plating,
/area/lv624/lazarus/comms)
"aPO" = (
@@ -9558,8 +9560,7 @@
req_one_access = null
},
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "delivery"
},
/area/lv624/lazarus/comms)
"aPR" = (
@@ -9845,38 +9846,28 @@
"aRd" = (
/obj/structure/surface/table,
/obj/item/device/mmi/radio_enabled,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
- },
-/area/lv624/lazarus/comms)
-"aRe" = (
-/obj/structure/surface/table,
-/obj/item/device/flashlight,
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/turf/open/floor{
dir = 9;
icon_state = "brown"
},
/area/lv624/lazarus/comms)
-"aRf" = (
-/obj/structure/surface/table,
-/obj/item/device/radio/headset{
- frequency = 1469;
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/device/radio/headset{
- frequency = 1469
- },
-/obj/structure/machinery/light{
- dir = 1
+"aRe" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/machinery/power/monitor,
+/obj/item/ashtray/glass{
+ pixel_x = 3;
+ pixel_y = 15
},
/turf/open/floor{
dir = 9;
icon_state = "brown"
},
/area/lv624/lazarus/comms)
+"aRf" = (
+/obj/structure/flora/bush/ausbushes/lavendergrass,
+/turf/open/gm/grass/grass1,
+/area/lv624/ground/jungle/west_central_jungle)
"aRg" = (
/turf/open/floor/plating,
/area/lv624/lazarus/landing_zones/lz2)
@@ -9888,10 +9879,11 @@
},
/area/lv624/lazarus/chapel)
"aRi" = (
-/obj/structure/surface/table,
-/obj/item/ashtray/glass,
-/obj/item/tool/crowbar,
-/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
+/obj/structure/machinery/light{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage,
/turf/open/floor{
dir = 9;
icon_state = "brown"
@@ -10120,8 +10112,14 @@
/turf/open/floor/plating,
/area/lv624/lazarus/landing_zones/lz1)
"aSd" = (
-/obj/structure/bed/chair/office/light{
- dir = 1
+/obj/structure/machinery/blackbox_recorder,
+/obj/item/prop/almayer/flight_recorder/colony{
+ pixel_x = -6;
+ pixel_y = 10
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
},
/turf/open/floor{
dir = 9;
@@ -10129,8 +10127,12 @@
},
/area/lv624/lazarus/comms)
"aSe" = (
-/obj/structure/surface/table,
-/obj/item/device/multitool,
+/obj/structure/machinery/cm_vending/sorted/tech/comp_storage,
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 1
+ },
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
dir = 9;
icon_state = "brown"
@@ -10270,30 +10272,24 @@
},
/area/lv624/lazarus/canteen)
"aSI" = (
-/obj/structure/machinery/computer/telecomms/server,
+/obj/structure/machinery/light{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
dir = 9;
icon_state = "brown"
},
/area/lv624/lazarus/comms)
"aSJ" = (
-/obj/item/device/radio/intercom{
- freerange = 1;
- frequency = 1469;
- name = "General Listening Channel";
- pixel_x = -30
- },
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "podhatchfloor"
},
/area/lv624/lazarus/comms)
"aSK" = (
-/obj/structure/machinery/computer/telecomms/traffic,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
- },
+/obj/structure/window_frame/colony/reinforced,
+/obj/item/shard,
+/turf/open/floor/plating,
/area/lv624/lazarus/comms)
"aSL" = (
/turf/closed/wall/r_wall,
@@ -10382,25 +10378,25 @@
"aTg" = (
/turf/closed/wall,
/area/lv624/lazarus/comms)
-"aTh" = (
-/obj/structure/reagent_dispensers/watertank,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
- },
-/area/lv624/lazarus/comms)
"aTi" = (
-/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
dir = 9;
icon_state = "brown"
},
/area/lv624/lazarus/comms)
"aTj" = (
-/obj/structure/machinery/blackbox_recorder,
-/obj/item/prop/almayer/flight_recorder/colony{
- pixel_x = -6;
- pixel_y = 10
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
+ },
+/obj/structure/machinery/computer/telecomms/traffic{
+ layer = 3.1;
+ pixel_y = 16
+ },
+/obj/structure/bed/chair/office/light{
+ dir = 1;
+ layer = 3.2
},
/turf/open/floor{
dir = 9;
@@ -10410,8 +10406,7 @@
"aTk" = (
/obj/effect/landmark/static_comms/net_one,
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "podhatchfloor"
},
/area/lv624/lazarus/comms)
"aTo" = (
@@ -10446,6 +10441,11 @@
/obj/structure/machinery/colony_floodlight_switch{
pixel_y = 30
},
+/obj/item/device/assembly/voice,
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
+ },
/turf/open/floor{
icon_state = "dark"
},
@@ -10537,7 +10537,6 @@
/obj/structure/machinery/power/apc{
dir = 1;
name = "Telecomms APC";
- pixel_y = 30;
start_charge = 15
},
/turf/open/floor{
@@ -10545,7 +10544,12 @@
},
/area/lv624/lazarus/comms)
"aTK" = (
-/turf/open/gm/dirt,
+/obj/structure/surface/rack,
+/obj/item/device/multitool,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
/area/lv624/lazarus/comms)
"aTM" = (
/turf/open/floor{
@@ -10553,6 +10557,10 @@
},
/area/lv624/lazarus/engineering)
"aTN" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full"
+ },
/turf/open/floor/plating{
icon_state = "warnplate"
},
@@ -10679,22 +10687,18 @@
req_one_access = null
},
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "delivery"
},
/area/lv624/lazarus/comms)
"aUl" = (
-/obj/item/device/multitool,
-/obj/structure/surface/rack,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
- },
-/area/lv624/lazarus/comms)
+/turf/open/gm/dirtgrassborder/south,
+/area/lv624/ground/colony/north_tcomms_road)
"aUo" = (
/obj/effect/spawner/random/toolbox,
/obj/structure/surface/table/reinforced/prison,
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/foamed_metal,
/turf/open/floor{
icon_state = "dark"
},
@@ -10711,17 +10715,18 @@
},
/area/lv624/lazarus/engineering)
"aUt" = (
-/obj/structure/surface/table/reinforced/prison,
-/obj/item/device/assembly/timer,
-/obj/item/device/assembly/voice,
-/obj/item/tool/crowbar,
-/turf/open/floor{
- icon_state = "dark"
- },
-/area/lv624/lazarus/engineering)
+/obj/structure/flora/jungle/vines/heavy,
+/obj/structure/window_frame/colony,
+/obj/item/shard,
+/turf/open/floor/plating,
+/area/lv624/lazarus/yggdrasil)
"aUu" = (
/obj/structure/machinery/light,
/obj/structure/bed/stool,
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 2
+ },
/turf/open/floor{
icon_state = "dark"
},
@@ -10887,6 +10892,7 @@
/area/lv624/ground/jungle/south_west_jungle)
"aVb" = (
/obj/structure/machinery/light,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
dir = 9;
icon_state = "brown"
@@ -10899,6 +10905,7 @@
/obj/structure/machinery/power/geothermal{
fail_rate = 5
},
+/obj/structure/platform,
/turf/open/floor/plating{
dir = 6;
icon_state = "warnplate"
@@ -10917,6 +10924,10 @@
/obj/structure/machinery/power/geothermal{
fail_rate = 5
},
+/obj/item/clothing/head/hardhat/orange{
+ pixel_x = -7;
+ pixel_y = 13
+ },
/turf/open/floor/plating{
dir = 8;
icon_state = "warnplate"
@@ -10935,6 +10946,9 @@
},
/area/lv624/lazarus/engineering)
"aVj" = (
+/obj/structure/platform_decoration{
+ dir = 1
+ },
/obj/structure/machinery/door/airlock/almayer/engineering/colony{
dir = 1;
locked = 1;
@@ -10943,7 +10957,7 @@
req_one_access = null
},
/turf/open/floor{
- icon_state = "dark"
+ icon_state = "delivery"
},
/area/lv624/lazarus/engineering)
"aVk" = (
@@ -11044,11 +11058,12 @@
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_west_jungle)
"aVF" = (
-/obj/structure/machinery/power/apc{
- dir = 1;
- name = "Geothermal APC";
- pixel_y = 30;
- start_charge = 0
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 30
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
},
/turf/open/floor{
icon_state = "dark"
@@ -11061,22 +11076,28 @@
name = "General Listening Channel";
pixel_y = 30
},
+/obj/structure/stairs/perspective{
+ dir = 4;
+ icon_state = "p_stair_full"
+ },
+/obj/structure/platform/stair_cut,
+/obj/item/clothing/head/hardhat/orange,
/turf/open/floor{
icon_state = "dark"
},
/area/lv624/lazarus/engineering)
"aVH" = (
-/obj/item/clothing/head/hardhat/orange,
/obj/structure/machinery/light{
dir = 1
},
+/obj/structure/foamed_metal,
/turf/open/floor{
icon_state = "dark"
},
/area/lv624/lazarus/engineering)
"aVI" = (
-/obj/structure/foamed_metal,
/obj/structure/machinery/vending/coffee,
+/obj/structure/foamed_metal,
/turf/open/floor{
icon_state = "dark"
},
@@ -11178,17 +11199,17 @@
/turf/open/floor/plating,
/area/lv624/lazarus/secure_storage)
"aWd" = (
-/obj/structure/machinery/cm_vending/sorted/tech/comp_storage,
+/obj/item/shard,
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "podhatchfloor"
},
/area/lv624/lazarus/comms)
"aWe" = (
-/obj/structure/machinery/computer/telecomms/monitor,
+/obj/structure/machinery/computer/telecomms/monitor{
+ pixel_y = 16
+ },
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "dark"
},
/area/lv624/lazarus/comms)
"aWf" = (
@@ -11197,9 +11218,8 @@
req_access_txt = "100";
req_one_access = null
},
-/obj/structure/foamed_metal,
/turf/open/floor{
- icon_state = "dark"
+ icon_state = "delivery"
},
/area/lv624/lazarus/engineering)
"aWg" = (
@@ -11207,6 +11227,7 @@
/obj/structure/lattice{
layer = 2.9
},
+/obj/structure/platform,
/turf/open/floor/plating{
dir = 10;
icon_state = "warnplate"
@@ -11302,28 +11323,38 @@
/obj/effect/decal/remains/xeno,
/turf/open/gm/dirt,
/area/lv624/ground/colony/south_medbay_road)
-"aWx" = (
-/obj/structure/bed/chair/office/light,
+"aWy" = (
+/obj/structure/surface/table,
+/obj/item/device/radio/headset{
+ frequency = 1469;
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/device/radio/headset{
+ frequency = 1469
+ },
+/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/turf/open/floor{
dir = 9;
icon_state = "brown"
},
/area/lv624/lazarus/comms)
-"aWy" = (
-/obj/structure/foamed_metal,
-/turf/open/gm/dirt,
-/area/lv624/lazarus/comms)
"aWz" = (
/obj/structure/window_frame/colony/reinforced,
/turf/open/floor/plating,
/area/lv624/lazarus/engineering)
"aWA" = (
-/obj/structure/foamed_metal,
-/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage,
+/obj/structure/machinery/computer/telecomms/server{
+ pixel_y = 16
+ },
+/obj/structure/bed/chair/office/light{
+ dir = 1
+ },
/turf/open/floor{
- icon_state = "dark"
+ dir = 9;
+ icon_state = "brown"
},
-/area/lv624/lazarus/engineering)
+/area/lv624/lazarus/comms)
"aWC" = (
/obj/structure/machinery/colony_floodlight,
/turf/open/gm/grass/grass1,
@@ -11335,31 +11366,35 @@
},
/area/lv624/lazarus/engineering)
"aWE" = (
-/obj/structure/sign/safety/high_voltage{
- pixel_x = 7;
- pixel_y = -32
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 1
},
-/obj/structure/surface/table/reinforced/prison,
-/obj/item/tool/extinguisher,
-/obj/effect/spawner/random/powercell,
+/obj/item/prop/alien/hugger,
/turf/open/floor{
- icon_state = "dark"
+ dir = 9;
+ icon_state = "brown"
},
-/area/lv624/lazarus/engineering)
+/area/lv624/lazarus/comms)
"aWF" = (
+/obj/effect/spawner/random/toolbox,
+/obj/structure/surface/table/reinforced/prison,
+/obj/item/device/radio,
+/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/obj/structure/machinery/light,
-/obj/structure/machinery/power/monitor{
- name = "Main Power Grid Monitoring"
- },
/turf/open/floor{
icon_state = "dark"
},
/area/lv624/lazarus/engineering)
"aWG" = (
-/obj/effect/spawner/random/toolbox,
-/obj/structure/surface/table/reinforced/prison,
-/obj/item/device/radio,
-/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
+/obj/structure/stairs/perspective{
+ dir = 4;
+ icon_state = "p_stair_full"
+ },
+/obj/structure/platform{
+ layer = 3.1
+ },
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -11368,6 +11403,10 @@
/obj/structure/surface/table/reinforced/prison,
/obj/item/folder,
/obj/item/device/assembly/signaller,
+/obj/structure/platform_decoration{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -11377,6 +11416,7 @@
/obj/item/device/flashlight,
/obj/effect/spawner/random/tool,
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -11456,46 +11496,35 @@
/turf/open/floor/greengrid,
/area/lv624/lazarus/secure_storage)
"aWX" = (
-/obj/structure/surface/table,
-/obj/item/tool/weldingtool,
-/obj/item/tool/wrench,
-/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
},
-/area/lv624/lazarus/comms)
-"aWY" = (
-/obj/structure/surface/table,
-/obj/item/device/radio/off{
- frequency = 1469
+/obj/structure/machinery/light{
+ dir = 4
},
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/rods,
/turf/open/floor{
dir = 9;
icon_state = "brown"
},
/area/lv624/lazarus/comms)
+"aWY" = (
+/turf/closed/wall,
+/area/lv624/lazarus/yggdrasil)
"aWZ" = (
-/obj/structure/surface/table,
-/obj/item/clothing/head/soft/blue,
-/obj/structure/machinery/light,
-/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
- },
-/area/lv624/lazarus/comms)
+/obj/structure/flora/bush/ausbushes/lavendergrass,
+/turf/open/gm/grass/grass1,
+/area/lv624/ground/colony/west_tcomms_road)
"aXa" = (
-/obj/structure/surface/table,
-/obj/item/device/radio/off{
- frequency = 1469
- },
-/obj/item/tool/crowbar,
/obj/structure/machinery/light,
-/obj/item/tool/hatchet{
- pixel_x = 6;
- pixel_y = 4
+/obj/structure/stairs/perspective{
+ dir = 8;
+ icon_state = "p_stair_full"
},
+/obj/structure/platform,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
dir = 9;
icon_state = "brown"
@@ -11508,11 +11537,24 @@
},
/area/lv624/lazarus/sleep_male)
"aXd" = (
-/turf/open/gm/dirtgrassborder/south,
+/obj/structure/bed/chair/office/light{
+ dir = 1
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
/area/lv624/lazarus/comms)
"aXe" = (
-/obj/structure/foamed_metal,
-/turf/open/gm/dirtgrassborder/south,
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/obj/item/tool/crowbar,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
/area/lv624/lazarus/comms)
"aXf" = (
/obj/structure/machinery/door/airlock/almayer/engineering/colony{
@@ -11523,7 +11565,7 @@
req_one_access = null
},
/turf/open/floor{
- icon_state = "dark"
+ icon_state = "delivery"
},
/area/lv624/lazarus/engineering)
"aXg" = (
@@ -11534,7 +11576,7 @@
req_one_access = null
},
/turf/open/floor{
- icon_state = "dark"
+ icon_state = "delivery"
},
/area/lv624/lazarus/engineering)
"aXh" = (
@@ -11559,19 +11601,29 @@
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_west_jungle)
"aXn" = (
-/obj/structure/fence,
-/turf/open/gm/grass/grass1,
-/area/lv624/ground/jungle/south_central_jungle)
+/obj/effect/decal/warning_stripes{
+ icon_state = "NE-out";
+ pixel_x = 1;
+ pixel_y = 1
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"aXo" = (
/obj/effect/landmark/crap_item,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/east_central_jungle)
"aXs" = (
-/obj/structure/extinguisher_cabinet{
- pixel_y = 30
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/machinery/power/apc{
+ dir = 1;
+ name = "Geothermal APC";
+ start_charge = 0
},
/turf/open/floor{
- icon_state = "dark"
+ icon_state = "delivery"
},
/area/lv624/lazarus/engineering)
"aXt" = (
@@ -11592,6 +11644,7 @@
dir = 1
},
/obj/structure/reagent_dispensers/fueltank,
+/obj/effect/spawner/random/tool,
/turf/open/floor{
icon_state = "dark"
},
@@ -11684,6 +11737,7 @@
/obj/structure/machinery/light{
dir = 4
},
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -11698,6 +11752,7 @@
/area/lv624/lazarus/security)
"aXN" = (
/obj/effect/spawner/random/powercell,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -11744,7 +11799,14 @@
/area/lv624/lazarus/landing_zones/lz2)
"aXZ" = (
/obj/structure/surface/rack,
-/obj/effect/spawner/random/tool,
+/obj/item/weapon/gun/smg/nailgun,
+/obj/item/weapon/gun/smg/nailgun,
+/obj/item/ammo_magazine/smg/nailgun,
+/obj/item/ammo_magazine/smg/nailgun,
+/obj/item/ammo_magazine/smg/nailgun,
+/obj/item/ammo_magazine/smg/nailgun,
+/obj/item/ammo_magazine/smg/nailgun,
+/obj/item/ammo_magazine/smg/nailgun,
/turf/open/floor{
icon_state = "dark"
},
@@ -11773,19 +11835,13 @@
/turf/open/floor/greengrid,
/area/lv624/lazarus/secure_storage)
"aYh" = (
-/obj/structure/surface/rack,
-/obj/item/weapon/gun/smg/nailgun,
-/obj/item/weapon/gun/smg/nailgun,
-/obj/item/ammo_magazine/smg/nailgun,
-/obj/item/ammo_magazine/smg/nailgun,
-/obj/item/ammo_magazine/smg/nailgun,
-/obj/item/ammo_magazine/smg/nailgun,
-/obj/item/ammo_magazine/smg/nailgun,
-/obj/item/ammo_magazine/smg/nailgun,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/rods,
/turf/open/floor{
- icon_state = "dark"
+ dir = 9;
+ icon_state = "brown"
},
-/area/lv624/lazarus/engineering)
+/area/lv624/lazarus/comms)
"aYj" = (
/obj/effect/landmark/lv624/xeno_tunnel,
/obj/structure/flora/jungle/vines/light_3,
@@ -11982,15 +12038,6 @@
/obj/effect/landmark/lv624/fog_blocker,
/turf/open/gm/dirt,
/area/lv624/ground/river/west_river)
-"aZc" = (
-/obj/structure/surface/table,
-/obj/item/weapon/twohanded/fireaxe,
-/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
-/turf/open/floor{
- dir = 9;
- icon_state = "brown"
- },
-/area/lv624/lazarus/comms)
"aZd" = (
/obj/structure/closet/radiation,
/obj/item/device/radio/intercom{
@@ -11999,6 +12046,7 @@
name = "General Listening Channel";
pixel_x = -30
},
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -12009,6 +12057,7 @@
/obj/item/book/manual/engineering_guide,
/obj/item/book/manual/engineering_hacking,
/obj/item/book/manual/atmospipes,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -12019,6 +12068,7 @@
/obj/item/device/analyzer,
/obj/item/device/multitool,
/obj/item/device/assembly/prox_sensor,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -12036,9 +12086,11 @@
"aZh" = (
/obj/structure/surface/table,
/obj/effect/landmark/objective_landmark/close,
+/obj/item/tool/crowbar,
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/turf/open/floor{
- dir = 9;
- icon_state = "brown"
+ icon_state = "dark"
},
/area/lv624/lazarus/comms)
"aZi" = (
@@ -12112,6 +12164,7 @@
/obj/structure/machinery/light{
dir = 8
},
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -12119,6 +12172,7 @@
"aZy" = (
/obj/structure/closet/secure_closet/engineering_personal,
/obj/effect/landmark/objective_landmark/close,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -12191,14 +12245,28 @@
},
/area/lv624/lazarus/hop)
"aZG" = (
-/obj/structure/filingcabinet,
-/obj/effect/landmark/objective_landmark/close,
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
/turf/open/floor{
- icon_state = "dark"
+ dir = 9;
+ icon_state = "brown"
},
-/area/lv624/lazarus/engineering)
+/area/lv624/lazarus/comms)
"aZI" = (
-/obj/structure/filingcabinet/chestdrawer,
+/obj/structure/filingcabinet/chestdrawer{
+ density = 0;
+ pixel_x = -8;
+ pixel_y = 16
+ },
+/obj/structure/filingcabinet{
+ density = 0;
+ pixel_x = 7;
+ pixel_y = 16
+ },
+/obj/effect/landmark/objective_landmark/close,
+/obj/effect/decal/cleanable/dirt,
/turf/open/floor{
icon_state = "dark"
},
@@ -12212,8 +12280,11 @@
},
/area/lv624/lazarus/engineering)
"aZK" = (
-/obj/structure/surface/rack,
-/obj/item/clothing/mask/gas,
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -1;
+ pixel_y = 1
+ },
/turf/open/floor{
dir = 9;
icon_state = "brown"
@@ -12347,11 +12418,11 @@
/area/lv624/ground/caves/west_caves)
"bcU" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_east_caves)
@@ -12741,6 +12812,13 @@
},
/turf/open/gm/coast/beachcorner/north_east,
/area/lv624/ground/caves/sand_temple)
+"bJe" = (
+/obj/structure/reagent_dispensers/watertank,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"bJz" = (
/obj/effect/decal/cleanable/blood,
/obj/effect/landmark/corpsespawner/wygoon,
@@ -12760,6 +12838,18 @@
"bLE" = (
/turf/open/gm/dirtgrassborder/south,
/area/lv624/ground/caves/sand_temple)
+"bLH" = (
+/obj/structure/machinery/power/monitor{
+ name = "Main Power Grid Monitoring"
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 2
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"bMu" = (
/turf/open/gm/dirtgrassborder/west,
/area/lv624/ground/jungle/east_jungle)
@@ -12790,10 +12880,10 @@
/area/lv624/ground/barrens/south_eastern_barrens)
"bOm" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 4;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 4
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/barrens/north_east_barrens)
@@ -12815,6 +12905,13 @@
/obj/structure/flora/bush/ausbushes/pointybush,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_west_caves)
+"bQf" = (
+/obj/structure/machinery/power/port_gen/pacman/super,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"bQz" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node,
/obj/effect/decal/grass_overlay/grass1{
@@ -12855,6 +12952,13 @@
},
/turf/open/floor/vault,
/area/lv624/lazarus/quartstorage)
+"bUc" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/shard,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"bUs" = (
/obj/structure/surface/table/woodentable/poor,
/obj/item/ammo_magazine/shotgun/buckshot,
@@ -13001,11 +13105,11 @@
/area/lv624/ground/caves/west_caves)
"chi" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -13137,9 +13241,12 @@
/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node,
/turf/open/gm/dirt,
/area/lv624/ground/barrens/central_barrens)
+"ctS" = (
+/obj/structure/fence,
+/turf/open/gm/dirt,
+/area/lv624/ground/colony/west_tcomms_road)
"cvk" = (
/obj/structure/fence,
-/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/gm/dirtgrassborder/east,
/area/lv624/ground/jungle/west_central_jungle)
"cwv" = (
@@ -13164,6 +13271,18 @@
/obj/structure/foamed_metal,
/turf/open/gm/dirtgrassborder/south,
/area/lv624/ground/jungle/east_central_jungle)
+"cyP" = (
+/obj/structure/stairs/perspective{
+ dir = 8;
+ icon_state = "p_stair_full"
+ },
+/obj/structure/platform/stair_cut/alt,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"czq" = (
/obj/effect/landmark/objective_landmark/science,
/turf/open/auto_turf/strata_grass/layer1,
@@ -13323,6 +13442,17 @@
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/north_west_caves)
+"cNE" = (
+/obj/structure/machinery/light{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/item/shard,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"cNH" = (
/obj/structure/surface/rack,
/obj/item/storage/box/beakers,
@@ -13356,6 +13486,14 @@
/obj/structure/machinery/colony_floodlight,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_west_jungle)
+"cQU" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/item/device/multitool,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"cQX" = (
/obj/structure/stairs/perspective{
color = "#b29082";
@@ -13587,6 +13725,15 @@
icon_state = "dark"
},
/area/lv624/ground/barrens/north_east_barrens/ceiling)
+"drX" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "N";
+ pixel_y = 1
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"dsi" = (
/obj/effect/landmark/monkey_spawn,
/turf/open/gm/dirt,
@@ -13680,10 +13827,10 @@
/area/lv624/ground/caves/south_central_caves)
"dBS" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_west_caves)
@@ -13761,6 +13908,13 @@
/obj/effect/landmark/lv624/fog_blocker,
/turf/open/gm/dirtgrassborder/grassdirt_corner/south_east,
/area/lv624/ground/jungle/north_jungle)
+"dHr" = (
+/obj/item/weapon/twohanded/fireaxe,
+/obj/effect/decal/cleanable/blood,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"dId" = (
/obj/structure/machinery/cm_vending/sorted/medical/no_access,
/turf/open/floor{
@@ -14137,6 +14291,16 @@
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/east_caves)
+"elO" = (
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"enn" = (
/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node,
/obj/effect/decal/grass_overlay/grass1{
@@ -14223,6 +14387,16 @@
/obj/effect/landmark/objective_landmark/medium,
/turf/open/gm/dirt,
/area/lv624/ground/caves/south_west_caves)
+"euU" = (
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"euW" = (
/obj/structure/surface/table/woodentable/poor,
/obj/item/tool/candle,
@@ -14245,10 +14419,18 @@
/turf/open/gm/dirtgrassborder/north,
/area/lv624/ground/jungle/south_west_jungle)
"eyb" = (
-/obj/structure/fence,
-/obj/structure/flora/bush/ausbushes/lavendergrass,
-/turf/open/gm/dirtgrassborder/west,
-/area/lv624/ground/colony/west_tcomms_road)
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -1;
+ pixel_y = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/item/shard,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"eyn" = (
/obj/structure/flora/jungle/vines/light_3,
/turf/closed/wall/strata_ice/jungle,
@@ -14497,11 +14679,11 @@
/area/lv624/ground/jungle/east_jungle)
"fcQ" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -5;
- pixel_y = -5;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -5;
+ pixel_y = -5
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -14561,6 +14743,13 @@
/obj/structure/flora/jungle/vines/light_2,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_east_jungle)
+"fij" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/bed/chair/office/light,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"fio" = (
/obj/structure/flora/grass/tallgrass/jungle/corner{
dir = 9
@@ -14725,6 +14914,12 @@
icon_state = "squareswood"
},
/area/lv624/ground/caves/sand_temple)
+"fAs" = (
+/obj/item/tool/crowbar,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"fAz" = (
/obj/structure/machinery/cm_vending/sorted/medical/no_access,
/turf/open/floor{
@@ -14858,10 +15053,26 @@
/obj/structure/flora/bush/ausbushes/ausbush,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
+"fLf" = (
+/obj/effect/landmark/survivor_spawner,
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"fLh" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/angel,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/west_caves)
+"fMa" = (
+/obj/item/prop/alien/hugger,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"fMl" = (
/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{
dir = 1;
@@ -14884,6 +15095,16 @@
"fPH" = (
/turf/open/gm/dirtgrassborder/south,
/area/lv624/ground/jungle/west_central_jungle)
+"fQx" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -1;
+ pixel_y = 2
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"fQL" = (
/turf/open/gm/coast/beachcorner2/south_east,
/area/lv624/ground/river/west_river)
@@ -14974,11 +15195,11 @@
/area/lv624/ground/jungle/south_central_jungle)
"gcB" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 6;
- pixel_y = -8;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 6;
+ pixel_y = -8
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
@@ -15069,11 +15290,11 @@
/area/lv624/ground/barrens/south_eastern_jungle_barrens)
"gnt" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -5;
- pixel_y = -5;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -5;
+ pixel_y = -5
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_west_caves)
@@ -15096,10 +15317,15 @@
/turf/open/gm/dirtgrassborder/grassdirt_corner/south_west,
/area/lv624/ground/jungle/west_central_jungle)
"gqG" = (
-/obj/item/device/assembly/infra,
+/obj/structure/sign/safety/high_voltage{
+ pixel_x = 7;
+ pixel_y = -32
+ },
/obj/structure/surface/table/reinforced/prison,
+/obj/item/tool/extinguisher,
+/obj/effect/spawner/random/powercell,
+/obj/item/device/assembly/infra,
/obj/effect/spawner/random/powercell,
-/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
/turf/open/floor{
icon_state = "dark"
},
@@ -15269,12 +15495,20 @@
/turf/open/gm/dirt,
/area/lv624/ground/caves/south_central_caves)
"gKg" = (
-/obj/item/clothing/head/hardhat/orange,
/turf/open/floor/plating{
dir = 5;
icon_state = "warnplate"
},
/area/lv624/lazarus/engineering)
+"gKN" = (
+/obj/structure/platform_decoration{
+ dir = 8
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"gMe" = (
/obj/effect/landmark/nightmare{
insert_tag = "lv-rightsidepass"
@@ -15469,11 +15703,11 @@
/area/lv624/lazarus/landing_zones/lz2)
"hez" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
@@ -15580,11 +15814,11 @@
/area/lv624/ground/caves/north_central_caves)
"hpK" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_central_caves)
@@ -15625,10 +15859,10 @@
/area/lv624/ground/river/central_river)
"htV" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 4;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 4
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/west_caves)
@@ -15689,6 +15923,13 @@
/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane,
/turf/open/gm/dirt,
/area/lv624/ground/caves/central_caves)
+"hDe" = (
+/obj/structure/bed/stool,
+/obj/item/prop/alien/hugger,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"hDX" = (
/obj/effect/decal/remains/xeno,
/turf/open/gm/dirt,
@@ -15748,6 +15989,20 @@
/obj/effect/landmark/objective_landmark/far,
/turf/open/floor/vault,
/area/lv624/lazarus/quartstorage)
+"hJh" = (
+/obj/structure/coatrack{
+ pixel_x = 11;
+ pixel_y = 14
+ },
+/obj/item/clothing/head/soft/blue{
+ pixel_x = 7;
+ pixel_y = 28
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"hJn" = (
/obj/structure/flora/jungle/vines/light_2,
/turf/open/gm/grass/grass2,
@@ -15806,6 +16061,18 @@
/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
+"hOo" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full"
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/item/stack/rods,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"hPV" = (
/obj/effect/decal/remains/xeno{
pixel_x = 31
@@ -15974,11 +16241,11 @@
/area/lv624/lazarus/landing_zones/lz1)
"ieN" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/west_caves)
@@ -16021,6 +16288,16 @@
/obj/effect/landmark/queen_spawn,
/turf/open/gm/dirt,
/area/lv624/ground/caves/east_caves)
+"iiO" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -1;
+ pixel_y = 1
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"ikA" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle,
/turf/open/auto_turf/strata_grass/layer1,
@@ -16076,8 +16353,11 @@
/turf/open/gm/dirt,
/area/lv624/ground/caves/north_east_caves)
"isR" = (
-/obj/effect/landmark/objective_landmark/medium,
-/obj/structure/largecrate/random,
+/obj/structure/surface/table,
+/obj/item/device/flashlight,
+/obj/item/device/radio/off{
+ frequency = 1469
+ },
/turf/open/floor{
dir = 9;
icon_state = "brown"
@@ -16348,6 +16628,19 @@
/obj/structure/flora/bush/ausbushes/var3/fullgrass,
/turf/open/gm/grass/grass1,
/area/lv624/ground/colony/west_tcomms_road)
+"iYL" = (
+/obj/item/device/radio/intercom{
+ freerange = 1;
+ frequency = 1469;
+ name = "General Listening Channel";
+ pixel_y = 26
+ },
+/obj/item/prop/alien/hugger,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"iZG" = (
/obj/effect/landmark/crap_item,
/turf/open/gm/dirt,
@@ -16388,9 +16681,25 @@
/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_west_jungle)
+"jdL" = (
+/obj/structure/foamed_metal,
+/obj/structure/flora/jungle/vines/light_2,
+/turf/open/floor/plating{
+ icon_state = "warnplate"
+ },
+/area/lv624/lazarus/engineering)
"jeL" = (
/turf/closed/wall/r_wall,
/area/lv624/ground/caves/north_central_caves)
+"jfN" = (
+/obj/structure/platform{
+ dir = 4
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"jga" = (
/turf/open/gm/river,
/area/lv624/ground/jungle/west_jungle)
@@ -16516,6 +16825,11 @@
/turf/open/gm/dirt,
/area/lv624/ground/caves/west_caves)
"jwW" = (
+/obj/structure/platform_decoration,
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full"
+ },
/turf/open/floor/plating{
dir = 6;
icon_state = "warnplate"
@@ -16807,11 +17121,11 @@
/area/lv624/ground/jungle/north_west_jungle)
"jRL" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/east_caves)
@@ -17054,6 +17368,11 @@
"kvo" = (
/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west,
/area/lv624/ground/jungle/east_central_jungle)
+"kvv" = (
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"kvE" = (
/obj/structure/machinery/landinglight/ds2/delaythree,
/turf/open/floor/plating,
@@ -17086,6 +17405,16 @@
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/south_west_caves)
+"kyz" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "NE-out";
+ pixel_x = 1;
+ pixel_y = 1
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"kyN" = (
/obj/structure/flora/bush/ausbushes/var3/ywflowers,
/turf/open/gm/grass/grass1,
@@ -17113,6 +17442,13 @@
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/north_west_caves)
+"kzp" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/foamed_metal,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"kzu" = (
/obj/structure/flora/bush/ausbushes/grassybush,
/turf/open/gm/grass/grass1,
@@ -17208,6 +17544,20 @@
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/north_west_caves)
+"kKL" = (
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"kLl" = (
/obj/effect/decal/grass_overlay/grass1/inner{
dir = 8
@@ -17318,11 +17668,13 @@
/turf/open/gm/dirt,
/area/lv624/ground/caves/west_caves)
"kWX" = (
+/obj/effect/landmark/objective_landmark/medium,
+/obj/structure/largecrate/random,
/turf/open/floor{
- dir = 8;
- icon_state = "asteroidwarning"
+ dir = 9;
+ icon_state = "brown"
},
-/area/lv624/ground/colony/telecomm/sw_lz2)
+/area/lv624/lazarus/comms)
"kXE" = (
/obj/structure/flora/bush/ausbushes/ausbush,
/turf/open/gm/dirtgrassborder/north,
@@ -17517,10 +17869,12 @@
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/central_jungle)
"lud" = (
-/obj/structure/fence,
-/obj/structure/flora/bush/ausbushes/lavendergrass,
-/turf/open/gm/dirtgrassborder/west,
-/area/lv624/ground/colony/north_tcomms_road)
+/obj/structure/foamed_metal,
+/obj/structure/flora/jungle/vines/heavy,
+/turf/open/floor/plating{
+ icon_state = "warnplate"
+ },
+/area/lv624/lazarus/engineering)
"lxr" = (
/obj/structure/flora/jungle/vines/light_2,
/turf/open/gm/dirtgrassborder/south,
@@ -17561,6 +17915,16 @@
icon_state = "desert0"
},
/area/lv624/ground/barrens/west_barrens)
+"lzW" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 1
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"lAX" = (
/obj/structure/flora/bush/ausbushes/reedbush,
/turf/open/gm/grass/grass1,
@@ -17701,11 +18065,11 @@
/area/lv624/lazarus/landing_zones/lz2)
"lKl" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 6;
- pixel_y = -8;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 6;
+ pixel_y = -8
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/west_caves)
@@ -17742,11 +18106,11 @@
/area/lv624/lazarus/corporate_dome)
"lNG" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_east_caves)
@@ -17758,6 +18122,11 @@
"lQC" = (
/turf/open/gm/dirt,
/area/lv624/ground/barrens/east_barrens)
+"lQP" = (
+/obj/structure/window_frame/colony,
+/obj/item/shard,
+/turf/open/floor/plating,
+/area/lv624/lazarus/comms)
"lRd" = (
/obj/item/stack/sheet/wood{
amount = 2
@@ -17911,11 +18280,11 @@
/area/lv624/ground/jungle/east_jungle)
"mca" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_central_caves)
@@ -17928,11 +18297,11 @@
/area/lv624/ground/jungle/south_east_jungle)
"mfn" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/east_caves)
@@ -18018,7 +18387,9 @@
"mkU" = (
/obj/structure/foamed_metal,
/obj/structure/flora/jungle/vines/light_2,
-/turf/open/floor/plating,
+/turf/open/floor{
+ icon_state = "delivery"
+ },
/area/lv624/lazarus/engineering)
"mkW" = (
/obj/structure/flora/grass/tallgrass/jungle/corner{
@@ -18026,6 +18397,15 @@
},
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/north_east_jungle)
+"mkZ" = (
+/obj/structure/platform_decoration{
+ dir = 4
+ },
+/obj/structure/foamed_metal,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"mmu" = (
/obj/structure/flora/jungle/plantbot1,
/turf/open/gm/grass/grass1,
@@ -18145,6 +18525,15 @@
/obj/structure/flora/jungle/vines/light_2,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_west_jungle)
+"mBH" = (
+/obj/structure/foamed_metal{
+ layer = 3.1
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"mBL" = (
/turf/open/floor{
dir = 1;
@@ -18523,6 +18912,17 @@
icon_state = "desert3"
},
/area/lv624/ground/barrens/west_barrens)
+"nrK" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full"
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"nrP" = (
/obj/structure/transmitter/colony_net{
phone_category = "Lazarus Landing";
@@ -18533,10 +18933,10 @@
/area/lv624/lazarus/quartstorage)
"nrR" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_east_caves)
@@ -18615,6 +19015,13 @@
/turf/open/gm/dirt,
/area/lv624/lazarus/landing_zones/lz2)
"nwR" = (
+/obj/structure/platform_decoration{
+ dir = 1
+ },
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full"
+ },
/turf/open/floor/plating{
dir = 10;
icon_state = "warnplate"
@@ -18828,11 +19235,11 @@
/area/lv624/lazarus/corporate_dome)
"nNu" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 6;
- pixel_y = -8;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 6;
+ pixel_y = -8
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/barrens/north_east_barrens)
@@ -18869,11 +19276,11 @@
/area/lv624/ground/caves/sand_temple)
"nQH" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 6;
- pixel_y = -8;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 6;
+ pixel_y = -8
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -19011,6 +19418,11 @@
/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/gm/grass/grass2,
/area/lv624/ground/barrens/south_eastern_jungle_barrens)
+"oas" = (
+/turf/open/floor{
+ icon_state = "delivery"
+ },
+/area/lv624/lazarus/engineering)
"oaL" = (
/obj/structure/flora/bush/ausbushes/ausbush,
/turf/open/gm/grass/grass1,
@@ -19097,6 +19509,7 @@
/turf/open/gm/dirt,
/area/lv624/ground/river/east_river)
"ogR" = (
+/obj/item/prop/alien/hugger,
/turf/open/floor/plating{
dir = 9;
icon_state = "warnplate"
@@ -19137,6 +19550,16 @@
/obj/effect/landmark/objective_landmark/close,
/turf/open/floor/plating,
/area/lv624/ground/barrens/central_barrens)
+"oiR" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"omu" = (
/obj/structure/flora/bush/ausbushes/var3/sparsegrass,
/turf/open/gm/dirt,
@@ -19186,11 +19609,11 @@
/area/lv624/ground/colony/telecomm/cargo)
"osf" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 11;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 11;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
@@ -19384,6 +19807,16 @@
icon_state = "asteroidplating"
},
/area/lv624/ground/caves/north_central_caves)
+"oIO" = (
+/obj/structure/surface/table,
+/obj/effect/decal/cleanable/dirt,
+/obj/item/device/radio/off{
+ frequency = 1469
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"oJL" = (
/obj/effect/landmark/crap_item,
/turf/open/gm/grass/grass1,
@@ -19455,6 +19888,15 @@
"oRH" = (
/turf/open/gm/dirtgrassborder/south,
/area/lv624/ground/jungle/north_east_jungle)
+"oRY" = (
+/obj/structure/surface/rack,
+/obj/item/clothing/mask/gas,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"oSh" = (
/obj/item/stack/sheet/wood{
amount = 2
@@ -19825,6 +20267,12 @@
icon_state = "white"
},
/area/lv624/lazarus/medbay)
+"pzP" = (
+/obj/effect/decal/cleanable/blood/oil,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"pAE" = (
/obj/structure/flora/bush/ausbushes/var3/leafybush,
/turf/open/auto_turf/strata_grass/layer1,
@@ -19955,8 +20403,8 @@
/area/lv624/lazarus/quartstorage/outdoors)
"pKm" = (
/turf/open/floor{
- icon_state = "asteroidwarning";
- dir = 8
+ dir = 8;
+ icon_state = "asteroidwarning"
},
/area/lv624/ground/colony/telecomm/sw_lz2)
"pKp" = (
@@ -19976,10 +20424,10 @@
/area/lv624/ground/colony/west_nexus_road)
"pLv" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 4;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 4
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_west_caves)
@@ -20110,10 +20558,10 @@
/area/lv624/ground/caves/east_caves)
"pVZ" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
@@ -20143,6 +20591,18 @@
/obj/item/clothing/mask/gas,
/turf/open/floor/vault,
/area/lv624/lazarus/quartstorage)
+"qap" = (
+/obj/structure/machinery/light,
+/obj/structure/stairs/perspective{
+ dir = 9;
+ icon_state = "p_stair_full"
+ },
+/obj/structure/platform,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"qaE" = (
/obj/effect/landmark/hunter_primary,
/obj/effect/landmark/queen_spawn,
@@ -20176,6 +20636,13 @@
icon_state = "white"
},
/area/lv624/lazarus/corporate_dome)
+"qez" = (
+/obj/effect/landmark/good_item,
+/obj/effect/decal/cleanable/blood/xeno,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"qeW" = (
/turf/open/gm/coast/beachcorner2/north_west,
/area/lv624/ground/caves/sand_temple)
@@ -20210,6 +20677,21 @@
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/west_caves)
+"qit" = (
+/obj/item/prop/alien/hugger{
+ pixel_x = -20;
+ pixel_y = 8
+ },
+/obj/item/tool/hatchet{
+ pixel_x = -14;
+ pixel_y = 6
+ },
+/obj/effect/decal/cleanable/blood/xeno,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"qiL" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/amanita,
/turf/open/auto_turf/strata_grass/layer1,
@@ -20418,7 +20900,9 @@
"qGR" = (
/obj/structure/foamed_metal,
/obj/structure/flora/jungle/vines/heavy,
-/turf/open/floor/plating,
+/turf/open/floor{
+ icon_state = "delivery"
+ },
/area/lv624/lazarus/engineering)
"qHC" = (
/obj/structure/largecrate/random/barrel/red,
@@ -20475,6 +20959,24 @@
/obj/structure/flora/jungle/alienplant1,
/turf/open/gm/river,
/area/lv624/ground/jungle/west_jungle)
+"qNl" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/reagent_dispensers/fueltank,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
+"qNz" = (
+/obj/structure/stairs/perspective{
+ dir = 1;
+ icon_state = "p_stair_full"
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"qNQ" = (
/obj/structure/machinery/landinglight/ds2/delayone{
dir = 4
@@ -20556,11 +21058,11 @@
/area/lv624/ground/caves/north_west_caves)
"qVi" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_east_caves)
@@ -20584,6 +21086,12 @@
icon_state = "vault"
},
/area/lv624/lazarus/quartstorage)
+"qXt" = (
+/obj/item/stack/rods,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"qYF" = (
/obj/structure/flora/bush/ausbushes/var3/sunnybush,
/turf/open/gm/dirt,
@@ -20697,10 +21205,10 @@
/area/lv624/ground/jungle/north_east_jungle)
"rhi" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 4;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 4
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/east_caves)
@@ -20714,32 +21222,40 @@
icon_state = "green"
},
/area/lv624/lazarus/hydroponics)
+"rkZ" = (
+/obj/item/shard,
+/obj/item/stack/rods,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"rmg" = (
-/obj/structure/machinery/power/monitor,
-/obj/structure/foamed_metal,
/obj/structure/machinery/light{
dir = 1
},
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/foamed_metal,
/turf/open/floor{
icon_state = "dark"
},
/area/lv624/lazarus/engineering)
"rmt" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 4;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 4
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_central_caves)
"rmW" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 11;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 11;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/west_caves)
@@ -20875,11 +21391,11 @@
/area/lv624/lazarus/corporate_dome)
"rAU" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 6;
- pixel_y = -8;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 6;
+ pixel_y = -8
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/east_caves)
@@ -20928,11 +21444,11 @@
/area/lv624/lazarus/quartstorage)
"rGE" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 6;
- pixel_y = -8;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 6;
+ pixel_y = -8
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_east_caves)
@@ -21166,6 +21682,9 @@
icon_state = "vault"
},
/area/lv624/lazarus/quartstorage)
+"sfg" = (
+/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east,
+/area/lv624/ground/jungle/south_central_jungle)
"sfH" = (
/obj/structure/inflatable,
/turf/open/gm/dirt,
@@ -21221,10 +21740,10 @@
/area/lv624/ground/caves/sand_temple)
"snc" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 4;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 4
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -21324,6 +21843,15 @@
/obj/structure/flora/bush/ausbushes/grassybush,
/turf/open/gm/grass/grass1,
/area/lv624/lazarus/landing_zones/lz2)
+"svv" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 30
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"swR" = (
/obj/structure/flora/jungle/vines/light_3,
/obj/structure/flora/jungle/vines/heavy,
@@ -21638,11 +22166,11 @@
/area/lv624/ground/caves/sand_temple)
"sXg" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -10;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -10;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/west_caves)
@@ -21666,8 +22194,6 @@
},
/area/lv624/lazarus/landing_zones/lz1)
"taK" = (
-/obj/structure/fence,
-/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east,
/area/lv624/ground/colony/north_tcomms_road)
"tbV" = (
@@ -21739,11 +22265,11 @@
/area/lv624/ground/river/west_river)
"thk" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -5;
- pixel_y = -5;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -5;
+ pixel_y = -5
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
@@ -21912,11 +22438,11 @@
/area/lv624/ground/barrens/south_eastern_barrens)
"tuJ" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -5;
- pixel_y = -5;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -5;
+ pixel_y = -5
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_east_caves)
@@ -21976,6 +22502,16 @@
/obj/effect/landmark/crap_item,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/south_central_jungle)
+"tzP" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/bed/chair/office/light{
+ dir = 1
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"tBB" = (
/obj/structure/machinery/colony_floodlight,
/turf/open/gm/grass/grass1,
@@ -22102,6 +22638,10 @@
icon_state = "whiteyellowfull"
},
/area/lv624/ground/barrens/south_eastern_barrens)
+"tMP" = (
+/obj/structure/window_frame/colony,
+/turf/open/floor/plating,
+/area/lv624/lazarus/comms)
"tMQ" = (
/obj/effect/decal/grass_overlay/grass1/inner{
dir = 9
@@ -22126,11 +22666,11 @@
/area/lv624/ground/caves/south_central_caves)
"tQU" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -22222,6 +22762,16 @@
"tZD" = (
/turf/closed/wall/r_wall,
/area/lv624/lazarus/landing_zones/lz2)
+"uaz" = (
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/bed/chair/office/light{
+ dir = 8
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"uaL" = (
/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/auto_turf/strata_grass/layer1,
@@ -22350,6 +22900,16 @@
icon_state = "desert1"
},
/area/lv624/ground/barrens/south_eastern_barrens)
+"ukS" = (
+/obj/structure/reagent_dispensers/fueltank,
+/obj/item/device/flashlight{
+ pixel_y = 5
+ },
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"ukY" = (
/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door,
/obj/effect/landmark/structure_spawner/setup/distress/xeno_door,
@@ -22403,6 +22963,13 @@
/obj/structure/flora/bush/ausbushes/reedbush,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/east_caves)
+"upp" = (
+/obj/structure/platform_decoration,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"upM" = (
/obj/effect/landmark/crap_item,
/turf/open/gm/grass/grass1,
@@ -22415,8 +22982,8 @@
/area/lv624/ground/caves/east_caves)
"upV" = (
/obj/item/stack/cable_coil/random{
- pixel_y = 9;
- pixel_x = 7
+ pixel_x = 7;
+ pixel_y = 9
},
/turf/open/gm/dirt,
/area/lv624/ground/jungle/east_jungle)
@@ -22471,11 +23038,11 @@
/area/lv624/ground/caves/north_central_caves)
"uxL" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 11;
- pixel_y = -2;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 11;
+ pixel_y = -2
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_central_caves)
@@ -22719,6 +23286,12 @@
"uWJ" = (
/turf/closed/wall/strata_ice/jungle,
/area/lv624/ground/caves/south_west_caves)
+"uXT" = (
+/obj/item/device/assembly/timer,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"uXV" = (
/obj/structure/flora/bush/ausbushes/lavendergrass,
/turf/open/gm/dirt,
@@ -22789,6 +23362,15 @@
/obj/structure/machinery/colony_floodlight,
/turf/open/gm/grass/grass1,
/area/lv624/lazarus/landing_zones/lz2)
+"vdl" = (
+/obj/structure/stairs/perspective{
+ dir = 4;
+ icon_state = "p_stair_full"
+ },
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"vdt" = (
/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door,
/obj/effect/landmark/structure_spawner/setup/distress/xeno_door,
@@ -22897,11 +23479,11 @@
dir = 10
},
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/gm/dirt,
/area/lv624/ground/caves/south_east_caves)
@@ -23119,6 +23701,12 @@
/obj/item/bananapeel,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/west_jungle)
+"vJM" = (
+/obj/item/shard,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/comms)
"vKc" = (
/obj/effect/landmark/crap_item,
/turf/open/gm/grass/grass1,
@@ -23130,6 +23718,16 @@
"vLO" = (
/turf/open/gm/dirtgrassborder/south,
/area/lv624/lazarus/quartstorage/outdoors)
+"vMC" = (
+/obj/structure/extinguisher_cabinet{
+ pixel_y = 30
+ },
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"vMV" = (
/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door,
/obj/structure/blocker/forcefield/multitile_vehicles,
@@ -23183,6 +23781,17 @@
/obj/structure/flora/bush/ausbushes/var3/sunnybush,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_east_caves)
+"vRe" = (
+/obj/structure/surface/table,
+/obj/structure/machinery/light,
+/obj/item/tool/wrench,
+/obj/item/tool/weldingtool,
+/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"vSG" = (
/obj/structure/flora/jungle/vines/light_1,
/turf/open/gm/grass/grass1,
@@ -23242,6 +23851,12 @@
/obj/structure/flora/jungle/vines/heavy,
/turf/open/gm/grass/grass1,
/area/lv624/ground/jungle/north_west_jungle)
+"vYL" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ icon_state = "dark"
+ },
+/area/lv624/lazarus/engineering)
"vZT" = (
/obj/effect/landmark/objective_landmark/close,
/turf/open/gm/dirt,
@@ -23315,11 +23930,11 @@
/area/lv624/ground/caves/sand_temple)
"whk" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_west_caves)
@@ -23563,11 +24178,11 @@
/area/lv624/lazarus/landing_zones/lz2)
"wHE" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = -1;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = -1;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/south_west_caves)
@@ -23615,11 +24230,11 @@
/area/lv624/ground/jungle/west_central_jungle)
"wMr" = (
/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{
- pixel_x = 2;
- pixel_y = 7;
light_on = 1;
light_range = 1;
- light_system = 1
+ light_system = 1;
+ pixel_x = 2;
+ pixel_y = 7
},
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/north_east_caves)
@@ -23886,6 +24501,14 @@
/obj/structure/flora/jungle/vines/light_2,
/turf/open/gm/grass/grass2,
/area/lv624/ground/jungle/south_west_jungle)
+"xfa" = (
+/obj/structure/reagent_dispensers/watertank,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"xfP" = (
/obj/item/stack/rods,
/obj/item/shard,
@@ -23970,6 +24593,14 @@
/obj/effect/landmark/lv624/fog_blocker,
/turf/open/gm/dirt,
/area/lv624/ground/river/west_river)
+"xvz" = (
+/obj/structure/platform_decoration,
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor{
+ dir = 9;
+ icon_state = "brown"
+ },
+/area/lv624/lazarus/comms)
"xvN" = (
/obj/structure/barricade/handrail/strata{
dir = 1
@@ -24274,6 +24905,16 @@
/obj/structure/blocker/forcefield/multitile_vehicles,
/turf/open/auto_turf/strata_grass/layer1,
/area/lv624/ground/caves/central_caves)
+"ydX" = (
+/obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{
+ name = "\improper Communications Dome";
+ req_access_txt = "100";
+ req_one_access = null
+ },
+/turf/open/floor{
+ icon_state = "delivery"
+ },
+/area/lv624/lazarus/engineering)
"yfe" = (
/obj/effect/decal/grass_overlay/grass1{
dir = 8
@@ -31164,7 +31805,7 @@ uiW
sqs
oTJ
qKC
-kWX
+pKm
hdh
oKP
aAp
@@ -35989,7 +36630,7 @@ rAo
fkJ
fau
xgE
-efp
+aWZ
efp
efp
efp
@@ -36218,7 +36859,7 @@ xgE
sFY
xgE
xgE
-eyb
+bgL
bgL
bgL
bgL
@@ -37585,7 +38226,7 @@ xgE
sxY
sxY
xgE
-cPV
+aRf
cPV
uSq
qIO
@@ -38959,8 +39600,8 @@ uSq
qIO
qIO
qIO
-qIO
-qIO
+ctS
+ctS
ntL
kxI
kxI
@@ -39187,9 +39828,9 @@ uSq
njC
qIO
qIO
-qIO
-qIO
-ntL
+ctS
+sfg
+vVe
kxI
jxG
qZv
@@ -39415,9 +40056,9 @@ uSq
qIO
qIO
qIO
-qIO
-qIO
-ntL
+ctS
+hLu
+kxI
kxI
oAJ
qZv
@@ -39644,8 +40285,8 @@ aPT
aUk
aPT
aPt
-qIO
-ntL
+hLu
+kxI
kxI
gzd
eqs
@@ -39868,9 +40509,9 @@ aPT
aPT
aPT
aPt
-aTG
-aQn
+vMC
aQn
+qNl
aPt
aPT
aPT
@@ -40092,17 +40733,17 @@ bwR
cPV
bCH
aPT
+aWy
+aXd
aQn
-aON
-aQn
-aQn
-aQn
-aQn
+aTi
+aTi
aQn
aQn
+aTi
aQn
isR
-aSg
+vRe
aPT
ooM
nuU
@@ -40325,12 +40966,12 @@ aQn
aQn
aQn
aTH
-aUl
aQn
aQn
aQn
aQn
-aWX
+aQn
+uaz
aPT
kxI
kxI
@@ -40546,19 +41187,19 @@ byY
fTf
nhi
cPV
-cPV
+aRf
aPT
-aRe
-aSd
-aSI
-aTg
+aWA
aQn
+aON
+aTg
+iYL
aQn
aQn
aTg
-aWd
-aSd
-aWY
+hJh
+aQn
+aTi
aPT
kxI
kxI
@@ -40773,10 +41414,10 @@ ylL
byY
mun
oGs
-lud
+oGs
aPt
aPt
-aRf
+euU
aQn
aTg
aTg
@@ -40785,8 +41426,8 @@ aQn
aVb
aTg
aTg
+aTG
aQn
-aWZ
aPt
aPt
kxI
@@ -41003,19 +41644,19 @@ byY
byY
byY
aPN
+cNE
+aTi
aQn
aQn
aQn
-aSJ
-aTh
-aQn
-aQn
aQn
-aTh
aQn
aQn
+cQU
+aTi
aQn
aQn
+xfa
aPT
kxI
lAX
@@ -41233,9 +41874,9 @@ byY
aPO
aQn
aQn
+rkZ
aQn
-aQn
-aQn
+aTi
vEj
aTg
rVH
@@ -41458,20 +42099,20 @@ byY
byY
byY
byY
-aPN
-aQn
-aQn
+aSK
+aSI
+aYh
aQn
aQn
aTi
-aQn
-aQn
-aQn
aTi
-aQn
-aQn
-aQn
-aQn
+qit
+upp
+jfN
+jfN
+gKN
+xvz
+elO
aPT
kxI
lIU
@@ -41688,16 +42329,16 @@ byY
taK
aPt
aPt
-aTI
+aQn
aQn
aTg
aTg
-aTI
-aQn
-aVb
+kKL
+aXn
+qap
aTg
aTg
-aTG
+cyP
aXa
aPt
aPt
@@ -41913,20 +42554,20 @@ uiN
byY
byY
byY
-fTf
+aUl
aPT
aRi
+aTi
aQn
aQn
-aSK
aTg
aTJ
-aQn
-aQn
+aZG
+qNz
aTg
aWe
-aWx
-aZc
+kvv
+kvv
aPT
kxI
kxI
@@ -42141,19 +42782,19 @@ uiN
byY
byY
byY
-fTf
+aUl
aPT
aSe
+aWE
+aXn
aQn
aQn
-aQn
-aQn
-aQn
+oiR
aZK
-aQn
-aQn
-aQn
-aQn
+qNz
+kvv
+kvv
+kvv
aZh
aPT
kxI
@@ -42369,20 +43010,20 @@ uiN
byY
byY
byY
-fTf
+aUl
aPT
-aQn
+aSJ
aTk
+aXe
aQn
aQn
-aTj
-aQn
-aQn
-aQn
-aTH
-aQn
aQn
aQn
+qNz
+qez
+kvv
+fij
+oIO
aPT
sBJ
kxI
@@ -42592,25 +43233,25 @@ aLv
aJr
iSg
aJr
-aJr
+aCV
aIO
aMN
aNA
aMN
aIO
aPt
-aTI
-aQn
-aQn
+aWd
+aSJ
+aZG
aQn
-aPt
aQn
aQn
aQn
+qNz
+kvv
+dHr
+bUc
aPt
-aPT
-aPT
-aPN
aPt
tzK
kxI
@@ -42826,20 +43467,20 @@ aMO
aKB
aMP
aIO
-aSg
+aSd
+aTj
+aWX
+eyb
aQn
aQn
aQn
aQn
-aPt
-aPT
-aUk
-aPT
-aPt
-aTK
-aTK
-aXd
-aXn
+nrK
+kvv
+kvv
+qXt
+tMP
+kxI
kxI
tsa
kxI
@@ -43054,20 +43695,20 @@ aMP
aNB
aNJ
aIO
+aUt
aIL
-aIL
-aIO
+aWY
aRe
-aQn
-aPT
-aTK
-aTK
-aTK
-aTK
-aTK
-aWy
-aXe
-aXn
+tzP
+bJe
+ukS
+aTi
+hOo
+vJM
+kvv
+pzP
+lQP
+kxI
kxI
kxI
kxI
@@ -43287,15 +43928,15 @@ aQo
aJz
aIO
aSg
-aPT
-aTK
+aPt
aTK
+oRY
aSL
+aWf
aVB
aWf
-fFN
aSL
-aXn
+sBJ
kxI
kxI
lUc
@@ -43514,14 +44155,14 @@ aEt
aQp
aRo
aIO
-aSg
+kWX
aSL
aSL
aSL
aSL
rmg
aTq
-aWA
+aTq
aSL
aSL
aVB
@@ -43747,9 +44388,9 @@ aSL
aVg
tem
aVd
-aTM
+kzp
+aTq
aTq
-aZG
aSX
aZI
aXJ
@@ -43976,12 +44617,12 @@ ogR
aUs
nwR
aTM
-aTM
-aTM
+aTq
+kzp
aXf
aTM
aTM
-aXW
+mBH
aVB
kxI
kxI
@@ -44199,12 +44840,12 @@ aQs
aQo
aSi
mkU
-qGR
+lud
aWD
aUq
aTN
aTM
-aTM
+fMa
aUo
aSX
aZJ
@@ -44427,13 +45068,13 @@ aQt
aQo
aSj
qGR
-mkU
+jdL
aWD
aUq
aTN
udM
aTM
-aWE
+aUx
aSX
aSX
aSX
@@ -44666,7 +45307,7 @@ aSX
aZd
aZx
aXZ
-aYh
+vYL
aVB
kxI
kxI
@@ -44887,14 +45528,14 @@ aSL
aVf
jMk
aWg
-aTM
-aTM
+lzW
+kyz
aWF
aSX
-aXs
+svv
aTM
aZM
-aTM
+vYL
aXg
kyN
kxI
@@ -45116,9 +45757,9 @@ aSX
aSX
aSX
aXs
+drX
aTM
-aTM
-aXg
+ydX
aTM
aVC
aTM
@@ -45341,12 +45982,12 @@ aJz
aSL
aTs
aTP
-aUt
+bLH
aSX
aVF
-aTM
-aTM
-aXg
+iiO
+uXT
+oas
aTM
aTM
aZf
@@ -45572,12 +46213,12 @@ aTR
aUu
aSX
aVG
-aTM
+vdl
aWG
aSX
aXt
aWi
-aYc
+bQf
aVB
dEp
kxI
@@ -45796,11 +46437,11 @@ xuk
oUy
aSL
aTu
-aZM
-aTM
+fLf
+fQx
aVj
-aTM
-aWi
+mkZ
+hDe
aWH
aSX
aXu
@@ -46025,7 +46666,7 @@ mNO
fFN
aTM
aTM
-aUx
+fAs
aSX
aVH
aTq
@@ -46483,7 +47124,7 @@ aSm
aSm
oUy
aSL
-hHc
+aVB
aWf
aVB
aSL
@@ -47594,7 +48235,7 @@ oUy
aMD
bbJ
bbO
-aCV
+oUy
aDS
aDS
aFh
diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm
index de98003c16de..3cd01dcd50f2 100644
--- a/maps/map_files/USS_Almayer/USS_Almayer.dmm
+++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm
@@ -14979,6 +14979,22 @@
icon_state = "silver"
},
/area/almayer/command/computerlab)
+"btn" = (
+/obj/item/device/camera{
+ pixel_x = 4;
+ pixel_y = 8
+ },
+/obj/structure/surface/table/almayer,
+/obj/item/device/camera_film{
+ pixel_x = 4;
+ pixel_y = -2
+ },
+/obj/item/device/camera_film,
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"btp" = (
/obj/structure/pipes/standard/manifold/hidden/supply{
dir = 4
@@ -78204,16 +78220,7 @@
},
/area/almayer/hallways/upper/starboard)
"wDp" = (
-/obj/structure/surface/table/almayer,
-/obj/item/device/camera{
- pixel_x = 4;
- pixel_y = 8
- },
-/obj/item/device/camera_film{
- pixel_x = 4;
- pixel_y = -2
- },
-/obj/item/device/camera_film,
+/obj/structure/machinery/photocopier,
/turf/open/floor/almayer{
dir = 10;
icon_state = "red"
@@ -92334,7 +92341,7 @@ vBm
lOI
pJv
jLM
-tak
+btn
cMb
rbi
wDp
diff --git a/nano/images/weapons/88m4.png b/nano/images/weapons/88m4.png
deleted file mode 100644
index 77faa65720af..000000000000
Binary files a/nano/images/weapons/88m4.png and /dev/null differ
diff --git a/nano/images/weapons/aamateba.png b/nano/images/weapons/aamateba.png
deleted file mode 100644
index 30a5c1c72c68..000000000000
Binary files a/nano/images/weapons/aamateba.png and /dev/null differ
diff --git a/nano/images/weapons/amateba.png b/nano/images/weapons/amateba.png
deleted file mode 100644
index 6d411d2ad7fc..000000000000
Binary files a/nano/images/weapons/amateba.png and /dev/null differ
diff --git a/nano/images/weapons/auto.png b/nano/images/weapons/auto.png
deleted file mode 100644
index 7efc6ff1c892..000000000000
Binary files a/nano/images/weapons/auto.png and /dev/null differ
diff --git a/nano/images/weapons/auto9.png b/nano/images/weapons/auto9.png
deleted file mode 100644
index 8fbc101f2f72..000000000000
Binary files a/nano/images/weapons/auto9.png and /dev/null differ
diff --git a/nano/images/weapons/b92fs.png b/nano/images/weapons/b92fs.png
deleted file mode 100644
index 2788124dfb8f..000000000000
Binary files a/nano/images/weapons/b92fs.png and /dev/null differ
diff --git a/nano/images/weapons/burst.png b/nano/images/weapons/burst.png
deleted file mode 100644
index 669bd676ebb0..000000000000
Binary files a/nano/images/weapons/burst.png and /dev/null differ
diff --git a/nano/images/weapons/c70.png b/nano/images/weapons/c70.png
deleted file mode 100644
index b7e2ed731ba1..000000000000
Binary files a/nano/images/weapons/c70.png and /dev/null differ
diff --git a/nano/images/weapons/c_deagle.png b/nano/images/weapons/c_deagle.png
deleted file mode 100644
index c2a5c991acf8..000000000000
Binary files a/nano/images/weapons/c_deagle.png and /dev/null differ
diff --git a/nano/images/weapons/cmateba.png b/nano/images/weapons/cmateba.png
deleted file mode 100644
index f949d4b54731..000000000000
Binary files a/nano/images/weapons/cmateba.png and /dev/null differ
diff --git a/nano/images/weapons/cshotgun.png b/nano/images/weapons/cshotgun.png
deleted file mode 100644
index 9820f5854679..000000000000
Binary files a/nano/images/weapons/cshotgun.png and /dev/null differ
diff --git a/nano/images/weapons/dartgun.png b/nano/images/weapons/dartgun.png
deleted file mode 100644
index 218dc742dc9b..000000000000
Binary files a/nano/images/weapons/dartgun.png and /dev/null differ
diff --git a/nano/images/weapons/deagle.png b/nano/images/weapons/deagle.png
deleted file mode 100644
index 059a730d7efd..000000000000
Binary files a/nano/images/weapons/deagle.png and /dev/null differ
diff --git a/nano/images/weapons/disabled_automatic.png b/nano/images/weapons/disabled_automatic.png
deleted file mode 100644
index 94da079d8049..000000000000
Binary files a/nano/images/weapons/disabled_automatic.png and /dev/null differ
diff --git a/nano/images/weapons/disabled_burst.png b/nano/images/weapons/disabled_burst.png
deleted file mode 100644
index 71b88bcaf945..000000000000
Binary files a/nano/images/weapons/disabled_burst.png and /dev/null differ
diff --git a/nano/images/weapons/disabled_single.png b/nano/images/weapons/disabled_single.png
deleted file mode 100644
index bf2cef4b1507..000000000000
Binary files a/nano/images/weapons/disabled_single.png and /dev/null differ
diff --git a/nano/images/weapons/dshotgun.png b/nano/images/weapons/dshotgun.png
deleted file mode 100644
index cd795982816b..000000000000
Binary files a/nano/images/weapons/dshotgun.png and /dev/null differ
diff --git a/nano/images/weapons/fp9000.png b/nano/images/weapons/fp9000.png
deleted file mode 100644
index b9f971eb0773..000000000000
Binary files a/nano/images/weapons/fp9000.png and /dev/null differ
diff --git a/nano/images/weapons/fp9000_pmc.png b/nano/images/weapons/fp9000_pmc.png
deleted file mode 100644
index b9f971eb0773..000000000000
Binary files a/nano/images/weapons/fp9000_pmc.png and /dev/null differ
diff --git a/nano/images/weapons/g_deagle.png b/nano/images/weapons/g_deagle.png
deleted file mode 100644
index c2a5c991acf8..000000000000
Binary files a/nano/images/weapons/g_deagle.png and /dev/null differ
diff --git a/nano/images/weapons/hg3712.png b/nano/images/weapons/hg3712.png
deleted file mode 100644
index f7f32190c468..000000000000
Binary files a/nano/images/weapons/hg3712.png and /dev/null differ
diff --git a/nano/images/weapons/highpower.png b/nano/images/weapons/highpower.png
deleted file mode 100644
index a7d25c44803b..000000000000
Binary files a/nano/images/weapons/highpower.png and /dev/null differ
diff --git a/nano/images/weapons/holdout.png b/nano/images/weapons/holdout.png
deleted file mode 100644
index 1d6f26fad25f..000000000000
Binary files a/nano/images/weapons/holdout.png and /dev/null differ
diff --git a/nano/images/weapons/hunting.png b/nano/images/weapons/hunting.png
deleted file mode 100644
index 5d9613117f07..000000000000
Binary files a/nano/images/weapons/hunting.png and /dev/null differ
diff --git a/nano/images/weapons/kt42.png b/nano/images/weapons/kt42.png
deleted file mode 100644
index ecf0ee41a9b7..000000000000
Binary files a/nano/images/weapons/kt42.png and /dev/null differ
diff --git a/nano/images/weapons/l42mk1.png b/nano/images/weapons/l42mk1.png
deleted file mode 100644
index b5efcc14d331..000000000000
Binary files a/nano/images/weapons/l42mk1.png and /dev/null differ
diff --git a/nano/images/weapons/m16.png b/nano/images/weapons/m16.png
deleted file mode 100644
index 2287f7319696..000000000000
Binary files a/nano/images/weapons/m16.png and /dev/null differ
diff --git a/nano/images/weapons/m240.png b/nano/images/weapons/m240.png
deleted file mode 100644
index 72eb477c9efa..000000000000
Binary files a/nano/images/weapons/m240.png and /dev/null differ
diff --git a/nano/images/weapons/m240t.png b/nano/images/weapons/m240t.png
deleted file mode 100644
index 619551d690e8..000000000000
Binary files a/nano/images/weapons/m240t.png and /dev/null differ
diff --git a/nano/images/weapons/m37-17.png b/nano/images/weapons/m37-17.png
deleted file mode 100644
index 7d53cbd76108..000000000000
Binary files a/nano/images/weapons/m37-17.png and /dev/null differ
diff --git a/nano/images/weapons/m37.png b/nano/images/weapons/m37.png
deleted file mode 100644
index f888adaeb6be..000000000000
Binary files a/nano/images/weapons/m37.png and /dev/null differ
diff --git a/nano/images/weapons/m39.png b/nano/images/weapons/m39.png
deleted file mode 100644
index f6fbb0a48961..000000000000
Binary files a/nano/images/weapons/m39.png and /dev/null differ
diff --git a/nano/images/weapons/m41a.png b/nano/images/weapons/m41a.png
deleted file mode 100644
index 9476e0d1f40f..000000000000
Binary files a/nano/images/weapons/m41a.png and /dev/null differ
diff --git a/nano/images/weapons/m41a2.png b/nano/images/weapons/m41a2.png
deleted file mode 100644
index 4179cb37f5c3..000000000000
Binary files a/nano/images/weapons/m41a2.png and /dev/null differ
diff --git a/nano/images/weapons/m41ae2.png b/nano/images/weapons/m41ae2.png
deleted file mode 100644
index 4a5232fd6638..000000000000
Binary files a/nano/images/weapons/m41ae2.png and /dev/null differ
diff --git a/nano/images/weapons/m41amk1.png b/nano/images/weapons/m41amk1.png
deleted file mode 100644
index 3f44c62b0fad..000000000000
Binary files a/nano/images/weapons/m41amk1.png and /dev/null differ
diff --git a/nano/images/weapons/m41b.png b/nano/images/weapons/m41b.png
deleted file mode 100644
index 1d63443f25fa..000000000000
Binary files a/nano/images/weapons/m41b.png and /dev/null differ
diff --git a/nano/images/weapons/m42a.png b/nano/images/weapons/m42a.png
deleted file mode 100644
index f0d07328c122..000000000000
Binary files a/nano/images/weapons/m42a.png and /dev/null differ
diff --git a/nano/images/weapons/m42c.png b/nano/images/weapons/m42c.png
deleted file mode 100644
index 47d53b86ced1..000000000000
Binary files a/nano/images/weapons/m42c.png and /dev/null differ
diff --git a/nano/images/weapons/m44r.png b/nano/images/weapons/m44r.png
deleted file mode 100644
index d7deb2589ed3..000000000000
Binary files a/nano/images/weapons/m44r.png and /dev/null differ
diff --git a/nano/images/weapons/m44rc.png b/nano/images/weapons/m44rc.png
deleted file mode 100644
index 1c20973a0a99..000000000000
Binary files a/nano/images/weapons/m44rc.png and /dev/null differ
diff --git a/nano/images/weapons/m46c.png b/nano/images/weapons/m46c.png
deleted file mode 100644
index d404a6d88f67..000000000000
Binary files a/nano/images/weapons/m46c.png and /dev/null differ
diff --git a/nano/images/weapons/m4a3.png b/nano/images/weapons/m4a3.png
deleted file mode 100644
index 9169c71c5176..000000000000
Binary files a/nano/images/weapons/m4a3.png and /dev/null differ
diff --git a/nano/images/weapons/m4a345.png b/nano/images/weapons/m4a345.png
deleted file mode 100644
index 1ba00158467e..000000000000
Binary files a/nano/images/weapons/m4a345.png and /dev/null differ
diff --git a/nano/images/weapons/m4a3c.png b/nano/images/weapons/m4a3c.png
deleted file mode 100644
index 95731a6c7160..000000000000
Binary files a/nano/images/weapons/m4a3c.png and /dev/null differ
diff --git a/nano/images/weapons/m5.png b/nano/images/weapons/m5.png
deleted file mode 100644
index 7d502fdaafc5..000000000000
Binary files a/nano/images/weapons/m5.png and /dev/null differ
diff --git a/nano/images/weapons/m56.png b/nano/images/weapons/m56.png
deleted file mode 100644
index baf9b9bd9c3c..000000000000
Binary files a/nano/images/weapons/m56.png and /dev/null differ
diff --git a/nano/images/weapons/m57a4.png b/nano/images/weapons/m57a4.png
deleted file mode 100644
index 6c2cbcbdbe8b..000000000000
Binary files a/nano/images/weapons/m57a4.png and /dev/null differ
diff --git a/nano/images/weapons/m60.png b/nano/images/weapons/m60.png
deleted file mode 100644
index 08baffaa747f..000000000000
Binary files a/nano/images/weapons/m60.png and /dev/null differ
diff --git a/nano/images/weapons/m79.png b/nano/images/weapons/m79.png
deleted file mode 100644
index 365280f2424c..000000000000
Binary files a/nano/images/weapons/m79.png and /dev/null differ
diff --git a/nano/images/weapons/m81.png b/nano/images/weapons/m81.png
deleted file mode 100644
index 7b1a6a195b33..000000000000
Binary files a/nano/images/weapons/m81.png and /dev/null differ
diff --git a/nano/images/weapons/m82f.png b/nano/images/weapons/m82f.png
deleted file mode 100644
index f6d5e24ec889..000000000000
Binary files a/nano/images/weapons/m82f.png and /dev/null differ
diff --git a/nano/images/weapons/m92.png b/nano/images/weapons/m92.png
deleted file mode 100644
index ce64c3df3637..000000000000
Binary files a/nano/images/weapons/m92.png and /dev/null differ
diff --git a/nano/images/weapons/m93b2.png b/nano/images/weapons/m93b2.png
deleted file mode 100644
index 987f56643afa..000000000000
Binary files a/nano/images/weapons/m93b2.png and /dev/null differ
diff --git a/nano/images/weapons/mac15.png b/nano/images/weapons/mac15.png
deleted file mode 100644
index 179c8b7a61ad..000000000000
Binary files a/nano/images/weapons/mac15.png and /dev/null differ
diff --git a/nano/images/weapons/mar30.png b/nano/images/weapons/mar30.png
deleted file mode 100644
index 3a5c19f33663..000000000000
Binary files a/nano/images/weapons/mar30.png and /dev/null differ
diff --git a/nano/images/weapons/mar40.png b/nano/images/weapons/mar40.png
deleted file mode 100644
index 043d6529ef33..000000000000
Binary files a/nano/images/weapons/mar40.png and /dev/null differ
diff --git a/nano/images/weapons/mateba.png b/nano/images/weapons/mateba.png
deleted file mode 100644
index 49ec3f897a2d..000000000000
Binary files a/nano/images/weapons/mateba.png and /dev/null differ
diff --git a/nano/images/weapons/mk221.png b/nano/images/weapons/mk221.png
deleted file mode 100644
index a15773fb26dc..000000000000
Binary files a/nano/images/weapons/mk221.png and /dev/null differ
diff --git a/nano/images/weapons/mou.png b/nano/images/weapons/mou.png
deleted file mode 100644
index a471e16f6e03..000000000000
Binary files a/nano/images/weapons/mou.png and /dev/null differ
diff --git a/nano/images/weapons/mp5.png b/nano/images/weapons/mp5.png
deleted file mode 100644
index e36fccdca47a..000000000000
Binary files a/nano/images/weapons/mp5.png and /dev/null differ
diff --git a/nano/images/weapons/mp7.png b/nano/images/weapons/mp7.png
deleted file mode 100644
index 9494c8003d01..000000000000
Binary files a/nano/images/weapons/mp7.png and /dev/null differ
diff --git a/nano/images/weapons/no_name.png b/nano/images/weapons/no_name.png
deleted file mode 100644
index 8babb2fda54f..000000000000
Binary files a/nano/images/weapons/no_name.png and /dev/null differ
diff --git a/nano/images/weapons/ny762.png b/nano/images/weapons/ny762.png
deleted file mode 100644
index bdd5fe500e1a..000000000000
Binary files a/nano/images/weapons/ny762.png and /dev/null differ
diff --git a/nano/images/weapons/painless.png b/nano/images/weapons/painless.png
deleted file mode 100644
index f493c662eb6e..000000000000
Binary files a/nano/images/weapons/painless.png and /dev/null differ
diff --git a/nano/images/weapons/pk9.png b/nano/images/weapons/pk9.png
deleted file mode 100644
index 7c6649463740..000000000000
Binary files a/nano/images/weapons/pk9.png and /dev/null differ
diff --git a/nano/images/weapons/pk9r.png b/nano/images/weapons/pk9r.png
deleted file mode 100644
index be9adcd50733..000000000000
Binary files a/nano/images/weapons/pk9r.png and /dev/null differ
diff --git a/nano/images/weapons/pk9u.png b/nano/images/weapons/pk9u.png
deleted file mode 100644
index 519f574f6e4c..000000000000
Binary files a/nano/images/weapons/pk9u.png and /dev/null differ
diff --git a/nano/images/weapons/ppsh17b.png b/nano/images/weapons/ppsh17b.png
deleted file mode 100644
index 4ea9e0214f94..000000000000
Binary files a/nano/images/weapons/ppsh17b.png and /dev/null differ
diff --git a/nano/images/weapons/single.png b/nano/images/weapons/single.png
deleted file mode 100644
index 2f784868ca32..000000000000
Binary files a/nano/images/weapons/single.png and /dev/null differ
diff --git a/nano/images/weapons/skorpion.png b/nano/images/weapons/skorpion.png
deleted file mode 100644
index 342fc75e3e6e..000000000000
Binary files a/nano/images/weapons/skorpion.png and /dev/null differ
diff --git a/nano/images/weapons/skorpion_u.png b/nano/images/weapons/skorpion_u.png
deleted file mode 100644
index 72128e1f46bf..000000000000
Binary files a/nano/images/weapons/skorpion_u.png and /dev/null differ
diff --git a/nano/images/weapons/smartpistol.png b/nano/images/weapons/smartpistol.png
deleted file mode 100644
index e688ac9260a8..000000000000
Binary files a/nano/images/weapons/smartpistol.png and /dev/null differ
diff --git a/nano/images/weapons/spearhead.png b/nano/images/weapons/spearhead.png
deleted file mode 100644
index 7b740dbdc593..000000000000
Binary files a/nano/images/weapons/spearhead.png and /dev/null differ
diff --git a/nano/images/weapons/sshotgun.png b/nano/images/weapons/sshotgun.png
deleted file mode 100644
index f052433653b8..000000000000
Binary files a/nano/images/weapons/sshotgun.png and /dev/null differ
diff --git a/nano/images/weapons/supremo.png b/nano/images/weapons/supremo.png
deleted file mode 100644
index 83f6a6fb4b3f..000000000000
Binary files a/nano/images/weapons/supremo.png and /dev/null differ
diff --git a/nano/images/weapons/svd003.png b/nano/images/weapons/svd003.png
deleted file mode 100644
index 6395b8d3b686..000000000000
Binary files a/nano/images/weapons/svd003.png and /dev/null differ
diff --git a/nano/images/weapons/sw357.png b/nano/images/weapons/sw357.png
deleted file mode 100644
index a89ea9cb2f2d..000000000000
Binary files a/nano/images/weapons/sw357.png and /dev/null differ
diff --git a/nano/images/weapons/sw358.png b/nano/images/weapons/sw358.png
deleted file mode 100644
index c24e72bfce7c..000000000000
Binary files a/nano/images/weapons/sw358.png and /dev/null differ
diff --git a/nano/images/weapons/syringegun.png b/nano/images/weapons/syringegun.png
deleted file mode 100644
index bf18bf425d7a..000000000000
Binary files a/nano/images/weapons/syringegun.png and /dev/null differ
diff --git a/nano/images/weapons/taser.png b/nano/images/weapons/taser.png
deleted file mode 100644
index 6337a8996677..000000000000
Binary files a/nano/images/weapons/taser.png and /dev/null differ
diff --git a/nano/images/weapons/type71.png b/nano/images/weapons/type71.png
deleted file mode 100644
index 700ff164d60c..000000000000
Binary files a/nano/images/weapons/type71.png and /dev/null differ
diff --git a/nano/images/weapons/type71c.png b/nano/images/weapons/type71c.png
deleted file mode 100644
index 273ac0bcbec0..000000000000
Binary files a/nano/images/weapons/type71c.png and /dev/null differ
diff --git a/nano/images/weapons/type73.png b/nano/images/weapons/type73.png
deleted file mode 100644
index 63294f7cc9f8..000000000000
Binary files a/nano/images/weapons/type73.png and /dev/null differ
diff --git a/nano/images/weapons/vp78.png b/nano/images/weapons/vp78.png
deleted file mode 100644
index 2383b4e3aded..000000000000
Binary files a/nano/images/weapons/vp78.png and /dev/null differ
diff --git a/nano/images/weapons/xm42b.png b/nano/images/weapons/xm42b.png
deleted file mode 100644
index 645c552314f9..000000000000
Binary files a/nano/images/weapons/xm42b.png and /dev/null differ
diff --git a/nano/images/weapons/xm51.png b/nano/images/weapons/xm51.png
deleted file mode 100644
index 6eb9d855e8a9..000000000000
Binary files a/nano/images/weapons/xm51.png and /dev/null differ
diff --git a/tgui/packages/tgui/interfaces/HealthScan.jsx b/tgui/packages/tgui/interfaces/HealthScan.jsx
index c94d7eda0b45..c941c111d487 100644
--- a/tgui/packages/tgui/interfaces/HealthScan.jsx
+++ b/tgui/packages/tgui/interfaces/HealthScan.jsx
@@ -389,6 +389,11 @@ const ScannerLimbs = (props) => {
[Embedded Object]
) : null}
+ {limb.open_zone_incision ? (
+
+ [Open Surgical Incision In {limb.open_zone_incision}]
+
+ ) : null}
>
)}
diff --git a/tgui/packages/tgui/interfaces/WeaponStats.jsx b/tgui/packages/tgui/interfaces/WeaponStats.jsx
index 977abf9ad43e..3eec932427ad 100644
--- a/tgui/packages/tgui/interfaces/WeaponStats.jsx
+++ b/tgui/packages/tgui/interfaces/WeaponStats.jsx
@@ -1,5 +1,5 @@
import { map } from 'common/collections';
-import { resolveAsset } from '../assets';
+import { classes } from 'common/react';
import { useBackend } from '../backend';
import { ProgressBar, Section, Box, Flex, Table, Divider } from '../components';
import { Window } from '../layouts';
@@ -68,7 +68,7 @@ const GeneralInfo = (props) => {
-
+
@@ -78,25 +78,33 @@ const GeneralInfo = (props) => {
- {!auto_only ? (
-
- ) : (
-
- )}
+
- {!auto_only && burst_amount > 1 ? (
-
- ) : (
-
- )}
+ 1 ? 'burst' : 'disabled_burst'
+ }`,
+ ])}
+ />
- {automatic ? (
-
- ) : (
-
- )}
+