Cere-station [100% free lag edition] (#19951)

* change da world

* compile, thanks

* Update cere.dmm

* Update cere.dmm

* ready for test

* use the proper name please

its CERE not ceres.

* stops shuttle from forcibly docking with podbay

* things are now different

Landmark update for job spawns.
More hardsuits in EVA, engi, and atmos.
Disaster counters properly added.
Vault is now more spooky.
Gamma armoury moved to below gulag shuttle.
Sleeping rooms replaced with arcade and swimming pool.
Captains ERP nest deleted.
Tcomms now looks like it was designed by a functional human being.
Mining doesn't need a weird glass box.
Shuffled docking ports at arrivals.
Windows are now reinforced windows.
Mr changs has arrived.

* disposals functions now

* now with 50% more air

* gamma armoury doesn't attempt to become one with gulag shuttle

* disposals net is airless, vault is enclosed in some rock

* standard number of escape pods

* slight fixes

* more bugfixes

* lighting fixes

* divided hallways, added psych office, more cams

* fire alarms, shutters, and fixes

* temporary DME edit to set cere as default map

* fixed shuttle runtime

* this compiles and runs locally, please CI

* fixes hidden double pipe

* more double pipes

* more vents and scrubbers, morgue body delivery

* tweaks to secbot pathing

* various QoL changes

* Medbay expansion, med+arrival maints expansion.

* the definitive air alarm update, and more!

* Departmental emergency EVA suits, signage, tweaks.

* 2 Cryodorms added (oops). Asteroid sound updates.

* Borg cryo, shutters correctly rotated.

* Supply shuttle edit. I like joining the map queue.

* minor fixes, grav gen isolation.

* minor fixes

* Disposal fixes, lighting adjustment

* SabreML feedback changes

* More minor fixes

* More fixes

* NSS Farragus

* (most) floors turn into asteroid sand, not spess

* reverted random file edit, fixed mr teeny

* minor fixes

* big bombs can breach asteroid areas

* Asteroid plating exists, did you know? I do now!

* camera network pass

* walls become sand too on destruction

* lighting pass

* implements feedback, dramatically reduces ores

* yeets ores entirely, sci break room added

* roundstart pads, more solars, bigger departures

* runtimes

* mining resistant rock

* variable names are important

* AoE KA doesnt affect rocks

* actually fix AoE stuff

* now with 1000% more bats

* no sandy cables, a brig exit chute, more head ssu

* mech drills are not pickaxes

* proc rename, perma window, faster sapce bridges

* Brig rework

* robotics changes

* More sci edits

* Rotayshun changes

* dme edit

* Delete cerestation.dm

begone, thot

* temp edit so it loads cere as default

* merge conflicts begone

* decal purge

* map repipe

* removes under-wall pipe adapters

* shuffled maint areas

* dirt purge

* longest bridge rework

* fixes

* PPI feedback

* kitchen does, in fact, need air

* permabrig tweaks

* restores cc changes

* merge part 2

* tag purge

* secret clown HQ got me shook

* SQUASHENING

* solar shuffle

* directional consoles

* remove TM edits due to rotation

* merge conflict part 2

* pod pilot deletion

* cold rock, window tint fixes, etc.

* further red rocks

* further tweaks

* more standardising

* robotics redo

* carpet time

* CI update for cere

* Apply suggestions from code review

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>

* more squash, corridor cam removal, etc.

* light switches

* minor fixes

* temp cere default

* FOODCART!

* fixes

* no airless no more

* space_hall

* compat pass 1

* make it work

* more changes

* slimmening

* air alarm tweak

* TM commit

* ci tests

* final CI changes?

* squash. squeeze, optimise

* wall vent

* disposals fix, more squeezing

* bugfixes

* false walls

* bedroom culling

* edits and fixes

* tweaks

* changes

* det window

* further tweaks

* Revert "TM commit"

This reverts commit 9e8814937f.

* More TM only changes reverted

* fixes smoothing with falsewalls

* denth changes

* the airlockenning

* cicicici

* CICICICI

* further tweaks

* further tweaks

* reverts weird sand behaviour code from ages ago

* oops

* universal adapter my beloathed

* nanomap moment

* webmap

* cere nanomap

* feedback updates

* updates

* airlock tweaks

* vents and tweaks

* solars moment

* triple APC fix

* south of where?

* airlock helpers

* disposal flap purge

* outpost monitor with actual real networks?

* tweakeroni

* fixes

* fixes

* tweaks

* fixes

* medbay improvements

* power and flaps

* changes

* aa changes

* fixes

* more fixeronies

* fixes!

* reversed

* chemicals

* chem tweaks

* fixes

* shuttle fixes

* holopad pass

* editseditsedits

* lightslightslights

* door

* /obj/machinery/computer/security/telescreen/entertainment

* sonic underground

* actual sonic reference

* Apply suggestions from code review

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>

* Tsrc

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
This commit is contained in:
S34N
2023-01-17 22:23:09 +00:00
committed by GitHub
parent dd032c451d
commit 802408a923
35 changed files with 159265 additions and 68 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false # Let all map tests run to completion
matrix:
maptype: ['/datum/map/cyberiad', '/datum/map/delta', '/datum/map/metastation']
maptype: ['/datum/map/cyberiad', '/datum/map/delta', '/datum/map/metastation', '/datum/map/cerestation']
byondtype: ['STABLE', 'BETA']
services:
mariadb:
File diff suppressed because it is too large Load Diff
+2
View File
@@ -84,6 +84,8 @@
#define COLOR_ROCK "#464646"
#define COLOR_NULLGLASS "#ff6088"
#define COLOR_DIAMOND "#d8d4ea"
#define COLOR_ANCIENT_ROCK "#575757"
#define COLOR_COLD_ANCIENT_ROCK "#575764"
#define COLOR_HEALING_GREEN "#375637"
//Color defines used by the assembly detailer.
+2 -1
View File
@@ -66,7 +66,7 @@ DEFINE_BITFIELD(smoothing_flags, list(
#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(25) ///turf/simulated/wall/material
#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(26) ///turf/simulated/wall/r_wall/syndicate, /turf/simulated/indestructible/syndicate
#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(27) ///turf/simulated/indestructible/hotelwall
#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(28) ///turf/simulated/mineral, /turf/simulated/indestructible
#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(28) ///turf/simulated/mineral, /obj/structure/falsewall/rock_ancient
#define SMOOTH_GROUP_BOSS_WALLS S_TURF(29) ///turf/simulated/indestructible/riveted/boss
#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(30) ///turf/simulated/wall/mineral/titanium/survival
@@ -98,6 +98,7 @@ DEFINE_BITFIELD(smoothing_flags, list(
#define SMOOTH_GROUP_REGULAR_WALLS S_OBJ(17) ///turf/simulated/wall, /obj/structure/falsewall
#define SMOOTH_GROUP_REINFORCED_WALLS S_OBJ(18) ///turf/simulated/wall/r_wall, /obj/structure/falsewall/reinforced
#define SMOOTH_GROUP_CULT_WALLS S_OBJ(19) ///turf/simulated/wall/cult
#define SMOOTH_GROUP_ASTEROID_WALLS S_OBJ(12) ///turf/simulated/mineral, /obj/structure/falsewall/rock_ancient
#define SMOOTH_GROUP_WINDOW_FULLTILE S_OBJ(21) ///turf/simulated/indestructible/fakeglass, /obj/structure/window/full/basic, /obj/structure/window/full/plasmabasic, /obj/structure/window/full/plasmareinforced, /obj/structure/window/full/reinforced
#define SMOOTH_GROUP_WINDOW_FULLTILE_BRASS S_OBJ(22) ///obj/structure/window/brass/fulltile
+2
View File
@@ -95,6 +95,8 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
#define ischasm(A) (istype(A, /turf/simulated/floor/chasm))
#define is_ancient_rock(A) (istype(A, /turf/simulated/mineral/ancient))
// Areas
//#define isarea(A, B, C...) BYOND proc, can test multiple arguments and only return TRUE if all are areas
+1 -1
View File
@@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(TAGGERLOCATIONS, list("Disposals",
"Atmospherics", "HoS Office", "Security", "Medbay",
"CMO Office", "Chemistry", "Research", "RD Office",
"Robotics", "HoP Office", "Library", "Chapel", "Captain's Office",
"Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics", "Detective"))
"Bar", "Kitchen", "Hydroponics", "Janitor Closet","Genetics", "Detective", "Morgue"))
GLOBAL_LIST_INIT(hit_appends, list("-OOF", "-ACK", "-UGH", "-HRNK", "-HURGH", "-GLORF"))
+1
View File
@@ -415,6 +415,7 @@ GLOBAL_LIST_INIT(vox_sounds, list(
"fahrenheit" = 'sound/vox_fem/fahrenheit.ogg',
"failed" = 'sound/vox_fem/failed.ogg',
"failure" = 'sound/vox_fem/failure.ogg',
"farragus" = 'sound/vox_fem/farragus.ogg',
"farthest" = 'sound/vox_fem/farthest.ogg',
"fast" = 'sound/vox_fem/fast.ogg',
"fatal" = 'sound/vox_fem/fatal.ogg',
+28
View File
@@ -34,10 +34,38 @@
power_light = FALSE
outdoors = TRUE
ambientsounds = MINING_SOUNDS
sound_environment = SOUND_AREA_ASTEROID
flags = NONE
min_ambience_cooldown = 70 SECONDS
max_ambience_cooldown = 220 SECONDS
/area/mine/unexplored/cere/ai
name = "AI Asteroid"
/area/mine/unexplored/cere/cargo
name = "Cargo Asteroid"
/area/mine/unexplored/cere/civilian
name = "Civilian Asteroid"
/area/mine/unexplored/cere/command
name = "Command Asteroid"
/area/mine/unexplored/cere/docking
name = "Docking Asteroid"
/area/mine/unexplored/cere/engineering
name = "Engineering Asteroid"
/area/mine/unexplored/cere/medical
name = "Medical Asteroid"
/area/mine/unexplored/cere/research
name = "Research Asteroid"
/area/mine/unexplored/cere/orbiting
name = "Near Station Asteroids"
/area/mine/lobby
name = "Mining Station"
+132 -16
View File
@@ -681,6 +681,42 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Waste Disposal"
icon_state = "disposals"
/area/maintenance/disposal/southwest
name = "South Western Disposals"
/area/maintenance/disposal/south
name = "Southern Disposals"
/area/maintenance/disposal/east
name = "Eastern Disposals"
/area/maintenance/disposal/northeast
name = "North Eastern Disposals"
/area/maintenance/disposal/north
name = "Northern Disposals"
/area/maintenance/disposal/northwest
name = "North Western Disposals"
/area/maintenance/disposal/west
name = "Western Disposals"
/area/maintenance/disposal/westalt
name = "Western Secondary Disposals"
/area/maintenance/disposal/external/southwest
name = "South-Western External Waste Belt"
/area/maintenance/disposal/external/southeast
name = "South-Eastern External Waste Belt"
/area/maintenance/disposal/external/east
name="Eastern External Waste Belt"
/area/maintenance/disposal/external/north
name = "Northern External Waste Belt"
/area/maintenance/genetics
name = "Genetics Maintenance"
icon_state = "asmaint"
@@ -730,17 +766,49 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "\improper Fore Primary Hallway"
icon_state = "hallF"
/area/hallway/primary/fore/west
name = "\improper Fore West Hallway"
/area/hallway/primary/fore/east
name = "\improper Fore East Hallway"
/area/hallway/primary/fore/north
name = "\improper Fore North Hallway"
/area/hallway/primary/fore/south
name = "\improper Fore South Hallway"
/area/hallway/primary/starboard
name = "\improper Starboard Primary Hallway"
icon_state = "hallS"
/area/hallway/primary/starboard/west
name = "\improper Starboard West Hallway"
/area/hallway/primary/starboard/east
name = "\improper Starboard East Hallway"
/area/hallway/primary/starboard/north
name = "\improper Starboard North Hallway"
/area/hallway/primary/starboard/south
name = "\improper Starboard South Hallway"
/area/hallway/primary/aft
name = "\improper Aft Primary Hallway"
icon_state = "hallA"
/area/hallway/primary/aft/west
name = "\improper Aft West Hallway"
/area/hallway/primary/aft/east
name = "\improper Aft East Hallway"
/area/hallway/primary/aft/north
name = "\improper Aft North Hallway"
/area/hallway/primary/aft/south
name = "\improper Aft South Hallway"
/area/hallway/primary/port
name = "\improper Port Primary Hallway"
@@ -752,6 +820,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/hallway/primary/port/east
name = "\improper Port East Hallway"
/area/hallway/primary/port/north
name = "\improper Port North Hallway"
/area/hallway/primary/port/south
name = "\improper Port South Hallway"
/area/hallway/primary/central
name = "\improper Central Primary Hallway"
icon_state = "hallC"
@@ -764,6 +838,36 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/hallway/primary/central/ne
/area/hallway/primary/central/sw
/area/hallway/primary/central/se
/area/hallway/spacebridge
sound_environment = SOUND_AREA_LARGE_ENCLOSED
icon_state = "hall_space"
/area/hallway/spacebridge/dockmed
name = "Docking-Medical Bridge"
/area/hallway/spacebridge/scidock
name = "Science-Docking Bridge"
/area/hallway/spacebridge/servsci
name = "Service-Science Bridge"
/area/hallway/spacebridge/serveng
name = "Service-Engineering Bridge"
/area/hallway/spacebridge/engmed
name = "Engineering-Medical Bridge"
/area/hallway/spacebridge/medcargo
name = "Medical-Cargo Bridge"
/area/hallway/spacebridge/cargocom
name = "Cargo-AI-Command Bridge"
/area/hallway/spacebridge/sercom
name = "Command-Service Bridge"
/area/hallway/spacebridge/comeng
name = "Command-Engineering Bridge"
/area/hallway/secondary/exit
name = "\improper Escape Shuttle Hallway"
@@ -894,26 +998,14 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/crew_quarters/sleep
name = "\improper Dormitories"
name = "\improper Primary Cyrogenic Dormitories"
icon_state = "Sleep"
valid_territory = FALSE
/area/crew_quarters/sleep_male
name = "\improper Male Dorm"
/area/crew_quarters/sleep/secondary
name = "\improper Secondary Cyrogenic Dormitories"
icon_state = "Sleep"
/area/crew_quarters/sleep_male/toilet_male
name = "\improper Male Toilets"
icon_state = "toilet"
/area/crew_quarters/sleep_female
name = "\improper Female Dorm"
icon_state = "Sleep"
/area/crew_quarters/sleep_female/toilet_female
name = "\improper Female Toilets"
icon_state = "toilet"
/area/crew_quarters/locker
name = "\improper Locker Room"
icon_state = "locker"
@@ -993,6 +1085,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "\improper Clown's Office"
icon_state = "clown_office"
/area/clownoffice/secret
name = "\improper Top Secret Clown HQ"
/area/mimeoffice
name = "\improper Mime's Office"
icon_state = "mime_office"
@@ -1137,6 +1232,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "aft"
/area/solar/starboard
name = "\improper Starboard Solar Array"
icon_state = "ASsolars"
/area/solar/starboard/aft
name = "\improper Aft Starboard Solar Array"
icon_state = "ASsolars"
@@ -1149,6 +1248,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "FPctrl"
/area/maintenance/starboardsolar
name = "\improper Starboard Solar Maintenance"
icon_state = "ASctrl"
/area/maintenance/starboardsolar/aft
name = "\improper Aft Starboard Solar Maintenance"
icon_state = "ASctrl"
@@ -1160,7 +1263,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "\improper Fore Starboard Solar Maintenance"
icon_state = "FSctrl"
/area/assembly/chargebay
name = "\improper Mech Bay"
icon_state = "mechbay"
@@ -1187,6 +1289,18 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "teleporter"
ambientsounds = ENGINEERING_SOUNDS
/area/teleporter/quantum/security
name = "Security Quantum Pad"
/area/teleporter/quantum/docking
name = "Docking Quantum Pad"
/area/teleporter/quantum/science
name = "Science Quantum Pad"
/area/teleporter/quantum/cargo
name = "Cargo Quantum Pad"
/area/gateway
name = "\improper Gateway"
icon_state = "gateway"
@@ -1901,6 +2015,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
icon_state = "ai"
sound_environment = SOUND_AREA_LARGE_ENCLOSED
/area/turret_protected/aisat_interior/secondary
name = "\improper AI Satellite Secondary Antechamber"
//Misc
+8
View File
@@ -481,4 +481,12 @@
name = "Cell 6"
id = "Cell 6"
/obj/machinery/door_timer/cell_7
name = "Cell 7"
id = "Cell 7"
/obj/machinery/door_timer/cell_8
name = "Cell 8"
id = "Cell 8"
#undef CELL_NONE
+35 -10
View File
@@ -13,6 +13,24 @@
var/teleporting = FALSE //if it's in the process of teleporting
var/power_efficiency = 1
var/obj/machinery/quantumpad/linked_pad = null
var/preset_target = null
/obj/machinery/quantumpad/cere/cargo_arrivals
preset_target = /obj/machinery/quantumpad/cere/arrivals_cargo
/obj/machinery/quantumpad/cere/cargo_security
preset_target = /obj/machinery/quantumpad/cere/security_cargo
/obj/machinery/quantumpad/cere/security_cargo
preset_target = /obj/machinery/quantumpad/cere/cargo_security
/obj/machinery/quantumpad/cere/security_science
preset_target = /obj/machinery/quantumpad/cere/science_security
/obj/machinery/quantumpad/cere/science_security
preset_target = /obj/machinery/quantumpad/cere/security_science
/obj/machinery/quantumpad/cere/science_arrivals
preset_target = /obj/machinery/quantumpad/cere/arrivals_science
/obj/machinery/quantumpad/cere/arrivals_science
preset_target = /obj/machinery/quantumpad/cere/science_arrivals
/obj/machinery/quantumpad/cere/arrivals_cargo
preset_target = /obj/machinery/quantumpad/cere/cargo_arrivals
/obj/machinery/quantumpad/Initialize(mapload)
. = ..()
@@ -24,6 +42,10 @@
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
/obj/machinery/quantumpad/cere/Initialize(mapload)
. = ..()
linked_pad = locate(preset_target)
/obj/machinery/quantumpad/Destroy()
linked_pad = null
return ..()
@@ -53,17 +75,20 @@
default_deconstruction_crowbar(user, I)
/obj/machinery/quantumpad/multitool_act(mob/user, obj/item/I)
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
if(!I.multitool_check_buffer(user))
return
var/obj/item/multitool/M = I
if(panel_open)
M.set_multitool_buffer(user, src)
if(!preset_target)
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
if(!I.multitool_check_buffer(user))
return
var/obj/item/multitool/M = I
if(panel_open)
M.set_multitool_buffer(user, src)
else
linked_pad = M.buffer
to_chat(user, "<span class='notice'>You link [src] to the one in [I]'s buffer.</span>")
else
linked_pad = M.buffer
to_chat(user, "<span class='notice'>You link [src] to the one in [I]'s buffer.</span>")
to_chat(user, "<span class='notice'>[src]'s target cannot be modified!</span>")
/obj/machinery/quantumpad/screwdriver_act(mob/user, obj/item/I)
. = TRUE
@@ -25,6 +25,10 @@
var/obj/target_obj = target
if(target_obj.resistance_flags & UNACIDABLE)
return
if(is_ancient_rock(target))
visible_message("<span class='notice'>This rock appears to be resistant to all mining tools except pickaxes!</span>")
return
target.visible_message("<span class='warning'>[chassis] starts to drill [target].</span>",
"<span class='userdanger'>[chassis] starts to drill [target]...</span>",
"<span class='italics'>You hear drilling.</span>")
@@ -209,11 +209,13 @@ This spawner places pipe leading up to the interior door, you will need to finis
icon_state = "1x1_S_to_N"
interior_direction = SOUTH
exterior_direction = NORTH
/obj/effect/spawner/airlock/e_to_w
name = "1 by 1 airlock spawner (interior east, exterior west)"
icon_state = "1x1_E_to_W"
interior_direction = EAST
exterior_direction = WEST
/obj/effect/spawner/airlock/w_to_e
name = "1 by 1 airlock spawner (interior west, exterior east)"
icon_state = "1x1_W_to_E"
@@ -224,14 +226,17 @@ This spawner places pipe leading up to the interior door, you will need to finis
name = "long airlock spawner (interior north, exterior south)"
icon_state = "1x2_N_to_S"
tiles_in_y_direction = 2
/obj/effect/spawner/airlock/s_to_n/long
name = "long airlock spawner (interior south, exterior north)"
icon_state = "1x2_S_to_N"
tiles_in_y_direction = 2
/obj/effect/spawner/airlock/e_to_w/long
name = "long airlock spawner (interior east, exterior west)"
icon_state = "1x2_E_to_W"
tiles_in_x_direction = 2
/obj/effect/spawner/airlock/w_to_e/long
name = "long airlock spawner (interior west, exterior east)"
icon_state = "1x2_W_to_E"
@@ -241,18 +246,22 @@ This spawner places pipe leading up to the interior door, you will need to finis
name = "square airlock spawner (interior north, exterior south)"
icon_state = "2x2_N_to_S"
tiles_in_x_direction = 2
/obj/effect/spawner/airlock/s_to_n/long/square
name = "square airlock spawner (interior south, exterior north)"
icon_state = "2x2_S_to_N"
tiles_in_x_direction = 2
/obj/effect/spawner/airlock/e_to_w/long/square
name = "square airlock spawner (interior east, exterior west)"
icon_state = "2x2_E_to_W"
tiles_in_y_direction = 2
/obj/effect/spawner/airlock/w_to_e/long/square
name = "square airlock spawner (interior west, exterior east)"
icon_state = "2x2_W_to_E"
tiles_in_y_direction = 2
/obj/effect/spawner/airlock/long/square/e_to_s
name = "square airlock spawner (interior east, exterior south)"
icon_state = "2x2_E_to_S"
@@ -263,14 +272,17 @@ This spawner places pipe leading up to the interior door, you will need to finis
name = "rectangular airlock spawner (interior north, exterior south)"
icon_state = "3x2_N_to_S"
tiles_in_x_direction = 3
/obj/effect/spawner/airlock/s_to_n/long/square/wide
name = "rectangular airlock spawner (interior south, exterior north)"
icon_state = "3x2_S_to_N"
tiles_in_x_direction = 3
/obj/effect/spawner/airlock/e_to_w/long/square/wide
name = "rectangular airlock spawner (interior east, exterior west)"
icon_state = "3x2_E_to_W"
tiles_in_y_direction = 3
/obj/effect/spawner/airlock/w_to_e/long/square/wide
name = "rectangular airlock spawner (interior west, exterior east)"
icon_state = "3x2_W_to_E"
@@ -288,24 +300,33 @@ This spawner places pipe leading up to the interior door, you will need to finis
req_access_txt = null
/obj/effect/spawner/airlock/engineer
req_access_txt = ACCESS_ENGINE
req_access_txt = ACCESS_ENGINE_EQUIP
door_name = "engineering external access"
/obj/effect/spawner/airlock/e_to_w/engineer
req_access_txt = ACCESS_ENGINE
req_access_txt = ACCESS_ENGINE_EQUIP
door_name = "engineering external access"
/obj/effect/spawner/airlock/w_to_e/engineer
req_access_txt = ACCESS_ENGINE_EQUIP
door_name = "engineering external access"
/obj/effect/spawner/airlock/s_to_n/engineer
req_access_txt = ACCESS_ENGINE
req_access_txt = ACCESS_ENGINE_EQUIP
door_name = "engineering external access"
/obj/effect/spawner/airlock/long/engineer
req_access_txt = ACCESS_ENGINE
req_access_txt = ACCESS_ENGINE_EQUIP
door_name = "engineering external access"
/obj/effect/spawner/airlock/long/square/engine
req_access_txt = ACCESS_ENGINE
req_access_txt = ACCESS_ENGINE_EQUIP
door_name = "engine external access"
icon_state = "2x2_N_to_S_leftdoors"
door_type = /obj/machinery/door/airlock/external
one_door_interior = DOOR_NORMAL_PLACEMENT
one_door_exterior = DOOR_NORMAL_PLACEMENT
/obj/effect/spawner/airlock/long/square/engine/reversed
icon_state = "2x2_N_to_S_rightdoors"
one_door_interior = DOOR_FLIPPED_PLACEMENT
@@ -314,6 +335,7 @@ This spawner places pipe leading up to the interior door, you will need to finis
/obj/effect/spawner/airlock/w_to_e/long/square/wide/mining
door_name = "mining external access"
req_access_txt = ACCESS_MINING
/obj/effect/spawner/airlock/long/square/wide/mining
door_name = "mining external access"
req_access_txt = ACCESS_MINING
@@ -321,6 +343,7 @@ This spawner places pipe leading up to the interior door, you will need to finis
/obj/effect/spawner/airlock/e_to_w/minisat
door_name = "minisat external access"
req_access_txt = ACCESS_MINISAT
/obj/effect/spawner/airlock/long/square/e_to_s/telecoms
door_name = "telecoms external access"
req_access_txt = "61;13" //ACCESS_TCOMSAT,ACCESS_EXTERNAL_AIRLOCKS
@@ -179,3 +179,18 @@
new /obj/item/clothing/glasses/hud/health/sunglasses(src)
new /obj/item/clothing/glasses/hud/skills/sunglasses(src)
new /obj/item/clothing/accessory/blue(src)
/obj/item/storage/bag/garment/quartermaster
name = "quatermaster's garment bag"
desc = "A bag for storing extra clothes and shoes. This one belongs to the quartermaster."
/obj/item/storage/bag/garment/quartermaster/populate_contents()
new /obj/item/clothing/under/rank/cargo/quartermaster(src)
new /obj/item/clothing/under/rank/cargo/quartermaster/skirt(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/clothing/head/soft(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/suit/fire/firefighter(src)
new /obj/item/tank/internals/emergency_oxygen(src)
@@ -21,15 +21,7 @@
open_door_sprite = "mining_door"
/obj/structure/closet/secure_closet/quartermaster/populate_contents()
new /obj/item/clothing/under/rank/cargo/quartermaster(src)
new /obj/item/clothing/under/rank/cargo/quartermaster/skirt(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/radio/headset/headset_cargo(src)
new /obj/item/clothing/gloves/fingerless(src)
new /obj/item/clothing/suit/fire/firefighter(src)
new /obj/item/tank/internals/emergency_oxygen(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/clothing/head/soft(src)
new /obj/item/door_remote/quartermaster(src)
new /obj/item/organ/internal/eyes/cybernetic/meson(src)
new /obj/item/storage/bag/garment/quartermaster(src)
@@ -410,3 +410,16 @@
var/turf/T = get_turf(src)
new /obj/effect/temp_visual/ratvar/wall/false(T)
new /obj/effect/temp_visual/ratvar/beam/falsewall(T)
/obj/structure/falsewall/rock_ancient
name = "ancient rock"
desc = "A rare asteroid rock that appears to be resistant to all mining tools except pickaxes!"
icon = 'icons/turf/walls/smoothrocks.dmi'
icon_state = "smoothrocks-0"
base_icon_state = "smoothrocks"
color = COLOR_ANCIENT_ROCK
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_ASTEROID_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ASTEROID_WALLS)
mineral = /obj/item/stack/ore/glass/basalt/ancient
walltype = /turf/simulated/mineral/ancient
+31 -7
View File
@@ -117,6 +117,37 @@
qdel(src)
return
if(istype(W, /obj/item/stack/ore/glass/basalt))
var/obj/item/stack/ore/glass/basalt/A = W
if(state == GIRDER_DISPLACED)
if(A.get_amount() < 2)
to_chat(user, "<span class='warning'>You need at least two [A] to create a false wall!</span>")
return
if(do_after(user, 2 SECONDS, target = src))
if(!loc || !A || A.get_amount() < 2)
return
A.use(2)
to_chat(user, "<span class='notice'>You create a false wall. Push on it to open or close the passage.</span>")
var/obj/structure/falsewall/rock_ancient/FW = new (loc)
transfer_fingerprints_to(FW)
qdel(src)
else
if(A.get_amount() < 2)
to_chat(user, "<span class='warning'>You need at least two [A] to add plating!</span>")
return
to_chat(user, "<span class='notice'>You start adding [A]...</span>")
if(do_after(user, 4 SECONDS, target = src))
if(!src || !A || A.get_amount() < 2)
return
A.use(2)
to_chat(user, "<span class='notice'>You add [A].</span>")
var/turf/parent_turf = get_turf(src)
parent_turf.ChangeTurf(/turf/simulated/mineral/ancient)
for(var/turf/simulated/mineral/X in parent_turf.loc)
X.add_hiddenprint(usr)
qdel(src)
return
if(!istype(W,/obj/item/stack/sheet))
return
@@ -269,13 +300,6 @@
add_hiddenprint(user)
else if(istype(W, /obj/item/pipe))
var/obj/item/pipe/P = W
if(P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
if(!user.drop_item())
return
P.loc = src.loc
to_chat(user, "<span class='notice'>You fit the pipe into \the [src].</span>")
else
return ..()
@@ -123,6 +123,15 @@
oxygen = 0
nitrogen = 0
/turf/simulated/floor/plating/asteroid/ancient
digResult = /obj/item/stack/ore/glass/basalt/ancient
baseturf = /turf/simulated/floor/plating/asteroid/ancient/airless
/turf/simulated/floor/plating/asteroid/ancient/airless
temperature = TCMB
oxygen = 0
nitrogen = 0
/turf/simulated/floor/plating/asteroid/basalt/Initialize(mapload)
. = ..()
set_basalt_light(src)
+68 -3
View File
@@ -26,10 +26,15 @@
var/last_act = 0
var/scan_state = "" //Holder for the image we display when we're pinged by a mining scanner
var/defer_change = 0
var/mine_time = 4 SECONDS //Changes how fast the turf is mined by pickaxes, multiplied by toolspeed
/// Should this be set to the normal rock colour on init?
var/should_reset_color = TRUE
/turf/simulated/mineral/Initialize(mapload)
. = ..()
color = COLOR_ROCK
if(should_reset_color)
color = COLOR_ROCK
if(mineralType && mineralAmt && spread && spreadChance)
for(var/dir in GLOB.cardinal)
if(prob(spreadChance))
@@ -54,13 +59,13 @@
if(!isturf(T))
return
if(last_act + (40 * P.toolspeed) > world.time) // Prevents message spam
if(last_act + (mine_time * P.toolspeed) > world.time) // Prevents message spam
return
last_act = world.time
to_chat(user, "<span class='notice'>You start picking...</span>")
P.playDigSound()
if(do_after(user, 40 * P.toolspeed, target = src))
if(do_after(user, mine_time * P.toolspeed, target = src))
if(ismineralturf(src)) //sanity check against turf being deleted during digspeed delay
to_chat(user, "<span class='notice'>You finish cutting into the rock.</span>")
gets_drilled(user)
@@ -152,6 +157,66 @@
src = M
M.levelupdate()
/turf/simulated/mineral/ancient
name = "ancient rock"
desc = "A rare asteroid rock that appears to be resistant to all mining tools except pickaxes!"
smoothing_groups = list(SMOOTH_GROUP_MINERAL_WALLS, SMOOTH_GROUP_ASTEROID_WALLS)
canSmoothWith = list(SMOOTH_GROUP_MINERAL_WALLS, SMOOTH_GROUP_ASTEROID_WALLS)
mine_time = 6 SECONDS
color = COLOR_ANCIENT_ROCK
layer = TURF_LAYER
should_reset_color = FALSE
mineralAmt = 2
mineralType = /obj/item/stack/ore/glass/basalt/ancient
baseturf = /turf/simulated/floor/plating/asteroid/ancient
/turf/simulated/mineral/ancient/attackby(obj/item/I, mob/user, params)
if(!user.IsAdvancedToolUser())
to_chat(usr, "<span class='warning'>You don't have the dexterity to do this!</span>")
return
if(istype(I, /obj/item/pickaxe))
var/obj/item/pickaxe/P = I
var/turf/T = user.loc
if(!isturf(T))
return
if(last_act + (mine_time * P.toolspeed) > world.time) // Prevents message spam
return
last_act = world.time
to_chat(user, "<span class='notice'>You start picking...</span>")
P.playDigSound()
if(do_after(user, mine_time * P.toolspeed, target = src))
if(ismineralturf(src)) //sanity check against turf being deleted during digspeed delay
to_chat(user, "<span class='notice'>You finish cutting into the rock.</span>")
gets_drilled(user)
SSblackbox.record_feedback("tally", "pick_used_mining", 1, P.name)
else
return attack_hand(user)
/turf/simulated/mineral/ancient/outer
name = "cold ancient rock"
desc = "A rare and dense asteroid rock that appears to be resistant to everything except diamond and sonic tools! Can not be used to create portals to hell."
mine_time = 15 SECONDS
color = COLOR_COLD_ANCIENT_ROCK
var/static/list/allowed_picks_typecache
/turf/simulated/mineral/ancient/outer/Initialize(mapload)
. = ..()
allowed_picks_typecache = typecacheof(list(
/obj/item/pickaxe/drill/jackhammer,
/obj/item/pickaxe/diamond,
/obj/item/pickaxe/drill/cyborg/diamond,
/obj/item/pickaxe/drill/diamonddrill,
))
/turf/simulated/mineral/ancient/outer/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/pickaxe) && !(is_type_in_typecache(I, allowed_picks_typecache)))
to_chat(user, "<span class='notice'>Only a diamond tools or a sonic jackhammer can break this rock.</span>")
return
return ..()
/turf/simulated/mineral/random/high_chance
color = COLOR_YELLOW
mineralChance = 25
@@ -23,8 +23,6 @@
TYPE_ICE,
TYPE_STEEL)
area_blacklist = list(/area/crew_quarters/toilet,
/area/crew_quarters/sleep_male/toilet_male,
/area/crew_quarters/sleep_female/toilet_female,
/area/crew_quarters/locker/locker_toilet,
/area/toxins/server_coldroom)
area_whitelist = list(/area/maintenance/turbine,
@@ -44,8 +42,6 @@
/area/maintenance/incinerator,
/area/crew_quarters/kitchen)
area_whitelist = list(/area/crew_quarters/toilet,
/area/crew_quarters/sleep_male/toilet_male,
/area/crew_quarters/sleep_female/toilet_female,
/area/crew_quarters/locker/locker_toilet)
turf_whitelist = list(/turf/simulated/floor/beach/water)
+1
View File
@@ -316,6 +316,7 @@ GLOBAL_LIST_EMPTY(asset_datums)
"Cyberiad_nanomap_z1.png" = 'icons/_nanomaps/Cyberiad_nanomap_z1.png',
"Delta_nanomap_z1.png" = 'icons/_nanomaps/Delta_nanomap_z1.png',
"MetaStation_nanomap_z1.png" = 'icons/_nanomaps/MetaStation_nanomap_z1.png',
"CereStation_nanomap_z1.png" = 'icons/_nanomaps/CereStation_nanomap_z1.png',
)
/datum/asset/simple/safe
+5 -3
View File
@@ -1,3 +1,5 @@
// This file exists so that this PR cannot be testmerged at the same time as 19951
// If it were to be TM'd at the same time, a lot of things would break
// Remove this file before full merge
/datum/map/cerestation
fluff_name = "NSS Farragus"
technical_name = "CereStation"
map_path = "_maps/map_files/cerestation/cerestation.dmm"
webmap_url = "https://affectedarc07.co.uk/cere.html"
@@ -203,9 +203,12 @@
T.on_mark_application(target, CM, had_effect)
var/target_turf = get_turf(target)
if(ismineralturf(target_turf))
var/turf/simulated/mineral/M = target_turf
new /obj/effect/temp_visual/kinetic_blast(M)
M.gets_drilled(firer)
if(is_ancient_rock(target_turf))
visible_message("<span class='notice'>This rock appears to be resistant to all mining tools except pickaxes!</span>")
else
var/turf/simulated/mineral/M = target_turf
new /obj/effect/temp_visual/kinetic_blast(M)
M.gets_drilled(firer)
..()
//trophies
+5 -2
View File
@@ -94,8 +94,11 @@
var/turf/T = get_turf(src)
new /obj/effect/temp_visual/resonance_crush(T)
if(ismineralturf(T))
var/turf/simulated/mineral/M = T
M.gets_drilled(creator)
if(is_ancient_rock(T))
visible_message("<span class='notice'>This rock appears to be resistant to all mining tools except pickaxes!</span>")
else
var/turf/simulated/mineral/M = T
M.gets_drilled(creator)
check_pressure(T)
playsound(T,'sound/weapons/resonator_blast.ogg',50,1)
for(var/mob/living/L in T)
+7
View File
@@ -136,6 +136,13 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
icon_state = "volcanic_sand"
item_state = "volcanic_sand"
singular_name = "volcanic ash pile"
desc = "Looks like you could shove some on a girder to make a false rock wall"
/obj/item/stack/ore/glass/basalt/ancient
name = "ancient sand"
icon_state = "volcanic_sand"
item_state = "volcanic_sand"
singular_name = "ancient sand pile"
/obj/item/stack/ore/plasma
name = "plasma ore"
@@ -14,3 +14,10 @@
name = "Pun Pun"
real_name = name
equip_to_slot(new /obj/item/clothing/under/punpun(src), slot_w_uniform)
/mob/living/carbon/human/monkey/teeny/Initialize(mapload)
. = ..()
name = "Mr. Teeny"
real_name = name
resize = 0.8
update_transform()
@@ -241,8 +241,11 @@
for(var/obj/item/borg/upgrade/modkit/M in mods)
M.projectile_strike(src, target_turf, target, kinetic_gun)
if(ismineralturf(target_turf))
var/turf/simulated/mineral/M = target_turf
M.gets_drilled(firer)
if(is_ancient_rock(target_turf))
visible_message("<span class='notice'>This rock appears to be resistant to all mining tools except pickaxes!</span>")
else
var/turf/simulated/mineral/M = target_turf
M.gets_drilled(firer)
var/obj/effect/temp_visual/kinetic_blast/K = new /obj/effect/temp_visual/kinetic_blast(target_turf)
K.color = color
@@ -408,7 +411,7 @@
new /obj/effect/temp_visual/explosion/fast(target_turf)
if(turf_aoe)
for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
if(ismineralturf(T))
if(ismineralturf(T) && !is_ancient_rock(T))
var/turf/simulated/mineral/M = T
M.gets_drilled(K.firer)
if(modifier)
@@ -220,6 +220,10 @@
/obj/item/projectile/plasma/on_hit(atom/target)
. = ..()
if(ismineralturf(target))
if(is_ancient_rock(target))
visible_message("<span class='notice'>This rock appears to be resistant to all mining tools except pickaxes!</span>")
forcedodge = 0
return
forcedodge = 1
var/turf/simulated/mineral/M = target
M.gets_drilled(firer)
+4
View File
@@ -503,6 +503,10 @@ GLOBAL_LIST_INIT(conveyor_switches, list())
operating = TRUE
update_icon()
/obj/machinery/conveyor/auto/ccw
icon_state = "conveyor_stopped_ccw"
clockwise = FALSE
//Other types of conveyor, mostly for saving yourself a headache during mapping
/obj/machinery/conveyor/north
Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.
@@ -3,12 +3,15 @@
tools/github-actions/nanomap-renderer minimap -w 2040 -h 2040 "./_maps/map_files/cyberiad/cyberiad.dmm"
tools/github-actions/nanomap-renderer minimap -w 2040 -h 2040 "./_maps/map_files/Delta/delta.dmm"
tools/github-actions/nanomap-renderer minimap -w 2040 -h 2040 "./_maps/map_files/MetaStation/MetaStation.dmm"
tools/github-actions/nanomap-renderer minimap -w 2040 -h 2040 "./_maps/map_files/cerestation/cerestation.dmm"
# Move and rename files so the game understands them
cd "data/nanomaps"
mv "cyberiad_nanomap_z1.png" "Cyberiad_nanomap_z1.png"
mv "delta_nanomap_z1.png" "Delta_nanomap_z1.png"
mv "MetaStation_nanomap_z1.png" "MetaStation_nanomap_z1.png"
mv "CereStation_nanomap_z1.png" "CereStation_nanomap_z1.png"
cd "../../"
cp "data/nanomaps/Cyberiad_nanomap_z1.png" "icons/_nanomaps"
cp "data/nanomaps/Delta_nanomap_z1.png" "icons/_nanomaps"
cp "data/nanomaps/MetaStation_nanomap_z1.png" "icons/_nanomaps"
cp "data/nanomaps/CereStation_nanomap_z1.png" "icons/_nanomaps"