From d61d8a3dc1d4920d3713d583740b7cdd57c0eab0 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 22 Apr 2019 21:38:47 -0700 Subject: [PATCH] new feature: ssd warning system --- code/_onclick/click.dm | 4 ++++ code/controllers/configuration.dm | 4 ++++ code/modules/client/client defines.dm | 2 +- code/modules/client/client procs.dm | 15 +++++++++++++++ code/modules/mob/mob.dm | 13 +++++++++---- config/example/config.txt | 5 ++++- 6 files changed, 37 insertions(+), 6 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 24e58b502ad..286f8ce7095 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -122,6 +122,10 @@ throw_item(A) return + if(isLivingSSD(A)) + if(client && client.send_ssd_warning(A)) + return + var/obj/item/W = get_active_hand() if(W == A) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 30e99027523..c5d8b79cb30 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -70,6 +70,7 @@ var/assistantratio = 2 //how many assistants to security members var/auto_cryo_ssd_mins = 0 + var/ssd_warning = 0 var/prob_free_golems = 75 //chance for free golems spawners to appear roundstart var/unrestricted_free_golems = FALSE //if true, free golems can appear on all roundtypes @@ -298,6 +299,9 @@ if("auto_cryo_ssd_mins") config.auto_cryo_ssd_mins = text2num(value) + if("ssd_warning") + config.ssd_warning = 1 + if("log_ooc") config.log_ooc = 1 diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index 00900fe5fd1..1d26a013986 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -46,7 +46,7 @@ var/received_irc_pm = -99999 var/irc_admin //IRC admin that spoke with them last. var/mute_irc = 0 - + var/ssd_warning_acknowledged = FALSE //////////////////////////////////// //things that require the database// diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index ac9a88aaa08..175a41fa196 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -225,6 +225,9 @@ vote_on_poll(pollid, optionid, 1) src << browse(null, "window=playerpoll") handle_player_polling() + if(href_list["ssdwarning"]) + ssd_warning_acknowledged = TRUE + to_chat(src, "SSD warning acknowledged.") switch(href_list["action"]) if("openLink") @@ -770,3 +773,15 @@ winset(src, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF") else winset(src, "rpane.changelog", "background-color=none;text-color=#000000") + + +/client/proc/send_ssd_warning(mob/M) + if(!config.ssd_warning) + return FALSE + if(ssd_warning_acknowledged) + return FALSE + if(M && M.player_logged < 30) // Give it ~60 seconds, just in case they drop SSD during combat. + return FALSE + to_chat(src, "Interacting with SSD players is against server rules unless you've ahelped first for permission. If you have, confirm that and proceed.") + return TRUE + diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ee04e624f02..15ab31f8f92 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -901,13 +901,18 @@ var/list/slot_equipment_priority = list( \ /mob/MouseDrop(mob/M as mob) ..() if(M != usr) return - if(isliving(M)) // Ewww + if(isliving(M)) var/mob/living/L = M if(L.mob_size <= MOB_SIZE_SMALL) return // Stops pAI drones and small mobs (borers, parrots, crabs) from stripping people. --DZD - if(!M.can_strip) return - if(usr == src) return - if(!Adjacent(usr)) return + if(!M.can_strip) + return + if(usr == src) + return + if(!Adjacent(usr)) + return + if(isLivingSSD(src) && M.client && M.client.send_ssd_warning(src)) + return show_inv(usr) /mob/proc/can_use_hands() diff --git a/config/example/config.txt b/config/example/config.txt index 161d953f9d7..50f8c0f1333 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -253,6 +253,9 @@ ASSISTANT_RATIO 2 # Mins before SSD crew are cryoed. AUTO_CRYO_SSD_MINS 15 +# If enabled, prevents people interacting with SSD players unless they acknowledge they have read the server rules. +SSD_WARNING + ## Remove the # to make rounds which end instantly (Rev, Wizard, Malf) to continue until the shuttle is called or the station is nuked. ## Malf and Rev will let the shuttle be called when the antags/protags are dead. #CONTINUOUS_ROUNDS @@ -405,4 +408,4 @@ DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 #DISABLE_LOCALHOST_ADMIN ## Uncomment to give a confirmation before hitting start now -#START_NOW_CONFIRMATION \ No newline at end of file +#START_NOW_CONFIRMATION