Merge pull request #389 from SoundScopes/master

Scopes updates
This commit is contained in:
SoundScopes
2015-02-21 05:07:44 +00:00
14 changed files with 129 additions and 54 deletions
+8 -1
View File
@@ -179,8 +179,15 @@ var/list/alldepartments = list("Central Command")
/proc/Centcomm_fax(var/sent, var/sentname, var/mob/Sender)
var/msg = "\blue <b><font color='orange'>CENTCOMM FAX: </font>[key_name(Sender,0,1,0)] (<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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;CentcommFaxReply=\ref[Sender]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>"
for(var/client/C in admins)
var/msg = "\blue <b><font color='orange'>CENTCOMM FAX: </font>"
if(C.holder.rights & (R_ADMIN|R_FUN|R_MOD))
msg += "[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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>)"
else
msg += "[key_name(Sender,0,1,0)]"
msg += " (<a href='?_src_=holder;CentcommFaxReply=\ref[Sender]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>"
if(C.holder.rights & (R_ADMIN|R_DUTYOFF|R_FUN))
C << msg
+5 -4
View File
@@ -312,15 +312,16 @@ datum/controller/vote
proc/interface(var/client/C)
if(!C) return
var/admin = 0
var/trialmin = 0
var/modmin = 0
var/funmin = 0
if(C.holder)
admin = 1
if(C.holder.rights & R_ADMIN)
trialmin = 1
else if(C.holder.rights & R_FUN)
funmin = 1
else if(C.holder.rights & R_MOD)
modmin = 1
voting |= C
. = "<html><head><title>Voting Panel</title></head><body>"
@@ -337,7 +338,7 @@ datum/controller/vote
. += "<li><a href='?src=\ref[src];vote=[i]'>[choices[i]] ([votes] votes)</a></li>"
. += "</ul><hr>"
if(admin)
if(trialmin||modmin)
. += "(<a href='?src=\ref[src];vote=cancel'>Cancel Vote</a>) "
else
. += "<h2>Start a vote:</h2><hr><ul><li>"
@@ -379,7 +380,7 @@ datum/controller/vote
usr << browse(null, "window=vote")
return
if("cancel")
if(usr.client.holder)
if(usr.client.holder & (R_ADMIN|R_MOD))
reset()
if("toggle_restart")
if(usr.client.holder)
+1 -3
View File
@@ -419,9 +419,7 @@ client
if( (usr.client != src) || !src.holder )
return
if(href_list["Vars"])
if(!holder.rights & (R_ADMIN|R_MOD|R_FUN|R_DEV))
usr << "This can only be used on instances of type /mob"
debug_variables(locate(href_list["Vars"]))
debug_variables(locate(href_list["Vars"]))
//~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
else if(href_list["rename"])
+2 -1
View File
@@ -479,7 +479,8 @@ proc/display_roundstart_logout_report()
for(var/mob/M in mob_list)
if(M.client && M.client.holder)
M << msg
if(M.client.holder.rights & (R_ADMIN|R_MOD|R_DEV))
M << msg
proc/get_nt_opposed()
+22 -2
View File
@@ -40,6 +40,16 @@ var/global/normal_ooc_colour = "#002eb8"
return
if(holder)
if(holder.rights & R_DUTYOFF && !(holder.rights & (R_ADMIN|R_MOD|R_DEV|R_FUN)))
if(!ooc_allowed)
src << "\red OOC is globally muted"
return
if(!dooc_allowed && (mob.stat == DEAD))
usr << "\red OOC for dead mobs has been turned off."
return
if(prefs.muted & MUTE_OOC)
src << "\red You cannot use OOC (muted)."
return
if(holder.rights & R_DEV && !(holder.rights & R_ADMIN))
if(!ooc_allowed && !ooc_dev_allowed)
src << "\red OOC is muted for developers"
@@ -147,6 +157,16 @@ var/global/normal_ooc_colour = "#002eb8"
return
if(holder)
if(holder.rights & R_DUTYOFF && !(holder.rights & (R_ADMIN|R_MOD|R_DEV)))
if(!looc_allowed)
src << "\red LOOC is muted."
return
if(!dooc_allowed && (mob.stat == DEAD))
usr << "\red OOC for dead mobs has been turned off."
return
if(prefs.muted & MUTE_OOC)
src << "\red You cannot use OOC (muted)."
return
if(holder.rights & R_DEV && !(holder.rights & R_ADMIN))
if(!looc_allowed && !looc_dev_allowed)
src << "\red LOOC is muted for developers"
@@ -171,13 +191,13 @@ var/global/normal_ooc_colour = "#002eb8"
var/display_name = src.key
if(holder)
if(holder.fakekey)
if(C.holder && C.holder.rights & (R_ADMIN|R_MOD|R_DEV))
if(C.holder && C.holder.rights & (R_ADMIN|R_MOD))
display_name = "[holder.fakekey]/([src.key])"
else
display_name = holder.fakekey
C << "<font color='#6699CC'><span class='ooc'><span class='prefix'>LOOC:</span> <EM>[display_name]:</EM> <span class='message'>[msg]</span></span></font>"
for(var/client/C in admins)
if(C.holder.rights & R_DUTYOFF && (!C.holder.rights & (R_ADMIN|R_MOD|R_DEV)))
if(!C.holder.rights & (R_ADMIN|R_MOD|R_DEV))
continue
if(C.prefs.toggles & CHAT_LOOC)
var/prefix = "(R)LOOC"
+20 -1
View File
@@ -50,6 +50,8 @@
var/modmsg = ""
var/devmsg = ""
var/eventmsg = ""
var/dutymsg = ""
var/num_duty_online = 0
var/num_devs_online = 0
var/num_mods_online = 0
var/num_event_online = 0
@@ -120,6 +122,20 @@
devmsg += " (AFK)"
devmsg += "\n"
num_devs_online++
else if(R_DUTYOFF & C.holder.rights && !(C.holder.rights & (R_ADMIN|R_MOD)))
dutymsg += "\t[C]"
if(isobserver(C.mob))
dutymsg += " - Observing"
else if(istype(C.mob,/mob/new_player))
dutymsg += " - Lobby"
else
dutymsg += " - Playing"
if(C.is_afk())
dutymsg += " (AFK)"
dutymsg += "\n"
num_duty_online++
else
for(var/client/C in admins)
@@ -141,5 +157,8 @@
if(num_event_online)
eventwho += "\n<b> Current Event Hosts([num_event_online]):</b>\n" + eventmsg
msg = "<b>Current Admins ([num_admins_online]):</b>\n" + msg + "\n<b> Current Moderators([num_mods_online]):</b>\n" + modmsg + eventwho + "\n<b> Current Developers([num_devs_online]):</b>\n" + devmsg
if(num_duty_online)
dutymsg = "\n<b> Current Duty Officers([num_event_online]):</b>\n" + dutymsg
msg = "<b>Current Admins ([num_admins_online]):</b>\n" + msg + "\n<b> Current Moderators([num_mods_online]):</b>\n" + modmsg + eventwho + "\n<b> Current Developers([num_devs_online]):</b>\n" + devmsg + dutymsg
src << msg
@@ -80,9 +80,9 @@
var/flags
switch(new_rank)
if("Head Developer")
flags = 32767
flags = 65535
if("Head Admin")
flags = 32767
flags = 65535
if("Primary Admin")
flags = 8191
if("Secondary Admin")
@@ -97,6 +97,8 @@
flags = 5672
if("Retired Admin")
flags = 8194
if("Duty Officer")
flags = 32768
else
flags = 0
@@ -393,8 +393,9 @@ var/list/admin_verbs_hideable = list(
var/list/admin_verbs_duty = list(
/client/proc/spawn_duty_officer,
/client/proc/cmd_admin_create_centcom_report,
/client/proc/cmd_duty_say,
/client/verb/returntobody
/client/proc/returntobody
)
/client/proc/add_admin_verbs()
+1 -1
View File
@@ -155,7 +155,7 @@
if(admin_ranks.len)
new_rank = input("Please select a rank", "New rank", null, null) as null|anything in (admin_ranks|"*New Rank*")
else
new_rank = input("Please select a rank", "New rank", null, null) as null|anything in list("Head Developer","Head Admin", "Primary Admin", "Secondary Admin", "Moderator", "Trial Moderator", "Event Host - Moderator", "Event Host", "Retired Admin", "*New Rank*")
new_rank = input("Please select a rank", "New rank", null, null) as null|anything in list("Head Developer","Head Admin", "Primary Admin", "Secondary Admin", "Moderator", "Trial Moderator", "Event Host - Moderator", "Event Host", "Retired Admin", "Duty Officer", "*New Rank*")
var/rights = 0
if(D)
+19 -4
View File
@@ -30,13 +30,28 @@
//Stealing the second var because why not)
/proc/Centcomm_announce(var/text , var/mob/Sender , var/silicon = 0 , var/iamessage)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
var/modmin = " (<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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>)"
var/msg_start = "\blue <b><font color=orange>CENTCOMM"
var/msg_end = ""
if(silicon)
msg = "\blue <b><font color=orange>CENTCOMM(A.L.I.C.E.):</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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommAIReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
msg_start += "(A.L.I.C.E.):</font>"
msg_end = "(<A HREF='?_src_=holder;CentcommAIReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
else
msg = "\blue <b><font color=orange>CENTCOMM[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>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[Sender]'>BSA</A>) (<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
msg_start += "[iamessage ? " IA" : ""]:</font>"
msg_end = "(<A HREF='?_src_=holder;CentcommReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
for(var/client/C in admins)
if(C.holder.rights & (R_ADMIN|R_DUTYOFF|R_FUN))
C << msg
if(C.holder.rights & (R_ADMIN|R_MOD|R_FUN))
if(C.holder.rights & R_MOD && !C.holder.rights & R_DUTYOFF)
continue
C << "[msg_start][key_name(Sender, 1)][modmin][msg_end]"
continue
if(C.holder.rights & (R_DUTYOFF))
if(C.holder.rights & R_MOD)
C << "[msg_start][key_name(Sender, 1)][msg_end]"
else
C << "[msg_start][key_name(Sender, 0, 1, 0)][msg_end]"
/proc/Syndicate_announce(var/text , var/mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
+16 -10
View File
@@ -16,12 +16,14 @@
src << "\red The game hasn't started yet!"
return
if(mob.mind.special_role == "Duty Officer")
if(mob.mind && mob.mind.special_role == "Duty Officer")
src << "\red You are already a Duty Officer"
return
var/wasLiving = 0
if(istype(mob, /mob/living))
holder.original_mob = mob
wasLiving = 1
for (var/obj/effect/landmark/L in landmarks_list)
if(L.name == "DutyOfficer")
@@ -102,13 +104,16 @@
M.mind = new
M.mind.current = M
M.mind.original = M
M.mind.admin_mob_placeholder = mob
if(wasLiving)
M.mind.admin_mob_placeholder = mob
M.mind.assigned_role = "Central Command Duty Officer"
M.mind.special_role = "Duty Officer"
M.loc = L.loc
M.key = key
spawn(1)
holder.original_mob.key = "@[key]"
if(wasLiving)
spawn(1)
holder.original_mob.key = "@[key]"
M.equip_if_possible(new /obj/item/clothing/under/rank/centcom/officer(M), slot_w_uniform)
M.equip_if_possible(new /obj/item/clothing/shoes/centcom(M), slot_shoes)
@@ -135,18 +140,18 @@
W.registered_name = M.real_name
M.equip_if_possible(W, slot_wear_id)
verbs += /client/verb/returntobody
verbs += /client/proc/returntobody
break
/client/verb/returntobody()
/client/proc/returntobody()
set name = "Return to mob"
set desc = "The Duty is done, return to your original mob"
set category = "Special Verbs"
if(!check_rights(0)) return
if(mob.mind.special_role != "Duty Officer")
verbs -= /client/verb/returntobody
if(!mob.mind || mob.mind.special_role != "Duty Officer")
verbs -= /client/proc/returntobody
return
if(!holder) return
@@ -159,14 +164,15 @@
if(holder.original_mob)
if(holder.original_mob == M)
verbs -= /client/verb/returntobody
verbs -= /client/proc/returntobody
return
holder.original_mob.key = key
holder.original_mob = null
else
if(mob.mind.admin_mob_placeholder)
mob.mind.admin_mob_placeholder.key = key
mob.mind.admin_mob_placeholder = null
else
mob.ghostize(0)
verbs -= /client/verb/returntobody
verbs -= /client/proc/returntobody
del(M)
+18 -22
View File
@@ -14,12 +14,6 @@ proc/populate_gear_list()
var/whitelisted //Term to check the whitelist for..
//Standard gear datums.
/*
/datum/gear/cards
display_name = "deck of cards"
path = /obj/item/weapon/deck
cost = 2*/
/datum/gear/dice
display_name = "d20"
path = /obj/item/weapon/dice/d20
@@ -35,7 +29,6 @@ proc/populate_gear_list()
path = /obj/item/weapon/storage/wallet
cost = 2
/datum/gear/comb
display_name = "purple comb"
path = /obj/item/weapon/fluff/cado_keppel_1
@@ -186,28 +179,28 @@ proc/populate_gear_list()
/datum/gear/labcoat
display_name = "labcoat"
path = /obj/item/clothing/suit/storage/labcoat
cost = 3
cost = 2
// slot = slot_wear_suit
/datum/gear/bluescrubs
display_name = "blue scrubs"
path = /obj/item/clothing/under/rank/medical/blue
cost = 1
cost = 3
/datum/gear/purplescrubs
display_name = "purple scrubs"
path = /obj/item/clothing/under/rank/medical/purple
cost = 1
cost = 3
/datum/gear/greenscrubs
display_name = "green scrubs"
path = /obj/item/clothing/under/rank/medical/green
cost = 1
cost = 3
/datum/gear/surgeryapron
display_name = "surgical apron"
path = /obj/item/clothing/suit/apron/surgery
cost = 1
cost = 2
/datum/gear/sandal
@@ -219,7 +212,7 @@ proc/populate_gear_list()
/datum/gear/work_boots
display_name = "work boots"
path = /obj/item/clothing/shoes/work_boots
cost = 1
cost = 2
/datum/gear/leather
display_name = "leather shoes"
@@ -272,13 +265,13 @@ proc/populate_gear_list()
/datum/gear/green_gloves
display_name = "green gloves"
path = /obj/item/clothing/gloves/green
cost = 2
cost = 1
// slot = slot_gloves
/datum/gear/white_gloves
display_name = "white gloves"
path = /obj/item/clothing/gloves/white
cost = 2
cost = 1
// slot = slot_gloves
/datum/gear/black_shoes
@@ -338,7 +331,7 @@ proc/populate_gear_list()
/datum/gear/jackboots
display_name = "jackboots"
path = /obj/item/clothing/shoes/jackboots
cost = 3
cost = 2
// slot = slot_shoes
/datum/gear/webbing
@@ -455,7 +448,6 @@ proc/populate_gear_list()
path = /obj/item/clothing/under/lawyer/oldman
cost = 3
//Security
/datum/gear/security
display_name = "Security HUD"
@@ -495,22 +487,26 @@ proc/populate_gear_list()
// slot = slot_head
allowed_roles = list("Security Officer","Head of Security","Warden")
/*
// Disabled until there is an alt-uniform for each department
// Uniforms cost 3 points.
/datum/gear/formal_uni
display_name = "formal officer's uniform"
path = /obj/item/clothing/under/rank/security/formal
cost = 1
cost = 3
allowed_roles = list("Security Officer")
/datum/gear/formal_cap
display_name = "officer's formal cap"
path = /obj/item/clothing/head/helmet/secfcap
cost = 1
cost = 2
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/formal_uniw
display_name = "formal warden's uniform"
path = /obj/item/clothing/under/rank/warden/formal
cost = 1
cost = 3
allowed_roles = list("Warden")
/datum/gear/formal_jacketw
@@ -522,7 +518,7 @@ proc/populate_gear_list()
/datum/gear/formal_unihos
display_name = "formal Head of Security's uniform"
path = /obj/item/clothing/under/rank/head_of_security/formal
cost = 1
cost = 3
allowed_roles = list("Head of Security")
/datum/gear/formal_jackethos
@@ -530,7 +526,7 @@ proc/populate_gear_list()
path = /obj/item/clothing/suit/armor/hos/formal
cost = 2
allowed_roles = list("Head of Security")
*/
//Engineering
/datum/gear/eng_beret
+9 -1
View File
@@ -173,6 +173,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
else
var/response = alert(src, "Are you -sure- you want to ghost?\n(You are alive. If you ghost, you won't be able to play this round for another 30 minutes! You can't change your mind so choose wisely!)","Are you sure you want to ghost?","Ghost","Stay in body")
if(response != "Ghost") return //didn't want to ghost after-all
if(client.holder && mind.special_role == "DutyOfficer")
client.holder.original_mob = null
var/mob/dead/observer/ghost = ghostize(0)
ghost.timeofdeath = world.time
mind.admin_mob_placeholder = null
del(src)
return
resting = 1
var/turf/location = get_turf(src)
message_admins("[key_name_admin(usr)] has ghosted. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[location.x];Y=[location.y];Z=[location.z]'>JMP</a>)")
@@ -243,7 +251,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
usr << "<span class='warning'>The astral cord that ties your body and your spirit has been severed. You are likely to wander the realm beyond until your body is finally dead and thus reunited with you.</span>"
return
mind.current.ajourn=0
if(mind.current == client.holder.original_mob)
if(client.holder && mind.current == client.holder.original_mob)
client.holder.original_mob = null
mind.current.key = key
return 1
+2 -1
View File
@@ -63,7 +63,8 @@
continue
if(M.client && M.client.holder && (M.client.prefs.toggles & CHAT_DEAD) ) // Show the message to admins/mods with deadchat toggled on
M << rendered //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not.
if(M.client.holder.rights & (R_MOD|R_ADMIN|R_DEV|R_FUN))
M << rendered //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not.
return