From 773f093f2b7e6fa814557b4f91b60282541c664e Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 22 Apr 2015 18:36:38 -0400 Subject: [PATCH 1/8] Spider Balance--Venom --- .../living/simple_animal/hostile/giant_spider.dm | 4 ++-- code/modules/reagents/Chemistry-Reagents.dm | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 028a7cb454c..ee55f6f2ef2 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -6,14 +6,14 @@ /mob/living/simple_animal/hostile/poison var/poison_per_bite = 5 - var/poison_type = "venom" + var/poison_type = "spidertoxin" /mob/living/simple_animal/hostile/poison/AttackingTarget() ..() if(isliving(target)) var/mob/living/L = target if(L.reagents) - L.reagents.add_reagent("venom", poison_per_bite) + L.reagents.add_reagent("spidertoxin", poison_per_bite) if(prob(poison_per_bite)) L << "You feel a tiny prick." L.reagents.add_reagent(poison_type, poison_per_bite) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index d9b0b2b626d..0ac2c811d88 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -321,6 +321,19 @@ datum ..() return + spider_venom + name = "Spider venom" + id = "spidertoxin" + description = "A toxic venom injected by spacefaring arachnids." + reagent_state = LIQUID + color = "#CF3600" // rgb: 207, 54, 0 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(1.5) + ..() + return + plasticide name = "Plasticide" id = "plasticide" From d0620af8588286aa1f779bf5265753aa99bab687 Mon Sep 17 00:00:00 2001 From: DZD Date: Thu, 23 Apr 2015 12:41:06 -0400 Subject: [PATCH 2/8] Adds AOOC via Baystation12/Baystation12#8411 --- code/modules/admin/admin_verbs.dm | 1 + code/modules/admin/verbs/antag-ooc.dm | 20 ++++++++++++++++++++ paradise.dme | 1 + 3 files changed, 22 insertions(+) create mode 100644 code/modules/admin/verbs/antag-ooc.dm diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index fcf047784aa..c6781a4543c 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -62,6 +62,7 @@ var/list/admin_verbs_admin = list( /client/proc/global_man_up, /client/proc/delbook, /client/proc/empty_ai_core_toggle_latejoin, + /client/proc/aooc, /client/proc/freeze, /client/proc/freezemecha, /client/proc/alt_check diff --git a/code/modules/admin/verbs/antag-ooc.dm b/code/modules/admin/verbs/antag-ooc.dm new file mode 100644 index 00000000000..12064823184 --- /dev/null +++ b/code/modules/admin/verbs/antag-ooc.dm @@ -0,0 +1,20 @@ +/client/proc/aooc(msg as text) + set category = "OOC" + set name = "AOOC" + set desc = "Antagonist OOC" + + if(!check_rights(R_ADMIN)) return + + msg = sanitize(msg) + if(!msg) return + + var/display_name = src.key + if(holder && holder.fakekey) + display_name = holder.fakekey + + for(var/mob/M in mob_list) + if((M.mind && M.mind.special_role && M.client) || (M.client && M.client.holder)) + M << "AOOC: [display_name]: [msg]" + + + log_ooc("(ANTAG) [key] : [msg]") \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 306ae39084d..ba458be8dd2 100644 --- a/paradise.dme +++ b/paradise.dme @@ -844,6 +844,7 @@ #include "code\modules\admin\verbs\adminpm.dm" #include "code\modules\admin\verbs\adminsay.dm" #include "code\modules\admin\verbs\alt_check.dm" +#include "code\modules\admin\verbs\antag-ooc.dm" #include "code\modules\admin\verbs\atmosdebug.dm" #include "code\modules\admin\verbs\BrokenInhands.dm" #include "code\modules\admin\verbs\cinematic.dm" From 34863374a024b13c89518f22a5cef41ae3fc2ca0 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Thu, 23 Apr 2015 10:01:45 -0700 Subject: [PATCH 3/8] First part of Bay admin improvements This commit integrates baystation12's play_server_sound system, admin 'Who' showing account age. --- code/game/verbs/who.dm | 14 ++++++++++++++ code/modules/admin/admin_verbs.dm | 3 ++- code/modules/admin/verbs/playsound.dm | 22 ++++++++++++++++++++++ sound/serversound_list.txt | 9 +++++++++ 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 sound/serversound_list.txt diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 7cdd9579e13..76ac8b25344 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -26,6 +26,20 @@ entry += " - DEAD" else entry += " - DEAD" + + var/age + if(isnum(C.player_age)) + age = C.player_age + else + age = 0 + + if(age <= 1) + age = "[age]" + else if(age < 10) + age = "[age]" + + entry += " - [age]" + if(is_special_character(C.mob)) entry += " - Antagonist" entry += " (?)" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index fcf047784aa..7d9c7cfb199 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -73,7 +73,8 @@ var/list/admin_verbs_ban = list( ) var/list/admin_verbs_sounds = list( /client/proc/play_local_sound, - /client/proc/play_sound + /client/proc/play_sound, + /client/proc/play_server_sound ) var/list/admin_verbs_event = list( /client/proc/object_talk, diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 7bbe4b3bff6..54b1377fd27 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -1,3 +1,5 @@ +var/list/sounds_cache = list() + /client/proc/play_sound(S as sound) set category = "Event" set name = "Play Global Sound" @@ -6,6 +8,11 @@ var/sound/uploaded_sound = sound(S, repeat = 0, wait = 1, channel = 777) uploaded_sound.priority = 250 + sounds_cache += S + + if(alert("Are you sure?\nSong: [S]\nNow you can also play this sound using \"Play Server Sound\".", "Confirmation request" ,"Play", "Cancel") == "Cancel") + return + log_admin("[key_name(src)] played sound [S]") message_admins("[key_name_admin(src)] played sound [S]", 1) for(var/mob/M in player_list) @@ -25,6 +32,21 @@ playsound(get_turf_loc(src.mob), S, 50, 0, 0) feedback_add_details("admin_verb","PLS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/play_server_sound() + set category = "Event" + set name = "Play Server Sound" + if(!check_rights(R_SOUNDS)) return + + var/list/sounds = file2list("sound/serversound_list.txt"); + sounds += "--CANCEL--" + sounds += sounds_cache + + var/melody = input("Select a sound from the server to play", "Server sound list", "--CANCEL--") in sounds + + if(melody == "--CANCEL--") return + + play_sound(melody) + feedback_add_details("admin_verb","PSS") //If you are copy-pasting this, ensure the 2nd paramter is unique to the new proc! /* /client/proc/cuban_pete() diff --git a/sound/serversound_list.txt b/sound/serversound_list.txt new file mode 100644 index 00000000000..bb7e5f2950a --- /dev/null +++ b/sound/serversound_list.txt @@ -0,0 +1,9 @@ +sound/music/b12_combined_start.ogg +sound/music/main.ogg +sound/music/space.ogg +sound/music/title1.ogg +sound/music/title2.ogg +sound/music/traitor.ogg +sound/items/bikehorn.ogg +sound/effects/siren.ogg +sound/ambience/song_game.ogg \ No newline at end of file From 55060280f04d403a43e348691a1d4f42dd214086 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Thu, 23 Apr 2015 14:02:51 -0400 Subject: [PATCH 4/8] Admin unban panel overhaul --- code/modules/admin/DB ban/functions.dm | 366 ++++++++++--------------- code/modules/admin/topic.dm | 35 ++- 2 files changed, 177 insertions(+), 224 deletions(-) diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index f0fa25224b5..da0c6d64e60 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -1,5 +1,5 @@ -datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null) +datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1, var/reason, var/job = "", var/rounds = 0, var/banckey = null, var/banip = null, var/bancid = null) if(!check_rights(R_BAN)) return @@ -45,6 +45,8 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = ip = banned_mob.client.address else if(banckey) ckey = ckey(banckey) + computerid = bancid + ip = banip var/DBQuery/query = dbcon.NewQuery("SELECT id FROM erro_player WHERE ckey = '[ckey]'") query.Execute() @@ -268,7 +270,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) holder.DB_ban_panel() -/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/pban = null, var/tban = null, var/jpban = null, var/jtban = null) +/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/dbbantype = null, var/match = null) if(!usr.client) return @@ -291,7 +293,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "
Add custom ban: (ONLY use this if you can't ban through any other method)" output += "" output += "" - output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" + output += "
Ban type:Ban type:Ckey:
Duration: Job:Ckey:
IP: CID:
Duration: Job:
" @@ -322,228 +326,158 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "" output += "" - output += "Search: " - output += "" - output += "Ckey: " - output += "Admin ckey: " - output += "IP address:
" - output += "Permban: " - output += "Tempban: " - output += "PermJOBban: " - output += "TempJOBban: " - output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "
Search:" + output += "
Ckey: Admin ckey:
IP: CID:
Ban type:
" + output += "

" + output += " Match(min. 3 characters to search by key or ip, and 7 to search by cid)
" output += "
" - output += "Please note that all jobban bans or unbans are in-effect the following round." + output += "Please note that all jobban bans or unbans are in-effect the following round.
" + output += "This search shows only last 100 bans." - - - - if(adminckey || playerckey || playerip || pban || tban || jpban || jtban) - - var/blcolor = "#ffeeee" //banned light - var/bdcolor = "#ffdddd" //banned dark - var/ulcolor = "#eeffee" //unbanned light - var/udcolor = "#ddffdd" //unbanned dark - - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" + if(adminckey || playerckey || playerip || playercid || dbbantype) adminckey = ckey(adminckey) playerckey = ckey(playerckey) + playerip = sql_sanitize_text(playerip) + playercid = sql_sanitize_text(playercid) - var/adminsearch = "" - var/playersearch = "" - var/playeripsearch = "" - var/pbansearch = "" - var/tbansearch = "" - var/jpbansearch = "" - var/jtbansearch = "" - if(adminckey) - adminsearch = "AND a_ckey = '[adminckey]' " - if(playerckey) - playersearch = "AND ckey = '[playerckey]' " - if(playerip) - playeripsearch = "AND ip = '[playerip]' " - if(pban != null) - pbansearch = "AND bantype = 'PERMABAN'" - if(tban != null) - tbansearch = "AND bantype = 'TEMPBAN'" - if(jpban != null) - jpbansearch = "AND bantype = 'JOB_PERMABAN'" - if(jtban != null) - jtbansearch = "AND bantype = 'JOB_TEMPBAN'" + if(adminckey || playerckey || playerip || playercid || dbbantype) + var/blcolor = "#ffeeee" //banned light + var/bdcolor = "#ffdddd" //banned dark + var/ulcolor = "#eeffee" //unbanned light + var/udcolor = "#ddffdd" //unbanned dark - - var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip FROM erro_ban WHERE 1 [pbansearch] [tbansearch] [jpbansearch] [jtbansearch] [playersearch] [adminsearch] [playeripsearch] ORDER BY bantime DESC") - select_query.Execute() - - while(select_query.NextRow()) - var/banid = select_query.item[1] - var/bantime = select_query.item[2] - var/bantype = select_query.item[3] - var/reason = select_query.item[4] - var/job = select_query.item[5] - var/duration = select_query.item[6] - var/expiration = select_query.item[7] - var/ckey = select_query.item[8] - var/ackey = select_query.item[9] - var/unbanned = select_query.item[10] - var/unbanckey = select_query.item[11] - var/unbantime = select_query.item[12] - var/edits = select_query.item[13] - var/ip = select_query.item[14] - - var/lcolor = blcolor - var/dcolor = bdcolor - if(unbanned) - lcolor = ulcolor - dcolor = udcolor - - var/typedesc ="" - switch(bantype) - if("PERMABAN") - typedesc = "PERMABAN" - if("TEMPBAN") - typedesc = "TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" - if("JOB_PERMABAN") - typedesc = "JOBBAN
([job])" - if("JOB_TEMPBAN") - typedesc = "TEMP JOBBAN
([job])
([duration] minutes
Expires [expiration]" - if("APPEARANCE_BAN") - typedesc = "APPEARANCE/NAME BAN" - - - output += "
" - output += "" - output += "" - output += "" - output += "" - output += "" + output += "
TYPECKEYTIME APPLIEDADMINOPTIONS
[typedesc][ckey][bantime][ackey][(unbanned) ? "" : "Unban"]
" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" output += "" - output += "" - output += "" - output += "" - output += "" - if(edits) + + var/adminsearch = "" + var/playersearch = "" + var/ipsearch = "" + var/cidsearch = "" + var/bantypesearch = "" + + if(!match) + if(adminckey) + adminsearch = "AND a_ckey = '[adminckey]' " + if(playerckey) + playersearch = "AND ckey = '[playerckey]' " + if(playerip) + ipsearch = "AND ip = '[playerip]' " + if(playercid) + cidsearch = "AND computerid = '[playercid]' " + else + if(adminckey && lentext(adminckey) >= 3) + adminsearch = "AND a_ckey LIKE '[adminckey]%' " + if(playerckey && lentext(playerckey) >= 3) + playersearch = "AND ckey LIKE '[playerckey]%' " + if(playerip && lentext(playerip) >= 3) + ipsearch = "AND ip LIKE '[playerip]%' " + if(playercid && lentext(playercid) >= 7) + cidsearch = "AND computerid LIKE '[playercid]%' " + + if(dbbantype) + bantypesearch = "AND bantype = " + + switch(dbbantype) + if(BANTYPE_TEMP) + bantypesearch += "'TEMPBAN' " + if(BANTYPE_JOB_PERMA) + bantypesearch += "'JOB_PERMABAN' " + if(BANTYPE_JOB_TEMP) + bantypesearch += "'JOB_TEMPBAN' " + if(BANTYPE_APPEARANCE) + bantypesearch += "'APPEARANCE_BAN' " + else + bantypesearch += "'PERMABAN' " + + + var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid FROM erro_ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] [bantypesearch] ORDER BY bantime DESC LIMIT 100") + select_query.Execute() + + while(select_query.NextRow()) + var/banid = select_query.item[1] + var/bantime = select_query.item[2] + var/bantype = select_query.item[3] + var/reason = select_query.item[4] + var/job = select_query.item[5] + var/duration = select_query.item[6] + var/expiration = select_query.item[7] + var/ckey = select_query.item[8] + var/ackey = select_query.item[9] + var/unbanned = select_query.item[10] + var/unbanckey = select_query.item[11] + var/unbantime = select_query.item[12] + var/edits = select_query.item[13] + var/ip = select_query.item[14] + var/cid = select_query.item[15] + + var/lcolor = blcolor + var/dcolor = bdcolor + if(unbanned) + lcolor = ulcolor + dcolor = udcolor + + var/typedesc ="" + switch(bantype) + if("PERMABAN") + typedesc = "PERMABAN" + if("TEMPBAN") + typedesc = "TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" + if("JOB_PERMABAN") + typedesc = "JOBBAN
([job])" + if("JOB_TEMPBAN") + typedesc = "TEMP JOBBAN
([job])
([duration] minutes
Expires [expiration]" + if("APPEARANCE_BAN") + typedesc = "APPEARANCE/NAME BAN" + output += "
" - output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" output += "" output += "" - output += "" + output += "" output += "" - if(unbanned) - output += "" - output += "" + if(edits) + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + if(unbanned) + output += "" + output += "" + output += "" + output += "" + output += "" output += "" - output += "" - output += "" - output += "" - output += "
TYPECKEYTIME APPLIEDADMINOPTIONS
Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"IP: [ip]
EDITS[typedesc][ckey][bantime][ackey][(unbanned) ? "" : "Unban"]
IP: [ip]CIP: [cid]
[edits]Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"
UNBANNED by admin [unbanckey] on [unbantime]
EDITS
[edits]
UNBANNED by admin [unbanckey] on [unbantime]
 
 
" + output += "" - - - - else - - var/DBQuery/select_query = dbcon.NewQuery("SELECT bantype, COUNT(*) FROM erro_ban GROUP BY bantype") - select_query.Execute() - - while(select_query.NextRow()) - var/bantype = select_query.item[1] - var/count = select_query.item[2] - - - output +="
" - output += "[bantype]:[count] " - output += "" - output += "" - -/* - var/blcolor = "#ffeeee" //banned light - var/bdcolor = "#ffdddd" //banned dark - var/ulcolor = "#eeffee" //unbanned light - var/udcolor = "#ddffdd" //unbanned dark - - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - - - var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip FROM erro_ban ORDER BY bantime DESC") - select_query.Execute() - - while(select_query.NextRow()) - var/banid = select_query.item[1] - var/bantime = select_query.item[2] - var/bantype = select_query.item[3] - var/reason = select_query.item[4] - var/job = select_query.item[5] - var/duration = select_query.item[6] - var/expiration = select_query.item[7] - var/ckey = select_query.item[8] - var/ackey = select_query.item[9] - var/unbanned = select_query.item[10] - var/unbanckey = select_query.item[11] - var/unbantime = select_query.item[12] - var/edits = select_query.item[13] - var/ip = select_query.item[14] - - var/lcolor = blcolor - var/dcolor = bdcolor - if(unbanned) - lcolor = ulcolor - dcolor = udcolor - - var/typedesc ="" - switch(bantype) - if("PERMABAN") - typedesc = "PERMABAN" - if("TEMPBAN") - typedesc = "TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" - if("JOB_PERMABAN") - typedesc = "JOBBAN
([job])" - if("JOB_TEMPBAN") - typedesc = "TEMP JOBBAN
([job])
([duration] minutes
Expires [expiration]" - - output += "
" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - if(edits) - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - if(unbanned) - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - - output += "
TYPECKEYTIME APPLIEDADMINOPTIONS
[typedesc][ckey][bantime][ackey][(unbanned) ? "" : "Unban"]
Reason: [(unbanned) ? "" : "(Edit)"] \"[reason]\"IP: [ip]
EDITS
[edits]
UNBANNED by admin [unbanckey] on [unbantime]
 
" -*/ - usr << browse(output,"window=lookupbans;size=900x500") \ No newline at end of file + usr << browse(output,"window=lookupbans;size=900x700") \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index d9caa1eac15..210d020553f 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -45,16 +45,18 @@ if(!src.makeVoxRaiders()) usr << "\red Unfortunately there weren't enough candidates available." - else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbpban"] || href_list["dbtban"] || href_list["dbjpban"] || href_list["dbjtban"]) + else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] var/playerip = href_list["dbsearchip"] - var/pban = href_list["dbpban"] - var/tban = href_list["dbtban"] - var/jpban = href_list["dbjpban"] - var/jtban = href_list["dbjtban"] + var/playercid = href_list["dbsearchcid"] + var/dbbantype = text2num(href_list["dbsearchbantype"]) + var/match = 0 - DB_ban_panel(playerckey, adminckey, playerip, pban, tban, jpban, jtban) + if("dbmatch" in href_list) + match = 1 + + DB_ban_panel(playerckey, adminckey, playerip, playercid, dbbantype, match) return else if(href_list["dbbanedit"]) @@ -66,11 +68,12 @@ DB_ban_edit(banid, banedit) return - else if(href_list["dbbanaddtype"]) var/bantype = text2num(href_list["dbbanaddtype"]) var/banckey = href_list["dbbanaddckey"] + var/banip = href_list["dbbanaddip"] + var/bancid = href_list["dbbanaddcid"] var/banduration = text2num(href_list["dbbaddduration"]) var/banjob = href_list["dbbanaddjob"] var/banreason = href_list["dbbanreason"] @@ -98,6 +101,12 @@ if(!banckey || !banreason || !banjob || !banduration) usr << "Not enough parameters (Requires ckey, reason and job)" return + if(BANTYPE_APPEARANCE) + if(!banckey || !banreason) + usr << "Not enough parameters (Requires ckey and reason)" + return + banduration = null + banjob = null var/mob/playermob @@ -106,9 +115,19 @@ playermob = M break + banreason = "(MANUAL BAN) "+banreason - DB_ban_record(bantype, playermob, banduration, banreason, banjob, null, banckey) + if(!playermob) + if(banip) + banreason = "[banreason] (CUSTOM IP)" + if(bancid) + banreason = "[banreason] (CUSTOM CID)" + else + message_admins("Ban process: A mob matching [playermob.ckey] was found at location [playermob.x], [playermob.y], [playermob.z]. Custom ip and computer id fields replaced with the ip and computer id from the located mob") + + DB_ban_record(bantype, playermob, banduration, banreason, banjob, null, banckey, banip, bancid ) + else if(href_list["editrights"]) if(!check_rights(R_PERMISSIONS)) From 3439a034d8cd60e586288c82d92fc764c4678ea0 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 23 Apr 2015 22:16:44 -0400 Subject: [PATCH 5/8] Grab Fix --- code/modules/mob/mob_grab.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 54c3accb3ef..b04c0832350 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -96,6 +96,8 @@ affecting.Weaken(5) //Should keep you down unless you get help. affecting.losebreath = min(affecting.losebreath + 2, 3) +/obj/item/weapon/grab/attack_self(mob/user) + s_click(hud) /obj/item/weapon/grab/proc/s_click(obj/screen/S) if(!affecting) From e3b3db6d314a69761ce22103d59a48e9f681acab Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 24 Apr 2015 12:18:29 -0700 Subject: [PATCH 6/8] Fix major bug with ventcrawl Because we have insane-r movecode than VG, there was a bug that you could end up getting violently sucked into an atmos machine and shoved out into the vents. This commit fixes this in a workaround manner. --- code/ATMOSPHERICS/atmospherics.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 84cfa9a8264..c212e3132c5 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -153,6 +153,8 @@ obj/machinery/atmospherics/proc/check_connect_types_construction(obj/machinery/a /obj/machinery/atmospherics/relaymove(mob/living/user, direction) if(!(direction & initialize_directions)) //can't go in a way we aren't connecting to return + if(user.machine == src) //temporary fix until we overhaul movement code + return var/obj/machinery/atmospherics/target_move = findConnecting(direction) if(target_move) From f5ace231e1a26a2cf19237b68648cf67a8806506 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 24 Apr 2015 19:02:44 -0400 Subject: [PATCH 7/8] Fixes invisible carbon/human High priority, needs to be merged and patched ASAP. Need one of the other maintainers to check to see if this won't be particularly process-intensive for the server. --- code/modules/mob/living/carbon/human/human.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b9a7a40c6f6..11342b903ca 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -48,6 +48,7 @@ // Set up DNA. if(!delay_ready_dna) dna.ready_dna(src) + UpdateAppearance() /mob/living/carbon/human/dummy real_name = "Test Dummy" From 735bfdf0122086aba210fc47ca3db7bdd893309e Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Sat, 25 Apr 2015 08:08:58 -0700 Subject: [PATCH 8/8] Fixes cmd_ghost_drag perms This fixes the cmd_ghost_drag perms to work as they were originally intended to- requiring either varedit OR r_admin + r_debug. The original checks were exclusive, as it checked for no r_varedit OR no r_admin + r_debug, which means that unless the user had all three, it would always fail. --- code/modules/admin/admin.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a108dd54287..51edf9a4cdf 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -995,8 +995,9 @@ proc/formatPlayerPanel(var/mob/U,var/text="PP") return //extra sanity check to make sure only observers are shoved into things //same as assume-direct-control perm requirements. - if (!check_rights(R_VAREDIT,0) || !check_rights(R_ADMIN|R_DEBUG,0)) - return 0 + if (!check_rights(R_VAREDIT,0)) //no varedit, check if they have r_admin and r_debug + if(!check_rights(R_ADMIN|R_DEBUG,0)) //if they don't have r_admin and r_debug, return + return 0 //otherwise, if they have no varedit, but do have r_admin and r_debug, execute the rest of the code if (!frommob.ckey) return 0