Added the abitility to turn the AFK system on when you're antag

This commit is contained in:
joep van der velden
2019-12-23 19:29:23 +01:00
parent 81476df826
commit 377ae7671b
7 changed files with 17 additions and 6 deletions
+1
View File
@@ -270,6 +270,7 @@ CREATE TABLE `player` (
`fupdate` smallint(4) NULL DEFAULT '0',
`AFK_WATCH_warn_minutes` tinyint(2) NOT NULL DEFAULT '0',
`AFK_WATCH_cryo_minutes` tinyint(1) NOT NULL DEFAULT '0',
'AFK_WATCH_antag' tinyint(1) NOT NULL DEFAULT '0',
`parallax` tinyint(1) DEFAULT '8',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
+1
View File
@@ -269,6 +269,7 @@ CREATE TABLE `SS13_player` (
`fupdate` smallint(4) NULL DEFAULT '0',
`AFK_WATCH_warn_minutes` tinyint(2) NOT NULL DEFAULT '0',
`AFK_WATCH_cryo_minutes` tinyint(1) NOT NULL DEFAULT '0',
'AFK_WATCH_antag' tinyint(1) NOT NULL DEFAULT '0',
`parallax` tinyint(1) DEFAULT '8',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
+2 -1
View File
@@ -1,6 +1,7 @@
# Change afk_watch to AFK_WATCH_warn_minutes and AFK_WATCH_cryo_minutes which gives users the option to make use of the AFK watcher subsystem
# Change afk_watch to AFK_WATCH_warn_minutes, AFK_WATCH_cryo_minutes and AFK_WATCH_antag which gives users the option to make use of the AFK watcher subsystem
ALTER TABLE `player` ADD `AFK_WATCH_warn_minutes` tinyint(1) NOT NULL DEFAULT '0' AFTER `afk_watch`;
UPDATE `player` SET `AFK_WATCH_warn_minutes` = 5 WHERE `afk_watch` = 1;
ALTER TABLE `player` ADD `AFK_WATCH_cryo_minutes` tinyint(1) NOT NULL DEFAULT '0' AFTER `AFK_WATCH_warn_minutes`;
UPDATE `player` SET `AFK_WATCH_cryo_minutes` = 2 WHERE `afk_watch` = 1;
ALTER TABLE `player` ADD `AFK_WATCH_antag` tinyint(1) NOT NULL DEFAULT '0' AFTER `AFK_WATCH_cryo_minutes`;
ALTER TABLE `player` DROP COLUMN `afk_watch`;
+1 -1
View File
@@ -72,7 +72,7 @@
var/assistantlimit = 0 //enables assistant limiting
var/assistantratio = 2 //how many assistants to security members
// The AFK subsystem will not be activated if the below config values are equal or less than 0
// The AFK subsystem will not be activated if the below config value is equal or less than 0
var/auto_despawn_afk = 0 // How long till you actually despawn in cryo when you're AFK (Not ssd so not automatic)
var/auto_cryo_ssd_mins = 0
+2 -2
View File
@@ -21,9 +21,9 @@ SUBSYSTEM_DEF(afk)
var/turf/T
var/afk_warn_min
// Only players and players with the AFK watch enabled
// No dead, unconcious, restrained, people without jobs, people on other Z levels than the station or antags
// No dead, unconcious, restrained, people without jobs, people on other Z levels than the station or antags (if they have the preference option off)
if(!H.client || !(afk_warn_min = H.client.prefs.AFK_WATCH_warn_minutes) || !H.mind || \
H.stat || H.restrained() || !H.job || H.mind.special_role || \
H.stat || H.restrained() || !H.job || (H.mind.special_role && !H.client.prefs.AFK_WATCH_antag) || \
!is_station_level((T = get_turf(H)).z)) // Assign the turf as last. Small optimization
if(afk_players[H.ckey])
toRemove += H.ckey
@@ -95,6 +95,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/fuid // forum userid
var/AFK_WATCH_warn_minutes = 0 // Number of minutes after which the player gets warned
var/AFK_WATCH_cryo_minutes = 0 // Number of minutes after (after the warning) which the player gets cryod
var/AFK_WATCH_antag = FALSE // If you will cryo when you have a special role
//ghostly preferences
var/ghost_anonsay = 0
@@ -443,7 +444,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "<h2>General Settings</h2>"
if(user.client.holder)
dat += "<b>Adminhelp sound:</b> <a href='?_src_=prefs;preference=hear_adminhelps'><b>[(sound & SOUND_ADMINHELP)?"On":"Off"]</b></a><br>"
dat += "<b>AFK Cryoing:</b> <a href='?_src_=prefs;preference=afk_watch'>[(AFK_WATCH_warn_minutes) ? "On ([AFK_WATCH_warn_minutes], [AFK_WATCH_cryo_minutes])" : "Off"]</a><br>"
dat += "<b>AFK Cryoing:</b> <a href='?_src_=prefs;preference=afk_watch'>[(AFK_WATCH_warn_minutes) ? "On ([AFK_WATCH_warn_minutes], [AFK_WATCH_cryo_minutes], [AFK_WATCH_antag ? "Y" : "N"])" : "Off"]</a><br>"
dat += "<b>Ambient Occlusion:</b> <a href='?_src_=prefs;preference=ambientocclusion'><b>[toggles & AMBIENT_OCCLUSION ? "Enabled" : "Disabled"]</b></a><br>"
dat += "<b>Attack Animations:</b> <a href='?_src_=prefs;preference=ghost_att_anim'>[(show_ghostitem_attack) ? "Yes" : "No"]</a><br>"
@@ -2007,14 +2008,17 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
// deactivate the system
AFK_WATCH_warn_minutes = 0
AFK_WATCH_cryo_minutes = 0
AFK_WATCH_antag = FALSE
else
if(!afk_new | !(afk_new <= 10 && afk_new >= 1)) return
AFK_WATCH_warn_minutes = afk_new
afk_new = input(user, "Select a new amount of minutes after which you get cryod for being AFK, between 1 and 5", UI_style_alpha) as num
if(!afk_new | !(afk_new <= 5 && afk_new >= 1))
AFK_WATCH_cryo_minutes = AFK_WATCH_cryo_minutes ? AFK_WATCH_cryo_minutes : 2 // Return to prior value or default to 2
AFK_WATCH_antag = AFK_WATCH_antag ? AFK_WATCH_antag : FALSE
else
AFK_WATCH_cryo_minutes = afk_new
AFK_WATCH_antag = alert(user, "Do you want to activate the AFK system when you have a special status? (Think of antag, mindslaved, ERT etc)", "Antag activation", "Yes", "No") == "Yes"
if("UIcolor")
var/UI_style_color_new = input(user, "Choose your UI color, dark colors are not recommended!", UI_style_color) as color|null
@@ -22,6 +22,7 @@
fuid,
AFK_WATCH_warn_minutes,
AFK_WATCH_cryo_minutes,
AFK_WATCH_antag,
parallax
FROM [format_table_name("player")]
WHERE ckey='[C.ckey]'"}
@@ -57,7 +58,8 @@
fuid = text2num(query.item[19])
AFK_WATCH_warn_minutes = text2num(query.item[20])
AFK_WATCH_cryo_minutes = text2num(query.item[21])
parallax = text2num(query.item[22])
AFK_WATCH_antag = text2num(query.item[22])
parallax = text2num(query.item[23])
//Sanitize
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
@@ -80,6 +82,7 @@
fuid = sanitize_integer(fuid, 0, 10000000, initial(fuid))
AFK_WATCH_warn_minutes = sanitize_integer(AFK_WATCH_warn_minutes, 0, 10, initial(AFK_WATCH_warn_minutes))
AFK_WATCH_cryo_minutes = sanitize_integer(AFK_WATCH_cryo_minutes, 0, 5, initial(AFK_WATCH_cryo_minutes))
AFK_WATCH_antag = sanitize_integer(AFK_WATCH_antag, 0, 1, initial(AFK_WATCH_antag))
parallax = sanitize_integer(parallax, 0, 16, initial(parallax))
return 1
@@ -113,6 +116,7 @@
atklog='[atklog]',
AFK_WATCH_warn_minutes='[AFK_WATCH_warn_minutes]',
AFK_WATCH_cryo_minutes='[AFK_WATCH_cryo_minutes]',
AFK_WATCH_antag='[AFK_WATCH_antag]',
parallax='[parallax]'
WHERE ckey='[C.ckey]'"}
)