mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Moved engineering, research and mining shuttles to a generalized system with its own directory structure.
This commit is contained in:
@@ -1197,7 +1197,6 @@
|
|||||||
#include "code\modules\research\rdconsole.dm"
|
#include "code\modules\research\rdconsole.dm"
|
||||||
#include "code\modules\research\rdmachines.dm"
|
#include "code\modules\research\rdmachines.dm"
|
||||||
#include "code\modules\research\research.dm"
|
#include "code\modules\research\research.dm"
|
||||||
#include "code\modules\research\research_shuttle.dm"
|
|
||||||
#include "code\modules\research\server.dm"
|
#include "code\modules\research\server.dm"
|
||||||
#include "code\modules\research\xenoarchaeology\areas.dm"
|
#include "code\modules\research\xenoarchaeology\areas.dm"
|
||||||
#include "code\modules\research\xenoarchaeology\chemistry.dm"
|
#include "code\modules\research\xenoarchaeology\chemistry.dm"
|
||||||
@@ -1278,6 +1277,9 @@
|
|||||||
#include "code\modules\security levels\keycard authentication.dm"
|
#include "code\modules\security levels\keycard authentication.dm"
|
||||||
#include "code\modules\security levels\security levels.dm"
|
#include "code\modules\security levels\security levels.dm"
|
||||||
#include "code\modules\shuttles\engineering.dm"
|
#include "code\modules\shuttles\engineering.dm"
|
||||||
|
#include "code\modules\shuttles\mining.dm"
|
||||||
|
#include "code\modules\shuttles\research.dm"
|
||||||
|
#include "code\modules\shuttles\shuttle.dm"
|
||||||
#include "code\modules\supermatter\supermatter.dm"
|
#include "code\modules\supermatter\supermatter.dm"
|
||||||
#include "code\modules\surgery\appendix.dm"
|
#include "code\modules\surgery\appendix.dm"
|
||||||
#include "code\modules\surgery\bones.dm"
|
#include "code\modules\surgery\bones.dm"
|
||||||
|
|||||||
@@ -169,10 +169,7 @@
|
|||||||
build_path = "/obj/machinery/computer/supplycomp"
|
build_path = "/obj/machinery/computer/supplycomp"
|
||||||
origin_tech = "programming=3"
|
origin_tech = "programming=3"
|
||||||
var/contraband_enabled = 0
|
var/contraband_enabled = 0
|
||||||
/obj/item/weapon/circuitboard/research_shuttle
|
|
||||||
name = "Circuit board (Research Shuttle)"
|
|
||||||
build_path = "/obj/machinery/computer/research_shuttle"
|
|
||||||
origin_tech = "programming=2"
|
|
||||||
/obj/item/weapon/circuitboard/operating
|
/obj/item/weapon/circuitboard/operating
|
||||||
name = "Circuit board (Operating Computer)"
|
name = "Circuit board (Operating Computer)"
|
||||||
build_path = "/obj/machinery/computer/operating"
|
build_path = "/obj/machinery/computer/operating"
|
||||||
@@ -196,20 +193,17 @@
|
|||||||
/obj/item/weapon/circuitboard/splicer
|
/obj/item/weapon/circuitboard/splicer
|
||||||
name = "Circuit board (Disease Splicer)"
|
name = "Circuit board (Disease Splicer)"
|
||||||
build_path = "/obj/machinery/computer/diseasesplicer"
|
build_path = "/obj/machinery/computer/diseasesplicer"
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/mining_shuttle
|
/obj/item/weapon/circuitboard/mining_shuttle
|
||||||
name = "Circuit board (Mining Shuttle)"
|
name = "Circuit board (Mining Shuttle)"
|
||||||
build_path = "/obj/machinery/computer/mining_shuttle"
|
build_path = "/obj/machinery/computer/shuttle_control/mining"
|
||||||
origin_tech = "programming=2"
|
origin_tech = "programming=2"
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/engineering_shuttle
|
/obj/item/weapon/circuitboard/engineering_shuttle
|
||||||
name = "Circuit board (Engineering Shuttle)"
|
name = "Circuit board (Engineering Shuttle)"
|
||||||
build_path = "/obj/machinery/computer/engineering_shuttle"
|
build_path = "/obj/machinery/computer/shuttle_control/engineering"
|
||||||
origin_tech = "programming=2"
|
origin_tech = "programming=2"
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/research_shuttle
|
/obj/item/weapon/circuitboard/research_shuttle
|
||||||
name = "Circuit board (Research Shuttle)"
|
name = "Circuit board (Research Shuttle)"
|
||||||
build_path = "/obj/machinery/computer/research_shuttle"
|
build_path = "/obj/machinery/computer/shuttle_control/research"
|
||||||
origin_tech = "programming=2"
|
origin_tech = "programming=2"
|
||||||
/obj/item/weapon/circuitboard/HolodeckControl // Not going to let people get this, but it's just here for future
|
/obj/item/weapon/circuitboard/HolodeckControl // Not going to let people get this, but it's just here for future
|
||||||
name = "Circuit board (Holodeck Control)"
|
name = "Circuit board (Holodeck Control)"
|
||||||
|
|||||||
@@ -1920,12 +1920,14 @@
|
|||||||
ticker.mode.finalize_traitor(A.mind)
|
ticker.mode.finalize_traitor(A.mind)
|
||||||
message_admins("\blue [key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]", 1)
|
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]")
|
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("moveminingshuttle")
|
||||||
if(mining_shuttle_moving)
|
if(shuttle_moving["Mining"] || shuttle_moving["Mining"] == null)
|
||||||
return
|
return
|
||||||
feedback_inc("admin_secrets_fun_used",1)
|
feedback_inc("admin_secrets_fun_used",1)
|
||||||
feedback_add_details("admin_secrets_fun_used","ShM")
|
feedback_add_details("admin_secrets_fun_used","ShM")
|
||||||
move_mining_shuttle()
|
move_shuttle("Mining",locate(/area/shuttle/mining/outpost),locate(/area/shuttle/mining/station))
|
||||||
message_admins("\blue [key_name_admin(usr)] moved mining shuttle", 1)
|
message_admins("\blue [key_name_admin(usr)] moved mining shuttle", 1)
|
||||||
log_admin("[key_name(usr)] moved the mining shuttle")
|
log_admin("[key_name(usr)] moved the mining shuttle")
|
||||||
if("moveadminshuttle")
|
if("moveadminshuttle")
|
||||||
|
|||||||
@@ -38,132 +38,6 @@
|
|||||||
new /obj/item/clothing/glasses/meson(src)
|
new /obj/item/clothing/glasses/meson(src)
|
||||||
|
|
||||||
|
|
||||||
/**********************Shuttle Computer**************************/
|
|
||||||
|
|
||||||
var/mining_shuttle_tickstomove = 10
|
|
||||||
var/mining_shuttle_moving = 0
|
|
||||||
var/mining_shuttle_location = 0 // 0 = station 13, 1 = mining station
|
|
||||||
|
|
||||||
proc/move_mining_shuttle()
|
|
||||||
if(mining_shuttle_moving) return
|
|
||||||
mining_shuttle_moving = 1
|
|
||||||
spawn(mining_shuttle_tickstomove*10)
|
|
||||||
var/area/fromArea
|
|
||||||
var/area/toArea
|
|
||||||
if (mining_shuttle_location == 1)
|
|
||||||
fromArea = locate(/area/shuttle/mining/outpost)
|
|
||||||
toArea = locate(/area/shuttle/mining/station)
|
|
||||||
|
|
||||||
else
|
|
||||||
fromArea = locate(/area/shuttle/mining/station)
|
|
||||||
toArea = locate(/area/shuttle/mining/outpost)
|
|
||||||
|
|
||||||
var/list/dstturfs = list()
|
|
||||||
var/throwy = world.maxy
|
|
||||||
|
|
||||||
for(var/turf/T in toArea)
|
|
||||||
dstturfs += T
|
|
||||||
if(T.y < throwy)
|
|
||||||
throwy = T.y
|
|
||||||
|
|
||||||
// hey you, get out of the way!
|
|
||||||
for(var/turf/T in dstturfs)
|
|
||||||
// find the turf to move things to
|
|
||||||
var/turf/D = locate(T.x, throwy - 1, 1)
|
|
||||||
//var/turf/E = get_step(D, SOUTH)
|
|
||||||
for(var/atom/movable/AM as mob|obj in T)
|
|
||||||
AM.Move(D)
|
|
||||||
// NOTE: Commenting this out to avoid recreating mass driver glitch
|
|
||||||
/*
|
|
||||||
spawn(0)
|
|
||||||
AM.throw_at(E, 1, 1)
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(istype(T, /turf/simulated))
|
|
||||||
del(T)
|
|
||||||
|
|
||||||
for(var/mob/living/carbon/bug in toArea) // If someone somehow is still in the shuttle's docking area...
|
|
||||||
bug.gib()
|
|
||||||
|
|
||||||
for(var/mob/living/simple_animal/pest in toArea) // And for the other kind of bug...
|
|
||||||
pest.gib()
|
|
||||||
|
|
||||||
fromArea.move_contents_to(toArea)
|
|
||||||
if (mining_shuttle_location)
|
|
||||||
mining_shuttle_location = 0
|
|
||||||
else
|
|
||||||
mining_shuttle_location = 1
|
|
||||||
|
|
||||||
for(var/mob/M in toArea)
|
|
||||||
if(M.client)
|
|
||||||
spawn(0)
|
|
||||||
if(M.buckled)
|
|
||||||
shake_camera(M, 3, 1) // buckled, not a lot of shaking
|
|
||||||
else
|
|
||||||
shake_camera(M, 10, 1) // unbuckled, HOLY SHIT SHAKE THE ROOM
|
|
||||||
if(istype(M, /mob/living/carbon))
|
|
||||||
if(!M.buckled)
|
|
||||||
M.Weaken(3)
|
|
||||||
|
|
||||||
mining_shuttle_moving = 0
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/mining_shuttle
|
|
||||||
name = "mining shuttle console"
|
|
||||||
icon = 'icons/obj/computer.dmi'
|
|
||||||
icon_state = "shuttle"
|
|
||||||
req_access = list(access_mining)
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/mining_shuttle"
|
|
||||||
var/hacked = 0
|
|
||||||
var/location = 0 //0 = station, 1 = mining base
|
|
||||||
|
|
||||||
/obj/machinery/computer/mining_shuttle/attack_hand(user as mob)
|
|
||||||
if(..(user))
|
|
||||||
return
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
var/dat
|
|
||||||
|
|
||||||
dat = "<center>Mining Shuttle Control<hr>"
|
|
||||||
|
|
||||||
if(mining_shuttle_moving)
|
|
||||||
dat += "Location: <font color='red'>Moving</font> <br>"
|
|
||||||
else
|
|
||||||
dat += "Location: [mining_shuttle_location ? "Outpost" : "Station"] <br>"
|
|
||||||
|
|
||||||
dat += "<b><A href='?src=\ref[src];move=[1]'>Send</A></b></center>"
|
|
||||||
|
|
||||||
|
|
||||||
user << browse("[dat]", "window=miningshuttle;size=200x150")
|
|
||||||
|
|
||||||
/obj/machinery/computer/mining_shuttle/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
usr.set_machine(src)
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
if(href_list["move"])
|
|
||||||
//if(ticker.mode.name == "blob")
|
|
||||||
// if(ticker.mode:declared)
|
|
||||||
// usr << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
|
||||||
// return
|
|
||||||
|
|
||||||
if (!mining_shuttle_moving)
|
|
||||||
usr << "\blue Shuttle recieved message and will be sent shortly."
|
|
||||||
move_mining_shuttle()
|
|
||||||
else
|
|
||||||
usr << "\blue Shuttle is already moving."
|
|
||||||
|
|
||||||
updateUsrDialog()
|
|
||||||
|
|
||||||
/obj/machinery/computer/mining_shuttle/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
||||||
|
|
||||||
if (istype(W, /obj/item/weapon/card/emag))
|
|
||||||
src.req_access = list()
|
|
||||||
hacked = 1
|
|
||||||
usr << "You fried the consoles ID checking system. It's now available to everyone!"
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/******************************Lantern*******************************/
|
/******************************Lantern*******************************/
|
||||||
|
|
||||||
/obj/item/device/flashlight/lantern
|
/obj/item/device/flashlight/lantern
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
|
|
||||||
/**********************Shuttle Computer**************************/
|
|
||||||
|
|
||||||
//copy paste from the mining shuttle
|
|
||||||
|
|
||||||
var/research_shuttle_tickstomove = 10
|
|
||||||
var/research_shuttle_moving = 0
|
|
||||||
var/research_shuttle_location = 0 // 0 = station 13, 1 = research station
|
|
||||||
|
|
||||||
proc/move_research_shuttle()
|
|
||||||
if(research_shuttle_moving) return
|
|
||||||
research_shuttle_moving = 1
|
|
||||||
spawn(research_shuttle_tickstomove*10)
|
|
||||||
var/area/fromArea
|
|
||||||
var/area/toArea
|
|
||||||
if (research_shuttle_location == 1)
|
|
||||||
fromArea = locate(/area/shuttle/research/outpost)
|
|
||||||
toArea = locate(/area/shuttle/research/station)
|
|
||||||
else
|
|
||||||
fromArea = locate(/area/shuttle/research/station)
|
|
||||||
toArea = locate(/area/shuttle/research/outpost)
|
|
||||||
|
|
||||||
|
|
||||||
var/list/dstturfs = list()
|
|
||||||
var/throwy = world.maxy
|
|
||||||
|
|
||||||
for(var/turf/T in toArea)
|
|
||||||
dstturfs += T
|
|
||||||
if(T.y < throwy)
|
|
||||||
throwy = T.y
|
|
||||||
|
|
||||||
// hey you, get out of the way!
|
|
||||||
for(var/turf/T in dstturfs)
|
|
||||||
// find the turf to move things to
|
|
||||||
var/turf/D = locate(T.x, throwy - 1, 1)
|
|
||||||
//var/turf/E = get_step(D, SOUTH)
|
|
||||||
for(var/atom/movable/AM as mob|obj in T)
|
|
||||||
AM.Move(D)
|
|
||||||
// NOTE: Commenting this out to avoid recreating mass driver glitch
|
|
||||||
/*
|
|
||||||
spawn(0)
|
|
||||||
AM.throw_at(E, 1, 1)
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(istype(T, /turf/simulated))
|
|
||||||
del(T)
|
|
||||||
|
|
||||||
for(var/mob/living/carbon/bug in toArea) // If someone somehow is still in the shuttle's docking area...
|
|
||||||
bug.gib()
|
|
||||||
|
|
||||||
for(var/mob/living/simple_animal/pest in toArea) // And for the other kind of bug...
|
|
||||||
pest.gib()
|
|
||||||
|
|
||||||
fromArea.move_contents_to(toArea)
|
|
||||||
if (research_shuttle_location)
|
|
||||||
research_shuttle_location = 0
|
|
||||||
else
|
|
||||||
research_shuttle_location = 1
|
|
||||||
research_shuttle_moving = 0
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/research_shuttle
|
|
||||||
name = "Research Shuttle Console"
|
|
||||||
icon = 'icons/obj/computer.dmi'
|
|
||||||
icon_state = "shuttle"
|
|
||||||
req_access = list(access_research)
|
|
||||||
circuit = "/obj/item/weapon/circuitboard/research_shuttle"
|
|
||||||
var/hacked = 0
|
|
||||||
var/location = 0 //0 = station, 1 = research base
|
|
||||||
|
|
||||||
/obj/machinery/computer/research_shuttle/attack_hand(user as mob)
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
var/dat = "<center>Research shuttle: <b><A href='?src=\ref[src];move=1'>Send</A></b></center><br>"
|
|
||||||
|
|
||||||
user << browse("[dat]", "window=researchshuttle;size=200x100")
|
|
||||||
|
|
||||||
/obj/machinery/computer/research_shuttle/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
usr.machine = src
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
if(href_list["move"])
|
|
||||||
//if(ticker.mode.name == "blob")
|
|
||||||
// if(ticker.mode:declared)
|
|
||||||
// usr << "Under directive 7-10, [station_name()] is quarantined until further notice."
|
|
||||||
// return
|
|
||||||
|
|
||||||
if (!research_shuttle_moving)
|
|
||||||
usr << "\blue Shuttle recieved message and will be sent shortly."
|
|
||||||
move_research_shuttle()
|
|
||||||
else
|
|
||||||
usr << "\blue Shuttle is already moving."
|
|
||||||
|
|
||||||
/obj/machinery/computer/research_shuttle/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
||||||
|
|
||||||
if (istype(W, /obj/item/weapon/card/emag))
|
|
||||||
var/obj/item/weapon/card/emag/E = W
|
|
||||||
if(E.uses)
|
|
||||||
E.uses--
|
|
||||||
else
|
|
||||||
return
|
|
||||||
src.req_access = list()
|
|
||||||
hacked = 1
|
|
||||||
usr << "You fried the consoles ID checking system. It's now available to everyone!"
|
|
||||||
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
@@ -1,108 +1,13 @@
|
|||||||
var/engineering_shuttle_tickstomove = 10
|
/obj/machinery/computer/shuttle_control/engineering
|
||||||
var/engineering_shuttle_moving = 0
|
|
||||||
var/engineering_shuttle_location = 1 //Starts at the construction site.
|
|
||||||
|
|
||||||
proc/move_engineering_shuttle()
|
|
||||||
if(engineering_shuttle_moving) return
|
|
||||||
engineering_shuttle_moving = 1
|
|
||||||
spawn(engineering_shuttle_tickstomove*10)
|
|
||||||
var/area/fromArea
|
|
||||||
var/area/toArea
|
|
||||||
if (engineering_shuttle_location == 1)
|
|
||||||
fromArea = locate(/area/shuttle/constructionsite/site)
|
|
||||||
toArea = locate(/area/shuttle/constructionsite/station)
|
|
||||||
|
|
||||||
else
|
|
||||||
fromArea = locate(/area/shuttle/constructionsite/station)
|
|
||||||
toArea = locate(/area/shuttle/constructionsite/site)
|
|
||||||
|
|
||||||
var/list/dstturfs = list()
|
|
||||||
var/throwy = world.maxy
|
|
||||||
|
|
||||||
for(var/turf/T in toArea)
|
|
||||||
dstturfs += T
|
|
||||||
if(T.y < throwy)
|
|
||||||
throwy = T.y
|
|
||||||
|
|
||||||
for(var/turf/T in dstturfs)
|
|
||||||
var/turf/D = locate(T.x, throwy - 1, 1)
|
|
||||||
for(var/atom/movable/AM as mob|obj in T)
|
|
||||||
AM.Move(D)
|
|
||||||
if(istype(T, /turf/simulated))
|
|
||||||
del(T)
|
|
||||||
|
|
||||||
for(var/mob/living/carbon/bug in toArea)
|
|
||||||
bug.gib()
|
|
||||||
|
|
||||||
for(var/mob/living/simple_animal/pest in toArea)
|
|
||||||
pest.gib()
|
|
||||||
|
|
||||||
fromArea.move_contents_to(toArea)
|
|
||||||
if (engineering_shuttle_location)
|
|
||||||
engineering_shuttle_location = 0
|
|
||||||
else
|
|
||||||
engineering_shuttle_location = 1
|
|
||||||
|
|
||||||
for(var/mob/M in toArea)
|
|
||||||
if(M.client)
|
|
||||||
spawn(0)
|
|
||||||
if(M.buckled)
|
|
||||||
shake_camera(M, 3, 1)
|
|
||||||
else
|
|
||||||
shake_camera(M, 10, 1)
|
|
||||||
if(istype(M, /mob/living/carbon))
|
|
||||||
if(!M.buckled)
|
|
||||||
M.Weaken(3)
|
|
||||||
|
|
||||||
engineering_shuttle_moving = 0
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/engineering_shuttle
|
|
||||||
name = "engineering shuttle console"
|
name = "engineering shuttle console"
|
||||||
icon = 'icons/obj/computer.dmi'
|
icon = 'icons/obj/computer.dmi'
|
||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
|
shuttle_tag = "Engineering"
|
||||||
req_access = list(access_engine)
|
req_access = list(access_engine)
|
||||||
circuit = "/obj/item/weapon/circuitboard/engineering_shuttle"
|
circuit = "/obj/item/weapon/circuitboard/engineering_shuttle"
|
||||||
var/hacked = 0
|
location = 1
|
||||||
var/location = 0
|
|
||||||
|
|
||||||
/obj/machinery/computer/engineering_shuttle/attack_hand(user as mob)
|
/obj/machinery/computer/shuttle_control/engineering/New()
|
||||||
if(..(user))
|
offsite = locate(/area/shuttle/constructionsite/site)
|
||||||
return
|
station = locate(/area/shuttle/constructionsite/station)
|
||||||
src.add_fingerprint(usr)
|
..()
|
||||||
var/dat
|
|
||||||
|
|
||||||
dat = "<center>Engineering Shuttle Control<hr>"
|
|
||||||
|
|
||||||
if(engineering_shuttle_moving)
|
|
||||||
dat += "Location: <font color='red'>Moving</font> <br>"
|
|
||||||
else
|
|
||||||
dat += "Location: [engineering_shuttle_location ? "Outpost" : "Station"] <br>"
|
|
||||||
|
|
||||||
dat += "<b><A href='?src=\ref[src];move=[1]'>Send</A></b></center>"
|
|
||||||
|
|
||||||
|
|
||||||
user << browse("[dat]", "window=engineeringshuttle;size=200x150")
|
|
||||||
|
|
||||||
/obj/machinery/computer/engineering_shuttle/Topic(href, href_list)
|
|
||||||
if(..())
|
|
||||||
return
|
|
||||||
usr.set_machine(src)
|
|
||||||
src.add_fingerprint(usr)
|
|
||||||
if(href_list["move"])
|
|
||||||
if (!engineering_shuttle_moving)
|
|
||||||
usr << "\blue Shuttle recieved message and will be sent shortly."
|
|
||||||
move_engineering_shuttle()
|
|
||||||
else
|
|
||||||
usr << "\blue Shuttle is already moving."
|
|
||||||
|
|
||||||
updateUsrDialog()
|
|
||||||
|
|
||||||
/obj/machinery/computer/engineering_shuttle/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
||||||
|
|
||||||
if (istype(W, /obj/item/weapon/card/emag))
|
|
||||||
src.req_access = list()
|
|
||||||
hacked = 1
|
|
||||||
usr << "You fried the consoles ID checking system. It's now available to everyone!"
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
12
code/modules/shuttles/mining.dm
Normal file
12
code/modules/shuttles/mining.dm
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/obj/machinery/computer/shuttle_control/mining
|
||||||
|
name = "mining shuttle console"
|
||||||
|
icon = 'icons/obj/computer.dmi'
|
||||||
|
icon_state = "shuttle"
|
||||||
|
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)
|
||||||
|
..()
|
||||||
12
code/modules/shuttles/research.dm
Normal file
12
code/modules/shuttles/research.dm
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/obj/machinery/computer/shuttle_control/research
|
||||||
|
name = "research shuttle console"
|
||||||
|
icon = 'icons/obj/computer.dmi'
|
||||||
|
icon_state = "shuttle"
|
||||||
|
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)
|
||||||
|
..()
|
||||||
126
code/modules/shuttles/shuttle.dm
Normal file
126
code/modules/shuttles/shuttle.dm
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
//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()
|
||||||
|
|
||||||
|
/obj/machinery/computer/shuttle_control
|
||||||
|
name = "shuttle console"
|
||||||
|
icon = 'icons/obj/computer.dmi'
|
||||||
|
icon_state = "shuttle"
|
||||||
|
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/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)
|
||||||
|
var/dat
|
||||||
|
|
||||||
|
dat = "<center>[shuttle_tag] Shuttle Control<hr>"
|
||||||
|
|
||||||
|
if(shuttle_moving[shuttle_tag])
|
||||||
|
dat += "Location: <font color='red'>Moving</font> <br>"
|
||||||
|
else
|
||||||
|
dat += "Location: [shuttle_locations[shuttle_tag] ? "Offsite" : "Station"] <br>"
|
||||||
|
|
||||||
|
dat += "<b><A href='?src=\ref[src];move=[1]'>Send</A></b></center>"
|
||||||
|
|
||||||
|
|
||||||
|
user << browse("[dat]", "window=[shuttle_tag]shuttlecontrol;size=200x150")
|
||||||
|
|
||||||
|
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return
|
||||||
|
usr.set_machine(src)
|
||||||
|
src.add_fingerprint(usr)
|
||||||
|
if(href_list["move"])
|
||||||
|
if (!shuttle_moving[shuttle_tag])
|
||||||
|
usr << "\blue [shuttle_tag] Shuttle recieved message and will be sent shortly."
|
||||||
|
move_shuttle(shuttle_tag,offsite,station)
|
||||||
|
else
|
||||||
|
usr << "\blue [shuttle_tag] Shuttle is already moving."
|
||||||
|
|
||||||
|
updateUsrDialog()
|
||||||
|
|
||||||
|
/obj/machinery/computer/shuttle_control/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
|
|
||||||
|
if (istype(W, /obj/item/weapon/card/emag))
|
||||||
|
src.req_access = list()
|
||||||
|
hacked = 1
|
||||||
|
usr << "You short out the console's ID checking system. It's now available to everyone!"
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
proc/move_shuttle(var/shuttle_tag,var/area/offsite,var/area/station)
|
||||||
|
|
||||||
|
if(!shuttle_tag || isnull(shuttle_locations[shuttle_tag]))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(shuttle_moving[shuttle_tag] == 1) return
|
||||||
|
shuttle_moving[shuttle_tag] = 1
|
||||||
|
|
||||||
|
spawn(shuttle_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)
|
||||||
|
|
||||||
|
for(var/turf/T in area_going_to)
|
||||||
|
dstturfs += T
|
||||||
|
if(T.y < throwy)
|
||||||
|
throwy = T.y
|
||||||
|
|
||||||
|
for(var/turf/T in dstturfs)
|
||||||
|
var/turf/D = locate(T.x, throwy - 1, 1)
|
||||||
|
for(var/atom/movable/AM as mob|obj in T)
|
||||||
|
AM.Move(D)
|
||||||
|
if(istype(T, /turf/simulated))
|
||||||
|
del(T)
|
||||||
|
|
||||||
|
for(var/mob/living/carbon/bug in area_going_to)
|
||||||
|
bug.gib()
|
||||||
|
|
||||||
|
for(var/mob/living/simple_animal/pest in area_going_to)
|
||||||
|
pest.gib()
|
||||||
|
|
||||||
|
area_coming_from.move_contents_to(area_going_to)
|
||||||
|
|
||||||
|
shuttle_locations[shuttle_tag] = !shuttle_locations[shuttle_tag]
|
||||||
|
|
||||||
|
for(var/mob/M in area_going_to)
|
||||||
|
if(M.client)
|
||||||
|
spawn(0)
|
||||||
|
if(M.buckled)
|
||||||
|
shake_camera(M, 3, 1)
|
||||||
|
else
|
||||||
|
shake_camera(M, 10, 1)
|
||||||
|
if(istype(M, /mob/living/carbon))
|
||||||
|
if(!M.buckled)
|
||||||
|
M.Weaken(3)
|
||||||
|
|
||||||
|
shuttle_moving[shuttle_tag] = 0
|
||||||
|
|
||||||
|
return
|
||||||
Reference in New Issue
Block a user