diff --git a/code/controllers/subsystems/chat.dm b/code/controllers/subsystems/chat.dm index 3afbcae374..3fda63b5aa 100644 --- a/code/controllers/subsystems/chat.dm +++ b/code/controllers/subsystems/chat.dm @@ -54,17 +54,12 @@ SUBSYSTEM_DEF(chat) var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible if(!C) - return - - if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file. - //Send it to the old style output window. + continue // No client? No care. + else if(C.chatOutput.broken) DIRECT_OUTPUT(C, original_message) continue - - // // Client still loading, put their messages in a queue - Actually don't, logged already in database. - // if(!C.chatOutput.loaded && C.chatOutput.message_queue && islist(C.chatOutput.message_queue)) - // C.chatOutput.message_queue[++C.chatOutput.message_queue.len] = messageStruct - // continue + else if(!C.chatOutput.loaded) + continue // If not loaded yet, do nothing and history-sending on load will get it. LAZYINITLIST(msg_queue[C]) msg_queue[C][++msg_queue[C].len] = messageStruct @@ -72,16 +67,12 @@ SUBSYSTEM_DEF(chat) var/client/C = CLIENT_FROM_VAR(target) //Grab us a client if possible if(!C) - return - - if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file. + return // No client? No care. + else if(C.chatOutput.broken) DIRECT_OUTPUT(C, original_message) return - - // // Client still loading, put their messages in a queue - Actually don't, logged already in database. - // if(!C.chatOutput.loaded && C.chatOutput.message_queue && islist(C.chatOutput.message_queue)) - // C.chatOutput.message_queue[++C.chatOutput.message_queue.len] = messageStruct - // return + else if(!C.chatOutput.loaded) + return // If not loaded yet, do nothing and history-sending on load will get it. LAZYINITLIST(msg_queue[C]) msg_queue[C][++msg_queue[C].len] = messageStruct diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 70ea20a378..8608cb8ce1 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -53,7 +53,7 @@ var/list/flooring_types icon_base = "grass" has_base_range = 1 damage_temperature = T0C+80 - flags = TURF_HAS_EDGES | TURF_REMOVE_SHOVEL + flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_SHOVEL build_type = /obj/item/stack/tile/grass footstep_sounds = list("human" = list( 'sound/effects/footstep/grass1.ogg', diff --git a/code/game/turfs/simulated/floor_types_eris.dm b/code/game/turfs/simulated/floor_types_eris.dm new file mode 100644 index 0000000000..f7ccae4511 --- /dev/null +++ b/code/game/turfs/simulated/floor_types_eris.dm @@ -0,0 +1,980 @@ + +//////////////////////////// +/// ERIS FLOOR DECLS /////// +//////////////////////////// + +/decl/flooring/tiling/eris + name = "floor" + desc = "Scuffed from the passage of countless greyshirts." + icon = 'icons/turf/flooring/eris/tiles.dmi' + icon_base = "tiles" + has_damage_range = 2 + damage_temperature = T0C+1400 + flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_CROWBAR | TURF_CAN_BREAK + build_type = /obj/item/stack/tile/floor/eris + can_paint = 1 + +/decl/flooring/tiling/eris/steel + name = "steel floor" + icon_base = "tiles" + icon = 'icons/turf/flooring/eris/tiles_steel.dmi' + build_type = /obj/item/stack/tile/floor/eris/steel + //footstep_sound = "floor" + +/decl/flooring/tiling/eris/steel/panels + icon_base = "panels" + build_type = /obj/item/stack/tile/floor/eris/steel/panels + +/decl/flooring/tiling/eris/steel/techfloor + icon_base = "techfloor" + build_type = /obj/item/stack/tile/floor/eris/steel/techfloor + +/decl/flooring/tiling/eris/steel/techfloor_grid + icon_base = "techfloor_grid" + build_type = /obj/item/stack/tile/floor/eris/steel/techfloor_grid + +/decl/flooring/tiling/eris/steel/brown_perforated + icon_base = "brown_perforated" + build_type = /obj/item/stack/tile/floor/eris/steel/brown_perforated + +/decl/flooring/tiling/eris/steel/gray_perforated + icon_base = "gray_perforated" + build_type = /obj/item/stack/tile/floor/eris/steel/gray_perforated + +/decl/flooring/tiling/eris/steel/cargo + icon_base = "cargo" + build_type = /obj/item/stack/tile/floor/eris/steel/cargo + +/decl/flooring/tiling/eris/steel/brown_platform + icon_base = "brown_platform" + build_type = /obj/item/stack/tile/floor/eris/steel/brown_platform + +/decl/flooring/tiling/eris/steel/gray_platform + icon_base = "gray_platform" + build_type = /obj/item/stack/tile/floor/eris/steel/gray_platform + +/decl/flooring/tiling/eris/steel/danger + icon_base = "danger" + build_type = /obj/item/stack/tile/floor/eris/steel/danger + +/decl/flooring/tiling/eris/steel/golden + icon_base = "golden" + build_type = /obj/item/stack/tile/floor/eris/steel/golden + +/decl/flooring/tiling/eris/steel/bluecorner + icon_base = "bluecorner" + build_type = /obj/item/stack/tile/floor/eris/steel/bluecorner + +/decl/flooring/tiling/eris/steel/orangecorner + icon_base = "orangecorner" + build_type = /obj/item/stack/tile/floor/eris/steel/orangecorner + +/decl/flooring/tiling/eris/steel/cyancorner + icon_base = "cyancorner" + build_type = /obj/item/stack/tile/floor/eris/steel/cyancorner + +/decl/flooring/tiling/eris/steel/violetcorener + icon_base = "violetcorener" + build_type = /obj/item/stack/tile/floor/eris/steel/violetcorener + +/decl/flooring/tiling/eris/steel/monofloor + icon_base = "monofloor" + build_type = /obj/item/stack/tile/floor/eris/steel/monofloor + has_base_range = 15 + +/decl/flooring/tiling/eris/steel/bar_flat + name = "flat bar floor" + icon_base = "bar_flat" + build_type = /obj/item/stack/tile/floor/eris/steel/bar_flat + +/decl/flooring/tiling/eris/steel/bar_dance + name = "dancefloor" + icon_base = "bar_dance" + build_type = /obj/item/stack/tile/floor/eris/steel/bar_dance + +/decl/flooring/tiling/eris/steel/bar_light + name = "lit bar floor" + icon_base = "bar_light" + build_type = /obj/item/stack/tile/floor/eris/steel/bar_light + +/decl/flooring/tiling/eris/white + name = "white floor" + icon_base = "tiles" + icon = 'icons/turf/flooring/eris/tiles_white.dmi' + build_type = /obj/item/stack/tile/floor/eris/white + +/decl/flooring/tiling/eris/white/panels + icon_base = "panels" + build_type = /obj/item/stack/tile/floor/eris/white/panels + +/decl/flooring/tiling/eris/white/techfloor + icon_base = "techfloor" + build_type = /obj/item/stack/tile/floor/eris/white/techfloor + +/decl/flooring/tiling/eris/white/techfloor_grid + icon_base = "techfloor_grid" + build_type = /obj/item/stack/tile/floor/eris/white/techfloor_grid + +/decl/flooring/tiling/eris/white/brown_perforated + icon_base = "brown_perforated" + build_type = /obj/item/stack/tile/floor/eris/white/brown_perforated + +/decl/flooring/tiling/eris/white/gray_perforated + icon_base = "gray_perforated" + build_type = /obj/item/stack/tile/floor/eris/white/gray_perforated + +/decl/flooring/tiling/eris/white/cargo + icon_base = "cargo" + build_type = /obj/item/stack/tile/floor/eris/white/cargo + +/decl/flooring/tiling/eris/white/brown_platform + icon_base = "brown_platform" + build_type = /obj/item/stack/tile/floor/eris/white/brown_platform + +/decl/flooring/tiling/eris/white/gray_platform + icon_base = "gray_platform" + build_type = /obj/item/stack/tile/floor/eris/white/gray_platform + +/decl/flooring/tiling/eris/white/danger + icon_base = "danger" + build_type = /obj/item/stack/tile/floor/eris/white/danger + +/decl/flooring/tiling/eris/white/golden + icon_base = "golden" + build_type = /obj/item/stack/tile/floor/eris/white/golden + +/decl/flooring/tiling/eris/white/bluecorner + icon_base = "bluecorner" + build_type = /obj/item/stack/tile/floor/eris/white/bluecorner + +/decl/flooring/tiling/eris/white/orangecorner + icon_base = "orangecorner" + build_type = /obj/item/stack/tile/floor/eris/white/orangecorner + +/decl/flooring/tiling/eris/white/cyancorner + icon_base = "cyancorner" + build_type = /obj/item/stack/tile/floor/eris/white/cyancorner + +/decl/flooring/tiling/eris/white/violetcorener + icon_base = "violetcorener" + build_type = /obj/item/stack/tile/floor/eris/white/violetcorener + +/decl/flooring/tiling/eris/white/monofloor + icon_base = "monofloor" + build_type = /obj/item/stack/tile/floor/eris/white/monofloor + has_base_range = 15 + +/decl/flooring/tiling/eris/dark + name = "dark floor" + icon_base = "tiles" + icon = 'icons/turf/flooring/eris/tiles_dark.dmi' + build_type = /obj/item/stack/tile/floor/eris/dark + //footstep_sound = "floor" + +/decl/flooring/tiling/eris/dark/panels + icon_base = "panels" + build_type = /obj/item/stack/tile/floor/eris/dark/panels + +/decl/flooring/tiling/eris/dark/techfloor + icon_base = "techfloor" + build_type = /obj/item/stack/tile/floor/eris/dark/techfloor + +/decl/flooring/tiling/eris/dark/techfloor_grid + icon_base = "techfloor_grid" + build_type = /obj/item/stack/tile/floor/eris/dark/techfloor_grid + +/decl/flooring/tiling/eris/dark/brown_perforated + icon_base = "brown_perforated" + build_type = /obj/item/stack/tile/floor/eris/dark/brown_perforated + +/decl/flooring/tiling/eris/dark/gray_perforated + icon_base = "gray_perforated" + build_type = /obj/item/stack/tile/floor/eris/dark/gray_perforated + +/decl/flooring/tiling/eris/dark/cargo + icon_base = "cargo" + build_type = /obj/item/stack/tile/floor/eris/dark/cargo + +/decl/flooring/tiling/eris/dark/brown_platform + icon_base = "brown_platform" + build_type = /obj/item/stack/tile/floor/eris/dark/brown_platform + +/decl/flooring/tiling/eris/dark/gray_platform + icon_base = "gray_platform" + build_type = /obj/item/stack/tile/floor/eris/dark/gray_platform + +/decl/flooring/tiling/eris/dark/danger + icon_base = "danger" + build_type = /obj/item/stack/tile/floor/eris/dark/danger + +/decl/flooring/tiling/eris/dark/golden + icon_base = "golden" + build_type = /obj/item/stack/tile/floor/eris/dark/golden + +/decl/flooring/tiling/eris/dark/bluecorner + icon_base = "bluecorner" + build_type = /obj/item/stack/tile/floor/eris/dark/bluecorner + +/decl/flooring/tiling/eris/dark/orangecorner + icon_base = "orangecorner" + build_type = /obj/item/stack/tile/floor/eris/dark/orangecorner + +/decl/flooring/tiling/eris/dark/cyancorner + icon_base = "cyancorner" + build_type = /obj/item/stack/tile/floor/eris/dark/cyancorner + +/decl/flooring/tiling/eris/dark/violetcorener + icon_base = "violetcorener" + build_type = /obj/item/stack/tile/floor/eris/dark/violetcorener + +/decl/flooring/tiling/eris/dark/monofloor + icon_base = "monofloor" + build_type = /obj/item/stack/tile/floor/eris/dark/monofloor + has_base_range = 15 + +/decl/flooring/tiling/eris/cafe + name = "linoleum floor" + icon_base = "cafe" + icon = 'icons/turf/flooring/eris/tiles.dmi' + build_type = /obj/item/stack/tile/floor/eris/cafe + //footstep_sound = "floor" + +/decl/flooring/tiling/eris/techmaint + name = "techmaint floor" + icon_base = "techmaint" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + build_type = /obj/item/stack/tile/floor/eris/techmaint + //footstep_sound = "floor" + +/decl/flooring/tiling/eris/techmaint_perforated + name = "techmaint floor" + icon_base = "techmaint_perforated" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + build_type = /obj/item/stack/tile/floor/eris/techmaint/perforated + //footstep_sound = "floor" + +/decl/flooring/tiling/eris/techmaint_panels + name = "techmaint floor" + icon_base = "techmaint_panels" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + build_type = /obj/item/stack/tile/floor/eris/techmaint/panels + //footstep_sound = "floor" + +/decl/flooring/tiling/eris/techmaint_cargo + name = "techmaint floor" + icon_base = "techmaint_cargo" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + build_type = /obj/item/stack/tile/floor/eris/techmaint/cargo + //footstep_sound = "floor" + + +/////////////////////// +/// TILE OBJS /////// +/////////////////////// +/obj/item/stack/tile/floor/eris + icon = 'icons/turf/flooring/eris/tilestack.dmi' + +// Cafe +/obj/item/stack/tile/floor/eris/cafe + name = "cafe floor tile" + singular_name = "cafe floor tile" + desc = "A chekered pattern, an ancient style for a familiar feeling." + icon_state = "tile_cafe" + matter = list(MAT_PLASTIC = 1) + +// Techmaint +/obj/item/stack/tile/floor/eris/techmaint + name = "maint floor tile" + singular_name = "maint floor tile" + icon_state = "tile_techmaint" + matter = list(MAT_STEEL = 1) + +/obj/item/stack/tile/floor/eris/techmaint/perforated + name = "perforated maint floor tile" + singular_name = "perforated maint floor tile" + icon_state = "tile_techmaint_perforated" + +/obj/item/stack/tile/floor/eris/techmaint/panels + name = "panel maint floor tile" + singular_name = "panel maint floor tile" + icon_state = "tile_techmaint_panels" + +/obj/item/stack/tile/floor/eris/techmaint/cargo + name = "cargo maint floor tile" + singular_name = "cargo maint floor tile" + icon_state = "tile_techmaint_cargo" + +/* + * Steel + */ +/obj/item/stack/tile/floor/eris/steel + name = "steel floor tile" + singular_name = "steel floor tile" + icon_state = "tile_steel" + matter = list(MAT_STEEL = 1) + +/obj/item/stack/tile/floor/eris/steel/panels + name = "steel panel tile" + singular_name = "steel panel tile" + icon_state = "tile_steel_panels" + +/obj/item/stack/tile/floor/eris/steel/techfloor + name = "steel techfloor tile" + singular_name = "steel techfloor tile" + icon_state = "tile_steel_techfloor" + +/obj/item/stack/tile/floor/eris/steel/techfloor_grid + name = "steel techfloor tile with vents" + singular_name = "steel techfloor tile with vents" + icon_state = "tile_steel_techfloor_grid" + +/obj/item/stack/tile/floor/eris/steel/brown_perforated + name = "steel brown perforated tile" + singular_name = "steel brown perforated tile" + icon_state = "tile_steel_brownperforated" + +/obj/item/stack/tile/floor/eris/steel/gray_perforated + name = "steel gray perforated tile" + singular_name = "steel gray perforated tile" + icon_state = "tile_steel_grayperforated" + +/obj/item/stack/tile/floor/eris/steel/cargo + name = "steel cargo tile" + singular_name = "steel cargo tile" + icon_state = "tile_steel_cargo" + +/obj/item/stack/tile/floor/eris/steel/brown_platform + name = "steel brown platform tile" + singular_name = "steel brown platform tile" + icon_state = "tile_steel_brownplatform" + +/obj/item/stack/tile/floor/eris/steel/gray_platform + name = "steel gray platform tile" + singular_name = "steel gray platform tile" + icon_state = "tile_steel_grayplatform" + +/obj/item/stack/tile/floor/eris/steel/danger + name = "steel danger tile" + singular_name = "steel danger tile" + icon_state = "tile_steel_danger" + +/obj/item/stack/tile/floor/eris/steel/golden + name = "steel golden tile" + singular_name = "steel golden tile" + icon_state = "tile_steel_golden" + +/obj/item/stack/tile/floor/eris/steel/bluecorner + name = "steel blue corner tile" + singular_name = "steel blue corner tile" + icon_state = "tile_steel_bluecorner" + +/obj/item/stack/tile/floor/eris/steel/orangecorner + name = "steel orange corner tile" + singular_name = "steel orange corner tilee" + icon_state = "tile_steel_orangecorner" + +/obj/item/stack/tile/floor/eris/steel/cyancorner + name = "steel cyan corner tile" + singular_name = "steel cyan corner tile" + icon_state = "tile_steel_cyancorner" + +/obj/item/stack/tile/floor/eris/steel/violetcorener + name = "steel violet corener tile" + singular_name = "steel violet corener tile" + icon_state = "tile_steel_violetcorener" + +/obj/item/stack/tile/floor/eris/steel/monofloor + name = "steel monofloor tile" + singular_name = "steel monofloor tile" + icon_state = "tile_steel_monofloor" + +/obj/item/stack/tile/floor/eris/steel/bar_flat + name = "steel bar flat tile" + singular_name = "steel bar flat tile" + icon_state = "tile_steel_bar_flat" + +/obj/item/stack/tile/floor/eris/steel/bar_dance + name = "steel bar dance tile" + singular_name = "steel bar dance tile" + icon_state = "tile_steel_bar_dance" + +/obj/item/stack/tile/floor/eris/steel/bar_light + name = "steel bar light tile" + singular_name = "steel bar light tile" + icon_state = "tile_steel_bar_light" + +/* + * Plastic + */ +/obj/item/stack/tile/floor/eris/white + name = "white floor tile" + singular_name = "white floor tile" + desc = "Appears to be made out of a lighter mat." + icon_state = "tile_white" + matter = list(MAT_PLASTIC = 1) + +/obj/item/stack/tile/floor/eris/white/panels + name = "white panel tile" + singular_name = "white panel tile" + icon_state = "tile_white_panels" + +/obj/item/stack/tile/floor/eris/white/techfloor + name = "white techfloor tile" + singular_name = "white techfloor tile" + icon_state = "tile_white_techfloor" + +/obj/item/stack/tile/floor/eris/white/techfloor_grid + name = "white techfloor tile with vents" + singular_name = "white techfloor tile with vents" + icon_state = "tile_white_techfloor_grid" + +/obj/item/stack/tile/floor/eris/white/brown_perforated + name = "white brown perforated tile" + singular_name = "white brown perforated tile" + icon_state = "tile_white_brownperforated" + +/obj/item/stack/tile/floor/eris/white/gray_perforated + name = "white gray perforated tile" + singular_name = "white gray perforated tile" + icon_state = "tile-white-grayperforated" + +/obj/item/stack/tile/floor/eris/white/cargo + name = "white cargo tile" + singular_name = "white cargo tile" + icon_state = "tile_white_cargo" + +/obj/item/stack/tile/floor/eris/white/brown_platform + name = "white brown platform tile" + singular_name = "white brown platform tile" + icon_state = "tile_white_brownplatform" + +/obj/item/stack/tile/floor/eris/white/gray_platform + name = "white gray platform tile" + singular_name = "white gray platform tile" + icon_state = "tile_white_grayplatform" + +/obj/item/stack/tile/floor/eris/white/danger + name = "white danger tile" + singular_name = "white danger tile" + icon_state = "tile_white_danger" + +/obj/item/stack/tile/floor/eris/white/golden + name = "white golden tile" + singular_name = "white golden tile" + icon_state = "tile_white_golden" + +/obj/item/stack/tile/floor/eris/white/bluecorner + name = "white blue corner tile" + singular_name = "white blue corner tile" + icon_state = "tile_white_bluecorner" + +/obj/item/stack/tile/floor/eris/white/orangecorner + name = "white orange corner tile" + singular_name = "white orange corner tilee" + icon_state = "tile_white_orangecorner" + +/obj/item/stack/tile/floor/eris/white/cyancorner + name = "white cyan corner tile" + singular_name = "white cyan corner tile" + icon_state = "tile_white_cyancorner" + +/obj/item/stack/tile/floor/eris/white/violetcorener + name = "white violet corener tile" + singular_name = "white violet corener tile" + icon_state = "tile_white_violetcorener" + +/obj/item/stack/tile/floor/eris/white/monofloor + name = "white monofloor tile" + singular_name = "white monofloor tile" + icon_state = "tile_white_monofloor" + +/* + * Steel + */ +/obj/item/stack/tile/floor/eris/dark + name = "dark floor tile" + singular_name = "dark floor tile" + icon_state = "tile_dark" + matter = list(MAT_STEEL = 1) + +/obj/item/stack/tile/floor/eris/dark/panels + name = "dark panel tile" + singular_name = "dark panel tile" + icon_state = "tile_dark_panels" + +/obj/item/stack/tile/floor/eris/dark/techfloor + name = "dark techfloor tile" + singular_name = "dark techfloor tile" + icon_state = "tile_dark_techfloor" + +/obj/item/stack/tile/floor/eris/dark/techfloor_grid + name = "dark techfloor tile with vents" + singular_name = "dark techfloor tile with vents" + icon_state = "tile_dark_techfloor_grid" + +/obj/item/stack/tile/floor/eris/dark/brown_perforated + name = "dark brown perforated tile" + singular_name = "dark brown perforated tile" + icon_state = "tile_dark_brownperforated" + +/obj/item/stack/tile/floor/eris/dark/gray_perforated + name = "dark gray perforated tile" + singular_name = "dark gray perforated tile" + icon_state = "tile_dark_grayperforated" + +/obj/item/stack/tile/floor/eris/dark/cargo + name = "dark cargo tile" + singular_name = "dark cargo tile" + icon_state = "tile_dark_cargo" + +/obj/item/stack/tile/floor/eris/dark/brown_platform + name = "dark brown platform tile" + singular_name = "dark brown platform tile" + icon_state = "tile_dark_brownplatform" + +/obj/item/stack/tile/floor/eris/dark/gray_platform + name = "dark gray platform tile" + singular_name = "dark gray platform tile" + icon_state = "tile_dark_grayplatform" + +/obj/item/stack/tile/floor/eris/dark/danger + name = "dark danger tile" + singular_name = "dark danger tile" + icon_state = "tile_dark_danger" + +/obj/item/stack/tile/floor/eris/dark/golden + name = "dark golden tile" + singular_name = "dark golden tile" + icon_state = "tile_dark_golden" + +/obj/item/stack/tile/floor/eris/dark/bluecorner + name = "dark blue corner tile" + singular_name = "dark blue corner tile" + icon_state = "tile_dark_bluecorner" + +/obj/item/stack/tile/floor/eris/dark/orangecorner + name = "dark orange corner tile" + singular_name = "dark orange corner tilee" + icon_state = "tile_dark_orangecorner" + +/obj/item/stack/tile/floor/eris/dark/cyancorner + name = "dark cyan corner tile" + singular_name = "dark cyan corner tile" + icon_state = "tile_dark_cyancorner" + +/obj/item/stack/tile/floor/eris/dark/violetcorener + name = "dark violet corener tile" + singular_name = "dark violet corener tile" + icon_state = "tile_dark_violetcorener" + +/obj/item/stack/tile/floor/eris/dark/monofloor + name = "dark monofloor tile" + singular_name = "dark monofloor tile" + icon_state = "tile_dark_monofloor" + + +/////////////////////// +/// PREMADE TURFS ///// +/////////////////////// +/turf/simulated/floor/tiled/eris + name = "floor" + icon = 'icons/turf/flooring/eris/tiles.dmi' + icon_state = "tiles" + initial_flooring = /decl/flooring/tiling/eris + + + +//Steel tiles +/turf/simulated/floor/tiled/eris/steel + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_steel.dmi' + icon_state = "tiles" + initial_flooring = /decl/flooring/tiling/eris/steel + +/turf/simulated/floor/tiled/eris/steel/panels + icon_state = "panels" + initial_flooring = /decl/flooring/tiling/eris/steel/panels + +/turf/simulated/floor/tiled/eris/steel/techfloor + icon_state = "techfloor" + initial_flooring = /decl/flooring/tiling/eris/steel/techfloor + +/turf/simulated/floor/tiled/eris/steel/techfloor_grid + icon_state = "techfloor_grid" + initial_flooring = /decl/flooring/tiling/eris/steel/techfloor_grid + +/turf/simulated/floor/tiled/eris/steel/brown_perforated + icon_state = "brown_perforated" + initial_flooring = /decl/flooring/tiling/eris/steel/brown_perforated + +/turf/simulated/floor/tiled/eris/steel/gray_perforated + icon_state = "gray_perforated" + initial_flooring = /decl/flooring/tiling/eris/steel/gray_perforated + +/turf/simulated/floor/tiled/eris/steel/cargo + icon_state = "cargo" + initial_flooring = /decl/flooring/tiling/eris/steel/cargo + +/turf/simulated/floor/tiled/eris/steel/brown_platform + icon_state = "brown_platform" + initial_flooring = /decl/flooring/tiling/eris/steel/brown_platform + +/turf/simulated/floor/tiled/eris/steel/gray_platform + icon_state = "gray_platform" + initial_flooring = /decl/flooring/tiling/eris/steel/gray_platform + +/turf/simulated/floor/tiled/eris/steel/danger + icon_state = "danger" + initial_flooring = /decl/flooring/tiling/eris/steel/danger + +/turf/simulated/floor/tiled/eris/steel/golden + icon_state = "golden" + initial_flooring = /decl/flooring/tiling/eris/steel/golden + +/turf/simulated/floor/tiled/eris/steel/bluecorner + icon_state = "bluecorner" + initial_flooring = /decl/flooring/tiling/eris/steel/bluecorner + +/turf/simulated/floor/tiled/eris/steel/orangecorner + icon_state = "orangecorner" + initial_flooring = /decl/flooring/tiling/eris/steel/orangecorner + +/turf/simulated/floor/tiled/eris/steel/cyancorner + icon_state = "cyancorner" + initial_flooring = /decl/flooring/tiling/eris/steel/cyancorner + +/turf/simulated/floor/tiled/eris/steel/violetcorener + icon_state = "violetcorener" + initial_flooring = /decl/flooring/tiling/eris/steel/violetcorener + +/turf/simulated/floor/tiled/eris/steel/monofloor + icon_state = "monofloor" + initial_flooring = /decl/flooring/tiling/eris/steel/monofloor + +/turf/simulated/floor/tiled/eris/steel/bar_flat + icon_state = "bar_flat" + initial_flooring = /decl/flooring/tiling/eris/steel/bar_flat + +/turf/simulated/floor/tiled/eris/steel/bar_dance + icon_state = "bar_dance" + initial_flooring = /decl/flooring/tiling/eris/steel/bar_dance + +/turf/simulated/floor/tiled/eris/steel/bar_light + icon_state = "bar_light" + initial_flooring = /decl/flooring/tiling/eris/steel/bar_light + +/turf/simulated/floor/tiled/eris/steel/bar_light/Initialize() + . = ..() + set_light(3,4,"#00AAFF") + + + +//White Tiles +/turf/simulated/floor/tiled/eris/white + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_white.dmi' + icon_state = "tiles" + initial_flooring = /decl/flooring/tiling/eris/white + +/turf/simulated/floor/tiled/eris/white/panels + icon_state = "panels" + initial_flooring = /decl/flooring/tiling/eris/white/panels + +/turf/simulated/floor/tiled/eris/white/techfloor + icon_state = "techfloor" + initial_flooring = /decl/flooring/tiling/eris/white/techfloor + +/turf/simulated/floor/tiled/eris/white/techfloor_grid + icon_state = "techfloor_grid" + initial_flooring = /decl/flooring/tiling/eris/white/techfloor_grid + +/turf/simulated/floor/tiled/eris/white/brown_perforated + icon_state = "brown_perforated" + initial_flooring = /decl/flooring/tiling/eris/white/brown_perforated + +/turf/simulated/floor/tiled/eris/white/gray_perforated + icon_state = "gray_perforated" + initial_flooring = /decl/flooring/tiling/eris/white/gray_perforated + +/turf/simulated/floor/tiled/eris/white/cargo + icon_state = "cargo" + initial_flooring = /decl/flooring/tiling/eris/white/cargo + +/turf/simulated/floor/tiled/eris/white/brown_platform + icon_state = "brown_platform" + initial_flooring = /decl/flooring/tiling/eris/white/brown_platform + +/turf/simulated/floor/tiled/eris/white/gray_platform + icon_state = "gray_platform" + initial_flooring = /decl/flooring/tiling/eris/white/gray_platform + +/turf/simulated/floor/tiled/eris/white/danger + icon_state = "danger" + initial_flooring = /decl/flooring/tiling/eris/white/danger + +/turf/simulated/floor/tiled/eris/white/golden + icon_state = "golden" + initial_flooring = /decl/flooring/tiling/eris/white/golden + +/turf/simulated/floor/tiled/eris/white/bluecorner + icon_state = "bluecorner" + initial_flooring = /decl/flooring/tiling/eris/white/bluecorner + +/turf/simulated/floor/tiled/eris/white/orangecorner + icon_state = "orangecorner" + initial_flooring = /decl/flooring/tiling/eris/white/orangecorner + +/turf/simulated/floor/tiled/eris/white/cyancorner + icon_state = "cyancorner" + initial_flooring = /decl/flooring/tiling/eris/white/cyancorner + +/turf/simulated/floor/tiled/eris/white/violetcorener + icon_state = "violetcorener" + initial_flooring = /decl/flooring/tiling/eris/white/violetcorener + +/turf/simulated/floor/tiled/eris/white/monofloor + icon_state = "monofloor" + initial_flooring = /decl/flooring/tiling/eris/white/monofloor + + + +// Dark Tiles +/turf/simulated/floor/tiled/eris/dark + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_dark.dmi' + icon_state = "tiles" + initial_flooring = /decl/flooring/tiling/eris/dark + +/turf/simulated/floor/tiled/eris/dark/panels + icon_state = "panels" + initial_flooring = /decl/flooring/tiling/eris/dark/panels + +/turf/simulated/floor/tiled/eris/dark/techfloor + icon_state = "techfloor" + initial_flooring = /decl/flooring/tiling/eris/dark/techfloor + +/turf/simulated/floor/tiled/eris/dark/techfloor_grid + icon_state = "techfloor_grid" + initial_flooring = /decl/flooring/tiling/eris/dark/techfloor_grid + +/turf/simulated/floor/tiled/eris/dark/brown_perforated + icon_state = "brown_perforated" + initial_flooring = /decl/flooring/tiling/eris/dark/brown_perforated + +/turf/simulated/floor/tiled/eris/dark/gray_perforated + icon_state = "gray_perforated" + initial_flooring = /decl/flooring/tiling/eris/dark/gray_perforated + +/turf/simulated/floor/tiled/eris/dark/cargo + icon_state = "cargo" + initial_flooring = /decl/flooring/tiling/eris/dark/cargo + +/turf/simulated/floor/tiled/eris/dark/brown_platform + icon_state = "brown_platform" + initial_flooring = /decl/flooring/tiling/eris/dark/brown_platform + +/turf/simulated/floor/tiled/eris/dark/gray_platform + icon_state = "gray_platform" + initial_flooring = /decl/flooring/tiling/eris/dark/gray_platform + +/turf/simulated/floor/tiled/eris/dark/danger + icon_state = "danger" + initial_flooring = /decl/flooring/tiling/eris/dark/danger + +/turf/simulated/floor/tiled/eris/dark/golden + icon_state = "golden" + initial_flooring = /decl/flooring/tiling/eris/dark/golden + +/turf/simulated/floor/tiled/eris/dark/bluecorner + icon_state = "bluecorner" + initial_flooring = /decl/flooring/tiling/eris/dark/bluecorner + +/turf/simulated/floor/tiled/eris/dark/orangecorner + icon_state = "orangecorner" + initial_flooring = /decl/flooring/tiling/eris/dark/orangecorner + +/turf/simulated/floor/tiled/eris/dark/cyancorner + icon_state = "cyancorner" + initial_flooring = /decl/flooring/tiling/eris/dark/cyancorner + +/turf/simulated/floor/tiled/eris/dark/violetcorener + icon_state = "violetcorener" + initial_flooring = /decl/flooring/tiling/eris/dark/violetcorener + +/turf/simulated/floor/tiled/eris/dark/monofloor + icon_state = "monofloor" + initial_flooring = /decl/flooring/tiling/eris/dark/monofloor + + + + +/turf/simulated/floor/tiled/eris/cafe + name = "floor" + icon = 'icons/turf/flooring/eris/tiles.dmi' + icon_state = "cafe" + initial_flooring = /decl/flooring/tiling/eris/cafe + +/turf/simulated/floor/tiled/eris/techmaint + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + icon_state = "techmaint" + initial_flooring = /decl/flooring/tiling/eris/techmaint + +/turf/simulated/floor/tiled/eris/techmaint_perforated + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + icon_state = "techmaint_perforated" + initial_flooring = /decl/flooring/tiling/eris/techmaint_perforated + +/turf/simulated/floor/tiled/eris/techmaint_panels + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + icon_state = "techmaint_panels" + initial_flooring = /decl/flooring/tiling/eris/techmaint_panels + +/turf/simulated/floor/tiled/eris/techmaint_cargo + name = "floor" + icon = 'icons/turf/flooring/eris/tiles_maint.dmi' + icon_state = "techmaint_cargo" + initial_flooring = /decl/flooring/tiling/eris/techmaint_cargo + +//=========ERIS GRASS==========\\ +/decl/flooring/grass/heavy + name = "heavy grass" + desc = "A dense ground coating of grass" + flags = TURF_REMOVE_SHOVEL + icon = 'icons/turf/outdoors.dmi' + icon_base = "grass-heavy" + has_base_range = 3 + +/turf/simulated/floor/outdoors/grass/heavy + name = "heavy grass" + icon_state = "grass-heavy0" + edge_blending_priority = 4 + initial_flooring = /decl/flooring/grass/heavy + turf_layers = list( + /turf/simulated/floor/outdoors/rocks, + /turf/simulated/floor/outdoors/dirt + ) + grass_chance = 40 + + grass_types = list( + /obj/structure/flora/ausbushes/sparsegrass, + /obj/structure/flora/ausbushes/fullgrass + ) + +//=========R. PLATING==========\\ +/decl/flooring/reinforced/plating + name = "reinforced plating" + descriptor = "reinforced plating" + icon = 'icons/turf/flooring/eris/plating.dmi' + icon_base = "plating" + flags = TURF_REMOVE_WRENCH | TURF_HAS_CORNERS | TURF_HAS_EDGES | TURF_CAN_BURN | TURF_CAN_BREAK + can_paint = 1 + has_base_range = 18 + //build_type = /obj/item/stack/material/steel + + /* Eris features we lack on flooring decls + plating_type = /decl/flooring/reinforced/plating/under + is_plating = TRUE + footstep_sound = "plating" + space_smooth = FALSE + removal_time = 150 + health = 100 + + floor_smooth = SMOOTH_BLACKLIST + flooring_blacklist = list(/decl/flooring/reinforced/plating/under,/decl/flooring/reinforced/plating/hull) //Smooth with everything except the contents of this list + smooth_movable_atom = SMOOTH_GREYLIST + movable_atom_blacklist = list(list(/obj, list("density" = TRUE, "anchored" = TRUE), 1)) + movable_atom_whitelist = list(list(/obj/machinery/door/airlock, list(), 2)) + */ + +/obj/item/stack/tile/floor/rplating + name = "reinforced plating" + singular_name = "dark floor tile" + icon_state = "tile_dark" + matter = list(MAT_STEEL = 1) + +/turf/simulated/floor/plating/eris + name = "reinforced plating" + icon = 'icons/turf/flooring/eris/plating.dmi' + icon_state = "plating" + initial_flooring = /decl/flooring/reinforced/plating + +//==========UNDERPLATING==============\\ +/decl/flooring/reinforced/plating/under + name = "underplating" + icon = 'icons/turf/flooring/eris/plating.dmi' + descriptor = "support beams" + icon_base = "under" + flags = TURF_HAS_CORNERS | TURF_HAS_EDGES | TURF_CAN_BURN | TURF_CAN_BREAK + can_paint = 1 + has_base_range = 0 + + //build_type = /obj/item/stack/material/underplating + + /* Eris features we lack on flooring decls + plating_type = /decl/flooring/reinforced/plating/hull + is_plating = TRUE + removal_time = 250 + health = 200 + resistance = RESISTANCE_ARMOURED + footstep_sound = "catwalk" + space_smooth = SMOOTH_ALL + floor_smooth = SMOOTH_NONE + smooth_movable_atom = SMOOTH_NONE + */ + +/turf/simulated/floor/plating/eris/under + name = "underplating" + icon_state = "under" + icon = 'icons/turf/flooring/eris/plating.dmi' + initial_flooring = /decl/flooring/reinforced/plating/under + +//============HULL PLATING=========\\ +/decl/flooring/reinforced/plating/hull + name = "hull" + descriptor = "outer hull" + icon = 'icons/turf/flooring/eris/hull.dmi' + icon_base = "hullcenter" + flags = TURF_HAS_EDGES | TURF_HAS_CORNERS | TURF_REMOVE_WRENCH | TURF_CAN_BURN | TURF_CAN_BREAK + build_type = /obj/item/stack/material/plasteel + has_base_range = 35 + + /* Eris features we lack on flooring decls + try_update_icon = 0 + plating_type = null + is_plating = TRUE + health = 350 + resistance = RESISTANCE_HEAVILY_ARMOURED + removal_time = 1 MINUTES //Cutting through the hull is very slow work + footstep_sound = "hull" + wall_smooth = SMOOTH_ALL + space_smooth = SMOOTH_NONE + smooth_movable_atom = SMOOTH_NONE + */ + +/* Eris features we lack on flooring decls +//Hull can upgrade to underplating +/decl/flooring/reinforced/plating/hull/can_build_floor(var/decl/flooring/newfloor) + return FALSE //Not allowed to build directly on hull, you must first remove it and then build on the underplating + +/decl/flooring/reinforced/plating/hull/get_plating_type(var/turf/location) + if (turf_is_lower_hull(location)) //Hull plating is only on the lowest level of the ship + return null + else if (turf_is_upper_hull(location)) + return /decl/flooring/reinforced/plating/under + else + return null //This should never happen, hull plawell,ting should only be on the exterior +*/ +/turf/simulated/floor/hull + name = "hull" + icon = 'icons/turf/flooring/eris/hull.dmi' + icon_state = "hullcenter0" + initial_flooring = /decl/flooring/reinforced/plating/hull +/* +/turf/simulated/floor/hull/New() + if(icon_state != "hullcenter0") + overrided_icon_state = icon_state + ..() +*/ \ No newline at end of file diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index cede44eecf..c5685aa0dc 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -178,35 +178,35 @@ if(prob(20)) to_chat(src, "You feel your headset vibrate but can hear nothing from it!") else - on_hear_radio(part_a, speaker_name, track, part_b, message) + on_hear_radio(part_a, speaker_name, track, part_b, message, part_c) /proc/say_timestamp() return "\[[stationtime2text()]\]" -/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted) - var/final_message = "[part_a][speaker_name][part_b][formatted]" +/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c) + var/final_message = "[part_a][speaker_name][part_b][formatted][part_c]" if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention)) final_message = "[final_message]" to_chat(src, final_message) -/mob/observer/dead/on_hear_radio(part_a, speaker_name, track, part_b, formatted) - var/final_message = "[part_a][track][part_b][formatted]" +/mob/observer/dead/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c) + var/final_message = "[part_a][track][part_b][formatted][part_c]" if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention)) final_message = "[final_message]" to_chat(src, final_message) -/mob/living/silicon/on_hear_radio(part_a, speaker_name, track, part_b, formatted) +/mob/living/silicon/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c) var/time = say_timestamp() - var/final_message = "[part_a][speaker_name][part_b][formatted]" + var/final_message = "[part_a][speaker_name][part_b][formatted][part_c]" if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention)) final_message = "[time][final_message]" else final_message = "[time][final_message]" to_chat(src, final_message) -/mob/living/silicon/ai/on_hear_radio(part_a, speaker_name, track, part_b, formatted) +/mob/living/silicon/ai/on_hear_radio(part_a, speaker_name, track, part_b, formatted, part_c) var/time = say_timestamp() - var/final_message = "[part_a][track][part_b][formatted]" + var/final_message = "[part_a][track][part_b][formatted][part_c]" if(check_mentioned(formatted) && is_preference_enabled(/datum/client_preference/check_mention)) final_message = "[time][final_message]" else diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index 6cc817a6f7..6c33b9c300 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -45,6 +45,9 @@ var/obj/prev_left_hand var/obj/prev_right_hand + var/human_brute = 0 + var/human_burn = 0 + player_msg = "In this form, you can move a little faster, your health will regenerate as long as you have metal in you, and you can ventcrawl!" can_buckle = TRUE //Blobsurfing @@ -113,7 +116,9 @@ //Set the max maxHealth = humanform.getMaxHealth()*2 //HUMANS, and their 'double health', bleh. //Set us to their health, but, human health ignores robolimbs so we do it 'the hard way' - health = maxHealth - humanform.getOxyLoss() - humanform.getToxLoss() - humanform.getCloneLoss() - humanform.getActualFireLoss() - humanform.getActualBruteLoss() + human_brute = humanform.getActualBruteLoss() + human_burn = humanform.getActualFireLoss() + health = maxHealth - humanform.getOxyLoss() - humanform.getToxLoss() - humanform.getCloneLoss() - human_brute - human_burn //Alive, becoming dead if((stat < DEAD) && (health <= 0)) @@ -151,6 +156,12 @@ healths.icon_state = "health7" // All the damage and such to the blob translates to the human +/mob/living/simple_mob/protean_blob/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1) + if(humanform) + return humanform.apply_effect(effect, effecttype, blocked, check_protection) + else + return ..() + /mob/living/simple_mob/protean_blob/adjustBruteLoss(var/amount) if(humanform) return humanform.adjustBruteLoss(amount) @@ -181,6 +192,12 @@ else return ..() +/mob/living/simple_mob/protean_blob/adjustCloneLoss(amount) + if(humanform) + return humanform.adjustCloneLoss(amount) + else + return ..() + /mob/living/simple_mob/protean_blob/emp_act(severity) if(humanform) return humanform.emp_act(severity) @@ -218,9 +235,9 @@ /mob/living/simple_mob/protean_blob/Life() . = ..() if(. && istype(refactory) && humanform) - if(!healing && health < maxHealth && refactory.get_stored_material(DEFAULT_WALL_MATERIAL) >= 100) + if(!healing && (human_brute || human_burn) && refactory.get_stored_material(DEFAULT_WALL_MATERIAL) >= 100) healing = humanform.add_modifier(/datum/modifier/protean/steel, origin = refactory) - else if(healing && health == maxHealth) + else if(healing && !(human_brute || human_burn)) healing.expire() healing = null diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 5b67d5e46e..ae59e957b6 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -1,3 +1,5 @@ +#define SLEEPER_INJECT_COST 600 // Note that this has unlimited supply unlike a borg hypo, so should be balanced accordingly + //Sleeper /obj/item/device/dogborg/sleeper name = "Medbelly" @@ -11,7 +13,7 @@ var/min_health = -100 var/cleaning = 0 var/patient_laststat = null - var/list/injection_chems = list("inaprovaline", "dexalin", "bicaridine", "kelotane","anti_toxin", "alkysine", "imidazoline", "spaceacillin", "paracetamol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection. + var/list/injection_chems = list("inaprovaline", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "paracetamol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection. var/eject_port = "ingestion" var/list/items_preserved = list() var/UI_open = FALSE @@ -403,7 +405,7 @@ to_chat(hound, "Your stomach is currently too full of fluids to secrete more fluids of this kind.") else if(patient.reagents.get_reagent_amount(chem) + 10 <= 20) //No overdoses for you patient.reagents.add_reagent(chem, inject_amount) - drain(750) //-750 charge per injection + drain(SLEEPER_INJECT_COST) var/units = round(patient.reagents.get_reagent_amount(chem)) to_chat(hound, "Injecting [units] unit\s of [SSchemistry.chemical_reagents[chem]] into occupant.") //If they were immersed, the reagents wouldn't leave with them. @@ -703,3 +705,5 @@ icon_state = "sleeperc" injection_chems = list("glucose","inaprovaline","tricordrazine") max_item_count = 1 + +#undef SLEEPER_INJECT_COST \ No newline at end of file diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm index 881d3619c6..25486ac554 100644 --- a/code/modules/vchat/vchat_client.dm +++ b/code/modules/vchat/vchat_client.dm @@ -138,8 +138,9 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic //Perform DB shenanigans /datum/chatOutput/proc/load_database() set waitfor = FALSE - var/list/results = vchat_get_messages(owner.ckey) //If there's bad performance on reconnects, look no further - for(var/i in max(1, results.len - message_buffer)) // Only send them the number of buffered messages, instead of the ENTIRE log + // Only send them the number of buffered messages, instead of the ENTIRE log + var/list/results = vchat_get_messages(owner.ckey, message_buffer) //If there's bad performance on reconnects, look no further + for(var/i in results.len to 1 step -1) var/list/message = results[i] var/count = 10 to_chat_immediate(owner, message["time"], message["message"]) @@ -367,15 +368,13 @@ var/to_chat_src time = world.time var/client/C = CLIENT_FROM_VAR(target) - if(C && C.chatOutput) - if(C.chatOutput.broken) - DIRECT_OUTPUT(C, original_message) - return - - // // Client still loading, put their messages in a queue - Actually don't, logged already in database. - // if(!C.chatOutput.loaded && C.chatOutput.message_queue && islist(C.chatOutput.message_queue)) - // C.chatOutput.message_queue[++C.chatOutput.message_queue.len] = list("time" = time, "message" = message) - // return + if(!C) + return // No client? No care. + else if(C.chatOutput.broken) + DIRECT_OUTPUT(C, original_message) + return + else if(!C.chatOutput.loaded) + return // If not loaded yet, do nothing and history-sending on load will get it. var/list/tojson = list("time" = time, "message" = message); target << output(jsEncode(tojson), "htmloutput:putmessage") diff --git a/code/modules/vchat/vchat_db.dm b/code/modules/vchat/vchat_db.dm index 3fc0833aca..6ab20f42b6 100644 --- a/code/modules/vchat/vchat_db.dm +++ b/code/modules/vchat/vchat_db.dm @@ -108,12 +108,16 @@ GLOBAL_DATUM(vchatdb, /database) return vchat_exec_update(messagedef) -//Get a player's message history -/proc/vchat_get_messages(var/ckey, var/oldest = 0) +//Get a player's message history. If limit is supplied, messages will be in reverse order. +/proc/vchat_get_messages(var/ckey, var/limit) if(!ckey) return - var/list/getdef = list("SELECT * FROM messages WHERE ckey = ? AND worldtime >= ?", ckey, oldest) + var/list/getdef + if (limit) + getdef = list("SELECT * FROM messages WHERE ckey = ? ORDER BY id DESC LIMIT [text2num(limit)]", ckey) + else + getdef = list("SELECT * FROM messages WHERE ckey = ?", ckey) return vchat_exec_query(getdef) diff --git a/icons/turf/flooring/eris/grass.dmi b/icons/turf/flooring/eris/grass.dmi new file mode 100644 index 0000000000..d5a85320c4 Binary files /dev/null and b/icons/turf/flooring/eris/grass.dmi differ diff --git a/icons/turf/flooring/eris/hull.dmi b/icons/turf/flooring/eris/hull.dmi new file mode 100644 index 0000000000..9ec88575b6 Binary files /dev/null and b/icons/turf/flooring/eris/hull.dmi differ diff --git a/icons/turf/flooring/eris/plating.dmi b/icons/turf/flooring/eris/plating.dmi new file mode 100644 index 0000000000..455fdcc4f2 Binary files /dev/null and b/icons/turf/flooring/eris/plating.dmi differ diff --git a/icons/turf/flooring/eris/tiles.dmi b/icons/turf/flooring/eris/tiles.dmi new file mode 100644 index 0000000000..61edb65708 Binary files /dev/null and b/icons/turf/flooring/eris/tiles.dmi differ diff --git a/icons/turf/flooring/eris/tiles_dark.dmi b/icons/turf/flooring/eris/tiles_dark.dmi new file mode 100644 index 0000000000..7ca285d856 Binary files /dev/null and b/icons/turf/flooring/eris/tiles_dark.dmi differ diff --git a/icons/turf/flooring/eris/tiles_maint.dmi b/icons/turf/flooring/eris/tiles_maint.dmi new file mode 100644 index 0000000000..2d94d9c8b5 Binary files /dev/null and b/icons/turf/flooring/eris/tiles_maint.dmi differ diff --git a/icons/turf/flooring/eris/tiles_steel.dmi b/icons/turf/flooring/eris/tiles_steel.dmi new file mode 100644 index 0000000000..59cef85928 Binary files /dev/null and b/icons/turf/flooring/eris/tiles_steel.dmi differ diff --git a/icons/turf/flooring/eris/tiles_white.dmi b/icons/turf/flooring/eris/tiles_white.dmi new file mode 100644 index 0000000000..ee27b6caa2 Binary files /dev/null and b/icons/turf/flooring/eris/tiles_white.dmi differ diff --git a/icons/turf/flooring/eris/tilestack.dmi b/icons/turf/flooring/eris/tilestack.dmi new file mode 100644 index 0000000000..b46c363372 Binary files /dev/null and b/icons/turf/flooring/eris/tilestack.dmi differ diff --git a/icons/turf/flooring/grass.dmi b/icons/turf/flooring/grass.dmi index 5b8c7c3fca..abe272fbc4 100644 Binary files a/icons/turf/flooring/grass.dmi and b/icons/turf/flooring/grass.dmi differ diff --git a/icons/turf/outdoors.dmi b/icons/turf/outdoors.dmi index 6409a23e1f..f08a94a80f 100644 Binary files a/icons/turf/outdoors.dmi and b/icons/turf/outdoors.dmi differ diff --git a/icons/turf/outdoors_edge.dmi b/icons/turf/outdoors_edge.dmi index 5357755973..bb334272fb 100644 Binary files a/icons/turf/outdoors_edge.dmi and b/icons/turf/outdoors_edge.dmi differ diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index 3cb6b3807d..95884b3bc1 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -24194,24 +24194,6 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/chemistry) -"aTc" = ( -/obj/effect/floor_decal/borderfloorwhite{ - dir = 1 - }, -/obj/effect/floor_decal/corner/paleblue/border{ - dir = 1 - }, -/obj/structure/closet/secure_closet/medical1, -/obj/structure/cable/green{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled/white, -/area/tether/surfacebase/medical/chemistry) "aTd" = ( /obj/structure/table/reinforced, /obj/effect/floor_decal/borderfloorwhite{ @@ -30675,6 +30657,25 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) +"mHO" = ( +/obj/effect/floor_decal/borderfloorwhite{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/border{ + dir = 1 + }, +/obj/structure/closet/secure_closet/medical1, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/item/weapon/reagent_containers/glass/beaker/vial/imidazoline, +/turf/simulated/floor/tiled/white, +/area/tether/surfacebase/medical/chemistry) "mIX" = ( /obj/structure/bed/chair/bay/chair{ dir = 4; @@ -46224,7 +46225,7 @@ aed afD aDp aSP -aTc +mHO aTp aUE aUL diff --git a/vorestation.dme b/vorestation.dme index a818ed561a..88c10c5325 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1521,6 +1521,7 @@ #include "code\game\turfs\simulated\floor_icon.dm" #include "code\game\turfs\simulated\floor_static.dm" #include "code\game\turfs\simulated\floor_types.dm" +#include "code\game\turfs\simulated\floor_types_eris.dm" #include "code\game\turfs\simulated\floor_types_vr.dm" #include "code\game\turfs\simulated\lava.dm" #include "code\game\turfs\simulated\wall_attacks.dm"