diff --git a/SQL/optimisations_2017-02-19.sql b/SQL/optimisations_2017-02-19.sql index 1bb19cc667..40024c9f9f 100644 --- a/SQL/optimisations_2017-02-19.sql +++ b/SQL/optimisations_2017-02-19.sql @@ -40,7 +40,7 @@ Take note some columns have been renamed, removed or changed type. Any services START TRANSACTION; ALTER TABLE `ban` DROP COLUMN `rounds` -, CHANGE COLUMN `bantype` `bantype` ENUM('PERMABAN', 'TEMPBAN', 'JOB_PERMABAN', 'JOB_TEMPBAN', 'ADMIN_PERMABAN', 'ADMIN_TEMPBAN') NOT NULL +, CHANGE COLUMN `bantype` `bantype` ENUM('PERMABAN', 'TEMPBAN', 'JOB_PERMABAN', 'JOB_TEMPBAN', 'ADMIN_PERMABAN', 'ADMIN_TEMPBAN', 'PACIFICATION_BAN') NOT NULL , CHANGE COLUMN `reason` `reason` VARCHAR(2048) NOT NULL , CHANGE COLUMN `who` `who` VARCHAR(2048) NOT NULL , CHANGE COLUMN `adminwho` `adminwho` VARCHAR(2048) NOT NULL diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 9a9847a372..243b22c35a 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -73,7 +73,7 @@ CREATE TABLE `ban` ( `server_ip` INT(10) UNSIGNED NOT NULL, `server_port` SMALLINT(5) UNSIGNED NOT NULL, `round_id` INT(11) UNSIGNED NOT NULL, - `bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN') NOT NULL, + `bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN','PACIFICATION_BAN') NOT NULL, `reason` varchar(2048) NOT NULL, `job` varchar(32) DEFAULT NULL, `duration` int(11) NOT NULL, diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index 654f45f4f2..21f0d6d84b 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -73,7 +73,7 @@ CREATE TABLE `SS13_ban` ( `server_ip` INT(10) UNSIGNED NOT NULL, `server_port` SMALLINT(5) UNSIGNED NOT NULL, `round_id` INT(11) UNSIGNED NOT NULL, - `bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN') NOT NULL, + `bantype` enum('PERMABAN','TEMPBAN','JOB_PERMABAN','JOB_TEMPBAN','ADMIN_PERMABAN','ADMIN_TEMPBAN','PACIFICATION_BAN') NOT NULL, `reason` varchar(2048) NOT NULL, `job` varchar(32) DEFAULT NULL, `duration` int(11) NOT NULL, diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 54c4c1de95..59f69ecf13 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -18,6 +18,7 @@ #define BANTYPE_ADMIN_PERMA 7 #define BANTYPE_ADMIN_TEMP 8 #define BANTYPE_ANY_JOB 9 //used to remove jobbans +#define BANTYPE_PACIFIST 10 //makes a person spawn with pacifist. splurt change. //Admin Permissions #define R_BUILDMODE (1<<0) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 633b1d8c27..7019106577 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -148,6 +148,9 @@ SEND_SIGNAL(src, COMSIG_MIND_TRANSFER, new_character, old_character) SEND_SIGNAL(new_character, COMSIG_MOB_ON_NEW_MIND) +//splurt change + INVOKE_ASYNC(GLOBAL_PROC, .proc/_paci_check, new_character, old_character) +//end change /datum/mind/proc/store_memory(new_text) if((length_char(memory) + length_char(new_text)) <= MAX_MESSAGE_LEN) diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index b8d2452874..0c97d3463a 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -51,6 +51,9 @@ announceinirc = 1 blockselfban = 1 kickbannedckey = 1 + if(BANTYPE_PACIFIST) + bantype_str = "PACIFICATION_BAN" + bantype_pass = 1 if( !bantype_pass ) return if( !istext(reason) ) @@ -167,6 +170,10 @@ if(announceinirc) send2adminchat("BAN ALERT","[a_key] applied a [bantype_str] on [bankey]") + //splurt edit + if(((bantype_str == "PACIFICATION_BAN") || (job == "pacifist")) && banned_client.mob) + ADD_TRAIT(banned_client.mob, TRAIT_PACIFISM, "pacification ban") + // if(kickbannedckey) if(AH) @@ -208,6 +215,9 @@ if(BANTYPE_ANY_JOB) bantype_str = "ANYJOB" bantype_pass = 1 + if(BANTYPE_PACIFIST) + bantype_str = "PACIFICATION_BAN" + bantype_pass = 1 if( !bantype_pass ) return @@ -411,6 +421,7 @@ output += "" output += "" output += "" + output += "" output += "" output += "Key: " output += "IP: " @@ -546,6 +557,8 @@ typedesc = "ADMIN PERMABAN" if("ADMIN_TEMPBAN") typedesc = "ADMIN TEMPBAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" + if("PACIFICATION_BAN") + typedesc = "PACIFICATION BAN
([duration] minutes [(unbanned) ? "" : "(Edit))"]
Expires [expiration]
" output += "" output += "[typedesc]" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 08b62ef2f3..e810b8b0b8 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -103,6 +103,11 @@ body+= "Emoteban | " if(QDELETED(M) || QDELETED(usr)) return + if(jobban_isbanned(M, "pacifist")) + body+= "PacifistBan | " + else + body+= "PacifistBan | " + body += "Notes | Messages | Watchlist " if(M.client) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index dd5ae3f4e6..bcd95b40e6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -260,6 +260,11 @@ to_chat(usr, "Not enough parameters (Requires ckey, severity, reason and duration).") return banjob = null + if(BANTYPE_PACIFIST) + if(!banckey || !banreason || !banduration || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, severity, reason and duration).") + return + banjob = null var/mob/playermob @@ -1060,7 +1065,7 @@ msg += ", [job]" create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.") - to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg].") + to_chat(M, "You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].") to_chat(M, "The reason is: [reason]") to_chat(M, "This jobban will be lifted in [mins] minutes.") href_list["jobban2"] = 1 // lets it fall through and refresh @@ -1086,7 +1091,7 @@ msg += ", [job]" create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].") - to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg].") + to_chat(M, "You have been [((msg == "ooc") || (msg == "appearance") || (msg == "pacifist")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg == "pacifist" ? "using violence" : msg].") to_chat(M, "The reason is: [reason]") to_chat(M, "Jobban can be lifted only upon request.") href_list["jobban2"] = 1 // lets it fall through and refresh diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 366fa086a0..a2ac5581b9 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -111,6 +111,11 @@ if(ckey) M.ckey = ckey + //splurt change + if(jobban_isbanned(M, "pacifist")) //do you love repeat code? i sure do + to_chat(M, "You are pacification banned. Pacifist has been force applied.") + ADD_TRAIT(M, TRAIT_PACIFISM, "pacification ban") + // if(show_flavour) var/output_message = "[short_desc]" if(flavour_text != "") @@ -251,7 +256,7 @@ H.canloadappearance = TRUE else H.canloadappearance = FALSE - + //Instant version - use when spawning corpses during runtime /obj/effect/mob_spawn/human/corpse roundstart = FALSE diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 6c0869b4ef..be40012030 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -790,6 +790,11 @@ . = new_character if(.) new_character.key = key //Manually transfer the key to log them in + //splurt change + if(jobban_isbanned(new_character, "pacifist")) + to_chat(new_character, "You are pacification banned. Pacifist has been force applied.") + ADD_TRAIT(new_character, TRAIT_PACIFISM, "pacification ban") + // new_character.stop_sound_channel(CHANNEL_LOBBYMUSIC) new_character = null qdel(src) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c5bf69fae6..8b948d5cbc 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -495,8 +495,17 @@ new_mob.ckey = ckey if(send_signal) SEND_SIGNAL(src, COMSIG_MOB_KEY_CHANGE, new_mob, src) + //splurt changeh + INVOKE_ASYNC(GLOBAL_PROC, .proc/_paci_check, new_mob, src) + // return TRUE +/proc/_paci_check(mob/new_mob, mob/old_mob) + if(jobban_isbanned(new_mob, "pacifist")) + if(!QDELETED(old_mob)) + REMOVE_TRAIT(old_mob, TRAIT_PACIFISM, "pacification ban") + ADD_TRAIT(new_mob, TRAIT_PACIFISM, "pacification ban") + /mob/verb/cancel_camera() set name = "Cancel Camera View" set category = "OOC"