mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Merge pull request #16213 from AffectedArc07/nukes-awful-code
Removes some oldcode
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
max_integrity = 100
|
||||
var/state = 0
|
||||
var/obj/item/circuitboard/circuit = null
|
||||
var/base_mineral = /obj/item/stack/sheet/metal
|
||||
|
||||
/obj/structure/computerframe/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
@@ -18,7 +17,7 @@
|
||||
deconstruct()
|
||||
|
||||
/obj/structure/computerframe/proc/drop_computer_parts()
|
||||
new base_mineral(loc, 5)
|
||||
new /obj/item/stack/sheet/metal(loc, 5)
|
||||
if(circuit)
|
||||
circuit.forceMove(loc)
|
||||
circuit = null
|
||||
@@ -357,14 +356,6 @@
|
||||
build_path = /obj/machinery/computer/turbine_computer
|
||||
origin_tech = "programming=4;engineering=4;powerstorage=4"
|
||||
|
||||
/obj/item/circuitboard/HONKputer
|
||||
name = "Circuit board (HONKputer)"
|
||||
build_path = /obj/machinery/computer/HONKputer
|
||||
origin_tech = "programming=2"
|
||||
icon = 'icons/obj/machines/HONKputer.dmi'
|
||||
icon_state = "bananium_board"
|
||||
board_type = "honkcomputer"
|
||||
|
||||
|
||||
/obj/item/circuitboard/supplycomp/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I,/obj/item/multitool))
|
||||
@@ -552,116 +543,3 @@
|
||||
if(I.use_tool(src, user, 50, volume = I.tool_volume) && !state)
|
||||
to_chat(user, "<span class='notice'>You deconstruct [src].</span>")
|
||||
deconstruct(TRUE)
|
||||
|
||||
|
||||
|
||||
/obj/structure/computerframe/HONKputer
|
||||
name = "Bananium Computer-frame"
|
||||
icon = 'icons/obj/machines/HONKputer.dmi'
|
||||
base_mineral = /obj/item/stack/sheet/mineral/bananium
|
||||
|
||||
/obj/structure/computerframe/HONKputer/attackby(obj/item/P as obj, mob/user as mob, params)
|
||||
switch(state)
|
||||
if(0)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
if(do_after(user, 20, target = src))
|
||||
to_chat(user, "<span class='notice'>You wrench the frame into place.</span>")
|
||||
anchored = 1
|
||||
state = 1
|
||||
if(1)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
if(do_after(user, 20 * P.toolspeed, target = src))
|
||||
to_chat(user, "<span class='notice'>You unfasten the frame.</span>")
|
||||
anchored = 0
|
||||
state = 0
|
||||
if(istype(P, /obj/item/circuitboard) && !circuit)
|
||||
var/obj/item/circuitboard/B = P
|
||||
if(B.board_type == "honkcomputer")
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You place the circuit board inside the frame.</span>")
|
||||
icon_state = "1"
|
||||
circuit = P
|
||||
user.drop_item()
|
||||
P.loc = src
|
||||
else
|
||||
to_chat(user, "<span class='warning'>This frame does not accept circuit boards of this type!</span>")
|
||||
if(istype(P, /obj/item/screwdriver) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You screw the circuit board into place.</span>")
|
||||
state = 2
|
||||
icon_state = "2"
|
||||
if(istype(P, /obj/item/crowbar) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You remove the circuit board.</span>")
|
||||
state = 1
|
||||
icon_state = "0"
|
||||
circuit.loc = loc
|
||||
circuit = null
|
||||
return
|
||||
if(2)
|
||||
if(istype(P, /obj/item/screwdriver) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You unfasten the circuit board.</span>")
|
||||
state = 1
|
||||
icon_state = "1"
|
||||
if(istype(P, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/C = P
|
||||
if(C.get_amount() >= 5)
|
||||
playsound(loc, C.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You start to add cables to the frame.</span>")
|
||||
if(do_after(user, 20 * C.toolspeed, target = src))
|
||||
if(state == 2 && C.get_amount() >= 5 && C.use(5))
|
||||
to_chat(user, "<span class='notice'>You add cables to the frame.</span>")
|
||||
state = 3
|
||||
icon_state = "3"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>At some point during construction you lost some cable. Make sure you have five lengths before trying again.</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need five lengths of cable to wire the frame.</span>")
|
||||
return
|
||||
if(3)
|
||||
if(istype(P, /obj/item/wirecutters))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You remove the cables.</span>")
|
||||
state = 2
|
||||
icon_state = "2"
|
||||
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc )
|
||||
A.amount = 5
|
||||
|
||||
if(istype(P, /obj/item/stack/sheet/glass))
|
||||
var/obj/item/stack/sheet/glass/G = P
|
||||
if(G.get_amount() >= 2)
|
||||
playsound(loc, G.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You start to add the glass panel to the frame.</span>")
|
||||
if(do_after(user, 20 * G.toolspeed, target = src))
|
||||
if(state == 3 && G.get_amount() >= 2 && G.use(2))
|
||||
to_chat(user, "<span class='notice'>You put in the glass panel.</span>")
|
||||
state = 4
|
||||
icon_state = "4"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>At some point during construction you lost some glass. Make sure you have two sheets before trying again.</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need two sheets of glass for this.</span>")
|
||||
return
|
||||
if(4)
|
||||
if(istype(P, /obj/item/crowbar))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You remove the glass panel.</span>")
|
||||
state = 3
|
||||
icon_state = "3"
|
||||
new /obj/item/stack/sheet/glass(loc, 2)
|
||||
if(istype(P, /obj/item/screwdriver))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You connect the monitor.</span>")
|
||||
var/B = new circuit.build_path (loc)
|
||||
if(circuit.powernet) B:powernet = circuit.powernet
|
||||
if(circuit.id) B:id = circuit.id
|
||||
if(circuit.records) B:records = circuit.records
|
||||
if(circuit.frequency) B:frequency = circuit.frequency
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
/obj/machinery/computer/HONKputer
|
||||
name = "\improper HONKputer Mark I"
|
||||
desc = "A yellow computer used in case of critically low levels of HONK."
|
||||
icon = 'icons/obj/machines/HONKputer.dmi'
|
||||
icon_state = "honkputer"
|
||||
icon_keyboard = "key_honk"
|
||||
icon_screen = "honkcomms"
|
||||
light_color = LIGHT_COLOR_PINK
|
||||
req_access = list(ACCESS_CLOWN)
|
||||
circuit = /obj/item/circuitboard/HONKputer
|
||||
var/authenticated = 0
|
||||
var/message_cooldown = 0
|
||||
var/state = STATE_DEFAULT
|
||||
var/const/STATE_DEFAULT = 1
|
||||
|
||||
/obj/machinery/computer/HONKputer/process()
|
||||
if(..())
|
||||
src.updateDialog()
|
||||
|
||||
/obj/machinery/computer/HONKputer/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
if(is_away_level(src.z))
|
||||
to_chat(usr, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the station!")
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
if(!href_list["operation"])
|
||||
return
|
||||
switch(href_list["operation"])
|
||||
// main interface
|
||||
if("main")
|
||||
src.state = STATE_DEFAULT
|
||||
if("login")
|
||||
var/mob/M = usr
|
||||
var/obj/item/card/id/I = M.get_active_hand()
|
||||
if(istype(I, /obj/item/pda))
|
||||
var/obj/item/pda/pda = I
|
||||
I = pda.id
|
||||
if(I && istype(I))
|
||||
if(src.check_access(I) || src.emagged==1)
|
||||
authenticated = 1
|
||||
if("logout")
|
||||
authenticated = 0
|
||||
|
||||
if("MessageHonkplanet")
|
||||
if(src.authenticated==1)
|
||||
if(message_cooldown)
|
||||
to_chat(usr, "Arrays recycling. Please stand by.")
|
||||
return
|
||||
var/input = stripped_input(usr, "Please choose a message to transmit to your HONKbrothers on the homeworld. Transmission does not guarantee a response.", "To abort, send an empty message.", "")
|
||||
if(!input || !(usr in view(1,src)))
|
||||
return
|
||||
HONK_announce(input, usr)
|
||||
to_chat(usr, "Message transmitted.")
|
||||
log_game("[key_name(usr)] has made a HONKplanet announcement: [input]")
|
||||
message_cooldown = 1
|
||||
spawn(6000)//10 minute cooldown
|
||||
message_cooldown = 0
|
||||
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/computer/HONKputer/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
src.emagged = 1
|
||||
to_chat(user, "You scramble the login circuits, allowing anyone to use the console!")
|
||||
|
||||
/obj/machinery/computer/HONKputer/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
if(is_away_level(src.z))
|
||||
to_chat(user, "<span class='danger'>Unable to establish a connection</span>: You're too far away from the station!")
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat = "<head><title>HONKputer Interface</title></head><body>"
|
||||
|
||||
if(istype(user, /mob/living/silicon))
|
||||
to_chat(user, "This console is not networked to the rest of the grid.")
|
||||
return
|
||||
|
||||
switch(src.state)
|
||||
if(STATE_DEFAULT)
|
||||
if(src.authenticated)
|
||||
dat += "<BR>\[ <A HREF='?src=[UID()];operation=logout'>Log Out</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=[UID()];operation=MessageHonkplanet'>Send an emergency message to Honkplanet</A> \]"
|
||||
else
|
||||
dat += "<BR>\[ <A HREF='?src=[UID()];operation=login'>Log In</A> \]"
|
||||
|
||||
|
||||
dat += "<BR>\[ [(src.state != STATE_DEFAULT) ? "<A HREF='?src=[UID()];operation=main'>Main Menu</A> | " : ""]<A HREF='?src=[user.UID()];mach_close=honkputer'>Close</A> \]"
|
||||
user << browse(dat, "window=honkputer;size=400x500")
|
||||
onclose(user, "honkputer")
|
||||
|
||||
|
||||
/obj/machinery/computer/HONKputer/attackby(obj/I, mob/user, params)
|
||||
if(istype(I, /obj/item/screwdriver) && circuit)
|
||||
var/obj/item/screwdriver/S = I
|
||||
playsound(src.loc, S.usesound, 50, 1)
|
||||
if(do_after(user, 20 * S.toolspeed, target = src))
|
||||
var/obj/structure/computerframe/HONKputer/A = new /obj/structure/computerframe/HONKputer( src.loc )
|
||||
var/obj/item/circuitboard/M = new circuit( A )
|
||||
A.circuit = M
|
||||
A.anchored = 1
|
||||
for(var/obj/C in src)
|
||||
C.loc = src.loc
|
||||
if(src.stat & BROKEN)
|
||||
to_chat(user, "<span class='notice'>The broken glass falls out.</span>")
|
||||
new /obj/item/shard( src.loc )
|
||||
A.state = 3
|
||||
A.icon_state = "3"
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You disconnect the monitor.</span>")
|
||||
A.state = 4
|
||||
A.icon_state = "4"
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
@@ -1,110 +0,0 @@
|
||||
#define SALVAGE_SHIP_MOVE_TIME 300
|
||||
#define SALVAGE_SHIP_COOLDOWN 800
|
||||
|
||||
/obj/machinery/computer/salvage_ship
|
||||
name = "salvage ship terminal"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_keyboard = "syndie_key"
|
||||
icon_screen = "syndishuttle"
|
||||
req_access = list(ACCESS_SALVAGE_CAPTAIN)
|
||||
var/area/curr_location
|
||||
var/moving = 0
|
||||
var/lastMove = 0
|
||||
|
||||
|
||||
/obj/machinery/computer/salvage_ship/New()
|
||||
. = ..()
|
||||
curr_location = locate(/area/shuttle/salvage/start)
|
||||
|
||||
|
||||
/obj/machinery/computer/salvage_ship/proc/salvage_move_to(area/destination as area)
|
||||
if(moving) return
|
||||
if(lastMove + SALVAGE_SHIP_COOLDOWN > world.time) return
|
||||
var/area/dest_location = locate(destination)
|
||||
if(curr_location == dest_location) return
|
||||
|
||||
moving = 1
|
||||
lastMove = world.time
|
||||
|
||||
if(curr_location.z != dest_location.z)
|
||||
var/area/transit_location = locate(/area/shuttle/salvage/transit)
|
||||
curr_location.move_contents_to(transit_location)
|
||||
curr_location = transit_location
|
||||
sleep(SALVAGE_SHIP_MOVE_TIME)
|
||||
|
||||
curr_location.move_contents_to(dest_location)
|
||||
curr_location = dest_location
|
||||
moving = 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/salvage_ship/attack_ai(mob/user as mob)
|
||||
src.add_hiddenprint(user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/salvage_ship/attack_hand(mob/user as mob)
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access Denied</span>")
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
|
||||
var/dat = {"Location: [curr_location]<br>
|
||||
Ready to move[max(lastMove + SALVAGE_SHIP_COOLDOWN - world.time, 0) ? " in [max(round((lastMove + SALVAGE_SHIP_COOLDOWN - world.time) * 0.1), 0)] seconds" : ": now"]<br>
|
||||
<a href='?src=[UID()];start=1'>Middle of Nowhere</a><br>
|
||||
<a href='?src=[UID()];arrivals=1'>Station Auxiliary Docking</a> |
|
||||
<a href='?src=[UID()];north=1'>North of the Station</a> |
|
||||
<a href='?src=[UID()];east=1'>East of the Station</a> |
|
||||
<a href='?src=[UID()];south=1'>South of the Station</a><br>
|
||||
<a href='?src=[UID()];trading_post=1'>Trading Post</a><br>
|
||||
<a href='?src=[UID()];clown_asteroid=1'>Clown Asteroid</a> |
|
||||
<a href='?src=[UID()];derelict=1'>Derelict Station</a> |
|
||||
<a href='?src=[UID()];djstation=1'>Ruskie DJ Station</a><br>
|
||||
<a href='?src=[UID()];commssat=1'>Communications Satellite</a> |
|
||||
<a href='?src=[UID()];abandoned_ship=1'>Abandoned Ship</a><br>
|
||||
<a href='?src=[user.UID()];mach_close=computer'>Close</a>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/computer/salvage_ship/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
if(!isliving(usr)) return
|
||||
var/mob/living/user = usr
|
||||
|
||||
if(in_range(src, user) || istype(user, /mob/living/silicon))
|
||||
user.set_machine(src)
|
||||
|
||||
if(href_list["salvage"])
|
||||
salvage_move_to(/area/shuttle/salvage/start)
|
||||
else if(href_list["start"])
|
||||
salvage_move_to(/area/shuttle/salvage/start)
|
||||
else if(href_list["arrivals"])
|
||||
salvage_move_to(/area/shuttle/salvage/arrivals)
|
||||
else if(href_list["derelict"])
|
||||
salvage_move_to(/area/shuttle/salvage/derelict)
|
||||
else if(href_list["djstation"])
|
||||
salvage_move_to(/area/shuttle/salvage/djstation)
|
||||
else if(href_list["north"])
|
||||
salvage_move_to(/area/shuttle/salvage/north)
|
||||
else if(href_list["east"])
|
||||
salvage_move_to(/area/shuttle/salvage/east)
|
||||
else if(href_list["south"])
|
||||
salvage_move_to(/area/shuttle/salvage/south)
|
||||
else if(href_list["commssat"])
|
||||
salvage_move_to(/area/shuttle/salvage/commssat)
|
||||
else if(href_list["abandoned_ship"])
|
||||
salvage_move_to(/area/shuttle/salvage/abandoned_ship)
|
||||
else if(href_list["clown_asteroid"])
|
||||
salvage_move_to(/area/shuttle/salvage/clown_asteroid)
|
||||
else if(href_list["trading_post"])
|
||||
salvage_move_to(/area/shuttle/salvage/trading_post)
|
||||
|
||||
add_fingerprint(usr)
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/salvage_ship/bullet_act(obj/item/projectile/Proj)
|
||||
visible_message("[Proj] ricochets off [src]!")
|
||||
@@ -1,338 +0,0 @@
|
||||
//Config stuff
|
||||
#define SPECOPS_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
|
||||
#define SPECOPS_STATION_AREATYPE "/area/shuttle/specops/station" //Type of the spec ops shuttle area for station
|
||||
#define SPECOPS_DOCK_AREATYPE "/area/shuttle/specops/centcom" //Type of the spec ops shuttle area for dock
|
||||
#define SPECOPS_RETURN_DELAY 6000 //Time between the shuttle is capable of moving.
|
||||
|
||||
GLOBAL_VAR_INIT(specops_shuttle_moving_to_station, 0)
|
||||
GLOBAL_VAR_INIT(specops_shuttle_moving_to_centcom, 0)
|
||||
GLOBAL_VAR_INIT(specops_shuttle_at_station, 0)
|
||||
GLOBAL_VAR_INIT(specops_shuttle_can_send, 1)
|
||||
GLOBAL_VAR_INIT(specops_shuttle_time, 0)
|
||||
GLOBAL_VAR_INIT(specops_shuttle_timeleft, 0)
|
||||
|
||||
/obj/machinery/computer/specops_shuttle
|
||||
name = "\improper Spec. Ops. shuttle console"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_keyboard = "security_key"
|
||||
icon_screen = "syndishuttle"
|
||||
light_color = LIGHT_COLOR_PURE_CYAN
|
||||
req_access = list(ACCESS_CENT_SPECOPS)
|
||||
// req_access = list(ACCESS_CENT_SPECOPS)
|
||||
var/temp = null
|
||||
var/hacked = 0
|
||||
var/allowedtocall = 0
|
||||
var/specops_shuttle_timereset = 0
|
||||
|
||||
/proc/specops_return()
|
||||
var/obj/item/radio/intercom/announcer = new /obj/item/radio/intercom(null)//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
|
||||
announcer.config(list("Response Team" = 0))
|
||||
|
||||
var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
|
||||
var/message = "\"THE SPECIAL OPERATIONS SHUTTLE IS PREPARING TO RETURN\""//Initial message shown.
|
||||
if(announcer)
|
||||
announcer.autosay(message, "A.L.I.C.E.", "Response Team", list(1,2))
|
||||
|
||||
while(GLOB.specops_shuttle_time - world.timeofday > 0)
|
||||
var/ticksleft = GLOB.specops_shuttle_time - world.timeofday
|
||||
|
||||
if(ticksleft > 1e5)
|
||||
GLOB.specops_shuttle_time = world.timeofday + 10 // midnight rollover
|
||||
GLOB.specops_shuttle_timeleft = (ticksleft / 10)
|
||||
|
||||
//All this does is announce the time before launch.
|
||||
if(announcer)
|
||||
var/rounded_time_left = round(GLOB.specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
|
||||
if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
|
||||
message = "\"ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN\""
|
||||
if(rounded_time_left==0)
|
||||
message = "\"ALERT: TAKEOFF\""
|
||||
announcer.autosay(message, "A.L.I.C.E.", "Response Team")
|
||||
message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
|
||||
//Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
|
||||
|
||||
sleep(5)
|
||||
|
||||
GLOB.specops_shuttle_moving_to_station = 0
|
||||
GLOB.specops_shuttle_moving_to_centcom = 0
|
||||
|
||||
GLOB.specops_shuttle_at_station = 1
|
||||
|
||||
var/area/start_location = locate(/area/shuttle/specops/station)
|
||||
var/area/end_location = locate(/area/shuttle/specops/centcom)
|
||||
|
||||
var/list/dstturfs = list()
|
||||
var/throwy = world.maxy
|
||||
|
||||
for(var/turf/T in end_location)
|
||||
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)
|
||||
if(istype(T, /turf/simulated))
|
||||
qdel(T)
|
||||
|
||||
for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area...
|
||||
bug.gib()
|
||||
|
||||
for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug...
|
||||
pest.gib()
|
||||
|
||||
start_location.move_contents_to(end_location)
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
to_chat(M, "<span class='warning'>You have arrived at Central Command. Operation has ended!</span>")
|
||||
|
||||
GLOB.specops_shuttle_at_station = 0
|
||||
|
||||
for(var/obj/machinery/computer/specops_shuttle/S in GLOB.machines)
|
||||
S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
|
||||
|
||||
qdel(announcer)
|
||||
|
||||
/proc/specops_process()
|
||||
var/area/centcom/specops/special_ops = locate()//Where is the specops area located?
|
||||
var/obj/item/radio/intercom/announcer = new /obj/item/radio/intercom(null)//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
|
||||
announcer.config(list("Response Team" = 0))
|
||||
|
||||
var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
|
||||
var/message = "\"THE SPECIAL OPERATIONS SHUTTLE IS PREPARING FOR LAUNCH\""//Initial message shown.
|
||||
if(announcer)
|
||||
announcer.autosay(message, "A.L.I.C.E.", "Response Team")
|
||||
//message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD"
|
||||
//announcer.autosay(message, "A.L.I.C.E.", "Response Team")
|
||||
|
||||
while(GLOB.specops_shuttle_time - world.timeofday > 0)
|
||||
var/ticksleft = GLOB.specops_shuttle_time - world.timeofday
|
||||
|
||||
if(ticksleft > 1e5)
|
||||
GLOB.specops_shuttle_time = world.timeofday + 10 // midnight rollover
|
||||
GLOB.specops_shuttle_timeleft = (ticksleft / 10)
|
||||
|
||||
//All this does is announce the time before launch.
|
||||
if(announcer)
|
||||
var/rounded_time_left = round(GLOB.specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
|
||||
if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
|
||||
message = "\"ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN\""
|
||||
if(rounded_time_left==0)
|
||||
message = "\"ALERT: TAKEOFF\""
|
||||
announcer.autosay(message, "A.L.I.C.E.", "Response Team")
|
||||
message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
|
||||
//Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
|
||||
|
||||
sleep(5)
|
||||
|
||||
GLOB.specops_shuttle_moving_to_station = 0
|
||||
GLOB.specops_shuttle_moving_to_centcom = 0
|
||||
|
||||
GLOB.specops_shuttle_at_station = 1
|
||||
if(GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom) return
|
||||
|
||||
if(!specops_can_move())
|
||||
to_chat(usr, "<span class='warning'>The Special Operations shuttle is unable to leave.</span>")
|
||||
return
|
||||
|
||||
//Begin Marauder launchpad.
|
||||
spawn(0)//So it parallel processes it.
|
||||
for(var/obj/machinery/door/poddoor/M in special_ops)
|
||||
switch(M.id_tag)
|
||||
if("ASSAULT0")
|
||||
spawn(10)//1 second delay between each.
|
||||
M.open()
|
||||
if("ASSAULT1")
|
||||
spawn(20)
|
||||
M.open()
|
||||
if("ASSAULT2")
|
||||
spawn(30)
|
||||
M.open()
|
||||
if("ASSAULT3")
|
||||
spawn(40)
|
||||
M.open()
|
||||
|
||||
sleep(10)
|
||||
|
||||
var/spawn_marauder[] = new()
|
||||
for(var/thing in GLOB.landmarks_list)
|
||||
var/obj/effect/landmark/L = thing
|
||||
if(L.name == "Marauder Entry")
|
||||
spawn_marauder.Add(L.loc)
|
||||
for(var/thing in GLOB.landmarks_list)
|
||||
var/obj/effect/landmark/L = thing
|
||||
if(L.name == "Marauder Exit")
|
||||
var/obj/effect/portal/P = new(L.loc, pick(spawn_marauder))
|
||||
//P.invisibility = 101//So it is not seen by anyone.
|
||||
P.failchance = 0//So it has no fail chance when teleporting.
|
||||
spawn_marauder.Remove(P.target)
|
||||
|
||||
sleep(10)
|
||||
|
||||
for(var/obj/machinery/mass_driver/M in special_ops)
|
||||
switch(M.id_tag)
|
||||
if("ASSAULT0")
|
||||
spawn(10)
|
||||
M.drive()
|
||||
if("ASSAULT1")
|
||||
spawn(20)
|
||||
M.drive()
|
||||
if("ASSAULT2")
|
||||
spawn(30)
|
||||
M.drive()
|
||||
if("ASSAULT3")
|
||||
spawn(40)
|
||||
M.drive()
|
||||
|
||||
sleep(50)//Doors remain open for 5 seconds.
|
||||
|
||||
for(var/obj/machinery/door/poddoor/M in special_ops)
|
||||
switch(M.id_tag)//Doors close at the same time.
|
||||
if("ASSAULT0")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT1")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT2")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT3")
|
||||
spawn(0)
|
||||
M.close()
|
||||
//End Marauder launchpad.
|
||||
|
||||
var/area/start_location = locate(/area/shuttle/specops/centcom)
|
||||
var/area/end_location = locate(/area/shuttle/specops/station)
|
||||
|
||||
var/list/dstturfs = list()
|
||||
var/throwy = world.maxy
|
||||
|
||||
for(var/turf/T in end_location)
|
||||
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)
|
||||
if(istype(T, /turf/simulated))
|
||||
qdel(T)
|
||||
|
||||
start_location.move_contents_to(end_location)
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
to_chat(M, "<span class='warning'>You have arrived to [station_name()]. Commence operation!</span>")
|
||||
|
||||
for(var/obj/machinery/computer/specops_shuttle/S in GLOB.machines)
|
||||
S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
|
||||
|
||||
qdel(announcer)
|
||||
|
||||
/proc/specops_can_move()
|
||||
if(GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom)
|
||||
return 0
|
||||
for(var/obj/machinery/computer/specops_shuttle/S in GLOB.machines)
|
||||
if(world.timeofday <= S.specops_shuttle_timereset)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/attack_ai(mob/user as mob)
|
||||
to_chat(user, "<span class='warning'>Access Denied.</span>")
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob, params)
|
||||
if(istype(I,/obj/item/card/emag))
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this console are far too advanced for your primitive hacking peripherals.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/attack_hand(mob/user as mob)
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access Denied.</span>")
|
||||
return
|
||||
|
||||
//Commented out so admins can do shenanigans at their leisure. Also makes the force-spawned admin ERTs able to use the shuttle.
|
||||
// if(sent_strike_team == 0 && send_emergency_team == 0)
|
||||
// to_chat(usr, "<span class='warning'>The strike team has not yet deployed.</span>")
|
||||
// return
|
||||
|
||||
if(..())
|
||||
return
|
||||
|
||||
user.machine = src
|
||||
var/dat
|
||||
if(temp)
|
||||
dat = temp
|
||||
else
|
||||
dat += {"<BR><B>Special Operations Shuttle</B><HR>
|
||||
\nLocation: [GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom ? "Departing for [station_name()] in ([GLOB.specops_shuttle_timeleft] seconds.)":GLOB.specops_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*<BR>\n<BR>":GLOB.specops_shuttle_at_station ? "\n<A href='?src=[UID()];sendtodock=1'>Shuttle standing by...</A><BR>\n<BR>":"\n<A href='?src=[UID()];sendtostation=1'>Depart to [station_name()]</A><BR>\n<BR>"]
|
||||
\n<A href='?src=[user.UID()];mach_close=computer'>Close</A>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.machine = src
|
||||
|
||||
if(href_list["sendtodock"])
|
||||
if(!GLOB.specops_shuttle_at_station|| GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom) return
|
||||
|
||||
if(!specops_can_move())
|
||||
to_chat(usr, "<span class='notice'>Central Command will not allow the Special Operations shuttle to return yet.</span>")
|
||||
if(world.timeofday <= specops_shuttle_timereset)
|
||||
if(((world.timeofday - specops_shuttle_timereset)/10) > 60)
|
||||
to_chat(usr, "<span class='notice'>[-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!</span>")
|
||||
to_chat(usr, "<span class='notice'>[-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>The Special Operations shuttle will arrive at Central Command in [(SPECOPS_MOVETIME/10)] seconds.</span>")
|
||||
|
||||
temp += "Shuttle departing.<BR><BR><A href='?src=[UID()];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
|
||||
GLOB.specops_shuttle_moving_to_centcom = 1
|
||||
GLOB.specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
|
||||
spawn(0)
|
||||
specops_return()
|
||||
|
||||
else if(href_list["sendtostation"])
|
||||
if(GLOB.specops_shuttle_at_station || GLOB.specops_shuttle_moving_to_station || GLOB.specops_shuttle_moving_to_centcom) return
|
||||
|
||||
if(!specops_can_move())
|
||||
to_chat(usr, "<span class='warning'>The Special Operations shuttle is unable to leave.</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>The Special Operations shuttle will arrive on [station_name()] in [(SPECOPS_MOVETIME/10)] seconds.</span>")
|
||||
|
||||
temp += "Shuttle departing.<BR><BR><A href='?src=[UID()];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
|
||||
GLOB.specops_shuttle_moving_to_station = 1
|
||||
|
||||
GLOB.specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
|
||||
spawn(0)
|
||||
specops_process()
|
||||
|
||||
else if(href_list["mainmenu"])
|
||||
temp = null
|
||||
|
||||
add_fingerprint(usr)
|
||||
updateUsrDialog()
|
||||
return
|
||||
@@ -1,254 +0,0 @@
|
||||
//Config stuff
|
||||
#define SYNDICATE_ELITE_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
|
||||
#define SYNDICATE_ELITE_STATION_AREATYPE "/area/shuttle/syndicate_elite/station" //Type of the spec ops shuttle area for station
|
||||
#define SYNDICATE_ELITE_DOCK_AREATYPE "/area/shuttle/syndicate_elite/mothership" //Type of the spec ops shuttle area for dock
|
||||
|
||||
GLOBAL_VAR_INIT(syndicate_elite_shuttle_moving_to_station, 0)
|
||||
GLOBAL_VAR_INIT(syndicate_elite_shuttle_moving_to_mothership, 0)
|
||||
GLOBAL_VAR_INIT(syndicate_elite_shuttle_at_station, 0)
|
||||
GLOBAL_VAR_INIT(syndicate_elite_shuttle_can_send, 1)
|
||||
GLOBAL_VAR_INIT(syndicate_elite_shuttle_time, 0)
|
||||
GLOBAL_VAR_INIT(syndicate_elite_shuttle_timeleft, 0)
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle
|
||||
name = "\improper Elite Syndicate Squad shuttle console"
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_keyboard = "syndie_key"
|
||||
icon_screen = "syndishuttle"
|
||||
light_color = LIGHT_COLOR_PURE_CYAN
|
||||
req_access = list(ACCESS_SYNDICATE)
|
||||
bubble_icon = "syndibot"
|
||||
var/temp = null
|
||||
var/hacked = 0
|
||||
var/allowedtocall = 0
|
||||
|
||||
/proc/syndicate_elite_process()
|
||||
var/area/syndicate_mothership/control/syndicate_ship = locate()//To find announcer. This area should exist for this proc to work.
|
||||
//var/area/syndicate_mothership/elite_squad/elite_squad = locate()//Where is the specops area located?
|
||||
var/mob/living/silicon/decoy/announcer = locate() in syndicate_ship//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
|
||||
|
||||
var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
|
||||
var/message = "THE SYNDICATE ELITE SHUTTLE IS PREPARING FOR LAUNCH"//Initial message shown.
|
||||
if(announcer)
|
||||
announcer.say(message)
|
||||
// message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD"
|
||||
// announcer.say(message)
|
||||
|
||||
while(GLOB.syndicate_elite_shuttle_time - world.timeofday > 0)
|
||||
var/ticksleft = GLOB.syndicate_elite_shuttle_time - world.timeofday
|
||||
|
||||
if(ticksleft > 1e5)
|
||||
GLOB.syndicate_elite_shuttle_time = world.timeofday // midnight rollover
|
||||
GLOB.syndicate_elite_shuttle_timeleft = (ticksleft / 10)
|
||||
|
||||
//All this does is announce the time before launch.
|
||||
if(announcer)
|
||||
var/rounded_time_left = round(GLOB.syndicate_elite_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
|
||||
if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
|
||||
message = "ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN"
|
||||
if(rounded_time_left==0)
|
||||
message = "ALERT: TAKEOFF"
|
||||
announcer.say(message)
|
||||
message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
|
||||
//Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
|
||||
|
||||
sleep(5)
|
||||
|
||||
GLOB.syndicate_elite_shuttle_moving_to_station = 0
|
||||
GLOB.syndicate_elite_shuttle_moving_to_mothership = 0
|
||||
|
||||
GLOB.syndicate_elite_shuttle_at_station = 1
|
||||
if(GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return
|
||||
|
||||
if(!syndicate_elite_can_move())
|
||||
to_chat(usr, "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>")
|
||||
return
|
||||
|
||||
/*
|
||||
//Begin Marauder launchpad.
|
||||
spawn(0)//So it parallel processes it.
|
||||
for(var/obj/machinery/door/poddoor/M in elite_squad)
|
||||
switch(M.id)
|
||||
if("ASSAULT0")
|
||||
spawn(10)//1 second delay between each.
|
||||
M.open()
|
||||
if("ASSAULT1")
|
||||
spawn(20)
|
||||
M.open()
|
||||
if("ASSAULT2")
|
||||
spawn(30)
|
||||
M.open()
|
||||
if("ASSAULT3")
|
||||
spawn(40)
|
||||
M.open()
|
||||
|
||||
sleep(10)
|
||||
|
||||
var/spawn_marauder[] = new()
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(L.name == "Marauder Entry")
|
||||
spawn_marauder.Add(L)
|
||||
for(var/obj/effect/landmark/L in GLOB.landmarks_list)
|
||||
if(L.name == "Marauder Exit")
|
||||
var/obj/effect/portal/P = new(L.loc)
|
||||
P.invisibility = 101//So it is not seen by anyone.
|
||||
P.failchance = 0//So it has no fail chance when teleporting.
|
||||
P.target = pick(spawn_marauder)//Where the marauder will arrive.
|
||||
spawn_marauder.Remove(P.target)
|
||||
|
||||
sleep(10)
|
||||
|
||||
for(var/obj/machinery/mass_driver/M in elite_squad)
|
||||
switch(M.id)
|
||||
if("ASSAULT0")
|
||||
spawn(10)
|
||||
M.drive()
|
||||
if("ASSAULT1")
|
||||
spawn(20)
|
||||
M.drive()
|
||||
if("ASSAULT2")
|
||||
spawn(30)
|
||||
M.drive()
|
||||
if("ASSAULT3")
|
||||
spawn(40)
|
||||
M.drive()
|
||||
|
||||
sleep(50)//Doors remain open for 5 seconds.
|
||||
|
||||
for(var/obj/machinery/door/poddoor/M in elite_squad)
|
||||
switch(M.id)//Doors close at the same time.
|
||||
if("ASSAULT0")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT1")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT2")
|
||||
spawn(0)
|
||||
M.close()
|
||||
if("ASSAULT3")
|
||||
spawn(0)
|
||||
M.close()
|
||||
elite_squad.readyreset()//Reset firealarm after the team launched.
|
||||
*/
|
||||
//End Marauder launchpad.
|
||||
|
||||
for(var/thing in GLOB.landmarks_list)
|
||||
var/obj/effect/landmark/L = thing
|
||||
if(L.name == "Syndicate Breach Area")
|
||||
explosion(L.loc,4,6,8,10,0)
|
||||
|
||||
sleep(40)
|
||||
|
||||
|
||||
var/area/start_location = locate(/area/shuttle/syndicate_elite/mothership)
|
||||
var/area/end_location = locate(/area/shuttle/syndicate_elite/station)
|
||||
|
||||
var/list/dstturfs = list()
|
||||
var/throwy = world.maxy
|
||||
|
||||
for(var/turf/T in end_location)
|
||||
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)
|
||||
if(istype(T, /turf/simulated))
|
||||
qdel(T)
|
||||
|
||||
for(var/mob/living/carbon/bug in end_location) // If someone somehow is still in the shuttle's docking area...
|
||||
bug.gib()
|
||||
|
||||
for(var/mob/living/simple_animal/pest in end_location) // And for the other kind of bug...
|
||||
pest.gib()
|
||||
|
||||
start_location.move_contents_to(end_location)
|
||||
|
||||
for(var/turf/T in get_area_turfs(end_location) )
|
||||
var/mob/M = locate(/mob) in T
|
||||
to_chat(M, "<span class='warning'>You have arrived to [station_name()]. Commence operation!</span>")
|
||||
|
||||
/proc/syndicate_elite_can_move()
|
||||
if(GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return 0
|
||||
else return 1
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(mob/user as mob)
|
||||
to_chat(user, "<span class='warning'>Access Denied.</span>")
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob, params)
|
||||
if(istype(I,/obj/item/card/emag))
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this console are far too advanced for your primitive hacking peripherals.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(mob/user as mob)
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class='warning'>Access Denied.</span>")
|
||||
return
|
||||
|
||||
// if(sent_syndicate_strike_team == 0)
|
||||
// to_chat(usr, "<span class='warning'>The strike team has not yet deployed.</span>")
|
||||
// return
|
||||
|
||||
if(..())
|
||||
return
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
if(temp)
|
||||
dat = temp
|
||||
else
|
||||
dat = {"<BR><B>Special Operations Shuttle</B><HR>
|
||||
\nLocation: [GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership ? "Departing for [station_name()] in ([GLOB.syndicate_elite_shuttle_timeleft] seconds.)":GLOB.syndicate_elite_shuttle_at_station ? "Station":"Dock"]<BR>
|
||||
[GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership ? "\n*The Syndicate Elite shuttle is already leaving.*<BR>\n<BR>":GLOB.syndicate_elite_shuttle_at_station ? "\n<A href='?src=[UID()];sendtodock=1'>Shuttle Offline</A><BR>\n<BR>":"\n<A href='?src=[UID()];sendtostation=1'>Depart to [station_name()]</A><BR>\n<BR>"]
|
||||
\n<A href='?src=[user.UID()];mach_close=computer'>Close</A>"}
|
||||
|
||||
user << browse(dat, "window=computer;size=575x450")
|
||||
onclose(user, "computer")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||
usr.set_machine(src)
|
||||
|
||||
if(href_list["sendtodock"])
|
||||
if(!GLOB.syndicate_elite_shuttle_at_station|| GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return
|
||||
|
||||
to_chat(usr, "<span class='notice'>The Syndicate will not allow the Elite Squad shuttle to return.</span>")
|
||||
return
|
||||
|
||||
else if(href_list["sendtostation"])
|
||||
if(GLOB.syndicate_elite_shuttle_at_station || GLOB.syndicate_elite_shuttle_moving_to_station || GLOB.syndicate_elite_shuttle_moving_to_mothership) return
|
||||
|
||||
if(!specops_can_move())
|
||||
to_chat(usr, "<span class='warning'>The Syndicate Elite shuttle is unable to leave.</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>The Syndicate Elite shuttle will arrive on [station_name()] in [(SYNDICATE_ELITE_MOVETIME/10)] seconds.</span>")
|
||||
|
||||
temp = "Shuttle departing.<BR><BR><A href='?src=[UID()];mainmenu=1'>OK</A>"
|
||||
updateUsrDialog()
|
||||
|
||||
GLOB.syndicate_elite_shuttle_moving_to_station = 1
|
||||
|
||||
GLOB.syndicate_elite_shuttle_time = world.timeofday + SYNDICATE_ELITE_MOVETIME
|
||||
spawn(0)
|
||||
syndicate_elite_process()
|
||||
|
||||
|
||||
else if(href_list["mainmenu"])
|
||||
temp = null
|
||||
|
||||
add_fingerprint(usr)
|
||||
updateUsrDialog()
|
||||
return
|
||||
@@ -1,23 +0,0 @@
|
||||
/obj/item/changestone
|
||||
name = "An uncut ruby"
|
||||
desc = "The ruby shines and catches the light, despite being uncut"
|
||||
icon = 'icons/obj/artifacts.dmi'
|
||||
icon_state = "changerock"
|
||||
|
||||
/obj/item/changestone/attack_hand(mob/user as mob)
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(!H.gloves)
|
||||
if(H.gender == FEMALE)
|
||||
H.change_gender(MALE)
|
||||
else
|
||||
H.change_gender(FEMALE)
|
||||
H.dna.ready_dna(H)
|
||||
H.update_body()
|
||||
..()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -83,7 +83,6 @@ GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
null, \
|
||||
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("bananium computer frame", /obj/structure/computerframe/HONKputer, 50, time = 25, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("bananium grenade casing", /obj/item/grenade/bananade/casing, 4, on_floor = 1), \
|
||||
))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user