From ba44542de43fb05ffd7741a0fe65ea0c51406608 Mon Sep 17 00:00:00 2001
From: Zenith <109559450+Zenith00000@users.noreply.github.com>
Date: Tue, 16 Jun 2026 23:47:29 +0100
Subject: [PATCH 1/3] Swamp Insanity
---
code/__DEFINES/__game.dm | 1 +
code/__DEFINES/sounds.dm | 1 +
code/datums/vehicles.dm | 4 +
code/game/area/SekhmetSwamp.dm | 23 +-
.../game/machinery/computer/camera_console.dm | 5 +
code/game/machinery/doors/multi_tile.dm | 3 +-
code/game/machinery/doors/poddoor/almayer.dm | 5 +
.../objects/effects/landmarks/item_pool.dm | 4 +
code/game/objects/items/misc.dm | 16 +
code/game/objects/items/props/rocks.dm | 1 +
.../objects/structures/barricade/handrail.dm | 11 +
code/game/objects/structures/bookcase.dm | 9 +
.../objects/structures/cargo_container.dm | 32 +
.../crates_lockers/closets/utility_closets.dm | 11 +
.../crates_lockers/largecrate_supplies.dm | 5 +
code/game/objects/structures/flora.dm | 157 +-
code/game/objects/structures/hybrisa_props.dm | 16 +
code/game/objects/structures/landing_signs.dm | 9 +
code/game/turfs/auto_turf.dm | 69 +
code/game/turfs/soro.dm | 85 +
code/game/turfs/walls/wall_types.dm | 8 +
.../clothing/suits/marine_armor/ert.dm | 14 +-
code/modules/cm_marines/equipment/maps.dm | 3 +-
.../sorokyne_strata/preset_sorokyne_strata.dm | 2 +-
code/modules/paperwork/filingcabinet.dm | 90 +
code/modules/shuttle/ripple.dm | 1 +
.../vehicles/hardpoints/wheels/van_wheels.dm | 15 +
code/modules/vehicles/interior/areas.dm | 4 +
.../vehicles/interior/interactable/seats.dm | 57 +-
.../vehicles/interior/interior_landmarks.dm | 3 +
code/modules/vehicles/van/hovercraft.dm | 306 +
colonialmarines.dme | 1 +
icons/landmarks.dmi | Bin 61301 -> 59111 bytes
.../mob/humans/onmob/clothing/belts/misc.dmi | Bin 7234 -> 7558 bytes
.../onmob/inhands/items/toys_lefthand.dmi | Bin 5536 -> 6170 bytes
.../onmob/inhands/items/toys_righthand.dmi | Bin 5533 -> 6159 bytes
icons/obj/items/misc.dmi | Bin 0 -> 575 bytes
icons/obj/structures/bookshelf.dmi | Bin 811 -> 1279 bytes
icons/obj/structures/machinery/computer.dmi | Bin 160765 -> 147459 bytes
.../structures/props/containers/contain.dmi | Bin 27145 -> 13013 bytes
.../props/containers/containHorizont.dmi | Bin 981 -> 1242 bytes
icons/obj/structures/props/furniture/misc.dmi | Bin 10192 -> 10731 bytes
.../structures/props/hybrisa/computers.dmi | Bin 9829 -> 13576 bytes
icons/obj/structures/props/landing_signs.dmi | Bin 49891 -> 52844 bytes
.../props/natural/vegetation/swamp_plants.dmi | Bin 0 -> 17194 bytes
.../natural/vegetation/tyrargo_wood_flora.dmi | Bin 5275 -> 13774 bytes
icons/obj/vehicles/hardpoints/hovercraft.dmi | Bin 0 -> 1107 bytes
icons/obj/vehicles/hardpoints/van.dmi | Bin 850 -> 528 bytes
icons/obj/vehicles/hovercraft.dmi | Bin 0 -> 35660 bytes
icons/obj/vehicles/interiors/hovercraft.dmi | Bin 0 -> 914 bytes
.../vehicles/interiors/hovercraft_chassis.dmi | Bin 0 -> 1286 bytes
icons/obj/vehicles/interiors/seats.dmi | Bin 0 -> 3957 bytes
icons/turf/floors/auto_dirt_swamp.dmi | Bin 0 -> 79946 bytes
icons/turf/floors/auto_swamp_grass.dmi | Bin 0 -> 53377 bytes
icons/turf/floors/swamp_water.dmi | Bin 0 -> 171507 bytes
icons/turf/walls/swamp_veg.dmi | Bin 0 -> 2439 bytes
maps/interiors/hovercraft.dmm | 158 +
.../map_files/Sekhmet_Swamp/Sekhmet_Swamp.dmm | 123782 +++++++++------
.../Sorokyne_Strata/Sorokyne_Strata.dmm | 6 +-
maps/sekhmet_swamp.json | 2 +-
sound/ambience/swamp.ogg | Bin 0 -> 3917064 bytes
sound/vehicles/boat_horn.ogg | Bin 0 -> 43201 bytes
sound/vehicles/hovercraft_driving.ogg | Bin 0 -> 105552 bytes
sound/vehicles/hovercraft_overdrive.ogg | Bin 0 -> 36190 bytes
64 files changed, 74198 insertions(+), 50721 deletions(-)
create mode 100644 code/modules/vehicles/van/hovercraft.dm
create mode 100644 icons/obj/items/misc.dmi
create mode 100644 icons/obj/structures/props/natural/vegetation/swamp_plants.dmi
create mode 100644 icons/obj/vehicles/hardpoints/hovercraft.dmi
create mode 100644 icons/obj/vehicles/hovercraft.dmi
create mode 100644 icons/obj/vehicles/interiors/hovercraft.dmi
create mode 100644 icons/obj/vehicles/interiors/hovercraft_chassis.dmi
create mode 100644 icons/obj/vehicles/interiors/seats.dmi
create mode 100644 icons/turf/floors/auto_dirt_swamp.dmi
create mode 100644 icons/turf/floors/auto_swamp_grass.dmi
create mode 100644 icons/turf/floors/swamp_water.dmi
create mode 100644 icons/turf/walls/swamp_veg.dmi
create mode 100644 maps/interiors/hovercraft.dmm
create mode 100644 sound/ambience/swamp.ogg
create mode 100644 sound/vehicles/boat_horn.ogg
create mode 100644 sound/vehicles/hovercraft_driving.ogg
create mode 100644 sound/vehicles/hovercraft_overdrive.ogg
diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm
index b3d750a8a387..f695c4492e56 100644
--- a/code/__DEFINES/__game.dm
+++ b/code/__DEFINES/__game.dm
@@ -400,6 +400,7 @@
#define WALL_FOREST "forest_veg"
#define WALL_FOREST_ROCK "rock_forest"
#define WALL_FOREST_ROCK_DIRTY "rock_forest_dirty"
+#define WALL_SWAMP "swamp_veg"
#define WALL_STRATA_OUTPOST_RIBBED "strata_ribbed_outpost_"
#define WALL_STRATA_OUTPOST_BARE "strata_bare_outpost_"
#define WALL_SHIVA_ICE "shiva_ice"
diff --git a/code/__DEFINES/sounds.dm b/code/__DEFINES/sounds.dm
index c3c7c6ac01a8..c4716558432b 100644
--- a/code/__DEFINES/sounds.dm
+++ b/code/__DEFINES/sounds.dm
@@ -90,6 +90,7 @@
#define AMBIENCE_JUNGLE 'sound/ambience/ambienceLV624.ogg'
#define AMBIENCE_JUNGLEMOON 'sound/ambience/junglemoon.ogg'
#define AMBIENCE_JUNGLE_ALT 'sound/ambience/ambience_strata.ogg'
+#define AMBIENCE_SWAMP 'sound/ambience/swamp.ogg'
#define AMBIENCE_RIVER 'sound/ambience/ambienceriver.ogg'
#define AMBIENCE_MALL 'sound/ambience/medbay1.ogg'
#define AMBIENCE_CAVE 'sound/ambience/desert.ogg'
diff --git a/code/datums/vehicles.dm b/code/datums/vehicles.dm
index 3f1a717318e3..c8912a01a195 100644
--- a/code/datums/vehicles.dm
+++ b/code/datums/vehicles.dm
@@ -53,3 +53,7 @@
/datum/map_template/interior/arc
name = "ARC"
interior_id = "arc"
+
+/datum/map_template/interior/hovercraft
+ name = "Hovercraft"
+ interior_id = "hovercraft"
diff --git a/code/game/area/SekhmetSwamp.dm b/code/game/area/SekhmetSwamp.dm
index 371d1c83b446..1b9f093c78f7 100644
--- a/code/game/area/SekhmetSwamp.dm
+++ b/code/game/area/SekhmetSwamp.dm
@@ -37,20 +37,23 @@
minimap_color = MINIMAP_AREA_LZ
soundscape_playlist = SCAPE_PL_LV759_INDOORS
ambience_exterior = AMBIENCE_HYBRISA_INTERIOR
+
/area/sekhmet/shuttles/drop2
name = "Sekhmet - Open Field"
icon_state = "shuttle2"
icon = 'icons/turf/area_varadero.dmi'
minimap_color = MINIMAP_AREA_LZ
- soundscape_playlist = SCAPE_PL_LV759_INDOORS
- ambience_exterior = AMBIENCE_HYBRISA_INTERIOR
+ ceiling = CEILING_NONE
+ ambience_exterior = AMBIENCE_JUNGLE_ALT
+
/area/sekhmet/shuttles/drop3
name = "Sekhmet - Research Landing Pad"
icon_state = "shuttle"
icon = 'icons/turf/area_varadero.dmi'
minimap_color = MINIMAP_AREA_LZ
- soundscape_playlist = SCAPE_PL_LV759_INDOORS
- ambience_exterior = AMBIENCE_HYBRISA_INTERIOR
+ ceiling = CEILING_NONE
+ ambience_exterior = AMBIENCE_JUNGLE_ALT
+
//============================================================ Communications
/area/sekhmet/int_reg/telecomm
name = "Sekhmet - Communications Relay"
@@ -71,10 +74,11 @@
icon_state = "away1"
/area/sekhmet/int_reg/catwalk
name = "Swamp Catwalk"
- icon_state = "away2"
+ icon_state = "away1"
/area/sekhmet/outside/swamp
name = "Sekhmet Swamp"
icon_state = "northwest"
+ ambience_exterior = AMBIENCE_SWAMP
/area/sekhmet/int_reg/comms_lower
name = "Sekhmet Lower Commmunication Hall"
icon_state = "away3"
@@ -84,6 +88,9 @@
/area/sekhmet/caves/west_cave
name = "Sekhmet West Caves"
icon_state = "cave"
+/area/sekhmet/int_reg/small_power
+ name = "Sekhmet Small Power Station"
+ icon_state = "away3"
//============================================================SOUTHWEST PORTION (airfield, medbay, warehouse)
/area/sekhmet/outside/airfield
name = "Sekhmet Clearing"
@@ -96,7 +103,7 @@
icon_state = "away1"
/area/sekhmet/int_reg/warehouse
name = "Sekhmet Warehouse"
- icon_state = "cargo"
+ icon_state = "yellow"
/area/sekhmet/outside/southroad
name = "Sekhmet Southern Path"
icon_state = "south"
@@ -106,7 +113,7 @@
//============================================================CENTRAL PORTION (central complex, yard, roadways, comms)
/area/sekhmet/outside/central_road
name = "Sekhmet Central Path"
- icon_state = "away2"
+ icon_state = "northwest"
/area/sekhmet/int_glass/complex_generic
name = "Sekhmet Central Complex"
icon_state = "away1"
@@ -130,7 +137,7 @@
icon_state = "yellow"
/area/sekhmet/int_reg/engineering
name = "Sekhmet Engineering"
- icon_state = "SMES"
+ icon_state = "ass_line"
/area/sekhmet/int_heavy/entry_zone
name = "Sekhmet Entry Zone"
icon_state = "red"
diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm
index fd0f93a4cd27..6ee82714dc43 100644
--- a/code/game/machinery/computer/camera_console.dm
+++ b/code/game/machinery/computer/camera_console.dm
@@ -453,3 +453,8 @@
SEND_SIGNAL(src, COMSIG_CAMERA_SET_NVG, 5, NV_COLOR_RED)
#undef DEFAULT_MAP_SIZE
+
+/obj/structure/machinery/computer/cameras/colony_camera
+ name = "security cameras console"
+ desc = "Used to access the various cameras of the colony."
+ icon_state = "dark_com"
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index b6fbe25f214c..367e6be4b4cd 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -259,7 +259,7 @@
/obj/structure/machinery/door/airlock/multi_tile/almayer/maint/reinforced/colony/autoname
autoname = TRUE
-
+
//------Containment 3-tile Doors -----//
/obj/structure/machinery/door/airlock/multi_tile/almayer/containment
@@ -523,6 +523,7 @@
// Elevator door
/obj/structure/machinery/door/airlock/multi_tile/elevator
+ name = "Elevator Hatch"
icon = 'icons/obj/structures/doors/4x1_elevator.dmi'
icon_state = "door_closed"
width = 4
diff --git a/code/game/machinery/doors/poddoor/almayer.dm b/code/game/machinery/doors/poddoor/almayer.dm
index 27bb12b91b88..77c1b2e6fb58 100644
--- a/code/game/machinery/doors/poddoor/almayer.dm
+++ b/code/game/machinery/doors/poddoor/almayer.dm
@@ -73,6 +73,11 @@
opacity = TRUE
/obj/structure/machinery/door/poddoor/almayer/planet_side_blastdoor
+ name = "Lockdown"
density = TRUE
opacity = TRUE
vehicle_resistant = TRUE
+ needs_power = FALSE
+ unacidable = TRUE
+ emp_proof = TRUE
+ explo_proof = TRUE
diff --git a/code/game/objects/effects/landmarks/item_pool.dm b/code/game/objects/effects/landmarks/item_pool.dm
index a5e628cd656b..880de06865cf 100644
--- a/code/game/objects/effects/landmarks/item_pool.dm
+++ b/code/game/objects/effects/landmarks/item_pool.dm
@@ -41,3 +41,7 @@
/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot
icon_state = "ipool_bubshot"
type_to_spawn = /obj/item/ammo_magazine/shotgun/buckshot
+
+/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot/UPP
+ icon_state = "ipool_bubshot_upp"
+ type_to_spawn = /obj/item/ammo_magazine/shotgun/heavy/buckshot
diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm
index 00ab549c4516..59f7bfa542c3 100644
--- a/code/game/objects/items/misc.dm
+++ b/code/game/objects/items/misc.dm
@@ -303,3 +303,19 @@
/obj/item/clock/get_examine_text(mob/user)
. = ..()
. += SPAN_NOTICE("The [name] reads: [GLOB.current_date_string] - [worldtime2text()]")
+
+/obj/item/lifesaver
+ name = "lifesaver"
+ desc = "A buoyant flotation device designed to keep those in water afloat."
+ icon = 'icons/obj/items/misc.dmi'
+ item_icons = list(
+ WEAR_L_HAND = 'icons/mob/humans/onmob/inhands/items/toys_lefthand.dmi',
+ WEAR_R_HAND = 'icons/mob/humans/onmob/inhands/items/toys_righthand.dmi',
+ WEAR_WAIST = 'icons/mob/humans/onmob/clothing/belts/misc.dmi'
+ )
+ icon_state = "lifesaver"
+ throwforce = 0
+ throw_speed = SPEED_VERY_FAST
+ throw_range = 20
+ force = 0
+ flags_equip_slot = SLOT_WAIST
diff --git a/code/game/objects/items/props/rocks.dm b/code/game/objects/items/props/rocks.dm
index df734c223084..b1f2bd8dc620 100644
--- a/code/game/objects/items/props/rocks.dm
+++ b/code/game/objects/items/props/rocks.dm
@@ -55,6 +55,7 @@
icon = 'icons/obj/structures/props/natural/rocks.dmi'
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
layer = TURF_LAYER
+ plane = FLOOR_PLANE
/obj/structure/prop/colorable_rock/colorable/alt
icon_state = "ground_colorable_alt"
diff --git a/code/game/objects/structures/barricade/handrail.dm b/code/game/objects/structures/barricade/handrail.dm
index bc42482ab61f..adbdcca076d7 100644
--- a/code/game/objects/structures/barricade/handrail.dm
+++ b/code/game/objects/structures/barricade/handrail.dm
@@ -240,6 +240,17 @@
/obj/structure/barricade/handrail/kutjevo
icon_state = "hr_kutjevo"
+/obj/structure/prop/fake/handrail/kutjevo
+ name = "supports"
+ desc = "a series of metal shafts in a pattern meant for holding stuff."
+ icon = 'icons/obj/structures/handrail.dmi'
+ icon_state = "hr_kutjevo"
+ density = FALSE
+ anchored = TRUE
+ layer = TURF_LAYER
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ pixel_y = 12
+
/obj/structure/barricade/handrail/wire
icon_state = "wire_rail"
climb_delay = CLIMB_DELAY_SHORT
diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm
index 5b4e34a651de..bb5f2b4c28de 100644
--- a/code/game/objects/structures/bookcase.dm
+++ b/code/game/objects/structures/bookcase.dm
@@ -130,3 +130,12 @@
. = ..()
new /obj/item/book/manual/research_and_development(src)
update_icon()
+
+/obj/structure/bookcase
+ icon_state = "woodbook-0"
+
+/obj/structure/bookcase/wood/update_icon()
+ if(length(contents) < 6)
+ icon_state = "woodbook-[length(contents)]"
+ else
+ icon_state = "woodbook-6"
diff --git a/code/game/objects/structures/cargo_container.dm b/code/game/objects/structures/cargo_container.dm
index 94d2847d2292..49e2a20304ec 100644
--- a/code/game/objects/structures/cargo_container.dm
+++ b/code/game/objects/structures/cargo_container.dm
@@ -222,6 +222,12 @@
/obj/structure/cargo_container/kelland/right
icon_state = "kelland_r"
+/obj/structure/cargo_container/kelland/alt/left
+ icon_state = "kelland_red_l"
+
+/obj/structure/cargo_container/kelland/alt/right
+ icon_state = "kelland_red_r"
+
/obj/structure/cargo_container/ferret
name = "Ferret Heavy Industries Cargo Container"
desc = "A huge industrial shipping container.\nThis one is from Ferret Heavy Industries, a manufacturer of terrestrial crawlers and powerloaders.\nUnfortunately, the company went bankrupt. Fortunately, these containers are really cheap now."
@@ -310,6 +316,32 @@
/obj/structure/cargo_container/horizontal/blue/bottom
icon_state = "blue_b"
+/obj/structure/cargo_container/horizontal/red
+ name = "Generic Cargo Container"
+ desc = "A huge industrial shipping container.\nDespite the logo clearly being on the side, you cannot see it, as the logo is not facing south."
+
+/obj/structure/cargo_container/horizontal/red/top
+ icon_state = "red_t"
+
+/obj/structure/cargo_container/horizontal/red/middle
+ icon_state = "red_m"
+
+/obj/structure/cargo_container/horizontal/red/bottom
+ icon_state = "red_b"
+
+/obj/structure/cargo_container/horizontal/green
+ name = "Generic Cargo Container"
+ desc = "A huge industrial shipping container.\nDespite the logo clearly being on the side, you cannot see it, as the logo is not facing south."
+
+/obj/structure/cargo_container/horizontal/green/top
+ icon_state = "green_t"
+
+/obj/structure/cargo_container/horizontal/green/middle
+ icon_state = "green_m"
+
+/obj/structure/cargo_container/horizontal/green/bottom
+ icon_state = "green_b"
+
/obj/structure/cargo_container/canc
name = "CANC Cargo Container"
desc = "A huge industrial shipping container.\nThis one is from the Chinese/Asian–Nation Cooperative, which was absorded into the UPP. Their massive industrial output has ensured that cargo containers bearing their symbols and name won't be disappearing any time soon."
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
index 9753a0f82e3c..254d360a0771 100644
--- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
@@ -112,6 +112,17 @@
icon_state = icon_opened
+/obj/structure/closet/firecloset/upp_full/Initialize()
+ . = ..()
+ contents = list()
+
+ new /obj/item/clothing/suit/storage/marine/light/vest/fire_light/upp(src)
+ new /obj/item/clothing/mask/gas/upp_pfb(src)
+ new /obj/item/reagent_container/glass/canister/oxygen(src)
+ new /obj/item/tool/extinguisher(src)
+ new /obj/item/clothing/head/helmet/marine/veteran/UPP/firefighter(src)
+ new /obj/item/storage/box/m94(src)
+
/*
* Tool Closet
*/
diff --git a/code/game/objects/structures/crates_lockers/largecrate_supplies.dm b/code/game/objects/structures/crates_lockers/largecrate_supplies.dm
index e3ffb9915dd0..a37f24973a4e 100644
--- a/code/game/objects/structures/crates_lockers/largecrate_supplies.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate_supplies.dm
@@ -277,6 +277,11 @@
desc = "A supply crate containing sixty TWE ORP ration packets."
supplies = list(/obj/item/ammo_box/magazine/misc/mre/twe = 5)
+/obj/structure/largecrate/supply/supplies/mre/upp
+ name = "\improper UPP IRP MRE crate (x60)"
+ desc = "A supply crate containing sixty UPP IRP MRE packets."
+ supplies = list(/obj/item/ammo_box/magazine/misc/mre/upp = 5)
+
/obj/structure/largecrate/supply/supplies/wy_emergency_food
name = "\improper WY emergency nutrition briquettes crate (x100)"
desc = "A supply crate containing one hundred WY emergency nutrition briquettes."
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index 37f15b301af6..2d6527259a6b 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -244,6 +244,8 @@ PLANT_CUT_MACHETE = 3 = Needs at least a machete to be cut down
icon = 'icons/obj/structures/props/natural/vegetation/ausflora.dmi'
density = FALSE
fire_flag = FLORA_BURN_NO_SPREAD
+ layer = UNDERFLOOR_OBJ_LAYER
+ plane = FLOOR_PLANE
/*
ICE GRASS
@@ -408,6 +410,8 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
unslashable = TRUE
unacidable = TRUE
cut_level = PLANT_CUT_MACHETE
+ layer = OBJ_LAYER
+ plane = GAME_PLANE
var/overlay_type = "tallgrass_overlay"
/obj/structure/flora/grass/tallgrass/Initialize()
@@ -456,6 +460,17 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
overlay_type = "tallgrass_overlay_corner"
center = FALSE
+// SEKHMET SWAMP
+/obj/structure/flora/grass/tallgrass/swamp
+ color = "#a8a800"
+ icon_state = "tallgrass"
+ desc = "A thick carpet of bristling junglegrass, vibrant and untamed."
+
+/obj/structure/flora/grass/tallgrass/swamp/corner
+ icon_state = "tallgrass_corner"
+ overlay_type = "tallgrass_overlay_corner"
+ center = FALSE
+
//LV - JUNGLE MAPS//
/obj/structure/flora/grass/tallgrass/jungle
@@ -542,7 +557,8 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
/obj/structure/flora/bush/ausbushes/reedbush
icon_state = "reedbush_1"
icon_tag = "reedbush"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/ausbushes/palebush
icon_state = "palebush_1"
@@ -563,12 +579,14 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
/obj/structure/flora/bush/ausbushes/lavendergrass
icon_state = "lavendergrass_1"
icon_tag = "lavendergrass"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/ausbushes/ywflowers
icon_state = "ywflowers_1"
icon_tag = "ywflowers"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/*
@@ -585,7 +603,8 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
/obj/structure/flora/bush/ausbushes/var3/leafybush
icon_state = "leafybush_1"
icon_tag = "leafybush"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/ausbushes/var3/stalkybush
icon_state = "stalkybush_1"
@@ -602,22 +621,26 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
/obj/structure/flora/bush/ausbushes/var3/brflowers
icon_state = "brflowers_1"
icon_tag = "brflowers"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/ausbushes/var3/ppflowers
icon_state = "ppflowers_1"
icon_tag = "ppflowers"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/ausbushes/var3/sparsegrass
icon_state = "sparsegrass_1"
icon_tag = "sparsegrass"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/ausbushes/var3/fullgrass
icon_state = "fullgrass_1"
icon_tag = "fullgrass"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/*
@@ -636,11 +659,14 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
name = "cactus"
desc = "It's a small, spiky cactus."
icon_state = "cactus_3"
- layer = BELOW_MOB_LAYER
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/obj/structure/flora/bush/desert/cactus/multiple
name = "cacti"
icon_state = "cacti_1"
+ plane = FLOOR_PLANE
+ layer = TURF_LAYER
/*
@@ -922,3 +948,116 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE.
update_health(xeno.melee_damage_upper)
xeno.tail_stab_animation(src, blunt_stab)
return TAILSTAB_COOLDOWN_NORMAL
+
+/obj/structure/prop/swamp_plants
+ name = "swamp plant"
+ desc = "you shouldn't be seeing this."
+ icon = 'icons/obj/structures/props/natural/vegetation/swamp_plants.dmi'
+ icon_state = "lillypads1"
+ layer = TURF_LAYER
+ plane = FLOOR_PLANE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+
+/obj/structure/prop/swamp_plants/lily_pads
+ icon_state = "lillypads1"
+ layer = ABOVE_TURF_LAYER
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_1
+ icon_state = "lillypads1"
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_2
+ icon_state = "lillypads2"
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_3
+ icon_state = "lillypads3"
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_4
+ icon_state = "lillypads4"
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_5
+ icon_state = "lillypads5"
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_6
+ icon_state = "lillypads6"
+
+/obj/structure/prop/swamp_plants/lily_pads/lily_pads_7
+ icon_state = "lillypads7"
+
+/obj/structure/prop/swamp_plants/algae
+ icon_state = "algae1"
+ alpha = 215
+
+/obj/structure/prop/swamp_plants/algae/small
+ icon_state = "algae1"
+
+/obj/structure/prop/swamp_plants/algae/small/algae_1
+ icon_state = "algae2"
+
+/obj/structure/prop/swamp_plants/algae/small/algae_2
+ icon_state = "algae3"
+
+/obj/structure/prop/swamp_plants/algae/small/algae_3
+ icon_state = "algae4"
+
+/obj/structure/prop/swamp_plants/algae/small/algae_4
+ icon_state = "algae5"
+
+/obj/structure/prop/swamp_plants/algae/small/algae_5
+ icon_state = "algae6"
+
+/obj/structure/prop/swamp_plants/algae/full
+ icon_state = "algae_full"
+
+/obj/structure/prop/swamp_plants/algae/full/algae_full_1
+ icon_state = "algae_full_1"
+
+/obj/structure/prop/swamp_plants/algae/full/algae_full_2
+ icon_state = "algae_full_2"
+
+/obj/structure/prop/swamp_plants/algae/full/algae_full_3
+ icon_state = "algae_full_3"
+
+/obj/structure/prop/swamp_plants/algae/full/algae_full_4
+ icon_state = "algae_full_4"
+
+// Algae edges & corners
+
+/obj/structure/prop/swamp_plants/algae/straight
+ icon_state = "algae_edge"
+
+/obj/structure/prop/swamp_plants/algae/straight/south
+ dir = 1
+
+/obj/structure/prop/swamp_plants/algae/straight/west
+ dir = 4
+
+/obj/structure/prop/swamp_plants/algae/straight/east
+ dir = 8
+
+/obj/structure/prop/swamp_plants/algae/corner
+ icon_state = "algae_edge_2"
+
+/obj/structure/prop/swamp_plants/algae/corner/north_west
+
+/obj/structure/prop/swamp_plants/algae/corner/north_east
+ dir = 1
+
+/obj/structure/prop/swamp_plants/algae/corner/south_east
+ dir = 4
+
+/obj/structure/prop/swamp_plants/algae/corner/south_west
+ dir = 8
+
+/obj/structure/prop/swamp_plants/algae/corner2
+ icon_state = "algae_corner"
+
+/obj/structure/prop/swamp_plants/algae/corner2/north_west
+
+/obj/structure/prop/swamp_plants/algae/corner2/north_east
+ dir = 1
+
+/obj/structure/prop/swamp_plants/algae/corner2/south_west
+ dir = 4
+
+/obj/structure/prop/swamp_plants/algae/corner2/south_east
+ dir = 8
diff --git a/code/game/objects/structures/hybrisa_props.dm b/code/game/objects/structures/hybrisa_props.dm
index 2e1a42a25d69..9f1a35550406 100644
--- a/code/game/objects/structures/hybrisa_props.dm
+++ b/code/game/objects/structures/hybrisa_props.dm
@@ -2022,6 +2022,22 @@
/obj/structure/machinery/big_computers/messaging_server/brown
icon_state = "messageserver_brown"
+/obj/structure/machinery/big_computers/computerdark/computer1
+ name = "colonial operations terminal"
+ icon_state = "dark_computer_radar"
+
+/obj/structure/machinery/big_computers/computerdark/computer2
+ name = "colonial operations terminal"
+ icon_state = "dark_computer_radar1"
+
+/obj/structure/machinery/big_computers/computerdark/computer3
+ name = "colonial operations terminal"
+ icon_state = "dark_computer_radar2"
+
+/obj/structure/machinery/big_computers/computerdark/computer4
+ name = "colonial operations terminal"
+ icon_state = "dark_computer_mps"
+
// Science Computer Stuff
/obj/structure/machinery/big_computers/science_big
diff --git a/code/game/objects/structures/landing_signs.dm b/code/game/objects/structures/landing_signs.dm
index a56794030f70..6afa27e271c9 100644
--- a/code/game/objects/structures/landing_signs.dm
+++ b/code/game/objects/structures/landing_signs.dm
@@ -113,3 +113,12 @@
name = "White Antre Research Facility"
desc = "A medium sized sign, designating this area as the White Antre Research Facility."
icon_state = "antre_sign_3"
+
+/obj/structure/lz_sign/sekhmet_sign
+ name = "Sekhmet Swamp landing sign"
+ desc = "A large sign that reads 'Boloto - Sekhmet' - POP. 112' The UPP 'Star' logo is proudly emblazoned & a scientific symbol on the right side of the sign."
+ icon_state = "sekhmet_sign_1"
+
+/obj/structure/lz_sign/sekhmet_sign/interior
+ desc = "A large sign that reads 'Boloto - Sekhmet' - POP. 112' The UPP 'Star' logo is proudly emblazoned & a scientific symbol on the right side of the sign."
+ icon_state = "sekhmet_sign_2"
diff --git a/code/game/turfs/auto_turf.dm b/code/game/turfs/auto_turf.dm
index 9e5d256861b0..cdcc018e0b3e 100644
--- a/code/game/turfs/auto_turf.dm
+++ b/code/game/turfs/auto_turf.dm
@@ -408,3 +408,72 @@
/turf/open/auto_turf/shale/layer2/weedable
is_weedable = FULLY_WEEDABLE
+
+// Swamp Auto-turf
+
+/turf/open/auto_turf/swamp_dirt
+ layer_name = list("marsh sediment", "soft mud", "warn a coder", "warn a coder", "warn a coder")
+ icon = 'icons/turf/floors/auto_dirt_swamp.dmi'
+ icon_state = "swamp_1"
+ icon_prefix = "swamp"
+
+/turf/open/auto_turf/swamp_dirt/get_dirt_type()
+ return DIRT_TYPE_SAND
+
+/turf/open/auto_turf/swamp_dirt/layer0
+ icon_state = "swamp_0"
+ bleed_layer = 0
+
+/turf/open/auto_turf/swamp_dirt/layer1
+ icon_state = "swamp_1"
+ bleed_layer = 1
+
+
+/turf/open/auto_turf/swampalt_dirt
+ layer_name = list("marsh sediment", "soft mud", "warn a coder", "warn a coder", "warn a coder")
+ icon = 'icons/turf/floors/auto_dirt_swamp.dmi'
+ icon_state = "alt_1"
+ icon_prefix = "alt"
+
+/turf/open/auto_turf/swampalt_dirt/get_dirt_type()
+ return DIRT_TYPE_SAND
+
+/turf/open/auto_turf/swampalt_dirt/layer0
+ icon_state = "alt_0"
+ bleed_layer = 0
+
+/turf/open/auto_turf/swampalt_dirt/layer1
+ icon_state = "alt_1"
+ bleed_layer = 1
+
+/turf/open/auto_turf/swamp_grass
+ name = "matted grass"
+ icon = 'icons/turf/floors/auto_swamp_grass.dmi'
+ icon_state = "grass_0"
+ icon_prefix = "grass"
+ layer_name = list("ground","lush thick grass")
+ desc = "Grass, dirt, mud, and other assorted high moisture cave flooring."
+
+/turf/open/auto_turf/swamp_grass/insert_self_into_baseturfs()
+ baseturfs += /turf/open/auto_turf/swamp_grass/layer0
+
+/turf/open/auto_turf/swamp_grass/layer0
+ icon_state = "grass_0"
+ bleed_layer = 0
+ variant_prefix_name = "matted grass"
+
+/turf/open/auto_turf/swamp_grass/layer0_mud
+ icon_state = "grass_0_mud"
+ bleed_layer = 0
+ variant = "mud"
+ variant_prefix_name = "muddy"
+
+/turf/open/auto_turf/swamp_grass/layer0_mud_alt
+ icon_state = "grass_0_mud_alt"
+ bleed_layer = 0
+ variant = "mud_alt"
+ variant_prefix_name = "muddy"
+
+/turf/open/auto_turf/swamp_grass/layer1
+ icon_state = "grass_1"
+ bleed_layer = 1
diff --git a/code/game/turfs/soro.dm b/code/game/turfs/soro.dm
index 6db3721df229..67baf1c5e416 100644
--- a/code/game/turfs/soro.dm
+++ b/code/game/turfs/soro.dm
@@ -197,6 +197,86 @@
/turf/open/gm/coast/dirt/forestbeachcorner2/south_east
dir = 8
+
+/// Swamp Water
+
+/turf/open/gm/coast/dirt/swampdir
+ icon = 'icons/turf/floors/swamp_water.dmi'
+ icon_state = "swamp"
+ baseturfs = /turf/open/gm/coast
+
+/turf/open/gm/coast/dirt/swampdir/south
+ dir = 1
+
+/turf/open/gm/coast/dirt/swampdir/west
+ dir = 4
+
+/turf/open/gm/coast/dirt/swampdir/east
+ dir = 8
+
+/turf/open/gm/coast/dirt/swampbeachcorner
+ icon = 'icons/turf/floors/swamp_water.dmi'
+ icon_state = "swampcorner"
+
+/turf/open/gm/coast/dirt/swampbeachcorner/north_west
+
+/turf/open/gm/coast/dirt/swampbeachcorner/north_east
+ dir = 1
+
+/turf/open/gm/coast/dirt/swampbeachcorner/south_east
+ dir = 4
+
+/turf/open/gm/coast/dirt/swampbeachcorner/south_west
+ dir = 8
+
+/turf/open/gm/coast/dirt/swampbeachcorner2
+ icon = 'icons/turf/floors/swamp_water.dmi'
+ icon_state = "swampcorner2"
+
+/turf/open/gm/coast/dirt/swampbeachcorner2/north_west
+
+/turf/open/gm/coast/dirt/swampbeachcorner2/north_east
+ dir = 1
+
+/turf/open/gm/coast/dirt/swampbeachcorner2/south_west
+ dir = 4
+
+/turf/open/gm/coast/dirt/swampbeachcorner2/south_east
+ dir = 8
+
+/turf/open/gm/dirt/swamp_dirt
+ name = "swamp dirt"
+ icon = 'icons/turf/floors/swamp_water.dmi'
+ icon_state = "desert"
+ baseturfs = /turf/open/gm/dirt/dark_brown
+ minimap_color = MINIMAP_DIRT
+
+/turf/open/gm/dirt/swamp_dirt/variant_1
+ icon_state = "desert0"
+
+/turf/open/gm/dirt/swamp_dirt/variant_2
+ icon_state = "desert1"
+
+/turf/open/gm/dirt/swamp_dirt/variant_3
+ icon_state = "desert2"
+
+/turf/open/gm/dirt/swamp_dirt/variant_5
+ icon_state = "desert3"
+
+/turf/open/gm/dirt/swamp_dirt/variant_5/east
+ dir = EAST
+
+/turf/open/gm/dirt/swamp_dirt/variant_5/south
+ dir = SOUTH
+
+/turf/open/gm/dirt/swamp_dirt/variant_5/west
+ dir = WEST
+
+/turf/open/gm/dirt/swamp_dirt/variant_6
+ icon_state = "desert_dug"
+
+///////////
+
/turf/open/asphalt/brown
name = "asphalt"
icon = 'icons/turf/floors/ground_map_dirt.dmi'
@@ -226,3 +306,8 @@
icon = 'icons/turf/floors/tyrargo_map_dirt.dmi'
icon_state = "forestseashallow"
icon_overlay = "forestriverwater"
+
+/turf/open/gm/river/swamp
+ icon = 'icons/turf/floors/swamp_water.dmi'
+ icon_state = "swampshallow"
+ icon_overlay = "swampriverwater"
diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm
index 0b3a6b272860..681a63bce885 100644
--- a/code/game/turfs/walls/wall_types.dm
+++ b/code/game/turfs/walls/wall_types.dm
@@ -725,6 +725,14 @@
walltype = WALL_FOREST_ROCK_DIRTY //Dirty rock but near a forest not jungle.
turf_flags = TURF_HULL
+/turf/closed/wall/strata_ice/swamp
+ name = "swamp vegetation"
+ icon = 'icons/turf/walls/swamp_veg.dmi'
+ icon_state = "swamp_veg"
+ desc = "Exceptionally dense vegetation that you can't see through."
+ walltype = WALL_SWAMP
+ turf_flags = TURF_HULL
+ minimap_color = MINIMAP_BLACK
/turf/closed/wall/strata_outpost_ribbed //this guy is our reinforced replacement
name = "ribbed outpost walls"
diff --git a/code/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm
index ceec4faba336..be78bec954ac 100644
--- a/code/modules/clothing/suits/marine_armor/ert.dm
+++ b/code/modules/clothing/suits/marine_armor/ert.dm
@@ -318,13 +318,19 @@
slowdown = SLOWDOWN_ARMOR_LIGHT
-/obj/item/clothing/suit/storage/marine/faction/UPP/army/simple
- name = "6B70 personal body armour"
+/obj/item/clothing/suit/armor/vest/UPP
icon_state = "upp_generic_ballistic_armor"
+ icon = 'icons/obj/items/clothing/suits/suits_by_faction/UPP.dmi'
+ item_icons = list(
+ WEAR_JACKET = 'icons/mob/humans/onmob/clothing/suits/suits_by_faction/UPP.dmi'
+ )
-/obj/item/clothing/suit/storage/marine/faction/UPP/army/alt
- name = "6B75 personal body armour"
+/obj/item/clothing/suit/armor/vest/UPP/alt
icon_state = "upp_ballistic_armor"
+ icon = 'icons/obj/items/clothing/suits/suits_by_faction/UPP.dmi'
+ item_icons = list(
+ WEAR_JACKET = 'icons/mob/humans/onmob/clothing/suits/suits_by_faction/UPP.dmi'
+ )
// People's Armed Police
diff --git a/code/modules/cm_marines/equipment/maps.dm b/code/modules/cm_marines/equipment/maps.dm
index 8d7424161e3f..bfef77ae20d5 100644
--- a/code/modules/cm_marines/equipment/maps.dm
+++ b/code/modules/cm_marines/equipment/maps.dm
@@ -157,8 +157,9 @@ GLOBAL_LIST_INIT(mapless_maps, list(MAP_RUNTIME, MAP_CHINOOK, MAIN_SHIP_DEFAULT_
/obj/item/map/sekhmet_swamp_map
name = "\improper SI-391 Sekhmet Swamp map"
- desc = "An overview of the Sekhmet Swamp research facility schematics."
+ desc = "An overview of the Sekhmet Swamp medical research facility colony schematics."
html_link = "images/1/18/Map_icecolony.png"
+ color = "#8cab00"
/obj/item/map/galaxy
name = "\improper Galaxy map"
diff --git a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm
index 6d1838075825..37bc39008d8e 100644
--- a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm
+++ b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm
@@ -181,7 +181,7 @@
if(4)
new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/army_beret(new_human), WEAR_HEAD)
new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/army/alt(new_human), WEAR_BODY)
- new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/army/alt(new_human), WEAR_JACKET)
+ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/UPP/alt(new_human), WEAR_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/black/knife(new_human), WEAR_FEET)
new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran(new_human), WEAR_HANDS)
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/brown/half_full(new_human), WEAR_WAIST)
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 7070e8bb3bed..1a58a154a1dd 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -225,6 +225,36 @@
populate()
..()
+/obj/structure/filingcabinet/dark/security
+ var/virgin = 1
+
+
+/obj/structure/filingcabinet/dark/security/proc/populate()
+ if(virgin)
+ for(var/datum/data/record/G in GLOB.data_core.general)
+ var/datum/data/record/S
+ for(var/datum/data/record/R in GLOB.data_core.security)
+ if((R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"]))
+ S = R
+ break
+ if(S)
+ var/obj/item/paper/P = new /obj/item/paper(src)
+ P.info = "
Security Record
"
+ P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
"
+ P.info += "
\nSecurity Data
\nCriminal Status: [S.fields["criminal"]]
\n
\nIncidents: [S.fields["incident"]]
\n
\nComments/Log
"
+ var/counter = 1
+ while(S.fields["com_[counter]"])
+ P.info += "[S.fields["com_[counter]"]]
"
+ counter++
+ P.info += ""
+ P.name = "Security Record ([G.fields["name"]])"
+ virgin = 0 //tabbing here is correct- it's possible for people to try and use it
+ //before the records have been generated, so we do this inside the loop.
+
+/obj/structure/filingcabinet/dark/security/attack_hand()
+ populate()
+ ..()
+
/*
* Medical Record Cabinets
*/
@@ -258,6 +288,36 @@
populate()
..()
+/obj/structure/filingcabinet/dark/medical
+ var/virgin = 1
+
+/obj/structure/filingcabinet/dark/medical/proc/populate()
+ if(virgin)
+ for(var/datum/data/record/G in GLOB.data_core.general)
+ var/datum/data/record/M
+ for(var/datum/data/record/R as anything in GLOB.data_core.medical)
+ if((R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"]))
+ M = R
+ break
+ if(M)
+ var/obj/item/paper/P = new /obj/item/paper(src)
+ P.info = "Medical Record
"
+ P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
"
+
+ P.info += "
\nMedical Data
\nBlood Type: [M.fields["blood_type"]]
\n
\nMinor Disabilities: [M.fields["minor_disability"]]
\nDetails: [M.fields["minor_disability_details"]]
\n
\nMajor Disabilities: [M.fields["major_disability"]]
\nDetails: [M.fields["major_disability_details"]]
\n
\nAllergies: [M.fields["allergies"]]
\nDetails: [M.fields["allergies_details"]]
\n
\nCurrent Diseases: [M.fields["diseases"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["diseases_details"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\nComments/Log
"
+ var/counter = 1
+ while(M.fields["com_[counter]"])
+ P.info += "[M.fields["com_[counter]"]]
"
+ counter++
+ P.info += ""
+ P.name = "Medical Record ([G.fields["name"]])"
+ virgin = 0 //tabbing here is correct- it's possible for people to try and use it
+ //before the records have been generated, so we do this inside the loop.
+
+/obj/structure/filingcabinet/dark/medical/attack_hand()
+ populate()
+ ..()
+
/*
* Hydroponics Cabinets
*/
@@ -271,3 +331,33 @@
name = "disk cabinet"
desc = "A large cabinet with drawers. This one is meant for storing floral data disks."
allowed_types = list(/obj/item/disk)
+
+// Dark Metal
+
+/obj/structure/filingcabinet/dark
+ name = "filing cabinet"
+ desc = "A large cabinet with drawers."
+ icon = 'icons/obj/structures/props/furniture/misc.dmi'
+ icon_state = "darkfilingcabinet"
+
+/obj/structure/filingcabinet/dark/chestdrawer
+ name = "chest drawer"
+ icon_state = "darkchestdrawer"
+
+/obj/structure/filingcabinet/dark/filingcabinet //not changing the path to avoid unecessary map issues, but please don't name stuff like this in the future -Pete
+ icon_state = "darktallcabinet"
+
+// Wood
+
+/obj/structure/filingcabinet/wood
+ name = "filing cabinet"
+ desc = "A large cabinet with drawers."
+ icon = 'icons/obj/structures/props/furniture/misc.dmi'
+ icon_state = "woodfilingcabinet"
+
+/obj/structure/filingcabinet/wood/chestdrawer
+ name = "chest drawer"
+ icon_state = "woodchestdrawer"
+
+/obj/structure/filingcabinet/wood/filingcabinet //not changing the path to avoid unecessary map issues, but please don't name stuff like this in the future -Pete
+ icon_state = "woodtallcabinet"
diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm
index e54ecc1ea15c..fddd7c27e0b0 100644
--- a/code/modules/shuttle/ripple.dm
+++ b/code/modules/shuttle/ripple.dm
@@ -17,6 +17,7 @@
not to be under it."
icon = 'icons/effects/effects.dmi'
icon_state = "shadow_square"
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
/obj/effect/abstract/ripple/Initialize(mapload, time_left)
. = ..()
diff --git a/code/modules/vehicles/hardpoints/wheels/van_wheels.dm b/code/modules/vehicles/hardpoints/wheels/van_wheels.dm
index f2dce92c84b3..2082f5ffb2c1 100644
--- a/code/modules/vehicles/hardpoints/wheels/van_wheels.dm
+++ b/code/modules/vehicles/hardpoints/wheels/van_wheels.dm
@@ -12,3 +12,18 @@
health = 250
move_delay = VEHICLE_SPEED_VERYFAST
+
+/obj/item/hardpoint/locomotion/hovercraft_propellers
+ name = "hovercraft propellers"
+ desc = "Integral to the movement of the hovercraft."
+ icon = 'icons/obj/vehicles/hardpoints/hovercraft.dmi'
+
+ icon_state = "hovercraft_propellers"
+ disp_icon = "van"
+ disp_icon_state = "wheels"
+
+ slot = HDPT_WHEELS
+
+ health = 250
+
+ move_delay = VEHICLE_SPEED_VERYFAST
diff --git a/code/modules/vehicles/interior/areas.dm b/code/modules/vehicles/interior/areas.dm
index 84eba94d6860..3364819939ab 100644
--- a/code/modules/vehicles/interior/areas.dm
+++ b/code/modules/vehicles/interior/areas.dm
@@ -45,3 +45,7 @@
/area/interior/vehicle/arc
name = "\improper ARC interior"
icon_state = "arc"
+
+/area/interior/vehicle/hovercraft
+ name = "hovercraft interior"
+ icon_state = "van"
diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm
index 7048aa44ccc3..86110092efa9 100644
--- a/code/modules/vehicles/interior/interactable/seats.dm
+++ b/code/modules/vehicles/interior/interactable/seats.dm
@@ -327,6 +327,7 @@
var/mob_old_x = 0
var/buckle_offset_y = 0
var/mob_old_y = 0
+ var/allways_undense = FALSE
/obj/structure/bed/chair/vehicle/Initialize()
. = ..()
@@ -384,24 +385,34 @@
if(buckle_offset_y != 0)
M.pixel_y = mob_old_y
mob_old_y = 0
-
- for(var/obj/structure/bed/chair/vehicle/VS in get_turf(src))
- if(VS != src)
- //if both seats on same tile have buckled mob, we become dense, otherwise, not dense.
- if(buckled_mob)
- if(VS.buckled_mob)
- REMOVE_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
- REMOVE_TRAIT(VS.buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ if(allways_undense)
+ ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ else
+ for(var/obj/structure/bed/chair/vehicle/VS in get_turf(src))
+ if(VS != src)
+ //if both seats on same tile have buckled mob, we become dense, otherwise, not dense.
+ if(buckled_mob)
+ if(VS.buckled_mob)
+ REMOVE_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ REMOVE_TRAIT(VS.buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ else
+ ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
else
- ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
- else
- if(VS.buckled_mob)
- ADD_TRAIT(VS.buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
- REMOVE_TRAIT(M, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
- break
+ if(VS.buckled_mob)
+ ADD_TRAIT(VS.buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ REMOVE_TRAIT(M, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ break
+
+
handle_rotation()
+/obj/structure/bed/chair/vehicle/unbuckle()
+ if(buckled_mob && buckled_mob.buckled == src)
+ REMOVE_TRAIT(buckled_mob, TRAIT_UNDENSE, DOUBLE_SEATS_TRAIT)
+ . = ..()
+
+
//attack handling
/obj/structure/bed/chair/vehicle/attack_alien(mob/living/user)
@@ -475,3 +486,21 @@
name = "passenger seat"
desc = "A sturdy chair with a brace that lowers over your body. Prevents being flung around in vehicle during crash being injured as a result. Fasten your seatbelts, kids! Fix with welding tool in case of damage."
icon = 'icons/obj/vehicles/interiors/general_wy.dmi'
+
+// Comfy Seats
+
+/obj/structure/bed/chair/vehicle/comfy
+ icon = 'icons/obj/vehicles/interiors/seats.dmi'
+ allways_undense = TRUE
+
+/obj/structure/bed/chair/vehicle/comfy/alt
+ icon_state = "alt_vehicle_seat"
+
+/obj/structure/bed/chair/vehicle/comfy/alt_1
+ icon_state = "alt1_vehicle_seat"
+
+/obj/structure/bed/chair/vehicle/comfy/alt_2
+ icon_state = "alt2_vehicle_seat"
+
+/obj/structure/bed/chair/vehicle/comfy/alt_3
+ icon_state = "alt3_vehicle_seat"
diff --git a/code/modules/vehicles/interior/interior_landmarks.dm b/code/modules/vehicles/interior/interior_landmarks.dm
index b57defea5f4b..96c210106591 100644
--- a/code/modules/vehicles/interior/interior_landmarks.dm
+++ b/code/modules/vehicles/interior/interior_landmarks.dm
@@ -311,6 +311,8 @@
V.pixel_y = pixel_y
V.layer = layer
V.alpha = alpha
+ V.icon = icon
+ V.icon_state = icon_state
qdel(src)
@@ -331,5 +333,6 @@
V.pixel_y = pixel_y
V.alpha = alpha
V.icon = icon
+ V.icon_state = icon_state
qdel(src)
diff --git a/code/modules/vehicles/van/hovercraft.dm b/code/modules/vehicles/van/hovercraft.dm
new file mode 100644
index 000000000000..61f70378c0c0
--- /dev/null
+++ b/code/modules/vehicles/van/hovercraft.dm
@@ -0,0 +1,306 @@
+
+//Trucks
+//Read the documentation in multitile.dm before trying to decipher this stuff
+
+/obj/vehicle/multitile/hovercraft
+ name = "VAT-02B 'Temee' Hovercraft"
+ desc = "A small lightly armoured multipurpose hovercraft. Entrances on the sides."
+ desc_lore = "A lightly armoured multipurpose hovercraft developed in 2179 by the UPP under a joint-project led by Mongolia, Russia and Kazakhstan to produce a high speed, long range hovercraft. The VAT-02 was born as a civilian modification of the military VSK-44 hovercraft. With the VAT-02B variant 'Temee' or 'Camel' being popular on worlds with extreme terrain changes or long tracks of flat ground by adventurous colonists."
+ layer = ABOVE_XENO_LAYER
+
+ icon = 'icons/obj/vehicles/hovercraft.dmi'
+ icon_state = "hovercraft_base"
+ pixel_x = -16
+ pixel_y = -16
+
+ bound_width = 64
+ bound_height = 64
+
+ bound_x = 0
+ bound_y = 0
+
+ interior_map = /datum/map_template/interior/hovercraft
+
+ entrances = list(
+ "left" = list(2, 0),
+ "right" = list(-1, 0),
+ )
+
+ vehicle_flags = VEHICLE_CLASS_WEAK
+
+ passengers_slots = 6
+ xenos_slots = 2
+
+ misc_multipliers = list(
+ "move" = 0.5, // fucking annoying how this is the only way to modify speed
+ "accuracy" = 1,
+ "cooldown" = 1
+ )
+
+ movement_sound = 'sound/vehicles/hovercraft_driving.ogg'
+ honk_sound = 'sound/vehicles/boat_horn.ogg'
+
+ vehicle_light_range = 8
+
+ move_max_momentum = 3
+
+ hardpoints_allowed = list(
+ /obj/item/hardpoint/locomotion/hovercraft_propellers,
+ )
+
+ move_turn_momentum_loss_factor = 1
+
+ req_access = list()
+ req_one_access = list()
+
+ door_locked = FALSE
+
+ mob_size_required_to_hit = MOB_SIZE_XENO
+
+ var/overdrive_next = 0
+ var/overdrive_cooldown = 15 SECONDS
+ var/overdrive_duration = 3 SECONDS
+ var/overdrive_speed_mult = 0.3 // Additive (30% more speed, adds to 80% more speed)
+
+ var/momentum_loss_on_weeds_factor = 0.2
+
+ move_on_turn = TRUE
+
+ var/list/mobs_under = list()
+ var/image/under_image
+ var/image/normal_image
+
+ var/next_push = 0
+ var/push_delay = 0.5 SECONDS
+
+/obj/vehicle/multitile/hovercraft/Initialize()
+ . = ..()
+ under_image = image(icon, src, icon_state, layer = BELOW_MOB_LAYER)
+ under_image.alpha = 127
+
+ normal_image = image(icon, src, icon_state, layer = layer)
+
+ icon_state = null
+
+ RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGGED_IN, PROC_REF(add_default_image))
+
+ for(var/I in GLOB.player_list)
+ add_default_image(SSdcs, I)
+
+/obj/vehicle/multitile/hovercraft/BlockedPassDirs(atom/movable/mover, target_dir)
+ if(mover in mobs_under) //can't collide with the thing you're buckled to
+ return NO_BLOCKED_MOVEMENT
+
+ if(isliving(mover))
+ var/mob/living/M = mover
+ if(M.mob_flags & SQUEEZE_UNDER_VEHICLES)
+ add_under_van(M)
+ return NO_BLOCKED_MOVEMENT
+
+ if(M.body_position == LYING_DOWN)
+ return NO_BLOCKED_MOVEMENT
+
+ if(M.mob_size >= MOB_SIZE_IMMOBILE && next_push < world.time)
+ if(try_move(target_dir, force=TRUE))
+ next_push = world.time + push_delay
+ return NO_BLOCKED_MOVEMENT
+
+ return ..()
+
+/*
+** PRESETS
+*/
+/obj/vehicle/multitile/hovercraft/pre_movement()
+ if(locate(/obj/effect/alien/weeds) in loc)
+ move_momentum *= momentum_loss_on_weeds_factor
+
+ . = ..()
+
+ for(var/I in mobs_under)
+ var/mob/M = I
+ if(!(M.loc in locs))
+ remove_under_van(M)
+
+/obj/vehicle/multitile/hovercraft/proc/add_under_van(mob/living/L)
+ if(L in mobs_under)
+ return
+
+ mobs_under += L
+ RegisterSignal(L, COMSIG_PARENT_QDELETING, PROC_REF(remove_under_van))
+ RegisterSignal(L, COMSIG_MOB_LOGGED_IN, PROC_REF(add_client))
+ RegisterSignal(L, COMSIG_MOVABLE_MOVED, PROC_REF(check_under_van))
+
+ if(L.client)
+ add_client(L)
+
+/obj/vehicle/multitile/hovercraft/proc/remove_under_van(mob/living/L)
+ SIGNAL_HANDLER
+ mobs_under -= L
+
+ if(L.client)
+ L.client.images -= under_image
+ add_default_image(SSdcs, L)
+
+ UnregisterSignal(L, list(
+ COMSIG_PARENT_QDELETING,
+ COMSIG_MOB_LOGGED_IN,
+ COMSIG_MOVABLE_MOVED,
+ ))
+
+/obj/vehicle/multitile/hovercraft/proc/check_under_van(mob/M, turf/oldloc, direction)
+ SIGNAL_HANDLER
+ if(!(M.loc in locs))
+ remove_under_van(M)
+
+/obj/vehicle/multitile/hovercraft/proc/add_client(mob/living/L)
+ SIGNAL_HANDLER
+ L.client.images += under_image
+ L.client.images -= normal_image
+
+/obj/vehicle/multitile/hovercraft/proc/add_default_image(subsystem, mob/M)
+ SIGNAL_HANDLER
+ M.client.images += normal_image
+
+/obj/vehicle/multitile/hovercraft/Destroy()
+ for(var/I in mobs_under)
+ remove_under_van(I)
+
+ for(var/I in GLOB.player_list)
+ var/mob/M = I
+ M.client.images -= normal_image
+
+ QDEL_NULL(lighting_holder)
+
+ return ..()
+
+/obj/vehicle/multitile/hovercraft/attackby(obj/item/O, mob/user)
+ if(user.z != z)
+ return ..()
+
+ if(iswelder(O) && health >= initial(health))
+ if(!HAS_TRAIT(O, TRAIT_TOOL_BLOWTORCH))
+ to_chat(user, SPAN_WARNING("You need a stronger blowtorch!"))
+ return
+ var/obj/item/hardpoint/H
+ for(var/obj/item/hardpoint/potential_hardpoint in hardpoints)
+ if(potential_hardpoint.health < initial(potential_hardpoint.health))
+ H = potential_hardpoint
+ break
+
+ if(H)
+ H.handle_repair(O, user)
+ update_icon()
+ return
+
+ . = ..()
+
+
+/obj/vehicle/multitile/hovercraft/handle_click(mob/living/user, atom/A, list/mods)
+ if(mods[SHIFT_CLICK] && !mods[ALT_CLICK])
+ if(overdrive_next > world.time)
+ to_chat(user, SPAN_WARNING("You can't activate overdrive yet! Wait [round((overdrive_next - world.time) / 10, 0.1)] seconds."))
+ return
+
+ misc_multipliers["move"] -= overdrive_speed_mult
+ addtimer(CALLBACK(src, PROC_REF(reset_overdrive)), overdrive_duration)
+
+ overdrive_next = world.time + overdrive_cooldown
+ to_chat(user, SPAN_NOTICE("You activate overdrive."))
+ playsound(src, 'sound/vehicles/hovercraft_overdrive.ogg', 75, FALSE)
+ return
+
+ return ..()
+
+/obj/vehicle/multitile/hovercraft/proc/reset_overdrive()
+ misc_multipliers["move"] += overdrive_speed_mult
+
+/obj/vehicle/multitile/hovercraft/get_projectile_hit_boolean(obj/projectile/P)
+ if(src == P.original) //clicking on the van itself will hit it.
+ var/hitchance = P.get_effective_accuracy()
+ if(prob(hitchance))
+ return TRUE
+ return FALSE
+
+/obj/vehicle/multitile/hovercraft/Collide(atom/A)
+ if(!seats[VEHICLE_DRIVER])
+ return FALSE
+
+ if(istype(A, /obj/structure/barricade/plasteel))
+ return ..()
+
+ if(istype(A, /turf/closed/wall) || \
+ istype(A, /obj/structure/barricade/sandbags) || \
+ istype(A, /obj/structure/barricade/metal) || \
+ istype(A, /obj/structure/barricade/deployable) || \
+ istype(A, /obj/structure/machinery/cryopod)) //Can no longer runover cryopods
+
+ return FALSE
+
+ return ..()
+
+/*
+** PRESETS SPAWNERS
+*/
+
+/obj/effect/vehicle_spawner/hovercraft
+ name = "Hovercraft Spawner"
+ icon = 'icons/obj/vehicles/hovercraft.dmi'
+ icon_state = "hovercraft_base"
+ pixel_x = -16
+ pixel_y = -16
+
+/obj/effect/vehicle_spawner/hovercraft/Initialize()
+ . = ..()
+ spawn_vehicle()
+ qdel(src)
+
+//PRESET: no hardpoints
+/obj/effect/vehicle_spawner/hovercraft/spawn_vehicle()
+ var/obj/vehicle/multitile/hovercraft/VAN = new (loc)
+
+ load_misc(VAN)
+ handle_direction(VAN)
+ VAN.update_icon()
+
+//PRESET: wheels installed, destroyed
+/obj/effect/vehicle_spawner/hovercraft/decrepit/spawn_vehicle()
+ var/obj/vehicle/multitile/hovercraft/VAN = new (loc)
+
+ load_misc(VAN)
+ load_hardpoints(VAN)
+ handle_direction(VAN)
+ load_damage(VAN)
+ VAN.update_icon()
+
+/obj/effect/vehicle_spawner/hovercraft/decrepit/load_hardpoints(obj/vehicle/multitile/van/V)
+ V.add_hardpoint(new /obj/item/hardpoint/locomotion/hovercraft_propellers)
+
+//PRESET: wheels installed
+/obj/effect/vehicle_spawner/hovercraft/fixed/spawn_vehicle()
+ var/obj/vehicle/multitile/hovercraft/VAN = new (loc)
+
+ load_misc(VAN)
+ load_hardpoints(VAN)
+ handle_direction(VAN)
+ VAN.update_icon()
+
+/obj/effect/vehicle_spawner/hovercraft/fixed/load_hardpoints(obj/vehicle/multitile/van/V)
+ V.add_hardpoint(new /obj/item/hardpoint/locomotion/hovercraft_propellers)
+
+/obj/structure/interior_exit/vehicle/hovercraft
+ name = "Hovercraft side door"
+ icon = 'icons/obj/vehicles/interiors/hovercraft.dmi'
+ icon_state = "interior_door"
+
+/obj/structure/interior_exit/vehicle/hovercraft/exterior
+ name = "Hovercraft side door"
+ icon = 'icons/obj/vehicles/interiors/hovercraft.dmi'
+ icon_state = "exterior_door"
+
+/obj/structure/prop/vehicle/hovercraft
+ name = "Hovercraft chassis"
+
+ icon = 'icons/obj/vehicles/interiors/hovercraft_chassis.dmi'
+ icon_state = "hovercraft_chassis"
+ layer = ABOVE_TURF_LAYER
+ mouse_opacity = FALSE
diff --git a/colonialmarines.dme b/colonialmarines.dme
index 325ff24d159c..fa692a0919a8 100644
--- a/colonialmarines.dme
+++ b/colonialmarines.dme
@@ -2709,6 +2709,7 @@
#include "code\modules\vehicles\tank\tank.dm"
#include "code\modules\vehicles\van\box_van.dm"
#include "code\modules\vehicles\van\clf_van.dm"
+#include "code\modules\vehicles\van\hovercraft.dm"
#include "code\modules\vehicles\van\interior.dm"
#include "code\modules\vehicles\van\pizza_van.dm"
#include "code\modules\vehicles\van\van.dm"
diff --git a/icons/landmarks.dmi b/icons/landmarks.dmi
index eebb5d302051dde71b4bfca7fa23a22169aa8f2b..0c2315b5dc30f74107be9c4ecf66464516420ed9 100644
GIT binary patch
literal 59111
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