Merge remote-tracking branch 'upstream/master' into resource_urls

This commit is contained in:
Couls
2019-08-04 21:13:42 -04:00
47 changed files with 274 additions and 42 deletions
+1 -1
View File
@@ -108,7 +108,7 @@ world/IsBanned(key, address, computer_id, check_ipintel = TRUE)
var/appealmessage = ""
if(config.banappeals)
appealmessage = " You may appeal it at <a href='[config.banappeals]'>[config.banappeals]</a>."
expires = " This is a permanent ban.[appealmessage]"
expires = " This ban does not expire automatically and must be appealed.[appealmessage]"
var/desc = "\nReason: You, or another user of this computer or connection ([pckey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban was applied by [ackey] on [bantime].[expires]"
+4 -4
View File
@@ -1015,14 +1015,14 @@
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
to_chat(M, "<span class='warning'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></span>")
to_chat(M, "<span class='warning'>This is a permanent ban.</span>")
to_chat(M, "<span class='warning'>This ban does not expire automatically and must be appealed.</span>")
if(config.banappeals)
to_chat(M, "<span class='warning'>To try to resolve this matter head to [config.banappeals]</span>")
else
to_chat(M, "<span class='warning'>No ban appeals URL has been set.</span>")
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("<span class='notice'>[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.</span>")
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This ban does not expire automatically and must be appealed.")
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis ban does not expire automatically and must be appealed.")
message_admins("<span class='notice'>[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis ban does not expire automatically and must be appealed.</span>")
feedback_inc("ban_perma",1)
DB_ban_record(BANTYPE_PERMA, M, -1, reason)
@@ -93,6 +93,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/clientfps = 0
var/atklog = ATKLOG_ALL
var/fuid // forum userid
var/afk_watch = FALSE // If the player wants to be kept track of by the AFK system
//ghostly preferences
var/ghost_anonsay = 0
@@ -439,6 +440,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<h2>General Settings</h2>"
if(user.client.holder)
dat += "<b>Adminhelp sound:</b> <a href='?_src_=prefs;preference=hear_adminhelps'><b>[(sound & SOUND_ADMINHELP)?"On":"Off"]</b></a><br>"
dat += "<b>AFK Cryoing:</b> <a href='?_src_=prefs;preference=afk_watch'>[(afk_watch) ? "Yes" : "No"]</a><br>"
dat += "<b>Ambient Occlusion:</b> <a href='?_src_=prefs;preference=ambientocclusion'><b>[toggles & AMBIENT_OCCLUSION ? "Enabled" : "Disabled"]</b></a><br>"
dat += "<b>Attack Animations:</b> <a href='?_src_=prefs;preference=ghost_att_anim'>[(show_ghostitem_attack) ? "Yes" : "No"]</a><br>"
if(unlock_content)
@@ -1977,6 +1979,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("winflash")
windowflashing = !windowflashing
if("afk_watch")
afk_watch = !afk_watch
if("UIcolor")
var/UI_style_color_new = input(user, "Choose your UI color, dark colors are not recommended!", UI_style_color) as color|null
if(!UI_style_color_new) return
@@ -19,7 +19,8 @@
exp,
clientfps,
atklog,
fuid
fuid,
afk_watch
FROM [format_table_name("player")]
WHERE ckey='[C.ckey]'"}
)
@@ -52,6 +53,7 @@
clientfps = text2num(query.item[17])
atklog = text2num(query.item[18])
fuid = text2num(query.item[19])
afk_watch = text2num(query.item[20])
//Sanitize
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
@@ -72,6 +74,7 @@
clientfps = sanitize_integer(clientfps, 0, 1000, initial(clientfps))
atklog = sanitize_integer(atklog, 0, 100, initial(atklog))
fuid = sanitize_integer(fuid, 0, 10000000, initial(fuid))
afk_watch = sanitize_integer(afk_watch, 0, 1, initial(afk_watch))
return 1
/datum/preferences/proc/save_preferences(client/C)
@@ -90,7 +93,7 @@
UI_style_alpha='[UI_style_alpha]',
be_role='[sanitizeSQL(list2params(be_special))]',
default_slot='[default_slot]',
toggles='[num2text(toggles, 7)]',
toggles='[num2text(toggles, Ceiling(log(10, (TOGGLES_TOTAL))))]',
atklog='[atklog]',
sound='[sound]',
randomslot='[randomslot]',
@@ -101,7 +104,8 @@
windowflashing='[windowflashing]',
ghost_anonsay='[ghost_anonsay]',
clientfps='[clientfps]',
atklog='[atklog]'
atklog='[atklog]',
afk_watch='[afk_watch]'
WHERE ckey='[C.ckey]'"}
)
@@ -256,6 +256,7 @@
desc = "Full of vitamins and deliciousness!"
icon_state = "orangejuice"
item_state = "carton"
throwforce = 0
isGlass = 0
list_reagents = list("orangejuice" = 100)
@@ -264,6 +265,7 @@
desc = "It's cream. Made from milk. What else did you think you'd find in there?"
icon_state = "cream"
item_state = "carton"
throwforce = 0
isGlass = 0
list_reagents = list("cream" = 100)
@@ -272,6 +274,7 @@
desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness."
icon_state = "tomatojuice"
item_state = "carton"
throwforce = 0
isGlass = 0
list_reagents = list("tomatojuice" = 100)
@@ -280,6 +283,7 @@
desc = "Sweet-sour goodness."
icon_state = "limejuice"
item_state = "carton"
throwforce = 0
isGlass = 0
list_reagents = list("limejuice" = 100)
@@ -288,6 +292,7 @@
desc = "Soothing milk."
icon_state = "milk"
item_state = "carton"
throwforce = 0
isGlass = 0
list_reagents = list("milk" = 100)
+4 -1
View File
@@ -22,8 +22,11 @@
if("F2") // Screenshot. Hold shift to choose a name and location to save in
ooc()
return
if("F3")
mob.say_wrapper()
return
if("F4")
mob.me_verb()
mob.me_wrapper()
return
if("F12") // Toggles minimal HUD
mob.button_pressed_F12()
+7 -2
View File
@@ -10,6 +10,11 @@
cycle_modules()
return
if("Q")
uneq_active()
return
if(!(client.prefs.toggles & AZERTY))
uneq_active()
return
if("A")
if(client.prefs.toggles & AZERTY)
uneq_active()
return
return ..()
+1 -1
View File
@@ -43,4 +43,4 @@
var/key = macro_set[k]
var/command = macro_set[key]
winset(src, "[setname]-\ref[key]", "parent=[setname];name=[key];command=[command]")
winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED] mainwindow.macro=default")
winset(src, null, "input.focus=true input.background-color=[COLOR_INPUT_ENABLED] mainwindow.macro=old_default")
@@ -671,9 +671,9 @@
if(!restrained())
var/t1 = round(text2num(param))
if(isnum(t1))
if(t1 <= 5 && (!r_hand || !l_hand))
if(t1 <= 5 && t1 >= 1 && (!r_hand || !l_hand))
message = "<B>[src]</B> raises [t1] finger\s."
else if(t1 <= 10 && (!r_hand && !l_hand))
else if(t1 <= 10 && t1 >= 1 && (!r_hand && !l_hand))
message = "<B>[src]</B> raises [t1] finger\s."
m_type = 1
+4 -4
View File
@@ -634,7 +634,7 @@ var/list/ai_verbs_default = list(
return
if(href_list["trackbot"])
var/mob/living/simple_animal/bot/target = locate(href_list["trackbot"]) in GLOB.simple_animals
var/mob/living/simple_animal/bot/target = locate(href_list["trackbot"]) in GLOB.bots_list
if(target)
ai_actual_track(target)
else
@@ -642,7 +642,7 @@ var/list/ai_verbs_default = list(
return
if(href_list["callbot"]) //Command a bot to move to a selected location.
Bot = locate(href_list["callbot"]) in GLOB.simple_animals
Bot = locate(href_list["callbot"]) in GLOB.bots_list
if(!Bot || Bot.remote_disabled || control_disabled)
return //True if there is no bot found, the bot is manually emagged, or the AI is carded with wireless off.
waypoint_mode = 1
@@ -650,7 +650,7 @@ var/list/ai_verbs_default = list(
return
if(href_list["interface"]) //Remotely connect to a bot!
Bot = locate(href_list["interface"]) in GLOB.simple_animals
Bot = locate(href_list["interface"]) in GLOB.bots_list
if(!Bot || Bot.remote_disabled || control_disabled)
return
Bot.attack_ai(src)
@@ -746,7 +746,7 @@ var/list/ai_verbs_default = list(
d += "<A HREF=?src=[UID()];botrefresh=\ref[Bot]>Query network status</A><br>"
d += "<table width='100%'><tr><td width='40%'><h3>Name</h3></td><td width='20%'><h3>Status</h3></td><td width='30%'><h3>Location</h3></td><td width='10%'><h3>Control</h3></td></tr>"
for(var/mob/living/simple_animal/bot/Bot in GLOB.simple_animals)
for(var/mob/living/simple_animal/bot/Bot in GLOB.bots_list)
if(is_ai_allowed(Bot.z) && !Bot.remote_disabled) //Only non-emagged bots on the allowed Z-level are detected!
bot_area = get_area(Bot)
d += "<tr><td width='30%'>[Bot.hacked ? "<span class='bad'>(!) </span>[Bot.name]" : Bot.name] ([Bot.model])</td>"
@@ -1456,4 +1456,4 @@ var/list/robot_verbs_default = list(
SEND_SIGNAL(src, COMSIG_MOB_UPDATE_SIGHT)
sync_lighting_plane_alpha()
@@ -21,6 +21,7 @@
maxHealth = 50
health = 50
pixel_x = -16
see_in_dark = 8
harm_intent_damage = 8
melee_damage_lower = 15
+21 -3
View File
@@ -693,9 +693,13 @@ var/list/slot_equipment_priority = list( \
msg = copytext(msg, 1, MAX_MESSAGE_LEN)
msg = sanitize_simple(html_encode(msg), list("\n" = "<BR>"))
if(mind)
var/combined = length(memory + msg)
if(mind && (combined < MAX_PAPER_MESSAGE_LEN))
mind.store_memory(msg)
else if(combined >= MAX_PAPER_MESSAGE_LEN)
to_chat(src, "Your brain can't hold that much information!")
return
else
to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.")
@@ -1366,5 +1370,19 @@ var/list/slot_equipment_priority = list( \
/mob/proc/sync_lighting_plane_alpha()
if(hud_used)
var/obj/screen/plane_master/lighting/L = hud_used.plane_masters["[LIGHTING_PLANE]"]
if (L)
if(L)
L.alpha = lighting_alpha
sync_nightvision_screen() //Sync up the overlay used for nightvision to the amount of see_in_dark a mob has. This needs to be called everywhere sync_lighting_plane_alpha() is.
/mob/proc/sync_nightvision_screen()
var/obj/screen/fullscreen/see_through_darkness/S = screens["see_through_darkness"]
if(S)
var/suffix = ""
switch(see_in_dark)
if(3 to 8)
suffix = "_[see_in_dark]"
if(8 to INFINITY)
suffix = "_8"
S.icon_state = "[initial(S.icon_state)][suffix]"
@@ -73,7 +73,7 @@
if(user.a_intent == INTENT_HARM)
M.visible_message("<span class='danger'>[user] splashes the contents of [src] onto [M]!</span>", \
"<span class='userdanger'>[user] splashes the contents of [src] onto [M]!</span>")
add_attack_logs(M, user, "Splashed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL)
add_attack_logs(user, M, "Splashed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL)
if(!iscarbon(user))
M.LAssailant = null
else
@@ -90,11 +90,12 @@
if(!reagents || !reagents.total_volume)
return // The drink might be empty after the delay, such as by spam-feeding
M.visible_message("<span class='danger'>[user] feeds something to [M].</span>", "<span class='userdanger'>[user] feeds something to you.</span>")
add_attack_logs(M, user, "Fed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL)
add_attack_logs(user, M, "Fed with [name] containing [contained]", !!M.ckey ? null : ATKLOG_ALL)
else
to_chat(user, "<span class='notice'>You swallow a gulp of [src].</span>")
reagents.reaction(M, INGEST)
var/fraction = min(5 / reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
else