mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-16 05:02:18 +00:00
VChat: Redone chat output done in Vue.js (#6761)
* Better notifications * Add buttons to del/move tabs in edit mode * Add a <span> to emotes * Fix duplicate IDs in VChat and add more logging * VChat: Redone chat output in Vue.js * Ported tg asset cache * VChat DME Update * Replace \image macro with bicon() * NanoUI Subsystem Fixes Don't do this, the asset subsystem does this for you * Allow narrate/globalnarrate shenanigans Allows HTML if your entire thing is HTML * Disable bicon() icon object cache, and create text tag cache * Ore Scanner is written incorrectly Only revealed by vchat * Fixes 2 VChat bugs * Underline links in VChat * Fix LOOC color * VChat Improvements Hopefully, anyway. - Arbitrary font size setting - Line height setting - Multiple crush settings - Rewrote how tabs work hopefully for performance - Hidden messages are actually put elsewhere - Attempts to correct chat backlog restore on rejoin * Surgery steps to use <span> * Some VChat Tweaks - Chat remains between client reconnects if your client didn't close (so things like using the reconnect button, or autoreconnects at round end when that feels like working) - The client doesn't send pings to the server, the server sends pings to the client. This fixes AFK measurements for AFK kick purposes. - Turn latency indicator into a green/red indicator to show if you're connected, and when clicked will perform a one-time ping (and block doing it again for 10 seconds). It will display '?ms' if it never got a reply, or '999ms' if it did, but it was over 1s. * Include date in filename for VChat log save * Merge pull request #6767 from Cyantime/patch-2 Change chat export naming scheme * Adds VChat tab saving Saves every time you enter/exit edit mode. Persists between rounds, VChat reloads via verb, etc. * Fix chat exporting when someone has used unicode Only affects clients still using 512 * Use CLIENT_FROM_VAR for ease of code reading * Update code/modules/client/asset_cache.dm Co-Authored-By: Novacat <35587478+Novacat@users.noreply.github.com> * Fix runtime when client disconnects before vchat loads * Fix polaris version of command reports * Fix LOOC color in oldchat * Put some styles in various adminpm messages * Round info and advanced who spans * Fix missing tag-end * Maybe fix images for linux and statpanel but also doom everyone Co-authored-by: ShadowLarkens <ShadowLarkens@users.noreply.github.com> Co-authored-by: Novacat <35587478+Novacat@users.noreply.github.com>
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,5 +1,7 @@
|
|||||||
#ignore misc BYOND files
|
#ignore misc BYOND files
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
vchat.db
|
||||||
|
vchat.db*
|
||||||
*.log
|
*.log
|
||||||
*.int
|
*.int
|
||||||
*.rsc
|
*.rsc
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
//---------------
|
//---------------
|
||||||
#define isatom(D) istype(D, /atom)
|
#define isatom(D) istype(D, /atom)
|
||||||
|
#define isclient(D) istype(D, /client)
|
||||||
|
|
||||||
//---------------
|
//---------------
|
||||||
//#define isobj(D) istype(D, /obj) //Built in
|
//#define isobj(D) istype(D, /obj) //Built in
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
#define COLOR_DARK_GRAY "#404040"
|
#define COLOR_DARK_GRAY "#404040"
|
||||||
|
|
||||||
|
|
||||||
|
#define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (isclient(I) ? I : null))
|
||||||
|
|
||||||
// Shuttles.
|
// Shuttles.
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
|||||||
#define INIT_ORDER_DEFAULT 0
|
#define INIT_ORDER_DEFAULT 0
|
||||||
#define INIT_ORDER_LIGHTING 0
|
#define INIT_ORDER_LIGHTING 0
|
||||||
#define INIT_ORDER_AIR -1
|
#define INIT_ORDER_AIR -1
|
||||||
|
#define INIT_ORDER_ASSETS -3
|
||||||
#define INIT_ORDER_PLANETS -4
|
#define INIT_ORDER_PLANETS -4
|
||||||
#define INIT_ORDER_HOLOMAPS -5
|
#define INIT_ORDER_HOLOMAPS -5
|
||||||
#define INIT_ORDER_OVERLAY -6
|
#define INIT_ORDER_OVERLAY -6
|
||||||
@@ -71,6 +72,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
|||||||
#define INIT_ORDER_CIRCUIT -21
|
#define INIT_ORDER_CIRCUIT -21
|
||||||
#define INIT_ORDER_AI -22
|
#define INIT_ORDER_AI -22
|
||||||
#define INIT_ORDER_JOB -23
|
#define INIT_ORDER_JOB -23
|
||||||
|
#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init.
|
||||||
|
|
||||||
|
|
||||||
// Subsystem fire priority, from lowest to highest priority
|
// Subsystem fire priority, from lowest to highest priority
|
||||||
@@ -89,6 +91,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
|
|||||||
#define FIRE_PRIORITY_PLANETS 75
|
#define FIRE_PRIORITY_PLANETS 75
|
||||||
#define FIRE_PRIORITY_MACHINES 100
|
#define FIRE_PRIORITY_MACHINES 100
|
||||||
#define FIRE_PRIORITY_PROJECTILES 150
|
#define FIRE_PRIORITY_PROJECTILES 150
|
||||||
|
#define FIRE_PRIORITY_CHAT 400
|
||||||
#define FIRE_PRIORITY_OVERLAYS 500
|
#define FIRE_PRIORITY_OVERLAYS 500
|
||||||
|
|
||||||
// Macro defining the actual code applying our overlays lists to the BYOND overlays list. (I guess a macro for speed)
|
// Macro defining the actual code applying our overlays lists to the BYOND overlays list. (I guess a macro for speed)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
// atoms/items/objects can be pretty and whatnot
|
// atoms/items/objects can be pretty and whatnot
|
||||||
var/atom/A = item
|
var/atom/A = item
|
||||||
if(output_icons && isicon(A.icon) && !ismob(A)) // mobs tend to have unusable icons
|
if(output_icons && isicon(A.icon) && !ismob(A)) // mobs tend to have unusable icons
|
||||||
item_str += "\icon[A] "
|
item_str += "[bicon(A)] "
|
||||||
switch(determiners)
|
switch(determiners)
|
||||||
if(DET_NONE) item_str += A.name
|
if(DET_NONE) item_str += A.name
|
||||||
if(DET_DEFINITE) item_str += "\the [A]"
|
if(DET_DEFINITE) item_str += "\the [A]"
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ mob
|
|||||||
|
|
||||||
Output_Icon()
|
Output_Icon()
|
||||||
set name = "2. Output Icon"
|
set name = "2. Output Icon"
|
||||||
to_chat(src, "Icon is: \icon[getFlatIcon(src)]")
|
to_chat(src, "Icon is: [bicon(getFlatIcon(src))]")
|
||||||
|
|
||||||
Label_Icon()
|
Label_Icon()
|
||||||
set name = "3. Label Icon"
|
set name = "3. Label Icon"
|
||||||
|
|||||||
@@ -301,11 +301,15 @@ proc/TextPreview(var/string,var/len=40)
|
|||||||
//For generating neat chat tag-images
|
//For generating neat chat tag-images
|
||||||
//The icon var could be local in the proc, but it's a waste of resources
|
//The icon var could be local in the proc, but it's a waste of resources
|
||||||
// to always create it and then throw it out.
|
// to always create it and then throw it out.
|
||||||
/var/icon/text_tag_icons = new('./icons/chattags.dmi')
|
/var/icon/text_tag_icons = 'icons/chattags.dmi'
|
||||||
|
/var/list/text_tag_cache = list()
|
||||||
/proc/create_text_tag(var/tagname, var/tagdesc = tagname, var/client/C = null)
|
/proc/create_text_tag(var/tagname, var/tagdesc = tagname, var/client/C = null)
|
||||||
if(!(C && C.is_preference_enabled(/datum/client_preference/chat_tags)))
|
if(!(C && C.is_preference_enabled(/datum/client_preference/chat_tags)))
|
||||||
return tagdesc
|
return tagdesc
|
||||||
return "<IMG src='\ref[text_tag_icons.icon]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
if(!text_tag_cache[tagname])
|
||||||
|
var/icon/tag = icon(text_tag_icons, tagname)
|
||||||
|
text_tag_cache[tagname] = bicon(tag, TRUE, "text_tag")
|
||||||
|
return text_tag_cache[tagname]
|
||||||
|
|
||||||
/proc/contains_az09(var/input)
|
/proc/contains_az09(var/input)
|
||||||
for(var/i=1, i<=length(input), i++)
|
for(var/i=1, i<=length(input), i++)
|
||||||
|
|||||||
@@ -10,7 +10,8 @@
|
|||||||
|
|
||||||
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
#define RANDOM_BLOOD_TYPE pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
|
||||||
|
|
||||||
#define to_chat(target, message) target << message
|
// #define to_chat(target, message) target << message Not anymore!
|
||||||
|
#define to_chat to_chat_filename=__FILE__;to_chat_line=__LINE__;to_chat_src=src;__to_chat
|
||||||
#define to_world(message) to_chat(world, message)
|
#define to_world(message) to_chat(world, message)
|
||||||
#define to_world_log(message) world.log << message
|
#define to_world_log(message) world.log << message
|
||||||
// TODO - Baystation has this log to crazy places. For now lets just world.log, but maybe look into it later.
|
// TODO - Baystation has this log to crazy places. For now lets just world.log, but maybe look into it later.
|
||||||
|
|||||||
17
code/controllers/subsystems/assets.dm
Normal file
17
code/controllers/subsystems/assets.dm
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
SUBSYSTEM_DEF(assets)
|
||||||
|
name = "Assets"
|
||||||
|
init_order = INIT_ORDER_ASSETS
|
||||||
|
flags = SS_NO_FIRE
|
||||||
|
var/list/cache = list()
|
||||||
|
var/list/preload = list()
|
||||||
|
|
||||||
|
/datum/controller/subsystem/assets/Initialize(timeofday)
|
||||||
|
for(var/type in typesof(/datum/asset) - list(/datum/asset, /datum/asset/simple))
|
||||||
|
var/datum/asset/A = new type()
|
||||||
|
A.register()
|
||||||
|
|
||||||
|
preload = cache.Copy() //don't preload assets generated during the round
|
||||||
|
|
||||||
|
for(var/client/C in GLOB.clients)
|
||||||
|
addtimer(CALLBACK(GLOBAL_PROC, .proc/getFilesSlow, C, preload, FALSE), 10)
|
||||||
|
return ..()
|
||||||
87
code/controllers/subsystems/chat.dm
Normal file
87
code/controllers/subsystems/chat.dm
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
SUBSYSTEM_DEF(chat)
|
||||||
|
name = "Chat"
|
||||||
|
flags = SS_TICKER
|
||||||
|
wait = 1 // SS_TICKER means this runs every tick
|
||||||
|
priority = FIRE_PRIORITY_CHAT
|
||||||
|
init_order = INIT_ORDER_CHAT
|
||||||
|
|
||||||
|
var/list/msg_queue = list()
|
||||||
|
|
||||||
|
/datum/controller/subsystem/chat/Initialize(timeofday)
|
||||||
|
init_vchat()
|
||||||
|
..()
|
||||||
|
|
||||||
|
/datum/controller/subsystem/chat/fire()
|
||||||
|
var/list/msg_queue = src.msg_queue // Local variable for sanic speed.
|
||||||
|
for(var/i in msg_queue)
|
||||||
|
var/client/C = i
|
||||||
|
var/list/messages = msg_queue[C]
|
||||||
|
msg_queue -= C
|
||||||
|
if (C)
|
||||||
|
C << output(jsEncode(messages), "htmloutput:putmessage")
|
||||||
|
|
||||||
|
if(MC_TICK_CHECK)
|
||||||
|
return
|
||||||
|
|
||||||
|
/datum/controller/subsystem/chat/stat_entry()
|
||||||
|
..("C:[msg_queue.len]")
|
||||||
|
|
||||||
|
/datum/controller/subsystem/chat/proc/queue(target, time, message, handle_whitespace = TRUE)
|
||||||
|
if(!target || !message)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!istext(message))
|
||||||
|
stack_trace("to_chat called with invalid input type")
|
||||||
|
return
|
||||||
|
|
||||||
|
// Currently to_chat(world, ...) gets sent individually to each client. Consider.
|
||||||
|
if(target == world)
|
||||||
|
target = GLOB.clients
|
||||||
|
|
||||||
|
//Some macros remain in the string even after parsing and fuck up the eventual output
|
||||||
|
var/original_message = message
|
||||||
|
message = replacetext(message, "\n", "<br>")
|
||||||
|
message = replacetext(message, "\improper", "")
|
||||||
|
message = replacetext(message, "\proper", "")
|
||||||
|
|
||||||
|
if(isnull(time))
|
||||||
|
time = world.time
|
||||||
|
|
||||||
|
var/list/messageStruct = list("time" = time, "message" = message);
|
||||||
|
|
||||||
|
if(islist(target))
|
||||||
|
for(var/I in target)
|
||||||
|
var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible
|
||||||
|
|
||||||
|
if(!C)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file.
|
||||||
|
//Send it to the old style output window.
|
||||||
|
DIRECT_OUTPUT(C, original_message)
|
||||||
|
continue
|
||||||
|
|
||||||
|
// // Client still loading, put their messages in a queue - Actually don't, logged already in database.
|
||||||
|
// if(!C.chatOutput.loaded && C.chatOutput.message_queue && islist(C.chatOutput.message_queue))
|
||||||
|
// C.chatOutput.message_queue[++C.chatOutput.message_queue.len] = messageStruct
|
||||||
|
// continue
|
||||||
|
|
||||||
|
LAZYINITLIST(msg_queue[C])
|
||||||
|
msg_queue[C][++msg_queue[C].len] = messageStruct
|
||||||
|
else
|
||||||
|
var/client/C = CLIENT_FROM_VAR(target) //Grab us a client if possible
|
||||||
|
|
||||||
|
if(!C)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file.
|
||||||
|
DIRECT_OUTPUT(C, original_message)
|
||||||
|
return
|
||||||
|
|
||||||
|
// // Client still loading, put their messages in a queue - Actually don't, logged already in database.
|
||||||
|
// if(!C.chatOutput.loaded && C.chatOutput.message_queue && islist(C.chatOutput.message_queue))
|
||||||
|
// C.chatOutput.message_queue[++C.chatOutput.message_queue.len] = messageStruct
|
||||||
|
// return
|
||||||
|
|
||||||
|
LAZYINITLIST(msg_queue[C])
|
||||||
|
msg_queue[C][++msg_queue[C].len] = messageStruct
|
||||||
@@ -1,41 +1,17 @@
|
|||||||
SUBSYSTEM_DEF(nanoui)
|
SUBSYSTEM_DEF(nanoui)
|
||||||
name = "NanoUI"
|
name = "NanoUI"
|
||||||
wait = 5
|
wait = 5
|
||||||
|
flags = SS_NO_INIT
|
||||||
// a list of current open /nanoui UIs, grouped by src_object and ui_key
|
// a list of current open /nanoui UIs, grouped by src_object and ui_key
|
||||||
var/list/open_uis = list()
|
var/list/open_uis = list()
|
||||||
// a list of current open /nanoui UIs, not grouped, for use in processing
|
// a list of current open /nanoui UIs, not grouped, for use in processing
|
||||||
var/list/processing_uis = list()
|
var/list/processing_uis = list()
|
||||||
// a list of asset filenames which are to be sent to the client on user logon
|
|
||||||
var/list/asset_files = list()
|
|
||||||
|
|
||||||
/datum/controller/subsystem/nanoui/Initialize()
|
|
||||||
var/list/nano_asset_dirs = list(\
|
|
||||||
"nano/css/",\
|
|
||||||
"nano/images/",\
|
|
||||||
"nano/images/status_icons/",\
|
|
||||||
"nano/images/modular_computers/",\
|
|
||||||
"nano/js/",\
|
|
||||||
"nano/templates/"\
|
|
||||||
)
|
|
||||||
|
|
||||||
var/list/filenames = null
|
|
||||||
for (var/path in nano_asset_dirs)
|
|
||||||
filenames = flist(path)
|
|
||||||
for(var/filename in filenames)
|
|
||||||
if(copytext(filename, length(filename)) != "/") // filenames which end in "/" are actually directories, which we want to ignore
|
|
||||||
if(fexists(path + filename))
|
|
||||||
asset_files.Add(fcopy_rsc(path + filename)) // add this file to asset_files for sending to clients when they connect
|
|
||||||
.=..()
|
|
||||||
for(var/i in GLOB.clients)
|
|
||||||
send_resources(i)
|
|
||||||
|
|
||||||
/datum/controller/subsystem/nanoui/Recover()
|
/datum/controller/subsystem/nanoui/Recover()
|
||||||
if(SSnanoui.open_uis)
|
if(SSnanoui.open_uis)
|
||||||
open_uis |= SSnanoui.open_uis
|
open_uis |= SSnanoui.open_uis
|
||||||
if(SSnanoui.processing_uis)
|
if(SSnanoui.processing_uis)
|
||||||
processing_uis |= SSnanoui.processing_uis
|
processing_uis |= SSnanoui.processing_uis
|
||||||
if(SSnanoui.asset_files)
|
|
||||||
asset_files |= SSnanoui.asset_files
|
|
||||||
|
|
||||||
/datum/controller/subsystem/nanoui/stat_entry()
|
/datum/controller/subsystem/nanoui/stat_entry()
|
||||||
return ..("[processing_uis.len] UIs")
|
return ..("[processing_uis.len] UIs")
|
||||||
@@ -44,10 +20,3 @@ SUBSYSTEM_DEF(nanoui)
|
|||||||
for(var/thing in processing_uis)
|
for(var/thing in processing_uis)
|
||||||
var/datum/nanoui/UI = thing
|
var/datum/nanoui/UI = thing
|
||||||
UI.process()
|
UI.process()
|
||||||
|
|
||||||
//Sends asset files to a client, called on client/New()
|
|
||||||
/datum/controller/subsystem/nanoui/proc/send_resources(client)
|
|
||||||
if(!subsystem_initialized)
|
|
||||||
return
|
|
||||||
for(var/file in asset_files)
|
|
||||||
client << browse_rsc(file) // send the file to the client
|
|
||||||
@@ -91,4 +91,4 @@
|
|||||||
var/obj/structure/largecrate/C = /obj/structure/largecrate
|
var/obj/structure/largecrate/C = /obj/structure/largecrate
|
||||||
icon = image(initial(C.icon), initial(C.icon_state))
|
icon = image(initial(C.icon), initial(C.icon_state))
|
||||||
|
|
||||||
return "\icon[icon]"
|
return "[bicon(icon)]"
|
||||||
@@ -146,7 +146,7 @@ datum/uplink_item/dd_SortValue()
|
|||||||
|
|
||||||
/datum/uplink_item/item/log_icon()
|
/datum/uplink_item/item/log_icon()
|
||||||
var/obj/I = path
|
var/obj/I = path
|
||||||
return "\icon[I]"
|
return "[bicon(I)]"
|
||||||
|
|
||||||
/********************************
|
/********************************
|
||||||
* *
|
* *
|
||||||
@@ -160,7 +160,7 @@ datum/uplink_item/dd_SortValue()
|
|||||||
if(!default_abstract_uplink_icon)
|
if(!default_abstract_uplink_icon)
|
||||||
default_abstract_uplink_icon = image('icons/obj/pda.dmi', "pda-syn")
|
default_abstract_uplink_icon = image('icons/obj/pda.dmi', "pda-syn")
|
||||||
|
|
||||||
return "\icon[default_abstract_uplink_icon]"
|
return "[bicon(default_abstract_uplink_icon)]"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Crated goods.
|
* Crated goods.
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ var/const/CAMERA_WIRE_NOTHING2 = 32
|
|||||||
C.light_disabled = !C.light_disabled
|
C.light_disabled = !C.light_disabled
|
||||||
|
|
||||||
if(CAMERA_WIRE_ALARM)
|
if(CAMERA_WIRE_ALARM)
|
||||||
C.visible_message("\icon[C] *beep*", "\icon[C] *beep*")
|
C.visible_message("[bicon(C)] *beep*", "[bicon(C)] *beep*")
|
||||||
return
|
return
|
||||||
|
|
||||||
/datum/wires/camera/proc/CanDeconstruct()
|
/datum/wires/camera/proc/CanDeconstruct()
|
||||||
|
|||||||
@@ -34,16 +34,16 @@ var/const/WIRE_NEXT = 1024
|
|||||||
var/obj/machinery/media/jukebox/A = holder
|
var/obj/machinery/media/jukebox/A = holder
|
||||||
switch(index)
|
switch(index)
|
||||||
if(WIRE_POWER)
|
if(WIRE_POWER)
|
||||||
holder.visible_message("<span class='notice'>\icon[holder] The power light flickers.</span>")
|
holder.visible_message("<span class='notice'>[bicon(holder)] The power light flickers.</span>")
|
||||||
A.shock(usr, 90)
|
A.shock(usr, 90)
|
||||||
if(WIRE_HACK)
|
if(WIRE_HACK)
|
||||||
holder.visible_message("<span class='notice'>\icon[holder] The parental guidance light flickers.</span>")
|
holder.visible_message("<span class='notice'>[bicon(holder)] The parental guidance light flickers.</span>")
|
||||||
if(WIRE_REVERSE)
|
if(WIRE_REVERSE)
|
||||||
holder.visible_message("<span class='notice'>\icon[holder] The data light blinks ominously.</span>")
|
holder.visible_message("<span class='notice'>[bicon(holder)] The data light blinks ominously.</span>")
|
||||||
if(WIRE_SPEEDUP)
|
if(WIRE_SPEEDUP)
|
||||||
holder.visible_message("<span class='notice'>\icon[holder] The speakers squeaks.</span>")
|
holder.visible_message("<span class='notice'>[bicon(holder)] The speakers squeaks.</span>")
|
||||||
if(WIRE_SPEEDDOWN)
|
if(WIRE_SPEEDDOWN)
|
||||||
holder.visible_message("<span class='notice'>\icon[holder] The speakers rumble.</span>")
|
holder.visible_message("<span class='notice'>[bicon(holder)] The speakers rumble.</span>")
|
||||||
if(WIRE_START)
|
if(WIRE_START)
|
||||||
A.StartPlaying()
|
A.StartPlaying()
|
||||||
if(WIRE_STOP)
|
if(WIRE_STOP)
|
||||||
|
|||||||
@@ -23,15 +23,15 @@
|
|||||||
|
|
||||||
switch(index)
|
switch(index)
|
||||||
if(WIRE_DETONATE)
|
if(WIRE_DETONATE)
|
||||||
C.visible_message("\icon[C] *BEEE-*", "\icon[C] *BEEE-*")
|
C.visible_message("[bicon(C)] *BEEE-*", "[bicon(C)] *BEEE-*")
|
||||||
C.explode()
|
C.explode()
|
||||||
|
|
||||||
if(WIRE_TIMED_DET)
|
if(WIRE_TIMED_DET)
|
||||||
C.visible_message("\icon[C] *BEEE-*", "\icon[C] *BEEE-*")
|
C.visible_message("[bicon(C)] *BEEE-*", "[bicon(C)] *BEEE-*")
|
||||||
C.explode()
|
C.explode()
|
||||||
|
|
||||||
if(WIRE_DISARM)
|
if(WIRE_DISARM)
|
||||||
C.visible_message("\icon[C] *click!*", "\icon[C] *click!*")
|
C.visible_message("[bicon(C)] *click!*", "[bicon(C)] *click!*")
|
||||||
new C.mineitemtype(get_turf(C))
|
new C.mineitemtype(get_turf(C))
|
||||||
spawn(0)
|
spawn(0)
|
||||||
qdel(C)
|
qdel(C)
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(WIRE_BADDISARM)
|
if(WIRE_BADDISARM)
|
||||||
C.visible_message("\icon[C] *BEEPBEEPBEEP*", "\icon[C] *BEEPBEEPBEEP*")
|
C.visible_message("[bicon(C)] *BEEPBEEPBEEP*", "[bicon(C)] *BEEPBEEPBEEP*")
|
||||||
spawn(20)
|
spawn(20)
|
||||||
C.explode()
|
C.explode()
|
||||||
return
|
return
|
||||||
@@ -56,24 +56,24 @@
|
|||||||
return
|
return
|
||||||
switch(index)
|
switch(index)
|
||||||
if(WIRE_DETONATE)
|
if(WIRE_DETONATE)
|
||||||
C.visible_message("\icon[C] *beep*", "\icon[C] *beep*")
|
C.visible_message("[bicon(C)] *beep*", "[bicon(C)] *beep*")
|
||||||
|
|
||||||
if(WIRE_TIMED_DET)
|
if(WIRE_TIMED_DET)
|
||||||
C.visible_message("\icon[C] *BEEPBEEPBEEP*", "\icon[C] *BEEPBEEPBEEP*")
|
C.visible_message("[bicon(C)] *BEEPBEEPBEEP*", "[bicon(C)] *BEEPBEEPBEEP*")
|
||||||
spawn(20)
|
spawn(20)
|
||||||
C.explode()
|
C.explode()
|
||||||
|
|
||||||
if(WIRE_DISARM)
|
if(WIRE_DISARM)
|
||||||
C.visible_message("\icon[C] *ping*", "\icon[C] *ping*")
|
C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*")
|
||||||
|
|
||||||
if(WIRE_DUMMY_1)
|
if(WIRE_DUMMY_1)
|
||||||
C.visible_message("\icon[C] *ping*", "\icon[C] *ping*")
|
C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*")
|
||||||
|
|
||||||
if(WIRE_DUMMY_2)
|
if(WIRE_DUMMY_2)
|
||||||
C.visible_message("\icon[C] *beep*", "\icon[C] *beep*")
|
C.visible_message("[bicon(C)] *beep*", "[bicon(C)] *beep*")
|
||||||
|
|
||||||
if(WIRE_BADDISARM)
|
if(WIRE_BADDISARM)
|
||||||
C.visible_message("\icon[C] *ping*", "\icon[C] *ping*")
|
C.visible_message("[bicon(C)] *ping*", "[bicon(C)] *ping*")
|
||||||
return
|
return
|
||||||
|
|
||||||
/datum/wires/mines/CanUse(var/mob/living/L)
|
/datum/wires/mines/CanUse(var/mob/living/L)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ var/const/PARTICLE_LIMIT_POWER_WIRE = 8 // Determines how strong the PA can be.
|
|||||||
C.interface_control = !C.interface_control
|
C.interface_control = !C.interface_control
|
||||||
|
|
||||||
if(PARTICLE_LIMIT_POWER_WIRE)
|
if(PARTICLE_LIMIT_POWER_WIRE)
|
||||||
C.visible_message("\icon[C]<b>[C]</b> makes a large whirring noise.")
|
C.visible_message("[bicon(C)]<b>[C]</b> makes a large whirring noise.")
|
||||||
|
|
||||||
/datum/wires/particle_acc/control_box/UpdateCut(var/index, var/mended)
|
/datum/wires/particle_acc/control_box/UpdateCut(var/index, var/mended)
|
||||||
var/obj/machinery/particle_accelerator/control_box/C = holder
|
var/obj/machinery/particle_accelerator/control_box/C = holder
|
||||||
|
|||||||
@@ -49,20 +49,20 @@
|
|||||||
datum/announcement/proc/Message(message as text, message_title as text)
|
datum/announcement/proc/Message(message as text, message_title as text)
|
||||||
for(var/mob/M in player_list)
|
for(var/mob/M in player_list)
|
||||||
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
||||||
M << "<h2 class='alert'>[title]</h2>"
|
to_chat(M, "<h2 class='alert'>[title]</h2>")
|
||||||
M << "<span class='alert'>[message]</span>"
|
to_chat(M, "<span class='alert'>[message]</span>")
|
||||||
if (announcer)
|
if (announcer)
|
||||||
M << "<span class='alert'> -[html_encode(announcer)]</span>"
|
to_chat(M, "<span class='alert'> -[html_encode(announcer)]</span>")
|
||||||
|
|
||||||
datum/announcement/minor/Message(message as text, message_title as text)
|
datum/announcement/minor/Message(message as text, message_title as text)
|
||||||
world << "<b>[message]</b>"
|
to_world("<b>[message]</b>")
|
||||||
|
|
||||||
datum/announcement/priority/Message(message as text, message_title as text)
|
datum/announcement/priority/Message(message as text, message_title as text)
|
||||||
world << "<h1 class='alert'>[message_title]</h1>"
|
to_world("<h1 class='alert'>[message_title]</h1>")
|
||||||
world << "<span class='alert'>[message]</span>"
|
to_world("<span class='alert'>[message]</span>")
|
||||||
if(announcer)
|
if(announcer)
|
||||||
world << "<span class='alert'> -[html_encode(announcer)]</span>"
|
to_world("<span class='alert'> -[html_encode(announcer)]</span>")
|
||||||
world << "<br>"
|
to_world("<br>")
|
||||||
|
|
||||||
datum/announcement/priority/command/Message(message as text, message_title as text)
|
datum/announcement/priority/command/Message(message as text, message_title as text)
|
||||||
var/command
|
var/command
|
||||||
@@ -74,11 +74,11 @@ datum/announcement/priority/command/Message(message as text, message_title as te
|
|||||||
command += "<br>"
|
command += "<br>"
|
||||||
for(var/mob/M in player_list)
|
for(var/mob/M in player_list)
|
||||||
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
||||||
M << command
|
to_chat(M, command)
|
||||||
|
|
||||||
datum/announcement/priority/security/Message(message as text, message_title as text)
|
datum/announcement/priority/security/Message(message as text, message_title as text)
|
||||||
world << "<font size=4 color='red'>[message_title]</font>"
|
to_world("<font size=4 color='red'>[message_title]</font>")
|
||||||
world << "<font color='red'>[message]</font>"
|
to_world("<font color='red'>[message]</font>")
|
||||||
|
|
||||||
datum/announcement/proc/NewsCast(message as text, message_title as text)
|
datum/announcement/proc/NewsCast(message as text, message_title as text)
|
||||||
if(!newscast)
|
if(!newscast)
|
||||||
|
|||||||
@@ -183,7 +183,7 @@
|
|||||||
else
|
else
|
||||||
f_name += "oil-stained [name][infix]."
|
f_name += "oil-stained [name][infix]."
|
||||||
|
|
||||||
to_chat(user, "\icon[src] That's [f_name] [suffix]")
|
to_chat(user, "[bicon(src)] That's [f_name] [suffix]")
|
||||||
to_chat(user,desc)
|
to_chat(user,desc)
|
||||||
|
|
||||||
return distance == -1 || (get_dist(src, user) <= distance)
|
return distance == -1 || (get_dist(src, user) <= distance)
|
||||||
|
|||||||
@@ -538,15 +538,15 @@ proc/get_nt_opposed()
|
|||||||
set category = "OOC"
|
set category = "OOC"
|
||||||
|
|
||||||
if(!ticker || !ticker.mode)
|
if(!ticker || !ticker.mode)
|
||||||
to_chat(usr, "Something is terribly wrong; there is no gametype.")
|
to_chat(usr, "<span class='warning'>Something is terribly wrong; there is no gametype.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(master_mode != "secret")
|
if(master_mode != "secret")
|
||||||
to_chat(usr, "<b>The roundtype is [capitalize(ticker.mode.name)]</b>")
|
to_chat(usr, "<span class='notice'><b>The roundtype is [capitalize(ticker.mode.name)]</b></span>")
|
||||||
if(ticker.mode.round_description)
|
if(ticker.mode.round_description)
|
||||||
to_chat(usr, "<i>[ticker.mode.round_description]</i>")
|
to_chat(usr, "<span class='notice'><i>[ticker.mode.round_description]</i></span>")
|
||||||
if(ticker.mode.extended_round_description)
|
if(ticker.mode.extended_round_description)
|
||||||
to_chat(usr, "[ticker.mode.extended_round_description]")
|
to_chat(usr, "<span class='notice'>[ticker.mode.extended_round_description]</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "<i>Shhhh</i>. It's a secret.")
|
to_chat(usr, "<span class='notice'><i>Shhhh</i>. It's a secret.</span>")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
dat += "<a href='?src=\ref[src];item=1'>Recover object</a>.<br>"
|
dat += "<a href='?src=\ref[src];item=1'>Recover object</a>.<br>"
|
||||||
dat += "<a href='?src=\ref[src];allitems=1'>Recover all objects</a>.<br>"
|
dat += "<a href='?src=\ref[src];allitems=1'>Recover all objects</a>.<br>"
|
||||||
|
|
||||||
to_chat(user, browse(dat, "window=cryopod_console"))
|
user << browse(dat, "window=cryopod_console")
|
||||||
onclose(user, "cryopod_console")
|
onclose(user, "cryopod_console")
|
||||||
|
|
||||||
/obj/machinery/computer/cryopod/Topic(href, href_list)
|
/obj/machinery/computer/cryopod/Topic(href, href_list)
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
dat += "[person]<br/>"
|
dat += "[person]<br/>"
|
||||||
dat += "<hr/>"
|
dat += "<hr/>"
|
||||||
|
|
||||||
to_chat(user, browse(dat, "window=cryolog"))
|
user << browse(dat, "window=cryolog")
|
||||||
|
|
||||||
if(href_list["view"])
|
if(href_list["view"])
|
||||||
if(!allow_items) return
|
if(!allow_items) return
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
dat += "[I.name]<br/>"
|
dat += "[I.name]<br/>"
|
||||||
dat += "<hr/>"
|
dat += "<hr/>"
|
||||||
|
|
||||||
to_chat(user, browse(dat, "window=cryoitems"))
|
user << browse(dat, "window=cryoitems")
|
||||||
|
|
||||||
else if(href_list["item"])
|
else if(href_list["item"])
|
||||||
if(!allow_items) return
|
if(!allow_items) return
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ Class Procs:
|
|||||||
|
|
||||||
/obj/machinery/proc/state(var/msg)
|
/obj/machinery/proc/state(var/msg)
|
||||||
for(var/mob/O in hearers(src, null))
|
for(var/mob/O in hearers(src, null))
|
||||||
O.show_message("\icon[src] <span class = 'notice'>[msg]</span>", 2)
|
O.show_message("[bicon(src)] <span class = 'notice'>[msg]</span>", 2)
|
||||||
|
|
||||||
/obj/machinery/proc/ping(text=null)
|
/obj/machinery/proc/ping(text=null)
|
||||||
if(!text)
|
if(!text)
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
var/icon/I = imap[1+(ix + icx*iy)*2]
|
var/icon/I = imap[1+(ix + icx*iy)*2]
|
||||||
var/icon/I2 = imap[2+(ix + icx*iy)*2]
|
var/icon/I2 = imap[2+(ix + icx*iy)*2]
|
||||||
|
|
||||||
//to_world("icon: \icon[I]")
|
//to_world("icon: [bicon(I)]")
|
||||||
|
|
||||||
I.DrawBox(colour, rx, ry, rx+1, ry+1)
|
I.DrawBox(colour, rx, ry, rx+1, ry+1)
|
||||||
|
|
||||||
@@ -153,7 +153,7 @@
|
|||||||
|
|
||||||
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
|
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
|
||||||
|
|
||||||
//to_world("\icon[I] at [H.screen_loc]")
|
//to_world("[bicon(I)] at [H.screen_loc]")
|
||||||
|
|
||||||
H.name = (i==0)?"maprefresh":"map"
|
H.name = (i==0)?"maprefresh":"map"
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@
|
|||||||
//to_world("trying [ix],[iy] : [ix+icx*iy]")
|
//to_world("trying [ix],[iy] : [ix+icx*iy]")
|
||||||
var/icon/I = imap[1+(ix + icx*iy)]
|
var/icon/I = imap[1+(ix + icx*iy)]
|
||||||
|
|
||||||
//to_world("icon: \icon[I]")
|
//to_world("icon: [bicon(I)]")
|
||||||
|
|
||||||
I.DrawBox(colour, rx, ry, rx, ry)
|
I.DrawBox(colour, rx, ry, rx, ry)
|
||||||
|
|
||||||
@@ -279,7 +279,7 @@
|
|||||||
|
|
||||||
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
|
H.screen_loc = "[5 + i%icx],[6+ round(i/icx)]"
|
||||||
|
|
||||||
//to_world("\icon[I] at [H.screen_loc]")
|
//to_world("[bicon(I)] at [H.screen_loc]")
|
||||||
|
|
||||||
H.name = (i==0)?"maprefresh":"map"
|
H.name = (i==0)?"maprefresh":"map"
|
||||||
|
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
|
|||||||
screen = RCS_SENTPASS
|
screen = RCS_SENTPASS
|
||||||
message_log += "<B>Message sent to [recipient]</B><BR>[message]"
|
message_log += "<B>Message sent to [recipient]</B><BR>[message]"
|
||||||
else
|
else
|
||||||
audible_message(text("\icon[src] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4)
|
audible_message(text("[bicon(src)] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4)
|
||||||
|
|
||||||
//Handle screen switching
|
//Handle screen switching
|
||||||
if(href_list["setScreen"])
|
if(href_list["setScreen"])
|
||||||
|
|||||||
@@ -931,7 +931,7 @@
|
|||||||
|
|
||||||
/obj/machinery/suit_cycler/proc/finished_job()
|
/obj/machinery/suit_cycler/proc/finished_job()
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
T.visible_message("\icon[src]<span class='notice'>The [src] beeps several times.</span>")
|
T.visible_message("[bicon(src)]<span class='notice'>The [src] beeps several times.</span>")
|
||||||
icon_state = initial(icon_state)
|
icon_state = initial(icon_state)
|
||||||
active = 0
|
active = 0
|
||||||
playsound(src, 'sound/machines/boobeebeep.ogg', 50)
|
playsound(src, 'sound/machines/boobeebeep.ogg', 50)
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
|||||||
var/part_b_extra = ""
|
var/part_b_extra = ""
|
||||||
if(data == 3) // intercepted radio message
|
if(data == 3) // intercepted radio message
|
||||||
part_b_extra = " <i>(Intercepted)</i>"
|
part_b_extra = " <i>(Intercepted)</i>"
|
||||||
var/part_a = "<span class='[frequency_span_class(display_freq)]'>\icon[radio]<b>\[[freq_text]\][part_b_extra]</b> <span class='name'>" // goes in the actual output
|
var/part_a = "<span class='[frequency_span_class(display_freq)]'>[bicon(radio)]<b>\[[freq_text]\][part_b_extra]</b> <span class='name'>" // goes in the actual output
|
||||||
|
|
||||||
// --- Some more pre-message formatting ---
|
// --- Some more pre-message formatting ---
|
||||||
var/part_b = "</span> <span class='message'>" // Tweaked for security headsets -- TLE
|
var/part_b = "</span> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||||
@@ -547,7 +547,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
|||||||
// Create a radio headset for the sole purpose of using its icon
|
// Create a radio headset for the sole purpose of using its icon
|
||||||
var/obj/item/device/radio/headset/radio = new
|
var/obj/item/device/radio/headset/radio = new
|
||||||
|
|
||||||
var/part_b = "</span><b> \icon[radio]\[[freq_text]\][part_b_extra]</b> <span class='message'>" // Tweaked for security headsets -- TLE
|
var/part_b = "</span><b> [bicon(radio)]\[[freq_text]\][part_b_extra]</b> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||||
var/part_blackbox_b = "</span><b> \[[freq_text]\]</b> <span class='message'>" // Tweaked for security headsets -- TLE
|
var/part_blackbox_b = "</span><b> \[[freq_text]\]</b> <span class='message'>" // Tweaked for security headsets -- TLE
|
||||||
var/part_c = "</span></span>"
|
var/part_c = "</span></span>"
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,7 @@
|
|||||||
|
|
||||||
dat += "</font>"
|
dat += "</font>"
|
||||||
temp = ""
|
temp = ""
|
||||||
to_chat(user, browse(dat, "window=tcommachine;size=520x500;can_resize=0"))
|
user << browse(dat, "window=tcommachine;size=520x500;can_resize=0")
|
||||||
onclose(user, "dormitory")
|
onclose(user, "dormitory")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,7 @@
|
|||||||
|
|
||||||
// This is not a status display message, since it's something the character
|
// This is not a status display message, since it's something the character
|
||||||
// themselves is meant to see BEFORE putting the money in
|
// themselves is meant to see BEFORE putting the money in
|
||||||
to_chat(usr, "\icon[cashmoney] <span class='warning'>That is not enough money.</span>")
|
to_chat(usr, "[bicon(cashmoney)] <span class='warning'>That is not enough money.</span>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(istype(cashmoney, /obj/item/weapon/spacecash))
|
if(istype(cashmoney, /obj/item/weapon/spacecash))
|
||||||
|
|||||||
@@ -231,7 +231,7 @@
|
|||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message)
|
/obj/item/mecha_parts/mecha_equipment/proc/occupant_message(message)
|
||||||
if(chassis)
|
if(chassis)
|
||||||
chassis.occupant_message("\icon[src] [message]")
|
chassis.occupant_message("[bicon(src)] [message]")
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/proc/log_message(message)
|
/obj/item/mecha_parts/mecha_equipment/proc/log_message(message)
|
||||||
|
|||||||
@@ -177,20 +177,20 @@
|
|||||||
switch(emagged)
|
switch(emagged)
|
||||||
if(0)
|
if(0)
|
||||||
emagged = 0.5
|
emagged = 0.5
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"DB error \[Code 0x00F1\]\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"DB error \[Code 0x00F1\]\"")
|
||||||
sleep(10)
|
sleep(10)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"Attempting auto-repair\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"Attempting auto-repair\"")
|
||||||
sleep(15)
|
sleep(15)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
|
||||||
sleep(30)
|
sleep(30)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"")
|
||||||
req_access = null
|
req_access = null
|
||||||
emagged = 1
|
emagged = 1
|
||||||
return 1
|
return 1
|
||||||
if(0.5)
|
if(0.5)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"DB not responding \[Code 0x0003\]...\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"DB not responding \[Code 0x0003\]...\"")
|
||||||
if(1)
|
if(1)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"No records in User DB\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"No records in User DB\"")
|
||||||
|
|
||||||
/obj/machinery/mecha_part_fabricator/proc/update_busy()
|
/obj/machinery/mecha_part_fabricator/proc/update_busy()
|
||||||
if(queue.len)
|
if(queue.len)
|
||||||
|
|||||||
@@ -225,20 +225,20 @@
|
|||||||
switch(emagged)
|
switch(emagged)
|
||||||
if(0)
|
if(0)
|
||||||
emagged = 0.5
|
emagged = 0.5
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"DB error \[Code 0x00F1\]\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"DB error \[Code 0x00F1\]\"")
|
||||||
sleep(10)
|
sleep(10)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"Attempting auto-repair\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"Attempting auto-repair\"")
|
||||||
sleep(15)
|
sleep(15)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"User DB corrupted \[Code 0x00FA\]. Truncating data structure...\"")
|
||||||
sleep(30)
|
sleep(30)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"User DB truncated. Please contact your [using_map.company_name] system operator for future assistance.\"")
|
||||||
req_access = null
|
req_access = null
|
||||||
emagged = 1
|
emagged = 1
|
||||||
return 1
|
return 1
|
||||||
if(0.5)
|
if(0.5)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"DB not responding \[Code 0x0003\]...\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"DB not responding \[Code 0x0003\]...\"")
|
||||||
if(1)
|
if(1)
|
||||||
visible_message("\icon[src] <b>[src]</b> beeps: \"No records in User DB\"")
|
visible_message("[bicon(src)] <b>[src]</b> beeps: \"No records in User DB\"")
|
||||||
|
|
||||||
/obj/machinery/pros_fabricator/proc/update_busy()
|
/obj/machinery/pros_fabricator/proc/update_busy()
|
||||||
if(queue.len)
|
if(queue.len)
|
||||||
|
|||||||
@@ -283,7 +283,7 @@
|
|||||||
if(equipment && equipment.len)
|
if(equipment && equipment.len)
|
||||||
to_chat(user, "It's equipped with:")
|
to_chat(user, "It's equipped with:")
|
||||||
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
|
for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
|
||||||
to_chat(user, "\icon[ME] [ME]")
|
to_chat(user, "[bicon(ME)] [ME]")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
@@ -1642,7 +1642,7 @@
|
|||||||
/obj/mecha/proc/occupant_message(message as text)
|
/obj/mecha/proc/occupant_message(message as text)
|
||||||
if(message)
|
if(message)
|
||||||
if(src.occupant && src.occupant.client)
|
if(src.occupant && src.occupant.client)
|
||||||
to_chat(src.occupant, "\icon[src] [message]")
|
to_chat(src.occupant, "[bicon(src)] [message]")
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/mecha/proc/log_message(message as text,red=null)
|
/obj/mecha/proc/log_message(message as text,red=null)
|
||||||
|
|||||||
@@ -655,8 +655,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
// auto update every Master Controller tick
|
// auto update every Master Controller tick
|
||||||
ui.set_auto_update(auto_update)
|
ui.set_auto_update(auto_update)
|
||||||
|
|
||||||
//NOTE: graphic resources are loaded on client login
|
|
||||||
/obj/item/device/pda/attack_self(mob/user as mob)
|
/obj/item/device/pda/attack_self(mob/user as mob)
|
||||||
|
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/pda)
|
||||||
|
assets.send(user)
|
||||||
|
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
|
|
||||||
@@ -1146,7 +1147,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if (!beep_silent)
|
if (!beep_silent)
|
||||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(2, loc))
|
for (var/mob/O in hearers(2, loc))
|
||||||
O.show_message(text("\icon[src] *[message_tone]*"))
|
O.show_message(text("[bicon(src)] *[message_tone]*"))
|
||||||
//Search for holder of the PDA.
|
//Search for holder of the PDA.
|
||||||
var/mob/living/L = null
|
var/mob/living/L = null
|
||||||
if(loc && isliving(loc))
|
if(loc && isliving(loc))
|
||||||
@@ -1161,7 +1162,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
SSnanoui.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
|
SSnanoui.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
|
||||||
|
|
||||||
/obj/item/device/pda/proc/new_news(var/message)
|
/obj/item/device/pda/proc/new_news(var/message)
|
||||||
new_info(news_silent, newstone, news_silent ? "" : "\icon[src] <b>[message]</b>")
|
new_info(news_silent, newstone, news_silent ? "" : "[bicon(src)] <b>[message]</b>")
|
||||||
|
|
||||||
if(!news_silent)
|
if(!news_silent)
|
||||||
new_news = 1
|
new_news = 1
|
||||||
@@ -1176,7 +1177,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
new_message(sending_device, sending_device.owner, sending_device.ownjob, message)
|
new_message(sending_device, sending_device.owner, sending_device.ownjob, message)
|
||||||
|
|
||||||
/obj/item/device/pda/proc/new_message(var/sending_unit, var/sender, var/sender_job, var/message, var/reply = 1)
|
/obj/item/device/pda/proc/new_message(var/sending_unit, var/sender, var/sender_job, var/message, var/reply = 1)
|
||||||
var/reception_message = "\icon[src] <b>Message from [sender] ([sender_job]), </b>\"[message]\" ([reply ? "<a href='byond://?src=\ref[src];choice=Message;notap=[istype(loc, /mob/living/silicon)];skiprefresh=1;target=\ref[sending_unit]'>Reply</a>" : "Unable to Reply"])"
|
var/reception_message = "[bicon(src)] <b>Message from [sender] ([sender_job]), </b>\"[message]\" ([reply ? "<a href='byond://?src=\ref[src];choice=Message;notap=[istype(loc, /mob/living/silicon)];skiprefresh=1;target=\ref[sending_unit]'>Reply</a>" : "Unable to Reply"])"
|
||||||
new_info(message_silent, ttone, reception_message)
|
new_info(message_silent, ttone, reception_message)
|
||||||
|
|
||||||
log_pda("(PDA: [sending_unit]) sent \"[message]\" to [name]", usr)
|
log_pda("(PDA: [sending_unit]) sent \"[message]\" to [name]", usr)
|
||||||
@@ -1188,7 +1189,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if(ismob(sending_unit.loc) && isAI(loc))
|
if(ismob(sending_unit.loc) && isAI(loc))
|
||||||
track = "(<a href='byond://?src=\ref[loc];track=\ref[sending_unit.loc];trackname=[html_encode(sender)]'>Follow</a>)"
|
track = "(<a href='byond://?src=\ref[loc];track=\ref[sending_unit.loc];trackname=[html_encode(sender)]'>Follow</a>)"
|
||||||
|
|
||||||
var/reception_message = "\icon[src] <b>Message from [sender] ([sender_job]), </b>\"[message]\" (<a href='byond://?src=\ref[src];choice=Message;notap=1;skiprefresh=1;target=\ref[sending_unit]'>Reply</a>) [track]"
|
var/reception_message = "[bicon(src)] <b>Message from [sender] ([sender_job]), </b>\"[message]\" (<a href='byond://?src=\ref[src];choice=Message;notap=1;skiprefresh=1;target=\ref[sending_unit]'>Reply</a>) [track]"
|
||||||
new_info(message_silent, newstone, reception_message)
|
new_info(message_silent, newstone, reception_message)
|
||||||
|
|
||||||
log_pda("(PDA: [sending_unit]) sent \"[message]\" to [name]",usr)
|
log_pda("(PDA: [sending_unit]) sent \"[message]\" to [name]",usr)
|
||||||
|
|||||||
@@ -94,22 +94,22 @@
|
|||||||
if(new_state != old_state)
|
if(new_state != old_state)
|
||||||
switch(new_state)
|
switch(new_state)
|
||||||
if(PROXIMITY_OFF_CAMERANET)
|
if(PROXIMITY_OFF_CAMERANET)
|
||||||
to_chat(carrier, "<span class='notice'>\icon[src] Now outside of camera network.</span>")
|
to_chat(carrier, "<span class='notice'>[bicon(src)] Now outside of camera network.</span>")
|
||||||
carrier << 'sound/machines/defib_failed.ogg'
|
carrier << 'sound/machines/defib_failed.ogg'
|
||||||
if(PROXIMITY_NONE)
|
if(PROXIMITY_NONE)
|
||||||
to_chat(carrier, "<span class='notice'>\icon[src] Now within camera network, AI and cameras unfocused.</span>")
|
to_chat(carrier, "<span class='notice'>[bicon(src)] Now within camera network, AI and cameras unfocused.</span>")
|
||||||
carrier << 'sound/machines/defib_safetyOff.ogg'
|
carrier << 'sound/machines/defib_safetyOff.ogg'
|
||||||
if(PROXIMITY_NEAR)
|
if(PROXIMITY_NEAR)
|
||||||
to_chat(carrier, "<span class='warning'>\icon[src] Warning: AI focus at nearby location.</span>")
|
to_chat(carrier, "<span class='warning'>[bicon(src)] Warning: AI focus at nearby location.</span>")
|
||||||
carrier << 'sound/machines/defib_SafetyOn.ogg'
|
carrier << 'sound/machines/defib_SafetyOn.ogg'
|
||||||
if(PROXIMITY_ON_SCREEN)
|
if(PROXIMITY_ON_SCREEN)
|
||||||
to_chat(carrier, "<font size='3'><span class='danger'>\icon[src] Alert: AI or camera focused at current location!</span></font>")
|
to_chat(carrier, "<font size='3'><span class='danger'>[bicon(src)] Alert: AI or camera focused at current location!</span></font>")
|
||||||
carrier <<'sound/machines/defib_ready.ogg'
|
carrier <<'sound/machines/defib_ready.ogg'
|
||||||
if(PROXIMITY_TRACKING)
|
if(PROXIMITY_TRACKING)
|
||||||
to_chat(carrier, "<font size='3'><span class='danger'>\icon[src] Danger: AI is actively tracking you!</span></font>")
|
to_chat(carrier, "<font size='3'><span class='danger'>[bicon(src)] Danger: AI is actively tracking you!</span></font>")
|
||||||
carrier << 'sound/machines/defib_success.ogg'
|
carrier << 'sound/machines/defib_success.ogg'
|
||||||
if(PROXIMITY_TRACKING_FAIL)
|
if(PROXIMITY_TRACKING_FAIL)
|
||||||
to_chat(carrier, "<font size='3'><span class='danger'>\icon[src] Danger: AI is attempting to actively track you, but you are outside of the camera network!</span></font>")
|
to_chat(carrier, "<font size='3'><span class='danger'>[bicon(src)] Danger: AI is attempting to actively track you, but you are outside of the camera network!</span></font>")
|
||||||
carrier <<'sound/machines/defib_ready.ogg'
|
carrier <<'sound/machines/defib_ready.ogg'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
|||||||
/obj/item/device/communicator/Destroy()
|
/obj/item/device/communicator/Destroy()
|
||||||
for(var/mob/living/voice/voice in contents)
|
for(var/mob/living/voice/voice in contents)
|
||||||
voice_mobs.Remove(voice)
|
voice_mobs.Remove(voice)
|
||||||
to_chat(voice, "<span class='danger'>\icon[src] Connection timed out with remote host.</span>")
|
to_chat(voice, "<span class='danger'>[bicon(src)] Connection timed out with remote host.</span>")
|
||||||
qdel(voice)
|
qdel(voice)
|
||||||
close_connection(reason = "Connection timed out")
|
close_connection(reason = "Connection timed out")
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
if(src in comm.voice_invites)
|
if(src in comm.voice_invites)
|
||||||
comm.open_connection(src)
|
comm.open_connection(src)
|
||||||
return
|
return
|
||||||
to_chat(src, "<span class='notice'>\icon[origin_atom] Receiving communicator request from [origin_atom]. To answer, use the <b>Call Communicator</b> \
|
to_chat(src, "<span class='notice'>[bicon(origin_atom)] Receiving communicator request from [origin_atom]. To answer, use the <b>Call Communicator</b> \
|
||||||
verb, and select that name to answer the call.</span>")
|
verb, and select that name to answer the call.</span>")
|
||||||
src << 'sound/machines/defib_SafetyOn.ogg'
|
src << 'sound/machines/defib_SafetyOn.ogg'
|
||||||
comm.voice_invites |= src
|
comm.voice_invites |= src
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
random = random / 10
|
random = random / 10
|
||||||
exonet.send_message(origin_address, "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms")
|
exonet.send_message(origin_address, "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms")
|
||||||
if(message == "text")
|
if(message == "text")
|
||||||
to_chat(src, "<span class='notice'>\icon[origin_atom] Received text message from [origin_atom]: <b>\"[text]\"</b></span>")
|
to_chat(src, "<span class='notice'>[bicon(origin_atom)] Received text message from [origin_atom]: <b>\"[text]\"</b></span>")
|
||||||
src << 'sound/machines/defib_safetyOff.ogg'
|
src << 'sound/machines/defib_safetyOff.ogg'
|
||||||
exonet_messages.Add("<b>From [origin_atom]:</b><br>[text]")
|
exonet_messages.Add("<b>From [origin_atom]:</b><br>[text]")
|
||||||
return
|
return
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
if(ringer)
|
if(ringer)
|
||||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(2, loc))
|
for (var/mob/O in hearers(2, loc))
|
||||||
O.show_message(text("\icon[src] *beep*"))
|
O.show_message(text("[bicon(src)] *beep*"))
|
||||||
|
|
||||||
alert_called = 1
|
alert_called = 1
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
L = loc
|
L = loc
|
||||||
|
|
||||||
if(L)
|
if(L)
|
||||||
to_chat(L, "<span class='notice'>\icon[src] Message from [who].</span>")
|
to_chat(L, "<span class='notice'>[bicon(src)] Message from [who].</span>")
|
||||||
|
|
||||||
// Verb: text_communicator()
|
// Verb: text_communicator()
|
||||||
// Parameters: None
|
// Parameters: None
|
||||||
|
|||||||
@@ -39,15 +39,15 @@
|
|||||||
comm.voice_requests.Remove(src)
|
comm.voice_requests.Remove(src)
|
||||||
|
|
||||||
if(user)
|
if(user)
|
||||||
comm.visible_message("<span class='notice'>\icon[src] Connecting to [src].</span>")
|
comm.visible_message("<span class='notice'>[bicon(src)] Connecting to [src].</span>")
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Attempting to call [comm].</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Attempting to call [comm].</span>")
|
||||||
sleep(10)
|
sleep(10)
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Dialing internally from [station_name()], [system_name()].</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Dialing internally from [station_name()], [system_name()].</span>")
|
||||||
sleep(20) //If they don't have an exonet something is very wrong and we want a runtime.
|
sleep(20) //If they don't have an exonet something is very wrong and we want a runtime.
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Connection re-routed to [comm] at [comm.exonet.address].</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Connection re-routed to [comm] at [comm.exonet.address].</span>")
|
||||||
sleep(40)
|
sleep(40)
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Connection to [comm] at [comm.exonet.address] established.</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Connection to [comm] at [comm.exonet.address] established.</span>")
|
||||||
comm.visible_message("<span class='notice'>\icon[src] Connection to [src] at [exonet.address] established.</span>")
|
comm.visible_message("<span class='notice'>[bicon(src)] Connection to [src] at [exonet.address] established.</span>")
|
||||||
sleep(20)
|
sleep(20)
|
||||||
|
|
||||||
src.add_communicating(comm)
|
src.add_communicating(comm)
|
||||||
@@ -86,28 +86,28 @@
|
|||||||
|
|
||||||
//Now for some connection fluff.
|
//Now for some connection fluff.
|
||||||
if(user)
|
if(user)
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Connecting to [candidate].</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Connecting to [candidate].</span>")
|
||||||
to_chat(new_voice, "<span class='notice'>\icon[src] Attempting to call [src].</span>")
|
to_chat(new_voice, "<span class='notice'>[bicon(src)] Attempting to call [src].</span>")
|
||||||
sleep(10)
|
sleep(10)
|
||||||
to_chat(new_voice, "<span class='notice'>\icon[src] Dialing to [station_name()], Kara Subsystem, [system_name()].</span>")
|
to_chat(new_voice, "<span class='notice'>[bicon(src)] Dialing to [station_name()], Kara Subsystem, [system_name()].</span>")
|
||||||
sleep(20)
|
sleep(20)
|
||||||
to_chat(new_voice, "<span class='notice'>\icon[src] Connecting to [station_name()] telecommunications array.</span>")
|
to_chat(new_voice, "<span class='notice'>[bicon(src)] Connecting to [station_name()] telecommunications array.</span>")
|
||||||
sleep(40)
|
sleep(40)
|
||||||
to_chat(new_voice, "<span class='notice'>\icon[src] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].</span>")
|
to_chat(new_voice, "<span class='notice'>[bicon(src)] Connection to [station_name()] telecommunications array established. Redirecting signal to [src].</span>")
|
||||||
sleep(20)
|
sleep(20)
|
||||||
|
|
||||||
//We're connected, no need to hide everything.
|
//We're connected, no need to hide everything.
|
||||||
new_voice.client.screen.Remove(blackness)
|
new_voice.client.screen.Remove(blackness)
|
||||||
qdel(blackness)
|
qdel(blackness)
|
||||||
|
|
||||||
to_chat(new_voice, "<span class='notice'>\icon[src] Connection to [src] established.</span>")
|
to_chat(new_voice, "<span class='notice'>[bicon(src)] Connection to [src] established.</span>")
|
||||||
to_chat(new_voice, "<b>To talk to the person on the other end of the call, just talk normally.</b>")
|
to_chat(new_voice, "<b>To talk to the person on the other end of the call, just talk normally.</b>")
|
||||||
to_chat(new_voice, "<b>If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.</b>")
|
to_chat(new_voice, "<b>If you want to end the call, use the 'Hang Up' verb. The other person can also hang up at any time.</b>")
|
||||||
to_chat(new_voice, "<b>Remember, your character does not know anything you've learned from observing!</b>")
|
to_chat(new_voice, "<b>Remember, your character does not know anything you've learned from observing!</b>")
|
||||||
if(new_voice.mind)
|
if(new_voice.mind)
|
||||||
new_voice.mind.assigned_role = "Disembodied Voice"
|
new_voice.mind.assigned_role = "Disembodied Voice"
|
||||||
if(user)
|
if(user)
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Your communicator is now connected to [candidate]'s communicator.</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Your communicator is now connected to [candidate]'s communicator.</span>")
|
||||||
|
|
||||||
// Proc: close_connection()
|
// Proc: close_connection()
|
||||||
// Parameters: 3 (user - the user who initiated the disconnect, target - the mob or device being disconnected, reason - string shown when disconnected)
|
// Parameters: 3 (user - the user who initiated the disconnect, target - the mob or device being disconnected, reason - string shown when disconnected)
|
||||||
@@ -120,8 +120,8 @@
|
|||||||
for(var/mob/living/voice/voice in voice_mobs) //Handle ghost-callers
|
for(var/mob/living/voice/voice in voice_mobs) //Handle ghost-callers
|
||||||
if(target && voice != target) //If no target is inputted, it deletes all of them.
|
if(target && voice != target) //If no target is inputted, it deletes all of them.
|
||||||
continue
|
continue
|
||||||
to_chat(voice, "<span class='danger'>\icon[src] [reason].</span>")
|
to_chat(voice, "<span class='danger'>[bicon(src)] [reason].</span>")
|
||||||
visible_message("<span class='danger'>\icon[src] [reason].</span>")
|
visible_message("<span class='danger'>[bicon(src)] [reason].</span>")
|
||||||
voice_mobs.Remove(voice)
|
voice_mobs.Remove(voice)
|
||||||
qdel(voice)
|
qdel(voice)
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -131,8 +131,8 @@
|
|||||||
continue
|
continue
|
||||||
src.del_communicating(comm)
|
src.del_communicating(comm)
|
||||||
comm.del_communicating(src)
|
comm.del_communicating(src)
|
||||||
comm.visible_message("<span class='danger'>\icon[src] [reason].</span>")
|
comm.visible_message("<span class='danger'>[bicon(src)] [reason].</span>")
|
||||||
visible_message("<span class='danger'>\icon[src] [reason].</span>")
|
visible_message("<span class='danger'>[bicon(src)] [reason].</span>")
|
||||||
if(comm.camera && video_source == comm.camera) //We hung up on the person on video
|
if(comm.camera && video_source == comm.camera) //We hung up on the person on video
|
||||||
end_video()
|
end_video()
|
||||||
if(camera && comm.video_source == camera) //We hung up on them while they were watching us
|
if(camera && comm.video_source == camera) //We hung up on them while they were watching us
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
if(ringer)
|
if(ringer)
|
||||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(2, loc))
|
for (var/mob/O in hearers(2, loc))
|
||||||
O.show_message(text("\icon[src] *beep*"))
|
O.show_message(text("[bicon(src)] *beep*"))
|
||||||
|
|
||||||
alert_called = 1
|
alert_called = 1
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
L = loc
|
L = loc
|
||||||
|
|
||||||
if(L)
|
if(L)
|
||||||
to_chat(L, "<span class='notice'>\icon[src] Communications request from [who].</span>")
|
to_chat(L, "<span class='notice'>[bicon(src)] Communications request from [who].</span>")
|
||||||
|
|
||||||
// Proc: del_request()
|
// Proc: del_request()
|
||||||
// Parameters: 1 (candidate - the ghost or communicator to be declined)
|
// Parameters: 1 (candidate - the ghost or communicator to be declined)
|
||||||
@@ -197,13 +197,13 @@
|
|||||||
us = loc
|
us = loc
|
||||||
|
|
||||||
if(us)
|
if(us)
|
||||||
to_chat(us, "<span class='notice'>\icon[src] Declined request.</span>")
|
to_chat(us, "<span class='notice'>[bicon(src)] Declined request.</span>")
|
||||||
|
|
||||||
// Proc: see_emote()
|
// Proc: see_emote()
|
||||||
// Parameters: 2 (M - the mob the emote originated from, text - the emote's contents)
|
// Parameters: 2 (M - the mob the emote originated from, text - the emote's contents)
|
||||||
// Description: Relays the emote to all linked communicators.
|
// Description: Relays the emote to all linked communicators.
|
||||||
/obj/item/device/communicator/see_emote(mob/living/M, text)
|
/obj/item/device/communicator/see_emote(mob/living/M, text)
|
||||||
var/rendered = "\icon[src] <span class='message'>[text]</span>"
|
var/rendered = "[bicon(src)] <span class='message'>[text]</span>"
|
||||||
for(var/obj/item/device/communicator/comm in communicating)
|
for(var/obj/item/device/communicator/comm in communicating)
|
||||||
var/turf/T = get_turf(comm)
|
var/turf/T = get_turf(comm)
|
||||||
if(!T) return
|
if(!T) return
|
||||||
@@ -241,16 +241,16 @@
|
|||||||
var/name_used = M.GetVoice()
|
var/name_used = M.GetVoice()
|
||||||
var/rendered = null
|
var/rendered = null
|
||||||
if(speaking) //Language being used
|
if(speaking) //Language being used
|
||||||
rendered = "<span class='game say'>\icon[src] <span class='name'>[name_used]</span> [speaking.format_message(text, verb)]</span>"
|
rendered = "<span class='game say'>[bicon(src)] <span class='name'>[name_used]</span> [speaking.format_message(text, verb)]</span>"
|
||||||
else
|
else
|
||||||
rendered = "<span class='game say'>\icon[src] <span class='name'>[name_used]</span> [verb], <span class='message'>\"[text]\"</span></span>"
|
rendered = "<span class='game say'>[bicon(src)] <span class='name'>[name_used]</span> [verb], <span class='message'>\"[text]\"</span></span>"
|
||||||
mob.show_message(rendered, 2)
|
mob.show_message(rendered, 2)
|
||||||
|
|
||||||
// Proc: show_message()
|
// Proc: show_message()
|
||||||
// Parameters: 4 (msg - the message, type - number to determine if message is visible or audible, alt - unknown, alt_type - unknown)
|
// Parameters: 4 (msg - the message, type - number to determine if message is visible or audible, alt - unknown, alt_type - unknown)
|
||||||
// Description: Relays the message to all linked communicators.
|
// Description: Relays the message to all linked communicators.
|
||||||
/obj/item/device/communicator/show_message(msg, type, alt, alt_type)
|
/obj/item/device/communicator/show_message(msg, type, alt, alt_type)
|
||||||
var/rendered = "\icon[src] <span class='message'>[msg]</span>"
|
var/rendered = "[bicon(src)] <span class='message'>[msg]</span>"
|
||||||
for(var/obj/item/device/communicator/comm in communicating)
|
for(var/obj/item/device/communicator/comm in communicating)
|
||||||
var/turf/T = get_turf(comm)
|
var/turf/T = get_turf(comm)
|
||||||
if(!T) return
|
if(!T) return
|
||||||
@@ -331,14 +331,14 @@
|
|||||||
to_chat(user, "<span class='danger'>You cannot see well enough to do that!</span>")
|
to_chat(user, "<span class='danger'>You cannot see well enough to do that!</span>")
|
||||||
|
|
||||||
if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something
|
if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something
|
||||||
to_chat(user, "<span class='danger'>\icon[src]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.</span>")
|
to_chat(user, "<span class='danger'>[bicon(src)]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning.</span>")
|
||||||
|
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Attempting to start video over existing call.</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Attempting to start video over existing call.</span>")
|
||||||
sleep(30)
|
sleep(30)
|
||||||
to_chat(user, "<span class='notice'>\icon[src] Please wait...</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] Please wait...</span>")
|
||||||
|
|
||||||
video_source = comm.camera
|
video_source = comm.camera
|
||||||
comm.visible_message("<span class='danger'>\icon[src] New video connection from [comm].</span>")
|
comm.visible_message("<span class='danger'>[bicon(src)] New video connection from [comm].</span>")
|
||||||
watch_video(user)
|
watch_video(user)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
@@ -377,7 +377,7 @@
|
|||||||
/obj/item/device/communicator/proc/end_video(var/reason)
|
/obj/item/device/communicator/proc/end_video(var/reason)
|
||||||
video_source = null
|
video_source = null
|
||||||
|
|
||||||
. = "<span class='danger'>\icon[src] [reason ? reason : "Video session ended"].</span>"
|
. = "<span class='danger'>[bicon(src)] [reason ? reason : "Video session ended"].</span>"
|
||||||
|
|
||||||
visible_message(.)
|
visible_message(.)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
scanning = !scanning
|
scanning = !scanning
|
||||||
update_icon()
|
update_icon()
|
||||||
update_sound()
|
update_sound()
|
||||||
to_chat(user, "<span class='notice'>\icon[src] You switch [scanning ? "on" : "off"] \the [src].</span>")
|
to_chat(user, "<span class='notice'>[bicon(src)] You switch [scanning ? "on" : "off"] \the [src].</span>")
|
||||||
|
|
||||||
/obj/item/device/geiger/update_icon()
|
/obj/item/device/geiger/update_icon()
|
||||||
if(!scanning)
|
if(!scanning)
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
to_chat(user, "<span class='warning'>You are already hacking!</span>")
|
to_chat(user, "<span class='warning'>You are already hacking!</span>")
|
||||||
return 0
|
return 0
|
||||||
if(!is_type_in_list(target, supported_types))
|
if(!is_type_in_list(target, supported_types))
|
||||||
to_chat(user, "\icon[src] <span class='warning'>Unable to hack this target!</span>")
|
to_chat(user, "[bicon(src)] <span class='warning'>Unable to hack this target!</span>")
|
||||||
return 0
|
return 0
|
||||||
var/found = known_targets.Find(target)
|
var/found = known_targets.Find(target)
|
||||||
if(found)
|
if(found)
|
||||||
|
|||||||
@@ -364,7 +364,7 @@ var/global/list/default_medbay_channels = list(
|
|||||||
var/list/jamming = is_jammed(src)
|
var/list/jamming = is_jammed(src)
|
||||||
if(jamming)
|
if(jamming)
|
||||||
var/distance = jamming["distance"]
|
var/distance = jamming["distance"]
|
||||||
to_chat(M, "<span class='danger'>\icon[src] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.</span>")
|
to_chat(M, "<span class='danger'>[bicon(src)] You hear the [distance <= 2 ? "loud hiss" : "soft hiss"] of static.</span>")
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
// First, we want to generate a new radio signal
|
// First, we want to generate a new radio signal
|
||||||
|
|||||||
@@ -25,4 +25,4 @@
|
|||||||
var/message = sanitize(input(user,"Choose a message to relay to those around you.") as text|null)
|
var/message = sanitize(input(user,"Choose a message to relay to those around you.") as text|null)
|
||||||
if(message)
|
if(message)
|
||||||
var/obj/item/device/text_to_speech/O = src
|
var/obj/item/device/text_to_speech/O = src
|
||||||
audible_message("\icon[O] \The [O.name] states, \"[message]\"")
|
audible_message("[bicon(O)] \The [O.name] states, \"[message]\"")
|
||||||
|
|||||||
@@ -446,7 +446,7 @@
|
|||||||
|
|
||||||
/obj/item/toy/waterflower/examine(mob/user)
|
/obj/item/toy/waterflower/examine(mob/user)
|
||||||
if(..(user, 0))
|
if(..(user, 0))
|
||||||
to_chat(user, "\icon[src] [src.reagents.total_volume] units of water left!")
|
to_chat(user, "[bicon(src)] [src.reagents.total_volume] units of water left!")
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bosun's whistle
|
* Bosun's whistle
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/extinguisher/examine(mob/user)
|
/obj/item/weapon/extinguisher/examine(mob/user)
|
||||||
if(..(user, 0))
|
if(..(user, 0))
|
||||||
to_chat(user, text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume))
|
to_chat(user, "[bicon(src)] [src.name] contains [src.reagents.total_volume] units of water left!")
|
||||||
|
|
||||||
/obj/item/weapon/extinguisher/attack_self(mob/user as mob)
|
/obj/item/weapon/extinguisher/attack_self(mob/user as mob)
|
||||||
safety = !safety
|
safety = !safety
|
||||||
|
|||||||
@@ -91,8 +91,8 @@
|
|||||||
return dat
|
return dat
|
||||||
|
|
||||||
/obj/item/weapon/card/id/attack_self(mob/user as mob)
|
/obj/item/weapon/card/id/attack_self(mob/user as mob)
|
||||||
user.visible_message("\The [user] shows you: \icon[src] [src.name]. The assignment on the card: [src.assignment]",\
|
user.visible_message("\The [user] shows you: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]",\
|
||||||
"You flash your ID card: \icon[src] [src.name]. The assignment on the card: [src.assignment]")
|
"You flash your ID card: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]")
|
||||||
|
|
||||||
src.add_fingerprint(user)
|
src.add_fingerprint(user)
|
||||||
return
|
return
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
set category = "Object"
|
set category = "Object"
|
||||||
set src in usr
|
set src in usr
|
||||||
|
|
||||||
to_chat(usr, "\icon[src] [src.name]: The current assignment on the card is [src.assignment].")
|
to_chat(usr, "[bicon(src)] [src.name]: The current assignment on the card is [src.assignment].")
|
||||||
to_chat(usr, "The blood type on the card is [blood_type].")
|
to_chat(usr, "The blood type on the card is [blood_type].")
|
||||||
to_chat(usr, "The DNA hash on the card is [dna_hash].")
|
to_chat(usr, "The DNA hash on the card is [dna_hash].")
|
||||||
to_chat(usr, "The fingerprint hash on the card is [fingerprint_hash].")
|
to_chat(usr, "The fingerprint hash on the card is [fingerprint_hash].")
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
icon_state = "c-4[size]_1"
|
icon_state = "c-4[size]_1"
|
||||||
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1)
|
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1)
|
||||||
for(var/mob/O in hearers(src, null))
|
for(var/mob/O in hearers(src, null))
|
||||||
O.show_message("\icon[src] <span class = 'warning'> The [src.name] beeps! </span>")
|
O.show_message("[bicon(src)] <span class = 'warning'> The [src.name] beeps! </span>")
|
||||||
sleep(50)
|
sleep(50)
|
||||||
explosion(get_turf(src), devastate, heavy_impact, light_impact, flash_range)
|
explosion(get_turf(src), devastate, heavy_impact, light_impact, flash_range)
|
||||||
for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors.
|
for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors.
|
||||||
|
|||||||
@@ -468,7 +468,7 @@ var/list/global/tank_gauge_cache = list()
|
|||||||
return
|
return
|
||||||
T.assume_air(air_contents)
|
T.assume_air(air_contents)
|
||||||
playsound(get_turf(src), 'sound/weapons/Gunshot_shotgun.ogg', 20, 1)
|
playsound(get_turf(src), 'sound/weapons/Gunshot_shotgun.ogg', 20, 1)
|
||||||
visible_message("\icon[src] <span class='danger'>\The [src] flies apart!</span>", "<span class='warning'>You hear a bang!</span>")
|
visible_message("[bicon(src)] <span class='danger'>\The [src] flies apart!</span>", "<span class='warning'>You hear a bang!</span>")
|
||||||
T.hotspot_expose(air_contents.temperature, 70, 1)
|
T.hotspot_expose(air_contents.temperature, 70, 1)
|
||||||
|
|
||||||
|
|
||||||
@@ -513,7 +513,7 @@ var/list/global/tank_gauge_cache = list()
|
|||||||
|
|
||||||
T.assume_air(leaked_gas)
|
T.assume_air(leaked_gas)
|
||||||
if(!leaking)
|
if(!leaking)
|
||||||
visible_message("\icon[src] <span class='warning'>\The [src] relief valve flips open with a hiss!</span>", "You hear hissing.")
|
visible_message("[bicon(src)] <span class='warning'>\The [src] relief valve flips open with a hiss!</span>", "You hear hissing.")
|
||||||
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3)
|
||||||
leaking = 1
|
leaking = 1
|
||||||
#ifdef FIREDBG
|
#ifdef FIREDBG
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
if(loc == usr && tools.len)
|
if(loc == usr && tools.len)
|
||||||
to_chat(usr, "It has the following fittings:")
|
to_chat(usr, "It has the following fittings:")
|
||||||
for(var/obj/item/tool in tools)
|
for(var/obj/item/tool in tools)
|
||||||
to_chat(usr, "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]")
|
to_chat(usr, "[bicon(tool)] - [tool.name][tools[current_tool]==tool?" (selected)":""]")
|
||||||
|
|
||||||
/obj/item/weapon/combitool/New()
|
/obj/item/weapon/combitool/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
/obj/item/weapon/weldingtool/examine(mob/user)
|
/obj/item/weapon/weldingtool/examine(mob/user)
|
||||||
if(..(user, 0))
|
if(..(user, 0))
|
||||||
if(max_fuel)
|
if(max_fuel)
|
||||||
to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
|
to_chat(user, "[bicon(src)] The [src.name] contains [get_fuel()]/[src.max_fuel] units of fuel!")
|
||||||
|
|
||||||
/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone)
|
/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone)
|
||||||
if(ishuman(A) && user.a_intent == I_HELP)
|
if(ishuman(A) && user.a_intent == I_HELP)
|
||||||
@@ -560,9 +560,9 @@
|
|||||||
to_chat(user, desc)
|
to_chat(user, desc)
|
||||||
else
|
else
|
||||||
if(power_supply)
|
if(power_supply)
|
||||||
to_chat(user, "\icon[src] The [src.name] has [get_fuel()] charge left.")
|
to_chat(user, "[bicon(src)] The [src.name] has [get_fuel()] charge left.")
|
||||||
else
|
else
|
||||||
to_chat(user, "\icon[src] The [src.name] has no power cell!")
|
to_chat(user, "[bicon(src)] The [src.name] has no power cell!")
|
||||||
|
|
||||||
/obj/item/weapon/weldingtool/electric/get_fuel()
|
/obj/item/weapon/weldingtool/electric/get_fuel()
|
||||||
if(use_external_power)
|
if(use_external_power)
|
||||||
|
|||||||
@@ -145,7 +145,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/weldpack/examine(mob/user)
|
/obj/item/weapon/weldpack/examine(mob/user)
|
||||||
..(user)
|
..(user)
|
||||||
to_chat(user, "\icon[src] [src.reagents.total_volume] units of fuel left!")
|
to_chat(user, "[bicon(src)] [src.reagents.total_volume] units of fuel left!")
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/weldpack/survival
|
/obj/item/weapon/weldpack/survival
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
/obj/CanUseTopic(var/mob/user, var/datum/topic_state/state = default_state)
|
/obj/CanUseTopic(var/mob/user, var/datum/topic_state/state = default_state)
|
||||||
if(user.CanUseObjTopic(src))
|
if(user.CanUseObjTopic(src))
|
||||||
return ..()
|
return ..()
|
||||||
to_chat(user, "<span class='danger'>\icon[src]Access Denied!</span>")
|
to_chat(user, "<span class='danger'>[bicon(src)]Access Denied!</span>")
|
||||||
return STATUS_CLOSE
|
return STATUS_CLOSE
|
||||||
|
|
||||||
/mob/living/silicon/CanUseObjTopic(var/obj/O)
|
/mob/living/silicon/CanUseObjTopic(var/obj/O)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
|||||||
|
|
||||||
/obj/structure/janitorialcart/examine(mob/user)
|
/obj/structure/janitorialcart/examine(mob/user)
|
||||||
if(..(user, 1))
|
if(..(user, 1))
|
||||||
to_chat(user, "[src] \icon[src] contains [reagents.total_volume] unit\s of liquid!")
|
to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of liquid!")
|
||||||
//everything else is visible, so doesn't need to be mentioned
|
//everything else is visible, so doesn't need to be mentioned
|
||||||
|
|
||||||
|
|
||||||
@@ -189,7 +189,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
|
|||||||
if(!..(user, 1))
|
if(!..(user, 1))
|
||||||
return
|
return
|
||||||
|
|
||||||
to_chat(user, "\icon[src] This [callme] contains [reagents.total_volume] unit\s of water!")
|
to_chat(user, "[bicon(src)] This [callme] contains [reagents.total_volume] unit\s of water!")
|
||||||
if(mybag)
|
if(mybag)
|
||||||
to_chat(user, "\A [mybag] is hanging on the [callme].")
|
to_chat(user, "\A [mybag] is hanging on the [callme].")
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ GLOBAL_LIST_BOILERPLATE(all_mopbuckets, /obj/structure/mopbucket)
|
|||||||
|
|
||||||
/obj/structure/mopbucket/examine(mob/user)
|
/obj/structure/mopbucket/examine(mob/user)
|
||||||
if(..(user, 1))
|
if(..(user, 1))
|
||||||
to_chat(user, "[src] \icon[src] contains [reagents.total_volume] unit\s of water!")
|
to_chat(user, "[src] [bicon(src)] contains [reagents.total_volume] unit\s of water!")
|
||||||
|
|
||||||
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
|
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
|
||||||
if(istype(I, /obj/item/weapon/mop))
|
if(istype(I, /obj/item/weapon/mop))
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ obj/structure/windoor_assembly/Destroy()
|
|||||||
if(src.electronics && istype(src.electronics, /obj/item/weapon/circuitboard/broken))
|
if(src.electronics && istype(src.electronics, /obj/item/weapon/circuitboard/broken))
|
||||||
to_chat(usr,"<span class='warning'>The assembly has broken airlock electronics.</span>")
|
to_chat(usr,"<span class='warning'>The assembly has broken airlock electronics.</span>")
|
||||||
return
|
return
|
||||||
to_chat(usr,browse(null, "window=windoor_access")) //Not sure what this actually does... -Ner
|
usr << browse(null, "window=windoor_access") //Not sure what this actually does... -Ner
|
||||||
playsound(src, W.usesound, 100, 1)
|
playsound(src, W.usesound, 100, 1)
|
||||||
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
|
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
|
||||||
|
|
||||||
|
|||||||
@@ -71,4 +71,5 @@
|
|||||||
msg += "[line]\n"
|
msg += "[line]\n"
|
||||||
|
|
||||||
msg += "<b>Total Players: [length(Lines)]</b>"
|
msg += "<b>Total Players: [length(Lines)]</b>"
|
||||||
|
msg = "<span class='info'>" + msg + "</span>"
|
||||||
to_chat(src, msg)
|
to_chat(src, msg)
|
||||||
@@ -149,12 +149,12 @@
|
|||||||
if(target in admins)
|
if(target in admins)
|
||||||
admin_stuff += "/([key])"
|
admin_stuff += "/([key])"
|
||||||
|
|
||||||
to_chat(target, "<span class='ooc'><span class='looc'>" + create_text_tag("looc", "LOOC:", target) + " <EM>[display_name][admin_stuff]:</EM> <span class='message'>[msg]</span></span></span>")
|
to_chat(target, "<span class='ooc looc'>" + create_text_tag("looc", "LOOC:", target) + " <EM>[display_name][admin_stuff]:</EM> <span class='message'>[msg]</span></span>")
|
||||||
|
|
||||||
for(var/client/target in r_receivers)
|
for(var/client/target in r_receivers)
|
||||||
var/admin_stuff = "/([key])([admin_jump_link(mob, target.holder)])"
|
var/admin_stuff = "/([key])([admin_jump_link(mob, target.holder)])"
|
||||||
|
|
||||||
to_chat(target, "<span class='ooc'><span class='looc'>" + create_text_tag("looc", "LOOC:", target) + " <span class='prefix'>(R)</span><EM>[display_name][admin_stuff]:</EM> <span class='message'>[msg]</span></span></span>")
|
to_chat(target, "<span class='ooc looc'>" + create_text_tag("looc", "LOOC:", target) + " <span class='prefix'>(R)</span><EM>[display_name][admin_stuff]:</EM> <span class='message'>[msg]</span></span>")
|
||||||
|
|
||||||
/mob/proc/get_looc_source()
|
/mob/proc/get_looc_source()
|
||||||
return src
|
return src
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000
|
GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000
|
||||||
|
|
||||||
callHook("startup")
|
callHook("startup")
|
||||||
|
init_vchat()
|
||||||
//Emergency Fix
|
//Emergency Fix
|
||||||
load_mods()
|
load_mods()
|
||||||
//end-emergency fix
|
//end-emergency fix
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
set category = null
|
set category = null
|
||||||
set name = "Admin PM Mob"
|
set name = "Admin PM Mob"
|
||||||
if(!holder)
|
if(!holder)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM-Context: Only administrators may use this command.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM-Context: Only administrators may use this command.</span>")
|
||||||
return
|
return
|
||||||
if( !ismob(M) || !M.client )
|
if( !ismob(M) || !M.client )
|
||||||
return
|
return
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
set name = "Admin PM"
|
set name = "Admin PM"
|
||||||
if(!holder)
|
if(!holder)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM-Panel: Only administrators may use this command.</span>")
|
||||||
return
|
return
|
||||||
var/list/client/targets[0]
|
var/list/client/targets[0]
|
||||||
for(var/client/T)
|
for(var/client/T)
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
/client/proc/cmd_ahelp_reply(whom)
|
/client/proc/cmd_ahelp_reply(whom)
|
||||||
if(prefs.muted & MUTE_ADMINHELP)
|
if(prefs.muted & MUTE_ADMINHELP)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted).</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: You are unable to use admin PM-s (muted).</span>")
|
||||||
return
|
return
|
||||||
var/client/C
|
var/client/C
|
||||||
if(istext(whom))
|
if(istext(whom))
|
||||||
@@ -48,16 +48,16 @@
|
|||||||
C = whom
|
C = whom
|
||||||
if(!C)
|
if(!C)
|
||||||
if(holder)
|
if(holder)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: Client not found.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: Client not found.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
var/datum/admin_help/AH = C.current_ticket
|
var/datum/admin_help/AH = C.current_ticket
|
||||||
|
|
||||||
if(AH)
|
if(AH)
|
||||||
message_admins("[key_name_admin(src)] has started replying to [key_name(C, 0, 0)]'s admin help.")
|
message_admins("<span class='pm'>[key_name_admin(src)] has started replying to [key_name(C, 0, 0)]'s admin help.</span>")
|
||||||
var/msg = input(src,"Message:", "Private message to [key_name(C, 0, 0)]") as text|null
|
var/msg = input(src,"Message:", "Private message to [key_name(C, 0, 0)]") as text|null
|
||||||
if (!msg)
|
if (!msg)
|
||||||
message_admins("[key_name_admin(src)] has cancelled their reply to [key_name(C, 0, 0)]'s admin help.")
|
message_admins("<span class='pm'>[key_name_admin(src)] has cancelled their reply to [key_name(C, 0, 0)]'s admin help.</span>")
|
||||||
return
|
return
|
||||||
cmd_admin_pm(whom, msg, AH)
|
cmd_admin_pm(whom, msg, AH)
|
||||||
|
|
||||||
@@ -65,12 +65,12 @@
|
|||||||
//Fetching a message if needed. src is the sender and C is the target client
|
//Fetching a message if needed. src is the sender and C is the target client
|
||||||
/client/proc/cmd_admin_pm(whom, msg, datum/admin_help/AH)
|
/client/proc/cmd_admin_pm(whom, msg, datum/admin_help/AH)
|
||||||
if(prefs.muted & MUTE_ADMINHELP)
|
if(prefs.muted & MUTE_ADMINHELP)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted).</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: You are unable to use admin PM-s (muted).</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!holder && !current_ticket) //no ticket? https://www.youtube.com/watch?v=iHSPf6x1Fdo
|
if(!holder && !current_ticket) //no ticket? https://www.youtube.com/watch?v=iHSPf6x1Fdo
|
||||||
to_chat(src, "<font color='red'>You can no longer reply to this ticket, please open another one by using the Adminhelp verb if need be.</font>")
|
to_chat(src, "<span class='pm warning'>You can no longer reply to this ticket, please open another one by using the Adminhelp verb if need be.</span>")
|
||||||
to_chat(src, "<font color='blue'>Message: [msg]</font>")
|
to_chat(src, "<span class='pm notice'>Message: [msg]</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
var/client/recipient
|
var/client/recipient
|
||||||
@@ -95,14 +95,14 @@
|
|||||||
if(!msg)
|
if(!msg)
|
||||||
return
|
return
|
||||||
if(holder)
|
if(holder)
|
||||||
to_chat(src, "<font color='red'>Error: Use the admin IRC channel, nerd.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Use the admin IRC channel, nerd.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
if(!recipient)
|
if(!recipient)
|
||||||
if(holder)
|
if(holder)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: Client not found.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: Client not found.</span>")
|
||||||
to_chat(src, msg)
|
to_chat(src, msg)
|
||||||
else
|
else
|
||||||
current_ticket.MessageNoRecipient(msg)
|
current_ticket.MessageNoRecipient(msg)
|
||||||
@@ -116,12 +116,12 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(prefs.muted & MUTE_ADMINHELP)
|
if(prefs.muted & MUTE_ADMINHELP)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: You are unable to use admin PM-s (muted).</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: You are unable to use admin PM-s (muted).</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!recipient)
|
if(!recipient)
|
||||||
if(holder)
|
if(holder)
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: Client not found.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: Client not found.</span>")
|
||||||
else
|
else
|
||||||
current_ticket.MessageNoRecipient(msg)
|
current_ticket.MessageNoRecipient(msg)
|
||||||
return
|
return
|
||||||
@@ -140,27 +140,27 @@
|
|||||||
var/keywordparsedmsg = keywords_lookup(msg)
|
var/keywordparsedmsg = keywords_lookup(msg)
|
||||||
|
|
||||||
if(irc)
|
if(irc)
|
||||||
to_chat(src, "<font color='blue'>PM to-<b>Admins</b>: [rawmsg]</font>")
|
to_chat(src, "<span class='pm notice'>PM to-<b>Admins</b>: [rawmsg]</span>")
|
||||||
admin_ticket_log(src, "<font color='red'>Reply PM from-<b>[key_name(src, TRUE, TRUE)]</b> to <i>IRC</i>: [keywordparsedmsg]</font>")
|
admin_ticket_log(src, "<span class='pm warning'>Reply PM from-<b>[key_name(src, TRUE, TRUE)]</b> to <i>IRC</i>: [keywordparsedmsg]</span>")
|
||||||
ircreplyamount--
|
ircreplyamount--
|
||||||
send2irc("Reply: [ckey]",rawmsg)
|
send2irc("Reply: [ckey]",rawmsg)
|
||||||
else
|
else
|
||||||
if(recipient.holder)
|
if(recipient.holder)
|
||||||
if(holder) //both are admins
|
if(holder) //both are admins
|
||||||
to_chat(recipient, "<font color='red'>Admin PM from-<b>[key_name(src, recipient, 1)]</b>: [keywordparsedmsg]</font>")
|
to_chat(recipient, "<span class='pm warning'>Admin PM from-<b>[key_name(src, recipient, 1)]</b>: [keywordparsedmsg]</span>")
|
||||||
to_chat(src, "<font color='blue'>Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]</font>")
|
to_chat(src, "<span class='pm notice'>Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]</span>")
|
||||||
|
|
||||||
//omg this is dumb, just fill in both their tickets
|
//omg this is dumb, just fill in both their tickets
|
||||||
var/interaction_message = "<font color='purple'>PM from-<b>[key_name(src, recipient, 1)]</b> to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]</font>"
|
var/interaction_message = "<span class='pm notice'>PM from-<b>[key_name(src, recipient, 1)]</b> to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]</span>"
|
||||||
admin_ticket_log(src, interaction_message)
|
admin_ticket_log(src, interaction_message)
|
||||||
if(recipient != src) //reeee
|
if(recipient != src) //reeee
|
||||||
admin_ticket_log(recipient, interaction_message)
|
admin_ticket_log(recipient, interaction_message)
|
||||||
|
|
||||||
else //recipient is an admin but sender is not
|
else //recipient is an admin but sender is not
|
||||||
var/replymsg = "<font color='red'>Reply PM from-<b>[key_name(src, recipient, 1)]</b>: [keywordparsedmsg]</font>"
|
var/replymsg = "<span class='pm warning'>Reply PM from-<b>[key_name(src, recipient, 1)]</b>: [keywordparsedmsg]</span>"
|
||||||
admin_ticket_log(src, replymsg)
|
admin_ticket_log(src, replymsg)
|
||||||
to_chat(recipient, replymsg)
|
to_chat(recipient, replymsg)
|
||||||
to_chat(src, "<font color='blue'>PM to-<b>Admins</b>: [msg]</font>")
|
to_chat(src, "<span class='pm notice'>PM to-<b>Admins</b>: [msg]</span>")
|
||||||
|
|
||||||
//play the recieving admin the adminhelp sound (if they have them enabled)
|
//play the recieving admin the adminhelp sound (if they have them enabled)
|
||||||
if(recipient.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping))
|
if(recipient.is_preference_enabled(/datum/client_preference/holder/play_adminhelp_ping))
|
||||||
@@ -171,12 +171,12 @@
|
|||||||
if(!recipient.current_ticket)
|
if(!recipient.current_ticket)
|
||||||
new /datum/admin_help(msg, recipient, TRUE)
|
new /datum/admin_help(msg, recipient, TRUE)
|
||||||
|
|
||||||
to_chat(recipient, "<font color='red' size='4'><b>-- Administrator private message --</b></font>")
|
to_chat(recipient, "<span class='pm warning' size='4'><b>-- Administrator private message --</b></span>")
|
||||||
to_chat(recipient, "<font color='red'>Admin PM from-<b>[key_name(src, recipient, 0)]</b>: [msg]</font>")
|
to_chat(recipient, "<span class='pm warning'>Admin PM from-<b>[key_name(src, recipient, 0)]</b>: [msg]</span>")
|
||||||
to_chat(recipient, "<font color='red'><i>Click on the administrator's name to reply.</i></font>")
|
to_chat(recipient, "<span class='pm warning'><i>Click on the administrator's name to reply.</i></span>")
|
||||||
to_chat(src, "<font color='blue'>Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [msg]</font>")
|
to_chat(src, "<span class='pm notice'>Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [msg]</span>")
|
||||||
|
|
||||||
admin_ticket_log(recipient, "<font color='blue'>PM From [key_name_admin(src)]: [keywordparsedmsg]</font>")
|
admin_ticket_log(recipient, "<span class='pm notice'>PM From [key_name_admin(src)]: [keywordparsedmsg]</span>")
|
||||||
|
|
||||||
//always play non-admin recipients the adminhelp sound
|
//always play non-admin recipients the adminhelp sound
|
||||||
recipient << 'sound/effects/adminhelp.ogg'
|
recipient << 'sound/effects/adminhelp.ogg'
|
||||||
@@ -195,19 +195,19 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
else //neither are admins
|
else //neither are admins
|
||||||
to_chat(src, "<font color='red'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</font>")
|
to_chat(src, "<span class='pm warning'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if(irc)
|
if(irc)
|
||||||
log_admin("PM: [key_name(src)]->IRC: [rawmsg]")
|
log_admin("PM: [key_name(src)]->IRC: [rawmsg]")
|
||||||
for(var/client/X in admins)
|
for(var/client/X in admins)
|
||||||
to_chat(X, "<font color='blue'><B>PM: [key_name(src, X, 0)]->IRC:</B> [keywordparsedmsg]</font>")
|
to_chat(X, "<span class='pm notice'><B>PM: [key_name(src, X, 0)]->IRC:</B> [keywordparsedmsg]</span>")
|
||||||
else
|
else
|
||||||
log_admin("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]")
|
log_admin("PM: [key_name(src)]->[key_name(recipient)]: [rawmsg]")
|
||||||
//we don't use message_admins here because the sender/receiver might get it too
|
//we don't use message_admins here because the sender/receiver might get it too
|
||||||
for(var/client/X in admins)
|
for(var/client/X in admins)
|
||||||
if(X.key!=key && X.key!=recipient.key) //check client/X is an admin and isn't the sender or recipient
|
if(X.key!=key && X.key!=recipient.key) //check client/X is an admin and isn't the sender or recipient
|
||||||
to_chat(X, "<font color='blue'><B>PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]:</B> [keywordparsedmsg]</font>" )
|
to_chat(X, "<span class='pm notice'><B>PM: [key_name(src, X, 0)]->[key_name(recipient, X, 0)]:</B> [keywordparsedmsg]</span>" )
|
||||||
|
|
||||||
/proc/IrcPm(target,msg,sender)
|
/proc/IrcPm(target,msg,sender)
|
||||||
var/client/C = GLOB.directory[target]
|
var/client/C = GLOB.directory[target]
|
||||||
@@ -256,11 +256,11 @@
|
|||||||
message_admins("IRC message from [sender] to [key_name_admin(C)] : [msg]")
|
message_admins("IRC message from [sender] to [key_name_admin(C)] : [msg]")
|
||||||
log_admin("IRC PM: [sender] -> [key_name(C)] : [msg]")
|
log_admin("IRC PM: [sender] -> [key_name(C)] : [msg]")
|
||||||
|
|
||||||
to_chat(C, "<font color='red' size='4'><b>-- Administrator private message --</b></font>")
|
to_chat(C, "<span class='pm warning'><font size='4'><b>-- Administrator private message --</b></font></span>")
|
||||||
to_chat(C, "<font color='red'>Admin PM from-<b><a href='?priv_msg=[stealthkey]'>[adminname]</A></b>: [msg]</font>")
|
to_chat(C, "<span class='pm warning'>Admin PM from-<b><a href='?priv_msg=[stealthkey]'>[adminname]</A></b>: [msg]</span>")
|
||||||
to_chat(C, "<font color='red'><i>Click on the administrator's name to reply.</i></font>")
|
to_chat(C, "<span class='pm warning'><i>Click on the administrator's name to reply.</i></span>")
|
||||||
|
|
||||||
admin_ticket_log(C, "<font color='blue'>PM From [irc_tagged]: [msg]</font>")
|
admin_ticket_log(C, "<span class='pm notice'>PM From [irc_tagged]: [msg]</span>")
|
||||||
|
|
||||||
window_flash(C, ignorepref = TRUE)
|
window_flash(C, ignorepref = TRUE)
|
||||||
//always play non-admin recipients the adminhelp sound
|
//always play non-admin recipients the adminhelp sound
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/image/cross = image('icons/obj/storage.dmi',"bible")
|
var/image/cross = image('icons/obj/storage.dmi',"bible")
|
||||||
msg = "<font color='blue'>\icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>) (<A HREF='?_src_=holder;adminsmite=\ref[src]'>SMITE</a>):</b> [msg]</font>"
|
msg = "<font color='blue'>[bicon(cross)] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>) (<A HREF='?_src_=holder;adminsmite=\ref[src]'>SMITE</a>):</b> [msg]</font>"
|
||||||
|
|
||||||
for(var/client/C in admins)
|
for(var/client/C in admins)
|
||||||
if(R_ADMIN|R_EVENT & C.holder.rights)
|
if(R_ADMIN|R_EVENT & C.holder.rights)
|
||||||
|
|||||||
@@ -106,7 +106,9 @@
|
|||||||
if (!holder)
|
if (!holder)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/msg = sanitize(input("Message:", text("Enter the text you wish to appear to everyone:")) as text)
|
var/msg = input("Message:", text("Enter the text you wish to appear to everyone:")) as text
|
||||||
|
if(!(msg[1] == "<" && msg[length(msg)] == ">")) //You can use HTML but only if the whole thing is HTML. Tries to prevent admin 'accidents'.
|
||||||
|
msg = sanitize(msg)
|
||||||
|
|
||||||
if (!msg)
|
if (!msg)
|
||||||
return
|
return
|
||||||
@@ -128,7 +130,9 @@
|
|||||||
if(!M)
|
if(!M)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/msg = sanitize(input("Message:", text("Enter the text you wish to appear to your target:")) as text)
|
var/msg = input("Message:", text("Enter the text you wish to appear to your target:")) as text
|
||||||
|
if(!(msg[1] == "<" && msg[length(msg)] == ">")) //You can use HTML but only if the whole thing is HTML. Tries to prevent admin 'accidents'.
|
||||||
|
msg = sanitize(msg)
|
||||||
|
|
||||||
if( !msg )
|
if( !msg )
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -449,7 +449,7 @@
|
|||||||
to_chat(usr, "This can only be done on mobs with clients")
|
to_chat(usr, "This can only be done on mobs with clients")
|
||||||
return
|
return
|
||||||
|
|
||||||
SSnanoui.send_resources(H.client)
|
H.client.send_resources()
|
||||||
|
|
||||||
to_chat(usr, "Resource files sent")
|
to_chat(usr, "Resource files sent")
|
||||||
to_chat(H, "Your NanoUI Resource files have been refreshed")
|
to_chat(H, "Your NanoUI Resource files have been refreshed")
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
/obj/item/device/assembly_holder/process_activation(var/obj/D, var/normal = 1, var/special = 1)
|
/obj/item/device/assembly_holder/process_activation(var/obj/D, var/normal = 1, var/special = 1)
|
||||||
if(!D) return 0
|
if(!D) return 0
|
||||||
if(!secured)
|
if(!secured)
|
||||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
|
||||||
if((normal) && (a_right) && (a_left))
|
if((normal) && (a_right) && (a_left))
|
||||||
if(a_right != D)
|
if(a_right != D)
|
||||||
a_right.pulsed(0)
|
a_right.pulsed(0)
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
if((!secured)||(!on)||(cooldown > 0)) return 0
|
if((!secured)||(!on)||(cooldown > 0)) return 0
|
||||||
pulse(0)
|
pulse(0)
|
||||||
if(!holder)
|
if(!holder)
|
||||||
visible_message("\icon[src] *beep* *beep*")
|
visible_message("[bicon(src)] *beep* *beep*")
|
||||||
cooldown = 2
|
cooldown = 2
|
||||||
spawn(10)
|
spawn(10)
|
||||||
process_cooldown()
|
process_cooldown()
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
/obj/item/device/assembly/prox_sensor/toggle_secure()
|
/obj/item/device/assembly/prox_sensor/toggle_secure()
|
||||||
secured = !secured
|
secured = !secured
|
||||||
if(secured)
|
if(secured)
|
||||||
START_PROCESSING(SSobj, src)
|
START_PROCESSING(SSobj, src)
|
||||||
else
|
else
|
||||||
scanning = 0
|
scanning = 0
|
||||||
timing = 0
|
timing = 0
|
||||||
@@ -46,11 +46,11 @@
|
|||||||
/obj/item/device/assembly/prox_sensor/proc/sense()
|
/obj/item/device/assembly/prox_sensor/proc/sense()
|
||||||
var/turf/mainloc = get_turf(src)
|
var/turf/mainloc = get_turf(src)
|
||||||
// if(scanning && cooldown <= 0)
|
// if(scanning && cooldown <= 0)
|
||||||
// mainloc.visible_message("\icon[src] *boop* *boop*", "*boop* *boop*")
|
// mainloc.visible_message("[bicon(src)] *boop* *boop*", "*boop* *boop*")
|
||||||
if((!holder && !secured)||(!scanning)||(cooldown > 0)) return 0
|
if((!holder && !secured)||(!scanning)||(cooldown > 0)) return 0
|
||||||
pulse(0)
|
pulse(0)
|
||||||
if(!holder)
|
if(!holder)
|
||||||
mainloc.visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
mainloc.visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
|
||||||
cooldown = 2
|
cooldown = 2
|
||||||
spawn(10)
|
spawn(10)
|
||||||
process_cooldown()
|
process_cooldown()
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ Code:
|
|||||||
|
|
||||||
if(!holder)
|
if(!holder)
|
||||||
for(var/mob/O in hearers(1, src.loc))
|
for(var/mob/O in hearers(1, src.loc))
|
||||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
/obj/item/device/assembly/timer/toggle_secure()
|
/obj/item/device/assembly/timer/toggle_secure()
|
||||||
secured = !secured
|
secured = !secured
|
||||||
if(secured)
|
if(secured)
|
||||||
START_PROCESSING(SSobj, src)
|
START_PROCESSING(SSobj, src)
|
||||||
else
|
else
|
||||||
timing = 0
|
timing = 0
|
||||||
STOP_PROCESSING(SSobj, src)
|
STOP_PROCESSING(SSobj, src)
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
if(!secured) return 0
|
if(!secured) return 0
|
||||||
pulse(0)
|
pulse(0)
|
||||||
if(!holder)
|
if(!holder)
|
||||||
visible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
|
visible_message("[bicon(src)] *beep* *beep*", "*beep* *beep*")
|
||||||
cooldown = 2
|
cooldown = 2
|
||||||
spawn(10)
|
spawn(10)
|
||||||
process_cooldown()
|
process_cooldown()
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
recorded = msg
|
recorded = msg
|
||||||
listening = 0
|
listening = 0
|
||||||
var/turf/T = get_turf(src) //otherwise it won't work in hand
|
var/turf/T = get_turf(src) //otherwise it won't work in hand
|
||||||
T.visible_message("\icon[src] beeps, \"Activation message is '[recorded]'.\"")
|
T.visible_message("[bicon(src)] beeps, \"Activation message is '[recorded]'.\"")
|
||||||
else
|
else
|
||||||
if(findtext(msg, recorded))
|
if(findtext(msg, recorded))
|
||||||
pulse(0)
|
pulse(0)
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
if(!holder)
|
if(!holder)
|
||||||
listening = !listening
|
listening = !listening
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
T.visible_message("\icon[src] beeps, \"[listening ? "Now" : "No longer"] recording input.\"")
|
T.visible_message("[bicon(src)] beeps, \"[listening ? "Now" : "No longer"] recording input.\"")
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/assembly/voice/attack_self(mob/user)
|
/obj/item/device/assembly/voice/attack_self(mob/user)
|
||||||
|
|||||||
272
code/modules/client/asset_cache.dm
Normal file
272
code/modules/client/asset_cache.dm
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
/*
|
||||||
|
Asset cache quick users guide:
|
||||||
|
|
||||||
|
Make a datum at the bottom of this file with your assets for your thing.
|
||||||
|
The simple subsystem will most like be of use for most cases.
|
||||||
|
Then call get_asset_datum() with the type of the datum you created and store the return
|
||||||
|
Then call .send(client) on that stored return value.
|
||||||
|
|
||||||
|
You can set verify to TRUE if you want send() to sleep until the client has the assets.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// Amount of time(ds) MAX to send per asset, if this get exceeded we cancel the sleeping.
|
||||||
|
// This is doubled for the first asset, then added per asset after
|
||||||
|
#define ASSET_CACHE_SEND_TIMEOUT 7
|
||||||
|
|
||||||
|
//When sending mutiple assets, how many before we give the client a quaint little sending resources message
|
||||||
|
#define ASSET_CACHE_TELL_CLIENT_AMOUNT 8
|
||||||
|
|
||||||
|
//When passively preloading assets, how many to send at once? Too high creates noticable lag where as too low can flood the client's cache with "verify" files
|
||||||
|
#define ASSET_CACHE_PRELOAD_CONCURRENT 3
|
||||||
|
|
||||||
|
/client
|
||||||
|
var/list/cache = list() // List of all assets sent to this client by the asset cache.
|
||||||
|
var/list/completed_asset_jobs = list() // List of all completed jobs, awaiting acknowledgement.
|
||||||
|
var/list/sending = list()
|
||||||
|
var/last_asset_job = 0 // Last job done.
|
||||||
|
|
||||||
|
//This proc sends the asset to the client, but only if it needs it.
|
||||||
|
//This proc blocks(sleeps) unless verify is set to false
|
||||||
|
/proc/send_asset(var/client/client, var/asset_name, var/verify = TRUE)
|
||||||
|
client = CLIENT_FROM_VAR(client) // Will get client from a mob, or accept a client, or return null
|
||||||
|
if(!istype(client))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(client.cache.Find(asset_name) || client.sending.Find(asset_name))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
client << browse_rsc(SSassets.cache[asset_name], asset_name)
|
||||||
|
if(!verify) // Can't access the asset cache browser, rip.
|
||||||
|
client.cache += asset_name
|
||||||
|
return 1
|
||||||
|
|
||||||
|
client.sending |= asset_name
|
||||||
|
var/job = ++client.last_asset_job
|
||||||
|
|
||||||
|
client << browse({"
|
||||||
|
<script>
|
||||||
|
window.location.href="?asset_cache_confirm_arrival=[job]"
|
||||||
|
</script>
|
||||||
|
"}, "window=asset_cache_browser")
|
||||||
|
|
||||||
|
var/t = 0
|
||||||
|
var/timeout_time = (ASSET_CACHE_SEND_TIMEOUT * client.sending.len) + ASSET_CACHE_SEND_TIMEOUT
|
||||||
|
while(client && !client.completed_asset_jobs.Find(job) && t < timeout_time) // Reception is handled in Topic()
|
||||||
|
sleep(1) // Lock up the caller until this is received.
|
||||||
|
t++
|
||||||
|
|
||||||
|
if(client)
|
||||||
|
client.sending -= asset_name
|
||||||
|
client.cache |= asset_name
|
||||||
|
client.completed_asset_jobs -= job
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
|
//This proc blocks(sleeps) unless verify is set to false
|
||||||
|
/proc/send_asset_list(var/client/client, var/list/asset_list, var/verify = TRUE)
|
||||||
|
client = CLIENT_FROM_VAR(client) // Will get client from a mob, or accept a client, or return null
|
||||||
|
if(!istype(client))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
var/list/unreceived = asset_list - (client.cache + client.sending)
|
||||||
|
if(!unreceived || !unreceived.len)
|
||||||
|
return 0
|
||||||
|
if(unreceived.len >= ASSET_CACHE_TELL_CLIENT_AMOUNT)
|
||||||
|
to_chat(client, "Sending Resources...")
|
||||||
|
for(var/asset in unreceived)
|
||||||
|
if(asset in SSassets.cache)
|
||||||
|
client << browse_rsc(SSassets.cache[asset], asset)
|
||||||
|
|
||||||
|
if(!verify) // Can't access the asset cache browser, rip.
|
||||||
|
client.cache += unreceived
|
||||||
|
return 1
|
||||||
|
|
||||||
|
client.sending |= unreceived
|
||||||
|
var/job = ++client.last_asset_job
|
||||||
|
|
||||||
|
client << browse({"
|
||||||
|
<script>
|
||||||
|
window.location.href="?asset_cache_confirm_arrival=[job]"
|
||||||
|
</script>
|
||||||
|
"}, "window=asset_cache_browser")
|
||||||
|
|
||||||
|
var/t = 0
|
||||||
|
var/timeout_time = ASSET_CACHE_SEND_TIMEOUT * client.sending.len
|
||||||
|
while(client && !client.completed_asset_jobs.Find(job) && t < timeout_time) // Reception is handled in Topic()
|
||||||
|
sleep(1) // Lock up the caller until this is received.
|
||||||
|
t++
|
||||||
|
|
||||||
|
if(client)
|
||||||
|
client.sending -= unreceived
|
||||||
|
client.cache |= unreceived
|
||||||
|
client.completed_asset_jobs -= job
|
||||||
|
|
||||||
|
return 1
|
||||||
|
|
||||||
|
//This proc will download the files without clogging up the browse() queue, used for passively sending files on connection start.
|
||||||
|
//The proc calls procs that sleep for long times.
|
||||||
|
/proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE)
|
||||||
|
var/concurrent_tracker = 1
|
||||||
|
for(var/file in files)
|
||||||
|
if(!client)
|
||||||
|
break
|
||||||
|
if(register_asset)
|
||||||
|
register_asset(file, files[file])
|
||||||
|
if(concurrent_tracker >= ASSET_CACHE_PRELOAD_CONCURRENT)
|
||||||
|
concurrent_tracker = 1
|
||||||
|
send_asset(client, file)
|
||||||
|
else
|
||||||
|
concurrent_tracker++
|
||||||
|
send_asset(client, file, verify = FALSE)
|
||||||
|
sleep(0) //queuing calls like this too quickly can cause issues in some client versions
|
||||||
|
|
||||||
|
//This proc "registers" an asset, it adds it to the cache for further use, you cannot touch it from this point on or you'll fuck things up.
|
||||||
|
//if it's an icon or something be careful, you'll have to copy it before further use.
|
||||||
|
/proc/register_asset(var/asset_name, var/asset)
|
||||||
|
SSassets.cache[asset_name] = asset
|
||||||
|
|
||||||
|
//These datums are used to populate the asset cache, the proc "register()" does this.
|
||||||
|
|
||||||
|
//all of our asset datums, used for referring to these later
|
||||||
|
/var/global/list/asset_datums = list()
|
||||||
|
|
||||||
|
//get a assetdatum or make a new one
|
||||||
|
/proc/get_asset_datum(var/type)
|
||||||
|
if(!(type in asset_datums))
|
||||||
|
return new type()
|
||||||
|
return asset_datums[type]
|
||||||
|
|
||||||
|
/datum/asset/New()
|
||||||
|
asset_datums[type] = src
|
||||||
|
|
||||||
|
/datum/asset/proc/register()
|
||||||
|
return
|
||||||
|
|
||||||
|
/datum/asset/proc/send(client)
|
||||||
|
return
|
||||||
|
|
||||||
|
//If you don't need anything complicated.
|
||||||
|
/datum/asset/simple
|
||||||
|
var/assets = list()
|
||||||
|
var/verify = FALSE
|
||||||
|
|
||||||
|
/datum/asset/simple/register()
|
||||||
|
for(var/asset_name in assets)
|
||||||
|
register_asset(asset_name, assets[asset_name])
|
||||||
|
/datum/asset/simple/send(client)
|
||||||
|
send_asset_list(client,assets,verify)
|
||||||
|
|
||||||
|
|
||||||
|
//DEFINITIONS FOR ASSET DATUMS START HERE.
|
||||||
|
/datum/asset/simple/pda
|
||||||
|
assets = list(
|
||||||
|
"pda_atmos.png" = 'icons/pda_icons/pda_atmos.png',
|
||||||
|
"pda_back.png" = 'icons/pda_icons/pda_back.png',
|
||||||
|
"pda_bell.png" = 'icons/pda_icons/pda_bell.png',
|
||||||
|
"pda_blank.png" = 'icons/pda_icons/pda_blank.png',
|
||||||
|
"pda_boom.png" = 'icons/pda_icons/pda_boom.png',
|
||||||
|
"pda_bucket.png" = 'icons/pda_icons/pda_bucket.png',
|
||||||
|
"pda_crate.png" = 'icons/pda_icons/pda_crate.png',
|
||||||
|
"pda_cuffs.png" = 'icons/pda_icons/pda_cuffs.png',
|
||||||
|
"pda_eject.png" = 'icons/pda_icons/pda_eject.png',
|
||||||
|
"pda_exit.png" = 'icons/pda_icons/pda_exit.png',
|
||||||
|
"pda_flashlight.png" = 'icons/pda_icons/pda_flashlight.png',
|
||||||
|
"pda_honk.png" = 'icons/pda_icons/pda_honk.png',
|
||||||
|
"pda_mail.png" = 'icons/pda_icons/pda_mail.png',
|
||||||
|
"pda_medical.png" = 'icons/pda_icons/pda_medical.png',
|
||||||
|
"pda_menu.png" = 'icons/pda_icons/pda_menu.png',
|
||||||
|
"pda_mule.png" = 'icons/pda_icons/pda_mule.png',
|
||||||
|
"pda_notes.png" = 'icons/pda_icons/pda_notes.png',
|
||||||
|
"pda_power.png" = 'icons/pda_icons/pda_power.png',
|
||||||
|
"pda_rdoor.png" = 'icons/pda_icons/pda_rdoor.png',
|
||||||
|
"pda_reagent.png" = 'icons/pda_icons/pda_reagent.png',
|
||||||
|
"pda_refresh.png" = 'icons/pda_icons/pda_refresh.png',
|
||||||
|
"pda_scanner.png" = 'icons/pda_icons/pda_scanner.png',
|
||||||
|
"pda_signaler.png" = 'icons/pda_icons/pda_signaler.png',
|
||||||
|
"pda_status.png" = 'icons/pda_icons/pda_status.png'
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/asset/simple/generic
|
||||||
|
assets = list(
|
||||||
|
"search.js" = 'html/search.js',
|
||||||
|
"panels.css" = 'html/panels.css',
|
||||||
|
"loading.gif" = 'html/images/loading.gif',
|
||||||
|
"ntlogo.png" = 'html/images/ntlogo.png',
|
||||||
|
"sglogo.png" = 'html/images/sglogo.png',
|
||||||
|
"talisman.png" = 'html/images/talisman.png',
|
||||||
|
"paper_bg.png" = 'html/images/paper_bg.png',
|
||||||
|
"no_image32.png" = 'html/images/no_image32.png',
|
||||||
|
"sos_1.png" = 'icons/spideros_icons/sos_1.png',
|
||||||
|
"sos_2.png" = 'icons/spideros_icons/sos_2.png',
|
||||||
|
"sos_3.png" = 'icons/spideros_icons/sos_3.png',
|
||||||
|
"sos_4.png" = 'icons/spideros_icons/sos_4.png',
|
||||||
|
"sos_5.png" = 'icons/spideros_icons/sos_5.png',
|
||||||
|
"sos_6.png" = 'icons/spideros_icons/sos_6.png',
|
||||||
|
"sos_7.png" = 'icons/spideros_icons/sos_7.png',
|
||||||
|
"sos_8.png" = 'icons/spideros_icons/sos_8.png',
|
||||||
|
"sos_9.png" = 'icons/spideros_icons/sos_9.png',
|
||||||
|
"sos_10.png" = 'icons/spideros_icons/sos_10.png',
|
||||||
|
"sos_11.png" = 'icons/spideros_icons/sos_11.png',
|
||||||
|
"sos_12.png" = 'icons/spideros_icons/sos_12.png',
|
||||||
|
"sos_13.png" = 'icons/spideros_icons/sos_13.png',
|
||||||
|
"sos_14.png" = 'icons/spideros_icons/sos_14.png'
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/asset/simple/changelog
|
||||||
|
assets = list(
|
||||||
|
"88x31.png" = 'html/88x31.png',
|
||||||
|
"bug-minus.png" = 'html/bug-minus.png',
|
||||||
|
"cross-circle.png" = 'html/cross-circle.png',
|
||||||
|
"hard-hat-exclamation.png" = 'html/hard-hat-exclamation.png',
|
||||||
|
"image-minus.png" = 'html/image-minus.png',
|
||||||
|
"image-plus.png" = 'html/image-plus.png',
|
||||||
|
"map-pencil.png" = 'html/map-pencil.png',
|
||||||
|
"music-minus.png" = 'html/music-minus.png',
|
||||||
|
"music-plus.png" = 'html/music-plus.png',
|
||||||
|
"tick-circle.png" = 'html/tick-circle.png',
|
||||||
|
"wrench-screwdriver.png" = 'html/wrench-screwdriver.png',
|
||||||
|
"spell-check.png" = 'html/spell-check.png',
|
||||||
|
"burn-exclamation.png" = 'html/burn-exclamation.png',
|
||||||
|
"chevron.png" = 'html/chevron.png',
|
||||||
|
"chevron-expand.png" = 'html/chevron-expand.png',
|
||||||
|
"changelog.css" = 'html/changelog.css',
|
||||||
|
"changelog.js" = 'html/changelog.js',
|
||||||
|
"changelog.html" = 'html/changelog.html'
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/asset/nanoui
|
||||||
|
var/list/common = list()
|
||||||
|
|
||||||
|
var/list/common_dirs = list(
|
||||||
|
"nano/css/",
|
||||||
|
"nano/images/",
|
||||||
|
"nano/images/modular_computers/",
|
||||||
|
"nano/js/"
|
||||||
|
)
|
||||||
|
var/list/uncommon_dirs = list(
|
||||||
|
"nano/templates/"
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/asset/nanoui/register()
|
||||||
|
// Crawl the directories to find files.
|
||||||
|
for(var/path in common_dirs)
|
||||||
|
var/list/filenames = flist(path)
|
||||||
|
for(var/filename in filenames)
|
||||||
|
if(copytext(filename, length(filename)) != "/") // Ignore directories.
|
||||||
|
if(fexists(path + filename))
|
||||||
|
common[filename] = fcopy_rsc(path + filename)
|
||||||
|
register_asset(filename, common[filename])
|
||||||
|
for(var/path in uncommon_dirs)
|
||||||
|
var/list/filenames = flist(path)
|
||||||
|
for(var/filename in filenames)
|
||||||
|
if(copytext(filename, length(filename)) != "/") // Ignore directories.
|
||||||
|
if(fexists(path + filename))
|
||||||
|
register_asset(filename, fcopy_rsc(path + filename))
|
||||||
|
|
||||||
|
/datum/asset/nanoui/send(client, uncommon)
|
||||||
|
if(!islist(uncommon))
|
||||||
|
uncommon = list(uncommon)
|
||||||
|
|
||||||
|
send_asset_list(client, uncommon)
|
||||||
|
send_asset_list(client, common)
|
||||||
@@ -24,6 +24,8 @@
|
|||||||
var/area = null
|
var/area = null
|
||||||
var/time_died_as_mouse = null //when the client last died as a mouse
|
var/time_died_as_mouse = null //when the client last died as a mouse
|
||||||
var/datum/tooltip/tooltips = null
|
var/datum/tooltip/tooltips = null
|
||||||
|
var/datum/chatOutput/chatOutput
|
||||||
|
var/chatOutputLoadedAt
|
||||||
|
|
||||||
var/adminhelped = 0
|
var/adminhelped = 0
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,11 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if(href_list["asset_cache_confirm_arrival"])
|
||||||
|
var/job = text2num(href_list["asset_cache_confirm_arrival"])
|
||||||
|
completed_asset_jobs += job
|
||||||
|
return
|
||||||
|
|
||||||
//search the href for script injection
|
//search the href for script injection
|
||||||
if( findtext(href,"<script",1,0) )
|
if( findtext(href,"<script",1,0) )
|
||||||
to_world_log("Attempted use of scripts within a topic call, by [src]")
|
to_world_log("Attempted use of scripts within a topic call, by [src]")
|
||||||
@@ -60,8 +65,6 @@
|
|||||||
send2adminirc(href_list["irc_msg"])
|
send2adminirc(href_list["irc_msg"])
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Logs all hrefs
|
//Logs all hrefs
|
||||||
if(config && config.log_hrefs && href_logfile)
|
if(config && config.log_hrefs && href_logfile)
|
||||||
href_logfile << "<small>[time2text(world.timeofday,"hh:mm")] [src] (usr:[usr])</small> || [hsrc ? "[hsrc] " : ""][href]<br>"
|
href_logfile << "<small>[time2text(world.timeofday,"hh:mm")] [src] (usr:[usr])</small> || [hsrc ? "[hsrc] " : ""][href]<br>"
|
||||||
@@ -71,6 +74,11 @@
|
|||||||
if("usr") hsrc = mob
|
if("usr") hsrc = mob
|
||||||
if("prefs") return prefs.process_link(usr,href_list)
|
if("prefs") return prefs.process_link(usr,href_list)
|
||||||
if("vars") return view_var_Topic(href,href_list,hsrc)
|
if("vars") return view_var_Topic(href,href_list,hsrc)
|
||||||
|
if("chat") return chatOutput.Topic(href, href_list)
|
||||||
|
|
||||||
|
switch(href_list["action"])
|
||||||
|
if("openLink")
|
||||||
|
src << link(href_list["link"])
|
||||||
|
|
||||||
..() //redirect to hsrc.Topic()
|
..() //redirect to hsrc.Topic()
|
||||||
|
|
||||||
@@ -105,8 +113,14 @@
|
|||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
to_chat(src, "<font color='red'>If the title screen is black, resources are still downloading. Please be patient until the title screen appears.</font>")
|
chatOutput = new /datum/chatOutput(src) //veechat
|
||||||
|
chatOutput.send_resources()
|
||||||
|
spawn()
|
||||||
|
chatOutput.start()
|
||||||
|
|
||||||
|
//Only show this if they are put into a new_player mob. Otherwise, "what title screen?"
|
||||||
|
if(isnewplayer(src.mob))
|
||||||
|
to_chat(src, "<font color='red'>If the title screen is black, resources are still downloading. Please be patient until the title screen appears.</font>")
|
||||||
|
|
||||||
GLOB.clients += src
|
GLOB.clients += src
|
||||||
GLOB.directory[ckey] = src
|
GLOB.directory[ckey] = src
|
||||||
@@ -136,6 +150,8 @@
|
|||||||
to_chat(src, "<span class='alert'>[custom_event_msg]</span>")
|
to_chat(src, "<span class='alert'>[custom_event_msg]</span>")
|
||||||
to_chat(src, "<br>")
|
to_chat(src, "<br>")
|
||||||
|
|
||||||
|
if(!winexists(src, "asset_cache_browser")) // The client is using a custom skin, tell them.
|
||||||
|
to_chat(src, "<span class='warning'>Unable to access asset cache browser, if you are using a custom skin file, please allow DS to download the updated version, if you are not, then make a bug report. This is not a critical issue but can cause issues with resource downloading, as it is impossible to know when extra resources arrived to you.</span>")
|
||||||
|
|
||||||
if(holder)
|
if(holder)
|
||||||
add_admin_verbs()
|
add_admin_verbs()
|
||||||
@@ -152,14 +168,13 @@
|
|||||||
log_client_to_db()
|
log_client_to_db()
|
||||||
|
|
||||||
send_resources()
|
send_resources()
|
||||||
SSnanoui.send_resources(src)
|
|
||||||
|
|
||||||
if(!void)
|
if(!void)
|
||||||
void = new()
|
void = new()
|
||||||
void.MakeGreed()
|
void.MakeGreed()
|
||||||
screen += void
|
screen += void
|
||||||
|
|
||||||
if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates.
|
if((prefs.lastchangelog != changelog_hash) && isnewplayer(src.mob)) //bolds the changelog button on the interface so we know there are updates.
|
||||||
to_chat(src, "<span class='info'>You have unread updates in the changelog.</span>")
|
to_chat(src, "<span class='info'>You have unread updates in the changelog.</span>")
|
||||||
winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold")
|
winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold")
|
||||||
if(config.aggressive_changelog)
|
if(config.aggressive_changelog)
|
||||||
@@ -344,56 +359,9 @@
|
|||||||
|
|
||||||
//send resources to the client. It's here in its own proc so we can move it around easiliy if need be
|
//send resources to the client. It's here in its own proc so we can move it around easiliy if need be
|
||||||
/client/proc/send_resources()
|
/client/proc/send_resources()
|
||||||
|
spawn (10) //removing this spawn causes all clients to not get verbs.
|
||||||
getFiles(
|
//Precache the client with all other assets slowly, so as to not block other browse() calls
|
||||||
'html/search.js',
|
getFilesSlow(src, SSassets.preload, register_asset = FALSE)
|
||||||
'html/panels.css',
|
|
||||||
'html/images/loading.gif',
|
|
||||||
'html/images/ntlogo.png',
|
|
||||||
'html/images/sglogo.png',
|
|
||||||
'html/images/talisman.png',
|
|
||||||
'html/images/paper_bg.png',
|
|
||||||
'html/images/no_image32.png',
|
|
||||||
'icons/pda_icons/pda_atmos.png',
|
|
||||||
'icons/pda_icons/pda_back.png',
|
|
||||||
'icons/pda_icons/pda_bell.png',
|
|
||||||
'icons/pda_icons/pda_blank.png',
|
|
||||||
'icons/pda_icons/pda_boom.png',
|
|
||||||
'icons/pda_icons/pda_bucket.png',
|
|
||||||
'icons/pda_icons/pda_crate.png',
|
|
||||||
'icons/pda_icons/pda_cuffs.png',
|
|
||||||
'icons/pda_icons/pda_eject.png',
|
|
||||||
'icons/pda_icons/pda_exit.png',
|
|
||||||
'icons/pda_icons/pda_flashlight.png',
|
|
||||||
'icons/pda_icons/pda_honk.png',
|
|
||||||
'icons/pda_icons/pda_mail.png',
|
|
||||||
'icons/pda_icons/pda_medical.png',
|
|
||||||
'icons/pda_icons/pda_menu.png',
|
|
||||||
'icons/pda_icons/pda_mule.png',
|
|
||||||
'icons/pda_icons/pda_notes.png',
|
|
||||||
'icons/pda_icons/pda_power.png',
|
|
||||||
'icons/pda_icons/pda_rdoor.png',
|
|
||||||
'icons/pda_icons/pda_reagent.png',
|
|
||||||
'icons/pda_icons/pda_refresh.png',
|
|
||||||
'icons/pda_icons/pda_scanner.png',
|
|
||||||
'icons/pda_icons/pda_signaler.png',
|
|
||||||
'icons/pda_icons/pda_status.png',
|
|
||||||
'icons/spideros_icons/sos_1.png',
|
|
||||||
'icons/spideros_icons/sos_2.png',
|
|
||||||
'icons/spideros_icons/sos_3.png',
|
|
||||||
'icons/spideros_icons/sos_4.png',
|
|
||||||
'icons/spideros_icons/sos_5.png',
|
|
||||||
'icons/spideros_icons/sos_6.png',
|
|
||||||
'icons/spideros_icons/sos_7.png',
|
|
||||||
'icons/spideros_icons/sos_8.png',
|
|
||||||
'icons/spideros_icons/sos_9.png',
|
|
||||||
'icons/spideros_icons/sos_10.png',
|
|
||||||
'icons/spideros_icons/sos_11.png',
|
|
||||||
'icons/spideros_icons/sos_12.png',
|
|
||||||
'icons/spideros_icons/sos_13.png',
|
|
||||||
'icons/spideros_icons/sos_14.png'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
mob/proc/MayRespawn()
|
mob/proc/MayRespawn()
|
||||||
return 0
|
return 0
|
||||||
@@ -429,6 +397,27 @@ client/verb/character_setup()
|
|||||||
return FALSE
|
return FALSE
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/client/verb/reload_vchat()
|
||||||
|
set name = "Reload VChat"
|
||||||
|
set category = "OOC"
|
||||||
|
|
||||||
|
//Timing
|
||||||
|
if(src.chatOutputLoadedAt > (world.time - 10 SECONDS))
|
||||||
|
alert(src, "You can only try to reload VChat every 10 seconds at most.")
|
||||||
|
return
|
||||||
|
|
||||||
|
//Log, disable
|
||||||
|
log_debug("[key_name(src)] reloaded VChat.")
|
||||||
|
winset(src, null, "outputwindow.htmloutput.is-visible=false;outputwindow.oldoutput.is-visible=false;outputwindow.chatloadlabel.is-visible=true")
|
||||||
|
|
||||||
|
//The hard way
|
||||||
|
qdel_null(src.chatOutput)
|
||||||
|
chatOutput = new /datum/chatOutput(src) //veechat
|
||||||
|
chatOutput.send_resources()
|
||||||
|
spawn()
|
||||||
|
chatOutput.start()
|
||||||
|
|
||||||
|
|
||||||
//This is for getipintel.net.
|
//This is for getipintel.net.
|
||||||
//You're welcome to replace this proc with your own that does your own cool stuff.
|
//You're welcome to replace this proc with your own that does your own cool stuff.
|
||||||
//Just set the client's ip_reputation var and make sure it makes sense with your config settings (higher numbers are worse results)
|
//Just set the client's ip_reputation var and make sure it makes sense with your config settings (higher numbers are worse results)
|
||||||
|
|||||||
@@ -94,18 +94,18 @@
|
|||||||
var/datum/effect/effect/system/spark_spread/spark_system
|
var/datum/effect/effect/system/spark_spread/spark_system
|
||||||
|
|
||||||
/obj/item/weapon/rig/examine()
|
/obj/item/weapon/rig/examine()
|
||||||
to_chat(usr, "This is \icon[src][src.name].")
|
to_chat(usr, "This is [bicon(src)][src.name].")
|
||||||
to_chat(usr, "[src.desc]")
|
to_chat(usr, "[src.desc]")
|
||||||
if(wearer)
|
if(wearer)
|
||||||
for(var/obj/item/piece in list(helmet,gloves,chest,boots))
|
for(var/obj/item/piece in list(helmet,gloves,chest,boots))
|
||||||
if(!piece || piece.loc != wearer)
|
if(!piece || piece.loc != wearer)
|
||||||
continue
|
continue
|
||||||
to_chat(usr, "\icon[piece] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed.")
|
to_chat(usr, "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed.")
|
||||||
|
|
||||||
if(src.loc == usr)
|
if(src.loc == usr)
|
||||||
to_chat(usr, "The access panel is [locked? "locked" : "unlocked"].")
|
to_chat(usr, "The access panel is [locked? "locked" : "unlocked"].")
|
||||||
to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].")
|
to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].")
|
||||||
to_chat(usr, "Hardsuit systems are [offline ? "<font color='red'>offline</font>" : "<font color='green'>online</font>"].")
|
to_chat(usr, "Hardsuit systems are [offline ? "<span class='warning'>offline</span>" : "<span class='notice'>online</span>"].")
|
||||||
to_chat(usr, "The cooling stystem is [cooling_on ? "active" : "inactive"].")
|
to_chat(usr, "The cooling stystem is [cooling_on ? "active" : "inactive"].")
|
||||||
|
|
||||||
if(open)
|
if(open)
|
||||||
@@ -273,7 +273,7 @@
|
|||||||
if(!failed_to_seal)
|
if(!failed_to_seal)
|
||||||
|
|
||||||
if(!instant)
|
if(!instant)
|
||||||
M.visible_message("<font color='blue'>[M]'s suit emits a quiet hum as it begins to adjust its seals.</font>","<font color='blue'>With a quiet hum, the suit begins running checks and adjusting components.</font>")
|
M.visible_message("<span class='notice'>[M]'s suit emits a quiet hum as it begins to adjust its seals.</span>","<span class='notice'>With a quiet hum, the suit begins running checks and adjusting components.</span>")
|
||||||
if(seal_delay && !do_after(M,seal_delay))
|
if(seal_delay && !do_after(M,seal_delay))
|
||||||
if(M)
|
if(M)
|
||||||
to_chat(M, "<span class='warning'>You must remain still while the suit is adjusting the components.</span>")
|
to_chat(M, "<span class='warning'>You must remain still while the suit is adjusting the components.</span>")
|
||||||
@@ -305,16 +305,16 @@
|
|||||||
piece.icon_state = "[suit_state][!seal_target ? "_sealed" : ""]"
|
piece.icon_state = "[suit_state][!seal_target ? "_sealed" : ""]"
|
||||||
switch(msg_type)
|
switch(msg_type)
|
||||||
if("boots")
|
if("boots")
|
||||||
to_chat(M, "<font color='blue'>\The [piece] [!seal_target ? "seal around your feet" : "relax their grip on your legs"].</font>")
|
to_chat(M, "<span class='notice'>\The [piece] [!seal_target ? "seal around your feet" : "relax their grip on your legs"].</span>")
|
||||||
M.update_inv_shoes()
|
M.update_inv_shoes()
|
||||||
if("gloves")
|
if("gloves")
|
||||||
to_chat(M, "<font color='blue'>\The [piece] [!seal_target ? "tighten around your fingers and wrists" : "become loose around your fingers"].</font>")
|
to_chat(M, "<span class='notice'>\The [piece] [!seal_target ? "tighten around your fingers and wrists" : "become loose around your fingers"].</span>")
|
||||||
M.update_inv_gloves()
|
M.update_inv_gloves()
|
||||||
if("chest")
|
if("chest")
|
||||||
to_chat(M, "<font color='blue'>\The [piece] [!seal_target ? "cinches tight again your chest" : "releases your chest"].</font>")
|
to_chat(M, "<span class='notice'>\The [piece] [!seal_target ? "cinches tight again your chest" : "releases your chest"].</span>")
|
||||||
M.update_inv_wear_suit()
|
M.update_inv_wear_suit()
|
||||||
if("helmet")
|
if("helmet")
|
||||||
to_chat(M, "<font color='blue'>\The [piece] hisses [!seal_target ? "closed" : "open"].</font>")
|
to_chat(M, "<span class='notice'>\The [piece] hisses [!seal_target ? "closed" : "open"].</span>")
|
||||||
M.update_inv_head()
|
M.update_inv_head()
|
||||||
if(helmet)
|
if(helmet)
|
||||||
helmet.update_light(wearer)
|
helmet.update_light(wearer)
|
||||||
@@ -349,7 +349,7 @@
|
|||||||
|
|
||||||
// Success!
|
// Success!
|
||||||
canremove = seal_target
|
canremove = seal_target
|
||||||
to_chat(M, "<font color='blue'><b>Your entire suit [canremove ? "loosens as the components relax" : "tightens around you as the components lock into place"].</b></font>")
|
to_chat(M, "<span class='notice'><b>Your entire suit [canremove ? "loosens as the components relax" : "tightens around you as the components lock into place"].</b></span>")
|
||||||
M.client.screen -= booting_L
|
M.client.screen -= booting_L
|
||||||
qdel(booting_L)
|
qdel(booting_L)
|
||||||
booting_R.icon_state = "boot_done"
|
booting_R.icon_state = "boot_done"
|
||||||
@@ -734,7 +734,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(seal_delay > 0 && istype(M) && (M.back == src || M.belt == src))
|
if(seal_delay > 0 && istype(M) && (M.back == src || M.belt == src))
|
||||||
M.visible_message("<font color='blue'>[M] starts putting on \the [src]...</font>", "<font color='blue'>You start putting on \the [src]...</font>")
|
M.visible_message("<span class='notice'>[M] starts putting on \the [src]...</span>", "<span class='notice'>You start putting on \the [src]...</span>")
|
||||||
if(!do_after(M,seal_delay))
|
if(!do_after(M,seal_delay))
|
||||||
if(M && (M.back == src || M.belt == src))
|
if(M && (M.back == src || M.belt == src))
|
||||||
if(!M.unEquip(src))
|
if(!M.unEquip(src))
|
||||||
@@ -743,7 +743,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if(istype(M) && (M.back == src || M.belt == src))
|
if(istype(M) && (M.back == src || M.belt == src))
|
||||||
M.visible_message("<font color='blue'><b>[M] struggles into \the [src].</b></font>", "<font color='blue'><b>You struggle into \the [src].</b></font>")
|
M.visible_message("<span class='notice'><b>[M] struggles into \the [src].</b></span>", "<span class='notice'><b>You struggle into \the [src].</b></span>")
|
||||||
wearer = M
|
wearer = M
|
||||||
wearer.wearing_rig = src
|
wearer.wearing_rig = src
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -793,7 +793,7 @@
|
|||||||
holder = use_obj.loc
|
holder = use_obj.loc
|
||||||
if(istype(holder))
|
if(istype(holder))
|
||||||
if(use_obj && check_slot == use_obj)
|
if(use_obj && check_slot == use_obj)
|
||||||
to_chat(H, "<font color='blue'><b>Your [use_obj.name] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.</b></font>")
|
to_chat(H, "<span class='notice'><b>Your [use_obj.name] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.</b></span>")
|
||||||
use_obj.canremove = 1
|
use_obj.canremove = 1
|
||||||
holder.drop_from_inventory(use_obj)
|
holder.drop_from_inventory(use_obj)
|
||||||
use_obj.forceMove(get_turf(src))
|
use_obj.forceMove(get_turf(src))
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
last_process_worldtime = world.time
|
last_process_worldtime = world.time
|
||||||
|
|
||||||
/obj/machinery/dnaforensics/proc/complete_scan()
|
/obj/machinery/dnaforensics/proc/complete_scan()
|
||||||
src.visible_message("<span class='notice'>\icon[src] makes an insistent chime.</span>", 2)
|
src.visible_message("<span class='notice'>[bicon(src)] makes an insistent chime.</span>", 2)
|
||||||
update_icon()
|
update_icon()
|
||||||
if(bloodsamp)
|
if(bloodsamp)
|
||||||
var/obj/item/weapon/paper/P = new(src)
|
var/obj/item/weapon/paper/P = new(src)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ log transactions
|
|||||||
|
|
||||||
//display a message to the user
|
//display a message to the user
|
||||||
var/response = pick("Initiating withdraw. Have a nice day!", "CRITICAL ERROR: Activating cash chamber panic siphon.","PIN Code accepted! Emptying account balance.", "Jackpot!")
|
var/response = pick("Initiating withdraw. Have a nice day!", "CRITICAL ERROR: Activating cash chamber panic siphon.","PIN Code accepted! Emptying account balance.", "Jackpot!")
|
||||||
to_chat(user, "<span class='warning'>\icon[src] The [src] beeps: \"[response]\"</span>")
|
to_chat(user, "<span class='warning'>[bicon(src)] The [src] beeps: \"[response]\"</span>")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob)
|
/obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob)
|
||||||
@@ -85,7 +85,7 @@ log transactions
|
|||||||
if(istype(I, /obj/item/weapon/card))
|
if(istype(I, /obj/item/weapon/card))
|
||||||
if(emagged > 0)
|
if(emagged > 0)
|
||||||
//prevent inserting id into an emagged ATM
|
//prevent inserting id into an emagged ATM
|
||||||
to_chat(user, "<font color='red'>\icon[src] CARD READER ERROR. This system has been compromised!</font>")
|
to_chat(user, "<font color='red'>[bicon(src)] CARD READER ERROR. This system has been compromised!</font>")
|
||||||
return
|
return
|
||||||
else if(istype(I,/obj/item/weapon/card/emag))
|
else if(istype(I,/obj/item/weapon/card/emag))
|
||||||
I.resolve_attackby(src, user)
|
I.resolve_attackby(src, user)
|
||||||
@@ -234,7 +234,7 @@ log transactions
|
|||||||
var/target_account_number = text2num(href_list["target_acc_number"])
|
var/target_account_number = text2num(href_list["target_acc_number"])
|
||||||
var/transfer_purpose = href_list["purpose"]
|
var/transfer_purpose = href_list["purpose"]
|
||||||
if(charge_to_account(target_account_number, authenticated_account.owner_name, transfer_purpose, machine_id, transfer_amount))
|
if(charge_to_account(target_account_number, authenticated_account.owner_name, transfer_purpose, machine_id, transfer_amount))
|
||||||
to_chat(usr, "\icon[src]<span class='info'>Funds transfer successful.</span>")
|
to_chat(usr, "[bicon(src)]<span class='info'>Funds transfer successful.</span>")
|
||||||
authenticated_account.money -= transfer_amount
|
authenticated_account.money -= transfer_amount
|
||||||
|
|
||||||
//create an entry in the account transaction log
|
//create an entry in the account transaction log
|
||||||
@@ -247,10 +247,10 @@ log transactions
|
|||||||
T.amount = "([transfer_amount])"
|
T.amount = "([transfer_amount])"
|
||||||
authenticated_account.transaction_log.Add(T)
|
authenticated_account.transaction_log.Add(T)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Funds transfer failed.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Funds transfer failed.</span>")
|
||||||
|
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>You don't have enough funds to do that!</span>")
|
||||||
if("view_screen")
|
if("view_screen")
|
||||||
view_screen = text2num(href_list["view_screen"])
|
view_screen = text2num(href_list["view_screen"])
|
||||||
if("change_security_level")
|
if("change_security_level")
|
||||||
@@ -288,11 +288,11 @@ log transactions
|
|||||||
T.time = stationtime2text()
|
T.time = stationtime2text()
|
||||||
failed_account.transaction_log.Add(T)
|
failed_account.transaction_log.Add(T)
|
||||||
else
|
else
|
||||||
to_chat(usr, "<font color='red'>\icon[src] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.</font>")
|
to_chat(usr, "<font color='red'>[bicon(src)] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.</font>")
|
||||||
previous_account_number = tried_account_num
|
previous_account_number = tried_account_num
|
||||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
|
||||||
else
|
else
|
||||||
to_chat(usr, "<font color='red'>\icon[src] incorrect pin/account combination entered.</font>")
|
to_chat(usr, "<font color='red'>[bicon(src)] incorrect pin/account combination entered.</font>")
|
||||||
number_incorrect_tries = 0
|
number_incorrect_tries = 0
|
||||||
else
|
else
|
||||||
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
@@ -308,7 +308,7 @@ log transactions
|
|||||||
T.time = stationtime2text()
|
T.time = stationtime2text()
|
||||||
authenticated_account.transaction_log.Add(T)
|
authenticated_account.transaction_log.Add(T)
|
||||||
|
|
||||||
to_chat(usr, "<font color='blue'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].</font>'")
|
to_chat(usr, "<font color='blue'>[bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].</font>'")
|
||||||
|
|
||||||
previous_account_number = tried_account_num
|
previous_account_number = tried_account_num
|
||||||
if("e_withdrawal")
|
if("e_withdrawal")
|
||||||
@@ -336,7 +336,7 @@ log transactions
|
|||||||
T.time = stationtime2text()
|
T.time = stationtime2text()
|
||||||
authenticated_account.transaction_log.Add(T)
|
authenticated_account.transaction_log.Add(T)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>You don't have enough funds to do that!</span>")
|
||||||
if("withdrawal")
|
if("withdrawal")
|
||||||
var/amount = max(text2num(href_list["funds_amount"]),0)
|
var/amount = max(text2num(href_list["funds_amount"]),0)
|
||||||
amount = round(amount, 0.01)
|
amount = round(amount, 0.01)
|
||||||
@@ -361,7 +361,7 @@ log transactions
|
|||||||
T.time = stationtime2text()
|
T.time = stationtime2text()
|
||||||
authenticated_account.transaction_log.Add(T)
|
authenticated_account.transaction_log.Add(T)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>You don't have enough funds to do that!</span>")
|
||||||
if("balance_statement")
|
if("balance_statement")
|
||||||
if(authenticated_account)
|
if(authenticated_account)
|
||||||
var/obj/item/weapon/paper/R = new(src.loc)
|
var/obj/item/weapon/paper/R = new(src.loc)
|
||||||
@@ -433,7 +433,7 @@ log transactions
|
|||||||
if(!held_card)
|
if(!held_card)
|
||||||
//this might happen if the user had the browser window open when somebody emagged it
|
//this might happen if the user had the browser window open when somebody emagged it
|
||||||
if(emagged > 0)
|
if(emagged > 0)
|
||||||
to_chat(usr, "<font color='red'>\icon[src] The ATM card reader rejected your ID because this machine has been sabotaged!</font>")
|
to_chat(usr, "<font color='red'>[bicon(src)] The ATM card reader rejected your ID because this machine has been sabotaged!</font>")
|
||||||
else
|
else
|
||||||
var/obj/item/I = usr.get_active_hand()
|
var/obj/item/I = usr.get_active_hand()
|
||||||
if (istype(I, /obj/item/weapon/card/id))
|
if (istype(I, /obj/item/weapon/card/id))
|
||||||
@@ -461,7 +461,7 @@ log transactions
|
|||||||
if(I)
|
if(I)
|
||||||
authenticated_account = attempt_account_access(I.associated_account_number)
|
authenticated_account = attempt_account_access(I.associated_account_number)
|
||||||
if(authenticated_account)
|
if(authenticated_account)
|
||||||
to_chat(human_user, "<font color='blue'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].</font>'")
|
to_chat(human_user, "<font color='blue'>[bicon(src)] Access granted. Welcome user '[authenticated_account.owner_name].</font>'")
|
||||||
|
|
||||||
//create a transaction log entry
|
//create a transaction log entry
|
||||||
var/datum/transaction/T = new()
|
var/datum/transaction/T = new()
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
if(linked_account)
|
if(linked_account)
|
||||||
scan_card(I, O)
|
scan_card(I, O)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Unable to connect to linked account.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Unable to connect to linked account.</span>")
|
||||||
else if (istype(O, /obj/item/weapon/spacecash/ewallet))
|
else if (istype(O, /obj/item/weapon/spacecash/ewallet))
|
||||||
var/obj/item/weapon/spacecash/ewallet/E = O
|
var/obj/item/weapon/spacecash/ewallet/E = O
|
||||||
if (linked_account)
|
if (linked_account)
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
if(transaction_locked && !transaction_paid)
|
if(transaction_locked && !transaction_paid)
|
||||||
if(transaction_amount <= E.worth)
|
if(transaction_amount <= E.worth)
|
||||||
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
||||||
src.visible_message("\icon[src] \The [src] chimes.")
|
src.visible_message("[bicon(src)] \The [src] chimes.")
|
||||||
transaction_paid = 1
|
transaction_paid = 1
|
||||||
|
|
||||||
//transfer the money
|
//transfer the money
|
||||||
@@ -143,11 +143,11 @@
|
|||||||
T.time = stationtime2text()
|
T.time = stationtime2text()
|
||||||
linked_account.transaction_log.Add(T)
|
linked_account.transaction_log.Add(T)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>\The [O] doesn't have that much money!</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>\The [O] doesn't have that much money!</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Connected account has been suspended.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Connected account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>EFTPOS is not connected to an account.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>EFTPOS is not connected to an account.</span>")
|
||||||
|
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
@@ -165,14 +165,14 @@
|
|||||||
alert("That is not a valid code!")
|
alert("That is not a valid code!")
|
||||||
print_reference()
|
print_reference()
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Incorrect code entered.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Incorrect code entered.</span>")
|
||||||
if("change_id")
|
if("change_id")
|
||||||
var/attempt_code = text2num(input("Re-enter the current EFTPOS access code", "Confirm EFTPOS code"))
|
var/attempt_code = text2num(input("Re-enter the current EFTPOS access code", "Confirm EFTPOS code"))
|
||||||
if(attempt_code == access_code)
|
if(attempt_code == access_code)
|
||||||
eftpos_name = sanitize(input("Enter a new terminal ID for this device", "Enter new EFTPOS ID"), MAX_NAME_LEN) + " EFTPOS scanner"
|
eftpos_name = sanitize(input("Enter a new terminal ID for this device", "Enter new EFTPOS ID"), MAX_NAME_LEN) + " EFTPOS scanner"
|
||||||
print_reference()
|
print_reference()
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Incorrect code entered.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Incorrect code entered.</span>")
|
||||||
if("link_account")
|
if("link_account")
|
||||||
var/attempt_account_num = input("Enter account number to pay EFTPOS charges into", "New account number") as num
|
var/attempt_account_num = input("Enter account number to pay EFTPOS charges into", "New account number") as num
|
||||||
var/attempt_pin = input("Enter pin code", "Account pin") as num
|
var/attempt_pin = input("Enter pin code", "Account pin") as num
|
||||||
@@ -180,9 +180,9 @@
|
|||||||
if(linked_account)
|
if(linked_account)
|
||||||
if(linked_account.suspended)
|
if(linked_account.suspended)
|
||||||
linked_account = null
|
linked_account = null
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Account has been suspended.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Account not found.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Account not found.</span>")
|
||||||
if("trans_purpose")
|
if("trans_purpose")
|
||||||
var/choice = sanitize(input("Enter reason for EFTPOS transaction", "Transaction purpose"))
|
var/choice = sanitize(input("Enter reason for EFTPOS transaction", "Transaction purpose"))
|
||||||
if(choice) transaction_purpose = choice
|
if(choice) transaction_purpose = choice
|
||||||
@@ -205,14 +205,14 @@
|
|||||||
else if(linked_account)
|
else if(linked_account)
|
||||||
transaction_locked = 1
|
transaction_locked = 1
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>No account connected to send transactions to.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>No account connected to send transactions to.</span>")
|
||||||
if("scan_card")
|
if("scan_card")
|
||||||
if(linked_account)
|
if(linked_account)
|
||||||
var/obj/item/I = usr.get_active_hand()
|
var/obj/item/I = usr.get_active_hand()
|
||||||
if (istype(I, /obj/item/weapon/card))
|
if (istype(I, /obj/item/weapon/card))
|
||||||
scan_card(I)
|
scan_card(I)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Unable to link accounts.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Unable to link accounts.</span>")
|
||||||
if("reset")
|
if("reset")
|
||||||
//reset the access code - requires HoP/captain access
|
//reset the access code - requires HoP/captain access
|
||||||
var/obj/item/I = usr.get_active_hand()
|
var/obj/item/I = usr.get_active_hand()
|
||||||
@@ -220,10 +220,10 @@
|
|||||||
var/obj/item/weapon/card/id/C = I
|
var/obj/item/weapon/card/id/C = I
|
||||||
if(access_cent_captain in C.access || access_hop in C.access || access_captain in C.access)
|
if(access_cent_captain in C.access || access_hop in C.access || access_captain in C.access)
|
||||||
access_code = 0
|
access_code = 0
|
||||||
to_chat(usr, "\icon[src]<span class='info'>Access code reset to 0.</span>")
|
to_chat(usr, "[bicon(src)]<span class='info'>Access code reset to 0.</span>")
|
||||||
else if (istype(I, /obj/item/weapon/card/emag))
|
else if (istype(I, /obj/item/weapon/card/emag))
|
||||||
access_code = 0
|
access_code = 0
|
||||||
to_chat(usr, "\icon[src]<span class='info'>Access code reset to 0.</span>")
|
to_chat(usr, "[bicon(src)]<span class='info'>Access code reset to 0.</span>")
|
||||||
|
|
||||||
src.attack_self(usr)
|
src.attack_self(usr)
|
||||||
|
|
||||||
@@ -247,7 +247,7 @@
|
|||||||
if(!D.suspended)
|
if(!D.suspended)
|
||||||
if(transaction_amount <= D.money)
|
if(transaction_amount <= D.money)
|
||||||
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
||||||
src.visible_message("\icon[src] \The [src] chimes.")
|
src.visible_message("[bicon(src)] \The [src] chimes.")
|
||||||
transaction_paid = 1
|
transaction_paid = 1
|
||||||
|
|
||||||
//transfer the money
|
//transfer the money
|
||||||
@@ -276,25 +276,25 @@
|
|||||||
T.time = stationtime2text()
|
T.time = stationtime2text()
|
||||||
linked_account.transaction_log.Add(T)
|
linked_account.transaction_log.Add(T)
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>You don't have that much money!</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>You don't have that much money!</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Your account has been suspended.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Your account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Connected account has been suspended.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Connected account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>EFTPOS is not connected to an account.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>EFTPOS is not connected to an account.</span>")
|
||||||
else if (istype(I, /obj/item/weapon/card/emag))
|
else if (istype(I, /obj/item/weapon/card/emag))
|
||||||
if(transaction_locked)
|
if(transaction_locked)
|
||||||
if(transaction_paid)
|
if(transaction_paid)
|
||||||
to_chat(usr, "\icon[src]<span class='info'>You stealthily swipe \the [I] through \the [src].</span>")
|
to_chat(usr, "[bicon(src)]<span class='info'>You stealthily swipe \the [I] through \the [src].</span>")
|
||||||
transaction_locked = 0
|
transaction_locked = 0
|
||||||
transaction_paid = 0
|
transaction_paid = 0
|
||||||
else
|
else
|
||||||
usr.visible_message("<span class='info'>\The [usr] swipes a card through \the [src].</span>")
|
usr.visible_message("<span class='info'>\The [usr] swipes a card through \the [src].</span>")
|
||||||
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
||||||
src.visible_message("\icon[src] \The [src] chimes.")
|
src.visible_message("[bicon(src)] \The [src] chimes.")
|
||||||
transaction_paid = 1
|
transaction_paid = 1
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -103,7 +103,7 @@
|
|||||||
if(allowed(usr))
|
if(allowed(usr))
|
||||||
locked = !locked
|
locked = !locked
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Insufficient access.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Insufficient access.</span>")
|
||||||
if("toggle_cash_lock")
|
if("toggle_cash_lock")
|
||||||
cash_locked = !cash_locked
|
cash_locked = !cash_locked
|
||||||
if("link_account")
|
if("link_account")
|
||||||
@@ -113,9 +113,9 @@
|
|||||||
if(linked_account)
|
if(linked_account)
|
||||||
if(linked_account.suspended)
|
if(linked_account.suspended)
|
||||||
linked_account = null
|
linked_account = null
|
||||||
src.visible_message("\icon[src]<span class='warning'>Account has been suspended.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Account not found.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Account not found.</span>")
|
||||||
if("custom_order")
|
if("custom_order")
|
||||||
var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text)
|
var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text)
|
||||||
if (!t_purpose || !Adjacent(usr)) return
|
if (!t_purpose || !Adjacent(usr)) return
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
transaction_amount += t_amount
|
transaction_amount += t_amount
|
||||||
price_list += t_amount
|
price_list += t_amount
|
||||||
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
||||||
src.visible_message("\icon[src][transaction_purpose]: [t_amount] Thaler\s.")
|
src.visible_message("[bicon(src)][transaction_purpose]: [t_amount] Thaler\s.")
|
||||||
if("set_amount")
|
if("set_amount")
|
||||||
var/item_name = locate(href_list["item"])
|
var/item_name = locate(href_list["item"])
|
||||||
var/n_amount = round(input("Enter amount", "New amount") as num)
|
var/n_amount = round(input("Enter amount", "New amount") as num)
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
price_list.Cut()
|
price_list.Cut()
|
||||||
if("reset_log")
|
if("reset_log")
|
||||||
transaction_logs.Cut()
|
transaction_logs.Cut()
|
||||||
to_chat(usr, "\icon[src]<span class='notice'>Transaction log reset.</span>")
|
to_chat(usr, "[bicon(src)]<span class='notice'>Transaction log reset.</span>")
|
||||||
updateDialog()
|
updateDialog()
|
||||||
|
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
confirm_item = I
|
confirm_item = I
|
||||||
src.visible_message("\icon[src]<b>Total price:</b> [transaction_amount] Thaler\s. Swipe again to confirm.")
|
src.visible_message("[bicon(src)]<b>Total price:</b> [transaction_amount] Thaler\s. Swipe again to confirm.")
|
||||||
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -219,14 +219,14 @@
|
|||||||
|
|
||||||
if (cash_open)
|
if (cash_open)
|
||||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>The cash box is open.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I))
|
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I))
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!linked_account)
|
if (!linked_account)
|
||||||
usr.visible_message("\icon[src]<span class='warning'>Unable to connect to linked account.</span>")
|
usr.visible_message("[bicon(src)]<span class='warning'>Unable to connect to linked account.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
// Access account for transaction
|
// Access account for transaction
|
||||||
@@ -239,13 +239,13 @@
|
|||||||
D = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
D = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||||
|
|
||||||
if(!D)
|
if(!D)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
|
||||||
else
|
else
|
||||||
if(D.suspended)
|
if(D.suspended)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Your account has been suspended.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Your account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
if(transaction_amount > D.money)
|
if(transaction_amount > D.money)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Not enough funds.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Not enough funds.</span>")
|
||||||
else
|
else
|
||||||
// Transfer the money
|
// Transfer the money
|
||||||
D.money -= transaction_amount
|
D.money -= transaction_amount
|
||||||
@@ -284,7 +284,7 @@
|
|||||||
|
|
||||||
if (cash_open)
|
if (cash_open)
|
||||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>The cash box is open.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E))
|
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E))
|
||||||
@@ -293,7 +293,7 @@
|
|||||||
// Access account for transaction
|
// Access account for transaction
|
||||||
if(check_account())
|
if(check_account())
|
||||||
if(transaction_amount > E.worth)
|
if(transaction_amount > E.worth)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Not enough funds.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Not enough funds.</span>")
|
||||||
else
|
else
|
||||||
// Transfer the money
|
// Transfer the money
|
||||||
E.worth -= transaction_amount
|
E.worth -= transaction_amount
|
||||||
@@ -322,14 +322,14 @@
|
|||||||
|
|
||||||
if (cash_open)
|
if (cash_open)
|
||||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>The cash box is open.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(SC))
|
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(SC))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(transaction_amount > SC.worth)
|
if(transaction_amount > SC.worth)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Not enough money.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Not enough money.</span>")
|
||||||
else
|
else
|
||||||
// Insert cash into magical slot
|
// Insert cash into magical slot
|
||||||
SC.worth -= transaction_amount
|
SC.worth -= transaction_amount
|
||||||
@@ -351,20 +351,20 @@
|
|||||||
/obj/machinery/cash_register/proc/scan_item_price(obj/O)
|
/obj/machinery/cash_register/proc/scan_item_price(obj/O)
|
||||||
if(!istype(O)) return
|
if(!istype(O)) return
|
||||||
if(item_list.len > 10)
|
if(item_list.len > 10)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Only up to ten different items allowed per purchase.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Only up to ten different items allowed per purchase.</span>")
|
||||||
return
|
return
|
||||||
if (cash_open)
|
if (cash_open)
|
||||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>The cash box is open.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
// First check if item has a valid price
|
// First check if item has a valid price
|
||||||
var/price = O.get_item_cost()
|
var/price = O.get_item_cost()
|
||||||
if(isnull(price))
|
if(isnull(price))
|
||||||
src.visible_message("\icon[src]<span class='warning'>Unable to find item in database.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Unable to find item in database.</span>")
|
||||||
return
|
return
|
||||||
// Call out item cost
|
// Call out item cost
|
||||||
src.visible_message("\icon[src]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].")
|
src.visible_message("[bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].")
|
||||||
// Note the transaction purpose for later use
|
// Note the transaction purpose for later use
|
||||||
if(transaction_purpose)
|
if(transaction_purpose)
|
||||||
transaction_purpose += "<br>"
|
transaction_purpose += "<br>"
|
||||||
@@ -432,11 +432,11 @@
|
|||||||
|
|
||||||
/obj/machinery/cash_register/proc/check_account()
|
/obj/machinery/cash_register/proc/check_account()
|
||||||
if (!linked_account)
|
if (!linked_account)
|
||||||
usr.visible_message("\icon[src]<span class='warning'>Unable to connect to linked account.</span>")
|
usr.visible_message("[bicon(src)]<span class='warning'>Unable to connect to linked account.</span>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(linked_account.suspended)
|
if(linked_account.suspended)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Connected account has been suspended.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Connected account has been suspended.</span>")
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -444,7 +444,7 @@
|
|||||||
/obj/machinery/cash_register/proc/transaction_complete()
|
/obj/machinery/cash_register/proc/transaction_complete()
|
||||||
/// Visible confirmation
|
/// Visible confirmation
|
||||||
playsound(src, 'sound/machines/chime.ogg', 25)
|
playsound(src, 'sound/machines/chime.ogg', 25)
|
||||||
src.visible_message("\icon[src]<span class='notice'>Transaction complete.</span>")
|
src.visible_message("[bicon(src)]<span class='notice'>Transaction complete.</span>")
|
||||||
flick("register_approve", src)
|
flick("register_approve", src)
|
||||||
reset_memory()
|
reset_memory()
|
||||||
updateDialog()
|
updateDialog()
|
||||||
|
|||||||
@@ -100,7 +100,7 @@
|
|||||||
if(allowed(usr))
|
if(allowed(usr))
|
||||||
locked = !locked
|
locked = !locked
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Insufficient access.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Insufficient access.</span>")
|
||||||
if("link_account")
|
if("link_account")
|
||||||
var/attempt_account_num = input("Enter account number", "New account number") as num
|
var/attempt_account_num = input("Enter account number", "New account number") as num
|
||||||
var/attempt_pin = input("Enter PIN", "Account PIN") as num
|
var/attempt_pin = input("Enter PIN", "Account PIN") as num
|
||||||
@@ -108,9 +108,9 @@
|
|||||||
if(linked_account)
|
if(linked_account)
|
||||||
if(linked_account.suspended)
|
if(linked_account.suspended)
|
||||||
linked_account = null
|
linked_account = null
|
||||||
src.visible_message("\icon[src]<span class='warning'>Account has been suspended.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
to_chat(usr, "\icon[src]<span class='warning'>Account not found.</span>")
|
to_chat(usr, "[bicon(src)]<span class='warning'>Account not found.</span>")
|
||||||
if("custom_order")
|
if("custom_order")
|
||||||
var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text)
|
var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text)
|
||||||
if (!t_purpose || !Adjacent(usr)) return
|
if (!t_purpose || !Adjacent(usr)) return
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
transaction_amount += t_amount
|
transaction_amount += t_amount
|
||||||
price_list += t_amount
|
price_list += t_amount
|
||||||
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
||||||
src.visible_message("\icon[src][transaction_purpose]: [t_amount] Thaler\s.")
|
src.visible_message("[bicon(src)][transaction_purpose]: [t_amount] Thaler\s.")
|
||||||
if("set_amount")
|
if("set_amount")
|
||||||
var/item_name = locate(href_list["item"])
|
var/item_name = locate(href_list["item"])
|
||||||
var/n_amount = round(input("Enter amount", "New amount") as num)
|
var/n_amount = round(input("Enter amount", "New amount") as num)
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
price_list.Cut()
|
price_list.Cut()
|
||||||
if("reset_log")
|
if("reset_log")
|
||||||
transaction_logs.Cut()
|
transaction_logs.Cut()
|
||||||
to_chat(usr, "\icon[src]<span class='notice'>Transaction log reset.</span>")
|
to_chat(usr, "[bicon(src)]<span class='notice'>Transaction log reset.</span>")
|
||||||
updateDialog()
|
updateDialog()
|
||||||
|
|
||||||
|
|
||||||
@@ -191,7 +191,7 @@
|
|||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
confirm_item = I
|
confirm_item = I
|
||||||
src.visible_message("\icon[src]<b>Total price:</b> [transaction_amount] Thaler\s. Swipe again to confirm.")
|
src.visible_message("[bicon(src)]<b>Total price:</b> [transaction_amount] Thaler\s. Swipe again to confirm.")
|
||||||
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
playsound(src, 'sound/machines/twobeep.ogg', 25)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if (!linked_account)
|
if (!linked_account)
|
||||||
usr.visible_message("\icon[src]<span class='warning'>Unable to connect to linked account.</span>")
|
usr.visible_message("[bicon(src)]<span class='warning'>Unable to connect to linked account.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
// Access account for transaction
|
// Access account for transaction
|
||||||
@@ -217,13 +217,13 @@
|
|||||||
D = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
D = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||||
|
|
||||||
if(!D)
|
if(!D)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
|
||||||
else
|
else
|
||||||
if(D.suspended)
|
if(D.suspended)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Your account has been suspended.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Your account has been suspended.</span>")
|
||||||
else
|
else
|
||||||
if(transaction_amount > D.money)
|
if(transaction_amount > D.money)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Not enough funds.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Not enough funds.</span>")
|
||||||
else
|
else
|
||||||
// Transfer the money
|
// Transfer the money
|
||||||
D.money -= transaction_amount
|
D.money -= transaction_amount
|
||||||
@@ -266,7 +266,7 @@
|
|||||||
// Access account for transaction
|
// Access account for transaction
|
||||||
if(check_account())
|
if(check_account())
|
||||||
if(transaction_amount > E.worth)
|
if(transaction_amount > E.worth)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Not enough funds.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Not enough funds.</span>")
|
||||||
else
|
else
|
||||||
// Transfer the money
|
// Transfer the money
|
||||||
E.worth -= transaction_amount
|
E.worth -= transaction_amount
|
||||||
@@ -292,16 +292,16 @@
|
|||||||
/obj/item/device/retail_scanner/proc/scan_item_price(var/obj/O)
|
/obj/item/device/retail_scanner/proc/scan_item_price(var/obj/O)
|
||||||
if(!istype(O)) return
|
if(!istype(O)) return
|
||||||
if(item_list.len > 10)
|
if(item_list.len > 10)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Only up to ten different items allowed per purchase.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Only up to ten different items allowed per purchase.</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
// First check if item has a valid price
|
// First check if item has a valid price
|
||||||
var/price = O.get_item_cost()
|
var/price = O.get_item_cost()
|
||||||
if(isnull(price))
|
if(isnull(price))
|
||||||
src.visible_message("\icon[src]<span class='warning'>Unable to find item in database.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Unable to find item in database.</span>")
|
||||||
return
|
return
|
||||||
// Call out item cost
|
// Call out item cost
|
||||||
src.visible_message("\icon[src]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].")
|
src.visible_message("[bicon(src)]\A [O]: [price ? "[price] Thaler\s" : "free of charge"].")
|
||||||
// Note the transaction purpose for later use
|
// Note the transaction purpose for later use
|
||||||
if(transaction_purpose)
|
if(transaction_purpose)
|
||||||
transaction_purpose += "<br>"
|
transaction_purpose += "<br>"
|
||||||
@@ -369,11 +369,11 @@
|
|||||||
|
|
||||||
/obj/item/device/retail_scanner/proc/check_account()
|
/obj/item/device/retail_scanner/proc/check_account()
|
||||||
if (!linked_account)
|
if (!linked_account)
|
||||||
usr.visible_message("\icon[src]<span class='warning'>Unable to connect to linked account.</span>")
|
usr.visible_message("[bicon(src)]<span class='warning'>Unable to connect to linked account.</span>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(linked_account.suspended)
|
if(linked_account.suspended)
|
||||||
src.visible_message("\icon[src]<span class='warning'>Connected account has been suspended.</span>")
|
src.visible_message("[bicon(src)]<span class='warning'>Connected account has been suspended.</span>")
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@
|
|||||||
/obj/item/device/retail_scanner/proc/transaction_complete()
|
/obj/item/device/retail_scanner/proc/transaction_complete()
|
||||||
/// Visible confirmation
|
/// Visible confirmation
|
||||||
playsound(src, 'sound/machines/chime.ogg', 25)
|
playsound(src, 'sound/machines/chime.ogg', 25)
|
||||||
src.visible_message("\icon[src]<span class='notice'>Transaction complete.</span>")
|
src.visible_message("[bicon(src)]<span class='notice'>Transaction complete.</span>")
|
||||||
flick("retail_approve", src)
|
flick("retail_approve", src)
|
||||||
reset_memory()
|
reset_memory()
|
||||||
updateDialog()
|
updateDialog()
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
if (!P.message_silent)
|
if (!P.message_silent)
|
||||||
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
for (var/mob/O in hearers(3, P.loc))
|
||||||
if(!P.message_silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
if(!P.message_silent) O.show_message(text("[bicon(P)] *[P.ttone]*"))
|
||||||
//Search for holder of the PDA.
|
//Search for holder of the PDA.
|
||||||
var/mob/living/L = null
|
var/mob/living/L = null
|
||||||
if(P.loc && isliving(P.loc))
|
if(P.loc && isliving(P.loc))
|
||||||
@@ -123,4 +123,4 @@
|
|||||||
L = get(P, /mob/living/silicon)
|
L = get(P, /mob/living/silicon)
|
||||||
|
|
||||||
if(L)
|
if(L)
|
||||||
to_chat(L, "\icon[P] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)")
|
to_chat(L, "[bicon(P)] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)")
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
// Quickly adds the boilerplate code to add an image and padding for the image.
|
// Quickly adds the boilerplate code to add an image and padding for the image.
|
||||||
/proc/desc_panel_image(var/icon_state)
|
/proc/desc_panel_image(var/icon_state)
|
||||||
return "\icon[description_icons[icon_state]][EXAMINE_PANEL_PADDING]"
|
return "[bicon(description_icons[icon_state])][EXAMINE_PANEL_PADDING]"
|
||||||
|
|
||||||
/mob/living/get_description_fluff()
|
/mob/living/get_description_fluff()
|
||||||
if(flavor_text) //Get flavor text for the green text.
|
if(flavor_text) //Get flavor text for the green text.
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
description_holders["interactions"] = A.get_description_interaction()
|
description_holders["interactions"] = A.get_description_interaction()
|
||||||
|
|
||||||
description_holders["name"] = "[A.name]"
|
description_holders["name"] = "[A.name]"
|
||||||
description_holders["icon"] = "\icon[A]"
|
description_holders["icon"] = "[bicon(A)]"
|
||||||
description_holders["desc"] = A.desc
|
description_holders["desc"] = A.desc
|
||||||
|
|
||||||
/mob/Stat()
|
/mob/Stat()
|
||||||
|
|||||||
@@ -92,7 +92,7 @@
|
|||||||
var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O
|
var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O
|
||||||
if(!I.ice_creamed)
|
if(!I.ice_creamed)
|
||||||
if(product_types[dispense_flavour] > 0)
|
if(product_types[dispense_flavour] > 0)
|
||||||
src.visible_message("\icon[src] <span class='info'>[user] scoops delicious [flavour_name] icecream into [I].</span>")
|
src.visible_message("[bicon(src)] <span class='info'>[user] scoops delicious [flavour_name] icecream into [I].</span>")
|
||||||
product_types[dispense_flavour] -= 1
|
product_types[dispense_flavour] -= 1
|
||||||
I.add_ice_cream(flavour_name)
|
I.add_ice_cream(flavour_name)
|
||||||
// if(beaker)
|
// if(beaker)
|
||||||
|
|||||||
@@ -238,7 +238,7 @@
|
|||||||
<A href='?src=\ref[src];action=dispose'>Eject ingredients!<BR>\
|
<A href='?src=\ref[src];action=dispose'>Eject ingredients!<BR>\
|
||||||
"}
|
"}
|
||||||
|
|
||||||
to_chat(user, browse("<HEAD><TITLE>Microwave Controls</TITLE></HEAD><TT>[dat]</TT>", "window=microwave"))
|
user << browse("<HEAD><TITLE>Microwave Controls</TITLE></HEAD><TT>[dat]</TT>", "window=microwave")
|
||||||
onclose(user, "microwave")
|
onclose(user, "microwave")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -424,4 +424,4 @@
|
|||||||
|
|
||||||
/obj/machinery/microwave/advanced/Initialize()
|
/obj/machinery/microwave/advanced/Initialize()
|
||||||
..()
|
..()
|
||||||
reagents.maximum_volume = 1000
|
reagents.maximum_volume = 1000
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
if (!P.message_silent)
|
if (!P.message_silent)
|
||||||
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
for (var/mob/O in hearers(3, P.loc))
|
||||||
if(!P.message_silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
if(!P.message_silent) O.show_message(text("[bicon(P)] *[P.ttone]*"))
|
||||||
//Search for holder of the PDA.
|
//Search for holder of the PDA.
|
||||||
var/mob/living/L = null
|
var/mob/living/L = null
|
||||||
if(P.loc && isliving(P.loc))
|
if(P.loc && isliving(P.loc))
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
L = get(P, /mob/living/silicon)
|
L = get(P, /mob/living/silicon)
|
||||||
|
|
||||||
if(L)
|
if(L)
|
||||||
to_chat(L, "\icon[P] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)")
|
to_chat(L, "[bicon(P)] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)")
|
||||||
|
|
||||||
/datum/gm_action/pda_spam/get_weight()
|
/datum/gm_action/pda_spam/get_weight()
|
||||||
return 25 * metric.count_people_in_department(DEPARTMENT_EVERYONE)
|
return 25 * metric.count_people_in_department(DEPARTMENT_EVERYONE)
|
||||||
|
|||||||
@@ -68,15 +68,15 @@
|
|||||||
active = 0
|
active = 0
|
||||||
if(failed_task)
|
if(failed_task)
|
||||||
failed_task = 0
|
failed_task = 0
|
||||||
visible_message("\icon[src] [src] pings unhappily, flashing a red warning light.")
|
visible_message("[bicon(src)] [src] pings unhappily, flashing a red warning light.")
|
||||||
else
|
else
|
||||||
visible_message("\icon[src] [src] pings happily.")
|
visible_message("[bicon(src)] [src] pings happily.")
|
||||||
|
|
||||||
if(eject_disk)
|
if(eject_disk)
|
||||||
eject_disk = 0
|
eject_disk = 0
|
||||||
if(loaded_disk)
|
if(loaded_disk)
|
||||||
loaded_disk.loc = get_turf(src)
|
loaded_disk.loc = get_turf(src)
|
||||||
visible_message("\icon[src] [src] beeps and spits out [loaded_disk].")
|
visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].")
|
||||||
loaded_disk = null
|
loaded_disk = null
|
||||||
|
|
||||||
/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
@@ -190,14 +190,14 @@
|
|||||||
plant_controller.seeds[seed.seed.name] = seed.seed
|
plant_controller.seeds[seed.seed.name] = seed.seed
|
||||||
|
|
||||||
seed.update_seed()
|
seed.update_seed()
|
||||||
visible_message("\icon[src] [src] beeps and spits out [seed].")
|
visible_message("[bicon(src)] [src] beeps and spits out [seed].")
|
||||||
|
|
||||||
seed = null
|
seed = null
|
||||||
|
|
||||||
if(href_list["eject_disk"])
|
if(href_list["eject_disk"])
|
||||||
if(!loaded_disk) return
|
if(!loaded_disk) return
|
||||||
loaded_disk.loc = get_turf(src)
|
loaded_disk.loc = get_turf(src)
|
||||||
visible_message("\icon[src] [src] beeps and spits out [loaded_disk].")
|
visible_message("[bicon(src)] [src] beeps and spits out [loaded_disk].")
|
||||||
loaded_disk = null
|
loaded_disk = null
|
||||||
|
|
||||||
usr.set_machine(src)
|
usr.set_machine(src)
|
||||||
|
|||||||
@@ -416,7 +416,7 @@
|
|||||||
|
|
||||||
if(loc)
|
if(loc)
|
||||||
for(var/mob/O in hearers(1, get_turf(src)))
|
for(var/mob/O in hearers(1, get_turf(src)))
|
||||||
O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
|
O.show_message("[bicon(src)] *beep* *beep*", 3, "*beep* *beep*", 2)
|
||||||
|
|
||||||
/obj/item/integrated_circuit/input/EPv2
|
/obj/item/integrated_circuit/input/EPv2
|
||||||
name = "\improper EPv2 circuit"
|
name = "\improper EPv2 circuit"
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
var/list/nearby_things = range(0, get_turf(src))
|
var/list/nearby_things = range(0, get_turf(src))
|
||||||
for(var/mob/M in nearby_things)
|
for(var/mob/M in nearby_things)
|
||||||
var/obj/O = assembly ? assembly : src
|
var/obj/O = assembly ? assembly : src
|
||||||
to_chat(M, "<span class='notice'>\icon[O] [stuff_to_display]</span>")
|
to_chat(M, "<span class='notice'>[bicon(O)] [stuff_to_display]</span>")
|
||||||
|
|
||||||
/obj/item/integrated_circuit/output/screen/large
|
/obj/item/integrated_circuit/output/screen/large
|
||||||
name = "large screen"
|
name = "large screen"
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
/obj/item/integrated_circuit/output/screen/large/do_work()
|
/obj/item/integrated_circuit/output/screen/large/do_work()
|
||||||
..()
|
..()
|
||||||
var/obj/O = assembly ? loc : assembly
|
var/obj/O = assembly ? loc : assembly
|
||||||
O.visible_message("<span class='notice'>\icon[O] [stuff_to_display]</span>")
|
O.visible_message("<span class='notice'>[bicon(O)] [stuff_to_display]</span>")
|
||||||
|
|
||||||
/obj/item/integrated_circuit/output/light
|
/obj/item/integrated_circuit/output/light
|
||||||
name = "light"
|
name = "light"
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
text = get_pin_data(IC_INPUT, 1)
|
text = get_pin_data(IC_INPUT, 1)
|
||||||
if(!isnull(text))
|
if(!isnull(text))
|
||||||
var/obj/O = assembly ? loc : assembly
|
var/obj/O = assembly ? loc : assembly
|
||||||
audible_message("\icon[O] \The [O.name] states, \"[text]\"")
|
audible_message("[bicon(O)] \The [O.name] states, \"[text]\"")
|
||||||
|
|
||||||
/obj/item/integrated_circuit/output/text_to_speech/advanced
|
/obj/item/integrated_circuit/output/text_to_speech/advanced
|
||||||
name = "advanced text-to-speech circuit"
|
name = "advanced text-to-speech circuit"
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
var/scan_time = 5 SECONDS
|
var/scan_time = 5 SECONDS
|
||||||
|
|
||||||
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)
|
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)
|
||||||
to_chat(user, "You begin sweeping \the [src] about, scanning for metal deposits.")
|
to_chat(user, "<span class='notice'>You begin sweeping \the [src] about, scanning for metal deposits.</span>")
|
||||||
playsound(loc, 'sound/items/goggles_charge.ogg', 50, 1, -6)
|
playsound(loc, 'sound/items/goggles_charge.ogg', 50, 1, -6)
|
||||||
|
|
||||||
if(!do_after(user, scan_time))
|
if(!do_after(user, scan_time))
|
||||||
return
|
return
|
||||||
|
|
||||||
ScanTurf(user, get_turf(user))
|
ScanTurf(get_turf(user), user)
|
||||||
|
|
||||||
/obj/item/weapon/mining_scanner/proc/ScanTurf(var/atom/target, var/mob/user, var/exact = FALSE)
|
/obj/item/weapon/mining_scanner/proc/ScanTurf(var/atom/target, var/mob/user, var/exact = FALSE)
|
||||||
var/list/metals = list(
|
var/list/metals = list(
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
if(ore_type) metals[ore_type] += T.resources[metal]
|
if(ore_type) metals[ore_type] += T.resources[metal]
|
||||||
|
|
||||||
to_chat(user, "\icon[src] <span class='notice'>The scanner beeps and displays a readout.</span>")
|
var/message = "[bicon(src)] <span class='notice'>The scanner beeps and displays a readout.</span>"
|
||||||
|
|
||||||
for(var/ore_type in metals)
|
for(var/ore_type in metals)
|
||||||
var/result = "no sign"
|
var/result = "no sign"
|
||||||
@@ -59,4 +59,6 @@
|
|||||||
else
|
else
|
||||||
result = metals[ore_type]
|
result = metals[ore_type]
|
||||||
|
|
||||||
to_chat(user, "- [result] of [ore_type].")
|
message += "<br><span class='notice'>- [result] of [ore_type].</span>"
|
||||||
|
|
||||||
|
to_chat(user, message)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
input = message
|
input = message
|
||||||
if(input)
|
if(input)
|
||||||
log_emote(message,src) //Log before we add junk
|
log_emote(message,src) //Log before we add junk
|
||||||
message = "<B>[src]</B> [input]"
|
message = "<span class='emote'><B>[src]</B> [input]</span>"
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -197,7 +197,7 @@
|
|||||||
if(!..(user))
|
if(!..(user))
|
||||||
return
|
return
|
||||||
|
|
||||||
var/msg = "<span class='info'>*---------*</span>\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n"
|
var/msg = "<span class='info'>*---------*</span>\nThis is [bicon(src)] \a <EM>[src]</EM>!\n[desc]\n"
|
||||||
msg += "<span class='warning'>"
|
msg += "<span class='warning'>"
|
||||||
|
|
||||||
if(src.brainmob && src.brainmob.key)
|
if(src.brainmob && src.brainmob.key)
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
if(!..(user))
|
if(!..(user))
|
||||||
return
|
return
|
||||||
|
|
||||||
var/msg = "<span class='info'>*---------*</span>\nThis is \icon[src] \a <EM>[src]</EM>!\n[desc]\n"
|
var/msg = "<span class='info'>*---------*</span>\nThis is [bicon(src)] \a <EM>[src]</EM>!\n[desc]\n"
|
||||||
msg += "<span class='warning'>"
|
msg += "<span class='warning'>"
|
||||||
|
|
||||||
if(src.brainmob && src.brainmob.key)
|
if(src.brainmob && src.brainmob.key)
|
||||||
|
|||||||
@@ -147,8 +147,8 @@
|
|||||||
var/mob/living/carbon/human/H = src
|
var/mob/living/carbon/human/H = src
|
||||||
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
var/datum/gender/T = gender_datums[H.get_visible_gender()]
|
||||||
src.visible_message( \
|
src.visible_message( \
|
||||||
"<font color='blue'>[src] examines [T.himself].</font>", \
|
"<span class='notice'>[src] examines [T.himself].</span>", \
|
||||||
"<font color='blue'>You check yourself for injuries.</font>" \
|
"<span class='notice'>You check yourself for injuries.</span>" \
|
||||||
)
|
)
|
||||||
|
|
||||||
for(var/obj/item/organ/external/org in H.organs)
|
for(var/obj/item/organ/external/org in H.organs)
|
||||||
|
|||||||
@@ -77,8 +77,7 @@
|
|||||||
|
|
||||||
var/list/msg = list("<span class='info'>*---------*<br>This is ")
|
var/list/msg = list("<span class='info'>*---------*<br>This is ")
|
||||||
|
|
||||||
if(icon)
|
msg += "[bicon(src)] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
|
||||||
msg += "\icon[icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
|
|
||||||
|
|
||||||
msg += "<EM>[src.name]</EM>"
|
msg += "<EM>[src.name]</EM>"
|
||||||
|
|
||||||
@@ -139,16 +138,16 @@
|
|||||||
tie_msg += " Attached to it is [english_list(accessories_visible)]."
|
tie_msg += " Attached to it is [english_list(accessories_visible)]."
|
||||||
|
|
||||||
if(w_uniform.blood_DNA)
|
if(w_uniform.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(w_uniform)] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name]![tie_msg]</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] wearing \icon[w_uniform] \a [w_uniform].[tie_msg]<br>"
|
msg += "[T.He] [T.is] wearing [bicon(w_uniform)] \a [w_uniform].[tie_msg]<br>"
|
||||||
|
|
||||||
//head
|
//head
|
||||||
if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine)
|
if(head && !(skip_gear & EXAMINE_SKIPHELMET) && head.show_examine)
|
||||||
if(head.blood_DNA)
|
if(head.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(head)] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] wearing \icon[head] \a [head] on [T.his] head.<br>"
|
msg += "[T.He] [T.is] wearing [bicon(head)] \a [head] on [T.his] head.<br>"
|
||||||
|
|
||||||
//suit/armour
|
//suit/armour
|
||||||
if(wear_suit)
|
if(wear_suit)
|
||||||
@@ -159,71 +158,71 @@
|
|||||||
tie_msg += " Attached to it is [english_list(U.accessories)]."
|
tie_msg += " Attached to it is [english_list(U.accessories)]."
|
||||||
|
|
||||||
if(wear_suit.blood_DNA)
|
if(wear_suit.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(wear_suit)] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name][tie_msg]!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] wearing \icon[wear_suit] \a [wear_suit].[tie_msg]<br>"
|
msg += "[T.He] [T.is] wearing [bicon(wear_suit)] \a [wear_suit].[tie_msg]<br>"
|
||||||
|
|
||||||
//suit/armour storage
|
//suit/armour storage
|
||||||
if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine)
|
if(s_store && !(skip_gear & EXAMINE_SKIPSUITSTORAGE) && s_store.show_examine)
|
||||||
if(s_store.blood_DNA)
|
if(s_store.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] carrying [bicon(s_store)] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] carrying \icon[s_store] \a [s_store] on [T.his] [wear_suit.name].<br>"
|
msg += "[T.He] [T.is] carrying [bicon(s_store)] \a [s_store] on [T.his] [wear_suit.name].<br>"
|
||||||
|
|
||||||
//back
|
//back
|
||||||
if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine)
|
if(back && !(skip_gear & EXAMINE_SKIPBACKPACK) && back.show_examine)
|
||||||
if(back.blood_DNA)
|
if(back.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.has] \icon[back] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back.</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [bicon(back)] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back.</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.has] \icon[back] \a [back] on [T.his] back.<br>"
|
msg += "[T.He] [T.has] [bicon(back)] \a [back] on [T.his] back.<br>"
|
||||||
|
|
||||||
//left hand
|
//left hand
|
||||||
if(l_hand && l_hand.show_examine)
|
if(l_hand && l_hand.show_examine)
|
||||||
if(l_hand.blood_DNA)
|
if(l_hand.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] holding [bicon(l_hand)] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] holding \icon[l_hand] \a [l_hand] in [T.his] left hand.<br>"
|
msg += "[T.He] [T.is] holding [bicon(l_hand)] \a [l_hand] in [T.his] left hand.<br>"
|
||||||
|
|
||||||
//right hand
|
//right hand
|
||||||
if(r_hand && r_hand.show_examine)
|
if(r_hand && r_hand.show_examine)
|
||||||
if(r_hand.blood_DNA)
|
if(r_hand.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] holding [bicon(r_hand)] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] holding \icon[r_hand] \a [r_hand] in [T.his] right hand.<br>"
|
msg += "[T.He] [T.is] holding [bicon(r_hand)] \a [r_hand] in [T.his] right hand.<br>"
|
||||||
|
|
||||||
//gloves
|
//gloves
|
||||||
if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine)
|
if(gloves && !(skip_gear & EXAMINE_SKIPGLOVES) && gloves.show_examine)
|
||||||
if(gloves.blood_DNA)
|
if(gloves.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [bicon(gloves)] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.has] \icon[gloves] \a [gloves] on [T.his] hands.<br>"
|
msg += "[T.He] [T.has] [bicon(gloves)] \a [gloves] on [T.his] hands.<br>"
|
||||||
else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS))
|
else if(blood_DNA && !(skip_body & EXAMINE_SKIPHANDS))
|
||||||
msg += "<span class='warning'>[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!</span><br>"
|
||||||
|
|
||||||
//handcuffed?
|
//handcuffed?
|
||||||
if(handcuffed && handcuffed.show_examine)
|
if(handcuffed && handcuffed.show_examine)
|
||||||
if(istype(handcuffed, /obj/item/weapon/handcuffs/cable))
|
if(istype(handcuffed, /obj/item/weapon/handcuffs/cable))
|
||||||
msg += "<span class='warning'>[T.He] [T.is] \icon[handcuffed] restrained with cable!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] [bicon(handcuffed)] restrained with cable!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "<span class='warning'>[T.He] [T.is] \icon[handcuffed] handcuffed!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] [bicon(handcuffed)] handcuffed!</span><br>"
|
||||||
|
|
||||||
//buckled
|
//buckled
|
||||||
if(buckled)
|
if(buckled)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] \icon[buckled] buckled to [buckled]!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] [bicon(buckled)] buckled to [buckled]!</span><br>"
|
||||||
|
|
||||||
//belt
|
//belt
|
||||||
if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine)
|
if(belt && !(skip_gear & EXAMINE_SKIPBELT) && belt.show_examine)
|
||||||
if(belt.blood_DNA)
|
if(belt.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.has] \icon[belt] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [bicon(belt)] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.has] \icon[belt] \a [belt] about [T.his] waist.<br>"
|
msg += "[T.He] [T.has] [bicon(belt)] \a [belt] about [T.his] waist.<br>"
|
||||||
|
|
||||||
//shoes
|
//shoes
|
||||||
if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine)
|
if(shoes && !(skip_gear & EXAMINE_SKIPSHOES) && shoes.show_examine)
|
||||||
if(shoes.blood_DNA)
|
if(shoes.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(shoes)] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.is] wearing \icon[shoes] \a [shoes] on [T.his] feet.<br>"
|
msg += "[T.He] [T.is] wearing [bicon(shoes)] \a [shoes] on [T.his] feet.<br>"
|
||||||
else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS))
|
else if(feet_blood_DNA && !(skip_body & EXAMINE_SKIPHANDS))
|
||||||
msg += "<span class='warning'>[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!</span><br>"
|
||||||
|
|
||||||
@@ -234,24 +233,24 @@
|
|||||||
descriptor = "in [T.his] mouth"
|
descriptor = "in [T.his] mouth"
|
||||||
|
|
||||||
if(wear_mask.blood_DNA)
|
if(wear_mask.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.has] \icon[wear_mask] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [bicon(wear_mask)] [wear_mask.gender==PLURAL?"some":"a"] [(wear_mask.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_mask.name] [descriptor]!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.has] \icon[wear_mask] \a [wear_mask] [descriptor].<br>"
|
msg += "[T.He] [T.has] [bicon(wear_mask)] \a [wear_mask] [descriptor].<br>"
|
||||||
|
|
||||||
//eyes
|
//eyes
|
||||||
if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine)
|
if(glasses && !(skip_gear & EXAMINE_SKIPEYEWEAR) && glasses.show_examine)
|
||||||
if(glasses.blood_DNA)
|
if(glasses.blood_DNA)
|
||||||
msg += "<span class='warning'>[T.He] [T.has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!</span><br>"
|
msg += "<span class='warning'>[T.He] [T.has] [bicon(glasses)] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!</span><br>"
|
||||||
else
|
else
|
||||||
msg += "[T.He] [T.has] \icon[glasses] \a [glasses] covering [T.his] eyes.<br>"
|
msg += "[T.He] [T.has] [bicon(glasses)] \a [glasses] covering [T.his] eyes.<br>"
|
||||||
|
|
||||||
//left ear
|
//left ear
|
||||||
if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine)
|
if(l_ear && !(skip_gear & EXAMINE_SKIPEARS) && l_ear.show_examine)
|
||||||
msg += "[T.He] [T.has] \icon[l_ear] \a [l_ear] on [T.his] left ear.<br>"
|
msg += "[T.He] [T.has] [bicon(l_ear)] \a [l_ear] on [T.his] left ear.<br>"
|
||||||
|
|
||||||
//right ear
|
//right ear
|
||||||
if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine)
|
if(r_ear && !(skip_gear & EXAMINE_SKIPEARS) && r_ear.show_examine)
|
||||||
msg += "[T.He] [T.has] \icon[r_ear] \a [r_ear] on [T.his] right ear.<br>"
|
msg += "[T.He] [T.has] [bicon(r_ear)] \a [r_ear] on [T.his] right ear.<br>"
|
||||||
|
|
||||||
//ID
|
//ID
|
||||||
if(wear_id && wear_id.show_examine)
|
if(wear_id && wear_id.show_examine)
|
||||||
@@ -263,9 +262,9 @@
|
|||||||
var/obj/item/weapon/card/id/idcard = wear_id
|
var/obj/item/weapon/card/id/idcard = wear_id
|
||||||
id = idcard.registered_name
|
id = idcard.registered_name
|
||||||
if(id && (id != real_name) && (get_dist(src, usr) <= 1) && prob(10))
|
if(id && (id != real_name) && (get_dist(src, usr) <= 1) && prob(10))
|
||||||
msg += "<span class='warning'>[T.He] [T.is] wearing \icon[wear_id] \a [wear_id] yet something doesn't seem right...</span><br>"
|
msg += "<span class='warning'>[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id] yet something doesn't seem right...</span><br>"
|
||||||
else*/
|
else*/
|
||||||
msg += "[T.He] [T.is] wearing \icon[wear_id] \a [wear_id].<br>"
|
msg += "[T.He] [T.is] wearing [bicon(wear_id)] \a [wear_id].<br>"
|
||||||
|
|
||||||
//Jitters
|
//Jitters
|
||||||
if(is_jittery)
|
if(is_jittery)
|
||||||
|
|||||||
@@ -519,7 +519,7 @@
|
|||||||
if(href_list["send"])
|
if(href_list["send"])
|
||||||
P.sradio.send_signal("ACTIVATE")
|
P.sradio.send_signal("ACTIVATE")
|
||||||
for(var/mob/O in hearers(1, P.loc))
|
for(var/mob/O in hearers(1, P.loc))
|
||||||
O.show_message(text("\icon[] *beep* *beep*", P), 3, "*beep* *beep*", 2)
|
O.show_message("[bicon(P)] *beep* *beep*", 3, "*beep* *beep*", 2)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
else if(href_list["freq"])
|
else if(href_list["freq"])
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
if( ishuman(AM) )
|
if( ishuman(AM) )
|
||||||
if(!stat)
|
if(!stat)
|
||||||
var/mob/M = AM
|
var/mob/M = AM
|
||||||
M.visible_message("<font color='blue'>\icon[src] Squeek!</font>")
|
M.visible_message("<font color='blue'>[bicon(src)] Squeek!</font>")
|
||||||
playsound(src, 'sound/effects/mouse_squeak.ogg', 35, 1)
|
playsound(src, 'sound/effects/mouse_squeak.ogg', 35, 1)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
|
|
||||||
/mob/living/simple_mob/construct/examine(mob/user)
|
/mob/living/simple_mob/construct/examine(mob/user)
|
||||||
..(user)
|
..(user)
|
||||||
var/msg = "<span cass='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
var/msg = "<span cass='info'>*---------*\nThis is [bicon(src)] \a <EM>[src]</EM>!\n"
|
||||||
if (src.health < src.getMaxHealth())
|
if (src.health < src.getMaxHealth())
|
||||||
msg += "<span class='warning'>"
|
msg += "<span class='warning'>"
|
||||||
if (src.health >= src.getMaxHealth()/2)
|
if (src.health >= src.getMaxHealth()/2)
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
var/new_name = sanitizeSafe(input(src, "Who would you like to be now?", "Communicator", src.client.prefs.real_name) as text, MAX_NAME_LEN)
|
var/new_name = sanitizeSafe(input(src, "Who would you like to be now?", "Communicator", src.client.prefs.real_name) as text, MAX_NAME_LEN)
|
||||||
if(new_name)
|
if(new_name)
|
||||||
if(comm)
|
if(comm)
|
||||||
comm.visible_message("<span class='notice'>\icon[comm] [src.name] has left, and now you see [new_name].</span>")
|
comm.visible_message("<span class='notice'>[bicon(comm)] [src.name] has left, and now you see [new_name].</span>")
|
||||||
//Do a bit of logging in-case anyone tries to impersonate other characters for whatever reason.
|
//Do a bit of logging in-case anyone tries to impersonate other characters for whatever reason.
|
||||||
var/msg = "[src.client.key] ([src]) has changed their communicator identity's name to [new_name]."
|
var/msg = "[src.client.key] ([src]) has changed their communicator identity's name to [new_name]."
|
||||||
message_admins(msg)
|
message_admins(msg)
|
||||||
|
|||||||
@@ -17,10 +17,10 @@
|
|||||||
spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!")
|
spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!")
|
||||||
if(matches)
|
if(matches)
|
||||||
if(M.client)
|
if(M.client)
|
||||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
|
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(src)] has the same [matches] as [key_name_admin(M)].</font>", 1)
|
||||||
log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
|
log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
|
||||||
else
|
else
|
||||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
|
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
|
||||||
log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
|
log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
|
||||||
|
|
||||||
/mob/Login()
|
/mob/Login()
|
||||||
|
|||||||
@@ -323,9 +323,9 @@
|
|||||||
if (flavor_text && flavor_text != "")
|
if (flavor_text && flavor_text != "")
|
||||||
var/msg = replacetext(flavor_text, "\n", " ")
|
var/msg = replacetext(flavor_text, "\n", " ")
|
||||||
if(length(msg) <= 40)
|
if(length(msg) <= 40)
|
||||||
return "<font color='blue'>[msg]</font>"
|
return "<span class='notice'>[msg]</span>"
|
||||||
else
|
else
|
||||||
return "<font color='blue'>[copytext_preserve_html(msg, 1, 37)]... <a href='byond://?src=\ref[src];flavor_more=1'>More...</font></a>"
|
return "<span class='notice'>[copytext_preserve_html(msg, 1, 37)]... <a href='byond://?src=\ref[src];flavor_more=1'>More...</span></a>"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
/mob/verb/help()
|
/mob/verb/help()
|
||||||
@@ -400,26 +400,6 @@
|
|||||||
/client/verb/changes()
|
/client/verb/changes()
|
||||||
set name = "Changelog"
|
set name = "Changelog"
|
||||||
set category = "OOC"
|
set category = "OOC"
|
||||||
getFiles(
|
|
||||||
'html/88x31.png',
|
|
||||||
'html/bug-minus.png',
|
|
||||||
'html/cross-circle.png',
|
|
||||||
'html/hard-hat-exclamation.png',
|
|
||||||
'html/image-minus.png',
|
|
||||||
'html/image-plus.png',
|
|
||||||
'html/map-pencil.png',
|
|
||||||
'html/music-minus.png',
|
|
||||||
'html/music-plus.png',
|
|
||||||
'html/tick-circle.png',
|
|
||||||
'html/wrench-screwdriver.png',
|
|
||||||
'html/spell-check.png',
|
|
||||||
'html/burn-exclamation.png',
|
|
||||||
'html/chevron.png',
|
|
||||||
'html/chevron-expand.png',
|
|
||||||
'html/changelog.css',
|
|
||||||
'html/changelog.js',
|
|
||||||
'html/changelog.html'
|
|
||||||
)
|
|
||||||
src << browse('html/changelog.html', "window=changes;size=675x650")
|
src << browse('html/changelog.html', "window=changes;size=675x650")
|
||||||
if(prefs.lastchangelog != changelog_hash)
|
if(prefs.lastchangelog != changelog_hash)
|
||||||
prefs.lastchangelog = changelog_hash
|
prefs.lastchangelog = changelog_hash
|
||||||
|
|||||||
@@ -91,11 +91,19 @@
|
|||||||
. = ..(user,2)
|
. = ..(user,2)
|
||||||
if(.)
|
if(.)
|
||||||
switch(construction_stage)
|
switch(construction_stage)
|
||||||
if(2) to_chat(user, "<span class='notice'>It has a metal frame loosely shaped around the stock.</span>")
|
if(2)
|
||||||
if(3) to_chat(user, "<span class='notice'>It has a metal frame duct-taped to the stock.</span>")
|
to_chat(user, "<span class='notice'>It has a metal frame loosely shaped around the stock.</span>")
|
||||||
if(4) to_chat(user, "<span class='notice'>It has a length of pipe attached to the body.</span>")
|
if(3)
|
||||||
if(4) to_chat(user, "<span class='notice'>It has a length of pipe welded to the body.</span>")
|
to_chat(user, "<span class='notice'>It has a metal frame duct-taped to the stock.</span>")
|
||||||
if(6) to_chat(user, "<span class='notice'>It has a cable mount and capacitor jack wired to the frame.</span>")
|
if(4)
|
||||||
if(7) to_chat(user, "<span class='notice'>It has a single superconducting coil threaded onto the barrel.</span>")
|
to_chat(user, "<span class='notice'>It has a length of pipe attached to the body.</span>")
|
||||||
if(8) to_chat(user, "<span class='notice'>It has a pair of superconducting coils threaded onto the barrel.</span>")
|
if(4)
|
||||||
if(9) to_chat(user, "<span class='notice'>It has three superconducting coils attached to the body, waiting to be secured.</span>")
|
to_chat(user, "<span class='notice'>It has a length of pipe welded to the body.</span>")
|
||||||
|
if(6)
|
||||||
|
to_chat(user, "<span class='notice'>It has a cable mount and capacitor jack wired to the frame.</span>")
|
||||||
|
if(7)
|
||||||
|
to_chat(user, "<span class='notice'>It has a single superconducting coil threaded onto the barrel.</span>")
|
||||||
|
if(8)
|
||||||
|
to_chat(user, "<span class='notice'>It has a pair of superconducting coils threaded onto the barrel.</span>")
|
||||||
|
if(9)
|
||||||
|
to_chat(user, "<span class='notice'>It has three superconducting coils attached to the body, waiting to be secured.</span>")
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
var/turf/T = get_turf(container)
|
var/turf/T = get_turf(container)
|
||||||
var/list/seen = viewers(4, T)
|
var/list/seen = viewers(4, T)
|
||||||
for(var/mob/M in seen)
|
for(var/mob/M in seen)
|
||||||
M.show_message("<span class='notice'>\icon[container] [mix_message]</span>", 1)
|
M.show_message("<span class='notice'>[bicon(container)] [mix_message]</span>", 1)
|
||||||
playsound(T, reaction_sound, 80, 1)
|
playsound(T, reaction_sound, 80, 1)
|
||||||
|
|
||||||
//obtains any special data that will be provided to the reaction products
|
//obtains any special data that will be provided to the reaction products
|
||||||
|
|||||||
@@ -131,12 +131,12 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
|||||||
if(2)
|
if(2)
|
||||||
if(!Console.silent)
|
if(!Console.silent)
|
||||||
playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
Console.audible_message(text("\icon[Console] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5)
|
Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5)
|
||||||
Console.message_log += "<B><FONT color='red'>High Priority message from <A href='?src=\ref[Console];write=[sender]'>[sender]</A></FONT></B><BR>[authmsg]"
|
Console.message_log += "<B><FONT color='red'>High Priority message from <A href='?src=\ref[Console];write=[sender]'>[sender]</A></FONT></B><BR>[authmsg]"
|
||||||
else
|
else
|
||||||
if(!Console.silent)
|
if(!Console.silent)
|
||||||
playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
Console.audible_message(text("\icon[Console] *The Requests Console beeps: 'Message from [sender]'"),,4)
|
Console.audible_message(text("[bicon(Console)] *The Requests Console beeps: 'Message from [sender]'"),,4)
|
||||||
Console.message_log += "<B>Message from <A href='?src=\ref[Console];write=[sender]'>[sender]</A></B><BR>[authmsg]"
|
Console.message_log += "<B>Message from <A href='?src=\ref[Console];write=[sender]'>[sender]</A></B><BR>[authmsg]"
|
||||||
Console.set_light(2)
|
Console.set_light(2)
|
||||||
|
|
||||||
|
|||||||
@@ -258,14 +258,14 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
if (src.active)
|
if (src.active)
|
||||||
user.visible_message("<font color='blue'>\icon[src] [user] deactivated the shield generator.</font>", \
|
user.visible_message("<font color='blue'>[bicon(src)] [user] deactivated the shield generator.</font>", \
|
||||||
"<font color='blue'>\icon[src] You deactivate the shield generator.</font>", \
|
"<font color='blue'>[bicon(src)] You deactivate the shield generator.</font>", \
|
||||||
"You hear heavy droning fade out.")
|
"You hear heavy droning fade out.")
|
||||||
src.shields_down()
|
src.shields_down()
|
||||||
else
|
else
|
||||||
if(anchored)
|
if(anchored)
|
||||||
user.visible_message("<font color='blue'>\icon[src] [user] activated the shield generator.</font>", \
|
user.visible_message("<font color='blue'>[bicon(src)] [user] activated the shield generator.</font>", \
|
||||||
"<font color='blue'>\icon[src] You activate the shield generator.</font>", \
|
"<font color='blue'>[bicon(src)] You activate the shield generator.</font>", \
|
||||||
"You hear heavy droning.")
|
"You hear heavy droning.")
|
||||||
src.shields_up()
|
src.shields_up()
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
else if(W.is_wrench())
|
else if(W.is_wrench())
|
||||||
src.anchored = !src.anchored
|
src.anchored = !src.anchored
|
||||||
playsound(src, W.usesound, 75, 1)
|
playsound(src, W.usesound, 75, 1)
|
||||||
src.visible_message("<font color='blue'>\icon[src] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].</font>")
|
src.visible_message("<font color='blue'>[bicon(src)] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].</font>")
|
||||||
|
|
||||||
if(anchored)
|
if(anchored)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user