Upload files

This commit is contained in:
SandPoot
2021-11-06 15:38:13 -03:00
parent 7bc74ab9c0
commit 80dce37eb4
24 changed files with 131 additions and 20 deletions

View File

@@ -16,6 +16,12 @@
#define DISABLE_ARRIVALRATTLE (1<<13)
#define COMBOHUD_LIGHTING (1<<14)
#define DEADMIN_ALWAYS (1<<0)
#define DEADMIN_ANTAGONIST (1<<1)
#define DEADMIN_POSITION_HEAD (1<<2)
#define DEADMIN_POSITION_SECURITY (1<<3)
#define DEADMIN_POSITION_SILICON (1<<4)
#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

View File

@@ -64,3 +64,18 @@
/datum/config_entry/flag/automute_on //enables automuting/spam prevention
/datum/config_entry/flag/debug_admin_hrefs
/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

View File

@@ -466,11 +466,11 @@ SUBSYSTEM_DEF(job)
SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep()
/* if(M.client.holder)
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) */
handle_auto_deadmin_roles(M.client, rank)
to_chat(M, "<b>You are the [rank].</b>")
if(job)
@@ -517,19 +517,19 @@ SUBSYSTEM_DEF(job)
binder.decks = N.client.prefs.tcg_decks
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)))
if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && (CONFIG_GET(flag/auto_deadmin_heads) || (C.prefs?.deadmin & 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)))
else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && (CONFIG_GET(flag/auto_deadmin_security) || (C.prefs?.deadmin & 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?.deadmin & DEADMIN_POSITION_SILICON))) //in the event there's ever psuedo-silicon roles added, ie synths.
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()
var/datum/job/J = SSjob.GetJob("Security Officer")

View File

@@ -113,6 +113,8 @@ GLOBAL_LIST_EMPTY(antagonists)
remove_blacklisted_quirks()
if(is_banned(owner.current) && replace_banned)
replace_banned_player()
else if(owner.current.client?.holder && (CONFIG_GET(flag/auto_deadmin_antagonists) || owner.current.client.prefs?.deadmin & DEADMIN_ANTAGONIST))
owner.current.client.holder.auto_deadmin()
if(skill_modifiers)
for(var/A in skill_modifiers)
ADD_SINGLETON_SKILL_MODIFIER(owner, A, type)

View File

@@ -83,6 +83,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/tgui_lock = TRUE
var/windowflashing = TRUE
var/toggles = TOGGLES_DEFAULT
/// A separate variable for deadmin toggles, only deals with those.
var/deadmin = NONE
var/db_flags
var/chat_toggles = TOGGLES_DEFAULT_CHAT
var/ghost_form = "ghost"
@@ -824,6 +826,35 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Announce Login:</b> <a href='?_src_=prefs;preference=announce_login'>[(toggles & ANNOUNCE_LOGIN)?"Enabled":"Disabled"]</a><br>"
dat += "<br>"
dat += "<b>Combo HUD Lighting:</b> <a href = '?_src_=prefs;preference=combohud_lighting'>[(toggles & COMBOHUD_LIGHTING)?"Full-bright":"No Change"]</a><br>"
dat += "<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'>[(deadmin & DEADMIN_ALWAYS)?"Enabled":"Disabled"]</a><br>"
if(!(deadmin & DEADMIN_ALWAYS))
dat += "<br>"
if(!CONFIG_GET(flag/auto_deadmin_antagonists))
dat += "<b>As Antag:</b> <a href = '?_src_=prefs;preference=toggle_deadmin_antag'>[(deadmin & 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'>[(deadmin & 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'>[(deadmin & 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'>[(deadmin & DEADMIN_POSITION_SILICON)?"Deadmin":"Keep Admin"]</a><br>"
else
dat += "<b>As Silicon:</b> FORCED<br>"
dat += "</td>"
dat +="<td width='300px' height='300px' valign='top'>"
@@ -2752,6 +2783,19 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("combohud_lighting")
toggles ^= COMBOHUD_LIGHTING
// Deadmin preferences
if("toggle_deadmin_always")
deadmin ^= DEADMIN_ALWAYS
if("toggle_deadmin_antag")
deadmin ^= DEADMIN_ANTAGONIST
if("toggle_deadmin_head")
deadmin ^= DEADMIN_POSITION_HEAD
if("toggle_deadmin_security")
deadmin ^= DEADMIN_POSITION_SECURITY
if("toggle_deadmin_silicon")
deadmin ^= DEADMIN_POSITION_SILICON
//
if("be_special")
var/be_special_type = href_list["be_special_type"]
if(be_special_type in be_special)

View File

@@ -396,6 +396,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["default_slot"] >> default_slot
S["chat_toggles"] >> chat_toggles
S["toggles"] >> toggles
S["deadmin"] >> deadmin
S["ghost_form"] >> ghost_form
S["ghost_orbit"] >> ghost_orbit
S["ghost_accs"] >> ghost_accs
@@ -467,6 +468,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
windowflashing = sanitize_integer(windowflashing, 0, 1, initial(windowflashing))
default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot))
toggles = sanitize_integer(toggles, 0, 16777215, initial(toggles))
deadmin = sanitize_integer(deadmin, 0, 16777215, initial(deadmin))
clientfps = sanitize_integer(clientfps, 0, 1000, 0)
parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null)
ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion))
@@ -573,6 +575,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["be_special"], be_special)
WRITE_FILE(S["default_slot"], default_slot)
WRITE_FILE(S["toggles"], toggles)
WRITE_FILE(S["deadmin"], deadmin)
WRITE_FILE(S["chat_toggles"], chat_toggles)
WRITE_FILE(S["ghost_form"], ghost_form)
WRITE_FILE(S["ghost_orbit"], ghost_orbit)

