mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-27 10:32:08 +00:00
Simpler lighting process, bug fixes, & modular computer tweaks (#1809)
Fixes #1806 Fixes #1730 Fixes #1747 Partially addresses #1763 Addresses #1283 Fixes #1799 Fixes #1816 Fixes #1813
This commit is contained in:
@@ -29,6 +29,7 @@
|
|||||||
#include "code\__defines\lighting.dm"
|
#include "code\__defines\lighting.dm"
|
||||||
#include "code\__defines\machinery.dm"
|
#include "code\__defines\machinery.dm"
|
||||||
#include "code\__defines\math_physics.dm"
|
#include "code\__defines\math_physics.dm"
|
||||||
|
#include "code\__defines\mining.dm"
|
||||||
#include "code\__defines\misc.dm"
|
#include "code\__defines\misc.dm"
|
||||||
#include "code\__defines\mobs.dm"
|
#include "code\__defines\mobs.dm"
|
||||||
#include "code\__defines\process_scheduler.dm"
|
#include "code\__defines\process_scheduler.dm"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#define LIGHTING_INTERVAL 10 // Frequency, in 1/10ths of a second, of the lighting process.
|
#define LIGHTING_INTERVAL 2 // Frequency, in 1/10ths of a second, of the lighting process.
|
||||||
|
|
||||||
#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
|
#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
|
||||||
#define LIGHTING_ROUND_VALUE 1 / 128 //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
|
#define LIGHTING_ROUND_VALUE 1 / 128 //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
|
||||||
@@ -51,6 +51,7 @@
|
|||||||
#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
|
#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
|
||||||
#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
|
#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
|
||||||
#define LIGHT_COLOR_ORANGE "#FA9632" //Mostly pure orange. rgb(250, 150, 50)
|
#define LIGHT_COLOR_ORANGE "#FA9632" //Mostly pure orange. rgb(250, 150, 50)
|
||||||
|
#define LIGHT_COLOR_PURPLE "#A97FAA" //Soft purple. rgb(169, 127, 170)
|
||||||
|
|
||||||
//These ones aren't a direct colour like the ones above, because nothing would fit
|
//These ones aren't a direct colour like the ones above, because nothing would fit
|
||||||
#define LIGHT_COLOR_FIRE "#FAA019" //Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
|
#define LIGHT_COLOR_FIRE "#FAA019" //Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
|
||||||
|
|||||||
10
code/__defines/mining.dm
Normal file
10
code/__defines/mining.dm
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#define ORE_URANIUM "uranium"
|
||||||
|
#define ORE_IRON "iron"
|
||||||
|
#define ORE_COAL "coal"
|
||||||
|
#define ORE_SAND "sand"
|
||||||
|
#define ORE_PHORON "phoron"
|
||||||
|
#define ORE_SILVER "silver"
|
||||||
|
#define ORE_GOLD "gold"
|
||||||
|
#define ORE_DIAMOND "diamond"
|
||||||
|
#define ORE_PLATINUM "platinum"
|
||||||
|
#define ORE_HYDROGEN "mhydrogen"
|
||||||
@@ -285,11 +285,11 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
#define get_turf(A) (get_step(A, 0))
|
#define get_turf(A) (get_step(A, 0))
|
||||||
#define NULL_OR_GC(TARGET) (!TARGET || TARGET.gcDestroyed)
|
#define QDELETED(TARGET) (!TARGET || TARGET.gcDestroyed)
|
||||||
|
|
||||||
//Recipe type defines. Used to determine what machine makes them
|
//Recipe type defines. Used to determine what machine makes them
|
||||||
#define MICROWAVE 0x1
|
#define MICROWAVE 0x1
|
||||||
#define FRYER 0x2
|
#define FRYER 0x2
|
||||||
#define OVEN 0x4
|
#define OVEN 0x4
|
||||||
#define CANDYMAKER 0x8
|
#define CANDYMAKER 0x8
|
||||||
#define CEREALMAKER 0x10
|
#define CEREALMAKER 0x10
|
||||||
|
|||||||
@@ -127,11 +127,6 @@ world/loop_checks = 0
|
|||||||
stat(null, "[garbage_collect ? "On" : "Off"], [destroyed.len] queued")
|
stat(null, "[garbage_collect ? "On" : "Off"], [destroyed.len] queued")
|
||||||
stat(null, "Dels: [total_dels], [soft_dels] soft, [hard_dels] hard, [tick_dels] last run")
|
stat(null, "Dels: [total_dels], [soft_dels] soft, [hard_dels] hard, [tick_dels] last run")
|
||||||
|
|
||||||
|
|
||||||
// Tests if an atom has been deleted.
|
|
||||||
/proc/deleted(atom/A)
|
|
||||||
return !A || !isnull(A.gcDestroyed)
|
|
||||||
|
|
||||||
// Should be treated as a replacement for the 'del' keyword.
|
// Should be treated as a replacement for the 'del' keyword.
|
||||||
// Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
|
// Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
|
||||||
/proc/qdel(var/datum/A)
|
/proc/qdel(var/datum/A)
|
||||||
|
|||||||
@@ -14,31 +14,23 @@
|
|||||||
|
|
||||||
/datum/controller/process/lighting
|
/datum/controller/process/lighting
|
||||||
schedule_interval = LIGHTING_INTERVAL
|
schedule_interval = LIGHTING_INTERVAL
|
||||||
var/list/curr_lights = list()
|
|
||||||
var/list/curr_corners = list()
|
|
||||||
var/list/curr_overlays = list()
|
|
||||||
var/list/resume_pos = 0
|
|
||||||
|
|
||||||
/datum/controller/process/lighting/setup()
|
/datum/controller/process/lighting/setup()
|
||||||
name = "lighting"
|
name = "lighting"
|
||||||
|
|
||||||
lighting_process = src
|
lighting_process = src
|
||||||
|
|
||||||
/datum/controller/process/lighting/statProcess()
|
/datum/controller/process/lighting/statProcess()
|
||||||
..()
|
..()
|
||||||
stat(null, "Server tick usage is [world.tick_usage].")
|
stat(null, "Server tick usage is [world.tick_usage].")
|
||||||
stat(null, "[all_lighting_overlays.len] overlays ([all_lighting_corners.len] corners)")
|
stat(null, "[all_lighting_overlays.len] overlays ([all_lighting_corners.len] corners)")
|
||||||
stat(null, "Lights: [lighting_update_lights.len] queued, [curr_lights.len] processing")
|
stat(null, "Lights: [lighting_update_lights.len] queued")
|
||||||
stat(null, "Corners: [lighting_update_corners.len] queued, [curr_corners.len] processing")
|
stat(null, "Corners: [lighting_update_corners.len] queued")
|
||||||
stat(null, "Overlays: [lighting_update_overlays.len] queued, [curr_overlays.len] processing")
|
stat(null, "Overlays: [lighting_update_overlays.len] queued")
|
||||||
|
|
||||||
/datum/controller/process/lighting/doWork()
|
/datum/controller/process/lighting/doWork()
|
||||||
// -- SOURCES --
|
var/list/curr_lights = lighting_update_lights
|
||||||
if (resume_pos == STAGE_NONE)
|
var/list/curr_corners = lighting_update_corners
|
||||||
curr_lights = lighting_update_lights
|
var/list/curr_overlays = lighting_update_overlays
|
||||||
lighting_update_lights = list()
|
|
||||||
|
|
||||||
resume_pos = STAGE_SOURCE
|
|
||||||
|
|
||||||
while (curr_lights.len)
|
while (curr_lights.len)
|
||||||
var/datum/light_source/L = curr_lights[curr_lights.len]
|
var/datum/light_source/L = curr_lights[curr_lights.len]
|
||||||
@@ -58,13 +50,6 @@
|
|||||||
|
|
||||||
F_SCHECK
|
F_SCHECK
|
||||||
|
|
||||||
// -- CORNERS --
|
|
||||||
if (resume_pos == STAGE_SOURCE)
|
|
||||||
curr_corners = lighting_update_corners
|
|
||||||
lighting_update_corners = list()
|
|
||||||
|
|
||||||
resume_pos = STAGE_CORNER
|
|
||||||
|
|
||||||
while (curr_corners.len)
|
while (curr_corners.len)
|
||||||
var/datum/lighting_corner/C = curr_corners[curr_corners.len]
|
var/datum/lighting_corner/C = curr_corners[curr_corners.len]
|
||||||
curr_corners.len--
|
curr_corners.len--
|
||||||
@@ -75,12 +60,6 @@
|
|||||||
|
|
||||||
F_SCHECK
|
F_SCHECK
|
||||||
|
|
||||||
if (resume_pos == STAGE_CORNER)
|
|
||||||
curr_overlays = lighting_update_overlays
|
|
||||||
lighting_update_overlays = list()
|
|
||||||
|
|
||||||
resume_pos = STAGE_OVERLAY
|
|
||||||
|
|
||||||
while (curr_overlays.len)
|
while (curr_overlays.len)
|
||||||
var/atom/movable/lighting_overlay/O = curr_overlays[curr_overlays.len]
|
var/atom/movable/lighting_overlay/O = curr_overlays[curr_overlays.len]
|
||||||
curr_overlays.len--
|
curr_overlays.len--
|
||||||
@@ -90,8 +69,6 @@
|
|||||||
|
|
||||||
F_SCHECK
|
F_SCHECK
|
||||||
|
|
||||||
resume_pos = 0
|
|
||||||
|
|
||||||
#undef STAGE_NONE
|
#undef STAGE_NONE
|
||||||
#undef STAGE_SOURCE
|
#undef STAGE_SOURCE
|
||||||
#undef STAGE_CORNER
|
#undef STAGE_CORNER
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ var/global/list/ticking_machines = list()
|
|||||||
#define STAGE_PIPENET 5
|
#define STAGE_PIPENET 5
|
||||||
|
|
||||||
/proc/add_machine(var/obj/machinery/M)
|
/proc/add_machine(var/obj/machinery/M)
|
||||||
if (NULL_OR_GC(M))
|
if (QDELETED(M))
|
||||||
return
|
return
|
||||||
|
|
||||||
var/type = M.get_process_type()
|
var/type = M.get_process_type()
|
||||||
@@ -52,7 +52,7 @@ var/global/list/ticking_machines = list()
|
|||||||
var/obj/machinery/M = processing_machinery[processing_machinery.len]
|
var/obj/machinery/M = processing_machinery[processing_machinery.len]
|
||||||
processing_machinery.len--
|
processing_machinery.len--
|
||||||
|
|
||||||
if (NULL_OR_GC(M))
|
if (QDELETED(M))
|
||||||
remove_machine(M)
|
remove_machine(M)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -73,7 +73,7 @@ var/global/list/ticking_machines = list()
|
|||||||
var/obj/machinery/M = processing_power_users[processing_power_users.len]
|
var/obj/machinery/M = processing_power_users[processing_power_users.len]
|
||||||
processing_power_users.len--
|
processing_power_users.len--
|
||||||
|
|
||||||
if (NULL_OR_GC(M))
|
if (QDELETED(M))
|
||||||
remove_machine(M)
|
remove_machine(M)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ var/global/list/ticking_machines = list()
|
|||||||
var/datum/powernet/PN = processing_powernets[processing_powernets.len]
|
var/datum/powernet/PN = processing_powernets[processing_powernets.len]
|
||||||
processing_powernets.len--
|
processing_powernets.len--
|
||||||
|
|
||||||
if (NULL_OR_GC(PN))
|
if (QDELETED(PN))
|
||||||
powernets -= PN
|
powernets -= PN
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ var/global/list/ticking_machines = list()
|
|||||||
var/obj/item/I = processing_powersinks[processing_powersinks.len]
|
var/obj/item/I = processing_powersinks[processing_powersinks.len]
|
||||||
processing_powersinks.len--
|
processing_powersinks.len--
|
||||||
|
|
||||||
if (NULL_OR_GC(I) || !I.pwr_drain())
|
if (QDELETED(I) || !I.pwr_drain())
|
||||||
processing_power_items -= I
|
processing_power_items -= I
|
||||||
|
|
||||||
F_SCHECK
|
F_SCHECK
|
||||||
@@ -118,7 +118,7 @@ var/global/list/ticking_machines = list()
|
|||||||
var/datum/pipe_network/PN = processing_pipenets[processing_pipenets.len]
|
var/datum/pipe_network/PN = processing_pipenets[processing_pipenets.len]
|
||||||
processing_pipenets.len--
|
processing_pipenets.len--
|
||||||
|
|
||||||
if (NULL_OR_GC(PN))
|
if (QDELETED(PN))
|
||||||
pipe_networks -= PN
|
pipe_networks -= PN
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
@@ -23,13 +23,14 @@
|
|||||||
var/datum/scheduled_task/task = queued_tasks[queued_tasks.len]
|
var/datum/scheduled_task/task = queued_tasks[queued_tasks.len]
|
||||||
queued_tasks.len--
|
queued_tasks.len--
|
||||||
|
|
||||||
|
if (QDELETED(task))
|
||||||
|
scheduled_tasks -= task
|
||||||
|
continue
|
||||||
|
|
||||||
if (world.time > task.trigger_time)
|
if (world.time > task.trigger_time)
|
||||||
unschedule(task)
|
unschedule(task)
|
||||||
// why are these separated.
|
|
||||||
task.pre_process()
|
task.pre_process()
|
||||||
F_SCHECK // fuck it, it's a cheap call.
|
|
||||||
task.process()
|
task.process()
|
||||||
F_SCHECK
|
|
||||||
task.post_process()
|
task.post_process()
|
||||||
F_SCHECK
|
F_SCHECK
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if (!(C.z in config.admin_levels))
|
if (!(C.z in config.admin_levels))
|
||||||
C.update_lumcount(0.15, 0.5, 0)
|
C.update_lumcount(0.15, 0.15, 0.5)
|
||||||
CHECK_TICK
|
CHECK_TICK
|
||||||
|
|
||||||
/datum/universal_state/supermatter_cascade/proc/MiscSet()
|
/datum/universal_state/supermatter_cascade/proc/MiscSet()
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
visible_message("A red light flashes on \the [src].")
|
visible_message("A red light flashes on \the [src].")
|
||||||
return
|
return
|
||||||
cable.use(amount)
|
cable.use(amount)
|
||||||
if(deleted(cable))
|
if(QDELETED(cable))
|
||||||
cable = null
|
cable = null
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -125,30 +125,16 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/door/proc/close_door_in(var/time = 5 SECONDS)
|
/obj/machinery/door/proc/close_door_in(var/time = 5 SECONDS)
|
||||||
if (time < 2 SECONDS) // Too short duration for the scheduler.
|
spawn(time)
|
||||||
spawn(time)
|
src.close()
|
||||||
src.auto_close()
|
|
||||||
|
|
||||||
else if (close_task)
|
|
||||||
// Update the time.
|
|
||||||
close_task.trigger_task_in(time)
|
|
||||||
else
|
|
||||||
close_task = schedule_task_with_source_in(time, src, /obj/machinery/door/proc/auto_close)
|
|
||||||
|
|
||||||
/obj/machinery/door/proc/close_hatch_in(var/time = 5 SECONDS)
|
/obj/machinery/door/proc/close_hatch_in(var/time = 5 SECONDS)
|
||||||
if (hatch_task)
|
spawn(time)
|
||||||
// Update the time.
|
close_hatch()
|
||||||
hatch_task.trigger_task_in(time)
|
|
||||||
else
|
|
||||||
hatch_task = schedule_task_with_source_in(time, src, /obj/machinery/door/proc/auto_close_hatch)
|
|
||||||
|
|
||||||
/obj/machinery/door/proc/auto_close()
|
/obj/machinery/door/proc/auto_close()
|
||||||
close()
|
if (!QDELETED(src) && can_close(FALSE) && autoclose)
|
||||||
close_task = null
|
close()
|
||||||
|
|
||||||
/obj/machinery/door/proc/auto_close_hatch()
|
|
||||||
close_hatch()
|
|
||||||
hatch_task = null
|
|
||||||
|
|
||||||
/obj/machinery/door/proc/can_open()
|
/obj/machinery/door/proc/can_open()
|
||||||
if(!density || operating || !ticker)
|
if(!density || operating || !ticker)
|
||||||
@@ -513,10 +499,14 @@
|
|||||||
|
|
||||||
/obj/machinery/door/proc/close(var/forced = 0)
|
/obj/machinery/door/proc/close(var/forced = 0)
|
||||||
if(!can_close(forced))
|
if(!can_close(forced))
|
||||||
|
if (autoclose)
|
||||||
|
for (var/atom/movable/AM in get_turf(src))
|
||||||
|
if (AM.density && AM != src)
|
||||||
|
spawn(60)
|
||||||
|
src.auto_close()
|
||||||
return
|
return
|
||||||
operating = 1
|
operating = 1
|
||||||
|
|
||||||
qdel(close_task)
|
|
||||||
do_animate("closing")
|
do_animate("closing")
|
||||||
sleep(3)
|
sleep(3)
|
||||||
src.density = 1
|
src.density = 1
|
||||||
|
|||||||
@@ -463,7 +463,7 @@ Buildable meters
|
|||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = !T.is_plating() ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
@@ -482,7 +482,7 @@ Buildable meters
|
|||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = !T.is_plating() ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
@@ -501,7 +501,7 @@ Buildable meters
|
|||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = !T.is_plating() ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
@@ -520,7 +520,7 @@ Buildable meters
|
|||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = !T.is_plating() ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
@@ -537,7 +537,7 @@ Buildable meters
|
|||||||
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
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
@@ -572,7 +572,7 @@ Buildable meters
|
|||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = !T.is_plating() ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (deleted(M))
|
if (QDELETED(M))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
M.build_network()
|
M.build_network()
|
||||||
@@ -641,7 +641,7 @@ Buildable meters
|
|||||||
var/turf/T = M.loc
|
var/turf/T = M.loc
|
||||||
M.level = !T.is_plating() ? 2 : 1
|
M.level = !T.is_plating() ? 2 : 1
|
||||||
M.initialize()
|
M.initialize()
|
||||||
if (deleted(M))
|
if (QDELETED(M))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
M.build_network()
|
M.build_network()
|
||||||
@@ -718,7 +718,7 @@ Buildable meters
|
|||||||
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()
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(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)"
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
@@ -901,7 +901,7 @@ Buildable meters
|
|||||||
var/turf/T = P.loc
|
var/turf/T = P.loc
|
||||||
P.level = !T.is_plating() ? 2 : 1
|
P.level = !T.is_plating() ? 2 : 1
|
||||||
P.initialize()
|
P.initialize()
|
||||||
if (deleted(P))
|
if (QDELETED(P))
|
||||||
usr << pipefailtext
|
usr << pipefailtext
|
||||||
return 1
|
return 1
|
||||||
P.build_network()
|
P.build_network()
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
|
|
||||||
valve_open = 0
|
valve_open = 0
|
||||||
|
|
||||||
if(deleted(tank_one) || deleted(tank_two) || !tank_one.air_contents || !tank_two.air_contents)
|
if(QDELETED(tank_one) || QDELETED(tank_two) || !tank_one.air_contents || !tank_two.air_contents)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
|
var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ var/global/list/stool_cache = list() //haha stool
|
|||||||
force = 10
|
force = 10
|
||||||
throwforce = 10
|
throwforce = 10
|
||||||
w_class = 5
|
w_class = 5
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "stool",
|
||||||
|
slot_r_hand_str = "stool"
|
||||||
|
)
|
||||||
var/base_icon = "stool_base"
|
var/base_icon = "stool_base"
|
||||||
var/material/material
|
var/material/material
|
||||||
var/material/padding_material
|
var/material/padding_material
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
name = "captain voidsuit helmet"
|
name = "captain voidsuit helmet"
|
||||||
icon_state = "capspace"
|
icon_state = "capspace"
|
||||||
item_state = "capspace"
|
item_state = "capspace"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "capspacehelmet",
|
||||||
|
slot_r_hand_str = "capspacehelmet"
|
||||||
|
)
|
||||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
|
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
|
||||||
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
|
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||||
|
|
||||||
@@ -11,6 +15,10 @@
|
|||||||
desc = "A bulky, heavy-duty piece of exclusive Nanotrasen armor. YOU are in charge!"
|
desc = "A bulky, heavy-duty piece of exclusive Nanotrasen armor. YOU are in charge!"
|
||||||
icon_state = "capspace"
|
icon_state = "capspace"
|
||||||
item_state = "capspace"
|
item_state = "capspace"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "capspacesuit",
|
||||||
|
slot_r_hand_str = "capspacesuit"
|
||||||
|
)
|
||||||
w_class = 4
|
w_class = 4
|
||||||
allowed = list(/obj/item/weapon/tank, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
allowed = list(/obj/item/weapon/tank, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||||
slowdown = 1.5
|
slowdown = 1.5
|
||||||
|
|||||||
@@ -4,6 +4,10 @@
|
|||||||
desc = "An advanced helmet designed for work in special operations. Property of Gorlex Marauders."
|
desc = "An advanced helmet designed for work in special operations. Property of Gorlex Marauders."
|
||||||
icon_state = "rig0-syndie"
|
icon_state = "rig0-syndie"
|
||||||
item_state = "syndie_helm"
|
item_state = "syndie_helm"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "syndie_helm",
|
||||||
|
slot_r_hand_str = "syndie_helm"
|
||||||
|
)
|
||||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
|
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
|
||||||
siemens_coefficient = 0.3
|
siemens_coefficient = 0.3
|
||||||
species_restricted = list("Human", "Vaurca", "Machine")
|
species_restricted = list("Human", "Vaurca", "Machine")
|
||||||
@@ -15,6 +19,10 @@
|
|||||||
name = "blood-red voidsuit"
|
name = "blood-red voidsuit"
|
||||||
desc = "An advanced suit that protects against injuries during special operations. Property of Gorlex Marauders."
|
desc = "An advanced suit that protects against injuries during special operations. Property of Gorlex Marauders."
|
||||||
item_state = "syndie_voidsuit"
|
item_state = "syndie_voidsuit"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "syndie_hardsuit",
|
||||||
|
slot_r_hand_str = "syndie_hardsuit"
|
||||||
|
)
|
||||||
slowdown = 1
|
slowdown = 1
|
||||||
w_class = 3
|
w_class = 3
|
||||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
|
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
icon_state = "rig-engineering"
|
icon_state = "rig-engineering"
|
||||||
item_state = "eng_voidsuit"
|
item_state = "eng_voidsuit"
|
||||||
slowdown = 1
|
slowdown = 1
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "eng_hardsuit",
|
||||||
|
slot_r_hand_str = "eng_hardsuit"
|
||||||
|
)
|
||||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 80)
|
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 80)
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||||
|
|
||||||
@@ -34,6 +38,10 @@
|
|||||||
/obj/item/clothing/suit/space/void/mining
|
/obj/item/clothing/suit/space/void/mining
|
||||||
icon_state = "rig-mining"
|
icon_state = "rig-mining"
|
||||||
name = "mining voidsuit"
|
name = "mining voidsuit"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "mining_hardsuit",
|
||||||
|
slot_r_hand_str = "mining_hardsuit"
|
||||||
|
)
|
||||||
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
|
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
|
||||||
item_state = "mining_voidsuit"
|
item_state = "mining_voidsuit"
|
||||||
armor = list(melee = 50, bullet = 5, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 20)
|
armor = list(melee = 50, bullet = 5, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 20)
|
||||||
@@ -54,6 +62,10 @@
|
|||||||
name = "medical voidsuit"
|
name = "medical voidsuit"
|
||||||
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
|
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
|
||||||
item_state = "medical_voidsuit"
|
item_state = "medical_voidsuit"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "medical_hardsuit",
|
||||||
|
slot_r_hand_str = "medical_hardsuit"
|
||||||
|
)
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
|
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
|
||||||
armor = list(melee = 30, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 50)
|
armor = list(melee = 30, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 50)
|
||||||
|
|
||||||
@@ -74,6 +86,10 @@
|
|||||||
name = "security voidsuit"
|
name = "security voidsuit"
|
||||||
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
|
||||||
item_state = "sec_voidsuit"
|
item_state = "sec_voidsuit"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "sec_hardsuit",
|
||||||
|
slot_r_hand_str = "sec_hardsuit"
|
||||||
|
)
|
||||||
armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10)
|
armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10)
|
||||||
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
|
allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton)
|
||||||
|
|
||||||
@@ -95,5 +111,9 @@
|
|||||||
icon_state = "rig-atmos"
|
icon_state = "rig-atmos"
|
||||||
name = "atmos voidsuit"
|
name = "atmos voidsuit"
|
||||||
item_state = "atmos_voidsuit"
|
item_state = "atmos_voidsuit"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "atmos_hardsuit",
|
||||||
|
slot_r_hand_str = "atmos_hardsuit"
|
||||||
|
)
|
||||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 50)
|
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 50)
|
||||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
|
|||||||
@@ -36,6 +36,10 @@
|
|||||||
name = "gem-encrusted voidsuit"
|
name = "gem-encrusted voidsuit"
|
||||||
desc = "A bizarre gem-encrusted suit that radiates magical energies."
|
desc = "A bizarre gem-encrusted suit that radiates magical energies."
|
||||||
item_state = "wiz_voidsuit"
|
item_state = "wiz_voidsuit"
|
||||||
|
item_state_slots = list(
|
||||||
|
slot_l_hand_str = "wiz_hardsuit",
|
||||||
|
slot_r_hand_str = "wiz_hardsuit"
|
||||||
|
)
|
||||||
slowdown = 1
|
slowdown = 1
|
||||||
w_class = 3
|
w_class = 3
|
||||||
unacidable = 1
|
unacidable = 1
|
||||||
|
|||||||
@@ -59,12 +59,6 @@
|
|||||||
base_icon_state = "snow"
|
base_icon_state = "snow"
|
||||||
footstep_sound = "gravelstep"
|
footstep_sound = "gravelstep"
|
||||||
|
|
||||||
/turf/simulated/floor/holofloor/space
|
|
||||||
icon = 'icons/turf/space.dmi'
|
|
||||||
name = "\proper space"
|
|
||||||
icon_state = "0"
|
|
||||||
footstep_sound = null
|
|
||||||
|
|
||||||
/turf/simulated/floor/holofloor/reinforced
|
/turf/simulated/floor/holofloor/reinforced
|
||||||
icon = 'icons/turf/flooring/tiles.dmi'
|
icon = 'icons/turf/flooring/tiles.dmi'
|
||||||
initial_flooring = /decl/flooring/reinforced
|
initial_flooring = /decl/flooring/reinforced
|
||||||
@@ -72,8 +66,21 @@
|
|||||||
icon_state = "reinforced"
|
icon_state = "reinforced"
|
||||||
footstep_sound = "concretestep"
|
footstep_sound = "concretestep"
|
||||||
|
|
||||||
|
/turf/simulated/floor/holofloor/space
|
||||||
|
icon = 'icons/turf/space.dmi'
|
||||||
|
name = "\proper space"
|
||||||
|
icon_state = "0"
|
||||||
|
footstep_sound = null
|
||||||
|
plane = PLANE_SPACE_BACKGROUND
|
||||||
|
dynamic_lighting = 0
|
||||||
|
|
||||||
/turf/simulated/floor/holofloor/space/New()
|
/turf/simulated/floor/holofloor/space/New()
|
||||||
icon_state = "[((x + y) ^ ~(x * y) + z) % 25]"
|
icon_state = "[((x + y) ^ ~(x * y) + z) % 25]"
|
||||||
|
var/image/I = image('icons/turf/space_parallax1.dmi',"[icon_state]")
|
||||||
|
I.plane = PLANE_SPACE_DUST
|
||||||
|
I.alpha = 80
|
||||||
|
I.blend_mode = BLEND_ADD
|
||||||
|
overlays += I
|
||||||
|
|
||||||
/turf/simulated/floor/holofloor/beach
|
/turf/simulated/floor/holofloor/beach
|
||||||
desc = "Uncomfortably gritty for a hologram."
|
desc = "Uncomfortably gritty for a hologram."
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
L_PROF(loc, "overlay_destroy")
|
L_PROF(loc, "overlay_destroy")
|
||||||
global.all_lighting_overlays -= src
|
global.all_lighting_overlays -= src
|
||||||
global.lighting_update_overlays -= src
|
global.lighting_update_overlays -= src
|
||||||
lighting_process.curr_overlays -= src
|
|
||||||
|
|
||||||
var/turf/T = loc
|
var/turf/T = loc
|
||||||
if (istype(T))
|
if (istype(T))
|
||||||
|
|||||||
@@ -79,9 +79,9 @@
|
|||||||
recipes += new/datum/stack_recipe("air alarm frame", /obj/item/frame/air_alarm, 2)
|
recipes += new/datum/stack_recipe("air alarm frame", /obj/item/frame/air_alarm, 2)
|
||||||
recipes += new/datum/stack_recipe("fire alarm frame", /obj/item/frame/fire_alarm, 2)
|
recipes += new/datum/stack_recipe("fire alarm frame", /obj/item/frame/fire_alarm, 2)
|
||||||
recipes += new/datum/stack_recipe("firearm receiver", /obj/item/weapon/receivergun, 15, time = 25, one_per_turf = 0, on_floor = 0)
|
recipes += new/datum/stack_recipe("firearm receiver", /obj/item/weapon/receivergun, 15, time = 25, one_per_turf = 0, on_floor = 0)
|
||||||
recipes += new/datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20)
|
recipes += new/datum/stack_recipe("modular console frame", /obj/item/modular_computer/console, 20, time = 25, one_per_turf = TRUE)
|
||||||
recipes += new/datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10)
|
recipes += new/datum/stack_recipe("modular laptop frame", /obj/item/modular_computer/laptop, 10, time = 25)
|
||||||
recipes += new/datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5)
|
recipes += new/datum/stack_recipe("modular tablet frame", /obj/item/modular_computer/tablet, 5, time = 25)
|
||||||
|
|
||||||
/material/plasteel/generate_recipes()
|
/material/plasteel/generate_recipes()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -11,25 +11,25 @@
|
|||||||
/datum/alloy/plasteel
|
/datum/alloy/plasteel
|
||||||
metaltag = "plasteel"
|
metaltag = "plasteel"
|
||||||
requires = list(
|
requires = list(
|
||||||
"platinum" = 1,
|
ORE_PLATINUM = 1,
|
||||||
"carbon" = 2,
|
ORE_COAL = 2,
|
||||||
"hematite" = 2
|
ORE_IRON = 2
|
||||||
)
|
)
|
||||||
product_mod = 0.3
|
product_mod = 0.3
|
||||||
product = /obj/item/stack/material/plasteel
|
product = /obj/item/stack/material/plasteel
|
||||||
|
|
||||||
/datum/alloy/steel
|
/datum/alloy/steel
|
||||||
metaltag = DEFAULT_WALL_MATERIAL
|
metaltag = DEFAULT_WALL_MATERIAL
|
||||||
requires = list(
|
requires = list(
|
||||||
"carbon" = 1,
|
ORE_COAL = 1,
|
||||||
"hematite" = 1
|
ORE_IRON = 1
|
||||||
)
|
)
|
||||||
product = /obj/item/stack/material/steel
|
product = /obj/item/stack/material/steel
|
||||||
|
|
||||||
/datum/alloy/borosilicate
|
/datum/alloy/borosilicate
|
||||||
metaltag = "borosilicate glass"
|
metaltag = "borosilicate glass"
|
||||||
requires = list(
|
requires = list(
|
||||||
"platinum" = 1,
|
ORE_PLATINUM = 1,
|
||||||
"sand" = 2
|
ORE_SAND = 2
|
||||||
)
|
)
|
||||||
product = /obj/item/stack/material/glass/phoronglass
|
product = /obj/item/stack/material/glass/phoronglass
|
||||||
|
|||||||
@@ -302,7 +302,7 @@
|
|||||||
new /obj/structure/closet/crate/secure/loot(src)
|
new /obj/structure/closet/crate/secure/loot(src)
|
||||||
|
|
||||||
if(istype(N))
|
if(istype(N))
|
||||||
N.overlay_detail = "asteroid[rand(0,9)]"
|
N.overlay_detail = rand(0,9)
|
||||||
N.updateMineralOverlays(1)
|
N.updateMineralOverlays(1)
|
||||||
|
|
||||||
/turf/simulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F)
|
/turf/simulated/mineral/proc/excavate_find(var/prob_clean = 0, var/datum/find/F)
|
||||||
@@ -374,13 +374,21 @@
|
|||||||
|
|
||||||
/turf/simulated/mineral/random
|
/turf/simulated/mineral/random
|
||||||
name = "Mineral deposit"
|
name = "Mineral deposit"
|
||||||
var/mineralSpawnChanceList = list("Uranium" = 5, "Platinum" = 5, "Iron" = 35, "Coal" = 35, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Phoron" = 10)
|
var/mineralSpawnChanceList = list(
|
||||||
var/mineralChance = 100 //10 //means 10% chance of this plot changing to a mineral deposit
|
ORE_URANIUM = 5,
|
||||||
|
ORE_PLATINUM = 5,
|
||||||
|
ORE_IRON = 35,
|
||||||
|
ORE_COAL = 35,
|
||||||
|
ORE_DIAMOND = 1,
|
||||||
|
ORE_GOLD = 5,
|
||||||
|
ORE_SILVER = 5,
|
||||||
|
ORE_PHORON = 10
|
||||||
|
)
|
||||||
|
var/mineralChance = 10 //means 10% chance of this plot changing to a mineral deposit
|
||||||
|
|
||||||
/turf/simulated/mineral/random/New()
|
/turf/simulated/mineral/random/New()
|
||||||
if (prob(mineralChance) && !mineral)
|
if (prob(mineralChance) && !mineral)
|
||||||
var/mineral_name = pickweight(mineralSpawnChanceList) //temp mineral name
|
var/mineral_name = pickweight(mineralSpawnChanceList) //temp mineral name
|
||||||
mineral_name = lowertext(mineral_name)
|
|
||||||
if (mineral_name && (mineral_name in ore_data))
|
if (mineral_name && (mineral_name in ore_data))
|
||||||
mineral = ore_data[mineral_name]
|
mineral = ore_data[mineral_name]
|
||||||
UpdateMineral()
|
UpdateMineral()
|
||||||
@@ -388,8 +396,17 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
/turf/simulated/mineral/random/high_chance
|
/turf/simulated/mineral/random/high_chance
|
||||||
mineralChance = 100 //25
|
mineralChance = 25
|
||||||
mineralSpawnChanceList = list("Uranium" = 10, "Platinum" = 10, "Iron" = 20, "Coal" = 20, "Diamond" = 2, "Gold" = 10, "Silver" = 10, "Phoron" = 20)
|
mineralSpawnChanceList = list(
|
||||||
|
ORE_URANIUM = 10,
|
||||||
|
ORE_PLATINUM = 10,
|
||||||
|
ORE_IRON = 20,
|
||||||
|
ORE_COAL = 20,
|
||||||
|
ORE_DIAMOND = 2,
|
||||||
|
ORE_GOLD = 10,
|
||||||
|
ORE_SILVER = 10,
|
||||||
|
ORE_PHORON = 20
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
/**********************Asteroid**************************/
|
/**********************Asteroid**************************/
|
||||||
@@ -411,13 +428,14 @@
|
|||||||
temperature = TCMB
|
temperature = TCMB
|
||||||
var/dug = 0 //0 = has not yet been dug, 1 = has already been dug
|
var/dug = 0 //0 = has not yet been dug, 1 = has already been dug
|
||||||
var/overlay_detail
|
var/overlay_detail
|
||||||
|
var/static/list/overlay_cache
|
||||||
has_resources = 1
|
has_resources = 1
|
||||||
footstep_sound = "gravelstep"
|
footstep_sound = "gravelstep"
|
||||||
|
|
||||||
/turf/simulated/floor/asteroid/New()
|
/turf/simulated/floor/asteroid/New()
|
||||||
|
|
||||||
if(prob(20))
|
if(prob(20))
|
||||||
overlay_detail = "asteroid[rand(0,9)]"
|
overlay_detail = rand(0,9)
|
||||||
|
|
||||||
/turf/simulated/floor/asteroid/ex_act(severity)
|
/turf/simulated/floor/asteroid/ex_act(severity)
|
||||||
switch(severity)
|
switch(severity)
|
||||||
@@ -536,8 +554,14 @@
|
|||||||
if(istype(get_step(src, step_overlays[direction]), /turf/simulated/mineral))
|
if(istype(get_step(src, step_overlays[direction]), /turf/simulated/mineral))
|
||||||
overlays += image('icons/turf/walls.dmi', "rock_side", dir = step_overlays[direction])
|
overlays += image('icons/turf/walls.dmi', "rock_side", dir = step_overlays[direction])
|
||||||
|
|
||||||
//todo cache
|
if (!overlay_cache)
|
||||||
if(overlay_detail) overlays |= image(icon = 'icons/turf/flooring/decals.dmi', icon_state = overlay_detail)
|
overlay_cache = list()
|
||||||
|
overlay_cache.len = 10
|
||||||
|
for (var/i = 1; i <= overlay_cache.len; i++)
|
||||||
|
overlay_cache[i] = image('icons/turf/flooring/decals.dmi', "asteroid[i - 1]")
|
||||||
|
|
||||||
|
if(overlay_detail)
|
||||||
|
overlays += overlay_cache[overlay_detail + 1]
|
||||||
|
|
||||||
if(update_neighbors)
|
if(update_neighbors)
|
||||||
var/list/all_step_directions = list(NORTH,NORTHEAST,EAST,SOUTHEAST,SOUTH,SOUTHWEST,WEST,NORTHWEST)
|
var/list/all_step_directions = list(NORTH,NORTHEAST,EAST,SOUTHEAST,SOUTH,SOUTHWEST,WEST,NORTHWEST)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ var/global/list/ore_data = list()
|
|||||||
display_name = name
|
display_name = name
|
||||||
|
|
||||||
/ore/uranium
|
/ore/uranium
|
||||||
name = "uranium"
|
name = ORE_URANIUM
|
||||||
display_name = "pitchblende"
|
display_name = "pitchblende"
|
||||||
smelts_to = "uranium"
|
smelts_to = "uranium"
|
||||||
result_amount = 5
|
result_amount = 5
|
||||||
@@ -38,7 +38,7 @@ var/global/list/ore_data = list()
|
|||||||
xarch_source_mineral = "potassium"
|
xarch_source_mineral = "potassium"
|
||||||
|
|
||||||
/ore/hematite
|
/ore/hematite
|
||||||
name = "hematite"
|
name = ORE_IRON
|
||||||
display_name = "hematite"
|
display_name = "hematite"
|
||||||
smelts_to = "iron"
|
smelts_to = "iron"
|
||||||
alloy = 1
|
alloy = 1
|
||||||
@@ -48,7 +48,7 @@ var/global/list/ore_data = list()
|
|||||||
scan_icon = "mineral_common"
|
scan_icon = "mineral_common"
|
||||||
|
|
||||||
/ore/coal
|
/ore/coal
|
||||||
name = "carbon"
|
name = ORE_COAL
|
||||||
display_name = "raw carbon"
|
display_name = "raw carbon"
|
||||||
smelts_to = "plastic"
|
smelts_to = "plastic"
|
||||||
alloy = 1
|
alloy = 1
|
||||||
@@ -58,13 +58,13 @@ var/global/list/ore_data = list()
|
|||||||
scan_icon = "mineral_common"
|
scan_icon = "mineral_common"
|
||||||
|
|
||||||
/ore/glass
|
/ore/glass
|
||||||
name = "sand"
|
name = ORE_SAND
|
||||||
display_name = "sand"
|
display_name = "sand"
|
||||||
smelts_to = "glass"
|
smelts_to = "glass"
|
||||||
compresses_to = "sandstone"
|
compresses_to = "sandstone"
|
||||||
|
|
||||||
/ore/phoron
|
/ore/phoron
|
||||||
name = "phoron"
|
name = ORE_PHORON
|
||||||
display_name = "phoron crystals"
|
display_name = "phoron crystals"
|
||||||
compresses_to = "phoron"
|
compresses_to = "phoron"
|
||||||
//smelts_to = something that explodes violently on the conveyor, huhuhuhu
|
//smelts_to = something that explodes violently on the conveyor, huhuhuhu
|
||||||
@@ -81,7 +81,7 @@ var/global/list/ore_data = list()
|
|||||||
xarch_source_mineral = "phoron"
|
xarch_source_mineral = "phoron"
|
||||||
|
|
||||||
/ore/silver
|
/ore/silver
|
||||||
name = "silver"
|
name = ORE_SILVER
|
||||||
display_name = "native silver"
|
display_name = "native silver"
|
||||||
smelts_to = "silver"
|
smelts_to = "silver"
|
||||||
result_amount = 5
|
result_amount = 5
|
||||||
@@ -90,7 +90,7 @@ var/global/list/ore_data = list()
|
|||||||
scan_icon = "mineral_uncommon"
|
scan_icon = "mineral_uncommon"
|
||||||
|
|
||||||
/ore/gold
|
/ore/gold
|
||||||
smelts_to = "gold"
|
smelts_to = ORE_GOLD
|
||||||
name = "gold"
|
name = "gold"
|
||||||
display_name = "native gold"
|
display_name = "native gold"
|
||||||
result_amount = 5
|
result_amount = 5
|
||||||
@@ -105,7 +105,7 @@ var/global/list/ore_data = list()
|
|||||||
)
|
)
|
||||||
|
|
||||||
/ore/diamond
|
/ore/diamond
|
||||||
name = "diamond"
|
name = ORE_DIAMOND
|
||||||
display_name = "diamond"
|
display_name = "diamond"
|
||||||
compresses_to = "diamond"
|
compresses_to = "diamond"
|
||||||
result_amount = 5
|
result_amount = 5
|
||||||
@@ -115,7 +115,7 @@ var/global/list/ore_data = list()
|
|||||||
xarch_source_mineral = "nitrogen"
|
xarch_source_mineral = "nitrogen"
|
||||||
|
|
||||||
/ore/platinum
|
/ore/platinum
|
||||||
name = "platinum"
|
name = ORE_PLATINUM
|
||||||
display_name = "raw platinum"
|
display_name = "raw platinum"
|
||||||
smelts_to = "platinum"
|
smelts_to = "platinum"
|
||||||
compresses_to = "osmium"
|
compresses_to = "osmium"
|
||||||
@@ -126,8 +126,8 @@ var/global/list/ore_data = list()
|
|||||||
scan_icon = "mineral_rare"
|
scan_icon = "mineral_rare"
|
||||||
|
|
||||||
/ore/hydrogen
|
/ore/hydrogen
|
||||||
name = "mhydrogen"
|
name = ORE_HYDROGEN
|
||||||
display_name = "metallic hydrogen"
|
display_name = "metallic hydrogen"
|
||||||
smelts_to = "tritium"
|
smelts_to = "tritium"
|
||||||
compresses_to = "mhydrogen"
|
compresses_to = "mhydrogen"
|
||||||
scan_icon = "mineral_rare"
|
scan_icon = "mineral_rare"
|
||||||
|
|||||||
@@ -101,7 +101,9 @@
|
|||||||
var/turf/t = turf
|
var/turf/t = turf
|
||||||
if(obscuredTurfs[t])
|
if(obscuredTurfs[t])
|
||||||
if(!t.obfuscations[obfuscation.type])
|
if(!t.obfuscations[obfuscation.type])
|
||||||
t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
|
var/image/obfuscation_static = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
|
||||||
|
obfuscation_static.plane = 0
|
||||||
|
t.obfuscations[obfuscation.type] = obfuscation_static
|
||||||
|
|
||||||
obscured += t.obfuscations[obfuscation.type]
|
obscured += t.obfuscations[obfuscation.type]
|
||||||
for(var/eye in seenby)
|
for(var/eye in seenby)
|
||||||
@@ -140,7 +142,10 @@
|
|||||||
for(var/turf in obscuredTurfs)
|
for(var/turf in obscuredTurfs)
|
||||||
var/turf/t = turf
|
var/turf/t = turf
|
||||||
if(!t.obfuscations[obfuscation.type])
|
if(!t.obfuscations[obfuscation.type])
|
||||||
t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
|
var/image/obfuscation_static = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
|
||||||
|
obfuscation_static.plane = 0
|
||||||
|
t.obfuscations[obfuscation.type] = obfuscation_static
|
||||||
|
|
||||||
obscured += t.obfuscations[obfuscation.type]
|
obscured += t.obfuscations[obfuscation.type]
|
||||||
|
|
||||||
#undef UPDATE_BUFFER
|
#undef UPDATE_BUFFER
|
||||||
|
|||||||
@@ -100,3 +100,5 @@
|
|||||||
var/list/equipment_overlays = list() // Extra overlays from equipped items
|
var/list/equipment_overlays = list() // Extra overlays from equipped items
|
||||||
|
|
||||||
var/is_noisy = FALSE // if TRUE, movement should make sound.
|
var/is_noisy = FALSE // if TRUE, movement should make sound.
|
||||||
|
var/last_x = 0
|
||||||
|
var/last_y = 0
|
||||||
|
|||||||
@@ -127,6 +127,10 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
if (is_noisy)
|
if (is_noisy)
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
|
if (T.x == last_x && T.y == last_y)
|
||||||
|
return
|
||||||
|
last_x = T.x
|
||||||
|
last_y = T.y
|
||||||
if (m_intent == "run")
|
if (m_intent == "run")
|
||||||
playsound(src, T.footstep_sound, 70, 1)
|
playsound(src, T.footstep_sound, 70, 1)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
force_holder = wrapped.force
|
force_holder = wrapped.force
|
||||||
wrapped.force = 0.0
|
wrapped.force = 0.0
|
||||||
wrapped.attack(M,user)
|
wrapped.attack(M,user)
|
||||||
if(deleted(wrapped))
|
if(QDELETED(wrapped))
|
||||||
wrapped = null
|
wrapped = null
|
||||||
return 1
|
return 1
|
||||||
else// mob interactions
|
else// mob interactions
|
||||||
@@ -282,4 +282,4 @@
|
|||||||
|
|
||||||
can_hold = list(
|
can_hold = list(
|
||||||
/obj/item/stack/material
|
/obj/item/stack/material
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -83,15 +83,21 @@
|
|||||||
|
|
||||||
overlays.Cut()
|
overlays.Cut()
|
||||||
if(!enabled)
|
if(!enabled)
|
||||||
if(icon_state_screensaver)
|
var/probably_working = hard_drive && processor_unit && damage < broken_damage && (apc_power(0) || battery_power(0))
|
||||||
|
if(icon_state_screensaver && probably_working)
|
||||||
overlays.Add(icon_state_screensaver)
|
overlays.Add(icon_state_screensaver)
|
||||||
set_light(0)
|
|
||||||
|
if (screensaver_light_range && probably_working)
|
||||||
|
set_light(screensaver_light_range, 1, screensaver_light_color ? screensaver_light_color : "#FFFFFF")
|
||||||
|
else
|
||||||
|
set_light(0)
|
||||||
return
|
return
|
||||||
set_light(light_strength)
|
|
||||||
if(active_program)
|
if(active_program)
|
||||||
overlays.Add(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu)
|
overlays.Add(active_program.program_icon_state ? active_program.program_icon_state : icon_state_menu)
|
||||||
|
set_light(light_strength, l_color = active_program.color)
|
||||||
else
|
else
|
||||||
overlays.Add(icon_state_menu)
|
overlays.Add(icon_state_menu)
|
||||||
|
set_light(light_strength, l_color = menu_light_color)
|
||||||
|
|
||||||
/obj/item/modular_computer/proc/turn_on(var/mob/user)
|
/obj/item/modular_computer/proc/turn_on(var/mob/user)
|
||||||
if(tesla_link)
|
if(tesla_link)
|
||||||
|
|||||||
@@ -63,6 +63,7 @@
|
|||||||
H.holder2 = src
|
H.holder2 = src
|
||||||
user.drop_from_inventory(H)
|
user.drop_from_inventory(H)
|
||||||
H.forceMove(src)
|
H.forceMove(src)
|
||||||
|
update_icon()
|
||||||
|
|
||||||
// Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware.
|
// Uninstalls component. Found and Critical vars may be passed by parent types, if they have additional hardware.
|
||||||
/obj/item/modular_computer/proc/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0)
|
/obj/item/modular_computer/proc/uninstall_component(var/mob/living/user, var/obj/item/weapon/computer_hardware/H, var/found = 0, var/critical = 0)
|
||||||
@@ -101,10 +102,10 @@
|
|||||||
to_chat(user, "You remove \the [H] from \the [src].")
|
to_chat(user, "You remove \the [H] from \the [src].")
|
||||||
H.forceMove(get_turf(src))
|
H.forceMove(get_turf(src))
|
||||||
H.holder2 = null
|
H.holder2 = null
|
||||||
|
update_icon()
|
||||||
if(critical && enabled)
|
if(critical && enabled)
|
||||||
to_chat(user, "<span class='danger'>\The [src]'s screen freezes for few seconds and then displays an \"HARDWARE ERROR: Critical component disconnected. Please verify component connection and reboot the device. If the problem persists contact technical support for assistance.\" warning.</span>")
|
to_chat(user, "<span class='danger'>\The [src]'s screen freezes for few seconds and then displays an \"HARDWARE ERROR: Critical component disconnected. Please verify component connection and reboot the device. If the problem persists contact technical support for assistance.\" warning.</span>")
|
||||||
shutdown_computer()
|
shutdown_computer()
|
||||||
update_icon()
|
|
||||||
|
|
||||||
|
|
||||||
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
|
// Checks all hardware pieces to determine if name matches, if yes, returns the hardware piece, otherwise returns null
|
||||||
|
|||||||
@@ -153,10 +153,14 @@
|
|||||||
if(components.len)
|
if(components.len)
|
||||||
to_chat(user, "Remove all components from \the [src] before disassembling it.")
|
to_chat(user, "Remove all components from \the [src] before disassembling it.")
|
||||||
return
|
return
|
||||||
new /obj/item/stack/material/steel( get_turf(src.loc), steel_sheet_cost )
|
to_chat(user, span("notice", "You begin to disassemble \the [src]."))
|
||||||
src.visible_message("\The [src] has been disassembled by [user].")
|
playsound(user, 'sound/items/Ratchet.ogg', 100, 1)
|
||||||
//relay_qdel()
|
if (do_after(user, 20))
|
||||||
qdel(src)
|
new /obj/item/stack/material/steel(get_turf(src.loc), steel_sheet_cost)
|
||||||
|
src.visible_message("\The [user] disassembles \the [src].",
|
||||||
|
"You disassemble \the [src].",
|
||||||
|
"You hear a ratchet.")
|
||||||
|
qdel(src)
|
||||||
return
|
return
|
||||||
if(istype(W, /obj/item/weapon/weldingtool))
|
if(istype(W, /obj/item/weapon/weldingtool))
|
||||||
var/obj/item/weapon/weldingtool/WT = W
|
var/obj/item/weapon/weldingtool/WT = W
|
||||||
@@ -169,6 +173,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
to_chat(user, "You begin repairing damage to \the [src]...")
|
to_chat(user, "You begin repairing damage to \the [src]...")
|
||||||
|
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||||
if(WT.remove_fuel(round(damage/75)) && do_after(usr, damage/10))
|
if(WT.remove_fuel(round(damage/75)) && do_after(usr, damage/10))
|
||||||
damage = 0
|
damage = 0
|
||||||
to_chat(user, "You repair \the [src].")
|
to_chat(user, "You repair \the [src].")
|
||||||
|
|||||||
@@ -28,6 +28,9 @@
|
|||||||
var/icon_state_unpowered = null // Icon state when the computer is turned off
|
var/icon_state_unpowered = null // Icon state when the computer is turned off
|
||||||
var/icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen.
|
var/icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen.
|
||||||
var/icon_state_screensaver = null
|
var/icon_state_screensaver = null
|
||||||
|
var/screensaver_light_range = 0
|
||||||
|
var/screensaver_light_color = null
|
||||||
|
var/menu_light_color = null
|
||||||
var/max_hardware_size = 0 // Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed.
|
var/max_hardware_size = 0 // Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed.
|
||||||
var/steel_sheet_cost = 5 // Amount of steel sheets refunded when disassembling an empty frame of this computer.
|
var/steel_sheet_cost = 5 // Amount of steel sheets refunded when disassembling an empty frame of this computer.
|
||||||
var/light_strength = 0 // Intensity of light this computer emits. Comparable to numbers light fixtures use.
|
var/light_strength = 0 // Intensity of light this computer emits. Comparable to numbers light fixtures use.
|
||||||
|
|||||||
@@ -4,7 +4,9 @@
|
|||||||
icon = 'icons/obj/modular_console.dmi'
|
icon = 'icons/obj/modular_console.dmi'
|
||||||
icon_state = "console"
|
icon_state = "console"
|
||||||
icon_state_unpowered = "console"
|
icon_state_unpowered = "console"
|
||||||
icon_state_menu = "menu"
|
icon_state_screensaver = "standby-light"
|
||||||
|
icon_state_menu = "menu-light"
|
||||||
|
menu_light_color = LIGHT_COLOR_BLUE
|
||||||
hardware_flag = PROGRAM_CONSOLE
|
hardware_flag = PROGRAM_CONSOLE
|
||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
density = 1
|
density = 1
|
||||||
@@ -12,6 +14,8 @@
|
|||||||
base_active_power_usage = 500
|
base_active_power_usage = 500
|
||||||
max_hardware_size = 3
|
max_hardware_size = 3
|
||||||
steel_sheet_cost = 20
|
steel_sheet_cost = 20
|
||||||
light_strength = 4
|
light_strength = 2
|
||||||
max_damage = 300
|
max_damage = 300
|
||||||
broken_damage = 150
|
broken_damage = 150
|
||||||
|
screensaver_light_range = 1.4
|
||||||
|
screensaver_light_color = "#0099ff"
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
var/available_on_syndinet = 0 // Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable.
|
var/available_on_syndinet = 0 // Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable.
|
||||||
var/computer_emagged = 0 // Set to 1 if computer that's running us was emagged. Computer updates this every Process() tick
|
var/computer_emagged = 0 // Set to 1 if computer that's running us was emagged. Computer updates this every Process() tick
|
||||||
var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /nano/images/status_icons. Be careful not to use too large images!
|
var/ui_header = null // Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /nano/images/status_icons. Be careful not to use too large images!
|
||||||
|
var/color = "#FFFFFF" // The color of light the computer should emit when this program is open.
|
||||||
|
|
||||||
/datum/computer_file/program/New(var/obj/item/modular_computer/comp = null)
|
/datum/computer_file/program/New(var/obj/item/modular_computer/comp = null)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
var/dos_speed = 0
|
var/dos_speed = 0
|
||||||
var/error = ""
|
var/error = ""
|
||||||
var/executed = 0
|
var/executed = 0
|
||||||
|
color = LIGHT_COLOR_RED
|
||||||
|
|
||||||
/datum/computer_file/program/ntnet_dos/process_tick()
|
/datum/computer_file/program/ntnet_dos/process_tick()
|
||||||
dos_speed = 0
|
dos_speed = 0
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
size = 73 // Very large, a price for bypassing ID checks completely.
|
size = 73 // Very large, a price for bypassing ID checks completely.
|
||||||
available_on_ntnet = 0
|
available_on_ntnet = 0
|
||||||
available_on_syndinet = 1
|
available_on_syndinet = 1
|
||||||
|
color = LIGHT_COLOR_RED
|
||||||
|
|
||||||
/datum/computer_file/program/camera_monitor/hacked/process_tick()
|
/datum/computer_file/program/camera_monitor/hacked/process_tick()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
available_on_syndinet = 1
|
available_on_syndinet = 1
|
||||||
nanomodule_path = /datum/nano_module/program/revelation/
|
nanomodule_path = /datum/nano_module/program/revelation/
|
||||||
var/armed = 0
|
var/armed = 0
|
||||||
|
color = LIGHT_COLOR_RED
|
||||||
|
|
||||||
/datum/computer_file/program/revelation/run_program(var/mob/living/user)
|
/datum/computer_file/program/revelation/run_program(var/mob/living/user)
|
||||||
. = ..(user)
|
. = ..(user)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
usage_flags = PROGRAM_CONSOLE
|
usage_flags = PROGRAM_CONSOLE
|
||||||
requires_ntnet = 0
|
requires_ntnet = 0
|
||||||
size = 8
|
size = 8
|
||||||
|
color = LIGHT_COLOR_BLUE
|
||||||
|
|
||||||
/datum/nano_module/program/card_mod
|
/datum/nano_module/program/card_mod
|
||||||
name = "ID card modification program"
|
name = "ID card modification program"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
usage_flags = PROGRAM_CONSOLE
|
usage_flags = PROGRAM_CONSOLE
|
||||||
network_destination = "station long-range communication array"
|
network_destination = "station long-range communication array"
|
||||||
var/datum/comm_message_listener/message_core = new
|
var/datum/comm_message_listener/message_core = new
|
||||||
|
color = LIGHT_COLOR_BLUE
|
||||||
|
|
||||||
/datum/computer_file/program/comm/clone()
|
/datum/computer_file/program/comm/clone()
|
||||||
var/datum/computer_file/program/comm/temp = ..()
|
var/datum/computer_file/program/comm/temp = ..()
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
network_destination = "power monitoring system"
|
network_destination = "power monitoring system"
|
||||||
size = 9
|
size = 9
|
||||||
var/has_alert = 0
|
var/has_alert = 0
|
||||||
|
color = LIGHT_COLOR_ORANGE
|
||||||
|
|
||||||
/datum/computer_file/program/power_monitor/process_tick()
|
/datum/computer_file/program/power_monitor/process_tick()
|
||||||
..()
|
..()
|
||||||
@@ -41,6 +42,7 @@
|
|||||||
network_destination = "alarm monitoring network"
|
network_destination = "alarm monitoring network"
|
||||||
size = 5
|
size = 5
|
||||||
var/has_alert = 0
|
var/has_alert = 0
|
||||||
|
color = LIGHT_COLOR_CYAN
|
||||||
|
|
||||||
/datum/computer_file/program/alarm_monitor/process_tick()
|
/datum/computer_file/program/alarm_monitor/process_tick()
|
||||||
..()
|
..()
|
||||||
@@ -72,6 +74,7 @@
|
|||||||
requires_ntnet_feature = NTNET_SYSTEMCONTROL
|
requires_ntnet_feature = NTNET_SYSTEMCONTROL
|
||||||
usage_flags = PROGRAM_CONSOLE
|
usage_flags = PROGRAM_CONSOLE
|
||||||
size = 17
|
size = 17
|
||||||
|
color = LIGHT_COLOR_CYAN
|
||||||
|
|
||||||
/datum/computer_file/program/rcon_console
|
/datum/computer_file/program/rcon_console
|
||||||
filename = "rconconsole"
|
filename = "rconconsole"
|
||||||
@@ -86,6 +89,7 @@
|
|||||||
requires_ntnet_feature = NTNET_SYSTEMCONTROL
|
requires_ntnet_feature = NTNET_SYSTEMCONTROL
|
||||||
usage_flags = PROGRAM_CONSOLE
|
usage_flags = PROGRAM_CONSOLE
|
||||||
size = 19
|
size = 19
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
|
|
||||||
// Night-Mode Toggle for CE
|
// Night-Mode Toggle for CE
|
||||||
/datum/computer_file/program/lighting_control
|
/datum/computer_file/program/lighting_control
|
||||||
@@ -101,3 +105,4 @@
|
|||||||
requires_ntnet_feature = NTNET_SYSTEMCONTROL
|
requires_ntnet_feature = NTNET_SYSTEMCONTROL
|
||||||
usage_flags = PROGRAM_CONSOLE
|
usage_flags = PROGRAM_CONSOLE
|
||||||
size = 9
|
size = 9
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
available_on_ntnet = 1 // ... but we want it to be available for download.
|
available_on_ntnet = 1 // ... but we want it to be available for download.
|
||||||
nanomodule_path = /datum/nano_module/arcade_classic/ // Path of relevant nano module. The nano module is defined further in the file.
|
nanomodule_path = /datum/nano_module/arcade_classic/ // Path of relevant nano module. The nano module is defined further in the file.
|
||||||
var/picked_enemy_name
|
var/picked_enemy_name
|
||||||
|
color = LIGHT_COLOR_BLUE
|
||||||
|
|
||||||
// Blatantly stolen and shortened version from arcade machines. Generates a random enemy name
|
// Blatantly stolen and shortened version from arcade machines. Generates a random enemy name
|
||||||
/datum/computer_file/program/game/arcade/proc/random_enemy_name()
|
/datum/computer_file/program/game/arcade/proc/random_enemy_name()
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
var/downloading = 0
|
var/downloading = 0
|
||||||
var/message = ""
|
var/message = ""
|
||||||
var/show_archived = 0
|
var/show_archived = 0
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
|
|
||||||
/datum/computer_file/program/newsbrowser/process_tick()
|
/datum/computer_file/program/newsbrowser/process_tick()
|
||||||
if(!downloading)
|
if(!downloading)
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
var/datum/ntnet_conversation/channel = null
|
var/datum/ntnet_conversation/channel = null
|
||||||
var/operator_mode = 0 // Channel operator mode
|
var/operator_mode = 0 // Channel operator mode
|
||||||
var/netadmin_mode = 0 // Administrator mode (invisible to other users + bypasses passwords)
|
var/netadmin_mode = 0 // Administrator mode (invisible to other users + bypasses passwords)
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
|
|
||||||
/datum/computer_file/program/chatclient/New()
|
/datum/computer_file/program/chatclient/New()
|
||||||
username = "DefaultUser[rand(100, 999)]"
|
username = "DefaultUser[rand(100, 999)]"
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ var/global/nttransfer_uid = 0
|
|||||||
network_destination = "other device via P2P tunnel"
|
network_destination = "other device via P2P tunnel"
|
||||||
available_on_ntnet = 1
|
available_on_ntnet = 1
|
||||||
nanomodule_path = /datum/nano_module/program/computer_nttransfer/
|
nanomodule_path = /datum/nano_module/program/computer_nttransfer/
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
|
|
||||||
var/error = "" // Error screen
|
var/error = "" // Error screen
|
||||||
var/server_password = "" // Optional password to download the file.
|
var/server_password = "" // Optional password to download the file.
|
||||||
|
|||||||
@@ -10,3 +10,4 @@
|
|||||||
network_destination = "crew lifesigns monitoring system"
|
network_destination = "crew lifesigns monitoring system"
|
||||||
size = 11
|
size = 11
|
||||||
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP
|
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP
|
||||||
|
color = LIGHT_COLOR_CYAN
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
available_on_ntnet = 1
|
available_on_ntnet = 1
|
||||||
nanomodule_path = /datum/nano_module/program/computer_aidiag/
|
nanomodule_path = /datum/nano_module/program/computer_aidiag/
|
||||||
var/restoring = 0
|
var/restoring = 0
|
||||||
|
color = LIGHT_COLOR_PURPLE
|
||||||
|
|
||||||
/datum/computer_file/program/aidiag/proc/get_ai()
|
/datum/computer_file/program/aidiag/proc/get_ai()
|
||||||
if(computer && computer.ai_slot && computer.ai_slot.check_functionality() && computer.ai_slot.enabled && computer.ai_slot.stored_card && computer.ai_slot.stored_card.carded_ai)
|
if(computer && computer.ai_slot && computer.ai_slot.check_functionality() && computer.ai_slot.enabled && computer.ai_slot.stored_card && computer.ai_slot.stored_card.carded_ai)
|
||||||
|
|||||||
@@ -9,3 +9,4 @@
|
|||||||
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP
|
usage_flags = PROGRAM_CONSOLE | PROGRAM_LAPTOP
|
||||||
requires_ntnet = 1
|
requires_ntnet = 1
|
||||||
size = 8
|
size = 8
|
||||||
|
color = LIGHT_COLOR_PURPLE
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
required_access_run = access_network
|
required_access_run = access_network
|
||||||
required_access_download = access_heads
|
required_access_download = access_heads
|
||||||
usage_flags = PROGRAM_CONSOLE
|
usage_flags = PROGRAM_CONSOLE
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
|
|
||||||
available_on_ntnet = 1
|
available_on_ntnet = 1
|
||||||
nanomodule_path = /datum/nano_module/computer_ntnetmonitor/
|
nanomodule_path = /datum/nano_module/computer_ntnetmonitor/
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
available_on_ntnet = 1
|
available_on_ntnet = 1
|
||||||
requires_ntnet = 1
|
requires_ntnet = 1
|
||||||
required_access_download = access_heads
|
required_access_download = access_heads
|
||||||
|
color = LIGHT_COLOR_ORANGE
|
||||||
|
|
||||||
/datum/nano_module/camera_monitor
|
/datum/nano_module/camera_monitor
|
||||||
name = "Camera Monitoring program"
|
name = "Camera Monitoring program"
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ var/warrant_uid = 0
|
|||||||
filename = "digitalwarrant"
|
filename = "digitalwarrant"
|
||||||
filedesc = "Warrant Assistant"
|
filedesc = "Warrant Assistant"
|
||||||
extended_desc = "Official NTsec program for creation and handling of warrants."
|
extended_desc = "Official NTsec program for creation and handling of warrants."
|
||||||
|
program_icon_state = "security"
|
||||||
|
color = LIGHT_COLOR_ORANGE
|
||||||
size = 8
|
size = 8
|
||||||
requires_ntnet = 1
|
requires_ntnet = 1
|
||||||
available_on_ntnet = 1
|
available_on_ntnet = 1
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
filedesc = "NTOS Client Manager"
|
filedesc = "NTOS Client Manager"
|
||||||
extended_desc = "This program allows configuration of computer's software"
|
extended_desc = "This program allows configuration of computer's software"
|
||||||
program_icon_state = "generic"
|
program_icon_state = "generic"
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
unsendable = 1
|
unsendable = 1
|
||||||
undeletable = 1
|
undeletable = 1
|
||||||
size = 4
|
size = 4
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
filedesc = "Computer Configuration Tool"
|
filedesc = "Computer Configuration Tool"
|
||||||
extended_desc = "This program allows configuration of computer's hardware"
|
extended_desc = "This program allows configuration of computer's hardware"
|
||||||
program_icon_state = "generic"
|
program_icon_state = "generic"
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
unsendable = 1
|
unsendable = 1
|
||||||
undeletable = 1
|
undeletable = 1
|
||||||
size = 4
|
size = 4
|
||||||
@@ -59,4 +60,4 @@
|
|||||||
ui = new(user, src, ui_key, "laptop_configuration.tmpl", "NTOS Configuration Utility", 575, 700, state = state)
|
ui = new(user, src, ui_key, "laptop_configuration.tmpl", "NTOS Configuration Utility", 575, 700, state = state)
|
||||||
ui.auto_update_layout = 1
|
ui.auto_update_layout = 1
|
||||||
ui.set_initial_data(data)
|
ui.set_initial_data(data)
|
||||||
ui.open()
|
ui.open()
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
filedesc = "NTOS File Manager"
|
filedesc = "NTOS File Manager"
|
||||||
extended_desc = "This program allows management of files."
|
extended_desc = "This program allows management of files."
|
||||||
program_icon_state = "generic"
|
program_icon_state = "generic"
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
size = 8
|
size = 8
|
||||||
requires_ntnet = 0
|
requires_ntnet = 0
|
||||||
available_on_ntnet = 0
|
available_on_ntnet = 0
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
filedesc = "NTNet Software Download Tool"
|
filedesc = "NTNet Software Download Tool"
|
||||||
program_icon_state = "generic"
|
program_icon_state = "generic"
|
||||||
extended_desc = "This program allows downloads of software from official NT repositories"
|
extended_desc = "This program allows downloads of software from official NT repositories"
|
||||||
|
color = LIGHT_COLOR_GREEN
|
||||||
unsendable = 1
|
unsendable = 1
|
||||||
undeletable = 1
|
undeletable = 1
|
||||||
size = 4
|
size = 4
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
critical = 0
|
critical = 0
|
||||||
enabled = 1
|
enabled = 1
|
||||||
icon_state = "teslalink"
|
icon_state = "teslalink"
|
||||||
hardware_size = 2
|
hardware_size = 3
|
||||||
origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
|
origin_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
|
||||||
var/obj/machinery/modular_computer/holder
|
var/obj/machinery/modular_computer/holder
|
||||||
var/passive_charging_rate = 250 // W
|
var/passive_charging_rate = 250 // W
|
||||||
|
|||||||
@@ -116,7 +116,8 @@ var/list/organ_cache = list()
|
|||||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
|
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
|
||||||
if(B && prob(40))
|
if(B && prob(40))
|
||||||
reagents.remove_reagent("blood",0.1)
|
reagents.remove_reagent("blood",0.1)
|
||||||
blood_splatter(src,B,1)
|
if (isturf(loc))
|
||||||
|
blood_splatter(src,B,1)
|
||||||
if(config.organs_decay) damage += rand(1,3)
|
if(config.organs_decay) damage += rand(1,3)
|
||||||
if(damage >= max_damage)
|
if(damage >= max_damage)
|
||||||
damage = max_damage
|
damage = max_damage
|
||||||
|
|||||||
@@ -15,7 +15,17 @@ var/global/datum/robolimb/basic_robolimb
|
|||||||
var/desc = "A generic unbranded robotic prosthesis." // Seen when examining a limb.
|
var/desc = "A generic unbranded robotic prosthesis." // Seen when examining a limb.
|
||||||
var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from.
|
var/icon = 'icons/mob/human_races/robotic.dmi' // Icon base to draw from.
|
||||||
var/unavailable_at_chargen // If set, not available at chargen.
|
var/unavailable_at_chargen // If set, not available at chargen.
|
||||||
var/list/species_can_use = list("Human","Skrell","Tajara","Zhan-Khaza","M'sai","Unathi","Vaurca Worker","Vaurca Warrior","Baseline Frame")
|
var/list/species_can_use = list(
|
||||||
|
"Human",
|
||||||
|
"Skrell",
|
||||||
|
"Tajara",
|
||||||
|
"Zhan-Khazan Tajara",
|
||||||
|
"M'sai Tajara",
|
||||||
|
"Unathi",
|
||||||
|
"Vaurca Worker",
|
||||||
|
"Vaurca Warrior",
|
||||||
|
"Baseline Frame"
|
||||||
|
)
|
||||||
var/paintable = 0 //tired of istype exceptions. bullshirt to find, and by god do i know it after this project.
|
var/paintable = 0 //tired of istype exceptions. bullshirt to find, and by god do i know it after this project.
|
||||||
|
|
||||||
/datum/robolimb/bishop
|
/datum/robolimb/bishop
|
||||||
@@ -61,4 +71,4 @@ var/global/datum/robolimb/basic_robolimb
|
|||||||
company = "Human Synthskin"
|
company = "Human Synthskin"
|
||||||
desc = "This limb is designed to mimic the Human form. It does so with moderate success."
|
desc = "This limb is designed to mimic the Human form. It does so with moderate success."
|
||||||
icon = 'icons/mob/human_races/r_human.dmi'
|
icon = 'icons/mob/human_races/r_human.dmi'
|
||||||
species_can_use = list("Human")
|
species_can_use = list("Human")
|
||||||
|
|||||||
@@ -766,7 +766,7 @@
|
|||||||
var/amount_to_take = max(0,min(stack.amount,round(remaining_volume/REAGENTS_PER_SHEET)))
|
var/amount_to_take = max(0,min(stack.amount,round(remaining_volume/REAGENTS_PER_SHEET)))
|
||||||
if(amount_to_take)
|
if(amount_to_take)
|
||||||
stack.use(amount_to_take)
|
stack.use(amount_to_take)
|
||||||
if(deleted(stack))
|
if(QDELETED(stack))
|
||||||
holdingitems -= stack
|
holdingitems -= stack
|
||||||
beaker.reagents.add_reagent(sheet_reagents[stack.type], (amount_to_take*REAGENTS_PER_SHEET))
|
beaker.reagents.add_reagent(sheet_reagents[stack.type], (amount_to_take*REAGENTS_PER_SHEET))
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -1097,8 +1097,8 @@ datum/design/item/experimental_welder
|
|||||||
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small
|
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small
|
||||||
sort_string = "VBAAY"
|
sort_string = "VBAAY"
|
||||||
|
|
||||||
// Tesla Link
|
// AI Slot
|
||||||
/datum/design/item/modularcomponent/teslalink
|
/datum/design/item/modularcomponent/aislot
|
||||||
name = "intellicard slot"
|
name = "intellicard slot"
|
||||||
id = "aislot"
|
id = "aislot"
|
||||||
req_tech = list(TECH_POWER = 2, TECH_DATA = 3)
|
req_tech = list(TECH_POWER = 2, TECH_DATA = 3)
|
||||||
|
|||||||
11
html/changelogs/lohikar-PR-1809.yml
Normal file
11
html/changelogs/lohikar-PR-1809.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
author: Lohikar
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscdel: "Tesla links can no longer be installed in laptops and tablets."
|
||||||
|
- tweak: "Most voidsuits should have in-hand sprites once more."
|
||||||
|
- bugfix: "Tesla links are now constructable at protolathes as was originally intended."
|
||||||
|
- tweak: "Modular computers now emit different colors of light depending on what program is currently running."
|
||||||
|
- tweak: "Computers' sprites now show if the computer is functional or not."
|
||||||
|
- bugfix: "Severed organs inside containers will no longer leave blood drips."
|
||||||
|
- bugfix: "M'sai and Zhan-Khazan Tajara can now use prosthetics."
|
||||||
|
- bugfix: "Fixed a bug that prevented Coal and Iron ore from spawning on the asteroid."
|
||||||
@@ -11,8 +11,6 @@ changes:
|
|||||||
- rscdel: "Hallucinations no longer rotate your view for the same reason as above."
|
- rscdel: "Hallucinations no longer rotate your view for the same reason as above."
|
||||||
- tweak: "Colored lighting should mix better now."
|
- tweak: "Colored lighting should mix better now."
|
||||||
- tweak: "Rebalanced light emission of most light sources to better fit new lighting system."
|
- tweak: "Rebalanced light emission of most light sources to better fit new lighting system."
|
||||||
- tweak: "Diona now gain energy from 'UV' light, emitted by station lighting as well as one or two portable light sources."
|
|
||||||
- rscdel: "Diona no longer gain any energy from flashlights & other portable light sources."
|
|
||||||
- experiment: "Lighting now updates immediately when you open an airlock."
|
- experiment: "Lighting now updates immediately when you open an airlock."
|
||||||
- experiment: "Completely rewrote lighting system."
|
- experiment: "Completely rewrote lighting system."
|
||||||
- experiment: "The game's mob processor should be more robust."
|
- experiment: "The game's mob processor should be more robust."
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
@@ -5695,7 +5695,6 @@
|
|||||||
"cfA" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/effect/floor_decal/corner/paleblue{tag = "icon-corner_white (NORTHEAST)"; icon_state = "corner_white"; dir = 5},/turf/simulated/floor/tiled,/area/engineering/foyer)
|
"cfA" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/effect/floor_decal/corner/paleblue{tag = "icon-corner_white (NORTHEAST)"; icon_state = "corner_white"; dir = 5},/turf/simulated/floor/tiled,/area/engineering/foyer)
|
||||||
"cfB" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/effect/floor_decal/corner/paleblue{tag = "icon-corner_white (NORTHEAST)"; icon_state = "corner_white"; dir = 5},/turf/simulated/floor/tiled,/area/engineering/foyer)
|
"cfB" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/effect/floor_decal/corner/paleblue{tag = "icon-corner_white (NORTHEAST)"; icon_state = "corner_white"; dir = 5},/turf/simulated/floor/tiled,/area/engineering/foyer)
|
||||||
"cfC" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/obj/effect/floor_decal/corner/yellow,/turf/simulated/floor/tiled,/area/engineering/foyer)
|
"cfC" = (/obj/machinery/newscaster{pixel_x = 31; pixel_y = 3},/obj/effect/floor_decal/corner/yellow,/turf/simulated/floor/tiled,/area/engineering/foyer)
|
||||||
"cfD" = (/obj/item/modular_computer/telescreen/preset/generic{pixel_y = 32},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
|
|
||||||
"cfE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
|
"cfE" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
|
||||||
"cfF" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/structure/flora/pottedplant/random,/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
|
"cfF" = (/obj/machinery/light,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/structure/flora/pottedplant/random,/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
|
||||||
"cfG" = (/obj/machinery/light,/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
|
"cfG" = (/obj/machinery/light,/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/engineering/break_room)
|
||||||
@@ -7528,7 +7527,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUXbNVbNVbNVbNVbSsbUYbNUbUZaaabVabPzbPzbVbbVcbPCbPCbVdbPCbVebOdbTCbTAbTDbOdbVibVibVibVibVibVibVibVibVjbVkbVlbVmbVmbVnbOsbDHbTGbTEbTRbTQbTWbVtbTYbTvbUabTZbUibTYbUkbUjbUnbUmbUtbUsbUvbUubUxbUwbVJbVKbUybVMbRHbVNbUzbVNbRLbBjbNnbUAbUCbUBbUEbUDbUGbUFbUIbUHbzHbUKbzHbzHbUJbBWbLcbBWbVZaafbURbUObUVbUUbWebUWbWgbUNbVfbVgbNubWkcrXbPkbVpbVobVrbVqaapaapaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVsbMtbMtbMtbMtbMtbMtbMtbVubMubMtbMtbLpbLpbVvbLqbKUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJoaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbUXbNVbNVbNVbNVbSsbUYbNUbUZaaabVabPzbPzbVbbVcbPCbPCbVdbPCbVebOdbTCbTAbTDbOdbVibVibVibVibVibVibVibVibVjbVkbVlbVmbVmbVnbOsbDHbTGbTEbTRbTQbTWbVtbTYbTvbUabTZbUibTYbUkbUjbUnbUmbUtbUsbUvbUubUxbUwbVJbVKbUybVMbRHbVNbUzbVNbRLbBjbNnbUAbUCbUBbUEbUDbUGbUFbUIbUHbzHbUKbzHbzHbUJbBWbLcbBWbVZaafbURbUObUVbUUbWebUWbWgbUNbVfbVgbNubWkcrXbPkbVpbVobVrbVqaapaapaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVsbMtbMtbMtbMtbMtbMtbMtbVubMubMtbMtbLpbLpbVvbLqbKUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbVwbVwbWvbWwbNVbWxbSsbWybNVaaaaaaaaaaaabNWbWzbWAbWBbWCbWDbPCbOdbVzbVybMUbOdbVibWGbWHbWIbWJbWKbWLbVibWMbWMbWMbWMbWMbUhbVBbVAbVDbVCbVFbVEbVHbVhbVIbVGbVObVLbVObVPbVObVQbVSbVRbVUbVTbVVbVTbVXbVWbWabVYbWcbWbbWfbWdbWibWhbXqbXrbNnbWjbWnbWmbWpbWobWqbWpbWpbWrbWsbBUbWubWtbBWbBWbLcbBWbXCaafbURbWFbWFbWNbWPbWObWRbWEbOUbWSbNubWkbXLbPkbPkbPkbPkbPkaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKTbPMbPMbPMbPMbPMbPMbWTbMtbWUbPMbPMbLpbLpbLpbLpbKTaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYwbVwbVwbWvbWwbNVbWxbSsbWybNVaaaaaaaaaaaabNWbWzbWAbWBbWCbWDbPCbOdbVzbVybMUbOdbVibWGbWHbWIbWJbWKbWLbVibWMbWMbWMbWMbWMbUhbVBbVAbVDbVCbVFbVEbVHbVhbVIbVGbVObVLbVObVPbVObVQbVSbVRbVUbVTbVVbVTbVXbVWbWabVYbWcbWbbWfbWdbWibWhbXqbXrbNnbWjbWnbWmbWpbWobWqbWpbWpbWrbWsbBUbWubWtbBWbBWbLcbBWbXCaafbURbWFbWFbWNbWPbWObWRbWEbOUbWSbNubWkbXLbPkbPkbPkbPkbPkaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKTbPMbPMbPMbPMbPMbPMbWTbMtbWUbPMbPMbLpbLpbLpbLpbKTaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXObXPbXQbXRbSsbXSbXTbXUbXVbNVaaLaaaaaaaaabNWbNWbNWbNWbNWbNWbNWbOdbWWbWVbWXbOdbVibXZbYabYbbYbbYabYcbVibWZbWYbWYbXabWMbYgbDHbDHbXcbXbbXebXdbXgbWQbXhbXfbXjbXibXlbXkbXnbXmbXpbXobXtbXsbXvbXubXxbXwbXzbXybXBbXAbXEbXDbXGbXFbnFbYLbIPbXHbXJbXIbXMbXKbXWbXNbXYbXXbYebYdbALbYfbYhbALbYjbYibZbaafbURbYlbYnbYmbWebYobZgbYkbYpbYqbNubWkbYtbYsbYvbYubUQaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKTbLpbLpbLpbLpbLpbLpbSEbMtbRnbLpbLpbLpbLpbLpbKTbKTaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXObXPbXQbXRbSsbXSbXTbXUbXVbNVaaLaaaaaaaaabNWbNWbNWbNWbNWbNWbNWbOdbWWbWVbWXbOdbVibXZbYabYbbYbbYabYcbVibWZbWYbWYbXabWMbYgbDHbDHbXcbXbbXebXdbXgbWQbXhbXfbXjbXibXlbXkbXnbXmbXpbXobXtbXsbXvbXubXxbXwbXzbXybXBbXAbXEbXDbXGbXFbnFbYLbIPbXHbXJbXIbXMbXKbXWbXNbXYbXXbYebYdbALbYfbYhbALbYjbYibZbaafbURbYlbYnbYmbWebYobZgbYkbYpbYqbNubWkbYtbYsbYvbYubUQaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKTbLpbLpbLpbLpbLpbLpbSEbMtbRnbLpbLpbLpbLpbLpbKTbKTaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYxbVwbVwbWvbZnbZobZpbNVbZqbNVbZrbZsbZtbZrbZrbYzcfDbYybYBbYAbZzbYCbYEbYDbYGbYFbZFbYabZGbZHbZIbZJbZKbYHbYJbYIbYMbYKbWMbZQbOqbZRbYObYNbYPbYPbYRbYrbYSbYQbUlbUlbZZbYTbUlbUlbYUcaccadcaebYWbYVbYXcaibYYcaicakcalbYZcalcakbZabnFbNmbIPbZcbZebZdbZhbZfbZjbZibNnbNnbwCbwCbwCbwCbwCbZkbZmbZlbwCbNubNubNubNubNubNubNubNubNubNubNubNucaybZwbZvbZybZxbUQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKTbKTbRnbLpbLpbLpbLpbLpbLpbLpbLpbLpbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYxbVwbVwbWvbZnbZobZpbNVbZqbNVbZrbZsbZtbZrbZrbYzbYzbYybYBbYAbZzbYCbYEbYDbYGbYFbZFbYabZGbZHbZIbZJbZKbYHbYJbYIbYMbYKbWMbZQbOqbZRbYObYNbYPbYPbYRbYrbYSbYQbUlbUlbZZbYTbUlbUlbYUcaccadcaebYWbYVbYXcaibYYcaicakcalbYZcalcakbZabnFbNmbIPbZcbZebZdbZhbZfbZjbZibNnbNnbwCbwCbwCbwCbwCbZkbZmbZlbwCbNubNubNubNubNubNubNubNubNubNubNubNucaybZwbZvbZybZxbUQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKTbKTbRnbLpbLpbLpbLpbLpbLpbLpbLpbLpbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamcaBaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaacaCcaDcaDcaDcaEcaDcaDbZBbZAbZrbZCbZDbZrbZLbZEbZNbZMbZPbZObZTbZSbZVbZUbZXbZWcaVbYabZGcaWcaXbZJcaYbVibWMbWMbWMbWMbWMcaZbOqbDHcaabZYcafcabcahbZucajcagbUlcamaAJaLrcaocbmcbncbocbpcaebYXbYVcapcaicarcaqcakcascaucatcakcawbnFbBjbIPcbxcbycbzcbxcbxbIPbIPbIPcFkcGucbCcbDcbEbwCbwCcavbwCbwCcKNcbHcazcbJcbKcbLcbMcbNcbOcbPcbQcbRcbScbTbUQbUQbUQbUQaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKSbKTbTzbTxbTxbLpbLpbLpbLpbLpbLpbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamcaBaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaacaCcaDcaDcaDcaEcaDcaDbZBbZAbZrbZCbZDbZrbZLbZEbZNbZMbZPbZObZTbZSbZVbZUbZXbZWcaVbYabZGcaWcaXbZJcaYbVibWMbWMbWMbWMbWMcaZbOqbDHcaabZYcafcabcahbZucajcagbUlcamaAJaLrcaocbmcbncbocbpcaebYXbYVcapcaicarcaqcakcascaucatcakcawbnFbBjbIPcbxcbycbzcbxcbxbIPbIPbIPcFkcGucbCcbDcbEbwCbwCcavbwCbwCcKNcbHcazcbJcbKcbLcbMcbNcbOcbPcbQcbRcbScbTbUQbUQbUQbUQaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKSbKTbTzbTxbTxbLpbLpbLpbLpbLpbLpbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcaAcaGcaFcaIcaHcbZcaJcaLcaKbZrcaMcaNbZrbZrcaOcaQcaPcaScaRcckcaTbYEbYDbYGcaUcbabYabYaccoccpbYaccqbVicbccbbbWMcbdbWMbUhccuccuccuccuccuccuccubUlcbecaxbUlcbfcbhcbgcbicbmccBccCccDcaebYXbYVcbjcaicblcbkcakcbqcbscbrcakcbubnFccLccMccNccOccPccQccNctcccSccTccUccVccWccXccUccYcbtcbwcbvcbUcbIcdhcbVcdgcdhcdicdjcdhcdkcdlcdmcdncdocdpcdqcbWbUQbUQbUQbUQaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabPlbKTbMDbKTbKTbLpbLpbLpbLpbLpbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcaAcaGcaFcaIcaHcbZcaJcaLcaKbZrcaMcaNbZrbZrcaOcaQcaPcaScaRcckcaTbYEbYDbYGcaUcbabYabYaccoccpbYaccqbVicbccbbbWMcbdbWMbUhccuccuccuccuccuccuccubUlcbecaxbUlcbfcbhcbgcbicbmccBccCccDcaebYXbYVcbjcaicblcbkcakcbqcbscbrcakcbubnFccLccMccNccOccPccQccNctcccSccTccUccVccWccXccUccYcbtcbwcbvcbUcbIcdhcbVcdgcdhcdicdjcdhcdkcdlcdmcdncdocdpcdqcbWbUQbUQbUQbUQaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabPlbKTbMDbKTbKTbLpbLpbLpbLpbLpbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbXcbXcaFccacbYcbZccbccccdxbZrccdccfccecchccgccjcciccmcclcdHccnccsccrccvcctccwcdOcdPcdQcdRcdScdTccxcczccyccEccAbWMbUhccuccFccHccGccJccIccZcbFcdaccKcdccdbcdecddcdfcbmcdtcdscducaebYXbYVcdrcaicdwcdvcakcdzcdBcdAcakcdDbnFbnFcexccNceycezceAccNceBceCceDceEceEceFceGceEceHcdCcdFcdEceHceLceMceNceOceLceLceLceLcePceNceOceLceLceQceRcdIceTcdKcdJceWcdLcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdUcdNcdNcdVbKTbKTbLpbLpcdWbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbXcbXcaFccacbYcbZccbccccdxbZrccdccfccecchccgccjcciccmcclcdHccnccsccrccvcctccwcdOcdPcdQcdRcdScdTccxcczccyccEccAbWMbUhccuccFccHccGccJccIccZcbFcdaccKcdccdbcdecddcdfcbmcdtcdscducaebYXbYVcdrcaicdwcdvcakcdzcdBcdAcakcdDbnFbnFcexccNceycezceAccNceBceCceDceEceEceFceGceEceHcdCcdFcdEceHceLceMceNceOceLceLceLceLcePceNceOceLceLceQceRcdIceTcdKcdJceWcdLcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdMcdUcdNcdNcdVbKTbKTbLpbLpcdWbLpbLpbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
|
|||||||
Reference in New Issue
Block a user