mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 18:44:48 +01:00
Merge pull request #4107 from tigercat2000/to_chat
Replace most (if not all) output << operators with to_chat(user, message)
This commit is contained in:
@@ -93,7 +93,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
|
||||
|
||||
if(blockselfban)
|
||||
if(a_ckey == ckey)
|
||||
usr << "<span class='danger'>You cannot apply this ban type on yourself.</span>"
|
||||
to_chat(usr, "<span class='danger'>You cannot apply this ban type on yourself.</span>")
|
||||
return
|
||||
|
||||
var/who
|
||||
@@ -118,13 +118,13 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
|
||||
if(adm_query.NextRow())
|
||||
var/adm_bans = text2num(adm_query.item[1])
|
||||
if(adm_bans >= MAX_ADMIN_BANS_PER_ADMIN)
|
||||
usr << "<span class='danger'>You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!</span>"
|
||||
to_chat(usr, "<span class='danger'>You already logged [MAX_ADMIN_BANS_PER_ADMIN] admin ban(s) or more. Do not abuse this function!</span>")
|
||||
return
|
||||
|
||||
var/sql = "INSERT INTO [format_table_name("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 << "\blue Ban saved to database."
|
||||
to_chat(usr, "\blue Ban saved to database.")
|
||||
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)
|
||||
|
||||
if(announceinirc)
|
||||
@@ -192,17 +192,17 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
|
||||
ban_number++;
|
||||
|
||||
if(ban_number == 0)
|
||||
usr << "\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."
|
||||
to_chat(usr, "\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.")
|
||||
return
|
||||
|
||||
if(ban_number > 1)
|
||||
usr << "\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."
|
||||
to_chat(usr, "\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.")
|
||||
return
|
||||
|
||||
if(istext(ban_id))
|
||||
ban_id = text2num(ban_id)
|
||||
if(!isnum(ban_id))
|
||||
usr << "\red Database update failed due to a ban ID mismatch. Contact the database admin."
|
||||
to_chat(usr, "\red Database update failed due to a ban ID mismatch. Contact the database admin.")
|
||||
return
|
||||
|
||||
DB_ban_unban_by_id(ban_id)
|
||||
@@ -212,7 +212,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 [format_table_name("ban")] WHERE id = [banid]")
|
||||
@@ -228,7 +228,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)
|
||||
@@ -240,7 +240,7 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
|
||||
value = 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 [format_table_name("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]")
|
||||
@@ -250,7 +250,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 [format_table_name("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]")
|
||||
@@ -261,10 +261,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)
|
||||
@@ -287,11 +287,11 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
|
||||
ban_number++;
|
||||
|
||||
if(ban_number == 0)
|
||||
usr << "\red Database update failed due to a ban id not being present in the database."
|
||||
to_chat(usr, "\red Database update failed due to a ban id not being present in the database.")
|
||||
return
|
||||
|
||||
if(ban_number > 1)
|
||||
usr << "\red Database update failed due to multiple bans having the same ID. Contact the database admin."
|
||||
to_chat(usr, "\red Database update failed due to multiple bans having the same ID. Contact the database admin.")
|
||||
return
|
||||
|
||||
if(!src.owner || !istype(src.owner, /client))
|
||||
@@ -328,7 +328,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "\red Failed to establish database connection"
|
||||
to_chat(usr, "\red Failed to establish database connection")
|
||||
return
|
||||
|
||||
var/output = "<div align='center'><table width='90%'><tr>"
|
||||
|
||||
@@ -106,19 +106,19 @@ var/savefile/Banlist
|
||||
|
||||
Banlist.cd = "/base"
|
||||
if ( Banlist.dir.Find("[ckey][computerid]") )
|
||||
usr << text("\red Ban already exists.")
|
||||
to_chat(usr, text("\red Ban already exists."))
|
||||
return 0
|
||||
else
|
||||
Banlist.dir.Add("[ckey][computerid]")
|
||||
Banlist.cd = "/base/[ckey][computerid]"
|
||||
Banlist["key"] << ckey
|
||||
Banlist["id"] << computerid
|
||||
Banlist["ip"] << address
|
||||
Banlist["reason"] << reason
|
||||
Banlist["bannedby"] << bannedby
|
||||
Banlist["temp"] << temp
|
||||
to_chat(Banlist["key"], ckey)
|
||||
to_chat(Banlist["id"], computerid)
|
||||
to_chat(Banlist["ip"], address)
|
||||
to_chat(Banlist["reason"], reason)
|
||||
to_chat(Banlist["bannedby"], bannedby)
|
||||
to_chat(Banlist["temp"], temp)
|
||||
if (temp)
|
||||
Banlist["minutes"] << bantimestamp
|
||||
to_chat(Banlist["minutes"], bantimestamp)
|
||||
if(!temp)
|
||||
add_note(ckey, "Permanently banned - [reason]", null, bannedby, 0)
|
||||
else
|
||||
@@ -211,17 +211,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]."
|
||||
Banlist["temp"] << a
|
||||
Banlist["minutes"] << CMinutes + rand(1,2000)
|
||||
Banlist["bannedby"] << "trashmin"
|
||||
to_chat(Banlist["key"], last)
|
||||
to_chat(Banlist["id"], "trashid[i]")
|
||||
to_chat(Banlist["reason"], "Trashban[i].")
|
||||
to_chat(Banlist["temp"], a)
|
||||
to_chat(Banlist["minutes"], CMinutes + rand(1,2000))
|
||||
to_chat(Banlist["bannedby"], "trashmin")
|
||||
last = "trash[i]"
|
||||
|
||||
Banlist.cd = "/base"
|
||||
|
||||
@@ -35,9 +35,10 @@
|
||||
var/cleaned = copytext(line,13,length(line)-19)
|
||||
if(!cleaned) continue
|
||||
F[cleaned] << 1
|
||||
F["last_update"] << world.realtime
|
||||
to_chat(F["last_update"], world.realtime)
|
||||
diary << "ToR data updated!"
|
||||
if(usr) usr << "ToRban updated."
|
||||
if(usr)
|
||||
to_chat(usr, "ToRban updated.")
|
||||
return 1
|
||||
diary << "ToR data update aborted: no data."
|
||||
return 0
|
||||
@@ -72,16 +73,16 @@
|
||||
var/choice = input(src,"Please select an IP address to remove from the ToR banlist:","Remove ToR ban",null) as null|anything in F.dir
|
||||
if(choice)
|
||||
F.dir.Remove(choice)
|
||||
src << "<b>Address removed</b>"
|
||||
to_chat(src, "<b>Address removed</b>")
|
||||
if("remove all")
|
||||
src << "<b>[TORFILE] was [fdel(TORFILE)?"":"not "]removed.</b>"
|
||||
to_chat(src, "<b>[TORFILE] was [fdel(TORFILE)?"":"not "]removed.</b>")
|
||||
if("find")
|
||||
var/input = input(src,"Please input an IP address to search for:","Find ToR ban",null) as null|text
|
||||
if(input)
|
||||
if(ToRban_isbanned(input))
|
||||
src << "<font color='green'><b>Address is a known ToR address</b></font>"
|
||||
to_chat(src, "<font color='green'><b>Address is a known ToR address</b></font>")
|
||||
else
|
||||
src << "<font color='red'><b>Address is not a known ToR address</b></font>"
|
||||
to_chat(src, "<font color='red'><b>Address is not a known ToR address</b></font>")
|
||||
return
|
||||
|
||||
#undef TORFILE
|
||||
|
||||
+34
-32
@@ -9,7 +9,7 @@ var/global/nologevent = 0
|
||||
log_adminwarn(msg)
|
||||
for(var/client/C in admins)
|
||||
if(R_SERVER & C.holder.rights)
|
||||
C << msg
|
||||
to_chat(C, msg)
|
||||
|
||||
/proc/msg_admin_attack(var/text) //Toggleable Attack Messages
|
||||
log_attack(text)
|
||||
@@ -20,7 +20,7 @@ var/global/nologevent = 0
|
||||
if(C.prefs.toggles & CHAT_ATTACKLOGS)
|
||||
if(!istype(C, /mob/living))
|
||||
var/msg = rendered
|
||||
C << msg
|
||||
to_chat(C, msg)
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////Panels
|
||||
@@ -31,7 +31,7 @@ var/global/nologevent = 0
|
||||
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(!check_rights(R_ADMIN|R_MOD))
|
||||
@@ -470,8 +470,8 @@ var/global/nologevent = 0
|
||||
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_chat(world, "Channelname: [src.admincaster_feed_channel.channel_name] [src.admincaster_feed_channel.author]")
|
||||
// to_chat(world, "Msg: [src.admincaster_feed_message.author] [src.admincaster_feed_message.body]")
|
||||
usr << browse(dat, "window=admincaster_main;size=400x600")
|
||||
onclose(usr, "admincaster_main")
|
||||
|
||||
@@ -546,7 +546,7 @@ var/global/nologevent = 0
|
||||
if(!check_rights(R_SERVER,0))
|
||||
message = adminscrub(message,500)
|
||||
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_chat(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!
|
||||
|
||||
@@ -572,9 +572,9 @@ var/global/nologevent = 0
|
||||
|
||||
config.looc_allowed = !(config.looc_allowed)
|
||||
if (config.looc_allowed)
|
||||
world << "<B>The LOOC channel has been globally enabled!</B>"
|
||||
to_chat(world, "<B>The LOOC channel has been globally enabled!</B>")
|
||||
else
|
||||
world << "<B>The LOOC channel has been globally disabled!</B>"
|
||||
to_chat(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!
|
||||
|
||||
@@ -588,9 +588,9 @@ var/global/nologevent = 0
|
||||
|
||||
config.dsay_allowed = !(config.dsay_allowed)
|
||||
if (config.dsay_allowed)
|
||||
world << "<B>Deadchat has been globally enabled!</B>"
|
||||
to_chat(world, "<B>Deadchat has been globally enabled!</B>")
|
||||
else
|
||||
world << "<B>Deadchat has been globally disabled!</B>"
|
||||
to_chat(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
|
||||
@@ -626,7 +626,7 @@ var/global/nologevent = 0
|
||||
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()
|
||||
@@ -639,9 +639,9 @@ var/global/nologevent = 0
|
||||
|
||||
enter_allowed = !( enter_allowed )
|
||||
if (!( enter_allowed ))
|
||||
world << "<B>New players may no longer enter the game.</B>"
|
||||
to_chat(world, "<B>New players may no longer enter the game.</B>")
|
||||
else
|
||||
world << "<B>New players may now enter the game.</B>"
|
||||
to_chat(world, "<B>New players may now enter the game.</B>")
|
||||
log_admin("[key_name(usr)] toggled new player game entering.")
|
||||
message_admins("[key_name_admin(usr)] toggled new player game entering.", 1)
|
||||
world.update_status()
|
||||
@@ -657,9 +657,9 @@ var/global/nologevent = 0
|
||||
|
||||
config.allow_ai = !( config.allow_ai )
|
||||
if (!( config.allow_ai ))
|
||||
world << "<B>The AI job is no longer chooseable.</B>"
|
||||
to_chat(world, "<B>The AI job is no longer chooseable.</B>")
|
||||
else
|
||||
world << "<B>The AI job is chooseable now.</B>"
|
||||
to_chat(world, "<B>The AI job is chooseable now.</B>")
|
||||
message_admins("[key_name_admin(usr)] toggled AI allowed.")
|
||||
log_admin("[key_name(usr)] toggled AI allowed.")
|
||||
world.update_status()
|
||||
@@ -675,9 +675,9 @@ var/global/nologevent = 0
|
||||
|
||||
abandon_allowed = !( abandon_allowed )
|
||||
if (abandon_allowed)
|
||||
world << "<B>You may now respawn.</B>"
|
||||
to_chat(world, "<B>You may now respawn.</B>")
|
||||
else
|
||||
world << "<B>You may no longer respawn :(</B>"
|
||||
to_chat(world, "<B>You may no longer respawn :(</B>")
|
||||
message_admins("[key_name_admin(usr)] toggled respawn to [abandon_allowed ? "On" : "Off"].", 1)
|
||||
log_admin("[key_name(usr)] toggled respawn to [abandon_allowed ? "On" : "Off"].")
|
||||
world.update_status()
|
||||
@@ -711,10 +711,10 @@ var/global/nologevent = 0
|
||||
return //alert("Round end delayed", null, null, null, null, null)
|
||||
going = !( going )
|
||||
if (!( going ))
|
||||
world << "<b>The game start has been delayed.</b>"
|
||||
to_chat(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_chat(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!
|
||||
|
||||
@@ -802,10 +802,10 @@ var/global/nologevent = 0
|
||||
return
|
||||
|
||||
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()
|
||||
@@ -821,9 +821,9 @@ var/global/nologevent = 0
|
||||
|
||||
guests_allowed = !( guests_allowed )
|
||||
if (!( guests_allowed ))
|
||||
world << "<B>Guests may no longer enter the game.</B>"
|
||||
to_chat(world, "<B>Guests may no longer enter the game.</B>")
|
||||
else
|
||||
world << "<B>Guests may now enter the game.</B>"
|
||||
to_chat(world, "<B>Guests may now enter the game.</B>")
|
||||
log_admin("[key_name(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.")
|
||||
message_admins("\blue [key_name_admin(usr)] toggled guests game entering [guests_allowed?"":"dis"]allowed.", 1)
|
||||
feedback_add_details("admin_verb","TGU") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -833,25 +833,27 @@ var/global/nologevent = 0
|
||||
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)]'s [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"] laws:</b>"
|
||||
to_chat(usr, "<b>CYBORG [key_name(S, usr)]'s [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independent)"] laws:</b>")
|
||||
else if (ispAI(S))
|
||||
var/mob/living/silicon/pai/P = S
|
||||
usr << "<b>pAI [key_name(S, usr)]'s laws:</b>"
|
||||
usr << "[P.pai_law0]"
|
||||
if(P.pai_laws) usr << "[P.pai_laws]"
|
||||
to_chat(usr, "<b>pAI [key_name(S, usr)]'s laws:</b>")
|
||||
to_chat(usr, "[P.pai_law0]")
|
||||
if(P.pai_laws)
|
||||
to_chat(usr, "[P.pai_laws]")
|
||||
continue // Skip showing normal silicon laws for pAIs - they don't have any
|
||||
else
|
||||
usr << "<b>SILICON [key_name(S, usr)]'s laws:</b>"
|
||||
to_chat(usr, "<b>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 AI's located.</b>" //Just so you know the thing is actually working and not just ignoring you.
|
||||
to_chat(usr, "<b>No AI's located.</b>")//Just so you know the thing is actually working and not just ignoring you.
|
||||
|
||||
|
||||
log_admin("[key_name(usr)] checked the AI laws")
|
||||
message_admins("[key_name_admin(usr)] checked the AI laws")
|
||||
@@ -932,7 +934,7 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space
|
||||
if(kick_only_afk && !C.is_afk()) //Ignore clients who are not afk
|
||||
continue
|
||||
if(message)
|
||||
C << message
|
||||
to_chat(C, message)
|
||||
kicked_client_names.Add("[C.ckey]")
|
||||
del(C)
|
||||
return kicked_client_names
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
if(!message) return
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F) return
|
||||
F << "<small>[time_stamp()] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>"
|
||||
to_chat(F, "<small>[time_stamp()] \ref[src] ([x],[y],[z])</small> || [src] [message]<br>")
|
||||
|
||||
//ADMINVERBS
|
||||
/client/proc/investigate_show( subject in list("hrefs","notes","pda","singulo","atmos","watchlist","ntsl","gold core","cult", "experimentor", "wires") )
|
||||
@@ -34,7 +34,7 @@
|
||||
if("singulo") //general one-round-only stuff
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
@@ -43,51 +43,51 @@
|
||||
if(href_logfile)
|
||||
src << browse(href_logfile,"window=investigate[subject];size=800x300")
|
||||
else
|
||||
src << "<font color='red'>Error: admin_investigate: No href logfile found.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: No href logfile found.</font>")
|
||||
return
|
||||
else
|
||||
src << "<font color='red'>Error: admin_investigate: Href Logging is not on.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: Href Logging is not on.</font>")
|
||||
return
|
||||
|
||||
if("pda") //general one-round-only stuff
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
if("cult")
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
if("atmos")
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
if("ntsl")
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
if("experimentor")
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
if("wires")
|
||||
var/F = investigate_subject2file(subject)
|
||||
if(!F)
|
||||
src << "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>"
|
||||
to_chat(src, "<font color='red'>Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed.</font>")
|
||||
return
|
||||
src << browse(F,"window=investigate[subject];size=800x300")
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/client/proc/admin_memo()
|
||||
set name = "Memo"
|
||||
set category = "Server"
|
||||
if(!check_rights(R_SERVER))
|
||||
if(!check_rights(R_SERVER))
|
||||
return
|
||||
if(!dbcon.IsConnected())
|
||||
src << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
return
|
||||
var/memotask = input(usr,"Choose task.","Memo") in list("Show","Write","Edit","Remove")
|
||||
if(!memotask)
|
||||
@@ -17,7 +17,7 @@
|
||||
if(!task)
|
||||
return
|
||||
if(!dbcon.IsConnected())
|
||||
src << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
return
|
||||
var/sql_ckey = sanitizeSQL(src.ckey)
|
||||
switch(task)
|
||||
@@ -28,7 +28,7 @@
|
||||
log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(query_memocheck.NextRow())
|
||||
src << "You already have set a memo."
|
||||
to_chat(src, "You already have set a memo.")
|
||||
return
|
||||
var/memotext = input(src,"Write your Memo","Memo") as message
|
||||
if(!memotext)
|
||||
@@ -53,7 +53,7 @@
|
||||
var/lkey = query_memolist.item[1]
|
||||
memolist += "[lkey]"
|
||||
if(!memolist.len)
|
||||
src << "No memos found in database."
|
||||
to_chat(src, "No memos found in database.")
|
||||
return
|
||||
var/target_ckey = input(src, "Select whose memo to edit", "Select memo") as null|anything in memolist
|
||||
if(!target_ckey)
|
||||
@@ -100,9 +100,9 @@
|
||||
output += "<br><span class='memoedit'>Last edit by [last_editor] <A href='?_src_=holder;memoeditlist=[ckey]'>(Click here to see edit log)</A></span>"
|
||||
output += "<br>[memotext]</span><br>"
|
||||
if(!output && !silent)
|
||||
src << "No memos found in database."
|
||||
to_chat(src, "No memos found in database.")
|
||||
return
|
||||
src << output
|
||||
to_chat(src, output)
|
||||
if("Remove")
|
||||
var/DBQuery/query_memodellist = dbcon.NewQuery("SELECT ckey FROM [format_table_name("memo")]")
|
||||
if(!query_memodellist.Execute())
|
||||
@@ -114,7 +114,7 @@
|
||||
var/ckey = query_memodellist.item[1]
|
||||
memolist += "[ckey]"
|
||||
if(!memolist.len)
|
||||
src << "No memos found in database."
|
||||
to_chat(src, "No memos found in database.")
|
||||
return
|
||||
var/target_ckey = input(src, "Select whose memo to delete", "Select memo") as null|anything in memolist
|
||||
if(!target_ckey)
|
||||
@@ -131,4 +131,3 @@
|
||||
else
|
||||
log_admin("[key_name(src)] has removed [target_sql_ckey]'s memo.")
|
||||
message_admins("[key_name_admin(src)] has removed [target_sql_ckey]'s memo.")
|
||||
|
||||
@@ -258,7 +258,7 @@ var/list/admin_verbs_proccall = list (
|
||||
remove_admin_verbs()
|
||||
verbs += /client/proc/show_verbs
|
||||
|
||||
src << "<span class='interface'>Almost all of your adminverbs have been hidden.</span>"
|
||||
to_chat(src, "<span class='interface'>Almost all of your adminverbs have been hidden.</span>")
|
||||
feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
|
||||
@@ -272,7 +272,7 @@ var/list/admin_verbs_proccall = list (
|
||||
verbs -= /client/proc/show_verbs
|
||||
add_admin_verbs()
|
||||
|
||||
src << "<span class='interface'>All of your adminverbs are now visible.</span>"
|
||||
to_chat(src, "<span class='interface'>All of your adminverbs are now visible.</span>")
|
||||
feedback_add_details("admin_verb","TAVVS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/admin_ghost()
|
||||
@@ -290,7 +290,7 @@ var/list/admin_verbs_proccall = list (
|
||||
log_admin("[key_name(usr)] re-entered their body")
|
||||
feedback_add_details("admin_verb","P") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else if(istype(mob,/mob/new_player))
|
||||
src << "<font color='red'>Error: Aghost: Can't admin-ghost whilst in the lobby. Join or observe first.</font>"
|
||||
to_chat(src, "<font color='red'>Error: Aghost: Can't admin-ghost whilst in the lobby. Join or observe first.</font>")
|
||||
else
|
||||
//ghostize
|
||||
var/mob/body = mob
|
||||
@@ -311,11 +311,11 @@ var/list/admin_verbs_proccall = list (
|
||||
if(mob)
|
||||
if(mob.invisibility == INVISIBILITY_OBSERVER)
|
||||
mob.invisibility = initial(mob.invisibility)
|
||||
mob << "<span class='danger'>Invisimin off. Invisibility reset.</span>"
|
||||
to_chat(mob, "<span class='danger'>Invisimin off. Invisibility reset.</span>")
|
||||
//TODO: Make some kind of indication for the badmin that they are currently invisible
|
||||
else
|
||||
mob.invisibility = INVISIBILITY_OBSERVER
|
||||
mob << "<span class='notice'>Invisimin on. You are now as invisible as a ghost.</span>"
|
||||
to_chat(mob, "<span class='notice'>Invisimin on. You are now as invisible as a ghost.</span>")
|
||||
|
||||
/client/proc/player_panel()
|
||||
set name = "Player Panel"
|
||||
@@ -474,7 +474,7 @@ var/list/admin_verbs_proccall = 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
|
||||
@@ -483,7 +483,7 @@ var/list/admin_verbs_proccall = list (
|
||||
else D = preferences_datums[warned_ckey]
|
||||
|
||||
if(!D)
|
||||
src << "<font color='red'>Error: warn(): No such ckey found.</font>"
|
||||
to_chat(src, "<font color='red'>Error: warn(): No such ckey found.</font>")
|
||||
return
|
||||
|
||||
if(++D.warns >= MAX_WARNS) //uh ohhhh...you'reee iiiiin trouuuubble O:)
|
||||
@@ -491,7 +491,7 @@ var/list/admin_verbs_proccall = list (
|
||||
if(C)
|
||||
message_admins("[key_name_admin(src)] has warned [key_name_admin(C)] resulting in a [AUTOBANTIME] minute ban")
|
||||
log_admin("[key_name(src)] has warned [key_name(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."
|
||||
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.")
|
||||
del(C)
|
||||
else
|
||||
message_admins("[key_name_admin(src)] has warned [warned_ckey] resulting in a [AUTOBANTIME] minute ban")
|
||||
@@ -500,7 +500,7 @@ var/list/admin_verbs_proccall = 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.")
|
||||
log_admin("[key_name(src)] has warned [key_name(C)]. They have [MAX_WARNS-D.warns] strikes remaining.")
|
||||
else
|
||||
@@ -643,10 +643,10 @@ var/list/admin_verbs_proccall = list (
|
||||
|
||||
if(air_processing_killed)
|
||||
air_processing_killed = 0
|
||||
usr << "<b>Enabled air processing.</b>"
|
||||
to_chat(usr, "<b>Enabled air processing.</b>")
|
||||
else
|
||||
air_processing_killed = 1
|
||||
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("\blue [key_name_admin(usr)] used 'kill air'.", 1)
|
||||
@@ -663,7 +663,7 @@ var/list/admin_verbs_proccall = list (
|
||||
deadmin()
|
||||
verbs += /client/proc/readmin
|
||||
deadmins += ckey
|
||||
src << "<span class='interface'>You are now a normal player.</span>"
|
||||
to_chat(src, "<span class='interface'>You are now a normal player.</span>")
|
||||
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/readmin()
|
||||
@@ -686,7 +686,7 @@ var/list/admin_verbs_proccall = list (
|
||||
else
|
||||
if(!dbcon.IsConnected())
|
||||
message_admins("Warning, MySQL database is not connected.")
|
||||
src << "Warning, MYSQL database is not connected."
|
||||
to_chat(src, "Warning, MYSQL database is not connected.")
|
||||
return
|
||||
var/sql_ckey = sanitizeSQL(ckey)
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT rank FROM [format_table_name("admin")] WHERE ckey = '[sql_ckey]'")
|
||||
@@ -697,7 +697,7 @@ var/list/admin_verbs_proccall = list (
|
||||
if(config.admin_legacy_system)
|
||||
if(admin_ranks[rank] == null)
|
||||
error("Error while re-adminning [src], admin rank ([rank]) does not exist.")
|
||||
src << "Error while re-adminning, admin rank ([rank]) does not exist."
|
||||
to_chat(src, "Error while re-adminning, admin rank ([rank]) does not exist.")
|
||||
return
|
||||
|
||||
D = new(rank, admin_ranks[rank], ckey)
|
||||
@@ -710,10 +710,10 @@ var/list/admin_verbs_proccall = list (
|
||||
var/admin_rank = query.item[2]
|
||||
var/flags = query.item[3]
|
||||
if(!admin_ckey)
|
||||
src << "Error while re-adminning, ckey [admin_ckey] was not found in the admin database."
|
||||
to_chat(src, "Error while re-adminning, ckey [admin_ckey] was not found in the admin database.")
|
||||
return
|
||||
if(admin_rank == "Removed") //This person was de-adminned. They are only in the admin list for archive purposes.
|
||||
src << "Error while re-adminning, ckey [admin_ckey] is not an admin."
|
||||
to_chat(src, "Error while re-adminning, ckey [admin_ckey] is not an admin.")
|
||||
return
|
||||
|
||||
if(istext(flags))
|
||||
@@ -728,7 +728,7 @@ var/list/admin_verbs_proccall = list (
|
||||
feedback_add_details("admin_verb","RAS")
|
||||
return
|
||||
else
|
||||
src << "You are already an admin."
|
||||
to_chat(src, "You are already an admin.")
|
||||
verbs -= /client/proc/readmin
|
||||
deadmins -= ckey
|
||||
return
|
||||
@@ -743,10 +743,10 @@ var/list/admin_verbs_proccall = list (
|
||||
if(config)
|
||||
if(config.log_hrefs)
|
||||
config.log_hrefs = 0
|
||||
src << "<b>Stopped logging hrefs</b>"
|
||||
to_chat(src, "<b>Stopped logging hrefs</b>")
|
||||
else
|
||||
config.log_hrefs = 1
|
||||
src << "<b>Started logging hrefs</b>"
|
||||
to_chat(src, "<b>Started logging hrefs</b>")
|
||||
|
||||
/client/proc/check_ai_laws()
|
||||
set name = "Check AI Laws"
|
||||
@@ -820,7 +820,7 @@ var/list/admin_verbs_proccall = list (
|
||||
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
|
||||
|
||||
switch(alert("Do you wish for [H] to be allowed to select non-whitelisted races?","Alter Mob Appearance","Yes","No","Cancel"))
|
||||
@@ -844,7 +844,7 @@ var/list/admin_verbs_proccall = 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)
|
||||
@@ -862,9 +862,9 @@ var/list/admin_verbs_proccall = list (
|
||||
prefs.toggles ^= CHAT_ATTACKLOGS
|
||||
prefs.save_preferences(src)
|
||||
if (prefs.toggles & CHAT_ATTACKLOGS)
|
||||
usr << "You now will get attack log messages"
|
||||
to_chat(usr, "You now will get attack log messages")
|
||||
else
|
||||
usr << "You now won't get attack log messages"
|
||||
to_chat(usr, "You now won't get attack log messages")
|
||||
|
||||
/client/proc/toggledrones()
|
||||
set name = "Toggle Maintenance Drones"
|
||||
@@ -887,9 +887,9 @@ var/list/admin_verbs_proccall = list (
|
||||
prefs.toggles ^= CHAT_DEBUGLOGS
|
||||
prefs.save_preferences(src)
|
||||
if (prefs.toggles & CHAT_DEBUGLOGS)
|
||||
usr << "You now will get debug log messages"
|
||||
to_chat(usr, "You now will get debug log messages")
|
||||
else
|
||||
usr << "You now won't get debug log messages"
|
||||
to_chat(usr, "You now won't get debug log messages")
|
||||
|
||||
/client/proc/man_up(mob/T as mob in mob_list)
|
||||
set category = "Admin"
|
||||
@@ -899,8 +899,8 @@ var/list/admin_verbs_proccall = list (
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
T << "<span class='notice'><b><font size=3>Man up and deal with it.</font></b></span>"
|
||||
T << "<span class='notice'>Move on.</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 on.</span>")
|
||||
|
||||
log_admin("[key_name(usr)] told [key_name(T)] to man up and deal with it.")
|
||||
message_admins("[key_name_admin(usr)] told [key_name(T)] to man up and deal with it.")
|
||||
@@ -917,7 +917,7 @@ var/list/admin_verbs_proccall = list (
|
||||
|
||||
if(confirm == "Yes")
|
||||
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 on.</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 on.</span></center><br>")
|
||||
T << 'sound/voice/ManUp1.ogg'
|
||||
|
||||
log_admin("[key_name(usr)] told everyone to man up and deal with it.")
|
||||
|
||||
@@ -32,7 +32,7 @@ DEBUG
|
||||
set name = "list all appearances"
|
||||
|
||||
for(var/s in appearance_keylist)
|
||||
world << s
|
||||
to_chat(world, s)
|
||||
|
||||
/mob/verb/reload_appearances()
|
||||
set name = "reload appearances"
|
||||
@@ -69,7 +69,7 @@ DEBUG
|
||||
|
||||
/proc/appearance_savebanfile()
|
||||
var/savefile/S=new("data/appearance_full.ban")
|
||||
S["keys[0]"] << appearance_keylist
|
||||
to_chat(S["keys[0]"], appearance_keylist)
|
||||
|
||||
/proc/appearance_unban(mob/M)
|
||||
appearance_remove("[M.ckey]")
|
||||
|
||||
@@ -40,7 +40,7 @@ DEBUG
|
||||
set name = "list all jobbans"
|
||||
|
||||
for(var/s in jobban_keylist)
|
||||
world << s
|
||||
to_chat(world, s)
|
||||
|
||||
/mob/verb/reload_jobbans()
|
||||
set name = "reload jobbans"
|
||||
@@ -92,7 +92,7 @@ DEBUG
|
||||
|
||||
/proc/jobban_savebanfile()
|
||||
var/savefile/S=new("data/job_full.ban")
|
||||
S["keys[0]"] << jobban_keylist
|
||||
to_chat(S["keys[0]"], jobban_keylist)
|
||||
|
||||
/proc/jobban_unban(mob/M, rank)
|
||||
jobban_remove("[M.ckey] - [rank]")
|
||||
|
||||
@@ -149,45 +149,45 @@
|
||||
/datum/click_intercept/buildmode/proc/show_help(mob/user)
|
||||
switch(mode)
|
||||
if(BASIC_BUILDMODE)
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
user << "<span class='notice'>Left Mouse Button = Construct / Upgrade</span>"
|
||||
user << "<span class='notice'>Right Mouse Button = Deconstruct / Delete / Downgrade</span>"
|
||||
user << "<span class='notice'>Left Mouse Button + ctrl = R-Window</span>"
|
||||
user << "<span class='notice'>Left Mouse Button + alt = Airlock</span>"
|
||||
user << ""
|
||||
user << "<span class='notice'>Use the button in the upper left corner to</span>"
|
||||
user << "<span class='notice'>change the direction of built objects.</span>"
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button = Construct / Upgrade</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button = Deconstruct / Delete / Downgrade</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button + ctrl = R-Window</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button + alt = Airlock</span>")
|
||||
to_chat(user, "")
|
||||
to_chat(user, "<span class='notice'>Use the button in the upper left corner to</span>")
|
||||
to_chat(user, "<span class='notice'>change the direction of built objects.</span>")
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
if(ADV_BUILDMODE)
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
user << "<span class='notice'>Right Mouse Button on buildmode button = Set object type</span>"
|
||||
user << "<span class='notice'>Left Mouse Button on turf/obj = Place objects</span>"
|
||||
user << "<span class='notice'>Right Mouse Button = Delete objects</span>"
|
||||
user << ""
|
||||
user << "<span class='notice'>Use the button in the upper left corner to</span>"
|
||||
user << "<span class='notice'>change the direction of built objects.</span>"
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button on buildmode button = Set object type</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button on turf/obj = Place objects</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button = Delete objects</span>")
|
||||
to_chat(user, "")
|
||||
to_chat(user, "<span class='notice'>Use the button in the upper left corner to</span>")
|
||||
to_chat(user, "<span class='notice'>change the direction of built objects.</span>")
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
if(VAR_BUILDMODE)
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
user << "<span class='notice'>Right Mouse Button on buildmode button = Select var(type) & value</span>"
|
||||
user << "<span class='notice'>Left Mouse Button on turf/obj/mob = Set var(type) & value</span>"
|
||||
user << "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset var's value</span>"
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button on buildmode button = Select var(type) & value</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button on turf/obj/mob = Set var(type) & value</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset var's value</span>")
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
if(THROW_BUILDMODE)
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
user << "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>"
|
||||
user << "<span class='notice'>Right Mouse Button on turf/obj/mob = Throw</span>"
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button on turf/obj/mob = Throw</span>")
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
if(AREA_BUILDMODE)
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
user << "<span class='notice'>Left Mouse Button on turf/obj/mob = Select corner</span>"
|
||||
user << "<span class='notice'>Right Mouse Button on buildmode button = Select generator</span>"
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button on turf/obj/mob = Select corner</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button on buildmode button = Select generator</span>")
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
if(COPY_BUILDMODE)
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
user << "<span class='notice'>Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target</span>"
|
||||
user << "<span class='notice'>Right Mouse Button on obj/mob = Select target to copy</span>"
|
||||
user << "<span class='notice'>***********************************************************</span>"
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
to_chat(user, "<span class='notice'>Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target</span>")
|
||||
to_chat(user, "<span class='notice'>Right Mouse Button on obj/mob = Select target to copy</span>")
|
||||
to_chat(user, "<span class='notice'>***********************************************************</span>")
|
||||
|
||||
/datum/click_intercept/buildmode/proc/change_settings(mob/user)
|
||||
switch(mode)
|
||||
@@ -351,13 +351,13 @@
|
||||
log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
|
||||
object.vars[varholder] = valueholder
|
||||
else
|
||||
user << "<span class='warning'>[initial(object.name)] does not have a var called '[varholder]'</span>"
|
||||
to_chat(user, "<span class='warning'>[initial(object.name)] does not have a var called '[varholder]'</span>")
|
||||
if(right_click)
|
||||
if(object.vars.Find(varholder))
|
||||
log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]")
|
||||
object.vars[varholder] = initial(object.vars[varholder])
|
||||
else
|
||||
user << "<span class='warning'>[initial(object.name)] does not have a var called '[varholder]'</span>"
|
||||
to_chat(user, "<span class='warning'>[initial(object.name)] does not have a var called '[varholder]'</span>")
|
||||
|
||||
if(THROW_BUILDMODE)
|
||||
if(left_click)
|
||||
@@ -377,7 +377,7 @@
|
||||
if(left_click) //rectangular
|
||||
if(cornerA && cornerB)
|
||||
if(!generator_path)
|
||||
user << "<span class='warning'>Select generator type first.</span>"
|
||||
to_chat(user, "<span class='warning'>Select generator type first.</span>")
|
||||
else
|
||||
var/datum/mapGenerator/G = new generator_path
|
||||
G.defineRegion(cornerA.loc,cornerB.loc,1)
|
||||
@@ -394,5 +394,5 @@
|
||||
DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T)
|
||||
else if(right_click)
|
||||
if(ismovableatom(object)) // No copying turfs for now.
|
||||
user << "<span class='notice'>[object] set as template.</span>"
|
||||
to_chat(user, "<span class='notice'>[object] set as template.</span>")
|
||||
stored = object
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
if(!check_rights(R_PERMISSIONS))
|
||||
return
|
||||
if(!dbcon.IsConnected())
|
||||
src << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
to_chat(src, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
return
|
||||
var/returned = create_poll_function()
|
||||
if(returned)
|
||||
@@ -26,7 +26,7 @@
|
||||
log_admin("[key_name(usr)] has created a new server poll. Poll Type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"] - Question: [question]")
|
||||
message_admins("[key_name_admin(usr)] has created a new server poll. Poll Type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]<br>Question: [question]")
|
||||
else
|
||||
src << "Poll question created without any options, poll will be deleted."
|
||||
to_chat(src, "Poll question created without any options, poll will be deleted.")
|
||||
var/DBQuery/query_del_poll = dbcon.NewQuery("DELETE FROM [format_table_name("poll_question")] WHERE id = [returned]")
|
||||
if(!query_del_poll.Execute())
|
||||
var/err = query_del_poll.ErrorMsg()
|
||||
@@ -63,7 +63,7 @@
|
||||
if(query_validate_time.NextRow())
|
||||
endtime = query_validate_time.item[1]
|
||||
if(!endtime)
|
||||
src << "Datetime entered is invalid."
|
||||
to_chat(src, "Datetime entered is invalid.")
|
||||
return
|
||||
var/DBQuery/query_time_later = dbcon.NewQuery("SELECT TIMESTAMP('[endtime]') < NOW()")
|
||||
if(!query_time_later.Execute())
|
||||
@@ -73,7 +73,7 @@
|
||||
if(query_time_later.NextRow())
|
||||
var/checklate = text2num(query_time_later.item[1])
|
||||
if(checklate)
|
||||
src << "Datetime entered is not later than current server time."
|
||||
to_chat(src, "Datetime entered is not later than current server time.")
|
||||
return
|
||||
var/adminonly
|
||||
switch(alert("Admin only poll?",,"Yes","No","Cancel"))
|
||||
@@ -132,7 +132,7 @@
|
||||
if(!maxval)
|
||||
return pollid
|
||||
if(minval >= maxval)
|
||||
src << "Minimum rating value can't be more than maximum rating value"
|
||||
to_chat(src, "Minimum rating value can't be more than maximum rating value")
|
||||
return pollid
|
||||
descmin = input("Optional: Set description for minimum rating","Minimum rating description") as message|null
|
||||
if(descmin)
|
||||
|
||||
@@ -47,7 +47,7 @@ generally it would be used like so:
|
||||
|
||||
proc/admin_proc()
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
world << "you have enough rights!"
|
||||
to_chat(world, "you have enough rights!")
|
||||
|
||||
NOTE: it checks usr! not src! So if you're checking somebody's rank in a proc which they did not call
|
||||
you will have to do something like if(client.holder.rights & R_ADMIN) yourself.
|
||||
@@ -60,13 +60,13 @@ you will have to do something like if(client.holder.rights & R_ADMIN) yourself.
|
||||
return 1
|
||||
else
|
||||
if(show_msg)
|
||||
user << "<font color='red'>Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].</font>"
|
||||
to_chat(user, "<font color='red'>Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].</font>")
|
||||
else
|
||||
if(user.client.holder)
|
||||
return 1
|
||||
else
|
||||
if(show_msg)
|
||||
user << "<font color='red'>Error: You are not an admin.</font>"
|
||||
to_chat(user, "<font color='red'>Error: You are not an admin.</font>")
|
||||
return 0
|
||||
|
||||
//probably a bit iffy - will hopefully figure out a better solution
|
||||
@@ -78,7 +78,7 @@ you will have to do something like if(client.holder.rights & R_ADMIN) yourself.
|
||||
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/deadmin()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
return
|
||||
|
||||
if(!istype(M))
|
||||
usr << "<span class='danger'>This can only be used on subtypes of /obj/machinery.</span>"
|
||||
to_chat(usr, "<span class='danger'>This can only be used on subtypes of /obj/machinery.</span>")
|
||||
return
|
||||
|
||||
var/new_rating = input("Enter new rating:","Num") as num
|
||||
|
||||
@@ -141,19 +141,19 @@ var/savefile/Banlistjob
|
||||
|
||||
Banlistjob.cd = "/base"
|
||||
if ( Banlistjob.dir.Find("[ckey][computerid][rank]") )
|
||||
usr << text("\red Banjob already exists.")
|
||||
to_chat(usr, text("\red Banjob already exists."))
|
||||
return 0
|
||||
else
|
||||
Banlistjob.dir.Add("[ckey][computerid][rank]")
|
||||
Banlistjob.cd = "/base/[ckey][computerid][rank]"
|
||||
Banlistjob["key"] << ckey
|
||||
Banlistjob["id"] << computerid
|
||||
Banlistjob["rank"] << rank
|
||||
Banlistjob["reason"] << reason
|
||||
Banlistjob["bannedby"] << bannedby
|
||||
Banlistjob["temp"] << temp
|
||||
to_chat(Banlistjob["key"], ckey)
|
||||
to_chat(Banlistjob["id"], computerid)
|
||||
to_chat(Banlistjob["rank"], rank)
|
||||
to_chat(Banlistjob["reason"], reason)
|
||||
to_chat(Banlistjob["bannedby"], bannedby)
|
||||
to_chat(Banlistjob["temp"], temp)
|
||||
if (temp)
|
||||
Banlistjob["minutes"] << bantimestamp
|
||||
to_chat(Banlistjob["minutes"], bantimestamp)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -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 << "\red<BIG><B>You have been banned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a permanent ban."
|
||||
to_chat(M, "\red<BIG><B>You have been banned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG>")
|
||||
to_chat(M, "\red This is a permanent ban.")
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
to_chat(M, "\red No ban appeals URL has been set.")
|
||||
log_admin("[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("\blue[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
/datum/admins/proc/timejobban(ckey, computerid, reason, bannedby, temp, minutes, rank)
|
||||
if(AddBanjob(ckey, computerid, reason, usr.ckey, 1, mins, job))
|
||||
M << "\red<BIG><B>You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a temporary ban, it will be removed in [mins] minutes."
|
||||
to_chat(M, "\red<BIG><B>You have been jobbanned from [job] by [usr.client.ckey].\nReason: [reason].</B></BIG>")
|
||||
to_chat(M, "\red This is a temporary ban, it will be removed in [mins] minutes.")
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
to_chat(M, "\red No ban appeals URL has been set.")
|
||||
log_admin("[usr.client.ckey] has jobbanned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("\blue[usr.client.ckey] has banned from [job] [ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")*/
|
||||
//////////////////////////////////// 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]."
|
||||
Banlistjob["temp"] << a
|
||||
Banlistjob["minutes"] << CMinutes + rand(1,2000)
|
||||
Banlistjob["bannedby"] << "trashmin"
|
||||
to_chat(Banlistjob["key"], last)
|
||||
to_chat(Banlistjob["id"], "trashid[i]")
|
||||
to_chat(Banlistjob["reason"], "Trashban[i].")
|
||||
to_chat(Banlistjob["temp"], a)
|
||||
to_chat(Banlistjob["minutes"], CMinutes + rand(1,2000))
|
||||
to_chat(Banlistjob["bannedby"], "trashmin")
|
||||
last = "trash[i]"
|
||||
|
||||
Banlistjob.cd = "/base"
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
establish_db_connection()
|
||||
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "\red Failed to establish database connection"
|
||||
to_chat(usr, "\red Failed to establish database connection")
|
||||
return
|
||||
|
||||
if(!adm_ckey || !new_rank)
|
||||
@@ -91,14 +91,14 @@
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("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 << "\blue New admin added."
|
||||
to_chat(usr, "\blue New admin added.")
|
||||
else
|
||||
if(!isnull(admin_id) && isnum(admin_id))
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE [format_table_name("admin")] SET rank = '[new_rank]' WHERE id = [admin_id]")
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("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 << "\blue Admin rank changed."
|
||||
to_chat(usr, "\blue Admin rank changed.")
|
||||
|
||||
/datum/admins/proc/log_admin_permission_modification(var/adm_ckey, var/new_permission)
|
||||
if(config.admin_legacy_system)
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
establish_db_connection()
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "\red Failed to establish database connection"
|
||||
to_chat(usr, "\red Failed to establish database connection")
|
||||
return
|
||||
|
||||
if(!adm_ckey || !new_permission)
|
||||
@@ -146,13 +146,13 @@
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("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 << "\blue Permission removed."
|
||||
to_chat(usr, "\blue Permission removed.")
|
||||
else //This admin doesn't have this permission, so we are adding it.
|
||||
var/DBQuery/insert_query = dbcon.NewQuery("UPDATE [format_table_name("admin")] SET flags = '[admin_rights | new_permission]' WHERE id = [admin_id]")
|
||||
insert_query.Execute()
|
||||
var/DBQuery/log_query = dbcon.NewQuery("INSERT INTO `test`.[format_table_name("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 << "\blue Permission added."
|
||||
to_chat(usr, "\blue Permission added.")
|
||||
|
||||
/datum/admins/proc/updateranktodb(ckey,newrank)
|
||||
establish_db_connection()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
if(checkrights && !check_rights(R_ADMIN|R_MOD))
|
||||
return
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
return
|
||||
if(!target_ckey)
|
||||
var/new_ckey = ckey(input(usr,"Who would you like to add a note for?","Enter a ckey",null) as text|null)
|
||||
@@ -15,7 +15,7 @@
|
||||
log_game("SQL ERROR obtaining ckey from player table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(!query_find_ckey.NextRow())
|
||||
usr << "<span class='redtext'>[new_ckey] has not been seen before, you can only add notes to known players.</span>"
|
||||
to_chat(usr, "<span class='redtext'>[new_ckey] has not been seen before, you can only add notes to known players.</span>")
|
||||
return
|
||||
else
|
||||
target_ckey = new_ckey
|
||||
@@ -53,7 +53,7 @@
|
||||
var/notetext
|
||||
var/adminckey
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
return
|
||||
if(!note_id)
|
||||
return
|
||||
@@ -80,7 +80,7 @@
|
||||
if(!check_rights(R_ADMIN|R_MOD))
|
||||
return
|
||||
if(!dbcon.IsConnected())
|
||||
usr << "<span class='danger'>Failed to establish database connection.</span>"
|
||||
to_chat(usr, "<span class='danger'>Failed to establish database connection.</span>")
|
||||
return
|
||||
if(!note_id)
|
||||
return
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return
|
||||
ckey = ckey(ckey)
|
||||
if (get_stickyban_from_ckey(ckey))
|
||||
usr << "<span class='adminnotice'>Error: Can not add a stickyban: User already has a current sticky ban</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: Can not add a stickyban: User already has a current sticky ban</span>")
|
||||
|
||||
if (data["reason"])
|
||||
ban["message"] = data["reason"]
|
||||
@@ -43,12 +43,12 @@
|
||||
|
||||
var/ban = get_stickyban_from_ckey(ckey)
|
||||
if (!ban)
|
||||
usr << "<span class='adminnotice'>Error: No sticky ban for [ckey] found!</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: No sticky ban for [ckey] found!</span>")
|
||||
return
|
||||
if (alert("Are you sure you want to remove the sticky ban on [ckey]?","Are you sure","Yes","No") == "No")
|
||||
return
|
||||
if (!get_stickyban_from_ckey(ckey))
|
||||
usr << "<span class='adminnotice'>Error: The ban disappeared.</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: The ban disappeared.</span>")
|
||||
return
|
||||
world.SetConfig("ban", ckey, null)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
var/alt = ckey(data["alt"])
|
||||
var/ban = get_stickyban_from_ckey(ckey)
|
||||
if (!ban)
|
||||
usr << "<span class='adminnotice'>Error: No sticky ban for [ckey] found!</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: No sticky ban for [ckey] found!</span>")
|
||||
return
|
||||
|
||||
var/found = 0
|
||||
@@ -75,7 +75,7 @@
|
||||
break
|
||||
|
||||
if (!found)
|
||||
usr << "<span class='adminnotice'>Error: [alt] is not linked to [ckey]'s sticky ban!</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: [alt] is not linked to [ckey]'s sticky ban!</span>")
|
||||
return
|
||||
|
||||
if (alert("Are you sure you want to disassociate [alt] from [ckey]'s sticky ban? \nNote: Nothing stops byond from re-linking them","Are you sure","Yes","No") == "No")
|
||||
@@ -84,7 +84,7 @@
|
||||
//we have to do this again incase something changes
|
||||
ban = get_stickyban_from_ckey(ckey)
|
||||
if (!ban)
|
||||
usr << "<span class='adminnotice'>Error: The ban disappeared.</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: The ban disappeared.</span>")
|
||||
return
|
||||
|
||||
found = 0
|
||||
@@ -95,7 +95,7 @@
|
||||
break
|
||||
|
||||
if (!found)
|
||||
usr << "<span class='adminnotice'>Error: [alt] link to [ckey]'s sticky ban disappeared.</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: [alt] link to [ckey]'s sticky ban disappeared.</span>")
|
||||
return
|
||||
|
||||
world.SetConfig("ban",ckey,list2stickyban(ban))
|
||||
@@ -109,7 +109,7 @@
|
||||
var/ckey = data["ckey"]
|
||||
var/ban = get_stickyban_from_ckey(ckey)
|
||||
if (!ban)
|
||||
usr << "<span class='adminnotice'>Error: No sticky ban for [ckey] found!"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: No sticky ban for [ckey] found!")
|
||||
return
|
||||
var/oldreason = ban["message"]
|
||||
var/reason = input(usr,"Reason","Reason","[ban["message"]]") as text|null
|
||||
@@ -118,7 +118,7 @@
|
||||
//we have to do this again incase something changed while we waited for input
|
||||
ban = get_stickyban_from_ckey(ckey)
|
||||
if (!ban)
|
||||
usr << "<span class='adminnotice'>Error: The ban disappeared.</span>"
|
||||
to_chat(usr, "<span class='adminnotice'>Error: The ban disappeared.</span>")
|
||||
return
|
||||
ban["message"] = "[reason]"
|
||||
|
||||
|
||||
+140
-140
@@ -19,9 +19,9 @@
|
||||
|
||||
C << 'sound/effects/adminhelp.ogg'
|
||||
|
||||
C << "<font color='red' size='4'><b>- AdminHelp Rejected! -</b></font>"
|
||||
C << "<font color='red'><b>Your admin help was rejected.</b></font>"
|
||||
C << "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking."
|
||||
to_chat(C, "<font color='red' size='4'><b>- AdminHelp Rejected! -</b></font>")
|
||||
to_chat(C, "<font color='red'><b>Your admin help was rejected.</b></font>")
|
||||
to_chat(C, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting. If you asked a question, please ensure it was clear what you were asking.")
|
||||
|
||||
message_admins("[key_name_admin(usr)] rejected [key_name_admin(C.mob)]'s admin help")
|
||||
log_admin("[key_name(usr)] rejected [key_name(C.mob)]'s admin help")
|
||||
@@ -34,35 +34,35 @@
|
||||
if("1")
|
||||
log_admin("[key_name(usr)] has spawned a traitor.")
|
||||
if(!src.makeTraitors())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("2")
|
||||
log_admin("[key_name(usr)] has spawned a changeling.")
|
||||
if(!src.makeChanglings())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("3")
|
||||
log_admin("[key_name(usr)] has spawned revolutionaries.")
|
||||
if(!src.makeRevs())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("4")
|
||||
log_admin("[key_name(usr)] has spawned a cultists.")
|
||||
if(!src.makeCult())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("5")
|
||||
log_admin("[key_name(usr)] has spawned a malf AI.")
|
||||
if(!src.makeMalfAImode())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("6")
|
||||
log_admin("[key_name(usr)] has spawned a wizard.")
|
||||
if(!src.makeWizard())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("7")
|
||||
log_admin("[key_name(usr)] has spawned vampires.")
|
||||
if(!src.makeVampires())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
if("8")
|
||||
log_admin("[key_name(usr)] has spawned vox raiders.")
|
||||
if(!src.makeVoxRaiders())
|
||||
usr << "\red Unfortunately there weren't enough candidates available."
|
||||
to_chat(usr, "\red Unfortunately there weren't enough candidates available.")
|
||||
|
||||
else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"])
|
||||
var/adminckey = href_list["dbsearchadmin"]
|
||||
@@ -102,39 +102,39 @@
|
||||
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
|
||||
if(BANTYPE_APPEARANCE)
|
||||
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_ADMIN_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_ADMIN_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
|
||||
|
||||
@@ -172,14 +172,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]
|
||||
@@ -212,7 +212,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)
|
||||
@@ -306,7 +306,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
|
||||
@@ -400,10 +400,10 @@
|
||||
ban_unban_log_save("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]")
|
||||
message_admins("\blue [key_name_admin(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]", 1)
|
||||
Banlist.cd = "/base/[banfolder]"
|
||||
Banlist["reason"] << reason
|
||||
Banlist["temp"] << temp
|
||||
Banlist["minutes"] << minutes
|
||||
Banlist["bannedby"] << usr.ckey
|
||||
to_chat(Banlist["reason"], reason)
|
||||
to_chat(Banlist["temp"], temp)
|
||||
to_chat(Banlist["minutes"], minutes)
|
||||
to_chat(Banlist["bannedby"], usr.ckey)
|
||||
Banlist.cd = "/base"
|
||||
feedback_inc("ban_edit",1)
|
||||
unbanpanel()
|
||||
@@ -415,16 +415,16 @@
|
||||
return
|
||||
var/mob/M = locate(href_list["appearanceban"])
|
||||
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
|
||||
|
||||
var/banreason = appearance_isbanned(M)
|
||||
if(banreason)
|
||||
/* 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 */
|
||||
switch(alert("Reason: '[banreason]' Remove appearance ban?","Please Confirm","Yes","No"))
|
||||
@@ -435,7 +435,7 @@
|
||||
DB_ban_unban(M.ckey, BANTYPE_APPEARANCE)
|
||||
appearance_unban(M)
|
||||
message_admins("\blue [key_name_admin(usr)] removed [key_name_admin(M)]'s appearance ban", 1)
|
||||
M << "\red<BIG><B>[usr.client.ckey] has removed your appearance ban.</B></BIG>"
|
||||
to_chat(M, "\red<BIG><B>[usr.client.ckey] has removed your appearance ban.</B></BIG>")
|
||||
|
||||
else switch(alert("Appearance ban [M.ckey]?",,"Yes","No", "Cancel"))
|
||||
if("Yes")
|
||||
@@ -449,13 +449,13 @@
|
||||
appearance_fullban(M, "[reason]; By [usr.ckey] on [time2text(world.realtime)]")
|
||||
add_note(M.ckey, "Appearance banned - [reason]", null, usr, 0)
|
||||
message_admins("\blue [key_name_admin(usr)] appearance banned [key_name_admin(M)]", 1)
|
||||
M << "\red<BIG><B>You have been appearance banned by [usr.client.ckey].</B></BIG>"
|
||||
M << "\red <B>The reason is: [reason]</B>"
|
||||
M << "\red Appearance ban can be lifted only upon request."
|
||||
to_chat(M, "\red<BIG><B>You have been appearance banned by [usr.client.ckey].</B></BIG>")
|
||||
to_chat(M, "\red <B>The reason is: [reason]</B>")
|
||||
to_chat(M, "\red Appearance ban can be lifted only upon request.")
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
to_chat(M, "\red No ban appeals URL has been set.")
|
||||
if("No")
|
||||
return
|
||||
|
||||
@@ -464,14 +464,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 = ""
|
||||
@@ -795,7 +795,7 @@
|
||||
|
||||
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
|
||||
@@ -804,7 +804,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.
|
||||
@@ -873,7 +873,7 @@
|
||||
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
|
||||
if("Yes")
|
||||
if(config.ban_legacy_system)
|
||||
usr << "\red Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban."
|
||||
to_chat(usr, "\red Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.")
|
||||
return
|
||||
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
|
||||
if(!mins)
|
||||
@@ -896,9 +896,9 @@
|
||||
msg += ", [job]"
|
||||
add_note(M.ckey, "Banned from [msg] - [reason]", null, usr, 0)
|
||||
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes", 1)
|
||||
M << "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>"
|
||||
M << "\red <B>The reason is: [reason]</B>"
|
||||
M << "\red This jobban will be lifted in [mins] minutes."
|
||||
to_chat(M, "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>")
|
||||
to_chat(M, "\red <B>The reason is: [reason]</B>")
|
||||
to_chat(M, "\red This jobban will be lifted in [mins] minutes.")
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
if("No")
|
||||
@@ -916,9 +916,9 @@
|
||||
else msg += ", [job]"
|
||||
add_note(M.ckey, "Banned from [msg] - [reason]", null, usr, 0)
|
||||
message_admins("\blue [key_name_admin(usr)] banned [key_name_admin(M)] from [msg]", 1)
|
||||
M << "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>"
|
||||
M << "\red <B>The reason is: [reason]</B>"
|
||||
M << "\red Jobban can be lifted only upon request."
|
||||
to_chat(M, "\red<BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG>")
|
||||
to_chat(M, "\red <B>The reason is: [reason]</B>")
|
||||
to_chat(M, "\red Jobban can be lifted only upon request.")
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
if("Cancel")
|
||||
@@ -928,7 +928,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
|
||||
@@ -949,7 +949,7 @@
|
||||
continue
|
||||
if(msg)
|
||||
message_admins("\blue [key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]", 1)
|
||||
M << "\red<BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG>"
|
||||
to_chat(M, "\red<BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG>")
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
return 0 //we didn't do anything!
|
||||
@@ -959,7 +959,7 @@
|
||||
if (ismob(M))
|
||||
if(!check_if_greater_rights_than(M.client))
|
||||
return
|
||||
M << "\red You have been kicked from the server"
|
||||
to_chat(M, "\red You have been kicked from the server")
|
||||
log_admin("[key_name(usr)] booted [key_name(M)].")
|
||||
message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1)
|
||||
//M.client = null
|
||||
@@ -1043,15 +1043,15 @@
|
||||
return
|
||||
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.")
|
||||
M << "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a temporary ban, it will be removed in [mins] minutes."
|
||||
to_chat(M, "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>")
|
||||
to_chat(M, "\red This is a temporary ban, it will be removed in [mins] minutes.")
|
||||
feedback_inc("ban_tmp",1)
|
||||
DB_ban_record(BANTYPE_TEMP, M, mins, reason)
|
||||
feedback_inc("ban_tmp_mins",mins)
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
to_chat(M, "\red No ban appeals URL has been set.")
|
||||
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
message_admins("\blue [key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
|
||||
|
||||
@@ -1067,12 +1067,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 << "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>"
|
||||
M << "\red This is a permanent ban."
|
||||
to_chat(M, "\red<BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG>")
|
||||
to_chat(M, "\red This is a permanent ban.")
|
||||
if(config.banappeals)
|
||||
M << "\red To try to resolve this matter head to [config.banappeals]"
|
||||
to_chat(M, "\red To try to resolve this matter head to [config.banappeals]")
|
||||
else
|
||||
M << "\red No ban appeals URL has been set."
|
||||
to_chat(M, "\red No ban appeals URL has been set.")
|
||||
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
|
||||
log_admin("[key_name(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
message_admins("\blue[key_name_admin(usr)] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
|
||||
@@ -1178,7 +1178,7 @@
|
||||
master_mode = href_list["c_mode2"]
|
||||
log_admin("[key_name(usr)] set the mode as [master_mode].")
|
||||
message_admins("\blue [key_name_admin(usr)] set the mode as [master_mode].", 1)
|
||||
world << "\blue <b>The mode is now: [master_mode]</b>"
|
||||
to_chat(world, "\blue <b>The mode is now: [master_mode]</b>")
|
||||
Game() // updates the main game menu
|
||||
world.save_mode(master_mode)
|
||||
.(href, list("c_mode"=1))
|
||||
@@ -1201,7 +1201,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)]")
|
||||
@@ -1214,7 +1214,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)]")
|
||||
@@ -1226,7 +1226,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
|
||||
@@ -1243,10 +1243,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)
|
||||
@@ -1276,7 +1276,7 @@
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
|
||||
|
||||
M << "\red You have been sent to the prison station!"
|
||||
to_chat(M, "\red You have been sent to the prison station!")
|
||||
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
|
||||
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
|
||||
|
||||
@@ -1287,11 +1287,11 @@
|
||||
var/mob/M = locate(href_list["sendbacktolobby"])
|
||||
|
||||
if(!isobserver(M))
|
||||
usr << "<span class='notice'>You can only send ghost players back to the Lobby.</span>"
|
||||
to_chat(usr, "<span class='notice'>You can only send ghost players back to the Lobby.</span>")
|
||||
return
|
||||
|
||||
if(!M.client)
|
||||
usr << "<span class='warning'>[M] doesn't seem to have an active client.</span>"
|
||||
to_chat(usr, "<span class='warning'>[M] doesn't seem to have an active client.</span>")
|
||||
return
|
||||
|
||||
if(alert(usr, "Send [key_name(M)] back to Lobby?", "Message", "Yes", "No") != "Yes")
|
||||
@@ -1312,10 +1312,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)
|
||||
@@ -1329,7 +1329,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdome1)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
to_chat(M, "\blue You have been sent to the Thunderdome.")
|
||||
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)
|
||||
|
||||
@@ -1341,10 +1341,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)
|
||||
@@ -1358,7 +1358,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdome2)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
to_chat(M, "\blue You have been sent to the Thunderdome.")
|
||||
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)
|
||||
|
||||
@@ -1370,17 +1370,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 << "\blue You have been sent to the Thunderdome."
|
||||
to_chat(M, "\blue You have been sent to the Thunderdome.")
|
||||
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)
|
||||
|
||||
@@ -1392,10 +1392,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)
|
||||
@@ -1413,7 +1413,7 @@
|
||||
sleep(5)
|
||||
M.loc = pick(tdomeobserve)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the Thunderdome."
|
||||
to_chat(M, "\blue You have been sent to the Thunderdome.")
|
||||
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)
|
||||
|
||||
@@ -1425,17 +1425,17 @@
|
||||
|
||||
var/mob/M = locate(href_list["aroomwarp"])
|
||||
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(aroomwarp)
|
||||
spawn(50)
|
||||
M << "\blue You have been sent to the <b>Admin Room!</b>."
|
||||
to_chat(M, "\blue You have been sent to the <b>Admin Room!</b>.")
|
||||
log_admin("[key_name(usr)] has sent [key_name(M)] to the Admin Room")
|
||||
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the Admin Room", 1)
|
||||
|
||||
@@ -1445,7 +1445,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
|
||||
|
||||
L.revive()
|
||||
@@ -1457,7 +1457,7 @@
|
||||
|
||||
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("\red Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!", 1)
|
||||
@@ -1478,7 +1478,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)
|
||||
@@ -1488,7 +1488,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["makeslime"])
|
||||
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_slimeize(H)
|
||||
@@ -1498,7 +1498,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["makesuper"])
|
||||
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_super(H)
|
||||
@@ -1508,7 +1508,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)
|
||||
@@ -1518,7 +1518,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)
|
||||
@@ -1528,7 +1528,7 @@
|
||||
|
||||
var/mob/dead/observer/G = locate(href_list["incarn_ghost"])
|
||||
if(!istype(G))
|
||||
usr << "This will only work on /mob/dead/observer"
|
||||
to_chat(usr, "This will only work on /mob/dead/observer")
|
||||
log_admin("[key_name(G)] was incarnated by [key_name(src.owner)]")
|
||||
message_admins("[key_name_admin(G)] was incarnated by [key_name_admin(src.owner)]")
|
||||
G.incarnate_ghost()
|
||||
@@ -1538,7 +1538,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"])
|
||||
//testing("togmutate([href_list["block"]] -> [block])")
|
||||
@@ -1594,7 +1594,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 = ""
|
||||
@@ -1634,19 +1634,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>) (<A HREF='?src=\ref[src];adminplayerobservefollow=\ref[M]'>FLW</A>) (<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>) (<A HREF='?src=\ref[src];adminplayerobservefollow=\ref[M]'>FLW</A>) (<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A>)")
|
||||
|
||||
else if(href_list["adminspawncookie"])
|
||||
if(!check_rights(R_ADMIN|R_EVENT)) 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 )
|
||||
@@ -1663,28 +1663,28 @@
|
||||
log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
|
||||
message_admins("[key_name_admin(H)] got their cookie, spawned by [key_name_admin(src.owner)]")
|
||||
feedback_inc("admin_cookies_spawned",1)
|
||||
H << "\blue Your prayers have been answered!! You received the <b>best cookie</b>!"
|
||||
to_chat(H, "\blue Your prayers have been answered!! You received the <b>best cookie</b>!")
|
||||
|
||||
else if(href_list["BlueSpaceArtillery"])
|
||||
if(!check_rights(R_ADMIN|R_EVENT)) return
|
||||
|
||||
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 Bluespace Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
|
||||
return
|
||||
|
||||
if(BSACooldown)
|
||||
src.owner << "Standby. Reload cycle in progress. Gunnery crews ready in five seconds!"
|
||||
to_chat(src.owner, "Standby. Reload cycle in progress. Gunnery crews ready in five seconds!")
|
||||
return
|
||||
|
||||
BSACooldown = 1
|
||||
spawn(50)
|
||||
BSACooldown = 0
|
||||
|
||||
M << "You've been hit by bluespace artillery!"
|
||||
to_chat(M, "You've been hit by bluespace artillery!")
|
||||
log_admin("[key_name(M)] has been hit by Bluespace Artillery fired by [key_name(src.owner)]")
|
||||
message_admins("[key_name_admin(M)] has been hit by Bluespace Artillery fired by [key_name_admin(src.owner)]")
|
||||
|
||||
@@ -1714,19 +1714,19 @@
|
||||
|
||||
var/mob/living/carbon/human/H = locate(href_list["CentcommReply"])
|
||||
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 = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from Centcomm", "")
|
||||
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("[key_name(src.owner)] replied to [key_name(H)]'s Centcomm message with the message [input].")
|
||||
message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)]'s Centcom message with: \"[input]\"")
|
||||
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows. [input]. 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 Central Command. Message as follows. [input]. Message ends.\"")
|
||||
|
||||
else if(href_list["SyndicateReply"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -1734,37 +1734,37 @@
|
||||
|
||||
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(H.stat != 0)
|
||||
usr << "The person you are trying to contact is not conscious."
|
||||
to_chat(usr, "The person you are trying to contact is not conscious.")
|
||||
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 = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from The Syndicate", "")
|
||||
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 Syndicate 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. [input]. 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. [input]. Message ends.\"")
|
||||
|
||||
else if(href_list["HONKReply"])
|
||||
var/mob/living/carbon/human/H = locate(href_list["HONKReply"])
|
||||
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 = input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from HONKplanet", "")
|
||||
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 HONKplanet 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 HONKbrothers. Message as follows, HONK. [input]. Message ends, HONK.\""
|
||||
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 HONKbrothers. Message as follows, HONK. [input]. Message ends, HONK.\"")
|
||||
|
||||
else if(href_list["ErtReply"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -1773,21 +1773,21 @@
|
||||
if(alert(src.owner, "Accept or Deny ERT request?", "CentComm Response", "Accept", "Deny") == "Deny")
|
||||
var/mob/living/carbon/human/H = locate(href_list["ErtReply"])
|
||||
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(H.stat != 0)
|
||||
usr << "The person you are trying to contact is not conscious."
|
||||
to_chat(usr, "The person you are trying to contact is not conscious.")
|
||||
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 = input(src.owner, "Please enter a reason for denying [key_name(H)]'s ERT request.","Outgoing message from CentComm", "")
|
||||
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] denied [key_name(H)]'s ERT request with the message [input].")
|
||||
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Your ERT request has been denied for the following reasons: [input]. Message ends.\""
|
||||
to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Your ERT request has been denied for the following reasons: [input]. Message ends.\"")
|
||||
else
|
||||
src.owner.response_team()
|
||||
|
||||
@@ -1815,7 +1815,7 @@
|
||||
|
||||
usr << browse(data, "window=[B.name]")
|
||||
else
|
||||
usr << "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]"
|
||||
to_chat(usr, "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]")
|
||||
|
||||
else if (href_list["AdminFaxViewPage"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
@@ -1947,14 +1947,14 @@
|
||||
|
||||
if(destination != "All Departments")
|
||||
if(!fax.receivefax(P))
|
||||
src.owner << "\red Message transmission failed."
|
||||
to_chat(src.owner, "\red Message transmission failed.")
|
||||
return
|
||||
else
|
||||
for(var/obj/machinery/photocopier/faxmachine/F in allfaxes)
|
||||
if((F.z in config.station_levels))
|
||||
spawn(0)
|
||||
if(!F.receivefax(P))
|
||||
src.owner << "\red Message transmission to [F.department] failed."
|
||||
to_chat(src.owner, "\red Message transmission to [F.department] failed.")
|
||||
|
||||
var/datum/fax/admin/A = new /datum/fax/admin()
|
||||
A.name = P.name
|
||||
@@ -1969,11 +1969,11 @@
|
||||
A.sent_by = usr
|
||||
A.sent_at = world.time
|
||||
|
||||
src.owner << "\blue Message transmitted successfully."
|
||||
to_chat(src.owner, "\blue Message transmitted successfully.")
|
||||
if(notify == "Yes")
|
||||
var/mob/living/carbon/human/H = sender
|
||||
if(istype(H) && H.stat == CONSCIOUS && (istype(H.l_ear, /obj/item/device/radio/headset) || istype(H.r_ear, /obj/item/device/radio/headset)))
|
||||
sender << "Your headset pings, notifying you that a reply to your fax has arrived."
|
||||
to_chat(sender, "Your headset pings, notifying you that a reply to your fax has arrived.")
|
||||
if(sender)
|
||||
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]")
|
||||
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)] (<a href='?_src_=holder;AdminFaxView=\ref[P]'>VIEW</a>).", 1)
|
||||
@@ -2028,7 +2028,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)
|
||||
|
||||
@@ -2097,7 +2097,7 @@
|
||||
switch(where)
|
||||
if("inhand")
|
||||
if (!iscarbon(usr) && !isrobot(usr))
|
||||
usr << "Can only spawn in hand when you're a carbon mob or cyborg."
|
||||
to_chat(usr, "Can only spawn in hand when you're a carbon mob or cyborg.")
|
||||
where = "onfloor"
|
||||
target = usr
|
||||
|
||||
@@ -2109,10 +2109,10 @@
|
||||
target = locate(loc.x + X,loc.y + Y,loc.z + Z)
|
||||
if("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
|
||||
else
|
||||
target = marked_datum
|
||||
@@ -2176,7 +2176,7 @@
|
||||
message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]")
|
||||
log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]")
|
||||
else
|
||||
usr << "You may only use this when the game is running."
|
||||
to_chat(usr, "You may only use this when the game is running.")
|
||||
|
||||
else if(href_list["memoeditlist"])
|
||||
if(!check_rights(R_SERVER)) return
|
||||
@@ -2254,7 +2254,7 @@
|
||||
feedback_add_details("admin_secrets_fun_used","TriAI")
|
||||
if("gravity")
|
||||
if(!(ticker && ticker.mode))
|
||||
usr << "Please wait until the game starts! Not sure how it will work otherwise."
|
||||
to_chat(usr, "Please wait until the game starts! Not sure how it will work otherwise.")
|
||||
return
|
||||
gravity_is_on = !gravity_is_on
|
||||
for(var/area/A in world)
|
||||
@@ -2416,11 +2416,11 @@
|
||||
M.show_message(text("\blue The chilling wind suddenly stops..."), 1)
|
||||
/* if("shockwave")
|
||||
ok = 1
|
||||
world << "\red <B><big>ALERT: STATION STRESS CRITICAL</big></B>"
|
||||
to_chat(world, "\red <B><big>ALERT: STATION STRESS CRITICAL</big></B>")
|
||||
sleep(60)
|
||||
world << "\red <B><big>ALERT: STATION STRESS CRITICAL. TOLERABLE LEVELS EXCEEDED!</big></B>"
|
||||
to_chat(world, "\red <B><big>ALERT: STATION STRESS CRITICAL. TOLERABLE LEVELS EXCEEDED!</big></B>")
|
||||
sleep(80)
|
||||
world << "\red <B><big>ALERT: STATION STRUCTURAL STRESS CRITICAL. SAFETY MECHANISMS FAILED!</big></B>"
|
||||
to_chat(world, "\red <B><big>ALERT: STATION STRUCTURAL STRESS CRITICAL. SAFETY MECHANISMS FAILED!</big></B>")
|
||||
sleep(40)
|
||||
for(var/mob/M in world)
|
||||
shake_camera(M, 400, 1)
|
||||
@@ -2474,7 +2474,7 @@
|
||||
message_admins("[key_name_admin(usr)] fixed all lights", 1)
|
||||
if("floorlava")
|
||||
if(floorIsLava)
|
||||
usr << "The floor is lava already."
|
||||
to_chat(usr, "The floor is lava already.")
|
||||
return
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","LF")
|
||||
@@ -2531,7 +2531,7 @@
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","RET")
|
||||
for(var/mob/living/carbon/human/H in player_list)
|
||||
H << "\red <B>You suddenly feel stupid.</B>"
|
||||
to_chat(H, "\red <B>You suddenly feel stupid.</B>")
|
||||
H.setBrainLoss(60)
|
||||
message_admins("[key_name_admin(usr)] made everybody retarded")
|
||||
if("fakeguns")
|
||||
@@ -2552,7 +2552,7 @@
|
||||
W.item_state = "w_suit"
|
||||
W.item_color = "schoolgirl"
|
||||
message_admins("[key_name_admin(usr)] activated Japanese Animes mode")
|
||||
world << sound('sound/AI/animes.ogg')
|
||||
to_chat(world, sound('sound/AI/animes.ogg'))
|
||||
if("eagles")//SCRAW
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","EgL")
|
||||
@@ -2658,7 +2658,7 @@
|
||||
if(usr)
|
||||
log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
|
||||
if (ok)
|
||||
world << text("<B>A secret has been activated by []!</B>", usr.key)
|
||||
to_chat(world, text("<B>A secret has been activated by []!</B>", usr.key))
|
||||
|
||||
else if(href_list["secretsadmin"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
@@ -2735,7 +2735,7 @@
|
||||
if (usr)
|
||||
log_admin("[key_name(usr)] used secret [href_list["secretsadmin"]]")
|
||||
if (ok)
|
||||
world << text("<B>A secret has been activated by []!</B>", usr.key)
|
||||
to_chat(world, text("<B>A secret has been activated by []!</B>", usr.key))
|
||||
|
||||
else if(href_list["secretscoder"])
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
@@ -31,6 +31,6 @@
|
||||
if(text)
|
||||
var/F = file("broken_hand_icons.txt")
|
||||
fdel(F)
|
||||
F << text
|
||||
world << "Completed and written to [F]"
|
||||
to_chat(F, text)
|
||||
to_chat(world, "Completed and written to [F]")
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(!query_text || length(query_text) < 1)
|
||||
return
|
||||
|
||||
//world << query_text
|
||||
// to_chat(world, query_text)
|
||||
|
||||
var/list/query_list = SDQL2_tokenize(query_text)
|
||||
|
||||
@@ -147,8 +147,8 @@
|
||||
for(var/v in vals)
|
||||
d.vars[v] = vals[v]
|
||||
catch(var/exception/e)
|
||||
usr << "<span class='warning'>A runtime error has occured during the execution of your query and your query has been aborted.</span>"
|
||||
usr << "[e]"
|
||||
to_chat(usr, "<span class='warning'>A runtime error has occured during the execution of your query and your query has been aborted.</span>")
|
||||
to_chat(usr, "[e]")
|
||||
|
||||
/proc/SDQL_parse(list/query_list)
|
||||
var/datum/SDQL_parser/parser = new()
|
||||
@@ -174,7 +174,7 @@
|
||||
querys[querys_pos] = parsed_tree
|
||||
querys_pos++
|
||||
else //There was an error so don't run anything, and tell the user which query has errored.
|
||||
usr << "<span class='danger'>Parsing error on [querys_pos]\th query. Nothing was executed.</span>"
|
||||
to_chat(usr, "<span class='danger'>Parsing error on [querys_pos]\th query. Nothing was executed.</span>")
|
||||
return list()
|
||||
query_tree = list()
|
||||
do_parse = 0
|
||||
@@ -195,22 +195,22 @@
|
||||
|
||||
for(var/item in query_tree)
|
||||
if(istype(item, /list))
|
||||
usr << "[spaces]("
|
||||
to_chat(usr, "[spaces](")
|
||||
SDQL_testout(item, indent + 1)
|
||||
usr << "[spaces])"
|
||||
to_chat(usr, "[spaces])")
|
||||
|
||||
else
|
||||
usr << "[spaces][item]"
|
||||
to_chat(usr, "[spaces][item]")
|
||||
|
||||
if(!isnum(item) && query_tree[item])
|
||||
|
||||
if(istype(query_tree[item], /list))
|
||||
usr << "[spaces] ("
|
||||
to_chat(usr, "[spaces] (")
|
||||
SDQL_testout(query_tree[item], indent + 2)
|
||||
usr << "[spaces] )"
|
||||
to_chat(usr, "[spaces] )")
|
||||
|
||||
else
|
||||
usr << "[spaces] [query_tree[item]]"
|
||||
to_chat(usr, "[spaces] [query_tree[item]]")
|
||||
|
||||
/proc/SDQL_from_objs(list/tree)
|
||||
if("world" in tree)
|
||||
@@ -320,7 +320,7 @@
|
||||
if("or", "||")
|
||||
result = (result || val)
|
||||
else
|
||||
usr << "<span class='danger'>SDQL2: Unknown op [op]</span>"
|
||||
to_chat(usr, "<span class='danger'>SDQL2: Unknown op [op]</span>")
|
||||
result = null
|
||||
else
|
||||
result = val
|
||||
@@ -388,11 +388,11 @@
|
||||
return null
|
||||
else if(expression[start] == "\[" && start < expression.len)
|
||||
if(lowertext(copytext(expression[start + 1], 1, 3)) != "0x")
|
||||
usr << "<span class='danger'>Invalid ref syntax: [expression[start + 1]]</span>"
|
||||
to_chat(usr, "<span class='danger'>Invalid ref syntax: [expression[start + 1]]</span>")
|
||||
return null
|
||||
v = locate("\[[expression[start + 1]]\]")
|
||||
if(!v)
|
||||
usr << "<span class='danger'>Invalid ref: [expression[start + 1]]</span>"
|
||||
to_chat(usr, "<span class='danger'>Invalid ref: [expression[start + 1]]</span>")
|
||||
return null
|
||||
start++
|
||||
else
|
||||
@@ -448,7 +448,7 @@
|
||||
|
||||
else if(char == "'")
|
||||
if(word != "")
|
||||
usr << "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again.</span>"
|
||||
to_chat(usr, "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unexpected ' in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again.</span>")
|
||||
return null
|
||||
|
||||
word = "'"
|
||||
@@ -468,7 +468,7 @@
|
||||
word += char
|
||||
|
||||
if(i > len)
|
||||
usr << "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again.</span>"
|
||||
to_chat(usr, "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unmatched ' in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again.</span>")
|
||||
return null
|
||||
|
||||
query_list += "[word]'"
|
||||
@@ -476,7 +476,7 @@
|
||||
|
||||
else if(char == "\"")
|
||||
if(word != "")
|
||||
usr << "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again.</span>"
|
||||
to_chat(usr, "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unexpected \" in query: \"<font color=gray>[query_text]</font>\" following \"<font color=gray>[word]</font>\". Please check your syntax, and try again.</span>")
|
||||
return null
|
||||
|
||||
word = "\""
|
||||
@@ -496,7 +496,7 @@
|
||||
word += char
|
||||
|
||||
if(i > len)
|
||||
usr << "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again.</span>"
|
||||
to_chat(usr, "<span class='danger'>SDQL2: You have an error in your SDQL syntax, unmatched \" in query: \"<font color=gray>[query_text]</font>\". Please check your syntax, and try again.</span>")
|
||||
return null
|
||||
|
||||
query_list += "[word]\""
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
/datum/SDQL_parser/proc/parse_error(error_message)
|
||||
error = 1
|
||||
usr << "<span class='danger'>SQDL2 Parsing Error: [error_message]</span>"
|
||||
to_chat(usr, "<span class='danger'>SQDL2 Parsing Error: [error_message]</span>")
|
||||
return query.len + 1
|
||||
|
||||
/datum/SDQL_parser/proc/parse()
|
||||
|
||||
@@ -9,7 +9,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
|
||||
//handle muting and automuting
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
src << "<font color='red'>Error: Admin-PM: You cannot send adminhelps (Muted).</font>"
|
||||
to_chat(src, "<font color='red'>Error: Admin-PM: You cannot send adminhelps (Muted).</font>")
|
||||
return
|
||||
|
||||
adminhelped = 1 //Determines if they get the message to reply by clicking the name.
|
||||
@@ -113,16 +113,16 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey","
|
||||
for(var/client/X in mentorholders + modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
to_chat(X, msg)
|
||||
if("Adminhelp")
|
||||
msg = "<span class='adminhelp'>[selected_type]: </span><span class='boldnotice'>[key_name(src, 1, 1, selected_type)] (<A HREF='?_src_=holder;adminmoreinfo=[ref_mob]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=[ref_mob]'>PP</A>) (<A HREF='?_src_=vars;Vars=[ref_mob]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=[ref_mob]'>SM</A>) ([admin_jump_link(mob, "holder")]) (<A HREF='?_src_=holder;check_antagonist=1'>CA</A>) (<A HREF='?_src_=holder;rejectadminhelp=[ref_client]'>REJT</A>) [ai_found ? " (<A HREF='?_src_=holder;adminchecklaws=[ref_mob]'>CL</A>)" : ""]:</span> <span class='adminhelp'>[msg]</span>"
|
||||
for(var/client/X in modholders + adminholders)
|
||||
if(X.prefs.sound & SOUND_ADMINHELP)
|
||||
X << 'sound/effects/adminhelp.ogg'
|
||||
X << msg
|
||||
to_chat(X, msg)
|
||||
|
||||
//show it to the person adminhelping too
|
||||
src << "<span class='boldnotice'>[selected_type]</b>: [original_msg]</span>"
|
||||
to_chat(src, "<span class='boldnotice'>[selected_type]</b>: [original_msg]</span>")
|
||||
|
||||
var/admin_number_present = adminholders.len - admin_number_afk
|
||||
log_admin("[selected_type]: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins.")
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
var/turf/T = pick_n_take(turfs)
|
||||
if(!T)
|
||||
src << "Nowhere to jump to!"
|
||||
to_chat(src, "Nowhere to jump to!")
|
||||
return
|
||||
|
||||
admin_forcemove(usr, T)
|
||||
@@ -56,7 +56,7 @@
|
||||
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
admin_forcemove(A, M.loc)
|
||||
else
|
||||
A << "This mob is not located in the game world."
|
||||
to_chat(A, "This mob is not located in the game world.")
|
||||
|
||||
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
|
||||
set category = "Admin"
|
||||
@@ -85,7 +85,7 @@
|
||||
keys += M.client
|
||||
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortKey(keys)
|
||||
if(!selection)
|
||||
src << "No keys found."
|
||||
to_chat(src, "No keys found.")
|
||||
return
|
||||
var/mob/M = selection:mob
|
||||
log_admin("[key_name(usr)] jumped to [key_name(M)]")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
set category = null
|
||||
set name = "Admin PM Mob"
|
||||
if(!holder)
|
||||
src << "<font color='red'>Error: Admin-PM-Context: Only administrators may use this command.</font>"
|
||||
to_chat(src, "<font color='red'>Error: Admin-PM-Context: Only administrators may use this command.</font>")
|
||||
return
|
||||
if( !ismob(M) || !M.client ) return
|
||||
cmd_admin_pm(M.client,null)
|
||||
@@ -14,7 +14,7 @@
|
||||
set category = "Admin"
|
||||
set name = "Admin PM Name"
|
||||
if(!holder)
|
||||
src << "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>"
|
||||
to_chat(src, "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>")
|
||||
return
|
||||
var/list/client/targets[0]
|
||||
for(var/client/T)
|
||||
@@ -37,7 +37,7 @@
|
||||
set category = "Admin"
|
||||
set name = "Admin PM Key"
|
||||
if(!holder)
|
||||
src << "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>"
|
||||
to_chat(src, "<font color='red'>Error: Admin-PM-Panel: Only administrators may use this command.</font>")
|
||||
return
|
||||
var/list/client/targets[0]
|
||||
for(var/client/T)
|
||||
@@ -60,7 +60,7 @@
|
||||
//Fetching a message if needed. src is the sender and C is the target client
|
||||
/client/proc/cmd_admin_pm(whom, msg, type = "PM")
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
src << "<font color='red'>Error: Private-Message: You are unable to use PM-s (muted).</font>"
|
||||
to_chat(src, "<font color='red'>Error: Private-Message: You are unable to use PM-s (muted).</font>")
|
||||
return
|
||||
|
||||
var/client/C
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
if(!C)
|
||||
if(holder)
|
||||
src << "<span class='danger'>Error: Private-Message: Client not found.</span>"
|
||||
to_chat(src, "<span class='danger'>Error: Private-Message: Client not found.</span>")
|
||||
else
|
||||
adminhelp(msg) //admin we are replying to left. adminhelp instead
|
||||
return
|
||||
@@ -81,7 +81,7 @@
|
||||
/*if(C && C.last_pm_recieved + config.simultaneous_pm_warning_timeout > world.time && holder)
|
||||
//send a warning to admins, but have a delay popup for mods
|
||||
if(holder.rights & R_ADMIN)
|
||||
src << "\red <b>Simultaneous PMs warning:</b> that player has been PM'd in the last [config.simultaneous_pm_warning_timeout / 10] seconds by: [C.ckey_last_pm]"
|
||||
to_chat(src, "\red <b>Simultaneous PMs warning:</b> that player has been PM'd in the last [config.simultaneous_pm_warning_timeout / 10] seconds by: [C.ckey_last_pm]")
|
||||
else
|
||||
if(alert("That player has been PM'd in the last [config.simultaneous_pm_warning_timeout / 10] seconds by: [C.ckey_last_pm]","Simultaneous PMs warning","Continue","Cancel") == "Cancel")
|
||||
return*/
|
||||
@@ -94,7 +94,7 @@
|
||||
return
|
||||
if(!C)
|
||||
if(holder)
|
||||
src << "<span class='danger'>Error: Admin-PM: Client not found.</span>"
|
||||
to_chat(src, "<span class='danger'>Error: Admin-PM: Client not found.</span>")
|
||||
else
|
||||
adminhelp(msg) //admin we are replying to has vanished, adminhelp instead
|
||||
return
|
||||
@@ -125,7 +125,7 @@
|
||||
recieve_pm_type = holder.rank
|
||||
|
||||
else if(!C.holder)
|
||||
src << "<font color='red'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</font>"
|
||||
to_chat(src, "<font color='red'>Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.</font>")
|
||||
return
|
||||
|
||||
var/recieve_message = ""
|
||||
@@ -133,7 +133,7 @@
|
||||
if(holder && !C.holder)
|
||||
recieve_message = "<span class='[recieve_span]' size='3'>-- Click the [recieve_pm_type]'s name to reply --</span>\n"
|
||||
if(C.adminhelped)
|
||||
C << recieve_message
|
||||
to_chat(C, recieve_message)
|
||||
C.adminhelped = 0
|
||||
|
||||
//AdminPM popup for ApocStation and anybody else who wants to use it. Set it with POPUP_ADMIN_PM in config.txt ~Carn
|
||||
@@ -150,8 +150,8 @@
|
||||
return
|
||||
|
||||
recieve_message = "<span class='[recieve_span]'>[type] from-<b>[recieve_pm_type][key_name(src, C, C.holder ? 1 : 0, type)]</b>: [msg]</span>"
|
||||
C << recieve_message
|
||||
src << "<font color='blue'>[send_pm_type][type] to-<b>[key_name(C, src, holder ? 1 : 0, type)]</b>: [msg]</font>"
|
||||
to_chat(C, recieve_message)
|
||||
to_chat(src, "<font color='blue'>[send_pm_type][type] to-<b>[key_name(C, src, holder ? 1 : 0, type)]</b>: [msg]</font>")
|
||||
|
||||
/*if(holder && !C.holder)
|
||||
C.last_pm_recieved = world.time
|
||||
@@ -172,17 +172,17 @@
|
||||
switch(type)
|
||||
if("Mentorhelp")
|
||||
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob))
|
||||
X << "<span class='mentorhelp'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: [msg]</span>"
|
||||
to_chat(X, "<span class='mentorhelp'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: [msg]</span>")
|
||||
if("Adminhelp")
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, X.mob))
|
||||
X << "<span class='adminhelp'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: [msg]</span>"
|
||||
to_chat(X, "<span class='adminhelp'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: [msg]</span>")
|
||||
else
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, X.mob))
|
||||
X << "<span class='boldnotice'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: [msg]</span>"
|
||||
to_chat(X, "<span class='boldnotice'>[type]: [key_name(src, X, 0, type)]->[key_name(C, X, 0, type)]: [msg]</span>")
|
||||
|
||||
/client/proc/cmd_admin_irc_pm()
|
||||
if(prefs.muted & MUTE_ADMINHELP)
|
||||
src << "<font color='red'>Error: Private-Message: You are unable to use PM-s (muted).</font>"
|
||||
to_chat(src, "<font color='red'>Error: Private-Message: You are unable to use PM-s (muted).</font>")
|
||||
return
|
||||
|
||||
var/msg = input(src,"Message:", "Private message to admins on IRC / 400 character limit") as text|null
|
||||
@@ -193,17 +193,17 @@
|
||||
sanitize(msg)
|
||||
|
||||
if(length(msg) > 400) // TODO: if message length is over 400, divide it up into seperate messages, the message length restriction is based on IRC limitations. Probably easier to do this on the bots ends.
|
||||
src << "\red Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting"
|
||||
src << "\blue [msg]"
|
||||
to_chat(src, "\red Your message was not sent because it was more then 400 characters find your message below for ease of copy/pasting")
|
||||
to_chat(src, "\blue [msg]")
|
||||
return
|
||||
|
||||
send2adminirc("PlayerPM from [key_name(src)]: [html_decode(msg)]")
|
||||
|
||||
src << "<font color='blue'>IRC PM to-<b>IRC-Admins</b>: [msg]</font>"
|
||||
to_chat(src, "<font color='blue'>IRC PM to-<b>IRC-Admins</b>: [msg]</font>")
|
||||
|
||||
log_admin("PM: [key_name(src)]->IRC: [msg]")
|
||||
for(var/client/X in admins)
|
||||
if(X == src)
|
||||
continue
|
||||
if(check_rights(R_ADMIN|R_MOD|R_MENTOR, 0, X.mob))
|
||||
X << "<B><font color='blue'>PM: [key_name(src, X, 0)]->IRC-Admins:</B> \blue [msg]</font>"
|
||||
to_chat(X, "<B><font color='blue'>PM: [key_name(src, X, 0)]->IRC-Admins:</B> \blue [msg]</font>")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
if(check_rights(R_ADMIN,0))
|
||||
for(var/client/C in admins)
|
||||
if(R_ADMIN & C.holder.rights)
|
||||
C << "<span class='admin_channel'>ADMIN: <span class='name'>[key_name(usr, 1)]</span> ([admin_jump_link(mob, "holder")]): <span class='message'>[msg]</span></span>"
|
||||
to_chat(C, "<span class='admin_channel'>ADMIN: <span class='name'>[key_name(usr, 1)]</span> ([admin_jump_link(mob, "holder")]): <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!
|
||||
|
||||
@@ -35,6 +35,6 @@
|
||||
spanclass = "mod_channel_admin"
|
||||
for(var/client/C in admins)
|
||||
if(check_rights(R_ADMIN|R_MOD, 0, C.mob))
|
||||
C << "<span class='[spanclass]'>MOD: <span class='name'>[key_name(usr, 1)]</span> ([admin_jump_link(mob, C.holder)]): <span class='message'>[msg]</span></span>"
|
||||
to_chat(C, "<span class='[spanclass]'>MOD: <span class='name'>[key_name(usr, 1)]</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!
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
for(var/mob/M in mob_list)
|
||||
if((M.mind && M.mind.special_role && M.client) || (M.client && M.client.holder && (M.client.holder.rights & R_ADMIN)) )
|
||||
M << "<font color='#960018'><span class='ooc'><span class='prefix'>AOOC:</span> <EM>[display_name]:</EM> <span class='message'>[msg]</span></span></font>"
|
||||
to_chat(M, "<font color='#960018'><span class='ooc'><span class='prefix'>AOOC:</span> <EM>[display_name]:</EM> <span class='message'>[msg]</span></span></font>")
|
||||
|
||||
|
||||
log_ooc("(ANTAG) [key] : [msg]")
|
||||
|
||||
@@ -3,30 +3,30 @@
|
||||
set name = "Check Piping"
|
||||
set background = 1
|
||||
if(!src.holder)
|
||||
src << "Only administrators may use this command."
|
||||
to_chat(src, "Only administrators may use this command.")
|
||||
return
|
||||
feedback_add_details("admin_verb","CP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
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 world)
|
||||
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 world)
|
||||
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 world)
|
||||
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 world)
|
||||
for(var/dir in cardinal)
|
||||
@@ -35,15 +35,15 @@
|
||||
if(dir & pipe.initialize_directions)
|
||||
check++
|
||||
if(check > 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"
|
||||
set name = "Check Power"
|
||||
if(!src.holder)
|
||||
src << "Only administrators may use this command."
|
||||
to_chat(src, "Only administrators may use this command.")
|
||||
return
|
||||
feedback_add_details("admin_verb","CPOW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -51,9 +51,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)]")
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
set name = "Change Custom Event"
|
||||
|
||||
if(!holder)
|
||||
src << "Only administrators may use this command."
|
||||
to_chat(src, "Only administrators may use this command.")
|
||||
return
|
||||
|
||||
var/input = input(usr, "Enter the description of the custom event. Be descriptive. To cancel the event, make this blank or hit cancel.", "Custom Event", custom_event_msg) as message|null
|
||||
@@ -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'>[html_encode(custom_event_msg)]</span>"
|
||||
world << "<br>"
|
||||
to_chat(world, "<h1 class='alert'>Custom Event</h1>")
|
||||
to_chat(world, "<h2 class='alert'>A custom event is starting. OOC Info:</h2>")
|
||||
to_chat(world, "<span class='alert'>[html_encode(custom_event_msg)]</span>")
|
||||
to_chat(world, "<br>")
|
||||
|
||||
// normal verb for players to view info
|
||||
/client/verb/cmd_view_custom_event()
|
||||
@@ -30,11 +30,11 @@
|
||||
set name = "Custom Event Info"
|
||||
|
||||
if(!custom_event_msg || custom_event_msg == "")
|
||||
src << "There currently is no known custom event taking place."
|
||||
src << "Keep in mind: it is possible that an admin has not properly set this."
|
||||
to_chat(src, "There currently is no known custom event taking place.")
|
||||
to_chat(src, "Keep in mind: it is possible that an admin has not properly set this.")
|
||||
return
|
||||
|
||||
src << "<h1 class='alert'>Custom Event</h1>"
|
||||
src << "<h2 class='alert'>A custom event is taking place. OOC Info:</h2>"
|
||||
src << "<span class='alert'>[html_encode(custom_event_msg)]</span>"
|
||||
src << "<br>"
|
||||
to_chat(src, "<h1 class='alert'>Custom Event</h1>")
|
||||
to_chat(src, "<h2 class='alert'>A custom event is taking place. OOC Info:</h2>")
|
||||
to_chat(src, "<span class='alert'>[html_encode(custom_event_msg)]</span>")
|
||||
to_chat(src, "<br>")
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
return
|
||||
|
||||
if(prefs.muted & MUTE_DEADCHAT)
|
||||
src << "<span class='warning'>You cannot send DSAY messages (muted).</span>"
|
||||
to_chat(src, "<span class='warning'>You cannot send DSAY messages (muted).</span>")
|
||||
return
|
||||
|
||||
if(!(prefs.toggles & CHAT_DEAD))
|
||||
src << "<span class='warning'>You have deadchat muted.</span>"
|
||||
to_chat(src, "<span class='warning'>You have deadchat muted.</span>")
|
||||
return
|
||||
|
||||
if (handle_spam_prevention(msg,MUTE_DEADCHAT))
|
||||
|
||||
@@ -72,7 +72,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
if(!procname) return
|
||||
|
||||
if(targetselected && !hascall(target,procname))
|
||||
usr << "<font color='red'>Error: callproc(): target has no such call [procname].</font>"
|
||||
to_chat(usr, "<font color='red'>Error: callproc(): target has no such call [procname].</font>")
|
||||
return
|
||||
|
||||
var/list/lst = get_callproc_args()
|
||||
@@ -81,7 +81,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
|
||||
if(targetselected)
|
||||
if(!target)
|
||||
usr << "<font color='red'>Error: callproc(): owner of proc no longer exists.</font>"
|
||||
to_chat(usr, "<font color='red'>Error: callproc(): owner of proc no longer exists.</font>")
|
||||
return
|
||||
message_admins("[key_name_admin(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].")
|
||||
log_admin("[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].")
|
||||
@@ -92,7 +92,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]")
|
||||
returnval = call(procname)(arglist(lst)) // Pass the lst as an argument list to the proc
|
||||
|
||||
usr << "<font color='blue'>[procname] returned: [returnval ? returnval : "null"]</font>"
|
||||
to_chat(usr, "<font color='blue'>[procname] returned: [returnval ? returnval : "null"]</font>")
|
||||
feedback_add_details("admin_verb","APC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/callproc_datum(var/A as null|area|mob|obj|turf)
|
||||
@@ -107,7 +107,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
|
||||
if(!hascall(A,procname))
|
||||
usr << "<span class='warning'>Error: callproc_datum(): target has no such call [procname].</span>"
|
||||
to_chat(usr, "<span class='warning'>Error: callproc_datum(): target has no such call [procname].</span>")
|
||||
return
|
||||
|
||||
var/list/lst = get_callproc_args()
|
||||
@@ -115,14 +115,14 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
return
|
||||
|
||||
if(!A || !IsValidSrc(A))
|
||||
usr << "<span class='warning'>Error: callproc_datum(): owner of proc no longer exists.</span>"
|
||||
to_chat(usr, "<span class='warning'>Error: callproc_datum(): owner of proc no longer exists.</span>")
|
||||
return
|
||||
message_admins("[key_name_admin(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]")
|
||||
log_admin("[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]")
|
||||
|
||||
spawn()
|
||||
var/returnval = call(A,procname)(arglist(lst)) // Pass the lst as an argument list to the proc
|
||||
usr << "<span class='notice'>[procname] returned: [returnval ? returnval : "null"]</span>"
|
||||
to_chat(usr, "<span class='notice'>[procname] returned: [returnval ? returnval : "null"]</span>")
|
||||
|
||||
feedback_add_details("admin_verb","DPC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -506,41 +506,41 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
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_chat(world, "<b>AREAS WITHOUT AN APC:</b>")
|
||||
for(var/areatype in areas_without_APC)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITHOUT AN AIR ALARM:</b>"
|
||||
to_chat(world, "<b>AREAS WITHOUT AN AIR ALARM:</b>")
|
||||
for(var/areatype in areas_without_air_alarm)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITH TOO MANY APCS:</b>"
|
||||
to_chat(world, "<b>AREAS WITH TOO MANY APCS:</b>")
|
||||
for(var/areatype in areas_with_multiple_APCs)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITH TOO MANY AIR ALARMS:</b>"
|
||||
to_chat(world, "<b>AREAS WITH TOO MANY AIR ALARMS:</b>")
|
||||
for(var/areatype in areas_with_multiple_air_alarms)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITHOUT A REQUEST CONSOLE:</b>"
|
||||
to_chat(world, "<b>AREAS WITHOUT A REQUEST CONSOLE:</b>")
|
||||
for(var/areatype in areas_without_RC)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITHOUT ANY LIGHTS:</b>"
|
||||
to_chat(world, "<b>AREAS WITHOUT ANY LIGHTS:</b>")
|
||||
for(var/areatype in areas_without_light)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITHOUT A LIGHT SWITCH:</b>"
|
||||
to_chat(world, "<b>AREAS WITHOUT A LIGHT SWITCH:</b>")
|
||||
for(var/areatype in areas_without_LS)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITHOUT ANY INTERCOMS:</b>"
|
||||
to_chat(world, "<b>AREAS WITHOUT ANY INTERCOMS:</b>")
|
||||
for(var/areatype in areas_without_intercom)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
world << "<b>AREAS WITHOUT ANY CAMERAS:</b>"
|
||||
to_chat(world, "<b>AREAS WITHOUT ANY CAMERAS:</b>")
|
||||
for(var/areatype in areas_without_camera)
|
||||
world << "* [areatype]"
|
||||
to_chat(world, "* [areatype]")
|
||||
|
||||
/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in mob_list)
|
||||
set category = "Event"
|
||||
@@ -1166,21 +1166,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
|
||||
switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs","Silicons","Clients","Respawnable Mobs"))
|
||||
if("Players")
|
||||
usr << jointext(player_list,",")
|
||||
to_chat(usr, jointext(player_list,","))
|
||||
if("Admins")
|
||||
usr << jointext(admins,",")
|
||||
to_chat(usr, jointext(admins,","))
|
||||
if("Mobs")
|
||||
usr << jointext(mob_list,",")
|
||||
to_chat(usr, jointext(mob_list,","))
|
||||
if("Living Mobs")
|
||||
usr << jointext(living_mob_list,",")
|
||||
to_chat(usr, jointext(living_mob_list,","))
|
||||
if("Dead Mobs")
|
||||
usr << jointext(dead_mob_list,",")
|
||||
to_chat(usr, jointext(dead_mob_list,","))
|
||||
if("Silicons")
|
||||
usr << jointext(silicon_mob_list,",")
|
||||
to_chat(usr, jointext(silicon_mob_list,","))
|
||||
if("Clients")
|
||||
usr << jointext(clients,",")
|
||||
to_chat(usr, jointext(clients,","))
|
||||
if("Respawnable Mobs")
|
||||
usr << jointext(respawnable_list,",")
|
||||
to_chat(usr, jointext(respawnable_list,","))
|
||||
|
||||
|
||||
/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
if(T.active_hotspot)
|
||||
burning = 1
|
||||
|
||||
usr << "\blue @[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]"
|
||||
to_chat(usr, "\blue @[target.x],[target.y]: O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]")
|
||||
for(var/datum/gas/trace_gas in GM.trace_gases)
|
||||
usr << "[trace_gas.type]: [trace_gas.moles]"
|
||||
to_chat(usr, "[trace_gas.type]: [trace_gas.moles]")
|
||||
|
||||
message_admins("[key_name_admin(usr)] has checked the air status of [T]")
|
||||
log_admin("[key_name(usr)] has checked the air status of [T]")
|
||||
@@ -130,9 +130,9 @@
|
||||
if(!check_rights(R_DEBUG))
|
||||
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)
|
||||
usr << "[t]"
|
||||
to_chat(usr, "[t]")
|
||||
|
||||
message_admins("[key_name_admin(usr)] has printed the jobban log")
|
||||
log_admin("[key_name(usr)] has printed the jobban log")
|
||||
@@ -149,10 +149,10 @@
|
||||
if(!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, filter))
|
||||
usr << "[t]"
|
||||
to_chat(usr, "[t]")
|
||||
|
||||
message_admins("[key_name_admin(usr)] has searched the jobban log for [filter]")
|
||||
log_admin("[key_name(usr)] has searched the jobban log for [filter]")
|
||||
|
||||
@@ -12,11 +12,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_chat(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_chat(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)
|
||||
@@ -10,7 +10,7 @@ var/global/list/frozen_mob_list = list()
|
||||
set category = "Special Verbs"
|
||||
set name = "Freeze"
|
||||
if(!holder)
|
||||
src << "<font color='red'>Error: Freeze: Only administrators may use this command.</font>"
|
||||
to_chat(src, "<font color='red'>Error: Freeze: Only administrators may use this command.</font>")
|
||||
return
|
||||
if(!istype(M)) return
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
@@ -26,7 +26,7 @@ var/global/list/frozen_mob_list = list()
|
||||
|
||||
/mob/living/proc/admin_Freeze(var/client/admin)
|
||||
if(istype(admin))
|
||||
src << "<b><font color= red>You have been frozen by [key_name(admin)]</b></font>"
|
||||
to_chat(src, "<b><font color= red>You have been frozen by [key_name(admin)]</b></font>")
|
||||
message_admins("<span class='notice'>[key_name_admin(admin)]</span> froze [key_name_admin(src)]")
|
||||
log_admin("[key_name(admin)] froze [key_name(src)]")
|
||||
|
||||
@@ -42,7 +42,7 @@ var/global/list/frozen_mob_list = list()
|
||||
|
||||
/mob/living/proc/admin_unFreeze(var/client/admin)
|
||||
if(istype(admin))
|
||||
src << "<b><font color= red>You have been unfrozen by [key_name(admin)]</b></font>"
|
||||
to_chat(src, "<b><font color= red>You have been unfrozen by [key_name(admin)]</b></font>")
|
||||
message_admins("\blue [key_name_admin(admin)] unfroze [key_name_admin(src)]")
|
||||
log_admin("[key_name(admin)] unfroze [key_name(src)]")
|
||||
|
||||
@@ -85,11 +85,11 @@ var/global/list/frozen_mob_list = list()
|
||||
set category = "Special Verbs"
|
||||
set name = "Freeze Mech"
|
||||
if(!holder)
|
||||
src << "Only administrators may use this command."
|
||||
to_chat(src, "Only administrators may use this command.")
|
||||
return
|
||||
var/obj/mecha/M = O
|
||||
if(!istype(M,/obj/mecha))
|
||||
src << "\red <b>This can only be used on Mechs!</b>"
|
||||
to_chat(src, "\red <b>This can only be used on Mechs!</b>")
|
||||
return
|
||||
else
|
||||
if(usr)
|
||||
@@ -101,7 +101,7 @@ var/global/list/frozen_mob_list = list()
|
||||
M.overlays += adminomaly
|
||||
if(M.occupant)
|
||||
M.removeVerb(/obj/mecha/verb/eject)
|
||||
M.occupant << "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
|
||||
to_chat(M.occupant, "<b><font color= red>You have been frozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>")
|
||||
message_admins("\blue [key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]")
|
||||
log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]")
|
||||
else
|
||||
@@ -112,7 +112,7 @@ var/global/list/frozen_mob_list = list()
|
||||
M.overlays -= adminomaly
|
||||
if(M.occupant)
|
||||
M.addVerb(/obj/mecha/verb/eject)
|
||||
M.occupant << "<b><font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>"
|
||||
to_chat(M.occupant, "<b><font color= red>You have been unfrozen by <a href='?priv_msg=\ref[usr.client]'>[key]</a></b></font>")
|
||||
message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]")
|
||||
log_admin("[key_name(usr)] unfroze [M.occupant.name]/[M.occupant.ckey] in a [M.name]")
|
||||
else
|
||||
|
||||
@@ -24,16 +24,16 @@
|
||||
set category = null
|
||||
|
||||
if(!src.holder)
|
||||
src << "<font color='red'>Only Admins may use this command.</font>"
|
||||
to_chat(src, "<font color='red'>Only Admins may use this command.</font>")
|
||||
return
|
||||
|
||||
var/client/target = input(src,"Choose somebody to grant access to the server's runtime logs (permissions expire at the end of each round):","Grant Permissions",null) as null|anything in clients
|
||||
if(!istype(target,/client))
|
||||
src << "<font color='red'>Error: giveruntimelog(): Client not found.</font>"
|
||||
to_chat(src, "<font color='red'>Error: giveruntimelog(): Client not found.</font>")
|
||||
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
|
||||
|
||||
|
||||
@@ -52,8 +52,9 @@
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(src)] accessed file: [path]")
|
||||
src << ftp( file(path) )
|
||||
src << "Attempting to send file, this may take a fair few minutes if the file is very large."
|
||||
src << ftp(file(path))
|
||||
|
||||
to_chat(src, "Attempting to send file, this may take a fair few minutes if the file is very large.")
|
||||
return
|
||||
|
||||
|
||||
@@ -72,8 +73,9 @@
|
||||
return
|
||||
|
||||
message_admins("[key_name_admin(src)] accessed file: [path]")
|
||||
src << ftp( file(path) )
|
||||
src << "Attempting to send file, this may take a fair few minutes if the file is very large."
|
||||
src << ftp(file(path))
|
||||
|
||||
to_chat(src, "Attempting to send file, this may take a fair few minutes if the file is very large.")
|
||||
return
|
||||
|
||||
|
||||
@@ -87,9 +89,10 @@
|
||||
|
||||
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")].log"
|
||||
if( fexists(path) )
|
||||
src << ftp( file(path) )
|
||||
src << ftp(file(path))
|
||||
|
||||
else
|
||||
src << "<font color='red'>Error: view_txt_log(): File not found/Invalid path([path]).</font>"
|
||||
to_chat(src, "<font color='red'>Error: view_txt_log(): File not found/Invalid path([path]).</font>")
|
||||
return
|
||||
feedback_add_details("admin_verb","VTL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
@@ -102,10 +105,12 @@
|
||||
|
||||
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")] Attack.log"
|
||||
if( fexists(path) )
|
||||
src << ftp( file(path) )
|
||||
src << ftp(file(path))
|
||||
|
||||
else
|
||||
src << "<font color='red'>Error: view_atk_log(): File not found/Invalid path([path]).</font>"
|
||||
to_chat(src, "<font color='red'>Error: view_atk_log(): File not found/Invalid path([path]).</font>")
|
||||
return
|
||||
usr << run( file(path) )
|
||||
usr << run(file(path))
|
||||
|
||||
feedback_add_details("admin_verb","SSAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
|
||||
@@ -5,13 +5,13 @@ var/global/sent_honksquad = 0
|
||||
|
||||
/client/proc/honksquad()
|
||||
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
|
||||
if(sent_honksquad == 1)
|
||||
usr << "<font color='red'>Clown Planet has already dispatched a HONKsquad.</font>"
|
||||
to_chat(usr, "<font color='red'>Clown Planet has already dispatched a HONKsquad.</font>")
|
||||
return
|
||||
if(alert("Do you want to send in the HONKsquad? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
|
||||
return
|
||||
@@ -25,7 +25,7 @@ var/global/sent_honksquad = 0
|
||||
return
|
||||
|
||||
if(sent_honksquad)
|
||||
usr << "Looks like someone beat you to it. HONK."
|
||||
to_chat(usr, "Looks like someone beat you to it. HONK.")
|
||||
return
|
||||
|
||||
sent_honksquad = 1
|
||||
@@ -64,7 +64,7 @@ var/global/sent_honksquad = 0
|
||||
//So they don't forget their code or mission.
|
||||
new_honksquad.mind.store_memory("<B>Mission:</B> \red [input].")
|
||||
|
||||
new_honksquad << "\blue You are a HONKsquad. [!honk_leader_selected?"commando":"<B>LEADER</B>"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill. \nYour current mission is: \red<B>[input]</B>"
|
||||
to_chat(new_honksquad, "\blue You are a HONKsquad. [!honk_leader_selected?"commando":"<B>LEADER</B>"] in the service of Clown Planet. You are called in cases of exteme low levels of HONK. You are NOT authorized to kill. \nYour current mission is: \red<B>[input]</B>")
|
||||
|
||||
honksquad_number--
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ var/list/admin_verbs_show_debug_verbs = list(
|
||||
count++
|
||||
atom_list += A
|
||||
|
||||
world << "There are [count] objects of type [type_path] on z-level [num_level]."
|
||||
to_chat(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()
|
||||
@@ -209,5 +209,5 @@ var/list/admin_verbs_show_debug_verbs = list(
|
||||
if(istype(A,type_path))
|
||||
count++
|
||||
|
||||
world << "There are [count] objects of type [type_path] in the game world."
|
||||
to_chat(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!
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
for(var/p in forbidden_varedit_object_types)
|
||||
if( istype(O,p) )
|
||||
usr << "<span class='danger'>It is forbidden to edit this object's variables.</span>"
|
||||
to_chat(usr, "<span class='danger'>It is forbidden to edit this object's variables.</span>")
|
||||
return
|
||||
|
||||
var/list/names = list()
|
||||
@@ -55,43 +55,43 @@
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
if(isnull(var_value))
|
||||
usr << "Unable to determine variable type."
|
||||
to_chat(usr, "Unable to determine variable type.")
|
||||
|
||||
else if(isnum(var_value))
|
||||
usr << "Variable appears to be <b>NUM</b>."
|
||||
to_chat(usr, "Variable appears to be <b>NUM</b>.")
|
||||
default = "num"
|
||||
dir = 1
|
||||
|
||||
else if(istext(var_value))
|
||||
usr << "Variable appears to be <b>TEXT</b>."
|
||||
to_chat(usr, "Variable appears to be <b>TEXT</b>.")
|
||||
default = "text"
|
||||
|
||||
else if(isloc(var_value))
|
||||
usr << "Variable appears to be <b>REFERENCE</b>."
|
||||
to_chat(usr, "Variable appears to be <b>REFERENCE</b>.")
|
||||
default = "reference"
|
||||
|
||||
else if(isicon(var_value))
|
||||
usr << "Variable appears to be <b>ICON</b>."
|
||||
to_chat(usr, "Variable appears to be <b>ICON</b>.")
|
||||
var_value = "\icon[var_value]"
|
||||
default = "icon"
|
||||
|
||||
else if(istype(var_value,/atom) || istype(var_value,/datum))
|
||||
usr << "Variable appears to be <b>TYPE</b>."
|
||||
to_chat(usr, "Variable appears to be <b>TYPE</b>.")
|
||||
default = "type"
|
||||
|
||||
else if(istype(var_value,/list))
|
||||
usr << "Variable appears to be <b>LIST</b>."
|
||||
to_chat(usr, "Variable appears to be <b>LIST</b>.")
|
||||
default = "list"
|
||||
|
||||
else if(istype(var_value,/client))
|
||||
usr << "Variable appears to be <b>CLIENT</b>."
|
||||
to_chat(usr, "Variable appears to be <b>CLIENT</b>.")
|
||||
default = "cancel"
|
||||
|
||||
else
|
||||
usr << "Variable appears to be <b>FILE</b>."
|
||||
to_chat(usr, "Variable appears to be <b>FILE</b>.")
|
||||
default = "file"
|
||||
|
||||
usr << "Variable contains: [var_value]"
|
||||
to_chat(usr, "Variable contains: [var_value]")
|
||||
if(dir)
|
||||
switch(var_value)
|
||||
if(1)
|
||||
@@ -113,7 +113,7 @@
|
||||
else
|
||||
dir = null
|
||||
if(dir)
|
||||
usr << "If a direction, direction is: [dir]"
|
||||
to_chat(usr, "If a direction, direction is: [dir]")
|
||||
|
||||
var/class = input("What kind of variable?","Variable Type",default) as null|anything in list("text",
|
||||
"num","type","icon","file","edit referenced object","restore to default")
|
||||
|
||||
@@ -18,7 +18,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
set name = "Edit Ticker Variables"
|
||||
|
||||
if (ticker == null)
|
||||
src << "Game hasn't started yet."
|
||||
to_chat(src, "Game hasn't started yet.")
|
||||
else
|
||||
src.modify_variables(ticker)
|
||||
feedback_add_details("admin_verb","ETV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -53,7 +53,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
var/type_text = input("Enter type:", "Type") as null|message
|
||||
var_value = text2path(type_text)
|
||||
if(!var_value)
|
||||
src << "<span class='warning'>[type_text] is not a valid path!</span>"
|
||||
to_chat(src, "<span class='warning'>[type_text] is not a valid path!</span>")
|
||||
|
||||
if("reference")
|
||||
var_value = input("Select reference:","Reference") as null|mob|obj|turf|area in world
|
||||
@@ -106,7 +106,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
var/type_text = input("Enter type:", "Type") as null|message
|
||||
var_value = text2path(type_text)
|
||||
if(!var_value)
|
||||
src << "<span class='warning'>[type_text] is not a valid path!</span>"
|
||||
to_chat(src, "<span class='warning'>[type_text] is not a valid path!</span>")
|
||||
|
||||
if("reference")
|
||||
var_value = input("Select reference:","Reference") as mob|obj|turf|area in world
|
||||
@@ -135,8 +135,8 @@ var/list/forbidden_varedit_object_types = list(
|
||||
/client/proc/mod_list(var/list/L)
|
||||
if(!check_rights(R_VAREDIT)) return
|
||||
|
||||
if(!istype(L,/list)) src << "Not a List."
|
||||
|
||||
if(!istype(L,/list))
|
||||
to_chat(src, "Not a List.")
|
||||
if(L.len > 1000)
|
||||
var/confirm = alert(src, "The list you're trying to edit is very long, continuing may crash the server.", "Warning", "Continue", "Abort")
|
||||
if(confirm != "Continue")
|
||||
@@ -149,7 +149,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
var/a = L[1]
|
||||
if(istext(a) && L[a] != null)
|
||||
assoc = 1 //This is pretty weak test but i can't think of anything else
|
||||
usr << "List appears to be associative."
|
||||
to_chat(usr, "List appears to be associative.")
|
||||
|
||||
var/list/names = null
|
||||
if(!assoc)
|
||||
@@ -182,12 +182,12 @@ var/list/forbidden_varedit_object_types = list(
|
||||
|
||||
default = variable_to_type(variable)
|
||||
|
||||
usr << "Variable contains: [variable]"
|
||||
to_chat(usr, "Variable contains: [variable]")
|
||||
if(default == "num")
|
||||
dir = dir2text(variable)
|
||||
|
||||
if(dir)
|
||||
usr << "If a direction, direction is: [dir]"
|
||||
to_chat(usr, "If a direction, direction is: [dir]")
|
||||
|
||||
var/class = "text"
|
||||
var/list/allowed_types = list("text", "num","type", "type from text", "reference","mob reference", "icon","file","list","edit referenced object","restore to default","DELETE FROM LIST")
|
||||
@@ -276,11 +276,11 @@ var/list/forbidden_varedit_object_types = list(
|
||||
|
||||
for(var/p in forbidden_varedit_object_types)
|
||||
if( istype(O,p) )
|
||||
usr << "<span class='warning'>It is forbidden to edit this object's variables.</span>"
|
||||
to_chat(usr, "<span class='warning'>It is forbidden to edit this object's variables.</span>")
|
||||
return
|
||||
|
||||
if(istype(O, /client) && (param_var_name == "ckey" || param_var_name == "key"))
|
||||
usr << "<span class='warning'>You cannot edit ckeys on client objects.</span>"
|
||||
to_chat(usr, "<span class='warning'>You cannot edit ckeys on client objects.</span>")
|
||||
return
|
||||
|
||||
var/class
|
||||
@@ -289,7 +289,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
|
||||
if(param_var_name)
|
||||
if(!param_var_name in O.vars)
|
||||
src << "A variable with this name ([param_var_name]) doesn't exist in this atom ([O])"
|
||||
to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this atom ([O])")
|
||||
return
|
||||
|
||||
if(param_var_name == "holder" || (param_var_name in locked))
|
||||
@@ -330,11 +330,11 @@ var/list/forbidden_varedit_object_types = list(
|
||||
else if(default == "icon")
|
||||
var_value = "\icon[var_value]"
|
||||
|
||||
usr << "Variable contains: [var_value]"
|
||||
to_chat(usr, "Variable contains: [var_value]")
|
||||
if(dir)
|
||||
dir = dir2text(var_value)
|
||||
if(dir)
|
||||
usr << "If a direction, direction is: [dir]"
|
||||
to_chat(usr, "If a direction, direction is: [dir]")
|
||||
|
||||
var/list/allowed_types = list("text", "num","type","reference","mob reference", "path", "matrix", "icon","file","list","edit referenced object","restore to default")
|
||||
if(src.holder && src.holder.marked_datum)
|
||||
@@ -402,7 +402,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
var/path_text = input("Enter path:", "Path",O.vars[variable]) as null|text
|
||||
var/var_new = text2path(path_text)
|
||||
if(!var_new && path_text != null) // So aborting doesn't bother the VVer
|
||||
usr << "<span class='warning'>[path_text] does not appear to be a valid path.</span>"
|
||||
to_chat(usr, "<span class='warning'>[path_text] does not appear to be a valid path.</span>")
|
||||
return
|
||||
O.vars[variable] = var_new
|
||||
|
||||
@@ -410,7 +410,7 @@ var/list/forbidden_varedit_object_types = list(
|
||||
var/matrix_text = input("Enter a, b, c, d, e, and f, separated by a space.", "Matrix", "1 0 0 0 1 0") as null|text
|
||||
var/var_new = text2matrix(matrix_text)
|
||||
if(!var_new && matrix_text != null)
|
||||
usr << "<span class='warning'>[matrix_text] is not a valid matrix string.</span>"
|
||||
to_chat(usr, "<span class='warning'>[matrix_text] is not a valid matrix string.</span>")
|
||||
return
|
||||
O.vars[variable] = var_new
|
||||
var_as_text = "matrix([matrix_text])"
|
||||
@@ -449,51 +449,51 @@ var/list/forbidden_varedit_object_types = list(
|
||||
/proc/variable_to_type(var/variable)
|
||||
var/class
|
||||
if(isnull(variable))
|
||||
usr << "Unable to determine variable type."
|
||||
to_chat(usr, "Unable to determine variable type.")
|
||||
class = null
|
||||
else if(isnum(variable))
|
||||
usr << "Variable appears to be <b>NUM</b>."
|
||||
to_chat(usr, "Variable appears to be <b>NUM</b>.")
|
||||
class = "num"
|
||||
|
||||
else if(istext(variable))
|
||||
usr << "Variable appears to be <b>TEXT</b>."
|
||||
to_chat(usr, "Variable appears to be <b>TEXT</b>.")
|
||||
class = "text"
|
||||
|
||||
else if(isloc(variable))
|
||||
usr << "Variable appears to be <b>REFERENCE</b>."
|
||||
to_chat(usr, "Variable appears to be <b>REFERENCE</b>.")
|
||||
class = "reference"
|
||||
|
||||
else if(isicon(variable))
|
||||
usr << "Variable appears to be <b>ICON</b>."
|
||||
to_chat(usr, "Variable appears to be <b>ICON</b>.")
|
||||
variable = "\icon[variable]"
|
||||
class = "icon"
|
||||
|
||||
else if(istype(variable,/matrix))
|
||||
usr << "Variable appears to be <b>MATRIX</b>"
|
||||
to_chat(usr, "Variable appears to be <b>MATRIX</b>")
|
||||
class = "matrix"
|
||||
|
||||
else if(istype(variable,/atom) || istype(variable,/datum))
|
||||
usr << "Variable appears to be <b>TYPE</b>."
|
||||
to_chat(usr, "Variable appears to be <b>TYPE</b>.")
|
||||
class = "type"
|
||||
|
||||
else if(istype(variable,/list))
|
||||
usr << "Variable appears to be <b>LIST</b>."
|
||||
to_chat(usr, "Variable appears to be <b>LIST</b>.")
|
||||
class = "list"
|
||||
|
||||
else if(istype(variable,/client))
|
||||
usr << "Variable appears to be <b>CLIENT</b>."
|
||||
to_chat(usr, "Variable appears to be <b>CLIENT</b>.")
|
||||
class = "cancel"
|
||||
|
||||
else if(ispath(variable))
|
||||
usr << "Variable appears to be <b>PATH</b>."
|
||||
to_chat(usr, "Variable appears to be <b>PATH</b>.")
|
||||
class = "path"
|
||||
|
||||
else if(isfile(variable))
|
||||
usr << "Variable appears to be <b>FILE</b>."
|
||||
to_chat(usr, "Variable appears to be <b>FILE</b>.")
|
||||
class = "file"
|
||||
|
||||
else
|
||||
usr << "Variable type is <b>UNKNOWN</b>."
|
||||
to_chat(usr, "Variable type is <b>UNKNOWN</b>.")
|
||||
class = null
|
||||
|
||||
return class
|
||||
@@ -377,7 +377,7 @@ client/proc/one_click_antag()
|
||||
//So they don't forget their code or mission.
|
||||
|
||||
|
||||
new_syndicate_commando << "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: \red<B> [input]</B>"
|
||||
to_chat(new_syndicate_commando, "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: \red<B> [input]</B>")
|
||||
|
||||
numagents--
|
||||
if(numagents >= 6)
|
||||
@@ -482,8 +482,8 @@ client/proc/one_click_antag()
|
||||
break
|
||||
|
||||
new_vox.key = theghost.key
|
||||
new_vox << "\blue You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: \red<B> [input]</B>"
|
||||
new_vox << "\red Don't forget to turn on your nitrogen internals!"
|
||||
to_chat(new_vox, "\blue You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: \red<B> [input]</B>")
|
||||
to_chat(new_vox, "\red Don't forget to turn on your nitrogen internals!")
|
||||
|
||||
raiders--
|
||||
if(raiders > max_raiders)
|
||||
@@ -612,7 +612,7 @@ client/proc/one_click_antag()
|
||||
|
||||
newMember.key = theghost.key
|
||||
teamOneMembers--
|
||||
newMember << "You are a member of the <font color = 'green'><b>GREEN</b></font> Thunderdome team! Gear up and help your team destroy the red team!"
|
||||
to_chat(newMember, "You are a member of the <font color = 'green'><b>GREEN</b></font> Thunderdome team! Gear up and help your team destroy the red team!")
|
||||
|
||||
if(L.name == "tdome2")
|
||||
if(teamTwoMembers<=0)
|
||||
@@ -634,7 +634,7 @@ client/proc/one_click_antag()
|
||||
|
||||
newMember.key = theghost.key
|
||||
teamTwoMembers--
|
||||
newMember << "You are a member of the <font color = 'red'><b>RED</b></font> Thunderdome team! Gear up and help your team destroy the green team!"
|
||||
to_chat(newMember, "You are a member of the <font color = 'red'><b>RED</b></font> Thunderdome team! Gear up and help your team destroy the green team!")
|
||||
else
|
||||
return 0
|
||||
return 1
|
||||
@@ -21,10 +21,10 @@
|
||||
hijack_objective.owner = H.mind
|
||||
H.mind.objectives += hijack_objective
|
||||
|
||||
H << "<B>You are a Highlander. Kill all other Highlanders. There can be only one.</B>"
|
||||
to_chat(H, "<B>You are a Highlander. Kill all other Highlanders. There can be only one.</B>")
|
||||
var/obj_count = 1
|
||||
for(var/datum/objective/OBJ in H.mind.objectives)
|
||||
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
||||
to_chat(H, "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]")
|
||||
obj_count++
|
||||
|
||||
for (var/obj/item/I in H)
|
||||
@@ -55,7 +55,7 @@
|
||||
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
log_admin("[key_name(usr)] used there can be only one.")
|
||||
nologevent = 1
|
||||
world << sound('sound/music/THUNDERDOME.ogg')
|
||||
to_chat(world, sound('sound/music/THUNDERDOME.ogg'))
|
||||
|
||||
/client/proc/only_me()
|
||||
if(!ticker)
|
||||
@@ -73,10 +73,10 @@
|
||||
hijack_objective.owner = H.mind
|
||||
H.mind.objectives += hijack_objective
|
||||
|
||||
H << "<B>You are the multiverse summoner. Activate your blade to summon copies of yourself from another universe to fight by your side.</B>"
|
||||
to_chat(H, "<B>You are the multiverse summoner. Activate your blade to summon copies of yourself from another universe to fight by your side.</B>")
|
||||
var/obj_count = 1
|
||||
for(var/datum/objective/OBJ in H.mind.objectives)
|
||||
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
||||
to_chat(H, "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]")
|
||||
obj_count++
|
||||
|
||||
var/obj/item/slot_item_ID = H.get_item_by_slot(slot_wear_id)
|
||||
@@ -101,4 +101,4 @@
|
||||
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ME! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
||||
log_admin("[key_name(usr)] used there can be only me.")
|
||||
nologevent = 1
|
||||
world << sound('sound/music/THUNDERDOME.ogg')
|
||||
to_chat(world, sound('sound/music/THUNDERDOME.ogg'))
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
continue
|
||||
qdel(I)
|
||||
|
||||
H << "<B>You are part of the [station_name()] dodgeball tournament. Throw dodgeballs at crewmembers wearing a different color than you. OOC: Use THROW on an EMPTY-HAND to catch thrown dodgeballs.</B>"
|
||||
to_chat(H, "<B>You are part of the [station_name()] dodgeball tournament. Throw dodgeballs at crewmembers wearing a different color than you. OOC: Use THROW on an EMPTY-HAND to catch thrown dodgeballs.</B>")
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/beach_ball/dodgeball(H), slot_r_hand)
|
||||
@@ -75,13 +75,13 @@
|
||||
if(H.l_hand == src) return
|
||||
var/mob/A = H.LAssailant
|
||||
if((H in team_alpha) && (A in team_alpha))
|
||||
A << "<span class='warning'>He's on your team!</span>"
|
||||
to_chat(A, "<span class='warning'>He's on your team!</span>")
|
||||
return
|
||||
else if((H in team_bravo) && (A in team_bravo))
|
||||
A << "<span class='warning'>He's on your team!</span>"
|
||||
to_chat(A, "<span class='warning'>He's on your team!</span>")
|
||||
return
|
||||
else if(!A in team_alpha && !A in team_bravo)
|
||||
A << "<span class='warning'>You're not part of the dodgeball game, sorry!</span>"
|
||||
to_chat(A, "<span class='warning'>You're not part of the dodgeball game, sorry!</span>")
|
||||
return
|
||||
else
|
||||
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
|
||||
|
||||
@@ -90,7 +90,7 @@ var/list/sounds_cache = list()
|
||||
|
||||
for(var/mob/living/carbon/human/CP in world)
|
||||
if(CP.real_name=="Cuban Pete" && CP.key!="Rosham")
|
||||
CP << "Your body can't contain the rhumba beat"
|
||||
C << "Your body can't contain the rhumba beat"
|
||||
CP.gib()
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
if(usr.client)
|
||||
if(usr.client.prefs.muted & MUTE_PRAY)
|
||||
usr << "\red You cannot pray (muted)."
|
||||
to_chat(usr, "\red You cannot pray (muted).")
|
||||
return
|
||||
if(src.client.handle_spam_prevention(msg,MUTE_PRAY))
|
||||
return
|
||||
@@ -17,9 +17,9 @@
|
||||
|
||||
for(var/client/X in admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
X << msg
|
||||
to_chat(X, msg)
|
||||
|
||||
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]")
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
for(var/client/X in admins)
|
||||
if(R_EVENT & X.holder.rights)
|
||||
X << msg
|
||||
to_chat(X, msg)
|
||||
|
||||
/proc/Syndicate_announce(var/text , var/mob/Sender)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
for(var/client/X in admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
X << msg
|
||||
to_chat(X, msg)
|
||||
|
||||
/proc/HONK_announce(var/text , var/mob/Sender)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
for(var/client/X in admins)
|
||||
if(R_EVENT & X.holder.rights)
|
||||
X << msg
|
||||
to_chat(X, msg)
|
||||
|
||||
/proc/ERT_Announce(var/text , var/mob/Sender)
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
@@ -54,15 +54,14 @@
|
||||
|
||||
for(var/client/X in admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
X << msg
|
||||
|
||||
to_chat(X, msg)
|
||||
|
||||
/proc/Nuke_request(text , mob/Sender)
|
||||
var/nuke_code = get_nuke_code()
|
||||
var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN))
|
||||
msg = "<span class='adminnotice'><b><font color=orange>NUKE CODE REQUEST: </font>[key_name(Sender)] (<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, "holder")]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]</span>"
|
||||
|
||||
|
||||
for(var/client/X in admins)
|
||||
if(check_rights(R_EVENT,0,X.mob))
|
||||
X << msg
|
||||
X << "<span class='adminnotice'><b>The nuke code is [nuke_code].</b></span>"
|
||||
|
||||
to_chat(X, msg)
|
||||
to_chat(X, "<span class='adminnotice'><b>The nuke code is [nuke_code].</b></span>")
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(prisoner), slot_w_uniform)
|
||||
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
|
||||
spawn(50)
|
||||
M << "\red You have been sent to the prison station!"
|
||||
to_chat(M, "\red You have been sent to the prison station!")
|
||||
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
|
||||
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
|
||||
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -61,7 +61,7 @@
|
||||
if(usr)
|
||||
if (usr.client)
|
||||
if(usr.client.holder)
|
||||
M << "\bold You hear a voice in your head... \italic [msg]"
|
||||
to_chat(M, "\bold You hear a voice in your head... \italic [msg]")
|
||||
|
||||
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
|
||||
message_admins("\blue \bold SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1)
|
||||
@@ -91,12 +91,12 @@
|
||||
msg += "[key_name_admin(C)]: account is [C.player_age] days old<br>"
|
||||
|
||||
if(missing_ages)
|
||||
src << "Some accounts did not have proper ages set in their clients. This function requires database to be present"
|
||||
to_chat(src, "Some accounts did not have proper ages set in their clients. This function requires database to be present")
|
||||
|
||||
if(msg != "")
|
||||
src << browse(msg, "window=Player_age_check")
|
||||
else
|
||||
src << "No matches for that age range found."
|
||||
to_chat(src, "No matches for that age range found.")
|
||||
|
||||
|
||||
/client/proc/cmd_admin_world_narrate() // Allows administrators to fluff events a little easier -- TLE
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
if (!msg)
|
||||
return
|
||||
world << "[msg]"
|
||||
to_chat(world, "[msg]")
|
||||
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
|
||||
message_admins("\blue \bold GlobalNarrate: [key_name_admin(usr)]: [msg]<BR>", 1)
|
||||
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -133,7 +133,7 @@
|
||||
if( !msg )
|
||||
return
|
||||
|
||||
M << msg
|
||||
to_chat(M, msg)
|
||||
log_admin("DirectNarrate: [key_name(usr)] to ([key_name(M)]): [msg]")
|
||||
message_admins("\blue \bold DirectNarrate: [key_name_admin(usr)] to ([key_name_admin(M)]): [msg]<BR>", 1)
|
||||
feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -146,7 +146,7 @@
|
||||
return
|
||||
|
||||
M.status_flags ^= GODMODE
|
||||
usr << "\blue Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]"
|
||||
to_chat(usr, "\blue Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]")
|
||||
|
||||
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
|
||||
message_admins("[key_name_admin(usr)] has toggled [key_name_admin(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]", 1)
|
||||
@@ -161,10 +161,10 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
|
||||
if(!usr || !usr.client)
|
||||
return
|
||||
if(!check_rights(R_ADMIN|R_MOD))
|
||||
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)
|
||||
return
|
||||
|
||||
@@ -185,7 +185,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 << "You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin."
|
||||
to_chat(M, "You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.")
|
||||
feedback_add_details("admin_verb","AUTOMUTE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
return
|
||||
|
||||
@@ -198,7 +198,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 << "You have been [muteunmute] from [mute_string]."
|
||||
to_chat(M, "You have been [muteunmute] from [mute_string].")
|
||||
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()
|
||||
@@ -235,18 +235,19 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
|
||||
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 << "\red <B>The Administrator has disabled AntagHUD </B>"
|
||||
to_chat(g, "\red <B>The Administrator has disabled AntagHUD </B>")
|
||||
config.antag_hud_allowed = 0
|
||||
src << "\red <B>AntagHUD usage has been disabled</B>"
|
||||
to_chat(src, "\red <B>AntagHUD usage has been disabled</B>")
|
||||
action = "disabled"
|
||||
else
|
||||
for(var/mob/dead/observer/g in get_ghosts())
|
||||
if(!g.client.holder) // Add the verb back for all non-admin ghosts
|
||||
g.verbs += /mob/dead/observer/verb/toggle_antagHUD
|
||||
g << "\blue <B>The Administrator has enabled AntagHUD </B>" // Notify all observers they can now use AntagHUD
|
||||
to_chat(g, "\blue <B>The Administrator has enabled AntagHUD </B>")// Notify all observers they can now use AntagHUD
|
||||
|
||||
config.antag_hud_allowed = 1
|
||||
action = "enabled"
|
||||
src << "\blue <B>AntagHUD usage has been enabled</B>"
|
||||
to_chat(src, "\blue <B>AntagHUD usage has been enabled</B>")
|
||||
|
||||
|
||||
log_admin("[key_name(usr)] has [action] antagHUD usage for observers")
|
||||
@@ -263,19 +264,19 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
|
||||
var/action=""
|
||||
if(config.antag_hud_restricted)
|
||||
for(var/mob/dead/observer/g in get_ghosts())
|
||||
g << "\blue <B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B>"
|
||||
to_chat(g, "\blue <B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B>")
|
||||
action = "lifted restrictions"
|
||||
config.antag_hud_restricted = 0
|
||||
src << "\blue <B>AntagHUD restrictions have been lifted</B>"
|
||||
to_chat(src, "\blue <B>AntagHUD restrictions have been lifted</B>")
|
||||
else
|
||||
for(var/mob/dead/observer/g in get_ghosts())
|
||||
g << "\red <B>The administrator has placed restrictions on joining the round if you use AntagHUD</B>"
|
||||
g << "\red <B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B>"
|
||||
to_chat(g, "\red <B>The administrator has placed restrictions on joining the round if you use AntagHUD</B>")
|
||||
to_chat(g, "\red <B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B>")
|
||||
g.antagHUD = 0
|
||||
g.has_enabled_antagHUD = 0
|
||||
action = "placed restrictions"
|
||||
config.antag_hud_restricted = 1
|
||||
src << "\red <B>AntagHUD restrictions have been enabled</B>"
|
||||
to_chat(src, "\red <B>AntagHUD restrictions have been enabled</B>")
|
||||
|
||||
log_admin("[key_name(usr)] has [action] on joining the round if they use AntagHUD")
|
||||
message_admins("Admin [key_name_admin(usr)] has [action] on joining the round if they use AntagHUD", 1)
|
||||
@@ -304,7 +305,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
break
|
||||
|
||||
if(!G_found)//If a ghost was not found.
|
||||
usr << "<font color='red'>There is no active key like that in the game or the person is not currently a ghost.</font>"
|
||||
to_chat(usr, "<font color='red'>There is no active key like that in the game or the person is not currently a ghost.</font>")
|
||||
return
|
||||
|
||||
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
|
||||
@@ -328,7 +329,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
//Now to give them their mind back.
|
||||
G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use
|
||||
new_xeno.key = G_found.key
|
||||
new_xeno << "You have been fully respawned. Enjoy the game."
|
||||
to_chat(new_xeno, "You have been fully respawned. Enjoy the game.")
|
||||
message_admins("\blue [key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.", 1)
|
||||
return //all done. The ghost is auto-deleted
|
||||
|
||||
@@ -433,7 +434,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
message_admins("\blue [key_name_admin(usr)] has respawned [key_name_admin(G_found)] as [new_character.real_name].", 1)
|
||||
|
||||
new_character << "You have been fully respawned. Enjoy the game."
|
||||
to_chat(new_character, "You have been fully respawned. 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!
|
||||
return new_character
|
||||
@@ -452,7 +453,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(candidates.len)
|
||||
ckey = input("Pick the player you want to respawn as a xeno.", "Suitable Candidates") as null|anything in candidates
|
||||
else
|
||||
usr << "<font color='red'>Error: create_xeno(): no suitable candidates.</font>"
|
||||
to_chat(usr, "<font color='red'>Error: create_xeno(): no suitable candidates.</font>")
|
||||
if(!istext(ckey)) return 0
|
||||
|
||||
var/alien_caste = input(usr, "Please choose which caste to spawn.","Pick a caste",null) as null|anything in list("Queen","Hunter","Sentinel","Drone","Larva")
|
||||
@@ -484,7 +485,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
any = 1 //if no ghosts show up, any will just be 0
|
||||
if(!any)
|
||||
if(notify)
|
||||
src << "There doesn't appear to be any ghosts for you to select."
|
||||
to_chat(src, "There doesn't appear to be any ghosts for you to select.")
|
||||
return
|
||||
|
||||
for(var/mob/M in mobs)
|
||||
@@ -558,7 +559,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if("Yes")
|
||||
communications_announcement.Announce(input, customname, , , , from);
|
||||
if("No")
|
||||
world << "\red [from] available at all communications consoles."
|
||||
to_chat(world, "\red [from] available at all communications consoles.")
|
||||
|
||||
for (var/obj/machinery/computer/communications/C in machines)
|
||||
if(! (C.stat & (BROKEN|NOPOWER) ) )
|
||||
@@ -578,7 +579,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if("Yes")
|
||||
command_announcement.Announce(input, customname);
|
||||
if("No")
|
||||
world << "\red New Nanotrasen Update available at all communication consoles."
|
||||
to_chat(world, "\red New Nanotrasen Update available at all communication consoles.")
|
||||
|
||||
for (var/obj/machinery/computer/communications/C in machines)
|
||||
if(! (C.stat & (BROKEN|NOPOWER) ) )
|
||||
@@ -589,7 +590,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
C.messagetitle.Add("[command_name()] Update")
|
||||
C.messagetext.Add(P.info)
|
||||
|
||||
//world << sound('sound/AI/commandreport.ogg')
|
||||
// to_chat(world, sound('sound/AI/commandreport.ogg'))
|
||||
log_admin("[key_name(src)] has created a communications report: [input]")
|
||||
message_admins("[key_name_admin(src)] has created a communications report", 1)
|
||||
feedback_add_details("admin_verb","CCR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -621,7 +622,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
if(job_master)
|
||||
for(var/datum/job/job in job_master.occupations)
|
||||
src << "[job.title]: [job.total_positions]"
|
||||
to_chat(src, "[job.title]: [job.total_positions]")
|
||||
feedback_add_details("admin_verb","LFS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in view())
|
||||
@@ -727,7 +728,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!
|
||||
|
||||
/client/proc/toggle_view_range()
|
||||
@@ -809,9 +810,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
usr << text("\red <b>Attack Log for []</b>", mob)
|
||||
to_chat(usr, text("\red <b>Attack Log for []</b>", mob))
|
||||
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!
|
||||
|
||||
|
||||
@@ -824,13 +825,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
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
|
||||
|
||||
|
||||
@@ -842,9 +843,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 << "\blue <b>Admin [usr.key] has forced the players to have completely random identities!"
|
||||
to_chat(world, "\blue <b>Admin [usr.key] has forced the players to have completely random identities!")
|
||||
|
||||
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!
|
||||
@@ -859,11 +860,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!
|
||||
|
||||
@@ -877,12 +878,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
|
||||
if(ticker.mode.ert_disabled)
|
||||
ticker.mode.ert_disabled = 0
|
||||
usr << "\blue ERT has been <b>Enabled</b>."
|
||||
to_chat(usr, "\blue ERT has been <b>Enabled</b>.")
|
||||
log_admin("Admin [key_name(src)] has enabled ERT calling.")
|
||||
message_admins("Admin [key_name_admin(usr)] has enabled ERT calling.", 1)
|
||||
else
|
||||
ticker.mode.ert_disabled = 1
|
||||
usr << "\red ERT has been <b>Disabled</b>."
|
||||
to_chat(usr, "\red ERT has been <b>Disabled</b>.")
|
||||
log_admin("Admin [key_name(src)] has disabled ERT calling.")
|
||||
message_admins("Admin [key_name_admin(usr)] has disabled ERT calling.", 1)
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ var/global/sent_strike_team = 0
|
||||
|
||||
/client/proc/strike_team()
|
||||
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(sent_strike_team == 1)
|
||||
usr << "<font color='red'>CentComm is already sending a team.</font>"
|
||||
to_chat(usr, "<font color='red'>CentComm is already sending a team.</font>")
|
||||
return
|
||||
if(alert("Do you want to send in the CentComm death squad? Once enabled, this is irreversible.",,"Yes","No")!="Yes")
|
||||
return
|
||||
@@ -22,7 +22,7 @@ var/global/sent_strike_team = 0
|
||||
return
|
||||
|
||||
if(sent_strike_team)
|
||||
usr << "Looks like someone beat you to it."
|
||||
to_chat(usr, "Looks like someone beat you to it.")
|
||||
return
|
||||
|
||||
sent_strike_team = 1
|
||||
@@ -71,7 +71,7 @@ var/global/sent_strike_team = 0
|
||||
new_commando.mind.store_memory("<B>Nuke Code:</B> \red [nuke_code].")
|
||||
new_commando.mind.store_memory("<B>Mission:</B> \red [input].")
|
||||
|
||||
new_commando << "\blue You are a Special Ops. [!leader_selected?"commando":"<B>LEADER</B>"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: \red<B>[input]</B>"
|
||||
to_chat(new_commando, "\blue You are a Special Ops. [!leader_selected?"commando":"<B>LEADER</B>"] in the service of Central Command. Check the table ahead for detailed instructions.\nYour current mission is: \red<B>[input]</B>")
|
||||
|
||||
commando_number--
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
set name = "Spawn Syndicate Strike Team"
|
||||
set desc = "Spawns a squad of commandos in the Syndicate Mothership if you want to run an admin event."
|
||||
if(!src.holder)
|
||||
src << "Only administrators may use this command."
|
||||
to_chat(src, "Only administrators may use this command.")
|
||||
return
|
||||
if(!ticker)
|
||||
alert("The game hasn't started yet!")
|
||||
@@ -27,7 +27,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
return
|
||||
|
||||
if(sent_syndicate_strike_team)
|
||||
src << "Looks like someone beat you to it."
|
||||
to_chat(src, "Looks like someone beat you to it.")
|
||||
return
|
||||
|
||||
sent_syndicate_strike_team = 1
|
||||
@@ -78,7 +78,7 @@ var/global/sent_syndicate_strike_team = 0
|
||||
new_syndicate_commando.mind.store_memory("<B>Nuke Code:</B> \red [nuke_code].")
|
||||
new_syndicate_commando.mind.store_memory("<B>Mission:</B> \red [input].")
|
||||
|
||||
new_syndicate_commando << "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: \red<B>[input]</B>"
|
||||
to_chat(new_syndicate_commando, "\blue You are an Elite Syndicate. [!syndicate_leader_selected?"commando":"<B>LEADER</B>"] in the service of the Syndicate. \nYour current mission is: \red<B>[input]</B>")
|
||||
|
||||
syndicate_commando_number--
|
||||
|
||||
|
||||
@@ -19,6 +19,6 @@
|
||||
if("Yes") config.Tickcomp = 1
|
||||
else config.Tickcomp = 0
|
||||
else
|
||||
src << "\red Error: ticklag(): Invalid world.ticklag value. No changes made."
|
||||
to_chat(src, "\red Error: ticklag(): Invalid world.ticklag value. No changes made.")
|
||||
|
||||
|
||||
|
||||
@@ -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("\blue [key_name_admin(usr)] has toggled off triple AIs at round start.", 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("\blue [key_name_admin(usr)] has toggled on triple AIs at round start.", 1)
|
||||
return
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
log_game("SQL ERROR obtaining ckey from player table. Error : \[[err]\]\n")
|
||||
return
|
||||
if(!query_watchfind.NextRow())
|
||||
usr << "<span class='redtext'>[new_ckey] has not been seen before, you can only add known players.</span>"
|
||||
to_chat(usr, "<span class='redtext'>[new_ckey] has not been seen before, you can only add known players.</span>")
|
||||
return
|
||||
else
|
||||
target_ckey = new_ckey
|
||||
var/target_sql_ckey = sanitizeSQL(target_ckey)
|
||||
if(check_watchlist(target_sql_ckey))
|
||||
usr << "<span class='redtext'>[target_sql_ckey] is already on the watchlist.</span>"
|
||||
to_chat(usr, "<span class='redtext'>[target_sql_ckey] is already on the watchlist.</span>")
|
||||
return
|
||||
var/reason = input(usr,"Please state the reason","Reason") as message|null
|
||||
if(!reason)
|
||||
|
||||
@@ -23,16 +23,16 @@
|
||||
/obj/machinery/arcade/examine(mob/user)
|
||||
..(user)
|
||||
if(freeplay)
|
||||
user << "Someone enabled freeplay on this machine!"
|
||||
to_chat(user, "Someone enabled freeplay on this machine!")
|
||||
else
|
||||
if(token_price)
|
||||
user << "\The [src.name] costs [token_price] credits per play."
|
||||
to_chat(user, "\The [src.name] costs [token_price] credits per play.")
|
||||
if(!tokens)
|
||||
user << "\The [src.name] has no available play credits. Better feed the machine!"
|
||||
to_chat(user, "\The [src.name] has no available play credits. Better feed the machine!")
|
||||
else if(tokens == 1)
|
||||
user << "\The [src.name] has only 1 play credit left!"
|
||||
to_chat(user, "\The [src.name] has only 1 play credit left!")
|
||||
else
|
||||
user << "\The [src.name] has [tokens] play credits!"
|
||||
to_chat(user, "\The [src.name] has [tokens] play credits!")
|
||||
|
||||
/obj/machinery/arcade/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
@@ -47,7 +47,7 @@
|
||||
if(stat & BROKEN || panel_open)
|
||||
return
|
||||
if(!tokens && !freeplay)
|
||||
user << "\The [src.name] doesn't have enough credits to play! Pay first!"
|
||||
to_chat(user, "\The [src.name] doesn't have enough credits to play! Pay first!")
|
||||
return
|
||||
if(!in_use && (tokens || freeplay))
|
||||
in_use = 1
|
||||
@@ -55,14 +55,14 @@
|
||||
return
|
||||
if(in_use)
|
||||
if(src != user.machine)
|
||||
user << "Someone else is already playing this machine, please wait your turn!"
|
||||
to_chat(user, "Someone else is already playing this machine, please wait your turn!")
|
||||
return
|
||||
|
||||
/obj/machinery/arcade/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
if(istype(O, /obj/item/weapon/screwdriver) && anchored)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
panel_open = !panel_open
|
||||
user << "You [panel_open ? "open" : "close"] the maintenance panel."
|
||||
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
|
||||
update_icon()
|
||||
return
|
||||
if(!freeplay)
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
/obj/machinery/arcade/proc/pay_with_cash(var/obj/item/weapon/spacecash/cashmoney, var/mob/user)
|
||||
if(cashmoney.get_total() < token_price)
|
||||
user << "\icon[cashmoney] <span class='warning'>That is not enough money.</span>"
|
||||
to_chat(user, "\icon[cashmoney] <span class='warning'>That is not enough money.</span>")
|
||||
return 0
|
||||
visible_message("<span class='info'>[usr] inserts a credit chip into [src].</span>")
|
||||
var/left = cashmoney.get_total() - token_price
|
||||
@@ -98,11 +98,11 @@
|
||||
visible_message("<span class='info'>[usr] swipes a card through [src].</span>")
|
||||
var/datum/money_account/customer_account = attempt_account_access_nosec(I.associated_account_number)
|
||||
if (!customer_account)
|
||||
user <<"Error: Unable to access account. Please contact technical support if problem persists."
|
||||
to_chat(user, "Error: Unable to access account. Please contact technical support if problem persists.")
|
||||
return 0
|
||||
|
||||
if(customer_account.suspended)
|
||||
user << "Unable to access account: account suspended."
|
||||
to_chat(user, "Unable to access account: account suspended.")
|
||||
return 0
|
||||
|
||||
// Have the customer punch in the PIN before checking if there's enough money. Prevents people from figuring out acct is
|
||||
@@ -112,11 +112,11 @@
|
||||
customer_account = attempt_account_access(I.associated_account_number, attempt_pin, 2)
|
||||
|
||||
if(!customer_account)
|
||||
user << "Unable to access account: incorrect credentials."
|
||||
to_chat(user, "Unable to access account: incorrect credentials.")
|
||||
return 0
|
||||
|
||||
if(token_price > customer_account.money)
|
||||
user << "Insufficient funds in account."
|
||||
to_chat(user, "Insufficient funds in account.")
|
||||
return 0
|
||||
else
|
||||
// Okay to move the money at this point
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
tickets += T.amount
|
||||
qdel(T)
|
||||
else
|
||||
user << "<span class='warning'>\The [T] seems stuck to your hand!</span>"
|
||||
to_chat(user, "<span class='warning'>\The [T] seems stuck to your hand!</span>")
|
||||
return
|
||||
if(istype(O, /obj/item/weapon/screwdriver) && anchored)
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
panel_open = !panel_open
|
||||
user << "You [panel_open ? "open" : "close"] the maintenance panel."
|
||||
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
|
||||
update_icon()
|
||||
return
|
||||
if(panel_open)
|
||||
@@ -179,9 +179,9 @@ td.cost.toomuch {
|
||||
updateUsrDialog()
|
||||
return
|
||||
if(!global_prizes.PlaceOrder(src, itemID))
|
||||
usr << "<span class='warning'>Unable to complete the exchange.</span>"
|
||||
to_chat(usr, "<span class='warning'>Unable to complete the exchange.</span>")
|
||||
else
|
||||
usr << "<span class='notice'>You've successfully purchased the item.</span>"
|
||||
to_chat(usr, "<span class='notice'>You've successfully purchased the item.</span>")
|
||||
|
||||
interact(usr)
|
||||
return
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
|
||||
holder = new/obj/item/device/assembly_holder(get_turf(src))
|
||||
if(holder.attach(A,src,user))
|
||||
user << "\blue You attach \the [A] to \the [src]!"
|
||||
to_chat(user, "\blue You attach \the [A] to \the [src]!")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -127,9 +127,9 @@
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(toggle_secure())
|
||||
user << "\blue \The [src] is ready!"
|
||||
to_chat(user, "\blue \The [src] is ready!")
|
||||
else
|
||||
user << "\blue \The [src] can now be attached!"
|
||||
to_chat(user, "\blue \The [src] can now be attached!")
|
||||
return
|
||||
..()
|
||||
return
|
||||
@@ -144,9 +144,9 @@
|
||||
..(user)
|
||||
if((in_range(src, user) || loc == user))
|
||||
if(secured)
|
||||
user << "\The [src] is ready!"
|
||||
to_chat(user, "\The [src] is ready!")
|
||||
else
|
||||
user << "\The [src] can be attached!"
|
||||
to_chat(user, "\The [src] can be attached!")
|
||||
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/wrench) && !status) //This is basically bomb assembly code inverted. apparently it works.
|
||||
|
||||
user << "<span class='notice'>You disassemble [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You disassemble [src].</span>")
|
||||
|
||||
bombassembly.loc = user.loc
|
||||
bombassembly.master = null
|
||||
@@ -46,11 +46,11 @@
|
||||
status = 1
|
||||
bombers += "[key_name(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]"
|
||||
msg_admin_attack("[key_name_admin(user)] welded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]")
|
||||
user << "<span class='notice'>A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.</span>"
|
||||
to_chat(user, "<span class='notice'>A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.</span>")
|
||||
else
|
||||
status = 0
|
||||
bombers += "[key_name(user)] unwelded a single tank bomb. Temperature: [bombtank.air_contents.temperature-T0C]"
|
||||
user << "<span class='notice'>The hole has been closed.</span>"
|
||||
to_chat(user, "<span class='notice'>The hole has been closed.</span>")
|
||||
add_fingerprint(user)
|
||||
..()
|
||||
|
||||
|
||||
@@ -70,9 +70,9 @@
|
||||
..(user)
|
||||
if ((in_range(src, user) || src.loc == user))
|
||||
if (src.secured)
|
||||
user << "\The [src] is ready!"
|
||||
to_chat(user, "\The [src] is ready!")
|
||||
else
|
||||
user << "\The [src] can be attached!"
|
||||
to_chat(user, "\The [src] can be attached!")
|
||||
|
||||
|
||||
HasProximity(atom/movable/AM as mob|obj)
|
||||
@@ -140,15 +140,15 @@
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(!a_left || !a_right)
|
||||
user << "\red BUG:Assembly part missing, please report this!"
|
||||
to_chat(user, "\red BUG:Assembly part missing, please report this!")
|
||||
return
|
||||
a_left.toggle_secure()
|
||||
a_right.toggle_secure()
|
||||
secured = !secured
|
||||
if(secured)
|
||||
user << "\blue \The [src] is ready!"
|
||||
to_chat(user, "\blue \The [src] is ready!")
|
||||
else
|
||||
user << "\blue \The [src] can now be taken apart!"
|
||||
to_chat(user, "\blue \The [src] can now be taken apart!")
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
@@ -160,7 +160,7 @@
|
||||
src.add_fingerprint(user)
|
||||
if(src.secured)
|
||||
if(!a_left || !a_right)
|
||||
user << "\red Assembly part missing!"
|
||||
to_chat(user, "\red Assembly part missing!")
|
||||
return
|
||||
if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
|
||||
switch(alert("Which side would you like to use?",,"Left","Right"))
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
if(armed)
|
||||
user << "It looks like it's armed."
|
||||
to_chat(user, "It looks like it's armed.")
|
||||
|
||||
activate()
|
||||
if(..())
|
||||
@@ -20,7 +20,7 @@
|
||||
if(ishuman(usr))
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if(((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50)))
|
||||
user << "Your hand slips, setting off the trigger."
|
||||
to_chat(user, "Your hand slips, setting off the trigger.")
|
||||
pulse(0)
|
||||
update_icon()
|
||||
if(usr)
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
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(((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50)))
|
||||
var/which_hand = "l_hand"
|
||||
@@ -78,7 +78,7 @@
|
||||
user.visible_message("<span class='warning'>[user] accidentally sets off [src], breaking their fingers.</span>", \
|
||||
"<span class='warning'>You accidentally trigger [src]!</span>")
|
||||
return
|
||||
user << "<span class='notice'>You disarm [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You disarm [src].</span>")
|
||||
armed = !armed
|
||||
update_icon()
|
||||
playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3)
|
||||
@@ -142,4 +142,4 @@
|
||||
return
|
||||
|
||||
layer = TURF_LAYER+0.2
|
||||
usr << "<span class='notice'>You hide [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You hide [src].</span>")
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
return
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
status = !status
|
||||
user << "<span class='notice'>[src] is now [status ? "secured" : "unsecured"]!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] is now [status ? "secured" : "unsecured"]!</span>")
|
||||
add_fingerprint(user)
|
||||
return
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(!isnull(V.id_tag) && V.frequency == parent.frequency)
|
||||
valves|=V.id_tag
|
||||
if(valves.len==0)
|
||||
usr << "<span class='warning'>Unable to find any digital valves on this frequency.</span>"
|
||||
to_chat(usr, "<span class='warning'>Unable to find any digital valves on this frequency.</span>")
|
||||
return
|
||||
valve = input("Select a valve:", "Sensor Data", valve) as null|anything in valves
|
||||
parent.updateUsrDialog()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if(!isnull(E.id_tag) && E.frequency == parent.frequency)
|
||||
emitters|=E.id_tag
|
||||
if(emitters.len==0)
|
||||
usr << "<span class='warning'>Unable to find any emitters on this frequency.</span>"
|
||||
to_chat(usr, "<span class='warning'>Unable to find any emitters on this frequency.</span>")
|
||||
return
|
||||
emitter = input("Select an emitter:", "Emitter", emitter) as null|anything in emitters
|
||||
parent.updateUsrDialog()
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
injector_names |= I.id_tag
|
||||
else
|
||||
for(var/obj/machinery/atmospherics/binary/dp_vent_pump/I in world)
|
||||
//world << "test"
|
||||
// to_chat(world, "test")
|
||||
if(!isnull(I.id_tag) && I.frequency == parent.frequency)
|
||||
injector_names |= I.id_tag
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
light_color = LIGHT_COLOR_LIGHTBLUE
|
||||
|
||||
/obj/machinery/computer/artillerycontrol/attack_ai(user as mob)
|
||||
user << "<span class='warning'>Access denied.</span>"
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/artillerycontrol/attack_hand(user as mob)
|
||||
|
||||
@@ -97,10 +97,10 @@ obj/machinery/gateway/centerstation/process()
|
||||
if(!awaygate)
|
||||
awaygate = locate(/obj/machinery/gateway/centeraway) in world
|
||||
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)
|
||||
@@ -149,7 +149,7 @@ obj/machinery/gateway/centerstation/process()
|
||||
|
||||
/obj/machinery/gateway/centerstation/attackby(obj/item/device/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
user << "\black The gate is already calibrated, there is no work for you to do here."
|
||||
to_chat(user, "\black The gate is already calibrated, there is no work for you to do here.")
|
||||
return
|
||||
|
||||
/////////////////////////////////////Away////////////////////////
|
||||
@@ -204,7 +204,7 @@ obj/machinery/gateway/centerstation/process()
|
||||
if(!stationgate)
|
||||
stationgate = locate(/obj/machinery/gateway/centerstation) in world
|
||||
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)
|
||||
@@ -246,16 +246,16 @@ obj/machinery/gateway/centerstation/process()
|
||||
/obj/machinery/gateway/centeraway/proc/exilecheck(var/mob/living/carbon/M)
|
||||
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 << "<span class='notice'>The station gate has detected your exile implant and is blocking your entry.</span>"
|
||||
to_chat(M, "<span class='notice'>The station gate has detected your exile implant and is blocking your entry.</span>")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/gateway/centeraway/attackby(obj/item/device/W as obj, mob/user as mob, params)
|
||||
if(istype(W,/obj/item/device/multitool))
|
||||
if(calibrated)
|
||||
user << "<span class='notice'>The gate is already calibrated, there is no work for you to do here.</span>"
|
||||
to_chat(user, "<span class='notice'>The gate is already calibrated, there is no work for you to do here.</span>")
|
||||
return
|
||||
else
|
||||
user << "<span class='boldnotice'>Recalibration successful!</span><span class='notice'>: This gate's systems have been fine tuned. Travel to this gate will now be on target.</span>"
|
||||
to_chat(user, "<span class='boldnotice'>Recalibration successful!</span><span class='notice'>: This gate's systems have been fine tuned. Travel to this gate will now be on target.</span>")
|
||||
calibrated = 1
|
||||
return
|
||||
|
||||
@@ -36,7 +36,7 @@ dmm_suite{
|
||||
fdel("[map_name].dmm")
|
||||
}
|
||||
var/saved_map = file("[map_name].dmm")
|
||||
saved_map << file_text
|
||||
to_chat(saved_map, file_text)
|
||||
return saved_map
|
||||
}
|
||||
write_map(var/turf/t1 as turf, var/turf/t2 as turf, var/flags as num){
|
||||
|
||||
@@ -55,18 +55,18 @@
|
||||
usr.set_machine(src)
|
||||
|
||||
if(chargesa <= 0)
|
||||
user << "The Wish Granter lies silent."
|
||||
to_chat(user, "The Wish Granter lies silent.")
|
||||
return
|
||||
|
||||
else if(!istype(user, /mob/living/carbon/human))
|
||||
user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's."
|
||||
to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.")
|
||||
return
|
||||
|
||||
else if(is_special_character(user))
|
||||
user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away."
|
||||
to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.")
|
||||
|
||||
else if (!insistinga)
|
||||
user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?"
|
||||
to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?")
|
||||
insistinga++
|
||||
|
||||
else
|
||||
@@ -75,71 +75,71 @@
|
||||
var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","Immortality","To Kill","Peace")
|
||||
switch(wish)
|
||||
if("Power")
|
||||
user << "<B>Your wish is granted, but at a terrible cost...</B>"
|
||||
user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
user.mutations.Add(LASER)
|
||||
user.mutations.Add(RESIST_COLD)
|
||||
user.mutations.Add(XRAY)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(human.species.name != "Shadow")
|
||||
user << "\red Your flesh rapidly mutates!"
|
||||
user << "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>"
|
||||
user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness."
|
||||
user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations."
|
||||
to_chat(user, "\red Your flesh rapidly mutates!")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species("Shadow")
|
||||
user.regenerate_icons()
|
||||
if("Wealth")
|
||||
user << "<B>Your wish is granted, but at a terrible cost...</B>"
|
||||
user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
new /obj/structure/closet/syndicate/resources/everything(loc)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(human.species.name != "Shadow")
|
||||
user << "\red Your flesh rapidly mutates!"
|
||||
user << "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>"
|
||||
user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness."
|
||||
user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations."
|
||||
to_chat(user, "\red Your flesh rapidly mutates!")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species("Shadow")
|
||||
user.regenerate_icons()
|
||||
if("Immortality")
|
||||
user << "<B>Your wish is granted, but at a terrible cost...</B>"
|
||||
user << "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
user.verbs += /mob/living/carbon/proc/immortality
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(human.species.name != "Shadow")
|
||||
user << "\red Your flesh rapidly mutates!"
|
||||
user << "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>"
|
||||
user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness."
|
||||
user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations."
|
||||
to_chat(user, "\red Your flesh rapidly mutates!")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species("Shadow")
|
||||
user.regenerate_icons()
|
||||
if("To Kill")
|
||||
user << "<B>Your wish is granted, but at a terrible cost...</B>"
|
||||
user << "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart."
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
ticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "traitor"
|
||||
var/datum/objective/hijack/hijack = new
|
||||
hijack.owner = user.mind
|
||||
user.mind.objectives += hijack
|
||||
user << "<B>Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!</B>"
|
||||
to_chat(user, "<B>Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!</B>")
|
||||
var/obj_count = 1
|
||||
for(var/datum/objective/OBJ in user.mind.objectives)
|
||||
user << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
|
||||
to_chat(user, "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]")
|
||||
obj_count++
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(human.species.name != "Shadow")
|
||||
user << "\red Your flesh rapidly mutates!"
|
||||
user << "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>"
|
||||
user << "\red Your body reacts violently to light. \green However, it naturally heals in darkness."
|
||||
user << "Aside from your new traits, you are mentally unchanged and retain your prior obligations."
|
||||
to_chat(user, "\red Your flesh rapidly mutates!")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "\red Your body reacts violently to light. \green However, it naturally heals in darkness.")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species("Shadow")
|
||||
user.regenerate_icons()
|
||||
if("Peace")
|
||||
user << "<B>Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.</B>"
|
||||
user << "You feel as if you just narrowly avoided a terrible fate..."
|
||||
to_chat(user, "<B>Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.</B>")
|
||||
to_chat(user, "You feel as if you just narrowly avoided a terrible fate...")
|
||||
for(var/mob/living/simple_animal/hostile/faithless/F in world)
|
||||
F.health = -10
|
||||
F.stat = 2
|
||||
@@ -172,7 +172,7 @@
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
O << "<font color='red'>[M] triggered the \icon[src] [src]</font>"
|
||||
to_chat(O, "<font color='red'>[M] triggered the \icon[src] [src]</font>")
|
||||
triggered = 1
|
||||
call(src,triggerproc)(M)
|
||||
|
||||
@@ -193,9 +193,9 @@
|
||||
|
||||
var/mob/living/carbon/C = usr
|
||||
if(!C.stat)
|
||||
C << "<span class='notice'>You're not dead yet!</span>"
|
||||
to_chat(C, "<span class='notice'>You're not dead yet!</span>")
|
||||
return
|
||||
C << "<span class='notice'>Death is not your end!</span>"
|
||||
to_chat(C, "<span class='notice'>Death is not your end!</span>")
|
||||
|
||||
spawn(rand(800,1200))
|
||||
if(C.stat == DEAD)
|
||||
@@ -212,7 +212,7 @@
|
||||
C.radiation = 0
|
||||
C.heal_overall_damage(C.getBruteLoss(), C.getFireLoss())
|
||||
C.reagents.clear_reagents()
|
||||
C << "<span class='notice'>You have regenerated.</span>"
|
||||
to_chat(C, "<span class='notice'>You have regenerated.</span>")
|
||||
C.visible_message("<span class='warning'>[usr] appears to wake from the dead, having healed all wounds.</span>")
|
||||
C.update_canmove()
|
||||
return 1
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
|
||||
if(!unreceived || !unreceived.len)
|
||||
return 0
|
||||
if (unreceived.len >= ASSET_CACHE_TELL_CLIENT_AMOUNT)
|
||||
client << "Sending Resources..."
|
||||
to_chat(client, "Sending Resources...")
|
||||
for(var/asset in unreceived)
|
||||
if (asset in asset_cache)
|
||||
client << browse_rsc(asset_cache[asset], asset)
|
||||
|
||||
@@ -28,16 +28,17 @@
|
||||
return
|
||||
|
||||
#if defined(TOPIC_DEBUGGING)
|
||||
world << "[src]'s Topic: [href] destined for [hsrc]."
|
||||
to_chat(world, "[src]'s Topic: [href] destined for [hsrc].")
|
||||
#endif
|
||||
|
||||
if(href_list["nano_err"]) //nano throwing errors
|
||||
if(topic_debugging)
|
||||
src << "## NanoUI: " + html_decode(href_list["nano_err"]) //NANO DEBUG HOOK
|
||||
to_chat(src, "## NanoUI: " + html_decode(href_list["nano_err"]))//NANO DEBUG HOOK
|
||||
|
||||
|
||||
|
||||
if(href_list["asset_cache_confirm_arrival"])
|
||||
//src << "ASSET JOB [href_list["asset_cache_confirm_arrival"]] ARRIVED."
|
||||
// to_chat(src, "ASSET JOB [href_list["asset_cache_confirm_arrival"]] ARRIVED.")
|
||||
var/job = text2num(href_list["asset_cache_confirm_arrival"])
|
||||
completed_asset_jobs += job
|
||||
return
|
||||
@@ -65,10 +66,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
|
||||
cmd_admin_irc_pm()
|
||||
return
|
||||
@@ -77,7 +78,7 @@
|
||||
|
||||
//Logs all hrefs
|
||||
if(config && config.log_hrefs && href_logfile)
|
||||
href_logfile << "<small>[time2text(world.timeofday,"hh:mm")] [src] (usr:[usr])</small> || [hsrc ? "[hsrc] " : ""][href]<br>"
|
||||
to_chat(href_logfile, "<small>[time2text(world.timeofday,"hh:mm")] [src] (usr:[usr])</small> || [hsrc ? "[hsrc] " : ""][href]<br>")
|
||||
|
||||
switch(href_list["karmashop"])
|
||||
if("tab")
|
||||
@@ -90,49 +91,49 @@
|
||||
switch(href_list["KarmaBuy"])
|
||||
if("1")
|
||||
if(karma <5)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Barber",5)
|
||||
return
|
||||
if("2")
|
||||
if(karma <5)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Brig Physician",5)
|
||||
return
|
||||
if("3")
|
||||
if(karma <30)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Nanotrasen Representative",30)
|
||||
return
|
||||
if("5")
|
||||
if(karma <30)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Blueshield",30)
|
||||
return
|
||||
if("6")
|
||||
if(karma <30)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Mechanic",30)
|
||||
return
|
||||
if("7")
|
||||
if(karma <45)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Magistrate",45)
|
||||
return
|
||||
if("9")
|
||||
if(karma <30)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_job_unlock("Security Pod Pilot",30)
|
||||
@@ -142,42 +143,42 @@
|
||||
switch(href_list["KarmaBuy2"])
|
||||
if("1")
|
||||
if(karma <15)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_species_unlock("Machine",15)
|
||||
return
|
||||
if("2")
|
||||
if(karma <30)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_species_unlock("Kidan",30)
|
||||
return
|
||||
if("3")
|
||||
if(karma <30)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_species_unlock("Grey",30)
|
||||
return
|
||||
if("4")
|
||||
if(karma <45)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_species_unlock("Vox",45)
|
||||
return
|
||||
if("5")
|
||||
if(karma <45)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_species_unlock("Slime People",45)
|
||||
return
|
||||
if("6")
|
||||
if(karma <100)
|
||||
usr << "You do not have enough karma!"
|
||||
to_chat(usr, "You do not have enough karma!")
|
||||
return
|
||||
else
|
||||
src.DB_species_unlock("Plasmaman",100)
|
||||
@@ -199,7 +200,7 @@
|
||||
|
||||
/client/proc/is_content_unlocked()
|
||||
if(!prefs.unlock_content)
|
||||
src << "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. <a href='http://www.byond.com/membership'>Click here to find out more</a>."
|
||||
to_chat(src, "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. <a href='http://www.byond.com/membership'>Click here to find out more</a>.")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -207,11 +208,11 @@
|
||||
if(config.automute_on && !holder && src.last_message == message)
|
||||
src.last_message_count++
|
||||
if(src.last_message_count >= SPAM_TRIGGER_AUTOMUTE)
|
||||
src << "\red You have exceeded the spam filter limit for identical messages. An auto-mute was applied."
|
||||
to_chat(src, "\red You have exceeded the spam filter limit for identical messages. An auto-mute was applied.")
|
||||
cmd_admin_mute(src.mob, mute_type, 1)
|
||||
return 1
|
||||
if(src.last_message_count >= SPAM_TRIGGER_WARNING)
|
||||
src << "\red You are nearing the spam filter limit for identical messages."
|
||||
to_chat(src, "\red You are nearing the spam filter limit for identical messages.")
|
||||
return 0
|
||||
else
|
||||
last_message = message
|
||||
@@ -221,13 +222,13 @@
|
||||
//This stops files larger than UPLOAD_LIMIT being sent from client to server via input(), client.Import() etc.
|
||||
/client/AllowUpload(filename, filelength)
|
||||
if(filelength > UPLOAD_LIMIT)
|
||||
src << "<font color='red'>Error: AllowUpload(): File Upload too large. Upload Limit: [UPLOAD_LIMIT/1024]KiB.</font>"
|
||||
to_chat(src, "<font color='red'>Error: AllowUpload(): File Upload too large. Upload Limit: [UPLOAD_LIMIT/1024]KiB.</font>")
|
||||
return 0
|
||||
/* //Don't need this at the moment. But it's here if it's needed later.
|
||||
//Helps prevent multiple files being uploaded at once. Or right after eachother.
|
||||
var/time_to_wait = fileaccess_timer - world.time
|
||||
if(time_to_wait > 0)
|
||||
src << "<font color='red'>Error: AllowUpload(): Spam prevention. Please wait [round(time_to_wait/10)] seconds.</font>"
|
||||
to_chat(src, "<font color='red'>Error: AllowUpload(): Spam prevention. Please wait [round(time_to_wait/10)] seconds.</font>")
|
||||
return 0
|
||||
fileaccess_timer = world.time + FTPDELAY */
|
||||
return 1
|
||||
@@ -254,7 +255,7 @@
|
||||
src.preload_rsc = pick(config.resource_urls)
|
||||
else src.preload_rsc = 1 // If config.resource_urls is not set, preload like normal.
|
||||
|
||||
src << "\red If the title screen is black, resources are still downloading. Please be patient until the title screen appears."
|
||||
to_chat(src, "\red If the title screen is black, resources are still downloading. Please be patient until the title screen appears.")
|
||||
|
||||
|
||||
clients += src
|
||||
@@ -277,10 +278,10 @@
|
||||
. = ..() //calls mob.Login()
|
||||
|
||||
if(custom_event_msg && custom_event_msg != "")
|
||||
src << "<h1 class='alert'>Custom Event</h1>"
|
||||
src << "<h2 class='alert'>A custom event is taking place. OOC Info:</h2>"
|
||||
src << "<span class='alert'>[html_encode(custom_event_msg)]</span>"
|
||||
src << "<br>"
|
||||
to_chat(src, "<h1 class='alert'>Custom Event</h1>")
|
||||
to_chat(src, "<h2 class='alert'>A custom event is taking place. OOC Info:</h2>")
|
||||
to_chat(src, "<span class='alert'>[html_encode(custom_event_msg)]</span>")
|
||||
to_chat(src, "<br>")
|
||||
|
||||
if( (world.address == address || !address) && !host )
|
||||
host = key
|
||||
@@ -301,7 +302,7 @@
|
||||
|
||||
if (ckey in clientmessages)
|
||||
for (var/message in clientmessages[ckey])
|
||||
src << message
|
||||
to_chat(src, message)
|
||||
clientmessages.Remove(ckey)
|
||||
|
||||
|
||||
@@ -313,7 +314,7 @@
|
||||
screen += void
|
||||
|
||||
if(!winexists(src, "asset_cache_browser")) // The client is using a custom skin, tell them.
|
||||
src << "<span class='warning'>Unable to access asset cache browser, if you are using a custom skin file, please allow DS to download the updated version, if you are not, then make a bug report. This is not a critical issue but can cause issues with resource downloading, as it is impossible to know when extra resources arrived to you.</span>"
|
||||
to_chat(src, "<span class='warning'>Unable to access asset cache browser, if you are using a custom skin file, please allow DS to download the updated version, if you are not, then make a bug report. This is not a critical issue but can cause issues with resource downloading, as it is impossible to know when extra resources arrived to you.</span>")
|
||||
|
||||
|
||||
//////////////
|
||||
@@ -431,4 +432,4 @@
|
||||
var/message = "[lang.name] : [lang.type]"
|
||||
if(lang.flags & RESTRICTED)
|
||||
message += " (RESTRICTED)"
|
||||
world << "[message]"
|
||||
to_chat(world, "[message]")
|
||||
|
||||
@@ -262,7 +262,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
//display limbs below
|
||||
var/ind = 0
|
||||
for(var/name in organ_data)
|
||||
//world << "[ind] \ [organ_data.len]"
|
||||
// to_chat(world, "[ind] \ [organ_data.len]")
|
||||
var/status = organ_data[name]
|
||||
var/organ_name = null
|
||||
switch(name)
|
||||
@@ -673,7 +673,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
return
|
||||
|
||||
if (!isnum(desiredLvl))
|
||||
user << "\red UpdateJobPreference - desired level was not a number. Please notify coders!"
|
||||
to_chat(user, "\red UpdateJobPreference - desired level was not a number. Please notify coders!")
|
||||
ShowChoices(user)
|
||||
return
|
||||
|
||||
@@ -1057,7 +1057,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if(new_name)
|
||||
real_name = new_name
|
||||
else
|
||||
user << "<font color='red'>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 .</font>"
|
||||
to_chat(user, "<font color='red'>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 .</font>")
|
||||
|
||||
if("age")
|
||||
var/new_age = input(user, "Choose your character's age:\n([AGE_MIN]-[AGE_MAX])", "Character Preference") as num|null
|
||||
@@ -1583,7 +1583,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
var/cleaned_r = sql_sanitize_text(r)
|
||||
if(r != cleaned_r) // up to no good
|
||||
message_admins("[user] attempted an href exploit! (This could have possibly lead to a \"Bobby Tables\" exploit, so they're probably up to no good). String: [r] ID: [last_id] IP: [last_ip]")
|
||||
user << "<span class='userdanger'>Stop right there, criminal scum</span>"
|
||||
to_chat(user, "<span class='userdanger'>Stop right there, criminal scum</span>")
|
||||
else
|
||||
be_special ^= r
|
||||
|
||||
@@ -1599,9 +1599,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
if("lobby_music")
|
||||
sound ^= SOUND_LOBBY
|
||||
if(sound & SOUND_LOBBY)
|
||||
user << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1)
|
||||
to_chat(user, sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1))
|
||||
else
|
||||
user << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)
|
||||
to_chat(user, sound(null, repeat = 0, wait = 0, volume = 85, channel = 1))
|
||||
|
||||
if("ghost_ears")
|
||||
toggles ^= CHAT_GHOSTEARS
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
set category = "Preferences"
|
||||
set desc = ".Toggle Between seeing all mob speech, and only speech of nearby mobs"
|
||||
prefs.toggles ^= CHAT_GHOSTEARS
|
||||
src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"]."
|
||||
to_chat(src, "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTEARS) ? "see all speech in the world" : "only see speech from nearby mobs"].")
|
||||
prefs.save_preferences(src)
|
||||
feedback_add_details("admin_verb","TGE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
set category = "Preferences"
|
||||
set desc = ".Toggle Between seeing all mob emotes, and only emotes of nearby mobs"
|
||||
prefs.toggles ^= CHAT_GHOSTSIGHT
|
||||
src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"]."
|
||||
to_chat(src, "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTSIGHT) ? "see all emotes in the world" : "only see emotes from nearby mobs"].")
|
||||
prefs.save_preferences(src)
|
||||
feedback_add_details("admin_verb","TGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
set category = "Preferences"
|
||||
set desc = ".Toggle between hearing all radio chatter, or only from nearby speakers"
|
||||
prefs.toggles ^= CHAT_GHOSTRADIO
|
||||
src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"]."
|
||||
to_chat(src, "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"].")
|
||||
prefs.save_preferences(src)
|
||||
feedback_add_details("admin_verb","TGR")
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
if(!holder) return
|
||||
prefs.toggles ^= CHAT_RADIO
|
||||
prefs.save_preferences(src)
|
||||
usr << "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers"
|
||||
to_chat(usr, "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers")
|
||||
feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/toggleadminhelpsound()
|
||||
@@ -43,7 +43,7 @@
|
||||
if(!holder) return
|
||||
prefs.sound ^= SOUND_ADMINHELP
|
||||
prefs.save_preferences(src)
|
||||
usr << "You will [(prefs.sound & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive."
|
||||
to_chat(usr, "You will [(prefs.sound & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive.")
|
||||
feedback_add_details("admin_verb","AHS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/deadchat() // Deadchat toggle is usable by anyone.
|
||||
@@ -54,9 +54,9 @@
|
||||
prefs.save_preferences(src)
|
||||
|
||||
if(src.holder)
|
||||
src << "You will [(prefs.toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat."
|
||||
to_chat(src, "You will [(prefs.toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat.")
|
||||
else
|
||||
src << "As a ghost, you will [(prefs.toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat."
|
||||
to_chat(src, "As a ghost, you will [(prefs.toggles & CHAT_DEAD) ? "now" : "no longer"] see deadchat.")
|
||||
|
||||
feedback_add_details("admin_verb","TDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
set desc = "Toggles seeing prayers"
|
||||
prefs.toggles ^= CHAT_PRAYER
|
||||
prefs.save_preferences(src)
|
||||
src << "You will [(prefs.toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat."
|
||||
to_chat(src, "You will [(prefs.toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat.")
|
||||
feedback_add_details("admin_verb","TP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/togglescoreboard()
|
||||
@@ -75,7 +75,7 @@
|
||||
set desc = "Toggles displaying end of round scoreboard"
|
||||
prefs.toggles ^= DISABLE_SCOREBOARD
|
||||
prefs.save_preferences(src)
|
||||
src << "You will [(prefs.toggles & DISABLE_SCOREBOARD) ? "no longer" : "now"] see the end of round scoreboard."
|
||||
to_chat(src, "You will [(prefs.toggles & DISABLE_SCOREBOARD) ? "no longer" : "now"] see the end of round scoreboard.")
|
||||
feedback_add_details("admin_verb","TScoreboard") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/togglekarmareminder()
|
||||
@@ -84,7 +84,7 @@
|
||||
set desc = "Toggles displaying end of round karma reminder"
|
||||
prefs.toggles ^= DISABLE_KARMA_REMINDER
|
||||
prefs.save_preferences(src)
|
||||
src << "You will [(prefs.toggles & DISABLE_KARMA_REMINDER) ? "no longer" : "now"] see the end of round karma reminder."
|
||||
to_chat(src, "You will [(prefs.toggles & DISABLE_KARMA_REMINDER) ? "no longer" : "now"] see the end of round karma reminder.")
|
||||
feedback_add_details("admin_verb","TKarmabugger") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/toggletitlemusic()
|
||||
@@ -94,13 +94,14 @@
|
||||
prefs.sound ^= SOUND_LOBBY
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.sound & SOUND_LOBBY)
|
||||
src << "You will now hear music in the game lobby."
|
||||
to_chat(src, "You will now hear music in the game lobby.")
|
||||
if(istype(mob, /mob/new_player))
|
||||
playtitlemusic()
|
||||
else
|
||||
src << "You will no longer hear music in the game lobby."
|
||||
to_chat(src, "You will no longer hear music in the game lobby.")
|
||||
if(istype(mob, /mob/new_player))
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jamsz
|
||||
to_chat(src, sound(null, repeat = 0, wait = 0, volume = 85, channel = 1))// stop the jamsz
|
||||
|
||||
feedback_add_details("admin_verb","TLobby") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/togglemidis()
|
||||
@@ -110,12 +111,13 @@
|
||||
prefs.sound ^= SOUND_MIDI
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.sound & SOUND_MIDI)
|
||||
src << "You will now hear any sounds uploaded by admins."
|
||||
to_chat(src, "You will now hear any sounds uploaded by admins.")
|
||||
else
|
||||
var/sound/break_sound = sound(null, repeat = 0, wait = 0, channel = 777)
|
||||
break_sound.priority = 250
|
||||
src << break_sound //breaks the client's sound output on channel 777
|
||||
src << "You will no longer hear sounds uploaded by admins; any currently playing midis have been disabled."
|
||||
to_chat(src, break_sound)//breaks the client's sound output on channel 777
|
||||
|
||||
to_chat(src, "You will no longer hear sounds uploaded by admins; any currently playing midis have been disabled.")
|
||||
feedback_add_details("admin_verb","TMidi") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/listen_ooc()
|
||||
@@ -124,7 +126,7 @@
|
||||
set desc = "Toggles seeing OutOfCharacter chat"
|
||||
prefs.toggles ^= CHAT_OOC
|
||||
prefs.save_preferences(src)
|
||||
src << "You will [(prefs.toggles & CHAT_OOC) ? "now" : "no longer"] see messages on the OOC channel."
|
||||
to_chat(src, "You will [(prefs.toggles & CHAT_OOC) ? "now" : "no longer"] see messages on the OOC channel.")
|
||||
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -134,7 +136,7 @@
|
||||
set desc = "Toggles seeing Local OutOfCharacter chat"
|
||||
prefs.toggles ^= CHAT_LOOC
|
||||
prefs.save_preferences(src)
|
||||
src << "You will [(prefs.toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel."
|
||||
to_chat(src, "You will [(prefs.toggles & CHAT_LOOC) ? "now" : "no longer"] see messages on the LOOC channel.")
|
||||
feedback_add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -145,10 +147,10 @@
|
||||
prefs.sound ^= SOUND_AMBIENCE
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.sound & SOUND_AMBIENCE)
|
||||
src << "You will now hear ambient sounds."
|
||||
to_chat(src, "You will now hear ambient sounds.")
|
||||
else
|
||||
src << "You will no longer hear ambient sounds."
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1)
|
||||
to_chat(src, "You will no longer hear ambient sounds.")
|
||||
to_chat(src, sound(null, repeat = 0, wait = 0, volume = 0, channel = 1))
|
||||
feedback_add_details("admin_verb","TAmbi") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/Toggle_Buzz() //No more headaches because headphones bump up shipambience.ogg to insanity levels.
|
||||
@@ -158,10 +160,10 @@
|
||||
prefs.sound ^= SOUND_BUZZ
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.sound & SOUND_BUZZ)
|
||||
src << "You will now hear ambient white noise."
|
||||
to_chat(src, "You will now hear ambient white noise.")
|
||||
else
|
||||
src << "You will no longer hear ambient white noise."
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2)
|
||||
to_chat(src, "You will no longer hear ambient white noise.")
|
||||
to_chat(src, sound(null, repeat = 0, wait = 0, volume = 0, channel = 2))
|
||||
feedback_add_details("admin_verb","TBuzz") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -172,11 +174,11 @@
|
||||
prefs.sound ^= SOUND_HEARTBEAT
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.sound & SOUND_HEARTBEAT)
|
||||
src << "You will now hear heartbeat sounds."
|
||||
to_chat(src, "You will now hear heartbeat sounds.")
|
||||
else
|
||||
src << "You will no longer hear heartbeat sounds."
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 1)
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 0, channel = 2)
|
||||
to_chat(src, "You will no longer hear heartbeat sounds.")
|
||||
to_chat(src, sound(null, repeat = 0, wait = 0, volume = 0, channel = 1))
|
||||
to_chat(src, sound(null, repeat = 0, wait = 0, volume = 0, channel = 2))
|
||||
feedback_add_details("admin_verb","Thb") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
// This needs a toggle because you people are awful and spammed terrible music
|
||||
@@ -187,9 +189,9 @@
|
||||
prefs.toggles ^= SOUND_INSTRUMENTS
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.toggles & SOUND_INSTRUMENTS)
|
||||
src << "You will now hear people playing musical instruments."
|
||||
to_chat(src, "You will now hear people playing musical instruments.")
|
||||
else
|
||||
src << "You will no longer hear musical instruments."
|
||||
to_chat(src, "You will no longer hear musical instruments.")
|
||||
feedback_add_details("admin_verb","TInstru") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/toggle_media()
|
||||
@@ -199,7 +201,7 @@
|
||||
|
||||
prefs.sound ^= SOUND_STREAMING
|
||||
prefs.save_preferences(src)
|
||||
usr << "You will [(prefs.sound & SOUND_STREAMING) ? "now" : "no longer"] hear streamed media."
|
||||
to_chat(usr, "You will [(prefs.sound & SOUND_STREAMING) ? "now" : "no longer"] hear streamed media.")
|
||||
if(!media) return
|
||||
if(prefs.sound & SOUND_STREAMING)
|
||||
media.update_music()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
wearable = 1
|
||||
|
||||
if(!wearable)
|
||||
M << "\red Your species cannot wear [src]."
|
||||
to_chat(M, "\red Your species cannot wear [src].")
|
||||
return 0
|
||||
|
||||
return 1
|
||||
@@ -200,7 +200,7 @@ BLIND // can't see anything
|
||||
species_restricted -= "Tajaran"
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>[src] have already been clipped!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] have already been clipped!</span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -213,29 +213,29 @@ BLIND // can't see anything
|
||||
if (istype(M, /mob/dead/)) return
|
||||
if (user.stat || user.restrained()) return
|
||||
if(has_sensor >= 2)
|
||||
user << "The controls are locked."
|
||||
to_chat(user, "The controls are locked.")
|
||||
return 0
|
||||
if(has_sensor <= 0)
|
||||
user << "This suit does not have any sensors."
|
||||
to_chat(user, "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(user, src) > 1)
|
||||
user << "You have moved too far away."
|
||||
to_chat(user, "You have moved too far away.")
|
||||
return
|
||||
sensor_mode = modes.Find(switchMode) - 1
|
||||
|
||||
if (src.loc == user)
|
||||
switch(sensor_mode)
|
||||
if(0)
|
||||
user << "You disable your suit's remote sensing equipment."
|
||||
to_chat(user, "You disable your suit's remote sensing equipment.")
|
||||
if(1)
|
||||
user << "Your suit will now report whether you are live or dead."
|
||||
to_chat(user, "Your suit will now report whether you are live or dead.")
|
||||
if(2)
|
||||
user << "Your suit will now report your vital lifesigns."
|
||||
to_chat(user, "Your suit will now report your vital lifesigns.")
|
||||
if(3)
|
||||
user << "Your suit will now report your vital lifesigns as well as your coordinate position."
|
||||
to_chat(user, "Your suit will now report your vital lifesigns as well as your coordinate position.")
|
||||
if(istype(user,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.w_uniform == src)
|
||||
@@ -303,7 +303,7 @@ BLIND // can't see anything
|
||||
Had to use this instead of initial() because initial reverted to the wrong state.*/
|
||||
gas_transfer_coefficient = initial(gas_transfer_coefficient)
|
||||
permeability_coefficient = initial(permeability_coefficient)
|
||||
user << "You push \the [src] back into place."
|
||||
to_chat(user, "You push \the [src] back into place.")
|
||||
mask_adjusted = 0
|
||||
slot_flags = initial(slot_flags)
|
||||
if(flags_inv != initial(flags_inv))
|
||||
@@ -324,7 +324,7 @@ BLIND // can't see anything
|
||||
user.put_in_hands(src)
|
||||
else
|
||||
icon_state += "_up"
|
||||
user << "You push \the [src] out of the way."
|
||||
to_chat(user, "You push \the [src] out of the way.")
|
||||
gas_transfer_coefficient = null
|
||||
permeability_coefficient = null
|
||||
mask_adjusted = 1
|
||||
@@ -393,7 +393,7 @@ BLIND // can't see anything
|
||||
M.dropped()
|
||||
user.visible_message("<span class='warning'>[user] crushes the [M] into the bottom of [src], extinguishing it.</span>","<span class='warning'>You crush the [M] into the bottom of [src], extinguishing it.</span>")
|
||||
else // Match has been previously lit and extinguished.
|
||||
user << "<span class='notice'>The [M] has already been extinguished.</span>"
|
||||
to_chat(user, "<span class='notice'>The [M] has already been extinguished.</span>")
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/weapon/wirecutters))
|
||||
@@ -411,7 +411,7 @@ BLIND // can't see anything
|
||||
species_restricted -= "Tajaran"
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>[src] have already had their toes cut open!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] have already had their toes cut open!</span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -463,7 +463,7 @@ BLIND // can't see anything
|
||||
item_state = copytext(item_state, 1, findtext(item_state, "_open"))
|
||||
if(adjust_flavour)
|
||||
flavour = "[copytext(adjust_flavour, 3, lentext(adjust_flavour) + 1)] up" //Trims off the 'un' at the beginning of the word. unzip -> zip, unbutton->button.
|
||||
user << "You [flavour] \the [src]."
|
||||
to_chat(user, "You [flavour] \the [src].")
|
||||
suit_adjusted = 0 //Suit is no longer adjusted.
|
||||
else
|
||||
var/flavour = "open"
|
||||
@@ -471,7 +471,7 @@ BLIND // can't see anything
|
||||
item_state += "_open"
|
||||
if(adjust_flavour)
|
||||
flavour = "[adjust_flavour]"
|
||||
user << "You [flavour] \the [src]."
|
||||
to_chat(user, "You [flavour] \the [src].")
|
||||
suit_adjusted = 1 //Suit's adjusted.
|
||||
else
|
||||
if(user.canUnEquip(src)) //Checks to see if the item can be unequipped. If so, lets shred. Otherwise, struggle and fail.
|
||||
@@ -487,11 +487,12 @@ BLIND // can't see anything
|
||||
qdel(src) //Now that the pockets have been emptied, we can safely destroy the jacket.
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
|
||||
else
|
||||
user << "<span class='warning'>You yank and pull at \the [src] with your [pick("excessive", "extreme", "insane", "monstrous", "ridiculous", "unreal", "stupendous")] [pick("power", "strength")], however you are unable to change its state!</span>" //Yep, that's all they get. Avoids having to snowflake in a cooldown.
|
||||
to_chat(user, "<span class='warning'>You yank and pull at \the [src] with your [pick("excessive", "extreme", "insane", "monstrous", "ridiculous", "unreal", "stupendous")] [pick("power", "strength")], however you are unable to change its state!</span>")//Yep, that's all they get. Avoids having to snowflake in a cooldown.
|
||||
|
||||
return
|
||||
user.update_inv_wear_suit()
|
||||
else
|
||||
user << "<span class='notice'>You attempt to button up the velcro on \the [src], before promptly realising how retarded you are.</span>"
|
||||
to_chat(user, "<span class='notice'>You attempt to button up the velcro on \the [src], before promptly realising how retarded you are.</span>")
|
||||
|
||||
/obj/item/clothing/suit/verb/openjacket(var/mob/user) //The verb you can use to adjust jackets.
|
||||
set name = "Open/Close Jacket"
|
||||
@@ -599,7 +600,7 @@ BLIND // can't see anything
|
||||
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You cannot attach more accessories of this type to [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You cannot attach more accessories of this type to [src].</span>")
|
||||
|
||||
if(accessories.len)
|
||||
for(var/obj/item/clothing/accessory/A in accessories)
|
||||
@@ -642,16 +643,16 @@ BLIND // can't see anything
|
||||
..(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.")
|
||||
if(accessories.len)
|
||||
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.")
|
||||
|
||||
|
||||
/obj/item/clothing/under/verb/rollsuit()
|
||||
@@ -663,12 +664,12 @@ BLIND // can't see anything
|
||||
|
||||
if(copytext(item_color,-2) != "_d")
|
||||
basecolor = item_color
|
||||
usr << "DEBUG:[basecolor]"
|
||||
to_chat(usr, "DEBUG:[basecolor]")
|
||||
if(basecolor + "_d_s" in icon_states('icons/mob/uniform.dmi'))
|
||||
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
|
||||
usr.update_inv_w_uniform()
|
||||
else
|
||||
usr << "<span class='notice'>You cannot roll down the uniform!</span>"
|
||||
to_chat(usr, "<span class='notice'>You cannot roll down the uniform!</span>")
|
||||
|
||||
/obj/item/clothing/under/proc/remove_accessory(mob/user, obj/item/clothing/accessory/A)
|
||||
if(!(A in accessories))
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
if(prescription_upgradable)
|
||||
if(istype(O, /obj/item/clothing/glasses/regular))
|
||||
if(prescription)
|
||||
H << "You can't possibly imagine how adding more lenses would improve \the [name]."
|
||||
to_chat(H, "You can't possibly imagine how adding more lenses would improve \the [name].")
|
||||
return
|
||||
H.unEquip(O)
|
||||
O.loc = src // Store the glasses for later removal
|
||||
H << "You fit \the [name] with lenses from \the [O]."
|
||||
to_chat(H, "You fit \the [name] with lenses from \the [O].")
|
||||
prescription = 1
|
||||
name = "prescription [name]"
|
||||
return
|
||||
@@ -36,7 +36,7 @@
|
||||
var/obj/item/clothing/glasses/regular/G = locate() in src
|
||||
if(!G)
|
||||
G = new(get_turf(H))
|
||||
H << "You salvage the prescription lenses from \the [name]."
|
||||
to_chat(H, "You salvage the prescription lenses from \the [name].")
|
||||
prescription = 0
|
||||
name = initial(name)
|
||||
H.put_in_hands(G)
|
||||
@@ -264,7 +264,7 @@
|
||||
playsound(src.loc, 'sound/misc/yeah.ogg', 100, 0)
|
||||
usr.visible_message("<span class='biggerdanger'>YEEEAAAAAHHHHHHHHHHHHH!!</span>")
|
||||
else
|
||||
usr << "The moment is gone."
|
||||
to_chat(usr, "The moment is gone.")
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/reagent
|
||||
@@ -324,7 +324,7 @@
|
||||
src.flags |= GLASSESCOVERSEYES
|
||||
flags_inv |= HIDEEYES
|
||||
icon_state = initial(icon_state)
|
||||
usr << "You flip the [src] down to protect your eyes."
|
||||
to_chat(usr, "You flip the [src] down to protect your eyes.")
|
||||
flash_protect = 2
|
||||
tint = initial(tint) //better than istype
|
||||
else
|
||||
@@ -332,7 +332,7 @@
|
||||
src.flags &= ~HEADCOVERSEYES
|
||||
flags_inv &= ~HIDEEYES
|
||||
icon_state = "[initial(icon_state)]up"
|
||||
usr << "You push the [src] up out of your face."
|
||||
to_chat(usr, "You push the [src] up out of your face.")
|
||||
flash_protect = 0
|
||||
tint = 0
|
||||
|
||||
@@ -392,7 +392,7 @@
|
||||
emp_act(severity)
|
||||
if(istype(src.loc, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = src.loc
|
||||
M << "\red The Optical Thermal Scanner overloads and blinds you!"
|
||||
to_chat(M, "\red The Optical Thermal Scanner overloads and blinds you!")
|
||||
if(M.glasses == src)
|
||||
M.eye_blind = 3
|
||||
M.eye_blurry = 5
|
||||
|
||||
@@ -21,21 +21,21 @@
|
||||
icon_state = initial(icon_state)
|
||||
examine(mob/user)
|
||||
..(user)
|
||||
user << "This one is made of [material]."
|
||||
to_chat(user, "This one is made of [material].")
|
||||
if(stud)
|
||||
user << "It is adorned with a single gem."
|
||||
to_chat(user, "It is adorned with a single gem.")
|
||||
|
||||
/obj/item/clothing/gloves/ring/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/diamond))
|
||||
var/obj/item/stack/sheet/mineral/diamond/D = I
|
||||
if(stud)
|
||||
usr << "<span class='notice'>The [src] already has a gem.</span>"
|
||||
to_chat(usr, "<span class='notice'>The [src] already has a gem.</span>")
|
||||
else
|
||||
if(D.amount >= 1)
|
||||
D.use(1)
|
||||
stud = 1
|
||||
update_icon()
|
||||
usr << "<span class='notice'>You socket the diamond into the [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You socket the diamond into the [src].</span>")
|
||||
|
||||
// s'pensive
|
||||
/obj/item/clothing/gloves/ring/silver
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
|
||||
attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
|
||||
to_chat(user, "You cannot turn the light on while in this [user.loc]")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
on = !on
|
||||
icon_state = "hardhat[on]_[item_color]"
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
flags ^= visor_flags
|
||||
flags_inv ^= visor_flags_inv
|
||||
icon_state = "[initial(icon_state)][up ? "up" : ""]"
|
||||
user << "[up ? alt_toggle_message : toggle_message] \the [src]"
|
||||
to_chat(user, "[up ? alt_toggle_message : toggle_message] \the [src]")
|
||||
|
||||
user.update_inv_head()
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
src.flags |= (HEADCOVERSEYES | HEADCOVERSMOUTH)
|
||||
flags_inv |= (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
|
||||
icon_state = initial(icon_state)
|
||||
usr << "You flip the [src] down to protect your eyes."
|
||||
to_chat(usr, "You flip the [src] down to protect your eyes.")
|
||||
flash_protect = 2
|
||||
tint = 2
|
||||
else
|
||||
@@ -66,7 +66,7 @@
|
||||
src.flags &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
|
||||
flags_inv &= ~(HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)
|
||||
icon_state = "[initial(icon_state)]up"
|
||||
usr << "You push the [src] up out of your face."
|
||||
to_chat(usr, "You push the [src] up out of your face.")
|
||||
flash_protect = 0
|
||||
tint = 0
|
||||
usr.update_inv_head() //so our mob-overlays update
|
||||
@@ -130,11 +130,11 @@
|
||||
if(src.icon_state == "ushankadown")
|
||||
src.icon_state = "ushankaup"
|
||||
src.item_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"
|
||||
src.item_state = "ushankadown"
|
||||
user << "You lower the ear flaps on the ushanka."
|
||||
to_chat(user, "You lower the ear flaps on the ushanka.")
|
||||
|
||||
/*
|
||||
* Pumpkin head
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
src.flipped = !src.flipped
|
||||
if(src.flipped)
|
||||
icon_state = "[item_color]soft_flipped"
|
||||
usr << "You flip the hat backwards."
|
||||
to_chat(usr, "You flip the hat backwards.")
|
||||
else
|
||||
icon_state = "[item_color]soft"
|
||||
usr << "You flip the hat back in normal position."
|
||||
to_chat(usr, "You flip the hat back in normal position.")
|
||||
usr.update_inv_head() //so our mob-overlays update
|
||||
|
||||
/obj/item/clothing/head/soft/red
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
src.flags |= (MASKCOVERSEYES)
|
||||
flags_inv |= (HIDEEYES)
|
||||
icon_state = initial(icon_state)
|
||||
usr << "You flip the [src] down to protect your eyes."
|
||||
to_chat(usr, "You flip the [src] down to protect your eyes.")
|
||||
flash_protect = 2
|
||||
tint = 2
|
||||
else
|
||||
@@ -53,7 +53,7 @@
|
||||
src.flags &= ~(MASKCOVERSEYES)
|
||||
flags_inv &= ~(HIDEEYES)
|
||||
icon_state = "[initial(icon_state)]up"
|
||||
usr << "You push the [src] up out of your face."
|
||||
to_chat(usr, "You push the [src] up out of your face.")
|
||||
flash_protect = 0
|
||||
tint = 0
|
||||
usr.update_inv_wear_mask() //so our mob-overlays update
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
if(src && choice && !M.stat && in_range(M,src))
|
||||
icon_state = options[choice]
|
||||
M << "Your Clown Mask has now morphed into [choice], all praise the Honk Mother!"
|
||||
to_chat(M, "Your Clown Mask has now morphed into [choice], all praise the Honk Mother!")
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/mask/gas/clownwiz
|
||||
@@ -247,19 +247,19 @@
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
switch(aggressiveness)
|
||||
if(1)
|
||||
user << "\blue You set the restrictor to the middle position."
|
||||
to_chat(user, "\blue You set the restrictor to the middle position.")
|
||||
aggressiveness = 2
|
||||
if(2)
|
||||
user << "\blue You set the restrictor to the last position."
|
||||
to_chat(user, "\blue You set the restrictor to the last position.")
|
||||
aggressiveness = 3
|
||||
if(3)
|
||||
user << "\blue You set the restrictor to the first position."
|
||||
to_chat(user, "\blue You set the restrictor to the first position.")
|
||||
aggressiveness = 1
|
||||
if(4)
|
||||
user << "\red You adjust the restrictor but nothing happens, probably because its broken."
|
||||
to_chat(user, "\red You adjust the restrictor but nothing happens, probably because its broken.")
|
||||
else if(istype(W, /obj/item/weapon/wirecutters))
|
||||
if(aggressiveness != 4)
|
||||
user << "\red You broke it!"
|
||||
to_chat(user, "\red You broke it!")
|
||||
aggressiveness = 4
|
||||
else
|
||||
..()
|
||||
@@ -270,7 +270,7 @@
|
||||
/obj/item/clothing/mask/gas/sechailer/emag_act(mob/user as mob)
|
||||
if(safety)
|
||||
safety = 0
|
||||
user << "<span class='warning'>You silently fry [src]'s vocal circuit with the cryptographic sequencer."
|
||||
to_chat(user, "<span class='warning'>You silently fry [src]'s vocal circuit with the cryptographic sequencer.")
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
set src in usr
|
||||
|
||||
changer.active = !changer.active
|
||||
usr << "<span class='notice'>You [changer.active ? "enable" : "disable"] the voice-changing module in \the [src].</span>"
|
||||
to_chat(usr, "<span class='notice'>You [changer.active ? "enable" : "disable"] the voice-changing module in \the [src].</span>")
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/verb/Set_Voice(name as text)
|
||||
set category = "Object"
|
||||
@@ -24,7 +24,7 @@
|
||||
var/voice = sanitize(copytext(name,1,MAX_MESSAGE_LEN))
|
||||
if(!voice || !length(voice)) return
|
||||
changer.voice = voice
|
||||
usr << "<span class='notice'>You are now mimicking <B>[changer.voice]</B>.</span>"
|
||||
to_chat(usr, "<span class='notice'>You are now mimicking <B>[changer.voice]</B>.</span>")
|
||||
|
||||
/obj/item/clothing/mask/gas/voice/New()
|
||||
..()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
src.slowdown = slowdown_active
|
||||
magpulse = !magpulse
|
||||
icon_state = "[magboot_state][magpulse]"
|
||||
user << "You [magpulse ? "enable" : "disable"] the mag-pulse traction system."
|
||||
to_chat(user, "You [magpulse ? "enable" : "disable"] the mag-pulse traction system.")
|
||||
user.update_inv_shoes() //so our mob-overlays update
|
||||
user.update_gravity(user.mob_has_gravity())
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
/obj/item/clothing/shoes/magboots/examine(mob/user)
|
||||
..(user)
|
||||
user << "Its mag-pulse traction system appears to be [magpulse ? "enabled" : "disabled"]."
|
||||
to_chat(user, "Its mag-pulse traction system appears to be [magpulse ? "enabled" : "disabled"].")
|
||||
|
||||
|
||||
/obj/item/clothing/shoes/magboots/advance
|
||||
|
||||
@@ -205,22 +205,22 @@
|
||||
flags &= ~NOSLIP
|
||||
magpulse = 0
|
||||
flags |= NODROP
|
||||
user << "You relax your deathgrip on the flooring."
|
||||
to_chat(user, "You relax your deathgrip on the flooring.")
|
||||
else
|
||||
//make sure these can only be used when equipped.
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if (H.shoes != src)
|
||||
user << "You will have to put on the [src] before you can do that."
|
||||
to_chat(user, "You will have to put on the [src] before you can do that.")
|
||||
return
|
||||
|
||||
|
||||
flags |= NOSLIP
|
||||
magpulse = 1
|
||||
flags &= ~NODROP //kinda hard to take off magclaws when you are gripping them tightly.
|
||||
user << "You dig your claws deeply into the flooring, bracing yourself."
|
||||
user << "It would be hard to take off the [src] without relaxing your grip first."
|
||||
to_chat(user, "You dig your claws deeply into the flooring, bracing yourself.")
|
||||
to_chat(user, "It would be hard to take off the [src] without relaxing your grip first.")
|
||||
|
||||
//In case they somehow come off while enabled.
|
||||
/obj/item/clothing/shoes/magboots/vox/dropped(mob/user as mob)
|
||||
@@ -234,7 +234,8 @@
|
||||
/obj/item/clothing/shoes/magboots/vox/examine(mob/user)
|
||||
..(user)
|
||||
if (magpulse)
|
||||
user << "It would be hard to take these off without relaxing your grip first." //theoretically this message should only be seen by the wearer when the claws are equipped.
|
||||
to_chat(user, "It would be hard to take these off without relaxing your grip first.")//theoretically this message should only be seen by the wearer when the claws are equipped.
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/eva/vox
|
||||
name = "Vox EVA Suit"
|
||||
|
||||
@@ -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
|
||||
@@ -178,11 +178,11 @@ var/global/list/breach_burn_descriptors = list(
|
||||
if(istype(W,/obj/item/stack/sheet/mineral/plastic) || istype(W,/obj/item/stack/sheet/metal))
|
||||
|
||||
if(istype(src.loc,/mob/living))
|
||||
user << "\red How do you intend to patch a hardsuit while someone is wearing it?"
|
||||
to_chat(user, "\red How do you intend to patch a hardsuit while someone is wearing it?")
|
||||
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/sheet/P = W
|
||||
@@ -197,16 +197,16 @@ var/global/list/breach_burn_descriptors = list(
|
||||
else if(istype(W, /obj/item/weapon/weldingtool))
|
||||
|
||||
if(istype(src.loc,/mob/living))
|
||||
user << "\red How do you intend to patch a hardsuit while someone is wearing it?"
|
||||
to_chat(user, "\red How do you intend to patch a hardsuit while someone is wearing it?")
|
||||
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 << "\red You need more welding fuel to repair this suit."
|
||||
to_chat(user, "\red You need more welding fuel to repair this suit.")
|
||||
return
|
||||
|
||||
repair_breaches(BRUTE, 3, user)
|
||||
@@ -218,4 +218,4 @@ var/global/list/breach_burn_descriptors = list(
|
||||
..(user)
|
||||
if(can_breach && breaches && breaches.len)
|
||||
for(var/datum/breach/B in breaches)
|
||||
user << "\red <B>It has \a [B.descriptor].</B>"
|
||||
to_chat(user, "\red <B>It has \a [B.descriptor].</B>")
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
switch(severity)
|
||||
if(1)
|
||||
if(user && ishuman(user) && (user.wear_suit == src))
|
||||
user << "<span class='userdanger'>Elecrtromagnetic pulse detected, shutting down systems to preserve integrity...</span>"
|
||||
to_chat(user, "<span class='userdanger'>Elecrtromagnetic pulse detected, shutting down systems to preserve integrity...</span>")
|
||||
deactivate()
|
||||
|
||||
/obj/item/clothing/suit/space/chronos/proc/chronowalk(var/mob/living/carbon/human/user)
|
||||
@@ -131,24 +131,24 @@
|
||||
var/mob/living/carbon/human/user = src.loc
|
||||
if(user && ishuman(user))
|
||||
if(user.wear_suit == src)
|
||||
user << "\nChronosuitMK4 login: root"
|
||||
user << "Password:\n"
|
||||
user << "root@ChronosuitMK4# chronowalk4 --start\n"
|
||||
to_chat(user, "\nChronosuitMK4 login: root")
|
||||
to_chat(user, "Password:\n")
|
||||
to_chat(user, "root@ChronosuitMK4# chronowalk4 --start\n")
|
||||
if(user.head && istype(user.head, /obj/item/clothing/head/helmet/space/chronos))
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Mounting /dev/helmet"
|
||||
to_chat(user, "\[ <span style='color: #00ff00;'>ok</span> \] Mounting /dev/helmet")
|
||||
helmet = user.head
|
||||
helmet.flags |= NODROP
|
||||
helmet.suit = src
|
||||
src.flags |= NODROP
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Starting brainwave scanner"
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Starting ui display driver"
|
||||
user << "\[ <span style='color: #00ff00;'>ok</span> \] Initializing chronowalk4-view"
|
||||
to_chat(user, "\[ <span style='color: #00ff00;'>ok</span> \] Starting brainwave scanner")
|
||||
to_chat(user, "\[ <span style='color: #00ff00;'>ok</span> \] Starting ui display driver")
|
||||
to_chat(user, "\[ <span style='color: #00ff00;'>ok</span> \] Initializing chronowalk4-view")
|
||||
new_camera(user)
|
||||
processing_objects.Add(src)
|
||||
activated = 1
|
||||
else
|
||||
user << "\[ <span style='color: #ff0000;'>fail</span> \] Mounting /dev/helmet"
|
||||
user << "<span style='color: #ff0000;'><b>FATAL: </b>Unable to locate /dev/helmet. <b>Aborting...</b>"
|
||||
to_chat(user, "\[ <span style='color: #ff0000;'>fail</span> \] Mounting /dev/helmet")
|
||||
to_chat(user, "<span style='color: #ff0000;'><b>FATAL: </b>Unable to locate /dev/helmet. <b>Aborting...</b>")
|
||||
cooldown = world.time + cooldowntime
|
||||
activating = 0
|
||||
return 0
|
||||
@@ -159,18 +159,19 @@
|
||||
var/mob/living/carbon/human/user = src.loc
|
||||
if(user && ishuman(user))
|
||||
if(user.wear_suit == src)
|
||||
user << "\nroot@ChronosuitMK4# chronowalk4 --stop\n"
|
||||
to_chat(user, "\nroot@ChronosuitMK4# chronowalk4 --stop\n")
|
||||
if(camera)
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Sending TERM signal to chronowalk4-view" //yes I know they aren't a different color when shutting down, but they were too similar at a glance
|
||||
to_chat(user, "\[ <span style='color: #ff5500;'>ok</span> \] Sending TERM signal to chronowalk4-view")//yes I know they aren't a different color when shutting down, but they were too similar at a glance
|
||||
|
||||
qdel(camera)
|
||||
if(helmet)
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Stopping ui display driver"
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Stopping brainwave scanner"
|
||||
user << "\[ <span style='color: #ff5500;'>ok</span> \] Unmounting /dev/helmet"
|
||||
to_chat(user, "\[ <span style='color: #ff5500;'>ok</span> \] Stopping ui display driver")
|
||||
to_chat(user, "\[ <span style='color: #ff5500;'>ok</span> \] Stopping brainwave scanner")
|
||||
to_chat(user, "\[ <span style='color: #ff5500;'>ok</span> \] Unmounting /dev/helmet")
|
||||
helmet.flags &= ~NODROP
|
||||
helmet.suit = null
|
||||
helmet = null
|
||||
user << "logout"
|
||||
to_chat(user, "logout")
|
||||
src.flags &= ~NODROP
|
||||
cooldown = world.time + cooldowntime * 1.5
|
||||
activated = 0
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
camera.network = list("ERT")
|
||||
cameranet.removeCamera(camera)
|
||||
camera.c_tag = user.name
|
||||
user << "\blue User scanned as [camera.c_tag]. Camera activated."
|
||||
to_chat(user, "\blue User scanned as [camera.c_tag]. Camera activated.")
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/ert/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
user << "This helmet has a built-in camera. It's [camera ? "" : "in"]active."
|
||||
to_chat(user, "This helmet has a built-in camera. It's [camera ? "" : "in"]active.")
|
||||
|
||||
/obj/item/clothing/suit/space/rig/ert
|
||||
name = "emergency response team suit"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user)
|
||||
..(user)
|
||||
user << "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>"
|
||||
to_chat(user, "<span class='info'>There are [extinguishes_left] extinguisher canisters left in this suit.</span>")
|
||||
|
||||
/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(var/mob/user)
|
||||
var/mob/living/carbon/human/H=user
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
next_extinguish = world.time + extinguish_cooldown
|
||||
extinguishes_left--
|
||||
H << "<span class='warning'>Your suit automatically extinguishes the fire.</span>"
|
||||
to_chat(H, "<span class='warning'>Your suit automatically extinguishes the fire.</span>")
|
||||
H.ExtinguishMob()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman
|
||||
@@ -50,7 +50,8 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva/plasmaman/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
user << "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>" //To prevent some lighting anomalities.
|
||||
to_chat(user, "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
toggle_light(user)
|
||||
|
||||
|
||||
@@ -31,7 +31,8 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
user << "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>" //To prevent some lighting anomalities.
|
||||
to_chat(user, "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
toggle_light(user)
|
||||
|
||||
@@ -104,9 +105,9 @@
|
||||
|
||||
if(attached_helmet && helmet)
|
||||
if(H.head)
|
||||
M << "You are unable to deploy your suit's helmet as \the [H.head] is in the way."
|
||||
to_chat(M, "You are unable to deploy your suit's helmet as \the [H.head] is in the way.")
|
||||
else
|
||||
M << "Your suit's helmet deploys with a hiss."
|
||||
to_chat(M, "Your suit's helmet deploys with a hiss.")
|
||||
//TODO: Species check, skull damage for forcing an unfitting helmet on?
|
||||
helmet.forceMove(H)
|
||||
H.equip_to_slot(helmet, slot_head)
|
||||
@@ -114,9 +115,9 @@
|
||||
|
||||
if(attached_boots && boots)
|
||||
if(H.shoes)
|
||||
M << "You are unable to deploy your suit's magboots as \the [H.shoes] are in the way."
|
||||
to_chat(M, "You are unable to deploy your suit's magboots as \the [H.shoes] are in the way.")
|
||||
else
|
||||
M << "Your suit's boots deploy with a hiss."
|
||||
to_chat(M, "Your suit's boots deploy with a hiss.")
|
||||
boots.forceMove(H)
|
||||
H.equip_to_slot(boots, slot_shoes)
|
||||
boots.flags |= NODROP
|
||||
@@ -151,7 +152,7 @@
|
||||
return
|
||||
|
||||
if(!helmet)
|
||||
usr << "There is no helmet installed."
|
||||
to_chat(usr, "There is no helmet installed.")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = usr
|
||||
@@ -164,17 +165,17 @@
|
||||
helmet.flags &= ~NODROP
|
||||
H.unEquip(helmet)
|
||||
helmet.loc = src
|
||||
H << "<span class='notice'>You retract your hardsuit helmet.</span>"
|
||||
to_chat(H, "<span class='notice'>You retract your hardsuit helmet.</span>")
|
||||
else
|
||||
if(H.head)
|
||||
H << "<span class='warning'>You cannot deploy your helmet while wearing another helmet.</span>"
|
||||
to_chat(H, "<span class='warning'>You cannot deploy your helmet while wearing another helmet.</span>")
|
||||
return
|
||||
//TODO: Species check, skull damage for forcing an unfitting helmet on?
|
||||
helmet.loc = H
|
||||
helmet.pickup(H)
|
||||
H.equip_to_slot(helmet, slot_head)
|
||||
helmet.flags |= NODROP
|
||||
H << "<span class='notice'>You deploy your hardsuit helmet, sealing you off from the world.</span>"
|
||||
to_chat(H, "<span class='notice'>You deploy your hardsuit helmet, sealing you off from the world.</span>")
|
||||
H.update_inv_head()
|
||||
|
||||
/obj/item/clothing/suit/space/rig/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
@@ -182,33 +183,33 @@
|
||||
return
|
||||
|
||||
if(istype(src.loc,/mob/living))
|
||||
user << "How do you propose to modify a hardsuit while it is being worn?"
|
||||
to_chat(user, "How do you propose to modify a hardsuit while it is being worn?")
|
||||
return
|
||||
|
||||
if(istype(W,/obj/item/weapon/screwdriver))
|
||||
if(!helmet)
|
||||
user << "\The [src] does not have a helmet installed."
|
||||
to_chat(user, "\The [src] does not have a helmet installed.")
|
||||
else
|
||||
user << "You detach \the [helmet] from \the [src]'s helmet mount."
|
||||
to_chat(user, "You detach \the [helmet] from \the [src]'s helmet mount.")
|
||||
helmet.loc = get_turf(src)
|
||||
src.helmet = null
|
||||
return
|
||||
if(!boots)
|
||||
user << "\The [src] does not have any boots installed."
|
||||
to_chat(user, "\The [src] does not have any boots installed.")
|
||||
else
|
||||
user << "You detach \the [boots] from \the [src]'s boot mounts."
|
||||
to_chat(user, "You detach \the [boots] from \the [src]'s boot mounts.")
|
||||
boots.loc = get_turf(src)
|
||||
boots = null
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/clothing/head/helmet/space))
|
||||
if(!attached_helmet)
|
||||
user << "\The [src] does not have a helmet mount."
|
||||
to_chat(user, "\The [src] does not have a helmet mount.")
|
||||
return
|
||||
if(helmet)
|
||||
user << "\The [src] already has a helmet installed."
|
||||
to_chat(user, "\The [src] already has a helmet installed.")
|
||||
else
|
||||
user << "You attach \the [W] to \the [src]'s helmet mount."
|
||||
to_chat(user, "You attach \the [W] to \the [src]'s helmet mount.")
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
src.helmet = W
|
||||
@@ -216,13 +217,13 @@
|
||||
|
||||
else if(istype(W,/obj/item/clothing/shoes/magboots))
|
||||
if(!attached_boots)
|
||||
user << "\The [src] does not have boot mounts."
|
||||
to_chat(user, "\The [src] does not have boot mounts.")
|
||||
return
|
||||
|
||||
if(boots)
|
||||
user << "\The [src] already has magboots installed."
|
||||
to_chat(user, "\The [src] already has magboots installed.")
|
||||
else
|
||||
user << "You attach \the [W] to \the [src]'s boot mounts."
|
||||
to_chat(user, "You attach \the [W] to \the [src]'s boot mounts.")
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
boots = W
|
||||
@@ -304,12 +305,13 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
user << "You cannot toggle your helmet while in this [user.loc]." //To prevent some lighting anomalities.
|
||||
to_chat(user, "You cannot toggle your helmet while in this [user.loc].")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
|
||||
on = !on
|
||||
if(on)
|
||||
user << "<span class='notice'>You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>"
|
||||
to_chat(user, "<span class='notice'>You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
|
||||
name = "blood-red hardsuit helmet"
|
||||
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
@@ -317,7 +319,7 @@
|
||||
cold_protection = HEAD
|
||||
set_light(brightness_on)
|
||||
else
|
||||
user << "<span class='notice'>You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>"
|
||||
to_chat(user, "<span class='notice'>You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>")
|
||||
name = "blood-red hardsuit helmet (combat)"
|
||||
desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
|
||||
flags = BLOCKHAIR | THICKMATERIAL | NODROP
|
||||
@@ -348,7 +350,7 @@
|
||||
/obj/item/clothing/suit/space/rig/syndi/attack_self(mob/user)
|
||||
on = !on
|
||||
if(on)
|
||||
user << "<span class='notice'>You switch your hardsuit to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>"
|
||||
to_chat(user, "<span class='notice'>You switch your hardsuit to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed and armor.</span>")
|
||||
name = "blood-red hardsuit"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
slowdown = 1
|
||||
@@ -356,7 +358,7 @@
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
else
|
||||
user << "<span class='notice'>You switch your hardsuit to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>"
|
||||
to_chat(user, "<span class='notice'>You switch your hardsuit to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>")
|
||||
name = "blood-red hardsuit (combat)"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
|
||||
slowdown = 0
|
||||
|
||||
@@ -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.unEquip(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--
|
||||
@@ -186,7 +186,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
|
||||
|
||||
@@ -238,11 +238,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
|
||||
|
||||
@@ -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)
|
||||
@@ -160,9 +160,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 remaining scraps of data from your previous AI, freeing it for use.</span>"
|
||||
to_chat(user, "<span class='danger'>You purge the remaining scraps of data from your previous AI, freeing it for use.</span>")
|
||||
if(integrated_ai)
|
||||
integrated_ai.ghostize()
|
||||
qdel(integrated_ai)
|
||||
@@ -209,8 +209,8 @@
|
||||
user.unEquip(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
|
||||
|
||||
@@ -218,9 +218,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()
|
||||
|
||||
/obj/item/rig_module/datajack
|
||||
@@ -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
|
||||
|
||||
@@ -369,7 +369,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
|
||||
@@ -401,7 +401,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
|
||||
|
||||
@@ -433,17 +433,17 @@
|
||||
playsound(H.loc, 'sound/effects/sparks2.ogg', 50, 1)
|
||||
|
||||
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
|
||||
|
||||
@@ -451,7 +451,7 @@
|
||||
var/to_drain = min(40000, ((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
|
||||
|
||||
@@ -463,9 +463,9 @@
|
||||
/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/1000)]kJ.</font>"
|
||||
to_chat(if(M) M, "<font color='blue'><b>Total power drained:</b> [round(total_power_drained/1000)]kJ.</font>")
|
||||
else
|
||||
if(M) M << "<font color='blue'><b>Total power drained from [interfaced_with]:</b> [round(total_power_drained/1000)]kJ.</font>"
|
||||
to_chat(if(M) M, "<font color='blue'><b>Total power drained from [interfaced_with]:</b> [round(total_power_drained/1000)]kJ.</font>")
|
||||
interfaced_with.drain_power(0,1,0) // Damage the victim.
|
||||
|
||||
drain_loc = null
|
||||
|
||||
@@ -57,28 +57,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, target = src) || !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
|
||||
|
||||
@@ -86,23 +86,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, target = src) || !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
|
||||
..()
|
||||
@@ -142,27 +142,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.flags & NODROP)))
|
||||
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) ) ) )
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
|
||||
H << "<font color='blue'><b>You are now invisible to normal detection.</b></font>"
|
||||
to_chat(H, "<font color='blue'><b>You are now invisible to normal detection.</b></font>")
|
||||
H.invisibility = INVISIBILITY_LEVEL_TWO
|
||||
|
||||
anim(get_turf(H), H, 'icons/effects/effects.dmi', "electricity",null,20,null)
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
var/mob/living/carbon/human/H = holder.wearer
|
||||
|
||||
H << "<span class='danger'>You are now visible.</span>"
|
||||
to_chat(H, "<span class='danger'>You are now visible.</span>")
|
||||
H.invisibility = 0
|
||||
|
||||
anim(get_turf(H), H,'icons/mob/mob.dmi',,"uncloak",,H.dir)
|
||||
@@ -102,7 +102,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
|
||||
@@ -112,11 +112,11 @@
|
||||
T = get_teleport_loc(get_turf(H), H, rand(5, 9))
|
||||
|
||||
/*if(!T || 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*///Who the fuck cares? Ninjas in walls are cool.
|
||||
|
||||
if(T.z in config.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
|
||||
|
||||
phase_out(H,get_turf(H))
|
||||
|
||||
@@ -164,7 +164,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.
|
||||
@@ -186,9 +186,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)
|
||||
@@ -199,7 +199,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]
|
||||
@@ -209,7 +209,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
|
||||
@@ -224,8 +224,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
|
||||
@@ -299,17 +299,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
|
||||
@@ -435,10 +435,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/welding_tank
|
||||
@@ -472,9 +472,9 @@
|
||||
if(istype(W))
|
||||
fill_welder(W)
|
||||
else
|
||||
holder.wearer << "<span class='danger'>Your welding tank is out of fuel!</span>"
|
||||
to_chat(holder.wearer, "<span class='danger'>Your welding tank is out of fuel!</span>")
|
||||
else
|
||||
holder.wearer << "<span class='notice'>You need to have a welding tool in one of your hands to dispense fuel.</span>"
|
||||
to_chat(holder.wearer, "<span class='notice'>You need to have a welding tool in one of your hands to dispense fuel.</span>")
|
||||
|
||||
/obj/item/rig_module/welding_tank/proc/fill_welder(var/obj/item/weapon/weldingtool/W)
|
||||
if(!istype(W))
|
||||
@@ -483,10 +483,10 @@
|
||||
if(reagents)
|
||||
if(get_fuel() >= W.max_fuel)
|
||||
reagents.trans_to(W, W.max_fuel)
|
||||
holder.wearer << "<span class='notice'>Your [holder] dispenses some of the contents of the welding fuel tank into \the [W].</span>"
|
||||
to_chat(holder.wearer, "<span class='notice'>Your [holder] dispenses some of the contents of the welding fuel tank into \the [W].</span>")
|
||||
else
|
||||
reagents.trans_to(W, W.max_fuel)
|
||||
holder.wearer << "<span class='notice'>You hear a faint dripping as your hardsuit welding tank completely empties.</span>"
|
||||
to_chat(holder.wearer, "<span class='notice'>You hear a faint dripping as your hardsuit welding tank completely empties.</span>")
|
||||
W.update_icon()
|
||||
|
||||
/obj/item/rig_module/welding_tank/proc/get_fuel()
|
||||
|
||||
@@ -160,7 +160,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)
|
||||
@@ -169,9 +169,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/New()
|
||||
|
||||
@@ -82,17 +82,17 @@
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
|
||||
/obj/item/weapon/rig/examine()
|
||||
usr << "This is \icon[src][src.name]."
|
||||
usr << "[src.desc]"
|
||||
to_chat(usr, "This is \icon[src][src.name].")
|
||||
to_chat(usr, "[src.desc]")
|
||||
if(wearer)
|
||||
for(var/obj/item/piece in list(helmet,gloves,chest,boots))
|
||||
if(!piece || piece.loc != wearer)
|
||||
continue
|
||||
usr << "\icon[piece] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed."
|
||||
to_chat(usr, "\icon[piece] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed.")
|
||||
|
||||
if(src.loc == usr)
|
||||
usr << "The maintenance panel is [open ? "open" : "closed"]."
|
||||
usr << "Hardsuit systems are [offline ? "<font color='red'>offline</font>" : "<font color='green'>online</font>"]."
|
||||
to_chat(usr, "The maintenance panel is [open ? "open" : "closed"].")
|
||||
to_chat(usr, "Hardsuit systems are [offline ? "<font color='red'>offline</font>" : "<font color='green'>online</font>"].")
|
||||
|
||||
/obj/item/weapon/rig/New()
|
||||
..()
|
||||
@@ -214,7 +214,8 @@
|
||||
if(!instant)
|
||||
M.visible_message("<font color='blue'>[M]'s suit emits a quiet hum as it begins to adjust its seals.</font>","<font color='blue'>With a quiet hum, the suit begins running checks and adjusting components.</font>")
|
||||
if(seal_delay && !do_after(user, seal_delay, target = M))
|
||||
if(user) user << "<span class='warning'>You must remain still while the suit is adjusting the components.</span>"
|
||||
if(user)
|
||||
to_chat(user, "<span class='warning'>You must remain still while the suit is adjusting the components.</span>")
|
||||
failed_to_seal = 1
|
||||
|
||||
if(!M)
|
||||
@@ -231,7 +232,8 @@
|
||||
continue
|
||||
|
||||
if(!istype(M) || !istype(piece) || !istype(compare_piece) || !msg_type)
|
||||
if(M) M << "<span class='warning'>You must remain still while the suit is adjusting the components.</span>"
|
||||
if(M)
|
||||
to_chat(M, "<span class='warning'>You must remain still while the suit is adjusting the components.</span>")
|
||||
failed_to_seal = 1
|
||||
break
|
||||
|
||||
@@ -243,16 +245,16 @@
|
||||
piece.icon_state = "[initial(icon_state)][!seal_target ? "_sealed" : ""]"
|
||||
switch(msg_type)
|
||||
if("boots")
|
||||
M << "<font color='blue'>\The [piece] [!seal_target ? "seal around your feet" : "relax their grip on your legs"].</font>"
|
||||
to_chat(M, "<font color='blue'>\The [piece] [!seal_target ? "seal around your feet" : "relax their grip on your legs"].</font>")
|
||||
M.update_inv_shoes()
|
||||
if("gloves")
|
||||
M << "<font color='blue'>\The [piece] [!seal_target ? "tighten around your fingers and wrists" : "become loose around your fingers"].</font>"
|
||||
to_chat(M, "<font color='blue'>\The [piece] [!seal_target ? "tighten around your fingers and wrists" : "become loose around your fingers"].</font>")
|
||||
M.update_inv_gloves()
|
||||
if("chest")
|
||||
M << "<font color='blue'>\The [piece] [!seal_target ? "cinches tight again your chest" : "releases your chest"].</font>"
|
||||
to_chat(M, "<font color='blue'>\The [piece] [!seal_target ? "cinches tight again your chest" : "releases your chest"].</font>")
|
||||
M.update_inv_wear_suit()
|
||||
if("helmet")
|
||||
M << "<font color='blue'>\The [piece] hisses [!seal_target ? "closed" : "open"].</font>"
|
||||
to_chat(M, "<font color='blue'>\The [piece] hisses [!seal_target ? "closed" : "open"].</font>")
|
||||
M.update_inv_head()
|
||||
if(helmet)
|
||||
helmet.update_light(wearer)
|
||||
@@ -289,7 +291,7 @@
|
||||
flags &= ~NODROP
|
||||
else
|
||||
flags |= NODROP
|
||||
M << "<font color='blue'><b>Your entire suit [!(flags & NODROP) ? "loosens as the components relax" : "tightens around you as the components lock into place"].</b></font>"
|
||||
to_chat(M, "<font color='blue'><b>Your entire suit [!(flags & NODROP) ? "loosens as the components relax" : "tightens around you as the components lock into place"].</b></font>")
|
||||
|
||||
if(!(flags & NODROP))
|
||||
for(var/obj/item/rig_module/module in installed_modules)
|
||||
@@ -326,13 +328,13 @@
|
||||
if(istype(wearer))
|
||||
if(flags & NODROP)
|
||||
if (offline_slowdown < 3)
|
||||
wearer << "<span class='danger'>Your suit beeps stridently, and suddenly goes dead.</span>"
|
||||
to_chat(wearer, "<span class='danger'>Your suit beeps stridently, and suddenly goes dead.</span>")
|
||||
else
|
||||
wearer << "<span class='danger'>Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic composites instead of a powered suit.</span>"
|
||||
to_chat(wearer, "<span class='danger'>Your suit beeps stridently, and suddenly you're wearing a leaden mass of metal and plastic composites instead of a powered suit.</span>")
|
||||
if(offline_vision_restriction == 1)
|
||||
wearer << "<span class='danger'>The suit optics flicker and die, leaving you with restricted vision.</span>"
|
||||
to_chat(wearer, "<span class='danger'>The suit optics flicker and die, leaving you with restricted vision.</span>")
|
||||
else if(offline_vision_restriction == 2)
|
||||
wearer << "<span class='danger'>The suit optics drop out completely, drowning you in darkness.</span>"
|
||||
to_chat(wearer, "<span class='danger'>The suit optics drop out completely, drowning you in darkness.</span>")
|
||||
if(!offline)
|
||||
offline = 1
|
||||
if(istype(wearer) && wearer.wearing_rig)
|
||||
@@ -387,7 +389,7 @@
|
||||
fail_msg = "<span class='warning'>Not enough stored power.</span>"
|
||||
|
||||
if(fail_msg)
|
||||
user << "[fail_msg]"
|
||||
to_chat(user, "[fail_msg]")
|
||||
return 0
|
||||
|
||||
// This is largely for cancelling stealth and whatever.
|
||||
@@ -513,11 +515,11 @@
|
||||
if(user.back != 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
|
||||
@@ -566,7 +568,7 @@
|
||||
for(var/obj/item/rig_module/module in installed_modules)
|
||||
for(var/mob/living/silicon/ai/ai in module.contents)
|
||||
if(ai && ai.client && !ai.stat)
|
||||
ai << "[message]"
|
||||
to_chat(ai, "[message]")
|
||||
|
||||
/obj/item/weapon/rig/equipped(mob/living/carbon/human/M)
|
||||
..()
|
||||
@@ -632,7 +634,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.flags &= ~NODROP
|
||||
holder.unEquip(use_obj, 1)
|
||||
use_obj.forceMove(src)
|
||||
@@ -640,7 +642,7 @@
|
||||
else if (deploy_mode != ONLY_RETRACT)
|
||||
if(check_slot)
|
||||
if(check_slot != use_obj)
|
||||
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
|
||||
use_obj.forceMove(H)
|
||||
@@ -648,7 +650,7 @@
|
||||
if(!H.equip_to_slot_if_possible(use_obj, equip_to, 0, 1))
|
||||
use_obj.forceMove(src)
|
||||
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>")
|
||||
use_obj.flags |= NODROP
|
||||
|
||||
if(piece == "helmet" && helmet)
|
||||
@@ -764,17 +766,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
|
||||
|
||||
@@ -798,17 +800,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)
|
||||
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
|
||||
|
||||
@@ -816,7 +821,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)
|
||||
|
||||
@@ -856,13 +861,13 @@
|
||||
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()
|
||||
|
||||
if(wearer.pinned.len)
|
||||
src << "<span class='notice'>Your host is pinned to a wall by [wearer.pinned[1]]</span>!"
|
||||
to_chat(src, "<span class='notice'>Your host is pinned to a wall by [wearer.pinned[1]]</span>!")
|
||||
return 0
|
||||
|
||||
// AIs are a bit slower than regular and ignore move intent.
|
||||
|
||||
@@ -14,30 +14,30 @@
|
||||
if(W.GetID())
|
||||
if(subverted)
|
||||
locked = 0
|
||||
user << "<span class='danger'>It looks like the locking system has been shorted out.</span>"
|
||||
to_chat(user, "<span class='danger'>It looks like the locking system has been shorted out.</span>")
|
||||
return
|
||||
|
||||
if((!req_access || !req_access.len) && (!req_one_access || !req_one_access.len))
|
||||
locked = 0
|
||||
user << "<span class='danger'>\The [src] doesn't seem to have a locking mechanism.</span>"
|
||||
to_chat(user, "<span class='danger'>\The [src] doesn't seem to have a locking mechanism.</span>")
|
||||
return
|
||||
|
||||
if(security_check_enabled && !src.allowed(user))
|
||||
user << "<span class='danger'>Access denied.</span>"
|
||||
to_chat(user, "<span class='danger'>Access denied.</span>")
|
||||
return
|
||||
|
||||
locked = !locked
|
||||
user << "You [locked ? "lock" : "unlock"] \the [src] access panel."
|
||||
to_chat(user, "You [locked ? "lock" : "unlock"] \the [src] access panel.")
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/weapon/crowbar))
|
||||
|
||||
if(!open && locked)
|
||||
user << "The access panel is locked shut."
|
||||
to_chat(user, "The access panel is locked shut.")
|
||||
return
|
||||
|
||||
open = !open
|
||||
user << "You [open ? "open" : "close"] the access panel."
|
||||
to_chat(user, "You [open ? "open" : "close"] the access panel.")
|
||||
return
|
||||
|
||||
if(open)
|
||||
@@ -47,19 +47,19 @@
|
||||
if(open)
|
||||
wires.Interact(user)
|
||||
else
|
||||
user << "You can't reach the wiring."
|
||||
to_chat(user, "You can't reach the wiring.")
|
||||
return
|
||||
// Air tank.
|
||||
if(istype(W,/obj/item/weapon/tank)) //Todo, some kind of check for suits without integrated air supplies.
|
||||
|
||||
if(air_supply)
|
||||
user << "\The [src] already has a tank installed."
|
||||
to_chat(user, "\The [src] already has a tank installed.")
|
||||
return
|
||||
|
||||
user.unEquip(W)
|
||||
air_supply = W
|
||||
W.forceMove(src)
|
||||
user << "You slot [W] into [src] and tighten the connecting valve."
|
||||
to_chat(user, "You slot [W] into [src] and tighten the connecting valve.")
|
||||
return
|
||||
|
||||
// Check if this is a hardsuit upgrade or a modification.
|
||||
@@ -68,23 +68,23 @@
|
||||
if(istype(src.loc,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.back == src)
|
||||
user << "<span class='danger'>You can't install a hardsuit module while the suit is being worn.</span>"
|
||||
to_chat(user, "<span class='danger'>You can't install a hardsuit module while the suit is being worn.</span>")
|
||||
return 1
|
||||
|
||||
if(!installed_modules) installed_modules = list()
|
||||
if(installed_modules.len)
|
||||
for(var/obj/item/rig_module/installed_mod in installed_modules)
|
||||
if(!installed_mod.redundant && istype(installed_mod,W))
|
||||
user << "The hardsuit already has a module of that class installed."
|
||||
to_chat(user, "The hardsuit already has a module of that class installed.")
|
||||
return 1
|
||||
|
||||
var/obj/item/rig_module/mod = W
|
||||
user << "You begin installing \the [mod] into \the [src]."
|
||||
to_chat(user, "You begin installing \the [mod] into \the [src].")
|
||||
if(!do_after(user,40, target = src))
|
||||
return
|
||||
if(!user || !W)
|
||||
return
|
||||
user << "You install \the [mod] into \the [src]."
|
||||
to_chat(user, "You install \the [mod] into \the [src].")
|
||||
user.unEquip(mod)
|
||||
installed_modules |= mod
|
||||
mod.forceMove(src)
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
else if(!cell && istype(W,/obj/item/weapon/stock_parts/cell))
|
||||
|
||||
user << "You jack \the [W] into \the [src]'s battery mount."
|
||||
to_chat(user, "You jack \the [W] into \the [src]'s battery mount.")
|
||||
user.unEquip(W)
|
||||
W.forceMove(src)
|
||||
src.cell = W
|
||||
@@ -103,14 +103,14 @@
|
||||
else if(istype(W,/obj/item/weapon/wrench))
|
||||
|
||||
if(!air_supply)
|
||||
user << "There is not tank to remove."
|
||||
to_chat(user, "There is not tank to remove.")
|
||||
return
|
||||
|
||||
if(user.r_hand && user.l_hand)
|
||||
air_supply.forceMove(get_turf(user))
|
||||
else
|
||||
user.put_in_hands(air_supply)
|
||||
user << "You detach and remove \the [air_supply]."
|
||||
to_chat(user, "You detach and remove \the [air_supply].")
|
||||
air_supply = null
|
||||
return
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
if(istype(src.loc,/mob/living/carbon/human) && to_remove != "cell")
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.back == src)
|
||||
user << "You can't remove an installed device while the hardsuit is being worn."
|
||||
to_chat(user, "You can't remove an installed device while the hardsuit is being worn.")
|
||||
return
|
||||
|
||||
switch(to_remove)
|
||||
@@ -135,7 +135,7 @@
|
||||
if("cell")
|
||||
|
||||
if(cell)
|
||||
user << "You detatch \the [cell] from \the [src]'s battery mount."
|
||||
to_chat(user, "You detatch \the [cell] from \the [src]'s battery mount.")
|
||||
for(var/obj/item/rig_module/module in installed_modules)
|
||||
module.deactivate()
|
||||
if(user.r_hand && user.l_hand)
|
||||
@@ -144,7 +144,7 @@
|
||||
cell.forceMove(user.put_in_hands(cell))
|
||||
cell = null
|
||||
else
|
||||
user << "There is nothing loaded in that mount."
|
||||
to_chat(user, "There is nothing loaded in that mount.")
|
||||
|
||||
if("system module")
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
possible_removals[module.name] = module
|
||||
|
||||
if(!possible_removals.len)
|
||||
user << "There are no installed modules to remove."
|
||||
to_chat(user, "There are no installed modules to remove.")
|
||||
return
|
||||
|
||||
var/removal_choice = input("Which module would you like to remove?") as null|anything in possible_removals
|
||||
@@ -163,7 +163,7 @@
|
||||
return
|
||||
|
||||
var/obj/item/rig_module/removed = possible_removals[removal_choice]
|
||||
user << "You detatch \the [removed] from \the [src]."
|
||||
to_chat(user, "You detatch \the [removed] from \the [src].")
|
||||
removed.forceMove(get_turf(src))
|
||||
removed.removed()
|
||||
installed_modules -= removed
|
||||
@@ -192,5 +192,5 @@
|
||||
req_one_access.Cut()
|
||||
locked = 0
|
||||
subverted = 1
|
||||
user << "<span class='danger'>You short out the access protocol for the suit.</span>"
|
||||
to_chat(user, "<span class='danger'>You short out the access protocol for the suit.</span>")
|
||||
return 1
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/new_rig/attack_self(mob/user)
|
||||
if(!isturf(user.loc))
|
||||
user << "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>" //To prevent some lighting anomalities.
|
||||
to_chat(user, "<span class='warning'>You cannot turn the light on while in this [user.loc].</span>")//To prevent some lighting anomalities.
|
||||
|
||||
return
|
||||
toggle_light(user)
|
||||
|
||||
|
||||
@@ -17,21 +17,21 @@
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == 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(!(flags & NODROP))
|
||||
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
|
||||
|
||||
var/mob/M = usr
|
||||
@@ -51,7 +51,7 @@
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == 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))
|
||||
@@ -87,7 +87,7 @@
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == 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)
|
||||
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))
|
||||
@@ -127,7 +127,7 @@
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == 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))
|
||||
@@ -150,7 +150,7 @@
|
||||
set src = usr.contents
|
||||
|
||||
if(!istype(wearer) || !wearer.back == 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))
|
||||
@@ -176,11 +176,11 @@
|
||||
return
|
||||
|
||||
if(!(flags & NODROP))
|
||||
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
|
||||
|
||||
var/mob/M = usr
|
||||
@@ -191,7 +191,7 @@
|
||||
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()
|
||||
@@ -207,15 +207,15 @@
|
||||
return
|
||||
|
||||
if(!(flags & NODROP))
|
||||
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)
|
||||
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
|
||||
|
||||
var/mob/M = usr
|
||||
@@ -238,11 +238,11 @@
|
||||
return
|
||||
|
||||
if(!(flags & NODROP))
|
||||
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)
|
||||
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/mob/M = usr
|
||||
@@ -258,11 +258,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()
|
||||
|
||||
@@ -278,11 +278,11 @@
|
||||
return
|
||||
|
||||
if(!(flags & NODROP))
|
||||
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)
|
||||
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/mob/M = usr
|
||||
@@ -300,10 +300,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()
|
||||
@@ -317,11 +317,11 @@
|
||||
return
|
||||
|
||||
if(!(flags & NODROP))
|
||||
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)
|
||||
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))
|
||||
@@ -341,5 +341,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()
|
||||
@@ -174,11 +174,11 @@
|
||||
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob)
|
||||
src.active = !( src.active )
|
||||
if (src.active)
|
||||
user << "\blue The reactive armor is now active."
|
||||
to_chat(user, "\blue The reactive armor is now active.")
|
||||
src.icon_state = "reactive"
|
||||
src.item_state = "reactive"
|
||||
else
|
||||
user << "\blue The reactive armor is now inactive."
|
||||
to_chat(user, "\blue The reactive armor is now inactive.")
|
||||
src.icon_state = "reactiveoff"
|
||||
src.item_state = "reactiveoff"
|
||||
src.add_fingerprint(user)
|
||||
|
||||
@@ -553,10 +553,10 @@
|
||||
/obj/item/clothing/suit/advanced_protective_suit/ui_action_click()
|
||||
if(on)
|
||||
on = 0
|
||||
usr << "You turn the suit's special processes off."
|
||||
to_chat(usr, "You turn the suit's special processes off.")
|
||||
else
|
||||
on = 1
|
||||
usr << "You turn the suit's special processes on."
|
||||
to_chat(usr, "You turn the suit's special processes on.")
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
loc = has_suit
|
||||
has_suit.overlays += inv_overlay
|
||||
|
||||
user << "<span class='notice'>You attach [src] to [has_suit].</span>"
|
||||
to_chat(user, "<span class='notice'>You attach [src] to [has_suit].</span>")
|
||||
src.add_fingerprint(user)
|
||||
|
||||
/obj/item/clothing/accessory/proc/on_removed(mob/user as mob)
|
||||
@@ -38,7 +38,7 @@
|
||||
// This code lets you put accessories on other people by attacking their sprite with the accessory
|
||||
if(istype(H))
|
||||
if(H.wear_suit && H.wear_suit.flags_inv & HIDEJUMPSUIT)
|
||||
user << "[H]'s body is covered, and you cannot attach \the [src]."
|
||||
to_chat(user, "[H]'s body is covered, and you cannot attach \the [src].")
|
||||
return 1
|
||||
var/obj/item/clothing/under/U = H.w_uniform
|
||||
if(istype(U))
|
||||
@@ -47,7 +47,7 @@
|
||||
user.visible_message("<span class='notice'>[user] puts a [src.name] on [H]'s [U.name]!</span>", "<span class='notice'>You finish putting a [src.name] on [H]'s [U.name].</span>")
|
||||
U.attackby(src, user)
|
||||
else
|
||||
user << "[H] is not wearing anything to attach \the [src] to."
|
||||
to_chat(user, "[H] is not wearing anything to attach \the [src] to.")
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attack_self(mob/user as mob)
|
||||
if(!stored_name)
|
||||
user << "Waving around a badge before swiping an ID would be pretty pointless."
|
||||
to_chat(user, "Waving around a badge before swiping an ID would be pretty pointless.")
|
||||
return
|
||||
if(isliving(user))
|
||||
user.visible_message("\red [user] displays their NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.","\red You display your NanoTrasen Internal Security Legal Authorization Badge.\nIt reads: [stored_name], NT Security.")
|
||||
@@ -220,22 +220,22 @@
|
||||
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.")
|
||||
stored_name = id_card.registered_name
|
||||
name = "holobadge ([stored_name])"
|
||||
desc = "This glowing blue badge marks [stored_name] as THE LAW."
|
||||
else
|
||||
user << "[src] rejects your insufficient access rights."
|
||||
to_chat(user, "[src] rejects your insufficient access rights.")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/emag_act(user as mob)
|
||||
if (emagged)
|
||||
user << "\red [src] is already cracked."
|
||||
to_chat(user, "\red [src] is already cracked.")
|
||||
return
|
||||
else
|
||||
emagged = 1
|
||||
user << "\red You swipe the card and crack the holobadge security checks."
|
||||
to_chat(user, "\red You swipe the card and crack the holobadge security checks.")
|
||||
return
|
||||
|
||||
/obj/item/clothing/accessory/holobadge/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
@@ -376,11 +376,11 @@
|
||||
if(!istype(W))
|
||||
return ..()
|
||||
if(access_id)
|
||||
user << "<span class='warning'>There is already \a [access_id] clipped onto \the [src]</span>"
|
||||
to_chat(user, "<span class='warning'>There is already \a [access_id] clipped onto \the [src]</span>")
|
||||
user.drop_item()
|
||||
W.forceMove(src)
|
||||
access_id = W
|
||||
user << "<span class='notice'>\The [W] clips onto \the [src] snugly.</span>"
|
||||
to_chat(user, "<span class='notice'>\The [W] clips onto \the [src] snugly.</span>")
|
||||
|
||||
/obj/item/clothing/accessory/petcollar/GetAccess()
|
||||
return access_id ? access_id.GetAccess() : ..()
|
||||
@@ -388,7 +388,7 @@
|
||||
/obj/item/clothing/accessory/petcollar/examine(mob/user)
|
||||
..()
|
||||
if(access_id)
|
||||
user << "There is \icon[access_id] \a [access_id] clipped onto it."
|
||||
to_chat(user, "There is \icon[access_id] \a [access_id] clipped onto it.")
|
||||
|
||||
/obj/item/clothing/accessory/petcollar/equipped(mob/living/simple_animal/user)
|
||||
if(istype(user))
|
||||
|
||||
@@ -27,16 +27,16 @@
|
||||
|
||||
/obj/item/clothing/accessory/holster/proc/holster(obj/item/I, mob/user as mob)
|
||||
if(holstered)
|
||||
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 (!istype(I, /obj/item/weapon/gun))
|
||||
user << "<span class='warning'>Only guns can be holstered!</span>"
|
||||
to_chat(user, "<span class='warning'>Only guns can be holstered!</span>")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/gun/W = I
|
||||
if (!can_holster(W))
|
||||
user << "<span class='warning'>This [W] won't fit in the [src]!</span>"
|
||||
to_chat(user, "<span class='warning'>This [W] won't fit in the [src]!</span>")
|
||||
return
|
||||
|
||||
holstered = W
|
||||
@@ -50,7 +50,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_HARM)
|
||||
usr.visible_message("\red [user] draws the [holstered], ready to shoot!</span>", \
|
||||
@@ -81,9 +81,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)
|
||||
..()
|
||||
@@ -110,11 +110,11 @@
|
||||
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)
|
||||
if(!istype(usr.get_active_hand(), /obj/item/weapon/gun))
|
||||
usr << "<span class='warning'>You need your gun equiped to holster it.</span>"
|
||||
to_chat(usr, "<span class='warning'>You need your gun equiped to holster it.</span>")
|
||||
return
|
||||
var/obj/item/weapon/gun/W = usr.get_active_hand()
|
||||
H.holster(W, usr)
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if (has_suit) //if we are part of a suit
|
||||
hold.open(user)
|
||||
else
|
||||
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)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user