mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-20 23:21:20 +00:00
Without this patch, the first user had to wait for the server to actually initialize the game. During this time the main window of the client is not responsive to input. Now, when the first player connects, they will see a fully initialized and responsive lobby.
198 lines
5.0 KiB
Plaintext
198 lines
5.0 KiB
Plaintext
/world/proc/load_mode()
|
|
var/text = file2text("data/mode.txt")
|
|
if (length(text) > 0)
|
|
var/list/lines = dd_text2list(text, "\n")
|
|
if (lines[1])
|
|
master_mode = lines[1]
|
|
diary << "Saved mode is '[master_mode]'"
|
|
else
|
|
master_mode = "traitor" // Default mode, in case of errors
|
|
|
|
/world/proc/save_mode(var/the_mode)
|
|
var/F = file("data/mode.txt")
|
|
fdel(F)
|
|
if (length(the_mode) > 0 && the_mode != "none") // "None" is the vote set to dead people
|
|
// , who can't pick an option in a gamemode vote.
|
|
F << the_mode
|
|
else
|
|
F << "traitor" // Default mode, in case of errors
|
|
|
|
/world/proc/load_motd()
|
|
join_motd = file2text("config/motd.txt")
|
|
|
|
/world/proc/load_rules()
|
|
rules = file2text("config/rules.html")
|
|
if (!rules)
|
|
rules = "<html><head><title>Rules</title><body>There are no rules! Go nuts!</body></html>"
|
|
|
|
/world/proc/load_admins()
|
|
var/text = file2text("config/admins.txt")
|
|
if (!text)
|
|
diary << "Failed to load config/admins.txt\n"
|
|
else
|
|
var/list/lines = dd_text2list(text, "\n")
|
|
for(var/line in lines)
|
|
if (!line)
|
|
continue
|
|
|
|
if (copytext(line, 1, 2) == ";")
|
|
continue
|
|
|
|
var/pos = findtext(line, " - ", 1, null)
|
|
if (pos)
|
|
var/m_key = copytext(line, 1, pos)
|
|
var/a_lev = copytext(line, pos + 3, length(line) + 1)
|
|
admins[m_key] = a_lev
|
|
diary << ("ADMIN: [m_key] = [a_lev]")
|
|
|
|
/world/proc/load_testers()
|
|
var/text = file2text("config/testers.txt")
|
|
if (!text)
|
|
diary << "Failed to load config/testers.txt\n"
|
|
else
|
|
var/list/lines = dd_text2list(text, "\n")
|
|
for(var/line in lines)
|
|
if (!line)
|
|
continue
|
|
|
|
if (copytext(line, 1, 2) == ";")
|
|
continue
|
|
|
|
var/pos = findtext(line, " - ", 1, null)
|
|
if (pos)
|
|
var/m_key = copytext(line, 1, pos)
|
|
var/a_lev = copytext(line, pos + 3, length(line) + 1)
|
|
admins[m_key] = a_lev
|
|
|
|
|
|
/world/proc/load_configuration()
|
|
config = new /datum/configuration()
|
|
config.load("config/config.txt")
|
|
config.load("config/game_options.txt","game_options")
|
|
config.loadsql("config/dbconfig.txt")
|
|
//config.loadforumsql("config/forumdbconfig.txt")
|
|
// apply some settings from config..
|
|
abandon_allowed = config.respawn
|
|
|
|
/world/New()
|
|
src.load_configuration()
|
|
|
|
if (config && config.server_name != null && config.server_suffix && world.port > 0)
|
|
// dumb and hardcoded but I don't care~
|
|
config.server_name += " #[(world.port % 1000) / 100]"
|
|
|
|
src.load_mode()
|
|
src.load_motd()
|
|
src.load_rules()
|
|
src.load_admins()
|
|
if (config.usewhitelist)
|
|
load_whitelist()
|
|
LoadBansjob()
|
|
src.update_status()
|
|
|
|
makepowernets()
|
|
|
|
sun = new /datum/sun()
|
|
|
|
vote = new /datum/vote()
|
|
|
|
// coffinhandler = new /datum/coffinhandler()
|
|
|
|
radio_controller = new /datum/controller/radio()
|
|
//main_hud1 = new /obj/hud()
|
|
data_core = new /obj/datacore()
|
|
|
|
paiController = new /datum/paiController()
|
|
|
|
..()
|
|
|
|
plmaster = new /obj/effect/overlay( )
|
|
plmaster.icon = 'tile_effects.dmi'
|
|
plmaster.icon_state = "plasma"
|
|
plmaster.layer = FLY_LAYER
|
|
plmaster.mouse_opacity = 0
|
|
|
|
slmaster = new /obj/effect/overlay( )
|
|
slmaster.icon = 'tile_effects.dmi'
|
|
slmaster.icon_state = "sleeping_agent"
|
|
slmaster.layer = FLY_LAYER
|
|
slmaster.mouse_opacity = 0
|
|
|
|
src.update_status()
|
|
|
|
master_controller = new /datum/controller/game_controller()
|
|
spawn(-1)
|
|
master_controller.setup()
|
|
return
|
|
|
|
//Crispy fullban
|
|
/world/Reboot(var/reason)
|
|
spawn(0)
|
|
//world << sound(pick('newroundsexy.ogg','apcdestroyed.ogg','bangindonk.ogg')) // random end sounds!! - LastyBatsy No, no random end sounds. - Miniature
|
|
//if(prob(40))
|
|
// for(var/mob/M in world)
|
|
// if(M.client)
|
|
// M << sound('newroundsexy.ogg')
|
|
//else
|
|
// for(var/mob/M in world)
|
|
// if(M.client)
|
|
// M << sound('apcdestroyed.ogg')
|
|
send2irc(world.url,"Server Rebooting!")
|
|
for(var/client/C)
|
|
if (config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
|
|
C << link("byond://[config.server]")
|
|
else
|
|
C << link("byond://[world.address]:[world.port]")
|
|
|
|
// sleep(10) // wait for sound to play
|
|
..(reason)
|
|
|
|
/atom/proc/check_eye(user as mob)
|
|
if (istype(user, /mob/living/silicon/ai))
|
|
return 1
|
|
return
|
|
|
|
/atom/proc/on_reagent_change()
|
|
return
|
|
|
|
/atom/proc/Bumped(AM as mob|obj)
|
|
return
|
|
|
|
/atom/movable/Bump(var/atom/A as mob|obj|turf|area, yes)
|
|
spawn( 0 )
|
|
if ((A && yes))
|
|
A.last_bumped = world.time
|
|
A.Bumped(src)
|
|
return
|
|
..()
|
|
return
|
|
|
|
// **** Note in 40.93.4, split into obj/mob/turf point verbs, no area
|
|
|
|
/atom/verb/point()
|
|
set name = "Point To"
|
|
set category = "Object"
|
|
set src in oview()
|
|
var/atom/this = src//detach proc from src
|
|
src = null
|
|
|
|
if (!usr || !isturf(usr.loc))
|
|
return
|
|
else if (usr.stat != 0 || usr.restrained())
|
|
return
|
|
|
|
var/tile = get_turf(this)
|
|
if (!tile)
|
|
return
|
|
|
|
var/P = new /obj/effect/decal/point(tile)
|
|
spawn (20)
|
|
del(P)
|
|
|
|
usr.visible_message("<b>[usr]</b> points to [this]")
|
|
|
|
/obj/effect/decal/point/point()
|
|
set src in oview()
|
|
set hidden = 1
|
|
return
|