Fixes merge conflicts.

This commit is contained in:
Neerti
2020-02-20 21:59:28 -05:00
746 changed files with 4718 additions and 4623 deletions

View File

@@ -82,7 +82,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
var/sql = "INSERT INTO erro_ban (`id`,`bantime`,`serverip`,`bantype`,`reason`,`job`,`duration`,`rounds`,`expiration_time`,`ckey`,`computerid`,`ip`,`a_ckey`,`a_computerid`,`a_ip`,`who`,`adminwho`,`edits`,`unbanned`,`unbanned_datetime`,`unbanned_ckey`,`unbanned_computerid`,`unbanned_ip`) VALUES (null, Now(), '[serverip]', '[bantype_str]', '[reason]', '[job]', [(duration)?"[duration]":"0"], [(rounds)?"[rounds]":"0"], Now() + INTERVAL [(duration>0) ? duration : 0] MINUTE, '[ckey]', '[computerid]', '[ip]', '[a_ckey]', '[a_computerid]', '[a_ip]', '[who]', '[adminwho]', '', null, null, null, null, null)"
var/DBQuery/query_insert = dbcon.NewQuery(sql)
query_insert.Execute()
usr << "<font color='blue'>Ban saved to database.</font>"
to_chat(usr, "<font color='blue'>Ban saved to database.</font>")
message_admins("[key_name_admin(usr)] has added a [bantype_str] for [ckey] [(job)?"([job])":""] [(duration > 0)?"([duration] minutes)":""] with the reason: \"[reason]\" to the ban database.",1)
@@ -136,17 +136,17 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
ban_number++;
if(ban_number == 0)
usr << "<font color='red'>Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.</font>"
to_chat(usr, "<font color='red'>Database update failed due to no bans fitting the search criteria. If this is not a legacy ban you should contact the database admin.</font>")
return
if(ban_number > 1)
usr << "<font color='red'>Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.</font>"
to_chat(usr, "<font color='red'>Database update failed due to multiple bans fitting the search criteria. Note down the ckey, job and current time and contact the database admin.</font>")
return
if(istext(ban_id))
ban_id = text2num(ban_id)
if(!isnum(ban_id))
usr << "<font color='red'>Database update failed due to a ban ID mismatch. Contact the database admin.</font>"
to_chat(usr, "<font color='red'>Database update failed due to a ban ID mismatch. Contact the database admin.</font>")
return
DB_ban_unban_by_id(ban_id)
@@ -156,7 +156,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
if(!check_rights(R_BAN)) return
if(!isnum(banid) || !istext(param))
usr << "Cancelled"
to_chat(usr, "Cancelled")
return
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, duration, reason FROM erro_ban WHERE id = [banid]")
@@ -172,7 +172,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
duration = query.item[2]
reason = query.item[3]
else
usr << "Invalid ban id. Contact the database admin"
to_chat(usr, "Invalid ban id. Contact the database admin")
return
reason = sql_sanitize_text(reason)
@@ -184,7 +184,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
value = sanitize(input("Insert the new reason for [pckey]'s ban", "New Reason", "[reason]", null) as null|text)
value = sql_sanitize_text(value)
if(!value)
usr << "Cancelled"
to_chat(usr, "Cancelled")
return
var/DBQuery/update_query = dbcon.NewQuery("UPDATE erro_ban SET reason = '[value]', edits = CONCAT(edits,'- [eckey] changed ban reason from <cite><b>\\\"[reason]\\\"</b></cite> to <cite><b>\\\"[value]\\\"</b></cite><BR>') WHERE id = [banid]")
@@ -194,7 +194,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
if(!value)
value = input("Insert the new duration (in minutes) for [pckey]'s ban", "New Duration", "[duration]", null) as null|num
if(!isnum(value) || !value)
usr << "Cancelled"
to_chat(usr, "Cancelled")
return
var/DBQuery/update_query = dbcon.NewQuery("UPDATE erro_ban SET duration = [value], edits = CONCAT(edits,'- [eckey] changed ban duration from [duration] to [value]<br>'), expiration_time = DATE_ADD(bantime, INTERVAL [value] MINUTE) WHERE id = [banid]")
@@ -205,10 +205,10 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
DB_ban_unban_by_id(banid)
return
else
usr << "Cancelled"
to_chat(usr, "Cancelled")
return
else
usr << "Cancelled"
to_chat(usr, "Cancelled")
return
datum/admins/proc/DB_ban_unban_by_id(var/id)
@@ -231,11 +231,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
ban_number++;
if(ban_number == 0)
usr << "<font color='red'>Database update failed due to a ban id not being present in the database.</font>"
to_chat(usr, "<font color='red'>Database update failed due to a ban id not being present in the database.</font>")
return
if(ban_number > 1)
usr << "<font color='red'>Database update failed due to multiple bans having the same ID. Contact the database admin.</font>"
to_chat(usr, "<font color='red'>Database update failed due to multiple bans having the same ID. Contact the database admin.</font>")
return
if(!src.owner || !istype(src.owner, /client))
@@ -271,7 +271,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
establish_db_connection()
if(!dbcon.IsConnected())
usr << "<font color='red'>Failed to establish database connection</font>"
to_chat(usr, "<font color='red'>Failed to establish database connection</font>")
return
var/output = "<div align='center'><table width='90%'><tr>"

View File

@@ -106,7 +106,7 @@ var/savefile/Banlist
Banlist.cd = "/base"
if ( Banlist.dir.Find("[ckey][computerid]") )
usr << text("<font color='red'>Ban already exists.</font>")
to_chat(usr, "<font color='red'>Ban already exists.</font>")
return 0
else
Banlist.dir.Add("[ckey][computerid]")
@@ -207,17 +207,17 @@ var/savefile/Banlist
Banlist.cd = "/base"
Banlist.dir.Add("trash[i]trashid[i]")
Banlist.cd = "/base/trash[i]trashid[i]"
Banlist["key"] << "trash[i]"
to_chat(Banlist["key"], "trash[i]")
else
Banlist.cd = "/base"
Banlist.dir.Add("[last]trashid[i]")
Banlist.cd = "/base/[last]trashid[i]"
Banlist["key"] << last
Banlist["id"] << "trashid[i]"
Banlist["reason"] << "Trashban[i]."
to_chat(Banlist["id"], "trashid[i]")
to_chat(Banlist["reason"], "Trashban[i].")
Banlist["temp"] << a
Banlist["minutes"] << CMinutes + rand(1,2000)
Banlist["bannedby"] << "trashmin"
to_chat(Banlist["bannedby"], "trashmin")
last = "trash[i]"
Banlist.cd = "/base"

View File

@@ -37,7 +37,8 @@
F[cleaned] << 1
F["last_update"] << world.realtime
log_misc("ToR data updated!")
if(usr) usr << "ToRban updated."
if(usr)
to_chat(usr, "ToRban updated.")
return 1
log_misc("ToR data update aborted: no data.")
return 0

View File

