Merge resolution.

This commit is contained in:
Zuhayr
2013-11-29 22:36:36 +10:30
44 changed files with 290 additions and 136 deletions
+1 -1
View File
@@ -79,6 +79,7 @@
#include "code\controllers\autotransfer.dm"
#include "code\controllers\configuration.dm"
#include "code\controllers\failsafe.dm"
#include "code\controllers\hooks.dm"
#include "code\controllers\lighting_controller.dm"
#include "code\controllers\master_controller.dm"
#include "code\controllers\shuttle_controller.dm"
@@ -653,7 +654,6 @@
#include "code\modules\admin\holder2.dm"
#include "code\modules\admin\IsBanned.dm"
#include "code\modules\admin\NewBan.dm"
#include "code\modules\admin\newbanjob.dm"
#include "code\modules\admin\player_notes.dm"
#include "code\modules\admin\player_panel.dm"
#include "code\modules\admin\topic.dm"
+14
View File
@@ -14,6 +14,20 @@ What are the archived variables for?
#define QUANTIZE(variable) (round(variable,0.0001))
#define TRANSFER_FRACTION 5 //What fraction (1/#) of the air difference to try and transfer
/hook/startup/proc/createGasOverlays()
plmaster = new /obj/effect/overlay()
plmaster.icon = 'icons/effects/tile_effects.dmi'
plmaster.icon_state = "plasma"
plmaster.layer = FLY_LAYER
plmaster.mouse_opacity = 0
slmaster = new /obj/effect/overlay()
slmaster.icon = 'icons/effects/tile_effects.dmi'
slmaster.icon_state = "sleeping_agent"
slmaster.layer = FLY_LAYER
slmaster.mouse_opacity = 0
return 1
/datum/gas/sleeping_agent/specific_heat = 40 //These are used for the "Trace Gases" stuff, but is buggy.
/datum/gas/oxygen_agent_b/specific_heat = 300
+3 -1
View File
@@ -42,7 +42,7 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al
/////Initial Building/////
//////////////////////////
/proc/make_datum_references_lists()
/hook/startup/proc/makeDatumRefLists()
var/list/paths
//Hair - Initialise all /datum/sprite_accessory/hair into an list indexed by hair-style name
@@ -97,6 +97,8 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al
if(S.flags & WHITELISTED)
whitelisted_species += S.name
return 1
/* // Uncomment to debug chemical reaction list.
/client/verb/debug_chemical_list()
+39
View File
@@ -0,0 +1,39 @@
/**
* @file hooks.dm
* Implements hooks, a simple way to run code on pre-defined events.
*/
/** @page hooks Code hooks
* @section hooks Hooks
* A hook is defined under /hook in the type tree.
*
* To add some code to be called by the hook, define a proc under the type, as so:
* @code
/hook/foo/proc/bar()
if(1)
return 1 //Sucessful
else
return 0 //Error, or runtime.
* @endcode
* All hooks must return nonzero on success, as runtimes will force return null.
*/
/**
* Calls a hook, executing every piece of code that's attached to it.
* @param hook Identifier of the hook to call.
* @returns 1 if all hooked code runs successfully, 0 otherwise.
*/
/proc/callHook(hook)
var/hook_path = text2path("/hook/[hook]")
if(!hook_path)
error("Invalid hook '/hook/[hook]' called.")
return 0
var/caller = new hook_path
var/status = 1
for(var/P in typesof("[hook_path]/proc"))
if(!call(caller, P)())
error("Hook '[P]' failed or runtimed.")
status = 0
return status
+3
View File
@@ -1,3 +1,6 @@
/hook/startup/proc/createDatacore()
data_core = new /obj/effect/datacore()
return 1
/obj/effect/datacore/proc/manifest(var/nosleep = 0)
spawn()
+4
View File
@@ -14,6 +14,10 @@
if(prob(50))
rate = -rate
/hook/startup/proc/createSun()
sun = new /datum/sun()
return 1
// calculate the sun's position given the time of day
/datum/sun/proc/calc_position()
+7 -22
View File
@@ -56,7 +56,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
var/list/teleportlocs = list()
proc/process_teleport_locs()
/hook/startup/proc/setupTeleportLocs()
for(var/area/AR in world)
if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station) || istype(AR, /area/wizard_station)) continue
if(teleportlocs.Find(AR.name)) continue
@@ -65,20 +65,13 @@ proc/process_teleport_locs()
teleportlocs += AR.name
teleportlocs[AR.name] = AR
var/not_in_order = 0
do
not_in_order = 0
if(teleportlocs.len <= 1)
break
for(var/i = 1, i <= (teleportlocs.len - 1), i++)
if(sorttext(teleportlocs[i], teleportlocs[i+1]) == -1)
teleportlocs.Swap(i, i+1)
not_in_order = 1
while(not_in_order)
teleportlocs = sortAssoc(teleportlocs)
return 1
var/list/ghostteleportlocs = list()
proc/process_ghost_teleport_locs()
/hook/startup/proc/setupGhostTeleportLocs()
for(var/area/AR in world)
if(ghostteleportlocs.Find(AR.name)) continue
if(istype(AR, /area/turret_protected/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome))
@@ -89,17 +82,9 @@ proc/process_ghost_teleport_locs()
ghostteleportlocs += AR.name
ghostteleportlocs[AR.name] = AR
var/not_in_order = 0
do
not_in_order = 0
if(ghostteleportlocs.len <= 1)
break
for(var/i = 1, i <= (ghostteleportlocs.len - 1), i++)
if(sorttext(ghostteleportlocs[i], ghostteleportlocs[i+1]) == -1)
ghostteleportlocs.Swap(i, i+1)
not_in_order = 1
while(not_in_order)
ghostteleportlocs = sortAssoc(ghostteleportlocs)
return 1
/*-----------------------------------------------------------------------------*/
+4
View File
@@ -140,6 +140,10 @@ var/const/RADIO_MAGNETS = "9"
var/global/datum/controller/radio/radio_controller
/hook/startup/proc/createRadioController()
radio_controller = new /datum/controller/radio()
return 1
datum/controller/radio
var/list/datum/radio_frequency/frequencies = list()
@@ -12,6 +12,10 @@ var/global/Holiday = null
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// ~Carn
/hook/startup/proc/updateHoliday()
Get_Holiday()
return 1
//sets up the Holiday global variable. Shouldbe called on game configuration or something.
/proc/Get_Holiday()
if(!Holiday) return // Holiday stuff was not enabled in the config!
+3
View File
@@ -118,6 +118,7 @@ var/global/datum/controller/gameticker/ticker
data_core.manifest()
current_state = GAME_STATE_PLAYING
callHook("roundstart")
//here to initialize the random events nicely at round start
setup_economy()
@@ -309,6 +310,8 @@ var/global/datum/controller/gameticker/ticker
declare_completion()
spawn(50)
callHook("roundend")
if (mode.station_was_nuked)
feedback_set_details("end_proper","nuke")
if(!delay_end)
+12 -2
View File
@@ -2,6 +2,11 @@
var/list/whitelist = list()
/hook/startup/proc/loadWhitelist()
if(config.usewhitelist)
load_whitelist()
return 1
/proc/load_whitelist()
whitelist = file2list(WHITELISTFILE)
if(!whitelist.len) whitelist = null
@@ -11,9 +16,14 @@ var/list/whitelist = list()
return 0
return ("[M.ckey]" in whitelist)
var/list/alien_whitelist = list()
/var/list/alien_whitelist = list()
proc/load_alienwhitelist()
/hook/startup/proc/loadAlienWhitelist()
if(config.usealienwhitelist)
load_alienwhitelist()
return 1
/proc/load_alienwhitelist()
var/text = file2text("config/alienwhitelist.txt")
if (!text)
diary << "Failed to load config/alienwhitelist.txt\n"
+2 -1
View File
@@ -35,7 +35,7 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/weapon/reagent_containers/syringe(), \
new /obj/item/ammo_casing/shotgun/blank(), \
new /obj/item/ammo_casing/shotgun/beanbag(), \
new /obj/item/ammo_magazine/c38(), \
new /obj/item/ammo_magazine/c45r(), \
new /obj/item/device/taperecorder(), \
new /obj/item/device/assembly/igniter(), \
new /obj/item/device/assembly/signaler(), \
@@ -57,6 +57,7 @@ var/global/list/autolathe_recipes_hidden = list( \
new /obj/item/weapon/weldingtool/largetank(), \
new /obj/item/weapon/handcuffs(), \
new /obj/item/ammo_magazine/a357(), \
new /obj/item/ammo_magazine/c45(), \
new /obj/item/ammo_casing/shotgun(), \
new /obj/item/ammo_casing/shotgun/dart(), \
/* new /obj/item/weapon/shield/riot(), */ \
@@ -247,20 +247,24 @@
..()
sleep(2)
new /obj/item/clothing/under/det(src)
new /obj/item/clothing/under/det/black(src)
new /obj/item/clothing/under/det/slob(src)
new /obj/item/clothing/suit/storage/det_suit(src)
new /obj/item/clothing/suit/storage/det_suit/black(src)
new /obj/item/clothing/suit/storage/forensics/blue(src)
new /obj/item/clothing/suit/storage/forensics/red(src)
new /obj/item/clothing/gloves/black(src)
new /obj/item/clothing/head/det_hat(src)
new /obj/item/clothing/head/det_hat/black(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/weapon/storage/box/evidence(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/device/detective_scanner(src)
new /obj/item/clothing/suit/armor/det_suit(src)
new /obj/item/ammo_magazine/c38(src)
new /obj/item/ammo_magazine/c38(src)
new /obj/item/ammo_magazine/c45r(src)
new /obj/item/ammo_magazine/c45r(src)
new /obj/item/taperoll/police(src)
new /obj/item/weapon/gun/projectile/detective(src)
new /obj/item/weapon/gun/projectile/detective/semiauto(src)
new /obj/item/clothing/tie/holster/armpit(src)
return
+3
View File
@@ -58,6 +58,9 @@ var/savefile/Banlist
CMinutes = (world.realtime / 10) / 60
return 1
/hook/startup/proc/loadBans()
return LoadBans()
/proc/LoadBans()
Banlist = new("data/banlist.bdb")
-8
View File
@@ -1014,14 +1014,6 @@ var/global/floorIsLava = 0
message_admins("\blue [key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.", 1)
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/unjobban_panel()
set name = "Unjobban Panel"
set category = "Admin"
if (src.holder)
src.holder.unjobbanpanel()
feedback_add_details("admin_verb","UJBP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/datum/admins/proc/output_ai_laws()
var/ai_number = 0
for(var/mob/living/silicon/S in mob_list)
+4
View File
@@ -11,6 +11,10 @@
/proc/investigate_subject2file(var/subject)
return file("[INVESTIGATE_DIR][subject].html")
/hook/startup/proc/resetInvestigate()
investigate_reset()
return 1
/proc/investigate_reset()
if(fdel(INVESTIGATE_DIR)) return 1
return 0
+4
View File
@@ -53,6 +53,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
#endif
/hook/startup/proc/loadAdmins()
load_admins()
return 1
/proc/load_admins()
//clear the datums references
admin_datums.Cut()
+1 -3
View File
@@ -76,9 +76,7 @@ var/list/admin_verbs_admin = list(
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
/client/proc/jobbans,
/client/proc/unjobban_panel,
// /client/proc/DB_ban_panel
/client/proc/jobbans
)
var/list/admin_verbs_sounds = list(
/client/proc/play_local_sound,
+4 -9
View File
@@ -50,6 +50,10 @@ DEBUG
jobban_loadbanfile()
*/
/hook/startup/proc/loadJobBans()
jobban_loadbanfile()
return 1
/proc/jobban_loadbanfile()
if(config.ban_legacy_system)
var/savefile/S=new("data/job_full.ban")
@@ -101,15 +105,6 @@ DEBUG
text2file(formatted_log,"data/ban_unban_log.txt")
/proc/jobban_updatelegacybans()
if(!jobban_runonce)
log_admin("Updating jobbanfile!")
// Updates bans.. Or fixes them. Either way.
for(var/T in jobban_keylist)
if(!T) continue
jobban_runonce++ //don't run this update again
/proc/jobban_remove(X)
for (var/i = 1; i <= length(jobban_keylist); i++)
if( findtext(jobban_keylist[i], "[X]") )
-13
View File
@@ -891,19 +891,6 @@
if("Cancel")
return
else if(href_list["unjobbanf"])
if(!check_rights(R_BAN)) return
var/banfolder = href_list["unjobbanf"]
Banlist.cd = "/base/[banfolder]"
var/key = Banlist["key"]
if(alert(usr, "Are you sure you want to unban [key]?", "Confirmation", "Yes", "No") == "Yes")
if (RemoveBanjob(banfolder))
unjobbanpanel()
else
alert(usr,"This ban has already been lifted / does not exist.","Error","Ok")
unjobbanpanel()
else if(href_list["mute"])
if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return
+3
View File
@@ -77,6 +77,9 @@
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter,/obj/item/device/detective_scanner,/obj/item/device/taperecorder)
armor = list(melee = 50, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/suit/storage/det_suit/black
icon_state = "detective2"
//Forensics
/obj/item/clothing/suit/storage/forensics
name = "jacket"
@@ -71,6 +71,22 @@
flags = FPRINT | TABLEPASS
siemens_coefficient = 0.9
/obj/item/clothing/under/det/black
icon_state = "detective2"
item_color = "detective2"
/obj/item/clothing/under/det/slob
icon_state = "polsuit"
item_color = "polsuit"
/obj/item/clothing/under/det/slob/verb/rollup()
set name = "Roll suit sleevels"
set category = "Object"
set src in usr
item_color = item_color == "polsuit" ? "polsuit_rolled" : "polsuit"
if (ishuman(loc))
var/mob/living/carbon/human/H = loc
H.update_inv_w_uniform(1)
/obj/item/clothing/head/det_hat
name = "hat"
@@ -80,6 +96,10 @@
armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.9
/obj/item/clothing/head/det_hat/black
icon_state = "detective2"
/*
* Head of Security
*/
+23 -14
View File
@@ -494,12 +494,6 @@
icon = 'icons/obj/custom_items.dmi'
icon_state = "chal_appara_1"
/obj/item/clothing/gloves/fluff/ashley_rifler_1 //Vinceluk: Ashley Rifler
name = "Purple Glove"
desc = "A single, purple glove. Initials A.R. are written on the inside of it."
icon = 'icons/obj/custom_items.dmi'
icon_state = "ashley_rifler_1"
//////////// Eye Wear ////////////
/obj/item/clothing/glasses/meson/fluff/book_berner_1 //asanadas: Book Berner
@@ -591,14 +585,6 @@
icon = 'icons/obj/custom_items.dmi'
icon_state = "labcoat_pink_open"
/obj/item/clothing/suit/storage/det_suit/fluff/graycoat //vinceluk: Seth Sealis
name = "gray coat"
desc = "Old, worn out coat. It's seen better days."
icon = 'icons/obj/custom_items.dmi'
icon_state = "graycoat"
item_state = "graycoat"
item_color = "graycoat"
/obj/item/clothing/suit/storage/det_suit/fluff/leatherjack //atomicdog92: Seth Sealis
name = "leather jacket"
desc = "A black leather coat, popular amongst punks, greasers, and other galactic scum."
@@ -949,3 +935,26 @@
name = "[labeled] bottle"
desc = "A small bottle. Contains [labeled]"
icon_state = "bottle[color]"
/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/yuri_kornienkovich_flask
name = "Yuri's Flask"
desc = "An old gold plated flask. Nothing noteworthy about it besides it being gold and the red star on the worn out leather around it. There is also an engraving on the cap that is rather hard to see but it looks like \"Kornienkovich\" "
icon = 'icons/obj/custom_items.dmi'
icon_state = "yuri_kornienkovich_flask"
/obj/item/clothing/under/fluff/mai_yang_dress // Mai Yang's pretty pretty dress.
name = "White Cheongsam"
desc = "It is a white cheongsam dress."
icon = 'icons/obj/custom_items.dmi'
icon_state = "mai_yang"
item_state = "mai_yang"
item_color = "mai_yang"
/obj/item/clothing/under/fluff/sakura_hokkaido_kimono
name = "Sakura Kimono"
desc = "A pale-pink, nearly white, kimono with a red and gold obi. There is a embroidered design of cherry blossom flowers covering the kimono."
icon = 'icons/obj/custom_items.dmi'
icon_state = "sakura_hokkaido_kimono"
item_state = "sakura_hokkaido_kimono"
item_color = "sakura_hokkaido_kimono"
+9 -4
View File
@@ -4,11 +4,16 @@
return
/proc/send2mainirc(var/msg)
if(config.use_irc_bot && config.main_irc && config.irc_bot_host)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [config.main_irc] [msg]")
if(config.main_irc)
send2irc(config.main_irc, msg)
return
/proc/send2adminirc(var/msg)
if(config.use_irc_bot && config.admin_irc && config.irc_bot_host)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [config.admin_irc] [msg]")
if(config.admin_irc)
send2irc(config.admin_irc, msg)
return
/hook/startup/proc/ircNotify()
send2mainirc("Server starting up on [config.server? "byond://[config.server]" : "byond://[world.address]:[world.port]"]")
return 1
+16 -1
View File
@@ -1142,4 +1142,19 @@ I said no!
/datum/recipe/cracker
reagents = list("flour" = 5, "sodiumchloride" = 1)
result = /obj/item/weapon/reagent_containers/food/snacks/cracker
result = /obj/item/weapon/reagent_containers/food/snacks/cracker
/datum/recipe/stuffing
reagents = list("water" = 5, "sodiumchloride" = 1, "blackpepper" = 1)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread,
)
result = /obj/item/weapon/reagent_containers/food/snacks/stuffing
/datum/recipe/tofurkey
items = list(
/obj/item/weapon/reagent_containers/food/snacks/tofu,
/obj/item/weapon/reagent_containers/food/snacks/tofu,
/obj/item/weapon/reagent_containers/food/snacks/stuffing,
)
result = /obj/item/weapon/reagent_containers/food/snacks/tofurkey
@@ -13,6 +13,10 @@ var/datum/paiController/paiController // Global handler for pAI candidates
var/ready = 0
/hook/startup/proc/paiControllerSetup()
paiController = new /datum/paiController()
return 1
/datum/paiController
var/list/pai_candidates = list()
+5
View File
@@ -79,6 +79,9 @@
// rebuild all power networks from scratch
/hook/startup/proc/buildPowernets()
return makepowernets()
/proc/makepowernets()
for(var/datum/powernet/PN in powernets)
del(PN)
@@ -101,6 +104,8 @@
if(!M.powernet) continue // APCs have powernet=0 so they don't count as network nodes directly
M.powernet.nodes[M] = M
return 1
// returns a list of all power-related objects (nodes, cable, junctions) in turf,
// excluding source, that match the direction d
@@ -14,6 +14,25 @@
multiple_sprites = 1
/obj/item/ammo_magazine/c45
name = "magazine (.45)"
icon_state = "45"
ammo_type = "/obj/item/ammo_casing/c45"
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_magazine/c45/empty
max_ammo = 0
/obj/item/ammo_magazine/c45r
name = "magazine (.45 rubber)"
icon_state = "45"
ammo_type = "/obj/item/ammo_casing/c45r"
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_magazine/c45r/empty
max_ammo = 0
/obj/item/ammo_magazine/a418
name = "ammo box (.418)"
@@ -43,6 +43,10 @@
caliber = ".45"
projectile_type = "/obj/item/projectile/bullet/midbullet"
/obj/item/ammo_casing/c45r
desc = "A .45 rubber bullet casing."
caliber = ".45"
projectile_type = "/obj/item/projectile/bullet/weakbullet"
/obj/item/ammo_casing/a12mm
desc = "A 12mm bullet casing."
@@ -70,6 +70,26 @@
user << "<span class='warning'>You remove the modifications on [src]! Now it will fire .38 rounds.</span>"
/obj/item/weapon/gun/projectile/detective/semiauto
desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds."
name = "\improper Colt M1911"
icon_state = "colt"
max_shells = 7
caliber = ".45"
ammo_type = "/obj/item/ammo_casing/c45r"
load_method = 2
/obj/item/weapon/gun/projectile/detective/semiauto/New()
..()
empty_mag = new /obj/item/ammo_magazine/c45r/empty(src)
return
/obj/item/weapon/gun/projectile/detective/semiauto/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
..()
if(!loaded.len && empty_mag)
empty_mag.loc = get_turf(src.loc)
empty_mag = null
return
/obj/item/weapon/gun/projectile/mateba
@@ -542,6 +542,24 @@
reagents.add_reagent("nutriment", 3)
src.bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/tofurkey
name = "Tofurkey"
desc = "A fake turkey made from tofu."
icon_state = "tofurkey"
New()
..()
reagents.add_reagent("nutriment", 12)
reagents.add_reagent("stoxin", 3)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/stuffing
name = "Stuffing"
desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!"
icon_state = "stuffing"
New()
..()
reagents.add_reagent("nutriment", 3)
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/carpmeat
name = "carp fillet"
+30 -54
View File
@@ -7,7 +7,7 @@
#define RECOMMENDED_VERSION 495
#define RECOMMENDED_VERSION 501
/world/New()
//logs
var/date_string = time2text(world.realtime, "YYYY/MM-Month/DD-Day")
@@ -22,59 +22,13 @@
if(byond_version < RECOMMENDED_VERSION)
world.log << "Your server's byond version does not meet the recommended requirements for this server. Please update BYOND"
make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once)
load_configuration()
load_mode()
load_motd()
load_admins()
load_mods()
LoadBansjob()
if(config.usewhitelist)
load_whitelist()
if(config.usealienwhitelist)
load_alienwhitelist()
jobban_loadbanfile()
jobban_updatelegacybans()
LoadBans()
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]"
investigate_reset()
Get_Holiday() //~Carn, needs to be here when the station is named so :P
src.update_status()
makepowernets()
sun = new /datum/sun()
radio_controller = new /datum/controller/radio()
data_core = new /obj/effect/datacore()
paiController = new /datum/paiController()
if(!setup_database_connection())
world.log << "Your server failed to establish a connection with the feedback database."
else
world.log << "Feedback database connection established."
if(!setup_old_database_connection())
world.log << "Your server failed to establish a connection with the SQL database."
else
world.log << "SQL database connection established."
plmaster = new /obj/effect/overlay()
plmaster.icon = 'icons/effects/tile_effects.dmi'
plmaster.icon_state = "plasma"
plmaster.layer = FLY_LAYER
plmaster.mouse_opacity = 0
slmaster = new /obj/effect/overlay()
slmaster.icon = 'icons/effects/tile_effects.dmi'
slmaster.icon_state = "sleeping_agent"
slmaster.layer = FLY_LAYER
slmaster.mouse_opacity = 0
callHook("startup")
src.update_status()
@@ -82,15 +36,10 @@
sleep_offline = 1
send2mainirc("Server starting up on [config.server? "byond://[config.server]" : "byond://[world.address]:[world.port]"]")
master_controller = new /datum/controller/game_controller()
spawn(1)
master_controller.setup()
process_teleport_locs() //Sets up the wizard teleport locations
process_ghost_teleport_locs() //Sets up ghost teleport locations.
spawn(3000) //so we aren't adding to the round-start lag
if(config.ToRban)
ToRban_autoupdate()
@@ -184,6 +133,10 @@
#undef INACTIVITY_KICK
/hook/startup/proc/loadMode()
world.load_mode()
return 1
/world/proc/load_mode()
var/list/Lines = file2list("data/mode.txt")
if(Lines.len)
@@ -196,9 +149,15 @@
fdel(F)
F << the_mode
/hook/startup/proc/loadMOTD()
world.load_motd()
return 1
/world/proc/load_motd()
join_motd = file2text("config/motd.txt")
/world/proc/load_configuration()
config = new /datum/configuration()
config.load("config/config.txt")
@@ -208,6 +167,11 @@
// apply some settings from config..
abandon_allowed = config.respawn
/hook/startup/proc/loadMods()
world.load_mods()
return 1
/world/proc/load_mods()
if(config.admin_legacy_system)
var/text = file2text("config/moderators.txt")
@@ -290,6 +254,13 @@
var/failed_db_connections = 0
var/failed_old_db_connections = 0
/hook/startup/proc/connectDB()
if(!setup_database_connection())
world.log << "Your server failed to establish a connection with the feedback database."
else
world.log << "Feedback database connection established."
return 1
proc/setup_database_connection()
if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore.
@@ -325,7 +296,12 @@ proc/establish_db_connection()
return 1
/hook/startup/proc/connectOldDB()
if(!setup_old_database_connection())
world.log << "Your server failed to establish a connection with the SQL database."
else
world.log << "SQL database connection established."
return 1
//These two procs are for the old database, while it's being phased out. See the tgstation.sql file in the SQL folder for more information.
proc/setup_old_database_connection()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 87 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 39 KiB