mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 22:50:26 +01:00
[MIRROR] Ghost Pool Protection Admin Button (#226)
* Ghost Pool Protection Admin Button (#52683) * Ghost Pool Protection * okay * Update tgui.bundle.js * just a bit of feedback * temporarily Co-authored-by: Emmanuel S. <emmanuelssr@gmail.com> * Update GhostPoolProtection.js * Update tgui.bundle.js * my devserver broke * okay done for real * conflict resolution bundle * Rohesies dope review Co-authored-by: Rohesie <rohesie@gmail.com> Co-authored-by: Emmanuel S. <emmanuelssr@gmail.com> Co-authored-by: Rohesie <rohesie@gmail.com> * Ghost Pool Protection Admin Button Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com> Co-authored-by: Emmanuel S. <emmanuelssr@gmail.com> Co-authored-by: Rohesie <rohesie@gmail.com>
This commit is contained in:
co-authored by
Emmanuel S.
Rohesie
tralezab
parent
f053e12c16
commit
38c75c7573
@@ -30,6 +30,7 @@ GLOBAL_PROTECT(admin_verbs_admin)
|
||||
/datum/verbs/menu/Admin/verb/playerpanel,
|
||||
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
|
||||
/client/proc/check_ai_laws, /*shows AI and borg laws*/
|
||||
/client/proc/ghost_pool_protection, /*opens a menu for toggling ghost roles*/
|
||||
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
|
||||
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
|
||||
/datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
//very similar to centcom_podlauncher in terms of how this is coded, so i kept a lot of comments from it
|
||||
|
||||
/client/proc/ghost_pool_protection() //Creates a verb for admins to open up the ui
|
||||
set name = "Ghost Pool Protection"
|
||||
set desc = "Choose which ways people can get into the round, or just clear it out completely for admin events."
|
||||
set category = "Admin - Events"
|
||||
var/datum/ghost_pool_menu/tgui = new(usr)//create the datum
|
||||
tgui.ui_interact(usr)//datum has a tgui component, here we open the window
|
||||
|
||||
/datum/ghost_pool_menu
|
||||
var/client/holder //client of whoever is using this datum
|
||||
|
||||
//when submitted, what the pool flags will be set to
|
||||
var/new_role_flags = ALL
|
||||
|
||||
//EVERY TYPE OF WAY SOMEONE IS GETTING BACK INTO THE ROUND!
|
||||
//these are the same comments as the ones in admin.dm defines, please update those if you change them here
|
||||
/*
|
||||
var/events_or_midrounds = TRUE //ie fugitives, space dragon, etc. also includes dynamic midrounds as it's the same deal
|
||||
var/spawners = TRUE //ie ashwalkers, free golems, beach bums
|
||||
var/station_sentience = TRUE //ie posibrains, mind monkeys, sentience potion, etc.
|
||||
var/minigames = TRUE //ie mafia, ctf
|
||||
var/misc = TRUE //oddities like split personality and any animal ones like spiders, xenos
|
||||
*/
|
||||
|
||||
/datum/ghost_pool_menu/New(user)//user can either be a client or a mob due to byondcode(tm)
|
||||
if (istype(user, /client))
|
||||
var/client/user_client = user
|
||||
holder = user_client //if its a client, assign it to holder
|
||||
else
|
||||
var/mob/user_mob = user
|
||||
holder = user_mob.client //if its a mob, assign the mob's client to holder
|
||||
new_role_flags = GLOB.ghost_role_flags
|
||||
|
||||
/datum/ghost_pool_menu/ui_state(mob/user)
|
||||
return GLOB.admin_state
|
||||
|
||||
/datum/ghost_pool_menu/ui_close()
|
||||
qdel(src)
|
||||
|
||||
/datum/ghost_pool_menu/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "GhostPoolProtection")
|
||||
ui.open()
|
||||
|
||||
/datum/ghost_pool_menu/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["events_or_midrounds"] = (new_role_flags & GHOSTROLE_MIDROUND_EVENT)
|
||||
data["spawners"] = (new_role_flags & GHOSTROLE_SPAWNER)
|
||||
data["station_sentience"] = (new_role_flags & GHOSTROLE_STATION_SENTIENCE)
|
||||
data["silicons"] = (new_role_flags & GHOSTROLE_SILICONS)
|
||||
data["minigames"] = (new_role_flags & GHOSTROLE_MINIGAME)
|
||||
return data
|
||||
|
||||
/datum/ghost_pool_menu/ui_act(action, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
switch(action)
|
||||
if("toggle_events_or_midrounds")
|
||||
new_role_flags ^= GHOSTROLE_MIDROUND_EVENT
|
||||
if("toggle_spawners")
|
||||
new_role_flags ^= GHOSTROLE_SPAWNER
|
||||
if("toggle_station_sentience")
|
||||
new_role_flags ^= GHOSTROLE_STATION_SENTIENCE
|
||||
if("toggle_silicons")
|
||||
new_role_flags ^= GHOSTROLE_SILICONS
|
||||
if("toggle_minigames")
|
||||
new_role_flags ^= GHOSTROLE_MINIGAME
|
||||
if("all_roles")
|
||||
new_role_flags = ALL
|
||||
if("no_roles")
|
||||
new_role_flags = NONE
|
||||
if("apply_settings")
|
||||
to_chat(usr, "Settings Applied!")
|
||||
var/msg
|
||||
switch(new_role_flags)
|
||||
if(ALL)
|
||||
msg = "enabled all of"
|
||||
if(NONE)
|
||||
msg = "disabled all of"
|
||||
else
|
||||
msg = "modified"
|
||||
message_admins("[key_name_admin(holder)] has [msg] this round's allowed ghost roles.")
|
||||
GLOB.ghost_role_flags = new_role_flags
|
||||
@@ -216,6 +216,9 @@
|
||||
return
|
||||
|
||||
|
||||
if(!(GLOB.ghost_role_flags & GHOSTROLE_MINIGAME))
|
||||
to_chat(user, "<span class='warning'>CTF has been temporarily disabled by admins.</span>")
|
||||
return
|
||||
people_who_want_to_play |= user.ckey
|
||||
var/num = people_who_want_to_play.len
|
||||
var/remaining = CTF_REQUIRED_PLAYERS - num
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
/obj/effect/mob_spawn/attack_ghost(mob/user)
|
||||
if(!SSticker.HasRoundStarted() || !loc || !ghost_usable)
|
||||
return
|
||||
if(!(GLOB.ghost_role_flags & GHOSTROLE_SPAWNER) && !(flags_1 & ADMIN_SPAWNED_1))
|
||||
to_chat(user, "<span class='warning'>An admin has temporarily disabled non-admin ghost roles!</span>")
|
||||
return
|
||||
if(!uses)
|
||||
to_chat(user, "<span class='warning'>This spawner is out of charges!</span>")
|
||||
return
|
||||
|
||||
@@ -375,6 +375,8 @@
|
||||
something.apply_damage(5,BRUTE,BODY_ZONE_HEAD,FALSE,FALSE,FALSE) //notably: no damage resist (it's in your helmet), no damage spread (it's in your helmet)
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
|
||||
return
|
||||
if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE))
|
||||
say("ERROR: Central Command has temporarily outlawed monkey sentience helmets in this sector. NEAREST LAWFUL SECTOR: 2.537 million light years away.")
|
||||
magnification = user //this polls ghosts
|
||||
visible_message("<span class='warning'>[src] powers up!</span>")
|
||||
playsound(src, 'sound/machines/ping.ogg', 30, TRUE)
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
return FALSE
|
||||
if(EMERGENCY_ESCAPED_OR_ENDGAMED)
|
||||
return FALSE
|
||||
if(ispath(typepath, /datum/round_event/ghost_role) && GHOSTROLE_MIDROUND_EVENT)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/round_event_control/proc/preRunEvent()
|
||||
|
||||
@@ -834,7 +834,7 @@
|
||||
* Only checks if everyone is actually valid to start (still connected and an observer) if there are enough players (basic_setup)
|
||||
*/
|
||||
/datum/mafia_controller/proc/try_autostart()
|
||||
if(phase != MAFIA_PHASE_SETUP)
|
||||
if(phase != MAFIA_PHASE_SETUP || !(GLOB.ghost_role_flags & GHOSTROLE_MINIGAME))
|
||||
return
|
||||
if(GLOB.mafia_signup.len >= MAFIA_MAX_PLAYER_COUNT || custom_setup.len)//enough people to try and make something (or debug mode)
|
||||
basic_setup()
|
||||
|
||||
@@ -48,6 +48,8 @@ GLOBAL_VAR(posibrain_notify_cooldown)
|
||||
/obj/item/mmi/posibrain/attack_self(mob/user)
|
||||
if(!brainmob)
|
||||
brainmob = new(src)
|
||||
if(!(GLOB.ghost_role_flags & GHOSTROLE_SILICONS))
|
||||
to_chat(user, "<span class='warning'>Central Command has temporarily outlawed posibrain sentience in this sector...</span>")
|
||||
if(is_occupied())
|
||||
to_chat(user, "<span class='warning'>This [name] is already active!</span>")
|
||||
return
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider/Topic(href, href_list)
|
||||
if(href_list["activate"])
|
||||
var/mob/dead/observer/ghost = usr
|
||||
if(istype(ghost) && playable_spider)
|
||||
if(istype(ghost) && playable_spider && !(GLOB.ghost_role_flags & GHOSTROLE_SPAWNER))
|
||||
humanize_spider(ghost)
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider/Login()
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/venus_human_trap/attack_ghost(mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(. || !(GLOB.ghost_role_flags & GHOSTROLE_SPAWNER))
|
||||
return
|
||||
humanize_plant(user)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user