From c297ebbc3749d9ab23f658dc91294da985e016e8 Mon Sep 17 00:00:00 2001
From: Kashargul <144968721+Kashargul@users.noreply.github.com>
Date: Tue, 10 Oct 2023 21:46:53 +0200
Subject: [PATCH 01/37] Absorb message filter & general radio colour
-> Slightly brigther green for the general radio comms in dark mode to make it easier readable on some screens.
-> Added a filter function for Psay and Pme messages to no longer have them under unsorted messages to easily integrated them into a scene tab.
---
code/modules/mob/say_vr.dm | 36 +++++++++++++--------------
code/modules/vchat/css/ss13styles.css | 9 ++++++-
code/modules/vchat/js/vchat.js | 8 ++++++
code/modules/vchat/js/vchat.min.js | 2 +-
4 files changed, 35 insertions(+), 20 deletions(-)
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 29613842992..ab6cf7a7082 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -285,13 +285,13 @@
return
else
pb = db.pred_body
- to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain
+ to_chat(pb, "The captive mind of \the [M] thinks, \"[message]\"") //To our pred if dominated brain
if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds))
pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
else if(M.absorbed && isbelly(M.loc))
pb = M.loc.loc
- to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed
+ to_chat(pb, "\The [M] thinks, \"[message]\"") //To our pred if absorbed
if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds))
pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -301,14 +301,14 @@
for(var/I in pb.contents)
if(istype(I, /mob/living/dominated_brain) && I != M)
var/mob/living/dominated_brain/db = I
- to_chat(db, "The captive mind of \the [M] thinks, \"[message]\"") //To any dominated brains in the pred
+ to_chat(db, "The captive mind of \the [M] thinks, \"[message]\"") //To any dominated brains in the pred
if(db.is_preference_enabled(/datum/client_preference/subtle_sounds))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
for(var/B in pb.vore_organs)
for(var/mob/living/L in B)
if(L.absorbed && L != M && L.ckey)
- to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people in the pred
+ to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people in the pred
if(L.is_preference_enabled(/datum/client_preference/subtle_sounds))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -317,25 +317,25 @@
for(var/I in M.contents)
if(istype(I, /mob/living/dominated_brain))
var/mob/living/dominated_brain/db = I
- to_chat(db, "\The [M] thinks, \"[message]\"") //To any dominated brains inside us
+ to_chat(db, "\The [M] thinks, \"[message]\"") //To any dominated brains inside us
if(db.is_preference_enabled(/datum/client_preference/subtle_sounds))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
for(var/B in M.vore_organs)
for(var/mob/living/L in B)
if(L.absorbed)
- to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people inside us
+ to_chat(L, "\The [M] thinks, \"[message]\"") //To any absorbed people inside us
if(L.is_preference_enabled(/datum/client_preference/subtle_sounds))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
if(f) //We found someone to send the message to
if(pb)
- to_chat(M, "You think \"[message]\"") //To us if we are the prey
+ to_chat(M, "You think \"[message]\"") //To us if we are the prey
if(M.is_preference_enabled(/datum/client_preference/subtle_sounds))
M << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
else
- to_chat(M, "You think \"[message]\"") //To us if we are the pred
+ to_chat(M, "You think \"[message]\"") //To us if we are the pred
if(M.is_preference_enabled(/datum/client_preference/subtle_sounds))
M << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
for (var/mob/G in player_list)
@@ -343,7 +343,7 @@
continue
else if(isobserver(G) && G.is_preference_enabled(/datum/client_preference/ghost_ears))
if(is_preference_enabled(/datum/client_preference/whisubtle_vis) || G.client.holder)
- to_chat(G, "\The [M] thinks, \"[message]\"")
+ to_chat(G, "\The [M] thinks, \"[message]\"")
log_say(message,M)
else //There wasn't anyone to send the message to, pred or prey, so let's just say it instead and correct our psay just in case.
M.forced_psay = FALSE
@@ -381,14 +381,14 @@
return
else
pb = db.pred_body
- to_chat(pb, "\The [M] [message]") //To our pred if dominated brain
+ to_chat(pb, "\The [M] [message]") //To our pred if dominated brain
if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds))
pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
else if(M.absorbed && isbelly(M.loc))
pb = M.loc.loc
- to_chat(pb, "\The [M] [message]") //To our pred if absorbed
+ to_chat(pb, "\The [M] [message]") //To our pred if absorbed
if(pb.is_preference_enabled(/datum/client_preference/subtle_sounds))
pb << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -398,14 +398,14 @@
for(var/I in pb.contents)
if(istype(I, /mob/living/dominated_brain) && I != M)
var/mob/living/dominated_brain/db = I
- to_chat(db, "\The [M] [message]") //To any dominated brains in the pred
+ to_chat(db, "\The [M] [message]") //To any dominated brains in the pred
if(db.is_preference_enabled(/datum/client_preference/subtle_sounds))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
for(var/B in pb.vore_organs)
for(var/mob/living/L in B)
if(L.absorbed && L != M && L.ckey)
- to_chat(L, "\The [M] [message]") //To any absorbed people in the pred
+ to_chat(L, "\The [M] [message]") //To any absorbed people in the pred
if(L.is_preference_enabled(/datum/client_preference/subtle_sounds))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
@@ -414,25 +414,25 @@
for(var/I in M.contents)
if(istype(I, /mob/living/dominated_brain))
var/mob/living/dominated_brain/db = I
- to_chat(db, "\The [M] [message]") //To any dominated brains inside us
+ to_chat(db, "\The [M] [message]") //To any dominated brains inside us
if(db.is_preference_enabled(/datum/client_preference/subtle_sounds))
db << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
for(var/B in M.vore_organs)
for(var/mob/living/L in B)
if(L.absorbed)
- to_chat(L, "\The [M] [message]") //To any absorbed people inside us
+ to_chat(L, "\The [M] [message]") //To any absorbed people inside us
if(L.is_preference_enabled(/datum/client_preference/subtle_sounds))
L << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
f = TRUE
if(f) //We found someone to send the message to
if(pb)
- to_chat(M, "\The [M] [message]") //To us if we are the prey
+ to_chat(M, "\The [M] [message]") //To us if we are the prey
if(M.is_preference_enabled(/datum/client_preference/subtle_sounds))
M << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
else
- to_chat(M, "\The [M] [message]") //To us if we are the pred
+ to_chat(M, "\The [M] [message]") //To us if we are the pred
if(M.is_preference_enabled(/datum/client_preference/subtle_sounds))
M << sound('sound/talksounds/subtle_sound.ogg', volume = 50)
for (var/mob/G in player_list)
@@ -440,7 +440,7 @@
continue
else if(isobserver(G) && G.is_preference_enabled(/datum/client_preference/ghost_ears))
if(is_preference_enabled(/datum/client_preference/whisubtle_vis) || G.client.holder)
- to_chat(G, "\The [M] [message]")
+ to_chat(G, "\The [M] [message]")
log_say(message,M)
else //There wasn't anyone to send the message to, pred or prey, so let's just emote it instead and correct our psay just in case.
M.forced_psay = FALSE
diff --git a/code/modules/vchat/css/ss13styles.css b/code/modules/vchat/css/ss13styles.css
index faed3b81b2a..0b0f14425c5 100644
--- a/code/modules/vchat/css/ss13styles.css
+++ b/code/modules/vchat/css/ss13styles.css
@@ -102,6 +102,7 @@ body.inverted {
.deadsay {color: #530FAD;}
.inverted .deadsay {color: #732FCD;} /* Dark mode */
.radio {color: #008000;}
+.inverted .radio {color: #00a800;} /* Dark mode */
.deptradio {color: #ff00ff;} /* when all other department colors fail */
.newscaster {color: #750000;}
@@ -129,7 +130,13 @@ body.inverted {
.inverted .emote {color: #FFFFFF;}
.alert {color: #ff0000;}
h1.alert, h2.alert {color: #000000;}
-.nif {} /* VOREStation Add */
+/* VOREStation Add Start */
+.nif {}
+.psay {color: #800080;font-style: italic;}
+.inverted .psay {color: #e300e4;font-style: italic;}
+.pemote {color: #800080;font-style: italic;}
+.inverted .pemote {color: #e300e4;font-style: italic;}
+/* VOREStation Add End */
/* Game Messages */
diff --git a/code/modules/vchat/js/vchat.js b/code/modules/vchat/js/vchat.js
index 7d91c9b0d0f..9c01be96036 100644
--- a/code/modules/vchat/js/vchat.js
+++ b/code/modules/vchat/js/vchat.js
@@ -209,6 +209,14 @@ function start_vue() {
required: false,
admin: false
},
+ {
+ matches: ".psay, .pemote",
+ becomes: "vc_pmessage",
+ pretty: "Pred/Prey Messages",
+ tooltip: "Messages from / to absorbed or dominated prey",
+ required: false,
+ admin: false
+ },
//VOREStation Add End
{
matches: ".mentor_channel, .mentor",
diff --git a/code/modules/vchat/js/vchat.min.js b/code/modules/vchat/js/vchat.min.js
index 2c6bd03b5ea..6b3d979f8b3 100644
--- a/code/modules/vchat/js/vchat.min.js
+++ b/code/modules/vchat/js/vchat.min.js
@@ -1 +1 @@
-!function(){var e=console.log;console.log=function(t){send_debug(t),e.apply(console,arguments)};var t=console.error;console.error=function(e){send_debug(e),t.apply(console,arguments)},window.onerror=function(e,t,s,a,n){var o="";return n&&n.stack&&(o=n.stack),send_debug(e+" ("+t+"@"+s+":"+a+") "+n+"|UA: "+navigator.userAgent+"|Stack: "+o),!0}}();var vueapp,vchat_opts={msBeforeDropped:3e4,cookiePrefix:"vst-",alwaysShow:["vc_looc","vc_system"],vchatTabsVer:1},DARKMODE_COLORS={buttonBgColor:"#40628a",buttonTextColor:"#FFFFFF",windowBgColor:"#272727",highlightColor:"#009900",tabTextColor:"#FFFFFF",tabBackgroundColor:"#272727"},LIGHTMODE_COLORS={buttonBgColor:"none",buttonTextColor:"#000000",windowBgColor:"none",highlightColor:"#007700",tabTextColor:"#000000",tabBackgroundColor:"none"},set_storage=set_cookie,get_storage=get_cookie,domparser=new DOMParser;storageAvailable("localStorage")&&(set_storage=set_localstorage,get_storage=get_localstorage);var vchat_state={ready:!1,byond_ip:null,byond_cid:null,byond_ckey:null,lastPingReceived:0,latency_sent:0,lastId:0};function start_vchat(){start_vue(),vchat_state.ready=!0,push_Topic("done_loading"),push_Topic_showingnum(this.showingnum),doWinset("htmloutput",{"is-visible":!0}),doWinset("oldoutput",{"is-visible":!1}),doWinset("chatloadlabel",{"is-visible":!1}),setInterval(check_ping,vchat_opts.msBeforeDropped),send_debug("VChat Loaded!")}function start_vue(){vueapp=new Vue({el:"#app",data:{messages:[],shown_messages:[],unshown_messages:0,archived_messages:[],tabs:[{name:"Main",categories:[],immutable:!0,active:!0}],unread_messages:{},editing:!1,paused:!1,latency:0,reconnecting:!1,ext_styles:"",is_admin:!1,inverted:!1,crushing:3,animated:!1,fontsize:.9,lineheight:130,showingnum:200,type_table:[{matches:".filter_say, .say, .emote, .emote_subtle",becomes:"vc_localchat",pretty:"Local Chat",tooltip:"In-character local messages (say, emote, etc)",required:!1,admin:!1},{matches:".filter_radio, .alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster",becomes:"vc_radio",pretty:"Radio Comms",tooltip:"All departments of radio messages",required:!1,admin:!1},{matches:".filter_notice, .notice:not(.pm), .adminnotice, .info, .sinister, .cult",becomes:"vc_info",pretty:"Notices",tooltip:"Non-urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_warning, .warning:not(.pm), .critical, .userdanger, .italics",becomes:"vc_warnings",pretty:"Warnings",tooltip:"Urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_deadsay, .deadsay",becomes:"vc_deadchat",pretty:"Deadchat",tooltip:"All of deadchat",required:!1,admin:!1},{matches:".filter_pray",becomes:"vc_pray",pretty:"Pray",tooltip:"Prayer messages",required:!1,admin:!1},{matches:".ooc, .filter_ooc",becomes:"vc_globalooc",pretty:"Global OOC",tooltip:"The bluewall of global OOC messages",required:!1,admin:!1},{matches:".nif",becomes:"vc_nif",pretty:"NIF Messages",tooltip:"Messages from the NIF itself and people inside",required:!1,admin:!1},{matches:".mentor_channel, .mentor",becomes:"vc_mentor",pretty:"Mentor messages",tooltip:"Mentorchat and mentor pms",required:!1,admin:!1},{matches:".filter_pm, .pm",becomes:"vc_adminpm",pretty:"Admin PMs",tooltip:"Messages to/from admins ('adminhelps')",required:!1,admin:!1},{matches:".filter_ASAY, .admin_channel",becomes:"vc_adminchat",pretty:"Admin Chat",tooltip:"ASAY messages",required:!1,admin:!0},{matches:".filter_MSAY, .mod_channel",becomes:"vc_modchat",pretty:"Mod Chat",tooltip:"MSAY messages",required:!1,admin:!0},{matches:".filter_ESAY, .event_channel",becomes:"vc_eventchat",pretty:"Event Chat",tooltip:"ESAY messages",required:!1,admin:!0},{matches:".filter_combat, .danger",becomes:"vc_combat",pretty:"Combat Logs",tooltip:"Urist McTraitor has stabbed you with a knife!",required:!1,admin:!1},{matches:".filter_adminlogs, .log_message",becomes:"vc_adminlogs",pretty:"Admin Logs",tooltip:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",required:!1,admin:!0},{matches:".filter_attacklogs",becomes:"vc_attacklogs",pretty:"Attack Logs",tooltip:"Urist McTraitor has shot John Doe",required:!1,admin:!0},{matches:".filter_debuglogs",becomes:"vc_debuglogs",pretty:"Debug Logs",tooltip:"DEBUG: SSPlanets subsystem Recover().",required:!1,admin:!0},{matches:".looc",becomes:"vc_looc",pretty:"Local OOC",tooltip:"Local OOC messages, always enabled",required:!0},{matches:".rlooc",becomes:"vc_rlooc",pretty:"Remote LOOC",tooltip:"Remote LOOC messages",required:!1,admin:!0},{matches:".boldannounce, .filter_system",becomes:"vc_system",pretty:"System Messages",tooltip:"Messages from your client, always enabled",required:!0},{matches:".unsorted",becomes:"vc_unsorted",pretty:"Unsorted",tooltip:"Messages that don't have any filters.",required:!1,admin:!1}]},mounted:function(){this.load_settings();var e=new XMLHttpRequest;e.open("GET","ss13styles.css"),e.onreadystatechange=(function(){this.ext_styles=e.responseText}).bind(this),e.send()},updated:function(){this.editing||this.paused||window.scrollTo(0,document.getElementById("messagebox").scrollHeight)},watch:{reconnecting:function(e,t){!0==e&&!1==t?this.internal_message("Your client has lost connection to the server, or there is severe lag. Your client will reconnect if possible."):!1==e&&!0==t&&this.internal_message("Your client has reconnected to the server.")},inverted:function(e){set_storage("darkmode",e),e?(document.body.classList.add("inverted"),switch_ui_mode(DARKMODE_COLORS)):(document.body.classList.remove("inverted"),switch_ui_mode(LIGHTMODE_COLORS))},crushing:function(e){set_storage("crushing",e)},animated:function(e){set_storage("animated",e)},fontsize:function(e,t){if(isNaN(e)){this.fontsize=t;return}e<.2?this.fontsize=.2:e>5&&(this.fontsize=5),set_storage("fontsize",e)},lineheight:function(e,t){if(!isFinite(e)){this.lineheight=t;return}e<100?this.lineheight=100:e>200&&(this.lineheight=200),set_storage("lineheight",e)},showingnum:function(e,t){if(!isFinite(e)){this.showingnum=t;return}(e=Math.floor(e))<50?this.showingnum=50:e>2e3&&(this.showingnum=2e3),set_storage("showingnum",this.showingnum),push_Topic_showingnum(this.showingnum),this.attempt_archive()},current_categories:function(e,t){e.length&&this.apply_filter(e)}},computed:{active_tab:function(){return this.tabs.find(function(e){return e.active})},ping_classes:function(){return this.latency?"?"==this.latency?"grey":this.latency<0?"red":this.latency<=200?"green":this.latency<=400?"yellow":"grey":this.reconnecting?"red":"green"},current_categories:function(){return this.active_tab==this.tabs[0]?[]:this.active_tab.categories.concat(vchat_opts.alwaysShow)}},methods:{load_settings:function(){this.inverted=get_storage("darkmode",!1),this.crushing=get_storage("crushing",3),this.animated=get_storage("animated",!1),this.fontsize=get_storage("fontsize",.9),this.lineheight=get_storage("lineheight",130),this.showingnum=get_storage("showingnum",200),isNaN(this.crushing)&&(this.crushing=3),isNaN(this.fontsize)&&(this.fontsize=.9),this.load_tabs()},load_tabs:function(){var e=get_storage("tabs");if(e){var t=JSON.parse(e);if(!t.version||!t.tabs){this.internal_message("There was a problem loading your tabs. Any new ones you make will be saved, however.");return}if(!t.version==vchat_opts.vchatTabsVer){this.internal_message("Your saved tabs are for an older version of VChat and must be recreated, sorry.");return}this.tabs.push.apply(this.tabs,t.tabs)}},save_tabs:function(){var e={version:vchat_opts.vchatTabsVer,tabs:[]};this.tabs.forEach(function(t){if(!t.immutable){var s=t.name,a=[];t.categories.forEach(function(e){a.push(e)}),e.tabs.push({name:s,categories:a,immutable:!1,active:!1})}}),set_storage("tabs",JSON.stringify(e))},switchtab:function(e){e!=this.active_tab&&(this.active_tab.active=!1,e.active=!0,e.categories.forEach(function(e){this.unread_messages[e]=0},this),this.apply_filter(this.current_categories))},editmode:function(){this.editing=!this.editing,this.save_tabs()},pause:function(){this.paused=!this.paused},newtab:function(){this.tabs.push({name:"New Tab",categories:[],immutable:!1,active:!1}),this.switchtab(this.tabs[this.tabs.length-1])},renametab:function(){if(!this.active_tab.immutable){var e=this.active_tab,t=window.prompt("Type the desired tab name:",e.name);null!==t&&""!==t&&null!==e&&(e.name=t)}},deltab:function(e){e||(e=this.active_tab),!e.immutable&&(this.switchtab(this.tabs[0]),this.tabs.splice(this.tabs.indexOf(e),1))},movetab:function(e,t){if(e&&!e.immutable){var s=this.tabs.indexOf(e);this.tabs.splice(s+t,0,this.tabs.splice(s,1)[0])}},tab_unread_count:function(e){var t=0,s=this.unread_messages;return e.categories.find(function(e){s[e]&&(t+=s[e])}),t},tab_unread_categories:function(e){var t=!1,s=this.unread_messages;return e.categories.find(function(e){if(s[e])return t=!0,!0}),{red:t,grey:!t}},attempt_archive:function(){if(this.messages.length>this.showingnum){var e=this.messages.splice(0,20);Array.prototype.push.apply(this.archived_messages,e)}},apply_filter:function(e){this.shown_messages.splice(0),this.unshown_messages=0,this.messages.forEach(function(t){e.indexOf(t.category)>-1&&this.shown_messages.push(t)},this),this.archived_messages.forEach(function(t){e.indexOf(t.category)>-1&&this.unshown_messages++},this)},add_message:function(e){let t={time:e.time,category:"error",content:e.message,repeats:1};if(t.category=this.get_category(t.content),"vc_unsorted"==t.category&&(t.content=""+t.content+""),this.crushing){let s=this.messages.slice(-this.crushing);for(let a=s.length-1;a>=0;a--){let n=s[a];n.content==t.content&&(t.repeats+=n.repeats,this.messages.splice(this.messages.indexOf(n),1))}}t.content=t.content.replace(/(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/img,'$1'),this.current_categories.length&&0>this.current_categories.indexOf(t.category)?(isNaN(this.unread_messages[t.category])&&(this.unread_messages[t.category]=0),this.unread_messages[t.category]+=1):this.current_categories.length&&this.shown_messages.push(t),t.id=++vchat_state.lastId,this.attempt_archive(),this.messages.push(t)},internal_message:function(e){let t={time:this.messages.length?this.messages.slice(-1).time+1:0,category:"vc_system",content:"[VChat Internal] "+e+""};t.id=++vchat_state.lastId,this.messages.push(t)},on_mouseup:function(e){let t=e.target;"getSelection"in window&&!1===window.getSelection().isCollapsed||t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName)||(focusMapWindow(),e.preventDefault(),e.target.click())},click_message:function(e){let t=e.target;if("A"===t.tagName){e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1;var s=t.getAttribute("href");"?"==s[0]||s.length>=8&&"byond://"==s.substring(0,8)?window.location=s:window.location="byond://?action=openLink&link="+encodeURIComponent(s)}},get_category:function(e){if(!vchat_state.ready){push_Topic("not_ready");return}let t=domparser.parseFromString(e,"text/html").querySelector("span"),s="vc_unsorted";return t&&this.type_table.find(function(e){if(t.msMatchesSelector(e.matches))return s=e.becomes,!0}),s},save_chatlog:function(){var e="
",t=this.archived_messages.concat(this.messages),s=this.current_categories;t.forEach(function(t){(0==s.length||s.indexOf(t.category)>=0)&&(e+=t.content,t.repeats>1&&(e+="(x"+t.repeats+")"),e+="
\n")}),e+="";var a=new Date,n=String(a.getHours());n.length<2&&(n="0"+n);var o=String(a.getMinutes());o.length<2&&(o="0"+o);var i=String(a.getDate());i.length<2&&(i="0"+i);var r=String(a.getMonth()+1);r.length<2&&(r="0"+r);var c="log"+(" "+String(a.getFullYear())+"-"+r+"-"+i+" ("+n+" "+o)+").html",l=document.createElement("a");if(void 0!==l.download)l.href="data:attachment/text,"+encodeURI(e),l.target="_blank",l.download=c,l.click();else{var h=new Blob([e],{type:"text/html;charset=utf8;"});saved=window.navigator.msSaveOrOpenBlob(h,c)}},do_latency_test:function(){send_latency_check()},blur_this:function(e){e.target.blur()}}})}function check_ping(){Date.now()-vchat_state.lastPingReceived>vchat_opts.msBeforeDropped&&(vueapp.reconnecting=!0)}function send_latency_check(){vchat_state.latency_sent||(vchat_state.latency_sent=Date.now(),vueapp.latency="?",push_Topic("ping"),setTimeout(function(){"?"==vchat_state.latency_ms&&(vchat_state.latency_ms=999)},1e3),setTimeout(function(){vchat_state.latency_sent=0,vueapp.latency=0},5e3))}function get_latency_check(){vchat_state.latency_sent&&(vueapp.latency=Date.now()-vchat_state.latency_sent)}function byondDecode(e){e=e.replace(/\+/g,"%20");try{e=decodeURIComponent(e)}catch(t){e=unescape(e)}return JSON.parse(e)}function putmessage(e){Array.isArray(e=byondDecode(e))?e.forEach(function(e){vueapp.add_message(e)}):"object"==typeof e&&vueapp.add_message(e)}function system_message(e){vueapp.internal_message(e)}function push_Topic(e){window.location="?_src_=chat&proc="+e}function push_Topic_showingnum(e){window.location="?_src_=chat&showingnum="+e}function focusMapWindow(){window.location="byond://winset?mapwindow.map.focus=true"}function send_debug(e){push_Topic("debug¶m[message]="+encodeURIComponent(e))}function get_event(e){if(!vchat_state.ready){push_Topic("not_ready");return}var t={evttype:"internal_error",event:e};switch((t=byondDecode(e)).evttype){case"internal_error":system_message("Event parse error: "+e);break;case"byond_player":send_client_data(),vueapp.is_admin="true"===t.admin,vchat_state.byond_ip=t.address,vchat_state.byond_cid=t.cid,vchat_state.byond_ckey=t.ckey,set_storage("ip",vchat_state.byond_ip),set_storage("cid",vchat_state.byond_cid),set_storage("ckey",vchat_state.byond_ckey);break;case"keepalive":vchat_state.lastPingReceived=Date.now(),vueapp.reconnecting=!1;break;case"pong":get_latency_check();break;case"availability":push_Topic("done_loading");break;default:system_message("Didn't know what to do with event: "+e)}}function send_client_data(){push_Topic("ident¶m[clientdata]="+JSON.stringify({ip:get_storage("ip"),cid:get_storage("cid"),ckey:get_storage("ckey")}))}function set_localstorage(e,t){window.localStorage.setItem(vchat_opts.cookiePrefix+e,t)}function get_localstorage(e,t){let s=window.localStorage.getItem(vchat_opts.cookiePrefix+e);return"null"===s||null===s?s=t:"true"===s?s=!0:"false"===s?s=!1:isNaN(s)||(s=+s),s}function set_cookie(e,t){let s=new Date;s.setFullYear(s.getFullYear()+1);let a=s.toUTCString();document.cookie=vchat_opts.cookiePrefix+e+"="+t+";expires="+a+";path=/"}function get_cookie(e,t){var s={cookie:null,localstorage:null,indexeddb:null};let a=document.cookie.split(";"),n={};a.forEach(function(e){let s=e.replace(vchat_opts.cookiePrefix,"").trim(),a=s.search("="),o=decodeURIComponent(s.substring(0,a)),i=decodeURIComponent(s.substring(a+1));"null"==i||null===i?i=t:"true"===i?i=!0:"false"===i?i=!1:isNaN(i)||(i=+i),n[o]=i}),s.cookie=n[e]}var SKIN_BUTTONS=["rpane.textb","rpane.infob","rpane.wikib","rpane.forumb","rpane.rulesb","rpane.github","rpane.discord","rpane.mapb","rpane.changelog","mainwindow.saybutton","mainwindow.mebutton","mainwindow.hotkey_toggle"],SKIN_ELEMENTS=["mainwindow","mainwindow.mainvsplit","mainwindow.tooltip","rpane","rpane.rpanewindow","rpane.mediapanel",];function switch_ui_mode(e){doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".background-color"]=e.buttonBgColor,t},{})),doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".text-color"]=e.buttonTextColor,t},{})),doWinset(SKIN_ELEMENTS.reduce(function(t,s){return t[s+".background-color"]=e.windowBgColor,t},{})),doWinset("infowindow",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor}),doWinset("infowindow.info",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor,"highlight-color":e.highlightColor,"tab-text-color":e.tabTextColor,"tab-background-color":e.tabBackgroundColor})}function doWinset(e,t){void 0===t&&(t=e,e=null);var s="byond://winset?";e&&(s+="id="+e+"&"),s+=Object.keys(t).map(function(e){return e+"="+encodeURIComponent(t[e])}).join("&"),window.location=s}
+!function(){var e=console.log;console.log=function(t){send_debug(t),e.apply(console,arguments)};var t=console.error;console.error=function(e){send_debug(e),t.apply(console,arguments)},window.onerror=function(e,t,s,a,n){var o="";return n&&n.stack&&(o=n.stack),send_debug(e+" ("+t+"@"+s+":"+a+") "+n+"|UA: "+navigator.userAgent+"|Stack: "+o),!0}}();var vueapp,vchat_opts={msBeforeDropped:3e4,cookiePrefix:"vst-",alwaysShow:["vc_looc","vc_system"],vchatTabsVer:1},DARKMODE_COLORS={buttonBgColor:"#40628a",buttonTextColor:"#FFFFFF",windowBgColor:"#272727",highlightColor:"#009900",tabTextColor:"#FFFFFF",tabBackgroundColor:"#272727"},LIGHTMODE_COLORS={buttonBgColor:"none",buttonTextColor:"#000000",windowBgColor:"none",highlightColor:"#007700",tabTextColor:"#000000",tabBackgroundColor:"none"},set_storage=set_cookie,get_storage=get_cookie,domparser=new DOMParser;storageAvailable("localStorage")&&(set_storage=set_localstorage,get_storage=get_localstorage);var vchat_state={ready:!1,byond_ip:null,byond_cid:null,byond_ckey:null,lastPingReceived:0,latency_sent:0,lastId:0};function start_vchat(){start_vue(),vchat_state.ready=!0,push_Topic("done_loading"),push_Topic_showingnum(this.showingnum),doWinset("htmloutput",{"is-visible":!0}),doWinset("oldoutput",{"is-visible":!1}),doWinset("chatloadlabel",{"is-visible":!1}),setInterval(check_ping,vchat_opts.msBeforeDropped),send_debug("VChat Loaded!")}function start_vue(){vueapp=new Vue({el:"#app",data:{messages:[],shown_messages:[],unshown_messages:0,archived_messages:[],tabs:[{name:"Main",categories:[],immutable:!0,active:!0}],unread_messages:{},editing:!1,paused:!1,latency:0,reconnecting:!1,ext_styles:"",is_admin:!1,inverted:!1,crushing:3,animated:!1,fontsize:.9,lineheight:130,showingnum:200,type_table:[{matches:".filter_say, .say, .emote, .emote_subtle",becomes:"vc_localchat",pretty:"Local Chat",tooltip:"In-character local messages (say, emote, etc)",required:!1,admin:!1},{matches:".filter_radio, .alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster",becomes:"vc_radio",pretty:"Radio Comms",tooltip:"All departments of radio messages",required:!1,admin:!1},{matches:".filter_notice, .notice:not(.pm), .adminnotice, .info, .sinister, .cult",becomes:"vc_info",pretty:"Notices",tooltip:"Non-urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_warning, .warning:not(.pm), .critical, .userdanger, .italics",becomes:"vc_warnings",pretty:"Warnings",tooltip:"Urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_deadsay, .deadsay",becomes:"vc_deadchat",pretty:"Deadchat",tooltip:"All of deadchat",required:!1,admin:!1},{matches:".filter_pray",becomes:"vc_pray",pretty:"Pray",tooltip:"Prayer messages",required:!1,admin:!1},{matches:".ooc, .filter_ooc",becomes:"vc_globalooc",pretty:"Global OOC",tooltip:"The bluewall of global OOC messages",required:!1,admin:!1},{matches:".nif",becomes:"vc_nif",pretty:"NIF Messages",tooltip:"Messages from the NIF itself and people inside",required:!1,admin:!1},{matches:".psay, .pemote",becomes:"vc_pmessage",pretty:"Pred/Prey Messages",tooltip:"Messages from / to absorbed or dominated prey",required:!1,admin:!1},{matches:".mentor_channel, .mentor",becomes:"vc_mentor",pretty:"Mentor messages",tooltip:"Mentorchat and mentor pms",required:!1,admin:!1},{matches:".filter_pm, .pm",becomes:"vc_adminpm",pretty:"Admin PMs",tooltip:"Messages to/from admins ('adminhelps')",required:!1,admin:!1},{matches:".filter_ASAY, .admin_channel",becomes:"vc_adminchat",pretty:"Admin Chat",tooltip:"ASAY messages",required:!1,admin:!0},{matches:".filter_MSAY, .mod_channel",becomes:"vc_modchat",pretty:"Mod Chat",tooltip:"MSAY messages",required:!1,admin:!0},{matches:".filter_ESAY, .event_channel",becomes:"vc_eventchat",pretty:"Event Chat",tooltip:"ESAY messages",required:!1,admin:!0},{matches:".filter_combat, .danger",becomes:"vc_combat",pretty:"Combat Logs",tooltip:"Urist McTraitor has stabbed you with a knife!",required:!1,admin:!1},{matches:".filter_adminlogs, .log_message",becomes:"vc_adminlogs",pretty:"Admin Logs",tooltip:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",required:!1,admin:!0},{matches:".filter_attacklogs",becomes:"vc_attacklogs",pretty:"Attack Logs",tooltip:"Urist McTraitor has shot John Doe",required:!1,admin:!0},{matches:".filter_debuglogs",becomes:"vc_debuglogs",pretty:"Debug Logs",tooltip:"DEBUG: SSPlanets subsystem Recover().",required:!1,admin:!0},{matches:".looc",becomes:"vc_looc",pretty:"Local OOC",tooltip:"Local OOC messages, always enabled",required:!0},{matches:".rlooc",becomes:"vc_rlooc",pretty:"Remote LOOC",tooltip:"Remote LOOC messages",required:!1,admin:!0},{matches:".boldannounce, .filter_system",becomes:"vc_system",pretty:"System Messages",tooltip:"Messages from your client, always enabled",required:!0},{matches:".unsorted",becomes:"vc_unsorted",pretty:"Unsorted",tooltip:"Messages that don't have any filters.",required:!1,admin:!1}]},mounted:function(){this.load_settings();var e=new XMLHttpRequest;e.open("GET","ss13styles.css"),e.onreadystatechange=(function(){this.ext_styles=e.responseText}).bind(this),e.send()},updated:function(){this.editing||this.paused||window.scrollTo(0,document.getElementById("messagebox").scrollHeight)},watch:{reconnecting:function(e,t){!0==e&&!1==t?this.internal_message("Your client has lost connection to the server, or there is severe lag. Your client will reconnect if possible."):!1==e&&!0==t&&this.internal_message("Your client has reconnected to the server.")},inverted:function(e){set_storage("darkmode",e),e?(document.body.classList.add("inverted"),switch_ui_mode(DARKMODE_COLORS)):(document.body.classList.remove("inverted"),switch_ui_mode(LIGHTMODE_COLORS))},crushing:function(e){set_storage("crushing",e)},animated:function(e){set_storage("animated",e)},fontsize:function(e,t){if(isNaN(e)){this.fontsize=t;return}e<.2?this.fontsize=.2:e>5&&(this.fontsize=5),set_storage("fontsize",e)},lineheight:function(e,t){if(!isFinite(e)){this.lineheight=t;return}e<100?this.lineheight=100:e>200&&(this.lineheight=200),set_storage("lineheight",e)},showingnum:function(e,t){if(!isFinite(e)){this.showingnum=t;return}(e=Math.floor(e))<50?this.showingnum=50:e>2e3&&(this.showingnum=2e3),set_storage("showingnum",this.showingnum),push_Topic_showingnum(this.showingnum),this.attempt_archive()},current_categories:function(e,t){e.length&&this.apply_filter(e)}},computed:{active_tab:function(){return this.tabs.find(function(e){return e.active})},ping_classes:function(){return this.latency?"?"==this.latency?"grey":this.latency<0?"red":this.latency<=200?"green":this.latency<=400?"yellow":"grey":this.reconnecting?"red":"green"},current_categories:function(){return this.active_tab==this.tabs[0]?[]:this.active_tab.categories.concat(vchat_opts.alwaysShow)}},methods:{load_settings:function(){this.inverted=get_storage("darkmode",!1),this.crushing=get_storage("crushing",3),this.animated=get_storage("animated",!1),this.fontsize=get_storage("fontsize",.9),this.lineheight=get_storage("lineheight",130),this.showingnum=get_storage("showingnum",200),isNaN(this.crushing)&&(this.crushing=3),isNaN(this.fontsize)&&(this.fontsize=.9),this.load_tabs()},load_tabs:function(){var e=get_storage("tabs");if(e){var t=JSON.parse(e);if(!t.version||!t.tabs){this.internal_message("There was a problem loading your tabs. Any new ones you make will be saved, however.");return}if(!t.version==vchat_opts.vchatTabsVer){this.internal_message("Your saved tabs are for an older version of VChat and must be recreated, sorry.");return}this.tabs.push.apply(this.tabs,t.tabs)}},save_tabs:function(){var e={version:vchat_opts.vchatTabsVer,tabs:[]};this.tabs.forEach(function(t){if(!t.immutable){var s=t.name,a=[];t.categories.forEach(function(e){a.push(e)}),e.tabs.push({name:s,categories:a,immutable:!1,active:!1})}}),set_storage("tabs",JSON.stringify(e))},switchtab:function(e){e!=this.active_tab&&(this.active_tab.active=!1,e.active=!0,e.categories.forEach(function(e){this.unread_messages[e]=0},this),this.apply_filter(this.current_categories))},editmode:function(){this.editing=!this.editing,this.save_tabs()},pause:function(){this.paused=!this.paused},newtab:function(){this.tabs.push({name:"New Tab",categories:[],immutable:!1,active:!1}),this.switchtab(this.tabs[this.tabs.length-1])},renametab:function(){if(!this.active_tab.immutable){var e=this.active_tab,t=window.prompt("Type the desired tab name:",e.name);null!==t&&""!==t&&null!==e&&(e.name=t)}},deltab:function(e){e||(e=this.active_tab),!e.immutable&&(this.switchtab(this.tabs[0]),this.tabs.splice(this.tabs.indexOf(e),1))},movetab:function(e,t){if(e&&!e.immutable){var s=this.tabs.indexOf(e);this.tabs.splice(s+t,0,this.tabs.splice(s,1)[0])}},tab_unread_count:function(e){var t=0,s=this.unread_messages;return e.categories.find(function(e){s[e]&&(t+=s[e])}),t},tab_unread_categories:function(e){var t=!1,s=this.unread_messages;return e.categories.find(function(e){if(s[e])return t=!0,!0}),{red:t,grey:!t}},attempt_archive:function(){if(this.messages.length>this.showingnum){var e=this.messages.splice(0,20);Array.prototype.push.apply(this.archived_messages,e)}},apply_filter:function(e){this.shown_messages.splice(0),this.unshown_messages=0,this.messages.forEach(function(t){e.indexOf(t.category)>-1&&this.shown_messages.push(t)},this),this.archived_messages.forEach(function(t){e.indexOf(t.category)>-1&&this.unshown_messages++},this)},add_message:function(e){let t={time:e.time,category:"error",content:e.message,repeats:1};if(t.category=this.get_category(t.content),"vc_unsorted"==t.category&&(t.content=""+t.content+""),this.crushing){let s=this.messages.slice(-this.crushing);for(let a=s.length-1;a>=0;a--){let n=s[a];n.content==t.content&&(t.repeats+=n.repeats,this.messages.splice(this.messages.indexOf(n),1))}}t.content=t.content.replace(/(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/img,'$1'),this.current_categories.length&&0>this.current_categories.indexOf(t.category)?(isNaN(this.unread_messages[t.category])&&(this.unread_messages[t.category]=0),this.unread_messages[t.category]+=1):this.current_categories.length&&this.shown_messages.push(t),t.id=++vchat_state.lastId,this.attempt_archive(),this.messages.push(t)},internal_message:function(e){let t={time:this.messages.length?this.messages.slice(-1).time+1:0,category:"vc_system",content:"[VChat Internal] "+e+""};t.id=++vchat_state.lastId,this.messages.push(t)},on_mouseup:function(e){let t=e.target;"getSelection"in window&&!1===window.getSelection().isCollapsed||t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName)||(focusMapWindow(),e.preventDefault(),e.target.click())},click_message:function(e){let t=e.target;if("A"===t.tagName){e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1;var s=t.getAttribute("href");"?"==s[0]||s.length>=8&&"byond://"==s.substring(0,8)?window.location=s:window.location="byond://?action=openLink&link="+encodeURIComponent(s)}},get_category:function(e){if(!vchat_state.ready){push_Topic("not_ready");return}let t=domparser.parseFromString(e,"text/html").querySelector("span"),s="vc_unsorted";return t&&this.type_table.find(function(e){if(t.msMatchesSelector(e.matches))return s=e.becomes,!0}),s},save_chatlog:function(){var e="",t=this.archived_messages.concat(this.messages),s=this.current_categories;t.forEach(function(t){(0==s.length||s.indexOf(t.category)>=0)&&(e+=t.content,t.repeats>1&&(e+="(x"+t.repeats+")"),e+="
\n")}),e+="";var a=new Date,n=String(a.getHours());n.length<2&&(n="0"+n);var o=String(a.getMinutes());o.length<2&&(o="0"+o);var i=String(a.getDate());i.length<2&&(i="0"+i);var r=String(a.getMonth()+1);r.length<2&&(r="0"+r);var c="log"+(" "+String(a.getFullYear())+"-"+r+"-"+i+" ("+n+" "+o)+").html",l=document.createElement("a");if(void 0!==l.download)l.href="data:attachment/text,"+encodeURI(e),l.target="_blank",l.download=c,l.click();else{var h=new Blob([e],{type:"text/html;charset=utf8;"});saved=window.navigator.msSaveOrOpenBlob(h,c)}},do_latency_test:function(){send_latency_check()},blur_this:function(e){e.target.blur()}}})}function check_ping(){Date.now()-vchat_state.lastPingReceived>vchat_opts.msBeforeDropped&&(vueapp.reconnecting=!0)}function send_latency_check(){vchat_state.latency_sent||(vchat_state.latency_sent=Date.now(),vueapp.latency="?",push_Topic("ping"),setTimeout(function(){"?"==vchat_state.latency_ms&&(vchat_state.latency_ms=999)},1e3),setTimeout(function(){vchat_state.latency_sent=0,vueapp.latency=0},5e3))}function get_latency_check(){vchat_state.latency_sent&&(vueapp.latency=Date.now()-vchat_state.latency_sent)}function byondDecode(e){e=e.replace(/\+/g,"%20");try{e=decodeURIComponent(e)}catch(t){e=unescape(e)}return JSON.parse(e)}function putmessage(e){Array.isArray(e=byondDecode(e))?e.forEach(function(e){vueapp.add_message(e)}):"object"==typeof e&&vueapp.add_message(e)}function system_message(e){vueapp.internal_message(e)}function push_Topic(e){window.location="?_src_=chat&proc="+e}function push_Topic_showingnum(e){window.location="?_src_=chat&showingnum="+e}function focusMapWindow(){window.location="byond://winset?mapwindow.map.focus=true"}function send_debug(e){push_Topic("debug¶m[message]="+encodeURIComponent(e))}function get_event(e){if(!vchat_state.ready){push_Topic("not_ready");return}var t={evttype:"internal_error",event:e};switch((t=byondDecode(e)).evttype){case"internal_error":system_message("Event parse error: "+e);break;case"byond_player":send_client_data(),vueapp.is_admin="true"===t.admin,vchat_state.byond_ip=t.address,vchat_state.byond_cid=t.cid,vchat_state.byond_ckey=t.ckey,set_storage("ip",vchat_state.byond_ip),set_storage("cid",vchat_state.byond_cid),set_storage("ckey",vchat_state.byond_ckey);break;case"keepalive":vchat_state.lastPingReceived=Date.now(),vueapp.reconnecting=!1;break;case"pong":get_latency_check();break;case"availability":push_Topic("done_loading");break;default:system_message("Didn't know what to do with event: "+e)}}function send_client_data(){push_Topic("ident¶m[clientdata]="+JSON.stringify({ip:get_storage("ip"),cid:get_storage("cid"),ckey:get_storage("ckey")}))}function set_localstorage(e,t){window.localStorage.setItem(vchat_opts.cookiePrefix+e,t)}function get_localstorage(e,t){let s=window.localStorage.getItem(vchat_opts.cookiePrefix+e);return"null"===s||null===s?s=t:"true"===s?s=!0:"false"===s?s=!1:isNaN(s)||(s=+s),s}function set_cookie(e,t){let s=new Date;s.setFullYear(s.getFullYear()+1);let a=s.toUTCString();document.cookie=vchat_opts.cookiePrefix+e+"="+t+";expires="+a+";path=/"}function get_cookie(e,t){var s={cookie:null,localstorage:null,indexeddb:null};let a=document.cookie.split(";"),n={};a.forEach(function(e){let s=e.replace(vchat_opts.cookiePrefix,"").trim(),a=s.search("="),o=decodeURIComponent(s.substring(0,a)),i=decodeURIComponent(s.substring(a+1));"null"==i||null===i?i=t:"true"===i?i=!0:"false"===i?i=!1:isNaN(i)||(i=+i),n[o]=i}),s.cookie=n[e]}var SKIN_BUTTONS=["rpane.textb","rpane.infob","rpane.wikib","rpane.forumb","rpane.rulesb","rpane.github","rpane.discord","rpane.mapb","rpane.changelog","mainwindow.saybutton","mainwindow.mebutton","mainwindow.hotkey_toggle"],SKIN_ELEMENTS=["mainwindow","mainwindow.mainvsplit","mainwindow.tooltip","rpane","rpane.rpanewindow","rpane.mediapanel",];function switch_ui_mode(e){doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".background-color"]=e.buttonBgColor,t},{})),doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".text-color"]=e.buttonTextColor,t},{})),doWinset(SKIN_ELEMENTS.reduce(function(t,s){return t[s+".background-color"]=e.windowBgColor,t},{})),doWinset("infowindow",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor}),doWinset("infowindow.info",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor,"highlight-color":e.highlightColor,"tab-text-color":e.tabTextColor,"tab-background-color":e.tabBackgroundColor})}function doWinset(e,t){void 0===t&&(t=e,e=null);var s="byond://winset?";e&&(s+="id="+e+"&"),s+=Object.keys(t).map(function(e){return e+"="+encodeURIComponent(t[e])}).join("&"),window.location=s}
From 641857a4a9f4e31d850463f864d3aac2b0e480dc Mon Sep 17 00:00:00 2001
From: VerySoft
Date: Wed, 11 Oct 2023 11:46:21 -0400
Subject: [PATCH 02/37] They're out there man, I seen em'
Updates alien whitelist
https://forum.vore-station.net/viewtopic.php?f=46&t=2375
---
config/alienwhitelist.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index a0b79c59d0a..9b8874f682e 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -40,6 +40,7 @@ digi5 - Black-Eyed Shadekin
digitalsquirrel95 - Black-Eyed Shadekin
digitalsquirrel95 - Protean
draycu - Vox
+durandal - Teppi
essbie - Black-Eyed Shadekin
exgame - Vox
falloutdog3 - Black-Eyed Shadekin
From 268c10a053c7bfb84828651d18c277871335f57c Mon Sep 17 00:00:00 2001
From: Casey
Date: Wed, 11 Oct 2023 12:37:41 -0400
Subject: [PATCH 03/37] Update config/alienwhitelist.txt
Co-authored-by: Selis
---
config/alienwhitelist.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index 9b8874f682e..6469beb2fcb 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -40,7 +40,7 @@ digi5 - Black-Eyed Shadekin
digitalsquirrel95 - Black-Eyed Shadekin
digitalsquirrel95 - Protean
draycu - Vox
-durandal - Teppi
+durandaal - Teppi
essbie - Black-Eyed Shadekin
exgame - Vox
falloutdog3 - Black-Eyed Shadekin
From d10d0d795372d4cda22fe5a240b0275bf7f6514c Mon Sep 17 00:00:00 2001
From: Kashargul <144968721+Kashargul@users.noreply.github.com>
Date: Thu, 12 Oct 2023 00:27:21 +0200
Subject: [PATCH 04/37] Fixes timestamp sorting incompatibility.
-> Timestamps have been simple added as prefix in front of the entire message, having the classifying behind it what prevented message filtering. So instead of adding it in front, we are inserting it with a regex replace after the first
-> Underlining breaks fromatting. This issue happens as _ is used as a character in labels. It never should be used in labels as it's a marking character being parsed. Using it in a label causes the label to partially be parsed and therefore the message breaks. I've removed the underline in "emote_sublte" to at least have that working again. But likely all labels should be reworked to no longer use underlines.
-> Known issue: Absorb messages are not having timestamps. The way absorb messages are implemented prevents the current "client.prefs.chat_timestamp" from being used as it would rely to the speaking client to have it enabled. I haven't looked enough into to code, but if there's a way, it might be best to move the entire timestapmping to the code/modules/vchat/vchat_client.dm using a regex to insert them behing the classifying span.
---
code/modules/mob/mob.dm | 3 ++-
code/modules/mob/say_vr.dm | 2 +-
code/modules/vchat/js/vchat.js | 2 +-
code/modules/vchat/js/vchat.min.js | 2 +-
4 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index cb47c7f67fa..c4defb7d163 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -70,7 +70,8 @@
to_chat(src, "... You can almost hear someone talking ...")
else
if(client.prefs.chat_timestamp)
- to_chat(src,"[time] [msg]")
+ msg = replacetext(msg, new/regex("^(]*)?>)(.*)", ""), "$1[time] $2")
+ to_chat(src,msg)
else if(teleop)
to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[msg]")
else
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index ab6cf7a7082..efbd0c308ed 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -82,7 +82,7 @@
if(input)
log_subtle(message,src)
- message = "[src] [input]"
+ message = "[src] [input]"
if(!(subtle_mode == "Adjacent Turfs (Default)"))
message = "(T) " + message
else
diff --git a/code/modules/vchat/js/vchat.js b/code/modules/vchat/js/vchat.js
index 9c01be96036..9b9f9b6dbae 100644
--- a/code/modules/vchat/js/vchat.js
+++ b/code/modules/vchat/js/vchat.js
@@ -145,7 +145,7 @@ function start_vue() {
//The table to map game css classes to our vchat categories
type_table: [
{
- matches: ".filter_say, .say, .emote, .emote_subtle", //VOREStation Edit
+ matches: ".filter_say, .say, .emote, .emotesubtle", //VOREStation Edit
becomes: "vc_localchat",
pretty: "Local Chat",
tooltip: "In-character local messages (say, emote, etc)",
diff --git a/code/modules/vchat/js/vchat.min.js b/code/modules/vchat/js/vchat.min.js
index 6b3d979f8b3..4a220ec8208 100644
--- a/code/modules/vchat/js/vchat.min.js
+++ b/code/modules/vchat/js/vchat.min.js
@@ -1 +1 @@
-!function(){var e=console.log;console.log=function(t){send_debug(t),e.apply(console,arguments)};var t=console.error;console.error=function(e){send_debug(e),t.apply(console,arguments)},window.onerror=function(e,t,s,a,n){var o="";return n&&n.stack&&(o=n.stack),send_debug(e+" ("+t+"@"+s+":"+a+") "+n+"|UA: "+navigator.userAgent+"|Stack: "+o),!0}}();var vueapp,vchat_opts={msBeforeDropped:3e4,cookiePrefix:"vst-",alwaysShow:["vc_looc","vc_system"],vchatTabsVer:1},DARKMODE_COLORS={buttonBgColor:"#40628a",buttonTextColor:"#FFFFFF",windowBgColor:"#272727",highlightColor:"#009900",tabTextColor:"#FFFFFF",tabBackgroundColor:"#272727"},LIGHTMODE_COLORS={buttonBgColor:"none",buttonTextColor:"#000000",windowBgColor:"none",highlightColor:"#007700",tabTextColor:"#000000",tabBackgroundColor:"none"},set_storage=set_cookie,get_storage=get_cookie,domparser=new DOMParser;storageAvailable("localStorage")&&(set_storage=set_localstorage,get_storage=get_localstorage);var vchat_state={ready:!1,byond_ip:null,byond_cid:null,byond_ckey:null,lastPingReceived:0,latency_sent:0,lastId:0};function start_vchat(){start_vue(),vchat_state.ready=!0,push_Topic("done_loading"),push_Topic_showingnum(this.showingnum),doWinset("htmloutput",{"is-visible":!0}),doWinset("oldoutput",{"is-visible":!1}),doWinset("chatloadlabel",{"is-visible":!1}),setInterval(check_ping,vchat_opts.msBeforeDropped),send_debug("VChat Loaded!")}function start_vue(){vueapp=new Vue({el:"#app",data:{messages:[],shown_messages:[],unshown_messages:0,archived_messages:[],tabs:[{name:"Main",categories:[],immutable:!0,active:!0}],unread_messages:{},editing:!1,paused:!1,latency:0,reconnecting:!1,ext_styles:"",is_admin:!1,inverted:!1,crushing:3,animated:!1,fontsize:.9,lineheight:130,showingnum:200,type_table:[{matches:".filter_say, .say, .emote, .emote_subtle",becomes:"vc_localchat",pretty:"Local Chat",tooltip:"In-character local messages (say, emote, etc)",required:!1,admin:!1},{matches:".filter_radio, .alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster",becomes:"vc_radio",pretty:"Radio Comms",tooltip:"All departments of radio messages",required:!1,admin:!1},{matches:".filter_notice, .notice:not(.pm), .adminnotice, .info, .sinister, .cult",becomes:"vc_info",pretty:"Notices",tooltip:"Non-urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_warning, .warning:not(.pm), .critical, .userdanger, .italics",becomes:"vc_warnings",pretty:"Warnings",tooltip:"Urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_deadsay, .deadsay",becomes:"vc_deadchat",pretty:"Deadchat",tooltip:"All of deadchat",required:!1,admin:!1},{matches:".filter_pray",becomes:"vc_pray",pretty:"Pray",tooltip:"Prayer messages",required:!1,admin:!1},{matches:".ooc, .filter_ooc",becomes:"vc_globalooc",pretty:"Global OOC",tooltip:"The bluewall of global OOC messages",required:!1,admin:!1},{matches:".nif",becomes:"vc_nif",pretty:"NIF Messages",tooltip:"Messages from the NIF itself and people inside",required:!1,admin:!1},{matches:".psay, .pemote",becomes:"vc_pmessage",pretty:"Pred/Prey Messages",tooltip:"Messages from / to absorbed or dominated prey",required:!1,admin:!1},{matches:".mentor_channel, .mentor",becomes:"vc_mentor",pretty:"Mentor messages",tooltip:"Mentorchat and mentor pms",required:!1,admin:!1},{matches:".filter_pm, .pm",becomes:"vc_adminpm",pretty:"Admin PMs",tooltip:"Messages to/from admins ('adminhelps')",required:!1,admin:!1},{matches:".filter_ASAY, .admin_channel",becomes:"vc_adminchat",pretty:"Admin Chat",tooltip:"ASAY messages",required:!1,admin:!0},{matches:".filter_MSAY, .mod_channel",becomes:"vc_modchat",pretty:"Mod Chat",tooltip:"MSAY messages",required:!1,admin:!0},{matches:".filter_ESAY, .event_channel",becomes:"vc_eventchat",pretty:"Event Chat",tooltip:"ESAY messages",required:!1,admin:!0},{matches:".filter_combat, .danger",becomes:"vc_combat",pretty:"Combat Logs",tooltip:"Urist McTraitor has stabbed you with a knife!",required:!1,admin:!1},{matches:".filter_adminlogs, .log_message",becomes:"vc_adminlogs",pretty:"Admin Logs",tooltip:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",required:!1,admin:!0},{matches:".filter_attacklogs",becomes:"vc_attacklogs",pretty:"Attack Logs",tooltip:"Urist McTraitor has shot John Doe",required:!1,admin:!0},{matches:".filter_debuglogs",becomes:"vc_debuglogs",pretty:"Debug Logs",tooltip:"DEBUG: SSPlanets subsystem Recover().",required:!1,admin:!0},{matches:".looc",becomes:"vc_looc",pretty:"Local OOC",tooltip:"Local OOC messages, always enabled",required:!0},{matches:".rlooc",becomes:"vc_rlooc",pretty:"Remote LOOC",tooltip:"Remote LOOC messages",required:!1,admin:!0},{matches:".boldannounce, .filter_system",becomes:"vc_system",pretty:"System Messages",tooltip:"Messages from your client, always enabled",required:!0},{matches:".unsorted",becomes:"vc_unsorted",pretty:"Unsorted",tooltip:"Messages that don't have any filters.",required:!1,admin:!1}]},mounted:function(){this.load_settings();var e=new XMLHttpRequest;e.open("GET","ss13styles.css"),e.onreadystatechange=(function(){this.ext_styles=e.responseText}).bind(this),e.send()},updated:function(){this.editing||this.paused||window.scrollTo(0,document.getElementById("messagebox").scrollHeight)},watch:{reconnecting:function(e,t){!0==e&&!1==t?this.internal_message("Your client has lost connection to the server, or there is severe lag. Your client will reconnect if possible."):!1==e&&!0==t&&this.internal_message("Your client has reconnected to the server.")},inverted:function(e){set_storage("darkmode",e),e?(document.body.classList.add("inverted"),switch_ui_mode(DARKMODE_COLORS)):(document.body.classList.remove("inverted"),switch_ui_mode(LIGHTMODE_COLORS))},crushing:function(e){set_storage("crushing",e)},animated:function(e){set_storage("animated",e)},fontsize:function(e,t){if(isNaN(e)){this.fontsize=t;return}e<.2?this.fontsize=.2:e>5&&(this.fontsize=5),set_storage("fontsize",e)},lineheight:function(e,t){if(!isFinite(e)){this.lineheight=t;return}e<100?this.lineheight=100:e>200&&(this.lineheight=200),set_storage("lineheight",e)},showingnum:function(e,t){if(!isFinite(e)){this.showingnum=t;return}(e=Math.floor(e))<50?this.showingnum=50:e>2e3&&(this.showingnum=2e3),set_storage("showingnum",this.showingnum),push_Topic_showingnum(this.showingnum),this.attempt_archive()},current_categories:function(e,t){e.length&&this.apply_filter(e)}},computed:{active_tab:function(){return this.tabs.find(function(e){return e.active})},ping_classes:function(){return this.latency?"?"==this.latency?"grey":this.latency<0?"red":this.latency<=200?"green":this.latency<=400?"yellow":"grey":this.reconnecting?"red":"green"},current_categories:function(){return this.active_tab==this.tabs[0]?[]:this.active_tab.categories.concat(vchat_opts.alwaysShow)}},methods:{load_settings:function(){this.inverted=get_storage("darkmode",!1),this.crushing=get_storage("crushing",3),this.animated=get_storage("animated",!1),this.fontsize=get_storage("fontsize",.9),this.lineheight=get_storage("lineheight",130),this.showingnum=get_storage("showingnum",200),isNaN(this.crushing)&&(this.crushing=3),isNaN(this.fontsize)&&(this.fontsize=.9),this.load_tabs()},load_tabs:function(){var e=get_storage("tabs");if(e){var t=JSON.parse(e);if(!t.version||!t.tabs){this.internal_message("There was a problem loading your tabs. Any new ones you make will be saved, however.");return}if(!t.version==vchat_opts.vchatTabsVer){this.internal_message("Your saved tabs are for an older version of VChat and must be recreated, sorry.");return}this.tabs.push.apply(this.tabs,t.tabs)}},save_tabs:function(){var e={version:vchat_opts.vchatTabsVer,tabs:[]};this.tabs.forEach(function(t){if(!t.immutable){var s=t.name,a=[];t.categories.forEach(function(e){a.push(e)}),e.tabs.push({name:s,categories:a,immutable:!1,active:!1})}}),set_storage("tabs",JSON.stringify(e))},switchtab:function(e){e!=this.active_tab&&(this.active_tab.active=!1,e.active=!0,e.categories.forEach(function(e){this.unread_messages[e]=0},this),this.apply_filter(this.current_categories))},editmode:function(){this.editing=!this.editing,this.save_tabs()},pause:function(){this.paused=!this.paused},newtab:function(){this.tabs.push({name:"New Tab",categories:[],immutable:!1,active:!1}),this.switchtab(this.tabs[this.tabs.length-1])},renametab:function(){if(!this.active_tab.immutable){var e=this.active_tab,t=window.prompt("Type the desired tab name:",e.name);null!==t&&""!==t&&null!==e&&(e.name=t)}},deltab:function(e){e||(e=this.active_tab),!e.immutable&&(this.switchtab(this.tabs[0]),this.tabs.splice(this.tabs.indexOf(e),1))},movetab:function(e,t){if(e&&!e.immutable){var s=this.tabs.indexOf(e);this.tabs.splice(s+t,0,this.tabs.splice(s,1)[0])}},tab_unread_count:function(e){var t=0,s=this.unread_messages;return e.categories.find(function(e){s[e]&&(t+=s[e])}),t},tab_unread_categories:function(e){var t=!1,s=this.unread_messages;return e.categories.find(function(e){if(s[e])return t=!0,!0}),{red:t,grey:!t}},attempt_archive:function(){if(this.messages.length>this.showingnum){var e=this.messages.splice(0,20);Array.prototype.push.apply(this.archived_messages,e)}},apply_filter:function(e){this.shown_messages.splice(0),this.unshown_messages=0,this.messages.forEach(function(t){e.indexOf(t.category)>-1&&this.shown_messages.push(t)},this),this.archived_messages.forEach(function(t){e.indexOf(t.category)>-1&&this.unshown_messages++},this)},add_message:function(e){let t={time:e.time,category:"error",content:e.message,repeats:1};if(t.category=this.get_category(t.content),"vc_unsorted"==t.category&&(t.content=""+t.content+""),this.crushing){let s=this.messages.slice(-this.crushing);for(let a=s.length-1;a>=0;a--){let n=s[a];n.content==t.content&&(t.repeats+=n.repeats,this.messages.splice(this.messages.indexOf(n),1))}}t.content=t.content.replace(/(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/img,'$1'),this.current_categories.length&&0>this.current_categories.indexOf(t.category)?(isNaN(this.unread_messages[t.category])&&(this.unread_messages[t.category]=0),this.unread_messages[t.category]+=1):this.current_categories.length&&this.shown_messages.push(t),t.id=++vchat_state.lastId,this.attempt_archive(),this.messages.push(t)},internal_message:function(e){let t={time:this.messages.length?this.messages.slice(-1).time+1:0,category:"vc_system",content:"[VChat Internal] "+e+""};t.id=++vchat_state.lastId,this.messages.push(t)},on_mouseup:function(e){let t=e.target;"getSelection"in window&&!1===window.getSelection().isCollapsed||t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName)||(focusMapWindow(),e.preventDefault(),e.target.click())},click_message:function(e){let t=e.target;if("A"===t.tagName){e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1;var s=t.getAttribute("href");"?"==s[0]||s.length>=8&&"byond://"==s.substring(0,8)?window.location=s:window.location="byond://?action=openLink&link="+encodeURIComponent(s)}},get_category:function(e){if(!vchat_state.ready){push_Topic("not_ready");return}let t=domparser.parseFromString(e,"text/html").querySelector("span"),s="vc_unsorted";return t&&this.type_table.find(function(e){if(t.msMatchesSelector(e.matches))return s=e.becomes,!0}),s},save_chatlog:function(){var e="",t=this.archived_messages.concat(this.messages),s=this.current_categories;t.forEach(function(t){(0==s.length||s.indexOf(t.category)>=0)&&(e+=t.content,t.repeats>1&&(e+="(x"+t.repeats+")"),e+="
\n")}),e+="";var a=new Date,n=String(a.getHours());n.length<2&&(n="0"+n);var o=String(a.getMinutes());o.length<2&&(o="0"+o);var i=String(a.getDate());i.length<2&&(i="0"+i);var r=String(a.getMonth()+1);r.length<2&&(r="0"+r);var c="log"+(" "+String(a.getFullYear())+"-"+r+"-"+i+" ("+n+" "+o)+").html",l=document.createElement("a");if(void 0!==l.download)l.href="data:attachment/text,"+encodeURI(e),l.target="_blank",l.download=c,l.click();else{var h=new Blob([e],{type:"text/html;charset=utf8;"});saved=window.navigator.msSaveOrOpenBlob(h,c)}},do_latency_test:function(){send_latency_check()},blur_this:function(e){e.target.blur()}}})}function check_ping(){Date.now()-vchat_state.lastPingReceived>vchat_opts.msBeforeDropped&&(vueapp.reconnecting=!0)}function send_latency_check(){vchat_state.latency_sent||(vchat_state.latency_sent=Date.now(),vueapp.latency="?",push_Topic("ping"),setTimeout(function(){"?"==vchat_state.latency_ms&&(vchat_state.latency_ms=999)},1e3),setTimeout(function(){vchat_state.latency_sent=0,vueapp.latency=0},5e3))}function get_latency_check(){vchat_state.latency_sent&&(vueapp.latency=Date.now()-vchat_state.latency_sent)}function byondDecode(e){e=e.replace(/\+/g,"%20");try{e=decodeURIComponent(e)}catch(t){e=unescape(e)}return JSON.parse(e)}function putmessage(e){Array.isArray(e=byondDecode(e))?e.forEach(function(e){vueapp.add_message(e)}):"object"==typeof e&&vueapp.add_message(e)}function system_message(e){vueapp.internal_message(e)}function push_Topic(e){window.location="?_src_=chat&proc="+e}function push_Topic_showingnum(e){window.location="?_src_=chat&showingnum="+e}function focusMapWindow(){window.location="byond://winset?mapwindow.map.focus=true"}function send_debug(e){push_Topic("debug¶m[message]="+encodeURIComponent(e))}function get_event(e){if(!vchat_state.ready){push_Topic("not_ready");return}var t={evttype:"internal_error",event:e};switch((t=byondDecode(e)).evttype){case"internal_error":system_message("Event parse error: "+e);break;case"byond_player":send_client_data(),vueapp.is_admin="true"===t.admin,vchat_state.byond_ip=t.address,vchat_state.byond_cid=t.cid,vchat_state.byond_ckey=t.ckey,set_storage("ip",vchat_state.byond_ip),set_storage("cid",vchat_state.byond_cid),set_storage("ckey",vchat_state.byond_ckey);break;case"keepalive":vchat_state.lastPingReceived=Date.now(),vueapp.reconnecting=!1;break;case"pong":get_latency_check();break;case"availability":push_Topic("done_loading");break;default:system_message("Didn't know what to do with event: "+e)}}function send_client_data(){push_Topic("ident¶m[clientdata]="+JSON.stringify({ip:get_storage("ip"),cid:get_storage("cid"),ckey:get_storage("ckey")}))}function set_localstorage(e,t){window.localStorage.setItem(vchat_opts.cookiePrefix+e,t)}function get_localstorage(e,t){let s=window.localStorage.getItem(vchat_opts.cookiePrefix+e);return"null"===s||null===s?s=t:"true"===s?s=!0:"false"===s?s=!1:isNaN(s)||(s=+s),s}function set_cookie(e,t){let s=new Date;s.setFullYear(s.getFullYear()+1);let a=s.toUTCString();document.cookie=vchat_opts.cookiePrefix+e+"="+t+";expires="+a+";path=/"}function get_cookie(e,t){var s={cookie:null,localstorage:null,indexeddb:null};let a=document.cookie.split(";"),n={};a.forEach(function(e){let s=e.replace(vchat_opts.cookiePrefix,"").trim(),a=s.search("="),o=decodeURIComponent(s.substring(0,a)),i=decodeURIComponent(s.substring(a+1));"null"==i||null===i?i=t:"true"===i?i=!0:"false"===i?i=!1:isNaN(i)||(i=+i),n[o]=i}),s.cookie=n[e]}var SKIN_BUTTONS=["rpane.textb","rpane.infob","rpane.wikib","rpane.forumb","rpane.rulesb","rpane.github","rpane.discord","rpane.mapb","rpane.changelog","mainwindow.saybutton","mainwindow.mebutton","mainwindow.hotkey_toggle"],SKIN_ELEMENTS=["mainwindow","mainwindow.mainvsplit","mainwindow.tooltip","rpane","rpane.rpanewindow","rpane.mediapanel",];function switch_ui_mode(e){doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".background-color"]=e.buttonBgColor,t},{})),doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".text-color"]=e.buttonTextColor,t},{})),doWinset(SKIN_ELEMENTS.reduce(function(t,s){return t[s+".background-color"]=e.windowBgColor,t},{})),doWinset("infowindow",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor}),doWinset("infowindow.info",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor,"highlight-color":e.highlightColor,"tab-text-color":e.tabTextColor,"tab-background-color":e.tabBackgroundColor})}function doWinset(e,t){void 0===t&&(t=e,e=null);var s="byond://winset?";e&&(s+="id="+e+"&"),s+=Object.keys(t).map(function(e){return e+"="+encodeURIComponent(t[e])}).join("&"),window.location=s}
+!function(){var e=console.log;console.log=function(t){send_debug(t),e.apply(console,arguments)};var t=console.error;console.error=function(e){send_debug(e),t.apply(console,arguments)},window.onerror=function(e,t,s,a,n){var o="";return n&&n.stack&&(o=n.stack),send_debug(e+" ("+t+"@"+s+":"+a+") "+n+"|UA: "+navigator.userAgent+"|Stack: "+o),!0}}();var vueapp,vchat_opts={msBeforeDropped:3e4,cookiePrefix:"vst-",alwaysShow:["vc_looc","vc_system"],vchatTabsVer:1},DARKMODE_COLORS={buttonBgColor:"#40628a",buttonTextColor:"#FFFFFF",windowBgColor:"#272727",highlightColor:"#009900",tabTextColor:"#FFFFFF",tabBackgroundColor:"#272727"},LIGHTMODE_COLORS={buttonBgColor:"none",buttonTextColor:"#000000",windowBgColor:"none",highlightColor:"#007700",tabTextColor:"#000000",tabBackgroundColor:"none"},set_storage=set_cookie,get_storage=get_cookie,domparser=new DOMParser;storageAvailable("localStorage")&&(set_storage=set_localstorage,get_storage=get_localstorage);var vchat_state={ready:!1,byond_ip:null,byond_cid:null,byond_ckey:null,lastPingReceived:0,latency_sent:0,lastId:0};function start_vchat(){start_vue(),vchat_state.ready=!0,push_Topic("done_loading"),push_Topic_showingnum(this.showingnum),doWinset("htmloutput",{"is-visible":!0}),doWinset("oldoutput",{"is-visible":!1}),doWinset("chatloadlabel",{"is-visible":!1}),setInterval(check_ping,vchat_opts.msBeforeDropped),send_debug("VChat Loaded!")}function start_vue(){vueapp=new Vue({el:"#app",data:{messages:[],shown_messages:[],unshown_messages:0,archived_messages:[],tabs:[{name:"Main",categories:[],immutable:!0,active:!0}],unread_messages:{},editing:!1,paused:!1,latency:0,reconnecting:!1,ext_styles:"",is_admin:!1,inverted:!1,crushing:3,animated:!1,fontsize:.9,lineheight:130,showingnum:200,type_table:[{matches:".filter_say, .say, .emote, .emotesubtle",becomes:"vc_localchat",pretty:"Local Chat",tooltip:"In-character local messages (say, emote, etc)",required:!1,admin:!1},{matches:".filter_radio, .alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster",becomes:"vc_radio",pretty:"Radio Comms",tooltip:"All departments of radio messages",required:!1,admin:!1},{matches:".filter_notice, .notice:not(.pm), .adminnotice, .info, .sinister, .cult",becomes:"vc_info",pretty:"Notices",tooltip:"Non-urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_warning, .warning:not(.pm), .critical, .userdanger, .italics",becomes:"vc_warnings",pretty:"Warnings",tooltip:"Urgent messages from the game and items",required:!1,admin:!1},{matches:".filter_deadsay, .deadsay",becomes:"vc_deadchat",pretty:"Deadchat",tooltip:"All of deadchat",required:!1,admin:!1},{matches:".filter_pray",becomes:"vc_pray",pretty:"Pray",tooltip:"Prayer messages",required:!1,admin:!1},{matches:".ooc, .filter_ooc",becomes:"vc_globalooc",pretty:"Global OOC",tooltip:"The bluewall of global OOC messages",required:!1,admin:!1},{matches:".nif",becomes:"vc_nif",pretty:"NIF Messages",tooltip:"Messages from the NIF itself and people inside",required:!1,admin:!1},{matches:".psay, .pemote",becomes:"vc_pmessage",pretty:"Pred/Prey Messages",tooltip:"Messages from / to absorbed or dominated prey",required:!1,admin:!1},{matches:".mentor_channel, .mentor",becomes:"vc_mentor",pretty:"Mentor messages",tooltip:"Mentorchat and mentor pms",required:!1,admin:!1},{matches:".filter_pm, .pm",becomes:"vc_adminpm",pretty:"Admin PMs",tooltip:"Messages to/from admins ('adminhelps')",required:!1,admin:!1},{matches:".filter_ASAY, .admin_channel",becomes:"vc_adminchat",pretty:"Admin Chat",tooltip:"ASAY messages",required:!1,admin:!0},{matches:".filter_MSAY, .mod_channel",becomes:"vc_modchat",pretty:"Mod Chat",tooltip:"MSAY messages",required:!1,admin:!0},{matches:".filter_ESAY, .event_channel",becomes:"vc_eventchat",pretty:"Event Chat",tooltip:"ESAY messages",required:!1,admin:!0},{matches:".filter_combat, .danger",becomes:"vc_combat",pretty:"Combat Logs",tooltip:"Urist McTraitor has stabbed you with a knife!",required:!1,admin:!1},{matches:".filter_adminlogs, .log_message",becomes:"vc_adminlogs",pretty:"Admin Logs",tooltip:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",required:!1,admin:!0},{matches:".filter_attacklogs",becomes:"vc_attacklogs",pretty:"Attack Logs",tooltip:"Urist McTraitor has shot John Doe",required:!1,admin:!0},{matches:".filter_debuglogs",becomes:"vc_debuglogs",pretty:"Debug Logs",tooltip:"DEBUG: SSPlanets subsystem Recover().",required:!1,admin:!0},{matches:".looc",becomes:"vc_looc",pretty:"Local OOC",tooltip:"Local OOC messages, always enabled",required:!0},{matches:".rlooc",becomes:"vc_rlooc",pretty:"Remote LOOC",tooltip:"Remote LOOC messages",required:!1,admin:!0},{matches:".boldannounce, .filter_system",becomes:"vc_system",pretty:"System Messages",tooltip:"Messages from your client, always enabled",required:!0},{matches:".unsorted",becomes:"vc_unsorted",pretty:"Unsorted",tooltip:"Messages that don't have any filters.",required:!1,admin:!1}]},mounted:function(){this.load_settings();var e=new XMLHttpRequest;e.open("GET","ss13styles.css"),e.onreadystatechange=(function(){this.ext_styles=e.responseText}).bind(this),e.send()},updated:function(){this.editing||this.paused||window.scrollTo(0,document.getElementById("messagebox").scrollHeight)},watch:{reconnecting:function(e,t){!0==e&&!1==t?this.internal_message("Your client has lost connection to the server, or there is severe lag. Your client will reconnect if possible."):!1==e&&!0==t&&this.internal_message("Your client has reconnected to the server.")},inverted:function(e){set_storage("darkmode",e),e?(document.body.classList.add("inverted"),switch_ui_mode(DARKMODE_COLORS)):(document.body.classList.remove("inverted"),switch_ui_mode(LIGHTMODE_COLORS))},crushing:function(e){set_storage("crushing",e)},animated:function(e){set_storage("animated",e)},fontsize:function(e,t){if(isNaN(e)){this.fontsize=t;return}e<.2?this.fontsize=.2:e>5&&(this.fontsize=5),set_storage("fontsize",e)},lineheight:function(e,t){if(!isFinite(e)){this.lineheight=t;return}e<100?this.lineheight=100:e>200&&(this.lineheight=200),set_storage("lineheight",e)},showingnum:function(e,t){if(!isFinite(e)){this.showingnum=t;return}(e=Math.floor(e))<50?this.showingnum=50:e>2e3&&(this.showingnum=2e3),set_storage("showingnum",this.showingnum),push_Topic_showingnum(this.showingnum),this.attempt_archive()},current_categories:function(e,t){e.length&&this.apply_filter(e)}},computed:{active_tab:function(){return this.tabs.find(function(e){return e.active})},ping_classes:function(){return this.latency?"?"==this.latency?"grey":this.latency<0?"red":this.latency<=200?"green":this.latency<=400?"yellow":"grey":this.reconnecting?"red":"green"},current_categories:function(){return this.active_tab==this.tabs[0]?[]:this.active_tab.categories.concat(vchat_opts.alwaysShow)}},methods:{load_settings:function(){this.inverted=get_storage("darkmode",!1),this.crushing=get_storage("crushing",3),this.animated=get_storage("animated",!1),this.fontsize=get_storage("fontsize",.9),this.lineheight=get_storage("lineheight",130),this.showingnum=get_storage("showingnum",200),isNaN(this.crushing)&&(this.crushing=3),isNaN(this.fontsize)&&(this.fontsize=.9),this.load_tabs()},load_tabs:function(){var e=get_storage("tabs");if(e){var t=JSON.parse(e);if(!t.version||!t.tabs){this.internal_message("There was a problem loading your tabs. Any new ones you make will be saved, however.");return}if(!t.version==vchat_opts.vchatTabsVer){this.internal_message("Your saved tabs are for an older version of VChat and must be recreated, sorry.");return}this.tabs.push.apply(this.tabs,t.tabs)}},save_tabs:function(){var e={version:vchat_opts.vchatTabsVer,tabs:[]};this.tabs.forEach(function(t){if(!t.immutable){var s=t.name,a=[];t.categories.forEach(function(e){a.push(e)}),e.tabs.push({name:s,categories:a,immutable:!1,active:!1})}}),set_storage("tabs",JSON.stringify(e))},switchtab:function(e){e!=this.active_tab&&(this.active_tab.active=!1,e.active=!0,e.categories.forEach(function(e){this.unread_messages[e]=0},this),this.apply_filter(this.current_categories))},editmode:function(){this.editing=!this.editing,this.save_tabs()},pause:function(){this.paused=!this.paused},newtab:function(){this.tabs.push({name:"New Tab",categories:[],immutable:!1,active:!1}),this.switchtab(this.tabs[this.tabs.length-1])},renametab:function(){if(!this.active_tab.immutable){var e=this.active_tab,t=window.prompt("Type the desired tab name:",e.name);null!==t&&""!==t&&null!==e&&(e.name=t)}},deltab:function(e){e||(e=this.active_tab),!e.immutable&&(this.switchtab(this.tabs[0]),this.tabs.splice(this.tabs.indexOf(e),1))},movetab:function(e,t){if(e&&!e.immutable){var s=this.tabs.indexOf(e);this.tabs.splice(s+t,0,this.tabs.splice(s,1)[0])}},tab_unread_count:function(e){var t=0,s=this.unread_messages;return e.categories.find(function(e){s[e]&&(t+=s[e])}),t},tab_unread_categories:function(e){var t=!1,s=this.unread_messages;return e.categories.find(function(e){if(s[e])return t=!0,!0}),{red:t,grey:!t}},attempt_archive:function(){if(this.messages.length>this.showingnum){var e=this.messages.splice(0,20);Array.prototype.push.apply(this.archived_messages,e)}},apply_filter:function(e){this.shown_messages.splice(0),this.unshown_messages=0,this.messages.forEach(function(t){e.indexOf(t.category)>-1&&this.shown_messages.push(t)},this),this.archived_messages.forEach(function(t){e.indexOf(t.category)>-1&&this.unshown_messages++},this)},add_message:function(e){let t={time:e.time,category:"error",content:e.message,repeats:1};if(t.category=this.get_category(t.content),"vc_unsorted"==t.category&&(t.content=""+t.content+""),this.crushing){let s=this.messages.slice(-this.crushing);for(let a=s.length-1;a>=0;a--){let n=s[a];n.content==t.content&&(t.repeats+=n.repeats,this.messages.splice(this.messages.indexOf(n),1))}}t.content=t.content.replace(/(\b(https?):\/\/[\-A-Z0-9+&@#\/%?=~_|!:,.;]*[\-A-Z0-9+&@#\/%=~_|])/img,'$1'),this.current_categories.length&&0>this.current_categories.indexOf(t.category)?(isNaN(this.unread_messages[t.category])&&(this.unread_messages[t.category]=0),this.unread_messages[t.category]+=1):this.current_categories.length&&this.shown_messages.push(t),t.id=++vchat_state.lastId,this.attempt_archive(),this.messages.push(t)},internal_message:function(e){let t={time:this.messages.length?this.messages.slice(-1).time+1:0,category:"vc_system",content:"[VChat Internal] "+e+""};t.id=++vchat_state.lastId,this.messages.push(t)},on_mouseup:function(e){let t=e.target;"getSelection"in window&&!1===window.getSelection().isCollapsed||t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName)||(focusMapWindow(),e.preventDefault(),e.target.click())},click_message:function(e){let t=e.target;if("A"===t.tagName){e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1;var s=t.getAttribute("href");"?"==s[0]||s.length>=8&&"byond://"==s.substring(0,8)?window.location=s:window.location="byond://?action=openLink&link="+encodeURIComponent(s)}},get_category:function(e){if(!vchat_state.ready){push_Topic("not_ready");return}let t=domparser.parseFromString(e,"text/html").querySelector("span"),s="vc_unsorted";return t&&this.type_table.find(function(e){if(t.msMatchesSelector(e.matches))return s=e.becomes,!0}),s},save_chatlog:function(){var e="",t=this.archived_messages.concat(this.messages),s=this.current_categories;t.forEach(function(t){(0==s.length||s.indexOf(t.category)>=0)&&(e+=t.content,t.repeats>1&&(e+="(x"+t.repeats+")"),e+="
\n")}),e+="";var a=new Date,n=String(a.getHours());n.length<2&&(n="0"+n);var o=String(a.getMinutes());o.length<2&&(o="0"+o);var i=String(a.getDate());i.length<2&&(i="0"+i);var r=String(a.getMonth()+1);r.length<2&&(r="0"+r);var c="log"+(" "+String(a.getFullYear())+"-"+r+"-"+i+" ("+n+" "+o)+").html",l=document.createElement("a");if(void 0!==l.download)l.href="data:attachment/text,"+encodeURI(e),l.target="_blank",l.download=c,l.click();else{var h=new Blob([e],{type:"text/html;charset=utf8;"});saved=window.navigator.msSaveOrOpenBlob(h,c)}},do_latency_test:function(){send_latency_check()},blur_this:function(e){e.target.blur()}}})}function check_ping(){Date.now()-vchat_state.lastPingReceived>vchat_opts.msBeforeDropped&&(vueapp.reconnecting=!0)}function send_latency_check(){vchat_state.latency_sent||(vchat_state.latency_sent=Date.now(),vueapp.latency="?",push_Topic("ping"),setTimeout(function(){"?"==vchat_state.latency_ms&&(vchat_state.latency_ms=999)},1e3),setTimeout(function(){vchat_state.latency_sent=0,vueapp.latency=0},5e3))}function get_latency_check(){vchat_state.latency_sent&&(vueapp.latency=Date.now()-vchat_state.latency_sent)}function byondDecode(e){e=e.replace(/\+/g,"%20");try{e=decodeURIComponent(e)}catch(t){e=unescape(e)}return JSON.parse(e)}function putmessage(e){Array.isArray(e=byondDecode(e))?e.forEach(function(e){vueapp.add_message(e)}):"object"==typeof e&&vueapp.add_message(e)}function system_message(e){vueapp.internal_message(e)}function push_Topic(e){window.location="?_src_=chat&proc="+e}function push_Topic_showingnum(e){window.location="?_src_=chat&showingnum="+e}function focusMapWindow(){window.location="byond://winset?mapwindow.map.focus=true"}function send_debug(e){push_Topic("debug¶m[message]="+encodeURIComponent(e))}function get_event(e){if(!vchat_state.ready){push_Topic("not_ready");return}var t={evttype:"internal_error",event:e};switch((t=byondDecode(e)).evttype){case"internal_error":system_message("Event parse error: "+e);break;case"byond_player":send_client_data(),vueapp.is_admin="true"===t.admin,vchat_state.byond_ip=t.address,vchat_state.byond_cid=t.cid,vchat_state.byond_ckey=t.ckey,set_storage("ip",vchat_state.byond_ip),set_storage("cid",vchat_state.byond_cid),set_storage("ckey",vchat_state.byond_ckey);break;case"keepalive":vchat_state.lastPingReceived=Date.now(),vueapp.reconnecting=!1;break;case"pong":get_latency_check();break;case"availability":push_Topic("done_loading");break;default:system_message("Didn't know what to do with event: "+e)}}function send_client_data(){push_Topic("ident¶m[clientdata]="+JSON.stringify({ip:get_storage("ip"),cid:get_storage("cid"),ckey:get_storage("ckey")}))}function set_localstorage(e,t){window.localStorage.setItem(vchat_opts.cookiePrefix+e,t)}function get_localstorage(e,t){let s=window.localStorage.getItem(vchat_opts.cookiePrefix+e);return"null"===s||null===s?s=t:"true"===s?s=!0:"false"===s?s=!1:isNaN(s)||(s=+s),s}function set_cookie(e,t){let s=new Date;s.setFullYear(s.getFullYear()+1);let a=s.toUTCString();document.cookie=vchat_opts.cookiePrefix+e+"="+t+";expires="+a+";path=/"}function get_cookie(e,t){var s={cookie:null,localstorage:null,indexeddb:null};let a=document.cookie.split(";"),n={};a.forEach(function(e){let s=e.replace(vchat_opts.cookiePrefix,"").trim(),a=s.search("="),o=decodeURIComponent(s.substring(0,a)),i=decodeURIComponent(s.substring(a+1));"null"==i||null===i?i=t:"true"===i?i=!0:"false"===i?i=!1:isNaN(i)||(i=+i),n[o]=i}),s.cookie=n[e]}var SKIN_BUTTONS=["rpane.textb","rpane.infob","rpane.wikib","rpane.forumb","rpane.rulesb","rpane.github","rpane.discord","rpane.mapb","rpane.changelog","mainwindow.saybutton","mainwindow.mebutton","mainwindow.hotkey_toggle"],SKIN_ELEMENTS=["mainwindow","mainwindow.mainvsplit","mainwindow.tooltip","rpane","rpane.rpanewindow","rpane.mediapanel",];function switch_ui_mode(e){doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".background-color"]=e.buttonBgColor,t},{})),doWinset(SKIN_BUTTONS.reduce(function(t,s){return t[s+".text-color"]=e.buttonTextColor,t},{})),doWinset(SKIN_ELEMENTS.reduce(function(t,s){return t[s+".background-color"]=e.windowBgColor,t},{})),doWinset("infowindow",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor}),doWinset("infowindow.info",{"background-color":e.tabBackgroundColor,"text-color":e.tabTextColor,"highlight-color":e.highlightColor,"tab-text-color":e.tabTextColor,"tab-background-color":e.tabBackgroundColor})}function doWinset(e,t){void 0===t&&(t=e,e=null);var s="byond://winset?";e&&(s+="id="+e+"&"),s+=Object.keys(t).map(function(e){return e+"="+encodeURIComponent(t[e])}).join("&"),window.location=s}
From 79c1139ce036c0a9812243dd385aab697b3b6376 Mon Sep 17 00:00:00 2001
From: Kashargul <144968721+Kashargul@users.noreply.github.com>
Date: Thu, 12 Oct 2023 01:17:06 +0200
Subject: [PATCH 05/37] Update mob.dm
Hopefully makes CI happy. All parsed messages should be properly closed anyway.
---
code/modules/mob/mob.dm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c4defb7d163..c42dbeae2e7 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -70,7 +70,7 @@
to_chat(src, "... You can almost hear someone talking ...")
else
if(client.prefs.chat_timestamp)
- msg = replacetext(msg, new/regex("^(]*)?>)(.*)", ""), "$1[time] $2")
+ msg = replacetext(msg, new/regex("^(]*)?>)(.*)", ""), "$1[time] $2")
to_chat(src,msg)
else if(teleop)
to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[msg]")
From f623e11a46ee6a23233c3b01fd5a3819b65df3b6 Mon Sep 17 00:00:00 2001
From: Novacat
Date: Thu, 12 Oct 2023 11:27:02 -0400
Subject: [PATCH 06/37] Docking Code Changes
- Removes docking codes from HOP/SM office
- Makes sure Docking Codes are on the bridge (Stellar Delight already had them, so they just needed to be added on Tether's bridge)
---
maps/stellar_delight/stellar_delight2.dmm | 1 -
maps/stellar_delight/stellar_delight3.dmm | 1 -
maps/tether/tether-03-surface3.dmm | 3 +--
3 files changed, 1 insertion(+), 4 deletions(-)
diff --git a/maps/stellar_delight/stellar_delight2.dmm b/maps/stellar_delight/stellar_delight2.dmm
index f0cc76843f7..f9d20b291ce 100644
--- a/maps/stellar_delight/stellar_delight2.dmm
+++ b/maps/stellar_delight/stellar_delight2.dmm
@@ -5295,7 +5295,6 @@
/obj/structure/closet/secure_closet/captains,
/obj/item/clothing/glasses/omnihud/all,
/obj/item/weapon/disk/nuclear,
-/obj/item/weapon/paper/dockingcodes/sd,
/obj/item/device/retail_scanner/command,
/turf/simulated/floor/wood,
/area/crew_quarters/captain)
diff --git a/maps/stellar_delight/stellar_delight3.dmm b/maps/stellar_delight/stellar_delight3.dmm
index d3f16acdfd2..1654195a57e 100644
--- a/maps/stellar_delight/stellar_delight3.dmm
+++ b/maps/stellar_delight/stellar_delight3.dmm
@@ -2840,7 +2840,6 @@
},
/obj/structure/closet/secure_closet/hop,
/obj/item/clothing/glasses/omnihud,
-/obj/item/weapon/paper/dockingcodes/sd,
/obj/item/device/retail_scanner/command,
/obj/item/weapon/storage/box/PDAs,
/turf/simulated/floor/tiled,
diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm
index 1b86f810d53..b288e9854d2 100644
--- a/maps/tether/tether-03-surface3.dmm
+++ b/maps/tether/tether-03-surface3.dmm
@@ -28748,6 +28748,7 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
},
+/obj/item/weapon/paper/dockingcodes,
/turf/simulated/floor/tiled/dark,
/area/bridge)
"aYu" = (
@@ -29011,7 +29012,6 @@
/obj/item/device/flashlight/lamp/green{
pixel_x = -10
},
-/obj/item/weapon/paper/dockingcodes,
/turf/simulated/floor/carpet,
/area/crew_quarters/heads/hop)
"aZc" = (
@@ -29517,7 +29517,6 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
},
-/obj/item/weapon/paper/dockingcodes,
/turf/simulated/floor/wood,
/area/crew_quarters/captain)
"aZV" = (
From 9d3c6e9258d88c422d023bc8523418d4665be473 Mon Sep 17 00:00:00 2001
From: SatinIsle
Date: Fri, 13 Oct 2023 11:35:55 +0100
Subject: [PATCH 07/37] Vore Panel Health Check
Added a new option to humanoid mobs in vore belly contents: Health Check.
Using this on a mob in your belly returns a very simple readout of their health as a percentage. It also gives notice when they are weakened, paralysed, blinded or sleeping, so that the pred can know whether or not they'll be able to emote/hear emotes.
---
code/modules/vore/eating/vorepanel_vr.dm | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 43333fb339f..7b7f3bf47a4 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -726,6 +726,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
var/list/available_options = list("Examine", "Eject", "Move", "Transfer")
if(ishuman(target))
available_options += "Transform"
+ available_options += "Health Check"
if(isliving(target))
var/mob/living/datarget = target
if(datarget.client)
@@ -872,12 +873,27 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
b.absorb_living(ourtarget)
if("Cancel")
return
+ if("Health Check")
+ var/mob/living/carbon/human/H = target
+ var/target_health = round((H.health/H.getMaxHealth())*100)
+ to_chat(usr, "\The [target] is at [target_health]% health.")
+ if(H.weakened)
+ to_chat(usr, "\The [target] is currently weakened, this does not stop them from hearing emotes or emoting themselves.")
+ if(H.blinded && H.paralysis)
+ to_chat(usr, "\The [target] is currently blinded and paralysed, they will not be able to hear emotes or emote themselves.")
+ else if(H.blinded)
+ to_chat(usr, "\The [target] is currently blind, they will not be able to see emotes.")
+ else if(H.paralysis)
+ to_chat(usr, "\The [target] is currently paralysed, they will not be able to emote themselves.")
+ if(H.sleeping)
+ to_chat(usr, "\The [target] is currently sleeping, they will not be able to hear emotes or emote themselves.")
+ return
+
/datum/vore_look/proc/set_attr(mob/user, params)
if(!host.vore_selected)
tgui_alert_async(usr, "No belly selected to modify.")
return FALSE
-
var/attr = params["attribute"]
switch(attr)
if("b_name")
From db2e87d45f3a10c994f35690bd1045095c5836c2 Mon Sep 17 00:00:00 2001
From: SatinIsle
Date: Fri, 13 Oct 2023 13:54:09 +0100
Subject: [PATCH 08/37] Jaffa cakes
Added Jaffa Cakes. They can be either bought from Sol Snacks vendors in boxes of 12 or ordered from cargo for 10 boxes. They can be made in the oven, 6 at a time, with 1 orange, 10 cocoa and 15 cake batter.
---
code/datums/supplypacks/hospitality_vr.dm | 8 ++++++++
code/modules/economy/vending_machines.dm | 2 ++
code/modules/food/food/snacks_vr.dm | 23 ++++++++++++++++++++++
code/modules/food/recipes_oven.dm | 6 ++++++
icons/obj/food_vr.dmi | Bin 69254 -> 69654 bytes
5 files changed, 39 insertions(+)
diff --git a/code/datums/supplypacks/hospitality_vr.dm b/code/datums/supplypacks/hospitality_vr.dm
index be7fc11606a..acb2a68c226 100644
--- a/code/datums/supplypacks/hospitality_vr.dm
+++ b/code/datums/supplypacks/hospitality_vr.dm
@@ -88,3 +88,11 @@
cost = 50
containertype = /obj/structure/closet/crate/freezer
containername = "Chinese takeout crate"
+
+/datum/supply_pack/randomised/hospitality/jaffacake
+ num_contained = 10
+ contains = /obj/item/weapon/storage/box/jaffacake
+ name = "Desatti jaffa cake crate"
+ cost = 25
+ containertype = /obj/structure/closet/crate/freezer
+ containername = "Desatti jaffa cake crate"
diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm
index c3900b36e83..a03afca62e3 100644
--- a/code/modules/economy/vending_machines.dm
+++ b/code/modules/economy/vending_machines.dm
@@ -980,6 +980,7 @@
/obj/item/weapon/reagent_containers/food/snacks/oort = 8,
/obj/item/weapon/reagent_containers/food/snacks/sun_snax = 8,
/obj/item/weapon/reagent_containers/food/snacks/canned/appleberry = 6,
+ /obj/item/weapon/storage/box/jaffacake = 8,
/obj/item/weapon/storage/box/gum = 8,
/obj/item/weapon/storage/box/admints = 8
)
@@ -993,6 +994,7 @@
/obj/item/weapon/reagent_containers/food/snacks/oort = 5,
/obj/item/weapon/reagent_containers/food/snacks/sun_snax = 5,
/obj/item/weapon/reagent_containers/food/snacks/canned/appleberry = 8,
+ /obj/item/weapon/storage/box/jaffacake = 5,
/obj/item/weapon/storage/box/gum = 2,
/obj/item/weapon/storage/box/admints = 2
)
diff --git a/code/modules/food/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm
index fa7ac5b7493..27f9dca53a9 100644
--- a/code/modules/food/food/snacks_vr.dm
+++ b/code/modules/food/food/snacks_vr.dm
@@ -912,3 +912,26 @@
trash = /obj/item/trash/ratpacktaco
nutriment_amt = 2
nutriment_desc = list("salsa sauce" = 2, "meat chunks" = 4, "cheese" = 3)
+
+/obj/item/weapon/reagent_containers/food/snacks/jaffacake
+ name = "Jaffa Cake"
+ desc = "A delicious miniature cake with a soft sponge base, topped with orange jelly and covered with a thin layer of chocolate."
+ icon = 'icons/obj/food_vr.dmi'
+ icon_state = "jaffacake"
+ nutriment_amt = 1
+ bitesize = 2
+ nutriment_desc = list("chocolate" = 2, "orange" = 4, "cake" = 3)
+
+/obj/item/weapon/storage/box/jaffacake //This is kinda like the donut box.
+ name = "Desatti Jaffa Cakes"
+ desc = "A box full of desatti brand jaffa cakes, with twelve in a pack!"
+ icon = 'icons/obj/food_vr.dmi'
+ icon_state = "jaffacake_pack"
+ var/icon_base = "jaffacake_pack"
+ var/startswith = 12
+ max_storage_space = ITEMSIZE_COST_SMALL * 12
+ can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/jaffacake)
+ starts_with = list(
+ /obj/item/weapon/reagent_containers/food/snacks/jaffacake = 12
+ )
+ foldable = null
diff --git a/code/modules/food/recipes_oven.dm b/code/modules/food/recipes_oven.dm
index bf932c9da08..40bc15c427e 100644
--- a/code/modules/food/recipes_oven.dm
+++ b/code/modules/food/recipes_oven.dm
@@ -343,6 +343,12 @@
result = /obj/item/weapon/reagent_containers/food/snacks/cinnamonbun
result_quantity = 4
+/datum/recipe/jaffacake
+ appliance = OVEN
+ fruit = list("orange" = 1)
+ reagents = list("cakebatter" = 15, "coco" = 10)
+ result = /obj/item/weapon/reagent_containers/food/snacks/jaffacake
+ result_quantity = 6
//Pizzas
//=========================
diff --git a/icons/obj/food_vr.dmi b/icons/obj/food_vr.dmi
index 35ecb88dcb66aad25740edfa4805fe5984316dc4..1e792333045514e527e7bb9b5c3aad16999697f6 100644
GIT binary patch
delta 10951
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
OkVhJN5AyF>2K^Um$cf(o
delta 10500
zcmZvicUV)wv-d+s>7pPVMMY4Wpn!A~5Tr^|T0lj5QF;j{bd)9vg7hlAD7^+yklv)X
z(4++jC7}e8+=IV+-+TXfd3bmd$nKe)nVp^QXZeyz9+pP_@dim$+)ZANlrbX$NJ)=<#BW%HG4NH_Z=4-H$P|
zAM4U@%-GBfo~%AZHZig|1MjP@N19bVSFV3NP+*>uwvWGr4X&wfd{NS5Q8FuJ3EB9kh&6`ytX;sbqsa}%u-(0$8@qC4@?v|CDePB1GNIG8yYH5@~V)aMS?2p4$?4ER_>}PM1VK2tYnHH9p!_Inem=<3@She(dVa^qC=Yok52R@I7$;i;khtm+B&q!swkA
z$sH-ogw)YNq1JX~w0b;8uNCo_u9UyuweOxqKd&v1@i?7$IoJGfd~W8quV};%*`d#8
zS~-^~WxSd!;t_W7qJHvFMuc7nsbEF+w+vU(4=h|W2>0^-ZP?-8Qzy^UZD+hf$cu{h
znWCOR2!t1+UO7Of_7_;=W;LuP5G9lId=S|SbWE2;3U8}ekUc|j0=|8{0y5?|{)ps9
z!tT6p$@AzNEzsw$UKXRN)aDj1l@L@>QkHmoSx}u;_vxe1(cnNIfjNXiXZ4(TA1(MD
zyxRm7fzpfn9om%MKYcM+nO;3UuXNepDOKdo)z4q_F$TM
z+A;XhDBDTvX{BgVkzY}g|
z1-q+)-l+VKKxi1HjC)@v<}`DNe%9?Mt%2Dc!|BEsvwGZiZ_b4aay6eK>aQLNy!pxe
z*R5Z3PiySM|BQT<_EiWZAsoZplFjpDNg0QluYhku#$6~{bEx`bCO>OWPT=AsqecT<
zT;GRmI0=p!2g1oog7OQr@EK~+?K3l(j}dRyP4nY{G;<1CnBNnvjxCZKzj9iR
z!c_x>#DgbfC%zo<>&6IzAG&;eH1zokavTmxm>3*>(9lEs6W8wLML*v_Ta%5-$wRzI
zeM$jQ4CQS#f>^qrLCS^aR>Y|Mi5)^!8?&idwaBh+v8Ue?H8oWJ4?xZQOSdLBi%-^f2dXC9_bA*Y
z^ATiZX9DU1C5AXyaJcP6we1tL-)`C{k>h>Ifz*?PW~v&$4*Fc;XM)b#YAj%Af7O`1
zl|yx5lVQP*uVC{*MX@?^+^lMNq3BZJ^qpX_JjyqGUH86L^{^lft?B27d!8py=pI;W
zAfHpdV%+U(XT3YXV9ZI316o+u_g`K|A|(@b)_|TV9&x!`ON?1pokI4a@J#
zti%#TnbSYRAkiGq!9RTL21SU&$7=ig46ZGh)Ze6#4Pq{_SO}l-G6eIZ*7{{l6E
zP=GpV^5uFlGS8eDC@J7^^N?Rrh%_&xiIzzZl{0FB;yl$nN{Mdv9G2F_S!r{WDp$}S
zZsErA0bp>>3pbVQ_9Nep!IU+7_^K0V?u%QW-;|dD>~4u#d=;J3VpLVO3%lN?CD8O=
zbyTnJG`aNd@oe~!z(>_9>yzrkUrc9^9OuF=d@T*A?Gl}wS+#K()vJLOjk|YURDeh2
zpE^iWSii2pr8!VOSlf`x-$UuhcA{i~~LTS~J^^SxvxiQ7tsJ#cl6hga~S32`Rgw4k=_aAoBp
zplZ1V;WR(~{&sIVYEm7(UH`y3B$%?(mOmx|vdX(qozROpVDBY2=2TGJ{NiTTH~Z)$
zHvhJ785>v%0+1EqBw|)~pW;3iWG#B4Ni3TgnfeAq2IJMH4hv0|&dliNF{ETq;OH;A
zr-cr;ugZL6fhCJMJncBRGG||y@qObeaQQgDL@C+xD>**0aR7Wd&x>?x1+P`
zJSG`6>qGr9JY`*#we4+zw#EtNBAxsRWS+RF?c_q>8t7!@oAk)3{hTXob
ze|pcvEf-C3z3Ky6;8|@d*-#o0@i{%){V%sNT>MD&ld=1!#hjc)O##aXt|;6L`^nnZ
zedp`TfnfYBuKnXhBvQ^#AwW^n%r*goYQRrmaT5vuz0BmtHThLA
z7N*&icVzy!VSf5pFIAo*0-3imqHI*5_w@*=jOQ@Xlb@7s+e*9p3oGmAwrJeXsTt38WZ_m^!*32CcckSJEg0-w@57gnWFG$y
z75qjJMxy#d%Z+1_9zeEZT;Q#L?K_6Ijh^>l%2%_hu7NWE&(@fAnvX!ym
zQ-cb(gn^U`mDjQdU*J!_&8n8j?B5rAn`Jl>-rz($#Go|rsAoi*O6CvIkrS%}J|o#A
z2G>mHSUW>9k+yGV_pet>Km_-@C*#8^Hzd_?WzIkMs{)+L5$sHob`$l=JGO5)|1eLKa7PdPJg&K4P1A
z!a?-onQp=VP?65(ey$E?vQespn1~hM+>c9L0=JhJVp+R)+%p1ZF&C_GsL1Gkx5ctE
zf(CKqnj22o%79hnafRhUyWE
zk7dNZwUa2P?_9%Kj3yFvaEOKx;#4YW*JOO>?(lG`l#y}@{WgZuSRewUY3ts6@?7UZ
zlOA!#e6?!xaOHJa6x*`<#b5fkpK5BRO*W(DF*unK$t59}tJ9Sxk6#WzX-1XAa9Mi8
z?Jt6HuCc96NPxy6Gx!4xE8fur6HuU9pPK3YxeYTX5Bqo{nqEuln3=S}qfwwiT
zpST}piU7JU8
z^hK-Hk#!fj1!EN#HHu908fRgc62YG~G73NAn`5EZIZXWL9oMAI8F!kKWI0|FJj;dR#0VDHaWHbMmj!Ne6vh#1ympB^@Z0Jo(>E9B3p3g!t
zpBlXy$(psP|yG_cJ>mK3SFsxhLd$csN%VEp1r$N-E|E=1wEE~f8f@i
zGfaiBv99F0o8-v79Zp#@PN!g3ICUId?49OBgDO=@*wA;BAMg$Qg95(soQX>3FH)bM
zy5(5d9P!u$X;NIaetybq7=ArZ+me#f7@qk=+$QPq;<^Q*p}^(woT767eZ%|~tawSv
z@hR%SQ8nt|ct;BGpwA%#?D`EfBFi1cO=~B&%sKO>i{8yZ{Uk4Jh?m6~nfQP4h}6>b
zz7gbefuneq01V8NcYSGT=fW2)IN*~l0kBQkt8Ro+V1dGI30;)k0k9${1L2hV?x=
z9~J&$L*z6QNA2iTLr#XIyP+WPVkDfFhs#N9@Z0X=s`3KId}WK_ZoyiF%;5E1ES4Xa
zErQQjJ4M(#JyvqPqBb~uSX1WfgsN#%Ey{6B?{Z`@u*Qf`2cdU8iTr7Symb-SoM4z4
zXCmW85_TY@IP&gib@8$h7IG!VkOsxHLjY`zR(G6OD3ln<7wv!kAq?i2CcTkAO8)zb
zj(CXRmP3>uhR_7@QU~#6@1$5Q5^KuLjF#~kfB4_sDC0zws@?b88q!X!20!3Bw$w$`
zLVQaxay@#oIXC@#3D5M1EQwhnOZ61tJHYwc1!%Eabt|_M&+yZ#JW5?nBw_Sne+Ya?)|@Vpli3Kc-HXYvHi+q+L#)54$4w@}zyjAcY7A_z_Y{a~iw_ott7r64YSgqa-v-EG=I((|4|
zvV^o;npo{@d-R?u8x~3IslGJ|JdEOVRdZVy7-(z6nbGBCRICWKZXGAqT0HvvQ4c5P
zwe4snPF+`Z(-`2A5!3*-V?^GK5x7ni@-JFC#2~Li{-1PRK2;qNue^G0PZ?Ud
zRF2W-2ETf%37YH~4C%-ds{a-9q39FQZGx~pcFL}HrM9+?ph+Pvt<
zOKA{7;ClPuRdTqGL@~zsIbJ}rgb*J~M{fe;A#2}tWU&t}MrC~edwk_&$~q)Wa*QY}
z@?=pVE~gGvn$M=-M6#SOR3OD=*+p5mNt~?){5(n-*$RWlmgH4@-?0224XwRoJIXVh
zFY`Yl`tXVWQ0rBv!v)mtkxQ|RIUK%IN=>`_J3cNSad^5aaSd2hy8N1FX)zXfd6aHY
zEAj-2k^!Z=?qj4E?$uh=M7lILrQ)C!*2iU9{?=M2iRgB-f#U6BTI{E@xt$K
zfJv2x&M3N%Wj&WV
zsc}o6#1U{>8Q?#2om%$=dx>ef^7Z$1_
z2&90KeDWeBDu!pFBV>x(t@SO};P5v$x3KvDKGWD0L)WHnQL>PRR0lW$F#Qk-tcG%}
zIfS+d`8U(4V4918-24;?Z^#DK0
zB#9NDbC@u3Ck?)C982i*!B>lnC*HG$`@qzPN^BwXnuFKC@MzVBireU2bK}__IO$@7
zyap9?jb*W{fyhqU6Z-BLretx{E?pX~6$
zaP1gN%^7m`5z3vIpV}<0)Qb4YU3olE!h`gjAvD<$uds9UDLnhqom*%~bhYM!i&1;O
zS){?OjmHq5AZgrv#Nw*?AAU*%;0JkYvY`BDmuyMTSCarBtw=;^hge640;=30MZWG0
ze11Jd1>uXW{HA6n7d~b)kgc5l0t>O!J}r!2C`x^#$;SA4SWNSR1T+}jEO47(cyS@V
znTg!MgJW_m*Tq42y1+Dnsjm6n)%?o~J*kMdW6k%+H@sXq$=4l7Ik#vl4uSs=ilMXb
z3NL_Eo-!%ITfWnKxBP0y%LTr4swzuY$^pWVm7kL6GF0*9SXE>}7rz64#c@j`Mm^)*VF`fU*
zHL|kWZrt_hRUXuL+f5ilMqraKzGBQI)Oemn(^&ix!Ejw4XnD~_DB2{-+7ZVIgH}rC
zjb*3Y)ncNP*=1XYUko1`{&KR4ABl=JutNGxai7z_cEpQ45;BsXPN4yQc=lP(tc{d=w=<9a2%`>?54yANWp54S#VsBuVMFivJz}2(htZ)8)Vv@XW!?ht@gpkDC
z`BNFnUz=r+$9xHf+*AvvbbzHmU#}t`lB^b3p3xPs+9d$ERengZG@(->AE
zb0_*{tXcjbgM8DmEU-tTTwKN7IssOX%`va4N$tfArn)$=B{;xvo}Hz~2{Yi%*At{l
zKTdp56I{xqV73Ru2JC(a#mgNK38}7Q)g!c$W9-Sy%&O7(O(HuiYzCMkvvY`ha*h(x1!5~AL@%waT{>H!
zaqrdO&CiUQvlg#k?pAt?*%G>TIxAZ&62(yi5b?(unEvh*trlq0g9jkwP(nkK4C
z2UK7H=061eHbMZshHE!bK-P&!wv&;An&f0Mm26#}imZQxveqkzJv)41z**r+XtY67
zW&Vs(UAdA*o=N!nO!-kTmgAvR12qsePz&M(h}qHL7$nu~;g{5)dkt03Nm?^meT|M=
zMnt#{iU}5=v+}tr%CSyt3&)8&*_bW$TG}Bl{2RXC;;vn685<5awIT>>3lFmx7&%zW
zNi^v-hmk0EH06A%s2OxO$B2{)HvF+ZHaXaR*(^(gEyw{y;y9*|JNNJ*K=AlFIE`ec
z@8ZHY7!Z?=SWI&fb6kPQKN648#8HXh977`73^(->mo4bFE2JMwW+|6v)jZzHMl|+4
z%vE7Cm9Q^G)EokM?UFy+Xx$B`D*VY?NDcAmT0Wk~AQnI4e|2b&vao7nNV{BC@gP`-
zNxFqAZh2;7K*6I|S`OIMO8@}OZO_5^!3I94K8rO$3=}YN-vy#ezfLLstyS8(`kvCY
zpT%u&oGavGzMrV?I~!G@y(r_RX=&&oP6K42pW`koq{hmwgb
z$F_NnX6&DN9y+>|K(|D^d=!a#rP9@aSk^?w-`>8QhP_6hm|>L$X^hiqsM@!~7wap4
zGAHHaF%$DGKsDb_(zR(&dHiy8JE&Qj^ZRLn;@=`C?L_q{$;E8+vYgL0#SP_ONvCx~
zCQE?Vemm>Fr8?yZI%eWVBN7qwkK3ry(kbHg|JwOV(>RvX{-qGWdA0P(_B@ST{bBn{
ziX|Gjs`h;0O1RHIM9EH4JOP%QS?J(9tLnG&&2||(zAvJDp>MdYXS-S&4iJ-d6pKG8
z|NKH`oSl*RZptVS;g5)wemX@N)kM^p)~kRgec1<+(H?6qy+naEsKv+jZ|2u<(g&5j
zwtlu*778}0fX5`FUjQz@%x<>~pdZZuwa}W|qaYekPtEB4@cGv2O~=tci&Q|<69a@7
zb~%2Ts%{cY>V|tbLtG;L*FTCEdi^XlJB+`TbBe$P{E&wEJYdFoL?eF8wP7YgX{Nv0gr{UP3_h_^WdqdX6XP+0Wk1|WvxR5JHf
zK7ri%IP|9-|B2@`=e-AcV$z}%uQZ0nS+0rZ6O@0ZY<2=OmC#0WqG>wEAc%&J*TZS#
z?Equ_*7Wi6ZLD!i>m1W@Hq$c1jmXL}IlU-%<|HIb3-&F8%P-%0&~s;6Z@z60ryIw%
zrNWFR8yVof&?zXYalQt)ZBv=Hmij{>XPIYYKU#1K>M@1r=us5SSGgrW44r}6YWwLx
z-&ibs8{rhIeeilSFd;)_9(LZHv8y)Ju2&h3VPae;DPvc1O7ET#gY6anP;0
z-TZ@8o4CvjNj}_gwt@>%7bxTv6Sy3LMcD(K{unDgsW)0+2JoHH55+f6u9YC0CLC}~
zi_Om~g)hRTkaA%V$VEf-$4Ums#8WcSEDnDeC;DwSX3Q&>oe|1R<&|>R>H|Go%%+0n
zmS>L__gX96;0AKf=(IR4y_mj>8F$EO=`n`nqS|_oLN88>YlC4_toPvLty|=^vfL^w`o$o$>jZIgi1hK|wpA(6|HYTl
zO1q*PTl?`_5?$GRDNL&JCaZ#5SWiwE
zP`yt4aq_CwlghvxOFS<8X)#8XBx`kt;J~xwTKl;~#8Q4^xpiXZ!{
zczh+IgM#s^kxsP-*Y`Dw(UJKf~$1HPt0;Imz^S
z)XB~{mLQsGL#m15(@;Swp)=^-*`Te_dpv&j(2&r$p=1(cq1`)N<|19LeOh~Jm;)}We{Zn)n)*T+EOBT2XxWg5~t
zOJdNmXNo%gK`?3CX>zCwu-y@t&_Z;`g
zL{b%^wy?vW*T8Aia>vqOR3A}2=fIY}ka)?7
z5>6IuqSCc6(+nVxm=g)T0B+n4W;_MbsdK<3ZjI&x(f41q58a#Yszh1vHOSFFX1Ju!
z40iS1B8y;W--#(10J9pr4`GC#{PbId?o)=4R(aY23RFG=L_NAgmjlJ+?1-2++qg%#
zO2n>T6wR{HgPFDe!`dPq8;JSVQtVE*UMxo(
zOq8BQM|GU0A?#?qCw5hkN4U;7IMe;#cBu@QkmcIW3G7j53zoXBY=fhhQEtaGEH>sF
z*iyi(xSkJumq|u?v3lUcDQd>ojuKi-CT%bZ2~J|}lsQDV*MKUX=eYF)QqP>hSFu2(7LpWwMo+I=;Mns4sLh3$saZ_OnGv_bY7wazPM}OzievblxTK
zGjqSUv}jjVWfMNjO*>pmbhN7r(u0DP24;M69s}?SWZE@b$dkpparp{9Im<=tQbi%!
zC*S4Qx#5Hzxx#=Rl5rK7A?3lz5h-9R{*phg*@+4~*Nlg}BoJuf%}%+K6DsPCrY@aQ
zarpR^7_W&F4n28C)Zd1pLlF_-7TGbqO%I|?6>x>T{?)&h8v&ez^&Y`0y)=
z|Hqnc@jC?Y>L**bIba0D>^Fr(3p*8xJsYbs*uho$-k>gX+SnuSj8p_LDo{*wxr@KM
zm-(pVClGYHsBYcZe!0xja8O7OL;c3AUP%kd{`}fegRifX3-5^E76y;#kT6QrACi_`
zpa@S=JB=K#-%kJK>kzUBLuoXgy7Jh#-uG~!v2h`}3xcd;ZnfGjEQsXHQ}ECP?e$GE
z4-mDHXFcF0=rAT;x=3<2k@q4AHGsV5a>C^-x1+~+{%53KxgeBXCcpWlO%_Bn*U`>-
z{iXroUq*i9k&~apH`jy(cZeuB#DoaUht49TUnw
z@cG`4#KX;1*#5_JbCe3Qq`+&R!+DM<34G$}XWSpR=P>1#W<{cTEGmO!>kzHFNOQ9)
zdG>QxqpA9>|2*rqcJv5CfV`%u;pi7Nc0xPBiSKhl2}OMI>V;6L*)YHN|K*d*>9;P|$97|C13i@70|hI*zN^!~rU
z&9r~5EckfDz5VlKO|62Yi(r{{(tGdbIYOkqPoMt{V#4j*J*(DODY(X{RGA%kN1wD@
za_4udN+_sgf1T^`rmyLbY`p<}u+JbBwf|KuEB_-=^TPRfWxA{uajN@ezYn;CC2Y2e
znQwzwsJ)OZbsyEu6AUc3BHb49eQ9C9Jxh98(iE?kE-zlO_}gE{%{{yLOhi!tGByIk+cdR($6-YJz^b@9
zgLBN75+eoHT-4=;e?1`Z|7`-7<6Bu#PrttNiOih730WNlY`yj8PLPLN6HCYEfI5rP
z^3S#NZc7NP)ehq-B)g~Y0LU%(V3+*ZV;c?cklf5Z+h%$-X*?OczP6vxRIf5y^~GOCyRP-%}yrm%57f<1%H-p#K7~
CCz8DY
From 88e24bcc31c0669c0b2857d50d37b8c5907d4640 Mon Sep 17 00:00:00 2001
From: SatinIsle
Date: Sun, 15 Oct 2023 10:08:36 +0100
Subject: [PATCH 09/37] Changes the conditions to be a single message instead.
I'm not sure if it's really any better, but I think it's more easily modified if people want to add more. Gets a little clunky if they're also sleeping, but that's a fringe case and just means a bit of a run on sentence.
---
code/modules/vore/eating/vorepanel_vr.dm | 27 ++++++++++++++++--------
1 file changed, 18 insertions(+), 9 deletions(-)
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 7b7f3bf47a4..15d05d269d3 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -876,17 +876,26 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
if("Health Check")
var/mob/living/carbon/human/H = target
var/target_health = round((H.health/H.getMaxHealth())*100)
+ var/condition
+ var/condition_consequences
to_chat(usr, "\The [target] is at [target_health]% health.")
- if(H.weakened)
- to_chat(usr, "\The [target] is currently weakened, this does not stop them from hearing emotes or emoting themselves.")
- if(H.blinded && H.paralysis)
- to_chat(usr, "\The [target] is currently blinded and paralysed, they will not be able to hear emotes or emote themselves.")
- else if(H.blinded)
- to_chat(usr, "\The [target] is currently blind, they will not be able to see emotes.")
- else if(H.paralysis)
- to_chat(usr, "\The [target] is currently paralysed, they will not be able to emote themselves.")
+ if(H.blinded)
+ condition += "blinded"
+ condition_consequences += "hear emotes"
+ if(H.paralysis)
+ if(condition)
+ condition += " and "
+ condition_consequences += " or "
+ condition += "paralysed"
+ condition_consequences += "make emotes"
if(H.sleeping)
- to_chat(usr, "\The [target] is currently sleeping, they will not be able to hear emotes or emote themselves.")
+ if(condition)
+ condition += " and "
+ condition_consequences += " or "
+ condition += "sleeping"
+ condition_consequences += "hear or do anything"
+ if(condition)
+ to_chat(usr, "\The [target] is currently [condition], they will not be able to [condition_consequences].")
return
From 3dcac9d98c7f8ea1c623b2344668559547d604fd Mon Sep 17 00:00:00 2001
From: VerySoft
Date: Sun, 15 Oct 2023 12:13:51 -0400
Subject: [PATCH 10/37] Back to SD
---
vorestation.dme | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vorestation.dme b/vorestation.dme
index 5bde4212fb9..21e534b3a8c 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -4265,6 +4265,7 @@
#include "maps\southern_cross\loadout\loadout_suit.dm"
#include "maps\southern_cross\loadout\loadout_uniform.dm"
#include "maps\southern_cross\loadout\loadout_vr.dm"
+#include "maps\stellar_delight\stellar_delight.dm"
#include "maps\submaps\_helpers.dm"
#include "maps\submaps\_readme.dm"
#include "maps\submaps\admin_use_vr\event_autonomous_drone.dm"
@@ -4275,6 +4276,5 @@
#include "maps\submaps\space_submaps\debrisfield\debrisfield.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness.dm"
#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm"
-#include "maps\tether\tether.dm"
#include "maps\~map_system\maps.dm"
// END_INCLUDE
From 27a75ce788dbb94672075bcc0d3f26b7a3c74df5 Mon Sep 17 00:00:00 2001
From: NanoMap Generation
Date: Sun, 15 Oct 2023 16:24:28 +0000
Subject: [PATCH 11/37] NanoMap Auto-Update (Sun Oct 15 16:24:28 UTC 2023)
---
icons/_nanomaps/tether_nanomap_z1.png | Bin 819612 -> 877590 bytes
icons/_nanomaps/tether_nanomap_z2.png | Bin 781342 -> 810740 bytes
icons/_nanomaps/tether_nanomap_z3.png | Bin 672168 -> 698119 bytes
icons/_nanomaps/tether_nanomap_z4.png | Bin 62991 -> 72278 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/icons/_nanomaps/tether_nanomap_z1.png b/icons/_nanomaps/tether_nanomap_z1.png
index cc281d14321de5dcda839b82f284df599a60281d..f6188b788146a5af0b5c76f264a190c8c4e6e4c7 100644
GIT binary patch
literal 877590
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