mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
Automatic deadminning (#42780)
* does the thing * cleanup * unbroke deadminning param broke the verb somehow? honk. * correct prefs * more robust handling * corrected return, cleanup
This commit is contained in:
@@ -16,6 +16,12 @@
|
|||||||
#define DISABLE_ARRIVALRATTLE (1<<13)
|
#define DISABLE_ARRIVALRATTLE (1<<13)
|
||||||
#define COMBOHUD_LIGHTING (1<<14)
|
#define COMBOHUD_LIGHTING (1<<14)
|
||||||
|
|
||||||
|
#define DEADMIN_ALWAYS (1<<15)
|
||||||
|
#define DEADMIN_ANTAGONIST (1<<16)
|
||||||
|
#define DEADMIN_POSITION_HEAD (1<<17)
|
||||||
|
#define DEADMIN_POSITION_SECURITY (1<<18)
|
||||||
|
#define DEADMIN_POSITION_SILICON (1<<19)
|
||||||
|
|
||||||
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
|
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
|
||||||
|
|
||||||
//Chat toggles
|
//Chat toggles
|
||||||
@@ -69,4 +75,4 @@
|
|||||||
//Flags in the players table in the db
|
//Flags in the players table in the db
|
||||||
#define DB_FLAG_EXEMPT 1
|
#define DB_FLAG_EXEMPT 1
|
||||||
|
|
||||||
#define DEFAULT_CYBORG_NAME "Default Cyborg Name"
|
#define DEFAULT_CYBORG_NAME "Default Cyborg Name"
|
||||||
|
|||||||
@@ -5,6 +5,22 @@
|
|||||||
config_entry_value = "Game Master"
|
config_entry_value = "Game Master"
|
||||||
protection = CONFIG_ENTRY_LOCKED
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
/datum/config_entry/flag/auto_deadmin_players
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
/datum/config_entry/flag/auto_deadmin_antagonists
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
/datum/config_entry/flag/auto_deadmin_heads
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
/datum/config_entry/flag/auto_deadmin_silicons
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
/datum/config_entry/flag/auto_deadmin_security
|
||||||
|
protection = CONFIG_ENTRY_LOCKED
|
||||||
|
|
||||||
|
|
||||||
/datum/config_entry/string/servername // server name (the name of the game window)
|
/datum/config_entry/string/servername // server name (the name of the game window)
|
||||||
|
|
||||||
/datum/config_entry/string/serversqlname // short form server name used for the DB
|
/datum/config_entry/string/serversqlname // short form server name used for the DB
|
||||||
|
|||||||
@@ -426,6 +426,12 @@ SUBSYSTEM_DEF(job)
|
|||||||
|
|
||||||
SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep()
|
SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep()
|
||||||
|
|
||||||
|
if(M.client.holder)
|
||||||
|
if(CONFIG_GET(flag/auto_deadmin_players) || (M.client.prefs?.toggles & DEADMIN_ALWAYS))
|
||||||
|
M.client.holder.auto_deadmin()
|
||||||
|
else
|
||||||
|
handle_auto_deadmin_roles(M.client, rank)
|
||||||
|
|
||||||
to_chat(M, "<b>You are the [rank].</b>")
|
to_chat(M, "<b>You are the [rank].</b>")
|
||||||
if(job)
|
if(job)
|
||||||
to_chat(M, "<b>As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
|
to_chat(M, "<b>As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.</b>")
|
||||||
@@ -443,6 +449,18 @@ SUBSYSTEM_DEF(job)
|
|||||||
|
|
||||||
return H
|
return H
|
||||||
|
|
||||||
|
/datum/controller/subsystem/job/proc/handle_auto_deadmin_roles(client/C, rank)
|
||||||
|
if(!C?.holder)
|
||||||
|
return TRUE
|
||||||
|
var/datum/job/job = GetJob(rank)
|
||||||
|
if(!job)
|
||||||
|
return
|
||||||
|
if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && (CONFIG_GET(flag/auto_deadmin_heads) || (C.prefs?.toggles & DEADMIN_POSITION_HEAD)))
|
||||||
|
return C.holder.auto_deadmin()
|
||||||
|
else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && (CONFIG_GET(flag/auto_deadmin_security) || (C.prefs?.toggles & DEADMIN_POSITION_SECURITY)))
|
||||||
|
return C.holder.auto_deadmin()
|
||||||
|
else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SILICON) && (CONFIG_GET(flag/auto_deadmin_silicons) || (C.prefs?.toggles & DEADMIN_POSITION_SILICON))) //in the event there's ever psuedo-silicon roles added, ie synths.
|
||||||
|
return C.holder.auto_deadmin()
|
||||||
|
|
||||||
/datum/controller/subsystem/job/proc/setup_officer_positions()
|
/datum/controller/subsystem/job/proc/setup_officer_positions()
|
||||||
var/datum/job/J = SSjob.GetJob("Security Officer")
|
var/datum/job/J = SSjob.GetJob("Security Officer")
|
||||||
|
|||||||
@@ -269,6 +269,14 @@
|
|||||||
log_admin("[key_name(usr)] forcefully deadmined [admin_key]")
|
log_admin("[key_name(usr)] forcefully deadmined [admin_key]")
|
||||||
D.deactivate() //after logs so the deadmined admin can see the message.
|
D.deactivate() //after logs so the deadmined admin can see the message.
|
||||||
|
|
||||||
|
/datum/admins/proc/auto_deadmin()
|
||||||
|
to_chat(owner, "<span class='interface'>You are now a normal player.</span>")
|
||||||
|
var/old_owner = owner
|
||||||
|
deactivate()
|
||||||
|
message_admins("[old_owner] deadmined via auto-deadmin config.")
|
||||||
|
log_admin("[old_owner] deadmined via auto-deadmin config.")
|
||||||
|
return TRUE
|
||||||
|
|
||||||
/datum/admins/proc/change_admin_rank(admin_ckey, admin_key, use_db, datum/admins/D, legacy_only)
|
/datum/admins/proc/change_admin_rank(admin_ckey, admin_key, use_db, datum/admins/D, legacy_only)
|
||||||
var/datum/admin_rank/R
|
var/datum/admin_rank/R
|
||||||
var/list/rank_names = list()
|
var/list/rank_names = list()
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ GLOBAL_LIST_EMPTY(antagonists)
|
|||||||
give_antag_moodies()
|
give_antag_moodies()
|
||||||
if(is_banned(owner.current) && replace_banned)
|
if(is_banned(owner.current) && replace_banned)
|
||||||
replace_banned_player()
|
replace_banned_player()
|
||||||
|
else if(owner.current.client?.holder && (CONFIG_GET(flag/auto_deadmin_antagonists) || owner.current.client.prefs?.toggles & DEADMIN_ANTAGONIST))
|
||||||
|
owner.current.client.holder.auto_deadmin()
|
||||||
|
|
||||||
/datum/antagonist/proc/is_banned(mob/M)
|
/datum/antagonist/proc/is_banned(mob/M)
|
||||||
if(!M)
|
if(!M)
|
||||||
|
|||||||
@@ -495,7 +495,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
|
|
||||||
dat += "<b>Income Updates:</b> <a href='?_src_=prefs;preference=income_pings'>[(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]</a><br>"
|
dat += "<b>Income Updates:</b> <a href='?_src_=prefs;preference=income_pings'>[(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]</a><br>"
|
||||||
dat += "<br>"
|
dat += "<br>"
|
||||||
|
|
||||||
dat += "<b>FPS:</b> <a href='?_src_=prefs;preference=clientfps;task=input'>[clientfps]</a><br>"
|
dat += "<b>FPS:</b> <a href='?_src_=prefs;preference=clientfps;task=input'>[clientfps]</a><br>"
|
||||||
|
|
||||||
dat += "<b>Parallax (Fancy Space):</b> <a href='?_src_=prefs;preference=parallaxdown' oncontextmenu='window.location.href=\"?_src_=prefs;preference=parallaxup\";return false;'>"
|
dat += "<b>Parallax (Fancy Space):</b> <a href='?_src_=prefs;preference=parallaxdown' oncontextmenu='window.location.href=\"?_src_=prefs;preference=parallaxup\";return false;'>"
|
||||||
@@ -598,6 +598,35 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if(CONFIG_GET(flag/allow_admin_asaycolor))
|
if(CONFIG_GET(flag/allow_admin_asaycolor))
|
||||||
dat += "<br>"
|
dat += "<br>"
|
||||||
dat += "<b>ASAY Color:</b> <span style='border: 1px solid #161616; background-color: [asaycolor ? asaycolor : "#FF4500"];'> </span> <a href='?_src_=prefs;preference=asaycolor;task=input'>Change</a><br>"
|
dat += "<b>ASAY Color:</b> <span style='border: 1px solid #161616; background-color: [asaycolor ? asaycolor : "#FF4500"];'> </span> <a href='?_src_=prefs;preference=asaycolor;task=input'>Change</a><br>"
|
||||||
|
|
||||||
|
//deadmin
|
||||||
|
dat += "<h2>Deadmin While Playing</h2>"
|
||||||
|
if(CONFIG_GET(flag/auto_deadmin_players))
|
||||||
|
dat += "<b>Always Deadmin:</b> FORCED</a><br>"
|
||||||
|
else
|
||||||
|
dat += "<b>Always Deadmin:</b> <a href = '?_src_=prefs;preference=toggle_deadmin_always'>[(toggles & DEADMIN_ALWAYS)?"Enabled":"Disabled"]</a><br>"
|
||||||
|
if(!(toggles & DEADMIN_ALWAYS))
|
||||||
|
dat += "<br>"
|
||||||
|
if(!CONFIG_GET(flag/auto_deadmin_antagonists))
|
||||||
|
dat += "<b>As Antag:</b> <a href = '?_src_=prefs;preference=toggle_deadmin_antag'>[(toggles & DEADMIN_ANTAGONIST)?"Deadmin":"Keep Admin"]</a><br>"
|
||||||
|
else
|
||||||
|
dat += "<b>As Antag:</b> FORCED<br>"
|
||||||
|
|
||||||
|
if(!CONFIG_GET(flag/auto_deadmin_heads))
|
||||||
|
dat += "<b>As Command:</b> <a href = '?_src_=prefs;preference=toggle_deadmin_head'>[(toggles & DEADMIN_POSITION_HEAD)?"Deadmin":"Keep Admin"]</a><br>"
|
||||||
|
else
|
||||||
|
dat += "<b>As Command:</b> FORCED<br>"
|
||||||
|
|
||||||
|
if(!CONFIG_GET(flag/auto_deadmin_security))
|
||||||
|
dat += "<b>As Security:</b> <a href = '?_src_=prefs;preference=toggle_deadmin_security'>[(toggles & DEADMIN_POSITION_SECURITY)?"Deadmin":"Keep Admin"]</a><br>"
|
||||||
|
else
|
||||||
|
dat += "<b>As Security:</b> FORCED<br>"
|
||||||
|
|
||||||
|
if(!CONFIG_GET(flag/auto_deadmin_silicons))
|
||||||
|
dat += "<b>As Silicon:</b> <a href = '?_src_=prefs;preference=toggle_deadmin_silicon'>[(toggles & DEADMIN_POSITION_SILICON)?"Deadmin":"Keep Admin"]</a><br>"
|
||||||
|
else
|
||||||
|
dat += "<b>As Silicon:</b> FORCED<br>"
|
||||||
|
|
||||||
dat += "</td>"
|
dat += "</td>"
|
||||||
dat += "</tr></table>"
|
dat += "</tr></table>"
|
||||||
|
|
||||||
@@ -1426,6 +1455,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
user.client.toggle_hear_radio()
|
user.client.toggle_hear_radio()
|
||||||
if("toggle_prayers")
|
if("toggle_prayers")
|
||||||
user.client.toggleprayers()
|
user.client.toggleprayers()
|
||||||
|
if("toggle_deadmin_always")
|
||||||
|
toggles ^= DEADMIN_ALWAYS
|
||||||
|
if("toggle_deadmin_antag")
|
||||||
|
toggles ^= DEADMIN_ANTAGONIST
|
||||||
|
if("toggle_deadmin_head")
|
||||||
|
toggles ^= DEADMIN_POSITION_HEAD
|
||||||
|
if("toggle_deadmin_security")
|
||||||
|
toggles ^= DEADMIN_POSITION_SECURITY
|
||||||
|
if("toggle_deadmin_silicon")
|
||||||
|
toggles ^= DEADMIN_POSITION_SILICON
|
||||||
|
|
||||||
|
|
||||||
if("be_special")
|
if("be_special")
|
||||||
var/be_special_type = href_list["be_special_type"]
|
var/be_special_type = href_list["be_special_type"]
|
||||||
|
|||||||
@@ -13,8 +13,9 @@
|
|||||||
var/list/head_announce = null
|
var/list/head_announce = null
|
||||||
|
|
||||||
//Bitflags for the job
|
//Bitflags for the job
|
||||||
var/flag = 0
|
var/flag = NONE
|
||||||
var/department_flag = 0
|
var/department_flag = NONE
|
||||||
|
var/auto_deadmin_role_flags = NONE
|
||||||
|
|
||||||
//Players will be allowed to spawn in as jobs that are set to "Station"
|
//Players will be allowed to spawn in as jobs that are set to "Station"
|
||||||
var/faction = "None"
|
var/faction = "None"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/ai
|
/datum/job/ai
|
||||||
title = "AI"
|
title = "AI"
|
||||||
flag = AI_JF
|
flag = AI_JF
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
total_positions = 1
|
total_positions = 1
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/captain
|
/datum/job/captain
|
||||||
title = "Captain"
|
title = "Captain"
|
||||||
flag = CAPTAIN
|
flag = CAPTAIN
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY
|
||||||
department_head = list("CentCom")
|
department_head = list("CentCom")
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/chief_engineer
|
/datum/job/chief_engineer
|
||||||
title = "Chief Engineer"
|
title = "Chief Engineer"
|
||||||
flag = CHIEF
|
flag = CHIEF
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
|
||||||
department_head = list("Captain")
|
department_head = list("Captain")
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
head_announce = list("Engineering")
|
head_announce = list("Engineering")
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
flag = CMO_JF
|
flag = CMO_JF
|
||||||
department_head = list("Captain")
|
department_head = list("Captain")
|
||||||
department_flag = MEDSCI
|
department_flag = MEDSCI
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
|
||||||
head_announce = list(RADIO_CHANNEL_MEDICAL)
|
head_announce = list(RADIO_CHANNEL_MEDICAL)
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
total_positions = 1
|
total_positions = 1
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/cyborg
|
/datum/job/cyborg
|
||||||
title = "Cyborg"
|
title = "Cyborg"
|
||||||
flag = CYBORG
|
flag = CYBORG
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
total_positions = 0
|
total_positions = 0
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/detective
|
/datum/job/detective
|
||||||
title = "Detective"
|
title = "Detective"
|
||||||
flag = DETECTIVE
|
flag = DETECTIVE
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
|
||||||
department_head = list("Head of Security")
|
department_head = list("Head of Security")
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/hop
|
/datum/job/hop
|
||||||
title = "Head of Personnel"
|
title = "Head of Personnel"
|
||||||
flag = HOP
|
flag = HOP
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
|
||||||
department_head = list("Captain")
|
department_head = list("Captain")
|
||||||
department_flag = CIVILIAN
|
department_flag = CIVILIAN
|
||||||
head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE)
|
head_announce = list(RADIO_CHANNEL_SUPPLY, RADIO_CHANNEL_SERVICE)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/hos
|
/datum/job/hos
|
||||||
title = "Head of Security"
|
title = "Head of Security"
|
||||||
flag = HOS
|
flag = HOS
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY
|
||||||
department_head = list("Captain")
|
department_head = list("Captain")
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
head_announce = list(RADIO_CHANNEL_SECURITY)
|
head_announce = list(RADIO_CHANNEL_SECURITY)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/rd
|
/datum/job/rd
|
||||||
title = "Research Director"
|
title = "Research Director"
|
||||||
flag = RD_JF
|
flag = RD_JF
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
|
||||||
department_head = list("Captain")
|
department_head = list("Captain")
|
||||||
department_flag = MEDSCI
|
department_flag = MEDSCI
|
||||||
head_announce = list("Science")
|
head_announce = list("Science")
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/officer
|
/datum/job/officer
|
||||||
title = "Security Officer"
|
title = "Security Officer"
|
||||||
flag = OFFICER
|
flag = OFFICER
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
|
||||||
department_head = list("Head of Security")
|
department_head = list("Head of Security")
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/datum/job/warden
|
/datum/job/warden
|
||||||
title = "Warden"
|
title = "Warden"
|
||||||
flag = WARDEN
|
flag = WARDEN
|
||||||
|
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
|
||||||
department_head = list("Head of Security")
|
department_head = list("Head of Security")
|
||||||
department_flag = ENGSEC
|
department_flag = ENGSEC
|
||||||
faction = "Station"
|
faction = "Station"
|
||||||
|
|||||||
@@ -121,6 +121,9 @@ INITIALIZE_IMMEDIATE(/mob/dead)
|
|||||||
if (isturf(T))
|
if (isturf(T))
|
||||||
update_z(T.z)
|
update_z(T.z)
|
||||||
|
|
||||||
|
/mob/dead/auto_deadmin_on_login()
|
||||||
|
return
|
||||||
|
|
||||||
/mob/dead/Logout()
|
/mob/dead/Logout()
|
||||||
update_z(null)
|
update_z(null)
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
client.change_view(CONFIG_GET(string/default_view))
|
client.change_view(CONFIG_GET(string/default_view))
|
||||||
SStgui.on_transfer(src, mind.current) // Transfer NanoUIs.
|
SStgui.on_transfer(src, mind.current) // Transfer NanoUIs.
|
||||||
mind.current.key = key
|
mind.current.key = key
|
||||||
return 1
|
return TRUE
|
||||||
|
|
||||||
/mob/dead/observer/verb/stay_dead()
|
/mob/dead/observer/verb/stay_dead()
|
||||||
set category = "Ghost"
|
set category = "Ghost"
|
||||||
|
|||||||
@@ -12,4 +12,3 @@
|
|||||||
/mob/proc/death(gibbed)
|
/mob/proc/death(gibbed)
|
||||||
SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed)
|
SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed)
|
||||||
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_DEATH, src , gibbed)
|
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_DEATH, src , gibbed)
|
||||||
return
|
|
||||||
@@ -5,3 +5,11 @@
|
|||||||
if(rev)
|
if(rev)
|
||||||
rev.remove_revolutionary(TRUE)
|
rev.remove_revolutionary(TRUE)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|
||||||
|
/mob/living/silicon/auto_deadmin_on_login()
|
||||||
|
if(!client?.holder)
|
||||||
|
return TRUE
|
||||||
|
if(CONFIG_GET(flag/auto_deadmin_silicons) || (client.prefs?.toggles & DEADMIN_POSITION_SILICON))
|
||||||
|
return client.holder.auto_deadmin()
|
||||||
|
return ..()
|
||||||
|
|||||||
@@ -132,6 +132,12 @@
|
|||||||
if(!picked)
|
if(!picked)
|
||||||
pickVisualAppearence()
|
pickVisualAppearence()
|
||||||
|
|
||||||
|
/mob/living/simple_animal/drone/auto_deadmin_on_login()
|
||||||
|
if(!client?.holder)
|
||||||
|
return TRUE
|
||||||
|
if(CONFIG_GET(flag/auto_deadmin_silicons) || (client.prefs?.toggles & DEADMIN_POSITION_SILICON))
|
||||||
|
return client.holder.auto_deadmin()
|
||||||
|
return ..()
|
||||||
|
|
||||||
/mob/living/simple_animal/drone/death(gibbed)
|
/mob/living/simple_animal/drone/death(gibbed)
|
||||||
..(gibbed)
|
..(gibbed)
|
||||||
|
|||||||
@@ -47,10 +47,21 @@
|
|||||||
if(client.player_details.player_actions.len)
|
if(client.player_details.player_actions.len)
|
||||||
for(var/datum/action/A in client.player_details.player_actions)
|
for(var/datum/action/A in client.player_details.player_actions)
|
||||||
A.Grant(src)
|
A.Grant(src)
|
||||||
|
|
||||||
for(var/foo in client.player_details.post_login_callbacks)
|
for(var/foo in client.player_details.post_login_callbacks)
|
||||||
var/datum/callback/CB = foo
|
var/datum/callback/CB = foo
|
||||||
CB.Invoke()
|
CB.Invoke()
|
||||||
log_played_names(client.ckey,name,real_name)
|
log_played_names(client.ckey,name,real_name)
|
||||||
|
auto_deadmin_on_login()
|
||||||
|
|
||||||
log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP)
|
log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP)
|
||||||
|
|
||||||
|
/mob/proc/auto_deadmin_on_login() //return true if they're not an admin at the end.
|
||||||
|
if(!client?.holder)
|
||||||
|
return TRUE
|
||||||
|
if(CONFIG_GET(flag/auto_deadmin_players) || (client.prefs?.toggles & DEADMIN_ALWAYS))
|
||||||
|
return client.holder.auto_deadmin()
|
||||||
|
if(mind.has_antag_datum(/datum/antagonist) && (CONFIG_GET(flag/auto_deadmin_antagonists) || client.prefs?.toggles & DEADMIN_ANTAGONIST))
|
||||||
|
return client.holder.auto_deadmin()
|
||||||
|
if(job)
|
||||||
|
return SSjob.handle_auto_deadmin_roles(client, job)
|
||||||
|
|||||||
@@ -385,6 +385,19 @@ AUTOADMIN_RANK Game Master
|
|||||||
## Uncomment to automatically give that admin rank to all players
|
## Uncomment to automatically give that admin rank to all players
|
||||||
#AUTOADMIN
|
#AUTOADMIN
|
||||||
|
|
||||||
|
|
||||||
|
## Uncomment to automatically deadmin players when the game starts.
|
||||||
|
#AUTO_DEADMIN_PLAYERS
|
||||||
|
|
||||||
|
## Uncomment to automatically deadmin antagonists when they gain the role.
|
||||||
|
#AUTO_DEADMIN_ANTAGONISTS
|
||||||
|
|
||||||
|
## Uncomment to automatically deadmin specific role sets when a player joins the game.
|
||||||
|
#AUTO_DEADMIN_HEADS
|
||||||
|
#AUTO_DEADMIN_SECURITY
|
||||||
|
#AUTO_DEADMIN_SILICONS
|
||||||
|
|
||||||
|
|
||||||
## CLIENT VERSION CONTROL
|
## CLIENT VERSION CONTROL
|
||||||
## This allows you to configure the minimum required client version, as well as a warning version, and message for both.
|
## This allows you to configure the minimum required client version, as well as a warning version, and message for both.
|
||||||
## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower.
|
## These trigger for any version below (non-inclusive) the given version, so 510 triggers on 509 or lower.
|
||||||
|
|||||||
Reference in New Issue
Block a user