View File

@@ -15,7 +15,7 @@
//Bitflags for the job
var/flag = NONE //Deprecated
var/department_flag = NONE //Deprecated
// var/auto_deadmin_role_flags = NONE
var/auto_deadmin_role_flags = NONE
//Players will be allowed to spawn in as jobs that are set to "Station"
var/faction = "None"

View File

@@ -1,7 +1,7 @@
/datum/job/ai
title = "AI"
flag = AI_JF
// auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
department_flag = ENGSEC
faction = "Station"
total_positions = 1

View File

@@ -1,7 +1,7 @@
/datum/job/captain
title = "Captain"
flag = CAPTAIN
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY //:eyes:
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY //:eyes:
department_head = list("CentCom")
department_flag = ENGSEC
faction = "Station"

View File

@@ -1,7 +1,7 @@
/datum/job/chief_engineer
title = "Chief Engineer"
flag = CHIEF
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
department_head = list("Captain")
department_flag = ENGSEC
head_announce = list(RADIO_CHANNEL_ENGINEERING)

View File

@@ -3,7 +3,7 @@
flag = CMO_JF
department_head = list("Captain")
department_flag = MEDSCI
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
head_announce = list(RADIO_CHANNEL_MEDICAL)
faction = "Station"
total_positions = 1

View File

@@ -1,7 +1,7 @@
/datum/job/cyborg
title = "Cyborg"
flag = CYBORG
// auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
department_flag = ENGSEC
faction = "Station"
total_positions = 0

View File

@@ -1,7 +1,7 @@
/datum/job/detective
title = "Detective"
flag = DETECTIVE
// auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"

View File

@@ -1,7 +1,7 @@
/datum/job/hop
title = "Head of Personnel"
flag = HOP
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
department_head = list("Captain")
department_flag = CIVILIAN
head_announce = list(RADIO_CHANNEL_SERVICE)

View File

@@ -1,7 +1,7 @@
/datum/job/hos
title = "Head of Security"
flag = HOS
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY
department_head = list("Captain")
department_flag = ENGSEC
head_announce = list(RADIO_CHANNEL_SECURITY)

View File

@@ -4,7 +4,7 @@
department_head = list("Captain")
department_flag = CIVILIAN
head_announce = list(RADIO_CHANNEL_SUPPLY)
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
faction = "Station"
total_positions = 1
spawn_positions = 1

View File

@@ -1,7 +1,7 @@
/datum/job/rd
title = "Research Director"
flag = RD_JF
// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
auto_deadmin_role_flags = DEADMIN_POSITION_HEAD
department_head = list("Captain")
department_flag = MEDSCI
head_announce = list(RADIO_CHANNEL_SCIENCE)

View File

@@ -1,7 +1,7 @@
/datum/job/officer
title = "Security Officer"
flag = OFFICER
// auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"

View File

@@ -1,7 +1,7 @@
/datum/job/warden
title = "Warden"
flag = WARDEN
// auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"

View File

@@ -121,6 +121,9 @@ INITIALIZE_IMMEDIATE(/mob/dead)
if (isturf(T))
update_z(T.z)
/mob/dead/auto_deadmin_on_login()
return
/mob/dead/Logout()
update_z(null)
return ..()

View File

@@ -11,3 +11,10 @@
if(G)
mind.remove_antag_datum(G)
..()
/mob/living/silicon/auto_deadmin_on_login()
if(!client?.holder)
return TRUE
if(CONFIG_GET(flag/auto_deadmin_silicons) || (client.prefs?.deadmin & DEADMIN_POSITION_SILICON))
return client.holder.auto_deadmin()
return ..()

View File

@@ -140,6 +140,12 @@
if(!picked)
pickVisualAppearence()
/mob/living/simple_animal/drone/auto_deadmin_on_login()
if(!client?.holder)
return TRUE
if(CONFIG_GET(flag/auto_deadmin_silicons) || (client.prefs?.deadmin & DEADMIN_POSITION_SILICON))
return client.holder.auto_deadmin()
return ..()
/mob/living/simple_animal/drone/death(gibbed)
..(gibbed)

View File

@@ -48,6 +48,7 @@
for(var/foo in client.player_details.post_login_callbacks)
var/datum/callback/CB = foo
CB.Invoke()
auto_deadmin_on_login()
mind?.hide_ckey = client?.prefs?.hide_ckey
@@ -56,3 +57,13 @@
if(has_field_of_vision && CONFIG_GET(flag/use_field_of_vision))
LoadComponent(/datum/component/field_of_vision, field_of_vision_type)
/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?.deadmin & DEADMIN_ALWAYS))
return client.holder.auto_deadmin()
if(mind.has_antag_datum(/datum/antagonist) && (CONFIG_GET(flag/auto_deadmin_antagonists) || client.prefs?.deadmin & DEADMIN_ANTAGONIST))
return client.holder.auto_deadmin()
if(job)
return SSjob.handle_auto_deadmin_roles(client, job)

View File

@@ -81,3 +81,17 @@ GUEST_BAN
## Allow admin hrefs that don't use the new token system, will eventually be removed
DEBUG_ADMIN_HREFS
##
## Those deadmin configs will lock admins this way, so it's not really recommended unless really needed
##
## 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