mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation
# 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:
@@ -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>"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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") )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>")
|
||||
@@ -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
|
||||
|
||||
@@ -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]")
|
||||
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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!
|
||||
@@ -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)]")
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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]")
|
||||
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
|
||||
@@ -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>")
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'
|
||||
@@ -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!
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user