@@ -10,7 +10,7 @@ var/global/floorIsLava = 0
for(var/client/C in admins)
if((R_ADMIN|R_MOD) & C.holder.rights)
C << msg
to_chat(C,msg)
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
var/rendered = "<span class=\"log_message\"><span class=\"prefix\">ATTACK:</span> <span class=\"message\">[text]</span></span>"
@@ -18,12 +18,12 @@ var/global/floorIsLava = 0
if((R_ADMIN|R_MOD) & C.holder.rights)
if(C.is_preference_enabled(/datum/client_preference/mod/show_attack_logs))
var/msg = rendered
C << msg
to_chat(C,msg)
proc/admin_notice(var/message, var/rights)
for(var/mob/M in mob_list)
if(check_rights(rights, 0, M))
M << message
to_chat(M,message)
///////////////////////////////////////////////////////////////////////////////////////////////Panels
@@ -33,12 +33,12 @@ proc/admin_notice(var/message, var/rights)
set desc="Edit player (respawn, ban, heal, etc)"
if(!M)
usr << "You seem to be selecting a mob that doesn't exist anymore."
to_chat(usr, "You seem to be selecting a mob that doesn't exist anymore.")
return
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
var/body = "<html><head><title>Options for [M.key]</title></head>"
@@ -222,7 +222,7 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
PlayerNotesPage(1)
@@ -280,7 +280,7 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
var/dat = "<html><head><title>Info on [key]</title></head>"
dat += "<body>"
@@ -330,7 +330,7 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
var/dat
dat = text("<HEAD><TITLE>Admin Newscaster</TITLE></HEAD><H3>Admin Newscaster Unit</H3>")
@@ -561,8 +561,8 @@ proc/admin_notice(var/message, var/rights)
else
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
//world << "Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]"
//world << "Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]"
//to_world("Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
//to_world("Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
usr << browse(dat, "window=admincaster_main;size=400x600")
onclose(usr, "admincaster_main")
@@ -645,7 +645,7 @@ proc/admin_notice(var/message, var/rights)
if(confirm == "Cancel")
return
if(confirm == "Yes")
world << "<span class='danger'>Restarting world!</span> <span class='notice'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</span>"
to_world("<span class='danger'>Restarting world!</span> <span class='notice'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</span>")
log_admin("[key_name(usr)] initiated a reboot.")
feedback_set_details("end_error","admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
@@ -669,7 +669,7 @@ proc/admin_notice(var/message, var/rights)
if(!check_rights(R_SERVER,0))
message = sanitize(message, 500, extra = 0)
message = replacetext(message, "\n", "<br>") // required since we're putting it in a <p> tag
world << "<span class=notice><b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b><p style='text-indent: 50px'>[message]</p></span>"
to_world("<span class=notice><b>[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:</b><p style='text-indent: 50px'>[message]</p></span>")
log_admin("Announce: [key_name(usr)] : [message]")
feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -707,7 +707,7 @@ proc/admin_notice(var/message, var/rights)
if(!channel) //They picked a channel
return
to_chat(usr,"<span class='notice'><B>Intercom Convo Directions</B><br>Start the conversation with the sender, a pipe (|), and then the message on one line. Then hit enter to \
to_chat(usr, "<span class='notice'><B>Intercom Convo Directions</B><br>Start the conversation with the sender, a pipe (|), and then the message on one line. Then hit enter to \
add another line, and type a (whole) number of seconds to pause between that message, and the next message, then repeat the message syntax up to 20 times. For example:<br>\
--- --- ---<br>\
Some Guy|Hello guys, what's up?<br>\
@@ -731,12 +731,12 @@ proc/admin_notice(var/message, var/rights)
//Time to find how they screwed up.
//Wasn't the right length
if((decomposed.len) % 3) //+1 to accomidate the lack of a wait time for the last message
to_chat(usr,"<span class='warning'>You passed [decomposed.len] segments (senders+messages+pauses). You must pass a multiple of 3, minus 1 (no pause after the last message). That means a sender and message on every other line (starting on the first), separated by a pipe character (|), and a number every other line that is a pause in seconds.</span>")
to_chat(usr, "<span class='warning'>You passed [decomposed.len] segments (senders+messages+pauses). You must pass a multiple of 3, minus 1 (no pause after the last message). That means a sender and message on every other line (starting on the first), separated by a pipe character (|), and a number every other line that is a pause in seconds.</span>")
return
//Too long a conversation
if((decomposed.len / 3) > 20)
to_chat(usr,"<span class='warning'>This conversation is too long! 20 messages maximum, please.</span>")
to_chat(usr, "<span class='warning'>This conversation is too long! 20 messages maximum, please.</span>")
return
//Missed some sleeps, or sanitized to nothing.
@@ -745,24 +745,24 @@ proc/admin_notice(var/message, var/rights)
//Sanitize sender
var/clean_sender = sanitize(decomposed[i])
if(!clean_sender)
to_chat(usr,"<span class='warning'>One part of your conversation was not able to be sanitized. It was the sender of the [(i+2)/3]\th message.</span>")
to_chat(usr, "<span class='warning'>One part of your conversation was not able to be sanitized. It was the sender of the [(i+2)/3]\th message.</span>")
return
decomposed[i] = clean_sender
//Sanitize message
var/clean_message = sanitize(decomposed[++i])
if(!clean_message)
to_chat(usr,"<span class='warning'>One part of your conversation was not able to be sanitized. It was the body of the [(i+2)/3]\th message.</span>")
to_chat(usr, "<span class='warning'>One part of your conversation was not able to be sanitized. It was the body of the [(i+2)/3]\th message.</span>")
return
decomposed[i] = clean_message
//Sanitize wait time
var/clean_time = text2num(decomposed[++i])
if(!isnum(clean_time))
to_chat(usr,"<span class='warning'>One part of your conversation was not able to be sanitized. It was the wait time after the [(i+2)/3]\th message.</span>")
to_chat(usr, "<span class='warning'>One part of your conversation was not able to be sanitized. It was the wait time after the [(i+2)/3]\th message.</span>")
return
if(clean_time > 60)
to_chat(usr,"<span class='warning'>Max 60 second wait time between messages for sanity's sake please.</span>")
to_chat(usr, "<span class='warning'>Max 60 second wait time between messages for sanity's sake please.</span>")
return
decomposed[i] = clean_time
@@ -788,9 +788,9 @@ proc/admin_notice(var/message, var/rights)
config.ooc_allowed = !(config.ooc_allowed)
if (config.ooc_allowed)
world << "<B>The OOC channel has been globally enabled!</B>"
to_world("<B>The OOC channel has been globally enabled!</B>")
else
world << "<B>The OOC channel has been globally disabled!</B>"
to_world("<B>The OOC channel has been globally disabled!</B>")
log_and_message_admins("toggled OOC.")
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -804,9 +804,9 @@ proc/admin_notice(var/message, var/rights)
config.looc_allowed = !(config.looc_allowed)
if (config.looc_allowed)
world << "<B>The LOOC channel has been globally enabled!</B>"
to_world("<B>The LOOC channel has been globally enabled!</B>")
else
world << "<B>The LOOC channel has been globally disabled!</B>"
to_world("<B>The LOOC channel has been globally disabled!</B>")
log_and_message_admins("toggled LOOC.")
feedback_add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -821,9 +821,9 @@ proc/admin_notice(var/message, var/rights)
config.dsay_allowed = !(config.dsay_allowed)
if (config.dsay_allowed)
world << "<B>Deadchat has been globally enabled!</B>"
to_world("<B>Deadchat has been globally enabled!</B>")
else
world << "<B>Deadchat has been globally disabled!</B>"
to_world("<B>Deadchat has been globally disabled!</B>")
log_admin("[key_name(usr)] toggled deadchat.")
message_admins("[key_name_admin(usr)] toggled deadchat.", 1)
feedback_add_details("admin_verb","TDSAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc
@@ -878,7 +878,7 @@ proc/admin_notice(var/message, var/rights)
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return 1
else
usr << "<font color='red'>Error: Start Now: Game has already started.</font>"
to_chat(usr, "<font color='red'>Error: Start Now: Game has already started.</font>")
return 0
/datum/admins/proc/toggleenter()
@@ -887,9 +887,9 @@ proc/admin_notice(var/message, var/rights)
set name="Toggle Entering"
config.enter_allowed = !(config.enter_allowed)
if (!(config.enter_allowed))
world << "<B>New players may no longer enter the game.</B>"
to_world("<B>New players may no longer enter the game.</B>")
else
world << "<B>New players may now enter the game.</B>"
to_world("<B>New players may now enter the game.</B>")
log_admin("[key_name(usr)] toggled new player game entering.")
message_admins("<font color='blue'>[key_name_admin(usr)] toggled new player game entering.</font>", 1)
world.update_status()
@@ -901,9 +901,9 @@ proc/admin_notice(var/message, var/rights)
set name="Toggle AI"
config.allow_ai = !( config.allow_ai )
if (!( config.allow_ai ))
world << "<B>The AI job is no longer chooseable.</B>"
to_world("<B>The AI job is no longer chooseable.</B>")
else
world << "<B>The AI job is chooseable now.</B>"
to_world("<B>The AI job is chooseable now.</B>")
log_admin("[key_name(usr)] toggled AI allowed.")
world.update_status()
feedback_add_details("admin_verb","TAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -914,9 +914,9 @@ proc/admin_notice(var/message, var/rights)
set name="Toggle Respawn"
config.abandon_allowed = !(config.abandon_allowed)
if(config.abandon_allowed)
world << "<B>You may now respawn.</B>"
to_world("<B>You may now respawn.</B>")
else
world << "<B>You may no longer respawn :(</B>"
to_world("<B>You may no longer respawn :(</B>")
message_admins("<font color='blue'>[key_name_admin(usr)] toggled respawn to [config.abandon_allowed ? "On" : "Off"].</font>", 1)
log_admin("[key_name(usr)] toggled respawn to [config.abandon_allowed ? "On" : "Off"].")
world.update_status()
@@ -953,10 +953,10 @@ proc/admin_notice(var/message, var/rights)
return //alert("Round end delayed", null, null, null, null, null)
round_progressing = !round_progressing
if (!round_progressing)
world << "<b>The game start has been delayed.</b>"
to_world("<b>The game start has been delayed.</b>")
log_admin("[key_name(usr)] delayed the game.")
else
world << "<b>The game will start soon.</b>"
to_world("<b>The game will start soon.</b>")
log_admin("[key_name(usr)] removed the delay.")
feedback_add_details("admin_verb","DELAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -991,7 +991,7 @@ proc/admin_notice(var/message, var/rights)
if(!usr.client.holder) return
if( alert("Reboot server?",,"Yes","No") == "No")
return
world << "<font color='red'><b>Rebooting world!</b></font> <font color='blue'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</font>"
to_world("<font color='red'><b>Rebooting world!</b></font> <font color='blue'>Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key]!</font>")
log_admin("[key_name(usr)] initiated an immediate reboot.")
feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
@@ -1085,18 +1085,18 @@ proc/admin_notice(var/message, var/rights)
if(!check_rights(R_SPAWN)) return
if(!custom_items)
usr << "Custom item list is null."
to_chat(usr, "Custom item list is null.")
return
if(!custom_items.len)
usr << "Custom item list not populated."
to_chat(usr, "Custom item list not populated.")
return
for(var/assoc_key in custom_items)
usr << "[assoc_key] has:"
to_chat(usr, "[assoc_key] has:")
var/list/current_items = custom_items[assoc_key]
for(var/datum/custom_item/item in current_items)
usr << "- name: [item.name] icon: [item.item_icon] path: [item.item_path] desc: [item.item_desc]"
to_chat(usr, "- name: [item.name] icon: [item.item_icon] path: [item.item_path] desc: [item.item_desc]")
/datum/admins/proc/spawn_plant(seedtype in plant_controller.seeds)
set category = "Debug"
@@ -1151,10 +1151,10 @@ proc/admin_notice(var/message, var/rights)
set name = "Show Traitor Panel"
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(!M.mind)
usr << "This mob has no mind!"
to_chat(usr, "This mob has no mind!")
return
M.mind.edit_memory()
@@ -1240,9 +1240,9 @@ proc/admin_notice(var/message, var/rights)
set name="Toggle tinted welding helmets."
config.welder_vision = !( config.welder_vision )
if (config.welder_vision)
world << "<B>Reduced welder vision has been enabled!</B>"
to_world("<B>Reduced welder vision has been enabled!</B>")
else
world << "<B>Reduced welder vision has been disabled!</B>"
to_world("<B>Reduced welder vision has been disabled!</B>")
log_admin("[key_name(usr)] toggled welder vision.")
message_admins("[key_name_admin(usr)] toggled welder vision.", 1)
feedback_add_details("admin_verb","TTWH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -1253,9 +1253,9 @@ proc/admin_notice(var/message, var/rights)
set name="Toggle guests"
config.guests_allowed = !(config.guests_allowed)
if (!(config.guests_allowed))
world << "<B>Guests may no longer enter the game.</B>"
to_world("<B>Guests may no longer enter the game.</B>")
else
world << "<B>Guests may now enter the game.</B>"
to_world("<B>Guests may now enter the game.</B>")
log_admin("[key_name(usr)] toggled guests game entering [config.guests_allowed?"":"dis"]allowed.")
message_admins("<font color='blue'>[key_name_admin(usr)] toggled guests game entering [config.guests_allowed?"":"dis"]allowed.</font>", 1)
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -1265,21 +1265,21 @@ proc/admin_notice(var/message, var/rights)
for(var/mob/living/silicon/S in mob_list)
ai_number++
if(isAI(S))
usr << "<b>AI [key_name(S, usr)]'s laws:</b>"
to_chat(usr, "<b>AI [key_name(S, usr)]'s laws:</b>")
else if(isrobot(S))
var/mob/living/silicon/robot/R = S
usr << "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"]: laws:</b>"
to_chat(usr, "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"]: laws:</b>")
else if (ispAI(S))
usr << "<b>pAI [key_name(S, usr)]'s laws:</b>"
to_chat(usr, "<b>pAI [key_name(S, usr)]'s laws:</b>")
else
usr << "<b>SOMETHING SILICON [key_name(S, usr)]'s laws:</b>"
to_chat(usr, "<b>SOMETHING SILICON [key_name(S, usr)]'s laws:</b>")
if (S.laws == null)
usr << "[key_name(S, usr)]'s laws are null?? Contact a coder."
to_chat(usr, "[key_name(S, usr)]'s laws are null?? Contact a coder.")
else
S.laws.show_laws(usr)
if(!ai_number)
usr << "<b>No AIs located</b>" //Just so you know the thing is actually working and not just ignoring you.
to_chat(usr, "<b>No AIs located</b>") //Just so you know the thing is actually working and not just ignoring you.
/datum/admins/proc/show_skills()
set category = "Admin"
@@ -1288,7 +1288,7 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
var/mob/living/carbon/human/M = input("Select mob.", "Select mob.") as null|anything in human_mob_list
@@ -1400,16 +1400,16 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
if(!ticker || !ticker.mode)
usr << "Mode has not started."
to_chat(usr, "Mode has not started.")
return
var/antag_type = input("Choose a template.","Force Latespawn") as null|anything in all_antag_types
if(!antag_type || !all_antag_types[antag_type])
usr << "Aborting."
to_chat(usr, "Aborting.")
return
var/datum/antagonist/antag = all_antag_types[antag_type]
@@ -1424,11 +1424,11 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins) || !check_rights(R_ADMIN))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
if(!ticker || !ticker.mode)
usr << "Mode has not started."
to_chat(usr, "Mode has not started.")
return
log_and_message_admins("attempting to force mode autospawn.")
@@ -1466,7 +1466,7 @@ proc/admin_notice(var/message, var/rights)
var/msg = "[key_name(usr)] has modified [H.ckey]'s telecrystals to [crystals]."
message_admins(msg)
else
usr << "You do not have access to this command."
to_chat(usr, "You do not have access to this command.")
/datum/admins/proc/add_tcrystals(mob/living/carbon/human/H as mob)
set category = "Debug"
@@ -1482,7 +1482,7 @@ proc/admin_notice(var/message, var/rights)
var/msg = "[key_name(usr)] has added [crystals] to [H.ckey]'s telecrystals."
message_admins(msg)
else
usr << "You do not have access to this command."
to_chat(usr, "You do not have access to this command.")
/datum/admins/proc/sendFax()
@@ -1496,7 +1496,7 @@ proc/admin_notice(var/message, var/rights)
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
to_chat(usr, "Error: you are not an admin!")
return
var/replyorigin = input(src.owner, "Please specify who the fax is coming from", "Origin") as text|null
@@ -1554,20 +1554,20 @@ datum/admins/var/obj/item/weapon/paper/admin/faxreply // var to hold fax replies
if(destination.receivefax(P))
src.owner << "<span class='notice'>Message reply to transmitted successfully.</span>"
to_chat(src.owner, "<span class='notice'>Message reply to transmitted successfully.</span>")
if(P.sender) // sent as a reply
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(P.sender)]")
for(var/client/C in admins)
if((R_ADMIN | R_MOD) & C.holder.rights)
C << "<span class='log_message'><span class='prefix'>FAX LOG:</span>[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(P.sender)] (<a href='?_src_=holder;AdminFaxView=\ref[rcvdcopy]'>VIEW</a>)</span>"
to_chat(C, "<span class='log_message'><span class='prefix'>FAX LOG:</span>[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(P.sender)] (<a href='?_src_=holder;AdminFaxView=\ref[rcvdcopy]'>VIEW</a>)</span>")
else
log_admin("[key_name(src.owner)] has sent a fax message to [destination.department]")
for(var/client/C in admins)
if((R_ADMIN | R_MOD) & C.holder.rights)
C << "<span class='log_message'><span class='prefix'>FAX LOG:</span>[key_name_admin(src.owner)] has sent a fax message to [destination.department] (<a href='?_src_=holder;AdminFaxView=\ref[rcvdcopy]'>VIEW</a>)</span>"
to_chat(C, "<span class='log_message'><span class='prefix'>FAX LOG:</span>[key_name_admin(src.owner)] has sent a fax message to [destination.department] (<a href='?_src_=holder;AdminFaxView=\ref[rcvdcopy]'>VIEW</a>)</span>")
else
src.owner << "<span class='warning'>Message reply failed.</span>"
to_chat(src.owner, "<span class='warning'>Message reply failed.</span>")
spawn(100)
qdel(P)

View File

@@ -23,7 +23,7 @@
if(!message) return
var/F = investigate_subject2file(subject)
if(!F) return
F << "<small>[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>"
to_chat(F, "<small>[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>")
//ADMINVERBS
/client/proc/investigate_show( subject in list("hrefs","notes","singulo","telesci") )

View File

@@ -26,7 +26,7 @@
return
if( findtext(memo,"<script",1,0) )
return
F[ckey] << "[key] on [time2text(world.realtime,"(DDD) DD MMM hh:mm")]<br>[memo]"
to_chat(F[ckey], "[key] on [time2text(world.realtime,"(DDD) DD MMM hh:mm")]<br>[memo]")
message_admins("[key] set an admin memo:<br>[memo]")
//show all memos

View File

@@ -506,11 +506,11 @@ var/list/admin_verbs_event_manager = list(
if(holder && mob)
if(mob.invisibility == INVISIBILITY_OBSERVER)
mob.invisibility = initial(mob.invisibility)
mob << "<font color='red'><b>Invisimin off. Invisibility reset.</b></font>"
to_chat(mob, "<font color='red'><b>Invisimin off. Invisibility reset.</b></font>")
mob.alpha = max(mob.alpha + 100, 255)
else
mob.invisibility = INVISIBILITY_OBSERVER
mob << "<font color='blue'><b>Invisimin on. You are now as invisible as a ghost.</b></font>"
to_chat(mob, "<font color='blue'><b>Invisimin on. You are now as invisible as a ghost.</b></font>")
mob.alpha = max(mob.alpha - 100, 0)
@@ -640,7 +640,7 @@ var/list/admin_verbs_event_manager = list(
if(!warned_ckey || !istext(warned_ckey)) return
if(warned_ckey in admin_datums)
usr << "<font color='red'>Error: warn(): You can't warn admins.</font>"
to_chat(usr, "<font color='red'>Error: warn(): You can't warn admins.</font>")
return
var/datum/preferences/D
@@ -656,7 +656,7 @@ var/list/admin_verbs_event_manager = list(
ban_unban_log_save("[ckey] warned [warned_ckey], resulting in a [AUTOBANTIME] minute autoban.")
if(C)
message_admins("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban.")
C << "<font color='red'><BIG><B>You have been autobanned due to a warning by [ckey].</B></BIG><br>This is a temporary ban, it will be removed in [AUTOBANTIME] minutes.</font>"
to_chat(C, "<font color='red'><BIG><B>You have been autobanned due to a warning by [ckey].</B></BIG><br>This is a temporary ban, it will be removed in [AUTOBANTIME] minutes.</font>")
del(C)
else
message_admins("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban.")
@@ -664,7 +664,7 @@ var/list/admin_verbs_event_manager = list(
feedback_inc("ban_warn",1)
else
if(C)
C << "<font color='red'><BIG><B>You have been formally warned by an administrator.</B></BIG><br>Further warnings will result in an autoban.</font>"
to_chat(C, "<font color='red'><BIG><B>You have been formally warned by an administrator.</B></BIG><br>Further warnings will result in an autoban.</font>")
message_admins("[key_name_admin(src)] has warned [key_name_admin(C)]. They have [MAX_WARNS-D.warns] strikes remaining.")
else
message_admins("[key_name_admin(src)] has warned [warned_ckey] (DC). They have [MAX_WARNS-D.warns] strikes remaining.")
@@ -795,10 +795,10 @@ var/list/admin_verbs_event_manager = list(
set desc = "Toggle Air Processing"
if(!SSair.can_fire)
SSair.can_fire = TRUE
usr << "<b>Enabled air processing.</b>"
to_chat(usr, "<b>Enabled air processing.</b>")
else
SSair.can_fire = FALSE
usr << "<b>Disabled air processing.</b>"
to_chat(usr, "<b>Disabled air processing.</b>")
feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] used 'kill air'.")
message_admins("<font color='blue'>[key_name_admin(usr)] used 'kill air'.</font>", 1)
@@ -899,7 +899,7 @@ var/list/admin_verbs_event_manager = list(
if(!H) return
if(!H.client)
usr << "Only mobs with clients can alter their own appearance."
to_chat(usr, "Only mobs with clients can alter their own appearance.")
return
var/datum/gender/T = gender_datums[H.get_visible_gender()]
switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
@@ -942,7 +942,7 @@ var/list/admin_verbs_event_manager = list(
var/mob/living/carbon/human/M = input("Select mob.", "Edit Appearance") as null|anything in human_mob_list
if(!istype(M, /mob/living/carbon/human))
usr << "<font color='red'>You can only do this to humans!</font>"
to_chat(usr, "<font color='red'>You can only do this to humans!</font>")
return
switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Tajaran can result in unintended consequences.",,"Yes","No"))
if("No")
@@ -1017,7 +1017,7 @@ var/list/admin_verbs_event_manager = list(
if (J.current_positions >= J.total_positions && J.total_positions != -1)
jobs += J.title
if (!jobs.len)
usr << "There are no fully staffed jobs."
to_chat(usr, "There are no fully staffed jobs.")
return
var/job = input("Please select job slot to free", "Free job slot") as null|anything in jobs
if (job)
@@ -1060,8 +1060,8 @@ var/list/admin_verbs_event_manager = list(
if(alert("Are you sure you want to tell them to man up?","Confirmation","Deal with it","No")=="No") return
T << "<span class='notice'><b><font size=3>Man up and deal with it.</font></b></span>"
T << "<span class='notice'>Move along.</span>"
to_chat(T, "<span class='notice'><b><font size=3>Man up and deal with it.</font></b></span>")
to_chat(T, "<span class='notice'>Move along.</span>")
log_admin("[key_name(usr)] told [key_name(T)] to man up and deal with it.")
message_admins("<font color='blue'>[key_name_admin(usr)] told [key_name(T)] to man up and deal with it.</font>", 1)
@@ -1074,7 +1074,7 @@ var/list/admin_verbs_event_manager = list(
if(alert("Are you sure you want to tell the whole server up?","Confirmation","Deal with it","No")=="No") return
for (var/mob/T as mob in mob_list)
T << "<br><center><span class='notice'><b><font size=4>Man up.<br> Deal with it.</font></b><br>Move along.</span></center><br>"
to_chat(T, "<br><center><span class='notice'><b><font size=4>Man up.<br> Deal with it.</font></b><br>Move along.</span></center><br>")
T << 'sound/voice/ManUp1.ogg'
log_admin("[key_name(usr)] told everyone to man up and deal with it.")

View File

@@ -42,7 +42,7 @@ DEBUG
set name = "list all jobbans"
for(var/s in jobban_keylist)
world << s
to_world(s)
/mob/verb/reload_jobbans()
set name = "reload jobbans"

View File

@@ -62,7 +62,7 @@ generally it would be used like so:
proc/admin_proc()
if(!check_rights(R_ADMIN)) return
world << "you have enough rights!"
to_world("you have enough rights!")
NOTE: It checks usr by default. Supply the "user" argument if you wish to check for a specific mob.
*/
@@ -76,7 +76,7 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check
return FALSE
if(!C.holder)
if(show_msg)
C << "<span class='warning'>Error: You are not an admin.</span>"
to_chat(C, "<span class='warning'>Error: You are not an admin.</span>")
return FALSE
if(rights_required)
@@ -84,7 +84,7 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check
return TRUE
else
if(show_msg)
C << "<span class='warning'>Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].</span>"
to_chat(C, "<span class='warning'>Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].</span>")
return FALSE
else
return TRUE
@@ -98,7 +98,7 @@ NOTE: It checks usr by default. Supply the "user" argument if you wish to check
if(usr.client.holder.rights != other.holder.rights)
if( (usr.client.holder.rights & other.holder.rights) == other.holder.rights )
return 1 //we have all the rights they have and more
usr << "<font color='red'>Error: Cannot proceed. They have more or equal rights to us.</font>"
to_chat(usr, "<font color='red'>Error: Cannot proceed. They have more or equal rights to us.</font>")
return 0
/client/proc/mark_datum(datum/D)

View File

@@ -7,13 +7,13 @@
return
if(isnull(tx) || isnull(ty) || isnull(tz) || isnull(range))
usr << "Capture Map Part, captures part of a map using camara like rendering."
usr << "Usage: Capture-Map-Part target_x_cord target_y_cord target_z_cord range"
usr << "Target coordinates specify bottom left corner of the capture, range defines render distance to opposite corner."
to_chat(usr, "Capture Map Part, captures part of a map using camara like rendering.")
to_chat(usr, "Usage: Capture-Map-Part target_x_cord target_y_cord target_z_cord range")
to_chat(usr, "Target coordinates specify bottom left corner of the capture, range defines render distance to opposite corner.")
return
if(range > 32 || range <= 0)
usr << "Capturing range is incorrect, it must be within 1-32."
to_chat(usr, "Capturing range is incorrect, it must be within 1-32.")
return
if(locate(tx,ty,tz))
@@ -53,7 +53,7 @@
cap.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff)
var/file_name = "map_capture_x[tx]_y[ty]_z[tz]_r[range].png"
usr << "Saved capture in cache as [file_name]."
to_chat(usr, "Saved capture in cache as [file_name].")
usr << browse_rsc(cap, file_name)
else
usr << "Target coordinates are incorrect."
to_chat(usr, "Target coordinates are incorrect.")

View File

@@ -141,7 +141,7 @@ var/savefile/Banlistjob
Banlistjob.cd = "/base"
if ( Banlistjob.dir.Find("[ckey][computerid][rank]") )
usr << text("<font color='red'>Banjob already exists.</font>")
to_char(usr,"<font color='red'>Banjob already exists.</font>")
return 0
else
Banlistjob.dir.Add("[ckey][computerid][rank]")
@@ -219,22 +219,22 @@ var/savefile/Banlistjob
/*/datum/admins/proc/permjobban(ckey, computerid, reason, bannedby, temp, minutes, rank)
if(AddBanjob(ckey, computerid, reason, usr.ckey, 0, 0, job))
M << "<font color='red'><BIG><B>You have been banned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a permanent ban.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a permanent ban.</font>")
if(config.banappeals)
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
to_chat(M, "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>")
else
M << "<font color='red'>No ban appeals URL has been set.</font>"
to_chat(M, "<font color='red'>No ban appeals URL has been set.</font>")
log_admin("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("<font color='blue'>[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.</font>")
/datum/admins/proc/timejobban(ckey, computerid, reason, bannedby, temp, minutes, rank)
if(AddBanjob(ckey, computerid, reason, usr.ckey, 1, mins, job))
M << "<font color='red'><BIG><B>You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>")
if(config.banappeals)
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
to_chat(M, "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>")
else
M << "<font color='red'>No ban appeals URL has been set.</font>"
to_chat(M, "<font color='red'>No ban appeals URL has been set.</font>")
log_admin("[usr.client.ckey] has jobbanned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("<font color='blue'>[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")*/
//////////////////////////////////// DEBUG ////////////////////////////////////
@@ -253,17 +253,17 @@ var/savefile/Banlistjob
Banlistjob.cd = "/base"
Banlistjob.dir.Add("trash[i]trashid[i]")
Banlistjob.cd = "/base/trash[i]trashid[i]"
Banlistjob["key"] << "trash[i]"
to_chat(Banlistjob["key"], "trash[i]")
else
Banlistjob.cd = "/base"
Banlistjob.dir.Add("[last]trashid[i]")
Banlistjob.cd = "/base/[last]trashid[i]"
Banlistjob["key"] << last
Banlistjob["id"] << "trashid[i]"
Banlistjob["reason"] << "Trashban[i]."
to_chat(Banlistjob["id"], "trashid[i]")
to_chat(Banlistjob["reason"], "Trashban[i].")
Banlistjob["temp"] << a
Banlistjob["minutes"] << CMinutes + rand(1,2000)
Banlistjob["bannedby"] << "trashmin"
to_chat(Banlistjob["bannedby"], "trashmin")
last = "trash[i]"
Banlistjob.cd = "/base"

View File

@@ -51,13 +51,13 @@
return
if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS))
usr << "<font color='red'>You do not have permission to do this!</font>"
to_chat(usr, "<font color='red'>You do not have permission to do this!</font>")
return
establish_db_connection()
if(!dbcon.IsConnected())
usr << "<font color='red'>Failed to establish database connection</font>"
to_chat(usr, "<font color='red'>Failed to establish database connection</font>")
return
if(!adm_ckey || !new_rank)
@@ -85,14 +85,14 @@
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new admin [adm_ckey] to rank [new_rank]');")
log_query.Execute()
usr << "<font color='blue'>New admin added.</font>"
to_chat(usr, "<font color='blue'>New admin added.</font>")
else
if(!isnull(admin_id) && isnum(admin_id))
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE `erro_admin` SET rank = '[new_rank]' WHERE id = [admin_id]")
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Edited the rank of [adm_ckey] to [new_rank]');")
log_query.Execute()
usr << "<font color='blue'>Admin rank changed.</font>"
to_chat(usr, "<font color='blue'>Admin rank changed.</font>")
/datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission)
if(config.admin_legacy_system) return
@@ -101,12 +101,12 @@
return
if(!usr.client.holder || !(usr.client.holder.rights & R_PERMISSIONS))
usr << "<font color='red'>You do not have permission to do this!</font>"
to_chat(usr, "<font color='red'>You do not have permission to do this!</font>")
return
establish_db_connection()
if(!dbcon.IsConnected())
usr << "<font color='red'>Failed to establish database connection</font>"
to_chat(usr, "<font color='red'>Failed to establish database connection</font>")
return
if(!adm_ckey || !new_permission)
@@ -140,10 +140,10 @@
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]');")
log_query.Execute()
usr << "<font color='blue'>Permission removed.</font>"
to_chat(usr, "<font color='blue'>Permission removed.</font>")
else //This admin doesn't have this permission, so we are adding it.
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE `erro_admin` SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]")
insert_query.Execute()
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')")
log_query.Execute()
usr << "<font color='blue'>Permission added.</font>"
to_chat(usr, "<font color='blue'>Permission added.</font>")

View File

@@ -63,23 +63,23 @@
switch(bantype)
if(BANTYPE_PERMA)
if(!banckey || !banreason)
usr << "Not enough parameters (Requires ckey and reason)"
to_chat(usr, "Not enough parameters (Requires ckey and reason)")
return
banduration = null
banjob = null
if(BANTYPE_TEMP)
if(!banckey || !banreason || !banduration)
usr << "Not enough parameters (Requires ckey, reason and duration)"
to_chat(usr, "Not enough parameters (Requires ckey, reason and duration)")
return
banjob = null
if(BANTYPE_JOB_PERMA)
if(!banckey || !banreason || !banjob)
usr << "Not enough parameters (Requires ckey, reason and job)"
to_chat(usr, "Not enough parameters (Requires ckey, reason and job)")
return
banduration = null
if(BANTYPE_JOB_TEMP)
if(!banckey || !banreason || !banjob || !banduration)
usr << "Not enough parameters (Requires ckey, reason and job)"
to_chat(usr, "Not enough parameters (Requires ckey, reason and job)")
return
var/mob/playermob
@@ -116,14 +116,14 @@
var/new_ckey = ckey(input(usr,"New admin's ckey","Admin ckey", null) as text|null)
if(!new_ckey) return
if(new_ckey in admin_datums)
usr << "<font color='red'>Error: Topic 'editrights': [new_ckey] is already an admin</font>"
to_chat(usr, "<font color='red'>Error: Topic 'editrights': [new_ckey] is already an admin</font>")
return
adm_ckey = new_ckey
task = "rank"
else if(task != "show")
adm_ckey = ckey(href_list["ckey"])
if(!adm_ckey)
usr << "<font color='red'>Error: Topic 'editrights': No valid ckey</font>"
to_chat(usr, "<font color='red'>Error: Topic 'editrights': No valid ckey</font>")
return
var/datum/admins/D = admin_datums[adm_ckey]
@@ -155,7 +155,7 @@
if(config.admin_legacy_system)
new_rank = ckeyEx(new_rank)
if(!new_rank)
usr << "<font color='red'>Error: Topic 'editrights': Invalid rank</font>"
to_chat(usr, "<font color='red'>Error: Topic 'editrights': Invalid rank</font>")
return
if(config.admin_legacy_system)
if(admin_ranks.len)
@@ -264,7 +264,7 @@
var/mob/M = locate(href_list["mob"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
var/delmob = 0
@@ -370,14 +370,14 @@
var/mob/M = locate(href_list["jobban2"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(!M.ckey) //sanity
usr << "This mob has no ckey"
to_chat(usr, "This mob has no ckey")
return
if(!job_master)
usr << "Job Master has not been setup!"
to_chat(usr, "Job Master has not been setup!")
return
var/dat = ""
@@ -610,16 +610,16 @@
//JOBBAN'S INNARDS
else if(href_list["jobban3"])
if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN,0))
usr << "<span class='warning'>You do not have the appropriate permissions to add job bans!</span>"
to_chat(usr, "<span class='warning'>You do not have the appropriate permissions to add job bans!</span>")
return
if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0) && !config.mods_can_job_tempban) // If mod and tempban disabled
usr << "<span class='warning'>Mod jobbanning is disabled!</span>"
to_chat(usr, "<span class='warning'>Mod jobbanning is disabled!</span>")
return
var/mob/M = locate(href_list["jobban4"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(M != usr) //we can jobban ourselves
@@ -628,7 +628,7 @@
return
if(!job_master)
usr << "Job Master has not been setup!"
to_chat(usr, "Job Master has not been setup!")
return
//get jobs for department if specified, otherwise just returnt he one job in a list.
@@ -697,16 +697,16 @@
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
if("Yes")
if(!check_rights(R_MOD,0) && !check_rights(R_BAN, 0))
usr << "<span class='warning'> You Cannot issue temporary job-bans!</span>"
to_chat(usr, "<span class='warning'> You Cannot issue temporary job-bans!</span>")
return
if(config.ban_legacy_system)
usr << "<font color='red'>Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.</font>"
to_chat(usr, "<font color='red'>Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.</font>")
return
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(!mins)
return
if(check_rights(R_MOD, 0) && !check_rights(R_BAN, 0) && mins > config.mod_job_tempban_max)
usr << "<span class='warning'> Moderators can only job tempban up to [config.mod_job_tempban_max] minutes!</span>"
to_chat(usr, "<span class='warning'> Moderators can only job tempban up to [config.mod_job_tempban_max] minutes!</span>")
return
var/reason = sanitize(input(usr,"Reason?","Please State Reason","") as text|null)
if(!reason)
@@ -726,9 +726,9 @@
msg += ", [job]"
notes_add(M.ckey, "Banned from [msg] - [reason]", usr)
message_admins("<font color='blue'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes</font>", 1)
M << "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>"
M << "<font color='red'><B>The reason is: [reason]</B></font>"
M << "<font color='red'>This jobban will be lifted in [mins] minutes.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>")
to_chat(M, "<font color='red'><B>The reason is: [reason]</B></font>")
to_chat(M, "<font color='red'>This jobban will be lifted in [mins] minutes.</font>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
if("No")
@@ -747,9 +747,9 @@
else msg += ", [job]"
notes_add(M.ckey, "Banned from [msg] - [reason]", usr)
message_admins("<font color='blue'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]</font>", 1)
M << "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>"
M << "<font color='red'><B>The reason is: [reason]</B></font>"
M << "<font color='red'>Jobban can be lifted only upon request.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>")
to_chat(M, "<font color='red'><B>The reason is: [reason]</B></font>")
to_chat(M, "<font color='red'>Jobban can be lifted only upon request.</font>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
if("Cancel")
@@ -759,7 +759,7 @@
//all jobs in joblist are banned already OR we didn't give a reason (implying they shouldn't be banned)
if(joblist.len) //at least 1 banned job exists in joblist so we have stuff to unban.
if(!config.ban_legacy_system)
usr << "Unfortunately, database based unbanning cannot be done through this panel"
to_chat(usr, "Unfortunately, database based unbanning cannot be done through this panel")
DB_ban_panel(M.ckey)
return
var/msg
@@ -780,7 +780,7 @@
continue
if(msg)
message_admins("<font color='blue'>[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]</font>", 1)
M << "<font color='red'><BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG></font>"
to_chat(M, "<font color='red'><BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG></font>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
return 0 //we didn't do anything!
@@ -817,11 +817,11 @@
else if(href_list["newban"])
if(!check_rights(R_MOD,0) && !check_rights(R_BAN, 0))
usr << "<span class='warning'>You do not have the appropriate permissions to add bans!</span>"
to_chat(usr, "<span class='warning'>You do not have the appropriate permissions to add bans!</span>")
return
if(check_rights(R_MOD,0) && !check_rights(R_ADMIN, 0) && !config.mods_can_job_tempban) // If mod and tempban disabled
usr << "<span class='warning'>Mod jobbanning is disabled!</span>"
to_chat(usr, "<span class='warning'>Mod jobbanning is disabled!</span>")
return
var/mob/M = locate(href_list["newban"])
@@ -835,7 +835,7 @@
if(!mins)
return
if(check_rights(R_MOD, 0) && !check_rights(R_BAN, 0) && mins > config.mod_tempban_max)
usr << "<span class='warning'>Moderators can only job tempban up to [config.mod_tempban_max] minutes!</span>"
to_chat(usr, "<span class='warning'>Moderators can only job tempban up to [config.mod_tempban_max] minutes!</span>")
return
if(mins >= 525600) mins = 525599
var/reason = sanitize(input(usr,"Reason?","reason","Griefer") as text|null)
@@ -844,15 +844,15 @@
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.")
notes_add(M.ckey,"[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.",usr)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>")
feedback_inc("ban_tmp",1)
DB_ban_record(BANTYPE_TEMP, M, mins, reason)
feedback_inc("ban_tmp_mins",mins)
if(config.banappeals)
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
to_chat(M, "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>")
else
M << "<font color='red'>No ban appeals URL has been set.</font>"
to_chat(M, "<font color='red'>No ban appeals URL has been set.</font>")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")
var/datum/admin_help/AH = M.client ? M.client.current_ticket : null
@@ -871,12 +871,12 @@
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
if("No")
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a permanent ban.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a permanent ban.</font>")
if(config.banappeals)
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
to_chat(M, "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>")
else
M << "<font color='red'>No ban appeals URL has been set.</font>"
to_chat(M, "<font color='red'>No ban appeals URL has been set.</font>")
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
notes_add(M.ckey,"[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.",usr)
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
@@ -939,7 +939,7 @@
master_mode = href_list["c_mode2"]
log_admin("[key_name(usr)] set the mode as [config.mode_names[master_mode]].")
message_admins("<font color='blue'>[key_name_admin(usr)] set the mode as [config.mode_names[master_mode]].</font>", 1)
world << "<font color='blue'><b>The mode is now: [config.mode_names[master_mode]]</b></font>"
to_world("<font color='blue'><b>The mode is now: [config.mode_names[master_mode]]</b></font>")
Game() // updates the main game menu
world.save_mode(master_mode)
.(href, list("c_mode"=1))
@@ -962,7 +962,7 @@
var/mob/living/carbon/human/H = locate(href_list["monkeyone"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
log_admin("[key_name(usr)] attempting to monkeyize [key_name(H)]")
@@ -974,7 +974,7 @@
var/mob/living/carbon/human/H = locate(href_list["corgione"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
log_admin("[key_name(usr)] attempting to corgize [key_name(H)]")
@@ -986,7 +986,7 @@
var/mob/M = locate(href_list["forcespeech"])
if(!ismob(M))
usr << "this can only be used on instances of type /mob"
to_chat(usr, "this can only be used on instances of type /mob")
var/speech = input("What will [key_name(M)] say?.", "Force speech", "")// Don't need to sanitize, since it does that in say(), we also trust our admins.
if(!speech) return
@@ -1003,10 +1003,10 @@
var/mob/M = locate(href_list["sendtoprison"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(istype(M, /mob/living/silicon/ai))
usr << "This cannot be used on instances of type /mob/living/silicon/ai"
to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai")
return
var/turf/prison_cell = pick(prisonwarp)
@@ -1031,7 +1031,7 @@
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
M << "<font color='red'>You have been sent to the prison station!</font>"
to_chat(M, "<font color='red'>You have been sent to the prison station!</font>")
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("<font color='blue'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</font>", 1)
@@ -1043,10 +1043,10 @@
var/mob/M = locate(href_list["tdome1"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(istype(M, /mob/living/silicon/ai))
usr << "This cannot be used on instances of type /mob/living/silicon/ai"
to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai")
return
for(var/obj/item/I in M)
@@ -1056,7 +1056,7 @@
sleep(5)
M.loc = pick(tdome1)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 1)", 1)
@@ -1068,10 +1068,10 @@
var/mob/M = locate(href_list["tdome2"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(istype(M, /mob/living/silicon/ai))
usr << "This cannot be used on instances of type /mob/living/silicon/ai"
to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai")
return
for(var/obj/item/I in M)
@@ -1081,7 +1081,7 @@
sleep(5)
M.loc = pick(tdome2)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 2)", 1)
@@ -1093,17 +1093,17 @@
var/mob/M = locate(href_list["tdomeadmin"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(istype(M, /mob/living/silicon/ai))
usr << "This cannot be used on instances of type /mob/living/silicon/ai"
to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai")
return
M.Paralyse(5)
sleep(5)
M.loc = pick(tdomeadmin)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Admin.)", 1)
@@ -1115,10 +1115,10 @@
var/mob/M = locate(href_list["tdomeobserve"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(istype(M, /mob/living/silicon/ai))
usr << "This cannot be used on instances of type /mob/living/silicon/ai"
to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai")
return
for(var/obj/item/I in M)
@@ -1132,7 +1132,7 @@
sleep(5)
M.loc = pick(tdomeobserve)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1)
@@ -1141,7 +1141,7 @@
var/mob/living/L = locate(href_list["revive"])
if(!istype(L))
usr << "This can only be used on instances of type /mob/living"
to_chat(usr, "This can only be used on instances of type /mob/living")
return
if(config.allow_admin_rev)
@@ -1149,14 +1149,14 @@
message_admins("<font color='red'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!</font>", 1)
log_admin("[key_name(usr)] healed / Rrvived [key_name(L)]")
else
usr << "Admin Rejuvinates have been disabled"
to_chat(usr, "Admin Rejuvinates have been disabled")
else if(href_list["makeai"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makeai"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
message_admins("<font color='red'>Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!</font>", 1)
@@ -1168,7 +1168,7 @@
var/mob/living/carbon/human/H = locate(href_list["makealien"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
usr.client.cmd_admin_alienize(H)
@@ -1178,7 +1178,7 @@
var/mob/living/carbon/human/H = locate(href_list["makerobot"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
usr.client.cmd_admin_robotize(H)
@@ -1188,7 +1188,7 @@
var/mob/M = locate(href_list["makeanimal"])
if(istype(M, /mob/new_player))
usr << "This cannot be used on instances of type /mob/new_player"
to_chat(usr, "This cannot be used on instances of type /mob/new_player")
return
usr.client.cmd_admin_animalize(M)
@@ -1198,7 +1198,7 @@
var/mob/living/carbon/human/H = locate(href_list["togmutate"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
var/block=text2num(href_list["block"])
usr.client.cmd_admin_toggle_block(H,block)
@@ -1263,7 +1263,7 @@
else if(href_list["adminmoreinfo"])
var/mob/M = locate(href_list["adminmoreinfo"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
var/location_description = ""
@@ -1303,19 +1303,19 @@
if(MALE,FEMALE) gender_description = "[M.gender]"
else gender_description = "<font color='red'><b>[M.gender]</b></font>"
src.owner << "<b>Info about [M.name]:</b> "
src.owner << "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]"
src.owner << "Name = <b>[M.name]</b>; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = <b>[M.key]</b>;"
src.owner << "Location = [location_description];"
src.owner << "[special_role_description]"
src.owner << "(<a href='?src=\ref[usr];priv_msg=\ref[M]'>PM</a>) (<A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[M]'>VV</A>) (<A HREF='?src=\ref[src];subtlemessage=\ref[M]'>SM</A>) ([admin_jump_link(M, src)]) (<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A>)"
to_chat(src.owner, "<b>Info about [M.name]:</b> ")
to_chat(src.owner, "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]")
to_chat(src.owner, "Name = <b>[M.name]</b>; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = <b>[M.key]</b>;")
to_chat(src.owner, "Location = [location_description];")
to_chat(src.owner, "[special_role_description]")
to_chat(src.owner, "(<a href='?src=\ref[usr];priv_msg=\ref[M]'>PM</a>) (<A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[M]'>VV</A>) (<A HREF='?src=\ref[src];subtlemessage=\ref[M]'>SM</A>) ([admin_jump_link(M, src)]) (<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A>)")
else if(href_list["adminspawncookie"])
if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["adminspawncookie"])
if(!ishuman(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand )
@@ -1332,14 +1332,14 @@
log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
message_admins("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
feedback_inc("admin_cookies_spawned",1)
H << "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>"
to_chat(H, "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>")
else if(href_list["adminsmite"])
if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["adminsmite"])
if(!ishuman(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
owner.smite(H)
@@ -1349,7 +1349,7 @@
var/mob/living/M = locate(href_list["BlueSpaceArtillery"])
if(!isliving(M))
usr << "This can only be used on instances of type /mob/living"
to_chat(usr, "This can only be used on instances of type /mob/living")
return
if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Blue Space Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
@@ -1360,41 +1360,41 @@
else if(href_list["CentComReply"])
var/mob/living/L = locate(href_list["CentComReply"])
if(!istype(L))
usr << "This can only be used on instances of type /mob/living/"
to_chat(usr, "This can only be used on instances of type /mob/living/")
return
if(L.can_centcom_reply())
var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(L)] via their headset.","Outgoing message from CentCom", ""))
if(!input) return
src.owner << "You sent [input] to [L] via a secure channel."
to_chat(src.owner, "You sent [input] to [L] via a secure channel.")
log_admin("[src.owner] replied to [key_name(L)]'s CentCom message with the message [input].")
message_admins("[src.owner] replied to [key_name(L)]'s CentCom message with: \"[input]\"")
if(!isAI(L))
L << "<span class='info'>You hear something crackle in your headset for a moment before a voice speaks.</span>"
L << "<span class='info'>Please stand by for a message from Central Command.</span>"
L << "<span class='info'>Message as follows.</span>"
L << "<span class='notice'>[input]</span>"
L << "<span class='info'>Message ends.</span>"
to_chat(L, "<span class='info'>You hear something crackle in your headset for a moment before a voice speaks.</span>")
to_chat(L, "<span class='info'>Please stand by for a message from Central Command.</span>")
to_chat(L, "<span class='info'>Message as follows.</span>")
to_chat(L, "<span class='notice'>[input]</span>")
to_chat(L, "<span class='info'>Message ends.</span>")
else
src.owner << "The person you are trying to contact does not have functional radio equipment."
to_chat(src.owner, "The person you are trying to contact does not have functional radio equipment.")
else if(href_list["SyndicateReply"])
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
usr << "The person you are trying to contact is not wearing a headset"
to_chat(usr, "The person you are trying to contact is not wearing a headset")
return
var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from a shadowy figure...", ""))
if(!input) return
src.owner << "You sent [input] to [H] via a secure channel."
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
log_admin("[src.owner] replied to [key_name(H)]'s illegal message with the message [input].")
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. <b>\"[input]\"</b> Message ends.\""
to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. <b>\"[input]\"</b> Message ends.\"")
else if(href_list["AdminFaxView"])
var/obj/item/fax = locate(href_list["AdminFaxView"])
@@ -1416,7 +1416,7 @@
usr << browse(data, "window=[B.name]")
else
usr << "<font color='red'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</font>"
to_chat(usr, "<font color='red'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</font>")
else if (href_list["AdminFaxViewPage"])
var/page = text2num(href_list["AdminFaxViewPage"])
@@ -1488,7 +1488,7 @@
var/mob/M = locate(href_list["traitor"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob."
to_chat(usr, "This can only be used on instances of type /mob.")
return
show_traitor_panel(M)
@@ -1512,7 +1512,7 @@
if(!check_rights(R_SPAWN)) return
if(!config.allow_admin_spawning)
usr << "Spawning of items is not allowed."
to_chat(usr, "Spawning of items is not allowed.")
return
var/atom/loc = usr.loc
@@ -1572,24 +1572,24 @@
where = "onfloor"
if( where == "inhand" )
usr << "Support for inhand not available yet. Will spawn on floor."
to_chat(usr, "Support for inhand not available yet. Will spawn on floor.")
where = "onfloor"
if ( where == "inhand" ) //Can only give when human or monkey
if ( !( ishuman(usr) || issmall(usr) ) )
usr << "Can only spawn in hand when you're a human or a monkey."
to_chat(usr, "Can only spawn in hand when you're a human or a monkey.")
where = "onfloor"
else if ( usr.get_active_hand() )
usr << "Your active hand is full. Spawning on floor."
to_chat(usr, "Your active hand is full. Spawning on floor.")
where = "onfloor"
if ( where == "inmarked" )
if ( !marked_datum )
usr << "You don't have any object marked. Abandoning spawn."
to_chat(usr, "You don't have any object marked. Abandoning spawn.")
return
else
if ( !istype(marked_datum,/atom) )
usr << "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn."
to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.")
return
var/atom/target //Where the object will be spawned
@@ -1841,17 +1841,17 @@
if(check_rights(R_SPAWN|R_EVENT))
var/mob/M = locate(href_list["toglang"])
if(!istype(M))
usr << "[M] is illegal type, must be /mob!"
to_chat(usr, "[M] is illegal type, must be /mob!")
return
var/lang2toggle = href_list["lang"]
var/datum/language/L = GLOB.all_languages[lang2toggle]
if(L in M.languages)
if(!M.remove_language(lang2toggle))
usr << "Failed to remove language '[lang2toggle]' from \the [M]!"
to_chat(usr, "Failed to remove language '[lang2toggle]' from \the [M]!")
else
if(!M.add_language(lang2toggle))
usr << "Failed to add language '[lang2toggle]' from \the [M]!"
to_chat(usr, "Failed to add language '[lang2toggle]' from \the [M]!")
show_player_panel(M)
@@ -1860,7 +1860,7 @@
var/mob/M = locate(href_list["cryoplayer"])
if(!istype(M))
to_chat(usr,"<span class='warning'>Mob doesn't exist!</span>")
to_chat(usr, "<span class='warning'>Mob doesn't exist!</span>")
return
var/client/C = usr.client

View File

@@ -31,6 +31,6 @@
var/F = file("broken_icons.txt")
fdel(F)
F << text
world << "Completeled successfully and written to [F]"
to_world("Completeled successfully and written to [F]")

View File

@@ -54,7 +54,7 @@
A.on_mob_jump()
A.loc = T
else
A << "This mob is not located in the game world."
to_chat(A, "This mob is not located in the game world.")
else
alert("Admin jumping disabled")

View File

@@ -14,7 +14,7 @@
if(check_rights(R_ADMIN,0))
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << "<span class='admin_channel'>" + create_text_tag("admin", "ADMIN:", C) + " <span class='name'>[key_name(usr, 1)]</span>([admin_jump_link(mob, src)]): <span class='message'>[msg]</span></span>"
to_chat(C, "<span class='admin_channel'>" + create_text_tag("admin", "ADMIN:", C) + " <span class='name'>[key_name(usr, 1)]</span>([admin_jump_link(mob, src)]): <span class='message'>[msg]</span></span>")
feedback_add_details("admin_verb","M") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -37,7 +37,7 @@
sender_name = "<span class='admin'>[sender_name]</span>"
for(var/client/C in admins)
if(check_rights(R_ADMIN|R_MOD|R_SERVER))
C << "<span class='mod_channel'>" + create_text_tag("mod", "MOD:", C) + " <span class='name'>[sender_name]</span>([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>"
to_chat(C, "<span class='mod_channel'>" + create_text_tag("mod", "MOD:", C) + " <span class='name'>[sender_name]</span>([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>")
feedback_add_details("admin_verb","MS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -59,6 +59,6 @@
if(check_rights(R_ADMIN, 0))
sender_name = "<span class='admin'>[sender_name]</span>"
for(var/client/C in admins)
C << "<span class='event_channel'>" + create_text_tag("event", "EVENT:", C) + " <span class='name'>[sender_name]</span>([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>"
to_chat(C, "<span class='event_channel'>" + create_text_tag("event", "EVENT:", C) + " <span class='name'>[sender_name]</span>([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>")
feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -10,23 +10,23 @@
if(alert("WARNING: This command should not be run on a live server. Do you want to continue?", "Check Piping", "No", "Yes") == "No")
return
usr << "Checking for disconnected pipes..."
to_chat(usr, "Checking for disconnected pipes...")
//all plumbing - yes, some things might get stated twice, doesn't matter.
for (var/obj/machinery/atmospherics/plumbing in machines)
if (plumbing.nodealert)
usr << "Unconnected [plumbing.name] located at [plumbing.x],[plumbing.y],[plumbing.z] ([get_area(plumbing.loc)])"
to_chat(usr, "Unconnected [plumbing.name] located at [plumbing.x],[plumbing.y],[plumbing.z] ([get_area(plumbing.loc)])")
//Manifolds
for (var/obj/machinery/atmospherics/pipe/manifold/pipe in machines)
if (!pipe.node1 || !pipe.node2 || !pipe.node3)
usr << "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])"
to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])")
//Pipes
for (var/obj/machinery/atmospherics/pipe/simple/pipe in machines)
if (!pipe.node1 || !pipe.node2)
usr << "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])"
to_chat(usr, "Unconnected [pipe.name] located at [pipe.x],[pipe.y],[pipe.z] ([get_area(pipe.loc)])")
usr << "Checking for overlapping pipes..."
to_chat(usr, "Checking for overlapping pipes...")
next_turf:
for(var/turf/T in turfs)
for(var/dir in cardinal)
@@ -36,9 +36,9 @@
for(var/connect_type in pipe.connect_types)
connect_types[connect_type] += 1
if(connect_types[1] > 1 || connect_types[2] > 1 || connect_types[3] > 1)
usr << "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])"
to_chat(usr, "Overlapping pipe ([pipe.name]) located at [T.x],[T.y],[T.z] ([get_area(T)])")
continue next_turf
usr << "Done"
to_chat(usr, "Done")
/client/proc/powerdebug()
set category = "Mapping"
@@ -52,9 +52,9 @@
if (!PN.nodes || !PN.nodes.len)
if(PN.cables && (PN.cables.len > 1))
var/obj/structure/cable/C = PN.cables[1]
usr << "Powernet with no nodes! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]"
to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]")
if (!PN.cables || (PN.cables.len < 10))
if(PN.cables && (PN.cables.len > 1))
var/obj/structure/cable/C = PN.cables[1]
usr << "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]"
to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]")

View File

@@ -73,72 +73,72 @@
Click()
switch(master.cl.buildmode)
if(1) // Basic Build
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button = Construct / Upgrade</span>"
usr << "<span class='notice'>Right Mouse Button = Deconstruct / Delete / Downgrade</span>"
usr << "<span class='notice'>Left Mouse Button + ctrl = R-Window</span>"
usr << "<span class='notice'>Left Mouse Button + alt = Airlock</span>"
usr << ""
usr << "<span class='notice'>Use the button in the upper left corner to</span>"
usr << "<span class='notice'>change the direction of built objects.</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button = Construct / Upgrade</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button = Deconstruct / Delete / Downgrade</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button + ctrl = R-Window</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button + alt = Airlock</span>")
to_chat(usr, "")
to_chat(usr, "<span class='notice'>Use the button in the upper left corner to</span>")
to_chat(usr, "<span class='notice'>change the direction of built objects.</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(2) // Adv. Build
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Right Mouse Button on buildmode button = Set object type</span>"
usr << "<span class='notice'>Middle Mouse Button on buildmode button= On/Off object type saying</span>"
usr << "<span class='notice'>Middle Mouse Button on turf/obj = Capture object type</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj = Place objects</span>"
usr << "<span class='notice'>Right Mouse Button = Delete objects</span>"
usr << "<span class='notice'>Mouse Button + ctrl = Copy object type</span>"
usr << ""
usr << "<span class='notice'>Use the button in the upper left corner to</span>"
usr << "<span class='notice'>change the direction of built objects.</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on buildmode button = Set object type</span>")
to_chat(usr, "<span class='notice'>Middle Mouse Button on buildmode button= On/Off object type saying</span>")
to_chat(usr, "<span class='notice'>Middle Mouse Button on turf/obj = Capture object type</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj = Place objects</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button = Delete objects</span>")
to_chat(usr, "<span class='notice'>Mouse Button + ctrl = Copy object type</span>")
to_chat(usr, "")
to_chat(usr, "<span class='notice'>Use the button in the upper left corner to</span>")
to_chat(usr, "<span class='notice'>change the direction of built objects.</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(3) // Edit
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Right Mouse Button on buildmode button = Select var(type) & value</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj/mob = Set var(type) & value</span>"
usr << "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset var's value</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on buildmode button = Select var(type) & value</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj/mob = Set var(type) & value</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset var's value</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(4) // Throw
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>"
usr << "<span class='notice'>Right Mouse Button on turf/obj/mob = Throw</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf/obj/mob = Throw</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(5) // Room Build
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on turf = Select as point A</span>"
usr << "<span class='notice'>Right Mouse Button on turf = Select as point B</span>"
usr << "<span class='notice'>Right Mouse Button on buildmode button = Change floor/wall type</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf = Select as point A</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf = Select as point B</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on buildmode button = Change floor/wall type</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(6) // Make Ladders
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on turf = Set as upper ladder loc</span>"
usr << "<span class='notice'>Right Mouse Button on turf = Set as lower ladder loc</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf = Set as upper ladder loc</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf = Set as lower ladder loc</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(7) // Move Into Contents
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>"
usr << "<span class='notice'>Right Mouse Button on turf/obj/mob = Move into selection</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf/obj/mob = Move into selection</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(8) // Make Lights
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj/mob = Make it glow</span>"
usr << "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset glowing</span>"
usr << "<span class='notice'>Right Mouse Button on buildmode button = Change glow properties</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj/mob = Make it glow</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset glowing</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on buildmode button = Change glow properties</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(9) // Control mobs with ai_holders.
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on AI mob = Select/Deselect mob</span>"
usr << "<span class='notice'>Left Mouse Button + alt on AI mob = Toggle hostility on mob</span>"
usr << "<span class='notice'>Left Mouse Button + ctrl on AI mob = Reset target/following/movement</span>"
usr << "<span class='notice'>Right Mouse Button on enemy mob = Command selected mobs to attack mob</span>"
usr << "<span class='notice'>Right Mouse Button on allied mob = Command selected mobs to follow mob</span>"
usr << "<span class='notice'>Right Mouse Button + shift on any mob = Command selected mobs to follow mob regardless of faction</span>"
usr << "<span class='notice'>Right Mouse Button on tile = Command selected mobs to move to tile (will cancel if enemies are seen)</span>"
usr << "<span class='notice'>Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be inturrupted by enemies)</span>"
usr << "<span class='notice'>Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on AI mob = Select/Deselect mob</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button + alt on AI mob = Toggle hostility on mob</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button + ctrl on AI mob = Reset target/following/movement</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on enemy mob = Command selected mobs to attack mob</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on allied mob = Command selected mobs to follow mob</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button + shift on any mob = Command selected mobs to follow mob regardless of faction</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on tile = Command selected mobs to move to tile (will cancel if enemies are seen)</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button + shift on tile = Command selected mobs to reposition to tile (will not be inturrupted by enemies)</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button + alt on obj/turfs = Command selected mobs to attack obj/turf</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
return 1
/obj/effect/bmode/buildquit
@@ -363,10 +363,11 @@
qdel(object)
else if(pa.Find("ctrl"))
holder.buildmode.objholder = object.type
user << "<span class='notice'>[object]([object.type]) copied to buildmode.</span>"
to_chat(user, "<span class='notice'>[object]([object.type]) copied to buildmode.</span>")
if(pa.Find("middle"))
holder.buildmode.objholder = text2path("[object.type]")
if(holder.buildmode.objsay) usr << "[object.type]"
if(holder.buildmode.objsay)
to_chat(usr, "[object.type]")
if(3) // Edit
@@ -375,13 +376,13 @@
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
object.vars[holder.buildmode.varholder] = holder.buildmode.valueholder
else
user << "<span class='danger'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>"
to_chat(user, "<span class='danger'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>")
if(pa.Find("right"))
if(object.vars.Find(holder.buildmode.varholder))
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
object.vars[holder.buildmode.varholder] = initial(object.vars[holder.buildmode.varholder])
else
user << "<span class='danger'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>"
to_chat(user, "<span class='danger'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>")
if(4) // Throw
if(pa.Find("left"))
@@ -394,14 +395,14 @@
if(5) // Room build
if(pa.Find("left"))
holder.buildmode.coordA = get_turf(object)
user << "<span class='notice'>Defined [object] ([object.type]) as point A.</span>"
to_chat(user, "<span class='notice'>Defined [object] ([object.type]) as point A.</span>")
if(pa.Find("right"))
holder.buildmode.coordB = get_turf(object)
user << "<span class='notice'>Defined [object] ([object.type]) as point B.</span>"
to_chat(user, "<span class='notice'>Defined [object] ([object.type]) as point B.</span>")
if(holder.buildmode.coordA && holder.buildmode.coordB)
user << "<span class='notice'>A and B set, creating rectangle.</span>"
to_chat(user, "<span class='notice'>A and B set, creating rectangle.</span>")
holder.buildmode.make_rectangle(
holder.buildmode.coordA,
holder.buildmode.coordB,
@@ -413,14 +414,14 @@
if(6) // Ladders
if(pa.Find("left"))
holder.buildmode.coordA = get_turf(object)
user << "<span class='notice'>Defined [object] ([object.type]) as upper ladder location.</span>"
to_chat(user, "<span class='notice'>Defined [object] ([object.type]) as upper ladder location.</span>")
if(pa.Find("right"))
holder.buildmode.coordB = get_turf(object)
user << "<span class='notice'>Defined [object] ([object.type]) as lower ladder location.</span>"
to_chat(user, "<span class='notice'>Defined [object] ([object.type]) as lower ladder location.</span>")
if(holder.buildmode.coordA && holder.buildmode.coordB)
user << "<span class='notice'>Ladder locations set, building ladders.</span>"
to_chat(user, "<span class='notice'>Ladder locations set, building ladders.</span>")
var/obj/structure/ladder/A = new /obj/structure/ladder/up(holder.buildmode.coordA)
var/obj/structure/ladder/B = new /obj/structure/ladder(holder.buildmode.coordB)
A.target_up = B

View File

@@ -19,10 +19,10 @@
custom_event_msg = input
world << "<h1 class='alert'>Custom Event</h1>"
world << "<h2 class='alert'>A custom event is starting. OOC Info:</h2>"
world << "<span class='alert'>[custom_event_msg]</span>"
world << "<br>"
to_world("<h1 class='alert'>Custom Event</h1>")
to_world("<h2 class='alert'>A custom event is starting. OOC Info:</h2>")
to_world("<span class='alert'>[custom_event_msg]</span>")
to_world("<br>")
// normal verb for players to view info
/client/verb/cmd_view_custom_event()

View File

@@ -388,33 +388,33 @@
var/list/areas_without_intercom = areas_all - areas_with_intercom
var/list/areas_without_camera = areas_all - areas_with_camera
world << "<b>AREAS WITHOUT AN APC:</b>"
to_world("<b>AREAS WITHOUT AN APC:</b>")
for(var/areatype in areas_without_APC)
world << "* [areatype]"
to_world("* [areatype]")
world << "<b>AREAS WITHOUT AN AIR ALARM:</b>"
to_world("<b>AREAS WITHOUT AN AIR ALARM:</b>")
for(var/areatype in areas_without_air_alarm)
world << "* [areatype]"
to_world("* [areatype]")
world << "<b>AREAS WITHOUT A REQUEST CONSOLE:</b>"
to_world("<b>AREAS WITHOUT A REQUEST CONSOLE:</b>")
for(var/areatype in areas_without_RC)
world << "* [areatype]"
to_world("* [areatype]")
world << "<b>AREAS WITHOUT ANY LIGHTS:</b>"
to_world("<b>AREAS WITHOUT ANY LIGHTS:</b>")
for(var/areatype in areas_without_light)
world << "* [areatype]"
to_world("* [areatype]")
world << "<b>AREAS WITHOUT A LIGHT SWITCH:</b>"
to_world("<b>AREAS WITHOUT A LIGHT SWITCH:</b>")
for(var/areatype in areas_without_LS)
world << "* [areatype]"
to_world("* [areatype]")
world << "<b>AREAS WITHOUT ANY INTERCOMS:</b>"
to_world("<b>AREAS WITHOUT ANY INTERCOMS:</b>")
for(var/areatype in areas_without_intercom)
world << "* [areatype]"
to_world("* [areatype]")
world << "<b>AREAS WITHOUT ANY CAMERAS:</b>"
to_world("<b>AREAS WITHOUT ANY CAMERAS:</b>")
for(var/areatype in areas_without_camera)
world << "* [areatype]"
to_world("* [areatype]")
/datum/admins/proc/cmd_admin_dress(input in getmobs())
set category = "Fun"

View File

@@ -128,7 +128,7 @@
return
if(!air_master)
usr << "Cannot find air_system"
to_chat(usr, "Cannot find air_system")
return
var/datum/air_group/dead_groups = list()
for(var/datum/air_group/group in air_master.air_groups)
@@ -150,7 +150,7 @@
return
if(!air_master)
usr << "Cannot find air_system"
to_chat(usr, "Cannot find air_system")
return
var/turf/T = get_turf(usr)
@@ -159,7 +159,7 @@
AG.next_check = 30
AG.group_processing = 0
else
usr << "Local airgroup is unsimulated!"
to_chat(usr, "Local airgroup is unsimulated!")
feedback_add_details("admin_verb","KLAG") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
*/
@@ -168,9 +168,9 @@
set desc = "This spams all the active jobban entries for the current round to standard output."
set category = "Debug"
usr << "<b>Jobbans active in this round.</b>"
to_chat(usr, "<b>Jobbans active in this round.</b>")
for(var/t in jobban_keylist)
usr << "[t]"
to_chat(usr, "[t]")
/client/proc/print_jobban_old_filter()
set name = "Search Jobban Log"
@@ -181,7 +181,7 @@
if(!job_filter)
return
usr << "<b>Jobbans active in this round.</b>"
to_chat(usr, "<b>Jobbans active in this round.</b>")
for(var/t in jobban_keylist)
if(findtext(t, job_filter))
usr << "[t]"
to_chat(usr, "[t]")

View File

@@ -14,11 +14,11 @@
var/dice = num2text(sum) + "d" + num2text(side)
if(alert("Do you want to inform the world about your game?",,"Yes", "No") == "Yes")
world << "<h2 style=\"color:#A50400\">The dice have been rolled by Gods!</h2>"
to_world("<h2 style=\"color:#A50400\">The dice have been rolled by Gods!</h2>")
var/result = roll(dice)
if(alert("Do you want to inform the world about the result?",,"Yes", "No") == "Yes")
world << "<h2 style=\"color:#A50400\">Gods rolled [dice], result is [result]</h2>"
to_world("<h2 style=\"color:#A50400\">Gods rolled [dice], result is [result]</h2>")
message_admins("[key_name_admin(src)] rolled dice [dice], result is [result]", 1)

View File

@@ -33,7 +33,7 @@
return
target.verbs |= /client/proc/getruntimelog
target << "<font color='red'>You have been granted access to runtime logs. Please use them responsibly or risk being banned.</font>"
to_chat(target, "<font color='red'>You have been granted access to runtime logs. Please use them responsibly or risk being banned.</font>")
return
@@ -100,7 +100,7 @@
set name = "Show Server Attack Log"
set desc = "Shows today's server attack log."
to_chat(usr,"This verb doesn't actually do anything.")
to_chat(usr, "This verb doesn't actually do anything.")
/*
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")] Attack.log"

View File

@@ -10,14 +10,14 @@
feedback_add_details("admin_verb","FA")
log_and_message_admins("Full atmosphere reset initiated by [usr].")
world << "<span class = 'danger'>Initiating restart of atmosphere. The server may lag a bit.</span>"
to_world("<span class = 'danger'>Initiating restart of atmosphere. The server may lag a bit.</span>")
sleep(10)
var/current_time = world.timeofday
// Depower the supermatter, as it would quickly blow up once we remove all gases from the pipes.
for(var/obj/machinery/power/supermatter/S in machines)
S.power = 0
usr << "\[1/5\] - Supermatter depowered"
to_chat(usr, "\[1/5\] - Supermatter depowered")
// Remove all gases from all pipenets
for(var/datum/pipe_network/PN in pipe_networks)
@@ -25,13 +25,13 @@
G.gas = list()
G.update_values()
usr << "\[2/5\] - All pipenets purged of gas."
to_chat(usr, "\[2/5\] - All pipenets purged of gas.")
// Delete all zones.
for(var/zone/Z in world)
Z.c_invalidate()
usr << "\[3/5\] - All ZAS Zones removed."
to_chat(usr, "\[3/5\] - All ZAS Zones removed.")
var/list/unsorted_overlays = list()
for(var/id in gas_data.tile_overlay)
@@ -43,9 +43,9 @@
T.overlays.Remove(unsorted_overlays)
T.zone = null
usr << "\[4/5\] - All turfs reset to roundstart values."
to_chat(usr, "\[4/5\] - All turfs reset to roundstart values.")
SSair.RebootZAS()
usr << "\[5/5\] - ZAS Rebooted"
world << "<span class = 'danger'>Atmosphere restart completed in <b>[(world.timeofday - current_time)/10]</b> seconds.</span>"
to_chat(usr, "\[5/5\] - ZAS Rebooted")
to_world("<span class = 'danger'>Atmosphere restart completed in <b>[(world.timeofday - current_time)/10]</b> seconds.</span>")

View File

@@ -220,7 +220,7 @@ var/list/debug_verbs = list (
var/turf/simulated/location = get_turf(usr)
if(!istype(location, /turf/simulated)) // We're in space, let's not cause runtimes.
usr << "<font color='red'>this debug tool cannot be used from space</font>"
to_chat(usr, "<font color='red'>this debug tool cannot be used from space</font>")
return
var/icon/red = new('icons/misc/debug_group.dmi', "red") //created here so we don't have to make thousands of these.
@@ -228,11 +228,11 @@ var/list/debug_verbs = list (
var/icon/blue = new('icons/misc/debug_group.dmi', "blue")
if(!usedZAScolors)
usr << "ZAS Test Colors"
usr << "Green = Zone you are standing in"
usr << "Blue = Connected zone to the zone you are standing in"
usr << "Yellow = A zone that is connected but not one adjacent to your connected zone"
usr << "Red = Not connected"
to_chat(usr, "ZAS Test Colors")
to_chat(usr, "Green = Zone you are standing in")
to_chat(usr, "Blue = Connected zone to the zone you are standing in")
to_chat(usr, "Yellow = A zone that is connected but not one adjacent to your connected zone")
to_chat(usr, "Red = Not connected")
usedZAScolors = 1
testZAScolors_zones += location.zone
@@ -316,9 +316,9 @@ var/list/debug_verbs = list (
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
world << line*/
to_world(line)*/
world << "There are [count] objects of type [type_path] on z-level [num_level]"
to_world("There are [count] objects of type [type_path] on z-level [num_level]")
feedback_add_details("admin_verb","mOBJZ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/count_objects_all()
@@ -343,9 +343,9 @@ var/list/debug_verbs = list (
if(i*10+j <= atom_list.len)
temp_atom = atom_list[i*10+j]
line += " no.[i+10+j]@\[[temp_atom.x], [temp_atom.y], [temp_atom.z]\]; "
world << line*/
to_world(line)*/
world << "There are [count] objects of type [type_path] in the game world"
to_world("There are [count] objects of type [type_path] in the game world")
feedback_add_details("admin_verb","mOBJ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -364,7 +364,7 @@ var/global/prevent_airgroup_regroup = 0
set category = "Mapping"
set name = "Regroup All Airgroups Attempt"
usr << "<font color='red'>Proc disabled.</font>" //Why not.. Delete the procs instead?
to_chat(usr, "<font color='red'>Proc disabled.</font>") //Why not.. Delete the procs instead?
/*prevent_airgroup_regroup = 0
for(var/datum/air_group/AG in air_master.air_groups)
@@ -375,7 +375,7 @@ var/global/prevent_airgroup_regroup = 0
set category = "Mapping"
set name = "Kill pipe processing"
usr << "<font color='red'>Proc disabled.</font>"
to_chat(usr, "<font color='red'>Proc disabled.</font>")
/*pipe_processing_killed = !pipe_processing_killed
if(pipe_processing_killed)
@@ -387,7 +387,7 @@ var/global/prevent_airgroup_regroup = 0
set category = "Mapping"
set name = "Kill air processing"
usr << "<font color='red'>Proc disabled.</font>"
to_chat(usr, "<font color='red'>Proc disabled.</font>")
/*air_processing_killed = !air_processing_killed
if(air_processing_killed)
@@ -401,7 +401,7 @@ var/global/say_disabled = 0
set category = "Mapping"
set name = "Disable all communication verbs"
usr << "<font color='red'>Proc disabled.</font>"
to_chat(usr, "<font color='red'>Proc disabled.</font>")
/*say_disabled = !say_disabled
if(say_disabled)
@@ -416,7 +416,7 @@ var/global/movement_disabled_exception //This is the client that calls the proc,
set category = "Mapping"
set name = "Disable all movement"
usr << "<font color='red'>Proc disabled.</font>"
to_chat(usr, "<font color='red'>Proc disabled.</font>")
/*movement_disabled = !movement_disabled
if(movement_disabled)

View File

@@ -61,7 +61,7 @@ var/list/sounds_cache = list()
for(var/mob/living/carbon/human/CP in human_mob_list)
if(CP.real_name=="Cuban Pete" && CP.key!="Rosham")
CP << "Your body can't contain the rhumba beat"
to_chat(CP, "Your body can't contain the rhumba beat")
CP.gib()

View File

@@ -4,7 +4,7 @@
if(istype(O,/obj/singularity))
if(config.forbid_singulo_possession)
usr << "It is forbidden to possess singularities."
to_chat(usr, "It is forbidden to possess singularities.")
return
var/turf/T = get_turf(O)

View File

@@ -3,7 +3,7 @@
set name = "Pray"
if(say_disabled) //This is here to try to identify lag problems
usr << "<font color='red'>Speech is currently admin-disabled.</font>"
to_chat(usr, "<font color='red'>Speech is currently admin-disabled.</font>")
return
msg = sanitize(msg)
@@ -13,7 +13,7 @@
if(msg)
client.handle_spam_prevention(MUTE_PRAY)
if(usr.client.prefs.muted & MUTE_PRAY)
usr << "<font color='red'> You cannot pray (muted).</font>"
to_chat(usr, "<font color='red'> You cannot pray (muted).</font>")
return
var/image/cross = image('icons/obj/storage.dmi',"bible")
@@ -22,9 +22,9 @@
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
if(C.is_preference_enabled(/datum/client_preference/admin/show_chat_prayers))
C << msg
to_chat(C,msg)
C << 'sound/effects/ding.ogg'
usr << "Your prayers have been received by the gods."
to_chat(usr, "Your prayers have been received by the gods.")
feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//log_admin("HELP: [key_name(src)]: [msg]")
@@ -33,12 +33,12 @@
msg = "<font color='blue'><b><font color=orange>[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentComReply=\ref[Sender]'>RPLY</A>):</b> [msg]</font>"
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg
to_chat(C,msg)
C << 'sound/machines/signal.ogg'
/proc/Syndicate_announce(var/msg, var/mob/Sender)
msg = "<font color='blue'><b><font color=crimson>ILLEGAL:</font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) ([admin_jump_link(Sender, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]</font>"
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)
C << msg
to_chat(C,msg)
C << 'sound/machines/signal.ogg'

View File

@@ -38,7 +38,7 @@
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
spawn(50)
M << "<font color='red'>You have been sent to the prison station!</font>"
to_chat(M, "<font color='red'>You have been sent to the prison station!</font>")
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("<font color='blue'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</font>", 1)
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -93,7 +93,7 @@
if(usr)
if (usr.client)
if(usr.client.holder)
M << "<B>You hear a voice in your head...</B> <i>[msg]</i>"
to_chat(M, "<B>You hear a voice in your head...</B> <i>[msg]</i>")
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
msg = "<span class='adminnotice'><b> SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] :</b> [msg]</span>"
@@ -113,7 +113,7 @@
if (!msg)
return
world << "[msg]"
to_world("[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins("<font color='blue'><B> GlobalNarrate: [key_name_admin(usr)] : [msg]<BR></B></font>", 1)
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -151,7 +151,7 @@
to_chat(src, "Only administrators may use this command.")
return
M.status_flags ^= GODMODE
usr << "<font color='blue'> Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</font>"
to_chat(usr, "<font color='blue'> Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</font>")
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]"
@@ -168,12 +168,12 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
if(!usr || !usr.client)
return
if(!usr.client.holder)
usr << "<font color='red'>Error: cmd_admin_mute: You don't have permission to do this.</font>"
to_chat(usr, "<font color='red'>Error: cmd_admin_mute: You don't have permission to do this.</font>")
return
if(!M.client)
usr << "<font color='red'>Error: cmd_admin_mute: This mob doesn't have a client tied to it.</font>"
to_chat(usr, "<font color='red'>Error: cmd_admin_mute: This mob doesn't have a client tied to it.</font>")
if(M.client.holder)
usr << "<font color='red'>Error: cmd_admin_mute: You cannot mute an admin/mod.</font>"
to_chat(usr, "<font color='red'>Error: cmd_admin_mute: You cannot mute an admin/mod.</font>")
if(!M.client)
return
if(M.client.holder)
@@ -196,7 +196,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
M.client.prefs.muted |= mute_type
log_admin("SPAM AUTOMUTE: [muteunmute] [key_name(M)] from [mute_string]")
message_admins("SPAM AUTOMUTE: [muteunmute] [key_name_admin(M)] from [mute_string].", 1)
M << "<span class='alert'>You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.</span>"
to_chat(M, "<span class='alert'>You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.</span>")
feedback_add_details("admin_verb","AUTOMUTE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -209,7 +209,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
log_admin("[key_name(usr)] has [muteunmute] [key_name(M)] from [mute_string]")
message_admins("[key_name_admin(usr)] has [muteunmute] [key_name_admin(M)] from [mute_string].", 1)
M << "<span class = 'alert'>You have been [muteunmute] from [mute_string].</span>"
to_chat(M, "<span class = 'alert'>You have been [muteunmute] from [mute_string].</span>")
feedback_add_details("admin_verb","MUTE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_add_random_ai_law()
@@ -304,7 +304,7 @@ Ccomp's first proc.
if(g.antagHUD)
g.antagHUD = 0 // Disable it on those that have it enabled
g.has_enabled_antagHUD = 2 // We'll allow them to respawn
g << "<font color='red'><B>The Administrator has disabled AntagHUD </B></font>"
to_chat(g, "<font color='red'><B>The Administrator has disabled AntagHUD </B></font>")
config.antag_hud_allowed = 0
to_chat(src, "<font color='red'><B>AntagHUD usage has been disabled</B></font>")
action = "disabled"
@@ -312,7 +312,7 @@ Ccomp's first proc.
for(var/mob/observer/dead/g in get_ghosts())
if(!g.client.holder) // Add the verb back for all non-admin ghosts
g.verbs += /mob/observer/dead/verb/toggle_antagHUD
g << "<font color='blue'><B>The Administrator has enabled AntagHUD </B></font>" // Notify all observers they can now use AntagHUD
to_chat(g, "<font color='blue'><B>The Administrator has enabled AntagHUD </B></font>") // Notify all observers they can now use AntagHUD
config.antag_hud_allowed = 1
action = "enabled"
to_chat(src, "<font color='blue'><B>AntagHUD usage has been enabled</B></font>")
@@ -332,14 +332,14 @@ Ccomp's first proc.
var/action=""
if(config.antag_hud_restricted)
for(var/mob/observer/dead/g in get_ghosts())
g << "<font color='blue'><B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B></font>"
to_chat(g, "<font color='blue'><B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B></font>")
action = "lifted restrictions"
config.antag_hud_restricted = 0
to_chat(src, "<font color='blue'><B>AntagHUD restrictions have been lifted</B></font>")
else
for(var/mob/observer/dead/g in get_ghosts())
g << "<font color='red'><B>The administrator has placed restrictions on joining the round if you use AntagHUD</B></font>"
g << "<font color='red'><B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B></font>"
to_chat(g, "<font color='red'><B>The administrator has placed restrictions on joining the round if you use AntagHUD</B></font>")
to_chat(g, "<font color='red'><B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B></font>")
g.antagHUD = 0
g.has_enabled_antagHUD = 0
action = "placed restrictions"
@@ -497,7 +497,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
log_admin("[admin] has spawned [player_key]'s character [new_character.real_name].")
message_admins("[admin] has spawned [player_key]'s character [new_character.real_name].", 1)
new_character << "You have been fully spawned. Enjoy the game."
to_chat(new_character, "You have been fully spawned. Enjoy the game.")
feedback_add_details("admin_verb","RSPCH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -514,13 +514,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
for(var/mob/living/silicon/ai/M in mob_list)
if (M.stat == 2)
usr << "Upload failed. No signal is being detected from the AI."
to_chat(usr, "Upload failed. No signal is being detected from the AI.")
else if (M.see_in_dark == 0)
usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power."
to_chat(usr, "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power.")
else
M.add_ion_law(input)
for(var/mob/living/silicon/ai/O in mob_list)
O << input + "<font color='red'>... LAWS UPDATED!</font>"
to_chat(O,input + "<font color='red'>... LAWS UPDATED!</font>")
O.show_laws()
log_admin("Admin [key_name(usr)] has added a new AI law - [input]")
@@ -573,7 +573,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if("Yes")
command_announcement.Announce(input, customname, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
if("No")
world << "<font color='red'>New [using_map.company_name] Update available at all communication consoles.</font>"
to_world("<font color='red'>New [using_map.company_name] Update available at all communication consoles.</font>")
world << sound('sound/AI/commandreport.ogg')
log_admin("[key_name(src)] has created a command report: [input]")
@@ -722,9 +722,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
if(M)
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes</font>."
M << "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes</font>.")
to_chat(M, "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")
world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=[mins]&server=[replacetext(config.server_name, "#", "")]")
@@ -737,9 +737,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!reason)
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a permanent ban.</font>"
M << "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a permanent ban.</font>")
to_chat(M, "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.</font>")
world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=perma&server=[replacetext(config.server_name, "#", "")]")
@@ -758,7 +758,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/list/L = M.get_contents()
for(var/t in L)
usr << "[t]"
to_chat(usr, "[t]")
feedback_add_details("admin_verb","CC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/* This proc is DEFERRED. Does not do anything.
@@ -876,9 +876,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Special Verbs"
set name = "Attack Log"
usr << text("<font color='red'><b>Attack Log for []</b></font>", mob)
to_chat(usr, "<font color='red'><b>Attack Log for [mob]</b></font>")
for(var/t in M.attack_log)
usr << t
to_chat(usr,t)
feedback_add_details("admin_verb","ATTL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -890,13 +890,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_FUN)) return
if (ticker && ticker.mode)
usr << "Nope you can't do this, the game's already started. This only works before rounds!"
to_chat(usr, "Nope you can't do this, the game's already started. This only works before rounds!")
return
if(ticker.random_players)
ticker.random_players = 0
message_admins("Admin [key_name_admin(usr)] has disabled \"Everyone is Special\" mode.", 1)
usr << "Disabled."
to_chat(usr, "Disabled.")
return
@@ -908,9 +908,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1)
if(notifyplayers == "Yes")
world << "<font color='blue'><b>Admin [usr.key] has forced the players to have completely random identities!</font></b>"
to_world("<font color='blue'><b>Admin [usr.key] has forced the players to have completely random identities!</font></b>")
usr << "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>."
to_chat(usr, "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>.")
ticker.random_players = 1
feedback_add_details("admin_verb","MER") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -925,11 +925,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!config.allow_random_events)
config.allow_random_events = 1
usr << "Random events enabled"
to_chat(usr, "Random events enabled")
message_admins("Admin [key_name_admin(usr)] has enabled random events.", 1)
else
config.allow_random_events = 0
usr << "Random events disabled"
to_chat(usr, "Random events disabled")
message_admins("Admin [key_name_admin(usr)] has disabled random events.", 1)
feedback_add_details("admin_verb","TRE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -11,11 +11,11 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future
return
if(!ticker)
usr << "<font color='red'>The game hasn't started yet!</font>"
to_chat(usr, "<font color='red'>The game hasn't started yet!</font>")
return
if(world.time < 6000)
usr << "<font color='red'>There are [(6000-world.time)/10] seconds remaining before it may be called.</font>"
to_chat(usr, "<font color='red'>There are [(6000-world.time)/10] seconds remaining before it may be called.</font>")
return
var/datum/antagonist/deathsquad/team
@@ -33,7 +33,7 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future
return
if(team.deployed)
usr << "<font color='red'>Someone is already sending a team.</font>"
to_chat(usr, "<font color='red'>Someone is already sending a team.</font>")
return
if(alert("Do you want to send in a strike team? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
@@ -49,7 +49,7 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future
return
if(team.deployed)
usr << "Looks like someone beat you to it."
to_chat(usr, "Looks like someone beat you to it.")
return
team.attempt_random_spawn()

View File

@@ -3,20 +3,20 @@
set name = "Create AI Triumvirate"
if(ticker.current_state > GAME_STATE_PREGAME)
usr << "This option is currently only usable during pregame. This may change at a later date."
to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.")
return
if(job_master && ticker)
var/datum/job/job = job_master.GetJob("AI")
if(!job)
usr << "Unable to locate the AI job"
to_chat(usr, "Unable to locate the AI job")
return
if(ticker.triai)
ticker.triai = 0
usr << "Only one AI will be spawned at round start."
to_chat(usr, "Only one AI will be spawned at round start.")
message_admins("<font color='blue'>[key_name_admin(usr)] has toggled off triple AIs at round start.</font>", 1)
else
ticker.triai = 1
usr << "There will be an AI Triumvirate at round start."
to_chat(usr, "There will be an AI Triumvirate at round start.")
message_admins("<font color='blue'>[key_name_admin(usr)] has toggled on triple AIs at round start.</font>", 1)
return

View File

@@ -16,7 +16,7 @@
var/mob/M = locate(href_list["rename"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
var/new_name = sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null, MAX_NAME_LEN)
@@ -31,7 +31,7 @@
var/D = locate(href_list["datumedit"])
if(!istype(D,/datum) && !istype(D,/client))
usr << "This can only be used on instances of types /client or /datum"
to_chat(usr, "This can only be used on instances of types /client or /datum")
return
modify_variables(D, href_list["varnameedit"], 1)
@@ -41,7 +41,7 @@
var/D = locate(href_list["datumchange"])
if(!istype(D,/datum) && !istype(D,/client))
usr << "This can only be used on instances of types /client or /datum"
to_chat(usr, "This can only be used on instances of types /client or /datum")
return
modify_variables(D, href_list["varnamechange"], 0)
@@ -51,7 +51,7 @@
var/atom/A = locate(href_list["datummass"])
if(!istype(A))
usr << "This can only be used on instances of type /atom"
to_chat(usr, "This can only be used on instances of type /atom")
return
cmd_mass_modify_object_variables(A, href_list["varnamemass"])
@@ -61,7 +61,7 @@
var/mob/M = locate(href_list["mob_player_panel"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.holder.show_player_panel(M)
@@ -72,7 +72,7 @@
var/mob/M = locate(href_list["give_spell"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.give_spell(M)
@@ -84,7 +84,7 @@
var/mob/living/M = locate(href_list["give_modifier"])
if(!istype(M))
usr << "This can only be used on instances of type /mob/living"
to_chat(usr, "This can only be used on instances of type /mob/living")
return
src.admin_give_modifier(M)
@@ -95,7 +95,7 @@
var/mob/M = locate(href_list["give_disease2"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.give_disease2(M)
@@ -106,7 +106,7 @@
var/mob/M = locate(href_list["godmode"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.cmd_admin_godmode(M)
@@ -117,7 +117,7 @@
var/mob/M = locate(href_list["gib"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
src.cmd_admin_gib(M)
@@ -127,7 +127,7 @@
var/mob/M = locate(href_list["build_mode"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
togglebuildmode(M)
@@ -138,7 +138,7 @@
var/mob/M = locate(href_list["drop_everything"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(usr.client)
@@ -149,7 +149,7 @@
var/mob/M = locate(href_list["direct_control"])
if(!istype(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(usr.client)
@@ -160,7 +160,7 @@
var/mob/living/carbon/human/H = locate(href_list["make_skeleton"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
H.ChangeToSkeleton()
@@ -217,7 +217,7 @@
var/atom/A = locate(href_list["rotatedatum"])
if(!istype(A))
usr << "This can only be done to instances of type /atom"
to_chat(usr, "This can only be done to instances of type /atom")
return
switch(href_list["rotatedir"])
@@ -230,12 +230,12 @@
var/mob/living/carbon/human/H = locate(href_list["makemonkey"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("monkeyone"=href_list["makemonkey"]))
@@ -244,12 +244,12 @@
var/mob/living/carbon/human/H = locate(href_list["makerobot"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makerobot"=href_list["makerobot"]))
@@ -258,12 +258,12 @@
var/mob/living/carbon/human/H = locate(href_list["makealien"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makealien"=href_list["makealien"]))
@@ -272,12 +272,12 @@
var/mob/living/carbon/human/H = locate(href_list["makeai"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
holder.Topic(href, list("makeai"=href_list["makeai"]))
@@ -286,26 +286,26 @@
var/mob/living/carbon/human/H = locate(href_list["setspecies"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
return
var/new_species = input("Please choose a new species.","Species",null) as null|anything in GLOB.all_species
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(H.set_species(new_species))
usr << "Set species of [H] to [H.species]."
to_chat(usr, "Set species of [H] to [H.species].")
else
usr << "Failed! Something went wrong."
to_chat(usr, "Failed! Something went wrong.")
else if(href_list["addlanguage"])
if(!check_rights(R_SPAWN)) return
var/mob/H = locate(href_list["addlanguage"])
if(!istype(H))
usr << "This can only be done to instances of type /mob"
to_chat(usr, "This can only be done to instances of type /mob")
return
var/new_language = input("Please choose a language to add.","Language",null) as null|anything in GLOB.all_languages
@@ -314,24 +314,24 @@
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(H.add_language(new_language))
usr << "Added [new_language] to [H]."
to_chat(usr, "Added [new_language] to [H].")
else
usr << "Mob already knows that language."
to_chat(usr, "Mob already knows that language.")
else if(href_list["remlanguage"])
if(!check_rights(R_SPAWN)) return
var/mob/H = locate(href_list["remlanguage"])
if(!istype(H))
usr << "This can only be done to instances of type /mob"
to_chat(usr, "This can only be done to instances of type /mob")
return
if(!H.languages.len)
usr << "This mob knows no languages."
to_chat(usr, "This mob knows no languages.")
return
var/datum/language/rem_language = input("Please choose a language to remove.","Language",null) as null|anything in H.languages
@@ -340,13 +340,13 @@
return
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(H.remove_language(rem_language.name))
usr << "Removed [rem_language] from [H]."
to_chat(usr, "Removed [rem_language] from [H].")
else
usr << "Mob doesn't know that language."
to_chat(usr, "Mob doesn't know that language.")
else if(href_list["addverb"])
if(!check_rights(R_DEBUG)) return
@@ -354,7 +354,7 @@
var/mob/living/H = locate(href_list["addverb"])
if(!istype(H))
usr << "This can only be done to instances of type /mob/living"
to_chat(usr, "This can only be done to instances of type /mob/living")
return
var/list/possibleverbs = list()
possibleverbs += "Cancel" // One for the top...
@@ -372,7 +372,7 @@
var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(!verb || verb == "Cancel")
return
@@ -385,11 +385,11 @@
var/mob/H = locate(href_list["remverb"])
if(!istype(H))
usr << "This can only be done to instances of type /mob"
to_chat(usr, "This can only be done to instances of type /mob")
return
var/verb = input("Please choose a verb to remove.","Verbs",null) as null|anything in H.verbs
if(!H)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(!verb)
return
@@ -401,18 +401,18 @@
var/mob/living/carbon/M = locate(href_list["addorgan"])
if(!istype(M))
usr << "This can only be done to instances of type /mob/living/carbon"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
var/new_organ = input("Please choose an organ to add.","Organ",null) as null|anything in typesof(/obj/item/organ)-/obj/item/organ
if(!new_organ) return
if(!M)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(locate(new_organ) in M.internal_organs)
usr << "Mob already has that organ."
to_chat(usr, "Mob already has that organ.")
return
new new_organ(M)
@@ -423,20 +423,20 @@
var/mob/living/carbon/M = locate(href_list["remorgan"])
if(!istype(M))
usr << "This can only be done to instances of type /mob/living/carbon"
to_chat(usr, "This can only be done to instances of type /mob/living/carbon")
return
var/obj/item/organ/rem_organ = input("Please choose an organ to remove.","Organ",null) as null|anything in M.internal_organs
if(!M)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
if(!(locate(rem_organ) in M.internal_organs))
usr << "Mob does not have that organ."
to_chat(usr, "Mob does not have that organ.")
return
usr << "Removed [rem_organ] from [M]."
to_chat(usr, "Removed [rem_organ] from [M].")
rem_organ.removed()
qdel(rem_organ)
@@ -446,13 +446,13 @@
var/mob/H = locate(href_list["fix_nano"])
if(!istype(H) || !H.client)
usr << "This can only be done on mobs with clients"
to_chat(usr, "This can only be done on mobs with clients")
return
SSnanoui.send_resources(H.client)
usr << "Resource files sent"
H << "Your NanoUI Resource files have been refreshed"
to_chat(usr, "Resource files sent")
to_chat(H, "Your NanoUI Resource files have been refreshed")
log_admin("[key_name(usr)] resent the NanoUI resource files to [key_name(H)] ")
@@ -461,7 +461,7 @@
var/mob/M = locate(href_list["regenerateicons"])
if(!ismob(M))
usr << "This can only be done to instances of type /mob"
to_chat(usr, "This can only be done to instances of type /mob")
return
M.regenerate_icons()
@@ -476,7 +476,7 @@
var/amount = input("Deal how much damage to mob? (Negative values here heal)","Adjust [Text]loss",0) as num
if(!L)
usr << "Mob doesn't exist anymore"
to_chat(usr, "Mob doesn't exist anymore")
return
switch(Text)
@@ -487,7 +487,7 @@
if("brain") L.adjustBrainLoss(amount)
if("clone") L.adjustCloneLoss(amount)
else
usr << "You caused an error. DEBUG: Text:[Text] Mob:[L]"
to_chat(usr, "You caused an error. DEBUG: Text:[Text] Mob:[L]")
return
if(amount != 0)

View File

@@ -64,9 +64,9 @@
I.vis_spread(visible)
spawn(0)
if(I)
//world << "infra: setting limit"
//to_world("infra: setting limit")
I.limit = 8
//world << "infra: processing beam \ref[I]"
//to_world("infra: processing beam \ref[I]")
I.process()
return
return
@@ -173,11 +173,11 @@
return
/obj/effect/beam/i_beam/proc/vis_spread(v)
//world << "i_beam \ref[src] : vis_spread"
//to_world("i_beam \ref[src] : vis_spread")
visible = v
spawn(0)
if(next)
//world << "i_beam \ref[src] : is next [next.type] \ref[next], calling spread"
//to_world("i_beam \ref[src] : is next [next.type] \ref[next], calling spread")
next.vis_spread(v)
return
return
@@ -199,34 +199,34 @@
invisibility = 0
//world << "now [src.left] left"
//to_world("now [src.left] left")
var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc)
I.master = master
I.density = 1
I.set_dir(dir)
//world << "created new beam \ref[I] at [I.x] [I.y] [I.z]"
//to_world("created new beam \ref[I] at [I.x] [I.y] [I.z]")
step(I, I.dir)
if(I)
//world << "step worked, now at [I.x] [I.y] [I.z]"
//to_world("step worked, now at [I.x] [I.y] [I.z]")
if(!(next))
//world << "no next"
//to_world("no next")
I.density = 0
//world << "spreading"
//to_world("spreading")
I.vis_spread(visible)
next = I
spawn(0)
//world << "limit = [limit] "
//to_world("limit = [limit] ")
if((I && limit > 0))
I.limit = limit - 1
//world << "calling next process"
//to_world("calling next process")
I.process()
return
else
//world << "is a next: \ref[next], deleting beam \ref[I]"
//to_world("is a next: \ref[next], deleting beam \ref[I]")
qdel(I)
else
//world << "step failed, deleting \ref[next]"
//to_world("step failed, deleting \ref[next]")
qdel(next)
spawn(10)
process()

View File

@@ -52,7 +52,7 @@
/obj/item/device/assembly/mousetrap/attack_self(mob/living/user as mob)
if(!armed)
user << "<span class='notice'>You arm [src].</span>"
to_chat(user, "<span class='notice'>You arm [src].</span>")
else
if((CLUMSY in user.mutations) && prob(50))
var/which_hand = "l_hand"

View File

@@ -82,10 +82,10 @@ obj/machinery/gateway/centerstation/process()
if(linked.len != 8) return
if(!powered()) return
if(!awaygate)
user << "<span class='notice'>Error: No destination found.</span>"
to_chat(user, "<span class='notice'>Error: No destination found.</span>")
return
if(world.time < wait)
user << "<span class='notice'>Error: Warpspace triangulation in progress. Estimated time to completion: [round(((wait - world.time) / 10) / 60)] minutes.</span>"
to_chat(user, "<span class='notice'>Error: Warpspace triangulation in progress. Estimated time to completion: [round(((wait - world.time) / 10) / 60)] minutes.</span>")
return
for(var/obj/machinery/gateway/G in linked)
@@ -133,7 +133,7 @@ obj/machinery/gateway/centerstation/process()
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/multitool))
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
to_chat(user, "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>")
return
/////////////////////////////////////Away////////////////////////
@@ -186,7 +186,7 @@ obj/machinery/gateway/centerstation/process()
if(!ready) return
if(linked.len != 8) return
if(!stationgate)
user << "<span class='notice'>Error: No destination found.</span>"
to_chat(user, "<span class='notice'>Error: No destination found.</span>")
return
for(var/obj/machinery/gateway/G in linked)
@@ -220,7 +220,7 @@ obj/machinery/gateway/centerstation/process()
if(istype(M, /mob/living/carbon))
for(var/obj/item/weapon/implant/exile/E in M)//Checking that there is an exile implant in the contents
if(E.imp_in == M)//Checking that it's actually implanted vs just in their pocket
M << "<font color='black'>The station gate has detected your exile implant and is blocking your entry.</font>"
to_chat(M, "<font color='black'>The station gate has detected your exile implant and is blocking your entry.</font>")
return
M.loc = get_step(stationgate.loc, SOUTH)
M.set_dir(SOUTH)
@@ -229,9 +229,9 @@ obj/machinery/gateway/centerstation/process()
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/multitool))
if(calibrated)
user << "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>"
to_chat(user, "<font color='black'>The gate is already calibrated, there is no work for you to do here.</font>")
return
else
user << "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>"
to_chat(user, "<font color='blue'><b>Recalibration successful!</b>:</font><font color='black'> This gate's systems have been fine tuned. Travel to this gate will now be on target.</font>")
calibrated = 1
return

View File

@@ -4,7 +4,7 @@
/obj/effect/step_trigger/message/Trigger(mob/M as mob)
if(M.client)
M << "<span class='info'>[message]</span>"
to_chat(M, "<span class='info'>[message]</span>")
if(once)
qdel(src)

View File

@@ -42,7 +42,7 @@ proc/createRandomZlevel()
if(isfile(file))
var/datum/map_template/template = new(file, "away mission")
template.load_new_z()
world.log << "away mission loaded: [map]"
to_world_log("away mission loaded: [map]")
for(var/obj/effect/landmark/L in landmarks_list)
if (L.name != "awaystart")

View File

@@ -27,16 +27,16 @@
return
#if defined(TOPIC_DEBUGGING)
world << "[src]'s Topic: [href] destined for [hsrc]."
to_world("[src]'s Topic: [href] destined for [hsrc].")
if(href_list["nano_err"]) //nano throwing errors
world << "## NanoUI, Subject [src]: " + html_decode(href_list["nano_err"]) //NANO DEBUG HOOK
to_world("## NanoUI, Subject [src]: " + html_decode(href_list["nano_err")]) //NANO DEBUG HOOK
#endif
//search the href for script injection
if( findtext(href,"<script",1,0) )
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]")
message_admins("Attempted use of scripts within a topic call, by [src]")
//del(usr)
return
@@ -52,10 +52,10 @@
if(href_list["irc_msg"])
if(!holder && received_irc_pm < world.time - 6000) //Worse they can do is spam IRC for 10 minutes
usr << "<span class='warning'>You are no longer able to use this, it's been more then 10 minutes since an admin on IRC has responded to you</span>"
to_chat(usr, "<span class='warning'>You are no longer able to use this, it's been more then 10 minutes since an admin on IRC has responded to you</span>")
return
if(mute_irc)
usr << "<span class='warning'You cannot use this as your client has been muted from sending messages to the admins on IRC</span>"
to_chat(usr, "<span class='warning'You cannot use this as your client has been muted from sending messages to the admins on IRC</span>")
return
send2adminirc(href_list["irc_msg"])
return
@@ -286,11 +286,11 @@
//Take action if required
if(config.ipr_block_bad_ips && config.ipr_allow_existing) //We allow players of an age, but you don't meet it
to_chat(src,"Sorry, we only allow VPN/Proxy/Tor usage for players who have spent at least [config.ipr_minimum_age] days on the server. If you are unable to use the internet without your VPN/Proxy/Tor, please contact an admin out-of-game to let them know so we can accommodate this.")
to_chat(src, "Sorry, we only allow VPN/Proxy/Tor usage for players who have spent at least [config.ipr_minimum_age] days on the server. If you are unable to use the internet without your VPN/Proxy/Tor, please contact an admin out-of-game to let them know so we can accommodate this.")
qdel(src)
return 0
else if(config.ipr_block_bad_ips) //We don't allow players of any particular age
to_chat(src,"Sorry, we do not accept connections from users via VPN/Proxy/Tor connections.")
to_chat(src, "Sorry, we do not accept connections from users via VPN/Proxy/Tor connections.")
qdel(src)
return 0
else
@@ -429,9 +429,9 @@ client/verb/character_setup()
var/http[] = world.Export(request)
/* Debug
world.log << "Requested this: [request]"
to_world_log("Requested this: [request]")
for(var/entry in http)
world.log << "[entry] : [http[entry]]"
to_world_log("[entry] : [http[entry]]")
*/
if(!http || !islist(http)) //If we couldn't check, the service might be down, fail-safe.

View File

@@ -88,7 +88,7 @@ datum/preferences/proc/set_biological_gender(var/gender)
pref.real_name = new_name
return TOPIC_REFRESH
else
user << "<span class='warning'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</span>"
to_chat(user, "<span class='warning'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</span>")
return TOPIC_NOACTION
else if(href_list["random_name"])
@@ -107,7 +107,7 @@ datum/preferences/proc/set_biological_gender(var/gender)
pref.nickname = new_nickname
return TOPIC_REFRESH
else
user << "<span class='warning'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</span>"
to_chat(user, "<span class='warning'>Invalid name. Your name should be at least 2 and at most [MAX_NAME_LEN] characters long. It may only contain the characters A-Z, a-z, -, ' and .</span>")
return TOPIC_NOACTION
else if(href_list["bio_gender"])

View File

@@ -734,7 +734,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
organ = O_STOMACH
if("Brain")
if(pref.organ_data[BP_HEAD] != "cyborg")
user << "<span class='warning'>You may only select a cybernetic or synthetic brain if you have a full prosthetic body.</span>"
to_chat(user, "<span class='warning'>You may only select a cybernetic or synthetic brain if you have a full prosthetic body.</span>")
return
organ = "brain"

View File

@@ -33,7 +33,7 @@
if(player_to_ignore)
player_to_ignore = sanitize(ckey(player_to_ignore))
if(player_to_ignore == user.ckey)
user <<"<span class='notice'>You can't ignore yourself.</span>"
to_chat(user, "<span class='notice'>You can't ignore yourself.</span>")
return TOPIC_REFRESH
pref.ignored_players |= player_to_ignore
return TOPIC_REFRESH

View File

@@ -85,16 +85,16 @@ var/list/gear_datums = list()
var/total_cost = 0
for(var/gear_name in pref.gear)
if(!gear_datums[gear_name])
preference_mob << "<span class='warning'>You cannot have more than one of the \the [gear_name]</span>"
to_chat(preference_mob, "<span class='warning'>You cannot have more than one of the \the [gear_name]</span>")
pref.gear -= gear_name
else if(!(gear_name in valid_gear_choices()))
preference_mob << "<span class='warning'>You cannot take \the [gear_name] as you are not whitelisted for the species.</span>"
to_chat(preference_mob, "<span class='warning'>You cannot take \the [gear_name] as you are not whitelisted for the species.</span>")
pref.gear -= gear_name
else
var/datum/gear/G = gear_datums[gear_name]
if(total_cost + G.cost > MAX_GEAR_COST)
pref.gear -= gear_name
preference_mob << "<span class='warning'>You cannot afford to take \the [gear_name]</span>"
to_chat(preference_mob, "<span class='warning'>You cannot afford to take \the [gear_name]</span>")
else
total_cost += G.cost

View File

@@ -6,6 +6,14 @@
display_name = "white cane"
path = /obj/item/weapon/cane/whitecane
/datum/gear/cane/white2
display_name = "telescopic white cane"
path = /obj/item/weapon/melee/collapsable_whitecane
/datum/gear/crutch
display_name = "crutch"
path = /obj/item/weapon/cane/crutch
/datum/gear/dice
display_name = "dice pack"
path = /obj/item/weapon/storage/pill_bottle/dice

View File

@@ -186,6 +186,11 @@ datum/gear/suit/duster
ponchos[initial(poncho.name)] = poncho
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ponchos))
/datum/gear/suit/roles/poncho
display_name = "poncho, cargo"
path = /obj/item/clothing/accessory/poncho/roles/cargo
cost = 1
/datum/gear/suit/roles/poncho/security
display_name = "poncho, security"
path = /obj/item/clothing/accessory/poncho/roles/security
@@ -202,10 +207,6 @@ datum/gear/suit/duster
display_name = "poncho, science"
path = /obj/item/clothing/accessory/poncho/roles/science
/datum/gear/suit/roles/poncho/cargo
display_name = "poncho, cargo"
path = /obj/item/clothing/accessory/poncho/roles/cargo
/datum/gear/suit/roles/poncho/cloak/hos
display_name = "cloak, head of security"
path = /obj/item/clothing/accessory/poncho/roles/cloak/hos

View File

@@ -102,14 +102,14 @@ var/list/trait_categories = list() // The categories available for the trait men
for(var/trait_name in pref.traits)
if(!trait_datums[trait_name])
preference_mob << "<span class='warning'>You cannot have more than one of trait: [trait_name]</span>"
to_chat(preference_mob, "<span class='warning'>You cannot have more than one of trait: [trait_name]</span>")
pref.traits -= trait_name
else
var/datum/trait/T = trait_datums[trait_name]
var/invalidity = T.test_for_invalidity(src)
if(invalidity)
pref.traits -= trait_name
preference_mob << "<span class='warning'>You cannot take the [trait_name] trait. Reason: [invalidity]</span>"
to_chat(preference_mob, "<span class='warning'>You cannot take the [trait_name] trait. Reason: [invalidity]</span>")
var/conflicts = T.test_for_trait_conflict(pref.traits)
if(conflicts)

View File

@@ -206,7 +206,7 @@ datum/preferences
if(!user || !user.client) return
if(!get_mob_by_key(client_ckey))
user << "<span class='danger'>No mob exists for the given client!</span>"
to_chat(user, "<span class='danger'>No mob exists for the given client!</span>")
close_load_dialog(user)
return
@@ -243,7 +243,7 @@ datum/preferences
if(config.forumurl)
user << link(config.forumurl)
else
user << "<span class='danger'>The forum URL is not set in the server configuration.</span>"
to_chat(user, "<span class='danger'>The forum URL is not set in the server configuration.</span>")
return
ShowChoices(usr)
return 1

View File

@@ -42,7 +42,7 @@ var/global/list/all_tooltip_styles = list(
if(!ishuman(usr))
if(!isrobot(usr))
usr << "<span class='warning'>You must be a human or a robot to use this verb.</span>"
to_chat(usr, "<span class='warning'>You must be a human or a robot to use this verb.</span>")
return
var/UI_style_new = input(usr, "Select a style. White is recommended for customization") as null|anything in all_ui_styles
@@ -78,4 +78,4 @@ var/global/list/all_tooltip_styles = list(
prefs.UI_style_alpha = UI_style_alpha_new
prefs.UI_style_color = UI_style_color_new
SScharacter_setup.queue_preferences_save(prefs)
usr << "UI was saved"
to_chat(usr, "UI was saved")

View File

@@ -81,7 +81,7 @@
wearable = 1
if(!wearable && !(slot in list(slot_l_store, slot_r_store, slot_s_store)))
H << "<span class='danger'>Your species cannot wear [src].</span>"
to_chat(H, "<span class='danger'>Your species cannot wear [src].</span>")
return 0
return 1
@@ -251,7 +251,7 @@
/*/obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user)
if(W.is_wirecutter() || istype(W, /obj/item/weapon/scalpel))
if (clipped)
user << "<span class='notice'>The [src] have already been clipped!</span>"
to_chat(user, "<span class='notice'>The [src] have already been clipped!</span>")
update_icon()
return
@@ -365,10 +365,10 @@
/obj/item/clothing/head/attack_self(mob/user)
if(brightness_on)
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]"
to_chat(user, "You cannot turn the light on while in this [user.loc]")
return
on = !on
user << "You [on ? "enable" : "disable"] the helmet light."
to_chat(user, "You [on ? "enable" : "disable"] the helmet light.")
update_flashlight(user)
else
return ..(user)
@@ -413,9 +413,9 @@
if(!success)
return 0
else if(success == 2)
user << "<span class='warning'>You are already wearing a hat.</span>"
to_chat(user, "<span class='warning'>You are already wearing a hat.</span>")
else if(success == 1)
user << "<span class='notice'>You crawl under \the [src].</span>"
to_chat(user, "<span class='notice'>You crawl under \the [src].</span>")
return 1
/obj/item/clothing/head/update_icon(var/mob/user)
@@ -533,7 +533,7 @@
holding = null
overlays -= image(icon, "[icon_state]_knife")
else
usr << "<span class='warning'>Your need an empty, unbroken hand to do that.</span>"
to_chat(usr, "<span class='warning'>Your need an empty, unbroken hand to do that.</span>")
holding.forceMove(src)
if(!holding)
@@ -554,7 +554,7 @@
istype(I, /obj/item/weapon/material/kitchen/utensil) || \
istype(I, /obj/item/weapon/material/knife/tacknife)))
if(holding)
user << "<span class='warning'>\The [src] is already holding \a [holding].</span>"
to_chat(user, "<span class='warning'>\The [src] is already holding \a [holding].</span>")
return
user.unEquip(I)
I.forceMove(src)
@@ -570,7 +570,7 @@
set category = "Object"
if(shoes_under_pants == -1)
usr << "<span class='notice'>\The [src] cannot be worn above your suit!</span>"
to_chat(usr, "<span class='notice'>\The [src] cannot be worn above your suit!</span>")
return
shoes_under_pants = !shoes_under_pants
update_icon()
@@ -807,29 +807,29 @@
..(user)
switch(src.sensor_mode)
if(0)
user << "Its sensors appear to be disabled."
to_chat(user, "Its sensors appear to be disabled.")
if(1)
user << "Its binary life sensors appear to be enabled."
to_chat(user, "Its binary life sensors appear to be enabled.")
if(2)
user << "Its vital tracker appears to be enabled."
to_chat(user, "Its vital tracker appears to be enabled.")
if(3)
user << "Its vital tracker and tracking beacon appear to be enabled."
to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.")
/obj/item/clothing/under/proc/set_sensors(mob/usr as mob)
var/mob/M = usr
if (istype(M, /mob/observer)) return
if (usr.stat || usr.restrained()) return
if(has_sensor >= 2)
usr << "The controls are locked."
to_chat(usr, "The controls are locked.")
return 0
if(has_sensor <= 0)
usr << "This suit does not have any sensors."
to_chat(usr, "This suit does not have any sensors.")
return 0
var/list/modes = list("Off", "Binary sensors", "Vitals tracker", "Tracking beacon")
var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
if(get_dist(usr, src) > 1)
usr << "You have moved too far away."
to_chat(usr, "You have moved too far away.")
return
sensor_mode = modes.Find(switchMode) - 1
@@ -863,7 +863,7 @@
update_rolldown_status()
if(rolled_down == -1)
usr << "<span class='notice'>You cannot roll down [src]!</span>"
to_chat(usr, "<span class='notice'>You cannot roll down [src]!</span>")
return
if((rolled_sleeves == 1) && !(rolled_down))
rolled_sleeves = 0
@@ -878,13 +878,13 @@
else
item_state_slots[slot_w_uniform_str] = "[worn_state]_d"
usr << "<span class='notice'>You roll down your [src].</span>"
to_chat(usr, "<span class='notice'>You roll down your [src].</span>")
else
body_parts_covered = initial(body_parts_covered)
if(icon_override == rolled_down_icon)
icon_override = initial(icon_override)
item_state_slots[slot_w_uniform_str] = "[worn_state]"
usr << "<span class='notice'>You roll up your [src].</span>"
to_chat(usr, "<span class='notice'>You roll up your [src].</span>")
update_clothing_icon()
/obj/item/clothing/under/verb/rollsleeves()
@@ -896,10 +896,10 @@
update_rollsleeves_status()
if(rolled_sleeves == -1)
usr << "<span class='notice'>You cannot roll up your [src]'s sleeves!</span>"
to_chat(usr, "<span class='notice'>You cannot roll up your [src]'s sleeves!</span>")
return
if(rolled_down == 1)
usr << "<span class='notice'>You must roll up your [src] first!</span>"
to_chat(usr, "<span class='notice'>You must roll up your [src] first!</span>")
return
rolled_sleeves = !rolled_sleeves
@@ -910,13 +910,13 @@
item_state_slots[slot_w_uniform_str] = "[worn_state]"
else
item_state_slots[slot_w_uniform_str] = "[worn_state]_r"
usr << "<span class='notice'>You roll up your [src]'s sleeves.</span>"
to_chat(usr, "<span class='notice'>You roll up your [src]'s sleeves.</span>")
else
body_parts_covered = initial(body_parts_covered)
if(icon_override == rolled_down_sleeves_icon)
icon_override = initial(icon_override)
item_state_slots[slot_w_uniform_str] = "[worn_state]"
usr << "<span class='notice'>You roll down your [src]'s sleeves.</span>"
to_chat(usr, "<span class='notice'>You roll down your [src]'s sleeves.</span>")
update_clothing_icon()

View File

@@ -70,7 +70,7 @@
..(user)
if(LAZYLEN(accessories))
for(var/obj/item/clothing/accessory/A in accessories)
user << "\A [A] is attached to it."
to_chat(user, "\A [A] is attached to it.")
/**
* Attach accessory A to src

View File

@@ -29,11 +29,11 @@
if(headphones_on)
icon_state = "[base_icon]_off"
headphones_on = 0
usr << "<span class='notice'>You turn the music off.</span>"
to_chat(usr, "<span class='notice'>You turn the music off.</span>")
else
icon_state = "[base_icon]_on"
headphones_on = 1
usr << "<span class='notice'>You turn the music on.</span>"
to_chat(usr, "<span class='notice'>You turn the music on.</span>")
update_clothing_icon()

View File

@@ -440,7 +440,7 @@ BLIND // can't see anything
emp_act(severity)
if(istype(src.loc, /mob/living/carbon/human))
var/mob/living/carbon/human/M = src.loc
M << "<font color='red'>The Optical Thermal Scanner overloads and blinds you!</font>"
to_chat(M, "<font color='red'>The Optical Thermal Scanner overloads and blinds you!</font>")
if(M.glasses == src)
M.Blind(3)
M.eye_blurry = 5

View File

@@ -7,7 +7,7 @@
/*
/obj/item/clothing/gloves/boxing/attackby(obj/item/weapon/W, mob/user)
if(W.is_wirecutter() || istype(W, /obj/item/weapon/surgical/scalpel))
user << "<span class='notice'>That won't work.</span>" //Nope
to_chat(user, "<span class='notice'>That won't work.</span>") //Nope
return
..()
*/

View File

@@ -69,10 +69,10 @@
/obj/item/clothing/head/helmet/riot/attack_self(mob/user as mob)
if(src.icon_state == initial(icon_state))
src.icon_state = "[icon_state]up"
user << "You raise the visor on the riot helmet."
to_chat(user, "You raise the visor on the riot helmet.")
else
src.icon_state = initial(icon_state)
user << "You lower the visor on the riot helmet."
to_chat(user, "You lower the visor on the riot helmet.")
update_clothing_icon() //so our mob-overlays update
/obj/item/clothing/head/helmet/laserproof

View File

@@ -150,10 +150,10 @@
/obj/item/clothing/head/ushanka/attack_self(mob/user as mob)
if(src.icon_state == "ushankadown")
src.icon_state = "ushankaup"
user << "You raise the ear flaps on the ushanka."
to_chat(user, "You raise the ear flaps on the ushanka.")
else
src.icon_state = "ushankadown"
user << "You lower the ear flaps on the ushanka."
to_chat(user, "You lower the ear flaps on the ushanka.")
/*
* Pumpkin head

View File

@@ -194,8 +194,8 @@
/obj/item/clothing/head/pilot/alt/attack_self(mob/user as mob)
if(src.icon_state == initial(icon_state))
src.icon_state = "[icon_state]up"
user << "You raise the visor on the pilot helmet."
to_chat(user, "You raise the visor on the pilot helmet.")
else
src.icon_state = initial(icon_state)
user << "You lower the visor on the pilot helmet."
to_chat(user, "You lower the visor on the pilot helmet.")
update_clothing_icon() //so our mob-overlays update

View File

@@ -16,10 +16,10 @@
flipped = !flipped
if(flipped)
icon_state = "[icon_state]_flipped"
user << "You flip the hat backwards."
to_chat(user, "You flip the hat backwards.")
else
icon_state = initial(icon_state)
user << "You flip the hat back in normal position."
to_chat(user, "You flip the hat back in normal position.")
update_clothing_icon() //so our mob-overlays update
/obj/item/clothing/head/soft/red

View File

@@ -20,13 +20,13 @@
body_parts_covered = body_parts_covered & ~FACE
item_flags = item_flags & ~AIRTIGHT
icon_state = "breathdown"
user << "Your mask is now hanging on your neck."
to_chat(user, "Your mask is now hanging on your neck.")
else
gas_transfer_coefficient = initial(gas_transfer_coefficient)
body_parts_covered = initial(body_parts_covered)
item_flags = initial(item_flags)
icon_state = initial(icon_state)
user << "You pull the mask up to cover your face."
to_chat(user, "You pull the mask up to cover your face.")
update_clothing_icon()
/obj/item/clothing/mask/breath/attack_self(mob/user)

View File

@@ -47,13 +47,13 @@
body_parts_covered = body_parts_covered & ~FACE
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
icon_state = "steriledown"
usr << "You pull the mask below your chin."
to_chat(usr, "You pull the mask below your chin.")
else
gas_transfer_coefficient = initial(gas_transfer_coefficient)
body_parts_covered = initial(body_parts_covered)
icon_state = initial(icon_state)
armor = initial(armor)
usr << "You pull the mask up to cover your face."
to_chat(usr, "You pull the mask up to cover your face.")
update_clothing_icon()
/obj/item/clothing/mask/surgical/verb/toggle()

View File

@@ -27,7 +27,7 @@
if(robohead.monitor_styles)
monitor_states = params2list(robohead.monitor_styles)
icon_state = monitor_states[monitor_state_index]
H << "<span class='notice'>\The [src] connects to your display output.</span>"
to_chat(H, "<span class='notice'>\The [src] connects to your display output.</span>")
/obj/item/clothing/mask/monitor/dropped()
canremove = 1
@@ -41,7 +41,7 @@
var/datum/robolimb/robohead = all_robolimbs[E.model]
if(istype(E) && (E.robotic >= ORGAN_ROBOT) && robohead.monitor_styles)
return 1
user << "<span class='warning'>You must have a compatible robotic head to install this upgrade.</span>"
to_chat(user, "<span class='warning'>You must have a compatible robotic head to install this upgrade.</span>")
return 0
/obj/item/clothing/mask/monitor/verb/set_monitor_state()
@@ -54,7 +54,7 @@
if(!istype(H) || H != usr)
return
if(H.wear_mask != src)
usr << "<span class='warning'>You have not installed \the [src] yet.</span>"
to_chat(usr, "<span class='warning'>You have not installed \the [src] yet.</span>")
return
var/choice = input("Select a screen icon.") as null|anything in monitor_states
if(choice)

View File

@@ -12,7 +12,7 @@
if(..()) //This will only run if no other problems occured when equiping.
if(H.wear_suit)
if(H.wear_suit.body_parts_covered & LEGS)
H << "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>"
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>")
return 0
for(var/obj/item/clothing/accessory/A in H.wear_suit)
if(A.body_parts_covered & LEGS)

View File

@@ -28,14 +28,14 @@
set_slowdown()
force = 3
if(icon_base) icon_state = "[icon_base]0"
user << "You disable the mag-pulse traction system."
to_chat(user, "You disable the mag-pulse traction system.")
else
item_flags |= NOSLIP
magpulse = 1
set_slowdown()
force = 5
if(icon_base) icon_state = "[icon_base]1"
user << "You enable the mag-pulse traction system."
to_chat(user, "You enable the mag-pulse traction system.")
user.update_inv_shoes() //so our mob-overlays update
user.update_action_buttons()
@@ -79,7 +79,7 @@
var/state = "disabled"
if(item_flags & NOSLIP)
state = "enabled"
user << "Its mag-pulse traction system appears to be [state]."
to_chat(user, "Its mag-pulse traction system appears to be [state].")
/obj/item/clothing/shoes/magboots/vox

View File

@@ -55,7 +55,7 @@ var/global/list/breach_burn_descriptors = list(
/obj/item/clothing/suit/space/proc/repair_breaches(var/damtype, var/amount, var/mob/user)
if(!can_breach || !breaches || !breaches.len || !damage)
user << "There are no breaches to repair on \the [src]."
to_chat(user, "There are no breaches to repair on \the [src].")
return
var/list/valid_breaches = list()
@@ -65,7 +65,7 @@ var/global/list/breach_burn_descriptors = list(
valid_breaches += B
if(!valid_breaches.len)
user << "There are no breaches to repair on \the [src]."
to_chat(user, "There are no breaches to repair on \the [src].")
return
var/amount_left = amount
@@ -190,11 +190,11 @@ var/global/list/breach_burn_descriptors = list(
return
if(istype(src.loc,/mob/living))
user << "<span class='warning'>How do you intend to patch a hardsuit while someone is wearing it?</span>"
to_chat(user, "<span class='warning'>How do you intend to patch a hardsuit while someone is wearing it?</span>")
return
if(!damage || !burn_damage)
user << "There is no surface damage on \the [src] to repair."
to_chat(user, "There is no surface damage on \the [src] to repair.")
return
var/obj/item/stack/P = W
@@ -206,16 +206,16 @@ var/global/list/breach_burn_descriptors = list(
else if(istype(W, /obj/item/weapon/weldingtool))
if(istype(src.loc,/mob/living))
user << "<font color='red'>How do you intend to patch a hardsuit while someone is wearing it?</font>"
to_chat(user, "<font color='red'>How do you intend to patch a hardsuit while someone is wearing it?</font>")
return
if (!damage || ! brute_damage)
user << "There is no structural damage on \the [src] to repair."
to_chat(user, "There is no structural damage on \the [src] to repair.")
return
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(5))
user << "<font color='red'>You need more welding fuel to repair this suit.</font>"
to_chat(user, "<font color='red'>You need more welding fuel to repair this suit.</font>")
return
repair_breaches(BRUTE, 3, user)
@@ -227,4 +227,4 @@ var/global/list/breach_burn_descriptors = list(
..(user)
if(can_breach && breaches && breaches.len)
for(var/datum/breach/B in breaches)
user << "<font color='red'><B>It has \a [B.descriptor].</B></font>"
to_chat(user, "<font color='red'><B>It has \a [B.descriptor].</B></font>")

View File

@@ -51,10 +51,10 @@
return 0
if(accepted_item.charges >= 5)
user << "<span class='danger'>Another grenade of that type will not fit into the module.</span>"
to_chat(user, "<span class='danger'>Another grenade of that type will not fit into the module.</span>")
return 0
user << "<font color='blue'><b>You slot \the [input_device] into the suit module.</b></font>"
to_chat(user, "<font color='blue'><b>You slot \the [input_device] into the suit module.</b></font>")
user.drop_from_inventory(input_device)
qdel(input_device)
accepted_item.charges++
@@ -71,7 +71,7 @@
var/mob/living/carbon/human/H = holder.wearer
if(!charge_selected)
H << "<span class='danger'>You have not selected a grenade type.</span>"
to_chat(H, "<span class='danger'>You have not selected a grenade type.</span>")
return 0
var/datum/rig_charge/charge = charges[charge_selected]
@@ -80,7 +80,7 @@
return 0
if(charge.charges <= 0)
H << "<span class='danger'>Insufficient grenades!</span>"
to_chat(H, "<span class='danger'>Insufficient grenades!</span>")
return 0
charge.charges--
@@ -199,7 +199,7 @@
var/mob/living/M = holder.wearer
if(M.l_hand && M.r_hand)
M << "<span class='danger'>Your hands are full.</span>"
to_chat(M, "<span class='danger'>Your hands are full.</span>")
deactivate()
return
@@ -252,11 +252,11 @@
firing.throw_at(target,fire_force,fire_distance)
else
if(H.l_hand && H.r_hand)
H << "<span class='danger'>Your hands are full.</span>"
to_chat(H, "<span class='danger'>Your hands are full.</span>")
else
var/obj/item/new_weapon = new fabrication_type()
new_weapon.forceMove(H)
H << "<font color='blue'><b>You quickly fabricate \a [new_weapon].</b></font>"
to_chat(H, "<font color='blue'><b>You quickly fabricate \a [new_weapon].</b></font>")
H.put_in_hands(new_weapon)
return 1

View File

@@ -15,12 +15,12 @@
set src in usr
if(!usr.loc || !usr.loc.loc || !istype(usr.loc.loc, /obj/item/rig_module))
usr << "You are not loaded into a hardsuit."
to_chat(usr, "You are not loaded into a hardsuit.")
return
var/obj/item/rig_module/module = usr.loc.loc
if(!module.holder)
usr << "Your module is not installed in a hardsuit."
to_chat(usr, "Your module is not installed in a hardsuit.")
return
module.holder.ui_interact(usr, nano_state = contained_state)
@@ -163,9 +163,9 @@
if(istype(ai_card, /obj/item/device/aicard))
if(integrated_ai && !integrated_ai.stat)
if(user)
user << "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>"
to_chat(user, "<span class='danger'>You cannot eject your currently stored AI. Purge it manually.</span>")
return 0
user << "<span class='danger'>You purge the previous AI from your Integrated Intelligence System, freeing it for use.</span>"
to_chat(user, "<span class='danger'>You purge the previous AI from your Integrated Intelligence System, freeing it for use.</span>")
if(integrated_ai)
integrated_ai.ghostize()
qdel(integrated_ai)
@@ -208,8 +208,8 @@
user.drop_from_inventory(ai)
ai.forceMove(src)
ai_card = ai
ai_mob << "<font color='blue'>You have been transferred to \the [holder]'s [src].</font>"
user << "<font color='blue'>You load [ai_mob] into \the [holder]'s [src].</font>"
to_chat(ai_mob, "<font color='blue'>You have been transferred to \the [holder]'s [src].</font>")
to_chat(user, "<font color='blue'>You load [ai_mob] into \the [holder]'s [src].</font>")
integrated_ai = ai_mob
@@ -217,9 +217,9 @@
integrated_ai = null
eject_ai()
else
user << "<span class='warning'>There is no active AI within \the [ai].</span>"
to_chat(user, "<span class='warning'>There is no active AI within \the [ai].</span>")
else
user << "<span class='warning'>There is no active AI within \the [ai].</span>"
to_chat(user, "<span class='warning'>There is no active AI within \the [ai].</span>")
update_verb_holder()
return
@@ -257,16 +257,16 @@
/obj/item/rig_module/datajack/accepts_item(var/obj/item/input_device, var/mob/living/user)
if(istype(input_device,/obj/item/weapon/disk/tech_disk))
user << "You slot the disk into [src]."
to_chat(user, "You slot the disk into [src].")
var/obj/item/weapon/disk/tech_disk/disk = input_device
if(disk.stored)
if(load_data(disk.stored))
user << "<font color='blue'>Download successful; disk erased.</font>"
to_chat(user, "<font color='blue'>Download successful; disk erased.</font>")
disk.stored = null
else
user << "<span class='warning'>The disk is corrupt. It is useless to you.</span>"
to_chat(user, "<span class='warning'>The disk is corrupt. It is useless to you.</span>")
else
user << "<span class='warning'>The disk is blank. It is useless to you.</span>"
to_chat(user, "<span class='warning'>The disk is blank. It is useless to you.</span>")
return 1
// I fucking hate R&D code. This typecheck spam would be totally unnecessary in a sane setup.
@@ -283,13 +283,13 @@
incoming_files = input_machine.files
if(!incoming_files || !incoming_files.known_tech || !incoming_files.known_tech.len)
user << "<span class='warning'>Memory failure. There is nothing accessible stored on this terminal.</span>"
to_chat(user, "<span class='warning'>Memory failure. There is nothing accessible stored on this terminal.</span>")
else
// Maybe consider a way to drop all your data into a target repo in the future.
if(load_data(incoming_files.known_tech))
user << "<font color='blue'>Download successful; local and remote repositories synchronized.</font>"
to_chat(user, "<font color='blue'>Download successful; local and remote repositories synchronized.</font>")
else
user << "<span class='warning'>Scan complete. There is nothing useful stored on this terminal.</span>"
to_chat(user, "<span class='warning'>Scan complete. There is nothing useful stored on this terminal.</span>")
return 1
return 0
@@ -368,7 +368,7 @@
if(interfaced_with)
if(holder && holder.wearer)
holder.wearer << "<span class = 'warning'>Your power sink retracts as the module deactivates.</span>"
to_chat(holder.wearer, "<span class = 'warning'>Your power sink retracts as the module deactivates.</span>")
drain_complete()
interfaced_with = null
total_power_drained = 0
@@ -400,7 +400,7 @@
if(target.drain_power(1) <= 0)
return 0
H << "<span class = 'danger'>You begin draining power from [target]!</span>"
to_chat(H, "<span class = 'danger'>You begin draining power from [target]!</span>")
interfaced_with = target
drain_loc = interfaced_with.loc
@@ -434,17 +434,17 @@
H.break_cloak()
if(!holder.cell)
H << "<span class = 'danger'>Your power sink flashes an error; there is no cell in your rig.</span>"
to_chat(H, "<span class = 'danger'>Your power sink flashes an error; there is no cell in your rig.</span>")
drain_complete(H)
return
if(!interfaced_with || !interfaced_with.Adjacent(H) || !(interfaced_with.loc == drain_loc))
H << "<span class = 'warning'>Your power sink retracts into its casing.</span>"
to_chat(H, "<span class = 'warning'>Your power sink retracts into its casing.</span>")
drain_complete(H)
return
if(holder.cell.fully_charged())
H << "<span class = 'warning'>Your power sink flashes an amber light; your rig cell is full.</span>"
to_chat(H, "<span class = 'warning'>Your power sink flashes an amber light; your rig cell is full.</span>")
drain_complete(H)
return
@@ -453,7 +453,7 @@
var/to_drain = min(12.5*holder.cell.maxcharge, ((holder.cell.maxcharge - holder.cell.charge) / CELLRATE))
var/target_drained = interfaced_with.drain_power(0,0,to_drain)
if(target_drained <= 0)
H << "<span class = 'danger'>Your power sink flashes a red light; there is no power left in [interfaced_with].</span>"
to_chat(H, "<span class = 'danger'>Your power sink flashes a red light; there is no power left in [interfaced_with].</span>")
drain_complete(H)
return
@@ -465,9 +465,11 @@
/obj/item/rig_module/power_sink/proc/drain_complete(var/mob/living/M)
if(!interfaced_with)
if(M) M << "<font color='blue'><b>Total power drained:</b> [round(total_power_drained*CELLRATE)] cell units.</font>"
if(M)
to_chat(M, "<font color='blue'><b>Total power drained:</b> [round(total_power_drained*CELLRATE)] cell units.</font>")
else
if(M) M << "<font color='blue'><b>Total power drained from [interfaced_with]:</b> [round(total_power_drained*CELLRATE)] cell units.</font>"
if(M)
to_chat(M, "<font color='blue'><b>Total power drained from [interfaced_with]:</b> [round(total_power_drained*CELLRATE)] cell units.</font>")
interfaced_with.drain_power(0,1,0) // Damage the victim.
drain_loc = null

View File

@@ -58,28 +58,28 @@
..()
switch(damage)
if(0)
usr << "It is undamaged."
to_chat(usr, "It is undamaged.")
if(1)
usr << "It is badly damaged."
to_chat(usr, "It is badly damaged.")
if(2)
usr << "It is almost completely destroyed."
to_chat(usr, "It is almost completely destroyed.")
/obj/item/rig_module/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/stack/nanopaste))
if(damage == 0)
user << "There is no damage to mend."
to_chat(user, "There is no damage to mend.")
return
user << "You start mending the damaged portions of \the [src]..."
to_chat(user, "You start mending the damaged portions of \the [src]...")
if(!do_after(user,30) || !W || !src)
return
var/obj/item/stack/nanopaste/paste = W
damage = 0
user << "You mend the damage to [src] with [W]."
to_chat(user, "You mend the damage to [src] with [W].")
paste.use(1)
return
@@ -87,23 +87,23 @@
switch(damage)
if(0)
user << "There is no damage to mend."
to_chat(user, "There is no damage to mend.")
return
if(2)
user << "There is no damage that you are capable of mending with such crude tools."
to_chat(user, "There is no damage that you are capable of mending with such crude tools.")
return
var/obj/item/stack/cable_coil/cable = W
if(!cable.amount >= 5)
user << "You need five units of cable to repair \the [src]."
to_chat(user, "You need five units of cable to repair \the [src].")
return
user << "You start mending the damaged portions of \the [src]..."
to_chat(user, "You start mending the damaged portions of \the [src]...")
if(!do_after(user,30) || !W || !src)
return
damage = 1
user << "You mend some of damage to [src] with [W], but you will need more advanced tools to fix it completely."
to_chat(user, "You mend some of damage to [src] with [W], but you will need more advanced tools to fix it completely.")
cable.use(5)
return
..()
@@ -143,27 +143,27 @@
/obj/item/rig_module/proc/engage()
if(damage >= 2)
usr << "<span class='warning'>The [interface_name] is damaged beyond use!</span>"
to_chat(usr, "<span class='warning'>The [interface_name] is damaged beyond use!</span>")
return 0
if(world.time < next_use)
usr << "<span class='warning'>You cannot use the [interface_name] again so soon.</span>"
to_chat(usr, "<span class='warning'>You cannot use the [interface_name] again so soon.</span>")
return 0
if(!holder || holder.canremove)
usr << "<span class='warning'>The suit is not initialized.</span>"
to_chat(usr, "<span class='warning'>The suit is not initialized.</span>")
return 0
if(usr.lying || usr.stat || usr.stunned || usr.paralysis || usr.weakened)
usr << "<span class='warning'>You cannot use the suit in this state.</span>"
to_chat(usr, "<span class='warning'>You cannot use the suit in this state.</span>")
return 0
if(holder.wearer && holder.wearer.lying)
usr << "<span class='warning'>The suit cannot function while the wearer is prone.</span>"
to_chat(usr, "<span class='warning'>The suit cannot function while the wearer is prone.</span>")
return 0
if(holder.security_check_enabled && !holder.check_suit_access(usr))
usr << "<span class='danger'>Access denied.</span>"
to_chat(usr, "<span class='danger'>Access denied.</span>")
return 0
if(!holder.check_power_cost(usr, use_power_cost, 0, src, (istype(usr,/mob/living/silicon ? 1 : 0) ) ) )

View File

@@ -100,7 +100,7 @@
var/mob/living/carbon/human/H = holder.wearer
if(!istype(H.loc, /turf))
H << "<span class='warning'>You cannot teleport out of your current location.</span>"
to_chat(H, "<span class='warning'>You cannot teleport out of your current location.</span>")
return 0
var/turf/T
@@ -110,23 +110,23 @@
T = get_teleport_loc(get_turf(H), H, 6, 1, 1, 1)
if(!T)
H << "<span class='warning'>No valid teleport target found.</span>"
to_chat(H, "<span class='warning'>No valid teleport target found.</span>")
return 0
if(T.density)
H << "<span class='warning'>You cannot teleport into solid walls.</span>"
to_chat(H, "<span class='warning'>You cannot teleport into solid walls.</span>")
return 0
if(T.z in using_map.admin_levels)
H << "<span class='warning'>You cannot use your teleporter on this Z-level.</span>"
to_chat(H, "<span class='warning'>You cannot use your teleporter on this Z-level.</span>")
return 0
if(T.contains_dense_objects())
H << "<span class='warning'>You cannot teleport to a location with solid objects.</span>"
to_chat(H, "<span class='warning'>You cannot teleport to a location with solid objects.</span>")
return 0
if(T.z != H.z || get_dist(T, get_turf(H)) > world.view)
H << "<span class='warning'>You cannot teleport to such a distant object.</span>"
to_chat(H, "<span class='warning'>You cannot teleport to such a distant object.</span>")
return 0
if(!..()) return 0

View File

@@ -170,7 +170,7 @@
return 0
if(!input_item.reagents || !input_item.reagents.total_volume)
user << "\The [input_item] is empty."
to_chat(user, "\The [input_item] is empty.")
return 0
// Magical chemical filtration system, do not question it.
@@ -192,9 +192,9 @@
break
if(total_transferred)
user << "<font color='blue'>You transfer [total_transferred] units into the suit reservoir.</font>"
to_chat(user, "<font color='blue'>You transfer [total_transferred] units into the suit reservoir.</font>")
else
user << "<span class='danger'>None of the reagents seem suitable.</span>"
to_chat(user, "<span class='danger'>None of the reagents seem suitable.</span>")
return 1
/obj/item/rig_module/chem_dispenser/engage(atom/target)
@@ -205,7 +205,7 @@
var/mob/living/carbon/human/H = holder.wearer
if(!charge_selected)
H << "<span class='danger'>You have not selected a chemical type.</span>"
to_chat(H, "<span class='danger'>You have not selected a chemical type.</span>")
return 0
var/datum/rig_charge/charge = charges[charge_selected]
@@ -215,7 +215,7 @@
var/chems_to_use = 10
if(charge.charges <= 0)
H << "<span class='danger'>Insufficient chems!</span>"
to_chat(H, "<span class='danger'>Insufficient chems!</span>")
return 0
else if(charge.charges < chems_to_use)
chems_to_use = charge.charges
@@ -230,8 +230,8 @@
target_mob = H
if(target_mob != H)
H << "<span class='danger'>You inject [target_mob] with [chems_to_use] unit\s of [charge.display_name].</span>"
target_mob << "<span class='danger'>You feel a rushing in your veins as [chems_to_use] unit\s of [charge.display_name] [chems_to_use == 1 ? "is" : "are"] injected.</span>"
to_chat(H, "<span class='danger'>You inject [target_mob] with [chems_to_use] unit\s of [charge.display_name].</span>")
to_chat(target_mob, "<span class='danger'>You feel a rushing in your veins as [chems_to_use] unit\s of [charge.display_name] [chems_to_use == 1 ? "is" : "are"] injected.</span>")
target_mob.reagents.add_reagent(charge.display_name, chems_to_use)
charge.charges -= chems_to_use
@@ -321,17 +321,17 @@
if("Enable")
active = 1
voice_holder.active = 1
usr << "<font color='blue'>You enable the speech synthesiser.</font>"
to_chat(usr, "<font color='blue'>You enable the speech synthesiser.</font>")
if("Disable")
active = 0
voice_holder.active = 0
usr << "<font color='blue'>You disable the speech synthesiser.</font>"
to_chat(usr, "<font color='blue'>You disable the speech synthesiser.</font>")
if("Set Name")
var/raw_choice = sanitize(input(usr, "Please enter a new name.") as text|null, MAX_NAME_LEN)
if(!raw_choice)
return 0
voice_holder.voice = raw_choice
usr << "<font color='blue'>You are now mimicking <B>[voice_holder.voice]</B>.</font>"
to_chat(usr, "<font color='blue'>You are now mimicking <B>[voice_holder.voice]</B>.</font>")
return 1
/obj/item/rig_module/maneuvering_jets
@@ -458,7 +458,7 @@
var/mob/living/M = holder.wearer
if(M.l_hand && M.r_hand)
M << "<span class='danger'>Your hands are full.</span>"
to_chat(M, "<span class='danger'>Your hands are full.</span>")
deactivate()
return
@@ -515,10 +515,10 @@
return 0
if(accepted_item.charges >= 5)
user << "<span class='danger'>Another grenade of that type will not fit into the module.</span>"
to_chat(user, "<span class='danger'>Another grenade of that type will not fit into the module.</span>")
return 0
user << "<font color='blue'><b>You slot \the [input_device] into the suit module.</b></font>"
to_chat(user, "<font color='blue'><b>You slot \the [input_device] into the suit module.</b></font>")
user.drop_from_inventory(input_device)
qdel(input_device)
accepted_item.charges++
@@ -535,7 +535,7 @@
var/mob/living/carbon/human/H = holder.wearer
if(!charge_selected)
H << "<span class='danger'>You have not selected a grenade type.</span>"
to_chat(H, "<span class='danger'>You have not selected a grenade type.</span>")
return 0
var/datum/rig_charge/charge = charges[charge_selected]
@@ -544,7 +544,7 @@
return 0
if(charge.charges <= 0)
H << "<span class='danger'>Insufficient grenades!</span>"
to_chat(H, "<span class='danger'>Insufficient grenades!</span>")
return 0
charge.charges--
@@ -607,10 +607,10 @@
if(!target)
if(device == iastamp)
device = deniedstamp
holder.wearer << "<span class='notice'>Switched to denied stamp.</span>"
to_chat(holder.wearer, "<span class='notice'>Switched to denied stamp.</span>")
else if(device == deniedstamp)
device = iastamp
holder.wearer << "<span class='notice'>Switched to internal affairs stamp.</span>"
to_chat(holder.wearer, "<span class='notice'>Switched to internal affairs stamp.</span>")
return 1
/obj/item/rig_module/sprinter
@@ -642,7 +642,7 @@
var/mob/living/carbon/human/H = holder.wearer
H << "<font color='blue'><b>You activate the suit's sprint mode.</b></font>"
to_chat(H, "<font color='blue'><b>You activate the suit's sprint mode.</b></font>")
holder.slowdown = initial(holder.slowdown) - sprint_speed
@@ -653,6 +653,6 @@
var/mob/living/carbon/human/H = holder.wearer
H << "<span class='danger'>Your hardsuit returns to normal speed.</span>"
to_chat(H, "<span class='danger'>Your hardsuit returns to normal speed.</span>")
holder.slowdown = initial(holder.slowdown)

View File

@@ -200,7 +200,7 @@
// Don't cycle if this engage() is being called by activate().
if(starting_up)
holder.wearer << "<font color='blue'>You activate your visual sensors.</font>"
to_chat(holder.wearer, "<font color='blue'>You activate your visual sensors.</font>")
return 1
if(vision_modes.len > 1)
@@ -209,9 +209,9 @@
vision_index = 1
vision = vision_modes[vision_index]
holder.wearer << "<font color='blue'>You cycle your sensors to <b>[vision.mode]</b> mode.</font>"
to_chat(holder.wearer, "<font color='blue'>You cycle your sensors to <b>[vision.mode]</b> mode.</font>")
else
holder.wearer << "<font color='blue'>Your sensors only have one mode.</font>"
to_chat(holder.wearer, "<font color='blue'>Your sensors only have one mode.</font>")
return 1
/obj/item/rig_module/vision/activate()

View File

@@ -660,11 +660,11 @@
if(user.back != src && user.belt != src)
return 0
else if(!src.allowed(user))
user << "<span class='danger'>Unauthorized user. Access denied.</span>"
to_chat(user, "<span class='danger'>Unauthorized user. Access denied.</span>")
return 0
else if(!ai_override_enabled)
user << "<span class='danger'>Synthetic access disabled. Please consult hardware provider.</span>"
to_chat(user, "<span class='danger'>Synthetic access disabled. Please consult hardware provider.</span>")
return 0
return 1
@@ -710,7 +710,7 @@
/obj/item/weapon/rig/proc/notify_ai(var/message)
for(var/obj/item/rig_module/ai_container/module in installed_modules)
if(module.integrated_ai && module.integrated_ai.client && !module.integrated_ai.stat)
module.integrated_ai << "[message]"
to_chat(module.integrated_ai, "[message]")
. = 1
/obj/item/weapon/rig/equipped(mob/living/carbon/human/M)
@@ -784,7 +784,7 @@
holder = use_obj.loc
if(istype(holder))
if(use_obj && check_slot == use_obj)
H << "<font color='blue'><b>Your [use_obj.name] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.</b></font>"
to_chat(H, "<font color='blue'><b>Your [use_obj.name] [use_obj.gender == PLURAL ? "retract" : "retracts"] swiftly.</b></font>")
use_obj.canremove = 1
holder.drop_from_inventory(use_obj)
use_obj.forceMove(get_turf(src))
@@ -799,10 +799,10 @@
if(!H.equip_to_slot_if_possible(use_obj, equip_to, 0, 1))
use_obj.forceMove(src)
if(check_slot)
H << "<span class='danger'>You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way.</span>"
to_chat(H, "<span class='danger'>You are unable to deploy \the [piece] as \the [check_slot] [check_slot.gender == PLURAL ? "are" : "is"] in the way.</span>")
return
else
H << "<span class='notice'>Your [use_obj.name] [use_obj.gender == PLURAL ? "deploy" : "deploys"] swiftly.</span>"
to_chat(H, "<span class='notice'>Your [use_obj.name] [use_obj.gender == PLURAL ? "deploy" : "deploys"] swiftly.</span>")
if(piece == "helmet" && helmet)
helmet.update_light(H)
@@ -917,17 +917,17 @@
if(wearer)
if(dam_module.damage >= 2)
wearer << "<span class='danger'>The [source] has disabled your [dam_module.interface_name]!</span>"
to_chat(wearer, "<span class='danger'>The [source] has disabled your [dam_module.interface_name]!</span>")
else
wearer << "<span class='warning'>The [source] has damaged your [dam_module.interface_name]!</span>"
to_chat(wearer, "<span class='warning'>The [source] has damaged your [dam_module.interface_name]!</span>")
dam_module.deactivate()
/obj/item/weapon/rig/proc/malfunction_check(var/mob/living/carbon/human/user)
if(malfunction_delay)
if(offline)
user << "<span class='danger'>The suit is completely unresponsive.</span>"
to_chat(user, "<span class='danger'>The suit is completely unresponsive.</span>")
else
user << "<span class='danger'>ERROR: Hardware fault. Rebooting interface...</span>"
to_chat(user, "<span class='danger'>ERROR: Hardware fault. Rebooting interface...</span>")
return 1
return 0
@@ -951,17 +951,20 @@
return 0
var/obj/item/rig_module/ai_container/module = user.loc.loc
if(!istype(module) || module.damage >= 2)
user << "<span class='warning'>Your host module is unable to interface with the suit.</span>"
to_chat(user, "<span class='warning'>Your host module is unable to interface with the suit.</span>")
return 0
if(offline || !cell || !cell.charge || locked_down)
if(user) user << "<span class='warning'>Your host rig is unpowered and unresponsive.</span>"
if(user)
to_chat(user, "<span class='warning'>Your host rig is unpowered and unresponsive.</span>")
return 0
if(!wearer || (wearer.back != src && wearer.belt != src))
if(user) user << "<span class='warning'>Your host rig is not being worn.</span>"
if(user)
to_chat(user, "<span class='warning'>Your host rig is not being worn.</span>")
return 0
if(!wearer.stat && !control_overridden && !ai_override_enabled)
if(user) user << "<span class='warning'>You are locked out of the suit servo controller.</span>"
if(user)
to_chat(user, "<span class='warning'>You are locked out of the suit servo controller.</span>")
return 0
return 1
@@ -969,7 +972,7 @@
if(!ai_can_move_suit(user, check_user_module = 1))
return
wearer.lay_down()
user << "<span class='notice'>\The [wearer] is now [wearer.resting ? "resting" : "getting up"].</span>"
to_chat(user, "<span class='notice'>\The [wearer] is now [wearer.resting ? "resting" : "getting up"].</span>")
/obj/item/weapon/rig/proc/forced_move(var/direction, var/mob/user)
@@ -1009,7 +1012,7 @@
for(var/mob/M in range(wearer, 1))
if(M.pulling == wearer)
if(!M.restrained() && M.stat == 0 && M.canmove && wearer.Adjacent(M))
user << "<span class='notice'>Your host is restrained! They can't move!</span>"
to_chat(user, "<span class='notice'>Your host is restrained! They can't move!</span>")
return 0
else
M.stop_pulling()

View File

@@ -68,7 +68,7 @@
if(tacknife)
tacknife.loc = get_turf(src)
if(M.put_in_active_hand(tacknife))
M << "<span class='notice'>You slide \the [tacknife] out of [src].</span>"
to_chat(M, "<span class='notice'>You slide \the [tacknife] out of [src].</span>")
playsound(M, 'sound/weapons/flipblade.ogg', 40, 1)
tacknife = null
update_icon()
@@ -82,7 +82,7 @@
M.drop_item()
tacknife = I
I.loc = src
M << "<span class='notice'>You slide the [I] into [src].</span>"
to_chat(M, "<span class='notice'>You slide the [I] into [src].</span>")
playsound(M, 'sound/weapons/flipblade.ogg', 40, 1)
update_icon()
..()

View File

@@ -17,21 +17,21 @@
set src = usr.contents
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_power_cost(usr))
return
if(canremove)
usr << "<span class='warning'>The suit is not active.</span>"
to_chat(usr, "<span class='warning'>The suit is not active.</span>")
return
if(!check_suit_access(usr))
return
if(!visor)
usr << "<span class='warning'>The hardsuit does not have a configurable visor.</span>"
to_chat(usr, "<span class='warning'>The hardsuit does not have a configurable visor.</span>")
return
if(!visor.active)
@@ -47,7 +47,7 @@
set src = usr.contents
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_suit_access(usr))
@@ -75,7 +75,7 @@
set src = usr.contents
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_suit_access(usr))
@@ -91,7 +91,7 @@
set src = usr.contents
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_suit_access(usr))
@@ -107,7 +107,7 @@
set src = usr.contents
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_suit_access(usr))
@@ -126,7 +126,7 @@
set src = usr.contents
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_suit_access(usr))
@@ -148,18 +148,18 @@
return
if(canremove)
usr << "<span class='warning'>The suit is not active.</span>"
to_chat(usr, "<span class='warning'>The suit is not active.</span>")
return
if(!visor)
usr << "<span class='warning'>The hardsuit does not have a configurable visor.</span>"
to_chat(usr, "<span class='warning'>The hardsuit does not have a configurable visor.</span>")
return
if(!visor.active)
visor.activate()
if(!visor.active)
usr << "<span class='warning'>The visor is suffering a hardware fault and cannot be configured.</span>"
to_chat(usr, "<span class='warning'>The visor is suffering a hardware fault and cannot be configured.</span>")
return
visor.engage()
@@ -175,15 +175,15 @@
return
if(canremove)
usr << "<span class='warning'>The suit is not active.</span>"
to_chat(usr, "<span class='warning'>The suit is not active.</span>")
return
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!speech)
usr << "<span class='warning'>The hardsuit does not have a speech synthesiser.</span>"
to_chat(usr, "<span class='warning'>The hardsuit does not have a speech synthesiser.</span>")
return
speech.engage()
@@ -202,11 +202,11 @@
return
if(canremove)
usr << "<span class='warning'>The suit is not active.</span>"
to_chat(usr, "<span class='warning'>The suit is not active.</span>")
return
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
var/list/selectable = list()
@@ -218,11 +218,11 @@
if(!istype(module))
selected_module = null
usr << "<font color='blue'><b>Primary system is now: deselected.</b></font>"
to_chat(usr, "<font color='blue'><b>Primary system is now: deselected.</b></font>")
return
selected_module = module
usr << "<font color='blue'><b>Primary system is now: [selected_module.interface_name].</b></font>"
to_chat(usr, "<font color='blue'><b>Primary system is now: [selected_module.interface_name].</b></font>")
/obj/item/weapon/rig/verb/toggle_module()
@@ -238,11 +238,11 @@
return
if(canremove)
usr << "<span class='warning'>The suit is not active.</span>"
to_chat(usr, "<span class='warning'>The suit is not active.</span>")
return
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
var/list/selectable = list()
@@ -256,10 +256,10 @@
return
if(module.active)
usr << "<font color='blue'><b>You attempt to deactivate \the [module.interface_name].</b></font>"
to_chat(usr, "<font color='blue'><b>You attempt to deactivate \the [module.interface_name].</b></font>")
module.deactivate()
else
usr << "<font color='blue'><b>You attempt to activate \the [module.interface_name].</b></font>"
to_chat(usr, "<font color='blue'><b>You attempt to activate \the [module.interface_name].</b></font>")
module.activate()
/obj/item/weapon/rig/verb/engage_module()
@@ -273,11 +273,11 @@
return
if(canremove)
usr << "<span class='warning'>The suit is not active.</span>"
to_chat(usr, "<span class='warning'>The suit is not active.</span>")
return
if(!istype(wearer) || (!wearer.back == src && !wearer.belt == src))
usr << "<span class='warning'>The hardsuit is not being worn.</span>"
to_chat(usr, "<span class='warning'>The hardsuit is not being worn.</span>")
return
if(!check_power_cost(usr, 0, 0, 0, 0))
@@ -293,5 +293,5 @@
if(!istype(module))
return
usr << "<font color='blue'><b>You attempt to engage the [module.interface_name].</b></font>"
to_chat(usr, "<font color='blue'><b>You attempt to engage the [module.interface_name].</b></font>")
module.engage()

View File

@@ -13,10 +13,10 @@
if(..()) //This will only run if no other problems occured when equiping.
for(var/obj/item/clothing/I in list(H.gloves, H.shoes))
if(I && (src.body_parts_covered & ARMS && I.body_parts_covered & ARMS) )
H << "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>"
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>")
return 0
if(I && (src.body_parts_covered & LEGS && I.body_parts_covered & LEGS) )
H << "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>"
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [I], it's in the way.</span>")
return 0
return 1
@@ -198,10 +198,10 @@
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob)
active = !( active )
if (active)
user << "<font color='blue'>The reactive armor is now active.</font>"
to_chat(user, "<font color='blue'>The reactive armor is now active.</font>")
icon_state = "reactive"
else
user << "<font color='blue'>The reactive armor is now inactive.</font>"
to_chat(user, "<font color='blue'>The reactive armor is now inactive.</font>")
icon_state = "reactiveoff"
add_fingerprint(user)
return

View File

@@ -730,11 +730,11 @@ obj/item/clothing/suit/kamishimo
if(rolled == 0)
rolled = 1
body_parts_covered &= ~(ARMS)
usr << "<span class='notice'>You roll up the sleeves of your [src].</span>"
to_chat(usr, "<span class='notice'>You roll up the sleeves of your [src].</span>")
else
rolled = 0
body_parts_covered = initial(body_parts_covered)
usr << "<span class='notice'>You roll down the sleeves of your [src].</span>"
to_chat(usr, "<span class='notice'>You roll down the sleeves of your [src].</span>")
update_icon()
/obj/item/clothing/suit/storage/flannel/verb/tuck()
@@ -746,10 +746,10 @@ obj/item/clothing/suit/kamishimo
if(tucked == 0)
tucked = 1
usr << "<span class='notice'>You tuck in your your [src].</span>"
to_chat(usr, "<span class='notice'>You tuck in your your [src].</span>")
else
tucked = 0
usr << "<span class='notice'>You untuck your [src].</span>"
to_chat(usr, "<span class='notice'>You untuck your [src].</span>")
update_icon()
/obj/item/clothing/suit/storage/flannel/verb/button()
@@ -762,11 +762,11 @@ obj/item/clothing/suit/kamishimo
if(buttoned == 0)
buttoned = 1
flags_inv = HIDETIE|HIDEHOLSTER
usr << "<span class='notice'>You button your [src].</span>"
to_chat(usr, "<span class='notice'>You button your [src].</span>")
else
buttoned = 0
flags_inv = HIDEHOLSTER
usr<<"<span class='notice'>You unbutton your [src].</span>"
to_chat(usr, "<span class='notice'>You unbutton your [src].</span>")
update_icon()
/obj/item/clothing/suit/storage/flannel/update_icon()

View File

@@ -42,14 +42,14 @@
open = 0
icon_state = initial(icon_state)
flags_inv = HIDETIE|HIDEHOLSTER
usr << "You button up the coat."
to_chat(usr, "You button up the coat.")
else if(open == 0)
open = 1
icon_state = "[icon_state]_open"
flags_inv = HIDEHOLSTER
usr << "You unbutton the coat."
to_chat(usr, "You unbutton the coat.")
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
to_chat(usr, "You attempt to button-up the velcro on your [src], before promptly realising how silly you are.")
return
update_clothing_icon() //so our overlays update
@@ -68,14 +68,14 @@
open = 0
icon_state = initial(icon_state)
flags_inv = HIDETIE|HIDEHOLSTER
usr << "You button up the coat."
to_chat(usr, "You button up the coat.")
else if(open == 0)
open = 1
icon_state = "[icon_state]_open"
flags_inv = HIDEHOLSTER
usr << "You unbutton the coat."
to_chat(usr, "You unbutton the coat.")
else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed
usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are."
to_chat(usr, "You attempt to button-up the velcro on your [src], before promptly realising how silly you are.")
return
update_clothing_icon() //so our overlays update
@@ -99,12 +99,12 @@
if(icon_state == icon_badge)
icon_state = icon_nobadge
usr << "You conceal \the [src]'s badge."
to_chat(usr, "You conceal \the [src]'s badge.")
else if(icon_state == icon_nobadge)
icon_state = icon_badge
usr << "You reveal \the [src]'s badge."
to_chat(usr, "You reveal \the [src]'s badge.")
else
usr << "\The [src] does not have a badge."
to_chat(usr, "\The [src] does not have a badge.")
return
update_clothing_icon()

View File

@@ -28,7 +28,7 @@
/obj/item/clothing/accessory/badge/attack_self(mob/user as mob)
if(!stored_name)
user << "You polish your old badge fondly, shining up the surface."
to_chat(user, "You polish your old badge fondly, shining up the surface.")
set_name(user.real_name)
return
@@ -74,17 +74,17 @@
/obj/item/clothing/accessory/badge/holo/attack_self(mob/user as mob)
if(!stored_name)
user << "Waving around a holobadge before swiping an ID would be pretty pointless."
to_chat(user, "Waving around a holobadge before swiping an ID would be pretty pointless.")
return
return ..()
/obj/item/clothing/accessory/badge/holo/emag_act(var/remaining_charges, var/mob/user)
if (emagged)
user << "<span class='danger'>\The [src] is already cracked.</span>"
to_chat(user, "<span class='danger'>\The [src] is already cracked.</span>")
return
else
emagged = 1
user << "<span class='danger'>You crack the holobadge security checks.</span>"
to_chat(user, "<span class='danger'>You crack the holobadge security checks.</span>")
return 1
/obj/item/clothing/accessory/badge/holo/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -99,10 +99,10 @@
id_card = pda.id
if(access_security in id_card.access || emagged)
user << "You imprint your ID details onto the badge."
to_chat(user, "You imprint your ID details onto the badge.")
set_name(user.real_name)
else
user << "[src] rejects your insufficient access rights."
to_chat(user, "[src] rejects your insufficient access rights.")
return
..()

View File

@@ -8,11 +8,11 @@
/obj/item/clothing/accessory/holster/proc/holster(var/obj/item/I, var/mob/living/user)
if(holstered && istype(user))
user << "<span class='warning'>There is already \a [holstered] holstered here!</span>"
to_chat(user, "<span class='warning'>There is already \a [holstered] holstered here!</span>")
return
if (!(I.slot_flags & SLOT_HOLSTER))
user << "<span class='warning'>[I] won't fit in [src]!</span>"
to_chat(user, "<span class='warning'>[I] won't fit in [src]!</span>")
return
if(istype(user))
@@ -34,7 +34,7 @@
return
if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj))
user << "<span class='warning'>You need an empty hand to draw \the [holstered]!</span>"
to_chat(user, "<span class='warning'>You need an empty hand to draw \the [holstered]!</span>")
else
if(user.a_intent == I_HURT)
usr.visible_message(
@@ -70,9 +70,9 @@
/obj/item/clothing/accessory/holster/examine(mob/user)
..(user)
if (holstered)
user << "A [holstered] is holstered here."
to_chat(user, "A [holstered] is holstered here.")
else
user << "It is empty."
to_chat(user, "It is empty.")
/obj/item/clothing/accessory/holster/on_attached(obj/item/clothing/under/S, mob/user as mob)
..()
@@ -102,12 +102,12 @@
H = locate() in S.accessories
if (!H)
usr << "<span class='warning'>Something is very wrong.</span>"
to_chat(usr, "<span class='warning'>Something is very wrong.</span>")
if(!H.holstered)
var/obj/item/W = usr.get_active_hand()
if(!istype(W, /obj/item))
usr << "<span class='warning'>You need your gun equipped to holster it.</span>"
to_chat(usr, "<span class='warning'>You need your gun equipped to holster it.</span>")
return
H.holster(W, usr)
else

View File

@@ -14,15 +14,15 @@
base_icon = icon_state
if(!("[base_icon]_open" in icon_states(icon)))
user << "\The [src] doesn't seem to open."
to_chat(user, "\The [src] doesn't seem to open.")
return
open = !open
user << "You flip \the [src] [open?"open":"closed"]."
to_chat(user, "You flip \the [src] [open?"open":"closed"].")
if(open)
icon_state = "[base_icon]_open"
if(held)
user << "\The [held] falls out!"
to_chat(user, "\The [held] falls out!")
held.loc = get_turf(user)
held = null
else
@@ -30,14 +30,14 @@
/obj/item/clothing/accessory/locket/attackby(var/obj/item/O as obj, mob/user as mob)
if(!open)
user << "You have to open it first."
to_chat(user, "You have to open it first.")
return
if(istype(O,/obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo))
if(held)
usr << "\The [src] already has something inside it."
to_chat(usr, "\The [src] already has something inside it.")
else
usr << "You slip [O] into [src]."
to_chat(usr, "You slip [O] into [src].")
user.drop_item()
O.loc = src
held = O

View File

@@ -42,7 +42,7 @@
..()
/obj/item/clothing/accessory/storage/attack_self(mob/user as mob)
user << "<span class='notice'>You empty [src].</span>"
to_chat(user, "<span class='notice'>You empty [src].</span>")
var/turf/T = get_turf(src)
hold.hide_from(usr)
for(var/obj/item/I in hold.contents)

View File

@@ -91,7 +91,7 @@
item_state_slots[slot_w_uniform_str] = unrolled ? "[worn_state]_r" : initial(worn_state)
var/mob/living/carbon/human/H = loc
H.update_inv_w_uniform(1)
H << "<span class='notice'>You roll the sleeves of your shirt [unrolled ? "up" : "down"]</span>"
to_chat(H, "<span class='notice'>You roll the sleeves of your shirt [unrolled ? "up" : "down"]</span>")
*/
/obj/item/clothing/under/det/grey
icon_state = "detective2"

View File

@@ -28,7 +28,7 @@
/obj/machinery/dnaforensics/attackby(var/obj/item/W, mob/user as mob)
if(bloodsamp)
user << "<span class='warning'>There is already a sample in the machine.</span>"
to_chat(user, "<span class='warning'>There is already a sample in the machine.</span>")
return
if(closed)
@@ -38,7 +38,7 @@
if(default_deconstruction_crowbar(user, W))
return
else
user << "<span class='warning'>Open the cover before inserting the sample.</span>"
to_chat(user, "<span class='warning'>Open the cover before inserting the sample.</span>")
return
var/obj/item/weapon/forensics/swab/swab = W
@@ -46,9 +46,9 @@
user.unEquip(W)
src.bloodsamp = swab
swab.loc = src
user << "<span class='notice'>You insert \the [W] into \the [src].</span>"
to_chat(user, "<span class='notice'>You insert \the [W] into \the [src].</span>")
else
user << "<span class='warning'>\The [src] only accepts used swabs.</span>"
to_chat(user, "<span class='warning'>\The [src] only accepts used swabs.</span>")
return
/obj/machinery/dnaforensics/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null)
@@ -83,12 +83,12 @@
if(closed == 1)
scanner_progress = 0
scanning = 1
usr << "<span class='notice'>Scan initiated.</span>"
to_chat(usr, "<span class='notice'>Scan initiated.</span>")
update_icon()
else
usr << "<span class='notice'>Please close sample lid before initiating scan.</span>"
to_chat(usr, "<span class='notice'>Please close sample lid before initiating scan.</span>")
else
usr << "<span class='warning'>Insert an item to scan.</span>"
to_chat(usr, "<span class='warning'>Insert an item to scan.</span>")
if(href_list["ejectItem"])
if(bloodsamp)
@@ -153,7 +153,7 @@
return
if(scanning)
usr << "<span class='warning'>You can't do that while [src] is scanning!</span>"
to_chat(usr, "<span class='warning'>You can't do that while [src] is scanning!</span>")
return
closed = !closed

View File

@@ -13,11 +13,11 @@
/obj/machinery/microscope/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(sample)
user << "<span class='warning'>There is already a slide in the microscope.</span>"
to_chat(user, "<span class='warning'>There is already a slide in the microscope.</span>")
return
if(istype(W, /obj/item/weapon/forensics/swab)|| istype(W, /obj/item/weapon/sample/fibers) || istype(W, /obj/item/weapon/sample/print))
user << "<span class='notice'>You insert \the [W] into the microscope.</span>"
to_chat(user, "<span class='notice'>You insert \the [W] into the microscope.</span>")
user.unEquip(W)
W.forceMove(src)
sample = W
@@ -27,16 +27,16 @@
/obj/machinery/microscope/attack_hand(mob/user)
if(!sample)
user << "<span class='warning'>The microscope has no sample to examine.</span>"
to_chat(user, "<span class='warning'>The microscope has no sample to examine.</span>")
return
user << "<span class='notice'>The microscope whirrs as you examine \the [sample].</span>"
to_chat(user, "<span class='notice'>The microscope whirrs as you examine \the [sample].</span>")
if(!do_after(user, 2 SECONDS) || !sample)
user << "<span class='notice'>You stop examining \the [sample].</span>"
to_chat(user, "<span class='notice'>You stop examining \the [sample].</span>")
return
user << "<span class='notice'>Printing findings now...</span>"
to_chat(user, "<span class='notice'>Printing findings now...</span>")
var/obj/item/weapon/paper/report = new(get_turf(src))
report.stamped = list(/obj/item/weapon/stamp)
report.overlays = list("paper_stamped")
@@ -82,16 +82,16 @@
if(report)
report.update_icon()
if(report.info)
user << report.info
to_chat(user,report.info)
return
/obj/machinery/microscope/proc/remove_sample(var/mob/living/remover)
if(!istype(remover) || remover.incapacitated() || !Adjacent(remover))
return ..()
if(!sample)
remover << "<span class='warning'>\The [src] does not have a sample in it.</span>"
to_chat(remover, "<span class='warning'>\The [src] does not have a sample in it.</span>")
return
remover << "<span class='notice'>You remove \the [sample] from \the [src].</span>"
to_chat(remover, "<span class='notice'>You remove \the [sample] from \the [src].</span>")
sample.forceMove(get_turf(src))
remover.put_in_hands(sample)
sample = null

View File

@@ -39,15 +39,15 @@
return
if(istype(I, /obj/item/weapon/evidencebag))
user << "<span class='notice'>You find putting an evidence bag in another evidence bag to be slightly absurd.</span>"
to_chat(user, "<span class='notice'>You find putting an evidence bag in another evidence bag to be slightly absurd.</span>")
return
if(I.w_class > 3)
user << "<span class='notice'>[I] won't fit in [src].</span>"
to_chat(user, "<span class='notice'>[I] won't fit in [src].</span>")
return
if(contents.len)
user << "<span class='notice'>[src] already has something inside it.</span>"
to_chat(user, "<span class='notice'>[src] already has something inside it.</span>")
return
user.visible_message("[user] puts [I] into [src]", "You put [I] inside [src].",\
@@ -86,7 +86,7 @@
icon_state = "evidenceobj"
desc = "An empty evidence bag."
else
user << "[src] is empty."
to_chat(user, "[src] is empty.")
icon_state = "evidenceobj"
return

View File

@@ -53,7 +53,7 @@
if(on_fire)
visible_message("<span class='warning'>\The [user] lights [src] with [W].</span>")
else
user << "<span class='warning'>You manage to singe [src], but fail to light it.</span>"
to_chat(user, "<span class='warning'>You manage to singe [src], but fail to light it.</span>")
. = ..()
update_name()
@@ -94,7 +94,7 @@
/obj/item/weapon/reagent_containers/glass/rag/proc/wipe_down(atom/A, mob/user)
if(!reagents.total_volume)
user << "<span class='warning'>The [initial(name)] is dry!</span>"
to_chat(user, "<span class='warning'>The [initial(name)] is dry!</span>")
else
user.visible_message("\The [user] starts to wipe down [A] with [src]!")
//reagents.splash(A, 1) //get a small amount of liquid on the thing we're wiping.
@@ -134,7 +134,7 @@
if(istype(A, /obj/structure/reagent_dispensers))
if(!reagents.get_free_space())
user << "<span class='warning'>\The [src] is already soaked.</span>"
to_chat(user, "<span class='warning'>\The [src] is already soaked.</span>")
return
if(A.reagents && A.reagents.trans_to_obj(src, reagents.maximum_volume))

View File

@@ -25,7 +25,7 @@
return 0
evidence |= supplied.evidence
name = "[initial(name)] (combined)"
user << "<span class='notice'>You transfer the contents of \the [supplied] into \the [src].</span>"
to_chat(user, "<span class='notice'>You transfer the contents of \the [supplied] into \the [src].</span>")
return 1
/obj/item/weapon/sample/print/merge_evidence(var/obj/item/weapon/sample/supplied, var/mob/user)
@@ -37,7 +37,7 @@
else
evidence[print] = supplied.evidence[print]
name = "[initial(name)] (combined)"
user << "<span class='notice'>You overlay \the [src] and \the [supplied], combining the print records.</span>"
to_chat(user, "<span class='notice'>You overlay \the [src] and \the [supplied], combining the print records.</span>")
return 1
/obj/item/weapon/sample/attackby(var/obj/O, var/mob/user)
@@ -67,10 +67,10 @@
return
var/mob/living/carbon/human/H = user
if(H.gloves)
user << "<span class='warning'>Take \the [H.gloves] off first.</span>"
to_chat(user, "<span class='warning'>Take \the [H.gloves] off first.</span>")
return
user << "<span class='notice'>You firmly press your fingertips onto the card.</span>"
to_chat(user, "<span class='notice'>You firmly press your fingertips onto the card.</span>")
var/fullprint = H.get_full_print()
evidence[fullprint] = fullprint
name = "[initial(name)] (\the [H])"
@@ -87,7 +87,7 @@
var/mob/living/carbon/human/H = M
if(H.gloves)
user << "<span class='warning'>\The [H] is wearing gloves.</span>"
to_chat(user, "<span class='warning'>\The [H] is wearing gloves.</span>")
return 1
if(user != H && H.a_intent != "help" && !H.lying)
@@ -104,7 +104,7 @@
if(istype(O) && !O.is_stump())
has_hand = 1
if(!has_hand)
user << "<span class='warning'>They don't have any hands.</span>"
to_chat(user, "<span class='warning'>They don't have any hands.</span>")
return 1
user.visible_message("[user] takes a copy of \the [H]'s fingerprints.")
var/fullprint = H.get_full_print()
@@ -134,7 +134,7 @@
/obj/item/weapon/forensics/sample_kit/proc/take_sample(var/mob/user, var/atom/supplied)
var/obj/item/weapon/sample/S = new evidence_path(get_turf(user), supplied)
user << "<span class='notice'>You transfer [S.evidence.len] [S.evidence.len > 1 ? "[evidence_type]s" : "[evidence_type]"] to \the [S].</span>"
to_chat(user, "<span class='notice'>You transfer [S.evidence.len] [S.evidence.len > 1 ? "[evidence_type]s" : "[evidence_type]"] to \the [S].</span>")
/obj/item/weapon/forensics/sample_kit/afterattack(var/atom/A, var/mob/user, var/proximity)
if(!proximity)
@@ -144,7 +144,7 @@
take_sample(user,A)
return 1
else
user << "<span class='warning'>You are unable to locate any [evidence_type]s on \the [A].</span>"
to_chat(user, "<span class='warning'>You are unable to locate any [evidence_type]s on \the [A].</span>")
return ..()
/obj/item/weapon/forensics/sample_kit/powder

View File

@@ -27,14 +27,14 @@
else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
var/obj/item/weapon/sample/print/P = new /obj/item/weapon/sample/print(user.loc)
P.attack(M, user)
to_chat(user,"<span class='notice'>Done printing.</span>")
// user << "<span class='notice'>[M]'s Fingerprints: [md5(M.dna.uni_identity)]</span>"
to_chat(user, "<span class='notice'>Done printing.</span>")
// to_chat(user, "<span class='notice'>[M]'s Fingerprints: [md5(M.dna.uni_identity)]</span>")
if(reveal_blood && M.blood_DNA && M.blood_DNA.len)
to_chat(user,"<span class='notice'>Blood found on [M]. Analysing...</span>")
to_chat(user, "<span class='notice'>Blood found on [M]. Analysing...</span>")
spawn(15)
for(var/blood in M.blood_DNA)
to_chat(user,"<span class='notice'>Blood type: [M.blood_DNA[blood]]\nDNA: [blood]</span>")
to_chat(user, "<span class='notice'>Blood type: [M.blood_DNA[blood]]\nDNA: [blood]</span>")
return
/obj/item/device/detective_scanner/afterattack(atom/A as obj|turf, mob/user, proximity)
@@ -52,14 +52,14 @@
*/
if(istype(A,/obj/item/weapon/sample/print))
to_chat(user,"The scanner displays on the screen: \"ERROR 43: Object on Excluded Object List.\"")
to_chat(user, "The scanner displays on the screen: \"ERROR 43: Object on Excluded Object List.\"")
flick("[icon_state]0",src)
return
add_fingerprint(user)
if(!(do_after(user, 1 SECOND)))
to_chat(user,"<span class='warning'>You must remain still for the device to complete its work.</span>")
to_chat(user, "<span class='warning'>You must remain still for the device to complete its work.</span>")
return 0
//General
@@ -71,15 +71,15 @@
return 0
if(add_data(A))
to_chat(user,"<span class='notice'>Object already in internal memory. Consolidating data...</span>")
to_chat(user, "<span class='notice'>Object already in internal memory. Consolidating data...</span>")
flick("[icon_state]2",src)
return
//PRINTS
if(A.fingerprints && A.fingerprints.len)
to_chat(user,"<span class='notice'>Isolated [A.fingerprints.len] fingerprints:</span>")
to_chat(user, "<span class='notice'>Isolated [A.fingerprints.len] fingerprints:</span>")
if(!reveal_incompletes)
to_chat(user,"<span class='warning'>Rapid Analysis Imperfect: Scan samples with H.R.F.S. equipment to determine nature of incomplete prints.</span>")
to_chat(user, "<span class='warning'>Rapid Analysis Imperfect: Scan samples with H.R.F.S. equipment to determine nature of incomplete prints.</span>")
var/list/complete_prints = list()
var/list/incomplete_prints = list()
for(var/i in A.fingerprints)
@@ -89,35 +89,35 @@
else
incomplete_prints += print
if(complete_prints.len < 1)
to_chat(user,"<span class='notice'>No intact prints found</span>")
to_chat(user, "<span class='notice'>No intact prints found</span>")
else
to_chat(user,"<span class='notice'>Found [complete_prints.len] intact prints</span>")
to_chat(user, "<span class='notice'>Found [complete_prints.len] intact prints</span>")
if(reveal_fingerprints)
for(var/i in complete_prints)
to_chat(user,"<span class='notice'>&nbsp;&nbsp;&nbsp;&nbsp;[i]</span>")
to_chat(user, "<span class='notice'>&nbsp;&nbsp;&nbsp;&nbsp;[i]</span>")
to_chat(user,"<span class='notice'>Found [incomplete_prints.len] incomplete prints</span>")
to_chat(user, "<span class='notice'>Found [incomplete_prints.len] incomplete prints</span>")
if(reveal_incompletes)
for(var/i in incomplete_prints)
to_chat(user,"<span class='notice'>&nbsp;&nbsp;&nbsp;&nbsp;[i]</span>")
to_chat(user, "<span class='notice'>&nbsp;&nbsp;&nbsp;&nbsp;[i]</span>")
//FIBERS
if(A.suit_fibers && A.suit_fibers.len)
to_chat(user,"<span class='notice'>Fibers/Materials detected.[reveal_fibers ? " Analysing..." : " Acquisition of fibers for H.R.F.S. analysis advised."]</span>")
to_chat(user, "<span class='notice'>Fibers/Materials detected.[reveal_fibers ? " Analysing..." : " Acquisition of fibers for H.R.F.S. analysis advised."]</span>")
flick("[icon_state]2",src)
if(reveal_fibers && do_after(user, 5 SECONDS))
to_chat(user,"<span class='notice'>Apparel samples scanned:</span>")
to_chat(user, "<span class='notice'>Apparel samples scanned:</span>")
for(var/sample in A.suit_fibers)
to_chat(user," - <span class='notice'>[sample]</span>")
to_chat(user, " - <span class='notice'>[sample]</span>")
//Blood
if (A.blood_DNA && A.blood_DNA.len)
to_chat(user,"<span class='notice'>Blood detected.[reveal_blood ? " Analysing..." : " Acquisition of swab for H.R.F.S. analysis advised."]</span>")
to_chat(user, "<span class='notice'>Blood detected.[reveal_blood ? " Analysing..." : " Acquisition of swab for H.R.F.S. analysis advised."]</span>")
if(reveal_blood && do_after(user, 5 SECONDS))
flick("[icon_state]2",src)
for(var/blood in A.blood_DNA)
to_chat(user,"Blood type: <span class='warning'>[A.blood_DNA[blood]]</span> DNA: <span class='warning'>[blood]</span>")
to_chat(user, "Blood type: <span class='warning'>[A.blood_DNA[blood]]</span> DNA: <span class='warning'>[blood]</span>")
user.visible_message("\The [user] scans \the [A] with \a [src], the air around [user.gender == MALE ? "him" : "her"] humming[prob(70) ? " gently." : "."]" ,\
"<span class='notice'>You finish scanning \the [A].</span>",\
@@ -139,7 +139,7 @@
set category = "Object"
set src in view(1)
world << "usr is [usr]"
to_world("usr is [usr]")
display_data(usr)
/obj/item/device/detective_scanner/proc/display_data(var/mob/user)
@@ -167,7 +167,7 @@
incomplete_prints += print
if(complete_prints.len < 1)
to_chat(user,"<span class='notice'>No intact prints found.</span>")
to_chat(user, "<span class='notice'>No intact prints found.</span>")
if(reveal_incompletes)
for(var/print in incomplete_prints)
@@ -177,7 +177,7 @@
to_chat(user, "<span class='notice'>[fibers.len] samples of material were present.</span>")
if(reveal_fibers)
for(var/sample in fibers)
to_chat(user," - <span class='notice'>[sample]</span>")
to_chat(user, " - <span class='notice'>[sample]</span>")
if(bloods && bloods.len)
to_chat(user, "<span class='notice'>[bloods.len] samples of blood were present.</span>")
@@ -192,7 +192,7 @@
if (alert("Are you sure you want to wipe all data from [src]?",,"Yes","No") == "Yes")
stored = list()
to_chat(usr,"<span class='notice'>Forensic data erase complete.</span>")
to_chat(usr, "<span class='notice'>Forensic data erase complete.</span>")
/obj/item/device/detective_scanner/advanced
name = "advanced forensic scanner"

View File

@@ -21,11 +21,11 @@
var/sample_type
if(H.wear_mask)
user << "<span class='warning'>\The [H] is wearing a mask.</span>"
to_chat(user, "<span class='warning'>\The [H] is wearing a mask.</span>")
return
if(!H.dna || !H.dna.unique_enzymes)
user << "<span class='warning'>They don't seem to have DNA!</span>"
to_chat(user, "<span class='warning'>They don't seem to have DNA!</span>")
return
if(user != H && H.a_intent != "help" && !H.lying)
@@ -34,10 +34,10 @@
if(user.zone_sel.selecting == O_MOUTH)
if(!H.organs_by_name[BP_HEAD])
user << "<span class='warning'>They don't have a head.</span>"
to_chat(user, "<span class='warning'>They don't have a head.</span>")
return
if(!H.check_has_mouth())
user << "<span class='warning'>They don't have a mouth.</span>"
to_chat(user, "<span class='warning'>They don't have a mouth.</span>")
return
user.visible_message("[user] swabs \the [H]'s mouth for a saliva sample.")
dna = list(H.dna.unique_enzymes)
@@ -53,7 +53,7 @@
if(istype(O) && !O.is_stump())
has_hand = 1
if(!has_hand)
user << "<span class='warning'>They don't have any hands.</span>"
to_chat(user, "<span class='warning'>They don't have any hands.</span>")
return
user.visible_message("[user] swabs [H]'s palm for a sample.")
sample_type = "GSR"
@@ -72,7 +72,7 @@
return
if(is_used())
user << "<span class='warning'>This swab has already been used.</span>"
to_chat(user, "<span class='warning'>This swab has already been used.</span>")
return
add_fingerprint(user)
@@ -85,7 +85,7 @@
var/choice
if(!choices.len)
user << "<span class='warning'>There is no evidence on \the [A].</span>"
to_chat(user, "<span class='warning'>There is no evidence on \the [A].</span>")
return
else if(choices.len == 1)
choice = choices[1]
@@ -104,7 +104,7 @@
else if(choice == "Gunshot Residue")
var/obj/item/clothing/B = A
if(!istype(B) || !B.gunshot_residue)
user << "<span class='warning'>There is no residue on \the [A].</span>"
to_chat(user, "<span class='warning'>There is no residue on \the [A].</span>")
return
gsr = B.gunshot_residue
sample_type = "residue"

View File

@@ -76,7 +76,7 @@ log transactions
//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!")
user << "<span class='warning'>\icon[src] The [src] beeps: \"[response]\"</span>"
to_chat(user, "<span class='warning'>\icon[src] The [src] beeps: \"[response]\"</span>")
return 1
/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(emagged > 0)
//prevent inserting id into an emagged ATM
user << "<font color='red'>\icon[src] CARD READER ERROR. This system has been compromised!</font>"
to_chat(user, "<font color='red'>\icon[src] CARD READER ERROR. This system has been compromised!</font>")
return
else if(istype(I,/obj/item/weapon/card/emag))
I.resolve_attackby(src, user)
@@ -117,7 +117,7 @@ log transactions
T.time = stationtime2text()
authenticated_account.transaction_log.Add(T)
user << "<span class='info'>You insert [I] into [src].</span>"
to_chat(user, "<span class='info'>You insert [I] into [src].</span>")
src.attack_hand(user)
qdel(I)
else
@@ -234,7 +234,7 @@ log transactions
var/target_account_number = text2num(href_list["target_acc_number"])
var/transfer_purpose = href_list["purpose"]
if(charge_to_account(target_account_number, authenticated_account.owner_name, transfer_purpose, machine_id, transfer_amount))
usr << "\icon[src]<span class='info'>Funds transfer successful.</span>"
to_chat(usr, "\icon[src]<span class='info'>Funds transfer successful.</span>")
authenticated_account.money -= transfer_amount
//create an entry in the account transaction log
@@ -247,10 +247,10 @@ log transactions
T.amount = "([transfer_amount])"
authenticated_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>Funds transfer failed.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Funds transfer failed.</span>")
else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("view_screen")
view_screen = text2num(href_list["view_screen"])
if("change_security_level")
@@ -288,11 +288,11 @@ log transactions
T.time = stationtime2text()
failed_account.transaction_log.Add(T)
else
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'>\icon[src] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.</font>")
previous_account_number = tried_account_num
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
else
usr << "<font color='red'>\icon[src] incorrect pin/account combination entered.</font>"
to_chat(usr, "<font color='red'>\icon[src] incorrect pin/account combination entered.</font>")
number_incorrect_tries = 0
else
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
@@ -308,7 +308,7 @@ log transactions
T.time = stationtime2text()
authenticated_account.transaction_log.Add(T)
usr << "<font color='blue'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].</font>'"
to_chat(usr, "<font color='blue'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].</font>'")
previous_account_number = tried_account_num
if("e_withdrawal")
@@ -336,7 +336,7 @@ log transactions
T.time = stationtime2text()
authenticated_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("withdrawal")
var/amount = max(text2num(href_list["funds_amount"]),0)
amount = round(amount, 0.01)
@@ -361,7 +361,7 @@ log transactions
T.time = stationtime2text()
authenticated_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("balance_statement")
if(authenticated_account)
var/obj/item/weapon/paper/R = new(src.loc)
@@ -433,7 +433,7 @@ log transactions
if(!held_card)
//this might happen if the user had the browser window open when somebody emagged it
if(emagged > 0)
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'>\icon[src] The ATM card reader rejected your ID because this machine has been sabotaged!</font>")
else
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card/id))
@@ -461,7 +461,7 @@ log transactions
if(I)
authenticated_account = attempt_account_access(I.associated_account_number)
if(authenticated_account)
human_user << "<font color='blue'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].</font>'"
to_chat(human_user, "<font color='blue'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].</font>'")
//create a transaction log entry
var/datum/transaction/T = new()

View File

@@ -118,7 +118,7 @@
if(linked_account)
scan_card(I, O)
else
usr << "\icon[src]<span class='warning'>Unable to connect to linked account.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Unable to connect to linked account.</span>")
else if (istype(O, /obj/item/weapon/spacecash/ewallet))
var/obj/item/weapon/spacecash/ewallet/E = O
if (linked_account)
@@ -143,11 +143,11 @@
T.time = stationtime2text()
linked_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>\The [O] doesn't have that much money!</span>"
to_chat(usr, "\icon[src]<span class='warning'>\The [O] doesn't have that much money!</span>")
else
usr << "\icon[src]<span class='warning'>Connected account has been suspended.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Connected account has been suspended.</span>")
else
usr << "\icon[src]<span class='warning'>EFTPOS is not connected to an account.</span>"
to_chat(usr, "\icon[src]<span class='warning'>EFTPOS is not connected to an account.</span>")
else
..()
@@ -165,14 +165,14 @@
alert("That is not a valid code!")
print_reference()
else
usr << "\icon[src]<span class='warning'>Incorrect code entered.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Incorrect code entered.</span>")
if("change_id")
var/attempt_code = text2num(input("Re-enter the current EFTPOS access code", "Confirm EFTPOS 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"
print_reference()
else
usr << "\icon[src]<span class='warning'>Incorrect code entered.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Incorrect code entered.</span>")
if("link_account")
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
@@ -180,9 +180,9 @@
if(linked_account)
if(linked_account.suspended)
linked_account = null
usr << "\icon[src]<span class='warning'>Account has been suspended.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Account has been suspended.</span>")
else
usr << "\icon[src]<span class='warning'>Account not found.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Account not found.</span>")
if("trans_purpose")
var/choice = sanitize(input("Enter reason for EFTPOS transaction", "Transaction purpose"))
if(choice) transaction_purpose = choice
@@ -205,14 +205,14 @@
else if(linked_account)
transaction_locked = 1
else
usr << "\icon[src]<span class='warning'>No account connected to send transactions to.</span>"
to_chat(usr, "\icon[src]<span class='warning'>No account connected to send transactions to.</span>")
if("scan_card")
if(linked_account)
var/obj/item/I = usr.get_active_hand()
if (istype(I, /obj/item/weapon/card))
scan_card(I)
else
usr << "\icon[src]<span class='warning'>Unable to link accounts.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Unable to link accounts.</span>")
if("reset")
//reset the access code - requires HoP/captain access
var/obj/item/I = usr.get_active_hand()
@@ -220,10 +220,10 @@
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)
access_code = 0
usr << "\icon[src]<span class='info'>Access code reset to 0.</span>"
to_chat(usr, "\icon[src]<span class='info'>Access code reset to 0.</span>")
else if (istype(I, /obj/item/weapon/card/emag))
access_code = 0
usr << "\icon[src]<span class='info'>Access code reset to 0.</span>"
to_chat(usr, "\icon[src]<span class='info'>Access code reset to 0.</span>")
src.attack_self(usr)
@@ -276,19 +276,19 @@
T.time = stationtime2text()
linked_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>You don't have that much money!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have that much money!</span>")
else
usr << "\icon[src]<span class='warning'>Your account has been suspended.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Your account has been suspended.</span>")
else
usr << "\icon[src]<span class='warning'>Unable to access account. Check security settings and try again.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Unable to access account. Check security settings and try again.</span>")
else
usr << "\icon[src]<span class='warning'>Connected account has been suspended.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Connected account has been suspended.</span>")
else
usr << "\icon[src]<span class='warning'>EFTPOS is not connected to an account.</span>"
to_chat(usr, "\icon[src]<span class='warning'>EFTPOS is not connected to an account.</span>")
else if (istype(I, /obj/item/weapon/card/emag))
if(transaction_locked)
if(transaction_paid)
usr << "\icon[src]<span class='info'>You stealthily swipe \the [I] through \the [src].</span>"
to_chat(usr, "\icon[src]<span class='info'>You stealthily swipe \the [I] through \the [src].</span>")
transaction_locked = 0
transaction_paid = 0
else

View File

@@ -29,7 +29,7 @@
h_user.drop_from_inventory(src)
h_user.drop_from_inventory(SC)
h_user.put_in_hands(SC)
user << "<span class='notice'>You combine the Thalers to a bundle of [SC.worth] Thalers.</span>"
to_chat(user, "<span class='notice'>You combine the Thalers to a bundle of [SC.worth] Thalers.</span>")
qdel(src)
/obj/item/weapon/spacecash/update_icon()
@@ -158,4 +158,4 @@ proc/spawn_money(var/sum, spawnloc, mob/living/carbon/human/human_user as mob)
/obj/item/weapon/spacecash/ewallet/examine(mob/user)
..(user)
if (!(user in view(2)) && user!=src.loc) return
user << "<font color='blue'>Charge card's owner: [src.owner_name]. Thalers remaining: [src.worth].</font>"
to_chat(user, "<font color='blue'>Charge card's owner: [src.owner_name]. Thalers remaining: [src.worth].</font>")

View File

@@ -33,11 +33,13 @@
/obj/machinery/cash_register/examine(mob/user as mob)
..(user)
if(transaction_amount)
to_chat(user, "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""].")
if(cash_open)
if(cash_stored)
user << "It holds [cash_stored] Thaler\s of money."
to_chat(user, "It holds [cash_stored] Thaler\s of money.")
else
user << "It's completely empty."
to_chat(user, "It's completely empty.")
/obj/machinery/cash_register/attack_hand(mob/user as mob)
@@ -101,7 +103,7 @@
if(allowed(usr))
locked = !locked
else
usr << "\icon[src]<span class='warning'>Insufficient access.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Insufficient access.</span>")
if("toggle_cash_lock")
cash_locked = !cash_locked
if("link_account")
@@ -113,7 +115,7 @@
linked_account = null
src.visible_message("\icon[src]<span class='warning'>Account has been suspended.</span>")
else
usr << "\icon[src]<span class='warning'>Account not found.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Account not found.</span>")
if("custom_order")
var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text)
if (!t_purpose || !Adjacent(usr)) return
@@ -161,7 +163,7 @@
price_list.Cut()
if("reset_log")
transaction_logs.Cut()
usr << "\icon[src]<span class='notice'>Transaction log reset.</span>"
to_chat(usr, "\icon[src]<span class='notice'>Transaction log reset.</span>")
updateDialog()
@@ -177,7 +179,7 @@
else if (istype(O, /obj/item/weapon/spacecash))
var/obj/item/weapon/spacecash/SC = O
if(cash_open)
user << "You neatly sort the cash into the box."
to_chat(user, "You neatly sort the cash into the box.")
cash_stored += SC.worth
overlays |= "register_cash"
if(ishuman(user))
@@ -217,7 +219,7 @@
if (cash_open)
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
usr << "\icon[src]<span class='warning'>The cash box is open.</span>"
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
return
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(I))
@@ -282,7 +284,7 @@
if (cash_open)
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
usr << "\icon[src]<span class='warning'>The cash box is open.</span>"
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
return
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(E))
@@ -320,7 +322,7 @@
if (cash_open)
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
usr << "\icon[src]<span class='warning'>The cash box is open.</span>"
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
return
if((item_list.len > 1 || item_list[item_list[1]] > 1) && !confirm(SC))
@@ -353,7 +355,7 @@
return
if (cash_open)
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
usr << "\icon[src]<span class='warning'>The cash box is open.</span>"
to_chat(usr, "\icon[src]<span class='warning'>The cash box is open.</span>")
return
// First check if item has a valid price
@@ -476,7 +478,7 @@
if(cash_stored)
overlays += "register_cash"
else
usr << "<span class='warning'>The cash box is locked.</span>"
to_chat(usr, "<span class='warning'>The cash box is locked.</span>")
/obj/machinery/cash_register/proc/toggle_anchors(obj/item/weapon/tool/wrench/W, mob/user)

View File

@@ -56,6 +56,11 @@
user.set_machine(src)
interact(user)
/obj/item/device/retail_scanner/examine(mob/user as mob)
..(user)
if(transaction_amount)
to_chat(user, "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""].")
/obj/item/device/retail_scanner/interact(mob/user as mob)
var/dat = "<h2>Retail Scanner<hr></h2>"
@@ -95,7 +100,7 @@
if(allowed(usr))
locked = !locked
else
usr << "\icon[src]<span class='warning'>Insufficient access.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Insufficient access.</span>")
if("link_account")
var/attempt_account_num = input("Enter account number", "New account number") as num
var/attempt_pin = input("Enter PIN", "Account PIN") as num
@@ -105,7 +110,7 @@
linked_account = null
src.visible_message("\icon[src]<span class='warning'>Account has been suspended.</span>")
else
usr << "\icon[src]<span class='warning'>Account not found.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Account not found.</span>")
if("custom_order")
var/t_purpose = sanitize(input("Enter purpose", "New purpose") as text)
if (!t_purpose || !Adjacent(usr)) return
@@ -153,7 +158,7 @@
price_list.Cut()
if("reset_log")
transaction_logs.Cut()
usr << "\icon[src]<span class='notice'>Transaction log reset.</span>"
to_chat(usr, "\icon[src]<span class='notice'>Transaction log reset.</span>")
updateDialog()
@@ -167,7 +172,7 @@
var/obj/item/weapon/spacecash/ewallet/E = O
scan_wallet(E)
else if (istype(O, /obj/item/weapon/spacecash))
usr << "<span class='warning'>This device does not accept cash.</span>"
to_chat(usr, "<span class='warning'>This device does not accept cash.</span>")
else if(istype(O, /obj/item/weapon/card/emag))
return ..()
@@ -392,7 +397,7 @@
/obj/item/device/retail_scanner/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
user << "<span class='danger'>You stealthily swipe the cryptographic sequencer through \the [src].</span>"
to_chat(user, "<span class='danger'>You stealthily swipe the cryptographic sequencer through \the [src].</span>")
playsound(src, "sparks", 50, 1)
req_access = list()
emagged = 1

View File

@@ -5,8 +5,8 @@
command_announcement.Announce("Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT", new_sound = 'sound/misc/interference.ogg')
else // AIs will always know if there's a comm blackout, rogue AIs could then lie about comm blackouts in the future while they shutdown comms
for(var/mob/living/silicon/ai/A in player_list)
A << "<br>"
A << "<span class='warning'><b>Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT</b></span>"
A << "<br>"
to_chat(A, "<br>")
to_chat(A, "<span class='warning'><b>Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you-BZZT</b></span>")
to_chat(A, "<br>")
for(var/obj/machinery/telecomms/T in telecomms_list)
T.emp_act(1)

View File

@@ -7,9 +7,9 @@
"#4nd%;f4y6,><3E>%-BZZZZZZZT")
for(var/mob/living/silicon/ai/A in player_list) //AIs are always aware of communication blackouts.
A << "<br>"
A << "<span class='warning'><b>[alert]</b></span>"
A << "<br>"
to_chat(A, "<br>")
to_chat(A, "<span class='warning'><b>[alert]</b></span>")
to_chat(A, "<br>")
if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
command_announcement.Announce(alert, new_sound = sound('sound/misc/interference.ogg', volume=25))

View File

@@ -75,74 +75,74 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
crew = "Any Human"
switch(rand(1,14))
if(1)
M << "<br>"
M << "<font color='red'>THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("THERE ARE [amount] [who2] ON THE STATION")
if(2)
M << "<br>"
M << "<font color='red'>[what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>[what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("[what2] ARE DANGEROUS TO HUMANS")
if(3)
M << "<br>"
M << "<font color='red'>THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("THE ESCAPE SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION")
if(4)
M << "<br>"
M << "<font color='red'>HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE")
if(5)
M << "<br>"
M << "<font color='red'>THE COLONY DIRECTOR, HOP AND HOS ARE [who2]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>THE COLONY DIRECTOR, HOP AND HOS ARE [who2]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("THE COLONY DIRECTOR, HOP AND HOS ARE [who2]")
if(6)
M << "<br>"
M << "<font color='red'>THE STATION IS BUILT FOR [who2]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>THE STATION IS BUILT FOR [who2]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("THE STATION IS BUILT FOR [who2]")
if(7)
M << "<br>"
M << "<font color='red'>YOU ARE [amount] [who2]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>YOU ARE [amount] [who2]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("YOU ARE [amount] [who2]")
if(8)
M << "<br>"
M << "<font color='red'>YOU MUST ALWAYS [aimust]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>YOU MUST ALWAYS [aimust]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("YOU MUST ALWAYS [aimust]")
if(9)
M << "<br>"
M << "<font color='red'>[area] [area2] [amount] [what2]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>[area] [area2] [amount] [what2]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("[area] [area2] [amount] [what2]")
if(10)
M << "<br>"
M << "<font color='red'>[crew] is [target]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>[crew] is [target]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("[crew] is [target]")
if(11)
M << "<br>"
M << "<font color='red'>[define] IS A FORM OF HARM...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>[define] IS A FORM OF HARM...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("[define] IS A FORM OF HARM")
if(12)
M << "<br>"
M << "<font color='red'>YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS")
if(13)
M << "<br>"
M << "<font color='red'>[crew] is [allergysev] to [allergy]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>[crew] is [allergysev] to [allergy]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("[crew] is [allergysev] to [allergy]")
if(14)
M << "<br>"
M << "<font color='red'>THE STATION IS [who2pref] [who2]...LAWS UPDATED</font>"
M << "<br>"
to_chat(M, "<br>")
to_chat(M, "<font color='red'>THE STATION IS [who2pref] [who2]...LAWS UPDATED</font>")
to_chat(M, "<br>")
M.add_ion_law("THE STATION IS [who2pref] [who2]")
if(botEmagChance)
@@ -158,39 +158,39 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
var/airlocknum = 0
var/firedoornum = 0
world << "Ion Storm Main Started"
to_world("Ion Storm Main Started")
spawn(0)
world << "Started processing APCs"
to_world("Started processing APCs")
for (var/obj/machinery/power/apc/APC in machines)
if(APC.z in station_levels)
APC.ion_act()
apcnum++
world << "Finished processing APCs. Processed: [apcnum]"
to_world("Finished processing APCs. Processed: [apcnum]")
spawn(0)
world << "Started processing SMES"
to_world("Started processing SMES")
for (var/obj/machinery/power/smes/SMES in machines)
if(SMES.z in station_levels)
SMES.ion_act()
smesnum++
world << "Finished processing SMES. Processed: [smesnum]"
to_world("Finished processing SMES. Processed: [smesnum]")
spawn(0)
world << "Started processing AIRLOCKS"
to_world("Started processing AIRLOCKS")
for (var/obj/machinery/door/airlock/D in machines)
if(D.z in station_levels)
//if(length(D.req_access) > 0 && !(12 in D.req_access)) //not counting general access and maintenance airlocks
airlocknum++
spawn(0)
D.ion_act()
world << "Finished processing AIRLOCKS. Processed: [airlocknum]"
to_world("Finished processing AIRLOCKS. Processed: [airlocknum]")
spawn(0)
world << "Started processing FIREDOORS"
to_world("Started processing FIREDOORS")
for (var/obj/machinery/door/firedoor/D in machines)
if(D.z in station_levels)
firedoornum++;
spawn(0)
D.ion_act()
world << "Finished processing FIREDOORS. Processed: [firedoornum]"
to_world("Finished processing FIREDOORS. Processed: [firedoornum]")
world << "Ion Storm Main Done"
to_world("Ion Storm Main Done")
*/

View File

@@ -123,4 +123,4 @@
L = get(P, /mob/living/silicon)
if(L)
L << "\icon[P] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)"
to_chat(L, "\icon[P] <b>Message from [sender] (Unknown / spam?), </b>\"[message]\" (Unable to Reply)")

View File

@@ -51,10 +51,10 @@
for(var/obj/machinery/message_server/MS in machines)
MS.send_rc_message("Engineering", my_department, rc_message, "", "", 2)
for(var/mob/living/silicon/ai/A in player_list)
A << "<span class='danger'>Malicious program detected in the [english_list(areaName)] lighting and airlock control systems by [my_department].</span>"
to_chat(A, "<span class='danger'>Malicious program detected in the [english_list(areaName)] lighting and airlock control systems by [my_department].</span>")
else
world.log << "ERROR: Could not initate grey-tide. Unable to find suitable containment area."
to_world_log("ERROR: Could not initate grey-tide. Unable to find suitable containment area.")
kill()

View File

@@ -244,7 +244,7 @@ proc/check_panel(mob/M)
attackby(var/obj/item/weapon/P as obj, mob/user as mob)
step_away(src,my_target,2)
for(var/mob/M in oviewers(world.view,my_target))
M << "<font color='red'><B>[my_target] flails around wildly.</B></font>"
to_chat(M, "<font color='red'><B>[my_target] flails around wildly.</B></font>")
my_target.show_message("<font color='red'><B>[src] has been attacked by [my_target] </B></font>", 1) //Lazy.
src.health -= P.force
@@ -257,7 +257,7 @@ proc/check_panel(mob/M)
step_away(src,my_target,2)
if(prob(30))
for(var/mob/O in oviewers(world.view , my_target))
O << "<font color='red'><B>[my_target] stumbles around.</B></font>"
to_chat(O, "<font color='red'><B>[my_target] stumbles around.</B></font>")
New()
..()

View File

@@ -32,17 +32,17 @@
for(var/I in extras)
if(istype(I, /obj/item/weapon/glass_extra))
M << "There is \a [I] in \the [src]."
to_chat(M, "There is \a [I] in \the [src].")
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
M << "There is \a [I] on the rim."
to_chat(M, "There is \a [I] on the rim.")
else
M << "There is \a [I] somewhere on the glass. Somehow."
to_chat(M, "There is \a [I] somewhere on the glass. Somehow.")
if(has_ice())
M << "There is some ice floating in the drink."
to_chat(M, "There is some ice floating in the drink.")
if(has_fizz())
M << "It is fizzing slightly."
to_chat(M, "It is fizzing slightly.")
/obj/item/weapon/reagent_containers/food/drinks/glass2/proc/has_ice()
if(reagents.reagent_list.len > 0)
@@ -154,7 +154,7 @@
if(standard_splash_mob(user, target))
return 1
if(reagents && reagents.total_volume) //They are on harm intent, aka wanting to spill it.
user << "<span class='notice'>You splash the solution onto [target].</span>"
to_chat(user, "<span class='notice'>You splash the solution onto [target].</span>")
reagents.splash(target, reagents.total_volume)
return 1
..()

View File

@@ -7,13 +7,13 @@
extras += GE
user.remove_from_mob(GE)
GE.loc = src
user << "<span class=notice>You add \the [GE] to \the [src].</span>"
to_chat(user, "<span class=notice>You add \the [GE] to \the [src].</span>")
update_icon()
else
user << "<span class=warning>There's no space to put \the [GE] on \the [src]!</span>"
to_chat(user, "<span class=warning>There's no space to put \the [GE] on \the [src]!</span>")
else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/fruit_slice))
if(!rim_pos)
user << "<span class=warning>There's no space to put \the [I] on \the [src]!</span>"
to_chat(user, "<span class=warning>There's no space to put \the [I] on \the [src]!</span>")
return
var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/FS = I
extras += FS
@@ -21,7 +21,7 @@
FS.pixel_x = 0 // Reset its pixel offsets so the icons work!
FS.pixel_y = 0
FS.loc = src
user << "<span class=notice>You add \the [FS] to \the [src].</span>"
to_chat(user, "<span class=notice>You add \the [FS] to \the [src].</span>")
update_icon()
else
return ..()
@@ -31,7 +31,7 @@
return ..()
if(!extras.len)
user << "<span class=warning>There's nothing on the glass to remove!</span>"
to_chat(user, "<span class=warning>There's nothing on the glass to remove!</span>")
return
var/choice = input(user, "What would you like to remove from the glass?") as null|anything in extras
@@ -39,10 +39,10 @@
return
if(user.put_in_active_hand(choice))
user << "<span class=notice>You remove \the [choice] from \the [src].</span>"
to_chat(user, "<span class=notice>You remove \the [choice] from \the [src].</span>")
extras -= choice
else
user << "<span class=warning>Something went wrong, please try again.</span>"
to_chat(user, "<span class=warning>Something went wrong, please try again.</span>")
update_icon()

View File

@@ -9,6 +9,12 @@
matter = list("glass" = 500)
icon = 'icons/obj/drinks.dmi'
/obj/item/weapon/reagent_containers/food/drinks/metaglass/metapint
name = "metamorphic pint glass"
desc = "This glass changes shape and form depending on the drink inside... fancy!"
icon_state = "pglass_empty"
volume = 60
/obj/item/weapon/reagent_containers/food/drinks/metaglass/on_reagent_change()
if (reagents.reagent_list.len > 0)
var/datum/reagent/R = reagents.get_master_reagent()
@@ -38,11 +44,17 @@
else
price_tag = null
else
icon_state = "glass_empty"
name = "metamorphic glass"
desc = "This glass changes shape and form depending on the drink inside... fancy!"
center_of_mass = list("x"=16, "y"=10)
return
if(type == /obj/item/weapon/reagent_containers/food/drinks/metaglass/metapint)
icon_state = "pglass_empty"
name = "metamorphic pint glass"
desc = "This glass changes shape and form depending on the drink inside... fancy!"
center_of_mass = list("x"=16, "y"=10)
else
icon_state = "glass_empty"
name = "metamorphic glass"
desc = "This glass changes shape and form depending on the drink inside... fancy!"
center_of_mass = list("x"=16, "y"=10)
return
/*
@@ -390,7 +402,7 @@ Drinks Data
glass_icon_state = "gintonicglass"
/datum/reagent/ethanol/goldschlager
glass_icon_state = "ginvodkaglass"
glass_icon_state = "goldschlagerglass"
glass_center_of_mass = list("x"=16, "y"=12)
/datum/reagent/ethanol/hippies_delight
@@ -645,4 +657,7 @@ Drinks Data
/datum/reagent/drink/arnold_palmer
glass_icon_state = "arnoldpalmer"
glass_center_of_mass = list("x"=16, "y"=8)
glass_center_of_mass = list("x"=16, "y"=8)
/datum/reagent/ethanol/mojito
glass_icon_state = "mojito"

Some files were not shown because too many files have changed in this diff Show More