Merge pull request #25 from Aurorastation/master

Development
This commit is contained in:
skull132
2015-02-18 21:34:18 +02:00
31 changed files with 5604 additions and 4897 deletions
+4
View File
@@ -788,6 +788,7 @@
#include "code\modules\admin\ToRban.dm"
#include "code\modules\admin\DB ban\functions.dm"
#include "code\modules\admin\permissionverbs\permissionedit.dm"
#include "code\modules\admin\permissionverbs\permsission lists.dm"
#include "code\modules\admin\verbs\adminhelp.dm"
#include "code\modules\admin\verbs\adminjump.dm"
#include "code\modules\admin\verbs\adminpm.dm"
@@ -835,6 +836,7 @@
#include "code\modules\aurora\aurora_areas.dm"
#include "code\modules\aurora\banner.dm"
#include "code\modules\aurora\bluespacetech.dm"
#include "code\modules\aurora\duty officer.dm"
#include "code\modules\aurora\intern.dm"
#include "code\modules\aurora\recycler.dm"
#include "code\modules\aurora\weldbackpack.dm"
@@ -1048,6 +1050,8 @@
#include "code\modules\mob\living\carbon\alien\death.dm"
#include "code\modules\mob\living\carbon\alien\emote.dm"
#include "code\modules\mob\living\carbon\alien\life.dm"
#include "code\modules\mob\living\carbon\alien\login.dm"
#include "code\modules\mob\living\carbon\alien\logout.dm"
#include "code\modules\mob\living\carbon\alien\progression.dm"
#include "code\modules\mob\living\carbon\alien\say.dm"
#include "code\modules\mob\living\carbon\alien\update_icons.dm"
+2 -2
View File
@@ -179,9 +179,9 @@ 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, 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;CentcommFaxReply=\ref[Sender]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a>"
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)
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights) || (R_FUN & C.holder.rights))
if(C.holder.rights & (R_ADMIN|R_DUTYOFF|R_FUN))
C << msg
proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt)
+1
View File
@@ -323,6 +323,7 @@ proc/tg_list2text(list/list, glue=",")
if(rights & R_SPAWN) . += "[seperator]+SPAWN"
if(rights & R_MOD) . += "[seperator]+MODERATOR"
if(rights & R_DEV) . += "[seperator]+DEVELOPER"
if(rights & R_DUTYOFF) . += "[seperator]+DUTYOFFICER"
return .
/proc/ui_style2icon(ui_style)
+2
View File
@@ -68,6 +68,8 @@ datum/controller/vote
if(auto_muted && !ooc_allowed)
auto_muted = 0
ooc_allowed = !( ooc_allowed )
ooc_dev_allowed = 1 //Because
ooc_mod_allowed = 1 //Because
world << "<b>The OOC channel has been automatically enabled due to vote end.</b>"
log_admin("OOC was toggled automatically due to vote end.")
message_admins("OOC has been toggled on automatically.")
+8 -3
View File
@@ -12,6 +12,9 @@ client
usr << "\red You need to be an administrator to access this."
return
if(!holder.rights & (R_MOD|R_ADMIN|R_FUN|R_DEV))
usr << "\red You need to be an admin/dev to access this."
return
var/title = ""
var/body = ""
@@ -416,7 +419,9 @@ client
if( (usr.client != src) || !src.holder )
return
if(href_list["Vars"])
debug_variables(locate(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"]))
//~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
else if(href_list["rename"])
@@ -532,7 +537,7 @@ client
href_list["datumrefresh"] = href_list["godmode"]
else if(href_list["gib"])
if(!check_rights(0)) return
if(!check_rights(R_SPAWN)) return
var/mob/M = locate(href_list["gib"])
if(!istype(M))
@@ -564,7 +569,7 @@ client
usr.client.cmd_admin_drop_everything(M)
else if(href_list["direct_control"])
if(!check_rights(0)) return
if(!check_rights(R_DEBUG|R_DEV)) return
var/mob/M = locate(href_list["direct_control"])
if(!istype(M))
+1
View File
@@ -34,6 +34,7 @@ datum/mind
var/name //replaces mob/var/original_name
var/mob/living/current
var/mob/living/original //TODO: remove.not used in any meaningful way ~Carn. First I'll need to tweak the way silicon-mobs handle minds.
var/mob/living/admin_mob_placeholder = null //Used to return to your body without varedit -Sounds-
var/active = 0
var/memory
@@ -838,7 +838,7 @@ var/list/datum/dna/hivemind_bank = list()
var/mob/living/carbon/T = changeling_sting(40,/mob/proc/changeling_DEATHsting, 0)
if(!T) return 0
T << "<span class='danger'>You feel a small prick and your chest becomes tight.</span>"
T << "<span class='danger'>Everything is starting to hurt... I better get some help..</span>"
T.silent = 10
T.Paralyse(10)
T.make_jittery(1000)
@@ -64,21 +64,21 @@ var/list/datum/power/changeling/powerinstances = list()
/datum/power/changeling/deaf_sting
name = "Deaf Sting"
desc = "We silently sting a human, completely deafening them for a short time."
desc = "We sting a human, completely deafening them for a short time."
genomecost = 1
allowduringlesserform = 1
verbpath = /mob/proc/changeling_deaf_sting
/datum/power/changeling/blind_sting
name = "Blind Sting"
desc = "We silently sting a human, completely blinding them for a short time."
name = "Blinding Sting"
desc = "With this, we completely blind a human for a short time."
genomecost = 2
allowduringlesserform = 1
verbpath = /mob/proc/changeling_blind_sting
/datum/power/changeling/silence_sting
name = "Silence Sting"
desc = "We silently sting a human, completely silencing them for a short time."
desc = "We sting a human, completely silencing them for a short time."
helptext = "Does not provide a warning to a victim that they have been stung, until they try to speak and cannot."
genomecost = 3
allowduringlesserform = 1
@@ -121,7 +121,7 @@ var/list/datum/power/changeling/powerinstances = list()
/datum/power/changeling/DeathSting
name = "Death Sting"
desc = "We silently sting a human, filling him with potent chemicals. His rapid death is all but assured."
desc = "We impale a human, filling him with potent chemicals. His rapid death is all but assured."
genomecost = 10
verbpath = /mob/proc/changeling_DEATHsting
+2
View File
@@ -184,6 +184,8 @@
return list(access_cent_general, access_cent_living)
if("Medical Officer")
return list(access_cent_general, access_cent_living, access_cent_medical)
if("Duty Officer")
return list(access_cent_general, access_cent_living, access_cent_medical, access_cent_captain)
if("Death Commando")
return list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)
if("Research Officer")
+6 -3
View File
@@ -71,7 +71,7 @@ var/global/normal_ooc_colour = "#002eb8"
var/display_name = src.key
if(holder)
if(holder.fakekey)
if(C.holder)
if(C.holder & (holder.rights & (R_ADMIN|R_MOD)))
display_name = "[holder.fakekey]/([src.key])"
else
display_name = holder.fakekey
@@ -164,18 +164,21 @@ var/global/normal_ooc_colour = "#002eb8"
continue
var/client/C = M.client
if (C in admins)
continue //they are handled after that
if(C.holder.rights & (R_ADMIN|R_MOD|R_DEV))
continue //they are handled after that
if(C.prefs.toggles & CHAT_LOOC)
var/display_name = src.key
if(holder)
if(holder.fakekey)
if(C.holder)
if(C.holder && C.holder.rights & (R_ADMIN|R_MOD|R_DEV))
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)))
continue
if(C.prefs.toggles & CHAT_LOOC)
var/prefix = "(R)LOOC"
if (C.mob in heard)
+107 -96
View File
@@ -46,6 +46,10 @@ var/global/floorIsLava = 0
usr << "Error: you are not an admin!"
return
if(!src.rights & (R_ADMIN|R_MOD|R_FUN|R_DEV))
usr << "Error: you are not an admin!"
return
var/body = "<html><head><center><title>Options for [M.key]</title></head>"
body += "<body>Options panel for <b>[M]</b>"
if(M.client)
@@ -122,98 +126,100 @@ var/global/floorIsLava = 0
"}
if (M.client)
if(!istype(M, /mob/new_player))
body += "<br><br>"
body += "<b>Transformation:</b>"
body += "<br>"
if(check_rights(R_ADMIN|R_MOD|R_FUN,0))
if(!istype(M, /mob/new_player))
body += "<br><br>"
body += "<b>Transformation:</b>"
body += "<br>"
//Monkey
if(ismonkey(M))
body += "<B>Monkeyized</B> | "
else
body += "<A href='?src=\ref[src];monkeyone=\ref[M]'>Monkeyize</A> | "
//Monkey
if(ismonkey(M))
body += "<B>Monkeyized</B> | "
else
body += "<A href='?src=\ref[src];monkeyone=\ref[M]'>Monkeyize</A> | "
//Corgi
if(iscorgi(M))
body += "<B>Corgized</B> | "
else
body += "<A href='?src=\ref[src];corgione=\ref[M]'>Corgize</A> | "
//Corgi
if(iscorgi(M))
body += "<B>Corgized</B> | "
else
body += "<A href='?src=\ref[src];corgione=\ref[M]'>Corgize</A> | "
//AI / Cyborg
if(isAI(M))
body += "<B>Is an AI</B> "
else if(ishuman(M))
body += {"<A href='?src=\ref[src];makeai=\ref[M]'>Make AI</A> |
<A href='?src=\ref[src];makerobot=\ref[M]'>Make Robot</A> |
<A href='?src=\ref[src];makeslime=\ref[M]'>Make slime</A> |
<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien(BROKEN)</A> |
//AI / Cyborg
if(isAI(M))
body += "<B>Is an AI</B> "
else if(ishuman(M))
body += {"<A href='?src=\ref[src];makeai=\ref[M]'>Make AI</A> |
<A href='?src=\ref[src];makerobot=\ref[M]'>Make Robot</A> |
<A href='?src=\ref[src];makeslime=\ref[M]'>Make slime</A> |
<A href='?src=\ref[src];makealien=\ref[M]'>Make Alien(BROKEN)</A> |
"}
//Simple Animals
if(isanimal(M))
body += "<A href='?src=\ref[src];makeanimal=\ref[M]'>Re-Animalize</A> | "
else
body += "<A href='?src=\ref[src];makeanimal=\ref[M]'>Animalize</A> | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
body += "<br><br>"
body += "<b>DNA Blocks:</b><br><table border='2'><tr><th>&nbsp;</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th>"
var/bname
for(var/block=1;block<=DNA_SE_LENGTH;block++)
if(((block-1)%5)==0)
body += "</tr><tr><th>[block-1]</th>"
bname = assigned_blocks[block]
body += "<td>"
if(bname)
var/bstate=M.dna.GetSEState(block)
var/bcolor="[(bstate)?"#006600":"#ff0000"]"
body += "<A href='?src=\ref[src];togmutate=\ref[M];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
else
body += "[block]"
body+="</td>"
body += "</tr></table>"
body += {"<br><br>
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
<A href='?src=\ref[src];simplemake=observer;mob=\ref[M]'>Observer</A> |
<A href='?src=\ref[src];simplemake=robot;mob=\ref[M]'>Cyborg</A> |
<A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A><br>
Slime: <A href='?src=\ref[src];simplemake=slime;mob=\ref[M]'>Baby</A> |
<A href='?src=\ref[src];simplemake=adultslime;mob=\ref[M]'>Adult</A><br>
Animal: <A href='?src=\ref[src];simplemake=monkey;mob=\ref[M]'>Monkey</A> |
<A href='?src=\ref[src];simplemake=cat;mob=\ref[M]'>Cat</A> |
<A href='?src=\ref[src];simplemake=runtime;mob=\ref[M]'>Runtime</A> |
<A href='?src=\ref[src];simplemake=corgi;mob=\ref[M]'>Corgi</A> |
<A href='?src=\ref[src];simplemake=ian;mob=\ref[M]'>Ian</A> |
<A href='?src=\ref[src];simplemake=crab;mob=\ref[M]'>Crab</A> |
<A href='?src=\ref[src];simplemake=coffee;mob=\ref[M]'>Coffee</A> |
<A href='?src=\ref[src];simplemake=nymph;mob=\ref[M]'>Nymph</A><br>
Construct: <A href='?src=\ref[src];simplemake=constructarmoured;mob=\ref[M]'>Armoured</A> |
<A href='?src=\ref[src];simplemake=constructbuilder;mob=\ref[M]'>Builder</A> |
<A href='?src=\ref[src];simplemake=constructwraith;mob=\ref[M]'>Wraith</A> |
<A href='?src=\ref[src];simplemake=shade;mob=\ref[M]'>Shade</A><br>
Alien: <A href='?src=\ref[src];simplemake=drone;mob=\ref[M]'>Drone</A> |
<A href='?src=\ref[src];simplemake=hunter;mob=\ref[M]'>Hunter</A> |
<A href='?src=\ref[src];simplemake=queen;mob=\ref[M]'>Queen</A> |
<A href='?src=\ref[src];simplemake=sentinel;mob=\ref[M]'>Sentinel</A> |
<A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A><br>
"}
//Simple Animals
if(isanimal(M))
body += "<A href='?src=\ref[src];makeanimal=\ref[M]'>Re-Animalize</A> | "
else
body += "<A href='?src=\ref[src];makeanimal=\ref[M]'>Animalize</A> | "
// DNA2 - Admin Hax
if(M.dna && iscarbon(M))
body += "<br><br>"
body += "<b>DNA Blocks:</b><br><table border='2'><tr><th>&nbsp;</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th>"
var/bname
for(var/block=1;block<=DNA_SE_LENGTH;block++)
if(((block-1)%5)==0)
body += "</tr><tr><th>[block-1]</th>"
bname = assigned_blocks[block]
body += "<td>"
if(bname)
var/bstate=M.dna.GetSEState(block)
var/bcolor="[(bstate)?"#006600":"#ff0000"]"
body += "<A href='?src=\ref[src];togmutate=\ref[M];block=[block]' style='color:[bcolor];'>[bname]</A><sub>[block]</sub>"
else
body += "[block]"
body+="</td>"
body += "</tr></table>"
body += {"<br><br>
<b>Rudimentary transformation:</b><font size=2><br>These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.</font><br>
<A href='?src=\ref[src];simplemake=observer;mob=\ref[M]'>Observer</A> |
<A href='?src=\ref[src];simplemake=robot;mob=\ref[M]'>Cyborg</A> |
<A href='?src=\ref[src];simplemake=human;mob=\ref[M]'>Human</A><br>
Slime: <A href='?src=\ref[src];simplemake=slime;mob=\ref[M]'>Baby</A> |
<A href='?src=\ref[src];simplemake=adultslime;mob=\ref[M]'>Adult</A><br>
Animal: <A href='?src=\ref[src];simplemake=monkey;mob=\ref[M]'>Monkey</A> |
<A href='?src=\ref[src];simplemake=cat;mob=\ref[M]'>Cat</A> |
<A href='?src=\ref[src];simplemake=runtime;mob=\ref[M]'>Runtime</A> |
<A href='?src=\ref[src];simplemake=corgi;mob=\ref[M]'>Corgi</A> |
<A href='?src=\ref[src];simplemake=ian;mob=\ref[M]'>Ian</A> |
<A href='?src=\ref[src];simplemake=crab;mob=\ref[M]'>Crab</A> |
<A href='?src=\ref[src];simplemake=coffee;mob=\ref[M]'>Coffee</A> |
<A href='?src=\ref[src];simplemake=nymph;mob=\ref[M]'>Nymph</A><br>
Construct: <A href='?src=\ref[src];simplemake=constructarmoured;mob=\ref[M]'>Armoured</A> |
<A href='?src=\ref[src];simplemake=constructbuilder;mob=\ref[M]'>Builder</A> |
<A href='?src=\ref[src];simplemake=constructwraith;mob=\ref[M]'>Wraith</A> |
<A href='?src=\ref[src];simplemake=shade;mob=\ref[M]'>Shade</A><br>
Alien: <A href='?src=\ref[src];simplemake=drone;mob=\ref[M]'>Drone</A> |
<A href='?src=\ref[src];simplemake=hunter;mob=\ref[M]'>Hunter</A> |
<A href='?src=\ref[src];simplemake=queen;mob=\ref[M]'>Queen</A> |
<A href='?src=\ref[src];simplemake=sentinel;mob=\ref[M]'>Sentinel</A> |
<A href='?src=\ref[src];simplemake=larva;mob=\ref[M]'>Larva</A><br>
"}
if (M.client)
body += {"<br><br>
<b>Other actions:</b>
<br>
<A href='?src=\ref[src];forcespeech=\ref[M]'>Forcesay</A> |
<A href='?src=\ref[src];tdome1=\ref[M]'>Thunderdome 1</A> |
<A href='?src=\ref[src];tdome2=\ref[M]'>Thunderdome 2</A> |
<A href='?src=\ref[src];tdomeadmin=\ref[M]'>Thunderdome Admin</A> |
<A href='?src=\ref[src];tdomeobserve=\ref[M]'>Thunderdome Observer</A> |
"}
if(check_rights(R_ADMIN|R_FUN,0))
body += {"<br><br>
<b>Other actions:</b>
<br>
<A href='?src=\ref[src];forcespeech=\ref[M]'>Forcesay</A> |
<A href='?src=\ref[src];tdome1=\ref[M]'>Thunderdome 1</A> |
<A href='?src=\ref[src];tdome2=\ref[M]'>Thunderdome 2</A> |
<A href='?src=\ref[src];tdomeadmin=\ref[M]'>Thunderdome Admin</A> |
<A href='?src=\ref[src];tdomeobserve=\ref[M]'>Thunderdome Observer</A> |
"}
body += {"<br>
</center></body></html>
@@ -589,14 +595,16 @@ var/global/floorIsLava = 0
usr << browse(dat, "window=ban;size=400x400")
/datum/admins/proc/Game()
if(!check_rights(0)) return
if(!check_rights(R_ADMIN|R_FUN)) return
var/dat = {"
<center><B>Game Panel</B></center><hr>\n
<A href='?src=\ref[src];c_mode=1'>Change Game Mode</A><br>
"}
if(master_mode == "secret")
dat += "<A href='?src=\ref[src];f_secret=1'>(Force Secret Mode)</A><br>"
var/dat = ""
if(check_rights(R_ADMIN,0))
dat += {"
<center><B>Game Panel</B></center><hr>\n
<A href='?src=\ref[src];c_mode=1'>Change Game Mode</A><br>
"}
if(master_mode == "secret")
dat += "<A href='?src=\ref[src];f_secret=1'>(Force Secret Mode)</A><br>"
dat += {"
<BR>
@@ -604,10 +612,13 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];quick_create_object=1'>Quick Create Object</A><br>
<A href='?src=\ref[src];create_turf=1'>Create Turf</A><br>
<A href='?src=\ref[src];create_mob=1'>Create Mob</A><br>
<br><A href='?src=\ref[src];vsc=airflow'>Edit Airflow Settings</A><br>
<A href='?src=\ref[src];vsc=plasma'>Edit Plasma Settings</A><br>
<A href='?src=\ref[src];vsc=default'>Choose a default ZAS setting</A><br>
"}
if(check_rights(R_ADMIN,0))
dat += {"
<br><A href='?src=\ref[src];vsc=airflow'>Edit Airflow Settings</A><br>
<A href='?src=\ref[src];vsc=plasma'>Edit Plasma Settings</A><br>
<A href='?src=\ref[src];vsc=default'>Choose a default ZAS setting</A><br>
"}
usr << browse(dat, "window=admin2;size=210x280")
return
+1
View File
@@ -42,6 +42,7 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
if("spawn","create") rights |= R_SPAWN
if("mod") rights |= R_MOD
if("developer") rights |= R_DEV
if("dutyofficer") rights |= R_DUTYOFF
admin_ranks[rank] = rights
previous_rights = rights
+8 -1
View File
@@ -1,5 +1,6 @@
/*
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
var/list/admin_verbs_default = list(
var/list/admin_verbs_default = list(
/client/proc/player_panel,
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
@@ -101,6 +102,7 @@ var/list/admin_verbs_sounds = list(
var/list/admin_verbs_fun = list(
//Hey look it's in order of letters ^_^
/datum/admins/proc/access_news_network,
/datum/admins/proc/Game,
/datum/admins/proc/toggle_aliens,
/datum/admins/proc/toggle_space_ninja,
/client/proc/admin_ghost,
@@ -138,6 +140,7 @@ var/list/admin_verbs_fun = list(
/client/proc/send_space_ninja,
/client/proc/toggle_view_range
)
var/list/admin_verbs_dev = list(
/client/proc/dsay,
/client/proc/togglebuildmodeself,
@@ -388,6 +391,7 @@ var/list/admin_verbs_mod = list(
/client/proc/toggle_power_update_profiling,
/client/proc/atmos_toggle_debug
)
*/
/client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs
set name = "Adminverbs - Hide Most"
@@ -445,6 +449,9 @@ var/list/admin_verbs_mod = list(
else if(istype(mob,/mob/new_player))
src << "<font color='red'>Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first.</font>"
else
//first lets see if this works
if(!holder.original_mob)
holder.original_mob = mob
//ghostize
var/mob/body = mob
body.ghostize(1)
+2
View File
@@ -8,6 +8,8 @@ var/list/admin_datums = list()
var/datum/marked_datum
var/mob/living/original_mob = null //used to return to body from Duty Officers
var/admincaster_screen = 0 //See newscaster.dm under machinery for a full description
var/datum/feed_message/admincaster_feed_message = new /datum/feed_message //These two will act as holders.
var/datum/feed_channel/admincaster_feed_channel = new /datum/feed_channel
@@ -0,0 +1,417 @@
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
var/list/admin_verbs_default = list(
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
)
var/list/admin_verbs_admin = list(
// /datum/admins/proc/show_traitor_panel, /*interface which shows a mob's mind*/ -Removed due to rare practical use. Moved to debug verbs ~Errorage
// /client/proc/sendmob, /*sends a mob somewhere*/ -Removed due to it needing two sorting procs to work, which were executed every time an admin right-clicked. ~Errorage
// /client/proc/toggle_hear_deadcast, /*toggles whether we hear deadchat*/
// /client/proc/deadchat /*toggles deadchat on/off*/
/datum/admins/proc/announce, /*priority announce something to all clients.*/
/datum/admins/proc/access_news_network, /*allows access of newscasters*/
/datum/admins/proc/PlayerNotes,
/datum/admins/proc/show_player_info,
/datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags*/
/datum/admins/proc/show_skills,
/datum/admins/proc/toggleenter, /*toggles whether people can join the current game*/
/datum/admins/proc/toggleguests, /*toggles whether guests can join the current game*/
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
/datum/admins/proc/toggledevooc,
/datum/admins/proc/togglemodooc,
/datum/admins/proc/togglelooc,
/datum/admins/proc/togglemodlooc,
/datum/admins/proc/toggledevlooc,
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
/datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/
/datum/admins/proc/view_atk_log, /*shows the server combat-log, doesn't do anything presently*/
/datum/admins/proc/view_txt_log, /*shows the server log (diary) for today*/
/client/proc/admin_call_shuttle, /*allows us to call the emergency shuttle*/
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
/client/proc/alertlevels,
/client/proc/allow_character_respawn, /* Allows a ghost to respawn */
/client/proc/check_ai_laws, /*shows AI and borg laws*/
/client/proc/check_antagonists,
/client/proc/check_customitem_activity,
/client/proc/check_words, /*displays cult-words*/
/client/proc/cleartox,
/client/proc/cmd_admin_check_contents, /*displays the contents of an instance*/
/client/proc/cmd_admin_create_centcom_report,
/client/proc/cmd_admin_change_custom_event,
/client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/
/client/proc/cmd_admin_direct_narrate, /*send text directly to a player with no padding. Useful for narratives and fluff-text*/
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/cmd_admin_subtle_message, /*send an message to somebody as a 'voice in their head'*/
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
/client/proc/cmd_admin_rejuvenate,
/client/proc/cmd_admin_unwind,
/client/proc/cmd_admin_wind,
/client/proc/cmd_admin_world_narrate, /*sends text to all players with no padding*/
/client/proc/cmd_duty_say,
/client/proc/cmd_mentor_check_new_players,
/client/proc/cmd_mod_say,
/client/proc/colorooc, /*allows us to set a custom colour for everythign we say in ooc*/
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game. +VAREDIT needed to modify*/
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
/client/proc/free_slot, /*frees slot for chosen job*/
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
/client/proc/Getmob, /*teleports a mob to our location*/
/client/proc/Getkey, /*teleports a mob with a certain ckey to our location*/
/client/proc/getserverlog, /*allows us to fetch server logs (diary) for other days*/
/client/proc/giveruntimelog, /*allows us to give access to runtime logs to somebody*/
/client/proc/global_man_up,
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/invisimin, /*allows our mob to go invisible/visible*/
/client/proc/Jump,
/client/proc/jumptocoord, /*we ghost and jump to a coordinate*/
/client/proc/jumptokey, /*allows us to jump to the location of a mob with a certain ckey*/
/client/proc/jumptomob, /*allows us to jump to a specific mob*/
/client/proc/jumptoturf, /*allows us to jump to a specific turf*/
/client/proc/man_up,
/client/proc/player_panel, /*shows an interface for all players, with links to various panels (old style)*/
/client/proc/player_panel_new, /*shows an interface for all players, with links to various panels*/
/client/proc/response_team, // Response Teams admin verb
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
/client/proc/toggle_antagHUD_use,
/client/proc/toggle_antagHUD_restrictions,
/client/proc/toggleattacklogs,
/client/proc/toggledebuglogs,
/client/proc/toggleghostwriters,
/client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/
/client/proc/toggledrones,
/client/proc/toggleprayers,
/client/proc/toggle_view_range, /*changes how far we can see*/
/client/proc/secrets,
/client/proc/set_ooc
)
var/list/admin_verbs_ban = list(
/client/proc/unban_panel,
/client/proc/jobbans,
/client/proc/warning_panel
)
var/list/admin_verbs_sounds = list(
/client/proc/play_local_sound,
/client/proc/play_sound
)
var/list/admin_verbs_fun = list(
//Hey look it's in order of letters ^_^
/datum/admins/proc/access_news_network,
/datum/admins/proc/toggle_aliens,
/datum/admins/proc/toggle_space_ninja,
/client/proc/admin_ghost,
/client/proc/alertlevels,
/client/proc/check_ai_laws,
/client/proc/cinematic,
/client/proc/cmd_admin_add_freeform_ai_law,
/client/proc/cmd_admin_add_random_ai_law,
/client/proc/cmd_admin_change_custom_event,
/client/proc/cmd_admin_create_centcom_report,
/client/proc/cmd_admin_delete,
/client/proc/cmd_admin_direct_narrate,
/client/proc/cmd_admin_dress,
/client/proc/cmd_admin_gib_self,
/client/proc/cmd_admin_pm_context,
/client/proc/cmd_admin_pm_panel,
/client/proc/cmd_admin_subtle_message,
/client/proc/cmd_admin_world_narrate,
/client/proc/cmd_debug_tog_aliens,
/client/proc/cmd_mod_say,
/client/proc/debug_variables,
/client/proc/drop_bomb,
/client/proc/dsay,
/client/proc/editappear,
/client/proc/everyone_random,
/client/proc/game_panel,
/client/proc/Getmob,
/client/proc/Getkey,
/client/proc/hide_most_verbs,
/client/proc/Jump,
/client/proc/jumptokey,
/client/proc/jumptomob,
/client/proc/make_area_sound,
/client/proc/make_sound,
/client/proc/object_talk,
/client/proc/one_click_antag,
/client/proc/player_panel,
/client/proc/secrets,
/client/proc/send_space_ninja,
/client/proc/toggle_view_range
)
var/list/admin_verbs_dev = list(
/datum/admins/proc/restart,
/client/proc/admin_ghost,
/client/proc/air_report,
/client/proc/enable_debug_verbs,
/client/proc/cmd_admin_delete,
/client/proc/cmd_admin_list_open_jobs,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_make_powernets,
/client/proc/cmd_debug_mob_lists,
/client/proc/cmd_dev_bst,
/client/proc/cmd_dev_say,
/client/proc/cmd_dev_reset_gravity,
/client/proc/cmd_dev_reset_floating,
/client/proc/Debug2,
/client/proc/debug_controller,
/client/proc/debug_variables,
/client/proc/dsay,
/client/proc/getruntimelog,
/client/proc/giveruntimelog,
/client/proc/hide_most_verbs,
/client/proc/kill_air,
/client/proc/kill_airgroup,
/client/proc/player_panel,
/client/proc/reload_admins,
/client/proc/restart_controller,
/client/proc/togglebuildmodeself,
/client/proc/toggledebuglogs,
/client/proc/togglescopeslogs,
/client/proc/ZASSettings
)
var/list/admin_verbs_spawn = list(
/datum/admins/proc/spawn_atom, /*allows us to spawn instances*/
/client/proc/respawn_character
)
var/list/admin_verbs_server = list(
/datum/admins/proc/adrev,
/datum/admins/proc/adspawn,
/datum/admins/proc/adjump,
/datum/admins/proc/delay,
/datum/admins/proc/toggleaban,
/datum/admins/proc/toggleAI,
/datum/admins/proc/toggle_aliens,
/datum/admins/proc/toggle_space_ninja,
/datum/admins/proc/immreboot,
/datum/admins/proc/startnow,
/datum/admins/proc/restart,
/client/proc/check_customitem_activity,
/client/proc/cmd_admin_delete, /*delete an instance/object/mob/etc*/
/client/proc/cmd_debug_del_all,
/client/proc/everyone_random,
/client/proc/nanomapgen_DumpImage,
/client/proc/SDQL_query,
/client/proc/SDQL2_query,
/client/proc/Set_Holiday,
/client/proc/ToRban,
/client/proc/toggle_log_hrefs,
/client/proc/toggle_random_events
)
var/list/admin_verbs_debug = list(
/datum/admins/proc/delay,
/datum/admins/proc/restart,
/client/proc/air_report,
/client/proc/callproc,
/client/proc/cmd_admin_delete,
/client/proc/cmd_admin_list_open_jobs,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_make_powernets,
/client/proc/cmd_debug_mob_lists,
/client/proc/cmd_debug_tog_aliens,
/client/proc/cmd_dev_reset_gravity,
/client/proc/cmd_dev_reset_floating,
/client/proc/Debug2,
/client/proc/debug_controller,
/client/proc/debug_variables,
/client/proc/enable_debug_verbs,
/client/proc/fillspace,
/client/proc/getruntimelog,
/client/proc/hide_activity,
/client/proc/kill_air,
/client/proc/kill_airgroup,
/client/proc/show_distribution_map,
/client/proc/toggledebuglogs,
/client/proc/reload_admins,
/client/proc/restart_controller,
/client/proc/remake_distribution_map,
/client/proc/ZASSettings,
)
var/list/admin_verbs_possess = list(
/proc/possess,
/proc/release
)
var/list/admin_verbs_permissions = list(
/client/proc/edit_admin_permissions
)
var/list/admin_verbs_rejuv = list(
/client/proc/respawn_character
)
var/list/admin_verbs_mod = list(
/datum/admins/proc/PlayerNotes,
/datum/admins/proc/show_player_info,
/datum/admins/proc/show_skills,
/datum/admins/proc/show_player_panel,
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/check_antagonists, /*shows all antags*/
/client/proc/check_ai_laws,
/client/proc/cmd_admin_check_contents,
/client/proc/cmd_admin_wind,
/client/proc/cmd_admin_unwind,
/client/proc/cmd_admin_pm_context, /*right-click adminPM interface*/
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
/client/proc/cmd_admin_subtle_message, /*send an message to somebody as a 'voice in their head'*/
/client/proc/cmd_mentor_check_new_players,
/client/proc/cmd_mod_say,
/client/proc/debug_variables, /*allows us to -see- the variables of any instance in the game.*/
/client/proc/dsay,
/client/proc/hide_most_verbs,
/client/proc/jobbans,
/client/proc/player_panel,
/client/proc/player_panel_new,
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
/client/proc/toggleattacklogs,
/client/proc/toggledebuglogs,
/client/proc/toggleprayers
)
//verbs which can be hidden - needs work
var/list/admin_verbs_hideable = list(
/datum/admins/proc/access_news_network,
/datum/admins/proc/adjump,
/datum/admins/proc/adrev,
/datum/admins/proc/adspawn,
/datum/admins/proc/announce,
/datum/admins/proc/delay,
/datum/admins/proc/immreboot,
/datum/admins/proc/restart,
/datum/admins/proc/show_traitor_panel,
/datum/admins/proc/startnow,
/datum/admins/proc/toggleaban,
/datum/admins/proc/toggleAI,
/datum/admins/proc/toggle_aliens,
/datum/admins/proc/toggleenter,
/datum/admins/proc/toggleguests,
/datum/admins/proc/toggle_space_ninja,
/datum/admins/proc/view_txt_log,
/datum/admins/proc/view_atk_log,
/client/proc/admin_call_shuttle,
/client/proc/admin_cancel_shuttle,
/client/proc/admin_ghost,
/client/proc/air_report,
/client/proc/callproc,
/client/proc/check_words,
/client/proc/cinematic,
/client/proc/cmd_admin_add_freeform_ai_law,
/client/proc/cmd_admin_add_random_ai_law,
/client/proc/cmd_admin_check_contents,
/client/proc/cmd_admin_create_centcom_report,
/client/proc/cmd_admin_direct_narrate,
/client/proc/cmd_admin_dress,
/client/proc/cmd_admin_gib_self,
/client/proc/cmd_admin_subtle_message,
/client/proc/cmd_admin_world_narrate,
/client/proc/cmd_debug_make_powernets,
/client/proc/cmd_debug_mob_lists,
/client/proc/cmd_admin_list_open_jobs,
/client/proc/cmd_debug_del_all,
/client/proc/cmd_debug_tog_aliens,
/client/proc/colorooc,
// /client/proc/deadchat,
/client/proc/deadmin_self,
/client/proc/Debug2,
/client/proc/debug_controller,
/client/proc/drop_bomb,
/client/proc/enable_debug_verbs,
/client/proc/everyone_random,
/client/proc/kill_air,
/client/proc/kill_airgroup,
/client/proc/make_area_sound,
/client/proc/make_sound,
/client/proc/object_talk,
/client/proc/play_local_sound,
/client/proc/play_sound,
/client/proc/reload_admins,
/client/proc/restart_controller,
/client/proc/send_space_ninja,
/client/proc/Set_Holiday,
/client/proc/set_ooc,
/client/proc/startSinglo,
/client/proc/toggle_hear_radio,
/client/proc/toggle_log_hrefs,
/client/proc/toggleprayers,
/client/proc/toggle_random_events,
/client/proc/toggle_view_range,
/client/proc/ToRban,
/proc/possess,
/proc/release
)
/client/proc/remove_admin_verbs()
verbs.Remove(
admin_verbs_default,
/client/proc/togglebuildmodeself,
/client/proc/stealth,
admin_verbs_admin,
admin_verbs_ban,
admin_verbs_fun,
admin_verbs_server,
admin_verbs_debug,
admin_verbs_possess,
admin_verbs_permissions,
admin_verbs_rejuv,
admin_verbs_sounds,
admin_verbs_spawn,
admin_verbs_dev,
admin_verbs_duty,
/*Debug verbs added by "show debug verbs"*/
/client/proc/Cell,
/client/proc/do_not_use_these,
/client/proc/camera_view,
/client/proc/sec_camera_report,
/client/proc/intercom_view,
/client/proc/air_status,
/client/proc/atmosscan,
/client/proc/powerdebug,
/client/proc/count_objects_on_z_level,
/client/proc/count_objects_all,
/client/proc/cmd_assume_direct_control,
/client/proc/jump_to_dead_group,
/client/proc/startSinglo,
/client/proc/ticklag,
/client/proc/cmd_admin_grantfullaccess,
/client/proc/kaboom,
/client/proc/splash,
/client/proc/cmd_admin_areatest,
/client/proc/view_power_update_stats_area,
/client/proc/view_power_update_stats_machines,
/client/proc/toggle_power_update_profiling,
/client/proc/atmos_toggle_debug
)
var/list/admin_verbs_duty = list(
/client/proc/spawn_duty_officer,
/client/proc/cmd_duty_say,
/client/verb/returntobody
)
/client/proc/add_admin_verbs()
if(holder)
verbs += admin_verbs_default
if(holder.rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself
if(holder.rights & R_ADMIN) verbs += admin_verbs_admin
if(holder.rights & R_BAN) verbs += admin_verbs_ban
if(holder.rights & R_FUN) verbs += admin_verbs_fun
if(holder.rights & R_SERVER) verbs += admin_verbs_server
if(holder.rights & R_DEBUG) verbs += admin_verbs_debug
if(holder.rights & R_POSSESS) verbs += admin_verbs_possess
if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions
if(holder.rights & R_STEALTH) verbs += /client/proc/stealth
if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv
if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds
if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn
if(holder.rights & R_MOD) verbs += admin_verbs_mod
if(holder.rights & R_DEV) verbs += admin_verbs_dev
if(holder.rights & R_DUTYOFF) verbs += admin_verbs_duty //hehe duty
+3
View File
@@ -333,6 +333,9 @@
for(var/mob/M in mobs)
if(!M.ckey) continue
if(M.client && M.client.holder && M.client.holder.fakekey)
if(!usr.client.holder.rights & (R_ADMIN|R_MOD))
continue
dat += "<tr><td>[M.name]</td>"
if(isAI(M))
-1
View File
@@ -1554,7 +1554,6 @@
src.owner << "Message reply to transmitted successfully."
log_admin("[key_name(src.owner)] replied to a fax message from [key_name(H)]: [input]")
message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)] <a href='?_src_=holder;CentcommFaxView=\ref[input]'>view message</a>", 1)
message_mods("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]")
else if(href_list["jumpto"])
+19 -1
View File
@@ -49,7 +49,25 @@
log_admin("[key_name(src)] : [msg]")
if(check_rights(R_DEV,0))
msg = "<span class='devsay'><span class='prefix'>DEV:</span> <EM>[key_name(usr, 1)]</EM>: <span class='message'>[msg]</span></span>"
msg = "<span class='devsay'><span class='prefix'>DEV:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
for(var/client/C in admins)
if(R_DEV & C.holder.rights)
C << msg
/client/proc/cmd_duty_say(msg as text)
set category = "Admin"
set name = "Dosay"
set hidden = 1
if(!check_rights(R_DUTYOFF)) return
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
if(!msg) return
log_admin("[key_name(src)] : [msg]")
if(check_rights(R_DUTYOFF,0))
msg = "<span class='dutysay'><span class='prefix'>DOfficer:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
for(var/client/C in admins)
if(C.holder.rights & (R_ADMIN|R_DUTYOFF))
C << msg
+3 -3
View File
@@ -20,7 +20,7 @@
msg = "\blue \icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[src]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]"
for(var/client/C in admins)
if(((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights)) || (R_FUN & C.holder.rights) && (C.prefs.toggles & CHAT_PRAYER))
if(C.holder.rights & (R_ADMIN|R_MOD|R_FUN) && (C.prefs.toggles & CHAT_PRAYER))
C << msg
usr << "Your prayers have been received by the gods."
@@ -35,12 +35,12 @@
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]"
for(var/client/C in admins)
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights) || (R_FUN & C.holder.rights))
if(C.holder.rights & (R_ADMIN|R_DUTYOFF|R_FUN))
C << msg
/proc/Syndicate_announce(var/text , var/mob/Sender)
var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN)
msg = "\blue <b><font color=crimson>SYNDICATE:</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;SyndicateReply=\ref[Sender]'>RPLY</A>):</b> [msg]"
for(var/client/C in admins)
if((R_ADMIN & C.holder.rights) || (R_MOD & C.holder.rights) || (R_FUN & C.holder.rights))
if(C.holder.rights & (R_ADMIN|R_MOD|R_FUN))
C << msg
+24 -7
View File
@@ -27,6 +27,10 @@
src << "\red The game hasn't started yet!"
return
if(istype(mob, /mob/living))
if(!holder.original_mob)
holder.original_mob = mob
//I couldn't get the normal way to work so this works.
//This whole section looks like a hack, I don't like it.
var/T = get_turf(usr)
@@ -154,13 +158,15 @@
spawn(5)
del(s)
if(key)
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
ghost.key = key
ghost.mind.name = "[ghost.key] BSTech"
ghost.name = "[ghost.key] BSTech"
ghost.real_name = "[ghost.key] BSTech"
ghost.voice_name = "[ghost.key] BSTech"
if(client.holder && client.holder.original_mob)
client.holder.original_mob.key = key
else
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
ghost.key = key
ghost.mind.name = "[ghost.key] BSTech"
ghost.name = "[ghost.key] BSTech"
ghost.real_name = "[ghost.key] BSTech"
ghost.voice_name = "[ghost.key] BSTech"
del(src)
return
@@ -294,6 +300,17 @@
src.sleeping = 0
verb/bstquit()
set name = "Teleport out"
set desc = "Activate bluespace to leave (and return to your original mob(if you have one))"
set category = "BST"
var/client/C = src.client
if(C.holder && C.holder.original_mob)
C.holder.original_mob.key = key
C.holder.original_mob = null
suicide()
//Equipment. All should have canremove set to 0
//All items with a /bst need the attack_hand() proc overrided to stop people getting overpowered items.
+172
View File
@@ -0,0 +1,172 @@
/client/proc/spawn_duty_officer()
set category = "Special Verbs"
set name = "Spawn Duty Officer"
set desc = "Spawns a Duty Officer to do Duty"
if(!check_rights(R_DUTYOFF)) return
if(!holder)
return //how did they get here?
if(!ticker)
alert("Wait until the game starts")
return
if(ticker.current_state < GAME_STATE_PLAYING)
src << "\red The game hasn't started yet!"
return
if(mob.mind.special_role == "Duty Officer")
src << "\red You are already a Duty Officer"
return
if(istype(mob, /mob/living))
holder.original_mob = mob
for (var/obj/effect/landmark/L in landmarks_list)
if(L.name == "DutyOfficer")
var/new_name = input(usr, "Pick a name","Name") as null|text
var/mob/living/carbon/human/M = new(null)
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
if(new_facial)
M.r_facial = hex2num(copytext(new_facial, 2, 4))
M.g_facial = hex2num(copytext(new_facial, 4, 6))
M.b_facial = hex2num(copytext(new_facial, 6, 8))
var/new_hair = input("Please select hair color.", "Character Generation") as color
if(new_facial)
M.r_hair = hex2num(copytext(new_hair, 2, 4))
M.g_hair = hex2num(copytext(new_hair, 4, 6))
M.b_hair = hex2num(copytext(new_hair, 6, 8))
var/new_eyes = input("Please select eye color.", "Character Generation") as color
if(new_eyes)
M.r_eyes = hex2num(copytext(new_eyes, 2, 4))
M.g_eyes = hex2num(copytext(new_eyes, 4, 6))
M.b_eyes = hex2num(copytext(new_eyes, 6, 8))
var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
if (!new_tone)
new_tone = 35
M.s_tone = max(min(round(text2num(new_tone)), 220), 1)
M.s_tone = -M.s_tone + 35
// hair
var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair
var/list/hairs = list()
// loop through potential hairs
for(var/x in all_hairs)
var/datum/sprite_accessory/hair/H = new x
hairs.Add(H.name)
del(H)
//hair
var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list
if(new_hstyle)
M.h_style = new_hstyle
// facial hair
var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list
if(new_fstyle)
M.f_style = new_fstyle
var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female")
if (new_gender)
if(new_gender == "Male")
M.gender = MALE
else
M.gender = FEMALE
//M.rebuild_appearance()
M.update_hair()
M.update_body()
M.check_dna(M)
M.real_name = new_name
M.name = new_name
M.age = input("Enter your characters age:","Num") as null|num
if(!M.age)
M.age = rand(35,50)
if(M.age < 33 || M.age > 60)
src << "\red The age you selected was not in a valid range for a Duty Officer"
if(M.age < 33)
M.age = 33
else
M.age = 60
src << "\red Your age has been set to [M.age]"
M.dna.ready_dna(M)
//Creates mind stuff.
M.mind = new
M.mind.current = M
M.mind.original = M
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]"
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)
M.equip_if_possible(new /obj/item/clothing/gloves/white(M), slot_gloves)
M.equip_if_possible(new /obj/item/device/radio/headset/ert(M), slot_l_ear)
M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(M), slot_glasses)
M.equip_if_possible(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head)
M.equip_if_possible(new /obj/item/weapon/melee/telebaton(M), slot_l_store)
M.equip_if_possible(new /obj/item/device/taperecorder(M), slot_r_store)
var/obj/item/device/pda/central/pda = new(M)
pda.owner = M.real_name
pda.ownjob = "Central Command Duty Officer"
pda.name = "PDA-[M.real_name] ([pda.ownjob])"
M.equip_if_possible(pda, slot_belt)
var/obj/item/weapon/card/id/W = new(M)
W.name = "[M.real_name]'s ID Card"
W.icon_state = "centcom"
W.item_state = "id_inv"
W.access = get_all_accesses() + get_centcom_access("Duty Officer")
W.assignment = "Central Command Duty Officer"
W.registered_name = M.real_name
M.equip_if_possible(W, slot_wear_id)
verbs += /client/verb/returntobody
break
/client/verb/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
return
if(!holder) return
var/mob/M = mob
var/area/A = get_area(M)
if(!is_type_in_list(A,centcom_areas))
src << "\red You need to be back at central to do this"
return
if(holder.original_mob)
if(holder.original_mob == M)
verbs -= /client/verb/returntobody
return
holder.original_mob.key = key
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
del(M)
@@ -78,7 +78,7 @@
item_state = "watchgloves"
w_class = 1
wired = 1
species_restricted = list()
species_restricted = null
// var/time = 1
verb/checktime()
-11
View File
@@ -70,14 +70,3 @@
armor = list(melee = 62, bullet = 50, laser = 50,energy = 35, bomb = 10, bio = 2, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
/obj/item/clothing/head/helmet/space // For spacesuit helmets. Removing the protection from the base helmets appears to have fucked them. Fixed with this, I believe.
name = "spaceasshole helmet"
desc = "shouldn't be able to see this"
icon_state = "n/a"
item_state = "n/a"
flags_inv = HIDEEARS|HIDEEYES
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_COLD_PROTECTION_TEMPERATURE
heat_protection = HEAD
max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
@@ -243,6 +243,8 @@ 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)
client.holder.original_mob = null
mind.current.key = key
return 1
@@ -65,17 +65,22 @@
if(w_uniform && !skipjumpsuit)
//Ties
var/tie_msg
var/aband_msg
if(istype(w_uniform,/obj/item/clothing/under))
var/obj/item/clothing/under/U = w_uniform
if(U.hastie)
tie_msg += " with \icon[U.hastie] \a [U.hastie]"
else if(U.hastie && U.aband)
tie_msg += " with \icon[U.hastie] \a [U.hastie] and \icon[U.aband] \a [U.aband]"
if(U.aband)
aband_msg+= " with \icon[U.aband] \a [U.aband]"
if(w_uniform.blood_DNA)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg][aband_msg]!</span>\n"
else if(w_uniform.wasbloody == 2)
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] luminol-covered [w_uniform.name][tie_msg]!</span>\n"
msg += "<span class='warning'>[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] luminol-covered [w_uniform.name][tie_msg][aband_msg]!</span>\n"
else
msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n"
msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][tie_msg][aband_msg].\n"
//head
if(head)
@@ -28,7 +28,6 @@
maxbodytemp = 323 //Above 50 Degrees Celcius
universal_speak = 0
universal_understand = 1
holder_type = null
/mob/living/simple_animal/mouse/Life()
..()
@@ -59,10 +58,22 @@
name = "[name] ([rand(1, 1000)])"
if(!body_color)
body_color = pick( list("brown","gray","white") )
if(body_color == "gray")
holder_type = /obj/item/weapon/holder/mouse/gray
else if(body_color == "brown")
holder_type = /obj/item/weapon/holder/mouse/brown
else if(body_color == "white")
holder_type = /obj/item/weapon/holder/mouse/white
icon_state = "mouse_[body_color]"
icon_living = "mouse_[body_color]"
icon_dead = "mouse_[body_color]_dead"
desc = "It's a small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
if(body_color == "gray")
holder_type = /obj/item/weapon/holder/mouse/gray
if(body_color == "brown")
holder_type = /obj/item/weapon/holder/mouse/brown
if(body_color == "white")
holder_type = /obj/item/weapon/holder/mouse/white
/mob/living/simple_animal/mouse/proc/splat()
src.health = 0
@@ -73,6 +84,14 @@
if(client)
client.time_died_as_mouse = world.time
/mob/living/simple_animal/mouse/proc/holdertype()
if(body_color == "gray")
holder_type = /obj/item/weapon/holder/mouse/gray
if(body_color == "brown")
holder_type = /obj/item/weapon/holder/mouse/brown
if(body_color == "white")
holder_type = /obj/item/weapon/holder/mouse/white
/mob/living/simple_animal/mouse/start_pulling(var/atom/movable/AM)//Prevents mouse from pulling things
src << "<span class='warning'>You are too small to pull anything.</span>"
return
+20 -19
View File
@@ -710,24 +710,25 @@ note dizziness decrements automatically in the mob's Life() proc.
if(statpanel("Status")) //not looking at that panel
if(client && client.holder)
stat(null,"Location:\t([x], [y], [z])")
stat(null,"CPU:\t[world.cpu]")
stat(null,"Instances:\t[world.contents.len]")
if(client.holder.rights & (R_ADMIN|R_MOD|R_DEV|R_FUN))
stat(null,"Location:\t([x], [y], [z])")
stat(null,"CPU:\t[world.cpu]")
stat(null,"Instances:\t[world.contents.len]")
if(master_controller)
stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])")
stat(null,"Air-[master_controller.air_cost]\tSun-[master_controller.sun_cost]")
stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]")
stat(null,"Dis-[master_controller.diseases_cost]\t#[active_diseases.len]")
stat(null,"Mch-[master_controller.machines_cost]\t#[machines.len]")
stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]")
stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]")
stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]")
stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]")
else
stat(null,"MasterController-ERROR")
if(delta_level:active)
stat(null,"Delta Countdown-[delta_level.timeleft()]")
if(master_controller)
stat(null,"MasterController-[last_tick_duration] ([master_controller.processing?"On":"Off"]-[controller_iteration])")
stat(null,"Air-[master_controller.air_cost]\tSun-[master_controller.sun_cost]")
stat(null,"Mob-[master_controller.mobs_cost]\t#[mob_list.len]")
stat(null,"Dis-[master_controller.diseases_cost]\t#[active_diseases.len]")
stat(null,"Mch-[master_controller.machines_cost]\t#[machines.len]")
stat(null,"Obj-[master_controller.objects_cost]\t#[processing_objects.len]")
stat(null,"Net-[master_controller.networks_cost]\tPnet-[master_controller.powernets_cost]")
stat(null,"NanoUI-[master_controller.nano_cost]\t#[nanomanager.processing_uis.len]")
stat(null,"Tick-[master_controller.ticker_cost]\tALL-[master_controller.total_cost]")
else
stat(null,"MasterController-ERROR")
if(delta_level:active)
stat(null,"Delta Countdown-[delta_level.timeleft()]")
if(!ooc_allowed)
stat(null,"OOC is globaly muted")
if(!looc_allowed)
@@ -739,7 +740,7 @@ note dizziness decrements automatically in the mob's Life() proc.
var/total = 0
var/staff = 0
for(var/client/C in clients)
if(C.holder && (C.holder.rights & R_ADMIN || C.holder.rights & R_MOD))
if(C.holder && (C.holder.rights & (R_ADMIN|R_MOD)))
staff++
if(istype(C.mob, /mob/living))
players++
@@ -748,7 +749,7 @@ note dizziness decrements automatically in the mob's Life() proc.
if(istype(C.mob, /mob/new_player))
lobby++
total++
stat(null, "Players: [total]\tModeration Staff: [staff]")
stat(null, "Players: [total]\t Moderation Staff: [staff]")
stat(null, "Living: [players]\tGhosts: [ghosts]\tLobby: [lobby]")
if(client)
stat(null, "Round Time: [round(world.time / 36000)]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]")
+9 -3
View File
@@ -1,5 +1,4 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
#define DEBUG
#define PI 3.1415
@@ -629,8 +628,8 @@ var/list/liftable_structures = list(\
#define R_SPAWN 4096
#define R_MOD 8192
#define R_DEV 16384
#define R_MAXPERMISSION 16384 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define R_DUTYOFF 32768
#define R_MAXPERMISSION 32768 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define R_HOST 65535
@@ -654,6 +653,13 @@ var/list/liftable_structures = list(\
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC)
//Status Menu toggles
#define STAT_MENU_MC = 1
#define STAT_MENU_PC = 2
#define STAT_MENU_DEFAULT = (STAT_MENU_MC|STAT_MENU_PC)
#define BE_TRAITOR 1
#define BE_OPERATIVE 2
#define BE_CHANGELING 4
+2 -1
View File
@@ -20,7 +20,7 @@ em {font-style: normal; font-weight: bold;}
.adminobserver {color: #996600; font-weight: bold;}
.admin {color: #386aff; font-weight: bold;}
.adminsay {color: #9611D4; font-weight: bold;}
.dutysay {color: #C19A3B;}
.name { font-weight: bold;}
.say {}
@@ -61,6 +61,7 @@ h1.alert, h2.alert {color: #000000;}
.mod {color: #735638; font-weight: bold;}
.modooc {color: #184880; font-weight: bold;}
.adminmod {color: #402A14; font-weight: bold;}
.devsay {color: #02280D;}
.tajaran {color: #803B56;}
.tajaran_signlang {color: #941C1C;}
.skrell {color: #00CED1;}
+18
View File
@@ -56,6 +56,24 @@ should be listed in the changelog upon commit though. Thanks. -->
<!-- DO NOT REMOVE, MOVE, OR COPY THIS COMMENT! THIS MUST BE THE LAST NON-EMPTY LINE BEFORE THE LOGS #ADDTOCHANGELOGMARKER# -->
<div class='commit sansserif'>
<h2 class='date'>18 February 2015</h2>
<h3 class='author'>SoundScopes updated:</h3>
<ul class='changes bgimages16'>
<li class='rscadd'>DutyOfficer flag and features added</li>
<li class='rscadd'>A few admin logs added</li>
<li class='rscadd'>A second set of ID and PDA sprites, up for voting now</li>
<li class='bugfix'>Plasmatech for plasma cutter fixed</li>
<li class='bugfix'>Accounts Uplink Terminal fixed</li>
<li class='bugfix'>Dorms updated with individual area tags, thus the lights working there</li>
<li class='bugfix'>Bent pipe sprites fixed</li>
<li class='bugfix'>Watches can be worn by everyone, again</li>
<li class='bugfix'>Picking up mice is fixed</li>
<li class='bugfix'>Two "silent" stings have their description modified to match mechanics (are not silent)</li>
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>15 February 2015</h2>
<h3 class='author'>SoundScopes updated:</h3>
+4736 -4735
View File
File diff suppressed because it is too large Load Diff