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"