diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 6f10e79ac061..b7577ae71d9a 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -27,8 +27,8 @@ #define ITEM_UNCATCHABLE (1<<9) /// Used for nonstandard marine clothing to ignore 'specialty' var. #define NO_NAME_OVERRIDE (1<<10) -/// Used for armors or uniforms that don't have a snow/desert/etc icon state set via select_gamemode_skin (not all item types currently perform this test though). -#define NO_SNOW_TYPE (1<<11) +/// Used for armors or uniforms that don't have a snow/desert/etc icon state set via select_gamemode_skin. +#define NO_GAMEMODE_SKIN (1<<11) #define INVULNERABLE (1<<12) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index f08585846879..89f9ed3930a1 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -145,7 +145,7 @@ DEFINE_BITFIELD(flags_atom, list( "RELAY_CLICK" = RELAY_CLICK, "ITEM_UNCATCHABLE" = ITEM_UNCATCHABLE, "NO_NAME_OVERRIDE" = NO_NAME_OVERRIDE, - "NO_SNOW_TYPE" = NO_SNOW_TYPE, + "NO_GAMEMODE_SKIN" = NO_GAMEMODE_SKIN, "INVULNERABLE" = INVULNERABLE, "CAN_BE_SYRINGED" = CAN_BE_SYRINGED, "CAN_BE_DISPENSED_INTO" = CAN_BE_DISPENSED_INTO, diff --git a/code/_onclick/hud/yautja.dm b/code/_onclick/hud/yautja.dm index 5814e588d733..e34bfcf4da09 100644 --- a/code/_onclick/hud/yautja.dm +++ b/code/_onclick/hud/yautja.dm @@ -6,6 +6,9 @@ pred_power_icon.screen_loc = ui_predator_power infodisplay += pred_power_icon +/mob/living/carbon/human/yautja + skin_color = "tan" + body_type = "pred" /mob/living/carbon/human/yautja/create_hud() if(client && !hud_used) diff --git a/code/datums/effects/xeno_strains/prae_acid_stacks.dm b/code/datums/effects/xeno_strains/prae_acid_stacks.dm index aaf3c50e82f8..30218d1164e6 100644 --- a/code/datums/effects/xeno_strains/prae_acid_stacks.dm +++ b/code/datums/effects/xeno_strains/prae_acid_stacks.dm @@ -45,8 +45,9 @@ if (!ishuman(affected_atom)) return ..() - var/mob/living/carbon/human/H = affected_atom - addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, update_xeno_hostile_hud)), 3) + var/mob/living/carbon/human/human = affected_atom + if(!QDELETED(human)) + addtimer(CALLBACK(human, TYPE_PROC_REF(/mob/living/carbon/human, update_xeno_hostile_hud)), 3) return ..() diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index 30f55b9f5bf5..6ab2d9569ab9 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -67,6 +67,13 @@ status = FALSE kick_viewers() +/obj/structure/machinery/camera/vehicle/update_icon() + . = ..() + if(stat & EMPED) + icon_state = "vehicle_cameraemp" + else + icon_state = "vehicle_camera" + // AUTONAME /obj/structure/machinery/camera/autoname diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 2d70560f8d5c..1efb21c6b348 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -219,7 +219,6 @@ operating = TRUE do_animate("opening") - icon_state = "door0" set_opacity(FALSE) if(length(filler_turfs)) change_filler_opacity(opacity) diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index 70bf4e43bc4a..3fbf027ab25d 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -116,16 +116,6 @@ req_access = null req_one_access = list(ACCESS_CIVILIAN_PUBLIC) -/obj/structure/machinery/door/airlock/multi_tile/shuttle - name = "Shuttle Podlock" - icon = 'icons/obj/structures/doors/1x2blast_vert.dmi' - icon_state = "pdoor1" - opacity = TRUE - openspeed = 12 - req_access = null - not_weldable = 1 - - // ALMAYER /obj/structure/machinery/door/airlock/multi_tile/almayer diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm index e538ad1185db..65ed7ee8f28f 100644 --- a/code/game/machinery/kitchen/juicer.dm +++ b/code/game/machinery/kitchen/juicer.dm @@ -29,6 +29,10 @@ . = ..() beaker = new /obj/item/reagent_container/glass/beaker/large(src) +/obj/structure/machinery/juicer/Destroy() + QDEL_NULL(beaker) + return ..() + /obj/structure/machinery/juicer/update_icon() icon_state = "juicer"+num2text(!QDELETED(beaker)) return diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index a886b59f501f..d6ab17da83fc 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -271,8 +271,17 @@ Buildable meters else return ..() -// rotate the pipe item clockwise +/obj/item/pipe/pickup(mob/user, silent) + var/old_dir = dir + ..() + setDir(old_dir) // Retain old dir since these rotate in hand + +/obj/item/pipe/equipped(mob/user, slot, silent) + var/old_dir = dir + ..() + setDir(old_dir) // Retain old dir since these rotate in hand +// rotate the pipe item clockwise /obj/item/pipe/verb/rotate() set category = "Object" set name = "Rotate Pipe" @@ -384,241 +393,188 @@ Buildable meters rotate() /obj/item/pipe/attackby(obj/item/W, mob/user) - ..() - //* - if (!HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) - return ..() - if (!isturf(loc)) - return 1 - var/turf/T = loc - var/pipelevel = T.intact_tile ? 2 : 1 - - if (pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_SUPPLY_STRAIGHT, PIPE_SCRUBBERS_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE)) - if(dir==2) + . = ..() + if(!HAS_TRAIT(W, TRAIT_TOOL_WRENCH)) + return . + if(!isturf(loc)) + return TRUE + var/turf/turf = loc + var/pipelevel = turf.intact_tile ? 2 : 1 + + if(pipe_type in list (PIPE_SIMPLE_STRAIGHT, PIPE_SUPPLY_STRAIGHT, PIPE_SCRUBBERS_STRAIGHT, PIPE_HE_STRAIGHT, PIPE_INSULATED_STRAIGHT, PIPE_MVALVE)) + if(dir == SOUTH) setDir(NORTH) - else if(dir==8) + else if(dir == WEST) setDir(EAST) - else if (pipe_type in list(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER)) + else if(pipe_type in list(PIPE_MANIFOLD4W, PIPE_SUPPLY_MANIFOLD4W, PIPE_SCRUBBERS_MANIFOLD4W, PIPE_OMNI_MIXER, PIPE_OMNI_FILTER)) setDir(SOUTH) var/pipe_dir = get_pipe_dir() - for(var/obj/structure/pipes/M in src.loc) - if((M.valid_directions & pipe_dir)) // matches at least one direction on either type of pipe & same connection type + for(var/obj/structure/pipes/existing_pipe in loc) + if((existing_pipe.valid_directions & pipe_dir)) // matches at least one direction on either type of pipe & same connection type to_chat(user, SPAN_WARNING("There is already a pipe of the same type at this location.")) - return 1 + return TRUE // no conflicts found //TODO: Move all of this stuff into the various pipe constructors. + var/obj/structure/pipes/new_pipe switch(pipe_type) if(PIPE_SIMPLE_STRAIGHT, PIPE_SIMPLE_BENT) - var/obj/structure/pipes/standard/simple/P = new( src.loc ) - P.pipe_color = color - P.setDir(dir) - P.valid_directions = list(pipe_dir) - P.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/simple(loc) + new_pipe.pipe_color = color + new_pipe.level = pipelevel if(PIPE_SUPPLY_STRAIGHT, PIPE_SUPPLY_BENT) - var/obj/structure/pipes/standard/simple/hidden/supply/P = new( src.loc ) - P.color = color - P.setDir(dir) - P.valid_directions = list(pipe_dir) - P.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/simple/hidden/supply(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_SCRUBBERS_STRAIGHT, PIPE_SCRUBBERS_BENT) - var/obj/structure/pipes/standard/simple/hidden/scrubbers/P = new( src.loc ) - P.color = color - P.setDir(dir) - P.valid_directions = list(pipe_dir) - P.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/simple/hidden/scrubbers(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_UNIVERSAL) - var/obj/structure/pipes/standard/simple/hidden/universal/P = new( src.loc ) - P.color = color - P.setDir(dir) - P.valid_directions = list(pipe_dir) - P.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/simple/hidden/universal(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_CONNECTOR) // connector - var/obj/structure/pipes/portables_connector/C = new( src.loc ) - C.setDir(dir) - C.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/portables_connector(loc) if (pipename) - C.name = pipename - C.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_MANIFOLD) //manifold - var/obj/structure/pipes/standard/manifold/M = new( src.loc ) - M.pipe_color = color - M.setDir(dir) - M.valid_directions = list(pipe_dir) - M.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/manifold(loc) + new_pipe.pipe_color = color + new_pipe.level = pipelevel if(PIPE_SUPPLY_MANIFOLD) //manifold - var/obj/structure/pipes/standard/manifold/hidden/supply/M = new( src.loc ) - M.color = color - M.setDir(dir) - M.valid_directions = list(pipe_dir) - M.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/manifold/hidden/supply(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_SCRUBBERS_MANIFOLD) //manifold - var/obj/structure/pipes/standard/manifold/hidden/scrubbers/M = new( src.loc ) - M.color = color - M.setDir(dir) - M.valid_directions = list(pipe_dir) - M.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/manifold/hidden/scrubbers(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_MANIFOLD4W) //4-way manifold - var/obj/structure/pipes/standard/manifold/fourway/M = new( src.loc ) - M.pipe_color = color - M.setDir(dir) - M.valid_directions = list(pipe_dir) - M.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/manifold/fourway(loc) + new_pipe.pipe_color = color + new_pipe.level = pipelevel if(PIPE_SUPPLY_MANIFOLD4W) //4-way manifold - var/obj/structure/pipes/standard/manifold/fourway/hidden/supply/M = new( src.loc ) - M.color = color - M.setDir(dir) - M.valid_directions = list(pipe_dir) - M.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/manifold/fourway/hidden/supply(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_SCRUBBERS_MANIFOLD4W) //4-way manifold - var/obj/structure/pipes/standard/manifold/fourway/hidden/scrubbers/M = new( src.loc ) - M.color = color - M.setDir(dir) - M.valid_directions = list(pipe_dir) - M.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/manifold/fourway/hidden/scrubbers(loc) + new_pipe.color = color + new_pipe.level = pipelevel if(PIPE_UVENT) //unary vent - var/obj/structure/pipes/vents/pump/V = new( src.loc ) - V.setDir(dir) - V.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/vents/pump(loc) if(pipename) - V.name = pipename - V.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_MVALVE) //manual valve - var/obj/structure/pipes/valve/V = new( src.loc) - V.setDir(dir) - V.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/valve(loc) if (pipename) - V.name = pipename - V.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_PUMP) //gas pump - var/obj/structure/pipes/binary/pump/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/binary/pump(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_GAS_FILTER) //gas filter - var/obj/structure/pipes/trinary/filter/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/trinary/filter(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_GAS_MIXER) //gas mixer - var/obj/structure/pipes/trinary/mixer/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/trinary/mixer(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_GAS_FILTER_M) //gas filter mirrored - var/obj/structure/pipes/trinary/filter/m_filter/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/trinary/filter/m_filter(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_GAS_MIXER_T) //gas mixer-t - var/obj/structure/pipes/trinary/mixer/t_mixer/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/trinary/mixer/t_mixer(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_GAS_MIXER_M) //gas mixer mirrored - var/obj/structure/pipes/trinary/mixer/m_mixer/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/trinary/mixer/m_mixer(loc) if(pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_SCRUBBER) //scrubber - var/obj/structure/pipes/vents/scrubber/S = new(src.loc) - S.setDir(dir) - S.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/vents/scrubber(loc) if (pipename) - S.name = pipename - S.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_INSULATED_STRAIGHT, PIPE_INSULATED_BENT) - var/obj/structure/pipes/standard/simple/insulated/P = new( src.loc ) - P.setDir(dir) - P.valid_directions = list(pipe_dir) - P.level = pipelevel + new_pipe = new /obj/structure/pipes/standard/simple/insulated(loc) + new_pipe.level = pipelevel if(PIPE_MTVALVE) //manual t-valve - var/obj/structure/pipes/tvalve/V = new(src.loc) - V.setDir(dir) - V.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/tvalve(loc) if (pipename) - V.name = pipename - V.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_CAP) - var/obj/structure/pipes/standard/cap/C = new(src.loc) - C.setDir(dir) - C.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/standard/cap(loc) if(PIPE_SUPPLY_CAP) - var/obj/structure/pipes/standard/cap/hidden/supply/C = new(src.loc) - C.setDir(dir) - C.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/standard/cap/hidden/supply(loc) if(PIPE_SCRUBBERS_CAP) - var/obj/structure/pipes/standard/cap/hidden/scrubbers/C = new(src.loc) - C.setDir(dir) - C.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/standard/cap/hidden/scrubbers(loc) if(PIPE_PASSIVE_GATE) //passive gate - var/obj/structure/pipes/binary/passive_gate/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/binary/passive_gate(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_VOLUME_PUMP) //volume pump - var/obj/structure/pipes/binary/pump/high_power/P = new(src.loc) - P.setDir(dir) - P.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/binary/pump/high_power(loc) if (pipename) - P.name = pipename - P.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel if(PIPE_HEAT_EXCHANGE) // heat exchanger - var/obj/structure/pipes/unary/heat_exchanger/C = new( src.loc ) - C.setDir(dir) - C.valid_directions = list(pipe_dir) + new_pipe = new /obj/structure/pipes/unary/heat_exchanger(loc) if (pipename) - C.name = pipename - C.level = pipelevel + new_pipe.name = pipename + new_pipe.level = pipelevel + new_pipe.setDir(dir) + new_pipe.create_valid_directions() + new_pipe.search_for_connections() - playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) + playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) user.visible_message( \ "[user] fastens [src].", \ SPAN_NOTICE("You have fastened [src]."), \ diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 1677676c8553..c845253f480d 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -107,7 +107,7 @@ if(isliving(atm)) //For extinguishing mobs on fire var/mob/living/M = atm - if(M != cause_data.resolve_mob()) + if(M != cause_data?.resolve_mob()) M.ExtinguishMob() if(M.stat == DEAD) // NO. DAMAGING. DEAD. MOBS. @@ -150,7 +150,7 @@ /obj/effect/xenomorph/spray/Crossed(AM as mob|obj) ..() - if(AM == cause_data.resolve_mob()) + if(AM == cause_data?.resolve_mob()) return if(isliving(AM)) diff --git a/code/game/objects/effects/decals/cleanable/blood/blood.dm b/code/game/objects/effects/decals/cleanable/blood/blood.dm index 9fd5e79965af..e0c50e8fa6c9 100644 --- a/code/game/objects/effects/decals/cleanable/blood/blood.dm +++ b/code/game/objects/effects/decals/cleanable/blood/blood.dm @@ -137,21 +137,24 @@ var/fleshcolor = "#830303" /obj/effect/decal/cleanable/blood/gibs/update_icon() + overlays.Cut() + + if(basecolor == "rainbow") + basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" + color = basecolor + var/image/giblets = new(base_icon, "[icon_state]_flesh", dir) if(!fleshcolor || fleshcolor == "rainbow") fleshcolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" giblets.color = fleshcolor - if(basecolor == "rainbow") basecolor = "#[pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"))]" - color = basecolor - overlays += giblets /obj/effect/decal/cleanable/blood/gibs/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1") + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibup1", "gibup1", "gibup1") /obj/effect/decal/cleanable/blood/gibs/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1") + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gibdown1", "gibdown1", "gibdown1") /obj/effect/decal/cleanable/blood/gibs/body random_icon_states = list("gibhead", "gibtorso") diff --git a/code/game/objects/effects/decals/cleanable/blood/robots.dm b/code/game/objects/effects/decals/cleanable/blood/robots.dm index 3ee3c9e07f9a..0a5ea870e05c 100644 --- a/code/game/objects/effects/decals/cleanable/blood/robots.dm +++ b/code/game/objects/effects/decals/cleanable/blood/robots.dm @@ -31,10 +31,10 @@ random_icon_states = list("gibarm", "gibleg") /obj/effect/decal/cleanable/blood/gibs/robot/up - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibup1","gibup1") //2:7 is close enough to 1:4 + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7", "gibup1", "gibup1") //2:7 is close enough to 1:4 /obj/effect/decal/cleanable/blood/gibs/robot/down - random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7","gibdown1","gibdown1") //2:7 is close enough to 1:4 + random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7", "gibdown1", "gibdown1") //2:7 is close enough to 1:4 /obj/effect/decal/cleanable/blood/oil name = "motor oil" diff --git a/code/game/objects/effects/decals/cleanable/blood/xeno.dm b/code/game/objects/effects/decals/cleanable/blood/xeno.dm index ade4723a1d74..df56704ff70c 100644 --- a/code/game/objects/effects/decals/cleanable/blood/xeno.dm +++ b/code/game/objects/effects/decals/cleanable/blood/xeno.dm @@ -20,10 +20,10 @@ color = "#FFFFFF" /obj/effect/decal/cleanable/blood/gibs/xeno/up - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1") + random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6", "xgibup1", "xgibup1", "xgibup1") /obj/effect/decal/cleanable/blood/gibs/xeno/down - random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1") + random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6", "xgibdown1", "xgibdown1", "xgibdown1") /obj/effect/decal/cleanable/blood/gibs/xeno/body random_icon_states = list("xgibhead", "xgibtorso") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0d6704207629..4653ad913e33 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -239,13 +239,20 @@ /obj/item/proc/suicide_act(mob/user) return -/*Global item proc for all of your unique item skin needs. Works with any -item, and will change the skin to whatever you specify here. You can also -manually override the icon with a unique skin if wanted, for the outlier -cases. Override_icon_state should be a list.*/ +/** + * Global item proc for all of your unique item skin needs. Works with any + * item, and will change the skin to whatever you specify here. You can also + * manually override the icon with a unique skin if wanted, for the outlier + * cases. Override_icon_state should be a list. Generally requires NO_GAMEMODE_SKIN + * to not be set for changes to be applied. + * + * Returns whether changes were applied. + */ /obj/item/proc/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) if(type != expected_type) - return + return FALSE + if(flags_atom & NO_GAMEMODE_SKIN) + return FALSE var/new_icon_state var/new_protection @@ -254,19 +261,22 @@ cases. Override_icon_state should be a list.*/ new_icon_state = override_icon_state[SSmapping.configs[GROUND_MAP].map_name] if(LAZYLEN(override_protection)) new_protection = override_protection[SSmapping.configs[GROUND_MAP].map_name] - switch(SSmapping.configs[GROUND_MAP].camouflage_type) - if("snow") - icon_state = new_icon_state ? new_icon_state : "s_" + icon_state - item_state = new_item_state ? new_item_state : "s_" + item_state - if("desert") - icon_state = new_icon_state ? new_icon_state : "d_" + icon_state - item_state = new_item_state ? new_item_state : "d_" + item_state - if("classic") - icon_state = new_icon_state ? new_icon_state : "c_" + icon_state - item_state = new_item_state ? new_item_state : "c_" + item_state + if(!isnull(icon_state) || new_icon_state || new_item_state) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + icon_state = new_icon_state ? new_icon_state : "s_" + icon_state + item_state = new_item_state ? new_item_state : "s_" + item_state + if("desert") + icon_state = new_icon_state ? new_icon_state : "d_" + icon_state + item_state = new_item_state ? new_item_state : "d_" + item_state + if("classic") + icon_state = new_icon_state ? new_icon_state : "c_" + icon_state + item_state = new_item_state ? new_item_state : "c_" + item_state if(new_protection) min_cold_protection_temperature = new_protection + return TRUE + /obj/item/get_examine_text(mob/user) . = list() var/size diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm index 37e722a37773..bdf26874fd5d 100644 --- a/code/game/objects/items/devices/binoculars.dm +++ b/code/game/objects/items/devices/binoculars.dm @@ -12,8 +12,6 @@ throwforce = 5 throw_range = 15 throw_speed = SPEED_VERY_FAST - /// If FALSE won't change icon_state to a camo marine bino. - var/uses_camo = TRUE var/tile_offset = 11 var/viewsize = 12 var/hvh_tile_offset = 6 //same as miniscopes @@ -23,8 +21,6 @@ /obj/item/device/binoculars/Initialize() . = ..() - if(!uses_camo) - return select_gamemode_skin(type) /obj/item/device/binoculars/attack_self(mob/user) @@ -55,7 +51,7 @@ /obj/item/device/binoculars/civ desc = "A pair of binoculars." icon_state = "binoculars_civ" - uses_camo = FALSE + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN // same sprite for all gamemodes //RANGEFINDER with ability to acquire coordinates /obj/item/device/binoculars/range @@ -516,7 +512,7 @@ icon_state = "designator_e" //laser_con is to add you to the list of laser users. - flags_atom = FPRINT|CONDUCT + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN force = 5 w_class = SIZE_SMALL throwforce = 5 diff --git a/code/game/objects/items/devices/dummy_tablet.dm b/code/game/objects/items/devices/dummy_tablet.dm index 4996daf5366e..eb7167db5a4b 100644 --- a/code/game/objects/items/devices/dummy_tablet.dm +++ b/code/game/objects/items/devices/dummy_tablet.dm @@ -5,6 +5,7 @@ suffix = "\[3\]" icon_state = "Cotablet" item_state = "Cotablet" + item_icons = list(WEAR_R_HAND = null, WEAR_L_HAND = null) // No mob state currently var/mob/living/carbon/human/linked_dummy ///Should the dummy be destroyed on hijack? diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index e2a77e4b8977..477617d3735a 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -439,7 +439,7 @@ K9 SCANNER /obj/item/device/black_market_scanner/update_icon(scan_value = 0, scanning = FALSE) . = ..() overlays.Cut() - overlays += image('icons/obj/items/devices.dmi', "+mendoza_scanner_value_flash") + overlays += image('icons/obj/items/devices.dmi', "+mendoza_scanner_flash") if(scanning) overlays += image('icons/obj/items/devices.dmi', "+mendoza_scanner_clamp_on") switch(scan_value) diff --git a/code/game/objects/items/devices/walkman.dm b/code/game/objects/items/devices/walkman.dm index b88bfb017abd..8d20e1fc29d0 100644 --- a/code/game/objects/items/devices/walkman.dm +++ b/code/game/objects/items/devices/walkman.dm @@ -176,7 +176,7 @@ var/mob/living/carbon/human/H = loc H.regenerate_icons() -/obj/item/device/walkman/get_mob_overlay(mob/user_mob, slot) +/obj/item/device/walkman/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/ret = ..() if((slot == WEAR_L_EAR || slot == WEAR_R_EAR) && !paused) var/image/I = overlay_image(ret.icon, "+music", color, RESET_COLOR) diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index b92d3ccf97cb..bb9f0bd424c3 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -34,6 +34,8 @@ . = ..() if(map_deployed) deploy_mine(null) + else + cause_data = create_cause_data(initial(name)) /obj/item/explosive/mine/Destroy() QDEL_NULL(tripwire) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index af71b806ed42..45a37c17fc92 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -75,7 +75,7 @@ throw_range = 5 matter = list("metal" = 500) -/obj/item/restraint/handcuffs/get_mob_overlay(mob/user_mob, slot) +/obj/item/restraint/handcuffs/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/ret = ..() var/image/handcuffs = overlay_image('icons/mob/mob.dmi', "handcuff1", color, RESET_COLOR) diff --git a/code/game/objects/items/reagent_containers/autoinjectors.dm b/code/game/objects/items/reagent_containers/autoinjectors.dm index 885c3f75ddb6..be29ffe8a6f6 100644 --- a/code/game/objects/items/reagent_containers/autoinjectors.dm +++ b/code/game/objects/items/reagent_containers/autoinjectors.dm @@ -243,6 +243,13 @@ display_maptext = TRUE maptext_label = "UZ" +/obj/item/reagent_container/hypospray/autoinjector/ultrazine/update_icon() + icon_state = uses_left ? "stimpack" : "stimpack0" + if((isstorage(loc) || ismob(loc)) && display_maptext) + maptext = SPAN_LANGCHAT("[maptext_label]") + else + maptext = "" + /obj/item/reagent_container/hypospray/autoinjector/ultrazine/liaison name = "white autoinjector" desc = "You know what they say, don't jab yourself with suspicious syringes." diff --git a/code/game/objects/items/shards.dm b/code/game/objects/items/shards.dm index dab573e6f5a5..a006a6f7505c 100644 --- a/code/game/objects/items/shards.dm +++ b/code/game/objects/items/shards.dm @@ -16,6 +16,8 @@ var/source_sheet_type = /obj/item/stack/sheet/glass var/shardsize var/count = 1 + /// Whether to add small/medium/large to the end of the icon_state on Initialize + var/random_size = TRUE garbage = TRUE /obj/item/shard/attack(mob/living/carbon/M, mob/living/carbon/user) @@ -26,22 +28,21 @@ /obj/item/shard/Initialize() . = ..() - shardsize = pick("large", "medium", "small") - switch(shardsize) - if("small") - pixel_x = rand(-12, 12) - pixel_y = rand(-12, 12) - icon_state += shardsize - if("medium") - pixel_x = rand(-8, 8) - pixel_y = rand(-8, 8) - icon_state += shardsize - if("large") - pixel_x = rand(-5, 5) - pixel_y = rand(-5, 5) - icon_state += shardsize - - + if(random_size) + shardsize = pick("large", "medium", "small") + switch(shardsize) + if("small") + pixel_x = rand(-12, 12) + pixel_y = rand(-12, 12) + icon_state += shardsize + if("medium") + pixel_x = rand(-8, 8) + pixel_y = rand(-8, 8) + icon_state += shardsize + if("large") + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) + icon_state += shardsize /obj/item/shard/attackby(obj/item/W, mob/user) if ( iswelder(W)) @@ -237,6 +238,7 @@ desc = "Some shrapnel that used to be embedded underneath someone's skin." icon_state = "small" damage_on_move = 2 + random_size = FALSE /obj/item/shard/shrapnel/upp/bits name = "tiny shrapnel" @@ -251,6 +253,7 @@ matter = list("bone" = 50) desc = "It looks like it came from a prehistoric animal." damage_on_move = 0.6 + random_size = FALSE /obj/item/shard/shrapnel/bone_chips/human name = "human bone fragments" diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 805f0ecf4030..31a179890be6 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -411,14 +411,14 @@ desc = "The standard-issue pack of the USCM forces. Designed to lug gear into the battlefield." icon_state = "marinepack" item_state = "marinepack" - has_gamemode_skin = TRUE //replace this with the atom_flag NO_SNOW_TYPE at some point, just rename it to like, NO_MAP_VARIANT_SKIN + flags_atom = FPRINT // has gamemode skin xeno_icon_state = "marinepack" xeno_types = list(/mob/living/carbon/xenomorph/runner, /mob/living/carbon/xenomorph/praetorian, /mob/living/carbon/xenomorph/drone, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/defender, /mob/living/carbon/xenomorph/sentinel, /mob/living/carbon/xenomorph/spitter) /obj/item/storage/backpack/marine/ammo_rack name = "\improper IMP ammo rack" desc = "A bare IMP frame with buckles designed to hold multiple ammo cans, but can fit any cumbersome box thanks to Marine ingenuity. Helps you lug around extra rounds or supplies." - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes storage_slots = 3 icon_state = "ammo_pack_0" can_hold = list(/obj/item/ammo_box, /obj/item/stack/folding_barricade) @@ -453,10 +453,11 @@ xeno_icon_state = "medicpack" xeno_types = list(/mob/living/carbon/xenomorph/runner, /mob/living/carbon/xenomorph/praetorian, /mob/living/carbon/xenomorph/drone, /mob/living/carbon/xenomorph/warrior, /mob/living/carbon/xenomorph/defender, /mob/living/carbon/xenomorph/sentinel, /mob/living/carbon/xenomorph/spitter) -/obj/item/storage/backpack/marine/k9_synth/ +/obj/item/storage/backpack/marine/k9_synth icon_override = 'icons/mob/humans/species/synth_k9/onmob/synth_k9_overlays.dmi' uniform_restricted = list(/obj/item/clothing/under/rank/synthetic/synth_k9) //K9 Synth only force_overlays_on = TRUE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/backpack/marine/k9_synth/cargopack name = "\improper M209 portable K9 backpack" @@ -528,7 +529,7 @@ name = "\improper USCM chestrig" desc = "A chestrig used by some USCM personnel." icon_state = "chestrig" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/rto) @@ -537,7 +538,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r desc = "A heavy-duty pack, used for telecommunications between central command. Commonly carried by RTOs." icon_state = "rto_backpack" item_state = "rto_backpack" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes actions_types = list(/datum/action/item_action/rto_pack/use_phone) flags_item = ITEM_OVERRIDE_NORTHFACE @@ -683,7 +684,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "tacrucksack" desc = "With a backpack like this, you'll forget you're on a hell march designed to kill you." worn_accessible = TRUE - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes xeno_types = null /obj/item/storage/backpack/marine/rocketpack @@ -691,7 +692,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r desc = "A specially-designed backpack that fits to the IMP mounting frame on standard USCM pattern M3 armors. It's made of two waterproofed reinforced tubes and one smaller satchel slung at the bottom. The two silos are for rockets, but no one is stopping you from cramming other things in there." icon_state = "rocketpack" worn_accessible = TRUE - has_gamemode_skin = FALSE //monkeysfist101 never sprited a snowtype but included duplicate icons. Why?? Recolor and touch up sprite at a later date. + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes xeno_types = null /obj/item/storage/backpack/marine/grenadepack @@ -704,7 +705,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r storage_slots = 12 can_hold = list(/obj/item/explosive/grenade) is_id_lockable = TRUE - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes xeno_types = null /obj/item/storage/backpack/marine/grenadepack/attackby(obj/item/W, mob/user) @@ -733,7 +734,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon = 'icons/obj/items/clothing/belts.dmi' icon_state = "g8pouch" item_state = "g8pouch" - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin can_hold_skill = list() /obj/item/storage/backpack/general_belt/equipped(mob/user, slot) @@ -754,7 +755,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r unacidable = TRUE explo_proof = TRUE uniform_restricted = list(/obj/item/clothing/suit/storage/marine/M3S) //Need to wear Scout armor and helmet to equip this. - has_gamemode_skin = FALSE //same sprite for all gamemode. + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes var/camo_active = FALSE var/camo_alpha = 10 var/allow_gun_usage = FALSE @@ -907,7 +908,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r var/fuel_type = "fuel" max_storage_space = 18 storage_slots = null - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin xeno_types = null /obj/item/storage/backpack/marine/engineerpack/Initialize() @@ -984,7 +985,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "satchel_marine_welder" item_state = "satchel_marine_welder" max_storage_space = 12 - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes max_fuel = 100 worn_accessible = TRUE @@ -994,7 +995,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "welder_chestrig" item_state = "welder_chestrig" max_storage_space = 12 - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes max_fuel = 100 worn_accessible = TRUE @@ -1005,7 +1006,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "flamethrower_tank" max_fuel = 500 fuel_type = "utnapthal" - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/backpack/marine/engineerpack/flamethrower/verb/remove_reagents() set name = "Empty canister" @@ -1065,7 +1066,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "flamethrower_backpack" item_state = "flamethrower_backpack" max_fuel = 350 - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes max_storage_space = 15 storage_slots = 3 worn_accessible = TRUE @@ -1087,7 +1088,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r name = "\improper lightweight technician welderpack" desc = "A small, lightweight pack for expeditions and short-range operations. Features a small fueltank for quick blowtorch refueling." icon_state = "ERT_satchel_welder" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes worn_accessible = TRUE max_fuel = 180 @@ -1161,7 +1162,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r name = "\improper UCP3-E technician welderpack" desc = "A special version of the Union Combat Pack MK3 featuring a small fueltank for quick blowtorch refueling. Used by UPP Sappers." icon_state = "satchel_upp_welder" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes worn_accessible = TRUE max_fuel = 180 max_storage_space = 12 @@ -1180,7 +1181,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r //----------TWE SECTION---------- /obj/item/storage/backpack/rmc - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/backpack/rmc/heavy name = "heavyweight RMC backpack" @@ -1229,5 +1230,5 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r desc = "A small, lightweight pouch that can be clipped onto armor to provide additional storage. This new RMC model, while uncomfortable, can also be clipped around the waist." icon_state = "rmc_general" item_state = "rmc_general" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes max_storage_space = 15 diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index b1e7f65b82d0..22fd413ef0b0 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -15,6 +15,8 @@ cant_hold = list(/obj/item/weapon/throwing_knife) ///TRUE Means that it closes a flap over its contents, and therefore update_icon should lift that flap when opened. If it doesn't have _half and _full iconstates, this doesn't matter either way. var/flap = TRUE + /// Indiciates whether the _half and _full overlays should be applied in update_icon + var/skip_fullness_overlays = FALSE /obj/item/storage/belt/gun/flaregun/dump_into(obj/item/storage/origin_storage, mob/user) @@ -48,11 +50,15 @@ /obj/item/storage/belt/update_icon() overlays.Cut() + + if(skip_fullness_overlays) + return if(!length(contents)) return if(content_watchers && flap) //If it has a flap and someone's looking inside it, don't close the flap. return - else if(length(contents) <= storage_slots * 0.5) + + if(length(contents) <= storage_slots * 0.5) overlays += "+[icon_state]_half" else overlays += "+[icon_state]_full" @@ -73,6 +79,7 @@ item_state = "champion" storage_slots = 1 can_hold = list(/obj/item/clothing/mask/luchador) + skip_fullness_overlays = TRUE @@ -281,7 +288,7 @@ /obj/item/device/reagent_scanner, /obj/item/device/analyzer/plant_analyzer, ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/medical/lifesaver/full/fill_preset_inventory() new /obj/item/stack/medical/advanced/bruise_pack(src) @@ -359,7 +366,7 @@ desc = "The Type 41 load rig is the standard load-bearing equipment of the UPP military. This configuration mounts a duffel bag filled with a range of injectors and light medical supplies, and is common among medics." icon_state = "medicbag_u" item_state = "medicbag_u" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/belt/medical/lifesaver/upp/full/fill_preset_inventory() new /obj/item/stack/medical/advanced/bruise_pack(src) @@ -465,6 +472,7 @@ storage_slots = 9 max_w_class = SIZE_MEDIUM max_storage_space = 21 + skip_fullness_overlays = TRUE /obj/item/storage/belt/security/MP @@ -556,7 +564,7 @@ /obj/item/ammo_magazine/rifle, /obj/item/ammo_magazine/smg, ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/marine/m41a/fill_preset_inventory() for(var/i = 1 to storage_slots) @@ -684,14 +692,15 @@ item_state_slots = list( WEAR_L_HAND = "marinebelt", WEAR_R_HAND = "marinebelt") - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes + skip_fullness_overlays = TRUE /obj/item/storage/belt/marine/upp name = "\improper Type 41 pattern load rig" desc = "The Type 41 load rig is the standard-issue load-bearing equipment of the UPP military. The primary function of this belt is to provide easy access to mags for the Type 71 during operations. Despite being designed for the Type 71 weapon system, the pouches are modular enough to fit other types of ammo and equipment." icon_state = "upp_belt" item_state = "upp_belt" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes //version full of type 71 mags /obj/item/storage/belt/marine/upp/full/fill_preset_inventory() @@ -734,7 +743,7 @@ /obj/item/tool/wirecutters, /obj/item/ammo_magazine/m56d, ) - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/belt/shotgun name = "\improper M276 pattern shotgun shell loading rig" @@ -747,7 +756,7 @@ max_storage_space = 28 can_hold = list(/obj/item/ammo_magazine/handful) flap = FALSE - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/shotgun/full/fill_preset_inventory() for(var/i = 1 to storage_slots) @@ -788,12 +797,13 @@ storage_slots = null max_storage_space = 20 can_hold = list(/obj/item/ammo_magazine/handful/shotgun/twobore) - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes item_state_slots = list( WEAR_J_STORE = "van_bandolier_10", WEAR_BACK = "van_bandolier_10", WEAR_WAIST = "van_bandolier_10" ) + skip_fullness_overlays = TRUE /obj/item/storage/belt/shotgun/van_bandolier/update_icon() var/mob/living/carbon/human/user = loc @@ -871,7 +881,8 @@ WEAR_R_HAND = "marinebelt") name = "Mrs. Quackers" desc = "She always did have a meaner temper." - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes + skip_fullness_overlays = TRUE /obj/item/storage/belt/knifepouch name="\improper M276 pattern knife rig" @@ -1015,6 +1026,18 @@ /obj/item/weapon/gun/pistol, /obj/item/ammo_magazine/pistol, ) + cant_hold = list( + /obj/item/weapon/gun/revolver/m44/custom/pkd_special, // HONKed currently + /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049, // HONKed currently + /obj/item/weapon/gun/revolver/m44/custom/pkd_special/l_series, // HONKed currently + /obj/item/weapon/gun/pistol/kt42, // HONKed currently + /obj/item/weapon/gun/pistol/holdout, // HONKed currently + /obj/item/weapon/gun/pistol/holdout/flashlight, // HONKed currently + /obj/item/weapon/gun/pistol/es4, // HONKed currently + /obj/item/weapon/gun/pistol/auto9, // HONKed currently + /obj/item/weapon/gun/pistol/chimp, // HONKed currently + /obj/item/weapon/gun/pistol/skorpion, // HONKed currently + ) /obj/item/storage/belt/gun/post_skin_selection() base_icon = icon_state @@ -1027,11 +1050,14 @@ /obj/item/storage/belt/gun/update_icon() overlays.Cut() + if(skip_fullness_overlays) + return if(content_watchers && flap) return var/magazines = length(contents) - length(holstered_guns) if(!magazines) return + if(magazines <= (storage_slots - length(holster_slots)) * 0.5) //Don't count slots reserved for guns, even if they're empty. overlays += "+[base_icon]_half" else @@ -1194,8 +1220,18 @@ cant_hold = list( /obj/item/weapon/gun/pistol/smart, /obj/item/ammo_magazine/pistol/smart, + /obj/item/weapon/gun/revolver/m44/custom/pkd_special, // HONKed currently + /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049, // HONKed currently + /obj/item/weapon/gun/revolver/m44/custom/pkd_special/l_series, // HONKed currently + /obj/item/weapon/gun/pistol/kt42, // HONKed currently + /obj/item/weapon/gun/pistol/holdout, // HONKed currently + /obj/item/weapon/gun/pistol/holdout/flashlight, // HONKed currently + /obj/item/weapon/gun/pistol/es4, // HONKed currently + /obj/item/weapon/gun/pistol/auto9, // HONKed currently + /obj/item/weapon/gun/pistol/chimp, // HONKed currently + /obj/item/weapon/gun/pistol/skorpion, // HONKed currently ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/gun/m4a3/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/pistol/m4a3()) @@ -1295,7 +1331,7 @@ /obj/item/weapon/gun/smg/nailgun/compact, /obj/item/ammo_magazine/smg/nailgun, ) - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/belt/gun/m4a3/nailgun/prefilled/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/smg/nailgun/compact()) @@ -1313,6 +1349,9 @@ /obj/item/weapon/gun/smg/m39, /obj/item/ammo_magazine/smg, ) + cant_hold = list ( + /obj/item/weapon/gun/smg/m39/elite, // HONKed currently + ) holster_slots = list( "1" = list( "icon_x" = -11, @@ -1334,7 +1373,7 @@ name = "\improper M276 pattern XM51 holster rig" desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is for the XM51 breaching scattergun, allowing easier storage of the weapon. It features pouches for storing two magazines along with extra shells." icon_state = "xm51_holster" - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin gun_has_gamemode_skin = TRUE storage_slots = 8 max_w_class = 5 @@ -1391,7 +1430,7 @@ /obj/item/weapon/gun/revolver, /obj/item/ammo_magazine/revolver, ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin holster_slots = list( "1" = list( "icon_x" = -1, @@ -1421,10 +1460,11 @@ /obj/item/weapon/gun/revolver, /obj/item/ammo_magazine/revolver, ) - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes holster_slots = list( "1" = list("icon_x" = -9, "icon_y" = -3), "2" = list("icon_x" = 9, "icon_y" = -3)) + skip_fullness_overlays = TRUE /obj/item/storage/belt/gun/m44/gunslinger/Initialize() var/matrix/M = matrix() @@ -1494,6 +1534,7 @@ can_hold = list( /obj/item/weapon/gun/revolver, ) + skip_fullness_overlays = TRUE /obj/item/storage/belt/gun/mateba name = "\improper M276 pattern Mateba holster rig" @@ -1525,7 +1566,7 @@ desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This version is for the powerful Mateba magnum revolver, along with five small pouches for speedloaders. It was included with the mail-order USCM edition of the Mateba autorevolver in the early 2170s." icon_state = "cmateba_holster" item_state = "marinebelt" - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/gun/mateba/cmateba/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba/cmateba()) @@ -1668,7 +1709,7 @@ icon_state = "ivan_belt" storage_slots = 56 max_storage_space = 56 - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes max_w_class = SIZE_MASSIVE can_hold = list( /obj/item/weapon/gun/pistol, @@ -1688,9 +1729,24 @@ /obj/item/ammo_magazine/pistol/rubber, /obj/item/ammo_magazine/pistol/mod88/rubber) //Ivan doesn't bring children's ammo. + var/list/bad_guns = list( + /obj/item/weapon/gun/pistol/m4a3/training, + /obj/item/weapon/gun/pistol/mod88/training, + /obj/item/weapon/gun/revolver/m44/custom/pkd_special, // HONKed currently + /obj/item/weapon/gun/revolver/m44/custom/pkd_special/k2049, // HONKed currently + /obj/item/weapon/gun/revolver/m44/custom/pkd_special/l_series, // HONKed currently + /obj/item/weapon/gun/pistol/kt42, // HONKed currently + /obj/item/weapon/gun/pistol/holdout, // HONKed currently + /obj/item/weapon/gun/pistol/holdout/flashlight, // HONKed currently + /obj/item/weapon/gun/pistol/es4, // HONKed currently + /obj/item/weapon/gun/pistol/auto9, // HONKed currently + /obj/item/weapon/gun/pistol/chimp, // HONKed currently + /obj/item/weapon/gun/pistol/skorpion, // HONKed currently + ) + var/list/picklist = subtypesof(/obj/item/ammo_magazine) - (internal_mags + bad_mags + sentry_mags + training_mags) var/random_mag = pick(picklist) - var/guntype = pick(subtypesof(/obj/item/weapon/gun/revolver) + subtypesof(/obj/item/weapon/gun/pistol) - list(/obj/item/weapon/gun/pistol/m4a3/training, /obj/item/weapon/gun/pistol/mod88/training)) + var/guntype = pick(subtypesof(/obj/item/weapon/gun/revolver) + subtypesof(/obj/item/weapon/gun/pistol) - bad_guns) handle_item_insertion(new guntype()) for(var/total_storage_slots in 2 to storage_slots) //minus templates new random_mag(src) @@ -1709,7 +1765,7 @@ /obj/item/weapon/gun/pistol/smart, /obj/item/ammo_magazine/pistol/smart, ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/gun/smartpistol/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/pistol/smart()) @@ -1761,7 +1817,7 @@ /obj/item/weapon/gun/revolver/m44/custom/webley, /obj/item/ammo_magazine/revolver, ) - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes holster_slots = list( "1" = list( "icon_x" = -1, @@ -1789,7 +1845,7 @@ /obj/item/ammo_magazine/pistol, /obj/item/ammo_magazine/smartgun, ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/gun/smartgunner/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/pistol/m4a3()) @@ -1810,7 +1866,6 @@ /obj/item/ammo_magazine/pistol, /obj/item/ammo_magazine/smartgun, ) - has_gamemode_skin = TRUE /obj/item/storage/belt/gun/smartgunner/pmc/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/pistol/vp78()) @@ -1832,7 +1887,6 @@ /obj/item/ammo_magazine/pistol, /obj/item/ammo_magazine/smartgun, ) - has_gamemode_skin = TRUE /obj/item/storage/belt/gun/smartgunner/whiteout/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba/pmc()) @@ -1854,7 +1908,6 @@ /obj/item/ammo_magazine/pistol, /obj/item/ammo_magazine/smartgun, ) - has_gamemode_skin = TRUE /obj/item/storage/belt/gun/smartgunner/clf/full/fill_preset_inventory() handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba()) @@ -1875,7 +1928,7 @@ /obj/item/mortar_shell, ) bypass_w_limit = list(/obj/item/mortar_shell) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/belt/gun/utility name = "\improper M276 pattern combat toolbelt rig" @@ -1964,6 +2017,7 @@ storage_slots = 8 flags_inventory = CANTSTRIP max_w_class = 0 //this belt cannot hold anything + skip_fullness_overlays = TRUE /obj/item/storage/belt/souto/fill_preset_inventory() for(var/i = 1 to storage_slots) @@ -1984,8 +2038,7 @@ desc = "Good for carrying around extra ammo in the heat of the jungle. Made of special rot-resistant fabric." icon_state = "rmc_ammo" item_state = "rmc_ammo" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE - has_gamemode_skin = FALSE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN /obj/item/storage/belt/marine/rmc/rmc_f90_ammo/fill_preset_inventory() for(var/i in 1 to storage_slots) @@ -2000,20 +2053,19 @@ desc = "The L75 is the standard load-bearing equipment of the RMC. It consists of a modular belt with various clips. This version is designed to transport medical supplies and pistol ammunition. \nRight click its sprite and click \"toggle belt mode\" to take pills out of bottles by simply clicking them." icon_state = "rmc_medical" item_state = "rmc_medical" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN /obj/item/storage/belt/gun/l905 name = "\improper L905 gunbelt" desc = "Finely-tooled leather, a L905, and six magazines. More than enough for the standard RMC commando." icon_state = "rmc_pistol" item_state = "rmc_pistol" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN storage_slots = 7 can_hold = list( /obj/item/weapon/gun/pistol/vp78, /obj/item/ammo_magazine/pistol/vp78, ) - has_gamemode_skin = FALSE holster_slots = list( "1" = list( "icon_x" = -1, diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 0647d214be97..05178fe7c121 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -651,7 +651,7 @@ var/model_icon = "model_m40" var/type_icon = "hedp" var/grenade_type = /obj/item/explosive/grenade/high_explosive - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/box/nade_box/Initialize() . = ..() @@ -736,7 +736,7 @@ type_icon = null grenade_type = /obj/item/explosive/grenade/high_explosive/training can_hold = list(/obj/item/explosive/grenade/high_explosive/training) - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/box/nade_box/tear_gas name = "\improper M66 tear gas grenade box" @@ -746,7 +746,7 @@ type_icon = null can_hold = list(/obj/item/explosive/grenade/custom/teargas) grenade_type = /obj/item/explosive/grenade/custom/teargas - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/box/nade_box/tear_gas/fill_preset_inventory() ..() diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index b687f6c5b85d..fab4fbd8bc76 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/items/storage/briefcases.dmi' icon_state = "briefcase" item_state = "briefcase" - flags_atom = FPRINT|CONDUCT + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN force = 8 throw_speed = SPEED_FAST throw_range = 4 diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 79d38603dc7e..56cdc99a3ef9 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -17,8 +17,7 @@ */ /obj/item/storage/fancy - icon = 'icons/obj/items/food.dmi' - icon_state = "donutbox" + icon = null // We don't have fancy sprites for the base type, so don't check name = "donut box" desc = "A box where round, heavenly, holey pastries reside." var/icon_type = "donut" diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index 7a073042e122..df6190444003 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -66,7 +66,7 @@ /obj/item/weapon/gun/shotgun/combat, /obj/item/weapon/gun/shotgun/double/mou53, ) - has_gamemode_skin = TRUE + flags_atom = FPRINT // has gamemode skin /obj/item/storage/large_holster/m37/full/fill_preset_inventory() new /obj/item/weapon/gun/shotgun/pump(src) @@ -215,7 +215,6 @@ var/image/flamer_overlay actions_types = list(/datum/action/item_action/specialist/toggle_fuel) can_hold = list(/obj/item/weapon/gun/flamer/M240T) - has_gamemode_skin = TRUE /obj/item/storage/large_holster/fuelpack/Initialize() . = ..() @@ -255,7 +254,7 @@ ..() // Get the right onmob icon when we have flamer holstered. -/obj/item/storage/large_holster/fuelpack/get_mob_overlay(mob/user_mob, slot) +/obj/item/storage/large_holster/fuelpack/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/ret = ..() if(slot == WEAR_BACK) if(length(contents)) diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 835f0d7cc4f9..0fae4b0fb8e1 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -160,7 +160,7 @@ icon_opened = "safe0" icon_locking = "safeb" icon_sparking = "safespark" - flags_atom = FPRINT|CONDUCT + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN force = 8 w_class = SIZE_LARGE max_w_class = SIZE_LARGE diff --git a/code/game/objects/items/storage/smartpack.dm b/code/game/objects/items/storage/smartpack.dm index afdfbdfa2246..904f1d76649c 100644 --- a/code/game/objects/items/storage/smartpack.dm +++ b/code/game/objects/items/storage/smartpack.dm @@ -14,7 +14,7 @@ desc = "A joint project between the USCM and Wey-Yu. It is said to be top-class engineering and state of the art technology. Given to USCM deployed synthetic units and the intended usage involve assisting in battlefield support. Can be recharged by grabbing onto an APC and completing the circuit with one's fingers (procedure not advised for non-synthetic personnel). WARNING - User is advised to take precautions." item_state = "smartpack" icon_state = "smartpack" - has_gamemode_skin = FALSE + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes max_storage_space = 14 worn_accessible = TRUE actions_types = list(/datum/action/item_action/toggle) @@ -109,7 +109,7 @@ else overlays += "+[icon_state]_full" -/obj/item/storage/backpack/marine/smartpack/get_mob_overlay(mob/user_mob, slot) +/obj/item/storage/backpack/marine/smartpack/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/ret = ..() var/light = "+lamp_on" diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 1e1d12760cab..531fdfaedd35 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -8,6 +8,7 @@ /obj/item/storage name = "storage" w_class = SIZE_MEDIUM + flags_atom = FPRINT|NO_GAMEMODE_SKIN var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/list/bypass_w_limit = new/list() //a list of objects which this item can store despite not passing the w_class limit @@ -28,7 +29,6 @@ var/opened = FALSE //Has it been opened before? var/list/content_watchers //list of mobs currently seeing the storage's contents var/storage_flags = STORAGE_FLAGS_DEFAULT - var/has_gamemode_skin = FALSE ///Whether to use map-variant skins. ///Special can_holds that require a skill to insert, it is an associated list of typepath = list(skilltype, skilllevel) var/list/can_hold_skill = list() @@ -806,13 +806,9 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ closer = new closer.master = src - if(has_gamemode_skin) - select_gamemode_skin(type) - + select_gamemode_skin(type) post_skin_selection() - fill_preset_inventory() - update_icon() /* diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index a2989ed12f92..41ecf7cd084a 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -6,7 +6,7 @@ item_state = "toolbox_red" pickup_sound = 'sound/handling/toolbox_pickup.ogg' drop_sound = 'sound/handling/toolbox_drop.ogg' - flags_atom = FPRINT|CONDUCT + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN force = 5 throwforce = 10 throw_speed = SPEED_FAST diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 98c4d1938725..6e375c327cda 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -375,8 +375,8 @@ update_health(floor(P.ammo.damage / 2)) return 1 -/obj/item/proc/get_mob_overlay(mob/user_mob, slot) - var/bodytype = "Default" +/obj/item/proc/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") + var/bodytype = default_bodytype var/mob/living/carbon/human/user_human if(ishuman(user_mob)) user_human = user_mob diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 0e4a20cf989a..2b812e8e09c5 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -178,7 +178,7 @@ ICE GRASS /obj/structure/flora/grass/ice icon = 'icons/obj/structures/props/snowflora.dmi' - icon_state = "" + icon_state = null variations = 3 //brown @@ -188,12 +188,15 @@ ICE GRASS /obj/structure/flora/grass/ice/brown/snowgrassbb_1 icon_state = "snowgrassbb_1" + icon_tag = null // Don't randomize /obj/structure/flora/grass/ice/brown/snowgrassbb_2 icon_state = "snowgrassbb_2" + icon_tag = null // Don't randomize /obj/structure/flora/grass/ice/brown/snowgrassbb_3 icon_state = "snowgrassbb_3" + icon_tag = null // Don't randomize //green /obj/structure/flora/grass/ice/green @@ -212,20 +215,29 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. */ /obj/structure/flora/grass/ice/icey - icon_state = "icegrass5" //full patch of grass + icon_state = "icegrass_5" //full patch of grass icon_tag = "icegrass" + variations = 5 /obj/structure/flora/grass/ice/icey/eightdirection - icon_state = "icegrass1" //8 different directional states. + icon_state = "icegrass_1" //8 different directional states. + icon_tag = null // Don't randomize /obj/structure/flora/grass/ice/icey/fourdirection - icon_state = "icegrass2" //4 different directional states + icon_state = "icegrass_2" //4 different directional states + icon_tag = null // Don't randomize /obj/structure/flora/grass/ice/icey/center - icon_state = "icegrass3" //1 center piece of grass + icon_state = "icegrass_3" //1 center piece of grass + icon_tag = null // Don't randomize /obj/structure/flora/grass/ice/icey/centerfull - icon_state = "icegrass4" //More grass. + icon_state = "icegrass_4" //More grass. + icon_tag = null // Don't randomize + +/obj/structure/flora/grass/ice/icey/full + icon_state = "icegrass_5" //full patch of grass + icon_tag = null // Don't randomize /* @@ -435,9 +447,9 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. icon_tag = "lavendergrass" layer = BELOW_MOB_LAYER -/obj/structure/flora/bush/ausbushes/ppflowers - icon_state = "ppflowers_1" - icon_tag = "ppflowers" +/obj/structure/flora/bush/ausbushes/ywflowers + icon_state = "ywflowers_1" + icon_tag = "ywflowers" layer = BELOW_MOB_LAYER /* @@ -469,16 +481,16 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. icon_state = "sunnybush_1" icon_tag = "sunnybush" -/obj/structure/flora/bush/ausbushes/var3/ywflowers - icon_state = "ywflowers_1" - icon_tag = "ywflowers" - layer = BELOW_MOB_LAYER - /obj/structure/flora/bush/ausbushes/var3/brflowers icon_state = "brflowers_1" icon_tag = "brflowers" layer = BELOW_MOB_LAYER +/obj/structure/flora/bush/ausbushes/var3/ppflowers + icon_state = "ppflowers_1" + icon_tag = "ppflowers" + layer = BELOW_MOB_LAYER + /obj/structure/flora/bush/ausbushes/var3/sparsegrass icon_state = "sparsegrass_1" icon_tag = "sparsegrass" diff --git a/code/game/objects/structures/ice_caves.dm b/code/game/objects/structures/ice_caves.dm index 1c89d27f608e..ea561576d086 100644 --- a/code/game/objects/structures/ice_caves.dm +++ b/code/game/objects/structures/ice_caves.dm @@ -35,28 +35,6 @@ icon_state = "Intersection" -//Thin Ice Secret Wall -/turf/closed/ice/thin/secret - desc = "There is something inside..." - -/turf/closed/ice/thin/secret/single - icon_state = "Single" - -/turf/closed/ice/thin/secret/end - icon_state = "End" - -/turf/closed/ice/thin/secret/straight - icon_state = "Straight" - -/turf/closed/ice/thin/secret/corner - icon_state = "Corner" - -/turf/closed/ice/thin/secret/junction - icon_state = "T-Junction" - -/turf/closed/ice/thin/secret/intersection - icon_state = "Intersection" - //ROCK WALLS------------------------------// /obj/structure/ice/ice_rock name = "Icy rock" diff --git a/code/game/objects/structures/misc.dm b/code/game/objects/structures/misc.dm index 0ab3e98356d5..22e58154c7dc 100644 --- a/code/game/objects/structures/misc.dm +++ b/code/game/objects/structures/misc.dm @@ -133,15 +133,58 @@ name = "sample jar" icon = 'icons/obj/structures/props/alien_autopsy.dmi' icon_state = "jar_sample" - desc = "Used to store organic samples inside for preservation." + desc = "Used to store organic samples inside for preservation. You aren't sure what's inside." + var/list/overlay_options = list( + "sample_egg", + "sample_larva", + "sample_hugger", + "sample_runner_tail", + "sample_runner", + "sample_runner_head", + "sample_drone_tail", + "sample_drone", + "sample_drone_head", + "sample_sentinel_tail", + "sample_sentinel", + "sample_sentinel_head", + ) + +/obj/item/alienjar/ovi + desc = "Used to store organic samples inside for preservation. Looks like maybe an egg?" + overlay_options = list( + "sample_egg", + "sample_larva", + "sample_hugger", + ) + +/obj/item/alienjar/runner + desc = "Used to store organic samples inside for preservation. Looks like its part of a red one." + overlay_options = list( + "sample_runner_tail", + "sample_runner", + "sample_runner_head", + ) + +/obj/item/alienjar/drone + desc = "Used to store organic samples inside for preservation. Looks like a common part." + overlay_options = list( + "sample_drone_tail", + "sample_drone", + "sample_drone_head", + ) + +/obj/item/alienjar/sentinel + desc = "Used to store organic samples inside for preservation. Looks like its part of a red one." + overlay_options = list( + "sample_sentinel_tail", + "sample_sentinel", + "sample_sentinel_head", + ) /obj/item/alienjar/Initialize(mapload, ...) . = ..() - var/image/I - I = image('icons/obj/structures/props/alien_autopsy.dmi', "sample_[rand(0,11)]") - I.layer = src.layer - 0.1 - overlays += I + underlays += image('icons/obj/structures/props/alien_autopsy.dmi', pick(overlay_options)) pixel_x += rand(-3,3) pixel_y += rand(-3,3) diff --git a/code/game/objects/structures/pipes/pipes.dm b/code/game/objects/structures/pipes/pipes.dm index 67868498ba2e..6d6cb2265596 100644 --- a/code/game/objects/structures/pipes/pipes.dm +++ b/code/game/objects/structures/pipes/pipes.dm @@ -36,7 +36,6 @@ if(mapload) create_valid_directions() - search_for_connections() if(!is_mainship_level(z)) diff --git a/code/game/objects/structures/pipes/standard/manifolds.dm b/code/game/objects/structures/pipes/standard/manifolds.dm index 10b8557532b2..70276ed8cba3 100644 --- a/code/game/objects/structures/pipes/standard/manifolds.dm +++ b/code/game/objects/structures/pipes/standard/manifolds.dm @@ -1,6 +1,5 @@ /obj/structure/pipes/standard/manifold icon = 'icons/obj/pipes/manifold.dmi' - icon_state = "" name = "pipe manifold" desc = "A manifold composed of regular pipes" dir = SOUTH diff --git a/code/game/objects/structures/pipes/trinary_misc.dm b/code/game/objects/structures/pipes/trinary_misc.dm index 111497dd36ba..cd2ef243a73c 100644 --- a/code/game/objects/structures/pipes/trinary_misc.dm +++ b/code/game/objects/structures/pipes/trinary_misc.dm @@ -2,6 +2,11 @@ dir = SOUTH valid_directions = list(SOUTH, NORTH, WEST) +/obj/structure/pipes/trinary/Initialize(mapload, ...) + . = ..() + if(!mapload) + update_icon() + /obj/structure/pipes/trinary/create_valid_directions() switch(dir) if(NORTH) @@ -21,15 +26,11 @@ level = 1 name = "Gas filter" -/obj/structure/pipes/trinary/filter/Initialize() - . = ..() - icon_state = "" - /obj/structure/pipes/trinary/filter/update_icon() if(length(connected_to)) - icon_state += "on" + icon_state = "on" else - icon_state += "off" + icon_state = "off" /obj/structure/pipes/trinary/filter/update_underlays() if(..()) @@ -55,9 +56,11 @@ dir = SOUTH valid_directions = list(SOUTH, NORTH, EAST) -/obj/structure/pipes/trinary/filter/m_filter/Initialize() - . = ..() - icon_state = "m" +/obj/structure/pipes/trinary/filter/update_icon() + if(length(connected_to)) + icon_state = "mon" + else + icon_state = "moff" /obj/structure/pipes/trinary/filter/m_filter/create_valid_directions() switch(dir) @@ -78,15 +81,11 @@ level = 1 name = "Gas mixer" -/obj/structure/pipes/trinary/filter/Initialize() - . = ..() - icon_state = "" - -/obj/structure/pipes/trinary/mixer/update_icon(safety = 0) +/obj/structure/pipes/trinary/mixer/update_icon() if(length(connected_to)) - icon_state += "on" + icon_state = "on" else - icon_state += "off" + icon_state = "off" /obj/structure/pipes/trinary/mixer/update_underlays() if(..()) @@ -116,9 +115,11 @@ dir = SOUTH valid_directions = list(SOUTH, EAST, WEST) -/obj/structure/pipes/trinary/mixer/t_mixer/Initialize() - . = ..() - icon_state = "t" +/obj/structure/pipes/trinary/mixer/t_mixer/update_icon() + if(length(connected_to)) + icon_state = "ton" + else + icon_state = "toff" /obj/structure/pipes/trinary/mixer/t_mixer/create_valid_directions() switch(dir) @@ -131,14 +132,17 @@ if(WEST) valid_directions = list(WEST, NORTH, SOUTH) + /obj/structure/pipes/trinary/mixer/m_mixer icon_state = "mmap" dir = SOUTH valid_directions = list(SOUTH, NORTH, EAST) -/obj/structure/pipes/trinary/mixer/m_mixer/Initialize() - . = ..() - icon_state = "m" +/obj/structure/pipes/trinary/mixer/t_mixer/update_icon() + if(length(connected_to)) + icon_state = "mon" + else + icon_state = "moff" /obj/structure/pipes/trinary/mixer/m_mixer/create_valid_directions() switch(dir) diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 9ee077156ee3..bfcfeee195f4 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -19,7 +19,7 @@ /turf/closed/cordon name = "world border" icon = 'icons/turf/shuttle.dmi' - icon_state = "pclosed" + icon_state = "pwall" layer = ABOVE_TURF_LAYER baseturfs = /turf/closed/cordon @@ -126,7 +126,7 @@ icon_state = "Corner" /turf/closed/ice/secret/junction - icon_state = "T-Junction" + icon_state = "T_Junction" /turf/closed/ice/secret/intersection icon_state = "Intersection" @@ -175,7 +175,7 @@ icon_state = "Corner" /turf/closed/ice/thin/secret/junction - icon_state = "T-Junction" + icon_state = "T_Junction" /turf/closed/ice/thin/secret/intersection icon_state = "Intersection" diff --git a/code/game/turfs/floor.dm b/code/game/turfs/floor.dm index 1be6235cd2ac..55e1fde8f41e 100644 --- a/code/game/turfs/floor.dm +++ b/code/game/turfs/floor.dm @@ -87,51 +87,45 @@ break_tile() /turf/open/floor/proc/break_tile() - if(!breakable_tile || hull_floor) return - if(broken) return + if(!breakable_tile || hull_floor) + return + if(broken) + return + broken = TRUE if(is_plasteel_floor()) icon_state = "damaged[pick(1, 2, 3, 4, 5)]" - broken = 1 else if(is_light_floor()) icon_state = "light_broken" - broken = 1 set_light(0) else if(is_plating()) icon_state = "platingdmg[pick(1, 2, 3)]" - broken = 1 else if(is_wood_floor()) icon_state = "wood-broken" - broken = 1 else if(is_carpet_floor()) icon_state = "carpet-broken" - broken = 1 else if(is_grass_floor()) icon_state = "grass[pick("1", "2", "3")]" - broken = 1 /turf/open/floor/proc/burn_tile() - if(!burnable_tile|| hull_floor) return - if(broken || burnt) return + if(!burnable_tile || hull_floor) + return + if(broken || burnt) + return + burnt = TRUE if(is_plasteel_floor()) icon_state = "damaged[pick(1, 2, 3, 4, 5)]" - burnt = 1 else if(is_plasteel_floor()) icon_state = "floorscorched[pick(1, 2)]" - burnt = 1 else if(is_plating()) icon_state = "panelscorched" - burnt = 1 else if(is_wood_floor()) icon_state = "wood-broken" - burnt = 1 else if(is_carpet_floor()) icon_state = "carpet-broken" - burnt = 1 else if(is_grass_floor()) icon_state = "grass[pick("1", "2", "3")]" - burnt = 1 //This proc auto corrects the grass tiles' siding. /turf/open/floor/proc/make_plating() diff --git a/code/game/turfs/floor_types.dm b/code/game/turfs/floor_types.dm index 5e72483f420f..ef8be0f87d47 100644 --- a/code/game/turfs/floor_types.dm +++ b/code/game/turfs/floor_types.dm @@ -265,6 +265,7 @@ icon_state = "plating_catwalk" var/base_state = "plating" //Post mapping var/covered = TRUE + var/covered_icon_state = "catwalk" /turf/open/floor/plating/plating_catwalk/Initialize(mapload, ...) . = ..() @@ -275,7 +276,7 @@ /turf/open/floor/plating/plating_catwalk/update_icon() . = ..() if(covered) - overlays += image(icon, src, "catwalk", CATWALK_LAYER) + overlays += image(icon, src, covered_icon_state, CATWALK_LAYER) /turf/open/floor/plating/plating_catwalk/attackby(obj/item/W as obj, mob/user as mob) if (HAS_TRAIT(W, TRAIT_TOOL_CROWBAR)) @@ -322,19 +323,13 @@ /turf/open/floor/plating/plating_catwalk/aicore icon = 'icons/turf/floors/aicore.dmi' icon_state = "ai_plating_catwalk" - -/turf/open/floor/plating/plating_catwalk/aicore/update_icon() - . = ..() - if(covered) - overlays += image(icon, src, "ai_catwalk", CATWALK_LAYER) + breakable_tile = FALSE // platingdmg# icon_state does not exist in this icon + burnable_tile = FALSE // panelscorched icon_state does not exist in this icon + covered_icon_state = "ai_catwalk" /turf/open/floor/plating/plating_catwalk/aicore/white icon_state = "w_ai_plating_catwalk" - -/turf/open/floor/plating/plating_catwalk/aicore/white/update_icon() - . = ..() - if(covered) - overlays += image(icon, src, "w_ai_catwalk", CATWALK_LAYER) + covered_icon_state = "w_ai_catwalk" /turf/open/floor/plating/ironsand name = "Iron Sand" @@ -350,7 +345,8 @@ icon_state = "catwalk0" name = "catwalk" desc = "Cats really don't like these things." - + breakable_tile = FALSE // platingdmg# icon_state does not exist in this icon + burnable_tile = FALSE // panelscorched icon_state does not exist in this icon /turf/open/floor/almayer icon = 'icons/turf/almayer.dmi' @@ -2099,11 +2095,14 @@ /turf/open/floor/interior icon = 'icons/turf/floors/interior.dmi' + icon_state = null /turf/open/floor/interior/wood name = "wooden floor" icon_state = "oldwood1" tile_type = /obj/item/stack/tile/wood + breakable_tile = FALSE // wood-broken icon_state does not exist in this icon + burnable_tile = FALSE // wood-broken icon_state does not exist in this icon /turf/open/floor/interior/wood/is_wood_floor() return TRUE @@ -3492,7 +3491,7 @@ icon_state = "blueyellowfull" /turf/open/floor/cafeteria - icon_state = "cafeteria" + icon_state = "cafeteriaold" /turf/open/floor/cmo icon_state = "cmo" diff --git a/code/game/turfs/floors/desert.dm b/code/game/turfs/floors/desert.dm index 6aa2e9f02261..bef9fd77318e 100644 --- a/code/game/turfs/floors/desert.dm +++ b/code/game/turfs/floors/desert.dm @@ -82,17 +82,6 @@ /turf/open/desert/dirt/rock1 icon_state = "rock1" -//desert riverbed -/turf/open/desert/riverbed/dirt1 - name = "riverbed" - icon_state = "dirt1" -//turf/open/desert/riverbed/dirt2 -// name = "riverbed" -// icon_state = "dirt2" -//turf/open/desert/riverbed/dirt3 -// name = "riverbed" -// icon_state = "dirt3" - //desert floor /turf/open/desert/rock name = "rock" @@ -275,23 +264,29 @@ //Desert Cave /turf/open/desert/cave + icon = 'icons/turf/floors/desertdam_map.dmi' icon_state = "outer_cave_floor1" + //desert floor to outer cave floor transition /turf/open/desert/cave/desert_into_outer_cave_floor name = "cave" icon_state = "outer_cave_transition1" + //outer cave floor /turf/open/desert/cave/outer_cave_floor name = "cave" icon_state = "outer_cave_floor1" + //outer to inner cave floor transition /turf/open/desert/cave/outer_cave_to_inner_cave name = "cave" icon_state = "outer_cave_to_inner1" + //inner cave floor /turf/open/desert/cave/inner_cave_floor name = "cave" icon_state = "inner_cave_1" + //inner cave shore /turf/open/desert/cave/cave_shore name = "cave shore" @@ -454,6 +449,7 @@ /turf/open/desert/excavation icon = 'icons/turf/floors/desert_excavation.dmi' + icon_state = null //Engineer Ship /turf/open/desert/excavation/component1 diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 680348e4d995..1a7f432540cb 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -787,7 +787,8 @@ LM.spin = TRUE LM.pass_flags = NO_FLAGS to_chat(unlucky_mob, SPAN_WARNING("The ocean currents sweep you off your feet and throw you away!")) - unlucky_mob.launch_towards(LM) + // Entered can occur during Initialize so we need to not sleep + INVOKE_ASYNC(unlucky_mob, TYPE_PROC_REF(/atom/movable, launch_towards), LM) return if(world.time % 5) @@ -1028,7 +1029,7 @@ if(prob(90)) var/image/I if(prob(35)) - I = image('icons/obj/structures/props/jungleplants.dmi',"plant[rand(1,7)]") + I = image('icons/obj/structures/props/jungleplants.dmi',"plant_[rand(1,7)]") else if(prob(30)) I = image('icons/obj/structures/props/ausflora.dmi',"reedbush_[rand(1,4)]") @@ -1095,20 +1096,6 @@ icon_state = "grass_clear" icon_spawn_state = "grass1" -/turf/open/jungle/path - bushes_spawn = 0 - name = "dirt" - desc = "it is very dirty." - icon = 'icons/turf/floors/jungle.dmi' - icon_state = "grass_path" - icon_spawn_state = "dirt" - minimap_color = MINIMAP_DIRT - -/turf/open/jungle/path/Initialize(mapload, ...) - . = ..() - for(var/obj/structure/flora/jungle/thickbush/B in src) - qdel(B) - /turf/open/jungle/impenetrable bushes_spawn = FALSE icon_state = "grass_impenetrable" @@ -1126,7 +1113,7 @@ bushes_spawn = 0 name = "murky water" desc = "thick, murky water" - icon = 'icons/turf/floors//beach.dmi' + icon = 'icons/turf/floors/beach.dmi' icon_state = "water" icon_spawn_state = "water" can_bloody = FALSE @@ -1333,38 +1320,50 @@ /turf/open/shuttle/escapepod/floor0/north dir = NORTH +/turf/open/shuttle/escapepod/floor0/east + dir = EAST + /turf/open/shuttle/escapepod/floor0/west dir = WEST /turf/open/shuttle/escapepod/floor1 icon_state = "floor1" +/turf/open/shuttle/escapepod/floor1/north + dir = NORTH + /turf/open/shuttle/escapepod/floor1/east dir = EAST -/turf/open/shuttle/escapepod/floor11 - icon_state = "floor11" - -/turf/open/shuttle/escapepod/floor12 - icon_state = "floor12" +/turf/open/shuttle/escapepod/floor1/west + dir = WEST /turf/open/shuttle/escapepod/floor2 icon_state = "floor2" -/turf/open/shuttle/escapepod/floor4 - icon_state = "floor4" +/turf/open/shuttle/escapepod/floor2/north + dir = NORTH -/turf/open/shuttle/escapepod/floor5 - icon_state = "floor5" +/turf/open/shuttle/escapepod/floor2/east + dir = EAST -/turf/open/shuttle/escapepod/floor7 - icon_state = "floor7" +/turf/open/shuttle/escapepod/floor2/west + dir = WEST -/turf/open/shuttle/escapepod/floor8 - icon_state = "floor8" +/turf/open/shuttle/escapepod/floor3 + icon_state = "floor3" -/turf/open/shuttle/escapepod/floor9 - icon_state = "floor9" +/turf/open/shuttle/escapepod/floor3/north + dir = NORTH + +/turf/open/shuttle/escapepod/floor3/east + dir = EAST + +/turf/open/shuttle/escapepod/floor3/west + dir = WEST + +/turf/open/shuttle/escapepod/floor4 + icon_state = "floor4" /turf/open/shuttle/lifeboat icon = 'icons/turf/almayer.dmi' diff --git a/code/game/turfs/walls/wall_icon.dm b/code/game/turfs/walls/wall_icon.dm index 8552063b586f..5410938d6149 100644 --- a/code/game/turfs/walls/wall_icon.dm +++ b/code/game/turfs/walls/wall_icon.dm @@ -3,7 +3,6 @@ #define cur_increment(v) floor((v-1)/8)+1 /turf/closed/wall/update_icon() - ..() if(QDELETED(src)) return diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 551cc561bf4a..e4af3ac3fd86 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -114,9 +114,10 @@ /turf/closed/wall/almayer/research/containment/wall name = "cell wall" icon = 'icons/turf/almayer.dmi' + icon_state = null tiles_with = null walltype = null - special_icon = 1 + special_icon = TRUE /turf/closed/wall/almayer/research/containment/wall/ex_act(severity, explosion_direction) if(severity <= EXPLOSION_THRESHOLD_MEDIUM) // Wall is resistant to explosives (and also crusher charge) @@ -475,10 +476,6 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) /turf/closed/wall/vault icon_state = "rockvault" -/turf/closed/wall/vault/Initialize() - . = ..() - icon_state = "[type]vault" - //Hangar walls /turf/closed/wall/hangar @@ -689,13 +686,14 @@ INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) //ICE COLONY, AKA SHIVA'S SNOWBALL TOBLERONE WALLS /turf/closed/wall/shiva icon = 'icons/turf/walls/ice_colony/shiva_turfs.dmi' + walltype = WALL_SHIVA_ICE /turf/closed/wall/shiva/ice name = "black ice slabs" icon_state = "shiva_ice" desc = "Slabs on slabs of dirty black ice crusted over ancient rock formations. The permafrost fluctuates between 20in and 12in during the summer months." walltype = WALL_SHIVA_ICE //Not a metal wall - hull = 1 //Can't break this ice. + hull = TRUE //Can't break this ice. /turf/closed/wall/shiva/prefabricated name = "prefabricated structure wall" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 323b5ead1df2..bc9d5328fcf9 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -91,7 +91,7 @@ /obj/item/clothing/proc/update_clothing_icon() return -/obj/item/clothing/get_mob_overlay(mob/user_mob, slot) +/obj/item/clothing/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/ret = ..() if(slot == WEAR_L_HAND || slot == WEAR_R_HAND) diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm index 786643b24aea..cfc861655528 100644 --- a/code/modules/clothing/clothing_accessories.dm +++ b/code/modules/clothing/clothing_accessories.dm @@ -20,10 +20,10 @@ inv_overlay.color = color return inv_overlay -/obj/item/clothing/accessory/get_mob_overlay(mob/user_mob, slot) +/obj/item/clothing/accessory/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") if(!istype(loc,/obj/item/clothing)) //don't need special handling if it's worn as normal item. return ..() - var/bodytype = "Default" + var/bodytype = default_bodytype if(ishuman(user_mob)) var/mob/living/carbon/human/user_human = user_mob var/user_bodytype = user_human.species.get_bodytype(user_human) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 56c8bb5a6418..a6fc205c93ab 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -29,13 +29,6 @@ if(prescription) AddElement(/datum/element/poor_eyesight_correction) -/obj/item/clothing/glasses/get_icon_state(mob/user_mob, slot) - var/item_state_slot_state = LAZYACCESS(item_state_slots, slot) - if(item_state_slot_state) - return item_state_slot_state - else - return icon_state - /obj/item/clothing/glasses/update_clothing_icon() if(ismob(src.loc)) var/mob/M = src.loc @@ -645,7 +638,7 @@ name = "\improper BiMex personal shades" desc = "These are an expensive pair of BiMex sunglasses. This brand is popular with USCM foot sloggers because its patented mirror refraction has been said to offer protection from atomic flash, solar radiation, and targeting lasers. To top it all off, everyone seems to know a guy who knows a guy who knows a guy that had a laser pistol reflect off of his shades. BiMex came into popularity with the Marines after its 'Save the Colonies and Look Cool Doing It' ad campaign." icon_state = "bigsunglasses" - item_state = "bigsunglasses" + item_state = "sunglasses" eye_protection = EYE_PROTECTION_FLASH clothing_traits = list(TRAIT_BIMEX) flags_equip_slot = SLOT_EYES|SLOT_FACE @@ -655,7 +648,7 @@ name = "aviator shades" desc = "A pair of tan tinted sunglasses. You can faintly hear 80's music playing while wearing these." icon_state = "aviator" - item_state = "aviator" + item_state = "sunglasses" flags_equip_slot = SLOT_EYES|SLOT_FACE flags_obj = OBJ_IS_HELMET_GARB @@ -678,6 +671,7 @@ desc = "A standard eyepiece, but modified to display security information to the user visually. This makes it commonplace among military police, though other models exist." icon_state = "securityhud" item_state = "securityhud" + item_icons = list(WEAR_FACE = 'icons/mob/humans/onmob/eyes.dmi') eye_protection = EYE_PROTECTION_FLASH diff --git a/code/modules/clothing/gloves/marine_gloves.dm b/code/modules/clothing/gloves/marine_gloves.dm index d36073bb48a0..6de4d2164020 100644 --- a/code/modules/clothing/gloves/marine_gloves.dm +++ b/code/modules/clothing/gloves/marine_gloves.dm @@ -25,9 +25,9 @@ /// The dmi where the grayscale squad overlays are contained var/squad_overlay_icon = 'icons/mob/humans/onmob/hands_garb.dmi' -/obj/item/clothing/gloves/marine/get_mob_overlay(mob/living/carbon/human/current_human, slot) +/obj/item/clothing/gloves/marine/get_mob_overlay(mob/living/carbon/human/current_human, slot, default_bodytype = "Default") var/image/ret = ..() - if(!adopts_squad_color || !(current_human.assigned_squad && current_human.assigned_squad.equipment_color)) + if(!adopts_squad_color || !(current_human?.assigned_squad?.equipment_color)) return ret var/image/glove_overlay = image(squad_overlay_icon, icon_state = "std-gloves") glove_overlay.alpha = current_human.assigned_squad.armor_alpha @@ -216,7 +216,7 @@ name = "\improper L6 pattern combat gloves" desc = "Standard issue tactical gloves used by the royal marines." icon_state = "rmc_gloves" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN /obj/item/clothing/gloves/marine/veteran/cbrn name = "\improper M3 MOPP gloves" diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm index f9c8adbf9a77..84a54fae53c5 100644 --- a/code/modules/clothing/head/head.dm +++ b/code/modules/clothing/head/head.dm @@ -290,8 +290,7 @@ /obj/item/clothing/head/cmcap/Initialize(mapload, ...) . = ..() - if(!(flags_atom & NO_SNOW_TYPE)) - select_gamemode_skin(type) + select_gamemode_skin(type) base_cap_icon = icon_state helmet_overlays = list("item") //To make things simple. @@ -302,6 +301,10 @@ pockets.bypass_w_limit = allowed_hat_items pockets.max_storage_space = storage_max_storage_space +/obj/item/clothing/head/cmcap/Destroy() + QDEL_NULL(pockets) + return ..() + /obj/item/clothing/head/cmcap/attack_hand(mob/user) if(loc != user) ..(user) @@ -328,7 +331,7 @@ var/mob/M = loc M.update_inv_head() -/obj/item/clothing/head/cmcap/get_mob_overlay(mob/user_mob, slot) +/obj/item/clothing/head/cmcap/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/return_image = ..() if(slot != WEAR_HEAD) return return_image @@ -381,7 +384,7 @@ /obj/item/clothing/head/cmcap/boonie/tan icon_state = "booniehattan" - flags_atom = FPRINT|NO_SNOW_TYPE + flags_atom = FPRINT|NO_GAMEMODE_SKIN /obj/item/clothing/head/cmcap/co name = "\improper USCM Commanding officer cap" @@ -393,7 +396,7 @@ icon_state = "co_formalhat_white" desc = "A formal cover worn by senior officers of the USCM." flags_marine_hat = HAT_GARB_OVERLAY - flags_atom = FPRINT|NO_SNOW_TYPE + flags_atom = FPRINT|NO_GAMEMODE_SKIN /obj/item/clothing/head/cmcap/co/formal/black name = "\improper USCM formal Commanding Officer's black cap" @@ -403,13 +406,13 @@ name = "\improper USCM quartermaster cap" desc = "It's a fancy hat for a not-so-fancy military supply clerk." icon_state = "rocap" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/cmcap/req name = "\improper USCM requisition cap" desc = "It's a not-so-fancy hat for a not-so-fancy military supply clerk." icon_state = "cargocap" - flags_atom = FPRINT|NO_SNOW_TYPE + flags_atom = FPRINT|NO_GAMEMODE_SKIN /obj/item/clothing/head/cmcap/bridge name = "\improper USCM officer cap" @@ -428,7 +431,7 @@ desc = "A faithful cap for any terrain war correspondents may find themselves in." icon_state = "cc_flagcap" item_state = "cc_flagcap" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_marine_hat = HAT_GARB_OVERLAY /obj/item/clothing/head/cmo @@ -775,7 +778,7 @@ icon_state = "duragblack" desc = "An improvised head wrap made out of a black neckerchief. Great for keeping the sweat out of your eyes and protecting your hair." icon = 'icons/obj/items/clothing/cm_hats.dmi' - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/durag/Initialize(mapload, ...) . = ..() @@ -844,7 +847,7 @@ icon_state = "rmc_beret" item_state = "rmc_beret" icon = 'icons/obj/items/clothing/cm_hats.dmi' - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN item_icons = list( WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' ) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index cfa3eb5566cf..faa560e6bbb8 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -422,8 +422,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( else name += " helmet" - if(!(flags_atom & NO_SNOW_TYPE)) - select_gamemode_skin(type, null, new_protection) + select_gamemode_skin(type, null, new_protection) helmet_overlays = list() //To make things simple. @@ -468,6 +467,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( var/obj/item/device/helmet_visor/temp_visor_holder = active_visor active_visor = null toggle_visor(potential_user, temp_visor_holder, TRUE) + QDEL_NULL_LIST(built_in_visors) return ..() /obj/item/clothing/head/helmet/marine/attack_hand(mob/user) @@ -773,22 +773,22 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( desc = "A standard M10 Pattern Helmet. This one has not had a camouflage pattern applied to it yet. There is a built-in camera on the right side." icon_state = "c_helmet" item_state = "c_helmet" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/jungle icon_state = "helmet" item_state = "helmet" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/snow icon_state = "s_helmet" item_state = "s_helmet" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/desert icon_state = "d_helmet" item_state = "d_helmet" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/tech/tanker name = "\improper M50 tanker helmet" @@ -816,7 +816,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( desc = "An M10 marine helmet version worn by marine hospital corpsmen. Painted in medical white and has white cross in a red square painted on its front." icon_state = "med_helmet_white" specialty = "M10 pattern medic white" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_marine_helmet = HELMET_GARB_OVERLAY|HELMET_DAMAGE_OVERLAY /obj/item/clothing/head/helmet/marine/covert @@ -831,7 +831,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_MEDIUM specialty = "M10 pattern covert" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/leader name = "\improper M11 pattern helmet" @@ -933,7 +933,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( desc = "The M30 tactical helmet has a left eyepiece filter used to filter tactical data. It is required to fly the dropships manually and in safety. This one belonged to Tex: the craziest sum'bitch pilot the Almayer ever had. He's not dead or anything, but he did get a medical discharge after he was hit by a car on shore leave last year." icon_state = "helmetp_tex" item_state = "helmetp_tex" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/ghillie name = "\improper M45 ghillie helmet" @@ -958,7 +958,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( armor_energy = CLOTHING_ARMOR_MEDIUMLOW armor_bio = CLOTHING_ARMOR_MEDIUMHIGH specialty = "M10 pattern captain" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN built_in_visors = list(new /obj/item/device/helmet_visor, new /obj/item/device/helmet_visor/medical/advanced, new /obj/item/device/helmet_visor/security) /obj/item/clothing/head/helmet/marine/MP @@ -990,7 +990,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( desc = "The expensive headwear of a Provost Marshal. Contains shards of kevlar to keep its valuable contents safe." icon_state = "pvmarshalhat" item_state = "pvmarshalhat" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_inventory = BLOCKSHARPOBJ|FULL_DECAP_PROTECTION /obj/item/clothing/head/helmet/marine/sof @@ -1002,7 +1002,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( armor_energy = CLOTHING_ARMOR_MEDIUMLOW armor_bio = CLOTHING_ARMOR_MEDIUMHIGH specialty = "M10 pattern SOF" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN built_in_visors = list(new /obj/item/device/helmet_visor/night_vision/marine_raider, new /obj/item/device/helmet_visor/security) start_down_visor_type = /obj/item/device/helmet_visor/night_vision/marine_raider @@ -1010,7 +1010,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( //=======================================================================\\ /obj/item/clothing/head/helmet/marine/veteran - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make these keep their name and icon. + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE //Let's make these keep their name and icon. built_in_visors = list() /obj/item/clothing/head/helmet/marine/veteran/pmc @@ -1095,7 +1095,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( icon_state = "ua_riot" armor_energy = CLOTHING_ARMOR_MEDIUMLOW specialty = "RC6" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN // KUTJEVO HELMET @@ -1313,7 +1313,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/clothing/head/helmet/skullcap/jungle/New(loc, type, new_protection[] = list(MAP_ICE_COLONY = ICE_PLANET_MIN_COLD_PROT)) - select_gamemode_skin(type,, new_protection) + select_gamemode_skin(type, override_protection = new_protection) ..() switch(icon_state) if("s_skullcapm") @@ -1387,7 +1387,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( armor_bomb = CLOTHING_ARMOR_HARDCORE // the hefa knight stands flags_inv_hide = HIDEEARS|HIDEALLHAIR|HIDEEYES flags_marine_helmet = NO_FLAGS - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN armor_bullet = CLOTHING_ARMOR_VERYHIGH armor_melee = CLOTHING_ARMOR_VERYHIGH armor_bomb = CLOTHING_ARMOR_GIGAHIGH @@ -1444,7 +1444,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( desc = "A helmet designed to make it clear that the wearer is safety aware and not looking for a fight." icon_state = "cc_helmet" item_state = "cc_helmet" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE built_in_visors = list() @@ -1466,7 +1466,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( throwforce = 0 flags_inventory = BLOCKSHARPOBJ flags_marine_helmet = NO_FLAGS - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_inv_hide = HIDEEARS|HIDEALLHAIR built_in_visors = list() @@ -1494,7 +1494,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( flags_inventory = BLOCKSHARPOBJ flags_inv_hide = NO_FLAGS flags_marine_helmet = NO_FLAGS - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN /obj/item/clothing/head/helmet/marine/veteran/royal_marine/breacher name = "\improper L5A3 ballistic helmet" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index b13fab0ae5a4..c92055535ba3 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -152,4 +152,4 @@ name = "\improper L7 gasmask" desc = "The L7 Gasmask used by members of the three world empires royal marines commando." icon_state = "rmc_mask" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN diff --git a/code/modules/clothing/suits/marine_armor/_marine_armor.dm b/code/modules/clothing/suits/marine_armor/_marine_armor.dm index 138de402fbe4..010c5fd9c63b 100644 --- a/code/modules/clothing/suits/marine_armor/_marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm @@ -115,8 +115,7 @@ else name += " armor" - if(!(flags_atom & NO_SNOW_TYPE)) - select_gamemode_skin(type) + select_gamemode_skin(type) armor_overlays = list("lamp") //Just one for now, can add more later. if(armor_variation && mapload) set_armor_style("Random") @@ -314,6 +313,7 @@ specialty = "M3 pattern general" item_state_slots = list(WEAR_JACKET = "general") w_class = SIZE_MEDIUM + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/clothing/suit/storage/marine/MP/SO name = "\improper M3 pattern officer armor" @@ -334,7 +334,7 @@ item_state = "co_officer" armor_bullet = CLOTHING_ARMOR_HIGH storage_slots = 3 - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS uniform_restricted = list(/obj/item/clothing/under/marine, /obj/item/clothing/under/rank/qm_suit) specialty = "M3 pattern captain" @@ -460,7 +460,7 @@ name = "\improper M3-VL pattern ballistics vest" desc = "Up until 2182 USCM non-combat personnel were issued non-standardized ballistics vests, though the lack of IMP compatibility and suit lamps proved time and time again inefficient. This modified M3-L shell is the result of a 6-year R&D program; It provides utility, protection, AND comfort to all USCM non-combat personnel." icon_state = "VL" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_marine_armor = ARMOR_LAMP_OVERLAY //No squad colors when wearing this since it'd look funny. armor_melee = CLOTHING_ARMOR_MEDIUMLOW armor_bullet = CLOTHING_ARMOR_HIGH @@ -503,23 +503,23 @@ /obj/item/clothing/suit/storage/marine/light/synvest/grey icon_state = "VL_syn" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE /obj/item/clothing/suit/storage/marine/light/synvest/jungle icon_state = "VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE /obj/item/clothing/suit/storage/marine/light/synvest/snow icon_state = "s_VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE /obj/item/clothing/suit/storage/marine/light/synvest/desert icon_state = "d_VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE /obj/item/clothing/suit/storage/marine/light/synvest/dgrey icon_state = "c_VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE /obj/item/clothing/suit/storage/marine/light/recon name = "M3-R pattern light armor" @@ -672,5 +672,5 @@ name = "press body armor" desc = "Body armor used by war correspondents in battles and wars across the universe." icon_state = "cc_armor" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE diff --git a/code/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm index 2070a7d33da2..ea058420477a 100644 --- a/code/modules/clothing/suits/marine_armor/ert.dm +++ b/code/modules/clothing/suits/marine_armor/ert.dm @@ -13,7 +13,7 @@ armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH slowdown = SLOWDOWN_ARMOR_LIGHT unacidable = TRUE - flags_atom = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE|NO_SNOW_TYPE + flags_atom = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE|NO_GAMEMODE_SKIN storage_slots = 4 @@ -22,7 +22,7 @@ /obj/item/clothing/suit/storage/marine/veteran flags_marine_armor = ARMOR_LAMP_OVERLAY - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make these keep their name and icon. + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE //Let's make these keep their name and icon. /obj/item/clothing/suit/storage/marine/veteran/pmc name = "\improper M4 pattern PMC armor" @@ -34,7 +34,7 @@ armor_rad = CLOTHING_ARMOR_MEDIUM storage_slots = 2 slowdown = SLOWDOWN_ARMOR_LIGHT - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE allowed = list( /obj/item/weapon/gun, /obj/item/tank/emergency_oxygen, @@ -134,7 +134,7 @@ desc = "A modification of the standard Armat Systems M3 armor. Hooked up with harnesses and straps allowing the user to carry an M56 Smartgun." icon_state = "heavy_armor" flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN|SMARTGUN_HARNESS - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH armor_laser = CLOTHING_ARMOR_MEDIUMLOW armor_energy = CLOTHING_ARMOR_MEDIUMLOW @@ -244,7 +244,7 @@ //=====================================================================\\ /obj/item/clothing/suit/storage/marine/faction - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS @@ -635,7 +635,7 @@ desc = "A thick piece of armor adorning a HEFA. Usually seen on a HEFA knight." specialty = "HEFA Knight" icon_state = "hefadier" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN flags_item = NO_CRYO_STORE flags_marine_armor = ARMOR_LAMP_OVERLAY armor_bullet = CLOTHING_ARMOR_VERYHIGH @@ -657,7 +657,7 @@ armor_bomb = CLOTHING_ARMOR_MEDIUMHIGH armor_bio = CLOTHING_ARMOR_MEDIUMHIGH armor_internaldamage = CLOTHING_ARMOR_MEDIUM - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE storage_slots = 3 /obj/item/clothing/suit/storage/marine/MP/provost/tml @@ -705,7 +705,7 @@ armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW storage_slots = 2 slowdown = SLOWDOWN_ARMOR_LIGHT - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE allowed = list( /obj/item/weapon/gun, /obj/item/tank/emergency_oxygen, @@ -745,7 +745,7 @@ armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH slowdown = SLOWDOWN_ARMOR_VERY_LIGHT // it's lighter uniform_restricted = list(/obj/item/clothing/under/marine/ua_riot) - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/suit/storage/marine/veteran/ua_riot/synth name = "\improper UA-M1S Synthetic body armor" @@ -760,7 +760,7 @@ armor_internaldamage = CLOTHING_ARMOR_NONE slowdown = SLOWDOWN_ARMOR_SUPER_LIGHT storage_slots = 3 - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE flags_marine_armor = ARMOR_SQUAD_OVERLAY|ARMOR_LAMP_OVERLAY|SYNTH_ALLOWED //================//=ROYAL MARINES=\\====================================\\ @@ -771,7 +771,7 @@ desc = "A customizable personal armor system used by the Three World Empire's Royal Marines Commandos. Designers from a Weyland Yutani subsidary, Lindenthal-Ehrenfeld Militärindustrie, iterated on the USCMC's M3 pattern personal armor in their Tokonigara lab to create an armor systemed to suit the unique needs of the Three World Empire's smaller but better equipped Royal Marines." icon_state = "rmc_light" item_state = "rmc_light" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN allowed = list( /obj/item/weapon/gun, /obj/item/tank/emergency_oxygen, @@ -842,7 +842,7 @@ armor_rad =CLOTHING_ARMOR_MEDIUMLOW armor_internaldamage = CLOTHING_ARMOR_LOW flags_marine_armor = NO_FLAGS - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN flags_inventory = BLOCKSHARPOBJ flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN diff --git a/code/modules/clothing/suits/marine_armor/ghillie.dm b/code/modules/clothing/suits/marine_armor/ghillie.dm index c55e1d054b79..afbcab951ad4 100644 --- a/code/modules/clothing/suits/marine_armor/ghillie.dm +++ b/code/modules/clothing/suits/marine_armor/ghillie.dm @@ -161,4 +161,4 @@ name = "UDEP Thermal Poncho" desc = "UDEP or the Ultra Diffusive Environmental Poncho is a camouflaged rain-cover worn to protect against the elements and chemical spills. It's commonly treated with an infrared absorbing coating, making a marine almost invisible in the rain. Favoured by USCM specialists for it's comfort and practicality." icon_state = "mercenary_miner_armor" - flags_atom = MOB_LOCK_ON_EQUIP|NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = MOB_LOCK_ON_EQUIP|NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE diff --git a/code/modules/clothing/suits/marine_armor/intel.dm b/code/modules/clothing/suits/marine_armor/intel.dm index 12aa824648d1..e6d9ab0c6c7a 100644 --- a/code/modules/clothing/suits/marine_armor/intel.dm +++ b/code/modules/clothing/suits/marine_armor/intel.dm @@ -17,6 +17,10 @@ proximity = new(src) update_icon() +/obj/item/clothing/suit/storage/marine/medium/rto/intel/Destroy() + QDEL_NULL(proximity) + return ..() + /datum/action/item_action/intel/action_activate() . = ..() if(!ishuman(owner)) diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm index fc2a76698029..6a713330888a 100644 --- a/code/modules/clothing/suits/marine_coat.dm +++ b/code/modules/clothing/suits/marine_coat.dm @@ -68,8 +68,7 @@ /obj/item/clothing/suit/storage/jacket/marine/Initialize() . = ..() - if(!(flags_atom & NO_SNOW_TYPE)) - select_gamemode_skin(type) + if(select_gamemode_skin(type)) initial_icon_state = icon_state if(has_buttons) verbs += /obj/item/clothing/suit/storage/jacket/marine/proc/toggle @@ -86,7 +85,7 @@ desc = "A light flak jacket used by dropship pilots to protect themselves while flying in the cockpit. This specific flak jacket has been designed for style and comfort over protection, and it shows. Don't get hit by any stray bullets!" icon_state = "pilot_alt" has_buttons = TRUE - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN initial_icon_state = "pilot_alt" /obj/item/clothing/suit/storage/jacket/marine/RO @@ -97,14 +96,14 @@ item_icons = list( WEAR_JACKET = 'icons/mob/humans/onmob/suit_0.dmi' ) - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/suit/storage/jacket/marine/service/mp name = "military police service jacket" desc = "A marine service jacket adopted for use by Military Police personnel on board USCM ships. Ironically most ships require their MP departments to use full armor, making these barely used by on duty MPs. This variant is also available to regular Marines, if they are willing to bear the shame." has_buttons = TRUE icon_state = "coat_mp" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN initial_icon_state = "coat_mp" /obj/item/clothing/suit/storage/jacket/marine/service/warden @@ -112,7 +111,7 @@ desc = "A marine service jacket adopted for use by Military Wardens on board USCM ships. Ironically most ships require their MP departments to use full armor, making these barely used by on duty Wardens. The jacket of choice for looking all night at a set of monitors, while cigarette butts pile around you." has_buttons = TRUE icon_state = "coat_warden" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN initial_icon_state = "coat_warden" /obj/item/clothing/suit/storage/jacket/marine/service/cmp @@ -120,14 +119,14 @@ desc = "A marine service jacket adopted for use by Military Police personnel on board USCM ships. Ironically most ships require their MP departments to use full armor, making these barely used by on duty MPs. Very popular among those who want to inexplicably smell like donuts." has_buttons = TRUE icon_state = "coat_cmp" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN initial_icon_state = "coat_cmp" /obj/item/clothing/suit/storage/jacket/marine/service/tanker name = "tanker jacket" desc = "A comfortable jacket provided to anyone expected to operate near or inside heavy machinery. Special material within the arms jams up any machinery it gets caught up in, protecting the wearer from injury." has_buttons = TRUE - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN icon_state = "jacket_tanker" initial_icon_state = "jacket_tanker" @@ -143,7 +142,7 @@ armor_bio = CLOTHING_ARMOR_LOW armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_LOW - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/suit/storage/jacket/marine/dress name = "marine formal service jacket" @@ -158,7 +157,7 @@ armor_bio = CLOTHING_ARMOR_LOW armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_LOW - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN has_buttons = TRUE /obj/item/clothing/suit/storage/jacket/marine/dress/officer @@ -250,7 +249,7 @@ name = "\improper Provost Jacket" desc = "A crisp jacket with the Provost sigil." icon_state = "provost_jacket" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_DECOR) /obj/item/clothing/suit/storage/jacket/marine/provost/chief @@ -300,7 +299,7 @@ desc = "A jacket for the most fashionable war correspondents." icon_state = "cc_brown" item_state = "cc_brown" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN has_buttons = FALSE /obj/item/clothing/suit/storage/jacket/marine/reporter/green @@ -324,7 +323,7 @@ desc = "A casual brown vest." icon_state = "vest_brown" item_state = "vest_brown" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN has_buttons = FALSE /obj/item/clothing/suit/storage/jacket/marine/vest/tan @@ -346,7 +345,7 @@ desc = "A khaki suit jacket." icon_state = "corporate_ivy" item_state = "corporate_ivy" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN has_buttons = FALSE /obj/item/clothing/suit/storage/jacket/marine/corporate/formal @@ -382,7 +381,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 + flags_atom = NO_GAMEMODE_SKIN has_buttons = FALSE /obj/item/clothing/suit/storage/jacket/marine/bomber/red diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index d12638c4c529..ea546f69f752 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -33,9 +33,8 @@ name += " snow uniform" else name += " uniform" - if(!(flags_atom & NO_SNOW_TYPE)) - select_gamemode_skin(type, override_icon_state, new_protection) - . = ..() //Done after above in case gamemode skin is missing sprites. + select_gamemode_skin(type, override_icon_state, new_protection) + return ..() //Done after above in case gamemode skin is missing sprites. /obj/item/clothing/under/marine/set_sensors(mob/user) if(!skillcheckexplicit(user, SKILL_ANTAG, SKILL_ANTAG_AGENT)) @@ -48,6 +47,7 @@ for(var/i in map_variants_roll_accessories) if(findtext(icon_state, i, 1, 3)) flags_jumpsuit |= UNIFORM_DO_NOT_HIDE_ACCESSORIES + return . /obj/item/clothing/under/marine/medic name = "\improper USCM corpsman uniform" @@ -64,12 +64,12 @@ specialty = "USCM Combat Technician" /obj/item/clothing/under/marine/engineer/standard - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/engineer/darker icon_state = "d_marine_engineer" worn_state = "d_marine_engineer" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/rto name = "\improper USCM radio telephone operator uniform" @@ -103,7 +103,7 @@ worn_state = "chef_uniform" flags_jumpsuit = FALSE specialty = "USCM mess technician" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/mp name = "military police jumpsuit" @@ -115,12 +115,12 @@ specialty = "military police" /obj/item/clothing/under/marine/mp/standard - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/mp/darker icon_state = "d_MP_jumpsuit" worn_state = "d_MP_jumpsuit" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/warden name = "military warden jumpsuit" @@ -130,7 +130,7 @@ suit_restricted = list(/obj/item/clothing/suit/storage/marine, /obj/item/clothing/suit/armor/riot/marine, /obj/item/clothing/suit/storage/jacket/marine/service/warden) flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_SLEEVE_CUTTABLE|UNIFORM_JACKET_REMOVABLE specialty = "military warden" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer name = "marine officer uniform" @@ -142,6 +142,7 @@ flags_jumpsuit = FALSE specialty = "marine officer" black_market_value = 25 + flags_atom = FPRINT|NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/clothing/under/marine/officer/intel name = "\improper marine intelligence officer sweatsuit" @@ -160,14 +161,14 @@ suit_restricted = list(/obj/item/clothing/suit/storage/marine, /obj/item/clothing/suit/armor/riot/marine, /obj/item/clothing/suit/storage/jacket/marine/service/cmp) flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE specialty = "chief MP" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/technical name = "technical officer uniform" icon_state = "johnny" worn_state = "johnny" specialty = "technical officer" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/pilot name = "pilot officer bodysuit" @@ -187,7 +188,7 @@ item_state = "pilot_flightsuit_alt" worn_state = "pilot_flightsuit_alt" flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN flags_cold_protection = ICE_PLANET_MIN_COLD_PROT /obj/item/clothing/under/marine/officer/pilot/dcc @@ -197,7 +198,7 @@ item_state = "crewchief_flightsuit" worn_state = "crewchief_flightsuit" flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE /obj/item/clothing/under/marine/officer/tanker name = "vehicle crewman uniform" @@ -217,7 +218,7 @@ worn_state = "BO_jumpsuit" specialty = "marine service" flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/boiler name = "marine operations uniform" @@ -241,7 +242,7 @@ item_state = "general_jumpsuit" worn_state = "general_jumpsuit" specialty = "general" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/ce name = "chief engineer uniform" @@ -251,7 +252,7 @@ icon_state = "EC_jumpsuit" worn_state = "EC_jumpsuit" specialty = "chief engineer" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN item_state_slots = list(WEAR_BODY = "EC_jumpsuit") /obj/item/clothing/under/marine/officer/engi @@ -263,7 +264,7 @@ worn_state = "mt_jumpsuit" specialty = "engineer" flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN item_state_slots = list(WEAR_BODY = "mt_jumpsuit") /obj/item/clothing/under/marine/officer/engi/OT @@ -282,7 +283,7 @@ icon_state = "research_jumpsuit" worn_state = "research_jumpsuit" specialty = "researcher" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/formal/servicedress name = "commanding officer's dress shirt" @@ -290,7 +291,7 @@ specialty = "captain's service dress" icon_state = "CO_service" worn_state = "CO_service" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/formal/white name = "Commanding Officer's white formal uniform" @@ -298,7 +299,7 @@ icon_state = "CO_formal_white" worn_state = "CO_formal_white" specialty = "captain's white formal" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/officer/formal/black name = "Commanding Officer's gray formal uniform" @@ -306,7 +307,7 @@ icon_state = "CO_formal_black" worn_state = "CO_formal_black" specialty = "captain's gray formal" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/dress name = "marine formal service uniform" @@ -314,7 +315,7 @@ icon_state = "formal_jumpsuit" worn_state = "formal_jumpsuit" specialty = "marine formal" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN flags_jumpsuit = FALSE black_market_value = 15 @@ -358,7 +359,7 @@ /obj/item/clothing/under/marine/mp/provost flags_jumpsuit = FALSE - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE name = "\improper Provost Uniform" desc = "The crisp uniform of a Provost Officer." @@ -400,7 +401,7 @@ name = "\improper UAAC-TIS Special Agent Uniform" desc = "A modified USCM Provost uniform, with its original insignia replaced by those of the UAAC-TIS Intelligence Service. TIS Special Agents are often recruited from the upper echelons of law enforcement agencies in various UA armed forces. These recruits often take all their gear, uniform included with them and later modify them to include TIS and UAAC insignia." flags_jumpsuit = FALSE - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE siemens_coefficient = 0.9 icon_state = "tis" worn_state = "tis" @@ -427,7 +428,7 @@ desc = "Torn, Burned and blood stained. This uniform has seen much more than you could possibly imagine." icon_state = "recon_marine" worn_state = "recon_marine" - flags_atom = NO_SNOW_TYPE + flags_atom = NO_GAMEMODE_SKIN /obj/item/clothing/under/marine/reconnaissance/Initialize(mapload) . = ..() @@ -446,7 +447,7 @@ /obj/item/clothing/under/marine/veteran flags_jumpsuit = FALSE - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make them keep their original name. + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE //Let's make them keep their original name. //=========================//Marine Raiders\\================================\\ @@ -457,7 +458,7 @@ icon_state = "marsoc" worn_state = "marsoc" specialty = "sof uniform" - flags_item = NO_SNOW_TYPE + flags_item = NO_GAMEMODE_SKIN //=========================//PMC\\================================\\ @@ -662,7 +663,7 @@ desc = "Overalls made of kevlon cover a snazzy blue dress shirt. UA branded security uniforms are notorious for their association with anti-union riot control teams." icon_state = "ua_riot" worn_state = "ua_riot" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make them keep their original name. + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE //Let's make them keep their original name. flags_jumpsuit = FALSE suit_restricted = null @@ -671,7 +672,7 @@ desc = "A Unified Clown Federation combat uniform. Features the latest in anti-mime technology." icon_state = "clown" worn_state = "clown" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make them keep their original name. + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE //Let's make them keep their original name. black_market_value = 25 /obj/item/clothing/under/pizza @@ -894,7 +895,7 @@ desc = "A relaxed and robust uniform fit for any potential reporting needs." icon_state = "cc_white" worn_state = "cc_white" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_atom = NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE item_icons = list( WEAR_BODY = 'icons/mob/humans/onmob/uniform_1.dmi', ) @@ -997,7 +998,7 @@ item_state = "pilot_flightsuit_alt" worn_state = "pilot_flightsuit_alt" flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN flags_cold_protection = ICE_PLANET_MIN_COLD_PROT /obj/item/clothing/under/rank/synthetic/old @@ -1064,7 +1065,7 @@ desc = "The field uniform of the royal marines commando. They have shards of light Kevlar to help protect against stabbing weapons and bullets. Onpar with similar USCM equipment" icon_state = "rmc_uniform" worn_state = "rmc_uniform" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN contained_sprite = TRUE icon = 'icons/mob/humans/onmob/contained/royal_marines_commando.dmi' @@ -1082,7 +1083,7 @@ name = "\improper M3 MOPP suit" desc = "M3 MOPP suits are specially designed and engineered to protect the wearer from unshielded exposure to any Chemical, Biological, Radiological, or Nuclear (CBRN) threats in the field. The suit has a recommended lifespan of twenty-four hours once contact with a toxic environment is made, but depending on the severity this can be shortened to eight hours or less." desc_lore = "Since the outbreak of the New Earth Plague in 2157 and the subsequent Interstellar Commerce Commission (ICC) sanctioned decontamination of the colony and its 40 million inhabitants, the abandoned colony has been left under a strict quarantine blockade to prevent any potential scavengers from spreading what’s left of the highly-durable airborne flesh-eating bacteria. Following those events, the three major superpowers have been investing heavily in the development and procurement of CBRN equipment, in no small part due to the extensive damage that the plague and other similar bioweapons could do. The \"Marine 70\" upgrade package and the launch of the M3 pattern armor series saw the first M3-M prototypes approved for CBRN usage." - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN icon_state = "cbrn" worn_state = "cbrn" flags_jumpsuit = NO_FLAGS diff --git a/code/modules/clothing/under/under.dm b/code/modules/clothing/under/under.dm index effd441ab81b..201a62c0afca 100644 --- a/code/modules/clothing/under/under.dm +++ b/code/modules/clothing/under/under.dm @@ -93,6 +93,7 @@ . = ..() worn_state = icon_state LAZYSET(item_state_slots, WEAR_BODY, worn_state) + return . /obj/item/clothing/under/update_clothing_icon() if(ismob(loc)) diff --git a/code/modules/cm_aliens/weeds.dm b/code/modules/cm_aliens/weeds.dm index 32c0ba3dd809..43633bc3c0e4 100644 --- a/code/modules/cm_aliens/weeds.dm +++ b/code/modules/cm_aliens/weeds.dm @@ -449,7 +449,7 @@ if(istype(loc, /turf/closed/wall)) var/turf/closed/wall/W = loc wall_connections = W.wall_connections - icon_state = "" + icon_state = null var/image/I for(var/i = 1 to 4) I = image(icon, "weedwall[wall_connections[i]]", dir = 1<<(i-1)) diff --git a/code/modules/cm_marines/Donator_Items.dm b/code/modules/cm_marines/Donator_Items.dm index f8f2e61b8a37..d14b5073ccda 100644 --- a/code/modules/cm_marines/Donator_Items.dm +++ b/code/modules/cm_marines/Donator_Items.dm @@ -15,7 +15,7 @@ icon_override = 'icons/mob/humans/onmob/head_0.dmi' flags_inventory = BLOCKSHARPOBJ flags_inv_hide = HIDEEARS - flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT flags_marine_helmet = NO_FLAGS @@ -67,7 +67,7 @@ desc = "ITEM DESCRIPTION. DONOR ITEM" //Add UNIQUE if Unique icon_state = null item_state = null - flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN //DON'T GRAB STUFF BETWEEN THIS LINE icon = 'icons/obj/items/clothing/suits.dmi' icon_override = 'icons/mob/humans/onmob/suit_0.dmi' //Don't fuck with this in the future please. @@ -80,7 +80,7 @@ desc = "ITEM DESCRIPTION. DONOR ITEM" //Add UNIQUE if Unique icon_state = null item_state = null - flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN //DON'T GRAB STUFF BETWEEN THIS LINE icon = 'icons/obj/items/clothing/suits.dmi' icon_override = 'icons/mob/humans/onmob/suit_0.dmi' //Don't fuck with this in the future please. @@ -956,7 +956,7 @@ /obj/item/clothing/under/marine/fluff name = "ITEM NAME" desc = "ITEM DESCRIPTION. DONOR ITEM" //Add UNIQUE if Unique - flags_atom = FPRINT|NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_atom = FPRINT|NO_NAME_OVERRIDE|NO_GAMEMODE_SKIN icon_state = null item_state = null min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT @@ -1323,19 +1323,21 @@ desc = "A large backpack, used by Tanya Edenia. DONOR ITEM" icon_state = "securitypack" item_state = "securitypack" + flags_atom = parent_type::flags_atom | NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/backpack/marine/fluff/mitii name = "Mya's Backpack" desc = "A large security backpack, with a radio booster. Donor Item" icon_state = "securitypack" item_state = "securitypack" + flags_atom = parent_type::flags_atom | NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/backpack/marine/satchel/fluff/sas_juggernaut //CKEY=sasoperative (UNIQUE) name = "tactical radiopack" desc = "A Radio backpack for use with the Juggernaut armor. DONOR ITEM" icon_state = "skinnerpack" item_state = "securitypack" - has_gamemode_skin = FALSE //same sprite for all gamemodes. + flags_atom = parent_type::flags_atom | NO_GAMEMODE_SKIN // same sprite for all gamemodes /obj/item/storage/backpack/marine/satchel/fluff/sas_legion //CKEY=sasoperative (UNIQUE) name = "M3 Armored Pack" @@ -1361,6 +1363,8 @@ desc = "Belt worn by the dreaded Commissars of Omega Team. UNIQUE DONOR ITEM" icon_state = "swordbelt_u" item_state = "swordbelt_u" + flags_atom = parent_type::flags_atom | NO_GAMEMODE_SKIN // same sprite for all gamemodes + skip_fullness_overlays = TRUE //CUSTOM ITEMS - NO TEMPLATES - ALL UNIQUE //////////////////////// /obj/item/tool/lighter/zippo/fluff/ghostdex //CKEY=ghostdex diff --git a/code/modules/cm_marines/equipment/kit_boxes.dm b/code/modules/cm_marines/equipment/kit_boxes.dm index 59009bc898e4..e3cd8039b932 100644 --- a/code/modules/cm_marines/equipment/kit_boxes.dm +++ b/code/modules/cm_marines/equipment/kit_boxes.dm @@ -295,7 +295,7 @@ qdel(src) /obj/item/storage/box/kit/mou53_sapper name = "\improper M-OU53 Field Test Kit" - pro_case_overlay = "mou53" + pro_case_overlay = "dots" /obj/item/storage/box/kit/mou53_sapper/fill_preset_inventory() new /obj/item/weapon/gun/shotgun/double/mou53(src) @@ -323,7 +323,7 @@ /obj/item/storage/box/kit/machinegunner name = "\improper M2C Heavy Gunner Kit" - pro_case_overlay = "hmg" + pro_case_overlay = "dots" /obj/item/storage/box/kit/machinegunner/fill_preset_inventory() new /obj/item/storage/box/m56d/m2c(src) @@ -337,7 +337,7 @@ /obj/item/storage/box/kit/defensegunner name = "\improper M56D Defense Gunner Kit" icon_state = "pro_case_large" - pro_case_overlay = "m56d" + pro_case_overlay = "dots" /obj/item/storage/box/kit/defensegunner/fill_preset_inventory() new /obj/item/storage/box/m56d_hmg(src) @@ -454,7 +454,7 @@ /obj/item/storage/box/kit/mini_intel name = "\improper Field Intelligence Support Kit" - pro_case_overlay = "intel" + pro_case_overlay = "jtac" /obj/item/storage/box/kit/mini_intel/fill_preset_inventory() new /obj/item/stack/fulton(src) @@ -465,7 +465,7 @@ /obj/item/storage/box/kit/mini_grenadier name = "\improper Frontline M40 Grenadier Kit" - pro_case_overlay = "grenadier" + pro_case_overlay = "engi" /obj/item/storage/box/kit/mini_grenadier/fill_preset_inventory() new /obj/item/storage/belt/grenade/full(src) @@ -506,7 +506,7 @@ /obj/item/storage/box/kit/exp_trooper name = "\improper Experimental Trooper Kit" - pro_case_overlay = "smart" + pro_case_overlay = "crayon" /obj/item/storage/box/kit/exp_trooper/fill_preset_inventory() new /obj/item/weapon/gun/pistol/smart(src) @@ -521,7 +521,7 @@ /obj/item/storage/box/kit/honorguard name = "\improper Honor Guard Kit" - pro_case_overlay = "honor_guard" + pro_case_overlay = "shield" /obj/item/storage/box/kit/honorguard/fill_preset_inventory() new /obj/item/device/radio/headset/almayer/marine/mp_honor(src) diff --git a/code/modules/cm_preds/smartdisc.dm b/code/modules/cm_preds/smartdisc.dm index f0262f5f140a..6f576779f853 100644 --- a/code/modules/cm_preds/smartdisc.dm +++ b/code/modules/cm_preds/smartdisc.dm @@ -60,7 +60,7 @@ return L /obj/item/explosive/grenade/spawnergrenade/smartdisc/attack_self(mob/user) - ..() + . = ..() if(active) return @@ -72,9 +72,9 @@ to_chat(user, SPAN_WARNING("You activate the smart-disc and it whirrs to life!")) activate(user) add_fingerprint(user) - var/mob/living/carbon/C = user - if(istype(C) && !C.throw_mode) - C.toggle_throw_mode(THROW_MODE_NORMAL) + var/mob/living/carbon/carbon_user = user + if(istype(carbon_user) && !carbon_user.throw_mode) + carbon_user.toggle_throw_mode(THROW_MODE_NORMAL) /obj/item/explosive/grenade/spawnergrenade/smartdisc/activate(mob/user) if(active) @@ -103,8 +103,8 @@ /obj/item/explosive/grenade/spawnergrenade/smartdisc/launch_impact(atom/hit_atom) if(isyautja(hit_atom)) - var/mob/living/carbon/human/H = hit_atom - if(H.put_in_hands(src)) + var/mob/living/carbon/human/hooman = hit_atom + if(hooman.put_in_hands(src)) hit_atom.visible_message("[hit_atom] expertly catches [src] out of the air.","You catch [src] easily.") throwing = FALSE return @@ -157,6 +157,7 @@ melee_damage_lower = 15 melee_damage_upper = 25 ..() + /mob/living/simple_animal/hostile/smartdisc/Process_Spacemove(check_drift = 0) return 1 @@ -174,14 +175,15 @@ return 1 /mob/living/simple_animal/hostile/smartdisc/death() - visible_message("\The [src] stops whirring and spins out onto the floor.") - new /obj/item/explosive/grenade/spawnergrenade/smartdisc(src.loc) - ..() + visible_message("[src] stops whirring and spins out onto the floor.") + new /obj/item/explosive/grenade/spawnergrenade/smartdisc(loc) + . = ..() spawn(1) - if(src) qdel(src) + if(src) + qdel(src) /mob/living/simple_animal/hostile/smartdisc/gib(datum/cause_data/cause = create_cause_data("gibbing", src)) - visible_message("\The [src] explodes!") + visible_message("[src] explodes!") ..(cause, icon_gib,1) spawn(1) if(src) @@ -199,7 +201,7 @@ var/mob/living/L = A if(L.faction == faction) continue - else if(L in friends) + else if(WEAKREF(L) in friends) continue else if(isyautja(L)) continue @@ -239,7 +241,7 @@ if(!stat) switch(stance) if(HOSTILE_STANCE_IDLE) - target_mob = FindTarget() + target_mob_ref = WEAKREF(FindTarget()) if(HOSTILE_STANCE_ATTACK) MoveToTarget() @@ -248,26 +250,29 @@ AttackTarget() /mob/living/simple_animal/hostile/smartdisc/AttackTarget() - stop_automated_movement = 1 + stop_automated_movement = TRUE + var/mob/living/target_mob = target_mob_ref?.resolve() if(!target_mob || SA_attackable(target_mob)) LoseTarget() - return 0 + return FALSE if(!(target_mob in ListTargets(5)) || prob(20) || target_mob.stat) stance = HOSTILE_STANCE_IDLE - return 0 + return FALSE if(get_dist(src, target_mob) <= 1) //Attacking AttackingTarget() - return 1 + return TRUE /mob/living/simple_animal/hostile/smartdisc/AttackingTarget() - if(QDELETED(target_mob)) return - if(!Adjacent(target_mob)) return + var/mob/living/target_mob = target_mob_ref?.resolve() + if(!target_mob) + return + if(!Adjacent(target_mob)) + return if(isliving(target_mob)) - var/mob/living/L = target_mob - L.attack_animal(src) + target_mob.attack_animal(src) if(prob(5)) - L.apply_effect(3, WEAKEN) - L.visible_message(SPAN_DANGER("\The [src] viciously slashes at \the [L]!")) - log_attack("[key_name(L)] was knocked down by [src]") - log_attack("[key_name(L)] was attacked by [src]") - return L + target_mob.apply_effect(3, WEAKEN) + target_mob.visible_message(SPAN_DANGER("[src] viciously slashes at [target_mob]!")) + log_attack("[key_name(target_mob)] was knocked down by [src]") + log_attack("[key_name(target_mob)] was attacked by [src]") + return target_mob diff --git a/code/modules/decorators/christmas.dm b/code/modules/decorators/christmas.dm index 290ac6302448..d062c29f61d8 100644 --- a/code/modules/decorators/christmas.dm +++ b/code/modules/decorators/christmas.dm @@ -51,7 +51,7 @@ helmet.icon_override = 'icons/mob/humans/onmob/head_0.dmi' helmet.flags_inv_hide = HIDEEARS|HIDEALLHAIR helmet.flags_marine_helmet = NO_FLAGS - helmet.flags_atom |= NO_SNOW_TYPE|NO_NAME_OVERRIDE + helmet.flags_atom |= NO_GAMEMODE_SKIN|NO_NAME_OVERRIDE if(prob(50)) helmet.icon_state = "santa_hat_red" else diff --git a/code/modules/desert_dam/filtration/structures.dm b/code/modules/desert_dam/filtration/structures.dm index 558f047dd3c9..59c5e542adaa 100644 --- a/code/modules/desert_dam/filtration/structures.dm +++ b/code/modules/desert_dam/filtration/structures.dm @@ -34,6 +34,7 @@ /turf/open/floor/coagulation name = "coagulation" icon = 'icons/turf/floors/coagulation.dmi' + icon_state = null /turf/open/floor/coagulation/icon0_0 icon_state = "0,0" diff --git a/code/modules/gear_presets/yautja.dm b/code/modules/gear_presets/yautja.dm index 44113938cd3c..b130fc3dfe35 100644 --- a/code/modules/gear_presets/yautja.dm +++ b/code/modules/gear_presets/yautja.dm @@ -15,7 +15,7 @@ /datum/equipment_preset/yautja/load_race(mob/living/carbon/human/new_human, client/mob_client) new_human.set_species(SPECIES_YAUTJA) - new_human.skin_color = "tan" + new_human.skin_color = pick(PRED_SKIN_COLOR) new_human.body_type = "pred" //can be removed in future for body types if(!mob_client) mob_client = new_human.client diff --git a/code/modules/holidays/halloween/pumpkins/wearable.dm b/code/modules/holidays/halloween/pumpkins/wearable.dm index 74db2b4c85ef..1a0c6d7e2bc0 100644 --- a/code/modules/holidays/halloween/pumpkins/wearable.dm +++ b/code/modules/holidays/halloween/pumpkins/wearable.dm @@ -59,7 +59,7 @@ else return ..() -/obj/item/clothing/head/pumpkin/get_mob_overlay(mob/user_mob, slot) +/obj/item/clothing/head/pumpkin/get_mob_overlay(mob/user_mob, slot, default_bodytype = "Default") var/image/pumpkin = ..() if(carved_icon && slot == WEAR_HEAD) var/image/overlay = overlay_image(icon, "[prefix]pumpkin_[carved_icon]") diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 6fa4a47d5bbf..388ef7cc3db2 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -122,7 +122,9 @@ GLOBAL_LIST_INIT_TYPED(sentry_spawns, /obj/effect/sentry_landmark, list()) . = ..() if(type == abstract_type) + #if !defined(UNIT_TESTS) log_mapping("A [type] was created that should not have been! Use a subtype instead.") + #endif return INITIALIZE_HINT_QDEL LAZYADDASSOCLIST(GLOB.sentry_spawns[landing_zone], position, get_turf(src)) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 60275f03e95d..337efc05a76d 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -10,7 +10,7 @@ return g /proc/get_limb_icon_name(datum/species/S, body_size, body_type, gender, limb_name, skin_color) - if(S.uses_skin_color) + if(S.flags & HAS_SKIN_COLOR) if(S.special_body_types) switch(limb_name) if("torso") diff --git a/code/modules/mob/living/carbon/human/species/human.dm b/code/modules/mob/living/carbon/human/species/human.dm index ef768dca4648..2ee01079b726 100644 --- a/code/modules/mob/living/carbon/human/species/human.dm +++ b/code/modules/mob/living/carbon/human/species/human.dm @@ -86,9 +86,8 @@ name_plural = "Humans" primitive = /mob/living/carbon/human/monkey unarmed_type = /datum/unarmed_attack/punch - flags = HAS_SKIN_TONE|HAS_LIPS|HAS_UNDERWEAR|HAS_HARDCRIT + flags = HAS_SKIN_TONE|HAS_LIPS|HAS_UNDERWEAR|HAS_HARDCRIT|HAS_SKIN_COLOR mob_flags = KNOWS_TECHNOLOGY - uses_skin_color = TRUE special_body_types = TRUE fire_sprite_prefix = "Standing" fire_sprite_sheet = 'icons/mob/humans/onmob/OnFire.dmi' diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 30418f3c8b63..151c1fe65636 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -14,7 +14,6 @@ var/icobase_source // if we want to use sourcing system var/deform_source var/eyes = "eyes_s" // Icon for eyes. - var/uses_skin_color = FALSE //Set to TRUE to load proper skin_colors and what have you var/special_body_types = FALSE var/primitive // Lesser form, if any (ie. monkey for humans) diff --git a/code/modules/mob/living/carbon/human/species/synth_k9.dm b/code/modules/mob/living/carbon/human/species/synth_k9.dm index fa067d87e5ef..343dacd22cfc 100644 --- a/code/modules/mob/living/carbon/human/species/synth_k9.dm +++ b/code/modules/mob/living/carbon/human/species/synth_k9.dm @@ -1,7 +1,6 @@ //woof! /datum/species/synthetic/synth_k9 name = SPECIES_SYNTHETIC_K9 - uses_skin_color = FALSE slowdown = -1.75 //Faster than Human run, slower than rooney run diff --git a/code/modules/mob/living/carbon/human/species/synthetic.dm b/code/modules/mob/living/carbon/human/species/synthetic.dm index 3e03290467c9..8edb8523f36b 100644 --- a/code/modules/mob/living/carbon/human/species/synthetic.dm +++ b/code/modules/mob/living/carbon/human/species/synthetic.dm @@ -2,7 +2,6 @@ group = SPECIES_SYNTHETIC name = SYNTH_GEN_THREE name_plural = "synthetics" - uses_skin_color = TRUE //Uses skin color presets special_body_types = TRUE unarmed_type = /datum/unarmed_attack/punch/synthetic @@ -30,7 +29,7 @@ body_temperature = 350 mob_flags = KNOWS_TECHNOLOGY - flags = IS_WHITELISTED|NO_BREATHE|NO_CLONE_LOSS|NO_BLOOD|NO_POISON|IS_SYNTHETIC|NO_CHEM_METABOLIZATION|NO_NEURO|HAS_UNDERWEAR + flags = IS_WHITELISTED|NO_BREATHE|NO_CLONE_LOSS|NO_BLOOD|NO_POISON|IS_SYNTHETIC|NO_CHEM_METABOLIZATION|NO_NEURO|HAS_UNDERWEAR|HAS_SKIN_COLOR blood_color = BLOOD_COLOR_SYNTHETIC @@ -62,7 +61,7 @@ /datum/species/synthetic/gen_one name = SYNTH_GEN_ONE - uses_skin_color = FALSE + flags = parent_type::flags & ~HAS_SKIN_COLOR special_body_types = FALSE mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES, TRAIT_IRON_TEETH) @@ -72,14 +71,12 @@ /datum/species/synthetic/gen_two name = SYNTH_GEN_TWO - uses_skin_color = TRUE special_body_types = TRUE /datum/species/synthetic/colonial name = SYNTH_COLONY name_plural = "Colonial Synthetics" - uses_skin_color = TRUE special_body_types = TRUE burn_mod = 0.8 mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_IRON_TEETH) @@ -97,12 +94,11 @@ /datum/species/synthetic/colonial/colonial_gen_two name = SYNTH_COLONY_GEN_TWO - uses_skin_color = TRUE special_body_types = TRUE /datum/species/synthetic/colonial/colonial_gen_one name = SYNTH_COLONY_GEN_ONE - uses_skin_color = FALSE + flags = parent_type::flags & ~HAS_SKIN_COLOR special_body_types = FALSE mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES, TRAIT_IRON_TEETH) //sets colonial_gen_one synth's hair to black @@ -115,7 +111,7 @@ /datum/species/synthetic/colonial/combat name = SYNTH_COMBAT name_plural = "Combat Synthetics" - uses_skin_color = FALSE + flags = parent_type::flags & ~HAS_SKIN_COLOR special_body_types = FALSE mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES, TRAIT_IRON_TEETH) @@ -137,7 +133,6 @@ /datum/species/synthetic/infiltrator name = SYNTH_INFILTRATOR name_plural = "Infiltrator Synthetics" - uses_skin_color = TRUE mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INFILTRATOR_SYNTH, TRAIT_IRON_TEETH) bloodsplatter_type = /obj/effect/bloodsplatter/human diff --git a/code/modules/mob/living/carbon/human/species/working_joe/_species.dm b/code/modules/mob/living/carbon/human/species/working_joe/_species.dm index 64da16df062c..bf0dca2e656c 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/_species.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/_species.dm @@ -2,7 +2,7 @@ name = SYNTH_WORKING_JOE name_plural = "Working Joes" death_message = "violently gargles fluid and seizes up, the glow in their eyes dimming..." - uses_skin_color = FALSE + flags = parent_type::flags & ~HAS_SKIN_COLOR burn_mod = 0.65 // made for hazardous environments, withstanding temperatures up to 1210 degrees mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_INTENT_EYES, TRAIT_EMOTE_CD_EXEMPT, TRAIT_CANNOT_EAT, TRAIT_UNSTRIPPABLE, TRAIT_IRON_TEETH) diff --git a/code/modules/mob/living/carbon/human/species/yautja/_species.dm b/code/modules/mob/living/carbon/human/species/yautja/_species.dm index dc5ae3b77547..ea260d6f88a7 100644 --- a/code/modules/mob/living/carbon/human/species/yautja/_species.dm +++ b/code/modules/mob/living/carbon/human/species/yautja/_species.dm @@ -6,7 +6,6 @@ burn_mod = 0.65 reagent_tag = IS_YAUTJA mob_flags = KNOWS_TECHNOLOGY - uses_skin_color = TRUE flags = IS_WHITELISTED|HAS_SKIN_COLOR|NO_CLONE_LOSS|NO_POISON|NO_NEURO|SPECIAL_BONEBREAK|NO_SHRAPNEL|HAS_HARDCRIT mob_inherent_traits = list( TRAIT_YAUTJA_TECH, diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 47b54196301d..745b169a6e76 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -236,12 +236,12 @@ GLOBAL_VAR_INIT(chicken_count, 0) mob_size = MOB_SIZE_SMALL /mob/living/simple_animal/chicken/New() - ..() if(!body_color) body_color = pick( list("brown","black","white") ) icon_state = "chicken_[body_color]" icon_living = "chicken_[body_color]" icon_dead = "chicken_[body_color]_dead" + ..() pixel_x = rand(-6, 6) pixel_y = rand(0, 10) GLOB.chicken_count++ diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index b3ebe5835efe..83cb250a7f28 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -46,7 +46,7 @@ response_harm = "pokes" /mob/living/simple_animal/hostile/bear/Life(delta_time) - . =..() + . = ..() if(!.) return @@ -55,6 +55,8 @@ else icon_state = "bearfloor" + var/mob/living/target_mob = target_mob_ref?.resolve() + switch(stance) if(HOSTILE_STANCE_TIRED) @@ -102,15 +104,15 @@ if(stance != HOSTILE_STANCE_ATTACK && stance != HOSTILE_STANCE_ATTACKING) stance = HOSTILE_STANCE_ALERT stance_step = 6 - target_mob = user - ..() + target_mob_ref = WEAKREF(user) + return ..() -/mob/living/simple_animal/hostile/bear/attack_hand(mob/living/carbon/human/M as mob) +/mob/living/simple_animal/hostile/bear/attack_hand(mob/living/carbon/human/attacking_mob) if(stance != HOSTILE_STANCE_ATTACK && stance != HOSTILE_STANCE_ATTACKING) stance = HOSTILE_STANCE_ALERT stance_step = 6 - target_mob = M - ..() + target_mob_ref = WEAKREF(attacking_mob) + return ..() /mob/living/simple_animal/hostile/bear/Process_Spacemove(check_drift = 0) return //No drifting in space for space bears! @@ -125,6 +127,7 @@ ..(5) /mob/living/simple_animal/hostile/bear/AttackingTarget() + var/mob/living/target_mob = target_mob_ref?.resolve() if(!Adjacent(target_mob)) return manual_emote(pick(list("slashes at [target_mob]", "bites [target_mob]"))) @@ -132,15 +135,14 @@ var/damage = rand(20,30) if(ishuman(target_mob)) - var/mob/living/carbon/human/H = target_mob + var/mob/living/carbon/human/hooman = target_mob var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/obj/limb/affecting = H.get_limb(rand_zone(dam_zone)) - H.apply_damage(damage, BRUTE, affecting, sharp=1, edge=1) - return H + var/obj/limb/affecting = hooman.get_limb(rand_zone(dam_zone)) + hooman.apply_damage(damage, BRUTE, affecting, sharp=1, edge=1) + return hooman else if(isliving(target_mob)) - var/mob/living/L = target_mob - L.apply_damage(damage, BRUTE) - return L + target_mob.apply_damage(damage, BRUTE) + return target_mob diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 5ee60239db64..576c83bf8dce 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -69,16 +69,16 @@ /mob/living/simple_animal/hostile/giant_spider/AttackingTarget() ..() + var/mob/living/target_mob = target_mob_ref?.resolve() if(isliving(target_mob)) - var/mob/living/L = target_mob - if(L.reagents) - L.reagents.add_reagent("toxin", poison_per_bite) + if(target_mob.reagents) + target_mob.reagents.add_reagent("toxin", poison_per_bite) if(prob(poison_per_bite)) - to_chat(L, SPAN_DANGER("You feel a tiny prick.")) - L.reagents.add_reagent(poison_type, 5) + to_chat(target_mob, SPAN_DANGER("You feel a tiny prick.")) + target_mob.reagents.add_reagent(poison_type, 5) /mob/living/simple_animal/hostile/giant_spider/Life(delta_time) - ..() + . = ..() if(!stat) if(stance == HOSTILE_STANCE_IDLE) //1% chance to skitter madly away @@ -101,7 +101,7 @@ stop_automated_movement = 0 /mob/living/simple_animal/hostile/giant_spider/nurse/Life(delta_time) - ..() + . = ..() if(!stat) if(stance == HOSTILE_STANCE_IDLE) var/list/can_see = view(src, 10) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 5a5791eb8311..ed9433f238e3 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -1,24 +1,27 @@ /mob/living/simple_animal/hostile faction = "hostile" + stop_automated_movement_when_pulled = 0 + black_market_value = KILL_MENDOZA + dead_black_market_value = 25 var/stance = HOSTILE_STANCE_IDLE //Used to determine behavior - var/mob/living/target_mob + /// Weakref to our current living mob target + var/datum/weakref/target_mob_ref var/attack_same = 0 var/ranged = 0 var/rapid = 0 var/projectiletype var/projectilesound var/casingtype - var/move_to_delay = 4 //delay for the automated movement. + /// The delay for the automated movement + var/move_to_delay = 4 + /// List of weakrefs of our friend mobs var/list/friends = list() var/break_stuff_probability = 10 - stop_automated_movement_when_pulled = 0 - black_market_value = KILL_MENDOZA - dead_black_market_value = 25 - var/destroy_surroundings = 1 + var/destroy_surroundings = TRUE /mob/living/simple_animal/hostile/Destroy() friends = null - target_mob = null + target_mob_ref = null return ..() /mob/living/simple_animal/hostile/proc/FindTarget() @@ -51,19 +54,20 @@ return T /mob/living/simple_animal/hostile/proc/evaluate_target(mob/living/target) - if(target.faction == src.faction && !attack_same) + if(target.stat) + return FALSE + if((target.faction == faction || (target.faction in faction_group)) && !attack_same) return FALSE - else if(target in friends) + if(WEAKREF(target) in friends) return FALSE - else - if(!target.stat) - return target + return target /mob/living/simple_animal/hostile/proc/Found(atom/A) return /mob/living/simple_animal/hostile/proc/MoveToTarget() - stop_automated_movement = 1 + stop_automated_movement = TRUE + var/mob/living/target_mob = target_mob_ref?.resolve() if(!target_mob || SA_attackable(target_mob)) stance = HOSTILE_STANCE_IDLE if(target_mob in ListTargets(10)) @@ -71,8 +75,8 @@ walk_to(src, target_mob, 1, move_to_delay) /mob/living/simple_animal/hostile/proc/AttackTarget() - - stop_automated_movement = 1 + stop_automated_movement = TRUE + var/mob/living/target_mob = target_mob_ref?.resolve() if(!target_mob || SA_attackable(target_mob)) LoseTarget() return 0 @@ -84,22 +88,22 @@ return 1 /mob/living/simple_animal/hostile/proc/AttackingTarget() + var/mob/living/target_mob = target_mob_ref?.resolve() if(!Adjacent(target_mob)) return if(isliving(target_mob)) - var/mob/living/L = target_mob - L.attack_animal(src) - src.animation_attack_on(L) - src.flick_attack_overlay(L, "slash") - playsound(src.loc, "alien_claw_flesh", 25, 1) - return L - if(istype(target_mob,/obj/structure/machinery/bot)) - var/obj/structure/machinery/bot/B = target_mob - B.attack_animal(src) + target_mob.attack_animal(src) + animation_attack_on(target_mob) + flick_attack_overlay(target_mob, "slash") + playsound(loc, "alien_claw_flesh", 25, 1) + return target_mob + if(istype(target_mob, /obj/structure/machinery/bot)) + var/obj/structure/machinery/bot/bot = target_mob + bot.attack_animal(src) /mob/living/simple_animal/hostile/proc/LoseTarget() stance = HOSTILE_STANCE_IDLE - target_mob = null + target_mob_ref = null walk(src, 0) /mob/living/simple_animal/hostile/proc/LostTarget() @@ -117,7 +121,6 @@ walk(src, 0) /mob/living/simple_animal/hostile/Life(delta_time) - . = ..() if(!.) walk(src, 0) @@ -128,7 +131,7 @@ if(!stat && mobility_flags & MOBILITY_MOVE) switch(stance) if(HOSTILE_STANCE_IDLE) - target_mob = FindTarget() + target_mob_ref = WEAKREF(FindTarget()) if(HOSTILE_STANCE_ATTACK) if(destroy_surroundings) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 0c58ca612514..1828eeedd7ab 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -82,8 +82,8 @@ COOLDOWN_DECLARE(retreat_cooldown) ///Can this mob be tamed? var/tameable = TRUE - ///The food object that the mob is trying to eat. - var/food_target + /// A weakref to the food object that the mob is trying to eat. + var/datum/weakref/food_target_ref ///A list of foods the mob is interested in eating. The mob will eat anything that has meat protein in it even if it's not in this list. var/list/acceptable_foods = list(/obj/item/reagent_container/food/snacks/packaged_meal, /obj/item/reagent_container/food/snacks/resin_fruit) ///Is the mob currently eating the food_target? @@ -209,7 +209,7 @@ update_transform() is_retreating = FALSE if(stance > HOSTILE_STANCE_ALERT) - target_mob = FindTarget() + target_mob_ref = WEAKREF(FindTarget()) MoveToTarget() //procs for handling sleeping icons when resting @@ -375,7 +375,7 @@ addtimer(VARSET_CALLBACK(src, speed, LIZARD_SPEED_NORMAL_CLIENT), 8 SECONDS) addtimer(VARSET_CALLBACK(src, is_retreating, FALSE), 8 SECONDS) else - MoveTo(target_mob, 12, TRUE, 4.5 SECONDS) + MoveTo(target_mob_ref?.resolve(), 12, TRUE, 4.5 SECONDS) if(damage >= 10 && damagetype == BRUTE) add_splatter_floor(loc, TRUE) bleed_ticks = clamp(bleed_ticks + ceil(damage / 10), 0, 30) @@ -388,8 +388,8 @@ //forget EVERYTHING. we need to stop the flames!!! stance = HOSTILE_STANCE_ALERT - target_mob = null - food_target = null + target_mob_ref = null + food_target_ref = null is_eating = FALSE manual_emote("hisses in agony!") playsound(src, "giant_lizard_hiss", 40) @@ -416,8 +416,9 @@ //it is possible for the mob to keep a target_mob saved, yet be stuck in alert stance and never lose said target. //this will cause it to be paralyzed and do nothing for the rest of its life, so this specific check is here to remedy that (hopefully) + var/mob/living/target_mob = target_mob_ref?.resolve() if(!client && stance == HOSTILE_STANCE_ALERT && target_mob && !is_retreating && !on_fire) - target_mob = FindTarget() + target_mob_ref = WEAKREF(FindTarget()) MoveToTarget() if(resting && stat != DEAD) @@ -488,12 +489,15 @@ stance = HOSTILE_STANCE_IDLE //if we're hungry and we don't have already have our eyes on a snack, try eating food if possible + var/obj/item/reagent_container/food/snacks/food_target = food_target_ref?.resolve() if(tameable && !food_target && COOLDOWN_FINISHED(src, food_cooldown)) for(var/obj/item/reagent_container/food/snacks/food in view(6, src)) var/is_meat = locate(/datum/reagent/nutriment/meat) in food.reagents.reagent_list - if(is_type_in_list(food, acceptable_foods) || is_meat) - food_target = food + if(is_meat || is_type_in_list(food, acceptable_foods)) + food_target_ref = WEAKREF(food) + if(!food_target) // qdeleted check + continue stance = HOSTILE_STANCE_ALERT stop_automated_movement = TRUE MoveTo(food_target) @@ -539,7 +543,7 @@ var/obj/effect/bloodsplatter/human/bloodsplatter = new(loc, splatter_dir) bloodsplatter.pixel_y = -2 -/mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackingTarget(inherited_target = target_mob) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackingTarget(inherited_target = target_mob_ref?.resolve()) if(!Adjacent(inherited_target) || is_ravaging || body_position == LYING_DOWN) return @@ -574,7 +578,7 @@ addtimer(VARSET_CALLBACK(src, speed, LIZARD_SPEED_NORMAL_CLIENT), 2 SECONDS) addtimer(VARSET_CALLBACK(src, is_retreating, FALSE), 2 SECONDS) else - MoveTo(target_mob, 8, TRUE, 2 SECONDS, TRUE) //skirmish around our target + MoveTo(target_mob_ref?.resolve(), 8, TRUE, 2 SECONDS, TRUE) //skirmish around our target return target if(isStructure(inherited_target)) @@ -635,6 +639,7 @@ //no longer checks for distance with ListTargets(). thershold for losing targets is increased, due to needing range for skirmishing /mob/living/simple_animal/hostile/retaliate/giant_lizard/AttackTarget() stop_automated_movement = TRUE + var/mob/living/target_mob = target_mob_ref?.resolve() if(!target_mob || SA_attackable(target_mob)) LoseTarget() return @@ -668,7 +673,7 @@ health += maxHealth * 0.15 update_wounds() qdel(food) - food_target = null + food_target_ref = null is_eating = FALSE stance = HOSTILE_STANCE_IDLE COOLDOWN_START(src, food_cooldown, 30 SECONDS) @@ -698,7 +703,7 @@ var/mob/living/food_holder = food.loc stop_moving() COOLDOWN_START(src, food_cooldown, 15 SECONDS) - food_target = null + food_target_ref = null is_eating = FALSE //snagging the food while you're right next to the mob makes it very angry if(get_dist(src, food_holder) <= 2 && !(food_holder.faction in faction_group)) @@ -712,7 +717,7 @@ //Proc for when we lose our food target. /mob/living/simple_animal/hostile/retaliate/giant_lizard/proc/lose_food() stance = HOSTILE_STANCE_IDLE - food_target = null + food_target_ref = null is_eating = FALSE COOLDOWN_START(src, food_cooldown, 15 SECONDS) @@ -721,15 +726,20 @@ if(!length(enemies)) return list() var/list/see = orange(src, dist) - see &= enemies - return see + var/list/seen_enemies = list() + // Remove all entries that aren't in enemies + for(var/thing in see) + if(WEAKREF(thing) in enemies) + seen_enemies += thing + return seen_enemies /mob/living/simple_animal/hostile/retaliate/giant_lizard/evaluate_target(mob/living/target) + if(!..()) + return FALSE //we need to check for monkeys else these guys will tear up all the small hosts for xenos - if((target.faction == faction || (target.faction in faction_group)) && !attack_same || ismonkey(target) || (target in friends)) + if(ismonkey(target)) return FALSE - if(target.stat != DEAD) - return target + return target //Mobs in critical state are now fair game. Rip and tear. /mob/living/simple_animal/hostile/retaliate/giant_lizard/SA_attackable(target_mob) @@ -742,6 +752,7 @@ //Immediately retaliate after being attacked. /mob/living/simple_animal/hostile/retaliate/giant_lizard/Retaliate() + var/mob/living/target_mob = target_mob_ref?.resolve() if(stat == DEAD || get_dist(src, target_mob) < 6 || on_fire) return aggression_value = clamp(aggression_value + 5, 0, 15) @@ -749,13 +760,14 @@ . = ..() target_mob = FindTarget() - if(target_mob) + target_mob_ref = WEAKREF(target_mob) + if(target_mob_ref) // qdeleted check growl(target_mob) MoveToTarget() //basic pack behaviour for(var/mob/living/simple_animal/hostile/retaliate/giant_lizard/pack_member in view(12, src)) - if(pack_member == src || pack_member.target_mob) + if(pack_member == src || pack_member.target_mob_ref?.resolve()) continue pack_member.Retaliate() @@ -786,7 +798,7 @@ if(!return_to_combat) //can't retreat? go back to fighting if(retreat_attempts >= 2) - target_mob = FindTarget() + target_mob_ref = WEAKREF(FindTarget()) MoveToTarget() retreat_attempts = 0 //seems like it's a life or death situation. we will stop trying to run away. @@ -802,12 +814,13 @@ retreat_attempts = 0 LoseTarget() else - target_mob = FindTarget() + target_mob_ref = WEAKREF(FindTarget()) MoveToTarget() //Replaced walk_to() with MoveTo(). /mob/living/simple_animal/hostile/retaliate/giant_lizard/MoveToTarget() stop_automated_movement = TRUE + var/mob/living/target_mob = target_mob_ref?.resolve() if(!target_mob || SA_attackable(target_mob)) stance = HOSTILE_STANCE_IDLE if(get_dist(src, target_mob) <= max_attack_distance) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm index 64ab6541b2d2..cde7702942d3 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -1,38 +1,43 @@ /mob/living/simple_animal/hostile/retaliate black_market_value = 50 dead_black_market_value = 0 + /// List of weakrefs of our enemy mobs var/list/enemies = list() /mob/living/simple_animal/hostile/retaliate/Found(atom/A) if(isliving(A)) - var/mob/living/L = A - if(!L.stat) + var/mob/living/living = A + if(!living.stat) stance = HOSTILE_STANCE_ATTACK - return L + return living else - enemies -= L + enemies -= WEAKREF(living) /mob/living/simple_animal/hostile/retaliate/ListTargets() if(!length(enemies)) return list() var/list/see = ..() - see &= enemies // Remove all entries that aren't in enemies - return see + var/list/seen_enemies = list() + // Remove all entries that aren't in enemies + for(var/thing in see) + if(WEAKREF(thing) in enemies) + seen_enemies += thing + return seen_enemies /mob/living/simple_animal/hostile/retaliate/proc/Retaliate() var/list/around = view(src, 7) - for(var/atom/movable/A in around) - if(A == src) + for(var/atom/movable/thing in around) + if(thing == src) continue - if(isliving(A)) - var/mob/living/M = A - if(evaluate_target(M)) - enemies |= M + if(isliving(thing)) + var/mob/living/living = thing + if(evaluate_target(living)) + enemies |= WEAKREF(living) - for(var/mob/living/simple_animal/hostile/retaliate/H in around) - if(!attack_same && !H.attack_same && H.faction == faction) - H.enemies |= enemies + for(var/mob/living/simple_animal/hostile/retaliate/buddy in around) + if(!attack_same && !buddy.attack_same && buddy.faction == faction) + buddy.enemies |= enemies return 0 /mob/living/simple_animal/hostile/retaliate/apply_damage(damage, damagetype, def_zone, used_weapon, sharp, edge, force) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 878212e52d32..077ddd8ee541 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -384,7 +384,7 @@ else gib() return - ..() + return ..() /mob/living/simple_animal/movement_delay() diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm index dd56d48a364c..b375f347ac5a 100644 --- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm @@ -1002,7 +1002,7 @@ /obj/item/ammo_box/magazine/mar30/ext name = "magazine box (MAR30/40 Ext x 8)" - overlay_gun_type = "_mar40" + overlay_gun_type = "_mar30" num_of_magazines = 8 magazine_type = /obj/item/ammo_magazine/rifle/mar40/extended diff --git a/code/modules/projectiles/ammo_boxes/misc_boxes.dm b/code/modules/projectiles/ammo_boxes/misc_boxes.dm index 77731ab7fa7b..afcc8b64853d 100644 --- a/code/modules/projectiles/ammo_boxes/misc_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/misc_boxes.dm @@ -4,9 +4,9 @@ name = "\improper miscellaneous equipment box" desc = "A box for miscellaneous equipment." icon_state = "supply_crate" - overlay_ammo_type = "blank" - overlay_gun_type = "blank" - overlay_content = "blank" + overlay_ammo_type = "_blank" + overlay_gun_type = "_blank" + overlay_content = "_blank" can_explode = FALSE limit_per_tile = 4 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index e23f5ab9b20e..1c0e3430a3ce 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -5,7 +5,6 @@ name = "gun" desc = "It's a gun. It's pretty terrible, though." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "" item_state = "gun" pickup_sound = "gunequip" drop_sound = "gunrustle" @@ -546,11 +545,12 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/new_icon_state = base_gun_icon - if(has_empty_icon && (!current_mag || current_mag.current_rounds <= 0)) - new_icon_state += "_e" + if(!isnull(base_gun_icon)) + if(has_empty_icon && (!current_mag || current_mag.current_rounds <= 0)) + new_icon_state += "_e" - if(has_open_icon && (!current_mag || !current_mag.chamber_closed)) - new_icon_state += "_o" + if(has_open_icon && (!current_mag || !current_mag.chamber_closed)) + new_icon_state += "_o" icon_state = new_icon_state update_mag_overlay() diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 2847021c4775..db3b4423bc18 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -30,7 +30,7 @@ Defined in conflicts.dm of the #defines folder. var/pixel_shift_x = 16 //Determines the amount of pixels to move the icon state for the overlay. var/pixel_shift_y = 16 //Uses the bottom left corner of the item. - flags_atom = FPRINT|CONDUCT + flags_atom = FPRINT|CONDUCT matter = list("metal" = 100) w_class = SIZE_SMALL force = 1 @@ -896,15 +896,19 @@ Defined in conflicts.dm of the #defines folder. detaching_gub.attachable_offset["under_y"] = 16 /obj/item/attachable/magnetic_harness/lever_sling/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE + return . /obj/item/attachable/scope name = "S8 4x telescopic scope" @@ -1273,17 +1277,22 @@ Defined in conflicts.dm of the #defines folder. return ..() /obj/item/attachable/vulture_scope/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE if("urban") attach_icon = new_attach_icon ? new_attach_icon : "u_" + attach_icon + . = TRUE + return . /obj/item/attachable/vulture_scope/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -1836,17 +1845,22 @@ Defined in conflicts.dm of the #defines folder. // Doesn't give any stat additions due to the gun already having really good ones, and this is unremovable from the gun itself /obj/item/attachable/stock/vulture/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE if("urban") attach_icon = new_attach_icon ? new_attach_icon : "u_" + attach_icon + . = TRUE + return . /obj/item/attachable/stock/tactical name = "\improper MK221 tactical stock" @@ -2159,15 +2173,19 @@ Defined in conflicts.dm of the #defines folder. aim_speed_mod = CONFIG_GET(number/slowdown_med) /obj/item/attachable/stock/xm51/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE + return . /obj/item/attachable/stock/mod88 name = "\improper Mod 88 burst stock" @@ -2275,15 +2293,19 @@ Defined in conflicts.dm of the #defines folder. select_gamemode_skin(type) /obj/item/attachable/m4ra_barrel/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE + return . /obj/item/attachable/m4ra_barrel_custom name = "custom M4RA barrel" @@ -2301,15 +2323,19 @@ Defined in conflicts.dm of the #defines folder. select_gamemode_skin(type) /obj/item/attachable/m4ra_barrel_custom/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE + return . /obj/item/attachable/upp_rpg_breech name = "HJRA-12 Breech" @@ -3588,23 +3614,30 @@ Defined in conflicts.dm of the #defines folder. icon_state = "bipod_m60" attach_icon = "vulture_bipod" heavy_bipod = TRUE + // Disable gamemode skin for item state, but we explicitly force attach_icon gamemode skins + flags_atom = FPRINT|CONDUCT|NO_GAMEMODE_SKIN /obj/item/attachable/bipod/vulture/Initialize(mapload, ...) . = ..() select_gamemode_skin(type) /obj/item/attachable/bipod/vulture/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - . = ..() + . = ..() // We are forcing attach_icon skin var/new_attach_icon switch(SSmapping.configs[GROUND_MAP].camouflage_type) if("snow") attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + . = TRUE if("desert") attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + . = TRUE if("classic") attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + . = TRUE if("urban") attach_icon = new_attach_icon ? new_attach_icon : "u_" + attach_icon + . = TRUE + return . /obj/item/attachable/burstfire_assembly name = "burst fire assembly" diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 6826d8af921a..38e0f9ebc6cf 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -40,7 +40,7 @@ /obj/item/weapon/gun/energy/update_icon() . = ..() - icon_state = "[base_gun_icon]" + icon_state = base_gun_icon if(!cell) return diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index 6cf6eeead45b..bb9f32201145 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -739,6 +739,10 @@ power_cell = new(src) +/obj/item/smartgun_battery/Destroy() + QDEL_NULL(power_cell) + return ..() + /obj/item/smartgun_battery/get_examine_text(mob/user) . = ..() diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 866217a5eb66..031ad9583b54 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -6,6 +6,9 @@ /// For advanced cases, fail unconditionally but don't return (so a test can return multiple results) #define TEST_FAIL(reason) (Fail(reason || "No reason", __FILE__, __LINE__)) +/// For advanced cases, to note a warning to be provied in a seperate group but don't return or fail the test +#define TEST_WARN(reason) (Warn(reason || "No reason", __FILE__, __LINE__)) + /// Asserts that a condition is true /// If the condition is not true, fails the test #define TEST_ASSERT(assertion, reason) if (!(assertion)) { return Fail("Assertion failed: [reason || "No reason"]", __FILE__, __LINE__) } diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 65dd310bdf21..463c72f0bdf0 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -3,37 +3,42 @@ //You absolutely must run last priority = TEST_CREATE_AND_DESTROY -GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) -/datum/unit_test/create_and_destroy/Run() - //We'll spawn everything here - var/turf/spawn_at = run_loc_floor_bottom_left - var/list/ignore = list( +GLOBAL_VAR_INIT(create_and_destroy_ignore_paths, generate_ignore_paths()) +/proc/generate_ignore_paths() + . = list( //Never meant to be created, errors out the ass for mobcode reasons /mob/living/carbon, /obj/effect/node, /obj/item/seeds/cutting, //lighting singleton /mob/dview, - // These use walkaway() after initialization, which causes false positives + // These use walk_away() after initialization, which causes false positives /obj/item/explosive/grenade/flashbang/cluster/segment, /obj/item/explosive/grenade/flashbang/cluster_piece, + /mob/living/simple_animal/hostile/retaliate/giant_lizard, + /obj/effect/landmark/lizard_spawn, /obj/effect/fake_attacker, /atom/movable/lighting_mask, //leave it alone //This is meant to fail extremely loud every single time it occurs in any environment in any context, and it falsely alarms when this unit test iterates it. Let's not spawn it in. /obj/merge_conflict_marker, ) //This turf existing is an error in and of itself - ignore += typesof(/turf/baseturf_skipover) - ignore += typesof(/turf/baseturf_bottom) + . += typesof(/turf/baseturf_skipover) + . += typesof(/turf/baseturf_bottom) //Our system doesn't support it without warning spam from unregister calls on things that never registered - ignore += typesof(/obj/docking_port) - ignore += typesof(/obj/item/storage/internal) + . += typesof(/obj/docking_port) + . += typesof(/obj/item/storage/internal) // fuck interiors - ignore += typesof(/obj/vehicle) - ignore += typesof(/obj/effect/vehicle_spawner) + . += typesof(/obj/vehicle) + . += typesof(/obj/effect/vehicle_spawner) // Always ought to have an associated escape menu. Any references it could possibly hold would need one regardless. - ignore += subtypesof(/atom/movable/screen/escape_menu) - ignore += typesof(/obj/effect/timed_event) + . += subtypesof(/atom/movable/screen/escape_menu) + . += typesof(/obj/effect/timed_event) + +GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) +/datum/unit_test/create_and_destroy/Run() + //We'll spawn everything here + var/turf/spawn_at = run_loc_floor_bottom_left var/list/cached_contents = spawn_at.contents.Copy() var/original_turf_type = spawn_at.type @@ -41,7 +46,7 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) var/original_baseturf_count = length(original_baseturfs) GLOB.running_create_and_destroy = TRUE - for(var/type_path in typesof(/atom/movable, /turf) - ignore) //No areas please + for(var/type_path in typesof(/atom/movable, /turf) - GLOB.create_and_destroy_ignore_paths) //No areas please if(ispath(type_path, /turf)) spawn_at.ChangeTurf(type_path) //We change it back to prevent baseturfs stacking and hitting the limit diff --git a/code/modules/unit_tests/missing_icons.dm b/code/modules/unit_tests/missing_icons.dm index 44f135ae34fb..225094e2349f 100644 --- a/code/modules/unit_tests/missing_icons.dm +++ b/code/modules/unit_tests/missing_icons.dm @@ -5,6 +5,14 @@ /// Make sure this location is also present in tools/deploy.sh /// If you need additional paths ontop of this second one, you can add another generate_possible_icon_states_list("your/folder/path/") below the if(additional_icon_location) block in Run(), and make sure to add that path to tools/deploy.sh as well. var/additional_icon_location = null + /// A cache of known bads to skip calling icon_exists unnecessarily + var/list/bad_list = list() + /// States to not search for matches in other files (too common) + var/list/states_to_ignore = list("", "blank", "door_closed", "door_open", "door_opening") + /// Additional item slots to test (in addition to defined item_state_slots and item_icons lists). + /// Use this to specify when all of a slot should have sprites if applicable. + var/list/additional_slots_to_test = list() + //var/list/additional_slots_to_test = list(WEAR_L_HAND, WEAR_R_HAND, WEAR_FACE, WEAR_BACK, WEAR_JACKET, WEAR_HANDS, WEAR_FEET, WEAR_WAIST, WEAR_EYES, WEAR_HEAD, WEAR_L_EAR, WEAR_R_EAR, WEAR_BODY, WEAR_ID, WEAR_L_STORE, WEAR_R_STORE) /datum/unit_test/missing_icons/proc/generate_possible_icon_states_list(directory_path) if(!directory_path) @@ -19,38 +27,202 @@ /datum/unit_test/missing_icons/Run() generate_possible_icon_states_list() generate_possible_icon_states_list("icons/effects/") - generate_possible_icon_states_list("icons/mobs/") + generate_possible_icon_states_list("icons/mob/") + generate_possible_icon_states_list("icons/turf/") if(additional_icon_location) generate_possible_icon_states_list(additional_icon_location) //Add EVEN MORE paths if needed here! //generate_possible_icon_states_list("your/folder/path/") - var/list/bad_list = list() + + var/turf/spawn_at = run_loc_floor_top_right + var/original_turf_type = spawn_at.type + var/original_baseturfs = islist(spawn_at.baseturfs) ? spawn_at.baseturfs.Copy() : spawn_at.baseturfs + var/original_baseturf_count = length(original_baseturfs) + + // Check objects: for(var/obj/obj_path as anything in subtypesof(/obj)) if(ispath(obj_path, /obj/item)) var/obj/item/item_path = obj_path if(initial(item_path.flags_item) & ITEM_ABSTRACT) - continue + continue // Ignore abstract - var/icon = initial(obj_path.icon) - if(isnull(icon)) + // Ensure that its not invisible/honk in mapping + var/initial_icon = initial(obj_path.icon) + var/initial_icon_state = initial(obj_path.icon_state) + if(!isnull(initial_icon) && !isnull(initial_icon_state)) + check(obj_path, initial_icon, initial_icon_state, check_null=FALSE) + + if(obj_path in GLOB.create_and_destroy_ignore_paths) continue - var/icon_state = initial(obj_path.icon_state) + + // Defence specific checks: + if(ispath(obj_path, /obj/structure/machinery/defenses)) + var/obj/structure/machinery/defenses/defense_path = obj_path + if(ispath(obj_path, /obj/structure/machinery/defenses/sentry)) + var/obj/structure/machinery/defenses/sentry/sentry_path = obj_path + var/sentry_icon = initial(defense_path.icon) + var/base_state = "[initial(sentry_path.defense_type)] [initial(sentry_path.sentry_type)]" + check(sentry_path, sentry_icon, base_state, "This icon_state is needed for overlays", check_null=FALSE) + check(sentry_path, sentry_icon, "[base_state]_on", "This icon_state is needed for overlays", check_null=FALSE) + check(sentry_path, sentry_icon, "[base_state]_noammo", "This icon_state is needed for overlays", check_null=FALSE) + check(sentry_path, sentry_icon, "[base_state]_destroyed", "This icon_state is needed for overlays", check_null=FALSE) + if(!initial(defense_path.composite_icon)) + continue // Will just have a null icon_state after update_icon + + var/obj/spawned = new obj_path(spawn_at) + check_atom(obj_path, spawned) + + // Item specific checks: + if(ispath(obj_path, /obj/item)) + var/obj/item/item = spawned + // Can explicitly ignore a slot in the item as null e.g. item_state_slots = list(WEAR_R_HAND = null, WEAR_L_HAND = null) + var/list/ignored_slots = list() + var/list/defined_slots = list() + for(var/slot in item.item_state_slots) + if(isnull(item.item_state_slots[slot])) + ignored_slots += slot + continue + defined_slots += slot + for(var/slot in item.item_icons) + if(isnull(item.item_icons[slot])) + ignored_slots |= slot + continue + defined_slots |= slot + for(var/slot in defined_slots) + var/image/result = item.get_mob_overlay(slot = slot, default_bodytype = "Human") + // States specified in item_state_slots and item_icons (warning only currently) + check(obj_path, result.icon, result.icon_state, "This icon_state is needed in slot [slot]", variable_name="mob_state", warning_only=TRUE) + for(var/slot in additional_slots_to_test) + if(!item.is_valid_slot(slot)) + continue + if(slot in defined_slots) + continue + if(slot in ignored_slots) + continue + var/image/result = item.get_mob_overlay(slot = slot, default_bodytype = "Human") + // States specified in additional_slots_to_test not already tested above (warning only currently) + check(obj_path, result.icon, result.icon_state, "This icon_state is needed in slot [slot]", variable_name="mob_state", warning_only=TRUE) + + // Attachable specific checks: + if(ispath(obj_path, /obj/item/attachable)) + var/obj/item/attachable/attachable = spawned + check(obj_path, attachable.icon, attachable.attach_icon, variable_name="attach_icon") + // Clothing under specific checks: + else if(ispath(obj_path, /obj/item/clothing/under)) + var/obj/item/clothing/under/under = spawned + check(obj_path, under.icon, under.worn_state, variable_name="worn_state") + // Belt specific checks: + else if(ispath(obj_path, /obj/item/storage/belt)) + var/obj/item/storage/belt/belt = spawned + if(!belt.skip_fullness_overlays) + var/base_state = belt.icon_state + if(ispath(obj_path, /obj/item/storage/belt/gun)) + var/obj/item/storage/belt/gun/belt_gun = spawned + base_state = belt_gun.base_icon + var/list/guntypes = list() + for(var/path in belt_gun.can_hold) + if(ispath(path, /obj/item/weapon/gun)) + guntypes |= typesof(path) + for(var/path in belt_gun.cant_hold) + if(ispath(path, /obj/item/weapon/gun)) + guntypes -= typesof(path) + var/prefix = "" + if(belt_gun.gun_has_gamemode_skin) + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + prefix = "s_" + if("desert") + prefix = "d_" + if("classic") + prefix = "c_" + for(var/obj/item/weapon/gun/guntype as anything in guntypes) + if(isnull(initial(guntype.icon_state))) + continue + check(obj_path, belt_gun.icon, prefix + initial(guntype.icon_state), guntype, "gun_underlay") + check(obj_path, belt.icon, "+[base_state]_half", "This icon_state is needed for fullness overlays", check_null=FALSE) + check(obj_path, belt.icon, "+[base_state]_full", "This icon_state is needed for fullness overlays", check_null=FALSE) + qdel(spawned) + + + // Check turfs: + for(var/turf/turf_path as anything in subtypesof(/turf) - GLOB.create_and_destroy_ignore_paths) + var/turf/spawned = spawn_at.ChangeTurf(turf_path) + check_atom(turf_path, spawned) + + // Open floor specific checks: + if(istype(spawned, /turf/open/floor)) + var/turf/open/floor/floor = spawned + if(floor.breakable_tile && !floor.hull_floor) + floor.break_tile() + check_atom(turf_path, spawned, "This icon_state is needed for break_tile()") + floor.broken = FALSE + if(floor.burnable_tile && !floor.hull_floor) + floor.burn_tile() + check_atom(turf_path, spawned, "This icon_state is needed for burn_tile()") + floor.burnt = FALSE + + spawn_at.ChangeTurf(original_turf_type, original_baseturfs) + if(original_baseturf_count != length(spawn_at.baseturfs)) + TEST_FAIL("[turf_path] changed the amount of baseturfs from [original_baseturf_count] to [length(spawn_at.baseturfs)]; [english_list(original_baseturfs)] to [islist(spawn_at.baseturfs) ? english_list(spawn_at.baseturfs) : spawn_at.baseturfs]") + //Warn if it changes again + original_baseturfs = islist(spawn_at.baseturfs) ? spawn_at.baseturfs.Copy() : spawn_at.baseturfs + original_baseturf_count = length(original_baseturfs) + + + // Check mobs: + for(var/mob/mob_path as anything in subtypesof(/mob) - GLOB.create_and_destroy_ignore_paths) + var/mob/spawned = new mob_path(spawn_at) + check_atom(mob_path, spawned) + qdel(spawned) + +/datum/unit_test/missing_icons/proc/check_atom(atom_path, atom/thing, note, skip_overlays_underlays=FALSE) + check(atom_path, thing.icon, thing.icon_state, note) + + if(!skip_overlays_underlays) + var/overlay_note = note ? note + " - Overlay" : "Overlay" + var/underlay_note = note ? note + " - Underlay" : "Underlay" + for(var/mutable_appearance/layer as anything in thing.overlays) + if(!layer.icon_state) + continue // overlay icon_state is never null it seems + check(atom_path, layer.icon || thing.icon, layer.icon_state, overlay_note) + for(var/mutable_appearance/layer as anything in thing.underlays) + if(!layer.icon_state) + continue // underlay icon_state is never null it seems + check(atom_path, layer.icon || thing.icon, layer.icon_state, underlay_note) + +/datum/unit_test/missing_icons/proc/check(thing_path, icon, icon_state, note, variable_name="icon_state", check_null=TRUE, warning_only=FALSE) + if(check_null) + if(isnull(icon)) + return if(isnull(icon_state)) - continue + return - if(length(bad_list) && (icon_state in bad_list[icon])) - continue + if(icon_state in bad_list[icon]) + return - if(icon_exists(icon, icon_state)) - continue + if(icon_exists(icon, icon_state)) + return + + bad_list[icon] += list(icon_state) - bad_list[icon] += list(icon_state) + var/match_message + if(!(icon_state in states_to_ignore) && (icon_state in possible_icon_states)) + for(var/file_place in possible_icon_states[icon_state]) + match_message += (match_message ? " & '[file_place]'" : "\n\tMatching sprite found in: '[file_place]'") - var/match_message - if(icon_state in possible_icon_states) - for(var/file_place in possible_icon_states[icon_state]) - match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'") + if(note) + note = " ([note])" + var/variable_value = isnull(icon_state) ? "null" : "\"[icon_state]\"" + var/icon_value = isnull(icon) ? "null" : "'[icon]'" - TEST_FAIL("Missing icon_state for [obj_path] in '[icon]'.\n\ticon_state = \"[icon_state]\"[match_message]") + var/msg = "Missing sprite for [thing_path]\n\t[variable_name]=[variable_value] icon=[icon_value][note][match_message]" + if(!warning_only) + TEST_FAIL(msg) + else + TEST_WARN(msg) +/datum/unit_test/missing_icons/log_for_test(text, priority, file, line) + if(priority == "warning") + return // TODO: For now 847 warning annotations is just too much noise to be fixed + return ..() diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index cf02cdf62155..62a7c1589a3c 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -38,11 +38,13 @@ GLOBAL_VAR_INIT(focused_test, focused_test()) var/turf/run_loc_floor_top_right ///The priority of the test, the larger it is the later it fires var/priority = TEST_DEFAULT + //internal shit var/focus = FALSE var/succeeded = TRUE var/list/allocated var/list/fail_reasons + var/list/warn_reasons var/static/datum/space_level/reservation @@ -82,6 +84,12 @@ GLOBAL_VAR_INIT(focused_test, focused_test()) LAZYADD(fail_reasons, list(list(reason, file, line))) +/datum/unit_test/proc/Warn(reason = "No reason", file = "OUTDATED_TEST", line = 1) + if(!istext(reason)) + reason = "FORMATTED: [reason != null ? reason : "NULL"]" + + LAZYADD(warn_reasons, list(list(reason, file, line))) + /// Allocates an instance of the provided type, and places it somewhere in an available loc /// Instances allocated through this proc will be destroyed when the test is over /datum/unit_test/proc/allocate(type, ...) @@ -182,7 +190,28 @@ GLOBAL_VAR_INIT(focused_test, focused_test()) log_world("::endgroup::") - if (!test.succeeded) + // Group warnings together + var/list/warn_reasons = test.warn_reasons + if(length(warn_reasons)) + log_world("::group::[test_path] Warnings") + + log_entry = list() + for(var/reasonID in 1 to length(warn_reasons)) + var/text = warn_reasons[reasonID][1] + var/file = warn_reasons[reasonID][2] + var/line = warn_reasons[reasonID][3] + + test.log_for_test(text, "warning", file, line) + + // Normal log message + log_entry += "\tWARNING #[reasonID]: [text] at [file]:[line]" + + var/warn_messages = log_entry.Join("\n") + log_test(warn_messages) + + log_test("::endgroup::") + + if(!test.succeeded) log_world("::error::[TEST_OUTPUT_RED("FAIL")] [test_output_desc]") test_results[test_path] = list("status" = test.succeeded ? UNIT_TEST_PASSED : UNIT_TEST_FAILED, "message" = message, "name" = test_path) diff --git a/icons/effects/blood.dmi b/icons/effects/blood.dmi index 6b48e437853c..780045d02394 100644 Binary files a/icons/effects/blood.dmi and b/icons/effects/blood.dmi differ diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi index 0ec19bef4a29..33e07c753ba6 100644 Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ diff --git a/icons/mob/xenos/structures.dmi b/icons/mob/xenos/structures.dmi index 0c1f0be4f6de..41472914863e 100644 Binary files a/icons/mob/xenos/structures.dmi and b/icons/mob/xenos/structures.dmi differ diff --git a/icons/mob/xenos/weeds.dmi b/icons/mob/xenos/weeds.dmi index 0b79525544bd..52f7183e116c 100644 Binary files a/icons/mob/xenos/weeds.dmi and b/icons/mob/xenos/weeds.dmi differ diff --git a/icons/obj/items/clothing/backpacks.dmi b/icons/obj/items/clothing/backpacks.dmi index 4ac5ae6b39b6..8e25c47fba3f 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/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index 4710917b0870..419326013ae7 100644 Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ diff --git a/icons/obj/items/hunter/pred_gear.dmi b/icons/obj/items/hunter/pred_gear.dmi index ff684282645b..3bd3959b9665 100644 Binary files a/icons/obj/items/hunter/pred_gear.dmi and b/icons/obj/items/hunter/pred_gear.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi index 124c40c1afea..130b9a2d70d3 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi differ diff --git a/icons/obj/structures/props/alien_autopsy.dmi b/icons/obj/structures/props/alien_autopsy.dmi index a61d29e1f668..8235af75c3b8 100644 Binary files a/icons/obj/structures/props/alien_autopsy.dmi and b/icons/obj/structures/props/alien_autopsy.dmi differ diff --git a/icons/obj/structures/props/snowflora.dmi b/icons/obj/structures/props/snowflora.dmi index 6801bb1c9d66..e622c411c6be 100644 Binary files a/icons/obj/structures/props/snowflora.dmi and b/icons/obj/structures/props/snowflora.dmi differ diff --git a/icons/turf/walls/almayer.dmi b/icons/turf/walls/almayer.dmi index 671dcc1fbd94..8f5d8693595a 100644 Binary files a/icons/turf/walls/almayer.dmi and b/icons/turf/walls/almayer.dmi differ diff --git a/icons/turf/walls/almayer_aicore.dmi b/icons/turf/walls/almayer_aicore.dmi index 5ce7aaf2022f..acc9da388af7 100644 Binary files a/icons/turf/walls/almayer_aicore.dmi and b/icons/turf/walls/almayer_aicore.dmi differ diff --git a/icons/turf/walls/almayer_aicore_white.dmi b/icons/turf/walls/almayer_aicore_white.dmi index 721cd7c63f28..68d8d7255435 100644 Binary files a/icons/turf/walls/almayer_aicore_white.dmi and b/icons/turf/walls/almayer_aicore_white.dmi differ diff --git a/icons/turf/walls/almayer_white.dmi b/icons/turf/walls/almayer_white.dmi index abd7206f3ce8..17042cb7062d 100644 Binary files a/icons/turf/walls/almayer_white.dmi and b/icons/turf/walls/almayer_white.dmi differ diff --git a/icons/turf/walls/bunker.dmi b/icons/turf/walls/bunker.dmi index d9d4f8a080cb..a4549000196a 100644 Binary files a/icons/turf/walls/bunker.dmi and b/icons/turf/walls/bunker.dmi differ diff --git a/icons/turf/walls/cave.dmi b/icons/turf/walls/cave.dmi index 2c24b66fcbcb..2c0e43ad2832 100644 Binary files a/icons/turf/walls/cave.dmi and b/icons/turf/walls/cave.dmi differ diff --git a/icons/turf/walls/chigusa.dmi b/icons/turf/walls/chigusa.dmi index 3bb63235d8e6..c1e5f8200844 100644 Binary files a/icons/turf/walls/chigusa.dmi and b/icons/turf/walls/chigusa.dmi differ diff --git a/icons/turf/walls/corsat.dmi b/icons/turf/walls/corsat.dmi index 617c1b9bc3ce..7bb9b69a0171 100644 Binary files a/icons/turf/walls/corsat.dmi and b/icons/turf/walls/corsat.dmi differ diff --git a/icons/turf/walls/cult.dmi b/icons/turf/walls/cult.dmi index fcc3a5364deb..1e4abfef6a7d 100644 Binary files a/icons/turf/walls/cult.dmi and b/icons/turf/walls/cult.dmi differ diff --git a/icons/turf/walls/dev/dev.dmi b/icons/turf/walls/dev/dev.dmi index 4a1eaf6f7b6a..f90dc20a4fcf 100644 Binary files a/icons/turf/walls/dev/dev.dmi and b/icons/turf/walls/dev/dev.dmi differ diff --git a/icons/turf/walls/domeretro.dmi b/icons/turf/walls/domeretro.dmi index 003c5246a3d1..be1aaa309147 100644 Binary files a/icons/turf/walls/domeretro.dmi and b/icons/turf/walls/domeretro.dmi differ diff --git a/icons/turf/walls/floodgate.dmi b/icons/turf/walls/floodgate.dmi index f67e5a7a3fcc..b84718351a7b 100644 Binary files a/icons/turf/walls/floodgate.dmi and b/icons/turf/walls/floodgate.dmi differ diff --git a/icons/turf/walls/hangar.dmi b/icons/turf/walls/hangar.dmi index 31b5d4471956..a4c02ca0d9c0 100644 Binary files a/icons/turf/walls/hangar.dmi and b/icons/turf/walls/hangar.dmi differ diff --git a/icons/turf/walls/hangar_windows.dmi b/icons/turf/walls/hangar_windows.dmi index ee68e468a603..91f8a8f445dd 100644 Binary files a/icons/turf/walls/hangar_windows.dmi and b/icons/turf/walls/hangar_windows.dmi differ diff --git a/icons/turf/walls/hunter.dmi b/icons/turf/walls/hunter.dmi index 912f58abd478..9423cea4e7ce 100644 Binary files a/icons/turf/walls/hunter.dmi and b/icons/turf/walls/hunter.dmi differ diff --git a/icons/turf/walls/ice_colony/shiva_turfs.dmi b/icons/turf/walls/ice_colony/shiva_turfs.dmi index e68de4756191..57f8297f0376 100644 Binary files a/icons/turf/walls/ice_colony/shiva_turfs.dmi and b/icons/turf/walls/ice_colony/shiva_turfs.dmi differ diff --git a/icons/turf/walls/icewall.dmi b/icons/turf/walls/icewall.dmi index dc58ecea6618..856ccaeaa324 100644 Binary files a/icons/turf/walls/icewall.dmi and b/icons/turf/walls/icewall.dmi differ diff --git a/icons/turf/walls/icewalllight.dmi b/icons/turf/walls/icewalllight.dmi index cfa9e7dbc678..fc5934e9bd73 100644 Binary files a/icons/turf/walls/icewalllight.dmi and b/icons/turf/walls/icewalllight.dmi differ diff --git a/icons/turf/walls/jungle_veg.dmi b/icons/turf/walls/jungle_veg.dmi index 31214e3bdf79..e8f5bd39c0c7 100644 Binary files a/icons/turf/walls/jungle_veg.dmi and b/icons/turf/walls/jungle_veg.dmi differ diff --git a/icons/turf/walls/junglewall.dmi b/icons/turf/walls/junglewall.dmi index 4f11fc238048..5f7bda56800e 100644 Binary files a/icons/turf/walls/junglewall.dmi and b/icons/turf/walls/junglewall.dmi differ diff --git a/icons/turf/walls/junglewalls_v3.dmi b/icons/turf/walls/junglewalls_v3.dmi index c3905c580c23..0888331cc790 100644 Binary files a/icons/turf/walls/junglewalls_v3.dmi and b/icons/turf/walls/junglewalls_v3.dmi differ diff --git a/icons/turf/walls/kutjevo/kutjevo.dmi b/icons/turf/walls/kutjevo/kutjevo.dmi index 3aba82409af6..f27c8afa28d5 100644 Binary files a/icons/turf/walls/kutjevo/kutjevo.dmi and b/icons/turf/walls/kutjevo/kutjevo.dmi differ diff --git a/icons/turf/walls/prison.dmi b/icons/turf/walls/prison.dmi index 1b115a0393d3..555e855de591 100644 Binary files a/icons/turf/walls/prison.dmi and b/icons/turf/walls/prison.dmi differ diff --git a/icons/turf/walls/prison/bone_resin.dmi b/icons/turf/walls/prison/bone_resin.dmi index efb100f06a17..674829f4c777 100644 Binary files a/icons/turf/walls/prison/bone_resin.dmi and b/icons/turf/walls/prison/bone_resin.dmi differ diff --git a/icons/turf/walls/rockwall.dmi b/icons/turf/walls/rockwall.dmi index 812eccdd50a3..574c3a40e65d 100644 Binary files a/icons/turf/walls/rockwall.dmi and b/icons/turf/walls/rockwall.dmi differ diff --git a/icons/turf/walls/runedstone.dmi b/icons/turf/walls/runedstone.dmi index c2ef24221c0b..148aee344f72 100644 Binary files a/icons/turf/walls/runedstone.dmi and b/icons/turf/walls/runedstone.dmi differ diff --git a/icons/turf/walls/solaris/solaris.dmi b/icons/turf/walls/solaris/solaris.dmi index 96865710abd7..c6fa32066925 100644 Binary files a/icons/turf/walls/solaris/solaris.dmi and b/icons/turf/walls/solaris/solaris.dmi differ diff --git a/icons/turf/walls/stone.dmi b/icons/turf/walls/stone.dmi index b828359da940..8e2f86dc0e9b 100644 Binary files a/icons/turf/walls/stone.dmi and b/icons/turf/walls/stone.dmi differ diff --git a/icons/turf/walls/strata_ice.dmi b/icons/turf/walls/strata_ice.dmi index 417237eeac7d..140915f35928 100644 Binary files a/icons/turf/walls/strata_ice.dmi and b/icons/turf/walls/strata_ice.dmi differ diff --git a/icons/turf/walls/strata_jungle.dmi b/icons/turf/walls/strata_jungle.dmi index a05e0f9119ac..3a0b108fb4cd 100644 Binary files a/icons/turf/walls/strata_jungle.dmi and b/icons/turf/walls/strata_jungle.dmi differ diff --git a/icons/turf/walls/strata_outpost.dmi b/icons/turf/walls/strata_outpost.dmi index 6043f7c32d8d..dcb7cfb8c77d 100644 Binary files a/icons/turf/walls/strata_outpost.dmi and b/icons/turf/walls/strata_outpost.dmi differ diff --git a/icons/turf/walls/strata_outpost_v1.dmi b/icons/turf/walls/strata_outpost_v1.dmi index a3ed9c8c3627..a6d90b3a81f3 100644 Binary files a/icons/turf/walls/strata_outpost_v1.dmi and b/icons/turf/walls/strata_outpost_v1.dmi differ diff --git a/icons/turf/walls/strata_windows.dmi b/icons/turf/walls/strata_windows.dmi index b273ac835014..0a4796943a92 100644 Binary files a/icons/turf/walls/strata_windows.dmi and b/icons/turf/walls/strata_windows.dmi differ diff --git a/icons/turf/walls/walls.dmi b/icons/turf/walls/walls.dmi index e60a109ca0cd..da6d1e4ad590 100644 Binary files a/icons/turf/walls/walls.dmi and b/icons/turf/walls/walls.dmi differ diff --git a/icons/turf/walls/window_frames.dmi b/icons/turf/walls/window_frames.dmi index 5fbe51615e98..2e5711c52672 100644 Binary files a/icons/turf/walls/window_frames.dmi and b/icons/turf/walls/window_frames.dmi differ diff --git a/icons/turf/walls/windows.dmi b/icons/turf/walls/windows.dmi index c162b83e661c..28555844a809 100644 Binary files a/icons/turf/walls/windows.dmi and b/icons/turf/walls/windows.dmi differ diff --git a/icons/turf/walls/windows_corsat.dmi b/icons/turf/walls/windows_corsat.dmi index 6be727bd9bc8..07f20c95efab 100644 Binary files a/icons/turf/walls/windows_corsat.dmi and b/icons/turf/walls/windows_corsat.dmi differ diff --git a/icons/turf/walls/wood.dmi b/icons/turf/walls/wood.dmi index 4c58cc5cbb87..db9e3b05938c 100644 Binary files a/icons/turf/walls/wood.dmi and b/icons/turf/walls/wood.dmi differ diff --git a/icons/turf/walls/wood2.dmi b/icons/turf/walls/wood2.dmi index 6311429ea861..eb219238620f 100644 Binary files a/icons/turf/walls/wood2.dmi and b/icons/turf/walls/wood2.dmi differ diff --git a/icons/turf/walls/xeno.dmi b/icons/turf/walls/xeno.dmi index 0c1f0be4f6de..41472914863e 100644 Binary files a/icons/turf/walls/xeno.dmi and b/icons/turf/walls/xeno.dmi differ diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 78ac0b5c64a2..e3abf61398f0 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -20889,7 +20889,7 @@ desc = "A bewildering tangle of machinery and pipes."; name = "\improper coolant feed" }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "fwV" = ( /obj/structure/surface/table, @@ -22351,7 +22351,7 @@ /area/bigredv2/caves_lambda) "gXs" = ( /obj/effect/spawner/random/toolbox, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "gYl" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -24828,7 +24828,7 @@ /obj/structure/prop/almayer/cannon_cable_connector{ name = "\improper Cable connector" }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "jRi" = ( /obj/item/ammo_magazine/smg/bizon{ @@ -27284,7 +27284,7 @@ name = "\improper Cable connector" }, /obj/structure/cable, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "msf" = ( /turf/open/mars_cave/mars_cave_11, @@ -30825,7 +30825,7 @@ /area/bigredv2/caves_sw) "pYE" = ( /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "pYL" = ( /obj/effect/decal/cleanable/dirt, @@ -34173,7 +34173,7 @@ /area/bigredv2/caves/mining) "tgF" = ( /obj/effect/spawner/random/tool, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "tgL" = ( /turf/open/mars_cave/mars_cave_6, @@ -35295,7 +35295,7 @@ name = "handful of HE/FRAG shells (12g)"; pixel_y = 3 }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/bigredv2/oob) "ukv" = ( /turf/open/mars_cave/mars_cave_15, diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm index d5531341ec7c..3a51cb3b63b9 100644 --- a/maps/map_files/CORSAT/Corsat.dmm +++ b/maps/map_files/CORSAT/Corsat.dmm @@ -14800,11 +14800,11 @@ /turf/open/gm/coast/beachcorner2/south_west, /area/corsat/theta/biodome) "bcU" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/corsat/theta/biodome) "bcV" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/corsat/theta/biodome) "bcW" = ( @@ -15031,7 +15031,7 @@ /turf/open/mars_cave/mars_cave_4, /area/corsat/sigma/biodome/gunrange) "beg" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) "beh" = ( @@ -15071,7 +15071,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/corsat/theta/biodome) "beo" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) "bep" = ( @@ -15159,7 +15159,7 @@ /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) "beJ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/corsat/theta/biodome) @@ -26623,7 +26623,7 @@ /turf/open/floor/corsat/whitetan, /area/corsat/gamma/residential/west) "cMa" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) @@ -26994,7 +26994,7 @@ /turf/open/mars_cave/mars_cave_9, /area/corsat/sigma/biodome) "diD" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -27285,7 +27285,7 @@ desc = "A bewildering tangle of machinery and pipes."; name = "\improper coolant feed" }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/corsat/theta/biodome/complex) "dwS" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -28054,7 +28054,7 @@ /turf/open/floor/corsat/plate, /area/corsat/omega/biodome) "elR" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -28157,7 +28157,7 @@ /turf/open/floor/corsat/squares, /area/corsat/sigma/checkpoint) "eql" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) @@ -28371,7 +28371,7 @@ /turf/open/floor/corsat/squares, /area/corsat/omega/maint) "ezR" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt, /area/corsat/theta/biodome) "eAD" = ( @@ -29545,7 +29545,7 @@ /turf/open/floor/corsat/blue/east, /area/corsat/gamma/hallwaysouth) "fSA" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/corsat/theta/biodome) "fSB" = ( @@ -30009,7 +30009,7 @@ /turf/open/floor/corsat/squares, /area/corsat/sigma/south/engineering) "gpP" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/north, /area/corsat/theta/biodome) "gqd" = ( @@ -30617,7 +30617,7 @@ /obj/structure/prop/almayer/cannon_cable_connector{ name = "\improper Cable connector" }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/corsat/theta/biodome/complex) "gTe" = ( /obj/structure/bed/chair{ @@ -31528,7 +31528,7 @@ /turf/open/floor/corsat/bluegreycorner/north, /area/corsat/gamma/hangar/flightcontrol) "hJw" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/east, /area/corsat/theta/biodome) "hJG" = ( @@ -32357,7 +32357,7 @@ /turf/open/floor/corsat/purplewhite/southeast, /area/corsat/gamma/biodome/toxins) "iBg" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, @@ -33659,7 +33659,7 @@ /turf/open/floor/corsat/lightplate, /area/corsat/theta/biodome/hydroeast) "keE" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/corsat/theta/biodome) "kfc" = ( @@ -34328,7 +34328,7 @@ /obj/structure/machinery/light{ dir = 8 }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/corsat/theta/biodome/complex) "kRa" = ( /obj/effect/landmark/teleporter_loc/corsat_sigma_remote{ @@ -35801,7 +35801,7 @@ /turf/open/floor/wood, /area/corsat/gamma/residential/east) "mrb" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/gm/dirt, /area/corsat/theta/biodome) @@ -36481,7 +36481,7 @@ /turf/open/gm/river, /area/corsat/theta/biodome) "nck" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/flora/jungle/vines/light_1, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -36609,7 +36609,7 @@ /turf/open/floor/corsat/tan/north, /area/corsat/gamma/residential/west) "nlm" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) @@ -36801,7 +36801,7 @@ /turf/open/floor/carpet13_5/west, /area/corsat/omega/offices) "ntg" = ( -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/corsat/theta/biodome/complex) "ntn" = ( /turf/closed/shuttle/ert{ @@ -37676,7 +37676,7 @@ /obj/structure/prop/almayer/computers/sensor_computer1{ name = "computer" }, -/turf/open/shuttle/escapepod/floor12, +/turf/open/shuttle/escapepod/floor2/east, /area/corsat/theta/biodome/complex) "opi" = ( /obj/effect/landmark/hunter_primary, @@ -38239,7 +38239,7 @@ /turf/open/floor/corsat/purplewhite/north, /area/corsat/gamma/sigmaremote) "oVF" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -40091,7 +40091,7 @@ /area/corsat/gamma/engineering/atmos) "qVd" = ( /obj/structure/platform/metal/almayer/north, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/corsat/theta/biodome/complex) "qVe" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -41725,7 +41725,7 @@ /turf/open/floor/wood, /area/corsat/gamma/rnr/library) "sGQ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirtgrassborder/west, /area/corsat/theta/biodome) "sGV" = ( @@ -42691,7 +42691,7 @@ /turf/open/floor/corsat/whitetan/west, /area/corsat/gamma/residential/west) "tJf" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/corsat/theta/biodome) "tJs" = ( @@ -43926,7 +43926,7 @@ /turf/open/floor/corsat/red, /area/corsat/theta/airlock/control) "uXk" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, @@ -44008,7 +44008,7 @@ /turf/open/floor/corsat/purple/west, /area/corsat/omega/complex) "var" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirt, /area/corsat/theta/biodome) "vaw" = ( @@ -44393,7 +44393,7 @@ /obj/structure/pipes/standard/cap/hidden{ dir = 1 }, -/turf/open/shuttle/escapepod/floor5, +/turf/open/shuttle/escapepod/floor1/north, /area/corsat/theta/biodome/complex) "vyk" = ( /turf/open/floor/corsat/greenwhitecorner/north, @@ -44750,7 +44750,7 @@ /turf/open/floor/corsat/red/southeast, /area/corsat/sigma/hangar) "vQg" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/pipes/standard/manifold/hidden/green, /turf/open/gm/grass/grass1/weedable, /area/corsat/theta/biodome) @@ -45011,7 +45011,7 @@ /turf/open/ice, /area/corsat/gamma/biodome) "wiJ" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/west, /area/corsat/theta/biodome) "wiQ" = ( @@ -45315,7 +45315,7 @@ /turf/open/floor/corsat, /area/corsat/sigma/south/robotics) "wvK" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/gm/dirt, /area/corsat/theta/biodome) @@ -46602,7 +46602,7 @@ /turf/open/floor/corsat/white/southeast, /area/corsat/gamma/hallwaysouth) "xRq" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/corsat/theta/biodome) "xRM" = ( @@ -46929,7 +46929,7 @@ /turf/open/floor/corsat/yellowcorner/north, /area/corsat/omega/control) "yle" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirtgrassborder/south, /area/corsat/theta/biodome) "ylo" = ( diff --git a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm index 066d7ab18253..54bea6e0137c 100644 --- a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm +++ b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm @@ -1343,7 +1343,7 @@ /turf/open/floor/plating, /area/prison/security/monitoring/maxsec/panopticon) "ael" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/prison/yard) "aem" = ( @@ -8327,7 +8327,7 @@ /turf/open/floor/prison/sterile_white/southwest, /area/prison/research) "aEv" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/prison/residential/north) "aEw" = ( @@ -10972,7 +10972,7 @@ /obj/effect/decal/siding/wood_siding{ icon_state = "wood_siding5" }, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/prison/residential/north) "aPa" = ( @@ -16703,7 +16703,7 @@ /area/prison/yard) "blp" = ( /obj/effect/decal/cleanable/blood/gibs, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/prison/yard) "blq" = ( @@ -19595,7 +19595,7 @@ /turf/open/floor/prison/green, /area/prison/cellblock/lowsec/se) "bxO" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/prison/residential/central) "bxP" = ( @@ -32899,7 +32899,7 @@ /turf/open/floor/carpet, /area/prison/residential/north) "djE" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /turf/open/organic/grass, /area/prison/residential/south) @@ -33727,7 +33727,7 @@ /obj/effect/decal/siding/wood_siding{ icon_state = "wood_siding6" }, -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/organic/grass, /area/prison/residential/north) "gKA" = ( @@ -33739,7 +33739,7 @@ /turf/open/floor/prison/sterile_white/southwest, /area/prison/residential/central) "gML" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/prison/residential/south) "gNI" = ( @@ -34288,7 +34288,7 @@ /turf/open/floor/prison/cell_stripe, /area/prison/telecomms) "iGo" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /turf/open/organic/grass, /area/prison/residential/north) @@ -35001,7 +35001,7 @@ /turf/open/floor/prison/blue/northeast, /area/prison/cellblock/protective) "lCQ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /turf/open/organic/grass, /area/prison/residential/north) @@ -35488,7 +35488,7 @@ /turf/open/floor/prison/floor_plate, /area/prison/cellblock/highsec/south/north) "nGR" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /turf/open/organic/grass, /area/prison/residential/south) @@ -35595,7 +35595,7 @@ /turf/open/floor/prison, /area/prison/cellblock/mediumsec/south) "nXE" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/organic/grass, /area/prison/residential/south) "nXF" = ( @@ -37560,7 +37560,7 @@ /turf/open/floor/plating, /area/prison/cellblock/mediumsec/east) "wUz" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/organic/grass, /area/prison/residential/north) "wUP" = ( diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index 42197ba4d425..59061d40dae3 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -91,7 +91,7 @@ /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_north) "ahz" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "brflowers_1" }, /turf/open/gm/grass/grass1/weedable, @@ -1605,7 +1605,7 @@ /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/botany) "crT" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "fullgrass_1" }, /turf/open/gm/grass/grass1/weedable, @@ -2022,7 +2022,7 @@ /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/exterior/lz_dunes) "cXA" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "lavendergrass_1" }, /mob/living/simple_animal/cat/Runtime{ @@ -3912,7 +3912,7 @@ /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/interior/power) "fRP" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "brflowers_3" }, /turf/open/gm/grass/grass1/weedable, @@ -12614,7 +12614,7 @@ /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/lz_dunes) "tye" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "sparsegrass_2" }, /turf/open/gm/dirt2, @@ -13100,7 +13100,7 @@ /turf/open/floor/kutjevo/grey, /area/kutjevo/interior/complex/med) "ujo" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1/weedable, /area/kutjevo/exterior/complex_border/med_park) "ujT" = ( @@ -13198,7 +13198,7 @@ /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/interior/power) "uri" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "fullgrass_3" }, /turf/open/gm/grass/grass1/weedable, @@ -13405,7 +13405,7 @@ /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany/east_tech) "uIQ" = ( -/obj/structure/flora/bush/ausbushes/ppflowers{ +/obj/structure/flora/bush/ausbushes/var3/ppflowers{ icon_state = "sparsegrass_3" }, /turf/open/gm/dirtgrassborder2, diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index b93256bf8aa9..7dd0776d2ab3 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -3215,7 +3215,7 @@ /area/lv522/atmos/east_reactor) "bWd" = ( /obj/structure/flora/jungle/planttop1, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/floor/grass, /area/lv522/indoors/a_block/garden) "bWm" = ( @@ -22795,7 +22795,7 @@ /turf/open/floor/plating, /area/lv522/indoors/a_block/security) "mtI" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/floor/grass, /area/lv522/indoors/a_block/garden) "mtM" = ( @@ -23519,7 +23519,7 @@ /obj/structure/prop/ice_colony/dense/planter_box{ dir = 9 }, -/obj/structure/flora/bush/ausbushes/var3/ywflowers{ +/obj/structure/flora/bush/ausbushes/ywflowers{ layer = 3 }, /turf/open/floor/prison/darkredfull2, @@ -29313,7 +29313,7 @@ /obj/structure/prop/ice_colony/dense/planter_box{ dir = 9 }, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/floor/prison/greenfull/east, /area/lv522/indoors/b_block/bridge) "pRf" = ( @@ -38951,7 +38951,7 @@ dir = 9; layer = 2.9 }, -/obj/structure/flora/bush/ausbushes/var3/ywflowers{ +/obj/structure/flora/bush/ausbushes/ywflowers{ layer = 3 }, /turf/open/floor/prison/greenfull/east, @@ -43716,14 +43716,14 @@ /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "wIE" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/organic/grass, /area/lv522/indoors/a_block/garden) "wIL" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 9 }, -/obj/structure/flora/bush/ausbushes/var3/ywflowers{ +/obj/structure/flora/bush/ausbushes/ywflowers{ layer = 3 }, /obj/structure/machinery/light, diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index dfce3d726bb3..abb5d634a9eb 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -1450,7 +1450,7 @@ /turf/open/floor/redyellowfull, /area/lv624/ground/barrens/west_barrens/ceiling) "aiv" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/coast/east, /area/lv624/ground/barrens/east_barrens) "aiw" = ( @@ -1611,7 +1611,7 @@ /turf/open/floor/whiteyellowfull/east, /area/lv624/ground/caves/sand_temple) "ajp" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirt, /area/lv624/ground/barrens/central_barrens) "ajq" = ( @@ -2267,7 +2267,7 @@ /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/north_east_caves) "anP" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) "anR" = ( @@ -2417,7 +2417,7 @@ /turf/open/gm/coast/beachcorner/south_west, /area/lv624/ground/river/east_river) "aoZ" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/river, /area/lv624/ground/river/west_river) "apa" = ( @@ -2434,7 +2434,7 @@ /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) "apo" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/effect/landmark/crap_item, /turf/open/gm/river, /area/lv624/ground/river/east_river) @@ -2442,7 +2442,7 @@ /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/river/east_river) "apq" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) "apt" = ( @@ -2754,7 +2754,7 @@ /turf/open/gm/river, /area/lv624/ground/river/west_river) "arV" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/river, /area/lv624/ground/river/west_river) "asa" = ( @@ -2917,7 +2917,7 @@ /turf/open/gm/dirt, /area/lv624/ground/jungle/west_jungle) "asZ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_jungle) "ata" = ( @@ -4836,7 +4836,7 @@ /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) "aBQ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) @@ -4940,7 +4940,7 @@ /turf/open/gm/dirt, /area/lv624/ground/colony/north_tcomms_road) "aCp" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/river, /area/lv624/ground/jungle/west_jungle) "aCq" = ( @@ -5202,7 +5202,7 @@ /turf/open/gm/dirt, /area/lv624/lazarus/landing_zones/lz2) "aDw" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/floor/grass, /area/lv624/lazarus/main_hall) "aDx" = ( @@ -5827,7 +5827,7 @@ /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz1) "aGg" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/river, /area/lv624/ground/jungle/west_jungle) "aGh" = ( @@ -6600,7 +6600,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "aKg" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) "aKh" = ( @@ -6645,7 +6645,7 @@ /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/east_central_jungle) "aKp" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass2, /area/lv624/lazarus/yggdrasil) @@ -7022,7 +7022,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/east_jungle) "aMt" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/west_jungle) "aMz" = ( @@ -7652,7 +7652,7 @@ /turf/open/gm/river, /area/lv624/lazarus/yggdrasil) "aPY" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/east_central_jungle) "aPZ" = ( @@ -9236,7 +9236,7 @@ /turf/closed/wall/mineral/sandstone/runed, /area/lv624/ground/jungle/south_west_jungle/ceiling) "aXA" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/floor/whiteyellowfull/east, /area/lv624/ground/jungle/south_west_jungle/ceiling) "aXB" = ( @@ -9879,7 +9879,7 @@ /obj/effect/decal/grass_overlay/grass1/inner{ dir = 6 }, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) "bcU" = ( @@ -10119,11 +10119,11 @@ /turf/open/floor/vault2/west, /area/lv624/lazarus/robotics) "bvS" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/north_east_caves) "bvX" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "bwc" = ( @@ -11059,7 +11059,7 @@ /turf/open/floor/asteroidwarning/north, /area/lv624/ground/colony/telecomm/cargo) "dqK" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) "drm" = ( @@ -11736,7 +11736,7 @@ /turf/open/floor/green/northwest, /area/lv624/lazarus/hydroponics) "eCx" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) "eCF" = ( @@ -11856,7 +11856,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/jungle/south_east_jungle) "ePV" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) "eQh" = ( @@ -12247,7 +12247,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) "fGO" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "fHi" = ( @@ -12369,7 +12369,7 @@ /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/west_caves) "fSA" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/platform_decoration/stone/runed_sandstone/east, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) @@ -12414,7 +12414,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "fYG" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/east_caves) "fZO" = ( @@ -12778,7 +12778,7 @@ /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/west_caves) "gRm" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/barrens/south_eastern_barrens) "gRx" = ( @@ -12853,7 +12853,7 @@ /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/south_east_caves) "gWI" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) "gXu" = ( @@ -13325,14 +13325,14 @@ /turf/open/floor/plating/platingdmg1, /area/lv624/lazarus/secure_storage) "hTR" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_east_caves) "hUs" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) "hUD" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/caves/sand_temple) "hUK" = ( @@ -13344,7 +13344,7 @@ /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/river/east_river) "hWZ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/river, /area/lv624/ground/river/central_river) "hXt" = ( @@ -13513,7 +13513,7 @@ /obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ pixel_x = 8 }, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_west_caves) "ilO" = ( @@ -13770,7 +13770,7 @@ /turf/open/floor/strata/grey_multi_tiles, /area/lv624/ground/caves/sand_temple) "iSg" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) "iTQ" = ( @@ -14020,7 +14020,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) "jxR" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_barrens) "jzh" = ( @@ -14531,7 +14531,7 @@ /turf/open/floor/dark, /area/lv624/lazarus/engineering) "kyN" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) "kza" = ( @@ -15002,7 +15002,7 @@ /turf/open/floor/dark, /area/lv624/lazarus/engineering) "lAv" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/platform_decoration/stone/runed_sandstone/east, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/caves/sand_temple) @@ -15239,7 +15239,7 @@ /turf/open/floor/warning/northeast, /area/lv624/lazarus/landing_zones/lz2) "lUc" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) "lUy" = ( @@ -15546,7 +15546,7 @@ /turf/open/floor/whiteblue/northwest, /area/lv624/lazarus/corporate_dome) "mxd" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/lazarus/quartstorage/outdoors) "mxW" = ( @@ -15801,7 +15801,7 @@ /turf/open/floor/plating/asteroidwarning, /area/lv624/lazarus/landing_zones/lz2) "ndk" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/west_caves) "ndK" = ( @@ -15899,7 +15899,7 @@ /area/lv624/ground/barrens/south_eastern_barrens) "npQ" = ( /obj/structure/flora/jungle/vines/heavy, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_jungle) "nqt" = ( @@ -16282,7 +16282,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) "nVG" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) "nWe" = ( @@ -16608,7 +16608,7 @@ /turf/open/gm/coast/west, /area/lv624/ground/barrens/east_barrens) "oER" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) "oFf" = ( @@ -17031,7 +17031,7 @@ /turf/open/gm/coast/beachcorner/south_west, /area/lv624/ground/river/central_river) "pxs" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) "pyG" = ( @@ -17076,7 +17076,7 @@ /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "pBk" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) "pBH" = ( @@ -17214,7 +17214,7 @@ /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/north_west_caves) "pMM" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/east_jungle) "pMV" = ( @@ -17473,7 +17473,7 @@ /turf/open/gm/dirt, /area/lv624/ground/jungle/east_jungle) "qnQ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_east_jungle) "qpX" = ( @@ -17571,7 +17571,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/caves/sand_temple) "qAu" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) "qAP" = ( @@ -17624,7 +17624,7 @@ /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "qGH" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) "qGK" = ( @@ -17648,7 +17648,7 @@ /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) "qJe" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt, /area/lv624/ground/jungle/north_west_jungle) "qJg" = ( @@ -17703,7 +17703,7 @@ /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz2) "qPx" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) "qPY" = ( @@ -18500,7 +18500,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) "sxa" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) "sxl" = ( @@ -18578,7 +18578,7 @@ /area/lv624/lazarus/landing_zones/lz1) "sCX" = ( /obj/structure/flora/jungle/vines/light_1, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) "sDE" = ( @@ -18731,7 +18731,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/east_jungle) "sSE" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/lazarus/quartstorage/outdoors) "sTB" = ( @@ -19238,7 +19238,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) "tMh" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) @@ -19306,7 +19306,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/south_east_caves) "tSN" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) "tTh" = ( @@ -19382,7 +19382,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) "ubb" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/river, /area/lv624/ground/river/central_river) "ubJ" = ( @@ -20153,7 +20153,7 @@ /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) "vGj" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/effect/decal/grass_overlay/grass1/inner{ dir = 10 }, @@ -20561,7 +20561,7 @@ /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/north_east_jungle) "wty" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_west_caves) "wvO" = ( @@ -20584,7 +20584,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) "wzI" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) "wAF" = ( @@ -20862,7 +20862,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/west_central_jungle) "wXy" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "wYp" = ( @@ -20995,7 +20995,7 @@ /area/lv624/lazarus/landing_zones/lz2) "xsN" = ( /obj/structure/flora/jungle/vines/light_1, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "xuk" = ( diff --git a/maps/map_files/LV624/centralcaves/10.T.dmm b/maps/map_files/LV624/centralcaves/10.T.dmm index 09af40a6e0eb..57df1c007e1c 100644 --- a/maps/map_files/LV624/centralcaves/10.T.dmm +++ b/maps/map_files/LV624/centralcaves/10.T.dmm @@ -185,7 +185,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "Z" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) diff --git a/maps/map_files/LV624/centralcaves/10.qc.dmm b/maps/map_files/LV624/centralcaves/10.qc.dmm index 6245715951fd..7b949f04d6e9 100644 --- a/maps/map_files/LV624/centralcaves/10.qc.dmm +++ b/maps/map_files/LV624/centralcaves/10.qc.dmm @@ -79,7 +79,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) "pd" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) "pC" = ( @@ -218,7 +218,7 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "Oe" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "Pd" = ( diff --git a/maps/map_files/LV624/maintemple/2.flooded.dmm b/maps/map_files/LV624/maintemple/2.flooded.dmm index c5dd5b3fca48..6b6ea469586d 100644 --- a/maps/map_files/LV624/maintemple/2.flooded.dmm +++ b/maps/map_files/LV624/maintemple/2.flooded.dmm @@ -365,7 +365,7 @@ /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/caves/sand_temple) "iN" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/caves/sand_temple) "iU" = ( @@ -1047,7 +1047,7 @@ /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/caves/sand_temple) "Fx" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/platform_decoration/stone/runed_sandstone/east, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/caves/sand_temple) diff --git a/maps/map_files/LV624/standalone/leftsidepass.dmm b/maps/map_files/LV624/standalone/leftsidepass.dmm index 0b90931f2fd3..63c0d573a0e2 100644 --- a/maps/map_files/LV624/standalone/leftsidepass.dmm +++ b/maps/map_files/LV624/standalone/leftsidepass.dmm @@ -29,7 +29,7 @@ /turf/open/gm/coast/beachcorner/north_west, /area/lv624/ground/river/west_river) "aj" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/river, /area/lv624/ground/river/west_river) "al" = ( diff --git a/maps/map_files/LV624/standalone/lv-bridge-east.dmm b/maps/map_files/LV624/standalone/lv-bridge-east.dmm index 09f938cadc91..5ae6a32f6d10 100644 --- a/maps/map_files/LV624/standalone/lv-bridge-east.dmm +++ b/maps/map_files/LV624/standalone/lv-bridge-east.dmm @@ -253,7 +253,7 @@ /turf/open/gm/river, /area/lv624/ground/river/central_river) "Ir" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/river, /area/lv624/ground/river/central_river) "Jl" = ( diff --git a/maps/map_files/LV624/standalone/rightsidepass.dmm b/maps/map_files/LV624/standalone/rightsidepass.dmm index e7ce416997f0..32b79a4f3ef6 100644 --- a/maps/map_files/LV624/standalone/rightsidepass.dmm +++ b/maps/map_files/LV624/standalone/rightsidepass.dmm @@ -111,7 +111,7 @@ /turf/open/gm/dirt/desert2, /area/lv624/ground/river/east_river) "zT" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) "Cf" = ( diff --git a/maps/map_files/LV624/standalone/sandtemple-jungle.dmm b/maps/map_files/LV624/standalone/sandtemple-jungle.dmm index 9e51f09fb628..9e0a4033d3d2 100644 --- a/maps/map_files/LV624/standalone/sandtemple-jungle.dmm +++ b/maps/map_files/LV624/standalone/sandtemple-jungle.dmm @@ -29,7 +29,7 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "gb" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) "hq" = ( diff --git a/maps/map_files/LV624/standalone/sandtemple-se.dmm b/maps/map_files/LV624/standalone/sandtemple-se.dmm index 7e1db79bab61..6a882fe04c4b 100644 --- a/maps/map_files/LV624/standalone/sandtemple-se.dmm +++ b/maps/map_files/LV624/standalone/sandtemple-se.dmm @@ -8,7 +8,7 @@ /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/south_east_jungle) "br" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/floor/sandstone/runed, /area/lv624/ground/jungle/south_east_jungle) "cC" = ( diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm index 0cbf9c9a9e30..71943089fa40 100644 --- a/maps/map_files/New_Varadero/New_Varadero.dmm +++ b/maps/map_files/New_Varadero/New_Varadero.dmm @@ -537,7 +537,7 @@ /turf/open/gm/dirt, /area/varadero/exterior/lz1_near) "awr" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt/desert0, /area/varadero/exterior/lz1_near) "awu" = ( @@ -3655,7 +3655,7 @@ /turf/open/floor/plating/icefloor/asteroidplating, /area/varadero/interior/comms2) "cSa" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers{ +/obj/structure/flora/bush/ausbushes/ywflowers{ icon_state = "ywflowers_3" }, /turf/open/gm/grass/grass1/weedable, @@ -7248,7 +7248,7 @@ /turf/open/floor/shiva/blue, /area/varadero/interior/administration) "fPp" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers{ +/obj/structure/flora/bush/ausbushes/ywflowers{ icon_state = "ywflowers_2" }, /turf/open/gm/grass/grass1/weedable, @@ -8233,7 +8233,7 @@ /turf/open/floor/wood, /area/varadero/interior/hall_SE) "gCQ" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/machinery/storm_siren{ pixel_y = 5 }, @@ -9256,7 +9256,7 @@ /turf/open/floor/shiva/purplefull/west, /area/varadero/interior/research) "hyT" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers{ +/obj/structure/flora/bush/ausbushes/ywflowers{ icon_state = "ywflowers_4" }, /turf/open/gm/grass/grass1/weedable, @@ -11396,7 +11396,7 @@ /turf/open/floor/shiva/wredfull, /area/varadero/interior/medical) "jgV" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/sand_white/layer1, /area/varadero/interior/caves/north_research) "jgY" = ( @@ -12181,7 +12181,7 @@ /turf/open/floor/shiva/purple/northwest, /area/varadero/interior/research) "jNn" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt, /area/varadero/exterior/eastbeach) "jNE" = ( @@ -15682,7 +15682,7 @@ /turf/open/floor/shiva/yellow/north, /area/varadero/interior/cargo) "mJe" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior/caves/north_research) "mJh" = ( @@ -17930,7 +17930,7 @@ /turf/open/floor/shiva/floor3, /area/varadero/interior/hall_SE) "oDB" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /obj/structure/machinery/storm_siren{ pixel_y = 5 }, @@ -21895,7 +21895,7 @@ /turf/open/floor/shiva/redfull/west, /area/varadero/interior/hall_SE) "rBq" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt, /area/varadero/exterior/lz2_near) "rBJ" = ( @@ -22455,7 +22455,7 @@ /turf/open/floor/shiva/north, /area/varadero/interior/research) "rWN" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/grass/grass1/weedable, /area/varadero/interior_protected/caves/central) "rXf" = ( @@ -25317,7 +25317,7 @@ /turf/open/floor/plating/icefloor/asteroidplating, /area/varadero/exterior/eastbeach) "upH" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt, /area/varadero/exterior/pontoon_beach) "upL" = ( @@ -29361,7 +29361,7 @@ /turf/open/shuttle/elevator/grating, /area/varadero/interior/hall_N) "xzc" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/gm/dirt/desert0, /area/varadero/exterior/pontoon_beach) "xzd" = ( diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index 927aa971785a..2bab37c4e3f1 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -12979,7 +12979,7 @@ /turf/open/floor/strata/floor3/east, /area/strata/ug/interior/outpost/platform) "btK" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer0_mud, /area/strata/ug/interior/outpost/platform) "btL" = ( @@ -12995,7 +12995,7 @@ /turf/open/asphalt/cement/cement15, /area/strata/ug/interior/outpost/platform) "btO" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/platform/east) "btT" = ( @@ -14845,7 +14845,7 @@ /turf/open/floor/strata/floor3, /area/strata/ag/interior/mining_outpost/canteen) "bLz" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/outpost/platform) "bLB" = ( @@ -16482,7 +16482,7 @@ /turf/open/floor/strata/floor2, /area/strata/ag/interior/outpost/engi/drome) "chz" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ag/exterior/jungle/carplake_center) "chB" = ( @@ -33869,7 +33869,7 @@ /turf/open/floor/strata/multi_tiles/southeast, /area/strata/ug/interior/jungle/tearlake) "yjl" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/platform_decoration/metal/strata/north, /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/auto_turf/strata_grass/layer0, diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index e330f157eafd..6bd7254aedc6 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -1199,7 +1199,7 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_a_s) "ahN" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/obj/structure/flora/bush/ausbushes/ywflowers, /turf/open/floor/grass, /area/almayer/living/starboard_garden) "ahR" = ( @@ -1587,7 +1587,7 @@ /turf/open/floor/almayer/plate, /area/almayer/living/starboard_garden) "alg" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/bed/chair{ dir = 4 }, @@ -1832,7 +1832,7 @@ /turf/open/floor/plating/almayer/no_build, /area/almayer/stair_clone) "anp" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass/grass1, /area/almayer/medical/upper_medical) "anq" = ( @@ -5273,7 +5273,7 @@ /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) "aIx" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/floor/grass, /area/almayer/living/starboard_garden) "aIy" = ( @@ -52386,7 +52386,7 @@ /turf/open/floor/almayer/sterile_green_side/southwest, /area/almayer/medical/lower_medical_medbay) "rGc" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/machinery/status_display{ pixel_x = -32 }, diff --git a/maps/shuttles/lifeboat-port-archive.dmm b/maps/shuttles/lifeboat-port-archive.dmm index 12e5e35d3c6e..910d3ee1dcbc 100644 --- a/maps/shuttles/lifeboat-port-archive.dmm +++ b/maps/shuttles/lifeboat-port-archive.dmm @@ -293,7 +293,7 @@ /turf/closed/shuttle/lifeboat, /area/shuttle/lifeboat) "Jg" = ( -/turf/open/shuttle/escapepod/floor8, +/turf/open/shuttle/escapepod/floor1/east, /area/shuttle/lifeboat) "Jw" = ( /turf/closed/shuttle/lifeboat{ diff --git a/maps/shuttles/lifeboat-starboard-archive.dmm b/maps/shuttles/lifeboat-starboard-archive.dmm index 8d7d7a9f8485..fa802940fc03 100644 --- a/maps/shuttles/lifeboat-starboard-archive.dmm +++ b/maps/shuttles/lifeboat-starboard-archive.dmm @@ -414,7 +414,7 @@ }, /area/shuttle/lifeboat) "VZ" = ( -/turf/open/shuttle/escapepod/floor8, +/turf/open/shuttle/escapepod/floor1/east, /area/shuttle/lifeboat) "Xj" = ( /turf/closed/shuttle/lifeboat{ diff --git a/maps/shuttles/trijentshuttle2.dmm b/maps/shuttles/trijentshuttle2.dmm index 7947f6824e7f..a273e120960c 100644 --- a/maps/shuttles/trijentshuttle2.dmm +++ b/maps/shuttles/trijentshuttle2.dmm @@ -1,18 +1,21 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod/north, /area/shuttle/trijent_shuttle/elevator) "b" = ( -/turf/open/shuttle/escapepod/floor8, +/turf/open/shuttle/escapepod/floor1/east, /area/shuttle/trijent_shuttle/elevator) "c" = ( -/turf/open/shuttle/escapepod/floor9, +/turf/open/shuttle/escapepod/floor2/west, /area/shuttle/trijent_shuttle/elevator) "d" = ( /turf/closed/shuttle/elevator{ dir = 8 }, /area/shuttle/trijent_shuttle/elevator) +"e" = ( +/turf/open/shuttle/escapepod/floor2, +/area/shuttle/trijent_shuttle/elevator) "h" = ( /obj/docking_port/mobile/trijent_elevator, /turf/closed/shuttle/elevator{ @@ -52,7 +55,7 @@ icon_state = "E"; dir = 1 }, -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod/north, /area/shuttle/trijent_shuttle/elevator) "q" = ( /turf/closed/shuttle/elevator/freight, @@ -95,7 +98,7 @@ pixel_x = 9; pixel_y = 8 }, -/turf/open/shuttle/escapepod/floor11, +/turf/open/shuttle/escapepod/floor1/west, /area/shuttle/trijent_shuttle/elevator) "A" = ( /turf/closed/shuttle/elevator{ @@ -107,7 +110,7 @@ icon_state = "E"; dir = 1 }, -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod/north, /area/shuttle/trijent_shuttle/elevator) "I" = ( /obj/item/tool/crowbar/red{ @@ -118,7 +121,7 @@ pixel_x = 1; pixel_y = 10 }, -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod/north, /area/shuttle/trijent_shuttle/elevator) "J" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ @@ -137,10 +140,10 @@ pixel_y = 8 }, /obj/item/circuitboard/apc, -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod/floor2/east, /area/shuttle/trijent_shuttle/elevator) "Q" = ( -/turf/open/shuttle/escapepod/floor11, +/turf/open/shuttle/escapepod/floor1/west, /area/shuttle/trijent_shuttle/elevator) "R" = ( /obj/structure/bed/chair/dropship/passenger, @@ -161,7 +164,7 @@ icon_state = "E"; dir = 1 }, -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod/north, /area/shuttle/trijent_shuttle/elevator) "V" = ( /turf/closed/shuttle/elevator{ @@ -169,10 +172,10 @@ }, /area/shuttle/trijent_shuttle/elevator) "W" = ( -/turf/open/shuttle/escapepod/floor12, +/turf/open/shuttle/escapepod/floor2/east, /area/shuttle/trijent_shuttle/elevator) "Y" = ( -/turf/open/shuttle/escapepod/floor7, +/turf/open/shuttle/escapepod/floor0/east, /area/shuttle/trijent_shuttle/elevator) (1,1,1) = {" @@ -212,7 +215,7 @@ u P Q b -a +e s "} (6,1,1) = {" diff --git a/maps/templates/lazy_templates/clf_ert_station.dmm b/maps/templates/lazy_templates/clf_ert_station.dmm index b3cccf7f03cd..3e249cae2dcd 100644 --- a/maps/templates/lazy_templates/clf_ert_station.dmm +++ b/maps/templates/lazy_templates/clf_ert_station.dmm @@ -754,7 +754,7 @@ /turf/open/floor/sandstone/runed, /area/adminlevel/ert_station/clf_station) "ug" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/dirt, /area/adminlevel/ert_station/clf_station) "un" = ( @@ -815,7 +815,7 @@ /area/adminlevel/ert_station/clf_station) "vy" = ( /obj/structure/platform/metal/kutjevo, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/flora/bush/ausbushes/grassybush{ icon_state = "fullgrass_1" }, @@ -1083,7 +1083,7 @@ /turf/open/auto_turf/strata_grass/layer1, /area/adminlevel/ert_station/clf_station) "CQ" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/gm/grass, /area/adminlevel/ert_station/clf_station) "Dn" = ( @@ -1473,7 +1473,7 @@ /turf/open/auto_turf/strata_grass/layer0, /area/adminlevel/ert_station/clf_station) "ON" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /obj/structure/flora/grass/tallgrass/jungle, /turf/open/auto_turf/strata_grass/layer1, /area/adminlevel/ert_station/clf_station) @@ -1693,7 +1693,7 @@ /obj/structure/flora/bush/ausbushes/grassybush{ icon_state = "fullgrass_1" }, -/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/flora/bush/ausbushes/var3/ppflowers, /turf/open/auto_turf/strata_grass/layer0_mud_alt, /area/adminlevel/ert_station/clf_station) "We" = ( diff --git a/tools/UpdatePaths/Scripts/7659-expanded-missing-icons.txt b/tools/UpdatePaths/Scripts/7659-expanded-missing-icons.txt new file mode 100644 index 000000000000..88e83bb5648f --- /dev/null +++ b/tools/UpdatePaths/Scripts/7659-expanded-missing-icons.txt @@ -0,0 +1,10 @@ +/obj/structure/flora/bush/ausbushes/ppflowers : /obj/structure/flora/bush/ausbushes/var3/ppflowers{@OLD} +/obj/structure/flora/bush/ausbushes/var3/ywflowers : /obj/structure/flora/bush/ausbushes/ywflowers{@OLD} +/turf/open/shuttle/escapepod/floor5 : /turf/open/shuttle/escapepod/floor1/north +/turf/open/shuttle/escapepod/floor9 : /turf/open/shuttle/escapepod/floor2/west +/turf/open/shuttle/escapepod/floor7 : /turf/open/shuttle/escapepod/floor0/east +/turf/open/shuttle/escapepod/floor12 : /turf/open/shuttle/escapepod/floor2/east +/turf/open/shuttle/escapepod/floor6 : /turf/open/shuttle/escapepod/floor0/north +/turf/open/shuttle/escapepod/floor11 : /turf/open/shuttle/escapepod/floor1/west +/turf/open/shuttle/escapepod/floor8 : /turf/open/shuttle/escapepod/floor1/east +/turf/open/shuttle/escapepod/floor10 : /turf/open/shuttle/escapepod/floor0/west \ No newline at end of file