Refactors station areas to be /area/station subtypes (#21681)

* areas

* progress...

* death hatred and murder

* get current master maps

* hoooly shit i can load up the maps

* it compiles now

* map changes

* fixes some unintended stuff

* make the .dme right

* fix mixed space+tab indents

* more space-tab fixes

* CI, please show me more than 1 CI fail at a time

* UPDATE PATHS!!!

* none of the stations had it anyways, but fixed

* mint wasnt actually deleted, my bad

* epic random CI fail for no reason

* i beg you, CI

* dont delete anything

* okay THAT should work now

* okay get master maps and rerun

* okay THEN run update paths

* actually done now

* oops
This commit is contained in:
Contrabang
2023-09-06 12:37:50 -04:00
committed by GitHub
parent 07e0b4fc97
commit 65ab4a5d89
52 changed files with 39284 additions and 39352 deletions
+1 -1
View File
@@ -342,7 +342,7 @@
if(!dname)
dname = M
return {"<tr><td><a href='?src=[UID()];adminplayeropts=[M.UID()]'>[dname]</a><b>[caption]</b>[logout_status][istype(A, /area/security/permabrig) ? "<b><font color=red> (PERMA) </b></font>" : ""][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
return {"<tr><td><a href='?src=[UID()];adminplayeropts=[M.UID()]'>[dname]</a><b>[caption]</b>[logout_status][istype(A, /area/station/security/permabrig) ? "<b><font color=red> (PERMA) </b></font>" : ""][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
<td><A href='?src=[usr.UID()];priv_msg=[M.client?.ckey]'>PM</A> [ADMIN_FLW(M, "FLW")] </td>[close ? "</tr>" : ""]"}
/datum/admins/proc/check_antagonists()
+1 -1
View File
@@ -3030,7 +3030,7 @@
if("eagles")//SCRAW
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Egalitarian Station")
for(var/obj/machinery/door/airlock/W in GLOB.airlocks)
if(is_station_level(W.z) && !istype(get_area(W), /area/bridge) && !istype(get_area(W), /area/crew_quarters) && !istype(get_area(W), /area/security/prison))
if(is_station_level(W.z) && !istype(get_area(W), /area/station/command/bridge) && !istype(get_area(W), /area/station/public) && !istype(get_area(W), /area/station/security/prison))
W.req_access = list()
message_admins("[key_name_admin(usr)] activated Egalitarian Station mode")
GLOB.minor_announcement.Announce("Centcomm airlock control override activated. Please take this time to get acquainted with your coworkers.", new_sound = 'sound/AI/commandreport.ogg')
@@ -91,7 +91,7 @@
"Security Checkpoint",
"Technical Storage",
"Teleporter",
"Toxins Storage",
"Science Toxins Storage",
"Vacant Office",
"Research Testing Lab",
"Xenobiology Lab",
@@ -265,7 +265,7 @@
handle_vampire_cloak()
if(isspaceturf(get_turf(owner.current)))
check_sun()
if(istype(get_area(owner.current), /area/chapel) && !get_ability(/datum/vampire_passive/full) && bloodtotal > 0)
if(istype(get_area(owner.current), /area/station/service/chapel) && !get_ability(/datum/vampire_passive/full) && bloodtotal > 0)
vamp_burn(7)
nullified = max(0, nullified - 2)
+2 -6
View File
@@ -109,8 +109,8 @@
/datum/mob_hunt/proc/get_possible_areas()
var/list/possible_areas = list()
//setup, sets all station areas (and subtypes) to weight 1
for(var/A in GLOB.the_station_areas)
if(A == /area/holodeck) //don't allow holodeck areas as possible spawns since it will allow it to spawn in the holodeck rooms on CC level as well
for(var/area/A in SSmapping.existing_station_areas)
if(istype(A, /area/holodeck)) //don't allow holodeck areas as possible spawns since it will allow it to spawn in the holodeck rooms on CC level as well
continue
if(A in possible_areas)
continue
@@ -139,10 +139,6 @@
for(var/A in area_blacklist)
for(var/areapath in typesof(A))
possible_areas[areapath] -= 2
//removes "bad areas" which shouldn't be on-station but are subtypes of station areas. probably should the unused ones and consider repathing the rest
var/list/bad_areas = list(subtypesof(/area/construction), /area/solar/derelict_starboard, /area/solar/derelict_aft)
for(var/A in bad_areas)
possible_areas -= A
//weight check, remove negative or zero weight areas from the list, then return the list.
for(var/areapath in possible_areas)
//remove any areas that shouldn't be on the station-level
+60 -64
View File
@@ -22,12 +22,11 @@
TYPE_GRASS,
TYPE_ICE,
TYPE_STEEL)
area_blacklist = list(/area/crew_quarters/toilet,
/area/crew_quarters/locker/locker_toilet,
/area/toxins/server_coldroom)
area_whitelist = list(/area/maintenance/turbine,
/area/maintenance/incinerator,
/area/crew_quarters/kitchen)
area_blacklist = list(/area/station/public/toilet,
/area/station/science/server/coldroom)
area_whitelist = list(/area/station/maintenance/turbine,
/area/station/maintenance/incinerator,
/area/station/service/kitchen)
turf_blacklist = list(/turf/simulated/floor/beach/water)
/datum/mob_type/water
@@ -38,11 +37,10 @@
TYPE_ICE,
TYPE_STEEL,
TYPE_WATER)
area_blacklist = list(/area/maintenance/turbine,
/area/maintenance/incinerator,
/area/crew_quarters/kitchen)
area_whitelist = list(/area/crew_quarters/toilet,
/area/crew_quarters/locker/locker_toilet)
area_blacklist = list(/area/station/maintenance/turbine,
/area/station/maintenance/incinerator,
/area/station/service/kitchen)
area_whitelist = list(/area/station/public/toilet)
turf_whitelist = list(/turf/simulated/floor/beach/water)
/datum/mob_type/grass
@@ -56,9 +54,9 @@
TYPE_GRASS,
TYPE_ELECTRIC,
TYPE_GROUND)
area_blacklist = list(/area/toxins)
area_whitelist = list(/area/hydroponics,
/area/hallway/secondary/construction)
area_blacklist = list(/area/station/science)
area_whitelist = list(/area/station/service/hydroponics,
/area/station/public/construction) // dont ask me why grass types can appear in construction sites, I'm just migrating areas
turf_whitelist = list(/turf/simulated/floor/grass)
/datum/mob_type/electric
@@ -67,14 +65,14 @@
resistance = list(TYPE_ELECTRIC,
TYPE_FLYING,
TYPE_STEEL)
area_whitelist = list(/area/engine,
/area/toxins/server,
/area/maintenance,
/area/turret_protected/ai,
/area/turret_protected/ai_upload,
/area/turret_protected/aisat_interior,
/area/aisat,
/area/assembly)
area_whitelist = list(/area/station/engineering/engine,
/area/station/science/server,
/area/station/maintenance,
/area/station/turret_protected/ai,
/area/station/turret_protected/ai_upload,
/area/station/turret_protected/aisat/interior,
/area/station/aisat,
/area/station/science/robotics)
turf_whitelist = list(/turf/simulated/floor/bluegrid)
/datum/mob_type/ground
@@ -97,8 +95,8 @@
TYPE_FLYING,
TYPE_POISON,
TYPE_NORMAL)
area_whitelist = list(/area/quartermaster,
/area/maintenance/disposal)
area_whitelist = list(/area/station/supply,
/area/station/maintenance/disposal)
turf_whitelist = list(/turf/simulated/wall,
/turf/simulated/floor/mineral)
@@ -110,9 +108,9 @@
resistance = list(TYPE_GRASS,
TYPE_GROUND,
TYPE_FIGHTING)
area_blacklist = list(/area/toxins)
area_whitelist = list(/area/hydroponics,
/area/hallway/secondary/construction)
area_blacklist = list(/area/station/science)
area_whitelist = list(/area/station/service/hydroponics,
/area/station/public/construction) // dont ask me why bug types can appear in construction sites, I'm just migrating areas
turf_whitelist = list(/turf/simulated/floor/grass)
/datum/mob_type/poison
@@ -123,13 +121,12 @@
TYPE_BUG,
TYPE_POISON,
TYPE_FIGHTING)
area_blacklist = list(/area/medical,
/area/janitor)
area_whitelist = list(/area/medical/virology,
/area/toxins,
/area/medical/research,
/area/crew_quarters/hor,
/area/maintenance/asmaint2)
area_blacklist = list(/area/station/medical,
/area/station/service/janitor)
area_whitelist = list(/area/station/medical/virology,
/area/station/science,
/area/station/command/office/rd,
/area/station/maintenance/asmaint2)
/datum/mob_type/normal
name = "Normal"
@@ -143,10 +140,10 @@
resistance = list(TYPE_ROCK,
TYPE_BUG,
TYPE_DARK)
area_blacklist = list(/area/medical)
area_whitelist = list(/area/crew_quarters/bar,
/area/crew_quarters/fitness,
/area/security)
area_blacklist = list(/area/station/medical)
area_whitelist = list(/area/station/service/bar,
/area/station/public/fitness,
/area/station/security)
turf_whitelist = list(/turf/simulated/floor/wood)
/datum/mob_type/psychic
@@ -156,14 +153,14 @@
TYPE_DARK)
resistance = list(TYPE_FIGHTING,
TYPE_PSYCHIC)
area_blacklist = list(/area/toxins,
/area/medical/research,
/area/crew_quarters/hor,
/area/maintenance/asmaint2,
/area/teleporter)
area_whitelist = list(/area/library,
/area/chapel,
/area/medical/psych)
area_blacklist = list(/area/station/science,
/area/station/command/office/rd,
/area/station/maintenance/asmaint2,
/area/station/command/teleporter,
/area/station/command/gateway)
area_whitelist = list(/area/station/service/library,
/area/station/service/chapel,
/area/station/medical/psych)
/datum/mob_type/ghost
name = "Ghost"
@@ -173,9 +170,9 @@
TYPE_POISON)
immunity = list(TYPE_NORMAL,
TYPE_FIGHTING)
area_whitelist = list(/area/medical/morgue,
/area/chapel,
/area/medical/genetics_cloning)
area_whitelist = list(/area/station/medical/morgue,
/area/station/service/chapel,
/area/station/medical/cloning)
/datum/mob_type/ice
name = "Ice"
@@ -184,10 +181,10 @@
TYPE_FIGHTING,
TYPE_STEEL)
resistance = list(TYPE_ICE)
area_blacklist = list(/area/maintenance/turbine,
/area/maintenance/incinerator,
/area/crew_quarters/kitchen)
area_whitelist = list(/area/toxins/server_coldroom)
area_blacklist = list(/area/station/maintenance/turbine,
/area/station/maintenance/incinerator,
/area/station/service/kitchen)
area_whitelist = list(/area/station/science/server/coldroom)
/datum/mob_type/flying
name = "Flying"
@@ -198,8 +195,8 @@
TYPE_BUG,
TYPE_FIGHTING)
immunity = list(TYPE_GROUND)
area_blacklist = list(/area/maintenance)
area_whitelist = list(/area/hallway)
area_blacklist = list(/area/station/maintenance)
area_whitelist = list(/area/station/hallway)
/datum/mob_type/bluespace
name = "Bluespace"
@@ -217,15 +214,14 @@
resistance = list(TYPE_GHOST,
TYPE_DARK)
immunity = list(TYPE_PSYCHIC)
area_blacklist = list(/area/solar,
/area/maintenance/auxsolarport,
/area/maintenance/starboardsolar,
/area/maintenance/portsolar,
/area/maintenance/auxsolarstarboard,
/area/clownoffice)
area_whitelist = list(/area/maintenance,
/area/assembly/assembly_line,
/area/mimeoffice)
area_blacklist = list(/area/station/engineering/solar,
/area/station/maintenance/auxsolarport,
/area/station/maintenance/starboardsolar,
/area/station/maintenance/portsolar,
/area/station/maintenance/auxsolarstarboard,
/area/station/service/clown)
area_whitelist = list(/area/station/maintenance,
/area/station/service/mime)
turf_blacklist = list(/turf/simulated/floor/light)
/datum/mob_type/steel
+3 -3
View File
@@ -28,9 +28,9 @@
/proc/apc_overload_failure(announce=TRUE)
var/list/skipped_areas_apc = list(
/area/engine/engineering,
/area/engine/supermatter,
/area/turret_protected/ai)
/area/station/engineering/engine,
/area/station/engineering/engine/supermatter,
/area/station/turret_protected/ai)
if(announce)
GLOB.minor_announcement.Announce("Overload detected in [station_name()]'s powernet. Engineering, please check all underfloor APC terminals.", "Critical Power Failure", 'sound/AI/power_overload.ogg')
+6 -6
View File
@@ -27,9 +27,9 @@
/proc/depower_apcs()
var/list/skipped_areas_apc = list(
/area/engine/engineering,
/area/engine/supermatter,
/area/turret_protected/ai)
/area/station/engineering/engine,
/area/station/engineering/engine/supermatter,
/area/station/turret_protected/ai)
GLOB.minor_announcement.Announce("Power failure detected in [station_name()]'s powernet. All APCs have lost power. Gravity systems likely to fail.", "Systems Power Failure", 'sound/AI/attention.ogg')
for(var/thing in GLOB.apcs)
var/obj/machinery/power/apc/A = thing
@@ -45,9 +45,9 @@
/proc/power_failure(announce = TRUE)
// skip any APCs that are too critical to disable
var/list/skipped_areas_apc = list(
/area/engine/engineering,
/area/engine/supermatter,
/area/turret_protected/ai)
/area/station/engineering/engine,
/area/station/engineering/engine/supermatter,
/area/station/turret_protected/ai)
if(announce)
GLOB.minor_announcement.Announce("Overload detected in [station_name()]'s powernet. Engineering, please repair shorted APCs.", "Systems Power Failure", 'sound/AI/power_overload.ogg')
// break APC_BREAK_PROBABILITY% of all of the APCs on the station
+19 -26
View File
@@ -20,40 +20,33 @@
/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in!
var/list/safe_areas = typecacheof(list(
/area/turret_protected/ai,
/area/turret_protected/ai_upload,
/area/engine,
/area/solar,
/area/holodeck,
/area/shuttle,
/area/maintenance,
/area/toxins/test_area,
/area/crew_quarters/sleep))
/area/station/turret_protected/ai,
/area/station/turret_protected/ai_upload,
/area/station/engineering,
/area/holodeck,
/area/shuttle,
/area/station/maintenance,
/area/station/science/toxins/test,
/area/station/public/sleep))
//These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up.
var/list/danger_areas = list(
/area/engine/break_room,
/area/engine/equipmentstorage,
/area/engine/chiefs_office,
/area/engine/controlroom)
//These are needed because /area/station/engineering has to be removed from the list, but we still want these areas to get fucked up.
var/list/allowed_areas = list(
/area/station/engineering/break_room,
/area/station/engineering/equipmentstorage,
/area/station/engineering/controlroom)
var/list/allowed_areas = list()
allowed_areas = typecacheof(GLOB.the_station_areas) - safe_areas + danger_areas
var/list/possible_areas = typecache_filter_list(SSmapping.existing_station_areas, allowed_areas)
var/list/remove_these_areas = safe_areas - allowed_areas
var/list/possible_areas = typecache_filter_list_reverse(SSmapping.existing_station_areas, remove_these_areas)
return pick(possible_areas)
/proc/findUnrestrictedEventArea() //Does almost the same as findEventArea() but hits a few more areas including maintenance and the AI sat, and also returns a list of all the areas, instead of just one area
var/list/safe_areas = typecacheof(list(
/area/solar,
/area/toxins/test_area,
/area/crew_quarters/sleep))
/area/station/engineering/solar,
/area/station/science/toxins/test,
/area/station/public/sleep))
var/list/allowed_areas = list()
allowed_areas = typecacheof(GLOB.the_station_areas) - safe_areas
var/list/possible_areas = typecache_filter_list(SSmapping.existing_station_areas, allowed_areas)
var/list/possible_areas = typecache_filter_list_reverse(SSmapping.existing_station_areas, safe_areas)
return possible_areas
+10 -10
View File
@@ -28,34 +28,34 @@
var/spawn_area_type
switch(location)
if(LOC_KITCHEN)
spawn_area_type = /area/crew_quarters/kitchen
spawn_area_type = /area/station/service/kitchen
locstring = "the kitchen"
if(LOC_ATMOS)
spawn_area_type = /area/atmos
spawn_area_type = /area/station/engineering/atmos
locstring = "atmospherics"
if(LOC_INCIN)
spawn_area_type = /area/maintenance/incinerator
spawn_area_type = /area/station/maintenance/incinerator
locstring = "the incinerator"
if(LOC_CHAPEL)
spawn_area_type = /area/chapel/main
spawn_area_type = /area/station/service/chapel
locstring = "the chapel"
if(LOC_LIBRARY)
spawn_area_type = /area/library
spawn_area_type = /area/station/service/library
locstring = "the library"
if(LOC_HYDRO)
spawn_area_type = /area/hydroponics
spawn_area_type = /area/station/service/hydroponics
locstring = "hydroponics"
if(LOC_VAULT)
spawn_area_type = /area/security/nuke_storage
spawn_area_type = /area/station/command/vault
locstring = "the vault"
if(LOC_CONSTR)
spawn_area_type = /area/construction
spawn_area_type = /area/station/public/construction
locstring = "the construction area"
if(LOC_TECH)
spawn_area_type = /area/storage/tech
spawn_area_type = /area/station/engineering/tech_storage
locstring = "technical storage"
if(LOC_ARMORY)
spawn_area_type = /area/security/securearmoury
spawn_area_type = /area/station/security/armory/secure
locstring = "armory"
for(var/areapath in typesof(spawn_area_type))
+6 -6
View File
@@ -7,25 +7,25 @@
var/eventDept = "Security" //Department name in announcement
var/list/areaName = list("Brig") //Names of areas mentioned in AI and Engineering announcements
var/list/areaType = list(/area/security/prison, /area/security/brig, /area/security/permabrig) //Area types to include.
var/list/areaType = list(/area/station/security/prison, /area/station/security/brig, /area/station/security/permabrig) //Area types to include.
var/list/areaNotType = list() //Area types to specifically exclude.
/datum/event/prison_break/virology
eventDept = "Medical"
areaName = list("Virology")
areaType = list(/area/medical/virology, /area/medical/virology/lab)
areaType = list(/area/station/medical/virology, /area/station/medical/virology/lab)
/datum/event/prison_break/xenobiology
eventDept = "Science"
areaName = list("Xenobiology")
areaType = list(/area/toxins/xenobiology)
areaNotType = list(/area/toxins/xenobiology/xenoflora, /area/toxins/xenobiology/xenoflora_storage)
areaType = list(/area/station/science/xenobiology)
areaNotType = list(/area/station/science/xenobiology/xenoflora, /area/station/science/xenobiology/xenoflora_storage)
/datum/event/prison_break/station
eventDept = "Station"
areaName = list("Brig","Virology","Xenobiology")
areaType = list(/area/security/prison, /area/security/brig, /area/security/permabrig, /area/medical/virology, /area/medical/virology/lab, /area/toxins/xenobiology)
areaNotType = list(/area/toxins/xenobiology/xenoflora, /area/toxins/xenobiology/xenoflora_storage)
areaType = list(/area/station/security/prison, /area/station/security/brig, /area/station/security/permabrig, /area/station/medical/virology, /area/station/medical/virology/lab, /area/station/science/xenobiology)
areaNotType = list(/area/station/science/xenobiology/xenoflora, /area/station/science/xenobiology/xenoflora_storage)
/datum/event/prison_break/setup()
+1 -1
View File
@@ -8,7 +8,7 @@
var/obj/structure/spacevine/SV = new()
for(var/area/hallway/A in world)
for(var/area/station/hallway/A in world)
for(var/turf/F in A)
if(F.Enter(SV))
turfs += F
+1 -1
View File
@@ -38,7 +38,7 @@
/datum/event/wallrot/fungus
/datum/event/wallrot/fungus/is_valid_candidate(turf/T)
return istype(get_area(T), /area/maintenance)
return istype(get_area(T), /area/station/maintenance)
/datum/event/wallrot/fungus/apply_to_turf(turf/T)
new /obj/effect/decal/cleanable/fungus(T)
+2 -2
View File
@@ -6,8 +6,8 @@
combos = list(/datum/martial_combo/cqc/slam, /datum/martial_combo/cqc/kick, /datum/martial_combo/cqc/restrain, /datum/martial_combo/cqc/pressure, /datum/martial_combo/cqc/consecutive)
var/restraining = FALSE //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not
var/chokehold_active = FALSE //Then uses this to determine if the restrain actually goes anywhere
var/static/list/areas_under_siege = typecacheof(list(/area/crew_quarters/kitchen,
/area/crew_quarters/bar))
var/static/list/areas_under_siege = typecacheof(list(/area/station/service/kitchen,
/area/station/service/bar))
/datum/martial_art/cqc/under_siege
name = "Close Quarters Cooking"
+1 -1
View File
@@ -66,7 +66,7 @@
/datum/martial_art/judo/under_siege
name = "Professional Bodyguarding"
var/static/list/areas_under_siege = typecacheof(list(/area/crew_quarters/kitchen, /area/crew_quarters/bar))
var/static/list/areas_under_siege = typecacheof(list(/area/station/service/kitchen, /area/station/service/bar))
/datum/martial_art/judo/under_siege/teach(mob/living/carbon/human/H, make_temporary)
RegisterSignal(H, COMSIG_AREA_ENTERED, PROC_REF(bar_check))
+2 -2
View File
@@ -951,7 +951,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
// They should be in a cell or the Brig portion of the shuttle.
var/area/A = loc.loc
if(!istype(A, /area/security/prison))
if(!istype(A, /area/station/security/prison))
if(!istype(A, /area/shuttle/escape) || loc.name != "Brig floor")
return 0
@@ -1552,7 +1552,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
GLOBAL_LIST_INIT(holy_areas, typecacheof(list(
/area/chapel
/area/station/service/chapel
)))
/mob/proc/holy_check()
@@ -1,4 +1,4 @@
/area/engine/engineering/poweralert(state, source)
/area/station/engineering/engine/poweralert(state, source)
if(state != poweralm)
investigate_log("has a power alarm!", "singulo")
..()
@@ -218,7 +218,7 @@ GLOBAL_VAR_INIT(station_all_access, 0)
// Why are these global procs?
/proc/make_maint_all_access()
for(var/area/maintenance/A in world) // Why are these global lists? AAAAAAAAAAAAAA
for(var/area/station/maintenance/A in world) // Why are these global lists? AAAAAAAAAAAAAA
for(var/obj/machinery/door/airlock/D in A)
D.emergency = 1
D.update_icon()
@@ -227,7 +227,7 @@ GLOBAL_VAR_INIT(station_all_access, 0)
SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled"))
/proc/revoke_maint_all_access()
for(var/area/maintenance/A in world)
for(var/area/station/maintenance/A in world)
for(var/obj/machinery/door/airlock/D in A)
D.emergency = 0
D.update_icon()