mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Merge remote-tracking branch 'upstream/dev-freeze' into backup
Conflicts: code/modules/clothing/spacesuits/rig/rig.dm code/modules/clothing/spacesuits/rig/rig_pieces.dm
This commit is contained in:
@@ -204,7 +204,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/atmospherics/binary/passive_gate/Topic(href,href_list)
|
/obj/machinery/atmospherics/binary/passive_gate/Topic(href,href_list)
|
||||||
if(..()) return
|
if(..()) return 1
|
||||||
|
|
||||||
if(href_list["toggle_valve"])
|
if(href_list["toggle_valve"])
|
||||||
unlocked = !unlocked
|
unlocked = !unlocked
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ Thus, the two variables affect pump operation are set in New():
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/atmospherics/binary/pump/Topic(href,href_list)
|
/obj/machinery/atmospherics/binary/pump/Topic(href,href_list)
|
||||||
if(..()) return
|
if(..()) return 1
|
||||||
|
|
||||||
if(href_list["power"])
|
if(href_list["power"])
|
||||||
use_power = !use_power
|
use_power = !use_power
|
||||||
|
|||||||
@@ -155,7 +155,7 @@
|
|||||||
return null
|
return null
|
||||||
|
|
||||||
/obj/machinery/atmospherics/omni/filter/Topic(href, href_list)
|
/obj/machinery/atmospherics/omni/filter/Topic(href, href_list)
|
||||||
if(..()) return
|
if(..()) return 1
|
||||||
switch(href_list["command"])
|
switch(href_list["command"])
|
||||||
if("power")
|
if("power")
|
||||||
if(!configuring)
|
if(!configuring)
|
||||||
|
|||||||
@@ -172,7 +172,7 @@
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
/obj/machinery/atmospherics/omni/mixer/Topic(href, href_list)
|
/obj/machinery/atmospherics/omni/mixer/Topic(href, href_list)
|
||||||
if(..()) return
|
if(..()) return 1
|
||||||
|
|
||||||
switch(href_list["command"])
|
switch(href_list["command"])
|
||||||
if("power")
|
if("power")
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
|
|
||||||
/obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE
|
/obj/machinery/atmospherics/trinary/filter/Topic(href, href_list) // -- TLE
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
if(href_list["filterset"])
|
if(href_list["filterset"])
|
||||||
|
|||||||
@@ -156,7 +156,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/atmospherics/trinary/mixer/Topic(href,href_list)
|
/obj/machinery/atmospherics/trinary/mixer/Topic(href,href_list)
|
||||||
if(..()) return
|
if(..()) return 1
|
||||||
if(href_list["power"])
|
if(href_list["power"])
|
||||||
use_power = !use_power
|
use_power = !use_power
|
||||||
if(href_list["set_press"])
|
if(href_list["set_press"])
|
||||||
|
|||||||
@@ -93,6 +93,8 @@
|
|||||||
ui.set_auto_update(1)
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/freezer/Topic(href, href_list)
|
/obj/machinery/atmospherics/unary/freezer/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return 1
|
||||||
if(href_list["toggleStatus"])
|
if(href_list["toggleStatus"])
|
||||||
use_power = !use_power
|
use_power = !use_power
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -107,7 +109,6 @@
|
|||||||
set_power_level(new_setting)
|
set_power_level(new_setting)
|
||||||
|
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
return 1
|
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/freezer/process()
|
/obj/machinery/atmospherics/unary/freezer/process()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -113,6 +113,8 @@
|
|||||||
ui.set_auto_update(1)
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/heater/Topic(href, href_list)
|
/obj/machinery/atmospherics/unary/heater/Topic(href, href_list)
|
||||||
|
if(..())
|
||||||
|
return 1
|
||||||
if(href_list["toggleStatus"])
|
if(href_list["toggleStatus"])
|
||||||
use_power = !use_power
|
use_power = !use_power
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -127,7 +129,6 @@
|
|||||||
set_power_level(new_setting)
|
set_power_level(new_setting)
|
||||||
|
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
return 1
|
|
||||||
|
|
||||||
//upgrading parts
|
//upgrading parts
|
||||||
/obj/machinery/atmospherics/unary/heater/RefreshParts()
|
/obj/machinery/atmospherics/unary/heater/RefreshParts()
|
||||||
|
|||||||
@@ -49,9 +49,12 @@ rcd light flash thingy on matter drain
|
|||||||
set category = "Malfunction"
|
set category = "Malfunction"
|
||||||
set name = "Upgrade Turrets"
|
set name = "Upgrade Turrets"
|
||||||
usr.verbs -= /client/proc/upgrade_turrets
|
usr.verbs -= /client/proc/upgrade_turrets
|
||||||
for(var/obj/machinery/turret/turret in player_list)
|
for(var/obj/machinery/porta_turret/turret in machines)
|
||||||
turret.health += 30
|
var/turf/T = get_turf(turret)
|
||||||
turret.shot_delay = 20
|
if(T.z in config.station_levels)
|
||||||
|
// Increase health by 37.5% of original max, decrease delays between shots to 66%
|
||||||
|
turret.health += initial(turret.health) * 3 / 8
|
||||||
|
turret.shot_delay = initial(turret.shot_delay) * 2 / 3
|
||||||
|
|
||||||
/datum/AI_Module/large/disable_rcd
|
/datum/AI_Module/large/disable_rcd
|
||||||
module_name = "RCD disable"
|
module_name = "RCD disable"
|
||||||
|
|||||||
@@ -563,7 +563,7 @@ datum
|
|||||||
|
|
||||||
|
|
||||||
captainslaser
|
captainslaser
|
||||||
steal_target = /obj/item/weapon/gun/energy/laser/captain
|
steal_target = /obj/item/weapon/gun/energy/captain
|
||||||
explanation_text = "Steal the captain's antique laser gun."
|
explanation_text = "Steal the captain's antique laser gun."
|
||||||
weight = 20
|
weight = 20
|
||||||
|
|
||||||
|
|||||||
@@ -480,7 +480,7 @@ datum/objective/steal
|
|||||||
var/target_name
|
var/target_name
|
||||||
|
|
||||||
var/global/possible_items[] = list(
|
var/global/possible_items[] = list(
|
||||||
"the captain's antique laser gun" = /obj/item/weapon/gun/energy/laser/captain,
|
"the captain's antique laser gun" = /obj/item/weapon/gun/energy/captain,
|
||||||
"a hand teleporter" = /obj/item/weapon/hand_tele,
|
"a hand teleporter" = /obj/item/weapon/hand_tele,
|
||||||
"an RCD" = /obj/item/weapon/rcd,
|
"an RCD" = /obj/item/weapon/rcd,
|
||||||
"a jetpack" = /obj/item/weapon/tank/jetpack,
|
"a jetpack" = /obj/item/weapon/tank/jetpack,
|
||||||
|
|||||||
@@ -302,6 +302,7 @@ update_flag
|
|||||||
/obj/machinery/portable_atmospherics/canister/Topic(href, href_list)
|
/obj/machinery/portable_atmospherics/canister/Topic(href, href_list)
|
||||||
|
|
||||||
//Do not use "if(..()) return" here, canisters will stop working in unpowered areas like space or on the derelict. // yeah but without SOME sort of Topic check any dick can mess with them via exploits as he pleases -walter0o
|
//Do not use "if(..()) return" here, canisters will stop working in unpowered areas like space or on the derelict. // yeah but without SOME sort of Topic check any dick can mess with them via exploits as he pleases -walter0o
|
||||||
|
//First comment might be outdated.
|
||||||
if (!istype(src.loc, /turf))
|
if (!istype(src.loc, /turf))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -31,13 +31,13 @@
|
|||||||
var/alarm_on = 0
|
var/alarm_on = 0
|
||||||
var/busy = 0
|
var/busy = 0
|
||||||
|
|
||||||
|
var/on_open_network = 0
|
||||||
|
|
||||||
/obj/machinery/camera/New()
|
/obj/machinery/camera/New()
|
||||||
wires = new(src)
|
wires = new(src)
|
||||||
assembly = new(src)
|
assembly = new(src)
|
||||||
assembly.state = 4
|
assembly.state = 4
|
||||||
|
|
||||||
invalidateCameraCache()
|
|
||||||
|
|
||||||
/* // Use this to look for cameras that have the same c_tag.
|
/* // Use this to look for cameras that have the same c_tag.
|
||||||
for(var/obj/machinery/camera/C in cameranet.cameras)
|
for(var/obj/machinery/camera/C in cameranet.cameras)
|
||||||
var/list/tempnetwork = C.network&src.network
|
var/list/tempnetwork = C.network&src.network
|
||||||
@@ -56,18 +56,18 @@
|
|||||||
/obj/machinery/camera/emp_act(severity)
|
/obj/machinery/camera/emp_act(severity)
|
||||||
if(!isEmpProof())
|
if(!isEmpProof())
|
||||||
if(prob(100/severity))
|
if(prob(100/severity))
|
||||||
invalidateCameraCache()
|
|
||||||
stat |= EMPED
|
stat |= EMPED
|
||||||
SetLuminosity(0)
|
SetLuminosity(0)
|
||||||
kick_viewers()
|
kick_viewers()
|
||||||
triggerCameraAlarm(10 * severity)
|
triggerCameraAlarm(30 / severity)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
update_coverage()
|
||||||
|
|
||||||
spawn(900)
|
spawn(900)
|
||||||
stat &= ~EMPED
|
stat &= ~EMPED
|
||||||
cancelCameraAlarm()
|
cancelCameraAlarm()
|
||||||
update_icon()
|
update_icon()
|
||||||
invalidateCameraCache()
|
update_coverage()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/camera/bullet_act(var/obj/item/projectile/P)
|
/obj/machinery/camera/bullet_act(var/obj/item/projectile/P)
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
destroy()
|
destroy()
|
||||||
|
|
||||||
/obj/machinery/camera/attackby(obj/W as obj, mob/living/user as mob)
|
/obj/machinery/camera/attackby(obj/W as obj, mob/living/user as mob)
|
||||||
invalidateCameraCache()
|
update_coverage()
|
||||||
// DECONSTRUCTION
|
// DECONSTRUCTION
|
||||||
if(isscrewdriver(W))
|
if(isscrewdriver(W))
|
||||||
//user << "<span class='notice'>You start to [panel_open ? "close" : "open"] the camera's panel.</span>"
|
//user << "<span class='notice'>You start to [panel_open ? "close" : "open"] the camera's panel.</span>"
|
||||||
@@ -195,7 +195,7 @@
|
|||||||
//legacy support, if choice is != 1 then just kick viewers without changing status
|
//legacy support, if choice is != 1 then just kick viewers without changing status
|
||||||
kick_viewers()
|
kick_viewers()
|
||||||
else
|
else
|
||||||
invalidateCameraCache()
|
update_coverage()
|
||||||
set_status( !src.status )
|
set_status( !src.status )
|
||||||
if (!(src.status))
|
if (!(src.status))
|
||||||
visible_message("\red [user] has deactivated [src]!")
|
visible_message("\red [user] has deactivated [src]!")
|
||||||
@@ -215,11 +215,11 @@
|
|||||||
|
|
||||||
//Used when someone breaks a camera
|
//Used when someone breaks a camera
|
||||||
/obj/machinery/camera/proc/destroy()
|
/obj/machinery/camera/proc/destroy()
|
||||||
invalidateCameraCache()
|
|
||||||
stat |= BROKEN
|
stat |= BROKEN
|
||||||
kick_viewers()
|
kick_viewers()
|
||||||
triggerCameraAlarm()
|
triggerCameraAlarm()
|
||||||
update_icon()
|
update_icon()
|
||||||
|
update_coverage()
|
||||||
|
|
||||||
//sparks
|
//sparks
|
||||||
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
|
||||||
@@ -349,6 +349,51 @@
|
|||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
wires.Interact(user)
|
wires.Interact(user)
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/add_network(var/network_name)
|
||||||
|
add_networks(list(network_name))
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/remove_network(var/network_name)
|
||||||
|
remove_networks(list(network_name))
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/add_networks(var/list/networks)
|
||||||
|
var/network_added
|
||||||
|
network_added = 0
|
||||||
|
for(var/network_name in networks)
|
||||||
|
if(!(network_name in src.network))
|
||||||
|
network += network_name
|
||||||
|
network_added = 1
|
||||||
|
|
||||||
|
if(network_added)
|
||||||
|
update_coverage(1)
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/remove_networks(var/list/networks)
|
||||||
|
var/network_removed
|
||||||
|
network_removed = 0
|
||||||
|
for(var/network_name in networks)
|
||||||
|
if(network_name in src.network)
|
||||||
|
network -= network_name
|
||||||
|
network_removed = 1
|
||||||
|
|
||||||
|
if(network_removed)
|
||||||
|
update_coverage(1)
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/replace_networks(var/list/networks)
|
||||||
|
if(networks.len != network.len)
|
||||||
|
network = networks
|
||||||
|
update_coverage(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
for(var/new_network in networks)
|
||||||
|
if(!(new_network in network))
|
||||||
|
network = networks
|
||||||
|
update_coverage(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/clear_all_networks()
|
||||||
|
if(network.len)
|
||||||
|
network.Cut()
|
||||||
|
update_coverage(1)
|
||||||
|
|
||||||
/obj/machinery/camera/proc/nano_structure()
|
/obj/machinery/camera/proc/nano_structure()
|
||||||
var/cam[0]
|
var/cam[0]
|
||||||
cam["name"] = sanitize(c_tag)
|
cam["name"] = sanitize(c_tag)
|
||||||
@@ -358,3 +403,17 @@
|
|||||||
cam["y"] = y
|
cam["y"] = y
|
||||||
cam["z"] = z
|
cam["z"] = z
|
||||||
return cam
|
return cam
|
||||||
|
|
||||||
|
/obj/machinery/camera/proc/update_coverage(var/network_change = 0)
|
||||||
|
if(network_change)
|
||||||
|
var/list/open_networks = difflist(network, restricted_camera_networks)
|
||||||
|
// Add or remove camera from the camera net as necessary
|
||||||
|
if(on_open_network && !open_networks.len)
|
||||||
|
cameranet.removeCamera(src)
|
||||||
|
else if(!on_open_network && open_networks.len)
|
||||||
|
on_open_network = 1
|
||||||
|
cameranet.addCamera(src)
|
||||||
|
else
|
||||||
|
cameranet.updateVisibility(src, 0)
|
||||||
|
|
||||||
|
invalidateCameraCache()
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
if(isscrewdriver(W))
|
if(isscrewdriver(W))
|
||||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||||
|
|
||||||
var/input = strip_html(input(usr, "Which networks would you like to connect this camera to? Seperate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13"))
|
var/input = strip_html(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13"))
|
||||||
if(!input)
|
if(!input)
|
||||||
usr << "No input found please hang up and try your call again."
|
usr << "No input found please hang up and try your call again."
|
||||||
return
|
return
|
||||||
@@ -99,10 +99,7 @@
|
|||||||
|
|
||||||
C.auto_turn()
|
C.auto_turn()
|
||||||
|
|
||||||
C.network = uniquelist(tempnetwork)
|
C.replace_networks(uniquelist(tempnetwork))
|
||||||
tempnetwork = difflist(C.network,restricted_camera_networks)
|
|
||||||
if(!tempnetwork.len)//Camera isn't on any open network - remove its chunk from AI visibility.
|
|
||||||
cameranet.removeCamera(C)
|
|
||||||
|
|
||||||
C.c_tag = input
|
C.c_tag = input
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
/obj/item/toy/prize/odysseus = 1,
|
/obj/item/toy/prize/odysseus = 1,
|
||||||
/obj/item/toy/prize/phazon = 1,
|
/obj/item/toy/prize/phazon = 1,
|
||||||
/obj/item/toy/waterflower = 1,
|
/obj/item/toy/waterflower = 1,
|
||||||
/obj/item/toy/figure = 1,
|
/obj/random/action_figure = 1,
|
||||||
/obj/random/plushie = 1,
|
/obj/random/plushie = 1,
|
||||||
/obj/item/toy/cultsword = 1
|
/obj/item/toy/cultsword = 1
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
onclose(user, "lockdown")
|
onclose(user, "lockdown")
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
..()
|
if(..()) return 1
|
||||||
|
|
||||||
if( href_list["close"] )
|
if( href_list["close"] )
|
||||||
usr << browse(null, "window=lockdown")
|
usr << browse(null, "window=lockdown")
|
||||||
|
|||||||
@@ -148,7 +148,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/med_data/Topic(href, href_list)
|
/obj/machinery/computer/med_data/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
if (!( data_core.general.Find(src.active1) ))
|
if (!( data_core.general.Find(src.active1) ))
|
||||||
src.active1 = null
|
src.active1 = null
|
||||||
|
|||||||
@@ -158,7 +158,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/pod/Topic(href, href_list)
|
/obj/machinery/computer/pod/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
if(href_list["power"])
|
if(href_list["power"])
|
||||||
|
|||||||
@@ -94,13 +94,13 @@
|
|||||||
// iconholder = 1
|
// iconholder = 1
|
||||||
// eprojectile = /obj/item/projectile/beam
|
// eprojectile = /obj/item/projectile/beam
|
||||||
|
|
||||||
if(/obj/item/weapon/gun/energy/laser/retro)
|
if(/obj/item/weapon/gun/energy/retro)
|
||||||
iconholder = 1
|
iconholder = 1
|
||||||
|
|
||||||
// if(/obj/item/weapon/gun/energy/laser/retro/sc_retro)
|
// if(/obj/item/weapon/gun/energy/retro/sc_retro)
|
||||||
// iconholder = 1
|
// iconholder = 1
|
||||||
|
|
||||||
if(/obj/item/weapon/gun/energy/laser/captain)
|
if(/obj/item/weapon/gun/energy/captain)
|
||||||
iconholder = 1
|
iconholder = 1
|
||||||
|
|
||||||
if(/obj/item/weapon/gun/energy/lasercannon)
|
if(/obj/item/weapon/gun/energy/lasercannon)
|
||||||
|
|||||||
@@ -140,7 +140,6 @@
|
|||||||
..()
|
..()
|
||||||
name = "DV-136ZB #[rand(1000,9999)]"
|
name = "DV-136ZB #[rand(1000,9999)]"
|
||||||
c_tag = name
|
c_tag = name
|
||||||
cameranet.removeCamera(src) // Sorry, no AI spying.
|
|
||||||
|
|
||||||
/obj/machinery/camera/spy/check_eye(var/mob/user as mob)
|
/obj/machinery/camera/spy/check_eye(var/mob/user as mob)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -20,26 +20,14 @@
|
|||||||
throw_speed = 4
|
throw_speed = 4
|
||||||
throw_range = 20
|
throw_range = 20
|
||||||
|
|
||||||
/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says")
|
/obj/item/device/taperecorder/hear_talk(mob/living/M as mob, msg, var/verb="says", datum/language/speaking=null)
|
||||||
if(recording)
|
if(recording)
|
||||||
//var/ending = copytext(msg, length(msg))
|
timestamp += timerecorded
|
||||||
timestamp+= timerecorded
|
|
||||||
/*
|
if(speaking)
|
||||||
if(M.stuttering)
|
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [speaking.format_message_plain(msg, verb)]"
|
||||||
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] stammers, \"[msg]\""
|
else
|
||||||
return
|
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\""
|
||||||
if(M.getBrainLoss() >= 60)
|
|
||||||
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] gibbers, \"[msg]\""
|
|
||||||
return
|
|
||||||
if(ending == "?")
|
|
||||||
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] asks, \"[msg]\""
|
|
||||||
return
|
|
||||||
else if(ending == "!")
|
|
||||||
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] exclaims, \"[msg]\""
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
storedinfo += "\[[time2text(timerecorded*10,"mm:ss")]\] [M.name] [verb], \"[msg]\""
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/item/device/taperecorder/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
R.icon_state = "[R.ckey]-Standard"
|
R.icon_state = "[R.ckey]-Standard"
|
||||||
del(R.module)
|
del(R.module)
|
||||||
R.module = null
|
R.module = null
|
||||||
R.camera.network.Remove(list("Engineering","Medical","MINE"))
|
R.camera.remove_networks(list("Engineering","Medical","MINE"))
|
||||||
R.updatename("Default")
|
R.updatename("Default")
|
||||||
R.status_flags |= CANPUSH
|
R.status_flags |= CANPUSH
|
||||||
R.updateicon()
|
R.updateicon()
|
||||||
|
|||||||
@@ -210,6 +210,50 @@
|
|||||||
prob(3);/obj/item/ammo_magazine/mc9mmt/rubber)
|
prob(3);/obj/item/ammo_magazine/mc9mmt/rubber)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/random/action_figure
|
||||||
|
name = "random action figure"
|
||||||
|
desc = "This is a random action figure."
|
||||||
|
icon = 'icons/obj/toy.dmi'
|
||||||
|
icon_state = "assistant"
|
||||||
|
item_to_spawn()
|
||||||
|
return pick(/obj/item/toy/figure/cmo,\
|
||||||
|
/obj/item/toy/figure/assistant,\
|
||||||
|
/obj/item/toy/figure/atmos,\
|
||||||
|
/obj/item/toy/figure/bartender,\
|
||||||
|
/obj/item/toy/figure/borg,\
|
||||||
|
/obj/item/toy/figure/gardener,\
|
||||||
|
/obj/item/toy/figure/captain,\
|
||||||
|
/obj/item/toy/figure/cargotech,\
|
||||||
|
/obj/item/toy/figure/ce,\
|
||||||
|
/obj/item/toy/figure/chaplain,\
|
||||||
|
/obj/item/toy/figure/chef,\
|
||||||
|
/obj/item/toy/figure/chemist,\
|
||||||
|
/obj/item/toy/figure/clown,\
|
||||||
|
/obj/item/toy/figure/corgi,\
|
||||||
|
/obj/item/toy/figure/detective,\
|
||||||
|
/obj/item/toy/figure/dsquad,\
|
||||||
|
/obj/item/toy/figure/engineer,\
|
||||||
|
/obj/item/toy/figure/geneticist,\
|
||||||
|
/obj/item/toy/figure/hop,\
|
||||||
|
/obj/item/toy/figure/hos,\
|
||||||
|
/obj/item/toy/figure/qm,\
|
||||||
|
/obj/item/toy/figure/janitor,\
|
||||||
|
/obj/item/toy/figure/agent,\
|
||||||
|
/obj/item/toy/figure/librarian,\
|
||||||
|
/obj/item/toy/figure/md,\
|
||||||
|
/obj/item/toy/figure/mime,\
|
||||||
|
/obj/item/toy/figure/miner,\
|
||||||
|
/obj/item/toy/figure/ninja,\
|
||||||
|
/obj/item/toy/figure/wizard,\
|
||||||
|
/obj/item/toy/figure/rd,\
|
||||||
|
/obj/item/toy/figure/roboticist,\
|
||||||
|
/obj/item/toy/figure/scientist,\
|
||||||
|
/obj/item/toy/figure/syndie,\
|
||||||
|
/obj/item/toy/figure/secofficer,\
|
||||||
|
/obj/item/toy/figure/warden,\
|
||||||
|
/obj/item/toy/figure/psychologist,\
|
||||||
|
/obj/item/toy/figure/paramedic,\
|
||||||
|
/obj/item/toy/figure/ert)
|
||||||
|
|
||||||
|
|
||||||
/obj/random/plushie
|
/obj/random/plushie
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
if (1)
|
if (1)
|
||||||
new /obj/item/weapon/shard( src.loc )
|
new /obj/item/weapon/shard( src.loc )
|
||||||
if (occupied)
|
if (occupied)
|
||||||
new /obj/item/weapon/gun/energy/laser/captain( src.loc )
|
new /obj/item/weapon/gun/energy/captain( src.loc )
|
||||||
occupied = 0
|
occupied = 0
|
||||||
del(src)
|
del(src)
|
||||||
if (2)
|
if (2)
|
||||||
@@ -39,14 +39,14 @@
|
|||||||
if (prob(75))
|
if (prob(75))
|
||||||
new /obj/item/weapon/shard( src.loc )
|
new /obj/item/weapon/shard( src.loc )
|
||||||
if (occupied)
|
if (occupied)
|
||||||
new /obj/item/weapon/gun/energy/laser/captain( src.loc )
|
new /obj/item/weapon/gun/energy/captain( src.loc )
|
||||||
occupied = 0
|
occupied = 0
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/displaycase/meteorhit(obj/O as obj)
|
/obj/structure/displaycase/meteorhit(obj/O as obj)
|
||||||
new /obj/item/weapon/shard( src.loc )
|
new /obj/item/weapon/shard( src.loc )
|
||||||
new /obj/item/weapon/gun/energy/laser/captain( src.loc )
|
new /obj/item/weapon/gun/energy/captain( src.loc )
|
||||||
del(src)
|
del(src)
|
||||||
|
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
/obj/structure/displaycase/attack_hand(mob/user as mob)
|
/obj/structure/displaycase/attack_hand(mob/user as mob)
|
||||||
if (src.destroyed && src.occupied)
|
if (src.destroyed && src.occupied)
|
||||||
new /obj/item/weapon/gun/energy/laser/captain( src.loc )
|
new /obj/item/weapon/gun/energy/captain( src.loc )
|
||||||
user << "\b You deactivate the hover field built into the case."
|
user << "\b You deactivate the hover field built into the case."
|
||||||
src.occupied = 0
|
src.occupied = 0
|
||||||
src.add_fingerprint(user)
|
src.add_fingerprint(user)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ var/global/list/med_hud_users = list() // List of all entities using
|
|||||||
var/global/list/sec_hud_users = list() // List of all entities using a security HUD.
|
var/global/list/sec_hud_users = list() // List of all entities using a security HUD.
|
||||||
|
|
||||||
// Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them.
|
// Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them.
|
||||||
var/list/restricted_camera_networks = list("thunder","ERT","NUKE")
|
var/list/restricted_camera_networks = list("thunder","ERT","NUKE","Secret")
|
||||||
|
|
||||||
var/global/list/global_mutations = list() // List of hidden mutation things.
|
var/global/list/global_mutations = list() // List of hidden mutation things.
|
||||||
var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called manually after an event.
|
var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called manually after an event.
|
||||||
|
|||||||
@@ -186,12 +186,13 @@ var/global/floorIsLava = 0
|
|||||||
var/f = 1
|
var/f = 1
|
||||||
for(var/k in all_languages)
|
for(var/k in all_languages)
|
||||||
var/datum/language/L = all_languages[k]
|
var/datum/language/L = all_languages[k]
|
||||||
if(!f) body += " | "
|
if(!(L.flags & INNATE))
|
||||||
else f = 0
|
if(!f) body += " | "
|
||||||
if(L in M.languages)
|
else f = 0
|
||||||
body += "<a href='?src=\ref[src];toglang=\ref[M];lang=[html_encode(k)]' style='color:#006600'>[k]</a>"
|
if(L in M.languages)
|
||||||
else
|
body += "<a href='?src=\ref[src];toglang=\ref[M];lang=[html_encode(k)]' style='color:#006600'>[k]</a>"
|
||||||
body += "<a href='?src=\ref[src];toglang=\ref[M];lang=[html_encode(k)]' style='color:#ff0000'>[k]</a>"
|
else
|
||||||
|
body += "<a href='?src=\ref[src];toglang=\ref[M];lang=[html_encode(k)]' style='color:#ff0000'>[k]</a>"
|
||||||
|
|
||||||
body += {"<br>
|
body += {"<br>
|
||||||
</body></html>
|
</body></html>
|
||||||
|
|||||||
@@ -64,10 +64,9 @@
|
|||||||
/datum/alarm_handler/proc/on_alarm_change(var/datum/alarm/alarm, var/was_raised)
|
/datum/alarm_handler/proc/on_alarm_change(var/datum/alarm/alarm, var/was_raised)
|
||||||
for(var/obj/machinery/camera/C in alarm.cameras())
|
for(var/obj/machinery/camera/C in alarm.cameras())
|
||||||
if(was_raised)
|
if(was_raised)
|
||||||
C.network.Add(category)
|
C.add_network(category)
|
||||||
invalidateCameraCache()
|
|
||||||
else
|
else
|
||||||
C.network.Remove(category)
|
C.remove_network(category)
|
||||||
notify_listeners(alarm, was_raised)
|
notify_listeners(alarm, was_raised)
|
||||||
|
|
||||||
/datum/alarm_handler/proc/get_alarm_severity_for_origin(var/atom/origin)
|
/datum/alarm_handler/proc/get_alarm_severity_for_origin(var/atom/origin)
|
||||||
|
|||||||
@@ -120,7 +120,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
..()
|
if(..()) return 1
|
||||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||||
usr << browse(null, "window=infra")
|
usr << browse(null, "window=infra")
|
||||||
onclose(usr, "infra")
|
onclose(usr, "infra")
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
..()
|
if(..()) return 1
|
||||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||||
usr << browse(null, "window=prox")
|
usr << browse(null, "window=prox")
|
||||||
onclose(usr, "prox")
|
onclose(usr, "prox")
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
..()
|
if(..()) return 1
|
||||||
|
|
||||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||||
usr << browse(null, "window=radio")
|
usr << browse(null, "window=radio")
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Topic(href, href_list)
|
Topic(href, href_list)
|
||||||
..()
|
if(..()) return 1
|
||||||
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
|
||||||
usr << browse(null, "window=timer")
|
usr << browse(null, "window=timer")
|
||||||
onclose(usr, "timer")
|
onclose(usr, "timer")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
//They can be healed with plastic or metal sheeting.
|
//They can be healed with plastic or metal sheeting.
|
||||||
|
|
||||||
/datum/breach
|
/datum/breach
|
||||||
var/class = 0 // Size. Lower is smaller.
|
var/class = 0 // Size. Lower is smaller. Uses floating point values!
|
||||||
var/descriptor // 'gaping hole' etc.
|
var/descriptor // 'gaping hole' etc.
|
||||||
var/damtype = BURN // Punctured or melted
|
var/damtype = BURN // Punctured or melted
|
||||||
var/obj/item/clothing/suit/space/holder // Suit containing the list of breaches holding this instance.
|
var/obj/item/clothing/suit/space/holder // Suit containing the list of breaches holding this instance.
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
var/can_breach = 1 // Set to 0 to disregard all breaching.
|
var/can_breach = 1 // Set to 0 to disregard all breaching.
|
||||||
var/list/breaches = list() // Breach datum container.
|
var/list/breaches = list() // Breach datum container.
|
||||||
var/resilience = 0.2 // Multiplier that turns damage into breach class. 1 is 100% of damage to breach, 0.1 is 10%.
|
var/resilience = 0.2 // Multiplier that turns damage into breach class. 1 is 100% of damage to breach, 0.1 is 10%. 0.2 -> 50 brute/burn damage to cause 10 breach damage
|
||||||
var/breach_threshold = 3 // Min damage before a breach is possible.
|
var/breach_threshold = 3 // Min damage before a breach is possible. Damage is subtracted by this amount, it determines the "hardness" of the suit.
|
||||||
var/damage = 0 // Current total damage
|
var/damage = 0 // Current total damage
|
||||||
var/brute_damage = 0 // Specifically brute damage.
|
var/brute_damage = 0 // Specifically brute damage.
|
||||||
var/burn_damage = 0 // Specifically burn damage.
|
var/burn_damage = 0 // Specifically burn damage.
|
||||||
@@ -44,7 +44,7 @@ var/global/list/breach_burn_descriptors = list(
|
|||||||
/datum/breach/proc/update_descriptor()
|
/datum/breach/proc/update_descriptor()
|
||||||
|
|
||||||
//Sanity...
|
//Sanity...
|
||||||
class = max(1,min(class,5))
|
class = between(1, round(class), 5)
|
||||||
//Apply the correct descriptor.
|
//Apply the correct descriptor.
|
||||||
if(damtype == BURN)
|
if(damtype == BURN)
|
||||||
descriptor = breach_burn_descriptors[class]
|
descriptor = breach_burn_descriptors[class]
|
||||||
@@ -86,7 +86,10 @@ var/global/list/breach_burn_descriptors = list(
|
|||||||
|
|
||||||
/obj/item/clothing/suit/space/proc/create_breaches(var/damtype, var/amount)
|
/obj/item/clothing/suit/space/proc/create_breaches(var/damtype, var/amount)
|
||||||
|
|
||||||
if(!can_breach || !amount)
|
amount -= src.breach_threshold
|
||||||
|
amount *= src.resilience
|
||||||
|
|
||||||
|
if(!can_breach || amount <= 0)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!breaches)
|
if(!breaches)
|
||||||
@@ -98,14 +101,14 @@ var/global/list/breach_burn_descriptors = list(
|
|||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!T) return
|
if(!T) return
|
||||||
|
|
||||||
amount = amount * src.resilience
|
|
||||||
|
|
||||||
//Increase existing breaches.
|
//Increase existing breaches.
|
||||||
for(var/datum/breach/existing in breaches)
|
for(var/datum/breach/existing in breaches)
|
||||||
|
|
||||||
if(existing.damtype != damtype)
|
if(existing.damtype != damtype)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
//keep in mind that 10 breach damage == full pressure loss.
|
||||||
|
//a breach can have at most 5 breach damage
|
||||||
if (existing.class < 5)
|
if (existing.class < 5)
|
||||||
var/needs = 5 - existing.class
|
var/needs = 5 - existing.class
|
||||||
if(amount < needs)
|
if(amount < needs)
|
||||||
|
|||||||
@@ -709,7 +709,7 @@
|
|||||||
spark_system.start()
|
spark_system.start()
|
||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/item/weapon/rig/proc/take_hit(damage, source, is_emp=0)
|
/obj/item/weapon/rig/proc/take_hit(damage, source, is_emp=0)
|
||||||
|
|
||||||
if(!installed_modules.len)
|
if(!installed_modules.len)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
flags_inv = HIDEJUMPSUIT|HIDETAIL
|
flags_inv = HIDEJUMPSUIT|HIDETAIL
|
||||||
flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT
|
flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT
|
||||||
slowdown = 0
|
slowdown = 0
|
||||||
//With 0.05 resiliance, will reach 10 breach damage after 18 laser carbine blasts. Completely immune to smg hits.
|
//will reach 10 breach damage after 18 laser carbine blasts, or 7 revolver hits. Completely immune to smg hits.
|
||||||
breach_threshold = 28
|
breach_threshold = 28
|
||||||
resilience = 0.05
|
resilience = 0.05
|
||||||
can_breach = 1
|
can_breach = 1
|
||||||
|
|||||||
@@ -32,8 +32,7 @@
|
|||||||
icon_action_button = "[icon_state]"
|
icon_action_button = "[icon_state]"
|
||||||
|
|
||||||
camera = new /obj/machinery/camera(src)
|
camera = new /obj/machinery/camera(src)
|
||||||
camera.network = camera_networks
|
camera.replace_networks(camera_networks)
|
||||||
cameranet.removeCamera(camera)
|
|
||||||
camera.c_tag = user.name
|
camera.c_tag = user.name
|
||||||
user << "\blue User scanned as [camera.c_tag]. Camera activated."
|
user << "\blue User scanned as [camera.c_tag]. Camera activated."
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
//Breach thresholds, should ideally be inherited by most (if not all) voidsuits.
|
//Breach thresholds, should ideally be inherited by most (if not all) voidsuits.
|
||||||
|
//With 0.2 resiliance, will reach 10 breach damage after 3 laser carbine blasts or 8 smg hits.
|
||||||
breach_threshold = 18
|
breach_threshold = 18
|
||||||
can_breach = 1
|
can_breach = 1
|
||||||
|
|
||||||
|
|||||||
@@ -213,6 +213,7 @@
|
|||||||
onclose(user,"fscanner")
|
onclose(user,"fscanner")
|
||||||
|
|
||||||
/obj/machinery/computer/forensic_scanning/Topic(href,href_list)
|
/obj/machinery/computer/forensic_scanning/Topic(href,href_list)
|
||||||
|
if(..()) return 1
|
||||||
switch(href_list["operation"])
|
switch(href_list["operation"])
|
||||||
if("login")
|
if("login")
|
||||||
var/mob/M = usr
|
var/mob/M = usr
|
||||||
|
|||||||
@@ -342,7 +342,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
|
|||||||
/obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/aiModule,\
|
/obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/aiModule,\
|
||||||
/obj/item/device/radio/headset/syndicate, /obj/item/weapon/plastique,\
|
/obj/item/device/radio/headset/syndicate, /obj/item/weapon/plastique,\
|
||||||
/obj/item/device/powersink, /obj/item/weapon/storage/box/syndie_kit,\
|
/obj/item/device/powersink, /obj/item/weapon/storage/box/syndie_kit,\
|
||||||
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/laser/captain,\
|
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/captain,\
|
||||||
/obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\
|
/obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\
|
||||||
/obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\
|
/obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\
|
||||||
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/weapon/disk/nuclear,\
|
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/weapon/disk/nuclear,\
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ var/global/list/holodeck_programs = list(
|
|||||||
|
|
||||||
/obj/machinery/computer/HolodeckControl/Topic(href, href_list)
|
/obj/machinery/computer/HolodeckControl/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
/obj/machinery/mineral/processing_unit_console/Topic(href, href_list)
|
/obj/machinery/mineral/processing_unit_console/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
/obj/machinery/mineral/stacking_unit_console/Topic(href, href_list)
|
/obj/machinery/mineral/stacking_unit_console/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
if(href_list["change_stack"])
|
if(href_list["change_stack"])
|
||||||
var/choice = input("What would you like to set the stack amount to?") as null|anything in list(1,5,10,20,50)
|
var/choice = input("What would you like to set the stack amount to?") as null|anything in list(1,5,10,20,50)
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
|
|
||||||
/obj/machinery/mineral/mint/Topic(href, href_list)
|
/obj/machinery/mineral/mint/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
if(processing==1)
|
if(processing==1)
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/moneybag/Topic(href, href_list)
|
/obj/item/weapon/moneybag/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
if(href_list["remove"])
|
if(href_list["remove"])
|
||||||
|
|||||||
@@ -88,6 +88,9 @@
|
|||||||
/datum/language/proc/format_message(message, verb)
|
/datum/language/proc/format_message(message, verb)
|
||||||
return "[verb], <span class='message'><span class='[colour]'>\"[capitalize(message)]\"</span></span>"
|
return "[verb], <span class='message'><span class='[colour]'>\"[capitalize(message)]\"</span></span>"
|
||||||
|
|
||||||
|
/datum/language/proc/format_message_plain(message, verb)
|
||||||
|
return "[verb], \"[capitalize(message)]\""
|
||||||
|
|
||||||
/datum/language/proc/format_message_radio(message, verb)
|
/datum/language/proc/format_message_radio(message, verb)
|
||||||
return "[verb], <span class='[colour]'>\"[capitalize(message)]\"</span>"
|
return "[verb], <span class='[colour]'>\"[capitalize(message)]\"</span>"
|
||||||
|
|
||||||
@@ -121,11 +124,14 @@
|
|||||||
name = "Noise"
|
name = "Noise"
|
||||||
desc = "Noises"
|
desc = "Noises"
|
||||||
key = ""
|
key = ""
|
||||||
flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG
|
flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG|NO_STUTTER
|
||||||
|
|
||||||
/datum/language/noise/format_message(message, verb)
|
/datum/language/noise/format_message(message, verb)
|
||||||
return "<span class='message'><span class='[colour]'>[message]</span></span>"
|
return "<span class='message'><span class='[colour]'>[message]</span></span>"
|
||||||
|
|
||||||
|
/datum/language/noise/format_message_plain(message, verb)
|
||||||
|
return message
|
||||||
|
|
||||||
/datum/language/noise/format_message_radio(message, verb)
|
/datum/language/noise/format_message_radio(message, verb)
|
||||||
return "<span class='[colour]'>[message]</span>"
|
return "<span class='[colour]'>[message]</span>"
|
||||||
|
|
||||||
@@ -517,4 +523,4 @@
|
|||||||
"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin",
|
"ve", "wa", "all", "and", "are", "but", "ent", "era", "ere", "eve", "for", "had", "hat", "hen", "her", "hin",
|
||||||
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
|
"his", "ing", "ion", "ith", "not", "ome", "oul", "our", "sho", "ted", "ter", "tha", "the", "thi")
|
||||||
|
|
||||||
#undef SCRAMBLE_CACHE_LEN
|
#undef SCRAMBLE_CACHE_LEN
|
||||||
|
|||||||
@@ -37,6 +37,8 @@
|
|||||||
else
|
else
|
||||||
message = copytext(message,3)
|
message = copytext(message,3)
|
||||||
|
|
||||||
|
message = trim_left(message)
|
||||||
|
|
||||||
//parse the language code and consume it
|
//parse the language code and consume it
|
||||||
var/datum/language/speaking = parse_language(message)
|
var/datum/language/speaking = parse_language(message)
|
||||||
if(speaking)
|
if(speaking)
|
||||||
@@ -62,10 +64,11 @@
|
|||||||
message = trim(message)
|
message = trim(message)
|
||||||
|
|
||||||
if(speech_problem_flag)
|
if(speech_problem_flag)
|
||||||
var/list/handle_r = handle_speech_problems(message)
|
if(!speaking || !(speaking.flags & NO_STUTTER))
|
||||||
message = handle_r[1]
|
var/list/handle_r = handle_speech_problems(message)
|
||||||
verb = handle_r[2]
|
message = handle_r[1]
|
||||||
speech_problem_flag = handle_r[3]
|
verb = handle_r[2]
|
||||||
|
speech_problem_flag = handle_r[3]
|
||||||
|
|
||||||
if(!message || message == "")
|
if(!message || message == "")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -120,12 +120,14 @@ var/datum/cameranet/cameranet = new()
|
|||||||
for(var/y = y1; y <= y2; y += 16)
|
for(var/y = y1; y <= y2; y += 16)
|
||||||
if(chunkGenerated(x, y, T.z))
|
if(chunkGenerated(x, y, T.z))
|
||||||
var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z)
|
var/datum/camerachunk/chunk = getCameraChunk(x, y, T.z)
|
||||||
if(choice == 0)
|
// Only add actual cameras to the list of cameras
|
||||||
// Remove the camera.
|
if(istype(c, /obj/machinery/camera))
|
||||||
chunk.cameras -= c
|
if(choice == 0)
|
||||||
else if(choice == 1)
|
// Remove the camera.
|
||||||
// You can't have the same camera in the list twice.
|
chunk.cameras -= c
|
||||||
chunk.cameras |= c
|
else if(choice == 1)
|
||||||
|
// You can't have the same camera in the list twice.
|
||||||
|
chunk.cameras |= c
|
||||||
chunk.hasChanged()
|
chunk.hasChanged()
|
||||||
|
|
||||||
// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0.
|
// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0.
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
else
|
else
|
||||||
changed = 1
|
changed = 1
|
||||||
|
|
||||||
// The actual updating. It gathers the visible turfs from cameras and puts them into the appropiate lists.
|
// The actual updating. It gathers the visible turfs from cameras and puts them into the appropriate lists.
|
||||||
|
|
||||||
/datum/camerachunk/proc/update()
|
/datum/camerachunk/proc/update()
|
||||||
|
|
||||||
@@ -76,14 +76,14 @@
|
|||||||
var/obj/machinery/camera/c = camera
|
var/obj/machinery/camera/c = camera
|
||||||
|
|
||||||
if(!c)
|
if(!c)
|
||||||
continue
|
cameras -= c
|
||||||
|
|
||||||
if(!c.can_use())
|
if(!c.can_use())
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/turf/point = locate(src.x + 8, src.y + 8, src.z)
|
var/turf/point = locate(src.x + 8, src.y + 8, src.z)
|
||||||
if(get_dist(point, c) > 24)
|
if(get_dist(point, c) > 24)
|
||||||
continue
|
cameras -= c
|
||||||
|
|
||||||
for(var/turf/t in c.can_see())
|
for(var/turf/t in c.can_see())
|
||||||
newVisibleTurfs[t] = t
|
newVisibleTurfs[t] = t
|
||||||
@@ -143,14 +143,8 @@
|
|||||||
if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16)
|
if(t.x >= x && t.y >= y && t.x < x + 16 && t.y < y + 16)
|
||||||
turfs[t] = t
|
turfs[t] = t
|
||||||
|
|
||||||
for(var/camera in cameras)
|
// At this point we only have functional cameras
|
||||||
var/obj/machinery/camera/c = camera
|
for(var/obj/machinery/camera/c in cameras)
|
||||||
if(!c)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if(!c.can_use())
|
|
||||||
continue
|
|
||||||
|
|
||||||
for(var/turf/t in c.can_see())
|
for(var/turf/t in c.can_see())
|
||||||
visibleTurfs[t] = t
|
visibleTurfs[t] = t
|
||||||
|
|
||||||
|
|||||||
@@ -84,6 +84,7 @@
|
|||||||
|
|
||||||
/obj/machinery/camera/deactivate(user as mob, var/choice = 1)
|
/obj/machinery/camera/deactivate(user as mob, var/choice = 1)
|
||||||
..(user, choice)
|
..(user, choice)
|
||||||
|
invalidateCameraCache()
|
||||||
if(src.can_use())
|
if(src.can_use())
|
||||||
cameranet.addCamera(src)
|
cameranet.addCamera(src)
|
||||||
else
|
else
|
||||||
@@ -98,16 +99,11 @@
|
|||||||
cameranet.cameras_unsorted = 1
|
cameranet.cameras_unsorted = 1
|
||||||
else
|
else
|
||||||
dd_insertObjectList(cameranet.cameras, src)
|
dd_insertObjectList(cameranet.cameras, src)
|
||||||
|
update_coverage(1)
|
||||||
var/list/open_networks = difflist(network,restricted_camera_networks) //...but if all of camera's networks are restricted, it only works for specific camera consoles.
|
|
||||||
if(open_networks.len) //If there is at least one open network, chunk is available for AI usage.
|
|
||||||
cameranet.addCamera(src)
|
|
||||||
|
|
||||||
/obj/machinery/camera/Del()
|
/obj/machinery/camera/Del()
|
||||||
cameranet.cameras -= src
|
cameranet.cameras -= src
|
||||||
var/list/open_networks = difflist(network,restricted_camera_networks)
|
clear_all_networks()
|
||||||
if(open_networks.len)
|
|
||||||
cameranet.removeCamera(src)
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
#undef BORG_CAMERA_BUFFER
|
#undef BORG_CAMERA_BUFFER
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
add_language("Drone Talk", 1)
|
add_language("Drone Talk", 1)
|
||||||
|
|
||||||
if(camera && "Robots" in camera.network)
|
if(camera && "Robots" in camera.network)
|
||||||
camera.network.Add("Engineering")
|
camera.add_network("Engineering")
|
||||||
|
|
||||||
//They are unable to be upgraded, so let's give them a bit of a better battery.
|
//They are unable to be upgraded, so let's give them a bit of a better battery.
|
||||||
cell.maxcharge = 10000
|
cell.maxcharge = 10000
|
||||||
@@ -287,5 +287,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/silicon/robot/drone/add_robot_verbs()
|
/mob/living/silicon/robot/drone/add_robot_verbs()
|
||||||
|
src.verbs |= robot_verbs_subsystems
|
||||||
|
|
||||||
/mob/living/silicon/robot/drone/remove_robot_verbs()
|
/mob/living/silicon/robot/drone/remove_robot_verbs()
|
||||||
|
src.verbs -= robot_verbs_subsystems
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ var/list/robot_verbs_default = list(
|
|||||||
if(!scrambledcodes && !camera)
|
if(!scrambledcodes && !camera)
|
||||||
camera = new /obj/machinery/camera(src)
|
camera = new /obj/machinery/camera(src)
|
||||||
camera.c_tag = real_name
|
camera.c_tag = real_name
|
||||||
camera.network = list("SS13","Robots")
|
camera.replace_networks(list("SS13","Robots"))
|
||||||
if(wires.IsIndexCut(BORG_WIRE_CAMERA))
|
if(wires.IsIndexCut(BORG_WIRE_CAMERA))
|
||||||
camera.status = 0
|
camera.status = 0
|
||||||
|
|
||||||
@@ -275,7 +275,7 @@ var/list/robot_verbs_default = list(
|
|||||||
module = new /obj/item/weapon/robot_module/miner(src)
|
module = new /obj/item/weapon/robot_module/miner(src)
|
||||||
module.channels = list("Supply" = 1)
|
module.channels = list("Supply" = 1)
|
||||||
if(camera && "Robots" in camera.network)
|
if(camera && "Robots" in camera.network)
|
||||||
camera.network.Add("MINE")
|
camera.add_network("MINE")
|
||||||
module_sprites["Basic"] = "Miner_old"
|
module_sprites["Basic"] = "Miner_old"
|
||||||
module_sprites["Advanced Droid"] = "droid-miner"
|
module_sprites["Advanced Droid"] = "droid-miner"
|
||||||
module_sprites["Treadhead"] = "Miner"
|
module_sprites["Treadhead"] = "Miner"
|
||||||
@@ -285,7 +285,7 @@ var/list/robot_verbs_default = list(
|
|||||||
module = new /obj/item/weapon/robot_module/crisis(src)
|
module = new /obj/item/weapon/robot_module/crisis(src)
|
||||||
module.channels = list("Medical" = 1)
|
module.channels = list("Medical" = 1)
|
||||||
if(camera && "Robots" in camera.network)
|
if(camera && "Robots" in camera.network)
|
||||||
camera.network.Add("Medical")
|
camera.add_network("Medical")
|
||||||
module_sprites["Basic"] = "Medbot"
|
module_sprites["Basic"] = "Medbot"
|
||||||
module_sprites["Standard"] = "surgeon"
|
module_sprites["Standard"] = "surgeon"
|
||||||
module_sprites["Advanced Droid"] = "droid-medical"
|
module_sprites["Advanced Droid"] = "droid-medical"
|
||||||
@@ -296,7 +296,7 @@ var/list/robot_verbs_default = list(
|
|||||||
module = new /obj/item/weapon/robot_module/surgeon(src)
|
module = new /obj/item/weapon/robot_module/surgeon(src)
|
||||||
module.channels = list("Medical" = 1)
|
module.channels = list("Medical" = 1)
|
||||||
if(camera && "Robots" in camera.network)
|
if(camera && "Robots" in camera.network)
|
||||||
camera.network.Add("Medical")
|
camera.add_network("Medical")
|
||||||
|
|
||||||
module_sprites["Basic"] = "Medbot"
|
module_sprites["Basic"] = "Medbot"
|
||||||
module_sprites["Standard"] = "surgeon"
|
module_sprites["Standard"] = "surgeon"
|
||||||
@@ -318,7 +318,7 @@ var/list/robot_verbs_default = list(
|
|||||||
module = new /obj/item/weapon/robot_module/engineering(src)
|
module = new /obj/item/weapon/robot_module/engineering(src)
|
||||||
module.channels = list("Engineering" = 1)
|
module.channels = list("Engineering" = 1)
|
||||||
if(camera && "Robots" in camera.network)
|
if(camera && "Robots" in camera.network)
|
||||||
camera.network.Add("Engineering")
|
camera.add_network("Engineering")
|
||||||
module_sprites["Basic"] = "Engineering"
|
module_sprites["Basic"] = "Engineering"
|
||||||
module_sprites["Antique"] = "engineerrobot"
|
module_sprites["Antique"] = "engineerrobot"
|
||||||
module_sprites["Landmate"] = "landmate"
|
module_sprites["Landmate"] = "landmate"
|
||||||
@@ -329,7 +329,7 @@ var/list/robot_verbs_default = list(
|
|||||||
module = new /obj/item/weapon/robot_module/construction(src)
|
module = new /obj/item/weapon/robot_module/construction(src)
|
||||||
module.channels = list("Engineering" = 1)
|
module.channels = list("Engineering" = 1)
|
||||||
if(camera && "Robots" in camera.network)
|
if(camera && "Robots" in camera.network)
|
||||||
camera.network.Add("Engineering")
|
camera.add_network("Engineering")
|
||||||
module_sprites["Basic"] = "Engineering"
|
module_sprites["Basic"] = "Engineering"
|
||||||
module_sprites["Antique"] = "engineerrobot"
|
module_sprites["Antique"] = "engineerrobot"
|
||||||
module_sprites["Landmate"] = "landmate"
|
module_sprites["Landmate"] = "landmate"
|
||||||
@@ -1142,8 +1142,7 @@ var/list/robot_verbs_default = list(
|
|||||||
scrambledcodes = 1
|
scrambledcodes = 1
|
||||||
//Disconnect it's camera so it's not so easily tracked.
|
//Disconnect it's camera so it's not so easily tracked.
|
||||||
if(src.camera)
|
if(src.camera)
|
||||||
src.camera.network = list()
|
src.camera.clear_all_networks()
|
||||||
cameranet.removeCamera(src.camera)
|
|
||||||
|
|
||||||
|
|
||||||
/mob/living/silicon/robot/proc/ResetSecurityCodes()
|
/mob/living/silicon/robot/proc/ResetSecurityCodes()
|
||||||
|
|||||||
@@ -323,11 +323,13 @@
|
|||||||
if(next_alarm_notice && (world.time > next_alarm_notice))
|
if(next_alarm_notice && (world.time > next_alarm_notice))
|
||||||
next_alarm_notice = 0
|
next_alarm_notice = 0
|
||||||
|
|
||||||
|
var/alarm_raised = 0
|
||||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||||
var/list/alarms = queued_alarms[AH]
|
var/list/alarms = queued_alarms[AH]
|
||||||
var/reported = 0
|
var/reported = 0
|
||||||
for(var/datum/alarm/A in alarms)
|
for(var/datum/alarm/A in alarms)
|
||||||
if(alarms[A] == 1)
|
if(alarms[A] == 1)
|
||||||
|
alarm_raised = 1
|
||||||
if(!reported)
|
if(!reported)
|
||||||
reported = 1
|
reported = 1
|
||||||
src << "<span class='warning'>--- [AH.category] Detected ---</span>"
|
src << "<span class='warning'>--- [AH.category] Detected ---</span>"
|
||||||
@@ -343,6 +345,9 @@
|
|||||||
src << "<span class='notice'>--- [AH.category] Cleared ---</span>"
|
src << "<span class='notice'>--- [AH.category] Cleared ---</span>"
|
||||||
src << "\The [A.alarm_name()]."
|
src << "\The [A.alarm_name()]."
|
||||||
|
|
||||||
|
if(alarm_raised)
|
||||||
|
src << "<A HREF=?src=\ref[src];showalerts=1>\[Show Alerts\]</A>"
|
||||||
|
|
||||||
for(var/datum/alarm_handler/AH in queued_alarms)
|
for(var/datum/alarm_handler/AH in queued_alarms)
|
||||||
var/list/alarms = queued_alarms[AH]
|
var/list/alarms = queued_alarms[AH]
|
||||||
alarms.Cut()
|
alarms.Cut()
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
radio = new /obj/item/device/radio/borg(src)
|
radio = new /obj/item/device/radio/borg(src)
|
||||||
camera = new /obj/machinery/camera(src)
|
camera = new /obj/machinery/camera(src)
|
||||||
camera.c_tag = "Spiderbot-[real_name]"
|
camera.c_tag = "Spiderbot-[real_name]"
|
||||||
camera.network = list("SS13")
|
camera.replace_networks(list("SS13"))
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -22,17 +22,18 @@ proc/toggle_move_stars(zlevel, direction)
|
|||||||
|
|
||||||
if (moving_levels["zlevel"] != gen_dir)
|
if (moving_levels["zlevel"] != gen_dir)
|
||||||
moving_levels["zlevel"] = gen_dir
|
moving_levels["zlevel"] = gen_dir
|
||||||
for(var/turf/space/S in world)
|
for(var/x = 1 to world.maxx)
|
||||||
if(S.z == zlevel)
|
for(var/y = 1 to world.maxy)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
var/turf/T = S
|
var/turf/space/T = locate(x,y,zlevel)
|
||||||
if(!gen_dir)
|
if (T)
|
||||||
T.icon_state = "[((T.x + T.y) ^ ~(T.x * T.y) + T.z) % 25]"
|
if(!gen_dir)
|
||||||
else
|
T.icon_state = "[((T.x + T.y) ^ ~(T.x * T.y) + T.z) % 25]"
|
||||||
T.icon_state = "speedspace_[gen_dir]_[rand(1,15)]"
|
else
|
||||||
for(var/atom/movable/AM in T)
|
T.icon_state = "speedspace_[gen_dir]_[rand(1,15)]"
|
||||||
if (!AM.anchored)
|
for(var/atom/movable/AM in T)
|
||||||
AM.throw_at(get_step(T,reverse_direction(direction)), 5, 1)
|
if (!AM.anchored)
|
||||||
|
AM.throw_at(get_step(T,reverse_direction(direction)), 5, 1)
|
||||||
|
|
||||||
|
|
||||||
//list used to cache empty zlevels to avoid nedless map bloat
|
//list used to cache empty zlevels to avoid nedless map bloat
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/engines/Topic(href, href_list)
|
/obj/machinery/computer/engines/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
if(href_list["state"])
|
if(href_list["state"])
|
||||||
state = href_list["state"]
|
state = href_list["state"]
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/helm/Topic(href, href_list)
|
/obj/machinery/computer/helm/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
if (!linked)
|
if (!linked)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/explore/Topic(href, href_list)
|
/obj/machinery/computer/shuttle_control/explore/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
|||||||
@@ -76,9 +76,9 @@
|
|||||||
/obj/effect/map/ship/proc/decelerate()
|
/obj/effect/map/ship/proc/decelerate()
|
||||||
if(!is_still() && can_burn())
|
if(!is_still() && can_burn())
|
||||||
if (speed[1])
|
if (speed[1])
|
||||||
adjust_speed(-SIGN(speed[1]) * min(get_acceleration(),speed[1]), 0)
|
adjust_speed(-SIGN(speed[1]) * min(get_acceleration(),abs(speed[1])), 0)
|
||||||
if (speed[2])
|
if (speed[2])
|
||||||
adjust_speed(0, -SIGN(speed[2]) * min(get_acceleration(),speed[2]))
|
adjust_speed(0, -SIGN(speed[2]) * min(get_acceleration(),abs(speed[2])))
|
||||||
last_burn = world.time
|
last_burn = world.time
|
||||||
|
|
||||||
/obj/effect/map/ship/proc/accelerate(direction)
|
/obj/effect/map/ship/proc/accelerate(direction)
|
||||||
|
|||||||
@@ -1148,44 +1148,9 @@
|
|||||||
|
|
||||||
|
|
||||||
// Set channels depending on how much charge we have left
|
// Set channels depending on how much charge we have left
|
||||||
|
update_channels()
|
||||||
// Allow the APC to operate as normal if the cell can charge
|
|
||||||
if(charging && longtermpower < 10)
|
|
||||||
longtermpower += 1
|
|
||||||
else if(longtermpower > -10)
|
|
||||||
longtermpower -= 2
|
|
||||||
|
|
||||||
if((cell.percent() > 30) || longtermpower > 0) // Put most likely at the top so we don't check it last, effeciency 101
|
|
||||||
if(autoflag != 3)
|
|
||||||
equipment = autoset(equipment, 1)
|
|
||||||
lighting = autoset(lighting, 1)
|
|
||||||
environ = autoset(environ, 1)
|
|
||||||
autoflag = 3
|
|
||||||
power_alarm.clearAlarm(loc, src)
|
|
||||||
else if((cell.percent() <= 30) && (cell.percent() > 15) && longtermpower < 0) // <30%, turn off equipment
|
|
||||||
if(autoflag != 2)
|
|
||||||
equipment = autoset(equipment, 2)
|
|
||||||
lighting = autoset(lighting, 1)
|
|
||||||
environ = autoset(environ, 1)
|
|
||||||
power_alarm.triggerAlarm(loc, src)
|
|
||||||
autoflag = 2
|
|
||||||
else if(cell.percent() <= 15) // <15%, turn off lighting & equipment
|
|
||||||
if((autoflag > 1 && longtermpower < 0) || (autoflag > 1 && longtermpower >= 0))
|
|
||||||
equipment = autoset(equipment, 2)
|
|
||||||
lighting = autoset(lighting, 2)
|
|
||||||
environ = autoset(environ, 1)
|
|
||||||
power_alarm.triggerAlarm(loc, src)
|
|
||||||
autoflag = 1
|
|
||||||
else // zero charge, turn all off
|
|
||||||
if(autoflag != 0)
|
|
||||||
equipment = autoset(equipment, 0)
|
|
||||||
lighting = autoset(lighting, 0)
|
|
||||||
environ = autoset(environ, 0)
|
|
||||||
power_alarm.triggerAlarm(loc, src)
|
|
||||||
autoflag = 0
|
|
||||||
|
|
||||||
// now trickle-charge the cell
|
// now trickle-charge the cell
|
||||||
|
|
||||||
lastused_charging = 0 // Clear the variable for new use.
|
lastused_charging = 0 // Clear the variable for new use.
|
||||||
if(src.attempt_charging())
|
if(src.attempt_charging())
|
||||||
if(excess > 0) // check to make sure we have enough to charge
|
if(excess > 0) // check to make sure we have enough to charge
|
||||||
@@ -1222,7 +1187,6 @@
|
|||||||
chargecount = 0
|
chargecount = 0
|
||||||
|
|
||||||
else // no cell, switch everything off
|
else // no cell, switch everything off
|
||||||
|
|
||||||
charging = 0
|
charging = 0
|
||||||
chargecount = 0
|
chargecount = 0
|
||||||
equipment = autoset(equipment, 0)
|
equipment = autoset(equipment, 0)
|
||||||
@@ -1232,13 +1196,48 @@
|
|||||||
autoflag = 0
|
autoflag = 0
|
||||||
|
|
||||||
// update icon & area power if anything changed
|
// update icon & area power if anything changed
|
||||||
|
|
||||||
if(last_lt != lighting || last_eq != equipment || last_en != environ)
|
if(last_lt != lighting || last_eq != equipment || last_en != environ)
|
||||||
queue_icon_update()
|
queue_icon_update()
|
||||||
update()
|
update()
|
||||||
else if (last_ch != charging)
|
else if (last_ch != charging)
|
||||||
queue_icon_update()
|
queue_icon_update()
|
||||||
|
|
||||||
|
/obj/machinery/power/apc/proc/update_channels()
|
||||||
|
// Allow the APC to operate as normal if the cell can charge
|
||||||
|
if(charging && longtermpower < 10)
|
||||||
|
longtermpower += 1
|
||||||
|
else if(longtermpower > -10)
|
||||||
|
longtermpower -= 2
|
||||||
|
|
||||||
|
if((cell.percent() > 30) || longtermpower > 0) // Put most likely at the top so we don't check it last, effeciency 101
|
||||||
|
if(autoflag != 3)
|
||||||
|
equipment = autoset(equipment, 1)
|
||||||
|
lighting = autoset(lighting, 1)
|
||||||
|
environ = autoset(environ, 1)
|
||||||
|
autoflag = 3
|
||||||
|
power_alarm.clearAlarm(loc, src)
|
||||||
|
else if((cell.percent() <= 30) && (cell.percent() > 15) && longtermpower < 0) // <30%, turn off equipment
|
||||||
|
if(autoflag != 2)
|
||||||
|
equipment = autoset(equipment, 2)
|
||||||
|
lighting = autoset(lighting, 1)
|
||||||
|
environ = autoset(environ, 1)
|
||||||
|
power_alarm.triggerAlarm(loc, src)
|
||||||
|
autoflag = 2
|
||||||
|
else if(cell.percent() <= 15) // <15%, turn off lighting & equipment
|
||||||
|
if((autoflag > 1 && longtermpower < 0) || (autoflag > 1 && longtermpower >= 0))
|
||||||
|
equipment = autoset(equipment, 2)
|
||||||
|
lighting = autoset(lighting, 2)
|
||||||
|
environ = autoset(environ, 1)
|
||||||
|
power_alarm.triggerAlarm(loc, src)
|
||||||
|
autoflag = 1
|
||||||
|
else // zero charge, turn all off
|
||||||
|
if(autoflag != 0)
|
||||||
|
equipment = autoset(equipment, 0)
|
||||||
|
lighting = autoset(lighting, 0)
|
||||||
|
environ = autoset(environ, 0)
|
||||||
|
power_alarm.triggerAlarm(loc, src)
|
||||||
|
autoflag = 0
|
||||||
|
|
||||||
// val 0=off, 1=off(auto) 2=on 3=on(auto)
|
// val 0=off, 1=off(auto) 2=on 3=on(auto)
|
||||||
// on 0=off, 1=on, 2=autooff
|
// on 0=off, 1=on, 2=autooff
|
||||||
|
|
||||||
@@ -1266,12 +1265,15 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
|
|||||||
cell.emp_act(severity)
|
cell.emp_act(severity)
|
||||||
if(occupier)
|
if(occupier)
|
||||||
occupier.emp_act(severity)
|
occupier.emp_act(severity)
|
||||||
|
|
||||||
lighting = 0
|
lighting = 0
|
||||||
equipment = 0
|
equipment = 0
|
||||||
environ = 0
|
environ = 0
|
||||||
|
update()
|
||||||
|
|
||||||
spawn(600)
|
spawn(600)
|
||||||
equipment = 3
|
update_channels()
|
||||||
environ = 3
|
update()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/power/apc/ex_act(severity)
|
/obj/machinery/power/apc/ex_act(severity)
|
||||||
|
|||||||
@@ -21,22 +21,29 @@
|
|||||||
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
|
desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice."
|
||||||
projectile_type = /obj/item/projectile/beam/practice
|
projectile_type = /obj/item/projectile/beam/practice
|
||||||
|
|
||||||
obj/item/weapon/gun/energy/laser/retro
|
obj/item/weapon/gun/energy/retro
|
||||||
name = "retro laser"
|
name = "retro laser"
|
||||||
icon_state = "retro"
|
icon_state = "retro"
|
||||||
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
|
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces. Nevertheless, it is still quite deadly and easy to maintain, making it a favorite amongst pirates and other outlaws."
|
||||||
|
fire_sound = 'sound/weapons/Laser.ogg'
|
||||||
|
slot_flags = SLOT_BELT
|
||||||
|
w_class = 3
|
||||||
|
projectile_type = /obj/item/projectile/beam
|
||||||
|
fire_delay = 10
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/captain
|
/obj/item/weapon/gun/energy/captain
|
||||||
name = "antique laser gun"
|
name = "antique laser gun"
|
||||||
icon_state = "caplaser"
|
icon_state = "caplaser"
|
||||||
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
desc = "This is an antique laser gun. All craftsmanship is of the highest quality. It is decorated with assistant leather and chrome. The object menaces with spikes of energy. On the item is an image of Space Station 13. The station is exploding."
|
||||||
force = 5
|
force = 5
|
||||||
|
fire_sound = 'sound/weapons/Laser.ogg'
|
||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
|
w_class = 3
|
||||||
|
projectile_type = /obj/item/projectile/beam
|
||||||
origin_tech = null
|
origin_tech = null
|
||||||
charge_cost = 200 //to compensate a bit for self-recharging
|
charge_cost = 200 //to compensate a bit for self-recharging
|
||||||
self_recharge = 1
|
self_recharge = 1
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/lasercannon
|
/obj/item/weapon/gun/energy/lasercannon
|
||||||
name = "laser cannon"
|
name = "laser cannon"
|
||||||
desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
desc = "With the laser cannon, the lasing medium is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
||||||
@@ -62,6 +69,7 @@ obj/item/weapon/gun/energy/laser/retro
|
|||||||
origin_tech = "combat=5;materials=3;magnets=2;syndicate=2"
|
origin_tech = "combat=5;materials=3;magnets=2;syndicate=2"
|
||||||
projectile_type = /obj/item/projectile/beam/xray
|
projectile_type = /obj/item/projectile/beam/xray
|
||||||
charge_cost = 50
|
charge_cost = 50
|
||||||
|
fire_delay = 1
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/sniperrifle
|
/obj/item/weapon/gun/energy/sniperrifle
|
||||||
name = "\improper L.W.A.P. sniper rifle"
|
name = "\improper L.W.A.P. sniper rifle"
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/gun/energy/temperature/Topic(href, href_list)
|
/obj/item/weapon/gun/energy/temperature/Topic(href, href_list)
|
||||||
if (..())
|
if (..())
|
||||||
return
|
return 1
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
|
||||||
|
|||||||
@@ -165,6 +165,7 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/dartgun/Topic(href, href_list)
|
/obj/item/weapon/gun/projectile/dartgun/Topic(href, href_list)
|
||||||
|
if(..()) return 1
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
if(href_list["stop_mix"])
|
if(href_list["stop_mix"])
|
||||||
var/index = text2num(href_list["stop_mix"])
|
var/index = text2num(href_list["stop_mix"])
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
|||||||
|
|
||||||
/obj/machinery/computer/rdconsole/Topic(href, href_list)
|
/obj/machinery/computer/rdconsole/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
|
|
||||||
|
|||||||
@@ -205,7 +205,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/rdservercontrol/Topic(href, href_list)
|
/obj/machinery/computer/rdservercontrol/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
add_fingerprint(usr)
|
add_fingerprint(usr)
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
|
|||||||
@@ -345,7 +345,7 @@
|
|||||||
/obj/item/weapon/gun/energy/laser/practice/xenoarch,\
|
/obj/item/weapon/gun/energy/laser/practice/xenoarch,\
|
||||||
/obj/item/weapon/gun/energy/laser/xenoarch,\
|
/obj/item/weapon/gun/energy/laser/xenoarch,\
|
||||||
/obj/item/weapon/gun/energy/xray/xenoarch,\
|
/obj/item/weapon/gun/energy/xray/xenoarch,\
|
||||||
/obj/item/weapon/gun/energy/laser/captain/xenoarch)
|
/obj/item/weapon/gun/energy/captain/xenoarch)
|
||||||
if(spawn_type)
|
if(spawn_type)
|
||||||
var/obj/item/weapon/gun/energy/new_gun = new spawn_type(src.loc)
|
var/obj/item/weapon/gun/energy/new_gun = new spawn_type(src.loc)
|
||||||
new_item = new_gun
|
new_item = new_gun
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/laser/captain/xenoarch
|
/obj/item/weapon/gun/energy/captain/xenoarch
|
||||||
icon = 'icons/obj/xenoarchaeology.dmi'
|
icon = 'icons/obj/xenoarchaeology.dmi'
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ datum/genesequence
|
|||||||
onclose(user, "reconstitutor")
|
onclose(user, "reconstitutor")
|
||||||
|
|
||||||
/obj/machinery/computer/reconstitutor/animal/Topic(href, href_list)
|
/obj/machinery/computer/reconstitutor/animal/Topic(href, href_list)
|
||||||
|
if(..()) return 1
|
||||||
if(href_list["clone"])
|
if(href_list["clone"])
|
||||||
var/sequence_num = text2num(href_list["sequence_num"])
|
var/sequence_num = text2num(href_list["sequence_num"])
|
||||||
var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num]
|
var/datum/genesequence/cloned_genesequence = completed_genesequences[sequence_num]
|
||||||
@@ -201,10 +202,9 @@ datum/genesequence
|
|||||||
pod1.biomass -= CLONE_BIOMASS
|
pod1.biomass -= CLONE_BIOMASS
|
||||||
else
|
else
|
||||||
usr << "\red \icon[src] Unable to locate cloning pod!"
|
usr << "\red \icon[src] Unable to locate cloning pod!"
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/reconstitutor/Topic(href, href_list)
|
/obj/machinery/computer/reconstitutor/Topic(href, href_list)
|
||||||
|
if(..()) return 1
|
||||||
if(href_list["insertpos"])
|
if(href_list["insertpos"])
|
||||||
//world << "inserting gene for genesequence [href_list["insertgenome"]] at pos [text2num(href_list["insertpos"])]"
|
//world << "inserting gene for genesequence [href_list["insertgenome"]] at pos [text2num(href_list["insertpos"])]"
|
||||||
var/sequence_num = text2num(href_list["sequence_num"])
|
var/sequence_num = text2num(href_list["sequence_num"])
|
||||||
@@ -252,9 +252,6 @@ datum/genesequence
|
|||||||
usr.unset_machine(src)
|
usr.unset_machine(src)
|
||||||
usr << browse(null, "window=reconstitutor")
|
usr << browse(null, "window=reconstitutor")
|
||||||
|
|
||||||
else
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/machinery/computer/reconstitutor/proc/scan_fossil(var/obj/item/weapon/fossil/scan_fossil)
|
/obj/machinery/computer/reconstitutor/proc/scan_fossil(var/obj/item/weapon/fossil/scan_fossil)
|
||||||
//see whether we accept these kind of fossils
|
//see whether we accept these kind of fossils
|
||||||
if(accepted_fossil_types.len && !accepted_fossil_types.Find(scan_fossil.type))
|
if(accepted_fossil_types.len && !accepted_fossil_types.Find(scan_fossil.type))
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
ui.set_auto_update(1)
|
ui.set_auto_update(1)
|
||||||
|
|
||||||
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list)
|
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list)
|
||||||
if(..()) //I hate this "return 1 to indicate they are not allowed to use the controller" crap, but not sure how else to do it without being able to call machinery/Topic() directly.
|
if(..())
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
if("manual_arm")
|
if("manual_arm")
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
|
/obj/machinery/computer/shuttle_control/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
|||||||
@@ -221,7 +221,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/emergency/Topic(href, href_list)
|
/obj/machinery/computer/shuttle_control/emergency/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
if(href_list["removeid"])
|
if(href_list["removeid"])
|
||||||
var/dna_hash = href_list["removeid"]
|
var/dna_hash = href_list["removeid"]
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/shuttle_control/multi/Topic(href, href_list)
|
/obj/machinery/computer/shuttle_control/multi/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
|
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
|
|||||||
@@ -92,7 +92,7 @@
|
|||||||
isolate()
|
isolate()
|
||||||
|
|
||||||
/obj/machinery/computer/centrifuge/Topic(href, href_list)
|
/obj/machinery/computer/centrifuge/Topic(href, href_list)
|
||||||
if (..()) return 0
|
if (..()) return 1
|
||||||
|
|
||||||
var/mob/user = usr
|
var/mob/user = usr
|
||||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/curer/Topic(href, href_list)
|
/obj/machinery/computer/curer/Topic(href, href_list)
|
||||||
if(..())
|
if(..())
|
||||||
return
|
return 1
|
||||||
usr.machine = src
|
usr.machine = src
|
||||||
|
|
||||||
if (href_list["antibody"])
|
if (href_list["antibody"])
|
||||||
@@ -91,7 +91,6 @@
|
|||||||
|
|
||||||
src.add_fingerprint(usr)
|
src.add_fingerprint(usr)
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/curer/proc/createcure(var/obj/item/weapon/reagent_containers/container)
|
/obj/machinery/computer/curer/proc/createcure(var/obj/item/weapon/reagent_containers/container)
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
nanomanager.update_uis(src)
|
nanomanager.update_uis(src)
|
||||||
|
|
||||||
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
|
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
|
||||||
if(..()) return 0
|
if(..()) return 1
|
||||||
|
|
||||||
var/mob/user = usr
|
var/mob/user = usr
|
||||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
nanomanager.update_uis(src)
|
nanomanager.update_uis(src)
|
||||||
|
|
||||||
/obj/machinery/disease2/incubator/Topic(href, href_list)
|
/obj/machinery/disease2/incubator/Topic(href, href_list)
|
||||||
if (..()) return 0
|
if (..()) return 1
|
||||||
|
|
||||||
var/mob/user = usr
|
var/mob/user = usr
|
||||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||||
|
|||||||
@@ -120,7 +120,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/disease2/isolator/Topic(href, href_list)
|
/obj/machinery/disease2/isolator/Topic(href, href_list)
|
||||||
if (..()) return 0
|
if (..()) return 1
|
||||||
|
|
||||||
var/mob/user = usr
|
var/mob/user = usr
|
||||||
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
var/datum/nanoui/ui = nanomanager.get_open_ui(user, src, "main")
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/virusdish/Topic(href, href_list)
|
/obj/item/weapon/virusdish/Topic(href, href_list)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(.) return
|
if(.) return 1
|
||||||
|
|
||||||
if(href_list["info"])
|
if(href_list["info"])
|
||||||
usr << browse(info, "window=info_\ref[src]")
|
usr << browse(info, "window=info_\ref[src]")
|
||||||
|
|||||||
@@ -631,6 +631,7 @@ var/list/be_special_flags = list(
|
|||||||
#define NONGLOBAL 32 // Do not add to general languages list.
|
#define NONGLOBAL 32 // Do not add to general languages list.
|
||||||
#define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes)
|
#define INNATE 64 // All mobs can be assumed to speak and understand this language. (audible emotes)
|
||||||
#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message
|
#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message
|
||||||
|
#define NO_STUTTER 256 // No stuttering, slurring, or other speech problems
|
||||||
|
|
||||||
//Flags for zone sleeping
|
//Flags for zone sleeping
|
||||||
#define ZONE_ACTIVE 1
|
#define ZONE_ACTIVE 1
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
"aS" = (/obj/machinery/door/window,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
"aS" = (/obj/machinery/door/window,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
||||||
"aT" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
"aT" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
||||||
"aU" = (/obj/structure/lattice,/turf/space,/area/space)
|
"aU" = (/obj/structure/lattice,/turf/space,/area/space)
|
||||||
"aV" = (/obj/structure/table,/obj/item/weapon/gun/energy/laser/retro,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
"aV" = (/obj/structure/table,/obj/item/weapon/gun/energy/retro,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
||||||
"aW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/derelict/ship)
|
"aW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/derelict/ship)
|
||||||
"aX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
"aX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
||||||
"aY" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
"aY" = (/obj/structure/table,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
|
||||||
|
|||||||
Reference in New Issue
Block a user