mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +01:00
more filter and borg admin stuff (#15745)
* more filter and borg admin stuff * analyzer fix * . * vchatdark css fix
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
+131
-131
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user