# Conflicts:
#	code/game/area/Away Mission areas.dm
#	code/game/objects/items/weapons/stunbaton.dm
#	code/game/objects/items/weapons/teleportation.dm
#	code/modules/clothing/glasses/glasses.dm
#	code/modules/events/event_container_vr.dm
#	code/modules/mining/ore_box.dm
#	code/modules/paperwork/paper.dm
#	code/modules/rogueminer_vr/zone_console.dm
#	config/custom_items.txt
#	icons/mob/items/lefthand_suits.dmi
#	icons/mob/items/righthand_suits.dmi
#	icons/mob/species/vulpkanin/helmet.dmi
#	icons/mob/species/vulpkanin/suit.dmi
#	icons/mob/suit.dmi
#	icons/obj/clothing/suits.dmi
#	maps/tether/tether_defines.dm
This commit is contained in:
Repede
2020-02-22 12:38:04 -05:00
905 changed files with 89234 additions and 7194 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -63,23 +63,23 @@
switch(bantype)
if(BANTYPE_PERMA)
if(!banckey || !banreason)
usr << "Not enough parameters (Requires ckey and reason)"
to_chat(usr, "Not enough parameters (Requires ckey and reason)")
return
banduration = null
banjob = null
if(BANTYPE_TEMP)
if(!banckey || !banreason || !banduration)
usr << "Not enough parameters (Requires ckey, reason and duration)"
to_chat(usr, "Not enough parameters (Requires ckey, reason and duration)")
return
banjob = null
if(BANTYPE_JOB_PERMA)
if(!banckey || !banreason || !banjob)
usr << "Not enough parameters (Requires ckey, reason and job)"
to_chat(usr, "Not enough parameters (Requires ckey, reason and job)")
return
banduration = null
if(BANTYPE_JOB_TEMP)
if(!banckey || !banreason || !banjob || !banduration)
usr << "Not enough parameters (Requires ckey, reason and job)"
to_chat(usr, "Not enough parameters (Requires ckey, reason and job)")
return
var/mob/playermob
@@ -116,14 +116,14 @@
var/new_ckey = ckey(input(usr,"New admin's ckey","Admin ckey", null) as text|null)
if(!new_ckey) return
if(new_ckey in admin_datums)
usr << "<font color='red'>Error: Topic 'editrights': [new_ckey] is already an admin</font>"
to_chat(usr, "<font color='red'>Error: Topic 'editrights': [new_ckey] is already an admin</font>")
return
adm_ckey = new_ckey
task = "rank"
else if(task != "show")
adm_ckey = ckey(href_list["ckey"])
if(!adm_ckey)
usr << "<font color='red'>Error: Topic 'editrights': No valid ckey</font>"
to_chat(usr, "<font color='red'>Error: Topic 'editrights': No valid ckey</font>")
return
var/datum/admins/D = admin_datums[adm_ckey]
@@ -155,7 +155,7 @@
if(config.admin_legacy_system)
new_rank = ckeyEx(new_rank)
if(!new_rank)
usr << "<font color='red'>Error: Topic 'editrights': Invalid rank</font>"
to_chat(usr, "<font color='red'>Error: Topic 'editrights': Invalid rank</font>")
return
if(config.admin_legacy_system)
if(admin_ranks.len)
@@ -264,7 +264,7 @@
var/mob/M = locate(href_list["mob"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
var/delmob = 0
@@ -370,14 +370,14 @@
var/mob/M = locate(href_list["jobban2"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(!M.ckey) //sanity
usr << "This mob has no ckey"
to_chat(usr, "This mob has no ckey")
return
if(!job_master)
usr << "Job Master has not been setup!"
to_chat(usr, "Job Master has not been setup!")
return
var/dat = ""
@@ -631,16 +631,16 @@
//JOBBAN'S INNARDS
else if(href_list["jobban3"])
if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN,0))
usr << "<span class='warning'>You do not have the appropriate permissions to add job bans!</span>"
to_chat(usr, "<span class='warning'>You do not have the appropriate permissions to add job bans!</span>")
return
if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0) && !config.mods_can_job_tempban) // If mod and tempban disabled
usr << "<span class='warning'>Mod jobbanning is disabled!</span>"
to_chat(usr, "<span class='warning'>Mod jobbanning is disabled!</span>")
return
var/mob/M = locate(href_list["jobban4"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(M != usr) //we can jobban ourselves
@@ -649,7 +649,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.
@@ -726,16 +726,16 @@
switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
if("Yes")
if(!check_rights(R_MOD,0) && !check_rights(R_BAN, 0))
usr << "<span class='warning'> You Cannot issue temporary job-bans!</span>"
to_chat(usr, "<span class='warning'> You Cannot issue temporary job-bans!</span>")
return
if(config.ban_legacy_system)
usr << "<font color='red'>Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.</font>"
to_chat(usr, "<font color='red'>Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.</font>")
return
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(!mins)
return
if(check_rights(R_MOD, 0) && !check_rights(R_BAN, 0) && mins > config.mod_job_tempban_max)
usr << "<span class='warning'> Moderators can only job tempban up to [config.mod_job_tempban_max] minutes!</span>"
to_chat(usr, "<span class='warning'> Moderators can only job tempban up to [config.mod_job_tempban_max] minutes!</span>")
return
var/reason = sanitize(input(usr,"Reason?","Please State Reason","") as text|null)
if(!reason)
@@ -755,9 +755,9 @@
msg += ", [job]"
notes_add(M.ckey, "Banned from [msg] - [reason]", usr)
message_admins("<font color='blue'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes</font>", 1)
M << "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>"
M << "<font color='red'><B>The reason is: [reason]</B></font>"
M << "<font color='red'>This jobban will be lifted in [mins] minutes.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>")
to_chat(M, "<font color='red'><B>The reason is: [reason]</B></font>")
to_chat(M, "<font color='red'>This jobban will be lifted in [mins] minutes.</font>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
if("No")
@@ -776,9 +776,9 @@
else msg += ", [job]"
notes_add(M.ckey, "Banned from [msg] - [reason]", usr)
message_admins("<font color='blue'>[key_name_admin(usr)] banned [key_name_admin(M)] from [msg]</font>", 1)
M << "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>"
M << "<font color='red'><B>The reason is: [reason]</B></font>"
M << "<font color='red'>Jobban can be lifted only upon request.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been jobbanned by [usr.client.ckey] from: [msg].</B></BIG></font>")
to_chat(M, "<font color='red'><B>The reason is: [reason]</B></font>")
to_chat(M, "<font color='red'>Jobban can be lifted only upon request.</font>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
if("Cancel")
@@ -788,7 +788,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
@@ -809,7 +809,7 @@
continue
if(msg)
message_admins("<font color='blue'>[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg]</font>", 1)
M << "<font color='red'><BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG></font>"
to_chat(M, "<font color='red'><BIG><B>You have been un-jobbanned by [usr.client.ckey] from [msg].</B></BIG></font>")
href_list["jobban2"] = 1 // lets it fall through and refresh
return 1
return 0 //we didn't do anything!
@@ -847,11 +847,11 @@
else if(href_list["newban"])
if(!check_rights(R_MOD,0) && !check_rights(R_BAN, 0))
usr << "<span class='warning'>You do not have the appropriate permissions to add bans!</span>"
to_chat(usr, "<span class='warning'>You do not have the appropriate permissions to add bans!</span>")
return
if(check_rights(R_MOD,0) && !check_rights(R_ADMIN, 0) && !config.mods_can_job_tempban) // If mod and tempban disabled
usr << "<span class='warning'>Mod jobbanning is disabled!</span>"
to_chat(usr, "<span class='warning'>Mod jobbanning is disabled!</span>")
return
var/mob/M = locate(href_list["newban"])
@@ -865,7 +865,7 @@
if(!mins)
return
if(check_rights(R_MOD, 0) && !check_rights(R_BAN, 0) && mins > config.mod_tempban_max)
usr << "<span class='warning'>Moderators can only job tempban up to [config.mod_tempban_max] minutes!</span>"
to_chat(usr, "<span class='warning'>Moderators can only job tempban up to [config.mod_tempban_max] minutes!</span>")
return
if(mins >= 525600) mins = 525599
var/reason = sanitize(input(usr,"Reason?","reason","Griefer") as text|null)
@@ -874,15 +874,15 @@
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
ban_unban_log_save("[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.")
notes_add(M.ckey,"[usr.client.ckey] has banned [M.ckey]. - Reason: [reason] - This will be removed in [mins] minutes.",usr)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes.</font>")
feedback_inc("ban_tmp",1)
DB_ban_record(BANTYPE_TEMP, M, mins, reason)
feedback_inc("ban_tmp_mins",mins)
if(config.banappeals)
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
to_chat(M, "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>")
else
M << "<font color='red'>No ban appeals URL has been set.</font>"
to_chat(M, "<font color='red'>No ban appeals URL has been set.</font>")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")
var/datum/admin_help/AH = M.client ? M.client.current_ticket : null
@@ -901,12 +901,12 @@
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0, M.lastKnownIP)
if("No")
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a permanent ban.</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a permanent ban.</font>")
if(config.banappeals)
M << "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>"
to_chat(M, "<font color='red'>To try to resolve this matter head to [config.banappeals]</font>")
else
M << "<font color='red'>No ban appeals URL has been set.</font>"
to_chat(M, "<font color='red'>No ban appeals URL has been set.</font>")
ban_unban_log_save("[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.")
notes_add(M.ckey,"[usr.client.ckey] has permabanned [M.ckey]. - Reason: [reason] - This is a permanent ban.",usr)
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
@@ -969,7 +969,7 @@
master_mode = href_list["c_mode2"]
log_admin("[key_name(usr)] set the mode as [config.mode_names[master_mode]].")
message_admins("<font color='blue'>[key_name_admin(usr)] set the mode as [config.mode_names[master_mode]].</font>", 1)
world << "<font color='blue'><b>The mode is now: [config.mode_names[master_mode]]</b></font>"
to_world("<font color='blue'><b>The mode is now: [config.mode_names[master_mode]]</b></font>")
Game() // updates the main game menu
world.save_mode(master_mode)
.(href, list("c_mode"=1))
@@ -992,7 +992,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)]")
@@ -1004,7 +1004,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)]")
@@ -1016,7 +1016,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
@@ -1033,10 +1033,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)
@@ -1061,7 +1061,7 @@
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
M << "<font color='red'>You have been sent to the prison station!</font>"
to_chat(M, "<font color='red'>You have been sent to the prison station!</font>")
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("<font color='blue'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</font>", 1)
@@ -1073,10 +1073,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)
@@ -1086,7 +1086,7 @@
sleep(5)
M.loc = pick(tdome1)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 1)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 1)", 1)
@@ -1098,10 +1098,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)
@@ -1111,7 +1111,7 @@
sleep(5)
M.loc = pick(tdome2)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Team 2)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Team 2)", 1)
@@ -1123,17 +1123,17 @@
var/mob/M = locate(href_list["tdomeadmin"])
if(!ismob(M))
usr << "This can only be used on instances of type /mob"
to_chat(usr, "This can only be used on instances of type /mob")
return
if(istype(M, /mob/living/silicon/ai))
usr << "This cannot be used on instances of type /mob/living/silicon/ai"
to_chat(usr, "This cannot be used on instances of type /mob/living/silicon/ai")
return
M.Paralyse(5)
sleep(5)
M.loc = pick(tdomeadmin)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Admin.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Admin.)", 1)
@@ -1145,10 +1145,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)
@@ -1162,7 +1162,7 @@
sleep(5)
M.loc = pick(tdomeobserve)
spawn(50)
M << "<font color='blue'>You have been sent to the Thunderdome.</font>"
to_chat(M, "<font color='blue'>You have been sent to the Thunderdome.</font>")
log_admin("[key_name(usr)] has sent [key_name(M)] to the thunderdome. (Observer.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(M)] to the thunderdome. (Observer.)", 1)
@@ -1171,7 +1171,7 @@
var/mob/living/L = locate(href_list["revive"])
if(!istype(L))
usr << "This can only be used on instances of type /mob/living"
to_chat(usr, "This can only be used on instances of type /mob/living")
return
if(config.allow_admin_rev)
@@ -1179,14 +1179,14 @@
message_admins("<font color='red'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!</font>", 1)
log_admin("[key_name(usr)] healed / Rrvived [key_name(L)]")
else
usr << "Admin Rejuvinates have been disabled"
to_chat(usr, "Admin Rejuvinates have been disabled")
else if(href_list["makeai"])
if(!check_rights(R_SPAWN)) return
var/mob/living/carbon/human/H = locate(href_list["makeai"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
message_admins("<font color='red'>Admin [key_name_admin(usr)] AIized [key_name_admin(H)]!</font>", 1)
@@ -1198,7 +1198,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)
@@ -1208,7 +1208,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)
@@ -1218,7 +1218,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)
@@ -1228,7 +1228,7 @@
var/mob/living/carbon/human/H = locate(href_list["togmutate"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
var/block=text2num(href_list["block"])
usr.client.cmd_admin_toggle_block(H,block)
@@ -1302,7 +1302,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 = ""
@@ -1342,19 +1342,19 @@
if(MALE,FEMALE) gender_description = "[M.gender]"
else gender_description = "<font color='red'><b>[M.gender]</b></font>"
src.owner << "<b>Info about [M.name]:</b> "
src.owner << "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]"
src.owner << "Name = <b>[M.name]</b>; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = <b>[M.key]</b>;"
src.owner << "Location = [location_description];"
src.owner << "[special_role_description]"
src.owner << "(<a href='?src=\ref[usr];priv_msg=\ref[M]'>PM</a>) (<A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[M]'>VV</A>) (<A HREF='?src=\ref[src];subtlemessage=\ref[M]'>SM</A>) ([admin_jump_link(M, src)]) (<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A>)"
to_chat(src.owner, "<b>Info about [M.name]:</b> ")
to_chat(src.owner, "Mob type = [M.type]; Gender = [gender_description] Damage = [health_description]")
to_chat(src.owner, "Name = <b>[M.name]</b>; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = <b>[M.key]</b>;")
to_chat(src.owner, "Location = [location_description];")
to_chat(src.owner, "[special_role_description]")
to_chat(src.owner, "(<a href='?src=\ref[usr];priv_msg=\ref[M]'>PM</a>) (<A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[M]'>VV</A>) (<A HREF='?src=\ref[src];subtlemessage=\ref[M]'>SM</A>) ([admin_jump_link(M, src)]) (<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A>)")
else if(href_list["adminspawncookie"])
if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["adminspawncookie"])
if(!ishuman(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand )
@@ -1371,14 +1371,14 @@
log_admin("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
message_admins("[key_name(H)] got their cookie, spawned by [key_name(src.owner)]")
feedback_inc("admin_cookies_spawned",1)
H << "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>"
to_chat(H, "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>")
else if(href_list["adminsmite"])
if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["adminsmite"])
if(!ishuman(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
owner.smite(H)
@@ -1388,7 +1388,7 @@
var/mob/living/M = locate(href_list["BlueSpaceArtillery"])
if(!isliving(M))
usr << "This can only be used on instances of type /mob/living"
to_chat(usr, "This can only be used on instances of type /mob/living")
return
if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Blue Space Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
@@ -1399,41 +1399,41 @@
else if(href_list["CentComReply"])
var/mob/living/L = locate(href_list["CentComReply"])
if(!istype(L))
usr << "This can only be used on instances of type /mob/living/"
to_chat(usr, "This can only be used on instances of type /mob/living/")
return
if(L.can_centcom_reply())
var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(L)] via their headset.","Outgoing message from CentCom", ""))
if(!input) return
src.owner << "You sent [input] to [L] via a secure channel."
to_chat(src.owner, "You sent [input] to [L] via a secure channel.")
log_admin("[src.owner] replied to [key_name(L)]'s CentCom message with the message [input].")
message_admins("[src.owner] replied to [key_name(L)]'s CentCom message with: \"[input]\"")
if(!isAI(L))
L << "<span class='info'>You hear something crackle in your headset for a moment before a voice speaks.</span>"
L << "<span class='info'>Please stand by for a message from Central Command.</span>"
L << "<span class='info'>Message as follows.</span>"
L << "<span class='notice'>[input]</span>"
L << "<span class='info'>Message ends.</span>"
to_chat(L, "<span class='info'>You hear something crackle in your headset for a moment before a voice speaks.</span>")
to_chat(L, "<span class='info'>Please stand by for a message from Central Command.</span>")
to_chat(L, "<span class='info'>Message as follows.</span>")
to_chat(L, "<span class='notice'>[input]</span>")
to_chat(L, "<span class='info'>Message ends.</span>")
else
src.owner << "The person you are trying to contact does not have functional radio equipment."
to_chat(src.owner, "The person you are trying to contact does not have functional radio equipment.")
else if(href_list["SyndicateReply"])
var/mob/living/carbon/human/H = locate(href_list["SyndicateReply"])
if(!istype(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
if(!istype(H.l_ear, /obj/item/device/radio/headset) && !istype(H.r_ear, /obj/item/device/radio/headset))
usr << "The person you are trying to contact is not wearing a headset"
to_chat(usr, "The person you are trying to contact is not wearing a headset")
return
var/input = sanitize(input(src.owner, "Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from a shadowy figure...", ""))
if(!input) return
src.owner << "You sent [input] to [H] via a secure channel."
to_chat(src.owner, "You sent [input] to [H] via a secure channel.")
log_admin("[src.owner] replied to [key_name(H)]'s illegal message with the message [input].")
H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. <b>\"[input]\"</b> Message ends.\""
to_chat(H, "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your benefactor. Message as follows, agent. <b>\"[input]\"</b> Message ends.\"")
else if(href_list["AdminFaxView"])
var/obj/item/fax = locate(href_list["AdminFaxView"])
@@ -1455,7 +1455,7 @@
usr << browse(data, "window=[B.name]")
else
usr << "<font color='red'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</font>"
to_chat(usr, "<font color='red'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</font>")
else if (href_list["AdminFaxViewPage"])
var/page = text2num(href_list["AdminFaxViewPage"])
@@ -1527,7 +1527,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)
@@ -1551,7 +1551,7 @@
if(!check_rights(R_SPAWN)) return
if(!config.allow_admin_spawning)
usr << "Spawning of items is not allowed."
to_chat(usr, "Spawning of items is not allowed.")
return
var/atom/loc = usr.loc
@@ -1611,24 +1611,24 @@
where = "onfloor"
if( where == "inhand" )
usr << "Support for inhand not available yet. Will spawn on floor."
to_chat(usr, "Support for inhand not available yet. Will spawn on floor.")
where = "onfloor"
if ( where == "inhand" ) //Can only give when human or monkey
if ( !( ishuman(usr) || issmall(usr) ) )
usr << "Can only spawn in hand when you're a human or a monkey."
to_chat(usr, "Can only spawn in hand when you're a human or a monkey.")
where = "onfloor"
else if ( usr.get_active_hand() )
usr << "Your active hand is full. Spawning on floor."
to_chat(usr, "Your active hand is full. Spawning on floor.")
where = "onfloor"
if ( where == "inmarked" )
if ( !marked_datum )
usr << "You don't have any object marked. Abandoning spawn."
to_chat(usr, "You don't have any object marked. Abandoning spawn.")
return
else
if ( !istype(marked_datum,/atom) )
usr << "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn."
to_chat(usr, "The object you have marked cannot be used as a target. Target must be of type /atom. Abandoning spawn.")
return
var/atom/target //Where the object will be spawned
@@ -1880,17 +1880,17 @@
if(check_rights(R_SPAWN)) //VOREStation Edit
var/mob/M = locate(href_list["toglang"])
if(!istype(M))
usr << "[M] is illegal type, must be /mob!"
to_chat(usr, "[M] is illegal type, must be /mob!")
return
var/lang2toggle = href_list["lang"]
var/datum/language/L = GLOB.all_languages[lang2toggle]
if(L in M.languages)
if(!M.remove_language(lang2toggle))
usr << "Failed to remove language '[lang2toggle]' from \the [M]!"
to_chat(usr, "Failed to remove language '[lang2toggle]' from \the [M]!")
else
if(!M.add_language(lang2toggle))
usr << "Failed to add language '[lang2toggle]' from \the [M]!"
to_chat(usr, "Failed to add language '[lang2toggle]' from \the [M]!")
show_player_panel(M)
@@ -1899,7 +1899,7 @@
var/mob/living/carbon/M = locate(href_list["cryoplayer"]) //VOREStation edit from just an all mob check to mob/living/carbon
if(!istype(M))
to_chat(usr,"<span class='warning'>Mob doesn't exist!</span>")
to_chat(usr, "<span class='warning'>Mob doesn't exist!</span>")
return
var/client/C = usr.client

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,6 @@
set category = null
set name = "Drop Everything"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/confirm = alert(src, "Make [M] drop everything?", "Message", "Yes", "No")
@@ -20,8 +19,8 @@
set category = "Admin"
set name = "Prison"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
if (ismob(M))
if(istype(M, /mob/living/silicon/ai))
alert("The AI can't be sent to prison you jerk!", null, null, null, null, null)
@@ -38,7 +37,7 @@
prisoner.equip_to_slot_or_del(new /obj/item/clothing/under/color/prison(prisoner), slot_w_uniform)
prisoner.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(prisoner), slot_shoes)
spawn(50)
M << "<font color='red'>You have been sent to the prison station!</font>"
to_chat(M, "<font color='red'>You have been sent to the prison station!</font>")
log_admin("[key_name(usr)] sent [key_name(M)] to the prison station.")
message_admins("<font color='blue'>[key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.</font>", 1)
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -48,7 +47,7 @@
set category = "Admin"
set name = "Check new Players"
if(!holder)
to_chat(src, "Only staff members may use this command.")
return
var/age = alert(src, "Age check", "Show accounts yonger then _____ days","7", "30" , "All")
@@ -83,7 +82,6 @@
if(!ismob(M)) return
if (!holder)
to_chat(src, "Only administrators may use this command.")
return
var/msg = sanitize(input("Message:", text("Subtle PM to [M.key]")) as text)
@@ -93,7 +91,7 @@
if(usr)
if (usr.client)
if(usr.client.holder)
M << "<B>You hear a voice in your head...</B> <i>[msg]</i>"
to_chat(M, "<B>You hear a voice in your head...</B> <i>[msg]</i>")
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
msg = "<span class='adminnotice'><b> SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] :</b> [msg]</span>"
@@ -106,14 +104,13 @@
set name = "Global Narrate"
if (!holder)
to_chat(src, "Only administrators may use this command.")
return
var/msg = sanitize(input("Message:", text("Enter the text you wish to appear to everyone:")) as text)
if (!msg)
return
world << "[msg]"
to_world("[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins("<font color='blue'><B> GlobalNarrate: [key_name_admin(usr)] : [msg]<BR></B></font>", 1)
feedback_add_details("admin_verb","GLN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -123,7 +120,6 @@
set name = "Direct Narrate"
if(!holder)
to_chat(src, "Only administrators and moderators may use this command.")
return
if(!M)
@@ -147,11 +143,12 @@
/client/proc/cmd_admin_godmode(mob/M as mob in mob_list)
set category = "Special Verbs"
set name = "Godmode"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
M.status_flags ^= GODMODE
usr << "<font color='blue'> Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</font>"
to_chat(usr, "<font color='blue'> Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</font>")
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]"
@@ -168,12 +165,12 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
if(!usr || !usr.client)
return
if(!usr.client.holder)
usr << "<font color='red'>Error: cmd_admin_mute: You don't have permission to do this.</font>"
to_chat(usr, "<font color='red'>Error: cmd_admin_mute: You don't have permission to do this.</font>")
return
if(!M.client)
usr << "<font color='red'>Error: cmd_admin_mute: This mob doesn't have a client tied to it.</font>"
to_chat(usr, "<font color='red'>Error: cmd_admin_mute: This mob doesn't have a client tied to it.</font>")
if(M.client.holder)
usr << "<font color='red'>Error: cmd_admin_mute: You cannot mute an admin/mod.</font>"
to_chat(usr, "<font color='red'>Error: cmd_admin_mute: You cannot mute an admin/mod.</font>")
if(!M.client)
return
if(M.client.holder)
@@ -196,7 +193,7 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
M.client.prefs.muted |= mute_type
log_admin("SPAM AUTOMUTE: [muteunmute] [key_name(M)] from [mute_string]")
message_admins("SPAM AUTOMUTE: [muteunmute] [key_name_admin(M)] from [mute_string].", 1)
M << "<span class='alert'>You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.</span>"
to_chat(M, "<span class='alert'>You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.</span>")
feedback_add_details("admin_verb","AUTOMUTE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -209,15 +206,16 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
log_admin("[key_name(usr)] has [muteunmute] [key_name(M)] from [mute_string]")
message_admins("[key_name_admin(usr)] has [muteunmute] [key_name_admin(M)] from [mute_string].", 1)
M << "<span class = 'alert'>You have been [muteunmute] from [mute_string].</span>"
to_chat(M, "<span class = 'alert'>You have been [muteunmute] from [mute_string].</span>")
feedback_add_details("admin_verb","MUTE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_add_random_ai_law()
set category = "Fun"
set name = "Add Random AI Law"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm != "Yes") return
log_admin("[key_name(src)] has added a random AI law.")
@@ -264,8 +262,10 @@ Ccomp's first proc.
set category = "Special Verbs"
set name = "Allow player to respawn"
set desc = "Let's the player bypass the wait to respawn or allow them to re-enter their corpse."
if(!holder)
to_chat(src, "Only administrators and moderators may use this command.")
return
var/list/ghosts= get_ghosts(1,1)
var/target = input("Please, select a ghost!", "COME BACK TO LIFE!", null, null) as null|anything in ghosts
@@ -295,7 +295,8 @@ Ccomp's first proc.
set desc = "Toggles antagHUD usage for observers"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/action=""
if(config.antag_hud_allowed)
for(var/mob/observer/dead/g in get_ghosts())
@@ -304,7 +305,7 @@ Ccomp's first proc.
if(g.antagHUD)
g.antagHUD = 0 // Disable it on those that have it enabled
g.has_enabled_antagHUD = 2 // We'll allow them to respawn
g << "<font color='red'><B>The Administrator has disabled AntagHUD </B></font>"
to_chat(g, "<font color='red'><B>The Administrator has disabled AntagHUD </B></font>")
config.antag_hud_allowed = 0
to_chat(src, "<font color='red'><B>AntagHUD usage has been disabled</B></font>")
action = "disabled"
@@ -312,7 +313,7 @@ Ccomp's first proc.
for(var/mob/observer/dead/g in get_ghosts())
if(!g.client.holder) // Add the verb back for all non-admin ghosts
g.verbs += /mob/observer/dead/verb/toggle_antagHUD
g << "<font color='blue'><B>The Administrator has enabled AntagHUD </B></font>" // Notify all observers they can now use AntagHUD
to_chat(g, "<font color='blue'><B>The Administrator has enabled AntagHUD </B></font>") // Notify all observers they can now use AntagHUD
config.antag_hud_allowed = 1
action = "enabled"
to_chat(src, "<font color='blue'><B>AntagHUD usage has been enabled</B></font>")
@@ -327,19 +328,21 @@ Ccomp's first proc.
set category = "Server"
set name = "Toggle antagHUD Restrictions"
set desc = "Restricts players that have used antagHUD from being able to join this round."
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/action=""
if(config.antag_hud_restricted)
for(var/mob/observer/dead/g in get_ghosts())
g << "<font color='blue'><B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B></font>"
to_chat(g, "<font color='blue'><B>The administrator has lifted restrictions on joining the round if you use AntagHUD</B></font>")
action = "lifted restrictions"
config.antag_hud_restricted = 0
to_chat(src, "<font color='blue'><B>AntagHUD restrictions have been lifted</B></font>")
else
for(var/mob/observer/dead/g in get_ghosts())
g << "<font color='red'><B>The administrator has placed restrictions on joining the round if you use AntagHUD</B></font>"
g << "<font color='red'><B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B></font>"
to_chat(g, "<font color='red'><B>The administrator has placed restrictions on joining the round if you use AntagHUD</B></font>")
to_chat(g, "<font color='red'><B>Your AntagHUD has been disabled, you may choose to re-enabled it but will be under restrictions </B></font>")
g.antagHUD = 0
g.has_enabled_antagHUD = 0
action = "placed restrictions"
@@ -358,8 +361,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Special Verbs"
set name = "Spawn Character"
set desc = "(Re)Spawn a client's loaded character."
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
//I frontload all the questions so we don't have a half-done process while you're reading.
@@ -507,7 +510,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
log_admin("[admin] has spawned [player_key]'s character [new_character.real_name].")
message_admins("[admin] has spawned [player_key]'s character [new_character.real_name].", 1)
new_character << "You have been fully spawned. Enjoy the game."
to_chat(new_character, "You have been fully spawned. Enjoy the game.")
feedback_add_details("admin_verb","RSPCH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -516,21 +519,22 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_add_freeform_ai_law()
set category = "Fun"
set name = "Add Custom AI law"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/input = sanitize(input(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", "") as text|null)
if(!input)
return
for(var/mob/living/silicon/ai/M in mob_list)
if (M.stat == 2)
usr << "Upload failed. No signal is being detected from the AI."
to_chat(usr, "Upload failed. No signal is being detected from the AI.")
else if (M.see_in_dark == 0)
usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power."
to_chat(usr, "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power.")
else
M.add_ion_law(input)
for(var/mob/living/silicon/ai/O in mob_list)
O << input + "<font color='red'>... LAWS UPDATED!</font>"
to_chat(O,input + "<font color='red'>... LAWS UPDATED!</font>")
O.show_laws()
log_admin("Admin [key_name(usr)] has added a new AI law - [input]")
@@ -544,9 +548,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list)
set category = "Special Verbs"
set name = "Rejuvenate"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
if(!mob)
return
if(!istype(M))
@@ -566,9 +571,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/cmd_admin_create_centcom_report()
set category = "Special Verbs"
set name = "Create Command Report"
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/input = sanitize(input(usr, "Please enter anything you want. Anything. Serious.", "What?", "") as message|null, extra = 0)
var/customname = sanitizeSafe(input(usr, "Pick a title for the report.", "Title") as text|null)
if(!input)
@@ -583,7 +589,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if("Yes")
command_announcement.Announce(input, customname, new_sound = 'sound/AI/commandreport.ogg', msg_sanitized = 1);
if("No")
world << "<font color='red'>New [using_map.company_name] Update available at all communication consoles.</font>"
to_world("<font color='red'>New [using_map.company_name] Update available at all communication consoles.</font>")
world << sound('sound/AI/commandreport.ogg')
log_admin("[key_name(src)] has created a command report: [input]")
@@ -595,8 +601,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
set name = "Delete"
if (!holder)
to_chat(src, "Only administrators may use this command.")
return
admin_delete(O)
/client/proc/cmd_admin_list_open_jobs()
@@ -604,8 +610,8 @@ Traitors and the like can also be revived with the previous role mostly intact.
set name = "List free slots"
if (!holder)
to_chat(src, "Only administrators may use this command.")
return
if(job_master)
for(var/datum/job/job in job_master.occupations)
to_chat(src, "[job.title]: [job.total_positions]")
@@ -690,6 +696,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
set name = "Gibself"
set category = "Fun"
if(!holder)
return
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm == "Yes")
if (istype(mob, /mob/observer/dead)) // so they don't spam gibs everywhere
@@ -732,9 +741,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
if(M)
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes</font>."
M << "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a temporary ban, it will be removed in [mins] minutes</font>.")
to_chat(M, "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.")
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis will be removed in [mins] minutes.</font>")
world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=[mins]&server=[replacetext(config.server_name, "#", "")]")
@@ -747,9 +756,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!reason)
return
AddBan(M.ckey, M.computer_id, reason, usr.ckey, 0, 0)
M << "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>"
M << "<font color='red'>This is a permanent ban.</font>"
M << "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>"
to_chat(M, "<font color='red'><BIG><B>You have been banned by [usr.client.ckey].\nReason: [reason].</B></BIG></font>")
to_chat(M, "<font color='red'>This is a permanent ban.</font>")
to_chat(M, "<font color='red'>To try to resolve this matter head to http://ss13.donglabs.com/forum/</font>")
log_admin("[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.")
message_admins("<font color='blue'>[usr.client.ckey] has banned [M.ckey].\nReason: [reason]\nThis is a permanent ban.</font>")
world.Export("http://216.38.134.132/adminlog.php?type=ban&key=[usr.client.key]&key2=[M.key]&msg=[html_decode(reason)]&time=perma&server=[replacetext(config.server_name, "#", "")]")
@@ -767,9 +776,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
set name = "Check Contents"
set popup_menu = FALSE //VOREStation Edit - Declutter.
if(!holder)
return
var/list/L = M.get_contents()
for(var/t in L)
usr << "[t]"
to_chat(usr, "[t]")
feedback_add_details("admin_verb","CC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/* This proc is DEFERRED. Does not do anything.
@@ -808,6 +820,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
set name = "Change View Range"
set desc = "switches between 1x and custom views"
if(!holder)
return
if(view == world.view)
view = input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128)
else
@@ -819,7 +834,6 @@ Traitors and the like can also be revived with the previous role mostly intact.
feedback_add_details("admin_verb","CVRA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/admin_call_shuttle()
set category = "Admin"
set name = "Call Shuttle"
@@ -887,9 +901,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Special Verbs"
set name = "Attack Log"
usr << text("<font color='red'><b>Attack Log for []</b></font>", mob)
to_chat(usr, "<font color='red'><b>Attack Log for [mob]</b></font>")
for(var/t in M.attack_log)
usr << t
to_chat(usr,t)
feedback_add_details("admin_verb","ATTL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -901,13 +915,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_FUN)) return
if (ticker && ticker.mode)
usr << "Nope you can't do this, the game's already started. This only works before rounds!"
to_chat(usr, "Nope you can't do this, the game's already started. This only works before rounds!")
return
if(ticker.random_players)
ticker.random_players = 0
message_admins("Admin [key_name_admin(usr)] has disabled \"Everyone is Special\" mode.", 1)
usr << "Disabled."
to_chat(usr, "Disabled.")
return
@@ -919,9 +933,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.", 1)
if(notifyplayers == "Yes")
world << "<font color='blue'><b>Admin [usr.key] has forced the players to have completely random identities!</font></b>"
to_world("<font color='blue'><b>Admin [usr.key] has forced the players to have completely random identities!</font></b>")
usr << "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>."
to_chat(usr, "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>.")
ticker.random_players = 1
feedback_add_details("admin_verb","MER") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -930,17 +944,17 @@ Traitors and the like can also be revived with the previous role mostly intact.
/client/proc/toggle_random_events()
set category = "Server"
set name = "Toggle random events on/off"
set desc = "Toggles random events such as meteors, black holes, blob (but not space dust) on/off"
if(!check_rights(R_SERVER)) return //VOREStation Edit
if(!config.allow_random_events)
config.allow_random_events = 1
usr << "Random events enabled"
to_chat(usr, "Random events enabled")
message_admins("Admin [key_name_admin(usr)] has enabled random events.", 1)
else
config.allow_random_events = 0
usr << "Random events disabled"
to_chat(usr, "Random events disabled")
message_admins("Admin [key_name_admin(usr)] has disabled random events.", 1)
feedback_add_details("admin_verb","TRE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

View File

@@ -2,8 +2,8 @@
set category = "Special Verbs"
set name = "Spawn Character As Mob"
set desc = "Spawn a specified ckey as a chosen mob."
if(!holder)
to_chat(src, "Only administrators may use this command.")
return
var/client/picked_client = input(src, "Who are we spawning as a mob?", "Client", "Cancel") as null|anything in GLOB.clients

View File

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

View File

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

View File

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