diff --git a/code/__DEFINES/~skyrat_defines/banning.dm b/code/__DEFINES/~skyrat_defines/banning.dm new file mode 100644 index 00000000000..aa54f46037b --- /dev/null +++ b/code/__DEFINES/~skyrat_defines/banning.dm @@ -0,0 +1,3 @@ +#define BAN_PACIFICATION "Pacification ban" +#define BAN_DONOTREVIVE "Do not revive ban" +#define BAN_RESPAWN "Respawn ban" diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index fc7a2d8bdca..1a41102aed3 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -290,7 +290,9 @@ ROLE_MONKEY, ROLE_NINJA, ROLE_OPERATIVE, ROLE_OVERTHROW, ROLE_REV, ROLE_REVENANT, ROLE_REV_HEAD, ROLE_SYNDICATE, - ROLE_TRAITOR, ROLE_WIZARD, ROLE_HIVE , ROLE_HERETIC)) //ROLE_REV_HEAD is excluded from this because rev jobbans are handled by ROLE_REV + ROLE_TRAITOR, ROLE_WIZARD, ROLE_HIVE , ROLE_HERETIC, + ROLE_ASSAULTOP), //ROLE_REV_HEAD is excluded from this because rev jobbans are handled by ROLE_REV //SKYRAT EDIT ADDITION - EXTA_BANS + "Skyrat Ban Options" = list(BAN_PACIFICATION, BAN_DONOTREVIVE, BAN_RESPAWN)) //SKYRAT EDIT ADDITION - EXTRA_BANS for(var/department in long_job_lists) output += "
" break_counter = 0 @@ -548,6 +550,11 @@ is_admin = TRUE if(roles_to_ban[1] == "Server" && (!is_admin || (is_admin && applies_to_admins))) qdel(C) + //SKYRAT EDIT ADDITION BEGIN - EXTRA_BANS + if(BAN_PACIFICATION in roles_to_ban) + if(ismob(C.mob)) + ADD_TRAIT(C.mob, TRAIT_PACIFISM, ROUNDSTART_TRAIT) + //SKYRAT EDIT END if(roles_to_ban[1] == "Server" && AH) AH.Resolve() for(var/client/i in GLOB.clients - C) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 24d387e0f4c..0b486838467 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -710,6 +710,11 @@ to_chat(usr, "You must be dead to use this!") return + if(ckey) + if(is_banned_from(ckey, BAN_RESPAWN)) + to_chat(usr, "You are respawn banned, you can't respawn!") + return + log_game("[key_name(usr)] used abandon mob.") to_chat(usr, "Please roleplay correctly!") diff --git a/html/admin/banpanel.css b/html/admin/banpanel.css index 5ce3c49887c..59fbd239fd6 100644 --- a/html/admin/banpanel.css +++ b/html/admin/banpanel.css @@ -72,3 +72,7 @@ .antagonistpositions { background-color: #6d3f40; } + +.skyratbanoptions { + background-color: #00f7ff; +} diff --git a/modular_skyrat/modules/banning/code/skyrat_bans.dm b/modular_skyrat/modules/banning/code/skyrat_bans.dm new file mode 100644 index 00000000000..1a7e7e69b6b --- /dev/null +++ b/modular_skyrat/modules/banning/code/skyrat_bans.dm @@ -0,0 +1,12 @@ +/mob/living/Login() + . = ..() + if(ckey) + if(is_banned_from(ckey, BAN_PACIFICATION)) + ADD_TRAIT(src, TRAIT_PACIFISM, ROUNDSTART_TRAIT) + +/mob/dead/observer/Login() + . = ..() + if(ckey) + if(is_banned_from(ckey, BAN_DONOTREVIVE)) + to_chat(src, "As you are revival banned, you cannot reenter your body.") + can_reenter_corpse = FALSE diff --git a/tgstation.dme b/tgstation.dme index 83094ef10b1..039d874707b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -149,6 +149,7 @@ #include "code\__DEFINES\~skyrat_defines\ambitions.dm" #include "code\__DEFINES\~skyrat_defines\ammo_defines.dm" #include "code\__DEFINES\~skyrat_defines\assaultops.dm" +#include "code\__DEFINES\~skyrat_defines\banning.dm" #include "code\__DEFINES\~skyrat_defines\blueshield.dm" #include "code\__DEFINES\~skyrat_defines\combat.dm" #include "code\__DEFINES\~skyrat_defines\DNA.dm" @@ -3597,6 +3598,7 @@ #include "modular_skyrat\modules\autotransfer\code\autotransfer.dm" #include "modular_skyrat\modules\autotransfer\code\autotransfer_config.dm" #include "modular_skyrat\modules\autotransfer\code\shuttle.dm" +#include "modular_skyrat\modules\banning\code\skyrat_bans.dm" #include "modular_skyrat\modules\biohazard_blob\code\_biohazard_blob_defines.dm" #include "modular_skyrat\modules\biohazard_blob\code\biohazard_blob_controller.dm" #include "modular_skyrat\modules\biohazard_blob\code\biohazard_blob_disease.dm"