mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +00:00
Merge branch 'master' into fuckCael
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
// Comment this out if the external btime library is unavailable
|
||||
#define PRECISE_TIMER_AVAILABLE
|
||||
|
||||
#ifdef PRECISE_TIMER_AVAILABLE
|
||||
var/global/__btime__libName = "btime.[world.system_type==MS_WINDOWS?"dll":"so"]"
|
||||
#define TimeOfHour (__extern__timeofhour)
|
||||
#define __extern__timeofhour text2num(call(__btime__libName, "gettime")())
|
||||
/hook/startup/proc/checkbtime()
|
||||
try
|
||||
// This will always return 1 unless the btime library cannot be accessed
|
||||
if(TimeOfHour || 1) return 1
|
||||
catch(var/exception/e)
|
||||
log_to_dd("PRECISE_TIMER_AVAILABLE is defined in btime.dm, but calling the btime library failed: [e]")
|
||||
log_to_dd("This is a fatal error. The world will now shut down.")
|
||||
del(world)
|
||||
#else
|
||||
#define TimeOfHour (world.timeofday % 36000)
|
||||
#endif
|
||||
@@ -27,3 +27,6 @@
|
||||
|
||||
#define TICKS_IN_DAY 24*60*60*10
|
||||
#define TICKS_IN_SECOND 10
|
||||
|
||||
#define SIMPLE_SIGN(X) ((X) < 0 ? -1 : 1)
|
||||
#define SIGN(X) ((X) ? SIMPLE_SIGN(X) : 0)
|
||||
|
||||
@@ -11,10 +11,9 @@
|
||||
#define PROCESS_DEFAULT_HANG_ALERT_TIME 600 // 60 seconds
|
||||
#define PROCESS_DEFAULT_HANG_RESTART_TIME 900 // 90 seconds
|
||||
#define PROCESS_DEFAULT_SCHEDULE_INTERVAL 50 // 50 ticks
|
||||
#define PROCESS_DEFAULT_SLEEP_INTERVAL 8 // 2 ticks
|
||||
#define PROCESS_DEFAULT_CPU_THRESHOLD 90 // 90%
|
||||
#define PROCESS_DEFAULT_SLEEP_INTERVAL 8 // 1/8th of a tick
|
||||
|
||||
// SCHECK macros
|
||||
// This references src directly to work around a weird bug with try/catch
|
||||
#define SCHECK_EVERY(this_many_calls) if(++src.calls_since_last_scheck >= this_many_calls) sleepCheck()
|
||||
#define SCHECK SCHECK_EVERY(50)
|
||||
#define SCHECK sleepCheck()
|
||||
|
||||
@@ -4,17 +4,56 @@
|
||||
#define MINUTE *600
|
||||
#define MINUTES *600
|
||||
|
||||
var/roundstart_hour = 0
|
||||
//Returns the world time in english
|
||||
proc/worldtime2text(time = world.time, timeshift = 1)
|
||||
if(!roundstart_hour) roundstart_hour = pick(2,7,12,17)
|
||||
return timeshift ? time2text(time+(36000*roundstart_hour), "hh:mm") : time2text(time, "hh:mm")
|
||||
#define HOUR *36000
|
||||
#define HOURS *36000
|
||||
|
||||
proc/worlddate2text()
|
||||
return num2text((text2num(time2text(world.timeofday, "YYYY"))+544)) + "-" + time2text(world.timeofday, "MM-DD")
|
||||
#define DAY *864000
|
||||
#define DAYS *864000
|
||||
|
||||
proc/time_stamp()
|
||||
return time2text(world.timeofday, "hh:mm:ss")
|
||||
#define TimeOfGame (get_game_time())
|
||||
#define TimeOfTick (world.tick_usage*0.01*world.tick_lag)
|
||||
|
||||
/proc/get_game_time()
|
||||
var/global/time_offset = 0
|
||||
var/global/last_time = 0
|
||||
var/global/last_usage = 0
|
||||
|
||||
var/wtime = world.time
|
||||
var/wusage = world.tick_usage * 0.01
|
||||
|
||||
if(last_time < wtime && last_usage > 1)
|
||||
time_offset += last_usage - 1
|
||||
|
||||
last_time = wtime
|
||||
last_usage = wusage
|
||||
|
||||
return wtime + (time_offset + wusage) * world.tick_lag
|
||||
|
||||
var/roundstart_hour
|
||||
var/station_date = ""
|
||||
var/next_station_date_change = 1 DAY
|
||||
|
||||
#define duration2stationtime(time) time2text(station_time_in_ticks + time, "hh:mm")
|
||||
#define worldtime2stationtime(time) time2text(roundstart_hour HOURS + time, "hh:mm")
|
||||
#define round_duration_in_ticks (round_start_time ? world.time - round_start_time : 0)
|
||||
#define station_time_in_ticks (roundstart_hour HOURS + round_duration_in_ticks)
|
||||
|
||||
/proc/stationtime2text()
|
||||
return time2text(station_time_in_ticks, "hh:mm")
|
||||
|
||||
/proc/stationdate2text()
|
||||
var/update_time = FALSE
|
||||
if(station_time_in_ticks > next_station_date_change)
|
||||
next_station_date_change += 1 DAY
|
||||
update_time = TRUE
|
||||
if(!station_date || update_time)
|
||||
var/extra_days = round(station_time_in_ticks / (1 DAY)) DAYS
|
||||
var/timeofday = world.timeofday + extra_days
|
||||
station_date = num2text((text2num(time2text(timeofday, "YYYY"))+544)) + "-" + time2text(timeofday, "MM-DD")
|
||||
return station_date
|
||||
|
||||
/proc/time_stamp()
|
||||
return time2text(station_time_in_ticks, "hh:mm:ss")
|
||||
|
||||
/* Returns 1 if it is the selected month and day */
|
||||
proc/isDay(var/month, var/day)
|
||||
@@ -36,9 +75,7 @@ var/round_start_time = 0
|
||||
round_start_time = world.time
|
||||
return 1
|
||||
|
||||
#define round_duration_in_ticks (round_start_time ? world.time - round_start_time : 0)
|
||||
|
||||
/proc/round_duration_as_text()
|
||||
/proc/roundduration2text()
|
||||
if(!round_start_time)
|
||||
return "00:00"
|
||||
if(last_round_duration && world.time < next_duration_update)
|
||||
@@ -55,3 +92,12 @@ var/round_start_time = 0
|
||||
last_round_duration = "[hours]:[mins]"
|
||||
next_duration_update = world.time + 1 MINUTES
|
||||
return last_round_duration
|
||||
|
||||
//Can be useful for things dependent on process timing
|
||||
/proc/process_schedule_interval(var/process_name)
|
||||
var/datum/controller/process/process = processScheduler.getProcess(process_name)
|
||||
return process.schedule_interval
|
||||
|
||||
/hook/startup/proc/set_roundstart_hour()
|
||||
roundstart_hour = pick(2,7,12,17)
|
||||
return 1
|
||||
@@ -1,19 +0,0 @@
|
||||
/**
|
||||
* _stubs.dm
|
||||
*
|
||||
* This file contains constructs that the process scheduler expects to exist
|
||||
* in a standard ss13 fork.
|
||||
*/
|
||||
|
||||
/**
|
||||
* logTheThing
|
||||
*
|
||||
* In goonstation, this proc writes a message to either the world log or diary.
|
||||
*
|
||||
* Blame Keelin.
|
||||
*/
|
||||
/proc/logTheThing(type, source, target, text, diaryType)
|
||||
if(diaryType)
|
||||
log_debug("Diary: \[[diaryType]:[type]] [text]")
|
||||
else
|
||||
log_debug("Log: \[[type]] [text]")
|
||||
@@ -69,10 +69,10 @@
|
||||
* recordkeeping vars
|
||||
*/
|
||||
|
||||
// Records the time (1/10s timeofday) at which the process last finished sleeping
|
||||
// Records the time (1/10s timeoftick) at which the process last finished sleeping
|
||||
var/tmp/last_slept = 0
|
||||
|
||||
// Records the time (1/10s timeofday) at which the process last began running
|
||||
// Records the time (1/10s timeofgame) at which the process last began running
|
||||
var/tmp/run_start = 0
|
||||
|
||||
// Records the number of times this process has been killed and restarted
|
||||
@@ -106,12 +106,8 @@
|
||||
last_object = null
|
||||
|
||||
/datum/controller/process/proc/started()
|
||||
var/timeofhour = TimeOfHour
|
||||
// Initialize last_slept so we can know when to sleep
|
||||
last_slept = timeofhour
|
||||
|
||||
// Initialize run_start so we can detect hung processes.
|
||||
run_start = timeofhour
|
||||
run_start = TimeOfGame
|
||||
|
||||
// Initialize defer count
|
||||
cpu_defer_count = 0
|
||||
@@ -163,18 +159,13 @@
|
||||
setStatus(PROCESS_STATUS_HUNG)
|
||||
|
||||
/datum/controller/process/proc/handleHung()
|
||||
var/timeofhour = TimeOfHour
|
||||
var/datum/lastObj = last_object
|
||||
var/lastObjType = "null"
|
||||
if(istype(lastObj))
|
||||
lastObjType = lastObj.type
|
||||
|
||||
// If timeofhour has rolled over, then we need to adjust.
|
||||
if (timeofhour < run_start)
|
||||
run_start -= 36000
|
||||
var/msg = "[name] process hung at tick #[ticks]. Process was unresponsive for [(timeofhour - run_start) / 10] seconds and was restarted. Last task: [last_task]. Last Object Type: [lastObjType]"
|
||||
logTheThing("debug", null, null, msg)
|
||||
logTheThing("diary", null, null, msg, "debug")
|
||||
var/msg = "[name] process hung at tick #[ticks]. Process was unresponsive for [(TimeOfGame - run_start) / 10] seconds and was restarted. Last task: [last_task]. Last Object Type: [lastObjType]"
|
||||
log_debug(msg)
|
||||
message_admins(msg)
|
||||
|
||||
main.restartProcess(src.name)
|
||||
@@ -182,8 +173,8 @@
|
||||
/datum/controller/process/proc/kill()
|
||||
if (!killed)
|
||||
var/msg = "[name] process was killed at tick #[ticks]."
|
||||
logTheThing("debug", null, null, msg)
|
||||
logTheThing("diary", null, null, msg, "debug")
|
||||
log_debug(msg)
|
||||
message_admins(msg)
|
||||
//finished()
|
||||
|
||||
// Allow inheritors to clean up if needed
|
||||
@@ -208,17 +199,12 @@
|
||||
if (main.getCurrentTickElapsedTime() > main.timeAllowance)
|
||||
sleep(world.tick_lag)
|
||||
cpu_defer_count++
|
||||
last_slept = TimeOfHour
|
||||
last_slept = 0
|
||||
else
|
||||
var/timeofhour = TimeOfHour
|
||||
// If timeofhour has rolled over, then we need to adjust.
|
||||
if (timeofhour < last_slept)
|
||||
last_slept -= 36000
|
||||
|
||||
if (timeofhour > last_slept + sleep_interval)
|
||||
if (TimeOfTick > last_slept + sleep_interval)
|
||||
// If we haven't slept in sleep_interval deciseconds, sleep to allow other work to proceed.
|
||||
sleep(0)
|
||||
last_slept = TimeOfHour
|
||||
last_slept = TimeOfTick
|
||||
|
||||
/datum/controller/process/proc/update()
|
||||
// Clear delta
|
||||
@@ -239,10 +225,7 @@
|
||||
|
||||
|
||||
/datum/controller/process/proc/getElapsedTime()
|
||||
var/timeofhour = TimeOfHour
|
||||
if (timeofhour < run_start)
|
||||
return timeofhour - (run_start - 36000)
|
||||
return timeofhour - run_start
|
||||
return TimeOfGame - run_start
|
||||
|
||||
/datum/controller/process/proc/tickDetail()
|
||||
return
|
||||
@@ -343,6 +326,11 @@
|
||||
stat("[name]", "T#[getTicks()] | AR [averageRunTime] | LR [lastRunTime] | HR [highestRunTime] | D [cpu_defer_count]")
|
||||
|
||||
/datum/controller/process/proc/catchException(var/exception/e, var/thrower)
|
||||
if(istype(e)) // Real runtimes go to the real error handler
|
||||
// There are two newlines here, because handling desc sucks
|
||||
e.desc = " Caught by process: [name]\n\n" + e.desc
|
||||
world.Error(e, e_src = thrower)
|
||||
return
|
||||
var/etext = "[e]"
|
||||
var/eid = "[e]" // Exception ID, for tracking repeated exceptions
|
||||
var/ptext = "" // "processing..." text, for what was being processed (if known)
|
||||
|
||||
@@ -43,8 +43,6 @@ var/global/datum/controller/processScheduler/processScheduler
|
||||
|
||||
var/tmp/currentTick = 0
|
||||
|
||||
var/tmp/currentTickStart = 0
|
||||
|
||||
var/tmp/timeAllowance = 0
|
||||
|
||||
var/tmp/cpuAverage = 0
|
||||
@@ -247,7 +245,7 @@ var/global/datum/controller/processScheduler/processScheduler
|
||||
|
||||
/datum/controller/processScheduler/proc/recordStart(var/datum/controller/process/process, var/time = null)
|
||||
if (isnull(time))
|
||||
time = TimeOfHour
|
||||
time = TimeOfGame
|
||||
last_queued[process] = world.time
|
||||
last_start[process] = time
|
||||
else
|
||||
@@ -256,11 +254,7 @@ var/global/datum/controller/processScheduler/processScheduler
|
||||
|
||||
/datum/controller/processScheduler/proc/recordEnd(var/datum/controller/process/process, var/time = null)
|
||||
if (isnull(time))
|
||||
time = TimeOfHour
|
||||
|
||||
// If world.timeofday has rolled over, then we need to adjust.
|
||||
if (time < last_start[process])
|
||||
last_start[process] -= 36000
|
||||
time = TimeOfGame
|
||||
|
||||
var/lastRunTime = time - last_start[process]
|
||||
|
||||
@@ -349,29 +343,23 @@ var/global/datum/controller/processScheduler/processScheduler
|
||||
updateCurrentTickData()
|
||||
return 0
|
||||
else
|
||||
return TimeOfHour - currentTickStart
|
||||
return TimeOfTick
|
||||
|
||||
/datum/controller/processScheduler/proc/updateCurrentTickData()
|
||||
if (world.time > currentTick)
|
||||
// New tick!
|
||||
currentTick = world.time
|
||||
currentTickStart = TimeOfHour
|
||||
updateTimeAllowance()
|
||||
cpuAverage = (world.cpu + cpuAverage + cpuAverage) / 3
|
||||
|
||||
/datum/controller/processScheduler/proc/updateTimeAllowance()
|
||||
// Time allowance goes down linearly with world.cpu.
|
||||
var/tmp/error = cpuAverage - 100
|
||||
var/tmp/timeAllowanceDelta = sign(error) * -0.5 * world.tick_lag * max(0, 0.001 * abs(error))
|
||||
var/tmp/timeAllowanceDelta = SIMPLE_SIGN(error) * -0.5 * world.tick_lag * max(0, 0.001 * abs(error))
|
||||
|
||||
//timeAllowance = world.tick_lag * min(1, 0.5 * ((200/max(1,cpuAverage)) - 1))
|
||||
timeAllowance = min(timeAllowanceMax, max(0, timeAllowance + timeAllowanceDelta))
|
||||
|
||||
/datum/controller/processScheduler/proc/sign(var/x)
|
||||
if (x == 0)
|
||||
return 1
|
||||
return x / abs(x)
|
||||
|
||||
/datum/controller/processScheduler/proc/statProcesses()
|
||||
if(!isRunning)
|
||||
stat("Processes", "Scheduler not running")
|
||||
@@ -380,3 +368,6 @@ var/global/datum/controller/processScheduler/processScheduler
|
||||
stat(null, "[round(cpuAverage, 0.1)] CPU, [round(timeAllowance, 0.1)/10] TA")
|
||||
for(var/datum/controller/process/p in processes)
|
||||
p.statProcess()
|
||||
|
||||
/datum/controller/processScheduler/proc/getProcess(var/process_name)
|
||||
return nameToProcessMap[process_name]
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
(function ($) {
|
||||
function setRef(theRef) {
|
||||
ref = theRef;
|
||||
}
|
||||
|
||||
function jax(action, data) {
|
||||
if (typeof data === 'undefined')
|
||||
data = {};
|
||||
var params = [];
|
||||
for (var k in data) {
|
||||
if (data.hasOwnProperty(k)) {
|
||||
params.push(encodeURIComponent(k) + '=' + encodeURIComponent(data[k]));
|
||||
}
|
||||
}
|
||||
var newLoc = '?src=' + ref + ';action=' + action + ';' + params.join(';');
|
||||
window.location = newLoc;
|
||||
}
|
||||
|
||||
function requestRefresh(e) {
|
||||
jax("refresh", null);
|
||||
}
|
||||
|
||||
function handleRefresh(processTable) {
|
||||
$('#processTable').html(processTable);
|
||||
initProcessTableButtons();
|
||||
}
|
||||
|
||||
function requestKill(e) {
|
||||
var button = $(e.currentTarget);
|
||||
jax("kill", {name: button.data("process-name")});
|
||||
}
|
||||
|
||||
function requestEnable(e) {
|
||||
var button = $(e.currentTarget);
|
||||
jax("enable", {name: button.data("process-name")});
|
||||
}
|
||||
|
||||
function requestDisable(e) {
|
||||
var button = $(e.currentTarget);
|
||||
jax("disable", {name: button.data("process-name")});
|
||||
}
|
||||
|
||||
function initProcessTableButtons() {
|
||||
$(".kill-btn").on("click", requestKill);
|
||||
$(".enable-btn").on("click", requestEnable);
|
||||
$(".disable-btn").on("click", requestDisable);
|
||||
}
|
||||
|
||||
window.setRef = setRef;
|
||||
window.handleRefresh = handleRefresh;
|
||||
|
||||
$(function() {
|
||||
initProcessTableButtons();
|
||||
$('#btn-refresh').on("click", requestRefresh);
|
||||
});
|
||||
}(jQuery));
|
||||
@@ -342,9 +342,9 @@ var/global/datum/controller/occupations/job_master
|
||||
else
|
||||
permitted = 1
|
||||
|
||||
//if(G.whitelisted && !is_alien_whitelisted(H, all_species[G.whitelisted]))
|
||||
if(G.whitelisted && !is_alien_whitelisted(H, all_species[G.whitelisted]))
|
||||
|
||||
if(G.whitelisted && (G.whitelisted != H.species.name || !is_alien_whitelisted(H, G.whitelisted)))
|
||||
//if(G.whitelisted && (G.whitelisted != H.species.name || !is_alien_whitelisted(H, G.whitelisted)))
|
||||
permitted = 0
|
||||
|
||||
if(!permitted)
|
||||
|
||||
@@ -410,7 +410,7 @@
|
||||
visible_message("<span class='notice'>\The [src] rattles and prints out a sheet of paper.</span>")
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc)
|
||||
P.info = "<CENTER><B>Body Scan - [href_list["name"]]</B></CENTER><BR>"
|
||||
P.info += "<b>Time of scan:</b> [worldtime2text(world.time)]<br><br>"
|
||||
P.info += "<b>Time of scan:</b> [worldtime2stationtime(world.time)]<br><br>"
|
||||
P.info += "[printing_text]"
|
||||
P.info += "<br><br><b>Notes:</b><br>"
|
||||
P.name = "Body Scan - [href_list["name"]]"
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
|
||||
var/obj/item/weapon/paper/P = new(loc)
|
||||
if (mode)
|
||||
P.name = text("crew manifest ([])", worldtime2text())
|
||||
P.name = text("crew manifest ([])", stationtime2text())
|
||||
P.info = {"<h4>Crew Manifest</h4>
|
||||
<br>
|
||||
[data_core ? data_core.get_manifest(0) : ""]
|
||||
|
||||
@@ -20,17 +20,17 @@
|
||||
/obj/item/weapon/card/id/guest/examine(mob/user)
|
||||
..(user)
|
||||
if (world.time < expiration_time)
|
||||
user << "<span class='notice'>This pass expires at [worldtime2text(expiration_time)].</span>"
|
||||
user << "<span class='notice'>This pass expires at [worldtime2stationtime(expiration_time)].</span>"
|
||||
else
|
||||
user << "<span class='warning'>It expired at [worldtime2text(expiration_time)].</span>"
|
||||
user << "<span class='warning'>It expired at [worldtime2stationtime(expiration_time)].</span>"
|
||||
|
||||
/obj/item/weapon/card/id/guest/read()
|
||||
if(!Adjacent(usr))
|
||||
return //Too far to read
|
||||
if (world.time > expiration_time)
|
||||
usr << "<span class='notice'>This pass expired at [worldtime2text(expiration_time)].</span>"
|
||||
usr << "<span class='notice'>This pass expired at [worldtime2stationtime(expiration_time)].</span>"
|
||||
else
|
||||
usr << "<span class='notice'>This pass expires at [worldtime2text(expiration_time)].</span>"
|
||||
usr << "<span class='notice'>This pass expires at [worldtime2stationtime(expiration_time)].</span>"
|
||||
|
||||
usr << "<span class='notice'>It grants access to following areas:</span>"
|
||||
for (var/A in temp_access)
|
||||
@@ -207,13 +207,13 @@
|
||||
if ("issue")
|
||||
if (giver)
|
||||
var/number = add_zero("[rand(0,9999)]", 4)
|
||||
var/entry = "\[[worldtime2text()]\] Pass #[number] issued by [giver.registered_name] ([giver.assignment]) to [giv_name]. Reason: [reason]. Grants access to following areas: "
|
||||
var/entry = "\[[stationtime2text()]\] Pass #[number] issued by [giver.registered_name] ([giver.assignment]) to [giv_name]. Reason: [reason]. Grants access to following areas: "
|
||||
for (var/i=1 to accesses.len)
|
||||
var/A = accesses[i]
|
||||
if (A)
|
||||
var/area = get_access_desc(A)
|
||||
entry += "[i > 1 ? ", [area]" : "[area]"]"
|
||||
entry += ". Expires at [worldtime2text(world.time + duration*10*60)]."
|
||||
entry += ". Expires at [worldtime2stationtime(world.time + duration*10*60)]."
|
||||
internal_log.Add(entry)
|
||||
|
||||
var/obj/item/weapon/card/id/guest/pass = new(src.loc)
|
||||
|
||||
@@ -454,7 +454,7 @@
|
||||
var/counter = 1
|
||||
while(src.active2.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]<BR>[t1]")
|
||||
src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]<BR>[t1]")
|
||||
|
||||
if (href_list["del_c"])
|
||||
if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
|
||||
|
||||
@@ -391,7 +391,7 @@ What a mess.*/
|
||||
var/counter = 1
|
||||
while(active2.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]<BR>[t1]")
|
||||
active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]<BR>[t1]")
|
||||
|
||||
if ("Delete Record (ALL)")
|
||||
if (active1)
|
||||
|
||||
@@ -461,7 +461,7 @@
|
||||
var/counter = 1
|
||||
while(src.active2.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]<BR>[t1]")
|
||||
src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]<BR>[t1]")
|
||||
|
||||
if (href_list["del_c"])
|
||||
if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
|
||||
|
||||
@@ -410,7 +410,7 @@ What a mess.*/
|
||||
var/counter = 1
|
||||
while(active2.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [worldtime2text()], [game_year]<BR>[t1]")
|
||||
active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD")] [stationtime2text()], [game_year]<BR>[t1]")
|
||||
|
||||
if ("Delete Record (ALL)")
|
||||
if (active1)
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = src.name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
D.transaction_log.Add(T)
|
||||
//
|
||||
T = new()
|
||||
@@ -210,7 +210,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = src.name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
vendor_account.transaction_log.Add(T)
|
||||
|
||||
newlap = new /obj/machinery/computer3/laptop/vended(src.loc)
|
||||
@@ -350,7 +350,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = src.name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
D.transaction_log.Add(T)
|
||||
//
|
||||
T = new()
|
||||
@@ -359,7 +359,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = src.name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
vendor_account.transaction_log.Add(T)
|
||||
|
||||
qdel(relap)
|
||||
|
||||
@@ -466,8 +466,8 @@
|
||||
|
||||
|
||||
//Make an announcement and log the person entering storage.
|
||||
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()]"
|
||||
control_computer.frozen_crew += "[occupant.real_name], [occupant.mind.role_alt_title] - [stationtime2text()]"
|
||||
control_computer._admin_logs += "[key_name(occupant)] ([occupant.mind.role_alt_title]) at [stationtime2text()]"
|
||||
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]")
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
var/datum/feed_message/newMsg = new /datum/feed_message
|
||||
newMsg.author = author
|
||||
newMsg.body = msg
|
||||
newMsg.time_stamp = "[worldtime2text()]"
|
||||
newMsg.time_stamp = "[stationtime2text()]"
|
||||
newMsg.is_admin_message = adminMessage
|
||||
if(message_type)
|
||||
newMsg.message_type = message_type
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
return 1
|
||||
if(STATUS_DISPLAY_TIME)
|
||||
message1 = "TIME"
|
||||
message2 = worldtime2text()
|
||||
message2 = stationtime2text()
|
||||
update_display(message1, message2)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -314,7 +314,7 @@
|
||||
T.amount = "[currently_vending.price]"
|
||||
T.source_terminal = src.name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
customer_account.transaction_log.Add(T)
|
||||
|
||||
// Give the vendor the money. We use the account owner name, which means
|
||||
@@ -337,7 +337,7 @@
|
||||
T.amount = "[currently_vending.price]"
|
||||
T.source_terminal = src.name
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
vendor_account.transaction_log.Add(T)
|
||||
|
||||
/obj/machinery/vending/attack_ai(mob/user as mob)
|
||||
|
||||
@@ -66,7 +66,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
/obj/item/device/pda/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "The time [worldtime2text()] is displayed in the corner of the screen."
|
||||
user << "The time [stationtime2text()] is displayed in the corner of the screen."
|
||||
|
||||
/obj/item/device/pda/medical
|
||||
default_cartridge = /obj/item/weapon/cartridge/medical
|
||||
@@ -523,7 +523,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
cartdata["charges"] = cartridge.charges ? cartridge.charges : 0
|
||||
data["cartridge"] = cartdata
|
||||
|
||||
data["stationTime"] = worldtime2text()
|
||||
data["stationTime"] = stationtime2text()
|
||||
data["new_Message"] = new_message
|
||||
data["new_News"] = new_news
|
||||
|
||||
|
||||
@@ -334,7 +334,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
data["video_comm"] = video_source ? "\ref[video_source.loc]" : null
|
||||
data["imContacts"] = im_contacts_ui
|
||||
data["imList"] = im_list_ui
|
||||
data["time"] = worldtime2text()
|
||||
data["time"] = stationtime2text()
|
||||
data["ring"] = ringer
|
||||
data["homeScreen"] = modules_ui
|
||||
data["note"] = note // current notes
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
nanoui_data["categories"] = categories
|
||||
nanoui_data["discount_name"] = discount_item ? discount_item.name : ""
|
||||
nanoui_data["discount_amount"] = (1-discount_amount)*100
|
||||
nanoui_data["offer_expiry"] = worldtime2text(next_offer_time)
|
||||
nanoui_data["offer_expiry"] = worldtime2stationtime(next_offer_time)
|
||||
else if(nanoui_menu == 1)
|
||||
var/items[0]
|
||||
for(var/datum/uplink_item/item in category.items)
|
||||
|
||||
@@ -7,19 +7,16 @@
|
||||
icon_state = "telecrystal"
|
||||
w_class = 1
|
||||
max_amount = 240
|
||||
flags = NOBLUDGEON
|
||||
origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4)
|
||||
force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things
|
||||
|
||||
/obj/item/stack/telecrystal/afterattack(var/obj/item/I as obj, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(I, /obj/item))
|
||||
if(I.hidden_uplink && I.hidden_uplink.active) //No metagaming by using this on every PDA around just to see if it gets used up.
|
||||
I.hidden_uplink.uses += amount
|
||||
I.hidden_uplink.update_nano_data()
|
||||
nanomanager.update_uis(I.hidden_uplink)
|
||||
use(amount)
|
||||
user << "<span class='notice'>You slot \the [src] into \the [I] and charge its internal uplink.</span>"
|
||||
/obj/item/stack/telecrystal/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
if(amount >= 5)
|
||||
target.visible_message("<span class='warning'>\The [target] has been transported with \the [src] by \the [user].</span>")
|
||||
safe_blink(target, 14)
|
||||
use(5)
|
||||
else
|
||||
user << "<span class='warning'>There are not enough telecrystals to do that.</span>"
|
||||
|
||||
/obj/item/stack/telecrystal/attack_self(mob/user as mob)
|
||||
if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
var/scan_data = ""
|
||||
|
||||
if(timeofdeath)
|
||||
scan_data += "<b>Time of death:</b> [worldtime2text(timeofdeath)]<br><br>"
|
||||
scan_data += "<b>Time of death:</b> [worldtime2stationtime(timeofdeath)]<br><br>"
|
||||
|
||||
var/n = 1
|
||||
for(var/wdata_idx in wdata)
|
||||
@@ -133,7 +133,7 @@
|
||||
if(damaging_weapon)
|
||||
scan_data += "Severity: [damage_desc]<br>"
|
||||
scan_data += "Hits by weapon: [total_hits]<br>"
|
||||
scan_data += "Approximate time of wound infliction: [worldtime2text(age)]<br>"
|
||||
scan_data += "Approximate time of wound infliction: [worldtime2stationtime(age)]<br>"
|
||||
scan_data += "Affected limbs: [D.organ_names]<br>"
|
||||
scan_data += "Possible weapons:<br>"
|
||||
for(var/weapon_name in weapon_chances)
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
hitsound = 'sound/weapons/smash.ogg'
|
||||
flags = CONDUCT
|
||||
throwforce = 10
|
||||
w_class = 3.0
|
||||
w_class = 3
|
||||
throw_speed = 2
|
||||
throw_range = 10
|
||||
force = 10.0
|
||||
force = 10
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 90)
|
||||
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
sharp = 1
|
||||
edge = 1
|
||||
w_class = 2
|
||||
force_divisor = 0.2 // 6 with hardness 30 (glass)
|
||||
thrown_force_divisor = 0.4 // 4 with weight 15 (glass)
|
||||
force_divisor = 0.25 // 7.5 with hardness 30 (glass)
|
||||
thrown_force_divisor = 0.5
|
||||
item_state = "shard-glass"
|
||||
attack_verb = list("stabbed", "slashed", "sliced", "cut")
|
||||
default_material = "glass"
|
||||
@@ -87,7 +87,7 @@
|
||||
if(affecting)
|
||||
if(affecting.robotic >= ORGAN_ROBOT)
|
||||
return
|
||||
if(affecting.take_damage(5, 0))
|
||||
if(affecting.take_damage(force, 0))
|
||||
H.UpdateDamageIcon()
|
||||
H.updatehealth()
|
||||
if(affecting.can_feel_pain())
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "red"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red")
|
||||
flags = CONDUCT
|
||||
force = 5
|
||||
force = 10
|
||||
throwforce = 10
|
||||
throw_speed = 1
|
||||
throw_range = 7
|
||||
@@ -67,7 +67,7 @@
|
||||
icon_state = "syndicate"
|
||||
item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi")
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1)
|
||||
force = 7.0
|
||||
force = 14
|
||||
|
||||
/obj/item/weapon/storage/toolbox/syndicate/New()
|
||||
..()
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
icon_state = "wrench"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5.0
|
||||
throwforce = 7.0
|
||||
w_class = 2.0
|
||||
force = 6
|
||||
throwforce = 7
|
||||
w_class = 2
|
||||
origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 150)
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
@@ -39,9 +39,9 @@
|
||||
icon_state = "screwdriver"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT | SLOT_EARS
|
||||
force = 5.0
|
||||
w_class = 1.0
|
||||
throwforce = 5.0
|
||||
force = 6
|
||||
w_class = 1
|
||||
throwforce = 5
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 75)
|
||||
@@ -100,7 +100,7 @@
|
||||
icon_state = "cutters"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 6.0
|
||||
force = 6
|
||||
throw_speed = 2
|
||||
throw_range = 9
|
||||
w_class = 2.0
|
||||
@@ -411,11 +411,11 @@
|
||||
icon_state = "crowbar"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
force = 5.0
|
||||
throwforce = 7.0
|
||||
force = 6
|
||||
throwforce = 7
|
||||
pry = 1
|
||||
item_state = "crowbar"
|
||||
w_class = 2.0
|
||||
w_class = 2
|
||||
origin_tech = list(TECH_ENGINEERING = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50)
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/world
|
||||
|
||||
hub = "Exadv1.spacestation13"
|
||||
//hub_password = "SORRYNOPASSWORD"
|
||||
hub_password = "kMZy3U5jJHSiBQjr"
|
||||
hub_password = "SORRYNOPASSWORD"
|
||||
//hub_password = "kMZy3U5jJHSiBQjr"
|
||||
name = "Space Station 13"
|
||||
|
||||
/* This is for any host that would like their server to appear on the main SS13 hub.
|
||||
|
||||
@@ -392,7 +392,7 @@
|
||||
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
|
||||
var/dat = "<html><head><title>Round Status</title></head><body><h1><B>Round Status</B></h1>"
|
||||
dat += "Current Game Mode: <B>[ticker.mode.name]</B><BR>"
|
||||
dat += "Round Duration: <B>[round_duration_as_text()]</B><BR>"
|
||||
dat += "Round Duration: <B>[roundduration2text()]</B><BR>"
|
||||
dat += "<B>Emergency shuttle</B><BR>"
|
||||
if (!emergency_shuttle.online())
|
||||
dat += "<a href='?src=\ref[src];call_shuttle=1'>Call Shuttle</a><br>"
|
||||
|
||||
@@ -56,32 +56,34 @@ var/list/gear_datums = list()
|
||||
var/mob/preference_mob = preference_mob()
|
||||
for(var/gear_name in gear_datums)
|
||||
var/datum/gear/G = gear_datums[gear_name]
|
||||
//if(G.whitelisted && !is_alien_whitelisted(preference_mob(), all_species[G.whitelisted]))
|
||||
|
||||
if(G.whitelisted && !is_alien_whitelisted(preference_mob, G.whitelisted))
|
||||
if(G.whitelisted && !is_alien_whitelisted(preference_mob, all_species[G.whitelisted]))
|
||||
continue
|
||||
if(max_cost && G.cost > max_cost)
|
||||
continue
|
||||
. += gear_name
|
||||
|
||||
/datum/category_item/player_setup_item/loadout/sanitize_character()
|
||||
var/mob/preference_mob = preference_mob()
|
||||
if(!islist(pref.gear))
|
||||
pref.gear = list()
|
||||
|
||||
for(var/gear_name in pref.gear)
|
||||
if(!(gear_name in gear_datums))
|
||||
pref.gear -= gear_name
|
||||
|
||||
var/total_cost = 0
|
||||
for(var/gear_name in pref.gear)
|
||||
if(!gear_datums[gear_name])
|
||||
preference_mob << "<span class='warning'>You cannot have more than one of the \the [gear_name]</span>"
|
||||
pref.gear -= gear_name
|
||||
else if(!(gear_name in valid_gear_choices()))
|
||||
preference_mob << "<span class='warning'>You cannot take \the [gear_name] as you are not whitelisted for the species.</span>"
|
||||
pref.gear -= gear_name
|
||||
else
|
||||
var/datum/gear/G = gear_datums[gear_name]
|
||||
if(total_cost + G.cost > MAX_GEAR_COST)
|
||||
pref.gear -= gear_name
|
||||
preference_mob << "<span class='warning'>You cannot afford to take \the [gear_name]</span>"
|
||||
else
|
||||
total_cost += G.cost
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ log transactions
|
||||
T.amount = I:worth
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
|
||||
user << "<span class='info'>You insert [I] into [src].</span>"
|
||||
@@ -260,7 +260,7 @@ log transactions
|
||||
T.purpose = transfer_purpose
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
T.amount = "([transfer_amount])"
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
else
|
||||
@@ -302,7 +302,7 @@ log transactions
|
||||
T.purpose = "Unauthorised login attempt"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
failed_account.transaction_log.Add(T)
|
||||
else
|
||||
usr << "\red \icon[src] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining."
|
||||
@@ -322,7 +322,7 @@ log transactions
|
||||
T.purpose = "Remote terminal access"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
|
||||
usr << "\blue \icon[src] Access granted. Welcome user '[authenticated_account.owner_name].'"
|
||||
@@ -350,7 +350,7 @@ log transactions
|
||||
T.amount = "([amount])"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
|
||||
@@ -375,7 +375,7 @@ log transactions
|
||||
T.amount = "([amount])"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
|
||||
@@ -387,7 +387,7 @@ log transactions
|
||||
R.info += "<i>Account holder:</i> [authenticated_account.owner_name]<br>"
|
||||
R.info += "<i>Account number:</i> [authenticated_account.account_number]<br>"
|
||||
R.info += "<i>Balance:</i> $[authenticated_account.money]<br>"
|
||||
R.info += "<i>Date and time:</i> [worldtime2text()], [current_date_string]<br><br>"
|
||||
R.info += "<i>Date and time:</i> [stationtime2text()], [current_date_string]<br><br>"
|
||||
R.info += "<i>Service terminal ID:</i> [machine_id]<br>"
|
||||
|
||||
//stamp the paper
|
||||
@@ -410,7 +410,7 @@ log transactions
|
||||
R.info = "<b>Transaction logs</b><br>"
|
||||
R.info += "<i>Account holder:</i> [authenticated_account.owner_name]<br>"
|
||||
R.info += "<i>Account number:</i> [authenticated_account.account_number]<br>"
|
||||
R.info += "<i>Date and time:</i> [worldtime2text()], [current_date_string]<br><br>"
|
||||
R.info += "<i>Date and time:</i> [stationtime2text()], [current_date_string]<br><br>"
|
||||
R.info += "<i>Service terminal ID:</i> [machine_id]<br>"
|
||||
R.info += "<table border=1 style='width:100%'>"
|
||||
R.info += "<tr>"
|
||||
@@ -486,7 +486,7 @@ log transactions
|
||||
T.purpose = "Remote terminal access"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
authenticated_account.transaction_log.Add(T)
|
||||
|
||||
view_screen = NO_SCREEN
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
M.account_number = rand(111111, 999999)
|
||||
else
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
T.source_terminal = source_db.machine_id
|
||||
|
||||
M.account_number = next_account_number
|
||||
@@ -57,7 +57,7 @@
|
||||
R.info += "<i>Account number:</i> [M.account_number]<br>"
|
||||
R.info += "<i>Account pin:</i> [M.remote_access_pin]<br>"
|
||||
R.info += "<i>Starting balance:</i> $[M.money]<br>"
|
||||
R.info += "<i>Date and time:</i> [worldtime2text()], [current_date_string]<br><br>"
|
||||
R.info += "<i>Date and time:</i> [stationtime2text()], [current_date_string]<br><br>"
|
||||
R.info += "<i>Creation terminal ID:</i> [source_db.machine_id]<br>"
|
||||
R.info += "<i>Authorised NT officer overseeing creation:</i> [source_db.held_card.registered_name]<br>"
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
else
|
||||
T.amount = "[amount]"
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
T.source_terminal = terminal_id
|
||||
D.transaction_log.Add(T)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
T.purpose = reason
|
||||
T.amount = amount
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
T.source_terminal = machine_id
|
||||
return T
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
T.amount = transaction_amount
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>\The [O] doesn't have that much money!</span>"
|
||||
@@ -264,7 +264,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
D.transaction_log.Add(T)
|
||||
//
|
||||
T = new()
|
||||
@@ -273,7 +273,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>You don't have that much money!</span>"
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
T.amount = "([transaction_amount])"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
D.transaction_log.Add(T)
|
||||
|
||||
// Create log entry in owner's account
|
||||
@@ -266,7 +266,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
|
||||
// Save log
|
||||
@@ -304,7 +304,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
|
||||
// Save log
|
||||
@@ -414,7 +414,7 @@
|
||||
<tr></tr>
|
||||
<tr><td class="tx-name">Customer</td><td class="tx-data">[c_name]</td></tr>
|
||||
<tr><td class="tx-name">Pay Method</td><td class="tx-data">[p_method]</td></tr>
|
||||
<tr><td class="tx-name">Station Time</td><td class="tx-data">[worldtime2text()]</td></tr>
|
||||
<tr><td class="tx-name">Station Time</td><td class="tx-data">[stationtime2text()]</td></tr>
|
||||
</table>
|
||||
<table width=300>
|
||||
"}
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
T.amount = "([transaction_amount])"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
D.transaction_log.Add(T)
|
||||
|
||||
// Create log entry in owner's account
|
||||
@@ -241,7 +241,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
|
||||
// Save log
|
||||
@@ -274,7 +274,7 @@
|
||||
T.amount = "[transaction_amount]"
|
||||
T.source_terminal = machine_id
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
|
||||
// Save log
|
||||
@@ -348,7 +348,7 @@
|
||||
<tr></tr>
|
||||
<tr><td class="tx-name">Customer</td><td class="tx-data">[c_name]</td></tr>
|
||||
<tr><td class="tx-name">Pay Method</td><td class="tx-data">[p_method]</td></tr>
|
||||
<tr><td class="tx-name">Station Time</td><td class="tx-data">[worldtime2text()]</td></tr>
|
||||
<tr><td class="tx-name">Station Time</td><td class="tx-data">[stationtime2text()]</td></tr>
|
||||
</table>
|
||||
<table width=300>
|
||||
"}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
if(EM.add_to_queue)
|
||||
EC.available_events += EM
|
||||
|
||||
log_debug("Event '[EM.name]' has completed at [worldtime2text()].")
|
||||
log_debug("Event '[EM.name]' has completed at [worldtime2stationtime(world.time)].")
|
||||
|
||||
/datum/event_manager/proc/delay_events(var/severity, var/delay)
|
||||
var/list/datum/event_container/EC = event_containers[severity]
|
||||
@@ -67,12 +67,12 @@
|
||||
var/datum/event_meta/EM = E.event_meta
|
||||
if(EM.name == "Nothing")
|
||||
continue
|
||||
var/message = "'[EM.name]' began at [worldtime2text(E.startedAt)] "
|
||||
var/message = "'[EM.name]' began at [worldtime2stationtime(E.startedAt)] "
|
||||
if(E.isRunning)
|
||||
message += "and is still running."
|
||||
else
|
||||
if(E.endedAt - E.startedAt > MinutesToTicks(5)) // Only mention end time if the entire duration was more than 5 minutes
|
||||
message += "and ended at [worldtime2text(E.endedAt)]."
|
||||
message += "and ended at [worldtime2stationtime(E.endedAt)]."
|
||||
else
|
||||
message += "and ran to completion."
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
var/next_event_at = max(0, EC.next_event_time - world.time)
|
||||
html += "<tr>"
|
||||
html += "<td>[severity_to_string[severity]]</td>"
|
||||
html += "<td>[worldtime2text(max(EC.next_event_time, world.time))]</td>"
|
||||
html += "<td>[worldtime2stationtime(max(EC.next_event_time, world.time))]</td>"
|
||||
html += "<td>[round(next_event_at / 600, 0.1)]</td>"
|
||||
html += "<td>"
|
||||
html += "<A align='right' href='?src=\ref[src];dec_timer=2;event=\ref[EC]'>--</A>"
|
||||
@@ -178,7 +178,7 @@
|
||||
html += "<tr>"
|
||||
html += "<td>[severity_to_string[EM.severity]]</td>"
|
||||
html += "<td>[EM.name]</td>"
|
||||
html += "<td>[worldtime2text(ends_at)]</td>"
|
||||
html += "<td>[worldtime2stationtime(ends_at)]</td>"
|
||||
html += "<td>[ends_in]</td>"
|
||||
html += "<td><A align='right' href='?src=\ref[src];stop=\ref[E]'>Stop</A></td>"
|
||||
html += "</tr>"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
kill()
|
||||
|
||||
/datum/event/money_hacker/announce()
|
||||
var/message = "A brute force hack has been detected (in progress since [worldtime2text()]). The target of the attack is: Financial account #[affected_account.account_number], \
|
||||
var/message = "A brute force hack has been detected (in progress since [stationtime2text()]). The target of the attack is: Financial account #[affected_account.account_number], \
|
||||
without intervention this attack will succeed in approximately 10 minutes. Required intervention: temporary suspension of affected accounts until the attack has ceased. \
|
||||
Notifications will be sent as updates occur.<br>"
|
||||
var/my_department = "[station_name()] firewall subroutines"
|
||||
@@ -51,7 +51,7 @@
|
||||
T.date = pick("", current_date_string, date1, date2)
|
||||
var/time1 = rand(0, 99999999)
|
||||
var/time2 = "[round(time1 / 36000)+12]:[(time1 / 600 % 60) < 10 ? add_zero(time1 / 600 % 60, 1) : time1 / 600 % 60]"
|
||||
T.time = pick("", worldtime2text(), time2)
|
||||
T.time = pick("", stationtime2text(), time2)
|
||||
T.source_terminal = pick("","[pick("Biesel","New Gibson")] GalaxyNet Terminal #[rand(111,999)]","your mums place","nantrasen high CommanD")
|
||||
|
||||
affected_account.transaction_log.Add(T)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
T.purpose = "Winner!"
|
||||
T.amount = winner_sum
|
||||
T.date = current_date_string
|
||||
T.time = worldtime2text()
|
||||
T.time = stationtime2text()
|
||||
T.source_terminal = "Sif TCD Terminal #[rand(111,333)]"
|
||||
D.transaction_log.Add(T)
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
if(areas && areas.len > 0)
|
||||
var/my_department = "[station_name()] firewall subroutines"
|
||||
var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [worldtime2text()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.<br>"
|
||||
var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [stationtime2text()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.<br>"
|
||||
for(var/obj/machinery/message_server/MS in world)
|
||||
MS.send_rc_message("Engineering", my_department, rc_message, "", "", 2)
|
||||
for(var/mob/living/silicon/ai/A in player_list)
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
healths.icon_state = "health6"
|
||||
|
||||
timeofdeath = world.time
|
||||
if(mind) mind.store_memory("Time of death: [worldtime2text()]", 0)
|
||||
if(mind) mind.store_memory("Time of death: [stationtime2text()]", 0)
|
||||
living_mob_list -= src
|
||||
dead_mob_list |= src
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
on_hear_radio(part_a, speaker_name, track, part_b, formatted)
|
||||
|
||||
/proc/say_timestamp()
|
||||
return "<span class='say_quote'>\[[worldtime2text()]\]</span>"
|
||||
return "<span class='say_quote'>\[[stationtime2text()]\]</span>"
|
||||
|
||||
/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
|
||||
src << "[part_a][speaker_name][part_b][formatted]"
|
||||
|
||||
@@ -654,8 +654,8 @@
|
||||
|
||||
if(.)
|
||||
if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME)
|
||||
stat("Station Time", worldtime2text())
|
||||
stat("Round Duration", round_duration_as_text())
|
||||
stat("Station Time", stationtime2text())
|
||||
stat("Round Duration", roundduration2text())
|
||||
|
||||
if(client.holder)
|
||||
if(statpanel("Status"))
|
||||
|
||||
@@ -362,7 +362,7 @@
|
||||
|
||||
var/dat = "<html><body><center>"
|
||||
dat += "<b>Welcome, [name].<br></b>"
|
||||
dat += "Round Duration: [round_duration_as_text()]<br>"
|
||||
dat += "Round Duration: [roundduration2text()]<br>"
|
||||
|
||||
if(emergency_shuttle) //In case Nanotrasen decides reposess CentComm's shuttles.
|
||||
if(emergency_shuttle.going_to_centcom()) //Shuttle is going to centcomm, not recalled
|
||||
|
||||
@@ -135,16 +135,18 @@ var/const/BLOOD_VOLUME_SURVIVE = 40
|
||||
drip(blood_max)
|
||||
|
||||
//Makes a blood drop, leaking amt units of blood from the mob
|
||||
/mob/living/carbon/human/proc/drip(var/amt as num)
|
||||
/mob/living/carbon/human/proc/drip(var/amt)
|
||||
if(remove_blood(amt))
|
||||
blood_splatter(src,src)
|
||||
|
||||
/mob/living/carbon/human/proc/remove_blood(var/amt)
|
||||
if(!should_have_organ(O_HEART)) //TODO: Make drips come from the reagents instead.
|
||||
return
|
||||
return 0
|
||||
|
||||
if(!amt)
|
||||
return
|
||||
return 0
|
||||
|
||||
vessel.remove_reagent("blood",amt)
|
||||
blood_splatter(src,src)
|
||||
return vessel.remove_reagent("blood",amt * (src.mob_size/MOB_MEDIUM))
|
||||
|
||||
/****************************************************
|
||||
BLOOD TRANSFERS
|
||||
|
||||
@@ -474,6 +474,11 @@ This function completely restores a damaged organ to perfect condition.
|
||||
wounds += I
|
||||
owner.custom_pain("You feel something rip in your [name]!", 1)
|
||||
|
||||
//Burn damage can cause fluid loss due to blistering and cook-off
|
||||
if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT))
|
||||
var/fluid_loss = (damage/(owner.maxHealth - config.health_threshold_dead)) * owner.species.blood_volume*(1 - BLOOD_VOLUME_SURVIVE/100)
|
||||
owner.remove_blood(fluid_loss)
|
||||
|
||||
// first check whether we can widen an existing wound
|
||||
if(wounds.len > 0 && prob(max(50+(number_wounds-1)*10,90)))
|
||||
if((type == CUT || type == BRUISE) && damage >= 5)
|
||||
|
||||
@@ -232,8 +232,8 @@
|
||||
t = replacetext(t, "\[/i\]", "</I>")
|
||||
t = replacetext(t, "\[u\]", "<U>")
|
||||
t = replacetext(t, "\[/u\]", "</U>")
|
||||
t = replacetext(t, "\[time\]", "[worldtime2text()]")
|
||||
t = replacetext(t, "\[date\]", "[worlddate2text()]")
|
||||
t = replacetext(t, "\[time\]", "[stationtime2text()]")
|
||||
t = replacetext(t, "\[date\]", "[stationtime2text()]")
|
||||
t = replacetext(t, "\[large\]", "<font size=\"4\">")
|
||||
t = replacetext(t, "\[/large\]", "</font>")
|
||||
t = replacetext(t, "\[sign\]", "<font face=\"[signfont]\"><i>[get_signature(P, user)]</i></font>")
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
M.adjustOxyLoss(3 * removed)
|
||||
M.Weaken(10)
|
||||
M.silent = max(M.silent, 10)
|
||||
M.tod = worldtime2text()
|
||||
M.tod = stationtime2text()
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/Destroy()
|
||||
if(holder && holder.my_atom && ismob(holder.my_atom))
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
amount_per_transfer_from_this = 10
|
||||
volume = 100
|
||||
item_state = "broken_beer" //Generic held-item sprite until unique ones are made.
|
||||
force = 5
|
||||
force = 6
|
||||
var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets)
|
||||
var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
desc = "A bottle with a sharp broken bottom."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "broken_bottle"
|
||||
force = 9
|
||||
force = 10
|
||||
throwforce = 5
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
|
||||
@@ -389,7 +389,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
PR.name = "list of researched technologies"
|
||||
PR.info = "<center><b>[station_name()] Science Laboratories</b>"
|
||||
PR.info += "<h2>[ (text2num(href_list["print"]) == 2) ? "Detailed" : ] Research Progress Report</h2>"
|
||||
PR.info += "<i>report prepared at [worldtime2text()] station time</i></center><br>"
|
||||
PR.info += "<i>report prepared at [stationtime2text()] station time</i></center><br>"
|
||||
if(text2num(href_list["print"]) == 2)
|
||||
PR.info += GetResearchListInfo()
|
||||
else
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
//create a new scanlog entry
|
||||
var/datum/depth_scan/D = new()
|
||||
D.coords = "[M.x]:[M.y]:[M.z]"
|
||||
D.time = worldtime2text()
|
||||
D.time = stationtime2text()
|
||||
D.record_index = positive_locations.len + 1
|
||||
D.material = M.mineral ? M.mineral.display_name : "Rock"
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
//create a new scanlog entry
|
||||
var/datum/depth_scan/D = new()
|
||||
D.coords = "[B.x]:[B.y]:[B.z]"
|
||||
D.time = worldtime2text()
|
||||
D.time = stationtime2text()
|
||||
D.record_index = positive_locations.len + 1
|
||||
|
||||
//these values are arbitrary
|
||||
|
||||
@@ -157,8 +157,8 @@ var/world_topic_spam_protect_time = world.timeofday
|
||||
|
||||
// This is dumb, but spacestation13.com's banners break if player count isn't the 8th field of the reply, so... this has to go here.
|
||||
s["players"] = 0
|
||||
s["stationtime"] = worldtime2text()
|
||||
s["roundduration"] = round_duration_as_text()
|
||||
s["stationtime"] = stationtime2text()
|
||||
s["roundduration"] = roundduration2text()
|
||||
|
||||
if(input["status"] == "2")
|
||||
var/list/players = list()
|
||||
|
||||
@@ -53,6 +53,24 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">07 August 2016</h2>
|
||||
<h3 class="author">HarpyEagle updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Severe enough burn damage now causes one-time blood loss due to blistering and body fluid cook-off.</li>
|
||||
</ul>
|
||||
<h3 class="author">Sin4 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixed ERT icon not showing up properly for sechuds.</li>
|
||||
<li class="tweak">Fixed instances of the game mode's config_tag being displayed instead of the game mode name.</li>
|
||||
</ul>
|
||||
<h3 class="author">Yoshax updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Attacking yourself, or anyone else with a stack of five or more telecrystals will teleport the attacked person to a random, safe (not in space) location within 14 metres.</li>
|
||||
<li class="tweak">All telecrystals ammounts have been multiplied by 10. This means the base amount is now 120, and an emag for example costs 30, vs the previous 12 and 3, respectively.</li>
|
||||
<li class="tweak">You can once again use telecrystals on an emag to add more uses to it. You get 1 use per every 2 telecrystals.</li>
|
||||
<li class="tweak">Instead of only being able to remove 1 telecrystal from your uplink, you can now remove 1, 5, 10, 25, 50.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">05 August 2016</h2>
|
||||
<h3 class="author">Anewbe updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -2648,3 +2648,22 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
come in a box with an explosive, a disguised detonator and a screwdriver. The
|
||||
use the detonator you muse apply the screwdriver to configure it into detonator
|
||||
mode. This must be done when it is closed.
|
||||
2016-08-07:
|
||||
HarpyEagle:
|
||||
- rscadd: Severe enough burn damage now causes one-time blood loss due to blistering
|
||||
and body fluid cook-off.
|
||||
Sin4:
|
||||
- bugfix: Fixed ERT icon not showing up properly for sechuds.
|
||||
- tweak: Fixed instances of the game mode's config_tag being displayed instead of
|
||||
the game mode name.
|
||||
Yoshax:
|
||||
- rscadd: Attacking yourself, or anyone else with a stack of five or more telecrystals
|
||||
will teleport the attacked person to a random, safe (not in space) location
|
||||
within 14 metres.
|
||||
- tweak: All telecrystals ammounts have been multiplied by 10. This means the base
|
||||
amount is now 120, and an emag for example costs 30, vs the previous 12 and
|
||||
3, respectively.
|
||||
- tweak: You can once again use telecrystals on an emag to add more uses to it.
|
||||
You get 1 use per every 2 telecrystals.
|
||||
- tweak: Instead of only being able to remove 1 telecrystal from your uplink, you
|
||||
can now remove 1, 5, 10, 25, 50.
|
||||
|
||||
@@ -33,5 +33,4 @@ delete-after: True
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- bugfix: "Fixed ERT icon not showing up properly for sechuds."
|
||||
- tweak: "Fixed instances of the game mode's config_tag being displayed instead of the game mode name."
|
||||
- tweak: "Scheduler ported from Baystation's port of Paradise's scheduler."
|
||||
36
html/changelogs/Yoshax - lowendcombat.yml
Normal file
36
html/changelogs/Yoshax - lowendcombat.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Yoshax
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "Some items such as commonly found tools are now slightly more effective when wielded as weapons. This change has been made because many of them were too low, and low because of mostly holdovers from other servers where things such as grey tide are big concerns."
|
||||
@@ -159,6 +159,7 @@
|
||||
"adc" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
|
||||
"add" = (/turf/simulated/wall,/area/maintenance/library)
|
||||
"ade" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/red{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/security/main)
|
||||
"adf" = (/obj/structure/closet,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/turf/simulated/floor,/area/maintenance/pool)
|
||||
"adg" = (/obj/structure/table/rack,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/library)
|
||||
"adh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/library)
|
||||
"adi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/maintenance/library)
|
||||
@@ -4505,6 +4506,7 @@
|
||||
"bIH" = (/obj/effect/floor_decal/corner/blue{dir = 5},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = 28},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
|
||||
"bII" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 30},/obj/effect/floor_decal/corner/blue{dir = 5},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
|
||||
"bIJ" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/effect/floor_decal/corner/blue/full{dir = 1},/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
|
||||
"bIK" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(12,5)},/turf/simulated/floor,/area/maintenance/pool)
|
||||
"bIL" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/bridge_hallway)
|
||||
"bIM" = (/obj/effect/floor_decal/corner/blue{dir = 6},/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/turf/simulated/floor/tiled,/area/bridge_hallway)
|
||||
"bIN" = (/obj/machinery/cell_charger,/obj/structure/table/steel,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/substation/command)
|
||||
@@ -4514,6 +4516,7 @@
|
||||
"bIR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen)
|
||||
"bIS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen)
|
||||
"bIT" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen)
|
||||
"bIU" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/cobweb2{icon_state = "spiderling"; name = "dead spider"; tag = "icon-spiderling"},/turf/simulated/floor,/area/maintenance/medbay_fore)
|
||||
"bIV" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||
"bIW" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/material/knife/butch,/obj/item/weapon/material/kitchen/rollingpin,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
|
||||
"bIX" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/crew_quarters/kitchen)
|
||||
@@ -4649,6 +4652,7 @@
|
||||
"bLx" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice)
|
||||
"bLy" = (/obj/structure/table/standard,/obj/item/weapon/cartridge/signal/science,/obj/item/weapon/cartridge/signal/science{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/science{pixel_x = 4; pixel_y = 6},/obj/item/clothing/glasses/welding/superior,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = 30; pixel_y = -2},/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice)
|
||||
"bLz" = (/obj/structure/closet{name = "robotics parts"},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/effect/floor_decal/corner/pink{dir = 6},/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
|
||||
"bLA" = (/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/toolbox,/obj/effect/decal/cleanable/molten_item,/mob/living/simple_animal/hostile/mimic/crate,/turf/simulated/floor,/area/maintenance/medbay_fore)
|
||||
"bLB" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
|
||||
"bLC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/pen/red,/obj/item/weapon/pen/blue,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
|
||||
"bLD" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/medical/virology)
|
||||
@@ -9792,17 +9796,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuaRPaRPaRPaTUaTUaRPaRPaRPaRPaTVaRfaahaahaahaahaahaTWaTWaTWaTWaSxaTXaTYaTZaSxaRTaUaaRTaUbaUcaTfaUdaTkaTkaTkaUeaTfaUfaTkaUgaTkaUhaTfaUiaUjaTfaTfaTfaTfaTgaThaThaThaThaThaThaThaTiaTfaUkaUlaUmaTfaTfaTfaTfaTfaTfaUnaUoaUpaTfaTfaTfaTfaTfaUqaUraTfaUsaTkaTlaTkaUtaToaUuaUvaUvaUwaUxaToaUyaUzaUAaClaClaClaClaClaClaUBaUCaUCaUCaUCaUCaUCaUDaClaGIaUEaCnaCoaClaClcllcllcllcllcllcllaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaTWaDtaDtaUFaUGaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaRfaRfaRfaRfaUHaUHaRfaRfaRfaRfaRfaRfaUIaUIaUIaUIaUIaUIaUJaUKaULaSxaTcaUMaSxaSxawqaUOaUPaUNaUNaUQaTkaURaUSaUTaUTaUUaUVaUTaUWaUTaUTaUUaUTaUTaUTaUXaUYaUTaUZaUTaUTaUTaUTaUSaUTaUTaUTaUUaUTaVaaUSaUUaUTaUTaVbaVcaVdaUTaVeaTkaTJaTkaVfaTkaVgaTkaTkaVhaTkaTkaTlaTkaTkaViaVjaUvaUvaVkaVlaVmaVnaVoaVnaVpaVqaVraZQaVsaVtaVnaVnaVuaVvaVnaVnaVwaVxaVyaVnaVnaVzaVAaLIaUAcpZcmkcmlakuaktaktaDtaVCaYcaYdaYeaDtaDtaDtaDtaDtaDtaDtaDtaDtaVBaVCaFJaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaVDaVEaVFaVGaVHaVIaVJaVKaVLaVMaVNaVOaVPaVQaVKaVKaVRaVSaVTaVKaVUaVKaVPaVVaVWaVVaVRaVKaVXaVYaVZaIxaVYaVYaWbaWcaWdaWeaWdaWfaWbaWdaWdaWdaWgaWhaWdaWdaWiaWdaWdaWfaWcaWdaWdaWaaWbaWdaWjaWcaWbaWqaWdaWgaWdaWkaWhaWlaWdaWbaWdaWiaWdaWcaWdaWdaWmaWdaWfaWnaTkaTkaViaWoaWpbhcaWraWsaWtaWuaWvaWuaWwaWuaWuaWuaWuaWxaWyaWuaObaWuaWuaWuaWzaWAaWAaWAaWBaWCaWDaWDaWFakvakxakwakBakyakyakDaWGakIaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaWKaWLaWMaWNaWLaWOaWPaUNaWQaUNaWRaUNaWSaUNaWTaWUaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXjaXkaXlaXmaXnaXmaXmaXmaXmaXoaXnaXmaXmaXpaXmaXqaXmaXmaXraXmaXmaXsaXtaXuaXmaXvaXnaXwaXxaXyaXzaXyaXyaXyaXAaXBaXCaXDaXEaXFaXGaXHaXmaXIaXtaXJaXKaTkaXLaTkaTkaTkaViaUvaXMaXNaXOaXPaXQaXRaXSaLIaLIaXTaLIaLIaXVaSfaXWaLIaLJaLIaXXaLIaXYaXZaXVaXUaYaaYbaLIaLIaUAcpZakLakKakPakMcomaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaRfaYfaYgaYhaYiaYjaRfaRfaRfaRfaYkaYlaYmaRfaUIaUIaUIaUIaUIaUIaUbaYnaYnaYnaUcaUIaUIaYhaTfaYoaYpaYqaYraYsaTfaYtaTkaTkaTkaYuaTfaTfaTfaTfaTfaTfaYvaYwaUgaYxaYvaTfaTfaTfaTfaTfaTfaYyaYzaYAaTfaUqaYBaUraTfaTfaUqaYBaUraTfaYCaYDaYEaTfaUqaYBaUraTfaTfaUqaYBaUraToaRjaYGaYHaUwaYIaToaClaYJaYKaYLaClaYJaYKaYLaClaClaClaYMaUAaClaClaClaClaClaClaUAaYNaUAaClaClcllakTakSakVakUakWdEoakYakXalaakZalcalbdEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaRfaRfaRfaRfaRfaRfaRfaahaahaRfaYOaYOaYOaRfaahaahaahaahaYPaYQaYRaYRaYRaYRaYRbewaYPahyaTfaTfaYTaYUaYVaTfaTfaTfaYWaYXaYYaTfaTfaahaahaahaahaahaYZaZaaZbaZcaYZaahaahaahaahaahaTfaZdaZeaZdaTfahyahyahyahyahyahyahyahyaZfaZgaZhaZiaZfahyahyahyahyahyahyahyahyaToaToaZjaZkaZlaToaToahyahyahyahyahyahyahyahyahyahyaClaYMaUAaClaahaahaahaahaZmaZmaZnaZmaZmaahcllclldEoalddEodEodEoakYalealgalfaloalbdEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpaZqaZraZoaahaahaahaahaYPaZsaZtaZuaZvaZwaZxaYRaYPahyahyaZyaZzaZAaZBaZyahyaTfaUiaThaTiaTfaahaahaZCaZCaZCaZCaZDaZDaZEaZDaZDaZFaZFaZFaZFaahaZdaZGaZHaZdahyahyahyahyaZIaZJaZKaZLaZIaZIaZMaZNaZOaZIaZIaZJaZKaZLaZIahyahyahyahyaZPaYGaYHaUwbaAaZRaZRaZSaZTaZUaZRaZSaZTaZUaZRaZRaZRaZVaZRaZRaahaahaahaahaahaZmaZWaZXaZmaahaahdEoalpalsalralualtalxalwalzalyalyalAdEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZYaZZbaaaZoaahaahaahaahaYPbabbacbadbaebafbagbahaYPahyahybaibajbakbalbamahyahyahyahyahyaahaahaahaZCbanbaobapaZDbaqbarbasaZDbatbaubavaZFaahaZdaZGbaxaZdahyahyahybayaZLbKzaYFaTHbaCbKMbaEbaFbaGbaHbaIbawbazbhAaZJbaMahyahyahybaNaYGaYHaUwbdwbaLbaBbaPbaObaRbaQbaPbaSbaRbaTbaWbaVbcPbaXaZRaZRaahaahaahaahaZmbbbbbcaZmaahaahdEoalBalCalyalLalDalyalPalZalyambamadEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmaZWbcbaZmaahaahdEodEBamdamcamgameamAamhamCamBamDamadEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmbcSbcTaZmaahaahdEodEBamFamEamWamVanaamZdEodEodEodEodEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpbcUaZoaZoaahaahaahaahaYPbcVbcWbcXbcYbcZbdabdbbdcbddbdebdebdfbdgbdhbaiahyahyaahaahaahaahaahaahaZCbdibdjbdkbdlbdlbdmbdlbdlbdnbdobdpaZFaahaahaZdaZHaZdahybdqbaJbbFbfMdCqbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbgHdCrbdsbaKbdqahyaTobdubdvaUwbdwbaLbdFbfkbdGbLZbdIbWObNGbiVbYuaZRccRcsWdCucwuaZRbdJbdKbdLbcRbdMbdNbdOaZmaahaahaZmaZmaZmanbaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbeibeUbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMbdNbdOaZmaahaZmaZmbexbeyaZWantbdObezbeAaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahbegbegbdlbdlbehbeTbeUbeTbeSbdlbdlbegbegaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNbbObetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMbdNbfmaZmaZmaZmbfnbfobfodGGbfobfobfobfobfpaZmaZmaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahbegbegbdlbfGbeTbfHbfIbfJbeTbfKbdlbegbegaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetaUwaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbgibfobfobfobfobgjbgkbgkbgkbgkbgkbgkbgkbglbfobfobfobfobfobfpaZmaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaWKaWLaWMaWNaWLaWOaWPaUNaWQaUNaWRaUNaWSaUNaWTaWUaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXjaXkaXlaXmaXnaXmaXmaXmaXmaXoaXnaXmaXmaXpaXmaXqaXmaXmaXraXmaXmaXsaXtaXuaXmaXvaXnaXwaXxaXyaXzaXyaXyaXyaXAaXBaXCaXDaXEaXFaXGaXHaXmaXIaXtaXJaXKaTkaXLaTkaTkaTkaViaUvaXMaXNaXOaXPaXQaXRaXSaLIaLIaXTaLIaLIaXVaSfaXWaLIaLJaLIaXXaLIaXYaXZaXVaXUaYaaYbaLIaLIaUAcpZakLakKakPakMcomaDtaDtaDtaDtaDtaDtaDtaDtaVCaVCaDtaDtaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaRfaYfaYgaYhaYiaYjaRfaRfaRfaRfaYkaYlaYmaRfaUIaUIaUIaUIaUIaUIaUbaYnaYnaYnaUcaUIaUIaYhaTfaYoaYpaYqaYraYsaTfaYtaTkaTkaTkaYuaTfaTfaTfaTfaTfaTfaYvaYwaUgaYxaYvaTfaTfaTfaTfaTfaTfaYyaYzaYAaTfaUqaYBaUraTfaTfaUqaYBaUraTfaYCaYDaYEaTfaUqaYBaUraTfaTfaUqaYBaUraToaRjaYGaYHaUwaYIaToaClaYJaYKaYLaClaYJaYKaYLaClaClaClaYMaUAaClaClaClaClaClaClaUAaYNaUAaClaClcllakTakSakVakUakWdEoakYakXalaakZalcalbdEoaVCaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaRfaRfaRfaRfaRfaRfaRfaahaahaRfaYOaYOaYOaRfaahaahaahaahaYPaYQaYRaYRaYRaYRaYRbewaYPahyaTfaTfaYTaYUaYVaTfaTfaTfaYWaYXaYYaTfaTfaahaahaahaahaahaYZaZaaZbaZcaYZaahaahaahaahaahaTfaZdaZeaZdaTfahyahyahyahyahyahyahyahyaZfaZgaZhaZiaZfahyahyahyahyahyahyahyahyaToaToaZjaZkaZlaToaToahyahyahyahyahyahyahyahyahyahyaClaYMaUAaClaahaahaahaahaZmaZmaZnaZmaZmaahcllclldEoalddEodEodEoakYalealgalfaloalbdEoaVCadfaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpaZqaZraZoaahaahaahaahaYPaZsaZtaZuaZvaZwaZxaYRaYPahyahyaZyaZzaZAaZBaZyahyaTfaUiaThaTiaTfaahaahaZCaZCaZCaZCaZDaZDaZEaZDaZDaZFaZFaZFaZFaahaZdaZGaZHaZdahyahyahyahyaZIaZJaZKaZLaZIaZIaZMaZNaZOaZIaZIaZJaZKaZLaZIahyahyahyahyaZPaYGaYHaUwbaAaZRaZRaZSaZTaZUaZRaZSaZTaZUaZRaZRaZRaZVaZRaZRaahaahaahaahaahaZmaZWaZXaZmaahaahdEoalpalsalralualtalxalwalzalyalyalAdEobIKaDtaTWaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZYaZZbaaaZoaahaahaahaahaYPbabbacbadbaebafbagbahaYPahyahybaibajbakbalbamahyahyahyahyahyaahaahaahaZCbanbaobapaZDbaqbarbasaZDbatbaubavaZFaahaZdaZGbaxaZdahyahyahybayaZLbKzaYFaTHbaCbKMbaEbaFbaGbaHbaIbawbazbhAaZJbaMahyahyahybaNaYGaYHaUwbdwbaLbaBbaPbaObaRbaQbaPbaSbaRbaTbaWbaVbcPbaXaZRaZRaahaahaahaahaZmbbbbbcaZmaahaahdEoalBalCalyalLalDalyalPalZalyambamadEobdOaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmaZWbcbaZmaahaahdEodEBamdamcamgameamAamhamCamBamDamadEobdOaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmbcSbcTaZmaahaahdEodEBamFamEamWamVanaamZdEodEodEodEodEobdOaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpbcUaZoaZoaahaahaahaahaYPbcVbcWbcXbcYbcZbdabdbbdcbddbdebdebdfbdgbdhbaiahyahyaahaahaahaahaahaahaZCbdibdjbdkbdlbdlbdmbdlbdlbdnbdobdpaZFaahaahaZdaZHaZdahybdqbaJbbFbfMdCqbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbgHdCrbdsbaKbdqahyaTobdubdvaUwbdwbaLbdFbfkbdGbLZbdIbWObNGbiVbYuaZRccRcsWdCucwuaZRbdJbdKbdLbcRbdMbdNbdOaZmaahaahaZmaZmaZmanbaZmaZmaZmaZmaZmaahaahaahaZmbdOaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbeibeUbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMbdNbdOaZmaahaZmaZmbexbeyaZWantbdObezbeAaZmaZmaahaahaZmbdObIUaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahbegbegbdlbdlbehbeTbeUbeTbeSbdlbdlbegbegaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNbbObetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMbdNbfmaZmaZmaZmbfnbfobfodGGbfobfobfobfobfpaZmaZmaZmaZmbdObdObLAaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahbegbegbdlbfGbeTbfHbfIbfJbeTbfKbdlbegbegaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetaUwaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbgibfobfobfobfobgjbgkbgkbgkbgkbgkbgkbgkbglbfobfobfobfobfobfpbdOaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbgnbfrbgobdPbgpbgqbgrbdTaahaahaahaahahyahyahyahyahyahyahyahyahyahybbobbobgsbcnbgtbeebefbgubgvbgwbgxbefaahaahbegbegbdlbgybeTbeibgzbeibeTbgAbdlbegbegaahaZdaZdaZHaZdahyaZIbgBdCBbfRbbGbgCbbGbbGdCCbgDbgEbgFdCDbbGbbGbgCbbGbgGbgHdCEaZIaZfaTobgIbgJbgKaToaToaahbeZbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgYbgYbgYbgYbgYbgZbgZbgZbgZbgZbgkbhabhbbmzbhdbhebgkbhfbhfbhfbhfbhfbhfbglbfpaZmaahaahaahaahaahbgmbgmbhgbhhbhibhhbhjbgmbgmaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbhkbhlbhkbdPbhmbfubhnbhobhobhobhoaahaahaahahyahyahyahyahyahyahyahyaZycrkbajbhqbhrbhsbefbhtbgvbgwbhubefaahaahbegbegbdlbhvbhybhxblrbhwbeTbhvbdlbegbegaahaZdaZGaZHaZdahybdqbaUdCFbbGbbGbbGbbGdCGbgDbhAbhAbhAbgFdCFbbGbbGbbGbhBbbGbhCbhDbhEbhFbhGbetaUwbhHaToaahbeZbhIbhJbgNbhKbhLbhLbhLbhLbhMbhNbgVbhObhPbgYbhQbhRbhSbhTbgYbhUbhVbhVbhWbgZbhXbhYbhYbhZbhZbhYbiabhfbibbicbidbiebhfbdOaZWaZmaahaahaahaahaahbgmbifbigbihbiibijbikbifbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahbilbilbilbilbilbilbilbilbilbimbinbiobipbeEbfubinbhobiqbirbhobhobhoaahaahahyahyahyahyahyahyahybambisaZzbitbiubdebivbiwbixbgwbhubefaahaahbegbegbdlbiyblsbizbiAbiBbltbiCbdlbegbegaahaZdbiDaZHaZdahybejbdrdCFbbGbbGbbGbbGdCGbiFbhAbdtbhAbiHdCFbbGbbGbbGbiIbiJbiJbiKbiLbiMbiNbiObiPbiQaToaahbeZbfTbiRbiSbeZbiTbiUblObiWbxjbfhbzjbhObiYbgYbiZbjabjbbjcbgYbSjbjebjfbjgbgZbjhbjibjjbjkbpybjmbjnbhfbibbjobjpbjqbhfbjrbjsaZmaahaahaahaahaahbgmbjtbjubjvbjwbjvbjubjxbgmaahaahbgmbgmbgmbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include "code\__defines\admin.dm"
|
||||
#include "code\__defines\appearance.dm"
|
||||
#include "code\__defines\atmos.dm"
|
||||
#include "code\__defines\btime.dm"
|
||||
#include "code\__defines\chemistry.dm"
|
||||
#include "code\__defines\damage_organs.dm"
|
||||
#include "code\__defines\dna.dm"
|
||||
@@ -153,7 +152,6 @@
|
||||
#include "code\controllers\Processes\ticker.dm"
|
||||
#include "code\controllers\Processes\turf.dm"
|
||||
#include "code\controllers\Processes\vote.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\_stubs.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\process.dm"
|
||||
#include "code\controllers\ProcessScheduler\core\processScheduler.dm"
|
||||
#include "code\datums\ai_law_sets.dm"
|
||||
|
||||
Reference in New Issue
Block a user