Skip to content

Commit

Permalink
admin: some admin tweaks part 3
Browse files Browse the repository at this point in the history
  • Loading branch information
dageavtobusnick committed Jan 23, 2025
1 parent 189eda1 commit 29bcbaa
Show file tree
Hide file tree
Showing 13 changed files with 271 additions and 62 deletions.
21 changes: 19 additions & 2 deletions code/__HELPERS/names.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,13 @@ GLOBAL_VAR(church_name)

GLOBAL_VAR(command_name)
/proc/command_name()
return SSmapping.map_datum.dock_name
return GLOB.command_name? GLOB.command_name : SSmapping.map_datum.dock_name

/proc/change_command_name(name)

GLOB.command_name = name

return name

GLOBAL_VAR(religion_name)
/proc/religion_name()
Expand All @@ -34,8 +40,19 @@ GLOBAL_VAR(religion_name)
/proc/system_name()
return SSmapping.map_datum.starsys_name

GLOBAL_VAR(station_name)
/proc/station_name()
return SSmapping.map_datum.station_name
return GLOB.station_name? GLOB.station_name : SSmapping.map_datum.station_name

/proc/change_station_name(designation)
GLOB.station_name = designation
update_world_name()

/proc/update_world_name()
if(config && CONFIG_GET(string/servername))
world.name = "[CONFIG_GET(string/servername)][station_name()]"
else
world.name = station_name()

/proc/new_station_name()
var/random = rand(1,5)
Expand Down
7 changes: 3 additions & 4 deletions code/controllers/subsystem/mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -215,13 +215,12 @@ SUBSYSTEM_DEF(mapping)
existing_station_areas += AR

// World name
if(config && CONFIG_GET(string/servername))
world.name = "[CONFIG_GET(string/servername)][station_name()]"
else
world.name = station_name()
GLOB.station_name = station_name()
update_world_name()

return SS_INIT_SUCCESS


/datum/controller/subsystem/mapping/fire(resumed)
// Cache for sonic speed
var/list/unused_turfs = src.unused_turfs
Expand Down
2 changes: 2 additions & 0 deletions code/modules/admin/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,8 @@ GLOBAL_VAR_INIT(nologevent, 0)
dat += "<p><a href='byond://?src=[cached_UID];quick_create_object=1'>Quick Create Object</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];create_turf=1'>Create Turf</a><br></p>"
dat += "<p><a href='byond://?src=[cached_UID];create_mob=1'>Create Mob</a></p>"
if(marked_datum && istype(marked_datum, /atom))
dat += "<A href='byond://?src=[cached_UID];dupe_marked_datum=1'>Duplicate Marked Datum</A><br>"

