Files
Bubberstation/code/modules/capture_the_flag/ctf_map_loading.dm
Tim b78fc4ebbb Move mafia, CTF, and deathmatch maps into minigame folder (#90356)
## About The Pull Request
Repaths all the various minigames to be in the same mapping folder for
organization.

## Why It's Good For The Game
Being able to find maps is nice.

## Changelog
🆑
map: Move mafia, CTF, and deathmatch maps into minigame folder 
/🆑
2025-04-01 11:17:48 +02:00

97 lines
2.9 KiB
Plaintext

GLOBAL_DATUM(ctf_spawner, /obj/effect/landmark/ctf)
/obj/effect/landmark/ctf
name = "CTF Map Spawner"
var/game_id = CTF_GHOST_CTF_GAME_ID
var/list/map_bounds
/obj/effect/landmark/ctf/Initialize(mapload)
. = ..()
if(GLOB.ctf_spawner)
qdel(GLOB.ctf_spawner)
GLOB.ctf_spawner = src
/obj/effect/landmark/ctf/Destroy()
if(map_bounds)
for(var/turf/ctf_turf in block(
map_bounds[MAP_MINX], map_bounds[MAP_MINY], map_bounds[MAP_MINZ],
map_bounds[MAP_MAXX], map_bounds[MAP_MAXY], map_bounds[MAP_MAXZ]
))
ctf_turf.empty()
GLOB.ctf_spawner = null
return ..()
/obj/effect/landmark/ctf/proc/load_map(user)
if (map_bounds)
return
var/list/map_options = subtypesof(/datum/map_template/ctf)
var/turf/spawn_area = get_turf(src)
var/datum/map_template/ctf/current_map
var/chosen_map
if(user)
var/list/map_choices = list()
for(var/datum/map_template/ctf/map as anything in map_options)
var/mapname = initial(map.name)
map_choices[mapname] = map
chosen_map = tgui_input_list(user, "Select a map", "Choose CTF Map",list("Random")|sort_list(map_choices))
if (isnull(chosen_map))
return FALSE;
else
current_map = map_choices[chosen_map]
if(!user || chosen_map == "Random")
current_map = pick(map_options)
current_map = new current_map()
var/datum/ctf_controller/ctf_controller = GLOB.ctf_games[CTF_GHOST_CTF_GAME_ID]
ctf_controller.setup_rules(current_map.points_to_win)
if(!spawn_area)
CRASH("No spawn area detected for CTF!")
else if(!current_map)
CRASH("No map prepared")
map_bounds = current_map.load(spawn_area, TRUE)
if(!map_bounds)
CRASH("Loading CTF map failed!")
return TRUE
/datum/map_template/ctf
should_place_on_top = FALSE
var/description = ""
///Score required to win CTF on this map.
var/points_to_win = 3
/datum/map_template/ctf/classic
name = "Classic"
description = "The original CTF map."
mappath = "_maps/minigame/CTF/classic.dmm"
/datum/map_template/ctf/four_side
name = "Four Side"
description = "A CTF map created to demonstrate 4 team CTF, features a single centred flag rather than one per team."
mappath = "_maps/minigame/CTF/fourSide.dmm"
/datum/map_template/ctf/downtown
name = "Downtown"
description = "A CTF map that takes place in a terrestrial city."
mappath = "_maps/minigame/CTF/downtown.dmm"
/datum/map_template/ctf/limbo
name = "Limbo"
description = "A KOTH map that takes place in a wizard den with looping hallways"
mappath = "_maps/minigame/CTF/limbo.dmm"
points_to_win = 180
/datum/map_template/ctf/cruiser
name = "Crusier"
description = "A CTF map that takes place across multiple space ships, one carrying a powerful device that can accelerate those who obtain it"
mappath = "_maps/minigame/CTF/cruiser.dmm"
/datum/map_template/ctf/turbine
name = "Turbine"
description = "A CTF map that takes place in a familiar facility. Don't try to hold out mid- There's no sentries in this version."
mappath = "_maps/minigame/CTF/turbine.dmm"