Merge branch 'ParadiseSS13/master' into afk-subsystem-2

This commit is contained in:
joep van der velden
2020-03-18 17:04:46 +01:00
1762 changed files with 195836 additions and 188767 deletions
+1 -1
View File
@@ -99,4 +99,4 @@
var/client_keysend_amount = 0
var/next_keysend_reset = 0
var/next_keysend_trip_reset = 0
var/keysend_tripped = FALSE
var/keysend_tripped = FALSE
+39 -20
View File
@@ -360,10 +360,10 @@
. = ..() //calls mob.Login()
if(ckey in clientmessages)
for(var/message in clientmessages[ckey])
if(ckey in GLOB.clientmessages)
for(var/message in GLOB.clientmessages[ckey])
to_chat(src, message)
clientmessages.Remove(ckey)
GLOB.clientmessages.Remove(ckey)
if(SSinput.initialized)
set_macros()
@@ -413,10 +413,17 @@
for(var/mob/M in GLOB.player_list)
if(M.client)
playercount += 1
if(playercount >= 150 && GLOB.panic_bunker_enabled == 0)
GLOB.panic_bunker_enabled = 1
message_admins("Panic bunker has been automatically enabled due to playercount surpassing 150")
// Update the state of the panic bunker based on current playercount
var/threshold = config.panic_bunker_threshold
if((playercount > threshold) && (GLOB.panic_bunker_enabled == FALSE))
GLOB.panic_bunker_enabled = TRUE
message_admins("Panic bunker has been automatically enabled due to playercount rising above [threshold]")
if((playercount < threshold) && (GLOB.panic_bunker_enabled == TRUE))
GLOB.panic_bunker_enabled = FALSE
message_admins("Panic bunker has been automatically disabled due to playercount dropping below [threshold]")
/client/proc/is_connecting_from_localhost()
var/localhost_addresses = list("127.0.0.1", "::1") // Adresses
@@ -549,20 +556,19 @@
// Check new peeps for panic bunker
if(GLOB.panic_bunker_enabled)
message_admins("<span class='adminnotice'>Failed Login: [key] - New account attempting to connect during panic bunker</span>")
src << "Sorry but the server is currently not accepting connections from never before seen players. Please try again later."
var/threshold = config.panic_bunker_threshold
src << "Server is not accepting connections from never-before-seen players until player count is less than [threshold]. Please try again later."
del(src)
return // Dont insert or they can just go in again
var/DBQuery/query_insert = dbcon.NewQuery("INSERT INTO [format_table_name("player")] (id, ckey, firstseen, lastseen, ip, computerid, lastadminrank) VALUES (null, '[ckey]', Now(), Now(), '[sql_ip]', '[sql_computerid]', '[sql_admin_rank]')")
if(!query_insert.Execute())
var/err = query_insert.ErrorMsg()
log_game("SQL ERROR during log_client_to_db (insert). Error : \[[err]\]\n")
message_admins("SQL ERROR during log_client_to_db (insert). Error : \[[err]\]\n")
//Logging player access
var/serverip = "[world.internet_address]:[world.port]"
var/DBQuery/query_accesslog = dbcon.NewQuery("INSERT INTO `[format_table_name("connection_log")]`(`id`,`datetime`,`serverip`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),'[serverip]','[ckey]','[sql_ip]','[sql_computerid]');")
// Log player connections to DB
var/DBQuery/query_accesslog = dbcon.NewQuery("INSERT INTO `[format_table_name("connection_log")]`(`datetime`,`ckey`,`ip`,`computerid`) VALUES(Now(),'[ckey]','[sql_ip]','[sql_computerid]');")
query_accesslog.Execute()
/client/proc/check_ip_intel()
@@ -601,8 +607,13 @@
/client/proc/check_forum_link()
if(config.forum_link_url && prefs && !prefs.fuid)
to_chat(src, "<B>You do not have your forum account linked. <a href='?src=[UID()];link_forum_account=true'>LINK FORUM ACCOUNT</a></B>")
if(!config.forum_link_url || !prefs || prefs.fuid)
return
if(config.use_exp_tracking)
var/living_hours = get_exp_type_num(EXP_TYPE_LIVING) / 60
if(living_hours < 20)
return
to_chat(src, "<B>You have no verified forum account. <a href='?src=[UID()];link_forum_account=true'>VERIFY FORUM ACCOUNT</a></B>")
/client/proc/create_oauth_token()
var/DBQuery/query_find_token = dbcon.NewQuery("SELECT token FROM [format_table_name("oauth_tokens")] WHERE ckey = '[ckey]' limit 1")
@@ -617,12 +628,15 @@
return
return tokenstr
/client/proc/link_forum_account()
/client/proc/link_forum_account(fromban)
if(!config.forum_link_url)
return
if(IsGuestKey(key))
to_chat(src, "Guest keys cannot be linked.")
return
if(prefs && prefs.fuid)
to_chat(src, "Your forum account is already set.")
if(!fromban)
to_chat(src, "Your forum account is already set.")
return
var/DBQuery/query_find_link = dbcon.NewQuery("SELECT fuid FROM [format_table_name("player")] WHERE ckey = '[ckey]' limit 1")
if(!query_find_link.Execute())
@@ -630,14 +644,19 @@
return
if(query_find_link.NextRow())
if(query_find_link.item[1])
to_chat(src, "Your forum account is already set. (" + query_find_link.item[1] + ")")
if(!fromban)
to_chat(src, "Your forum account is already set. (" + query_find_link.item[1] + ")")
return
var/tokenid = create_oauth_token()
if(!tokenid)
to_chat(src, "link_forum_account: unable to create token")
return
var/url = "[config.forum_link_url][tokenid]"
to_chat(src, {"Now opening a windows to verify your information with the forums. If the window does not load, please go to: <a href="[url]">[url]</a>."})
if(fromban)
url += "&fwd=appeal"
to_chat(src, {"Now opening a window to verify your information with the forums, so that you can appeal your ban. If the window does not load, please copy/paste this link: <a href="[url]">[url]</a>"})
else
to_chat(src, {"Now opening a window to verify your information with the forums. If the window does not load, please go to: <a href="[url]">[url]</a>"})
src << link(url)
return
@@ -774,7 +793,7 @@
// Change the way they should download resources.
if(config.resource_urls)
preload_rsc = pick(config.resource_urls)
else
else
preload_rsc = 1 // If config.resource_urls is not set, preload like normal.
// Most assets are now handled through global_cache.dm
getFiles(
+5 -4
View File
@@ -1,9 +1,10 @@
var/list/clientmessages = list()
GLOBAL_LIST_EMPTY(clientmessages)
proc/addclientmessage(var/ckey, var/message)
ckey = ckey(ckey)
if(!ckey || !message)
return
if(!(ckey in clientmessages))
clientmessages[ckey] = list()
clientmessages[ckey] += message
var/list/L = GLOB.clientmessages[ckey]
if(!L)
GLOB.clientmessages[ckey] = L = list()
L += message
@@ -21,4 +21,4 @@
/datum/gear/lipstick/lime
display_name = "lipstick, lime"
path = /obj/item/lipstick/lime
path = /obj/item/lipstick/lime
@@ -93,4 +93,4 @@
display_name = "Gold ID Decal"
path = /obj/item/id_decal/gold
donator_tier = 4
cost = 4
cost = 4
@@ -21,4 +21,4 @@
/datum/gear/glasses/prescription
display_name = "Prescription glasses"
path = /obj/item/clothing/glasses/regular
path = /obj/item/clothing/glasses/regular
@@ -5,4 +5,4 @@
/datum/gear/gloves/fingerless
display_name = "Fingerless Gloves"
path = /obj/item/clothing/gloves/fingerless
path = /obj/item/clothing/gloves/fingerless
@@ -1,46 +1,47 @@
/datum/gear/racial
sort_category = "Racial"
subtype_path = /datum/gear/racial
cost = 1
/datum/gear/racial/taj
slot = slot_glasses
cost = 2
/datum/gear/racial/taj/civ
display_name = "embroidered veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races."
path = /obj/item/clothing/glasses/tajblind
cost = 1
slot = slot_glasses
/datum/gear/racial/taj/sec
display_name = "sleek veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built security HUD."
path = /obj/item/clothing/glasses/hud/security/tajblind
allowed_roles = list("Head of Security", "Warden", "Security Officer", "Security Pod Pilot", "Internal Affairs Agent", "Magistrate")
cost = 2
/datum/gear/racial/taj/med
display_name = "lightweight veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. This one has an in-built medical HUD."
path = /obj/item/clothing/glasses/hud/health/tajblind
allowed_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Psychiatrist", "Paramedic", "Virologist", "Brig Physician" , "Coroner")
cost = 2
/datum/gear/racial/taj/sci
display_name = "hi-tech veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races."
path = /obj/item/clothing/glasses/tajblind/sci
cost = 2
/datum/gear/racial/taj/eng
display_name = "industrial veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races."
path = /obj/item/clothing/glasses/tajblind/eng
cost = 2
/datum/gear/racial/taj/cargo
display_name = "khaki veil"
description = "A common traditional nano-fiber veil worn by many Tajaran, It is rare and offensive to see it on other races. It is light and comfy!"
path = /obj/item/clothing/glasses/tajblind/cargo
cost = 2
/datum/gear/racial/footwraps
display_name = "cloth footwraps"
path = /obj/item/clothing/shoes/footwraps
slot = slot_shoes
cost = 1
@@ -55,4 +55,4 @@
/datum/gear/shoes/whiteshoes
display_name = "White shoes"
path = /obj/item/clothing/shoes/white
path = /obj/item/clothing/shoes/white
+23 -23
View File
@@ -55,8 +55,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return max(0, days - C.player_age)
return 0
#define MAX_SAVE_SLOTS 20 // Save slots for regular players
#define MAX_SAVE_SLOTS_MEMBER 20 // Save slots for BYOND members
#define MAX_SAVE_SLOTS 30 // Save slots for regular players
#define MAX_SAVE_SLOTS_MEMBER 30 // Save slots for BYOND members
#define TAB_CHAR 0
#define TAB_GAME 1
@@ -294,8 +294,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<b>Disabilities:</b> <a href='?_src_=prefs;preference=disabilities'>\[Set\]</a><br>"
dat += "<b>Nanotrasen Relation:</b> <a href ='?_src_=prefs;preference=nt_relation;task=input'>[nanotrasen_relation]</a><br>"
dat += "<a href='byond://?_src_=prefs;preference=flavor_text;task=input'>Set Flavor Text</a><br>"
if(lentext(flavor_text) <= 40)
if(!lentext(flavor_text)) dat += "\[...\]<br>"
if(length(flavor_text) <= 40)
if(!length(flavor_text)) dat += "\[...\]<br>"
else dat += "[flavor_text]<br>"
else dat += "[TextPreview(flavor_text)]...<br>"
@@ -651,7 +651,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/available_in_days = job.available_in_days(user.client)
HTML += "<del>[rank]</del></td><td> \[IN [(available_in_days)] DAYS]</td></tr>"
continue
if((job_support_low & CIVILIAN) && (rank != "Civilian"))
if((job_support_low & JOB_CIVILIAN) && (rank != "Civilian"))
HTML += "<font color=orange>[rank]</font></td><td></td></tr>"
continue
if((rank in command_positions) || (rank == "AI"))//Bold head jobs
@@ -693,7 +693,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
// HTML += "<a href='?_src_=prefs;preference=job;task=input;text=[rank]'>"
if(rank == "Civilian")//Civilian is special
if(job_support_low & CIVILIAN)
if(job_support_low & JOB_CIVILIAN)
HTML += " <font color=green>\[Yes]</font></a>"
else
HTML += " <font color=red>\[No]</font></a>"
@@ -760,7 +760,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_medsci_high = 0
job_karma_high = 0
if(job.department_flag == SUPPORT)
if(job.department_flag == JOBCAT_SUPPORT)
job_support_low &= ~job.flag
job_support_med &= ~job.flag
job_support_high &= ~job.flag
@@ -774,7 +774,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_support_low |= job.flag
return 1
else if(job.department_flag == ENGSEC)
else if(job.department_flag == JOBCAT_ENGSEC)
job_engsec_low &= ~job.flag
job_engsec_med &= ~job.flag
job_engsec_high &= ~job.flag
@@ -788,7 +788,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_engsec_low |= job.flag
return 1
else if(job.department_flag == MEDSCI)
else if(job.department_flag == JOBCAT_MEDSCI)
job_medsci_low &= ~job.flag
job_medsci_med &= ~job.flag
job_medsci_high &= ~job.flag
@@ -802,7 +802,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_medsci_low |= job.flag
return 1
else if(job.department_flag == KARMA)
else if(job.department_flag == JOBCAT_KARMA)
job_karma_low &= ~job.flag
job_karma_med &= ~job.flag
job_karma_high &= ~job.flag
@@ -886,21 +886,21 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
HTML += "<a href=\"byond://?_src_=prefs;preference=records;task=med_record\">Medical Records</a><br>"
if(lentext(med_record) <= 40)
if(length(med_record) <= 40)
HTML += "[med_record]"
else
HTML += "[copytext(med_record, 1, 37)]..."
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=gen_record\">Employment Records</a><br>"
if(lentext(gen_record) <= 40)
if(length(gen_record) <= 40)
HTML += "[gen_record]"
else
HTML += "[copytext(gen_record, 1, 37)]..."
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=sec_record\">Security Records</a><br>"
if(lentext(sec_record) <= 40)
if(length(sec_record) <= 40)
HTML += "[sec_record]<br>"
else
HTML += "[copytext(sec_record, 1, 37)]...<br>"
@@ -973,7 +973,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
/datum/preferences/proc/GetJobDepartment(var/datum/job/job, var/level)
if(!job || !level) return 0
switch(job.department_flag)
if(SUPPORT)
if(JOBCAT_SUPPORT)
switch(level)
if(1)
return job_support_high
@@ -981,7 +981,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return job_support_med
if(3)
return job_support_low
if(MEDSCI)
if(JOBCAT_MEDSCI)
switch(level)
if(1)
return job_medsci_high
@@ -989,7 +989,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return job_medsci_med
if(3)
return job_medsci_low
if(ENGSEC)
if(JOBCAT_ENGSEC)
switch(level)
if(1)
return job_engsec_high
@@ -997,7 +997,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return job_engsec_med
if(3)
return job_engsec_low
if(KARMA)
if(JOBCAT_KARMA)
switch(level)
if(1)
return job_karma_high
@@ -1027,7 +1027,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_karma_high = 0
switch(job.department_flag)
if(SUPPORT)
if(JOBCAT_SUPPORT)
switch(level)
if(2)
job_support_high = job.flag
@@ -1037,7 +1037,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_support_low &= ~job.flag
else
job_support_low |= job.flag
if(MEDSCI)
if(JOBCAT_MEDSCI)
switch(level)
if(2)
job_medsci_high = job.flag
@@ -1047,7 +1047,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_medsci_low &= ~job.flag
else
job_medsci_low |= job.flag
if(ENGSEC)
if(JOBCAT_ENGSEC)
switch(level)
if(2)
job_engsec_high = job.flag
@@ -1057,7 +1057,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
job_engsec_low &= ~job.flag
else
job_engsec_low |= job.flag
if(KARMA)
if(JOBCAT_KARMA)
switch(level)
if(2)
job_karma_high = job.flag
@@ -1308,7 +1308,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
else //Not using the whitelist? Aliens for everyone!
new_species += GLOB.whitelisted_species
species = input("Please select a species", "Character Generation", null) in new_species
species = input("Please select a species", "Character Generation", null) in sortTim(new_species, /proc/cmp_text_asc)
var/datum/species/NS = GLOB.all_species[species]
if(!istype(NS)) //The species was invalid. Notify the user and fail out.
species = prev_species
@@ -1406,7 +1406,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if(!(lang.flags & RESTRICTED))
new_languages += lang.name
language = input("Please select a secondary language", "Character Generation", null) in new_languages
language = input("Please select a secondary language", "Character Generation", null) in sortTim(new_languages, /proc/cmp_text_asc)
if("autohiss_mode")
if(S.autohiss_basic_map)
@@ -36,6 +36,15 @@
to_chat(usr, "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers")
feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggle_ai_voice_annoucements()
set name = "Hear/Silence AI Voice Announcements"
set category = "Preferences"
set desc = "Toggle hearing AI annoucements in voice form or in text form"
prefs.sound ^= SOUND_AI_VOICE
prefs.save_preferences(src)
to_chat(usr, "[(prefs.sound & SOUND_AI_VOICE) ? "You will now hear AI announcements." : "AI annoucements will now be converted to text."] ")
feedback_add_details("admin_verb","TAIvoice") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggleadminhelpsound()
set name = "Hear/Silence Admin Bwoinks"
set category = "Preferences"
+1 -1
View File
@@ -87,4 +87,4 @@
return
to_chat(src, "<span class='notice'>View range set to [viewNum_to_text(view_range)]</span>")
AddViewMod("custom", view_range)
AddViewMod("custom", view_range)