var/datum/browser/popup = new(usr, "game_panel", "<div align='center'>Game Panel</div>", 210, 280)
popup.set_content(dat.Join(""))
Expand Down
1 change: 1 addition & 0 deletions code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ GLOBAL_LIST_INIT(admin_verbs_event, list(
/client/proc/response_team, // Response Teams admin verb
/client/proc/cmd_admin_create_centcom_report,
/client/proc/event_manager_panel,
/client/proc/forceEvent,
/client/proc/modify_goals,
/client/proc/outfit_manager,
/client/proc/cmd_admin_headset_message,
Expand Down
33 changes: 33 additions & 0 deletions code/modules/admin/player_panel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,39 @@
dat += span_danger("<B>Emergency shuttle lockdowned</B>")
dat += "<BR><a href='byond://?src=[UID()];stop_lockdown=1'>Stop lockdown</a><br>"
dat += "<a href='byond://?src=[UID()];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
var/connected_players = GLOB.clients.len
var/lobby_players = 0
var/observers = 0
var/observers_connected = 0
var/living_players = 0
var/living_players_connected = 0
var/living_players_antagonist = 0
var/other_players = 0
for(var/mob/M in GLOB.mob_list)
if(M.ckey)
if(isnewplayer(M))
lobby_players++
continue
else if(M.stat != DEAD && M.mind && !isbrain(M))
living_players++
if(M.mind.special_role)
living_players_antagonist++
if(M.client)
living_players_connected++
else if((M.stat == DEAD )||(isobserver(M)))
observers++
if(M.client)
observers_connected++
else
other_players += M
dat += "<BR><b><font color='#9A67EA'>Players:|[connected_players - lobby_players] ingame|[connected_players] connected|[lobby_players] lobby|</font></b>"
dat += "<BR><b><font color='green'>Living Players:|[living_players_connected] active|[living_players - living_players_connected] disconnected|[living_players_antagonist] antagonists|</font></b>"
dat += "<BR><b><font color='red'>Dead/Observing players:|[observers_connected] active|[observers - observers_connected] disconnected|</font></b>"
if(other_players)
dat += "<BR><span class='userdanger'>[other_players] players in invalid state or the statistics code is bugged!</span>"
dat += "<BR>"
dat +="<b>Code Phrases:</b> <span class='codephrases'>[GLOB.syndicate_code_phrase]</span>"
dat +="<b>Code Responses:</b> <span class='coderesponses'>[GLOB.syndicate_code_response]</span>"
dat += "<br><b>Antagonist Teams</b><br>"
dat += "<a href='byond://?src=[UID()];check_teams=1'>View Teams</a><br>"
if(SSticker.mode.syndicates.len)
Expand Down
8 changes: 5 additions & 3 deletions code/modules/admin/secrets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@
<center><B><h2>Admin Secrets</h2></B>
<B>Game</b><br>
<a href='byond://?src=[UID()];secretsadmin=showailaws'>Show AI Laws</A>&nbsp;&nbsp;
<a href='byond://?src=[UID()];secretsadmin=showgm'>Show Game Mode</A>&nbsp;&nbsp;
<a href='byond://?src=[UID()];secretsadmin=manifest'>Show Crew Manifest</A><br>
<a href='byond://?src=[UID()];secretsadmin=check_antagonist'>Show current traitors and objectives</A><BR>
<a href='byond://?src=[UID()];secretsadmin=view_codewords'>Show code phrases and responses</A><BR>
<a href='byond://?src=[UID()];secretsadmin=night_shift_set'>Set Night Shift Mode</a><br>
<B>Bombs</b><br>
Expand Down Expand Up @@ -87,8 +85,11 @@
<b>Reinforce Station</b><BR>
<a href='byond://?src=[UID()];secretsfun=gammashuttle'>Move the Gamma Armory</A>&nbsp;&nbsp;
<BR>
<b>Renames</b><BR>
<A href='byond://?src=[UID()];secretsfun=set_station_name'>Rename Station Name</A><BR>
<A href='byond://?src=[UID()];secretsfun=reset_station_name'>Reset Station Name</A><BR>
<A href='byond://?src=[UID()];secretsfun=set_centcomm_name'>Rename Central Comand</A><BR>
</center>"}

if(2)
if(check_rights((R_SERVER|R_EVENT),0))
dat += {"
Expand Down Expand Up @@ -117,6 +118,7 @@
<a href='byond://?src=[UID()];secretsfun=floorlava'>The floor is lava! (DANGEROUS: extremely lame)</A><BR>
<a href='byond://?src=[UID()];secretsfun=fakelava'>The floor is fake-lava! (non-harmful)</A><BR>
<a href='byond://?src=[UID()];secretsfun=monkey'>Turn all humans into monkeys</A><BR>
<a href='byond://?src=[UID()];secretsfun=polymorph'>Polymorph All</A>
<a href='byond://?src=[UID()];secretsfun=fakeguns'>Make all items look like guns</A><BR>
<a href='byond://?src=[UID()];secretsfun=prisonwarp'>Warp all Players to Prison</A><BR>
<a href='byond://?src=[UID()];secretsfun=stupify'>Make all players stupid</A><BR>
Expand Down
109 changes: 60 additions & 49 deletions code/modules/admin/topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2389,38 +2389,7 @@
if(!check_rights(R_ADMIN|R_EVENT)) return

var/mob/living/M = locateUID(href_list["BlueSpaceArtillery"])
if(!isliving(M))
to_chat(usr, "<span class='warning'>This can only be used on instances of type /mob/living</span>", confidential=TRUE)
return

if(alert(owner, "Are you sure you wish to hit [key_name(M)] with Bluespace Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
return

if(GLOB.BSACooldown)
to_chat(owner, "Standby. Reload cycle in progress. Gunnery crews ready in five seconds!")
return

GLOB.BSACooldown = 1
spawn(50)
GLOB.BSACooldown = 0

to_chat(M, "You've been hit by bluespace artillery!")
log_admin("[key_name(M)] has been hit by Bluespace Artillery fired by [key_name(owner)]")
message_admins("[key_name_admin(M)] has been hit by Bluespace Artillery fired by [key_name_admin(owner)]")

var/turf/simulated/floor/T = get_turf(M)
if(istype(T))
if(prob(80))
T.break_tile_to_plating()
else
T.break_tile()

if(M.health <= 1)
M.gib()
else
M.adjustBruteLoss(min(99,(M.health - 1)))
M.Weaken(40 SECONDS)
M.Stuttering(40 SECONDS)
usr.client.bluespace_artillery(M)

else if(href_list["CentcommReply"])
if(!check_rights(R_ADMIN))
Expand Down Expand Up @@ -2891,6 +2860,10 @@
if(!check_rights(R_SPAWN)) return
return create_mob(usr)

else if(href_list["dupe_marked_datum"])
if(!check_rights(R_SPAWN)) return
return DuplicateObject(marked_datum, perfectcopy=1, newloc=get_turf(usr))

else if(href_list["object_list"]) //this is the laggiest thing ever
if(!check_rights(R_SPAWN)) return

Expand Down Expand Up @@ -3099,6 +3072,35 @@
if("tripleAI")
usr.client.triple_ai()
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Triple AI")
if("set_station_name")
if(!check_rights(R_ADMIN | R_EVENT))
return

if(!you_realy_want_do_this())
return

var/new_name = tgui_input_text(usr, "Пожалуйста, введите новое название станции.", "Что?", "")
if(!new_name)
return
change_station_name(new_name)
log_and_message_admins("renamed the station to: [new_name].")
GLOB.event_announcement.Announce("Решением [command_name()] станция переименована в \"[new_name]\".")

if("set_centcomm_name")
if(!check_rights(R_ADMIN | R_EVENT))
return
if(!you_realy_want_do_this())
return
usr.client.cmd_change_command_name()

if("reset_station_name")
if(!check_rights(R_ADMIN))
return
var/new_name = new_station_name()
change_station_name(new_name)
log_and_message_admins("reset the station name.</span>")
GLOB.event_announcement.Announce("Решением [command_name()] станция переименована в \"[new_name]\".")

if("gravity")
if(!(SSticker && SSticker.mode))
to_chat(usr, "<span class='warning'>Please wait until the game starts! Not sure how it will work otherwise.</span>", confidential=TRUE)
Expand Down Expand Up @@ -3305,6 +3307,8 @@
SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Weather Ash Storm")
SSweather.run_weather(/datum/weather/ash_storm)
message_admins("[key_name_admin(usr)] spawned an ash storm on the mining level")
if("polymorph")
usr.client.polymorph_all()
if("stupify")
if(!you_realy_want_do_this())
return
Expand All @@ -3325,15 +3329,33 @@
W.item_state = "gun"
message_admins("[key_name_admin(usr)] made every item look like a gun")
if("schoolgirl") // nyaa~ How much are you paying attention in reviews?
if(!check_rights(R_EVENT))
return

if(!you_realy_want_do_this())
return

SSblackbox.record_feedback("tally", "admin_secrets_fun_used", 1, "Chinese Cartoons")
for(var/obj/item/clothing/under/W in world)
W.icon_state = "schoolgirl"
W.item_state = "w_suit"
W.item_color = "schoolgirl"
message_admins("[key_name_admin(usr)] activated Japanese Animes mode")
world << sound('sound/AI/animes.ogg')
log_and_message_admins("made everything kawaii.")
for(var/mob/living/carbon/human/human in GLOB.mob_list)
SEND_SOUND(human, 'sound/AI/animes.ogg')
if(!human.dna.species.nojumpsuit && !isvox(human) && !isplasmaman(human) \
&& !isshadowling(human) && !isvoxarmalis(human) && !is_space_or_openspace(get_turf(human)))
var/obj/item/clothing/head/kitty/hat = new
var/seifuku = pick(typesof(/obj/item/clothing/under/schoolgirl))
var/obj/item/clothing/under/schoolgirl/uniform = new seifuku
human.drop_item_ground(human.w_uniform, TRUE)
human.equip_to_slot_or_del(uniform, uniform.slot_flags)
human.drop_item_ground(human.head, TRUE)
human.equip_to_slot_or_del(hat, hat.slot_flags)
ADD_TRAIT(uniform, TRAIT_NODROP, INNATE_TRAIT)
ADD_TRAIT(hat, TRAIT_NODROP, INNATE_TRAIT)
var/list/honorifics = list(MALE = list("кун"), FEMALE = list("чан","тан"), NEUTER = list("сан")) //John Robust -> Robust-kun
var/list/names = splittext(human.real_name," ")
var/newname = "[names[names.len]]-[pick(honorifics[human.gender])]"
human.name = newname
human.real_name = newname

if("eagles")//
if(!you_realy_want_do_this())
return
Expand Down Expand Up @@ -3575,12 +3597,6 @@
usr << browse(dat, "window=jobdebug;size=600x500")
if("showailaws")
output_ai_laws()
if("showgm")
if(!SSticker)
alert("The game hasn't started yet!")
else if(SSticker.mode)
alert("The game mode is [SSticker.mode.name]")
else alert("For some reason there's a ticker, but not a game mode")
if("manifest")
var/dat = {"<meta charset="UTF-8"><b>Showing Crew Manifest.</b><hr>"}
dat += "<table cellspacing=5><tr><th>Name</th><th>Position</th></tr>"
Expand All @@ -3590,11 +3606,6 @@
dat += text("<tr><td>[]</td><td>[]</td></tr>", H.name, H.get_assignment())
dat += "</table>"
usr << browse(dat, "window=manifest;size=440x410")
if("check_antagonist")
check_antagonists()
if("view_codewords")
to_chat(usr, "<b>Code Phrases:</b> <span class='codephrases'>[GLOB.syndicate_code_phrase]</span>", confidential=TRUE)
to_chat(usr, "<b>Code Responses:</b> <span class='coderesponses'>[GLOB.syndicate_code_response]</span>", confidential=TRUE)
if("DNA")
var/dat = {"<meta charset="UTF-8"><b>Showing DNA from blood.</b><hr>"}
dat += "<table cellspacing=5><tr><th>Name</th><th>DNA</th><th>Blood Type</th><th>Race Blood Type</th></tr>"
Expand Down
40 changes: 40 additions & 0 deletions code/modules/admin/verbs/bluespacearty.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/client/proc/bluespace_artillery(mob/living/target in GLOB.mob_list)
set name = "Bluespace Artillery"
set category = "Event"

if(!check_rights(R_ADMIN|R_EVENT))
return

if(!isliving(target))
to_chat(usr, span_warning("Это можно использовать только на объектах типа /mob/living"), confidential = TRUE)
return

if(tgui_alert(usr, "Вы уверены, что хотите выстрелить по [key_name(target)] из Блюспейс Артиллерии?", "Подтверждение выстрела?" , list("Да" , "Нет")) != "Да")
return

if(GLOB.BSACooldown)
to_chat(usr, "Подождите. Идет цикл перезарядки. Артиллерийские расчеты будут готовы через пять секунд!")
return

GLOB.BSACooldown = 1
spawn(50)
GLOB.BSACooldown = 0

to_chat(target, "По вам попала блюспейс артиллерия!")
log_admin("[key_name(target)] has been hit by Bluespace Artillery fired by [key_name(usr)]")
message_admins("[key_name_admin(target)] has been hit by Bluespace Artillery fired by [key_name_admin(usr)]")

var/turf/simulated/floor/T = get_turf(target)
if(istype(T))
if(prob(80))
T.break_tile_to_plating()
else
T.break_tile()

if(target.health <= 1)
target.gib()
else
target.adjustBruteLoss(min(99,(target.health - 1)))
target.Weaken(40 SECONDS)
target.Stuttering(40 SECONDS)

Loading

0 comments on commit 29bcbaa

Please sign in to comment.