mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
In interest of getting things fixed without having to constantly crawl through game.log to find map issues, moved them to their own log file.
208 lines
6.1 KiB
Plaintext
208 lines
6.1 KiB
Plaintext
//Landmarks and other helpers which speed up the mapping process and reduce the number of unique instances/subtypes of items/turf/ect
|
|
|
|
|
|
|
|
/obj/effect/baseturf_helper //Set the baseturfs of every turf in the /area/ it is placed.
|
|
name = "baseturf editor"
|
|
icon = 'icons/effects/mapping_helpers.dmi'
|
|
icon_state = ""
|
|
|
|
var/list/baseturf_to_replace
|
|
var/baseturf
|
|
|
|
layer = POINT_LAYER
|
|
|
|
/obj/effect/baseturf_helper/Initialize()
|
|
. = ..()
|
|
return INITIALIZE_HINT_LATELOAD
|
|
|
|
/obj/effect/baseturf_helper/LateInitialize()
|
|
if(!baseturf_to_replace)
|
|
baseturf_to_replace = typecacheof(/turf/open/space)
|
|
else if(!length(baseturf_to_replace))
|
|
baseturf_to_replace = list(baseturf_to_replace = TRUE)
|
|
else if(baseturf_to_replace[baseturf_to_replace[1]] != TRUE) // It's not associative
|
|
var/list/formatted = list()
|
|
for(var/i in baseturf_to_replace)
|
|
formatted[i] = TRUE
|
|
baseturf_to_replace = formatted
|
|
|
|
var/area/our_area = get_area(src)
|
|
for(var/i in get_area_turfs(our_area, z))
|
|
replace_baseturf(i)
|
|
|
|
qdel(src)
|
|
|
|
/obj/effect/baseturf_helper/proc/replace_baseturf(turf/thing)
|
|
var/list/baseturf_cache = thing.baseturfs
|
|
if(length(baseturf_cache))
|
|
for(var/i in baseturf_cache)
|
|
if(baseturf_to_replace[i])
|
|
baseturf_cache -= i
|
|
if(!baseturf_cache.len)
|
|
thing.assemble_baseturfs(baseturf)
|
|
else
|
|
thing.PlaceOnBottom(null, baseturf)
|
|
else if(baseturf_to_replace[thing.baseturfs])
|
|
thing.assemble_baseturfs(baseturf)
|
|
else
|
|
thing.PlaceOnBottom(null, baseturf)
|
|
|
|
|
|
|
|
/obj/effect/baseturf_helper/space
|
|
name = "space baseturf editor"
|
|
baseturf = /turf/open/space
|
|
|
|
/obj/effect/baseturf_helper/asteroid
|
|
name = "asteroid baseturf editor"
|
|
baseturf = /turf/open/floor/plating/asteroid
|
|
|
|
/obj/effect/baseturf_helper/asteroid/airless
|
|
name = "asteroid airless baseturf editor"
|
|
baseturf = /turf/open/floor/plating/asteroid/airless
|
|
|
|
/obj/effect/baseturf_helper/asteroid/basalt
|
|
name = "asteroid basalt baseturf editor"
|
|
baseturf = /turf/open/floor/plating/asteroid/basalt
|
|
|
|
/obj/effect/baseturf_helper/asteroid/snow
|
|
name = "asteroid snow baseturf editor"
|
|
baseturf = /turf/open/floor/plating/asteroid/snow
|
|
|
|
/obj/effect/baseturf_helper/beach/sand
|
|
name = "beach sand baseturf editor"
|
|
baseturf = /turf/open/floor/plating/beach/sand
|
|
|
|
/obj/effect/baseturf_helper/beach/water
|
|
name = "water baseturf editor"
|
|
baseturf = /turf/open/floor/plating/beach/water
|
|
|
|
/obj/effect/baseturf_helper/lava
|
|
name = "lava baseturf editor"
|
|
baseturf = /turf/open/lava/smooth
|
|
|
|
/obj/effect/baseturf_helper/lava_land/surface
|
|
name = "lavaland baseturf editor"
|
|
baseturf = /turf/open/lava/smooth/lava_land_surface
|
|
|
|
|
|
/obj/effect/mapping_helpers
|
|
icon = 'icons/effects/mapping_helpers.dmi'
|
|
icon_state = ""
|
|
var/late = FALSE
|
|
|
|
/obj/effect/mapping_helpers/Initialize()
|
|
..()
|
|
return late ? INITIALIZE_HINT_LATELOAD : INITIALIZE_HINT_QDEL
|
|
|
|
|
|
//airlock helpers
|
|
/obj/effect/mapping_helpers/airlock
|
|
layer = DOOR_HELPER_LAYER
|
|
|
|
/obj/effect/mapping_helpers/airlock/Initialize(mapload)
|
|
. = ..()
|
|
if(!mapload)
|
|
log_mapping("[src] spawned outside of mapload!")
|
|
return
|
|
var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in loc
|
|
if(!airlock)
|
|
log_mapping("[src] failed to find an airlock at [AREACOORD(src)]")
|
|
else
|
|
payload(airlock)
|
|
|
|
/obj/effect/mapping_helpers/airlock/proc/payload(obj/machinery/door/airlock/payload)
|
|
return
|
|
|
|
/obj/effect/mapping_helpers/airlock/cyclelink_helper
|
|
name = "airlock cyclelink helper"
|
|
icon_state = "airlock_cyclelink_helper"
|
|
|
|
/obj/effect/mapping_helpers/airlock/cyclelink_helper/payload(obj/machinery/door/airlock/airlock)
|
|
if(airlock.cyclelinkeddir)
|
|
log_mapping("[src] at [AREACOORD(src)] tried to set [airlock] cyclelinkeddir, but it's already set!")
|
|
else
|
|
airlock.cyclelinkeddir = dir
|
|
|
|
|
|
/obj/effect/mapping_helpers/airlock/locked
|
|
name = "airlock lock helper"
|
|
icon_state = "airlock_locked_helper"
|
|
|
|
/obj/effect/mapping_helpers/airlock/locked/payload(obj/machinery/door/airlock/airlock)
|
|
if(airlock.locked)
|
|
log_mapping("[src] at [AREACOORD(src)] tried to bolt [airlock] but it's already locked!")
|
|
else
|
|
airlock.locked = TRUE
|
|
|
|
|
|
/obj/effect/mapping_helpers/airlock/unres
|
|
name = "airlock unresctricted side helper"
|
|
icon_state = "airlock_unres_helper"
|
|
|
|
/obj/effect/mapping_helpers/airlock/unres/payload(obj/machinery/door/airlock/airlock)
|
|
airlock.unres_sides ^= dir
|
|
|
|
/obj/effect/mapping_helpers/airlock/abandoned
|
|
name = "airlock abandoned helper"
|
|
icon_state = "airlock_abandoned"
|
|
|
|
/obj/effect/mapping_helpers/airlock/abandoned/payload(obj/machinery/door/airlock/airlock)
|
|
if(airlock.abandoned)
|
|
log_mapping("[src] at [AREACOORD(src)] tried to make [airlock] abandoned but it's already abandoned!")
|
|
else
|
|
airlock.abandoned = TRUE
|
|
|
|
|
|
//needs to do its thing before spawn_rivers() is called
|
|
INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
|
|
|
|
/obj/effect/mapping_helpers/no_lava
|
|
icon_state = "no_lava"
|
|
|
|
/obj/effect/mapping_helpers/no_lava/Initialize()
|
|
. = ..()
|
|
var/turf/T = get_turf(src)
|
|
T.flags_1 |= NO_LAVA_GEN_1
|
|
|
|
//This helper applies components to things on the map directly.
|
|
/obj/effect/mapping_helpers/component_injector
|
|
name = "Component Injector"
|
|
late = TRUE
|
|
var/target_type
|
|
var/target_name
|
|
var/component_type
|
|
|
|
//Late init so everything is likely ready and loaded (no warranty)
|
|
/obj/effect/mapping_helpers/component_injector/LateInitialize()
|
|
if(!ispath(component_type,/datum/component))
|
|
CRASH("Wrong component type in [type] - [component_type] is not a component")
|
|
var/turf/T = get_turf(src)
|
|
for(var/atom/A in T.GetAllContents())
|
|
if(A == src)
|
|
continue
|
|
if(target_name && A.name != target_name)
|
|
continue
|
|
if(target_type && !istype(A,target_type))
|
|
continue
|
|
var/cargs = build_args()
|
|
A.AddComponent(arglist(cargs))
|
|
qdel(src)
|
|
return
|
|
|
|
/obj/effect/mapping_helpers/component_injector/proc/build_args()
|
|
return list(component_type)
|
|
|
|
/obj/effect/mapping_helpers/component_injector/infective
|
|
name = "Infective Injector"
|
|
icon_state = "component_infective"
|
|
component_type = /datum/component/infective
|
|
var/disease_type
|
|
|
|
/obj/effect/mapping_helpers/component_injector/infective/build_args()
|
|
if(!ispath(disease_type,/datum/disease))
|
|
CRASH("Wrong disease type passed in.")
|
|
var/datum/disease/D = new disease_type()
|
|
return list(component_type,D)
|