mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Merge remote-tracking branch 'upstream/dev' into 150817-SynthAccess
This commit is contained in:
@@ -5,7 +5,7 @@ sudo: false
|
|||||||
env:
|
env:
|
||||||
BYOND_MAJOR="508"
|
BYOND_MAJOR="508"
|
||||||
BYOND_MINOR="1293"
|
BYOND_MINOR="1293"
|
||||||
MACRO_COUNT=1230
|
MACRO_COUNT=1210
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
#include "code\__defines\mobs.dm"
|
#include "code\__defines\mobs.dm"
|
||||||
#include "code\__defines\research.dm"
|
#include "code\__defines\research.dm"
|
||||||
#include "code\__defines\species_languages.dm"
|
#include "code\__defines\species_languages.dm"
|
||||||
|
#include "code\__defines\turfs.dm"
|
||||||
#include "code\_helpers\atmospherics.dm"
|
#include "code\_helpers\atmospherics.dm"
|
||||||
#include "code\_helpers\datum_pool.dm"
|
#include "code\_helpers\datum_pool.dm"
|
||||||
#include "code\_helpers\files.dm"
|
#include "code\_helpers\files.dm"
|
||||||
@@ -372,6 +373,7 @@
|
|||||||
#include "code\game\machinery\doppler_array.dm"
|
#include "code\game\machinery\doppler_array.dm"
|
||||||
#include "code\game\machinery\flasher.dm"
|
#include "code\game\machinery\flasher.dm"
|
||||||
#include "code\game\machinery\floodlight.dm"
|
#include "code\game\machinery\floodlight.dm"
|
||||||
|
#include "code\game\machinery\floor_light.dm"
|
||||||
#include "code\game\machinery\floorlayer.dm"
|
#include "code\game\machinery\floorlayer.dm"
|
||||||
#include "code\game\machinery\hologram.dm"
|
#include "code\game\machinery\hologram.dm"
|
||||||
#include "code\game\machinery\holosign.dm"
|
#include "code\game\machinery\holosign.dm"
|
||||||
@@ -578,7 +580,6 @@
|
|||||||
#include "code\game\objects\effects\decals\posters\bs12.dm"
|
#include "code\game\objects\effects\decals\posters\bs12.dm"
|
||||||
#include "code\game\objects\effects\spawners\bombspawner.dm"
|
#include "code\game\objects\effects\spawners\bombspawner.dm"
|
||||||
#include "code\game\objects\effects\spawners\gibspawner.dm"
|
#include "code\game\objects\effects\spawners\gibspawner.dm"
|
||||||
#include "code\game\objects\effects\spawners\vaultspawner.dm"
|
|
||||||
#include "code\game\objects\items\apc_frame.dm"
|
#include "code\game\objects\items\apc_frame.dm"
|
||||||
#include "code\game\objects\items\blueprints.dm"
|
#include "code\game\objects\items\blueprints.dm"
|
||||||
#include "code\game\objects\items\bodybag.dm"
|
#include "code\game\objects\items\bodybag.dm"
|
||||||
@@ -636,9 +637,6 @@
|
|||||||
#include "code\game\objects\items\stacks\rods.dm"
|
#include "code\game\objects\items\stacks\rods.dm"
|
||||||
#include "code\game\objects\items\stacks\stack.dm"
|
#include "code\game\objects\items\stacks\stack.dm"
|
||||||
#include "code\game\objects\items\stacks\sheets\leather.dm"
|
#include "code\game\objects\items\stacks\sheets\leather.dm"
|
||||||
#include "code\game\objects\items\stacks\sheets\light.dm"
|
|
||||||
#include "code\game\objects\items\stacks\tiles\light.dm"
|
|
||||||
#include "code\game\objects\items\stacks\tiles\plasteel.dm"
|
|
||||||
#include "code\game\objects\items\stacks\tiles\tile_types.dm"
|
#include "code\game\objects\items\stacks\tiles\tile_types.dm"
|
||||||
#include "code\game\objects\items\weapons\AI_modules.dm"
|
#include "code\game\objects\items\weapons\AI_modules.dm"
|
||||||
#include "code\game\objects\items\weapons\autopsy.dm"
|
#include "code\game\objects\items\weapons\autopsy.dm"
|
||||||
@@ -690,6 +688,7 @@
|
|||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\commsantenna.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\commsantenna.dm"
|
||||||
|
#include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm"
|
||||||
#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm"
|
#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm"
|
||||||
@@ -810,9 +809,18 @@
|
|||||||
#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm"
|
#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm"
|
||||||
#include "code\game\turfs\simulated.dm"
|
#include "code\game\turfs\simulated.dm"
|
||||||
#include "code\game\turfs\turf.dm"
|
#include "code\game\turfs\turf.dm"
|
||||||
|
#include "code\game\turfs\turf_changing.dm"
|
||||||
#include "code\game\turfs\turf_flick_animations.dm"
|
#include "code\game\turfs\turf_flick_animations.dm"
|
||||||
#include "code\game\turfs\unsimulated.dm"
|
#include "code\game\turfs\unsimulated.dm"
|
||||||
|
#include "code\game\turfs\flooring\flooring.dm"
|
||||||
|
#include "code\game\turfs\flooring\flooring_decals.dm"
|
||||||
|
#include "code\game\turfs\flooring\flooring_premade.dm"
|
||||||
#include "code\game\turfs\simulated\floor.dm"
|
#include "code\game\turfs\simulated\floor.dm"
|
||||||
|
#include "code\game\turfs\simulated\floor_acts.dm"
|
||||||
|
#include "code\game\turfs\simulated\floor_attackby.dm"
|
||||||
|
#include "code\game\turfs\simulated\floor_damage.dm"
|
||||||
|
#include "code\game\turfs\simulated\floor_icon.dm"
|
||||||
|
#include "code\game\turfs\simulated\floor_static.dm"
|
||||||
#include "code\game\turfs\simulated\floor_types.dm"
|
#include "code\game\turfs\simulated\floor_types.dm"
|
||||||
#include "code\game\turfs\simulated\wall_attacks.dm"
|
#include "code\game\turfs\simulated\wall_attacks.dm"
|
||||||
#include "code\game\turfs\simulated\wall_icon.dm"
|
#include "code\game\turfs\simulated\wall_icon.dm"
|
||||||
@@ -840,6 +848,7 @@
|
|||||||
#include "code\modules\admin\create_turf.dm"
|
#include "code\modules\admin\create_turf.dm"
|
||||||
#include "code\modules\admin\holder2.dm"
|
#include "code\modules\admin\holder2.dm"
|
||||||
#include "code\modules\admin\IsBanned.dm"
|
#include "code\modules\admin\IsBanned.dm"
|
||||||
|
#include "code\modules\admin\map_capture.dm"
|
||||||
#include "code\modules\admin\NewBan.dm"
|
#include "code\modules\admin\NewBan.dm"
|
||||||
#include "code\modules\admin\player_notes.dm"
|
#include "code\modules\admin\player_notes.dm"
|
||||||
#include "code\modules\admin\player_panel.dm"
|
#include "code\modules\admin\player_panel.dm"
|
||||||
@@ -912,6 +921,7 @@
|
|||||||
#include "code\modules\client\preferences_savefile.dm"
|
#include "code\modules\client\preferences_savefile.dm"
|
||||||
#include "code\modules\client\preferences_spawnpoints.dm"
|
#include "code\modules\client\preferences_spawnpoints.dm"
|
||||||
#include "code\modules\client\preferences_toggles.dm"
|
#include "code\modules\client\preferences_toggles.dm"
|
||||||
|
#include "code\modules\client\ui_style.dm"
|
||||||
#include "code\modules\clothing\chameleon.dm"
|
#include "code\modules\clothing\chameleon.dm"
|
||||||
#include "code\modules\clothing\clothing.dm"
|
#include "code\modules\clothing\clothing.dm"
|
||||||
#include "code\modules\clothing\ears\skrell.dm"
|
#include "code\modules\clothing\ears\skrell.dm"
|
||||||
@@ -1428,7 +1438,6 @@
|
|||||||
#include "code\modules\power\cable.dm"
|
#include "code\modules\power\cable.dm"
|
||||||
#include "code\modules\power\cable_heavyduty.dm"
|
#include "code\modules\power\cable_heavyduty.dm"
|
||||||
#include "code\modules\power\cell.dm"
|
#include "code\modules\power\cell.dm"
|
||||||
#include "code\modules\power\engine.dm"
|
|
||||||
#include "code\modules\power\fractal_reactor.dm"
|
#include "code\modules\power\fractal_reactor.dm"
|
||||||
#include "code\modules\power\generator.dm"
|
#include "code\modules\power\generator.dm"
|
||||||
#include "code\modules\power\generator_type2.dm"
|
#include "code\modules\power\generator_type2.dm"
|
||||||
|
|||||||
@@ -12,14 +12,14 @@
|
|||||||
#define PIPE_COLOR_CYAN "#00ffff"
|
#define PIPE_COLOR_CYAN "#00ffff"
|
||||||
#define PIPE_COLOR_GREEN "#00ff00"
|
#define PIPE_COLOR_GREEN "#00ff00"
|
||||||
#define PIPE_COLOR_YELLOW "#ffcc00"
|
#define PIPE_COLOR_YELLOW "#ffcc00"
|
||||||
#define PIPE_COLOR_PURPLE "#5c1ec0"
|
#define PIPE_COLOR_BLACK "#444444"
|
||||||
|
|
||||||
#define CONNECT_TYPE_REGULAR 1
|
#define CONNECT_TYPE_REGULAR 1
|
||||||
#define CONNECT_TYPE_SUPPLY 2
|
#define CONNECT_TYPE_SUPPLY 2
|
||||||
#define CONNECT_TYPE_SCRUBBER 4
|
#define CONNECT_TYPE_SCRUBBER 4
|
||||||
#define CONNECT_TYPE_HE 8
|
#define CONNECT_TYPE_HE 8
|
||||||
|
|
||||||
var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "purple" = PIPE_COLOR_PURPLE)
|
var/global/list/pipe_colors = list("grey" = PIPE_COLOR_GREY, "red" = PIPE_COLOR_RED, "blue" = PIPE_COLOR_BLUE, "cyan" = PIPE_COLOR_CYAN, "green" = PIPE_COLOR_GREEN, "yellow" = PIPE_COLOR_YELLOW, "black" = PIPE_COLOR_BLACK)
|
||||||
|
|
||||||
/proc/pipe_color_lookup(var/color)
|
/proc/pipe_color_lookup(var/color)
|
||||||
for(var/C in pipe_colors)
|
for(var/C in pipe_colors)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ Pipelines + Other Objects -> Pipe network
|
|||||||
|
|
||||||
/obj/machinery/atmospherics/proc/add_underlay(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type)
|
/obj/machinery/atmospherics/proc/add_underlay(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type)
|
||||||
if(node)
|
if(node)
|
||||||
if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
||||||
//underlays += icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node))
|
//underlays += icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node))
|
||||||
underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type)
|
underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
if(!istype(T))
|
if(!istype(T))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
||||||
vent_icon += "h"
|
vent_icon += "h"
|
||||||
|
|
||||||
if(!powered())
|
if(!powered())
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!istype(T))
|
if(!istype(T))
|
||||||
return
|
return
|
||||||
if(T.intact && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node1 && node2 && node1.level == 1 && node2.level == 1 && istype(node1, /obj/machinery/atmospherics/pipe) && istype(node2, /obj/machinery/atmospherics/pipe))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
if (node1)
|
if (node1)
|
||||||
|
|||||||
@@ -189,7 +189,7 @@
|
|||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!istype(T))
|
if(!istype(T))
|
||||||
return
|
return
|
||||||
if(T.intact && istype(P.node, /obj/machinery/atmospherics/pipe) && P.node.level == 1 )
|
if(!T.is_plating() && istype(P.node, /obj/machinery/atmospherics/pipe) && P.node.level == 1 )
|
||||||
//pipe_state = icon_manager.get_atmos_icon("underlay_down", P.dir, color_cache_name(P.node))
|
//pipe_state = icon_manager.get_atmos_icon("underlay_down", P.dir, color_cache_name(P.node))
|
||||||
pipe_state = icon_manager.get_atmos_icon("underlay", P.dir, color_cache_name(P.node), "down")
|
pipe_state = icon_manager.get_atmos_icon("underlay", P.dir, color_cache_name(P.node), "down")
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -69,7 +69,7 @@
|
|||||||
if (!istype(W, /obj/item/weapon/wrench))
|
if (!istype(W, /obj/item/weapon/wrench))
|
||||||
return ..()
|
return ..()
|
||||||
var/turf/T = src.loc
|
var/turf/T = src.loc
|
||||||
if (level==1 && isturf(T) && T.intact)
|
if (level==1 && isturf(T) && !T.is_plating())
|
||||||
user << "<span class='warning'>You must remove the plating first.</span>"
|
user << "<span class='warning'>You must remove the plating first.</span>"
|
||||||
return 1
|
return 1
|
||||||
var/datum/gas_mixture/int_air = return_air()
|
var/datum/gas_mixture/int_air = return_air()
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
if(!istype(T))
|
if(!istype(T))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(T.intact && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
||||||
vent_icon += "h"
|
vent_icon += "h"
|
||||||
|
|
||||||
if(welded)
|
if(welded)
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!istype(T))
|
if(!istype(T))
|
||||||
return
|
return
|
||||||
if(T.intact && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
if(node)
|
if(node)
|
||||||
@@ -399,7 +399,7 @@
|
|||||||
user << "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>"
|
user << "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>"
|
||||||
return 1
|
return 1
|
||||||
var/turf/T = src.loc
|
var/turf/T = src.loc
|
||||||
if (node && node.level==1 && isturf(T) && T.intact)
|
if (node && node.level==1 && isturf(T) && !T.is_plating())
|
||||||
user << "<span class='warning'>You must remove the plating first.</span>"
|
user << "<span class='warning'>You must remove the plating first.</span>"
|
||||||
return 1
|
return 1
|
||||||
var/datum/gas_mixture/int_air = return_air()
|
var/datum/gas_mixture/int_air = return_air()
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!istype(T))
|
if(!istype(T))
|
||||||
return
|
return
|
||||||
if(T.intact && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
if(node)
|
if(node)
|
||||||
@@ -261,7 +261,7 @@
|
|||||||
user << "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>"
|
user << "<span class='warning'>You cannot unwrench \the [src], turn it off first.</span>"
|
||||||
return 1
|
return 1
|
||||||
var/turf/T = src.loc
|
var/turf/T = src.loc
|
||||||
if (node && node.level==1 && isturf(T) && T.intact)
|
if (node && node.level==1 && isturf(T) && !T.is_plating())
|
||||||
user << "<span class='warning'>You must remove the plating first.</span>"
|
user << "<span class='warning'>You must remove the plating first.</span>"
|
||||||
return 1
|
return 1
|
||||||
var/datum/gas_mixture/int_air = return_air()
|
var/datum/gas_mixture/int_air = return_air()
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ obj/machinery/atmospherics/mains_pipe/simple
|
|||||||
..() // initialize internal pipes
|
..() // initialize internal pipes
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
hidden
|
hidden
|
||||||
@@ -243,7 +243,7 @@ obj/machinery/atmospherics/mains_pipe/manifold
|
|||||||
..() // initialize internal pipes
|
..() // initialize internal pipes
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -293,7 +293,7 @@ obj/machinery/atmospherics/mains_pipe/manifold4w
|
|||||||
..() // initialize internal pipes
|
..() // initialize internal pipes
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -354,7 +354,7 @@ obj/machinery/atmospherics/mains_pipe/split
|
|||||||
N1.merge(N2)
|
N1.merge(N2)
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -475,7 +475,7 @@ obj/machinery/atmospherics/mains_pipe/split3
|
|||||||
N1.merge(N2)
|
N1.merge(N2)
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -525,7 +525,7 @@ obj/machinery/atmospherics/mains_pipe/cap
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
hidden
|
hidden
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
/obj/machinery/atmospherics/pipe
|
/obj/machinery/atmospherics/pipe
|
||||||
|
|
||||||
var/datum/gas_mixture/air_temporary //used when reconstructing a pipeline that broke
|
var/datum/gas_mixture/air_temporary // used when reconstructing a pipeline that broke
|
||||||
var/datum/pipeline/parent
|
var/datum/pipeline/parent
|
||||||
|
|
||||||
var/volume = 0
|
var/volume = 0
|
||||||
force = 20
|
force = 20
|
||||||
|
|
||||||
@@ -20,10 +19,12 @@
|
|||||||
return -1
|
return -1
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/New()
|
/obj/machinery/atmospherics/pipe/New()
|
||||||
..()
|
|
||||||
//so pipes under walls are hidden
|
|
||||||
if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall))
|
if(istype(get_turf(src), /turf/simulated/wall) || istype(get_turf(src), /turf/simulated/shuttle/wall) || istype(get_turf(src), /turf/unsimulated/wall))
|
||||||
level = 1
|
level = 1
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/atmospherics/pipe/hides_under_flooring()
|
||||||
|
return level != 2
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/proc/pipeline_expansion()
|
/obj/machinery/atmospherics/pipe/proc/pipeline_expansion()
|
||||||
return null
|
return null
|
||||||
@@ -81,7 +82,7 @@
|
|||||||
if (!istype(W, /obj/item/weapon/wrench))
|
if (!istype(W, /obj/item/weapon/wrench))
|
||||||
return ..()
|
return ..()
|
||||||
var/turf/T = src.loc
|
var/turf/T = src.loc
|
||||||
if (level==1 && isturf(T) && T.intact)
|
if (level==1 && isturf(T) && !T.is_plating())
|
||||||
user << "<span class='warning'>You must remove the plating first.</span>"
|
user << "<span class='warning'>You must remove the plating first.</span>"
|
||||||
return 1
|
return 1
|
||||||
var/datum/gas_mixture/int_air = return_air()
|
var/datum/gas_mixture/int_air = return_air()
|
||||||
@@ -188,7 +189,7 @@
|
|||||||
initialize_directions = SOUTH|WEST
|
initialize_directions = SOUTH|WEST
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/simple/hide(var/i)
|
/obj/machinery/atmospherics/pipe/simple/hide(var/i)
|
||||||
if(level == 1 && istype(loc, /turf/simulated))
|
if(istype(loc, /turf/simulated))
|
||||||
invisibility = i ? 101 : 0
|
invisibility = i ? 101 : 0
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -297,9 +298,8 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = loc
|
||||||
if(istype(T))
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
hide(T.intact)
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
|
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
|
||||||
@@ -348,8 +348,8 @@
|
|||||||
/obj/machinery/atmospherics/pipe/simple/visible/green
|
/obj/machinery/atmospherics/pipe/simple/visible/green
|
||||||
color = PIPE_COLOR_GREEN
|
color = PIPE_COLOR_GREEN
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/simple/visible/purple
|
/obj/machinery/atmospherics/pipe/simple/visible/black
|
||||||
color = PIPE_COLOR_PURPLE
|
color = PIPE_COLOR_BLACK
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/simple/visible/red
|
/obj/machinery/atmospherics/pipe/simple/visible/red
|
||||||
color = PIPE_COLOR_RED
|
color = PIPE_COLOR_RED
|
||||||
@@ -390,8 +390,8 @@
|
|||||||
/obj/machinery/atmospherics/pipe/simple/hidden/green
|
/obj/machinery/atmospherics/pipe/simple/hidden/green
|
||||||
color = PIPE_COLOR_GREEN
|
color = PIPE_COLOR_GREEN
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/simple/hidden/purple
|
/obj/machinery/atmospherics/pipe/simple/hidden/black
|
||||||
color = PIPE_COLOR_PURPLE
|
color = PIPE_COLOR_BLACK
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/simple/hidden/red
|
/obj/machinery/atmospherics/pipe/simple/hidden/red
|
||||||
color = PIPE_COLOR_RED
|
color = PIPE_COLOR_RED
|
||||||
@@ -446,7 +446,7 @@
|
|||||||
initialize_directions = NORTH|EAST|SOUTH
|
initialize_directions = NORTH|EAST|SOUTH
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold/hide(var/i)
|
/obj/machinery/atmospherics/pipe/manifold/hide(var/i)
|
||||||
if(level == 1 && istype(loc, /turf/simulated))
|
if(istype(loc, /turf/simulated))
|
||||||
invisibility = i ? 101 : 0
|
invisibility = i ? 101 : 0
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -582,8 +582,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(istype(T))
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
hide(T.intact)
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold/visible
|
/obj/machinery/atmospherics/pipe/manifold/visible
|
||||||
@@ -617,8 +616,8 @@
|
|||||||
/obj/machinery/atmospherics/pipe/manifold/visible/green
|
/obj/machinery/atmospherics/pipe/manifold/visible/green
|
||||||
color = PIPE_COLOR_GREEN
|
color = PIPE_COLOR_GREEN
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold/visible/purple
|
/obj/machinery/atmospherics/pipe/manifold/visible/black
|
||||||
color = PIPE_COLOR_PURPLE
|
color = PIPE_COLOR_BLACK
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold/visible/red
|
/obj/machinery/atmospherics/pipe/manifold/visible/red
|
||||||
color = PIPE_COLOR_RED
|
color = PIPE_COLOR_RED
|
||||||
@@ -659,8 +658,8 @@
|
|||||||
/obj/machinery/atmospherics/pipe/manifold/hidden/green
|
/obj/machinery/atmospherics/pipe/manifold/hidden/green
|
||||||
color = PIPE_COLOR_GREEN
|
color = PIPE_COLOR_GREEN
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold/hidden/purple
|
/obj/machinery/atmospherics/pipe/manifold/hidden/black
|
||||||
color = PIPE_COLOR_PURPLE
|
color = PIPE_COLOR_BLACK
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold/hidden/red
|
/obj/machinery/atmospherics/pipe/manifold/hidden/red
|
||||||
color = PIPE_COLOR_RED
|
color = PIPE_COLOR_RED
|
||||||
@@ -806,7 +805,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i)
|
/obj/machinery/atmospherics/pipe/manifold4w/hide(var/i)
|
||||||
if(level == 1 && istype(loc, /turf/simulated))
|
if(istype(loc, /turf/simulated))
|
||||||
invisibility = i ? 101 : 0
|
invisibility = i ? 101 : 0
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -841,8 +840,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(istype(T))
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
hide(T.intact)
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold4w/visible
|
/obj/machinery/atmospherics/pipe/manifold4w/visible
|
||||||
@@ -876,8 +874,8 @@
|
|||||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/green
|
/obj/machinery/atmospherics/pipe/manifold4w/visible/green
|
||||||
color = PIPE_COLOR_GREEN
|
color = PIPE_COLOR_GREEN
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/purple
|
/obj/machinery/atmospherics/pipe/manifold4w/visible/black
|
||||||
color = PIPE_COLOR_PURPLE
|
color = PIPE_COLOR_BLACK
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold4w/visible/red
|
/obj/machinery/atmospherics/pipe/manifold4w/visible/red
|
||||||
color = PIPE_COLOR_RED
|
color = PIPE_COLOR_RED
|
||||||
@@ -917,8 +915,8 @@
|
|||||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/green
|
/obj/machinery/atmospherics/pipe/manifold4w/hidden/green
|
||||||
color = PIPE_COLOR_GREEN
|
color = PIPE_COLOR_GREEN
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/purple
|
/obj/machinery/atmospherics/pipe/manifold4w/hidden/black
|
||||||
color = PIPE_COLOR_PURPLE
|
color = PIPE_COLOR_BLACK
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/manifold4w/hidden/red
|
/obj/machinery/atmospherics/pipe/manifold4w/hidden/red
|
||||||
color = PIPE_COLOR_RED
|
color = PIPE_COLOR_RED
|
||||||
@@ -946,7 +944,7 @@
|
|||||||
initialize_directions = dir
|
initialize_directions = dir
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/cap/hide(var/i)
|
/obj/machinery/atmospherics/pipe/cap/hide(var/i)
|
||||||
if(level == 1 && istype(loc, /turf/simulated))
|
if(istype(loc, /turf/simulated))
|
||||||
invisibility = i ? 101 : 0
|
invisibility = i ? 101 : 0
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -997,7 +995,7 @@
|
|||||||
break
|
break
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
if(level == 1 && !T.is_plating()) hide(1)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/machinery/atmospherics/pipe/cap/visible
|
/obj/machinery/atmospherics/pipe/cap/visible
|
||||||
@@ -1386,7 +1384,7 @@
|
|||||||
|
|
||||||
/obj/machinery/atmospherics/proc/add_underlay_adapter(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) //modified from add_underlay, does not make exposed underlays
|
/obj/machinery/atmospherics/proc/add_underlay_adapter(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) //modified from add_underlay, does not make exposed underlays
|
||||||
if(node)
|
if(node)
|
||||||
if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
if(!T.is_plating() && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe))
|
||||||
underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type)
|
underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type)
|
||||||
else
|
else
|
||||||
underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type)
|
underlays += icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type)
|
||||||
|
|||||||
@@ -46,8 +46,8 @@ obj/machinery/atmospherics/pipe/zpipe/New()
|
|||||||
if(SOUTHWEST)
|
if(SOUTHWEST)
|
||||||
initialize_directions = SOUTH
|
initialize_directions = SOUTH
|
||||||
|
|
||||||
obj/machinery/atmospherics/pipe/zpipe/hide(var/i)
|
/obj/machinery/atmospherics/pipe/zpipe/hide(var/i)
|
||||||
if(level == 1 && istype(loc, /turf/simulated))
|
if(istype(loc, /turf/simulated))
|
||||||
invisibility = i ? 101 : 0
|
invisibility = i ? 101 : 0
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -149,7 +149,7 @@ obj/machinery/atmospherics/pipe/zpipe/up/initialize()
|
|||||||
|
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
hide(!T.is_plating())
|
||||||
|
|
||||||
///////////////////////
|
///////////////////////
|
||||||
// and the down pipe //
|
// and the down pipe //
|
||||||
@@ -190,7 +190,7 @@ obj/machinery/atmospherics/pipe/zpipe/down/initialize()
|
|||||||
|
|
||||||
|
|
||||||
var/turf/T = src.loc // hide if turf is not intact
|
var/turf/T = src.loc // hide if turf is not intact
|
||||||
hide(T.intact)
|
hide(!T.is_plating())
|
||||||
|
|
||||||
///////////////////////
|
///////////////////////
|
||||||
// supply/scrubbers //
|
// supply/scrubbers //
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/turf/simulated/floor/open
|
/turf/simulated/floor/open
|
||||||
name = "open space"
|
name = "open space"
|
||||||
intact = 0
|
|
||||||
density = 0
|
density = 0
|
||||||
icon_state = "black"
|
icon_state = "black"
|
||||||
pathweight = 100000 //Seriously, don't try and path over this one numbnuts
|
pathweight = 100000 //Seriously, don't try and path over this one numbnuts
|
||||||
@@ -81,8 +80,7 @@
|
|||||||
// override to make sure nothing is hidden
|
// override to make sure nothing is hidden
|
||||||
/turf/simulated/floor/open/levelupdate()
|
/turf/simulated/floor/open/levelupdate()
|
||||||
for(var/obj/O in src)
|
for(var/obj/O in src)
|
||||||
if(O.level == 1)
|
O.hide(0)
|
||||||
O.hide(0)
|
|
||||||
|
|
||||||
//overwrite the attackby of space to transform it to openspace if necessary
|
//overwrite the attackby of space to transform it to openspace if necessary
|
||||||
/turf/space/attackby(obj/item/C as obj, mob/user as mob)
|
/turf/space/attackby(obj/item/C as obj, mob/user as mob)
|
||||||
@@ -114,16 +112,16 @@
|
|||||||
ReplaceWithLattice()
|
ReplaceWithLattice()
|
||||||
return
|
return
|
||||||
|
|
||||||
if (istype(C, /obj/item/stack/tile/steel))
|
if (istype(C, /obj/item/stack/tile/floor))
|
||||||
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
||||||
if(L)
|
if(L)
|
||||||
var/obj/item/stack/tile/steel/S = C
|
var/obj/item/stack/tile/floor/S = C
|
||||||
if (S.get_amount() < 1)
|
if (S.get_amount() < 1)
|
||||||
return
|
return
|
||||||
qdel(L)
|
qdel(L)
|
||||||
playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1)
|
playsound(src.loc, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||||
S.build(src)
|
|
||||||
S.use(1)
|
S.use(1)
|
||||||
|
ChangeTurf(/turf/simulated/floor/airless)
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>The plating is going to need some support.</span>"
|
user << "<span class='warning'>The plating is going to need some support.</span>"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ mob/proc/airflow_stun()
|
|||||||
mob/living/silicon/airflow_stun()
|
mob/living/silicon/airflow_stun()
|
||||||
return
|
return
|
||||||
|
|
||||||
mob/living/carbon/metroid/airflow_stun()
|
mob/living/carbon/slime/airflow_stun()
|
||||||
return
|
return
|
||||||
|
|
||||||
mob/living/carbon/human/airflow_stun()
|
mob/living/carbon/human/airflow_stun()
|
||||||
@@ -242,6 +242,6 @@ zone/proc/movables()
|
|||||||
. = list()
|
. = list()
|
||||||
for(var/turf/T in contents)
|
for(var/turf/T in contents)
|
||||||
for(var/atom/movable/A in T)
|
for(var/atom/movable/A in T)
|
||||||
if(!A.simulated || A.anchored || istype(A, /obj/effect) || istype(A, /mob/aiEye))
|
if(!A.simulated || A.anchored || istype(A, /obj/effect) || istype(A, /mob/eye))
|
||||||
continue
|
continue
|
||||||
. += A
|
. += A
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
#define MOLES_PHORON_VISIBLE 0.7 // Moles in a standard cell after which phoron is visible.
|
#define MOLES_PHORON_VISIBLE 0.7 // Moles in a standard cell after which phoron is visible.
|
||||||
#define MOLES_O2STANDARD (MOLES_CELLSTANDARD * O2STANDARD) // O2 standard value (21%)
|
#define MOLES_O2STANDARD (MOLES_CELLSTANDARD * O2STANDARD) // O2 standard value (21%)
|
||||||
#define MOLES_N2STANDARD (MOLES_CELLSTANDARD * N2STANDARD) // N2 standard value (79%)
|
#define MOLES_N2STANDARD (MOLES_CELLSTANDARD * N2STANDARD) // N2 standard value (79%)
|
||||||
|
#define MOLES_O2ATMOS (MOLES_O2STANDARD*50)
|
||||||
|
#define MOLES_N2ATMOS (MOLES_N2STANDARD*50)
|
||||||
|
|
||||||
// These are for when a mob breathes poisonous air.
|
// These are for when a mob breathes poisonous air.
|
||||||
#define MIN_TOXIN_DAMAGE 1
|
#define MIN_TOXIN_DAMAGE 1
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#define ON_BORDER 64 // Item has priority to check when entering or leaving.
|
#define ON_BORDER 64 // Item has priority to check when entering or leaving.
|
||||||
#define NOBLOODY 512 // Used for items if they don't want to get a blood overlay.
|
#define NOBLOODY 512 // Used for items if they don't want to get a blood overlay.
|
||||||
#define NODELAY 8192 // 1 second attack-by delay skipped (Can be used once every 0.2s). Most objects have a 1s attack-by delay, which doesn't require a flag.
|
#define NODELAY 8192 // 1 second attack-by delay skipped (Can be used once every 0.2s). Most objects have a 1s attack-by delay, which doesn't require a flag.
|
||||||
|
#define PROXMOVE 16384 // Does this object require proximity checking in Enter()?
|
||||||
|
|
||||||
//Use these flags to indicate if an item obscures the specified slots from view, whereas body_parts_covered seems to be used to indicate what body parts the item protects.
|
//Use these flags to indicate if an item obscures the specified slots from view, whereas body_parts_covered seems to be used to indicate what body parts the item protects.
|
||||||
#define GLASSESCOVERSEYES 256
|
#define GLASSESCOVERSEYES 256
|
||||||
|
|||||||
@@ -63,15 +63,23 @@
|
|||||||
#define LIFE_HUD 10 // STATUS_HUD that only reports dead or alive
|
#define LIFE_HUD 10 // STATUS_HUD that only reports dead or alive
|
||||||
|
|
||||||
//some colors
|
//some colors
|
||||||
#define COLOR_RED "#FF0000"
|
|
||||||
#define COLOR_GREEN "#00FF00"
|
|
||||||
#define COLOR_BLUE "#0000FF"
|
|
||||||
#define COLOR_CYAN "#00FFFF"
|
|
||||||
#define COLOR_PINK "#FF00FF"
|
|
||||||
#define COLOR_YELLOW "#FFFF00"
|
|
||||||
#define COLOR_ORANGE "#FF9900"
|
|
||||||
#define COLOR_WHITE "#FFFFFF"
|
#define COLOR_WHITE "#FFFFFF"
|
||||||
|
#define COLOR_SILVER "#C0C0C0"
|
||||||
|
#define COLOR_GRAY "#808080"
|
||||||
#define COLOR_BLACK "#000000"
|
#define COLOR_BLACK "#000000"
|
||||||
|
#define COLOR_RED "#FF0000"
|
||||||
|
#define COLOR_MAROON "#800000"
|
||||||
|
#define COLOR_YELLOW "#FFFF00"
|
||||||
|
#define COLOR_OLIVE "#808000"
|
||||||
|
#define COLOR_LIME "#00FF00"
|
||||||
|
#define COLOR_GREEN "#008000"
|
||||||
|
#define COLOR_CYAN "#00FFFF"
|
||||||
|
#define COLOR_TEAL "#008080"
|
||||||
|
#define COLOR_BLUE "#0000FF"
|
||||||
|
#define COLOR_NAVY "#000080"
|
||||||
|
#define COLOR_PINK "#FF00FF"
|
||||||
|
#define COLOR_PURPLE "#800080"
|
||||||
|
#define COLOR_ORANGE "#FF9900"
|
||||||
|
|
||||||
// Shuttles.
|
// Shuttles.
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
#define I_HELP "help"
|
#define I_HELP "help"
|
||||||
#define I_DISARM "disarm"
|
#define I_DISARM "disarm"
|
||||||
#define I_GRAB "grab"
|
#define I_GRAB "grab"
|
||||||
#define I_HURT "hurt"
|
#define I_HURT "harm"
|
||||||
|
|
||||||
//These are used Bump() code for living mobs, in the mob_bump_flag, mob_swap_flags, and mob_push_flags vars to determine whom can bump/swap with whom.
|
//These are used Bump() code for living mobs, in the mob_bump_flag, mob_swap_flags, and mob_push_flags vars to determine whom can bump/swap with whom.
|
||||||
#define HUMAN 1
|
#define HUMAN 1
|
||||||
@@ -58,7 +58,8 @@
|
|||||||
#define ROBOT 8
|
#define ROBOT 8
|
||||||
#define SLIME 16
|
#define SLIME 16
|
||||||
#define SIMPLE_ANIMAL 32
|
#define SIMPLE_ANIMAL 32
|
||||||
#define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL)
|
#define HEAVY 64
|
||||||
|
#define ALLMOBS (HUMAN|MONKEY|ALIEN|ROBOT|SLIME|SIMPLE_ANIMAL|HEAVY)
|
||||||
|
|
||||||
#define NEXT_MOVE_DELAY 8
|
#define NEXT_MOVE_DELAY 8
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#define SHEET_MATERIAL_AMOUNT 2000
|
#define SHEET_MATERIAL_AMOUNT 2000
|
||||||
|
|
||||||
#define TECH_MATERIAL "materials"
|
#define TECH_MATERIAL "materials"
|
||||||
#define TECH_ENGINERING "engineering"
|
#define TECH_ENGINEERING "engineering"
|
||||||
#define TECH_PHORON "phorontech"
|
#define TECH_PHORON "phorontech"
|
||||||
#define TECH_POWER "powerstorage"
|
#define TECH_POWER "powerstorage"
|
||||||
#define TECH_BLUESPACE "bluespace"
|
#define TECH_BLUESPACE "bluespace"
|
||||||
|
|||||||
10
code/__defines/turfs.dm
Normal file
10
code/__defines/turfs.dm
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#define TURF_REMOVE_CROWBAR 1
|
||||||
|
#define TURF_REMOVE_SCREWDRIVER 2
|
||||||
|
#define TURF_REMOVE_SHOVEL 4
|
||||||
|
#define TURF_REMOVE_WRENCH 8
|
||||||
|
#define TURF_CAN_BREAK 16
|
||||||
|
#define TURF_CAN_BURN 32
|
||||||
|
#define TURF_HAS_EDGES 64
|
||||||
|
#define TURF_HAS_CORNERS 128
|
||||||
|
#define TURF_IS_FRAGILE 256
|
||||||
|
#define TURF_ACID_IMMUNE 512
|
||||||
@@ -109,6 +109,12 @@
|
|||||||
M = whom
|
M = whom
|
||||||
C = M.client
|
C = M.client
|
||||||
key = M.key
|
key = M.key
|
||||||
|
else if(istype(whom, /datum/mind))
|
||||||
|
var/datum/mind/D = whom
|
||||||
|
key = D.key
|
||||||
|
M = D.current
|
||||||
|
if(D.current)
|
||||||
|
C = D.current.client
|
||||||
else if(istype(whom, /datum))
|
else if(istype(whom, /datum))
|
||||||
var/datum/D = whom
|
var/datum/D = whom
|
||||||
return "*invalid:[D.type]*"
|
return "*invalid:[D.type]*"
|
||||||
|
|||||||
@@ -27,3 +27,18 @@ proc/isDay(var/month, var/day)
|
|||||||
// Uncomment this out when debugging!
|
// Uncomment this out when debugging!
|
||||||
//else
|
//else
|
||||||
//return 1
|
//return 1
|
||||||
|
|
||||||
|
var/next_duration_update = 0
|
||||||
|
var/last_round_duration = 0
|
||||||
|
proc/round_duration()
|
||||||
|
if(last_round_duration && world.time < next_duration_update)
|
||||||
|
return last_round_duration
|
||||||
|
|
||||||
|
var/mills = world.time // 1/10 of a second, not real milliseconds but whatever
|
||||||
|
//var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something
|
||||||
|
var/mins = (mills % 36000) / 600
|
||||||
|
var/hours = mills / 36000
|
||||||
|
|
||||||
|
last_round_duration = "[round(hours)]h [round(mins)]m"
|
||||||
|
next_duration_update = world.time + 1 MINUTES
|
||||||
|
return last_round_duration
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
// Returns the hex value of a number given a value assumed to be a base-ten value
|
// Returns the hex value of a number given a value assumed to be a base-ten value
|
||||||
/proc/num2hex(num, padlength)
|
/proc/num2hex(num, padlength)
|
||||||
var/global/list/hexdigits = list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
|
var/global/list/hexdigits = list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
|
||||||
|
|
||||||
. = ""
|
. = ""
|
||||||
while(num > 0)
|
while(num > 0)
|
||||||
var/hexdigit = hexdigits[(num & 0xF) + 1]
|
var/hexdigit = hexdigits[(num & 0xF) + 1]
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
num >>= 4 //go to the next half-byte
|
num >>= 4 //go to the next half-byte
|
||||||
|
|
||||||
//pad with zeroes
|
//pad with zeroes
|
||||||
var/left = padlength - length(.)
|
var/left = padlength - length(.)
|
||||||
while (left-- > 0)
|
while (left-- > 0)
|
||||||
. = "0[.]"
|
. = "0[.]"
|
||||||
|
|
||||||
@@ -275,13 +275,6 @@ proc/tg_list2text(list/list, glue=",")
|
|||||||
if (rights & R_MENTOR) . += "[seperator]+MENTOR"
|
if (rights & R_MENTOR) . += "[seperator]+MENTOR"
|
||||||
return .
|
return .
|
||||||
|
|
||||||
/proc/ui_style2icon(ui_style)
|
|
||||||
switch (ui_style)
|
|
||||||
if ("old") return 'icons/mob/screen1_old.dmi'
|
|
||||||
if ("Orange") return 'icons/mob/screen1_Orange.dmi'
|
|
||||||
if ("Midnight") return 'icons/mob/screen1_Midnight.dmi'
|
|
||||||
else return 'icons/mob/screen1_White.dmi'
|
|
||||||
|
|
||||||
// heat2color functions. Adapted from: http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/
|
// heat2color functions. Adapted from: http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/
|
||||||
/proc/heat2color(temp)
|
/proc/heat2color(temp)
|
||||||
return rgb(heat2color_r(temp), heat2color_g(temp), heat2color_b(temp))
|
return rgb(heat2color_r(temp), heat2color_g(temp), heat2color_b(temp))
|
||||||
|
|||||||
@@ -774,11 +774,15 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
|||||||
var/old_dir1 = T.dir
|
var/old_dir1 = T.dir
|
||||||
var/old_icon_state1 = T.icon_state
|
var/old_icon_state1 = T.icon_state
|
||||||
var/old_icon1 = T.icon
|
var/old_icon1 = T.icon
|
||||||
|
var/old_overlays = T.overlays.Copy()
|
||||||
|
var/old_underlays = T.underlays.Copy()
|
||||||
|
|
||||||
var/turf/X = B.ChangeTurf(T.type)
|
var/turf/X = B.ChangeTurf(T.type)
|
||||||
X.set_dir(old_dir1)
|
X.set_dir(old_dir1)
|
||||||
X.icon_state = old_icon_state1
|
X.icon_state = old_icon_state1
|
||||||
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
||||||
|
X.overlays = old_overlays
|
||||||
|
X.underlays = old_underlays
|
||||||
|
|
||||||
var/turf/simulated/ST = T
|
var/turf/simulated/ST = T
|
||||||
if(istype(ST) && ST.zone)
|
if(istype(ST) && ST.zone)
|
||||||
@@ -824,7 +828,7 @@ proc/GaussRandRound(var/sigma,var/roundto)
|
|||||||
if(!istype(O,/obj)) continue
|
if(!istype(O,/obj)) continue
|
||||||
O.loc = X
|
O.loc = X
|
||||||
for(var/mob/M in T)
|
for(var/mob/M in T)
|
||||||
if(!istype(M,/mob) || istype(M, /mob/aiEye)) continue // If we need to check for more mobs, I'll add a variable
|
if(!istype(M,/mob) || istype(M, /mob/eye)) continue // If we need to check for more mobs, I'll add a variable
|
||||||
M.loc = X
|
M.loc = X
|
||||||
|
|
||||||
// var/area/AR = X.loc
|
// var/area/AR = X.loc
|
||||||
@@ -921,6 +925,8 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
var/old_dir1 = T.dir
|
var/old_dir1 = T.dir
|
||||||
var/old_icon_state1 = T.icon_state
|
var/old_icon_state1 = T.icon_state
|
||||||
var/old_icon1 = T.icon
|
var/old_icon1 = T.icon
|
||||||
|
var/old_overlays = T.overlays.Copy()
|
||||||
|
var/old_underlays = T.underlays.Copy()
|
||||||
|
|
||||||
if(platingRequired)
|
if(platingRequired)
|
||||||
if(istype(B, get_base_turf(B.z)))
|
if(istype(B, get_base_turf(B.z)))
|
||||||
@@ -931,7 +937,8 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
X.set_dir(old_dir1)
|
X.set_dir(old_dir1)
|
||||||
X.icon_state = old_icon_state1
|
X.icon_state = old_icon_state1
|
||||||
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi
|
||||||
|
X.overlays = old_overlays
|
||||||
|
X.underlays = old_underlays
|
||||||
|
|
||||||
var/list/objs = new/list()
|
var/list/objs = new/list()
|
||||||
var/list/newobjs = new/list()
|
var/list/newobjs = new/list()
|
||||||
@@ -955,7 +962,7 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
|
|||||||
|
|
||||||
for(var/mob/M in T)
|
for(var/mob/M in T)
|
||||||
|
|
||||||
if(!istype(M,/mob) || istype(M, /mob/aiEye)) continue // If we need to check for more mobs, I'll add a variable
|
if(!istype(M,/mob) || istype(M, /mob/eye)) continue // If we need to check for more mobs, I'll add a variable
|
||||||
mobs += M
|
mobs += M
|
||||||
|
|
||||||
for(var/mob/M in mobs)
|
for(var/mob/M in mobs)
|
||||||
|
|||||||
@@ -256,7 +256,7 @@ datum/hud/New(mob/owner)
|
|||||||
if(ishuman(mymob))
|
if(ishuman(mymob))
|
||||||
human_hud(ui_style, ui_color, ui_alpha, mymob) // Pass the player the UI style chosen in preferences
|
human_hud(ui_style, ui_color, ui_alpha, mymob) // Pass the player the UI style chosen in preferences
|
||||||
else if(issmall(mymob))
|
else if(issmall(mymob))
|
||||||
monkey_hud(ui_style)
|
monkey_hud(ui_style, ui_color, ui_alpha)
|
||||||
else if(isbrain(mymob))
|
else if(isbrain(mymob))
|
||||||
brain_hud(ui_style)
|
brain_hud(ui_style)
|
||||||
else if(isalien(mymob))
|
else if(isalien(mymob))
|
||||||
|
|||||||
@@ -58,7 +58,6 @@
|
|||||||
|
|
||||||
using = new /obj/screen()
|
using = new /obj/screen()
|
||||||
using.name = "act_intent"
|
using.name = "act_intent"
|
||||||
using.set_dir(SOUTHWEST)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
using.icon_state = "intent_"+mymob.a_intent
|
using.icon_state = "intent_"+mymob.a_intent
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
@@ -125,7 +124,6 @@
|
|||||||
if(hud_data.has_m_intent)
|
if(hud_data.has_m_intent)
|
||||||
using = new /obj/screen()
|
using = new /obj/screen()
|
||||||
using.name = "mov_intent"
|
using.name = "mov_intent"
|
||||||
using.set_dir(SOUTHWEST)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||||
using.screen_loc = ui_movi
|
using.screen_loc = ui_movi
|
||||||
@@ -160,11 +158,10 @@
|
|||||||
|
|
||||||
inv_box = new /obj/screen/inventory()
|
inv_box = new /obj/screen/inventory()
|
||||||
inv_box.name = "r_hand"
|
inv_box.name = "r_hand"
|
||||||
inv_box.set_dir(WEST)
|
|
||||||
inv_box.icon = ui_style
|
inv_box.icon = ui_style
|
||||||
inv_box.icon_state = "hand_inactive"
|
inv_box.icon_state = "r_hand_inactive"
|
||||||
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
|
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
|
||||||
inv_box.icon_state = "hand_active"
|
inv_box.icon_state = "r_hand_active"
|
||||||
inv_box.screen_loc = ui_rhand
|
inv_box.screen_loc = ui_rhand
|
||||||
inv_box.slot_id = slot_r_hand
|
inv_box.slot_id = slot_r_hand
|
||||||
inv_box.layer = 19
|
inv_box.layer = 19
|
||||||
@@ -176,11 +173,10 @@
|
|||||||
|
|
||||||
inv_box = new /obj/screen/inventory()
|
inv_box = new /obj/screen/inventory()
|
||||||
inv_box.name = "l_hand"
|
inv_box.name = "l_hand"
|
||||||
inv_box.set_dir(EAST)
|
|
||||||
inv_box.icon = ui_style
|
inv_box.icon = ui_style
|
||||||
inv_box.icon_state = "hand_inactive"
|
inv_box.icon_state = "l_hand_inactive"
|
||||||
if(mymob && mymob.hand) //This being 1 means the left hand is in use
|
if(mymob && mymob.hand) //This being 1 means the left hand is in use
|
||||||
inv_box.icon_state = "hand_active"
|
inv_box.icon_state = "l_hand_active"
|
||||||
inv_box.screen_loc = ui_lhand
|
inv_box.screen_loc = ui_lhand
|
||||||
inv_box.slot_id = slot_l_hand
|
inv_box.slot_id = slot_l_hand
|
||||||
inv_box.layer = 19
|
inv_box.layer = 19
|
||||||
@@ -191,7 +187,6 @@
|
|||||||
|
|
||||||
using = new /obj/screen/inventory()
|
using = new /obj/screen/inventory()
|
||||||
using.name = "hand"
|
using.name = "hand"
|
||||||
using.set_dir(SOUTH)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
using.icon_state = "hand1"
|
using.icon_state = "hand1"
|
||||||
using.screen_loc = ui_swaphand1
|
using.screen_loc = ui_swaphand1
|
||||||
@@ -202,7 +197,6 @@
|
|||||||
|
|
||||||
using = new /obj/screen/inventory()
|
using = new /obj/screen/inventory()
|
||||||
using.name = "hand"
|
using.name = "hand"
|
||||||
using.set_dir(SOUTH)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
using.icon_state = "hand2"
|
using.icon_state = "hand2"
|
||||||
using.screen_loc = ui_swaphand2
|
using.screen_loc = ui_swaphand2
|
||||||
@@ -340,29 +334,31 @@
|
|||||||
|
|
||||||
//Handle the gun settings buttons
|
//Handle the gun settings buttons
|
||||||
mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
|
mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
|
||||||
//mymob.gun_setting_icon.color = ui_color
|
mymob.gun_setting_icon.icon = ui_style
|
||||||
|
mymob.gun_setting_icon.color = ui_color
|
||||||
mymob.gun_setting_icon.alpha = ui_alpha
|
mymob.gun_setting_icon.alpha = ui_alpha
|
||||||
hud_elements |= mymob.gun_setting_icon
|
hud_elements |= mymob.gun_setting_icon
|
||||||
|
|
||||||
mymob.item_use_icon = new /obj/screen/gun/item(null)
|
mymob.item_use_icon = new /obj/screen/gun/item(null)
|
||||||
//mymob.item_use_icon.color = ui_color
|
mymob.item_use_icon.icon = ui_style
|
||||||
|
mymob.item_use_icon.color = ui_color
|
||||||
mymob.item_use_icon.alpha = ui_alpha
|
mymob.item_use_icon.alpha = ui_alpha
|
||||||
|
|
||||||
mymob.gun_move_icon = new /obj/screen/gun/move(null)
|
mymob.gun_move_icon = new /obj/screen/gun/move(null)
|
||||||
//mymob.gun_move_icon.color = ui_color
|
mymob.gun_move_icon.icon = ui_style
|
||||||
|
mymob.gun_move_icon.color = ui_color
|
||||||
mymob.gun_move_icon.alpha = ui_alpha
|
mymob.gun_move_icon.alpha = ui_alpha
|
||||||
|
|
||||||
mymob.gun_run_icon = new /obj/screen/gun/run(null)
|
mymob.gun_run_icon = new /obj/screen/gun/run(null)
|
||||||
//mymob.gun_run_icon.color = ui_color
|
mymob.gun_run_icon.icon = ui_style
|
||||||
|
mymob.gun_run_icon.color = ui_color
|
||||||
mymob.gun_run_icon.alpha = ui_alpha
|
mymob.gun_run_icon.alpha = ui_alpha
|
||||||
|
|
||||||
mymob.radio_use_icon = new /obj/screen/gun/radio(null)
|
mymob.radio_use_icon = new /obj/screen/gun/radio(null)
|
||||||
|
mymob.radio_use_icon.icon = ui_style
|
||||||
|
mymob.radio_use_icon.color = ui_color
|
||||||
mymob.radio_use_icon.alpha = ui_alpha
|
mymob.radio_use_icon.alpha = ui_alpha
|
||||||
|
|
||||||
if (mymob.client)
|
|
||||||
if (mymob.client.gun_mode) // If in aim mode, correct the sprite
|
|
||||||
mymob.gun_setting_icon.set_dir(2)
|
|
||||||
|
|
||||||
|
|
||||||
mymob.client.screen = null
|
mymob.client.screen = null
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/datum/hud/proc/monkey_hud(var/ui_style='icons/mob/screen1_old.dmi')
|
/datum/hud/proc/monkey_hud(var/ui_style='icons/mob/screen1_old.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255)
|
||||||
|
|
||||||
src.adding = list()
|
src.adding = list()
|
||||||
src.other = list()
|
src.other = list()
|
||||||
@@ -8,9 +8,10 @@
|
|||||||
|
|
||||||
using = new /obj/screen()
|
using = new /obj/screen()
|
||||||
using.name = "act_intent"
|
using.name = "act_intent"
|
||||||
using.set_dir(SOUTHWEST)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
using.icon_state = (mymob.a_intent == I_HURT ? I_HURT : mymob.a_intent)
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
|
using.icon_state = mymob.a_intent
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
using.layer = 20
|
using.layer = 20
|
||||||
src.adding += using
|
src.adding += using
|
||||||
@@ -23,7 +24,7 @@
|
|||||||
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
||||||
ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height())
|
ico.DrawBox(rgb(255,255,255,1),1,ico.Height()/2,ico.Width()/2,ico.Height())
|
||||||
using = new /obj/screen( src )
|
using = new /obj/screen( src )
|
||||||
using.name = "help"
|
using.name = I_HELP
|
||||||
using.icon = ico
|
using.icon = ico
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
using.layer = 21
|
using.layer = 21
|
||||||
@@ -34,7 +35,7 @@
|
|||||||
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
||||||
ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height())
|
ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,ico.Height()/2,ico.Width(),ico.Height())
|
||||||
using = new /obj/screen( src )
|
using = new /obj/screen( src )
|
||||||
using.name = "disarm"
|
using.name = I_DISARM
|
||||||
using.icon = ico
|
using.icon = ico
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
using.layer = 21
|
using.layer = 21
|
||||||
@@ -45,7 +46,7 @@
|
|||||||
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
||||||
ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2)
|
ico.DrawBox(rgb(255,255,255,1),ico.Width()/2,1,ico.Width(),ico.Height()/2)
|
||||||
using = new /obj/screen( src )
|
using = new /obj/screen( src )
|
||||||
using.name = "grab"
|
using.name = I_GRAB
|
||||||
using.icon = ico
|
using.icon = ico
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
using.layer = 21
|
using.layer = 21
|
||||||
@@ -56,7 +57,7 @@
|
|||||||
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
ico.MapColors(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, -1,-1,-1,-1)
|
||||||
ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2)
|
ico.DrawBox(rgb(255,255,255,1),1,1,ico.Width()/2,ico.Height()/2)
|
||||||
using = new /obj/screen( src )
|
using = new /obj/screen( src )
|
||||||
using.name = "harm"
|
using.name = I_HURT
|
||||||
using.icon = ico
|
using.icon = ico
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
using.layer = 21
|
using.layer = 21
|
||||||
@@ -67,8 +68,9 @@
|
|||||||
|
|
||||||
using = new /obj/screen()
|
using = new /obj/screen()
|
||||||
using.name = "mov_intent"
|
using.name = "mov_intent"
|
||||||
using.set_dir(SOUTHWEST)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||||
using.screen_loc = ui_movi
|
using.screen_loc = ui_movi
|
||||||
using.layer = 20
|
using.layer = 20
|
||||||
@@ -78,6 +80,8 @@
|
|||||||
using = new /obj/screen()
|
using = new /obj/screen()
|
||||||
using.name = "drop"
|
using.name = "drop"
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
using.icon_state = "act_drop"
|
using.icon_state = "act_drop"
|
||||||
using.screen_loc = ui_drop_throw
|
using.screen_loc = ui_drop_throw
|
||||||
using.layer = 19
|
using.layer = 19
|
||||||
@@ -85,9 +89,10 @@
|
|||||||
|
|
||||||
inv_box = new /obj/screen/inventory()
|
inv_box = new /obj/screen/inventory()
|
||||||
inv_box.name = "r_hand"
|
inv_box.name = "r_hand"
|
||||||
inv_box.set_dir(WEST)
|
|
||||||
inv_box.icon = ui_style
|
inv_box.icon = ui_style
|
||||||
inv_box.icon_state = "hand_inactive"
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
|
inv_box.icon_state = "r_hand_inactive"
|
||||||
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
|
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
|
||||||
inv_box.icon_state = "hand_active"
|
inv_box.icon_state = "hand_active"
|
||||||
inv_box.screen_loc = ui_rhand
|
inv_box.screen_loc = ui_rhand
|
||||||
@@ -98,9 +103,10 @@
|
|||||||
|
|
||||||
inv_box = new /obj/screen/inventory()
|
inv_box = new /obj/screen/inventory()
|
||||||
inv_box.name = "l_hand"
|
inv_box.name = "l_hand"
|
||||||
inv_box.set_dir(EAST)
|
|
||||||
inv_box.icon = ui_style
|
inv_box.icon = ui_style
|
||||||
inv_box.icon_state = "hand_inactive"
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
|
inv_box.icon_state = "l_hand_inactive"
|
||||||
if(mymob && mymob.hand) //This being 1 means the left hand is in use
|
if(mymob && mymob.hand) //This being 1 means the left hand is in use
|
||||||
inv_box.icon_state = "hand_active"
|
inv_box.icon_state = "hand_active"
|
||||||
inv_box.screen_loc = ui_lhand
|
inv_box.screen_loc = ui_lhand
|
||||||
@@ -111,8 +117,9 @@
|
|||||||
|
|
||||||
using = new /obj/screen/inventory()
|
using = new /obj/screen/inventory()
|
||||||
using.name = "hand"
|
using.name = "hand"
|
||||||
using.set_dir(SOUTH)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
using.icon_state = "hand1"
|
using.icon_state = "hand1"
|
||||||
using.screen_loc = ui_swaphand1
|
using.screen_loc = ui_swaphand1
|
||||||
using.layer = 19
|
using.layer = 19
|
||||||
@@ -120,8 +127,9 @@
|
|||||||
|
|
||||||
using = new /obj/screen/inventory()
|
using = new /obj/screen/inventory()
|
||||||
using.name = "hand"
|
using.name = "hand"
|
||||||
using.set_dir(SOUTH)
|
|
||||||
using.icon = ui_style
|
using.icon = ui_style
|
||||||
|
using.color = ui_color
|
||||||
|
using.alpha = ui_alpha
|
||||||
using.icon_state = "hand2"
|
using.icon_state = "hand2"
|
||||||
using.screen_loc = ui_swaphand2
|
using.screen_loc = ui_swaphand2
|
||||||
using.layer = 19
|
using.layer = 19
|
||||||
@@ -129,8 +137,9 @@
|
|||||||
|
|
||||||
inv_box = new /obj/screen/inventory()
|
inv_box = new /obj/screen/inventory()
|
||||||
inv_box.name = "mask"
|
inv_box.name = "mask"
|
||||||
inv_box.set_dir(NORTH)
|
|
||||||
inv_box.icon = ui_style
|
inv_box.icon = ui_style
|
||||||
|
inv_box.color = ui_color
|
||||||
|
inv_box.alpha = ui_alpha
|
||||||
inv_box.icon_state = "equip"
|
inv_box.icon_state = "equip"
|
||||||
inv_box.screen_loc = ui_monkey_mask
|
inv_box.screen_loc = ui_monkey_mask
|
||||||
inv_box.slot_id = slot_wear_mask
|
inv_box.slot_id = slot_wear_mask
|
||||||
@@ -139,8 +148,9 @@
|
|||||||
|
|
||||||
inv_box = new /obj/screen/inventory()
|
inv_box = new /obj/screen/inventory()
|
||||||
inv_box.name = "back"
|
inv_box.name = "back"
|
||||||
inv_box.set_dir(NORTHEAST)
|
|
||||||
inv_box.icon = ui_style
|
inv_box.icon = ui_style
|
||||||
|
inv_box.color = ui_color
|
||||||
|
inv_box.alpha = ui_alpha
|
||||||
inv_box.icon_state = "equip"
|
inv_box.icon_state = "equip"
|
||||||
inv_box.screen_loc = ui_back
|
inv_box.screen_loc = ui_back
|
||||||
inv_box.slot_id = slot_back
|
inv_box.slot_id = slot_back
|
||||||
@@ -149,54 +159,72 @@
|
|||||||
|
|
||||||
mymob.throw_icon = new /obj/screen()
|
mymob.throw_icon = new /obj/screen()
|
||||||
mymob.throw_icon.icon = ui_style
|
mymob.throw_icon.icon = ui_style
|
||||||
|
mymob.throw_icon.color = ui_color
|
||||||
|
mymob.throw_icon.alpha = ui_alpha
|
||||||
mymob.throw_icon.icon_state = "act_throw_off"
|
mymob.throw_icon.icon_state = "act_throw_off"
|
||||||
mymob.throw_icon.name = "throw"
|
mymob.throw_icon.name = "throw"
|
||||||
mymob.throw_icon.screen_loc = ui_drop_throw
|
mymob.throw_icon.screen_loc = ui_drop_throw
|
||||||
|
|
||||||
mymob.oxygen = new /obj/screen()
|
mymob.oxygen = new /obj/screen()
|
||||||
mymob.oxygen.icon = ui_style
|
mymob.oxygen.icon = ui_style
|
||||||
|
mymob.oxygen.color = ui_color
|
||||||
|
mymob.oxygen.alpha = ui_alpha
|
||||||
mymob.oxygen.icon_state = "oxy0"
|
mymob.oxygen.icon_state = "oxy0"
|
||||||
mymob.oxygen.name = "oxygen"
|
mymob.oxygen.name = "oxygen"
|
||||||
mymob.oxygen.screen_loc = ui_oxygen
|
mymob.oxygen.screen_loc = ui_oxygen
|
||||||
|
|
||||||
mymob.pressure = new /obj/screen()
|
mymob.pressure = new /obj/screen()
|
||||||
mymob.pressure.icon = ui_style
|
mymob.pressure.icon = ui_style
|
||||||
|
mymob.pressure.color = ui_color
|
||||||
|
mymob.pressure.alpha = ui_alpha
|
||||||
mymob.pressure.icon_state = "pressure0"
|
mymob.pressure.icon_state = "pressure0"
|
||||||
mymob.pressure.name = "pressure"
|
mymob.pressure.name = "pressure"
|
||||||
mymob.pressure.screen_loc = ui_pressure
|
mymob.pressure.screen_loc = ui_pressure
|
||||||
|
|
||||||
mymob.toxin = new /obj/screen()
|
mymob.toxin = new /obj/screen()
|
||||||
mymob.toxin.icon = ui_style
|
mymob.toxin.icon = ui_style
|
||||||
|
mymob.toxin.color = ui_color
|
||||||
|
mymob.toxin.alpha = ui_alpha
|
||||||
mymob.toxin.icon_state = "tox0"
|
mymob.toxin.icon_state = "tox0"
|
||||||
mymob.toxin.name = "toxin"
|
mymob.toxin.name = "toxin"
|
||||||
mymob.toxin.screen_loc = ui_toxin
|
mymob.toxin.screen_loc = ui_toxin
|
||||||
|
|
||||||
mymob.internals = new /obj/screen()
|
mymob.internals = new /obj/screen()
|
||||||
mymob.internals.icon = ui_style
|
mymob.internals.icon = ui_style
|
||||||
|
mymob.internals.color = ui_color
|
||||||
|
mymob.internals.alpha = ui_alpha
|
||||||
mymob.internals.icon_state = "internal0"
|
mymob.internals.icon_state = "internal0"
|
||||||
mymob.internals.name = "internal"
|
mymob.internals.name = "internal"
|
||||||
mymob.internals.screen_loc = ui_internal
|
mymob.internals.screen_loc = ui_internal
|
||||||
|
|
||||||
mymob.fire = new /obj/screen()
|
mymob.fire = new /obj/screen()
|
||||||
mymob.fire.icon = ui_style
|
mymob.fire.icon = ui_style
|
||||||
|
mymob.fire.color = ui_color
|
||||||
|
mymob.fire.alpha = ui_alpha
|
||||||
mymob.fire.icon_state = "fire0"
|
mymob.fire.icon_state = "fire0"
|
||||||
mymob.fire.name = "fire"
|
mymob.fire.name = "fire"
|
||||||
mymob.fire.screen_loc = ui_fire
|
mymob.fire.screen_loc = ui_fire
|
||||||
|
|
||||||
mymob.bodytemp = new /obj/screen()
|
mymob.bodytemp = new /obj/screen()
|
||||||
mymob.bodytemp.icon = ui_style
|
mymob.bodytemp.icon = ui_style
|
||||||
|
mymob.bodytemp.color = ui_color
|
||||||
|
mymob.bodytemp.alpha = ui_alpha
|
||||||
mymob.bodytemp.icon_state = "temp1"
|
mymob.bodytemp.icon_state = "temp1"
|
||||||
mymob.bodytemp.name = "body temperature"
|
mymob.bodytemp.name = "body temperature"
|
||||||
mymob.bodytemp.screen_loc = ui_temp
|
mymob.bodytemp.screen_loc = ui_temp
|
||||||
|
|
||||||
mymob.healths = new /obj/screen()
|
mymob.healths = new /obj/screen()
|
||||||
mymob.healths.icon = ui_style
|
mymob.healths.icon = ui_style
|
||||||
|
mymob.healths.color = ui_color
|
||||||
|
mymob.healths.alpha = ui_alpha
|
||||||
mymob.healths.icon_state = "health0"
|
mymob.healths.icon_state = "health0"
|
||||||
mymob.healths.name = "health"
|
mymob.healths.name = "health"
|
||||||
mymob.healths.screen_loc = ui_health
|
mymob.healths.screen_loc = ui_health
|
||||||
|
|
||||||
mymob.pullin = new /obj/screen()
|
mymob.pullin = new /obj/screen()
|
||||||
mymob.pullin.icon = ui_style
|
mymob.pullin.icon = ui_style
|
||||||
|
mymob.pullin.color = ui_color
|
||||||
|
mymob.pullin.alpha = ui_alpha
|
||||||
mymob.pullin.icon_state = "pull0"
|
mymob.pullin.icon_state = "pull0"
|
||||||
mymob.pullin.name = "pull"
|
mymob.pullin.name = "pull"
|
||||||
mymob.pullin.screen_loc = ui_pull_resist
|
mymob.pullin.screen_loc = ui_pull_resist
|
||||||
@@ -217,6 +245,8 @@
|
|||||||
|
|
||||||
mymob.zone_sel = new /obj/screen/zone_sel()
|
mymob.zone_sel = new /obj/screen/zone_sel()
|
||||||
mymob.zone_sel.icon = ui_style
|
mymob.zone_sel.icon = ui_style
|
||||||
|
mymob.zone_sel.color = ui_color
|
||||||
|
mymob.zone_sel.alpha = ui_alpha
|
||||||
mymob.zone_sel.overlays.Cut()
|
mymob.zone_sel.overlays.Cut()
|
||||||
mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]")
|
mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]")
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ var/obj/screen/robot_inventory
|
|||||||
using.name = "act_intent"
|
using.name = "act_intent"
|
||||||
using.set_dir(SOUTHWEST)
|
using.set_dir(SOUTHWEST)
|
||||||
using.icon = 'icons/mob/screen1_robot.dmi'
|
using.icon = 'icons/mob/screen1_robot.dmi'
|
||||||
using.icon_state = (mymob.a_intent == I_HURT ? I_HURT : mymob.a_intent)
|
using.icon_state = mymob.a_intent
|
||||||
using.screen_loc = ui_acti
|
using.screen_loc = ui_acti
|
||||||
using.layer = 20
|
using.layer = 20
|
||||||
src.adding += using
|
src.adding += using
|
||||||
|
|||||||
@@ -372,7 +372,7 @@
|
|||||||
usr.hud_used.action_intent.icon_state = "intent_help"
|
usr.hud_used.action_intent.icon_state = "intent_help"
|
||||||
if(I_HURT)
|
if(I_HURT)
|
||||||
usr.a_intent = I_HURT
|
usr.a_intent = I_HURT
|
||||||
usr.hud_used.action_intent.icon_state = "intent_hurt"
|
usr.hud_used.action_intent.icon_state = "intent_harm"
|
||||||
if(I_GRAB)
|
if(I_GRAB)
|
||||||
usr.a_intent = I_GRAB
|
usr.a_intent = I_GRAB
|
||||||
usr.hud_used.action_intent.icon_state = "intent_grab"
|
usr.hud_used.action_intent.icon_state = "intent_grab"
|
||||||
|
|||||||
@@ -97,20 +97,21 @@ On the map:
|
|||||||
1455 for AI access
|
1455 for AI access
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var/const/BOT_FREQ = 1447
|
||||||
var/const/COMM_FREQ = 1353
|
var/const/COMM_FREQ = 1353
|
||||||
var/const/SYND_FREQ = 1213
|
|
||||||
var/const/ERT_FREQ = 1345
|
var/const/ERT_FREQ = 1345
|
||||||
|
var/const/AI_FREQ = 1343
|
||||||
var/const/DTH_FREQ = 1341
|
var/const/DTH_FREQ = 1341
|
||||||
var/const/AI_FREQ = 1447
|
var/const/SYND_FREQ = 1213
|
||||||
|
|
||||||
// department channels
|
// department channels
|
||||||
var/const/PUB_FREQ = 1459
|
var/const/PUB_FREQ = 1459
|
||||||
var/const/SEC_FREQ = 1359
|
var/const/SEC_FREQ = 1359
|
||||||
var/const/ENG_FREQ = 1357
|
var/const/ENG_FREQ = 1357
|
||||||
var/const/SCI_FREQ = 1351
|
|
||||||
var/const/MED_FREQ = 1355
|
var/const/MED_FREQ = 1355
|
||||||
var/const/SUP_FREQ = 1347
|
var/const/SCI_FREQ = 1351
|
||||||
var/const/SRV_FREQ = 1349
|
var/const/SRV_FREQ = 1349
|
||||||
|
var/const/SUP_FREQ = 1347
|
||||||
|
|
||||||
var/list/radiochannels = list(
|
var/list/radiochannels = list(
|
||||||
"Common" = PUB_FREQ,
|
"Common" = PUB_FREQ,
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ var/global/datum/shuttle_controller/shuttle_controller
|
|||||||
|
|
||||||
//Skipjack.
|
//Skipjack.
|
||||||
var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle()
|
var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle()
|
||||||
VS.origin = locate(/area/shuttle/skipjack/station)
|
VS.origin = locate(/area/skipjack_station/start)
|
||||||
|
|
||||||
VS.destinations = list(
|
VS.destinations = list(
|
||||||
"Fore Starboard Solars" = locate(/area/skipjack_station/northeast_solars),
|
"Fore Starboard Solars" = locate(/area/skipjack_station/northeast_solars),
|
||||||
|
|||||||
@@ -143,7 +143,11 @@
|
|||||||
|
|
||||||
if(href_list["add_antagonist"])
|
if(href_list["add_antagonist"])
|
||||||
var/datum/antagonist/antag = all_antag_types[href_list["add_antagonist"]]
|
var/datum/antagonist/antag = all_antag_types[href_list["add_antagonist"]]
|
||||||
if(antag) antag.add_antagonist(src, 1, 1, 0, 1, 1) // Ignore equipment and role type for this.
|
if(antag)
|
||||||
|
if(antag.add_antagonist(src, 1, 1, 0, 1, 1)) // Ignore equipment and role type for this.
|
||||||
|
log_admin("[key_name_admin(usr)] made [key_name(src)] into a [antag.role_text].")
|
||||||
|
else
|
||||||
|
usr << "<span class='warning'>[src] could not be made into a [antag.role_text]!</span>"
|
||||||
|
|
||||||
else if(href_list["remove_antagonist"])
|
else if(href_list["remove_antagonist"])
|
||||||
var/datum/antagonist/antag = all_antag_types[href_list["remove_antagonist"]]
|
var/datum/antagonist/antag = all_antag_types[href_list["remove_antagonist"]]
|
||||||
|
|||||||
@@ -27,8 +27,10 @@
|
|||||||
|
|
||||||
/obj/effect/beam
|
/obj/effect/beam
|
||||||
name = "beam"
|
name = "beam"
|
||||||
|
density = 0
|
||||||
unacidable = 1//Just to be sure.
|
unacidable = 1//Just to be sure.
|
||||||
var/def_zone
|
var/def_zone
|
||||||
|
flags = PROXMOVE
|
||||||
pass_flags = PASSTABLE
|
pass_flags = PASSTABLE
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -599,4 +599,4 @@
|
|||||||
desc = "Instant research tool. For testing purposes only."
|
desc = "Instant research tool. For testing purposes only."
|
||||||
icon = 'icons/obj/stock_parts.dmi'
|
icon = 'icons/obj/stock_parts.dmi'
|
||||||
icon_state = "smes_coil"
|
icon_state = "smes_coil"
|
||||||
origin_tech = list(TECH_MATERIAL = 19, TECH_ENGINERING = 19, TECH_PHORON = 19, TECH_POWER = 19, TECH_BLUESPACE = 19, TECH_BIO = 19, TECH_COMBAT = 19, TECH_MAGNET = 19, TECH_DATA = 19, TECH_ILLEGAL = 19, TECH_ARCANE = 19)
|
origin_tech = list(TECH_MATERIAL = 19, TECH_ENGINEERING = 19, TECH_PHORON = 19, TECH_POWER = 19, TECH_BLUESPACE = 19, TECH_BIO = 19, TECH_COMBAT = 19, TECH_MAGNET = 19, TECH_DATA = 19, TECH_ILLEGAL = 19, TECH_ARCANE = 19)
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ mob/proc/handle_regular_hud_updates() //Used in the life.dm of mobs that can use
|
|||||||
mob/proc/in_view(var/turf/T)
|
mob/proc/in_view(var/turf/T)
|
||||||
return view(T)
|
return view(T)
|
||||||
|
|
||||||
/mob/aiEye/in_view(var/turf/T)
|
/mob/eye/in_view(var/turf/T)
|
||||||
var/list/viewed = new
|
var/list/viewed = new
|
||||||
for(var/mob/living/carbon/human/H in mob_list)
|
for(var/mob/living/carbon/human/H in mob_list)
|
||||||
if(get_dist(H, T) <= 7)
|
if(get_dist(H, T) <= 7)
|
||||||
|
|||||||
@@ -59,20 +59,23 @@
|
|||||||
|
|
||||||
/datum/antagonist/proc/get_candidates(var/ghosts_only)
|
/datum/antagonist/proc/get_candidates(var/ghosts_only)
|
||||||
candidates = list() // Clear.
|
candidates = list() // Clear.
|
||||||
candidates = ticker.mode.get_players_for_role(role_type, id)
|
|
||||||
// Prune restricted status. Broke it up for readability.
|
// Prune restricted status. Broke it up for readability.
|
||||||
// Note that this is done before jobs are handed out.
|
// Note that this is done before jobs are handed out.
|
||||||
for(var/datum/mind/player in candidates)
|
for(var/datum/mind/player in ticker.mode.get_players_for_role(role_type, id))
|
||||||
if(ghosts_only && !istype(player.current, /mob/dead))
|
if(ghosts_only && !istype(player.current, /mob/dead))
|
||||||
candidates -= player
|
log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role!")
|
||||||
else if(player.special_role)
|
else if(player.special_role)
|
||||||
candidates -= player
|
log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])!")
|
||||||
else if (player in pending_antagonists)
|
else if (player in pending_antagonists)
|
||||||
candidates -= player
|
log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role!")
|
||||||
else if(!can_become_antag(player))
|
else if(!can_become_antag(player))
|
||||||
candidates -= player
|
log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role!")
|
||||||
else if(player_is_antag(player))
|
else if(player_is_antag(player))
|
||||||
candidates -= player
|
log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist!")
|
||||||
|
else
|
||||||
|
candidates += player
|
||||||
|
|
||||||
return candidates
|
return candidates
|
||||||
|
|
||||||
/datum/antagonist/proc/attempt_random_spawn()
|
/datum/antagonist/proc/attempt_random_spawn()
|
||||||
@@ -108,6 +111,7 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
//Grab candidates randomly until we have enough.
|
//Grab candidates randomly until we have enough.
|
||||||
|
candidates = shuffle(candidates)
|
||||||
while(candidates.len && pending_antagonists.len < cur_max)
|
while(candidates.len && pending_antagonists.len < cur_max)
|
||||||
var/datum/mind/player = pick(candidates)
|
var/datum/mind/player = pick(candidates)
|
||||||
candidates -= player
|
candidates -= player
|
||||||
@@ -118,6 +122,7 @@
|
|||||||
/datum/antagonist/proc/draft_antagonist(var/datum/mind/player)
|
/datum/antagonist/proc/draft_antagonist(var/datum/mind/player)
|
||||||
//Check if the player can join in this antag role, or if the player has already been given an antag role.
|
//Check if the player can join in this antag role, or if the player has already been given an antag role.
|
||||||
if(!can_become_antag(player) || player.special_role)
|
if(!can_become_antag(player) || player.special_role)
|
||||||
|
log_debug("[player.key] was selected for [role_text] by lottery, but is not allowed to be that role.")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
pending_antagonists |= player
|
pending_antagonists |= player
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
code_owner.store_memory("<B>Nuclear Bomb Code</B>: [code]", 0, 0)
|
code_owner.store_memory("<B>Nuclear Bomb Code</B>: [code]", 0, 0)
|
||||||
code_owner.current << "The nuclear authorization code is: <B>[code]</B>"
|
code_owner.current << "The nuclear authorization code is: <B>[code]</B>"
|
||||||
else
|
else
|
||||||
world << "<span class='danger'>Could not spawn nuclear bomb. Contact a developer.</span>"
|
message_admins("<span class='danger'>Could not spawn nuclear bomb. Contact a developer.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
spawned_nuke = code
|
spawned_nuke = code
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
if(player.current && jobban_isbanned(player.current, bantype))
|
if(player.current && jobban_isbanned(player.current, bantype))
|
||||||
return 0
|
return 0
|
||||||
if(!ignore_role)
|
if(!ignore_role)
|
||||||
if(player.assigned_role in protected_jobs)
|
if(player.assigned_role in restricted_jobs)
|
||||||
return 0
|
return 0
|
||||||
if(config.protect_roles_from_antagonist && (player.assigned_role in restricted_jobs))
|
if(config.protect_roles_from_antagonist && (player.assigned_role in protected_jobs))
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ var/datum/antagonist/raider/raiders
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
for(var/datum/mind/player in current_antagonists)
|
for(var/datum/mind/player in current_antagonists)
|
||||||
if(!player.current || get_area(player.current) != locate(/area/shuttle/skipjack/station))
|
if(!player.current || get_area(player.current) != locate(/area/skipjack_station/start))
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -135,10 +135,10 @@ datum/antagonist/revolutionary/finalize(var/datum/mind/target)
|
|||||||
world << text
|
world << text
|
||||||
|
|
||||||
// This is a total redefine because headrevs are greeted differently to subrevs.
|
// This is a total redefine because headrevs are greeted differently to subrevs.
|
||||||
/datum/antagonist/revolutionary/add_antagonist(var/datum/mind/player)
|
/datum/antagonist/revolutionary/add_antagonist(var/datum/mind/player, var/ignore_role)
|
||||||
if((player in current_antagonists) || (player in head_revolutionaries))
|
if((player in current_antagonists) || (player in head_revolutionaries))
|
||||||
return 0
|
return 0
|
||||||
if(!can_become_antag(player))
|
if(!can_become_antag(player, ignore_role))
|
||||||
return 0
|
return 0
|
||||||
current_antagonists |= player
|
current_antagonists |= player
|
||||||
player.current << "<span class='danger'><font size=3>You are a Revolutionary!</font></span>"
|
player.current << "<span class='danger'><font size=3>You are a Revolutionary!</font></span>"
|
||||||
@@ -168,11 +168,6 @@ datum/antagonist/revolutionary/finalize(var/datum/mind/target)
|
|||||||
if(show_message)
|
if(show_message)
|
||||||
player.current.visible_message("[player.current] looks like they just remembered their real allegiance!")
|
player.current.visible_message("[player.current] looks like they just remembered their real allegiance!")
|
||||||
|
|
||||||
/datum/antagonist/revolutionary/can_become_antag(var/datum/mind/player)
|
|
||||||
return ..() && istype(player) && \
|
|
||||||
istype(player.current, /mob/living/carbon/human) && \
|
|
||||||
!(player.assigned_role in command_positions)
|
|
||||||
|
|
||||||
// Used by RP-rev.
|
// Used by RP-rev.
|
||||||
/mob/living/carbon/human/proc/convert_to_rev(mob/M as mob in oview(src))
|
/mob/living/carbon/human/proc/convert_to_rev(mob/M as mob in oview(src))
|
||||||
set name = "Convert Bourgeoise"
|
set name = "Convert Bourgeoise"
|
||||||
|
|||||||
@@ -319,11 +319,6 @@ area/space/atmosalert()
|
|||||||
/area/shuttle/research/outpost
|
/area/shuttle/research/outpost
|
||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
|
|
||||||
/area/shuttle/skipjack/station
|
|
||||||
name = "\improper Skipjack"
|
|
||||||
icon_state = "yellow"
|
|
||||||
requires_power = 0
|
|
||||||
|
|
||||||
/area/airtunnel1/ // referenced in airtunnel.dm:759
|
/area/airtunnel1/ // referenced in airtunnel.dm:759
|
||||||
|
|
||||||
/area/dummy/ // Referenced in engine.dm:261
|
/area/dummy/ // Referenced in engine.dm:261
|
||||||
@@ -516,8 +511,16 @@ area/space/atmosalert()
|
|||||||
requires_power = 0
|
requires_power = 0
|
||||||
lighting_use_dynamic = 0
|
lighting_use_dynamic = 0
|
||||||
|
|
||||||
/area/skipjack_station/transit
|
/area/skipjack_station
|
||||||
|
name = "\improper Skipjack"
|
||||||
|
icon_state = "yellow"
|
||||||
|
requires_power = 0
|
||||||
|
|
||||||
|
/area/skipjack_station/start
|
||||||
|
name = "\improper Skipjack"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/skipjack_station/transit
|
||||||
name = "\improper hyperspace"
|
name = "\improper hyperspace"
|
||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va
|
|||||||
if(!wall)
|
if(!wall)
|
||||||
wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/effect/alien/resin)
|
wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/effect/alien/resin)
|
||||||
if(!floor)
|
if(!floor)
|
||||||
floor = pick(/turf/simulated/floor,/turf/simulated/floor/engine)
|
floor = pick(/turf/simulated/floor,/turf/simulated/floor/tiled,/turf/simulated/floor/reinforced)
|
||||||
|
|
||||||
for(var/x = 0,x<x_size,x++)
|
for(var/x = 0,x<x_size,x++)
|
||||||
for(var/y = 0,y<y_size,y++)
|
for(var/y = 0,y<y_size,y++)
|
||||||
@@ -76,9 +76,9 @@ proc/admin_spawn_room_at_pos()
|
|||||||
wall=/obj/effect/alien/resin
|
wall=/obj/effect/alien/resin
|
||||||
switch(alert("Floor type",null,"Regular floor","Reinforced floor"))
|
switch(alert("Floor type",null,"Regular floor","Reinforced floor"))
|
||||||
if("Regular floor")
|
if("Regular floor")
|
||||||
floor=/turf/simulated/floor
|
floor=/turf/simulated/floor/tiled
|
||||||
if("Reinforced floor")
|
if("Reinforced floor")
|
||||||
floor=/turf/simulated/floor/engine
|
floor=/turf/simulated/floor/reinforced
|
||||||
if(x && y && z && wall && floor && x_len && y_len)
|
if(x && y && z && wall && floor && x_len && y_len)
|
||||||
spawn_room(locate(x,y,z),x_len,y_len,wall,floor,clean)
|
spawn_room(locate(x,y,z),x_len,y_len,wall,floor,clean)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
else
|
else
|
||||||
return null
|
return null
|
||||||
|
|
||||||
//return flags that should be added to the viewer's sight var.
|
//return flags that should be added to the viewer's sight var.
|
||||||
//Otherwise return a negative number to indicate that the view should be cancelled.
|
//Otherwise return a negative number to indicate that the view should be cancelled.
|
||||||
/atom/proc/check_eye(user as mob)
|
/atom/proc/check_eye(user as mob)
|
||||||
if (istype(user, /mob/living/silicon/ai)) // WHYYYY
|
if (istype(user, /mob/living/silicon/ai)) // WHYYYY
|
||||||
@@ -66,6 +66,8 @@
|
|||||||
/atom/proc/CheckExit()
|
/atom/proc/CheckExit()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
// If you want to use this, the atom must have the PROXMOVE flag, and the moving
|
||||||
|
// atom must also have the PROXMOVE flag currently to help with lag. ~ ComicIronic
|
||||||
/atom/proc/HasProximity(atom/movable/AM as mob|obj)
|
/atom/proc/HasProximity(atom/movable/AM as mob|obj)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -213,7 +215,7 @@ its easier to just keep the beam vertical.
|
|||||||
|
|
||||||
/atom/proc/ex_act()
|
/atom/proc/ex_act()
|
||||||
return
|
return
|
||||||
|
|
||||||
/atom/proc/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
|
/atom/proc/emag_act(var/remaining_charges, var/mob/user, var/emag_source)
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Returns the lowest turf available on a given Z-level, defaults to space.
|
// Returns the lowest turf available on a given Z-level, defaults to space.
|
||||||
var/global/list/base_turf_by_z = list(
|
var/global/list/base_turf_by_z = list(
|
||||||
"5" = /turf/simulated/floor/plating/airless/asteroid // Moonbase.
|
"5" = /turf/simulated/floor/asteroid // Moonbase.
|
||||||
)
|
)
|
||||||
|
|
||||||
proc/get_base_turf(var/z)
|
proc/get_base_turf(var/z)
|
||||||
|
|||||||
@@ -127,11 +127,6 @@
|
|||||||
T.ChangeTurf(/turf/simulated/wall/cult)
|
T.ChangeTurf(/turf/simulated/wall/cult)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/structure/stool/cultify()
|
|
||||||
var/obj/structure/bed/chair/wood/wings/I = new(loc)
|
|
||||||
I.dir = dir
|
|
||||||
..()
|
|
||||||
|
|
||||||
/obj/structure/table/cultify()
|
/obj/structure/table/cultify()
|
||||||
// Make it a wood-reinforced wooden table.
|
// Make it a wood-reinforced wooden table.
|
||||||
// There are cult materials available, but it'd make the table non-deconstructable with how holotables work.
|
// There are cult materials available, but it'd make the table non-deconstructable with how holotables work.
|
||||||
|
|||||||
@@ -3,11 +3,9 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/turf/simulated/floor/cultify()
|
/turf/simulated/floor/cultify()
|
||||||
|
//todo: flooring datum cultify check
|
||||||
cultify_floor()
|
cultify_floor()
|
||||||
|
|
||||||
/turf/simulated/floor/carpet/cultify()
|
|
||||||
return
|
|
||||||
|
|
||||||
/turf/simulated/shuttle/floor/cultify()
|
/turf/simulated/shuttle/floor/cultify()
|
||||||
cultify_floor()
|
cultify_floor()
|
||||||
|
|
||||||
@@ -39,8 +37,6 @@
|
|||||||
if((icon_state != "cult")&&(icon_state != "cult-narsie"))
|
if((icon_state != "cult")&&(icon_state != "cult-narsie"))
|
||||||
name = "engraved floor"
|
name = "engraved floor"
|
||||||
icon_state = "cult"
|
icon_state = "cult"
|
||||||
turf_animation('icons/effects/effects.dmi',"cultfloor",0,0,MOB_LAYER-1)
|
|
||||||
|
|
||||||
/turf/proc/cultify_wall()
|
/turf/proc/cultify_wall()
|
||||||
ChangeTurf(/turf/unsimulated/wall/cult)
|
ChangeTurf(/turf/unsimulated/wall/cult)
|
||||||
turf_animation('icons/effects/effects.dmi',"cultwall",0,0,MOB_LAYER-1)
|
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ var/global/list/narsie_list = list()
|
|||||||
if(!(istype(T, /turf/simulated/wall/cult)||istype(T, /turf/space)))
|
if(!(istype(T, /turf/simulated/wall/cult)||istype(T, /turf/space)))
|
||||||
if(T.icon_state != "cult-narsie")
|
if(T.icon_state != "cult-narsie")
|
||||||
T.desc = "something that goes beyond your understanding went this way"
|
T.desc = "something that goes beyond your understanding went this way"
|
||||||
|
T.icon = 'icons/turf/flooring/cult.dmi'
|
||||||
T.icon_state = "cult-narsie"
|
T.icon_state = "cult-narsie"
|
||||||
T.set_light(1)
|
T.set_light(1)
|
||||||
|
|
||||||
|
|||||||
@@ -432,32 +432,26 @@ var/global/list/additional_antag_types = list()
|
|||||||
if(!antag_template)
|
if(!antag_template)
|
||||||
return candidates
|
return candidates
|
||||||
|
|
||||||
var/roletext
|
|
||||||
// Assemble a list of active players without jobbans.
|
// Assemble a list of active players without jobbans.
|
||||||
for(var/mob/new_player/player in player_list)
|
for(var/mob/new_player/player in player_list)
|
||||||
if( player.client && player.ready )
|
if( player.client && player.ready )
|
||||||
if(!(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, antag_template.bantype)))
|
players += player
|
||||||
players += player
|
|
||||||
|
|
||||||
// Shuffle the players list so that it becomes ping-independent.
|
|
||||||
players = shuffle(players)
|
|
||||||
|
|
||||||
// Get a list of all the people who want to be the antagonist for this round
|
// Get a list of all the people who want to be the antagonist for this round
|
||||||
for(var/mob/new_player/player in players)
|
for(var/mob/new_player/player in players)
|
||||||
if(!role || (player.client.prefs.be_special & role))
|
if(!role || (player.client.prefs.be_special & role))
|
||||||
log_debug("[player.key] had [roletext] enabled, so we are drafting them.")
|
log_debug("[player.key] had [antag_id] enabled, so we are drafting them.")
|
||||||
candidates += player.mind
|
candidates += player.mind
|
||||||
players -= player
|
players -= player
|
||||||
|
|
||||||
// If we don't have enough antags, draft people who voted for the round.
|
// If we don't have enough antags, draft people who voted for the round.
|
||||||
if(candidates.len < required_enemies)
|
if(candidates.len < required_enemies)
|
||||||
for(var/key in round_voters)
|
for(var/mob/new_player/player in players)
|
||||||
for(var/mob/new_player/player in players)
|
if(player.ckey in round_voters)
|
||||||
if(player.ckey == key)
|
log_debug("[player.key] voted for this round, so we are drafting them.")
|
||||||
log_debug("[player.key] voted for this round, so we are drafting them.")
|
candidates += player.mind
|
||||||
candidates += player.mind
|
players -= player
|
||||||
players -= player
|
break
|
||||||
break
|
|
||||||
|
|
||||||
return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than required_enemies
|
return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than required_enemies
|
||||||
// required_enemies if the number of people with that role set to yes is less than recomended_enemies,
|
// required_enemies if the number of people with that role set to yes is less than recomended_enemies,
|
||||||
@@ -490,12 +484,14 @@ var/global/list/additional_antag_types = list()
|
|||||||
if(antag)
|
if(antag)
|
||||||
antag_templates |= antag
|
antag_templates |= antag
|
||||||
|
|
||||||
|
/*
|
||||||
if(antag_templates && antag_templates.len)
|
if(antag_templates && antag_templates.len)
|
||||||
for(var/datum/antagonist/antag in antag_templates)
|
for(var/datum/antagonist/antag in antag_templates)
|
||||||
if(antag.flags & (ANTAG_OVERRIDE_JOB|ANTAG_RANDSPAWN))
|
if(antag.flags & (ANTAG_OVERRIDE_JOB|ANTAG_RANDSPAWN))
|
||||||
continue
|
continue
|
||||||
antag_templates -= antag
|
antag_templates -= antag
|
||||||
world << "<span class='danger'>[antag.role_text_plural] are invalid for additional roundtype antags!</span>"
|
world << "<span class='danger'>[antag.role_text_plural] are invalid for additional roundtype antags!</span>"
|
||||||
|
*/
|
||||||
|
|
||||||
newscaster_announcements = pick(newscaster_standard_feeds)
|
newscaster_announcements = pick(newscaster_standard_feeds)
|
||||||
|
|
||||||
|
|||||||
@@ -728,7 +728,7 @@ datum/objective/heist/kidnap
|
|||||||
//if (!target.current.restrained())
|
//if (!target.current.restrained())
|
||||||
// return 0 // They're loose. Close but no cigar.
|
// return 0 // They're loose. Close but no cigar.
|
||||||
|
|
||||||
var/area/shuttle/skipjack/station/A = locate()
|
var/area/skipjack_station/start/A = locate()
|
||||||
for(var/mob/living/carbon/human/M in A)
|
for(var/mob/living/carbon/human/M in A)
|
||||||
if(target.current == M)
|
if(target.current == M)
|
||||||
return 1 //They're restrained on the shuttle. Success.
|
return 1 //They're restrained on the shuttle. Success.
|
||||||
@@ -779,7 +779,7 @@ datum/objective/heist/loot
|
|||||||
|
|
||||||
var/total_amount = 0
|
var/total_amount = 0
|
||||||
|
|
||||||
for(var/obj/O in locate(/area/shuttle/skipjack/station))
|
for(var/obj/O in locate(/area/skipjack_station/start))
|
||||||
if(istype(O,target)) total_amount++
|
if(istype(O,target)) total_amount++
|
||||||
for(var/obj/I in O.contents)
|
for(var/obj/I in O.contents)
|
||||||
if(istype(I,target)) total_amount++
|
if(istype(I,target)) total_amount++
|
||||||
@@ -828,7 +828,7 @@ datum/objective/heist/salvage
|
|||||||
|
|
||||||
var/total_amount = 0
|
var/total_amount = 0
|
||||||
|
|
||||||
for(var/obj/item/O in locate(/area/shuttle/skipjack/station))
|
for(var/obj/item/O in locate(/area/skipjack_station/start))
|
||||||
|
|
||||||
var/obj/item/stack/material/S
|
var/obj/item/stack/material/S
|
||||||
if(istype(O,/obj/item/stack/material))
|
if(istype(O,/obj/item/stack/material))
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
selection_color = "#ffeef0"
|
selection_color = "#ffeef0"
|
||||||
economic_modifier = 5
|
economic_modifier = 5
|
||||||
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
|
||||||
minimal_access = list(access_medical, access_chemistry)
|
minimal_access = list(access_medical, access_medical_equip, access_chemistry)
|
||||||
alt_titles = list("Pharmacist")
|
alt_titles = list("Pharmacist")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
Beacon.invisibility = INVISIBILITY_MAXIMUM
|
Beacon.invisibility = INVISIBILITY_MAXIMUM
|
||||||
Beacon.loc = T
|
Beacon.loc = T
|
||||||
|
|
||||||
hide(T.intact)
|
hide(!T.is_plating())
|
||||||
|
|
||||||
Destroy()
|
Destroy()
|
||||||
if(Beacon)
|
if(Beacon)
|
||||||
|
|||||||
@@ -85,10 +85,8 @@
|
|||||||
if(istype(new_turf, /turf/simulated/floor))
|
if(istype(new_turf, /turf/simulated/floor))
|
||||||
var/turf/simulated/floor/T = new_turf
|
var/turf/simulated/floor/T = new_turf
|
||||||
if(!T.is_plating())
|
if(!T.is_plating())
|
||||||
if(!T.broken && !T.burnt)
|
T.make_plating(!(T.broken || T.burnt))
|
||||||
new T.floor_type(T)
|
return new_turf.is_plating()
|
||||||
T.make_plating()
|
|
||||||
return !new_turf.intact
|
|
||||||
|
|
||||||
/obj/machinery/cablelayer/proc/layCable(var/turf/new_turf,var/M_Dir)
|
/obj/machinery/cablelayer/proc/layCable(var/turf/new_turf,var/M_Dir)
|
||||||
if(!on)
|
if(!on)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
icon_state = "sleeper_0"
|
icon_state = "sleeper_0"
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 1
|
anchored = 1
|
||||||
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
|
|
||||||
var/mob/living/carbon/human/occupant = null
|
var/mob/living/carbon/human/occupant = null
|
||||||
var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
|
var/list/available_chemicals = list("inaprovaline" = "Inaprovaline", "stoxin" = "Soporific", "paracetamol" = "Paracetamol", "anti_toxin" = "Dylovene", "dexalin" = "Dexalin")
|
||||||
var/obj/item/weapon/reagent_containers/glass/beaker = null
|
var/obj/item/weapon/reagent_containers/glass/beaker = null
|
||||||
@@ -39,7 +38,7 @@
|
|||||||
toggle_filter()
|
toggle_filter()
|
||||||
|
|
||||||
/obj/machinery/sleeper/update_icon()
|
/obj/machinery/sleeper/update_icon()
|
||||||
icon_state = "sleeper_[occupant ? "1" : "0"][orient == "RIGHT" ? "-r" : ""]"
|
icon_state = "sleeper_[occupant ? "1" : "0"]"
|
||||||
|
|
||||||
/obj/machinery/sleeper/attack_hand(var/mob/user)
|
/obj/machinery/sleeper/attack_hand(var/mob/user)
|
||||||
if(..())
|
if(..())
|
||||||
@@ -153,10 +152,10 @@
|
|||||||
if(occupant)
|
if(occupant)
|
||||||
go_out()
|
go_out()
|
||||||
|
|
||||||
..(severity)
|
..(severity)
|
||||||
/obj/machinery/sleeper/proc/toggle_filter()
|
/obj/machinery/sleeper/proc/toggle_filter()
|
||||||
if(!occupant || !beaker)
|
if(!occupant || !beaker)
|
||||||
filtering = 0
|
filtering = 0
|
||||||
return
|
return
|
||||||
filtering = !filtering
|
filtering = !filtering
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,11 @@
|
|||||||
path = /obj/item/device/flashlight
|
path = /obj/item/device/flashlight
|
||||||
category = "General"
|
category = "General"
|
||||||
|
|
||||||
|
/datum/autolathe/recipe/floor_light
|
||||||
|
name = "floor light"
|
||||||
|
path = /obj/machinery/floor_light
|
||||||
|
category = "General"
|
||||||
|
|
||||||
/datum/autolathe/recipe/extinguisher
|
/datum/autolathe/recipe/extinguisher
|
||||||
name = "extinguisher"
|
name = "extinguisher"
|
||||||
path = /obj/item/weapon/extinguisher
|
path = /obj/item/weapon/extinguisher
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
brute_dam_coeff = 0.5
|
brute_dam_coeff = 0.5
|
||||||
var/atom/movable/load = null // the loaded crate (usually)
|
var/atom/movable/load = null // the loaded crate (usually)
|
||||||
var/beacon_freq = 1400
|
var/beacon_freq = 1400
|
||||||
var/control_freq = AI_FREQ
|
var/control_freq = BOT_FREQ
|
||||||
|
|
||||||
suffix = ""
|
suffix = ""
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
/obj/machinery/camera
|
/obj/machinery/camera
|
||||||
|
|
||||||
var/list/motionTargets = list()
|
var/list/motionTargets = list()
|
||||||
var/detectTime = 0
|
var/detectTime = 0
|
||||||
var/area/ai_monitored/area_motion = null
|
var/area/ai_monitored/area_motion = null
|
||||||
var/alarm_delay = 100 // Don't forget, there's another 10 seconds in queueAlarm()
|
var/alarm_delay = 100 // Don't forget, there's another 10 seconds in queueAlarm()
|
||||||
|
flags = PROXMOVE
|
||||||
|
|
||||||
/obj/machinery/camera/process()
|
/obj/machinery/camera/process()
|
||||||
// motion camera event loop
|
// motion camera event loop
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
/obj/machinery/atmospherics/unary/cryo_cell
|
/obj/machinery/atmospherics/unary/cryo_cell
|
||||||
name = "cryo cell"
|
name = "cryo cell"
|
||||||
icon = 'icons/obj/cryogenics.dmi'
|
icon = 'icons/obj/cryogenics.dmi' // map only
|
||||||
icon_state = "pod0"
|
icon_state = "pod_preview"
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 1.0
|
anchored = 1.0
|
||||||
layer = 2.8
|
layer = 2.8
|
||||||
@@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
/obj/machinery/atmospherics/unary/cryo_cell/New()
|
/obj/machinery/atmospherics/unary/cryo_cell/New()
|
||||||
..()
|
..()
|
||||||
|
icon = 'icons/obj/cryogenics_split.dmi'
|
||||||
|
update_icon()
|
||||||
initialize_directions = dir
|
initialize_directions = dir
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/cryo_cell/Destroy()
|
/obj/machinery/atmospherics/unary/cryo_cell/Destroy()
|
||||||
@@ -193,12 +195,28 @@
|
|||||||
/obj/machinery/atmospherics/unary/cryo_cell/update_icon()
|
/obj/machinery/atmospherics/unary/cryo_cell/update_icon()
|
||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
icon_state = "pod[on]"
|
icon_state = "pod[on]"
|
||||||
|
var/image/I
|
||||||
|
|
||||||
|
I = image(icon, "pod[on]_top")
|
||||||
|
I.layer = 5 // this needs to be fairly high so it displays over most things, but it needs to be under lighting (at 10)
|
||||||
|
I.pixel_z = 32
|
||||||
|
overlays += I
|
||||||
|
|
||||||
if(occupant)
|
if(occupant)
|
||||||
var/image/pickle = image(occupant.icon, occupant.icon_state)
|
var/image/pickle = image(occupant.icon, occupant.icon_state)
|
||||||
pickle.overlays = occupant.overlays
|
pickle.overlays = occupant.overlays
|
||||||
pickle.pixel_y = 20
|
pickle.pixel_z = 18
|
||||||
|
pickle.layer = 5
|
||||||
overlays += pickle
|
overlays += pickle
|
||||||
overlays += "lid[on]"
|
|
||||||
|
I = image(icon, "lid[on]")
|
||||||
|
I.layer = 5
|
||||||
|
overlays += I
|
||||||
|
|
||||||
|
I = image(icon, "lid[on]_top")
|
||||||
|
I.layer = 5
|
||||||
|
I.pixel_z = 32
|
||||||
|
overlays += I
|
||||||
|
|
||||||
/obj/machinery/atmospherics/unary/cryo_cell/proc/process_occupant()
|
/obj/machinery/atmospherics/unary/cryo_cell/proc/process_occupant()
|
||||||
if(air_contents.total_moles < 10)
|
if(air_contents.total_moles < 10)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
//Used for logging people entering cryosleep and important items they are carrying.
|
//Used for logging people entering cryosleep and important items they are carrying.
|
||||||
var/list/frozen_crew = list()
|
var/list/frozen_crew = list()
|
||||||
var/list/frozen_items = list()
|
var/list/frozen_items = list()
|
||||||
|
var/list/_admin_logs = list() // _ so it shows first in VV
|
||||||
|
|
||||||
var/storage_type = "crewmembers"
|
var/storage_type = "crewmembers"
|
||||||
var/storage_name = "Cryogenic Oversight Control"
|
var/storage_name = "Cryogenic Oversight Control"
|
||||||
@@ -146,20 +147,7 @@
|
|||||||
icon = 'icons/obj/Cryogenic2.dmi'
|
icon = 'icons/obj/Cryogenic2.dmi'
|
||||||
icon_state = "cryo_rear"
|
icon_state = "cryo_rear"
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
dir = WEST
|
||||||
var/orient_right = null //Flips the sprite.
|
|
||||||
|
|
||||||
/obj/structure/cryofeed/right
|
|
||||||
orient_right = 1
|
|
||||||
icon_state = "cryo_rear-r"
|
|
||||||
|
|
||||||
/obj/structure/cryofeed/New()
|
|
||||||
|
|
||||||
if(orient_right)
|
|
||||||
icon_state = "cryo_rear-r"
|
|
||||||
else
|
|
||||||
icon_state = "cryo_rear"
|
|
||||||
..()
|
|
||||||
|
|
||||||
//Cryopods themselves.
|
//Cryopods themselves.
|
||||||
/obj/machinery/cryopod
|
/obj/machinery/cryopod
|
||||||
@@ -169,6 +157,7 @@
|
|||||||
icon_state = "body_scanner_0"
|
icon_state = "body_scanner_0"
|
||||||
density = 1
|
density = 1
|
||||||
anchored = 1
|
anchored = 1
|
||||||
|
dir = WEST
|
||||||
|
|
||||||
var/base_icon_state = "body_scanner_0"
|
var/base_icon_state = "body_scanner_0"
|
||||||
var/occupied_icon_state = "body_scanner_1"
|
var/occupied_icon_state = "body_scanner_1"
|
||||||
@@ -179,7 +168,6 @@
|
|||||||
var/disallow_occupant_types = list()
|
var/disallow_occupant_types = list()
|
||||||
|
|
||||||
var/mob/occupant = null // Person waiting to be despawned.
|
var/mob/occupant = null // Person waiting to be despawned.
|
||||||
var/orient_right = null // Flips the sprite.
|
|
||||||
var/time_till_despawn = 18000 // 30 minutes-ish safe period before being despawned.
|
var/time_till_despawn = 18000 // 30 minutes-ish safe period before being despawned.
|
||||||
var/time_entered = 0 // Used to keep track of the safe period.
|
var/time_entered = 0 // Used to keep track of the safe period.
|
||||||
var/obj/item/device/radio/intercom/announce //
|
var/obj/item/device/radio/intercom/announce //
|
||||||
@@ -203,10 +191,6 @@
|
|||||||
/obj/item/weapon/storage/internal
|
/obj/item/weapon/storage/internal
|
||||||
)
|
)
|
||||||
|
|
||||||
/obj/machinery/cryopod/right
|
|
||||||
orient_right = 1
|
|
||||||
icon_state = "body_scanner_0-r"
|
|
||||||
|
|
||||||
/obj/machinery/cryopod/robot
|
/obj/machinery/cryopod/robot
|
||||||
name = "robotic storage unit"
|
name = "robotic storage unit"
|
||||||
desc = "A storage unit for robots."
|
desc = "A storage unit for robots."
|
||||||
@@ -220,18 +204,8 @@
|
|||||||
allow_occupant_types = list(/mob/living/silicon/robot)
|
allow_occupant_types = list(/mob/living/silicon/robot)
|
||||||
disallow_occupant_types = list(/mob/living/silicon/robot/drone)
|
disallow_occupant_types = list(/mob/living/silicon/robot/drone)
|
||||||
|
|
||||||
/obj/machinery/cryopod/robot/right
|
|
||||||
orient_right = 1
|
|
||||||
icon_state = "pod_0-r"
|
|
||||||
|
|
||||||
/obj/machinery/cryopod/New()
|
/obj/machinery/cryopod/New()
|
||||||
announce = new /obj/item/device/radio/intercom(src)
|
announce = new /obj/item/device/radio/intercom(src)
|
||||||
|
|
||||||
if(orient_right)
|
|
||||||
icon_state = "[base_icon_state]-r"
|
|
||||||
else
|
|
||||||
icon_state = base_icon_state
|
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/cryopod/Destroy()
|
/obj/machinery/cryopod/Destroy()
|
||||||
@@ -382,22 +356,22 @@
|
|||||||
if ((G.fields["name"] == occupant.real_name))
|
if ((G.fields["name"] == occupant.real_name))
|
||||||
qdel(G)
|
qdel(G)
|
||||||
|
|
||||||
if(orient_right)
|
icon_state = base_icon_state
|
||||||
icon_state = "[base_icon_state]-r"
|
|
||||||
else
|
|
||||||
icon_state = base_icon_state
|
|
||||||
|
|
||||||
//TODO: Check objectives/mode, update new targets if this mob is the target, spawn new antags?
|
//TODO: Check objectives/mode, update new targets if this mob is the target, spawn new antags?
|
||||||
|
|
||||||
//This should guarantee that ghosts don't spawn.
|
|
||||||
occupant.ckey = null
|
|
||||||
|
|
||||||
//Make an announcement and log the person entering storage.
|
//Make an announcement and log the person entering storage.
|
||||||
control_computer.frozen_crew += "[occupant.real_name], [occupant.mind.role_alt_title] - [worldtime2text()]"
|
control_computer.frozen_crew += "[occupant.real_name], [occupant.mind.role_alt_title] - [worldtime2text()]"
|
||||||
|
control_computer._admin_logs += "[key_name(occupant)] ([occupant.mind.role_alt_title]) at [worldtime2text()]"
|
||||||
|
log_and_message_admins("[key_name(occupant)] ([occupant.mind.role_alt_title]) entered cryostorage.")
|
||||||
|
|
||||||
announce.autosay("[occupant.real_name], [occupant.mind.role_alt_title], [on_store_message]", "[on_store_name]")
|
announce.autosay("[occupant.real_name], [occupant.mind.role_alt_title], [on_store_message]", "[on_store_name]")
|
||||||
visible_message("<span class='notice'>\The [initial(name)] hums and hisses as it moves [occupant.real_name] into storage.</span>", 3)
|
visible_message("<span class='notice'>\The [initial(name)] hums and hisses as it moves [occupant.real_name] into storage.</span>", 3)
|
||||||
|
|
||||||
|
//This should guarantee that ghosts don't spawn.
|
||||||
|
occupant.ckey = null
|
||||||
|
|
||||||
// Delete the mob.
|
// Delete the mob.
|
||||||
qdel(occupant)
|
qdel(occupant)
|
||||||
set_occupant(null)
|
set_occupant(null)
|
||||||
@@ -440,10 +414,7 @@
|
|||||||
M.client.perspective = EYE_PERSPECTIVE
|
M.client.perspective = EYE_PERSPECTIVE
|
||||||
M.client.eye = src
|
M.client.eye = src
|
||||||
|
|
||||||
if(orient_right)
|
icon_state = occupied_icon_state
|
||||||
icon_state = "[occupied_icon_state]-r"
|
|
||||||
else
|
|
||||||
icon_state = occupied_icon_state
|
|
||||||
|
|
||||||
M << "<span class='notice'>[on_enter_occupant_message]</span>"
|
M << "<span class='notice'>[on_enter_occupant_message]</span>"
|
||||||
M << "<span class='notice'><b>If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.</b></span>"
|
M << "<span class='notice'><b>If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.</b></span>"
|
||||||
@@ -465,10 +436,7 @@
|
|||||||
if(usr.stat != 0)
|
if(usr.stat != 0)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(orient_right)
|
icon_state = base_icon_state
|
||||||
icon_state = "[base_icon_state]-r"
|
|
||||||
else
|
|
||||||
icon_state = base_icon_state
|
|
||||||
|
|
||||||
//Eject any items that aren't meant to be in the pod.
|
//Eject any items that aren't meant to be in the pod.
|
||||||
var/list/items = src.contents
|
var/list/items = src.contents
|
||||||
@@ -518,10 +486,7 @@
|
|||||||
usr.loc = src
|
usr.loc = src
|
||||||
set_occupant(usr)
|
set_occupant(usr)
|
||||||
|
|
||||||
if(orient_right)
|
icon_state = occupied_icon_state
|
||||||
icon_state = "[occupied_icon_state]-r"
|
|
||||||
else
|
|
||||||
icon_state = occupied_icon_state
|
|
||||||
|
|
||||||
usr << "<span class='notice'>[on_enter_occupant_message]</span>"
|
usr << "<span class='notice'>[on_enter_occupant_message]</span>"
|
||||||
usr << "<span class='notice'><b>If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.</b></span>"
|
usr << "<span class='notice'><b>If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.</b></span>"
|
||||||
@@ -544,10 +509,7 @@
|
|||||||
occupant.loc = get_turf(src)
|
occupant.loc = get_turf(src)
|
||||||
set_occupant(null)
|
set_occupant(null)
|
||||||
|
|
||||||
if(orient_right)
|
icon_state = base_icon_state
|
||||||
icon_state = "[base_icon_state]-r"
|
|
||||||
else
|
|
||||||
icon_state = base_icon_state
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -1022,6 +1022,9 @@ About the new airlock wires panel:
|
|||||||
name = "[istext(assembly.glass) ? "[assembly.glass] airlock" : assembly.base_name]"
|
name = "[istext(assembly.glass) ? "[assembly.glass] airlock" : assembly.base_name]"
|
||||||
|
|
||||||
//wires
|
//wires
|
||||||
|
var/turf/T = get_turf(newloc)
|
||||||
|
if(T && (T.z in config.admin_levels))
|
||||||
|
secured_wires = 1
|
||||||
if (secured_wires)
|
if (secured_wires)
|
||||||
wires = new/datum/wires/airlock/secure(src)
|
wires = new/datum/wires/airlock/secure(src)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
anchored = 1
|
anchored = 1
|
||||||
use_power = 1
|
use_power = 1
|
||||||
idle_power_usage = 2
|
idle_power_usage = 2
|
||||||
|
flags = PROXMOVE
|
||||||
|
|
||||||
/obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored
|
/obj/machinery/flasher/portable //Portable version of the flasher. Only flashes when anchored
|
||||||
name = "portable flasher"
|
name = "portable flasher"
|
||||||
@@ -24,11 +25,6 @@
|
|||||||
base_state = "pflash"
|
base_state = "pflash"
|
||||||
density = 1
|
density = 1
|
||||||
|
|
||||||
/*
|
|
||||||
/obj/machinery/flasher/New()
|
|
||||||
sleep(4) //<--- What the fuck are you doing? D=
|
|
||||||
src.sd_SetLuminosity(2)
|
|
||||||
*/
|
|
||||||
/obj/machinery/flasher/power_change()
|
/obj/machinery/flasher/power_change()
|
||||||
..()
|
..()
|
||||||
if ( !(stat & NOPOWER) )
|
if ( !(stat & NOPOWER) )
|
||||||
|
|||||||
154
code/game/machinery/floor_light.dm
Normal file
154
code/game/machinery/floor_light.dm
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
var/list/floor_light_cache = list()
|
||||||
|
|
||||||
|
/obj/machinery/floor_light
|
||||||
|
name = "floor light"
|
||||||
|
icon = 'icons/obj/machines/floor_light.dmi'
|
||||||
|
icon_state = "base"
|
||||||
|
desc = "A backlit floor panel."
|
||||||
|
layer = TURF_LAYER+0.001
|
||||||
|
anchored = 0
|
||||||
|
use_power = 2
|
||||||
|
idle_power_usage = 2
|
||||||
|
active_power_usage = 20
|
||||||
|
power_channel = LIGHT
|
||||||
|
matter = list(DEFAULT_WALL_MATERIAL = 2500, "glass" = 2750)
|
||||||
|
|
||||||
|
var/on
|
||||||
|
var/damaged
|
||||||
|
var/default_light_range = 4
|
||||||
|
var/default_light_power = 2
|
||||||
|
var/default_light_colour = "#FFFFFF"
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/attackby(var/obj/item/W, var/mob/user)
|
||||||
|
if(istype(W, /obj/item/weapon/screwdriver))
|
||||||
|
anchored = !anchored
|
||||||
|
visible_message("<span class='notice'>\The [user] has [anchored ? "attached" : "detached"] \the [src].</span>")
|
||||||
|
else if(istype(W, /obj/item/weapon/weldingtool) && (damaged || (stat & BROKEN)))
|
||||||
|
var/obj/item/weapon/weldingtool/WT = W
|
||||||
|
if(!WT.remove_fuel(0, user))
|
||||||
|
user << "<span class='warning'>\The [src] must be on to complete this task.</span>"
|
||||||
|
return
|
||||||
|
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
|
||||||
|
if(!do_after(user, 20))
|
||||||
|
return
|
||||||
|
if(!src || !WT.isOn())
|
||||||
|
return
|
||||||
|
visible_message("<span class='notice'>\The [user] has repaired \the [src].</span>")
|
||||||
|
stat &= ~BROKEN
|
||||||
|
damaged = null
|
||||||
|
update_brightness()
|
||||||
|
else if(W.force && user.a_intent == "hurt")
|
||||||
|
attack_hand(user)
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/attack_hand(var/mob/user)
|
||||||
|
|
||||||
|
if(user.a_intent == "hurt" && !user.small)
|
||||||
|
if(!isnull(damaged) && !(stat & BROKEN))
|
||||||
|
visible_message("<span class='danger'>\The [user] smashes \the [src]!</span>")
|
||||||
|
playsound(src, "shatter", 70, 1)
|
||||||
|
stat |= BROKEN
|
||||||
|
else
|
||||||
|
visible_message("<span class='danger'>\The [user] attacks \the [src]!</span>")
|
||||||
|
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
|
||||||
|
if(isnull(damaged)) damaged = 0
|
||||||
|
update_brightness()
|
||||||
|
return
|
||||||
|
else
|
||||||
|
|
||||||
|
if(!anchored)
|
||||||
|
user << "<span class='warning'>\The [src] must be screwed down first.</span>"
|
||||||
|
return
|
||||||
|
|
||||||
|
if(stat & BROKEN)
|
||||||
|
user << "<span class='warning'>\The [src] is too damaged to be functional.</span>"
|
||||||
|
return
|
||||||
|
|
||||||
|
if(stat & NOPOWER)
|
||||||
|
user << "<span class='warning'>\The [src] is unpowered.</span>"
|
||||||
|
return
|
||||||
|
|
||||||
|
on = !on
|
||||||
|
if(on) use_power = 2
|
||||||
|
visible_message("<span class='notice'>\The [user] turns \the [src] [on ? "on" : "off"].</span>")
|
||||||
|
update_brightness()
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/process()
|
||||||
|
..()
|
||||||
|
var/need_update
|
||||||
|
if((!anchored || broken()) && on)
|
||||||
|
use_power = 0
|
||||||
|
on = 0
|
||||||
|
need_update = 1
|
||||||
|
else if(use_power && !on)
|
||||||
|
use_power = 0
|
||||||
|
need_update = 1
|
||||||
|
if(need_update)
|
||||||
|
update_brightness()
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/proc/update_brightness()
|
||||||
|
if(on && use_power == 2)
|
||||||
|
if(light_range != default_light_range || light_power != default_light_power || light_color != default_light_colour)
|
||||||
|
set_light(default_light_range, default_light_power, default_light_colour)
|
||||||
|
else
|
||||||
|
use_power = 0
|
||||||
|
if(light_range || light_power)
|
||||||
|
set_light(0)
|
||||||
|
|
||||||
|
active_power_usage = ((light_range + light_power) * 10)
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/update_icon()
|
||||||
|
overlays.Cut()
|
||||||
|
if(use_power && !broken())
|
||||||
|
if(isnull(damaged))
|
||||||
|
var/cache_key = "floorlight-[default_light_colour]"
|
||||||
|
if(!floor_light_cache[cache_key])
|
||||||
|
var/image/I = image("on")
|
||||||
|
I.color = default_light_colour
|
||||||
|
I.layer = layer+0.001
|
||||||
|
floor_light_cache[cache_key] = I
|
||||||
|
overlays |= floor_light_cache[cache_key]
|
||||||
|
else
|
||||||
|
if(damaged == 0) //Needs init.
|
||||||
|
damaged = rand(1,4)
|
||||||
|
var/cache_key = "floorlight-broken[damaged]-[default_light_colour]"
|
||||||
|
if(!floor_light_cache[cache_key])
|
||||||
|
var/image/I = image("flicker[damaged]")
|
||||||
|
I.color = default_light_colour
|
||||||
|
I.layer = layer+0.001
|
||||||
|
floor_light_cache[cache_key] = I
|
||||||
|
overlays |= floor_light_cache[cache_key]
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/proc/broken()
|
||||||
|
return (stat & (BROKEN|NOPOWER))
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/ex_act(severity)
|
||||||
|
switch(severity)
|
||||||
|
if(1)
|
||||||
|
qdel(src)
|
||||||
|
if(2)
|
||||||
|
if (prob(50))
|
||||||
|
qdel(src)
|
||||||
|
else if(prob(20))
|
||||||
|
stat |= BROKEN
|
||||||
|
else
|
||||||
|
if(isnull(damaged))
|
||||||
|
damaged = 0
|
||||||
|
if(3)
|
||||||
|
if (prob(5))
|
||||||
|
qdel(src)
|
||||||
|
else if(isnull(damaged))
|
||||||
|
damaged = 0
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/Destroy()
|
||||||
|
var/area/A = get_area(src)
|
||||||
|
if(A)
|
||||||
|
on = 0
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/machinery/floor_light/cultify()
|
||||||
|
default_light_colour = "#FF0000"
|
||||||
|
update_brightness()
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
var/list/mode = list("dismantle"=0,"laying"=0,"collect"=0)
|
var/list/mode = list("dismantle"=0,"laying"=0,"collect"=0)
|
||||||
|
|
||||||
/obj/machinery/floorlayer/New()
|
/obj/machinery/floorlayer/New()
|
||||||
T = new/obj/item/stack/tile/steel(src)
|
T = new/obj/item/stack/tile/floor(src)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/machinery/floorlayer/Move(new_turf,M_Dir)
|
/obj/machinery/floorlayer/Move(new_turf,M_Dir)
|
||||||
@@ -80,10 +80,8 @@
|
|||||||
if(istype(new_turf, /turf/simulated/floor))
|
if(istype(new_turf, /turf/simulated/floor))
|
||||||
var/turf/simulated/floor/T = new_turf
|
var/turf/simulated/floor/T = new_turf
|
||||||
if(!T.is_plating())
|
if(!T.is_plating())
|
||||||
if(!T.broken && !T.burnt)
|
T.make_plating(!(T.broken || T.burnt))
|
||||||
new T.floor_type(T)
|
return new_turf.is_plating()
|
||||||
T.make_plating()
|
|
||||||
return !new_turf.intact
|
|
||||||
|
|
||||||
/obj/machinery/floorlayer/proc/TakeNewStack()
|
/obj/machinery/floorlayer/proc/TakeNewStack()
|
||||||
for(var/obj/item/stack/tile/tile in contents)
|
for(var/obj/item/stack/tile/tile in contents)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
New()
|
New()
|
||||||
..()
|
..()
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
hide(T.intact)
|
hide(!T.is_plating())
|
||||||
center = T
|
center = T
|
||||||
|
|
||||||
spawn(10) // must wait for map loading to finish
|
spawn(10) // must wait for map loading to finish
|
||||||
|
|||||||
@@ -29,14 +29,14 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
set_codes()
|
set_codes()
|
||||||
|
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
hide(T.intact)
|
hide(!T.is_plating())
|
||||||
|
|
||||||
// add beacon to MULE bot beacon list
|
// add beacon to MULE bot beacon list
|
||||||
if(freq == 1400)
|
if(freq == 1400)
|
||||||
if(!navbeacons)
|
if(!navbeacons)
|
||||||
navbeacons = new()
|
navbeacons = new()
|
||||||
navbeacons += src
|
navbeacons += src
|
||||||
|
|
||||||
|
|
||||||
spawn(5) // must wait for map loading to finish
|
spawn(5) // must wait for map loading to finish
|
||||||
if(radio_controller)
|
if(radio_controller)
|
||||||
@@ -111,7 +111,7 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
|
|
||||||
attackby(var/obj/item/I, var/mob/user)
|
attackby(var/obj/item/I, var/mob/user)
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
if(T.intact)
|
if(!T.is_plating())
|
||||||
return // prevent intraction when T-scanner revealed
|
return // prevent intraction when T-scanner revealed
|
||||||
|
|
||||||
if(istype(I, /obj/item/weapon/screwdriver))
|
if(istype(I, /obj/item/weapon/screwdriver))
|
||||||
@@ -145,7 +145,7 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
|||||||
|
|
||||||
interact(var/mob/user, var/ai = 0)
|
interact(var/mob/user, var/ai = 0)
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
if(T.intact)
|
if(!T.is_plating())
|
||||||
return // prevent intraction when T-scanner revealed
|
return // prevent intraction when T-scanner revealed
|
||||||
|
|
||||||
if(!open && !ai) // can't alter controls if not open, unless you're an AI
|
if(!open && !ai) // can't alter controls if not open, unless you're an AI
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
sense = 0
|
sense = 0
|
||||||
colour = rgb(130,130,130)
|
colour = rgb(130,130,130)
|
||||||
|
|
||||||
if("/turf/simulated/floor/engine")
|
if("/turf/simulated/floor/reinforced")
|
||||||
colour = rgb(128,128,128)
|
colour = rgb(128,128,128)
|
||||||
|
|
||||||
if("/turf/simulated/wall")
|
if("/turf/simulated/wall")
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
colour = rgb(10,10,10)
|
colour = rgb(10,10,10)
|
||||||
sense = 0
|
sense = 0
|
||||||
|
|
||||||
if("/turf/simulated/floor", "/turf/simulated/floor/engine")
|
if("/turf/simulated/floor/tiled", "/turf/simulated/floor/reinforced")
|
||||||
var/datum/gas_mixture/environment = T.return_air()
|
var/datum/gas_mixture/environment = T.return_air()
|
||||||
var/turf_total = environment.total_moles
|
var/turf_total = environment.total_moles
|
||||||
var/t1 = turf_total / MOLES_CELLSTANDARD * 175
|
var/t1 = turf_total / MOLES_CELLSTANDARD * 175
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = pipe_dir
|
P.initialize_directions = pipe_dir
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -480,7 +480,7 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = pipe_dir
|
P.initialize_directions = pipe_dir
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -499,7 +499,7 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = pipe_dir
|
P.initialize_directions = pipe_dir
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -518,7 +518,7 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = pipe_dir
|
P.initialize_directions = pipe_dir
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -536,8 +536,6 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = pipe_dir //this var it's used to know if the pipe is bent or not
|
P.initialize_directions = pipe_dir //this var it's used to know if the pipe is bent or not
|
||||||
P.initialize_directions_he = pipe_dir
|
P.initialize_directions_he = pipe_dir
|
||||||
//var/turf/T = P.loc
|
|
||||||
//P.level = T.intact ? 2 : 1
|
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -557,7 +555,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
C.name = pipename
|
C.name = pipename
|
||||||
var/turf/T = C.loc
|
var/turf/T = C.loc
|
||||||
C.level = T.intact ? 2 : 1
|
C.level = !T.is_plating() ? 2 : 1
|
||||||
C.initialize()
|
C.initialize()
|
||||||
C.build_network()
|
C.build_network()
|
||||||
if (C.node)
|
if (C.node)
|
||||||
@@ -572,7 +570,7 @@ Buildable meters
|
|||||||
M.initialize_directions = pipe_dir
|
M.initialize_directions = pipe_dir
|
||||||
//M.New()
|
//M.New()
|
||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = T.intact ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (deleted(M))
|
if (deleted(M))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -595,7 +593,7 @@ Buildable meters
|
|||||||
M.initialize_directions = pipe_dir
|
M.initialize_directions = pipe_dir
|
||||||
//M.New()
|
//M.New()
|
||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = T.intact ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (!M)
|
if (!M)
|
||||||
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
||||||
@@ -618,7 +616,7 @@ Buildable meters
|
|||||||
M.initialize_directions = pipe_dir
|
M.initialize_directions = pipe_dir
|
||||||
//M.New()
|
//M.New()
|
||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = T.intact ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (!M)
|
if (!M)
|
||||||
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
||||||
@@ -641,7 +639,7 @@ Buildable meters
|
|||||||
M.initialize_directions = pipe_dir
|
M.initialize_directions = pipe_dir
|
||||||
//M.New()
|
//M.New()
|
||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = T.intact ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (deleted(M))
|
if (deleted(M))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -668,7 +666,7 @@ Buildable meters
|
|||||||
M.connect_types = src.connect_types
|
M.connect_types = src.connect_types
|
||||||
//M.New()
|
//M.New()
|
||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = T.intact ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (!M)
|
if (!M)
|
||||||
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
||||||
@@ -695,7 +693,7 @@ Buildable meters
|
|||||||
M.connect_types = src.connect_types
|
M.connect_types = src.connect_types
|
||||||
//M.New()
|
//M.New()
|
||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = T.intact ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (!M)
|
if (!M)
|
||||||
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
usr << "There's nothing to connect this manifold to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
||||||
@@ -719,8 +717,6 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = src.get_pdir()
|
P.initialize_directions = src.get_pdir()
|
||||||
P.initialize_directions_he = src.get_hdir()
|
P.initialize_directions_he = src.get_hdir()
|
||||||
//var/turf/T = P.loc
|
|
||||||
//P.level = T.intact ? 2 : 1
|
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext //"There's nothing to connect this pipe to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
usr << pipefailtext //"There's nothing to connect this pipe to! (with how the pipe code works, at least one end needs to be connected to something, otherwise the game deletes the segment)"
|
||||||
@@ -740,7 +736,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
V.name = pipename
|
V.name = pipename
|
||||||
var/turf/T = V.loc
|
var/turf/T = V.loc
|
||||||
V.level = T.intact ? 2 : 1
|
V.level = !T.is_plating() ? 2 : 1
|
||||||
V.initialize()
|
V.initialize()
|
||||||
V.build_network()
|
V.build_network()
|
||||||
if (V.node)
|
if (V.node)
|
||||||
@@ -755,7 +751,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
V.name = pipename
|
V.name = pipename
|
||||||
var/turf/T = V.loc
|
var/turf/T = V.loc
|
||||||
V.level = T.intact ? 2 : 1
|
V.level = !T.is_plating() ? 2 : 1
|
||||||
V.initialize()
|
V.initialize()
|
||||||
V.build_network()
|
V.build_network()
|
||||||
if (V.node1)
|
if (V.node1)
|
||||||
@@ -774,7 +770,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -791,7 +787,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -811,7 +807,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -831,7 +827,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -851,7 +847,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -871,7 +867,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -891,7 +887,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
S.name = pipename
|
S.name = pipename
|
||||||
var/turf/T = S.loc
|
var/turf/T = S.loc
|
||||||
S.level = T.intact ? 2 : 1
|
S.level = !T.is_plating() ? 2 : 1
|
||||||
S.initialize()
|
S.initialize()
|
||||||
S.build_network()
|
S.build_network()
|
||||||
if (S.node)
|
if (S.node)
|
||||||
@@ -903,7 +899,7 @@ Buildable meters
|
|||||||
P.set_dir(src.dir)
|
P.set_dir(src.dir)
|
||||||
P.initialize_directions = pipe_dir
|
P.initialize_directions = pipe_dir
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (deleted(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
@@ -923,7 +919,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
V.name = pipename
|
V.name = pipename
|
||||||
var/turf/T = V.loc
|
var/turf/T = V.loc
|
||||||
V.level = T.intact ? 2 : 1
|
V.level = !T.is_plating() ? 2 : 1
|
||||||
V.initialize()
|
V.initialize()
|
||||||
V.build_network()
|
V.build_network()
|
||||||
if (V.node1)
|
if (V.node1)
|
||||||
@@ -943,7 +939,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
V.name = pipename
|
V.name = pipename
|
||||||
var/turf/T = V.loc
|
var/turf/T = V.loc
|
||||||
V.level = T.intact ? 2 : 1
|
V.level = !T.is_plating() ? 2 : 1
|
||||||
V.initialize()
|
V.initialize()
|
||||||
V.build_network()
|
V.build_network()
|
||||||
if (V.node1)
|
if (V.node1)
|
||||||
@@ -993,7 +989,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1010,7 +1006,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1027,7 +1023,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
C.name = pipename
|
C.name = pipename
|
||||||
var/turf/T = C.loc
|
var/turf/T = C.loc
|
||||||
C.level = T.intact ? 2 : 1
|
C.level = !T.is_plating() ? 2 : 1
|
||||||
C.initialize()
|
C.initialize()
|
||||||
C.build_network()
|
C.build_network()
|
||||||
if (C.node)
|
if (C.node)
|
||||||
@@ -1041,7 +1037,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1057,7 +1053,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1073,7 +1069,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1089,7 +1085,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1105,7 +1101,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1121,7 +1117,7 @@ Buildable meters
|
|||||||
if (pipename)
|
if (pipename)
|
||||||
P.name = pipename
|
P.name = pipename
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if (P.node1)
|
if (P.node1)
|
||||||
@@ -1134,13 +1130,13 @@ Buildable meters
|
|||||||
if(PIPE_OMNI_MIXER)
|
if(PIPE_OMNI_MIXER)
|
||||||
var/obj/machinery/atmospherics/omni/mixer/P = new(loc)
|
var/obj/machinery/atmospherics/omni/mixer/P = new(loc)
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
if(PIPE_OMNI_FILTER)
|
if(PIPE_OMNI_FILTER)
|
||||||
var/obj/machinery/atmospherics/omni/filter/P = new(loc)
|
var/obj/machinery/atmospherics/omni/filter/P = new(loc)
|
||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = T.intact ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
P.build_network()
|
P.build_network()
|
||||||
|
|
||||||
|
|||||||
@@ -110,10 +110,8 @@
|
|||||||
if(istype(new_turf, /turf/simulated/floor))
|
if(istype(new_turf, /turf/simulated/floor))
|
||||||
var/turf/simulated/floor/T = new_turf
|
var/turf/simulated/floor/T = new_turf
|
||||||
if(!T.is_plating())
|
if(!T.is_plating())
|
||||||
if(!T.broken && !T.burnt)
|
T.make_plating(!(T.broken || T.burnt))
|
||||||
new T.floor_type(T)
|
return new_turf.is_plating()
|
||||||
T.make_plating()
|
|
||||||
return !new_turf.intact
|
|
||||||
|
|
||||||
/obj/machinery/pipelayer/proc/layPipe(var/turf/w_turf,var/M_Dir,var/old_dir)
|
/obj/machinery/pipelayer/proc/layPipe(var/turf/w_turf,var/M_Dir,var/old_dir)
|
||||||
if(!on || !(M_Dir in list(1, 2, 4, 8)) || M_Dir==old_dir)
|
if(!on || !(M_Dir in list(1, 2, 4, 8)) || M_Dir==old_dir)
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
id = "Receiver A"
|
id = "Receiver A"
|
||||||
network = "tcommsat"
|
network = "tcommsat"
|
||||||
autolinkers = list("receiverA") // link to relay
|
autolinkers = list("receiverA") // link to relay
|
||||||
freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ)
|
freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ)
|
||||||
|
|
||||||
//Common and other radio frequencies for people to freely use
|
//Common and other radio frequencies for people to freely use
|
||||||
New()
|
New()
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
|
|
||||||
/obj/machinery/telecomms/bus/preset_two/New()
|
/obj/machinery/telecomms/bus/preset_two/New()
|
||||||
for(var/i = 1441, i < 1489, i += 2)
|
for(var/i = 1441, i < 1489, i += 2)
|
||||||
if(i == AI_FREQ || i == PUB_FREQ)
|
if(i == PUB_FREQ)
|
||||||
continue
|
continue
|
||||||
freq_listening |= i
|
freq_listening |= i
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -912,8 +912,8 @@
|
|||||||
desc = "A kitchen and restaurant equipment vendor."
|
desc = "A kitchen and restaurant equipment vendor."
|
||||||
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
|
product_ads = "Mm, food stuffs!;Food and food accessories.;Get your plates!;You like forks?;I like forks.;Woo, utensils.;You don't really need these..."
|
||||||
icon_state = "dinnerware"
|
icon_state = "dinnerware"
|
||||||
products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/material/kitchen/utensil/fork = 6,/obj/item/weapon/material/knife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2)
|
products = list(/obj/item/weapon/tray = 8,/obj/item/weapon/material/kitchen/utensil/fork = 6, /obj/item/weapon/material/kitchen/utensil/knife = 6, /obj/item/weapon/material/kitchen/utensil/spoon = 6, /obj/item/weapon/material/knife = 3,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass = 8,/obj/item/clothing/suit/chef/classic = 2)
|
||||||
contraband = list(/obj/item/weapon/material/kitchen/utensil/spoon = 2,/obj/item/weapon/material/kitchen/utensil/knife = 2,/obj/item/weapon/material/kitchen/rollingpin = 2, /obj/item/weapon/material/knife/butch = 2)
|
contraband = list(/obj/item/weapon/material/kitchen/rollingpin = 2, /obj/item/weapon/material/knife/butch = 2)
|
||||||
|
|
||||||
/obj/machinery/vending/sovietsoda
|
/obj/machinery/vending/sovietsoda
|
||||||
name = "BODA"
|
name = "BODA"
|
||||||
|
|||||||
@@ -333,10 +333,8 @@
|
|||||||
if(istype(new_turf, /turf/simulated/floor))
|
if(istype(new_turf, /turf/simulated/floor))
|
||||||
var/turf/simulated/floor/T = new_turf
|
var/turf/simulated/floor/T = new_turf
|
||||||
if(!T.is_plating())
|
if(!T.is_plating())
|
||||||
if(!T.broken && !T.burnt)
|
T.make_plating(!(T.broken || T.burnt))
|
||||||
new T.floor_type(T)
|
return new_turf.is_plating()
|
||||||
T.make_plating()
|
|
||||||
return !new_turf.intact
|
|
||||||
|
|
||||||
proc/layCable(var/turf/new_turf)
|
proc/layCable(var/turf/new_turf)
|
||||||
if(equip_ready || !istype(new_turf) || !dismantleFloor(new_turf))
|
if(equip_ready || !istype(new_turf) || !dismantleFloor(new_turf))
|
||||||
|
|||||||
@@ -107,8 +107,8 @@
|
|||||||
for(var/obj/item/weapon/ore/ore in range(chassis,1))
|
for(var/obj/item/weapon/ore/ore in range(chassis,1))
|
||||||
if(get_dir(chassis,ore)&chassis.dir)
|
if(get_dir(chassis,ore)&chassis.dir)
|
||||||
ore.Move(ore_box)
|
ore.Move(ore_box)
|
||||||
else if(istype(target, /turf/simulated/floor/plating/airless/asteroid))
|
else if(istype(target, /turf/simulated/floor/asteroid))
|
||||||
for(var/turf/simulated/floor/plating/airless/asteroid/M in range(chassis,1))
|
for(var/turf/simulated/floor/asteroid/M in range(chassis,1))
|
||||||
if(get_dir(chassis,M)&chassis.dir)
|
if(get_dir(chassis,M)&chassis.dir)
|
||||||
M.gets_dug()
|
M.gets_dug()
|
||||||
log_message("Drilled through [target]")
|
log_message("Drilled through [target]")
|
||||||
@@ -127,7 +127,7 @@
|
|||||||
name = "diamond drill"
|
name = "diamond drill"
|
||||||
desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
|
desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
|
||||||
icon_state = "mecha_diamond_drill"
|
icon_state = "mecha_diamond_drill"
|
||||||
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"diamond"=6500)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"diamond"=6500)
|
||||||
equip_cooldown = 20
|
equip_cooldown = 20
|
||||||
force = 15
|
force = 15
|
||||||
@@ -161,8 +161,8 @@
|
|||||||
for(var/obj/item/weapon/ore/ore in range(chassis,1))
|
for(var/obj/item/weapon/ore/ore in range(chassis,1))
|
||||||
if(get_dir(chassis,ore)&chassis.dir)
|
if(get_dir(chassis,ore)&chassis.dir)
|
||||||
ore.Move(ore_box)
|
ore.Move(ore_box)
|
||||||
else if(istype(target,/turf/simulated/floor/plating/airless/asteroid))
|
else if(istype(target,/turf/simulated/floor/asteroid))
|
||||||
for(var/turf/simulated/floor/plating/airless/asteroid/M in range(target,1))
|
for(var/turf/simulated/floor/asteroid/M in range(target,1))
|
||||||
M.gets_dug()
|
M.gets_dug()
|
||||||
log_message("Drilled through [target]")
|
log_message("Drilled through [target]")
|
||||||
if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment)
|
if(locate(/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp) in chassis.equipment)
|
||||||
@@ -835,7 +835,7 @@
|
|||||||
name = "phoron generator"
|
name = "phoron generator"
|
||||||
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
|
desc = "Generates power using solid phoron as fuel. Pollutes the environment."
|
||||||
icon_state = "tesla"
|
icon_state = "tesla"
|
||||||
origin_tech = list(TECH_PHORON = 2, TECH_POWER = 2, TECH_ENGINERING = 1)
|
origin_tech = list(TECH_PHORON = 2, TECH_POWER = 2, TECH_ENGINEERING = 1)
|
||||||
equip_cooldown = 10
|
equip_cooldown = 10
|
||||||
energy_drain = 0
|
energy_drain = 0
|
||||||
range = MELEE
|
range = MELEE
|
||||||
@@ -973,7 +973,7 @@
|
|||||||
name = "\improper ExoNuclear reactor"
|
name = "\improper ExoNuclear reactor"
|
||||||
desc = "Generates power using uranium. Pollutes the environment."
|
desc = "Generates power using uranium. Pollutes the environment."
|
||||||
icon_state = "tesla"
|
icon_state = "tesla"
|
||||||
origin_tech = list(TECH_POWER = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3)
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"silver"=500,"glass"=1000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"silver"=500,"glass"=1000)
|
||||||
max_fuel = 50000
|
max_fuel = 50000
|
||||||
fuel_per_cycle_idle = 10
|
fuel_per_cycle_idle = 10
|
||||||
@@ -1069,7 +1069,7 @@
|
|||||||
name = "passenger compartment"
|
name = "passenger compartment"
|
||||||
desc = "A mountable passenger compartment for exo-suits. Rather cramped."
|
desc = "A mountable passenger compartment for exo-suits. Rather cramped."
|
||||||
icon_state = "mecha_abooster_ccw"
|
icon_state = "mecha_abooster_ccw"
|
||||||
origin_tech = list(TECH_ENGINERING = 1, TECH_BIO = 1)
|
origin_tech = list(TECH_ENGINEERING = 1, TECH_BIO = 1)
|
||||||
energy_drain = 10
|
energy_drain = 10
|
||||||
range = MELEE
|
range = MELEE
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=5000,"glass"=5000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=5000,"glass"=5000)
|
||||||
|
|||||||
@@ -1,196 +1,98 @@
|
|||||||
/turf/simulated/floor/mech_bay_recharge_floor
|
/obj/machinery/mech_recharger
|
||||||
name = "Mech Bay Recharge Station"
|
name = "mech recharger"
|
||||||
|
desc = "A mech recharger, built into the floor."
|
||||||
icon = 'icons/mecha/mech_bay.dmi'
|
icon = 'icons/mecha/mech_bay.dmi'
|
||||||
icon_state = "recharge_floor"
|
icon_state = "recharge_floor"
|
||||||
var/obj/machinery/mech_bay_recharge_port/recharge_port
|
density = 0
|
||||||
var/obj/machinery/computer/mech_bay_power_console/recharge_console
|
layer = TURF_LAYER + 0.1
|
||||||
var/obj/mecha/recharging_mecha = null
|
|
||||||
|
|
||||||
/turf/simulated/floor/mech_bay_recharge_floor/Entered(var/obj/mecha/mecha)
|
var/obj/mecha/charging = null
|
||||||
. = ..()
|
var/charge = 45
|
||||||
if(istype(mecha))
|
var/repair = 0
|
||||||
mecha.occupant_message("<b>Initializing power control devices.</b>")
|
|
||||||
init_devices()
|
|
||||||
if(recharge_console && recharge_port)
|
|
||||||
recharging_mecha = mecha
|
|
||||||
recharge_console.mecha_in(mecha)
|
|
||||||
return
|
|
||||||
else if(!recharge_console)
|
|
||||||
mecha.occupant_message("<font color='red'>Control console not found. Terminating.</font>")
|
|
||||||
else if(!recharge_port)
|
|
||||||
mecha.occupant_message("<font color='red'>Power port not found. Terminating.</font>")
|
|
||||||
return
|
|
||||||
|
|
||||||
/turf/simulated/floor/mech_bay_recharge_floor/Exited(atom)
|
/obj/machinery/mech_recharger/New()
|
||||||
. = ..()
|
|
||||||
if(atom == recharging_mecha)
|
|
||||||
recharging_mecha = null
|
|
||||||
if(recharge_console)
|
|
||||||
recharge_console.mecha_out()
|
|
||||||
return
|
|
||||||
|
|
||||||
/turf/simulated/floor/mech_bay_recharge_floor/proc/init_devices()
|
|
||||||
if(!recharge_console)
|
|
||||||
recharge_console = locate() in range(1,src)
|
|
||||||
if(!recharge_port)
|
|
||||||
recharge_port = locate() in get_step(src, WEST)
|
|
||||||
|
|
||||||
if(recharge_console)
|
|
||||||
recharge_console.recharge_floor = src
|
|
||||||
if(recharge_port)
|
|
||||||
recharge_console.recharge_port = recharge_port
|
|
||||||
if(recharge_port)
|
|
||||||
recharge_port.recharge_floor = src
|
|
||||||
if(recharge_console)
|
|
||||||
recharge_port.recharge_console = recharge_console
|
|
||||||
return
|
|
||||||
|
|
||||||
// temporary fix for broken icon until somebody gets around to make these player-buildable
|
|
||||||
/turf/simulated/floor/mech_bay_recharge_floor/attackby(obj/item/C as obj, mob/user as mob)
|
|
||||||
..()
|
..()
|
||||||
if(floor_type)
|
component_parts = list()
|
||||||
icon_state = "recharge_floor"
|
|
||||||
else
|
|
||||||
icon_state = "support_lattice"
|
|
||||||
|
|
||||||
|
component_parts += new /obj/item/weapon/circuitboard/mech_recharger(src)
|
||||||
|
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
|
||||||
|
component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
|
||||||
|
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
|
||||||
|
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||||
|
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port
|
RefreshParts()
|
||||||
name = "Mech Bay Power Port"
|
|
||||||
density = 1
|
|
||||||
anchored = 1
|
|
||||||
icon = 'icons/mecha/mech_bay.dmi'
|
|
||||||
icon_state = "recharge_port"
|
|
||||||
var/turf/simulated/floor/mech_bay_recharge_floor/recharge_floor
|
|
||||||
var/obj/machinery/computer/mech_bay_power_console/recharge_console
|
|
||||||
var/datum/global_iterator/mech_bay_recharger/pr_recharger
|
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port/New()
|
/obj/machinery/mech_recharger/Crossed(var/obj/mecha/M)
|
||||||
|
. = ..()
|
||||||
|
if(istype(M) && charging != M)
|
||||||
|
start_charging(M)
|
||||||
|
|
||||||
|
/obj/machinery/mech_recharger/Uncrossed(var/obj/mecha/M)
|
||||||
|
. = ..()
|
||||||
|
if(M == charging)
|
||||||
|
stop_charging()
|
||||||
|
|
||||||
|
/obj/machinery/mech_recharger/RefreshParts()
|
||||||
..()
|
..()
|
||||||
pr_recharger = new /datum/global_iterator/mech_bay_recharger(null,0)
|
charge = 0
|
||||||
return
|
repair = -5
|
||||||
|
for(var/obj/item/weapon/stock_parts/P in component_parts)
|
||||||
|
if(istype(P, /obj/item/weapon/stock_parts/capacitor))
|
||||||
|
charge += P.rating * 20
|
||||||
|
if(istype(P, /obj/item/weapon/stock_parts/scanning_module))
|
||||||
|
charge += P.rating * 5
|
||||||
|
repair += P.rating
|
||||||
|
if(istype(P, /obj/item/weapon/stock_parts/manipulator))
|
||||||
|
repair += P.rating * 2
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port/proc/start_charge(var/obj/mecha/recharging_mecha)
|
/obj/machinery/mech_recharger/process()
|
||||||
if(stat&(NOPOWER|BROKEN))
|
..()
|
||||||
recharging_mecha.occupant_message("<font color='red'>Power port not responding. Terminating.</font>")
|
if(!charging)
|
||||||
return 0
|
|
||||||
else
|
|
||||||
if(recharging_mecha.cell)
|
|
||||||
recharging_mecha.occupant_message("Now charging...")
|
|
||||||
pr_recharger.start(list(src,recharging_mecha))
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port/proc/stop_charge()
|
|
||||||
if(recharge_console && !recharge_console.stat)
|
|
||||||
recharge_console.icon_screen = initial(recharge_console.icon_screen)
|
|
||||||
pr_recharger.stop()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port/proc/active()
|
|
||||||
if(pr_recharger.active())
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port/power_change()
|
|
||||||
if(powered())
|
|
||||||
stat &= ~NOPOWER
|
|
||||||
else
|
|
||||||
spawn(rand(0, 15))
|
|
||||||
stat |= NOPOWER
|
|
||||||
pr_recharger.stop()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/mech_bay_recharge_port/proc/set_voltage(new_voltage)
|
|
||||||
if(new_voltage && isnum(new_voltage))
|
|
||||||
pr_recharger.max_charge = new_voltage
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
/datum/global_iterator/mech_bay_recharger
|
|
||||||
delay = 20
|
|
||||||
var/max_charge = 45
|
|
||||||
check_for_null = 0 //since port.stop_charge() must be called. The checks are made in process()
|
|
||||||
|
|
||||||
/datum/global_iterator/mech_bay_recharger/process(var/obj/machinery/mech_bay_recharge_port/port, var/obj/mecha/mecha)
|
|
||||||
if(!port)
|
|
||||||
return 0
|
|
||||||
if(mecha && mecha in port.recharge_floor)
|
|
||||||
if(!mecha.cell)
|
|
||||||
return
|
|
||||||
var/delta = min(max_charge, mecha.cell.maxcharge - mecha.cell.charge)
|
|
||||||
if(delta>0)
|
|
||||||
mecha.give_power(delta)
|
|
||||||
port.use_power(delta*150)
|
|
||||||
else
|
|
||||||
mecha.occupant_message("<font color='blue'><b>Fully charged.</b></font>")
|
|
||||||
port.stop_charge()
|
|
||||||
else
|
|
||||||
port.stop_charge()
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/computer/mech_bay_power_console
|
|
||||||
name = "Mech Bay Power Control Console"
|
|
||||||
density = 1
|
|
||||||
anchored = 1
|
|
||||||
icon_keyboard = "tech_key"
|
|
||||||
icon_screen = "recharge_comp"
|
|
||||||
light_color = "#a97faa"
|
|
||||||
circuit = /obj/item/weapon/circuitboard/mech_bay_power_console
|
|
||||||
var/autostart = 1
|
|
||||||
var/voltage = 45
|
|
||||||
var/turf/simulated/floor/mech_bay_recharge_floor/recharge_floor
|
|
||||||
var/obj/machinery/mech_bay_recharge_port/recharge_port
|
|
||||||
|
|
||||||
/obj/machinery/computer/mech_bay_power_console/proc/mecha_in(var/obj/mecha/mecha)
|
|
||||||
if(stat&(NOPOWER|BROKEN))
|
|
||||||
mecha.occupant_message("<font color='red'>Control console not responding. Terminating...</font>")
|
|
||||||
return
|
return
|
||||||
if(recharge_port && autostart)
|
if(charging.loc != loc) // Could be qdel or teleport or something
|
||||||
var/answer = recharge_port.start_charge(mecha)
|
stop_charging()
|
||||||
if(answer)
|
|
||||||
recharge_port.set_voltage(voltage)
|
|
||||||
src.icon_screen = initial(src.icon_screen)+"_on"
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/mech_bay_power_console/proc/mecha_out()
|
|
||||||
if(recharge_port)
|
|
||||||
recharge_port.stop_charge()
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/machinery/computer/mech_bay_power_console/attack_hand(mob/user as mob)
|
|
||||||
if(..())
|
|
||||||
return
|
return
|
||||||
if(!recharge_floor || !recharge_port)
|
var/done = 1
|
||||||
var/turf/simulated/floor/mech_bay_recharge_floor/F = locate() in range(1,src)
|
if(charging.cell)
|
||||||
if(F)
|
var/t = min(charge, charging.cell.maxcharge - charging.cell.charge)
|
||||||
F.init_devices()
|
if(t > 0)
|
||||||
ui_interact(user)
|
charging.give_power(t)
|
||||||
|
use_power(t * 150)
|
||||||
|
done = 0
|
||||||
|
else
|
||||||
|
charging.occupant_message("<span class='notice'>Fully charged.</span>")
|
||||||
|
if(repair && charging.health < initial(charging.health))
|
||||||
|
charging.health = min(charging.health + repair, initial(charging.health))
|
||||||
|
if(charging.health == initial(charging.health))
|
||||||
|
charging.occupant_message("<span class='notice'>Fully repaired.</span>")
|
||||||
|
|
||||||
/obj/machinery/computer/mech_bay_power_console/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
else
|
||||||
var/list/data = list()
|
done = 0
|
||||||
data["has_floor"] = recharge_floor
|
if(done)
|
||||||
data["has_port"] = recharge_port
|
stop_charging()
|
||||||
if(recharge_floor && recharge_floor.recharging_mecha && recharge_floor.recharging_mecha.cell)
|
return
|
||||||
data["has_mech"] = 1
|
|
||||||
data["mecha_name"] = recharge_floor.recharging_mecha || "None"
|
/obj/machinery/mech_recharger/attackby(var/obj/item/I, var/mob/user)
|
||||||
data["mecha_charge"] = isnull(recharge_floor.recharging_mecha) ? 0 : recharge_floor.recharging_mecha.cell.charge
|
if(default_deconstruction_screwdriver(user, I))
|
||||||
data["mecha_maxcharge"] = isnull(recharge_floor.recharging_mecha) ? 0 : recharge_floor.recharging_mecha.cell.maxcharge
|
return
|
||||||
data["mecha_charge_percentage"] = isnull(recharge_floor.recharging_mecha) ? 0 : round(recharge_floor.recharging_mecha.cell.percent())
|
if(default_deconstruction_crowbar(user, I))
|
||||||
else
|
return
|
||||||
data["has_mech"] = 0
|
if(default_part_replacement(user, I))
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
return
|
||||||
if (!ui)
|
|
||||||
// the ui does not exist, so we'll create a new() one
|
/obj/machinery/mech_recharger/proc/start_charging(var/obj/mecha/M)
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
if(stat & (NOPOWER | BROKEN))
|
||||||
ui = new(user, src, ui_key, "mech_bay_console.tmpl", "Mech Bay Control Console", 500, 325)
|
M.occupant_message("<span class='warning'>Power port not responding. Terminating.</span>")
|
||||||
// when the ui is first opened this is the data it will use
|
|
||||||
ui.set_initial_data(data)
|
return
|
||||||
// open the new ui window
|
if(M.cell)
|
||||||
ui.open()
|
M.occupant_message("<span class='notice'>Now charging...</span>")
|
||||||
// auto update every Master Controller tick
|
charging = M
|
||||||
ui.set_auto_update(1)
|
return
|
||||||
|
|
||||||
|
/obj/machinery/mech_recharger/proc/stop_charging()
|
||||||
|
if(!charging)
|
||||||
|
|
||||||
|
return
|
||||||
|
charging = null
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
name="Ripley Torso"
|
name="Ripley Torso"
|
||||||
desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
|
desc="A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
|
||||||
icon_state = "ripley_harness"
|
icon_state = "ripley_harness"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"glass"=15000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"glass"=15000)
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
name="Ripley Left Arm"
|
name="Ripley Left Arm"
|
||||||
desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
|
desc="A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
|
||||||
icon_state = "ripley_l_arm"
|
icon_state = "ripley_l_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 150
|
construction_time = 150
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
name="Ripley Right Arm"
|
name="Ripley Right Arm"
|
||||||
desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
|
desc="A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
|
||||||
icon_state = "ripley_r_arm"
|
icon_state = "ripley_r_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 150
|
construction_time = 150
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
name="Ripley Left Leg"
|
name="Ripley Left Leg"
|
||||||
desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
|
desc="A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||||
icon_state = "ripley_l_leg"
|
icon_state = "ripley_l_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 150
|
construction_time = 150
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
name="Ripley Right Leg"
|
name="Ripley Right Leg"
|
||||||
desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
|
desc="A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||||
icon_state = "ripley_r_leg"
|
icon_state = "ripley_r_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 150
|
construction_time = 150
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
name="Gygax Torso"
|
name="Gygax Torso"
|
||||||
desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
|
desc="A torso part of Gygax. Contains power unit, processing core and life support systems. Has an additional equipment slot."
|
||||||
icon_state = "gygax_harness"
|
icon_state = "gygax_harness"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 300
|
construction_time = 300
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"glass"=20000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"glass"=20000)
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
name="Gygax Head"
|
name="Gygax Head"
|
||||||
desc="A Gygax head. Houses advanced surveilance and targeting sensors."
|
desc="A Gygax head. Houses advanced surveilance and targeting sensors."
|
||||||
icon_state = "gygax_head"
|
icon_state = "gygax_head"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"glass"=10000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"glass"=10000)
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
name="Gygax Left Arm"
|
name="Gygax Left Arm"
|
||||||
desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
|
desc="A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
|
||||||
icon_state = "gygax_l_arm"
|
icon_state = "gygax_l_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
||||||
|
|
||||||
@@ -117,28 +117,28 @@
|
|||||||
name="Gygax Right Arm"
|
name="Gygax Right Arm"
|
||||||
desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
|
desc="A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
|
||||||
icon_state = "gygax_r_arm"
|
icon_state = "gygax_r_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/gygax_left_leg
|
/obj/item/mecha_parts/part/gygax_left_leg
|
||||||
name="Gygax Left Leg"
|
name="Gygax Left Leg"
|
||||||
icon_state = "gygax_l_leg"
|
icon_state = "gygax_l_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/gygax_right_leg
|
/obj/item/mecha_parts/part/gygax_right_leg
|
||||||
name="Gygax Right Leg"
|
name="Gygax Right Leg"
|
||||||
icon_state = "gygax_r_leg"
|
icon_state = "gygax_r_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/gygax_armour
|
/obj/item/mecha_parts/part/gygax_armour
|
||||||
name="Gygax Armour Plates"
|
name="Gygax Armour Plates"
|
||||||
icon_state = "gygax_armour"
|
icon_state = "gygax_armour"
|
||||||
origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINERING = 5)
|
origin_tech = list(TECH_MATERIAL = 6, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
|
||||||
construction_time = 600
|
construction_time = 600
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"diamond"=10000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"diamond"=10000)
|
||||||
|
|
||||||
@@ -156,49 +156,49 @@
|
|||||||
/obj/item/mecha_parts/part/durand_torso
|
/obj/item/mecha_parts/part/durand_torso
|
||||||
name="Durand Torso"
|
name="Durand Torso"
|
||||||
icon_state = "durand_harness"
|
icon_state = "durand_harness"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_BIO = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 300
|
construction_time = 300
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=55000,"glass"=20000,"silver"=10000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=55000,"glass"=20000,"silver"=10000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/durand_head
|
/obj/item/mecha_parts/part/durand_head
|
||||||
name="Durand Head"
|
name="Durand Head"
|
||||||
icon_state = "durand_head"
|
icon_state = "durand_head"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=25000,"glass"=10000,"silver"=3000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=25000,"glass"=10000,"silver"=3000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/durand_left_arm
|
/obj/item/mecha_parts/part/durand_left_arm
|
||||||
name="Durand Left Arm"
|
name="Durand Left Arm"
|
||||||
icon_state = "durand_l_arm"
|
icon_state = "durand_l_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"silver"=3000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"silver"=3000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/durand_right_arm
|
/obj/item/mecha_parts/part/durand_right_arm
|
||||||
name="Durand Right Arm"
|
name="Durand Right Arm"
|
||||||
icon_state = "durand_r_arm"
|
icon_state = "durand_r_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"silver"=3000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"silver"=3000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/durand_left_leg
|
/obj/item/mecha_parts/part/durand_left_leg
|
||||||
name="Durand Left Leg"
|
name="Durand Left Leg"
|
||||||
icon_state = "durand_l_leg"
|
icon_state = "durand_l_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"silver"=3000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"silver"=3000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/durand_right_leg
|
/obj/item/mecha_parts/part/durand_right_leg
|
||||||
name="Durand Right Leg"
|
name="Durand Right Leg"
|
||||||
icon_state = "durand_r_leg"
|
icon_state = "durand_r_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"silver"=3000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"silver"=3000)
|
||||||
|
|
||||||
/obj/item/mecha_parts/part/durand_armour
|
/obj/item/mecha_parts/part/durand_armour
|
||||||
name="Durand Armour Plates"
|
name="Durand Armour Plates"
|
||||||
icon_state = "durand_armour"
|
icon_state = "durand_armour"
|
||||||
origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINERING = 5)
|
origin_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4, TECH_ENGINEERING = 5)
|
||||||
construction_time = 600
|
construction_time = 600
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"uranium"=10000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"uranium"=10000)
|
||||||
|
|
||||||
@@ -307,7 +307,7 @@
|
|||||||
name="Odysseus Torso"
|
name="Odysseus Torso"
|
||||||
desc="A torso part of Odysseus. Contains power unit, processing core and life support systems."
|
desc="A torso part of Odysseus. Contains power unit, processing core and life support systems."
|
||||||
icon_state = "odysseus_torso"
|
icon_state = "odysseus_torso"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 180
|
construction_time = 180
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
|
||||||
|
|
||||||
@@ -315,7 +315,7 @@
|
|||||||
name="Odysseus Left Arm"
|
name="Odysseus Left Arm"
|
||||||
desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
|
desc="An Odysseus left arm. Data and power sockets are compatible with most exosuit tools."
|
||||||
icon_state = "odysseus_l_arm"
|
icon_state = "odysseus_l_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 120
|
construction_time = 120
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
|
||||||
|
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
name="Odysseus Right Arm"
|
name="Odysseus Right Arm"
|
||||||
desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
|
desc="An Odysseus right arm. Data and power sockets are compatible with most exosuit tools."
|
||||||
icon_state = "odysseus_r_arm"
|
icon_state = "odysseus_r_arm"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 120
|
construction_time = 120
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
|
||||||
|
|
||||||
@@ -331,7 +331,7 @@
|
|||||||
name="Odysseus Left Leg"
|
name="Odysseus Left Leg"
|
||||||
desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
|
desc="An Odysseus left leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||||
icon_state = "odysseus_l_leg"
|
icon_state = "odysseus_l_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 130
|
construction_time = 130
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
|
||||||
|
|
||||||
@@ -339,13 +339,13 @@
|
|||||||
name="Odysseus Right Leg"
|
name="Odysseus Right Leg"
|
||||||
desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
|
desc="A Odysseus right leg. Contains somewhat complex servodrives and balance maintaining systems."
|
||||||
icon_state = "odysseus_r_leg"
|
icon_state = "odysseus_r_leg"
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||||
construction_time = 130
|
construction_time = 130
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
|
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
|
||||||
|
|
||||||
/*/obj/item/mecha_parts/part/odysseus_armour
|
/*/obj/item/mecha_parts/part/odysseus_armour
|
||||||
name="Odysseus Carapace"
|
name="Odysseus Carapace"
|
||||||
icon_state = "odysseus_armour"
|
icon_state = "odysseus_armour"
|
||||||
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
|
||||||
construction_time = 200
|
construction_time = 200
|
||||||
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)*/
|
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)*/
|
||||||
|
|||||||
@@ -338,6 +338,7 @@ Alien plants should do something if theres a lot of poison
|
|||||||
|
|
||||||
var/health = 100
|
var/health = 100
|
||||||
var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive
|
var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive
|
||||||
|
flags = PROXMOVE
|
||||||
|
|
||||||
/obj/effect/alien/egg/New()
|
/obj/effect/alien/egg/New()
|
||||||
if(config.aliens_allowed)
|
if(config.aliens_allowed)
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
/obj/effect/vaultspawner
|
|
||||||
var/maxX = 6
|
|
||||||
var/maxY = 6
|
|
||||||
var/minX = 2
|
|
||||||
var/minY = 2
|
|
||||||
|
|
||||||
/obj/effect/vaultspawner/New(turf/location as turf,lX = minX,uX = maxX,lY = minY,uY = maxY,var/type = null)
|
|
||||||
if(!type)
|
|
||||||
type = pick("sandstone","rock","alien")
|
|
||||||
|
|
||||||
var/lowBoundX = location.x
|
|
||||||
var/lowBoundY = location.y
|
|
||||||
|
|
||||||
var/hiBoundX = location.x + rand(lX,uX)
|
|
||||||
var/hiBoundY = location.y + rand(lY,uY)
|
|
||||||
|
|
||||||
var/z = location.z
|
|
||||||
|
|
||||||
for(var/i = lowBoundX,i<=hiBoundX,i++)
|
|
||||||
for(var/j = lowBoundY,j<=hiBoundY,j++)
|
|
||||||
if(i == lowBoundX || i == hiBoundX || j == lowBoundY || j == hiBoundY)
|
|
||||||
new /turf/simulated/wall/vault(locate(i,j,z),type)
|
|
||||||
else
|
|
||||||
new /turf/simulated/floor/vault(locate(i,j,z),type)
|
|
||||||
|
|
||||||
qdel(src)
|
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
var/mob/living/bot/secbot/active // the active bot; if null, show bot list
|
var/mob/living/bot/secbot/active // the active bot; if null, show bot list
|
||||||
var/list/botstatus // the status signal sent by the bot
|
var/list/botstatus // the status signal sent by the bot
|
||||||
|
|
||||||
var/control_freq = AI_FREQ
|
var/control_freq = BOT_FREQ
|
||||||
|
|
||||||
// create a new QM cartridge, and register to receive bot control & beacon message
|
// create a new QM cartridge, and register to receive bot control & beacon message
|
||||||
New()
|
New()
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
var/list/beacons
|
var/list/beacons
|
||||||
|
|
||||||
var/beacon_freq = 1400
|
var/beacon_freq = 1400
|
||||||
var/control_freq = AI_FREQ
|
var/control_freq = BOT_FREQ
|
||||||
|
|
||||||
// create a new QM cartridge, and register to receive bot control & beacon message
|
// create a new QM cartridge, and register to receive bot control & beacon message
|
||||||
New()
|
New()
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
||||||
|
|
||||||
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINERING = 1)
|
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
|
||||||
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
||||||
|
|
||||||
/obj/item/device/debugger/is_used_on(obj/O, mob/user)
|
/obj/item/device/debugger/is_used_on(obj/O, mob/user)
|
||||||
|
|||||||
@@ -4,212 +4,193 @@
|
|||||||
icon_state = "labeler1"
|
icon_state = "labeler1"
|
||||||
item_state = "flight"
|
item_state = "flight"
|
||||||
|
|
||||||
var/mode_nice = "standard"
|
var/decal = "remove all decals"
|
||||||
var/mode = "floor"
|
var/paint_dir = "precise"
|
||||||
var/tile_dir_mode = 0
|
var/paint_colour = "white"
|
||||||
|
|
||||||
// mode 0 ignore direction; sets dir=0
|
var/list/decals = list(
|
||||||
// mode 1 all-direction
|
"quarter-turf" = list("path" = /obj/effect/floor_decal/corner, "precise" = 1, "coloured" = 1),
|
||||||
// mode 2 corner selecting the side CW from the selected corner
|
"hazard stripes" = list("path" = /obj/effect/floor_decal/industrial/warning),
|
||||||
// mode 3 cardinal
|
"corner, hazard" = list("path" = /obj/effect/floor_decal/industrial/warning/corner),
|
||||||
// mode 4 warningcorner and warnwhitecorner direction fix
|
"hatched marking" = list("path" = /obj/effect/floor_decal/industrial/hatch),
|
||||||
// mode 5 Opposite corner tiles where the second icon_state is "[mode]_inv"
|
"dotted outline" = list("path" = /obj/effect/floor_decal/industrial/outline, "coloured" = 1),
|
||||||
/obj/item/device/floor_painter/afterattack(atom/A, mob/user as mob, proximity)
|
"loading sign" = list("path" = /obj/effect/floor_decal/industrial/loading),
|
||||||
|
"1" = list("path" = /obj/effect/floor_decal/sign),
|
||||||
|
"2" = list("path" = /obj/effect/floor_decal/sign/two),
|
||||||
|
"A" = list("path" = /obj/effect/floor_decal/sign/a),
|
||||||
|
"B" = list("path" = /obj/effect/floor_decal/sign/b),
|
||||||
|
"C" = list("path" = /obj/effect/floor_decal/sign/c),
|
||||||
|
"D" = list("path" = /obj/effect/floor_decal/sign/d),
|
||||||
|
"Ex" = list("path" = /obj/effect/floor_decal/sign/ex),
|
||||||
|
"M" = list("path" = /obj/effect/floor_decal/sign/m),
|
||||||
|
"CMO" = list("path" = /obj/effect/floor_decal/sign/cmo),
|
||||||
|
"V" = list("path" = /obj/effect/floor_decal/sign/v),
|
||||||
|
"Psy" = list("path" = /obj/effect/floor_decal/sign/p),
|
||||||
|
"remove all decals" = list("path" = /obj/effect/floor_decal/reset)
|
||||||
|
)
|
||||||
|
var/list/paint_dirs = list(
|
||||||
|
"north" = NORTH,
|
||||||
|
"northwest" = NORTHWEST,
|
||||||
|
"west" = WEST,
|
||||||
|
"southwest" = SOUTHWEST,
|
||||||
|
"south" = SOUTH,
|
||||||
|
"southeast" = SOUTHEAST,
|
||||||
|
"east" = EAST,
|
||||||
|
"northeast" = NORTHEAST,
|
||||||
|
"precise" = 0
|
||||||
|
)
|
||||||
|
var/list/paint_colours = list(
|
||||||
|
"white" = COLOR_WHITE,
|
||||||
|
"light gray" = COLOR_SILVER,
|
||||||
|
"dark gray" = COLOR_GRAY,
|
||||||
|
"blue-grey" = "#6A97B0",
|
||||||
|
"pale blue-grey" = "#8BBBD5",
|
||||||
|
"green-grey" = "#8DAF6A",
|
||||||
|
"pale green-gray" = "#AED18B",
|
||||||
|
"red-gray" = "#AA5F61",
|
||||||
|
"pale red-gray" = "#CC9090",
|
||||||
|
"purple-gray" = "#A2819E",
|
||||||
|
"pale purple-gray" = "#BDA2BA",
|
||||||
|
"black" = COLOR_BLACK,
|
||||||
|
"red" = COLOR_RED,
|
||||||
|
"dark red" = COLOR_MAROON,
|
||||||
|
"yellow" = COLOR_YELLOW,
|
||||||
|
"dark yellow" = COLOR_OLIVE,
|
||||||
|
"green" = COLOR_LIME,
|
||||||
|
"dark green" = COLOR_GREEN,
|
||||||
|
"cyan" = COLOR_CYAN,
|
||||||
|
"teal" = COLOR_TEAL,
|
||||||
|
"blue" = COLOR_BLUE,
|
||||||
|
"dark blue" = COLOR_NAVY,
|
||||||
|
"magenta" = COLOR_PINK,
|
||||||
|
"purple" = COLOR_PURPLE,
|
||||||
|
"orange" = COLOR_ORANGE,
|
||||||
|
"dark orange" = "#B95A00",
|
||||||
|
"dark brown" = "#917448",
|
||||||
|
"brown" = "#B19664",
|
||||||
|
"pale brown" = "#CEB689"
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/item/device/floor_painter/afterattack(var/atom/A, var/mob/user, proximity, params)
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(istype(A, /turf/simulated/floor))
|
var/turf/simulated/floor/F = A
|
||||||
var/turf/simulated/floor/F = A
|
if(!istype(F))
|
||||||
|
user << "<span class='warning'>\The [src] can only be used on station flooring.</span>"
|
||||||
|
return
|
||||||
|
|
||||||
if(F.is_steel_floor()) // only tiled floors
|
if(!F.flooring || !F.flooring.can_paint || F.broken || F.burnt)
|
||||||
if(tile_dir_mode)
|
user << "<span class='warning'>\The [src] cannot paint broken or missing tiles.</span>"
|
||||||
var/D = get_dir(usr, F)
|
return
|
||||||
if(usr.loc == F)
|
|
||||||
D = usr.dir
|
|
||||||
|
|
||||||
switch(tile_dir_mode)
|
var/list/decal_data = decals[decal]
|
||||||
if(1) // All directions accepted
|
var/config_error
|
||||||
F.set_dir(D)
|
if(!islist(decal_data))
|
||||||
F.icon_state = mode
|
config_error = 1
|
||||||
if(2) // Corner mode - diagonal directions converted CW around.
|
var/painting_decal
|
||||||
switch(D)
|
if(!config_error)
|
||||||
if(NORTHEAST)
|
painting_decal = decal_data["path"]
|
||||||
D = EAST
|
if(!ispath(painting_decal))
|
||||||
if(SOUTHEAST)
|
config_error = 1
|
||||||
D = SOUTH
|
|
||||||
if(SOUTHWEST)
|
if(config_error)
|
||||||
D = WEST
|
user << "<span class='warning'>\The [src] flashes an error light. You might need to reconfigure it.</span>"
|
||||||
if(NORTHWEST)
|
return
|
||||||
D = NORTH
|
|
||||||
F.set_dir(D)
|
if(F.decals && F.decals.len > 5 && painting_decal != /obj/effect/floor_decal/reset)
|
||||||
F.icon_state = mode
|
user << "<span class='warning'>\The [F] has been painted too much; you need to clear it off.</span>"
|
||||||
if(3) // cardinal directions only. I've adjusted diagonals the same way the facing code does.
|
return
|
||||||
switch(D)
|
|
||||||
if(NORTHEAST)
|
var/painting_dir = 0
|
||||||
D = EAST
|
if(paint_dir == "precise")
|
||||||
if(SOUTHEAST)
|
if(!decal_data["precise"])
|
||||||
D = EAST
|
painting_dir = user.dir
|
||||||
if(SOUTHWEST)
|
|
||||||
D = WEST
|
|
||||||
if(NORTHWEST)
|
|
||||||
D = WEST
|
|
||||||
F.set_dir(D)
|
|
||||||
F.icon_state = mode
|
|
||||||
if(4) // floors.dmi icon_states "warningcorner" and "warnwhitecorner" are incorrect, this fixes it
|
|
||||||
var/D2
|
|
||||||
switch(D)
|
|
||||||
if(NORTHEAST)
|
|
||||||
D2 = WEST
|
|
||||||
if(SOUTHEAST)
|
|
||||||
D2 = SOUTH
|
|
||||||
if(SOUTHWEST)
|
|
||||||
D2 = NORTH
|
|
||||||
if(NORTHWEST)
|
|
||||||
D2 = EAST
|
|
||||||
F.set_dir(D2)
|
|
||||||
F.icon_state = mode
|
|
||||||
if(5)
|
|
||||||
F.set_dir(0)
|
|
||||||
if(D == NORTH || D == SOUTH || D == NORTHEAST || D == SOUTHWEST)
|
|
||||||
F.icon_state = mode
|
|
||||||
else
|
|
||||||
F.icon_state = "[mode]_inv"
|
|
||||||
else
|
|
||||||
F.set_dir(0)
|
|
||||||
F.icon_state = mode
|
|
||||||
else
|
else
|
||||||
usr << "You can't paint that!"
|
var/list/mouse_control = params2list(params)
|
||||||
|
var/mouse_x = text2num(mouse_control["icon-x"])
|
||||||
|
var/mouse_y = text2num(mouse_control["icon-y"])
|
||||||
|
if(isnum(mouse_x) && isnum(mouse_y))
|
||||||
|
if(mouse_x <= 16)
|
||||||
|
if(mouse_y <= 16)
|
||||||
|
painting_dir = WEST
|
||||||
|
else
|
||||||
|
painting_dir = NORTH
|
||||||
|
else
|
||||||
|
if(mouse_y <= 16)
|
||||||
|
painting_dir = SOUTH
|
||||||
|
else
|
||||||
|
painting_dir = EAST
|
||||||
|
else
|
||||||
|
painting_dir = user.dir
|
||||||
|
else if(paint_dirs[paint_dir])
|
||||||
|
painting_dir = paint_dirs[paint_dir]
|
||||||
|
|
||||||
|
var/painting_colour
|
||||||
|
if(paint_colour && !isnull(paint_colours[paint_colour]) && decal_data["coloured"])
|
||||||
|
painting_colour = paint_colours[paint_colour]
|
||||||
|
|
||||||
|
new painting_decal(F, painting_dir, painting_colour)
|
||||||
|
|
||||||
/obj/item/device/floor_painter/attack_self(mob/user as mob)
|
/obj/item/device/floor_painter/attack_self(mob/user as mob)
|
||||||
var/type = input("What type of floor?", "Floor painter", "solid") in list("solid", "corner", "opposite corners", "side/three corners", "special", "letters")
|
|
||||||
|
|
||||||
tile_dir_mode = 0
|
var/choice = input("Do you wish to change the decal type, paint direction, or paint colour?") as null|anything in list("Decal","Direction", "Colour")
|
||||||
|
|
||||||
switch(type)
|
if(choice == "Decal")
|
||||||
if("solid")
|
var/new_decal = input("Select a decal.") as null|anything in decals
|
||||||
tile_dir_mode = 0
|
if(new_decal && !isnull(decals[new_decal]))
|
||||||
var/design = input("Which color?", "Floor painter") in list("standard", "dark", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple", "freezer", "hydro", "showroom")
|
decal = new_decal
|
||||||
if(design == "standard")
|
user << "<span class='notice'>You set \the [src] decal to '[decal]'.</span>"
|
||||||
mode = "floor"
|
else if(choice == "Direction")
|
||||||
mode_nice = "standard"
|
var/new_dir = input("Select a direction.") as null|anything in paint_dirs
|
||||||
return
|
if(new_dir && !isnull(paint_dirs[new_dir]))
|
||||||
if(design == "white")
|
paint_dir = new_dir
|
||||||
mode = "white"
|
user << "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>"
|
||||||
mode_nice = "white"
|
else if(choice == "Colour")
|
||||||
return
|
var/new_colour = input("Select a colour.") as null|anything in paint_colours
|
||||||
if(design == "dark")
|
if(new_colour && !isnull(paint_colours[new_colour]))
|
||||||
mode = "dark"
|
paint_colour = new_colour
|
||||||
mode_nice = "dark"
|
user << "<span class='notice'>You set \the [src] colour to '[paint_colour]'.</span>"
|
||||||
return
|
|
||||||
if(design == "showroom" || design == "hydro" || design == "freezer")
|
|
||||||
mode = "[design]floor"
|
|
||||||
mode_nice = design
|
|
||||||
return
|
|
||||||
mode_nice = design
|
|
||||||
mode = "[replacetext(design, "-", "")]full"
|
|
||||||
if("corner")
|
|
||||||
var/design = input("Which design?", "Floor painter") in list("black", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple")
|
|
||||||
mode_nice = "[design] corner"
|
|
||||||
mode = "[replacetext(design, "-", "")]corner"
|
|
||||||
tile_dir_mode = 2
|
|
||||||
if("opposite corners")
|
|
||||||
var/design = input("Which design?", "Floor painter") in list("bar", "cmo", "yellowpatch", "cafeteria", "red-yellow", "red-blue", "red-green", "green-yellow", "green-blue", "blue-yellow")
|
|
||||||
mode_nice = design
|
|
||||||
if(design == "bar" || design == "cmo" || design == "yellowpatch" || design == "cafeteria")
|
|
||||||
mode = design
|
|
||||||
else
|
|
||||||
mode = "[replacetext(design, "-", "")]full"
|
|
||||||
if(design == "yellowpatch")
|
|
||||||
tile_dir_mode = 5
|
|
||||||
else
|
|
||||||
tile_dir_mode = 0
|
|
||||||
if("side/three corners")
|
|
||||||
var/design = input("Which design?", "Floor painter") in list("black", "red", "blue", "green", "yellow", "purple", "neutral", "white", "white-red", "white-blue", "white-green", "white-yellow", "white-purple", "red-yellow", "red-blue", "blue-red", "red-green", "green-yellow", "green-blue", "blue-yellow")
|
|
||||||
if(design == "white")
|
|
||||||
mode = "whitehall"
|
|
||||||
mode_nice = "white side"
|
|
||||||
else if(design == "black") // because SOMEONE made the black/grey side/corner sprite have the same name as the 'empty space' sprite :(
|
|
||||||
mode = "blackfloor"
|
|
||||||
mode_nice = design
|
|
||||||
else
|
|
||||||
mode_nice = design
|
|
||||||
mode = replacetext(design, "-", "")
|
|
||||||
tile_dir_mode = 1
|
|
||||||
if("special")
|
|
||||||
var/design = input("Which design?", "Floor painter") in list("arrival", "escape", "caution", "warning", "white-warning", "white-blue-green", "loadingarea", "delivery", "bot", "white-delivery", "white-bot")
|
|
||||||
if(design == "white-blue-green")
|
|
||||||
mode_nice = design
|
|
||||||
mode = "whitebluegreencorners"
|
|
||||||
tile_dir_mode = 2
|
|
||||||
else if(design == "delivery" || design == "bot" || design == "white-delivery" || design == "white-bot")
|
|
||||||
mode_nice = design
|
|
||||||
mode = replacetext(design, "-", "")
|
|
||||||
tile_dir_mode = 0
|
|
||||||
else if(design == "loadingarea")
|
|
||||||
mode_nice = design
|
|
||||||
mode = design
|
|
||||||
tile_dir_mode = 3
|
|
||||||
else
|
|
||||||
if(design == "white-warning")
|
|
||||||
mode_nice = design
|
|
||||||
design = "warnwhite"
|
|
||||||
var/s_corner = alert("Do you want to paint a single corner of the tile?", "Floor painter","Yes","No") == "Yes"
|
|
||||||
if(s_corner)
|
|
||||||
mode_nice = "[design] corner"
|
|
||||||
mode = "[design]corner"
|
|
||||||
if(design == "warning" || design == "white-warning") // sprites for these are weird, need to fix dirs (icons/turf/floors.dmi, "warningcorner" and "warnwhitecorner")
|
|
||||||
tile_dir_mode = 4
|
|
||||||
else
|
|
||||||
tile_dir_mode = 2
|
|
||||||
else
|
|
||||||
mode_nice = design
|
|
||||||
mode = design
|
|
||||||
tile_dir_mode = 1
|
|
||||||
if("letters")
|
|
||||||
var/which = input("Which letters/design?", "Floor painter") in list("A1", "A2", "DI", "SA", "SA (red)", "SB", "SB (red)", "SC", "SC (red)", "W (red)", "V (green)", "Psy", "Ex", "Ex (blue)", "CMO", "O (OP)", "P (OP)")
|
|
||||||
mode_nice = which
|
|
||||||
switch(which)
|
|
||||||
if("A1")
|
|
||||||
mode = "white_1"
|
|
||||||
if("A2")
|
|
||||||
mode = "white_2"
|
|
||||||
if("DI")
|
|
||||||
mode = "white_d"
|
|
||||||
if("SA")
|
|
||||||
mode = "white_a"
|
|
||||||
if("SA (red)")
|
|
||||||
mode = "whitered_a"
|
|
||||||
tile_dir_mode = 3
|
|
||||||
if("SB")
|
|
||||||
mode = "white_b"
|
|
||||||
if("SB (red)")
|
|
||||||
mode = "whitered_b"
|
|
||||||
tile_dir_mode = 3
|
|
||||||
if("SC")
|
|
||||||
mode = "white_c"
|
|
||||||
if("SC (red)")
|
|
||||||
mode = "whitered_c"
|
|
||||||
tile_dir_mode = 3
|
|
||||||
if("W (red)")
|
|
||||||
mode = "whitered_w"
|
|
||||||
tile_dir_mode = 3
|
|
||||||
if("V (green)")
|
|
||||||
mode = "whitegreen_v"
|
|
||||||
tile_dir_mode = 3
|
|
||||||
if("Psy")
|
|
||||||
mode = "white_p"
|
|
||||||
if("Ex")
|
|
||||||
mode = "white_ex"
|
|
||||||
if("Ex (blue)")
|
|
||||||
mode = "whiteblue_ex"
|
|
||||||
tile_dir_mode = 3
|
|
||||||
if("CMO") // yes this is also in "opposite corners" choices, but it's a different icon_state (!!)
|
|
||||||
mode = "white_cmo"
|
|
||||||
if("O (OP)")
|
|
||||||
mode = "white_halfo"
|
|
||||||
if("P (OP)")
|
|
||||||
mode = "white_halfp"
|
|
||||||
|
|
||||||
/obj/item/device/floor_painter/examine(mob/user)
|
/obj/item/device/floor_painter/examine(mob/user)
|
||||||
..(user)
|
..(user)
|
||||||
user << "It is in [mode_nice] mode."
|
user << "It is configured to produce the '[decal]' decal with a direction of '[paint_dir]' using [paint_colour] paint."
|
||||||
|
|
||||||
|
/obj/item/device/floor_painter/verb/choose_colour(new_colour in paint_colours)
|
||||||
|
set name = "Choose Colour"
|
||||||
|
set desc = "Choose a floor painter colour."
|
||||||
|
set category = "Object"
|
||||||
|
set src in usr
|
||||||
|
|
||||||
|
if(usr.incapacitated())
|
||||||
|
return
|
||||||
|
|
||||||
|
if(new_colour && !isnull(paint_colours[new_colour]))
|
||||||
|
paint_colour = new_colour
|
||||||
|
usr << "<span class='notice'>You set \the [src] colour to '[paint_colour]'.</span>"
|
||||||
|
|
||||||
|
/obj/item/device/floor_painter/verb/choose_decal(new_decal in decals)
|
||||||
|
set name = "Choose Decal"
|
||||||
|
set desc = "Choose a floor painter decal."
|
||||||
|
set category = "Object"
|
||||||
|
set src in usr
|
||||||
|
|
||||||
|
if(usr.incapacitated())
|
||||||
|
return
|
||||||
|
|
||||||
|
if(new_decal && !isnull(decals[new_decal]))
|
||||||
|
decal = new_decal
|
||||||
|
usr << "<span class='notice'>You set \the [src] decal to '[decal]'.</span>"
|
||||||
|
|
||||||
|
/obj/item/device/floor_painter/verb/choose_direction(new_dir in paint_dirs)
|
||||||
|
set name = "Choose Direction"
|
||||||
|
set desc = "Choose a floor painter direction."
|
||||||
|
set category = "Object"
|
||||||
|
set src in usr
|
||||||
|
|
||||||
|
if(usr.incapacitated())
|
||||||
|
return
|
||||||
|
|
||||||
|
if(new_dir && !isnull(paint_dirs[new_dir]))
|
||||||
|
paint_dir = new_dir
|
||||||
|
usr << "<span class='notice'>You set \the [src] direction to '[paint_dir]'.</span>"
|
||||||
|
|||||||
@@ -18,6 +18,6 @@
|
|||||||
|
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
|
||||||
|
|
||||||
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINERING = 1)
|
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
|
||||||
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
||||||
var/obj/machinery/clonepod/connecting //same for cryopod linkage
|
var/obj/machinery/clonepod/connecting //same for cryopod linkage
|
||||||
@@ -16,16 +16,11 @@
|
|||||||
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob, proximity)
|
/obj/item/device/pipe_painter/afterattack(atom/A, mob/user as mob, proximity)
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated) || !in_range(user, A))
|
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/tank) || istype(A,/obj/machinery/atmospherics/pipe/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated) || !in_range(user, A))
|
||||||
return
|
return
|
||||||
var/obj/machinery/atmospherics/pipe/P = A
|
var/obj/machinery/atmospherics/pipe/P = A
|
||||||
|
|
||||||
var/turf/T = P.loc
|
|
||||||
if (P.level < 2 && T.level==1 && isturf(T) && T.intact)
|
|
||||||
user << "<span class='warning'>You must remove the plating first.</span>"
|
|
||||||
return
|
|
||||||
|
|
||||||
P.change_color(pipe_colors[mode])
|
P.change_color(pipe_colors[mode])
|
||||||
|
|
||||||
/obj/item/device/pipe_painter/attack_self(mob/user as mob)
|
/obj/item/device/pipe_painter/attack_self(mob/user as mob)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
|
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
|
||||||
var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
|
var/drained_this_tick = 0 // This is unfortunately necessary to ensure we process powersinks BEFORE other machinery such as APCs.
|
||||||
|
|
||||||
var/datum/powernet/PN // Our powernet
|
var/datum/powernet/PN // Our powernet
|
||||||
var/obj/structure/cable/attached // the attached cable
|
var/obj/structure/cable/attached // the attached cable
|
||||||
|
|
||||||
/obj/item/device/powersink/Destroy()
|
/obj/item/device/powersink/Destroy()
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
if(istype(I, /obj/item/weapon/screwdriver))
|
if(istype(I, /obj/item/weapon/screwdriver))
|
||||||
if(mode == 0)
|
if(mode == 0)
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
if(isturf(T) && !T.intact)
|
if(isturf(T) && !!T.is_plating())
|
||||||
attached = locate() in T
|
attached = locate() in T
|
||||||
if(!attached)
|
if(!attached)
|
||||||
user << "No exposed cable here to attach to."
|
user << "No exposed cable here to attach to."
|
||||||
|
|||||||
@@ -67,3 +67,10 @@
|
|||||||
icon_state = "intercom-p"
|
icon_state = "intercom-p"
|
||||||
else
|
else
|
||||||
icon_state = "intercom"
|
icon_state = "intercom"
|
||||||
|
|
||||||
|
/obj/item/device/radio/intercom/locked
|
||||||
|
freerange = 1
|
||||||
|
var/locked_frequency
|
||||||
|
|
||||||
|
/obj/item/device/radio/intercom/locked/set_frequency()
|
||||||
|
..(locked_frequency)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ MASS SPECTROMETER
|
|||||||
REAGENT SCANNER
|
REAGENT SCANNER
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/healthanalyzer
|
/obj/item/device/healthanalyzer
|
||||||
name = "health analyzer"
|
name = "health analyzer"
|
||||||
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
|
||||||
@@ -200,7 +201,7 @@ REAGENT SCANNER
|
|||||||
|
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
|
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
|
||||||
|
|
||||||
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINERING = 1)
|
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
|
||||||
|
|
||||||
/obj/item/device/analyzer/atmosanalyze(var/mob/user)
|
/obj/item/device/analyzer/atmosanalyze(var/mob/user)
|
||||||
var/air = user.return_air()
|
var/air = user.return_air()
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
throw_range = 15
|
throw_range = 15
|
||||||
throw_speed = 3
|
throw_speed = 3
|
||||||
|
|
||||||
origin_tech = list(TECH_DATA = 1, TECH_ENGINERING = 1, TECH_ILLEGAL = 3)
|
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1, TECH_ILLEGAL = 3)
|
||||||
|
|
||||||
var/obj/item/device/radio/spy/radio
|
var/obj/item/device/radio/spy/radio
|
||||||
var/obj/machinery/camera/spy/camera
|
var/obj/machinery/camera/spy/camera
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
w_class = 2.0
|
w_class = 2.0
|
||||||
|
|
||||||
origin_tech = list(TECH_DATA = 1, TECH_ENGINERING = 1, TECH_ILLEGAL = 3)
|
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1, TECH_ILLEGAL = 3)
|
||||||
|
|
||||||
var/operating = 0
|
var/operating = 0
|
||||||
var/obj/item/device/radio/spy/radio
|
var/obj/item/device/radio/spy/radio
|
||||||
|
|||||||
@@ -61,10 +61,10 @@
|
|||||||
user_client.images += overlay
|
user_client.images += overlay
|
||||||
|
|
||||||
//Remove stale overlays
|
//Remove stale overlays
|
||||||
for(var/obj/O in update_remove)
|
for(var/obj/O in update_remove)
|
||||||
user_client.images -= active_scanned[O]
|
user_client.images -= active_scanned[O]
|
||||||
active_scanned -= O
|
active_scanned -= O
|
||||||
|
|
||||||
//Flicker effect
|
//Flicker effect
|
||||||
for(var/obj/O in active_scanned)
|
for(var/obj/O in active_scanned)
|
||||||
var/image/overlay = active_scanned[O]
|
var/image/overlay = active_scanned[O]
|
||||||
@@ -76,19 +76,19 @@
|
|||||||
|
|
||||||
//creates a new overlay for a scanned object
|
//creates a new overlay for a scanned object
|
||||||
/obj/item/device/t_scanner/proc/get_overlay(obj/scanned)
|
/obj/item/device/t_scanner/proc/get_overlay(obj/scanned)
|
||||||
//Use a cache so we don't create a whole bunch of new images just because someone's walking back and forth in a room.
|
//Use a cache so we don't create a whole bunch of new images just because someone's walking back and forth in a room.
|
||||||
//Also means that images are reused if multiple people are using t-rays to look at the same objects.
|
//Also means that images are reused if multiple people are using t-rays to look at the same objects.
|
||||||
if(scanned in overlay_cache)
|
if(scanned in overlay_cache)
|
||||||
. = overlay_cache[scanned]
|
. = overlay_cache[scanned]
|
||||||
else
|
else
|
||||||
var/image/I = image(loc = scanned, icon = scanned.icon, icon_state = scanned.icon_state, layer = HUD_LAYER)
|
var/image/I = image(loc = scanned, icon = scanned.icon, icon_state = scanned.icon_state, layer = HUD_LAYER)
|
||||||
|
|
||||||
//Pipes are special
|
//Pipes are special
|
||||||
if(istype(scanned, /obj/machinery/atmospherics/pipe))
|
if(istype(scanned, /obj/machinery/atmospherics/pipe))
|
||||||
var/obj/machinery/atmospherics/pipe/P = scanned
|
var/obj/machinery/atmospherics/pipe/P = scanned
|
||||||
I.color = P.pipe_color
|
I.color = P.pipe_color
|
||||||
I.overlays += P.overlays
|
I.overlays += P.overlays
|
||||||
|
|
||||||
I.alpha = 128
|
I.alpha = 128
|
||||||
I.mouse_opacity = 0
|
I.mouse_opacity = 0
|
||||||
. = I
|
. = I
|
||||||
@@ -100,12 +100,12 @@
|
|||||||
|
|
||||||
/obj/item/device/t_scanner/proc/get_scanned_objects(var/scan_dist)
|
/obj/item/device/t_scanner/proc/get_scanned_objects(var/scan_dist)
|
||||||
. = list()
|
. = list()
|
||||||
|
|
||||||
var/turf/center = get_turf(src.loc)
|
var/turf/center = get_turf(src.loc)
|
||||||
if(!center) return
|
if(!center) return
|
||||||
|
|
||||||
for(var/turf/T in range(scan_range, center))
|
for(var/turf/T in range(scan_range, center))
|
||||||
if(!T.intact)
|
if(!!T.is_plating())
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for(var/obj/O in T.contents)
|
for(var/obj/O in T.contents)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
var/mob/attacher = null
|
var/mob/attacher = null
|
||||||
var/valve_open = 0
|
var/valve_open = 0
|
||||||
var/toggle = 1
|
var/toggle = 1
|
||||||
|
flags = PROXMOVE
|
||||||
|
|
||||||
/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
|
/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@
|
|||||||
|
|
||||||
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||||
|
|
||||||
// this is the data which will be sent to the ui
|
// this is the data which will be sent to the ui
|
||||||
@@ -80,7 +81,7 @@
|
|||||||
data["valveOpen"] = valve_open ? 1 : 0
|
data["valveOpen"] = valve_open ? 1 : 0
|
||||||
|
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
// the ui does not exist, so we'll create a new() one
|
// the ui does not exist, so we'll create a new() one
|
||||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
|
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
|
||||||
icon = 'icons/obj/nanopaste.dmi'
|
icon = 'icons/obj/nanopaste.dmi'
|
||||||
icon_state = "tube"
|
icon_state = "tube"
|
||||||
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
|
||||||
amount = 10
|
amount = 10
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
/obj/item/stack/light_w
|
|
||||||
name = "wired glass tile"
|
|
||||||
singular_name = "wired glass floor tile"
|
|
||||||
desc = "A glass tile, which is wired, somehow."
|
|
||||||
icon_state = "glass_wire"
|
|
||||||
w_class = 3.0
|
|
||||||
force = 3.0
|
|
||||||
throwforce = 5.0
|
|
||||||
throw_speed = 5
|
|
||||||
throw_range = 20
|
|
||||||
flags = CONDUCT
|
|
||||||
max_amount = 60
|
|
||||||
|
|
||||||
/obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|
||||||
..()
|
|
||||||
if(istype(O,/obj/item/weapon/wirecutters))
|
|
||||||
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
|
|
||||||
CC.amount = 5
|
|
||||||
amount--
|
|
||||||
new/obj/item/stack/material/glass(user.loc)
|
|
||||||
if(amount <= 0)
|
|
||||||
user.drop_from_inventory(src)
|
|
||||||
qdel(src)
|
|
||||||
|
|
||||||
if(istype(O,/obj/item/stack/material) && O.get_material_name() == DEFAULT_WALL_MATERIAL)
|
|
||||||
var/obj/item/stack/M = O
|
|
||||||
if (M.use(1))
|
|
||||||
use(1)
|
|
||||||
new/obj/item/stack/tile/light(get_turf(user))
|
|
||||||
user << "<span class='notice'>You make a light tile.</span>"
|
|
||||||
else
|
|
||||||
user << "<span class='warning'>You need one metal sheet to finish the light tile.</span>"
|
|
||||||
return
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
/obj/item/stack/tile/light
|
|
||||||
name = "light tile"
|
|
||||||
singular_name = "light floor tile"
|
|
||||||
desc = "A floor tile, made out off glass. It produces light."
|
|
||||||
icon_state = "tile_e"
|
|
||||||
w_class = 3.0
|
|
||||||
force = 3.0
|
|
||||||
throwforce = 5.0
|
|
||||||
throw_speed = 5
|
|
||||||
throw_range = 20
|
|
||||||
flags = CONDUCT
|
|
||||||
max_amount = 60
|
|
||||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
|
|
||||||
var/on = 1
|
|
||||||
var/state //0 = fine, 1 = flickering, 2 = breaking, 3 = broken
|
|
||||||
|
|
||||||
/obj/item/stack/tile/light/New(var/loc, var/amount=null)
|
|
||||||
..()
|
|
||||||
if(prob(5))
|
|
||||||
state = 3 //broken
|
|
||||||
else if(prob(5))
|
|
||||||
state = 2 //breaking
|
|
||||||
else if(prob(10))
|
|
||||||
state = 1 //flickering occasionally
|
|
||||||
else
|
|
||||||
state = 0 //fine
|
|
||||||
|
|
||||||
/obj/item/stack/tile/light/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
|
||||||
..()
|
|
||||||
if(istype(O,/obj/item/weapon/crowbar))
|
|
||||||
new/obj/item/stack/material/steel(user.loc)
|
|
||||||
amount--
|
|
||||||
new/obj/item/stack/light_w(user.loc)
|
|
||||||
if(amount <= 0)
|
|
||||||
user.drop_from_inventory(src)
|
|
||||||
qdel(src)
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
/obj/item/stack/tile/steel
|
|
||||||
name = "floor tile"
|
|
||||||
singular_name = "floor tile"
|
|
||||||
desc = "Those could work as a pretty decent throwing weapon" //why?
|
|
||||||
icon_state = "tile"
|
|
||||||
force = 6.0
|
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
|
|
||||||
throwforce = 15.0
|
|
||||||
throw_speed = 5
|
|
||||||
throw_range = 20
|
|
||||||
flags = CONDUCT
|
|
||||||
|
|
||||||
/obj/item/stack/tile/steel/New(var/loc, var/amount=null)
|
|
||||||
..()
|
|
||||||
src.pixel_x = rand(1, 14)
|
|
||||||
src.pixel_y = rand(1, 14)
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/stack/tile/steel/cyborg
|
|
||||||
name = "floor tile synthesizer"
|
|
||||||
desc = "A device that makes floor tiles."
|
|
||||||
gender = NEUTER
|
|
||||||
matter = null
|
|
||||||
uses_charge = 1
|
|
||||||
charge_costs = list(250)
|
|
||||||
stacktype = /obj/item/stack/tile/steel
|
|
||||||
build_type = /obj/item/stack/tile/steel
|
|
||||||
|
|
||||||
/obj/item/stack/tile/steel/proc/build(turf/S as turf)
|
|
||||||
if (istype(S,/turf/space))
|
|
||||||
S.ChangeTurf(/turf/simulated/floor/plating/airless)
|
|
||||||
else
|
|
||||||
S.ChangeTurf(/turf/simulated/floor/plating)
|
|
||||||
return
|
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
* Wood
|
* Wood
|
||||||
* Carpet
|
* Carpet
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/obj/item/stack/tile
|
/obj/item/stack/tile
|
||||||
name = "tile"
|
name = "tile"
|
||||||
singular_name = "tile"
|
singular_name = "tile"
|
||||||
@@ -14,6 +14,11 @@
|
|||||||
max_amount = 60
|
max_amount = 60
|
||||||
var/build_type = null
|
var/build_type = null
|
||||||
|
|
||||||
|
/obj/item/stack/tile/New()
|
||||||
|
..()
|
||||||
|
pixel_x = rand(-7, 7)
|
||||||
|
pixel_y = rand(-7, 7)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Grass
|
* Grass
|
||||||
*/
|
*/
|
||||||
@@ -64,3 +69,59 @@
|
|||||||
throw_speed = 5
|
throw_speed = 5
|
||||||
throw_range = 20
|
throw_range = 20
|
||||||
flags = 0
|
flags = 0
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor
|
||||||
|
name = "floor tile"
|
||||||
|
singular_name = "floor tile"
|
||||||
|
desc = "Those could work as a pretty decent throwing weapon" //why?
|
||||||
|
icon_state = "tile"
|
||||||
|
force = 6.0
|
||||||
|
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
|
||||||
|
throwforce = 15.0
|
||||||
|
throw_speed = 5
|
||||||
|
throw_range = 20
|
||||||
|
flags = CONDUCT
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor_red
|
||||||
|
name = "red floor tile"
|
||||||
|
singular_name = "red floor tile"
|
||||||
|
icon_state = "tile_red"
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor_steel
|
||||||
|
name = "steel floor tile"
|
||||||
|
singular_name = "steel floor tile"
|
||||||
|
icon_state = "tile_steel"
|
||||||
|
matter = list("plasteel" = 937.5)
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor_white
|
||||||
|
name = "white floor tile"
|
||||||
|
singular_name = "white floor tile"
|
||||||
|
icon_state = "tile_white"
|
||||||
|
matter = list("plastic" = 937.5)
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor_yellow
|
||||||
|
name = "yellow floor tile"
|
||||||
|
singular_name = "yellow floor tile"
|
||||||
|
icon_state = "tile_yellow"
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor_dark
|
||||||
|
name = "dark floor tile"
|
||||||
|
singular_name = "dark floor tile"
|
||||||
|
icon_state = "fr_tile"
|
||||||
|
matter = list("plasteel" = 937.5)
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor_freezer
|
||||||
|
name = "freezer floor tile"
|
||||||
|
singular_name = "freezer floor tile"
|
||||||
|
icon_state = "tile_freezer"
|
||||||
|
matter = list("plastic" = 937.5)
|
||||||
|
|
||||||
|
/obj/item/stack/tile/floor/cyborg
|
||||||
|
name = "floor tile synthesizer"
|
||||||
|
desc = "A device that makes floor tiles."
|
||||||
|
gender = NEUTER
|
||||||
|
matter = null
|
||||||
|
uses_charge = 1
|
||||||
|
charge_costs = list(250)
|
||||||
|
stacktype = /obj/item/stack/tile/floor
|
||||||
|
build_type = /obj/item/stack/tile/floor
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
throw_speed = 1
|
throw_speed = 1
|
||||||
throw_range = 5
|
throw_range = 5
|
||||||
w_class = 3.0
|
w_class = 3.0
|
||||||
origin_tech = list(TECH_ENGINERING = 4, TECH_MATERIAL = 2)
|
origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 50000)
|
matter = list(DEFAULT_WALL_MATERIAL = 50000)
|
||||||
var/datum/effect/effect/system/spark_spread/spark_system
|
var/datum/effect/effect/system/spark_spread/spark_system
|
||||||
var/stored_matter = 0
|
var/stored_matter = 0
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
else if(!deconstruct && (istype(T,/turf/space) || istype(T,get_base_turf(T.z))))
|
else if(!deconstruct && (istype(T,/turf/space) || istype(T,get_base_turf(T.z))))
|
||||||
build_cost = 1
|
build_cost = 1
|
||||||
build_type = "floor"
|
build_type = "floor"
|
||||||
build_turf = /turf/simulated/floor/plating/airless
|
build_turf = /turf/simulated/floor/airless
|
||||||
else if(deconstruct && istype(T,/turf/simulated/wall))
|
else if(deconstruct && istype(T,/turf/simulated/wall))
|
||||||
var/turf/simulated/wall/W = T
|
var/turf/simulated/wall/W = T
|
||||||
build_delay = deconstruct ? 50 : 40
|
build_delay = deconstruct ? 50 : 40
|
||||||
|
|||||||
@@ -139,11 +139,6 @@
|
|||||||
build_path = /obj/machinery/computer/crew
|
build_path = /obj/machinery/computer/crew
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MAGNET = 2)
|
origin_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MAGNET = 2)
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/mech_bay_power_console
|
|
||||||
name = T_BOARD("mech bay power control console")
|
|
||||||
build_path = /obj/machinery/computer/mech_bay_power_console
|
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_POWER = 3)
|
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/operating
|
/obj/item/weapon/circuitboard/operating
|
||||||
name = T_BOARD("patient monitoring console")
|
name = T_BOARD("patient monitoring console")
|
||||||
build_path = /obj/machinery/computer/operating
|
build_path = /obj/machinery/computer/operating
|
||||||
@@ -195,4 +190,4 @@
|
|||||||
/obj/item/weapon/circuitboard/rcon_console
|
/obj/item/weapon/circuitboard/rcon_console
|
||||||
name = T_BOARD("RCON remote control console")
|
name = T_BOARD("RCON remote control console")
|
||||||
build_path = /obj/machinery/computer/rcon
|
build_path = /obj/machinery/computer/rcon
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 3, TECH_POWER = 5)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5)
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
#ifndef T_BOARD
|
||||||
|
#error T_BOARD macro is not defined but we need it!
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/obj/item/weapon/circuitboard/mech_recharger
|
||||||
|
name = T_BOARD("mech recharger")
|
||||||
|
build_path = "/obj/machinery/mech_recharger"
|
||||||
|
board_type = "machine"
|
||||||
|
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
|
||||||
|
req_components = list(
|
||||||
|
"/obj/item/weapon/stock_parts/capacitor" = 2,
|
||||||
|
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
||||||
|
"/obj/item/weapon/stock_parts/manipulator" = 2)
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
name = T_BOARD("mining drill head")
|
name = T_BOARD("mining drill head")
|
||||||
build_path = "/obj/machinery/mining/drill"
|
build_path = "/obj/machinery/mining/drill"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_DATA = 1, TECH_ENGINERING = 1)
|
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/capacitor" = 1,
|
"/obj/item/weapon/stock_parts/capacitor" = 1,
|
||||||
"/obj/item/weapon/cell" = 1,
|
"/obj/item/weapon/cell" = 1,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
name = T_BOARD("PACMAN-type generator")
|
name = T_BOARD("PACMAN-type generator")
|
||||||
build_path = "/obj/machinery/power/port_gen/pacman"
|
build_path = "/obj/machinery/power/port_gen/pacman"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
||||||
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
"/obj/item/weapon/stock_parts/micro_laser" = 1,
|
||||||
@@ -16,9 +16,9 @@
|
|||||||
/obj/item/weapon/circuitboard/pacman/super
|
/obj/item/weapon/circuitboard/pacman/super
|
||||||
name = T_BOARD("SUPERPACMAN-type generator")
|
name = T_BOARD("SUPERPACMAN-type generator")
|
||||||
build_path = "/obj/machinery/power/port_gen/pacman/super"
|
build_path = "/obj/machinery/power/port_gen/pacman/super"
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINERING = 4)
|
origin_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4)
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/pacman/mrs
|
/obj/item/weapon/circuitboard/pacman/mrs
|
||||||
name = T_BOARD("MRSPACMAN-type generator")
|
name = T_BOARD("MRSPACMAN-type generator")
|
||||||
build_path = "/obj/machinery/power/port_gen/pacman/mrs"
|
build_path = "/obj/machinery/power/port_gen/pacman/mrs"
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINERING = 5)
|
origin_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5)
|
||||||
|
|||||||
@@ -6,14 +6,14 @@
|
|||||||
name = T_BOARD("superconductive magnetic energy storage")
|
name = T_BOARD("superconductive magnetic energy storage")
|
||||||
build_path = "/obj/machinery/power/smes/buildable"
|
build_path = "/obj/machinery/power/smes/buildable"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_POWER = 6, TECH_ENGINERING = 4)
|
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
|
||||||
req_components = list("/obj/item/weapon/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
|
req_components = list("/obj/item/weapon/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/batteryrack
|
/obj/item/weapon/circuitboard/batteryrack
|
||||||
name = T_BOARD("battery rack PSU")
|
name = T_BOARD("battery rack PSU")
|
||||||
build_path = "/obj/machinery/power/smes/batteryrack"
|
build_path = "/obj/machinery/power/smes/batteryrack"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_POWER = 3, TECH_ENGINERING = 2)
|
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
|
||||||
req_components = list("/obj/item/weapon/cell" = 3)
|
req_components = list("/obj/item/weapon/cell" = 3)
|
||||||
|
|
||||||
/obj/item/weapon/circuitboard/ghettosmes
|
/obj/item/weapon/circuitboard/ghettosmes
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
name = T_BOARD("cyborg recharging station")
|
name = T_BOARD("cyborg recharging station")
|
||||||
build_path = "/obj/machinery/recharge_station"
|
build_path = "/obj/machinery/recharge_station"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/stack/cable_coil" = 5,
|
"/obj/item/stack/cable_coil" = 5,
|
||||||
"/obj/item/weapon/stock_parts/capacitor" = 2,
|
"/obj/item/weapon/stock_parts/capacitor" = 2,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
name = T_BOARD("destructive analyzer")
|
name = T_BOARD("destructive analyzer")
|
||||||
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
|
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINERING = 2, TECH_DATA = 2)
|
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
"/obj/item/weapon/stock_parts/scanning_module" = 1,
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
||||||
@@ -25,7 +25,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
name = T_BOARD("autolathe")
|
name = T_BOARD("autolathe")
|
||||||
build_path = "/obj/machinery/autolathe"
|
build_path = "/obj/machinery/autolathe"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_ENGINERING = 2, TECH_DATA = 2)
|
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 3,
|
"/obj/item/weapon/stock_parts/matter_bin" = 3,
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
||||||
@@ -35,7 +35,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
name = T_BOARD("protolathe")
|
name = T_BOARD("protolathe")
|
||||||
build_path = "/obj/machinery/r_n_d/protolathe"
|
build_path = "/obj/machinery/r_n_d/protolathe"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_ENGINERING = 2, TECH_DATA = 2)
|
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 2,
|
"/obj/item/weapon/stock_parts/matter_bin" = 2,
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
||||||
@@ -46,7 +46,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
name = T_BOARD("circuit imprinter")
|
name = T_BOARD("circuit imprinter")
|
||||||
build_path = "/obj/machinery/r_n_d/circuit_imprinter"
|
build_path = "/obj/machinery/r_n_d/circuit_imprinter"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_ENGINERING = 2, TECH_DATA = 2)
|
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
"/obj/item/weapon/stock_parts/matter_bin" = 1,
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
||||||
@@ -56,7 +56,7 @@ obj/item/weapon/circuitboard/rdserver
|
|||||||
name = "Circuit board (Exosuit Fabricator)"
|
name = "Circuit board (Exosuit Fabricator)"
|
||||||
build_path = "/obj/machinery/mecha_part_fabricator"
|
build_path = "/obj/machinery/mecha_part_fabricator"
|
||||||
board_type = "machine"
|
board_type = "machine"
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_ENGINERING = 3)
|
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/matter_bin" = 2,
|
"/obj/item/weapon/stock_parts/matter_bin" = 2,
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
"/obj/item/weapon/stock_parts/manipulator" = 1,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/receiver
|
/obj/item/weapon/circuitboard/telecomms/receiver
|
||||||
name = T_BOARD("subspace receiver")
|
name = T_BOARD("subspace receiver")
|
||||||
build_path = "/obj/machinery/telecomms/receiver"
|
build_path = "/obj/machinery/telecomms/receiver"
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 3, TECH_BLUESPACE = 2)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
|
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/hub
|
/obj/item/weapon/circuitboard/telecomms/hub
|
||||||
name = T_BOARD("hub mainframe")
|
name = T_BOARD("hub mainframe")
|
||||||
build_path = "/obj/machinery/telecomms/hub"
|
build_path = "/obj/machinery/telecomms/hub"
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
"/obj/item/stack/cable_coil" = 2,
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/relay
|
/obj/item/weapon/circuitboard/telecomms/relay
|
||||||
name = T_BOARD("relay mainframe")
|
name = T_BOARD("relay mainframe")
|
||||||
build_path = "/obj/machinery/telecomms/relay"
|
build_path = "/obj/machinery/telecomms/relay"
|
||||||
origin_tech = list(TECH_DATA = 3, TECH_ENGINERING = 4, TECH_BLUESPACE = 3)
|
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
||||||
"/obj/item/stack/cable_coil" = 2,
|
"/obj/item/stack/cable_coil" = 2,
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/bus
|
/obj/item/weapon/circuitboard/telecomms/bus
|
||||||
name = T_BOARD("bus mainframe")
|
name = T_BOARD("bus mainframe")
|
||||||
build_path = "/obj/machinery/telecomms/bus"
|
build_path = "/obj/machinery/telecomms/bus"
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
||||||
"/obj/item/stack/cable_coil" = 1,
|
"/obj/item/stack/cable_coil" = 1,
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/processor
|
/obj/item/weapon/circuitboard/telecomms/processor
|
||||||
name = T_BOARD("processor unit")
|
name = T_BOARD("processor unit")
|
||||||
build_path = "/obj/machinery/telecomms/processor"
|
build_path = "/obj/machinery/telecomms/processor"
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 3,
|
"/obj/item/weapon/stock_parts/manipulator" = 3,
|
||||||
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/server
|
/obj/item/weapon/circuitboard/telecomms/server
|
||||||
name = T_BOARD("telecommunication server")
|
name = T_BOARD("telecommunication server")
|
||||||
build_path = "/obj/machinery/telecomms/server"
|
build_path = "/obj/machinery/telecomms/server"
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
||||||
"/obj/item/stack/cable_coil" = 1,
|
"/obj/item/stack/cable_coil" = 1,
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
/obj/item/weapon/circuitboard/telecomms/broadcaster
|
/obj/item/weapon/circuitboard/telecomms/broadcaster
|
||||||
name = T_BOARD("subspace broadcaster")
|
name = T_BOARD("subspace broadcaster")
|
||||||
build_path = "/obj/machinery/telecomms/broadcaster"
|
build_path = "/obj/machinery/telecomms/broadcaster"
|
||||||
origin_tech = list(TECH_DATA = 4, TECH_ENGINERING = 4, TECH_BLUESPACE = 2)
|
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
|
||||||
req_components = list(
|
req_components = list(
|
||||||
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
"/obj/item/weapon/stock_parts/manipulator" = 2,
|
||||||
"/obj/item/stack/cable_coil" = 1,
|
"/obj/item/stack/cable_coil" = 1,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user