more filter and borg admin stuff (#15745)

* more filter and borg admin stuff

* analyzer fix

* .

* vchatdark css fix
This commit is contained in:
Kashargul
2024-02-11 16:54:14 +01:00
committed by GitHub
parent 2887d7f72d
commit 16fd2d94a0
20 changed files with 233 additions and 165 deletions
+1
View File
@@ -13,6 +13,7 @@
#define MODIFIY_ROBOT_RADIOC_REMOVE "Remove a Radio Channel"
#define MODIFIY_ROBOT_COMP_ADD "Replace a Component"
#define MODIFIY_ROBOT_COMP_REMOVE "Remove a Component"
#define MODIFIY_ROBOT_SWAP_MODULE "Swap a Robot Module"
#define MODIFIY_ROBOT_RESET_MODULE "Fully Reset Robot Module"
#define MODIFIY_ROBOT_TOGGLE_ERT "Toggle ERT Module Overwrite"
#define MODIFIY_ROBOT_TOGGLE_CENT_ACCESS "Toggle Central Access Codes"
+1
View File
@@ -12,6 +12,7 @@
#define MESSAGE_TYPE_LOCALCHAT "localchat"
#define MESSAGE_TYPE_NPCEMOTE "npcemote"
#define MESSAGE_TYPE_PLOCALCHAT "plocalchat"
#define MESSAGE_TYPE_HIVEMIND "hivemind"
#define MESSAGE_TYPE_RADIO "radio"
#define MESSAGE_TYPE_NIF "nif"
#define MESSAGE_TYPE_INFO "info"
+5
View File
@@ -22,14 +22,19 @@
#define span_srvradio(str) ("<span class='srvradio'>" + str + "</span>")
#define span_expradio(str) ("<span class='expradio'>" + str + "</span>")
#define span_binary(str) ("<span class='binarysay'>" + str + "</span>")
#define span_hivemind(str) ("<span class='hivemind'>" + str + "</span>")
#define span_name(str) ("<span class='name'>" + str + "</span>")
#define span_say(str) ("<span class='say'>" + str + "</span>")
#define span_alert(str) ("<span class='alert'>" + str + "</span>")
#define span_ghostalert(str) ("<span class='ghostalert'>" + str + "</span>")
#define span_npc_say(str) ("<span class='npcsay'>" + str + "</span>")
#define span_emote(str) ("<span class='emote'>" + str + "</span>")
#define span_emote_subtle(str) ("<span class='emotesubtle'>" + str + "</span>")
#define span_npc_emote(str) ("<span class='npcemote'>" + str + "</span>")
#define span_attack(str) ("<span class='attack'>" + str + "</span>")
#define span_moderate(str) ("<span class='moderate'>" + str + "</span>")
@@ -517,6 +517,7 @@ var/list/admin_verbs_event_manager = list(
/client/proc/check_ai_laws, //shows AI and borg laws,
/client/proc/rename_silicon, //properly renames silicons,
/client/proc/manage_silicon_laws, // Allows viewing and editing silicon laws. ,
/client/proc/modify_robot,
/client/proc/check_antagonists,
/client/proc/admin_memo, //admin memo system. show/delete/write. +SERVER needed to delete admin memos of others,
/client/proc/dsay, //talk in deadchat using our ckey/fakekey,
+21 -4
View File
@@ -3,7 +3,7 @@
set name = "Modify Robot Module"
set desc = "Allows to add or remove modules to/from robots."
set category = "Admin"
if(!check_rights(R_ADMIN|R_FUN|R_VAREDIT))
if(!check_rights(R_ADMIN|R_FUN|R_VAREDIT|R_EVENT))
return
if(!istype(target) || !target.module)
@@ -13,7 +13,7 @@
return
var/list/modification_options = list(MODIFIY_ROBOT_MODULE_ADD,MODIFIY_ROBOT_MODULE_REMOVE, MODIFIY_ROBOT_APPLY_UPGRADE, MODIFIY_ROBOT_SUPP_ADD, MODIFIY_ROBOT_SUPP_REMOVE, MODIFIY_ROBOT_RADIOC_ADD, MODIFIY_ROBOT_RADIOC_REMOVE,
MODIFIY_ROBOT_COMP_ADD, MODIFIY_ROBOT_COMP_REMOVE, MODIFIY_ROBOT_RESET_MODULE, MODIFIY_ROBOT_TOGGLE_ERT, MODIFIY_ROBOT_TOGGLE_CENT_ACCESS)
MODIFIY_ROBOT_COMP_ADD, MODIFIY_ROBOT_COMP_REMOVE, MODIFIY_ROBOT_SWAP_MODULE, MODIFIY_ROBOT_RESET_MODULE, MODIFIY_ROBOT_TOGGLE_ERT, MODIFIY_ROBOT_TOGGLE_CENT_ACCESS)
while(TRUE)
var/modification_choice = tgui_input_list(usr, "Select if you want to add or remove a module to/from [target]","Choice", modification_options)
@@ -275,17 +275,34 @@
if(selected_component == "power cell")
target.cell = null
to_chat(usr, "<span class='danger'>You removed \"[C]\" from [target]</span>")
if(MODIFIY_ROBOT_SWAP_MODULE)
var/selected_module = tgui_input_list(usr, "Which Module would you like to use?", "Module", robot_modules)
if(!selected_module || selected_module == "Cancel")
continue
if(!(selected_module in robot_modules))
continue
target.uneq_all()
target.hud_used.update_robot_modules_display(TRUE)
target.modtype = initial(target.modtype)
target.module.Reset(target)
target.module.Destroy()
target.modtype = selected_module
var/module_type = robot_modules[selected_module]
target.transform_with_anim()
new module_type(target)
target.hands.icon_state = target.get_hud_module_icon()
target.hud_used.update_robot_modules_display()
if(MODIFIY_ROBOT_RESET_MODULE)
if(tgui_alert(usr, "Are you sure that you want to reset the entire module?","Confirm",list("Yes","No"))=="No")
continue
target.module_reset()
target.module_reset(FALSE)
to_chat(usr, "<span class='danger'>You resetted [target]'s module selection.</span>")
if(MODIFIY_ROBOT_TOGGLE_ERT)
target.crisis_override = !target.crisis_override
to_chat(usr, "<span class='danger'>You [target.crisis_override? "enabled":"disabled"] [target]'s combat module overwrite.</span>")
if(tgui_alert(usr, "Do you want to reset the module as well to allow selection?","Confirm",list("Yes","No"))=="No")
continue
target.module_reset()
target.module_reset(FALSE)
if(MODIFIY_ROBOT_TOGGLE_CENT_ACCESS)
for(var/obj in target.contents)
if(istype(obj, /obj/item/weapon/card/id/synthetic))
+3 -3
View File
@@ -154,7 +154,7 @@
/mob/proc/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
if((language in languages) && language.check_special_condition(src))
var/msg = "<i><span class='game say'>[language.name], <span class='name'>[speaker_name]</i></span> [message]</span>"
var/msg = span_hivemind("[language.name], <span class='name'>[speaker_name]</span> [message]")
to_chat(src,msg)
/mob/new_player/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
@@ -162,9 +162,9 @@
/mob/observer/dead/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message)
if(speaker.name == speaker_name || antagHUD)
to_chat(src, "<i><span class='game say'>[language.name], <span class='name'>[speaker_name]</i></span> ([ghost_follow_link(speaker, src)]) [message]</span>")
to_chat(src, span_hivemind("[language.name], <span class='name'>[speaker_name]</span> ([ghost_follow_link(speaker, src)]) [message]"))
else
to_chat(src, "<i><span class='game say'>[language.name], <span class='name'>[speaker_name]</i></span> [message]</span>")
to_chat(src, span_hivemind("[language.name], <span class='name'>[speaker_name]</span> [message]"))
/datum/language/proc/check_special_condition(var/mob/other)
return 1
+6 -6
View File
@@ -20,12 +20,12 @@
message = encode_html_emphasis(message)
var/message_start = "<i><span class='game say'>[name], <span class='name'>[speaker.name]</span>"
var/message_body = "<span class='message'>[speaker.say_quote(message)], \"[message]\"</span></span></i>"
var/message_start = "[name], <span class='name'>[speaker.name]</span>"
var/message_body = "<span class='message'>[speaker.say_quote(message)], \"[message]\"</span>"
for (var/mob/M in dead_mob_list)
if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping
var/message_to_send = "[message_start] ([ghost_follow_link(speaker, M)]) [message_body]"
var/message_to_send = span_binary("[message_start] ([ghost_follow_link(speaker, M)]) [message_body]")
if(M.check_mentioned(message) && M.is_preference_enabled(/datum/client_preference/check_mention))
message_to_send = "<font size='3'><b>[message_to_send]</b></font>"
M.show_message(message_to_send, 2)
@@ -34,11 +34,11 @@
if(drone_only && !istype(S,/mob/living/silicon/robot/drone))
continue
else if(istype(S , /mob/living/silicon/ai))
message_start = "<i><span class='game say'>[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[speaker];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.name]</span></a></span></i>"
message_start = span_binary("[name], <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[speaker];trackname=[html_encode(speaker.name)]'><span class='name'>[speaker.name]</span></a>")
else if (!S.binarycheck())
continue
var/message_to_send = "[message_start] [message_body]"
var/message_to_send = span_binary("[message_start] [message_body]")
if(S.check_mentioned(message) && S.is_preference_enabled(/datum/client_preference/check_mention))
message_to_send = "<font size='3'><b>[message_to_send]</b></font>"
S.show_message(message_to_send, 2)
@@ -49,7 +49,7 @@
for (var/mob/living/M in listening)
if(istype(M, /mob/living/silicon) || M.binarycheck())
continue
M.show_message("<i><span class='game say'><span class='name'>synthesised voice</span> <span class='message'>beeps, \"beep beep beep\"</span></span></i>",2)
M.show_message("<span class='binarysay'><span class='name'>synthesised voice</span> <span class='message'>beeps, \"beep beep beep\"</span></span>",2)
//robot binary xmitter component power usage
if (isrobot(speaker))
+12 -6
View File
@@ -806,14 +806,14 @@
return
/mob/living/silicon/robot/proc/module_reset()
/mob/living/silicon/robot/proc/module_reset(var/notify = TRUE)
transform_with_anim() //VOREStation edit: sprite animation
uneq_all()
hud_used.update_robot_modules_display(TRUE)
modtype = initial(modtype)
hands.icon_state = get_hud_module_icon()
notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name)
if(notify)
notify_ai(ROBOT_NOTIFICATION_MODULE_RESET, module.name)
module.Reset(src)
module.Destroy()
module = null
@@ -1468,8 +1468,10 @@
var/obj/item/device/dogborg/sleeper/T = has_upgrade_module(/obj/item/device/dogborg/sleeper)
if(T && T.upgraded_capacity)
return T
else
else if(!T)
return "" // Return this to have the analyzer show an error if the module is missing. FALSE / NULL are used for missing upgrades themselves
else
return FALSE
if(given_type == /obj/item/borg/upgrade/advanced/jetpack)
return has_upgrade_module(/obj/item/weapon/tank/jetpack/carbondioxide)
if(given_type == /obj/item/borg/upgrade/advanced/advhealth)
@@ -1488,14 +1490,18 @@
var/obj/item/device/dogborg/sleeper/T = has_upgrade_module(/obj/item/device/dogborg/sleeper)
if(T && T.compactor)
return T
else if(!T)
return "" // Return this to have the analyzer show an error if the module is missing. FALSE / NULL are used for missing upgrades themselves
else
return ""
return FALSE
if(given_type == /obj/item/borg/upgrade/restricted/tasercooler)
var/obj/item/weapon/gun/energy/taser/mounted/cyborg/T = has_upgrade_module(/obj/item/weapon/gun/energy/taser/mounted/cyborg)
if(T && T.recharge_time <= 2)
return T
else if(!T)
return "" // Return this to have the analyzer show an error if the module is missing. FALSE / NULL are used for missing upgrades themselves
else
return ""
return FALSE
if(given_type == /obj/item/borg/upgrade/restricted/advrped)
return has_upgrade_module(/obj/item/weapon/storage/part_replacer/adv)
if(given_type == /obj/item/borg/upgrade/restricted/diamonddrill)
+4
View File
@@ -75,6 +75,10 @@ em {font-style: normal;font-weight: bold;}
.srvradio {color: #6eaa2c;}
.expradio {color: #555555;}
/* Global Languages */
.hivemind {font-style: italic;}
.binarysay {font-style: italic;}
/* Miscellaneous */
.name {font-weight: bold;}
.say {}
@@ -13,6 +13,7 @@ import {
Section,
Stack,
} from 'tgui/components';
import {
moveChatPageLeft,
moveChatPageRight,
@@ -7,6 +7,7 @@
import { shallowDiffers } from 'common/react';
import { Component, createRef } from 'react';
import { Button } from 'tgui/components';
import { chatRenderer } from './renderer';
export class ChatPanel extends Component {
+4 -3
View File
@@ -5,10 +5,11 @@
*/
import { useDispatch, useSelector } from 'tgui/backend';
import { Box, Tabs, Flex, Button } from 'tgui/components';
import { changeChatPage, addChatPage } from './actions';
import { selectChatPages, selectCurrentChatPage } from './selectors';
import { Box, Button, Flex, Tabs } from 'tgui/components';
import { openChatSettings } from '../settings/actions';
import { addChatPage, changeChatPage } from './actions';
import { selectChatPages, selectCurrentChatPage } from './selectors';
const UnreadCountWidget = ({ value }) => (
<Box
+8 -1
View File
@@ -26,6 +26,7 @@ export const MESSAGE_TYPE_LOCALCHAT = 'localchat';
export const MESSAGE_TYPE_NPCEMOTE = 'npcemote';
export const MESSAGE_TYPE_PLOCALCHAT = 'plocalchat';
export const MESSAGE_TYPE_VORE = 'vore';
export const MESSAGE_TYPE_HIVEMIND = 'hivemind';
export const MESSAGE_TYPE_RADIO = 'radio';
export const MESSAGE_TYPE_NIF = 'nif';
export const MESSAGE_TYPE_INFO = 'info';
@@ -81,12 +82,18 @@ export const MESSAGE_TYPES = [
description: 'Messages regarding vore interactions',
selector: '.valert, .vwarning, .vnotice, .vdanger',
},
{
type: MESSAGE_TYPE_HIVEMIND,
name: 'Global Say',
description: 'All global languages (Hivemind / Binary)',
selector: '.hivemind, .binarysay',
},
{
type: MESSAGE_TYPE_RADIO,
name: 'Radio',
description: 'All departments of radio messages',
selector:
'.alert, .minorannounce, .syndradio, .centradio, .airadio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .abductor, .alien, .changeling',
'.alert, .minorannounce, .syndradio, .centradio, .airadio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .resonate, .abductor, .alien, .changeling',
},
{
type: MESSAGE_TYPE_NIF,
+1
View File
@@ -7,6 +7,7 @@
// Themes
import './styles/main.scss';
import './styles/themes/light.scss';
import './styles/themes/vchatlight.scss';
import './styles/themes/vchatdark.scss';
import { perf } from 'common/perf';
@@ -375,7 +375,12 @@ img.icon.bigicon {
.infoplain,
.oocplain,
.warningplain,
.chatexport {
.chatexpor,
.body {
}
.hivemind {
font-style: italic;
}
.nif {
@@ -396,6 +401,7 @@ img.icon.bigicon {
}
.binarysay {
font-style: italic;
color: #1e90ff;
}
@@ -393,7 +393,12 @@ img.icon.bigicon {
.infoplain,
.oocplain,
.warningplain,
.chatexport {
.chatexport,
.body {
}
.hivemind {
font-style: italic;
}
.nif {
@@ -414,9 +419,10 @@ img.icon.bigicon {
}
.binarysay {
font-style: italic;
color: #20c20e;
background-color: #000000;
display: block;
display: inline-block;
}
.binarysay a {
@@ -375,7 +375,13 @@ img.icon.bigicon {
.infoplain,
.oocplain,
.warningplain,
.chatexport {
.chatexport,
.body {
color: #ffffff;
}
.hivemind {
font-style: italic;
color: #ffffff;
}
@@ -397,7 +403,8 @@ img.icon.bigicon {
}
.binarysay {
color: #1e90ff;
font-style: italic;
color: #ffffff;
}
.binarysay a {
@@ -393,8 +393,12 @@ img.icon.bigicon {
.infoplain,
.oocplain,
.warningplain,
.chatexport {
color: #ffffff;
.chatexport,
.body {
}
.hivemind {
font-style: italic;
}
.nif {
@@ -415,9 +419,8 @@ img.icon.bigicon {
}
.binarysay {
color: #20c20e;
background-color: #000000;
display: block;
font-style: italic;
color: #000000;
}
.binarysay a {
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long