Files
Bubberstation/code/__HELPERS/time.dm
JJRcop 6aa8cebfe4 [READY] Replaces sleepers with stasis beds (Lifeform Stasis Unit) (#43075)
* Adds stasis beds

Needs sprites, using placeholder ones

* Adds stasis beds to techwebs
Cryostasis Technology

* Adds sprites for stasis bed

* Stasis beds support economy/ancap

* Stasis bed can be deconstructed

* Stasis bed requires cable coil

* New stasis bed sprites by @Kmc2000

Made by Kmc2000 <bluekorben2000@yahoo.com>
Not currently functional

* Add unique to SSvis_overlay.add_vis_overlay

will return the overlay object itself and not reuse it

* Make stasis bed art function

can enable/disable with alt click
makes sounds when powering up/down

* The tubes go over the mob now

* Remove sleepers from techweb tree

* Fix stasis bed lying

* Modified stasis bed build requirements

* Survival pod version of stasis bed

Map spawned sleepers delete their circuit boards
Added stasis beds to 'doctors' phobia
NanoMed for survival pod which is always free, not refillable

* Replace sleepers with stasis beds on all station maps

removed all sleeper machine boards from maps
one sleeper machine board intentionally left alone in oldstation

* Fix stasis bed tube overlay capturing clicks

Give power up and down noise freq variation

* Remove stat check from living Life

* Remove vis overlay assertions from stasis bed
2019-05-07 13:16:18 -04:00

92 lines
3.2 KiB
Plaintext

//Returns the world time in english
/proc/worldtime2text()
return gameTimestamp("hh:mm:ss", world.time)
/proc/time_stamp(format = "hh:mm:ss", show_ds)
var/time_string = time2text(world.timeofday, format)
return show_ds ? "[time_string]:[world.timeofday % 10]" : time_string
/proc/gameTimestamp(format = "hh:mm:ss", wtime=null)
if(!wtime)
wtime = world.time
return time2text(wtime - GLOB.timezoneOffset, format)
/proc/station_time(display_only = FALSE, wtime=world.time)
return ((((wtime - SSticker.round_start_time) * SSticker.station_time_rate_multiplier) + SSticker.gametime_offset) % 864000) - (display_only? GLOB.timezoneOffset : 0)
/proc/station_time_timestamp(format = "hh:mm:ss", wtime)
return time2text(station_time(TRUE, wtime), format)
/proc/station_time_debug(force_set)
if(isnum(force_set))
SSticker.gametime_offset = force_set
return
SSticker.gametime_offset = rand(0, 864000) //hours in day * minutes in hour * seconds in minute * deciseconds in second
if(prob(50))
SSticker.gametime_offset = FLOOR(SSticker.gametime_offset, 3600)
else
SSticker.gametime_offset = CEILING(SSticker.gametime_offset, 3600)
/* Returns 1 if it is the selected month and day */
/proc/isDay(month, day)
if(isnum(month) && isnum(day))
var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month
var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
if(month == MM && day == DD)
return 1
//returns timestamp in a sql and a not-quite-compliant ISO 8601 friendly format
/proc/SQLtime(timevar)
return time2text(timevar || world.timeofday, "YYYY-MM-DD hh:mm:ss")
GLOBAL_VAR_INIT(midnight_rollovers, 0)
GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
/proc/update_midnight_rollover()
if (world.timeofday < GLOB.rollovercheck_last_timeofday) //TIME IS GOING BACKWARDS!
return GLOB.midnight_rollovers++
return GLOB.midnight_rollovers
/proc/weekdayofthemonth()
var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day
switch(DD)
if(8 to 13)
return 2
if(14 to 20)
return 3
if(21 to 27)
return 4
if(28 to INFINITY)
return 5
else
return 1
//Takes a value of time in deciseconds.
//Returns a text value of that number in hours, minutes, or seconds.
/proc/DisplayTimeText(time_value, round_seconds_to = 0.1)
var/second = FLOOR(time_value * 0.1, round_seconds_to)
if(!second)
return "right now"
if(second < 60)
return "[second] second[(second != 1)? "s":""]"
var/minute = FLOOR(second / 60, 1)
second = FLOOR(MODULUS(second, 60), round_seconds_to)
var/secondT
if(second)
secondT = " and [second] second[(second != 1)? "s":""]"
if(minute < 60)
return "[minute] minute[(minute != 1)? "s":""][secondT]"
var/hour = FLOOR(minute / 60, 1)
minute = MODULUS(minute, 60)
var/minuteT
if(minute)
minuteT = " and [minute] minute[(minute != 1)? "s":""]"
if(hour < 24)
return "[hour] hour[(hour != 1)? "s":""][minuteT][secondT]"
var/day = FLOOR(hour / 24, 1)
hour = MODULUS(hour, 24)
var/hourT
if(hour)
hourT = " and [hour] hour[(hour != 1)? "s":""]"
return "[day] day[(day != 1)? "s":""][hourT][minuteT][secondT]"