Files
Bubberstation/code/modules/shuttle/battlecruiser_starfury.dm
T
ZephyrandGitHub f71ea26f72 Machine list is now stored in SSmachines | Remove excessive use of global lists for specific machine types (#76822)
## About The Pull Request

Removes all of the duplicate global lists for specific machine types
where the only thing they do is store all machines of that type.
Adds machine tracking to SSmachines in the form of a list for all
machines, and then an associative list for machines by their type.
Previously we have machines in multiple global lists, such as airlocks
being in GLOB.doors, GLOB.airlocks, GLOB.machines.
This makes that not a thing, and also means that iterating through
GLOB.machines looking for a specific type is no longer as expensive.
2023-07-15 16:17:46 -04:00

186 lines
7.4 KiB
Plaintext

/// The Starfury map template itself.
/datum/map_template/battlecruiser_starfury
name = "SBC Starfury"
mappath = "_maps/templates/battlecruiser_starfury.dmm"
// Stationary docking ports for the Starfury's strike shuttles.
/obj/docking_port/stationary/starfury_corvette
name = "SBC Starfury Corvette Bay"
shuttle_id = "SBC_corvette_bay"
roundstart_template = /datum/map_template/shuttle/starfury/corvette
hidden = TRUE
width = 14
height = 7
dwidth = 7
dir = NORTH
/obj/docking_port/stationary/starfury_fighter
name = "SBC Starfury Fighter Bay"
shuttle_id = "SBC_fighter_bay"
hidden = TRUE
width = 5
height = 7
dwidth = 2
dir = NORTH
/obj/docking_port/stationary/starfury_fighter/fighter_one
name = "SBC Starfury Port Fighter Bay"
shuttle_id = "SBC_fighter1_bay"
roundstart_template = /datum/map_template/shuttle/starfury/fighter_one
/obj/docking_port/stationary/starfury_fighter/fighter_two
name = "SBC Starfury Center Fighter Bay"
shuttle_id = "SBC_fighter2_bay"
roundstart_template = /datum/map_template/shuttle/starfury/fighter_two
/obj/docking_port/stationary/starfury_fighter/fighter_three
name = "SBC Starfury Starboard Fighter Bay"
shuttle_id = "SBC_fighter3_bay"
roundstart_template = /datum/map_template/shuttle/starfury/fighter_three
// Mobile docking ports for the Starfury's strike shuttles.
/obj/docking_port/mobile/syndicate_fighter
name = "syndicate fighter"
shuttle_id = "syndicate_fighter"
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0)
hidden = TRUE
dir = NORTH
port_direction = SOUTH
/obj/docking_port/mobile/syndicate_fighter/fighter_one
name = "syndicate fighter one"
shuttle_id = "SBC_fighter1"
/obj/docking_port/mobile/syndicate_fighter/fighter_two
name = "syndicate fighter two"
shuttle_id = "SBC_fighter2"
/obj/docking_port/mobile/syndicate_fighter/fighter_three
name = "syndicate fighter three"
shuttle_id = "SBC_fighter3"
/obj/docking_port/mobile/syndicate_corvette
name = "syndicate corvette"
shuttle_id = "SBC_corvette"
movement_force = list("KNOCKDOWN" = 0, "THROW" = 0)
hidden = TRUE
dir = NORTH
port_direction = SOUTH
preferred_direction = WEST
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/fighter
name = "syndicate fighter navigation computer"
desc = "Used to pilot syndicate fighters to commence precision strikes."
x_offset = 0
y_offset = 3
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/fighter/fighter_one
shuttleId = "SBC_fighter1"
shuttlePortId = "SBC_fighter1_custom"
jump_to_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1, "SBC_fighter1_bay" = 1)
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/fighter/fighter_two
shuttleId = "SBC_fighter2"
shuttlePortId = "SBC_fighter2_custom"
jump_to_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1, "SBC_fighter2_bay" = 1)
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/fighter/fighter_three
shuttleId = "SBC_fighter3"
shuttlePortId = "SBC_fighter3_custom"
jump_to_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1, "SBC_fighter3_bay" = 1)
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/corvette
name = "syndicate corvette navigation computer"
desc = "Used to pilot the syndicate corvette to board enemy stations and ships."
shuttleId = "SBC_corvette"
shuttlePortId = "SBC_corvette_custom"
jump_to_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1, "SBC_corvette_bay" = 1)
y_offset = 3
x_offset = 0
/obj/machinery/computer/shuttle/starfury/fighter
name = "syndicate fighter control console"
desc = "A control computer which controls a shuttle which operates from the SBC Starfury.."
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/shuttle/starfury/fighter/fighter_one
shuttleId = "SBC_fighter1"
possible_destinations = "SBC_fighter1_custom;SBC_fighter1_bay;SBC_fighter2_bay;SBC_fighter3_bay;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s"
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/shuttle/starfury/fighter/fighter_two
shuttleId = "SBC_fighter2"
possible_destinations = "SBC_fighter2_custom;SBC_fighter1_bay;SBC_fighter2_bay;SBC_fighter3_bay;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s"
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/shuttle/starfury/fighter/fighter_three
shuttleId = "SBC_fighter3"
possible_destinations = "SBC_fighter3_custom;SBC_fighter1_bay;SBC_fighter2_bay;SBC_fighter3_bay;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s"
req_access = list(ACCESS_SYNDICATE)
/obj/machinery/computer/shuttle/starfury/corvette
name = "syndicate corvette control console"
desc = "A control computer which controls a shuttle which operates from the SBC Starfury.."
shuttleId = "SBC_corvette"
possible_destinations = "SBC_corvette_custom;SBC_corvette_bay;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s"
req_access = list(ACCESS_SYNDICATE)
/*
* Summons the SBC Starfury, a large syndicate battlecruiser, in Deep Space.
* It can be piloted into the station's area.
*/
/proc/summon_battlecruiser(datum/team/battlecruiser/team)
var/list/candidates = poll_ghost_candidates("Do you wish to be considered for battlecruiser crew?", ROLE_TRAITOR)
shuffle_inplace(candidates)
var/datum/map_template/ship = SSmapping.map_templates["battlecruiser_starfury.dmm"]
var/x = rand(TRANSITIONEDGE, world.maxx - TRANSITIONEDGE - ship.width)
var/y = rand(TRANSITIONEDGE, world.maxy - TRANSITIONEDGE - ship.height)
var/z = SSmapping.empty_space?.z_value
if(isnull(z))
CRASH("Battlecruiser found no empty space level to load in!")
var/turf/battlecruiser_loading_turf = locate(x, y, z)
if(!battlecruiser_loading_turf)
CRASH("Battlecruiser found no turf to load in!")
if(!ship.load(battlecruiser_loading_turf))
CRASH("Loading battlecruiser ship failed!")
if(!team)
team = new()
var/obj/machinery/nuclearbomb/selfdestruct/nuke = SSmachines.get_machines_by_type(/obj/machinery/nuclearbomb/selfdestruct)[1]
if(nuke.r_code == NUKE_CODE_UNSET)
nuke.r_code = random_nukecode()
team.nuke = nuke
team.update_objectives()
for(var/turf/open/spawned_turf as anything in ship.get_affected_turfs(battlecruiser_loading_turf)) //not as anything to filter out closed turfs
for(var/obj/effect/mob_spawn/ghost_role/human/syndicate/battlecruiser/spawner in spawned_turf)
spawner.antag_team = team
if(candidates.len > 0)
var/mob/our_candidate = candidates[1]
spawner.create_from_ghost(our_candidate)
spawner.antag_team.players_spawned += (our_candidate.ckey)
candidates.Splice(1, 2)
notify_ghosts(
"The battlecruiser has an object of interest: [our_candidate]!",
source = our_candidate,
action = NOTIFY_ORBIT,
header = "Something's Interesting!"
)
else
notify_ghosts(
"The battlecruiser has an object of interest: [spawner]!",
source = spawner,
action = NOTIFY_ORBIT,
header="Something's Interesting!"
)
priority_announce("Unidentified armed ship detected near the station.")