diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 34b4a045f7..eff3a8d62e 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -65,6 +65,8 @@ datum/controller/game_controller/proc/setup() if(!ticker) ticker = new /datum/controller/gameticker() + if(!shuttles) shuttles = new /datum/shuttle_controller() + setup_objects() setupgenetics() setupfactions() @@ -280,7 +282,7 @@ datum/controller/game_controller/proc/process_machines_power() if(M) if(M.use_power) M.auto_use_power() - + if(A.apc.len && A.master == A) i++ continue @@ -295,7 +297,7 @@ datum/controller/game_controller/proc/process_machines_rebuild() A.powerupdate += 1 active_areas |= A rebuild_active_areas = 0 - + datum/controller/game_controller/proc/process_objects() var/i = 1 diff --git a/code/global.dm b/code/global.dm index 12de02408d..0bfc9e5890 100644 --- a/code/global.dm +++ b/code/global.dm @@ -109,7 +109,6 @@ var/list/bombers = list( ) var/list/admin_log = list ( ) var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]" var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was -var/list/shuttles = list( ) var/list/reg_dna = list( ) // list/traitobj = list( ) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 54b4c2c2fb..23815ad44a 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -637,10 +637,7 @@ var/global/floorIsLava = 0 Make all items look like guns
Japanese Animes Mode
Egalitarian Station Mode
- Move Administration Shuttle
- Move Ferry
- Move Alien Dinghy
- Move Mining Shuttle
+ Move a shuttle
Break all lights
Fix all lights
Best Friend AI
@@ -1127,67 +1124,4 @@ proc/get_options_bar(whom, detail = 2, name = 0, link = 1) // //ALL DONE //********************************************************************************************************* -//TO-DO: -// -// - - -/**********************Administration Shuttle**************************/ - -var/admin_shuttle_location = 0 // 0 = centcom 13, 1 = station - -proc/move_admin_shuttle() - var/area/fromArea - var/area/toArea - if (admin_shuttle_location == 1) - fromArea = locate(/area/shuttle/administration/station) - toArea = locate(/area/shuttle/administration/centcom) - else - fromArea = locate(/area/shuttle/administration/centcom) - toArea = locate(/area/shuttle/administration/station) - fromArea.move_contents_to(toArea) - if (admin_shuttle_location) - admin_shuttle_location = 0 - else - admin_shuttle_location = 1 - return - -/**********************Centcom Ferry**************************/ - -var/ferry_location = 0 // 0 = centcom , 1 = station - -proc/move_ferry() - var/area/fromArea - var/area/toArea - if (ferry_location == 1) - fromArea = locate(/area/shuttle/transport1/station) - toArea = locate(/area/shuttle/transport1/centcom) - else - fromArea = locate(/area/shuttle/transport1/centcom) - toArea = locate(/area/shuttle/transport1/station) - fromArea.move_contents_to(toArea) - if (ferry_location) - ferry_location = 0 - else - ferry_location = 1 - return - -/**********************Alien ship**************************/ - -var/alien_ship_location = 1 // 0 = base , 1 = mine - -proc/move_alien_ship() - var/area/fromArea - var/area/toArea - if (alien_ship_location == 1) - fromArea = locate(/area/shuttle/alien/mine) - toArea = locate(/area/shuttle/alien/base) - else - fromArea = locate(/area/shuttle/alien/base) - toArea = locate(/area/shuttle/alien/mine) - fromArea.move_contents_to(toArea) - if (alien_ship_location) - alien_ship_location = 0 - else - alien_ship_location = 1 - return +// \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 352ad23e89..2108faca76 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1921,33 +1921,20 @@ message_admins("\blue [key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1) log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]") - //TODO: Generalize admin shuttles, make 'Move Shuttle' adminverb. - if("moveminingshuttle") - if(shuttle_moving["Mining"] || isnull(shuttle_moving["Mining"])) - return - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","ShM") - move_shuttle("Mining",locate(/area/shuttle/mining/outpost),locate(/area/shuttle/mining/station)) - message_admins("\blue [key_name_admin(usr)] moved mining shuttle", 1) - log_admin("[key_name(usr)] moved the mining shuttle") - if("moveadminshuttle") + if("moveshuttle") + + if(!shuttles) return // Something is very wrong, the shuttle controller has not been created. + feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","ShA") - move_admin_shuttle() - message_admins("\blue [key_name_admin(usr)] moved the centcom administration shuttle", 1) - log_admin("[key_name(usr)] moved the centcom administration shuttle") - if("moveferry") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","ShF") - move_ferry() - message_admins("\blue [key_name_admin(usr)] moved the centcom ferry", 1) - log_admin("[key_name(usr)] moved the centcom ferry") - if("movealienship") - feedback_inc("admin_secrets_fun_used",1) - feedback_add_details("admin_secrets_fun_used","ShX") - move_alien_ship() - message_admins("\blue [key_name_admin(usr)] moved the alien dinghy", 1) - log_admin("[key_name(usr)] moved the alien dinghy") + + var/shuttle_tag = input("Which shuttle do you want to call?") as null|anything in shuttles.locations + + if(shuttle_tag && !shuttles.moving[shuttle_tag]) + move_shuttle(shuttle_tag) + message_admins("\blue [key_name_admin(usr)] moved the [shuttle_tag] shuttle", 1) + log_admin("[key_name(usr)] moved the [shuttle_tag] shuttle") + if("togglebombcap") feedback_inc("admin_secrets_fun_used",1) feedback_add_details("admin_secrets_fun_used","BC") diff --git a/code/modules/shuttles/engineering.dm b/code/modules/shuttles/engineering.dm index 570229afc1..9a4158c5bb 100644 --- a/code/modules/shuttles/engineering.dm +++ b/code/modules/shuttles/engineering.dm @@ -2,10 +2,4 @@ name = "engineering shuttle console" shuttle_tag = "Engineering" req_access = list(access_engine) - circuit = "/obj/item/weapon/circuitboard/engineering_shuttle" - location = 1 //Starts offstation. - -/obj/machinery/computer/shuttle_control/engineering/New() - offsite = locate(/area/shuttle/constructionsite/site) - station = locate(/area/shuttle/constructionsite/station) - ..() \ No newline at end of file + circuit = "/obj/item/weapon/circuitboard/engineering_shuttle" \ No newline at end of file diff --git a/code/modules/shuttles/mining.dm b/code/modules/shuttles/mining.dm index ecd3e40ac8..bb25028e78 100644 --- a/code/modules/shuttles/mining.dm +++ b/code/modules/shuttles/mining.dm @@ -2,9 +2,4 @@ name = "mining shuttle console" shuttle_tag = "Mining" req_access = list(access_mining) - circuit = "/obj/item/weapon/circuitboard/mining_shuttle" - -/obj/machinery/computer/shuttle_control/mining/New() - offsite = locate(/area/shuttle/mining/outpost) - station = locate(/area/shuttle/mining/station) - ..() \ No newline at end of file + circuit = "/obj/item/weapon/circuitboard/mining_shuttle" \ No newline at end of file diff --git a/code/modules/shuttles/research.dm b/code/modules/shuttles/research.dm index fa5ebe749f..729c10f090 100644 --- a/code/modules/shuttles/research.dm +++ b/code/modules/shuttles/research.dm @@ -2,9 +2,4 @@ name = "research shuttle console" shuttle_tag = "Research" req_access = list(access_research) - circuit = "/obj/item/weapon/circuitboard/research_shuttle" - -/obj/machinery/computer/shuttle_control/research/New() - offsite = locate(/area/shuttle/research/outpost) - station = locate(/area/shuttle/research/station) - ..() \ No newline at end of file + circuit = "/obj/item/weapon/circuitboard/research_shuttle" \ No newline at end of file diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index e1b8a00001..17d71b4701 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -1,8 +1,56 @@ //These lists are populated in /obj/machinery/computer/shuttle_control/New() -//TODO: Integrate these into a shuttle controller. -var/list/global/shuttle_locations = list() -var/list/global/shuttle_delays = list() -var/list/global/shuttle_moving = list() +//Shuttle controller is instantiated in master_controller.dm. + +var/global/datum/shuttle_controller/shuttles + +/datum/shuttle_controller //This isn't really a controller... + var/list/locations = list() + var/list/delays = list() + var/list/moving = list() + var/list/areas_offsite = list() + var/list/areas_station = list() + +/datum/shuttle_controller/New() + + ..() + + // Admin shuttles. + locations["Centcom"] = 1 + delays["Centcom"] = 0 + moving["Centcom"] = 0 + areas_offsite["Centcom"] = locate(/area/shuttle/transport1/centcom) + areas_station["Centcom"] = locate(/area/shuttle/transport1/station) + + locations["Administration"] = 1 + delays["Administration"] = 0 + moving["Administration"] = 0 + areas_offsite["Administration"] = locate(/area/shuttle/administration/centcom) + areas_station["Administration"] = locate(/area/shuttle/administration/station) + + locations["Alien"] = 0 + delays["Alien"] = 0 + moving["Alien"] = 0 + areas_offsite["Alien"] = locate(/area/shuttle/alien/base) + areas_station["Alien"] = locate(/area/shuttle/alien/mine) + + // Public shuttles. + locations["Engineering"] = 1 + delays["Engineering"] = 10 + moving["Engineering"] = 0 + areas_offsite["Engineering"] = locate(/area/shuttle/constructionsite/site) + areas_station["Engineering"] = locate(/area/shuttle/constructionsite/station) + + locations["Mining"] = 0 + delays["Mining"] = 10 + moving["Mining"] = 0 + areas_offsite["Mining"] = locate(/area/shuttle/mining/outpost) + areas_station["Mining"] = locate(/area/shuttle/mining/station) + + locations["Research"] = 0 + delays["Research"] = 10 + moving["Research"] = 0 + areas_offsite["Research"] = locate(/area/shuttle/research/outpost) + areas_station["Research"] = locate(/area/shuttle/research/station) /obj/machinery/computer/shuttle_control name = "shuttle console" @@ -11,27 +59,11 @@ var/list/global/shuttle_moving = list() req_access = list(access_engine) circuit = "/obj/item/weapon/circuitboard/engineering_shuttle" - var/shuttle_tag // Used to coordinate data in global lists. - var/area/offsite // Off-station destination. - var/area/station // Station destination. + var/shuttle_tag // Used to coordinate data in shuttle controller. var/hacked = 0 // Has been emagged, no access restrictions. - var/location = 0 // The location that the shuttle begins the game at. - var/delay = 10 // The number of seconds of delay on each shuttle movement. - -/obj/machinery/computer/shuttle_control/New() - ..() - - if(!shuttle_tag) - del(src) - return - - if(isnull(shuttle_locations[shuttle_tag])) shuttle_locations[shuttle_tag] = location - if(isnull(shuttle_delays[shuttle_tag])) shuttle_delays[shuttle_tag] = delay - if(isnull(shuttle_moving[shuttle_tag])) shuttle_moving[shuttle_tag] = 0 /obj/machinery/computer/shuttle_control/attack_hand(user as mob) - if(..(user)) return src.add_fingerprint(user) @@ -39,10 +71,10 @@ var/list/global/shuttle_moving = list() dat = "
[shuttle_tag] Shuttle Control
" - if(shuttle_moving[shuttle_tag]) + if(shuttles.moving[shuttle_tag]) dat += "Location: Moving
" else - dat += "Location: [shuttle_locations[shuttle_tag] ? "Offsite" : "Station"]
" + dat += "Location: [shuttles.locations[shuttle_tag] ? "Offsite" : "Station"]
" dat += "Send
" @@ -55,9 +87,9 @@ var/list/global/shuttle_moving = list() usr.set_machine(src) src.add_fingerprint(usr) if(href_list["move"]) - if (!shuttle_moving[shuttle_tag]) + if (!shuttles.moving[shuttle_tag]) usr << "\blue [shuttle_tag] Shuttle recieved message and will be sent shortly." - move_shuttle(shuttle_tag,offsite,station) + move_shuttle(shuttle_tag) else usr << "\blue [shuttle_tag] Shuttle is already moving." @@ -74,19 +106,19 @@ var/list/global/shuttle_moving = list() proc/move_shuttle(var/shuttle_tag,var/area/offsite,var/area/station) - if(!shuttle_tag || isnull(shuttle_locations[shuttle_tag])) + if(!shuttle_tag || isnull(shuttles.locations[shuttle_tag])) return - if(shuttle_moving[shuttle_tag] == 1) return - shuttle_moving[shuttle_tag] = 1 + if(shuttles.moving[shuttle_tag] == 1) return + shuttles.moving[shuttle_tag] = 1 - spawn(shuttle_delays[shuttle_tag]*10) + spawn(shuttles.delays[shuttle_tag]*10) var/list/dstturfs = list() var/throwy = world.maxy - var/area/area_going_to = (shuttle_locations[shuttle_tag] == 1 ? station : offsite) - var/area/area_coming_from = (shuttle_locations[shuttle_tag] == 1 ? offsite : station) + var/area/area_going_to = (shuttles.locations[shuttle_tag] == 1 ? shuttles.areas_station[shuttle_tag] : shuttles.areas_offsite[shuttle_tag]) + var/area/area_coming_from = (shuttles.locations[shuttle_tag] == 1 ? shuttles.areas_offsite[shuttle_tag] : shuttles.areas_station[shuttle_tag]) for(var/turf/T in area_going_to) dstturfs += T @@ -108,7 +140,7 @@ proc/move_shuttle(var/shuttle_tag,var/area/offsite,var/area/station) area_coming_from.move_contents_to(area_going_to) - shuttle_locations[shuttle_tag] = !shuttle_locations[shuttle_tag] + shuttles.locations[shuttle_tag] = !shuttles.locations[shuttle_tag] for(var/mob/M in area_going_to) if(M.client) @@ -121,6 +153,6 @@ proc/move_shuttle(var/shuttle_tag,var/area/offsite,var/area/station) if(!M.buckled) M.Weaken(3) - shuttle_moving[shuttle_tag] = 0 + shuttles.moving[shuttle_tag] = 0 return \ No newline at end of file